From 18ea2450af32f1f1e6d46da7395654707ef29e62 Mon Sep 17 00:00:00 2001 From: tomas Date: Thu, 4 Jul 2024 14:54:26 +0200 Subject: [PATCH] Added own custom message and mentions. --- dist/index.js | 291376 +++++++++++++++++++++++++++++++++++------------ index.js | 45 +- 2 files changed, 217823 insertions(+), 73598 deletions(-) diff --git a/dist/index.js b/dist/index.js index 33ee235..0028ba7 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,77 +1,49 @@ -module.exports = /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ -/***/ 2932: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { +/***/ 7818: +/***/ ((module) => { -const core = __webpack_require__(2186); -const sdk = __webpack_require__(2205); -const md = __webpack_require__(8465)(); - -try { - const homeserver = core.getInput('homeserver'); - const channel = core.getInput('channel'); - const token = core.getInput('token'); - const message = core.getInput('message'); - const messagetype = core.getInput('messagetype'); - - // Debug output - core.info(`homeserver: ${homeserver}`); - core.info(`channel: ${channel}`); - core.info(`token: ${token}`); - core.info(`message: ${message}`); - core.info(`messagetype: ${messagetype}`); - - // Create client object - const client = sdk.createClient({ - baseUrl: `https://${homeserver}`, - accessToken: token, - }); - - // Join channel (if we are already in the channel this does nothing) - client.joinRoom(channel).then(() => { - core.info('Joined channel'); - }); - - // render markdown in message - const processedMessage = md.render(message); - - // Send message - const content = { - msgtype: messagetype, - format: 'org.matrix.custom.html', - body: message, - formatted_body: processedMessage, - }; - - client.sendEvent(channel, 'm.room.message', content, '').then(() => { - // message sent successfully - }).catch((err) => { - core.error(err); - }); -} catch (error) { - core.setFailed(error.message); +function webpackEmptyContext(req) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; } - +webpackEmptyContext.keys = () => ([]); +webpackEmptyContext.resolve = webpackEmptyContext; +webpackEmptyContext.id = 7818; +module.exports = webpackEmptyContext; /***/ }), /***/ 7351: -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -const os = __importStar(__webpack_require__(2087)); -const utils_1 = __webpack_require__(5278); +exports.issue = exports.issueCommand = void 0; +const os = __importStar(__nccwpck_require__(2037)); +const utils_1 = __nccwpck_require__(5278); /** * Commands * @@ -144,10 +116,29 @@ function escapeProperty(s) { /***/ }), /***/ 2186: -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -157,19 +148,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; Object.defineProperty(exports, "__esModule", ({ value: true })); -const command_1 = __webpack_require__(7351); -const file_command_1 = __webpack_require__(717); -const utils_1 = __webpack_require__(5278); -const os = __importStar(__webpack_require__(2087)); -const path = __importStar(__webpack_require__(5622)); +exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = __nccwpck_require__(7351); +const file_command_1 = __nccwpck_require__(717); +const utils_1 = __nccwpck_require__(5278); +const os = __importStar(__nccwpck_require__(2037)); +const path = __importStar(__nccwpck_require__(1017)); +const oidc_utils_1 = __nccwpck_require__(8041); /** * The code to exit an action */ @@ -198,13 +184,9 @@ function exportVariable(name, val) { process.env[name] = convertedVal; const filePath = process.env['GITHUB_ENV'] || ''; if (filePath) { - const delimiter = '_GitHubActionsFileCommandDelimeter_'; - const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; - file_command_1.issueCommand('ENV', commandValue); - } - else { - command_1.issueCommand('set-env', { name }, convertedVal); + return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); } + command_1.issueCommand('set-env', { name }, convertedVal); } exports.exportVariable = exportVariable; /** @@ -222,7 +204,7 @@ exports.setSecret = setSecret; function addPath(inputPath) { const filePath = process.env['GITHUB_PATH'] || ''; if (filePath) { - file_command_1.issueCommand('PATH', inputPath); + file_command_1.issueFileCommand('PATH', inputPath); } else { command_1.issueCommand('add-path', {}, inputPath); @@ -231,7 +213,9 @@ function addPath(inputPath) { } exports.addPath = addPath; /** - * Gets the value of an input. The value is also trimmed. + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. * * @param name name of the input to get * @param options optional. See InputOptions. @@ -242,9 +226,52 @@ function getInput(name, options) { if (options && options.required && !val) { throw new Error(`Input required and not supplied: ${name}`); } + if (options && options.trimWhitespace === false) { + return val; + } return val.trim(); } exports.getInput = getInput; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +function getMultilineInput(name, options) { + const inputs = getInput(name, options) + .split('\n') + .filter(x => x !== ''); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map(input => input.trim()); +} +exports.getMultilineInput = getMultilineInput; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +function getBooleanInput(name, options) { + const trueValue = ['true', 'True', 'TRUE']; + const falseValue = ['false', 'False', 'FALSE']; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +exports.getBooleanInput = getBooleanInput; /** * Sets the value of an output. * @@ -253,7 +280,12 @@ exports.getInput = getInput; */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function setOutput(name, value) { - command_1.issueCommand('set-output', { name }, value); + const filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + } + process.stdout.write(os.EOL); + command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); } exports.setOutput = setOutput; /** @@ -299,19 +331,30 @@ exports.debug = debug; /** * Adds an error issue * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. */ -function error(message) { - command_1.issue('error', message instanceof Error ? message.toString() : message); +function error(message, properties = {}) { + command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } exports.error = error; /** - * Adds an warning issue + * Adds a warning issue * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. */ -function warning(message) { - command_1.issue('warning', message instanceof Error ? message.toString() : message); +function warning(message, properties = {}) { + command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } exports.warning = warning; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function notice(message, properties = {}) { + command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.notice = notice; /** * Writes info to log with console.log. * @param message info message @@ -371,7 +414,11 @@ exports.group = group; */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function saveState(name, value) { - command_1.issueCommand('save-state', { name }, value); + const filePath = process.env['GITHUB_STATE'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + } + command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); } exports.saveState = saveState; /** @@ -384,30 +431,67 @@ function getState(name) { return process.env[`STATE_${name}`] || ''; } exports.getState = getState; +function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); +} +exports.getIDToken = getIDToken; +/** + * Summary exports + */ +var summary_1 = __nccwpck_require__(1327); +Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); +/** + * @deprecated use core.summary + */ +var summary_2 = __nccwpck_require__(1327); +Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); +/** + * Path exports + */ +var path_utils_1 = __nccwpck_require__(2981); +Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); +Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); +Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); //# sourceMappingURL=core.js.map /***/ }), /***/ 717: -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; // For internal use, subject to change. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ -const fs = __importStar(__webpack_require__(5747)); -const os = __importStar(__webpack_require__(2087)); -const utils_1 = __webpack_require__(5278); -function issueCommand(command, message) { +const fs = __importStar(__nccwpck_require__(7147)); +const os = __importStar(__nccwpck_require__(2037)); +const uuid_1 = __nccwpck_require__(8974); +const utils_1 = __nccwpck_require__(5278); +function issueFileCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; if (!filePath) { throw new Error(`Unable to find environment variable for file command ${command}`); @@ -419,11 +503,465 @@ function issueCommand(command, message) { encoding: 'utf8' }); } -exports.issueCommand = issueCommand; +exports.issueFileCommand = issueFileCommand; +function prepareKeyValueMessage(key, value) { + const delimiter = `ghadelimiter_${uuid_1.v4()}`; + const convertedValue = utils_1.toCommandValue(value); + // These should realistically never happen, but just in case someone finds a + // way to exploit uuid generation let's not allow keys or values that contain + // the delimiter. + if (key.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + if (convertedValue.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; +} +exports.prepareKeyValueMessage = prepareKeyValueMessage; //# sourceMappingURL=file-command.js.map /***/ }), +/***/ 8041: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OidcClient = void 0; +const http_client_1 = __nccwpck_require__(6255); +const auth_1 = __nccwpck_require__(5526); +const core_1 = __nccwpck_require__(2186); +class OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); + } + static getRequestToken() { + const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token; + } + static getIDTokenUrl() { + const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + static getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const httpclient = OidcClient.createHttpClient(); + const res = yield httpclient + .getJson(id_token_url) + .catch(error => { + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n + Error Message: ${error.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + // New ID Token is requested from action service + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + core_1.debug(`ID token url is ${id_token_url}`); + const id_token = yield OidcClient.getCall(id_token_url); + core_1.setSecret(id_token); + return id_token; + } + catch (error) { + throw new Error(`Error message: ${error.message}`); + } + }); + } +} +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map + +/***/ }), + +/***/ 2981: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +const path = __importStar(__nccwpck_require__(1017)); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); +} +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map + +/***/ }), + +/***/ 1327: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +const os_1 = __nccwpck_require__(2037); +const fs_1 = __nccwpck_require__(7147); +const { access, appendFile, writeFile } = fs_1.promises; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +class Summary { + constructor() { + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } + catch (_a) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag}${htmlAttrs}>`; + } + return `<${tag}${htmlAttrs}>${content}`; + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); + }); + } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); + } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; + } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; + } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, (lang && { lang })); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); + return this.wrap(tag, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) + ? tag + : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, (cite && { cite })); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); + } +} +const _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map + +/***/ }), + /***/ 5278: /***/ ((__unused_webpack_module, exports) => { @@ -432,6 +970,7 @@ exports.issueCommand = issueCommand; // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toCommandProperties = exports.toCommandValue = void 0; /** * Sanitizes an input into a string so it can be passed into issueCommand safely * @param input input to sanitize into a string @@ -446,5719 +985,118107 @@ function toCommandValue(input) { return JSON.stringify(input); } exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} +exports.toCommandProperties = toCommandProperties; //# sourceMappingURL=utils.js.map /***/ }), -/***/ 3561: -/***/ ((module) => { +/***/ 8974: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -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; +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "v1", ({ + enumerable: true, + get: function () { + return _v.default; + } +})); +Object.defineProperty(exports, "v3", ({ + enumerable: true, + get: function () { + return _v2.default; + } +})); +Object.defineProperty(exports, "v4", ({ + enumerable: true, + get: function () { + return _v3.default; + } +})); +Object.defineProperty(exports, "v5", ({ + enumerable: true, + get: function () { + return _v4.default; + } +})); +Object.defineProperty(exports, "NIL", ({ + enumerable: true, + get: function () { + return _nil.default; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _version.default; + } +})); +Object.defineProperty(exports, "validate", ({ + enumerable: true, + get: function () { + return _validate.default; + } +})); +Object.defineProperty(exports, "stringify", ({ + enumerable: true, + get: function () { + return _stringify.default; + } +})); +Object.defineProperty(exports, "parse", ({ + enumerable: true, + get: function () { + return _parse.default; + } +})); + +var _v = _interopRequireDefault(__nccwpck_require__(1595)); + +var _v2 = _interopRequireDefault(__nccwpck_require__(6993)); + +var _v3 = _interopRequireDefault(__nccwpck_require__(1472)); + +var _v4 = _interopRequireDefault(__nccwpck_require__(6217)); + +var _nil = _interopRequireDefault(__nccwpck_require__(2381)); + +var _version = _interopRequireDefault(__nccwpck_require__(427)); + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +var _parse = _interopRequireDefault(__nccwpck_require__(6385)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/***/ }), + +/***/ 5842: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } + return _crypto.default.createHash('md5').update(bytes).digest(); +} + +var _default = md5; +exports["default"] = _default; + +/***/ }), + +/***/ 2381: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = '00000000-0000-0000-0000-000000000000'; +exports["default"] = _default; + +/***/ }), + +/***/ 6385: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function parse(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +var _default = parse; +exports["default"] = _default; + +/***/ }), + +/***/ 6230: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; +exports["default"] = _default; + +/***/ }), + +/***/ 9784: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = rng; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; + +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + _crypto.default.randomFillSync(rnds8Pool); + + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} + +/***/ }), + +/***/ 8844: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return _crypto.default.createHash('sha1').update(bytes).digest(); +} + +var _default = sha1; +exports["default"] = _default; + +/***/ }), + +/***/ 1458: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!(0, _validate.default)(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +var _default = stringify; +exports["default"] = _default; + +/***/ }), + +/***/ 1595: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _rng = _interopRequireDefault(__nccwpck_require__(9784)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || _rng.default)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || (0, _stringify.default)(b); +} + +var _default = v1; +exports["default"] = _default; + +/***/ }), + +/***/ 6993: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _v = _interopRequireDefault(__nccwpck_require__(5920)); + +var _md = _interopRequireDefault(__nccwpck_require__(5842)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v3 = (0, _v.default)('v3', 0x30, _md.default); +var _default = v3; +exports["default"] = _default; + +/***/ }), + +/***/ 5920: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; +exports.URL = exports.DNS = void 0; + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +var _parse = _interopRequireDefault(__nccwpck_require__(6385)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +exports.DNS = DNS; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +exports.URL = URL; + +function _default(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = (0, _parse.default)(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return (0, _stringify.default)(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} + +/***/ }), + +/***/ 1472: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _rng = _interopRequireDefault(__nccwpck_require__(9784)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function v4(options, buf, offset) { + options = options || {}; + + const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + + return buf; + } + + return (0, _stringify.default)(rnds); +} + +var _default = v4; +exports["default"] = _default; + +/***/ }), + +/***/ 6217: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _v = _interopRequireDefault(__nccwpck_require__(5920)); + +var _sha = _interopRequireDefault(__nccwpck_require__(8844)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v5 = (0, _v.default)('v5', 0x50, _sha.default); +var _default = v5; +exports["default"] = _default; + +/***/ }), + +/***/ 2609: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _regex = _interopRequireDefault(__nccwpck_require__(6230)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function validate(uuid) { + return typeof uuid === 'string' && _regex.default.test(uuid); +} + +var _default = validate; +exports["default"] = _default; + +/***/ }), + +/***/ 427: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function version(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + return parseInt(uuid.substr(14, 1), 16); +} + +var _default = version; +exports["default"] = _default; + +/***/ }), + +/***/ 4087: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Context = void 0; +const fs_1 = __nccwpck_require__(7147); +const os_1 = __nccwpck_require__(2037); +class Context { + /** + * Hydrate the context from the environment + */ + constructor() { + var _a, _b, _c; + this.payload = {}; + if (process.env.GITHUB_EVENT_PATH) { + if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); + } + else { + const path = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`); + } + } + this.eventName = process.env.GITHUB_EVENT_NAME; + this.sha = process.env.GITHUB_SHA; + this.ref = process.env.GITHUB_REF; + this.workflow = process.env.GITHUB_WORKFLOW; + this.action = process.env.GITHUB_ACTION; + this.actor = process.env.GITHUB_ACTOR; + this.job = process.env.GITHUB_JOB; + this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); + this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); + this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`; + this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; + this.graphqlUrl = + (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; + } + get issue() { + const payload = this.payload; + return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); + } + get repo() { + if (process.env.GITHUB_REPOSITORY) { + const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/'); + return { owner, repo }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; + } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); + } +} +exports.Context = Context; +//# sourceMappingURL=context.js.map + +/***/ }), + +/***/ 5438: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getOctokit = exports.context = void 0; +const Context = __importStar(__nccwpck_require__(4087)); +const utils_1 = __nccwpck_require__(3030); +exports.context = new Context.Context(); +/** + * Returns a hydrated octokit ready to use for GitHub Actions + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +function getOctokit(token, options, ...additionalPlugins) { + const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); + return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options)); +} +exports.getOctokit = getOctokit; +//# sourceMappingURL=github.js.map + +/***/ }), + +/***/ 7914: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0; +const httpClient = __importStar(__nccwpck_require__(6341)); +const undici_1 = __nccwpck_require__(1773); +function getAuthString(token, options) { + if (!token && !options.auth) { + throw new Error('Parameter token or opts.auth is required'); + } + else if (token && options.auth) { + throw new Error('Parameters token and opts.auth may not both be specified'); + } + return typeof options.auth === 'string' ? options.auth : `token ${token}`; +} +exports.getAuthString = getAuthString; +function getProxyAgent(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgent(destinationUrl); +} +exports.getProxyAgent = getProxyAgent; +function getProxyAgentDispatcher(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgentDispatcher(destinationUrl); +} +exports.getProxyAgentDispatcher = getProxyAgentDispatcher; +function getProxyFetch(destinationUrl) { + const httpDispatcher = getProxyAgentDispatcher(destinationUrl); + const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () { + return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher })); + }); + return proxyFetch; +} +exports.getProxyFetch = getProxyFetch; +function getApiBaseUrl() { + return process.env['GITHUB_API_URL'] || 'https://api.github.com'; +} +exports.getApiBaseUrl = getApiBaseUrl; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 3030: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0; +const Context = __importStar(__nccwpck_require__(4087)); +const Utils = __importStar(__nccwpck_require__(7914)); +// octokit + plugins +const core_1 = __nccwpck_require__(6762); +const plugin_rest_endpoint_methods_1 = __nccwpck_require__(3044); +const plugin_paginate_rest_1 = __nccwpck_require__(4193); +exports.context = new Context.Context(); +const baseUrl = Utils.getApiBaseUrl(); +exports.defaults = { + baseUrl, + request: { + agent: Utils.getProxyAgent(baseUrl), + fetch: Utils.getProxyFetch(baseUrl) + } +}; +exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults); +/** + * Convience function to correctly format Octokit Options to pass into the constructor. + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +function getOctokitOptions(token, options) { + const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller + // Auth + const auth = Utils.getAuthString(token, opts); + if (auth) { + opts.auth = auth; + } + return opts; +} +exports.getOctokitOptions = getOctokitOptions; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 6341: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(__nccwpck_require__(3685)); +const https = __importStar(__nccwpck_require__(5687)); +const pm = __importStar(__nccwpck_require__(3466)); +const tunnel = __importStar(__nccwpck_require__(4294)); +const undici_1 = __nccwpck_require__(1773); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes || (exports.HttpCodes = HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers || (exports.Headers = Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes || (exports.MediaTypes = MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } +} +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + })); + }); + } + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', (chunk) => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve(Buffer.concat(chunks)); + }); + })); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } + else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + })), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + // if agent is already assigned use that agent. + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && { + token: `${proxyUrl.username}:${proxyUrl.password}` + }))); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 3466: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + })(); + if (proxyVar) { + try { + return new URL(proxyVar); + } + catch (_a) { + if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) + return new URL(`http://${proxyVar}`); + } + } + else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperNoProxyItem === '*' || + upperReqHosts.some(x => x === upperNoProxyItem || + x.endsWith(`.${upperNoProxyItem}`) || + (upperNoProxyItem.startsWith('.') && + x.endsWith(`${upperNoProxyItem}`)))) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return (hostLower === 'localhost' || + hostLower.startsWith('127.') || + hostLower.startsWith('[::1]') || + hostLower.startsWith('[0:0:0:0:0:0:0:1]')); +} +//# sourceMappingURL=proxy.js.map + +/***/ }), + +/***/ 5526: +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +class BasicCredentialHandler { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BasicCredentialHandler = BasicCredentialHandler; +class BearerCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BearerCredentialHandler = BearerCredentialHandler; +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map + +/***/ }), + +/***/ 6255: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(__nccwpck_require__(3685)); +const https = __importStar(__nccwpck_require__(5687)); +const pm = __importStar(__nccwpck_require__(9835)); +const tunnel = __importStar(__nccwpck_require__(4294)); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers = exports.Headers || (exports.Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } +} +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + })); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } + else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + })), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 9835: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + })(); + if (proxyVar) { + return new URL(proxyVar); + } + else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperReqHosts.some(x => x === upperNoProxyItem)) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +//# sourceMappingURL=proxy.js.map + +/***/ }), + +/***/ 2856: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const WritableStream = (__nccwpck_require__(4492).Writable) +const inherits = (__nccwpck_require__(7261).inherits) + +const StreamSearch = __nccwpck_require__(8534) + +const PartStream = __nccwpck_require__(8710) +const HeaderParser = __nccwpck_require__(333) + +const DASH = 45 +const B_ONEDASH = Buffer.from('-') +const B_CRLF = Buffer.from('\r\n') +const EMPTY_FN = function () {} + +function Dicer (cfg) { + if (!(this instanceof Dicer)) { return new Dicer(cfg) } + WritableStream.call(this, cfg) + + if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') } + + if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined } + + this._headerFirst = cfg.headerFirst + + this._dashes = 0 + this._parts = 0 + this._finished = false + this._realFinish = false + this._isPreamble = true + this._justMatched = false + this._firstWrite = true + this._inHeader = true + this._part = undefined + this._cb = undefined + this._ignoreData = false + this._partOpts = { highWaterMark: cfg.partHwm } + this._pause = false + + const self = this + this._hparser = new HeaderParser(cfg) + this._hparser.on('header', function (header) { + self._inHeader = false + self._part.emit('header', header) + }) +} +inherits(Dicer, WritableStream) + +Dicer.prototype.emit = function (ev) { + if (ev === 'finish' && !this._realFinish) { + if (!this._finished) { + const self = this + process.nextTick(function () { + self.emit('error', new Error('Unexpected end of multipart data')) + if (self._part && !self._ignoreData) { + const type = (self._isPreamble ? 'Preamble' : 'Part') + self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')) + self._part.push(null) + process.nextTick(function () { + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + return + } + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + } + } else { WritableStream.prototype.emit.apply(this, arguments) } +} + +Dicer.prototype._write = function (data, encoding, cb) { + // ignore unexpected data (e.g. extra trailer data after finished) + if (!this._hparser && !this._bparser) { return cb() } + + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts) + if (this._events.preamble) { this.emit('preamble', this._part) } else { this._ignore() } + } + const r = this._hparser.push(data) + if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() } + } + + // allows for "easier" testing + if (this._firstWrite) { + this._bparser.push(B_CRLF) + this._firstWrite = false + } + + this._bparser.push(data) + + if (this._pause) { this._cb = cb } else { cb() } +} + +Dicer.prototype.reset = function () { + this._part = undefined + this._bparser = undefined + this._hparser = undefined +} + +Dicer.prototype.setBoundary = function (boundary) { + const self = this + this._bparser = new StreamSearch('\r\n--' + boundary) + this._bparser.on('info', function (isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end) + }) +} + +Dicer.prototype._ignore = function () { + if (this._part && !this._ignoreData) { + this._ignoreData = true + this._part.on('error', EMPTY_FN) + // we must perform some kind of read on the stream even though we are + // ignoring the data, otherwise node's Readable stream will not emit 'end' + // after pushing null to the stream + this._part.resume() + } +} + +Dicer.prototype._oninfo = function (isMatch, data, start, end) { + let buf; const self = this; let i = 0; let r; let shouldWriteMore = true + + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && (start + i) < end) { + if (data[start + i] === DASH) { + ++i + ++this._dashes + } else { + if (this._dashes) { buf = B_ONEDASH } + this._dashes = 0 + break + } + } + if (this._dashes === 2) { + if ((start + i) < end && this._events.trailer) { this.emit('trailer', data.slice(start + i, end)) } + this.reset() + this._finished = true + // no more parts will be added + if (self._parts === 0) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } + } + if (this._dashes) { return } + } + if (this._justMatched) { this._justMatched = false } + if (!this._part) { + this._part = new PartStream(this._partOpts) + this._part._read = function (n) { + self._unpause() + } + if (this._isPreamble && this._events.preamble) { this.emit('preamble', this._part) } else if (this._isPreamble !== true && this._events.part) { this.emit('part', this._part) } else { this._ignore() } + if (!this._isPreamble) { this._inHeader = true } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { shouldWriteMore = this._part.push(buf) } + shouldWriteMore = this._part.push(data.slice(start, end)) + if (!shouldWriteMore) { this._pause = true } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { this._hparser.push(buf) } + r = this._hparser.push(data.slice(start, end)) + if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) } + } + } + if (isMatch) { + this._hparser.reset() + if (this._isPreamble) { this._isPreamble = false } else { + if (start !== end) { + ++this._parts + this._part.on('end', function () { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } else { + self._unpause() + } + } + }) + } + } + this._part.push(null) + this._part = undefined + this._ignoreData = false + this._justMatched = true + this._dashes = 0 + } +} + +Dicer.prototype._unpause = function () { + if (!this._pause) { return } + + this._pause = false + if (this._cb) { + const cb = this._cb + this._cb = undefined + cb() + } +} + +module.exports = Dicer + + +/***/ }), + +/***/ 333: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const EventEmitter = (__nccwpck_require__(5673).EventEmitter) +const inherits = (__nccwpck_require__(7261).inherits) +const getLimit = __nccwpck_require__(9692) + +const StreamSearch = __nccwpck_require__(8534) + +const B_DCRLF = Buffer.from('\r\n\r\n') +const RE_CRLF = /\r\n/g +const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/ // eslint-disable-line no-control-regex + +function HeaderParser (cfg) { + EventEmitter.call(this) + + cfg = cfg || {} + const self = this + this.nread = 0 + this.maxed = false + this.npairs = 0 + this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000) + this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024) + this.buffer = '' + this.header = {} + this.finished = false + this.ss = new StreamSearch(B_DCRLF) + this.ss.on('info', function (isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start + self.nread = self.maxHeaderSize + self.maxed = true + } else { self.nread += (end - start) } + + self.buffer += data.toString('binary', start, end) + } + if (isMatch) { self._finish() } + }) +} +inherits(HeaderParser, EventEmitter) + +HeaderParser.prototype.push = function (data) { + const r = this.ss.push(data) + if (this.finished) { return r } +} + +HeaderParser.prototype.reset = function () { + this.finished = false + this.buffer = '' + this.header = {} + this.ss.reset() +} + +HeaderParser.prototype._finish = function () { + if (this.buffer) { this._parseHeader() } + this.ss.matches = this.ss.maxMatches + const header = this.header + this.header = {} + this.buffer = '' + this.finished = true + this.nread = this.npairs = 0 + this.maxed = false + this.emit('header', header) +} + +HeaderParser.prototype._parseHeader = function () { + if (this.npairs === this.maxHeaderPairs) { return } + + const lines = this.buffer.split(RE_CRLF) + const len = lines.length + let m, h + + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (lines[i].length === 0) { continue } + if (lines[i][0] === '\t' || lines[i][0] === ' ') { + // folded header content + // RFC2822 says to just remove the CRLF and not the whitespace following + // it, so we follow the RFC and include the leading whitespace ... + if (h) { + this.header[h][this.header[h].length - 1] += lines[i] + continue + } + } + + const posColon = lines[i].indexOf(':') + if ( + posColon === -1 || + posColon === 0 + ) { + return + } + m = RE_HDR.exec(lines[i]) + h = m[1].toLowerCase() + this.header[h] = this.header[h] || [] + this.header[h].push((m[2] || '')) + if (++this.npairs === this.maxHeaderPairs) { break } + } +} + +module.exports = HeaderParser + + +/***/ }), + +/***/ 8710: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const inherits = (__nccwpck_require__(7261).inherits) +const ReadableStream = (__nccwpck_require__(4492).Readable) + +function PartStream (opts) { + ReadableStream.call(this, opts) +} +inherits(PartStream, ReadableStream) + +PartStream.prototype._read = function (n) {} + +module.exports = PartStream + + +/***/ }), + +/***/ 8534: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/** + * Copyright Brian White. All rights reserved. + * + * @see https://github.com/mscdex/streamsearch + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation + * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool + */ +const EventEmitter = (__nccwpck_require__(5673).EventEmitter) +const inherits = (__nccwpck_require__(7261).inherits) + +function SBMH (needle) { + if (typeof needle === 'string') { + needle = Buffer.from(needle) + } + + if (!Buffer.isBuffer(needle)) { + throw new TypeError('The needle has to be a String or a Buffer.') + } + + const needleLength = needle.length + + if (needleLength === 0) { + throw new Error('The needle cannot be an empty String/Buffer.') + } + + if (needleLength > 256) { + throw new Error('The needle cannot have a length bigger than 256.') + } + + this.maxMatches = Infinity + this.matches = 0 + + this._occ = new Array(256) + .fill(needleLength) // Initialize occurrence table. + this._lookbehind_size = 0 + this._needle = needle + this._bufpos = 0 + + this._lookbehind = Buffer.alloc(needleLength) + + // Populate occurrence table with analysis of the needle, + // ignoring last letter. + for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var + this._occ[needle[i]] = needleLength - 1 - i + } +} +inherits(SBMH, EventEmitter) + +SBMH.prototype.reset = function () { + this._lookbehind_size = 0 + this.matches = 0 + this._bufpos = 0 +} + +SBMH.prototype.push = function (chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, 'binary') + } + const chlen = chunk.length + this._bufpos = pos || 0 + let r + while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) } + return r +} + +SBMH.prototype._sbmh_feed = function (data) { + const len = data.length + const needle = this._needle + const needleLength = needle.length + const lastNeedleChar = needle[needleLength - 1] + + // Positive: points to a position in `data` + // pos == 3 points to data[3] + // Negative: points to a position in the lookbehind buffer + // pos == -2 points to lookbehind[lookbehind_size - 2] + let pos = -this._lookbehind_size + let ch + + if (pos < 0) { + // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool + // search with character lookup code that considers both the + // lookbehind buffer and the current round's haystack data. + // + // Loop until + // there is a match. + // or until + // we've moved past the position that requires the + // lookbehind buffer. In this case we switch to the + // optimized loop. + // or until + // the character to look at lies outside the haystack. + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1) + + if ( + ch === lastNeedleChar && + this._sbmh_memcmp(data, pos, needleLength - 1) + ) { + this._lookbehind_size = 0 + ++this.matches + this.emit('info', true) + + return (this._bufpos = pos + needleLength) + } + pos += this._occ[ch] + } + + // No match. + + if (pos < 0) { + // There's too few data for Boyer-Moore-Horspool to run, + // so let's use a different algorithm to skip as much as + // we can. + // Forward pos until + // the trailing part of lookbehind + data + // looks like the beginning of the needle + // or until + // pos == 0 + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos } + } + + if (pos >= 0) { + // Discard lookbehind buffer. + this.emit('info', false, this._lookbehind, 0, this._lookbehind_size) + this._lookbehind_size = 0 + } else { + // Cut off part of the lookbehind buffer that has + // been processed and append the entire haystack + // into it. + const bytesToCutOff = this._lookbehind_size + pos + if (bytesToCutOff > 0) { + // The cut off data is guaranteed not to contain the needle. + this.emit('info', false, this._lookbehind, 0, bytesToCutOff) + } + + this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, + this._lookbehind_size - bytesToCutOff) + this._lookbehind_size -= bytesToCutOff + + data.copy(this._lookbehind, this._lookbehind_size) + this._lookbehind_size += len + + this._bufpos = len + return len + } + } + + pos += (pos >= 0) * this._bufpos + + // Lookbehind buffer is now empty. We only need to check if the + // needle is in the haystack. + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos) + ++this.matches + if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) } + + return (this._bufpos = pos + needleLength) + } else { + pos = len - needleLength + } + + // There was no match. If there's trailing haystack data that we cannot + // match yet using the Boyer-Moore-Horspool algorithm (because the trailing + // data is less than the needle size) then match using a modified + // algorithm that starts matching from the beginning instead of the end. + // Whatever trailing data is left after running this algorithm is added to + // the lookbehind buffer. + while ( + pos < len && + ( + data[pos] !== needle[0] || + ( + (Buffer.compare( + data.subarray(pos, pos + len - pos), + needle.subarray(0, len - pos) + ) !== 0) + ) + ) + ) { + ++pos + } + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)) + this._lookbehind_size = len - pos + } + + // Everything until pos is guaranteed not to contain needle data. + if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) } + + this._bufpos = len + return len +} + +SBMH.prototype._sbmh_lookup_char = function (data, pos) { + return (pos < 0) + ? this._lookbehind[this._lookbehind_size + pos] + : data[pos] +} + +SBMH.prototype._sbmh_memcmp = function (data, pos, len) { + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false } + } + return true +} + +module.exports = SBMH + + +/***/ }), + +/***/ 3438: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const WritableStream = (__nccwpck_require__(4492).Writable) +const { inherits } = __nccwpck_require__(7261) +const Dicer = __nccwpck_require__(2856) + +const MultipartParser = __nccwpck_require__(415) +const UrlencodedParser = __nccwpck_require__(6780) +const parseParams = __nccwpck_require__(4426) + +function Busboy (opts) { + if (!(this instanceof Busboy)) { return new Busboy(opts) } + + if (typeof opts !== 'object') { + throw new TypeError('Busboy expected an options-Object.') + } + if (typeof opts.headers !== 'object') { + throw new TypeError('Busboy expected an options-Object with headers-attribute.') + } + if (typeof opts.headers['content-type'] !== 'string') { + throw new TypeError('Missing Content-Type-header.') + } + + const { + headers, + ...streamOptions + } = opts + + this.opts = { + autoDestroy: false, + ...streamOptions + } + WritableStream.call(this, this.opts) + + this._done = false + this._parser = this.getParserByHeaders(headers) + this._finished = false +} +inherits(Busboy, WritableStream) + +Busboy.prototype.emit = function (ev) { + if (ev === 'finish') { + if (!this._done) { + this._parser?.end() + return + } else if (this._finished) { + return + } + this._finished = true + } + WritableStream.prototype.emit.apply(this, arguments) +} + +Busboy.prototype.getParserByHeaders = function (headers) { + const parsed = parseParams(headers['content-type']) + + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath + } + + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg) + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg) + } + throw new Error('Unsupported Content-Type.') +} + +Busboy.prototype._write = function (chunk, encoding, cb) { + this._parser.write(chunk, cb) +} + +module.exports = Busboy +module.exports["default"] = Busboy +module.exports.Busboy = Busboy + +module.exports.Dicer = Dicer + + +/***/ }), + +/***/ 415: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// TODO: +// * support 1 nested multipart level +// (see second multipart example here: +// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) +// * support limits.fieldNameSize +// -- this will require modifications to utils.parseParams + +const { Readable } = __nccwpck_require__(4492) +const { inherits } = __nccwpck_require__(7261) + +const Dicer = __nccwpck_require__(2856) + +const parseParams = __nccwpck_require__(4426) +const decodeText = __nccwpck_require__(9136) +const basename = __nccwpck_require__(496) +const getLimit = __nccwpck_require__(9692) + +const RE_BOUNDARY = /^boundary$/i +const RE_FIELD = /^form-data$/i +const RE_CHARSET = /^charset$/i +const RE_FILENAME = /^filename$/i +const RE_NAME = /^name$/i + +Multipart.detect = /^multipart\/form-data/i +function Multipart (boy, cfg) { + let i + let len + const self = this + let boundary + const limits = cfg.limits + const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined)) + const parsedConType = cfg.parsedConType || [] + const defCharset = cfg.defCharset || 'utf8' + const preservePath = cfg.preservePath + const fileOpts = { highWaterMark: cfg.fileHwm } + + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && + RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1] + break + } + } + + function checkFinished () { + if (nends === 0 && finished && !boy._done) { + finished = false + self.end() + } + } + + if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') } + + const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + const fileSizeLimit = getLimit(limits, 'fileSize', Infinity) + const filesLimit = getLimit(limits, 'files', Infinity) + const fieldsLimit = getLimit(limits, 'fields', Infinity) + const partsLimit = getLimit(limits, 'parts', Infinity) + const headerPairsLimit = getLimit(limits, 'headerPairs', 2000) + const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024) + + let nfiles = 0 + let nfields = 0 + let nends = 0 + let curFile + let curField + let finished = false + + this._needDrain = false + this._pause = false + this._cb = undefined + this._nparts = 0 + this._boy = boy + + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + } + + this.parser = new Dicer(parserCfg) + this.parser.on('drain', function () { + self._needDrain = false + if (self._cb && !self._pause) { + const cb = self._cb + self._cb = undefined + cb() + } + }).on('part', function onPart (part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener('part', onPart) + self.parser.on('part', skipPart) + boy.hitPartsLimit = true + boy.emit('partsLimit') + return skipPart(part) + } + + // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let + // us emit 'end' early since we know the part has ended if we are already + // seeing the next part + if (curField) { + const field = curField + field.emit('end') + field.removeAllListeners('end') + } + + part.on('header', function (header) { + let contype + let fieldname + let parsed + let charset + let encoding + let filename + let nsize = 0 + + if (header['content-type']) { + parsed = parseParams(header['content-type'][0]) + if (parsed[0]) { + contype = parsed[0].toLowerCase() + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase() + break + } + } + } + } + + if (contype === undefined) { contype = 'text/plain' } + if (charset === undefined) { charset = defCharset } + + if (header['content-disposition']) { + parsed = parseParams(header['content-disposition'][0]) + if (!RE_FIELD.test(parsed[0])) { return skipPart(part) } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1] + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1] + if (!preservePath) { filename = basename(filename) } + } + } + } else { return skipPart(part) } + + if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' } + + let onData, + onEnd + + if (isPartAFile(fieldname, contype, filename)) { + // file/binary field + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true + boy.emit('filesLimit') + } + return skipPart(part) + } + + ++nfiles + + if (!boy._events.file) { + self.parser._ignore() + return + } + + ++nends + const file = new FileStream(fileOpts) + curFile = file + file.on('end', function () { + --nends + self._pause = false + checkFinished() + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + }) + file._read = function (n) { + if (!self._pause) { return } + self._pause = false + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + } + boy.emit('file', fieldname, file, filename, encoding, contype) + + onData = function (data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length + if (extralen > 0) { file.push(data.slice(0, extralen)) } + file.truncated = true + file.bytesRead = fileSizeLimit + part.removeAllListeners('data') + file.emit('limit') + return + } else if (!file.push(data)) { self._pause = true } + + file.bytesRead = nsize + } + + onEnd = function () { + curFile = undefined + file.push(null) + } + } else { + // non-file field + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true + boy.emit('fieldsLimit') + } + return skipPart(part) + } + + ++nfields + ++nends + let buffer = '' + let truncated = false + curField = part + + onData = function (data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = (fieldSizeLimit - (nsize - data.length)) + buffer += data.toString('binary', 0, extralen) + truncated = true + part.removeAllListeners('data') + } else { buffer += data.toString('binary') } + } + + onEnd = function () { + curField = undefined + if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) } + boy.emit('field', fieldname, buffer, false, truncated, encoding, contype) + --nends + checkFinished() + } + } + + /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become + broken. Streams2/streams3 is a huge black box of confusion, but + somehow overriding the sync state seems to fix things again (and still + seems to work for previous node versions). + */ + part._readableState.sync = false + + part.on('data', onData) + part.on('end', onEnd) + }).on('error', function (err) { + if (curFile) { curFile.emit('error', err) } + }) + }).on('error', function (err) { + boy.emit('error', err) + }).on('finish', function () { + finished = true + checkFinished() + }) +} + +Multipart.prototype.write = function (chunk, cb) { + const r = this.parser.write(chunk) + if (r && !this._pause) { + cb() + } else { + this._needDrain = !r + this._cb = cb + } +} + +Multipart.prototype.end = function () { + const self = this + + if (self.parser.writable) { + self.parser.end() + } else if (!self._boy._done) { + process.nextTick(function () { + self._boy._done = true + self._boy.emit('finish') + }) + } +} + +function skipPart (part) { + part.resume() +} + +function FileStream (opts) { + Readable.call(this, opts) + + this.bytesRead = 0 + + this.truncated = false +} + +inherits(FileStream, Readable) + +FileStream.prototype._read = function (n) {} + +module.exports = Multipart + + +/***/ }), + +/***/ 6780: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Decoder = __nccwpck_require__(9730) +const decodeText = __nccwpck_require__(9136) +const getLimit = __nccwpck_require__(9692) + +const RE_CHARSET = /^charset$/i + +UrlEncoded.detect = /^application\/x-www-form-urlencoded/i +function UrlEncoded (boy, cfg) { + const limits = cfg.limits + const parsedConType = cfg.parsedConType + this.boy = boy + + this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100) + this.fieldsLimit = getLimit(limits, 'fields', Infinity) + + let charset + for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var + if (Array.isArray(parsedConType[i]) && + RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase() + break + } + } + + if (charset === undefined) { charset = cfg.defCharset || 'utf8' } + + this.decoder = new Decoder() + this.charset = charset + this._fields = 0 + this._state = 'key' + this._checkingBytes = true + this._bytesKey = 0 + this._bytesVal = 0 + this._key = '' + this._val = '' + this._keyTrunc = false + this._valTrunc = false + this._hitLimit = false +} + +UrlEncoded.prototype.write = function (data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true + this.boy.emit('fieldsLimit') + } + return cb() + } + + let idxeq; let idxamp; let i; let p = 0; const len = data.length + + while (p < len) { + if (this._state === 'key') { + idxeq = idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x3D/* = */) { + idxeq = i + break + } else if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesKey } + } + + if (idxeq !== undefined) { + // key with assignment + if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) } + this._state = 'val' + + this._hitLimit = false + this._checkingBytes = true + this._val = '' + this._bytesVal = 0 + this._valTrunc = false + this.decoder.reset() + + p = idxeq + 1 + } else if (idxamp !== undefined) { + // key with no assignment + ++this._fields + let key; const keyTrunc = this._keyTrunc + if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key } + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() + + if (key.length) { + this.boy.emit('field', decodeText(key, 'binary', this.charset), + '', + keyTrunc, + false) + } + + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._keyTrunc = true + } + } else { + if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) } + p = len + } + } else { + idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesVal } + } + + if (idxamp !== undefined) { + ++this._fields + if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) } + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + this._state = 'key' + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() + + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._val === '' && this.fieldSizeLimit === 0) || + (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._valTrunc = true + } + } else { + if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) } + p = len + } + } + } + cb() +} + +UrlEncoded.prototype.end = function () { + if (this.boy._done) { return } + + if (this._state === 'key' && this._key.length > 0) { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + '', + this._keyTrunc, + false) + } else if (this._state === 'val') { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + } + this.boy._done = true + this.boy.emit('finish') +} + +module.exports = UrlEncoded + + +/***/ }), + +/***/ 9730: +/***/ ((module) => { + +"use strict"; + + +const RE_PLUS = /\+/g + +const HEX = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +] + +function Decoder () { + this.buffer = undefined +} +Decoder.prototype.write = function (str) { + // Replace '+' with ' ' before decoding + str = str.replace(RE_PLUS, ' ') + let res = '' + let i = 0; let p = 0; const len = str.length + for (; i < len; ++i) { + if (this.buffer !== undefined) { + if (!HEX[str.charCodeAt(i)]) { + res += '%' + this.buffer + this.buffer = undefined + --i // retry character + } else { + this.buffer += str[i] + ++p + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)) + this.buffer = undefined + } + } + } else if (str[i] === '%') { + if (i > p) { + res += str.substring(p, i) + p = i + } + this.buffer = '' + ++p + } + } + if (p < len && this.buffer === undefined) { res += str.substring(p) } + return res +} +Decoder.prototype.reset = function () { + this.buffer = undefined +} + +module.exports = Decoder + + +/***/ }), + +/***/ 496: +/***/ ((module) => { + +"use strict"; + + +module.exports = function basename (path) { + if (typeof path !== 'string') { return '' } + for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: // '\' + path = path.slice(i + 1) + return (path === '..' || path === '.' ? '' : path) + } + } + return (path === '..' || path === '.' ? '' : path) +} + + +/***/ }), + +/***/ 9136: +/***/ ((module) => { + +"use strict"; + + +// Node has always utf-8 +const utf8Decoder = new TextDecoder('utf-8') +const textDecoders = new Map([ + ['utf-8', utf8Decoder], + ['utf8', utf8Decoder] +]) + +function decodeText (text, textEncoding, destEncoding) { + if (text) { + if (textDecoders.has(destEncoding)) { + try { + return textDecoders.get(destEncoding).decode(Buffer.from(text, textEncoding)) + } catch (e) { } + } else { + try { + textDecoders.set(destEncoding, new TextDecoder(destEncoding)) + return textDecoders.get(destEncoding).decode(Buffer.from(text, textEncoding)) + } catch (e) { } + } + } + return text +} + +module.exports = decodeText + + +/***/ }), + +/***/ 9692: +/***/ ((module) => { + +"use strict"; + + +module.exports = function getLimit (limits, name, defaultLimit) { + if ( + !limits || + limits[name] === undefined || + limits[name] === null + ) { return defaultLimit } + + if ( + typeof limits[name] !== 'number' || + isNaN(limits[name]) + ) { throw new TypeError('Limit ' + name + ' is not a valid number') } + + return limits[name] +} + + +/***/ }), + +/***/ 4426: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const decodeText = __nccwpck_require__(9136) + +const RE_ENCODED = /%([a-fA-F0-9]{2})/g + +function encodedReplacer (match, byte) { + return String.fromCharCode(parseInt(byte, 16)) +} + +function parseParams (str) { + const res = [] + let state = 'key' + let charset = '' + let inquote = false + let escaping = false + let p = 0 + let tmp = '' + + for (var i = 0, len = str.length; i < len; ++i) { // eslint-disable-line no-var + const char = str[i] + if (char === '\\' && inquote) { + if (escaping) { escaping = false } else { + escaping = true + continue + } + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false + state = 'key' + } else { inquote = true } + continue + } else { escaping = false } + } else { + if (escaping && inquote) { tmp += '\\' } + escaping = false + if ((state === 'charset' || state === 'lang') && char === "'") { + if (state === 'charset') { + state = 'lang' + charset = tmp.substring(1) + } else { state = 'value' } + tmp = '' + continue + } else if (state === 'key' && + (char === '*' || char === '=') && + res.length) { + if (char === '*') { state = 'charset' } else { state = 'value' } + res[p] = [tmp, undefined] + tmp = '' + continue + } else if (!inquote && char === ';') { + state = 'key' + if (charset) { + if (tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } + charset = '' + } else if (tmp.length) { + tmp = decodeText(tmp, 'binary', 'utf8') + } + if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp } + tmp = '' + ++p + continue + } else if (!inquote && (char === ' ' || char === '\t')) { continue } + } + tmp += char + } + if (charset && tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } else if (tmp) { + tmp = decodeText(tmp, 'binary', 'utf8') + } + + if (res[p] === undefined) { + if (tmp) { res[p] = tmp } + } else { res[p][1] = tmp } + + return res +} + +module.exports = parseParams + + +/***/ }), + +/***/ 4822: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +let imports = {}; +imports['__wbindgen_placeholder__'] = module.exports; +let wasm; + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +let cachedUint8Memory0 = null; + +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function getObject(idx) { return heap[idx]; } + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let WASM_VECTOR_LEN = 0; + +let cachedTextEncoder = new TextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +let cachedInt32Memory0 = null; + +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} + +let cachedFloat64Memory0 = null; + +function getFloat64Memory0() { + if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) { + cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); + } + return cachedFloat64Memory0; +} + +let cachedBigInt64Memory0 = null; + +function getBigInt64Memory0() { + if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) { + cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); + } + return cachedBigInt64Memory0; +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(state => { + wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b) +}); + +function makeMutClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); + CLOSURE_DTORS.unregister(state); + } else { + state.a = a; + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; +} +function __wbg_adapter_54(arg0, arg1, arg2) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.wasm_bindgen__convert__closures__invoke1_mut__h27449ed65f458dfd(retptr, arg0, arg1, addHeapObject(arg2)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} + +function makeClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + try { + return f(state.a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); + state.a = 0; + CLOSURE_DTORS.unregister(state); + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; +} +function __wbg_adapter_57(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h769d820de1891105(arg0, arg1, addHeapObject(arg2)); +} + +function __wbg_adapter_60(arg0, arg1) { + wasm._dyn_core__ops__function__Fn_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hee32a5771d914bd9(arg0, arg1); +} + +function __wbg_adapter_63(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0ab01990b7f915ad(arg0, arg1, addHeapObject(arg2)); +} + +function __wbg_adapter_66(arg0, arg1) { + wasm.wasm_bindgen__convert__closures__invoke0_mut__hb300b56eaf20db18(arg0, arg1); +} + +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} + +let cachedUint32Memory0 = null; + +function getUint32Memory0() { + if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { + cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32Memory0; +} + +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + const mem = getUint32Memory0(); + for (let i = 0; i < array.length; i++) { + mem[ptr / 4 + i] = addHeapObject(array[i]); + } + WASM_VECTOR_LEN = array.length; + return ptr; +} + +let stack_pointer = 128; + +function addBorrowedObject(obj) { + if (stack_pointer == 1) throw new Error('out of js stack'); + heap[--stack_pointer] = obj; + return stack_pointer; +} + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} + +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} + +function getArrayJsValueFromWasm0(ptr, len) { + ptr = ptr >>> 0; + const mem = getUint32Memory0(); + const slice = mem.subarray(ptr / 4, ptr / 4 + len); + const result = []; + for (let i = 0; i < slice.length; i++) { + result.push(takeObject(slice[i])); + } + return result; +} + +let cachedUint16Memory0 = null; + +function getUint16Memory0() { + if (cachedUint16Memory0 === null || cachedUint16Memory0.byteLength === 0) { + cachedUint16Memory0 = new Uint16Array(wasm.memory.buffer); + } + return cachedUint16Memory0; +} + +function getArrayU16FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint16Memory0().subarray(ptr / 2, ptr / 2 + len); +} +/** +* Get the versions of the Rust libraries we are using. +* @returns {Versions} +*/ +module.exports.getVersions = function() { + const ret = wasm.getVersions(); + return Versions.__wrap(ret); +}; + +/** +* Run some stuff when the Wasm module is instantiated. +* +* Right now, it does the following: +* +* * Redirect Rust panics to JavaScript console. +*/ +module.exports.start = function() { + wasm.start(); +}; + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} +function __wbg_adapter_807(arg0, arg1, arg2, arg3) { + wasm.wasm_bindgen__convert__closures__invoke2_mut__h1a45a52ce4a1254d(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); +} + +/** +* List of `Qr` states +*/ +module.exports.QrState = Object.freeze({ +/** +* We have received the other device's details (from the +* `m.key.verification.request` or `m.key.verification.ready`) and +* established the shared secret, so can +* display the QR code. +*/ +Created:0,"0":"Created", +/** +* The other side has scanned our QR code and sent an +* `m.key.verification.start` message with `method: m.reciprocate.v1` with +* matching shared secret. +*/ +Scanned:1,"1":"Scanned", +/** +* Our user has confirmed that the other device scanned successfully. We +* have sent an `m.key.verification.done`. +*/ +Confirmed:2,"2":"Confirmed", +/** +* We have scanned the other side's QR code and are able to send a +* `m.key.verification.start` message with `method: m.reciprocate.v1`. +* +* Call `Qr::reciprocate` to build the start message. +* +* Note that, despite the name of this state, we have not necessarily +* yet sent the `m.reciprocate.v1` message. +*/ +Reciprocated:3,"3":"Reciprocated", +/** +* Verification complete: we have received an `m.key.verification.done` +* from the other side. +*/ +Done:4,"4":"Done", +/** +* Verification cancelled or failed. +*/ +Cancelled:5,"5":"Cancelled", }); +/** +* Logger level. +*/ +module.exports.LoggerLevel = Object.freeze({ +/** +* `TRACE` level. +* +* Designate very low priority, often extremely verbose, +* information. +*/ +Trace:0,"0":"Trace", +/** +* `DEBUG` level. +* +* Designate lower priority information. +*/ +Debug:1,"1":"Debug", +/** +* `INFO` level. +* +* Designate useful information. +*/ +Info:2,"2":"Info", +/** +* `WARN` level. +* +* Designate hazardous situations. +*/ +Warn:3,"3":"Warn", +/** +* `ERROR` level. +* +* Designate very serious errors. +*/ +Error:4,"4":"Error", }); +/** +* Decryption error codes +*/ +module.exports.DecryptionErrorCode = Object.freeze({ +/** +* The room key is not known +*/ +MissingRoomKey:0,"0":"MissingRoomKey", +/** +* The room key is known but ratcheted +*/ +UnknownMessageIndex:1,"1":"UnknownMessageIndex", +/** +* Decryption failed because of a mismatch between the identity keys of the +* device we received the room key from and the identity keys recorded in +* the plaintext of the room key to-device message. +*/ +MismatchedIdentityKeys:2,"2":"MismatchedIdentityKeys", +/** +* Other failuer +*/ +UnableToDecrypt:3,"3":"UnableToDecrypt", }); +/** +* An encryption algorithm to be used to encrypt messages sent to a +* room. +*/ +module.exports.EncryptionAlgorithm = Object.freeze({ +/** +* Olm version 1 using Curve25519, AES-256, and SHA-256. +*/ +OlmV1Curve25519AesSha2:0,"0":"OlmV1Curve25519AesSha2", +/** +* Megolm version 1 using AES-256 and SHA-256. +*/ +MegolmV1AesSha2:1,"1":"MegolmV1AesSha2", +/** +* Unsupported algorithm. +* +* Applications should ignore this value if it is received, and should +* never set it. +*/ +Unknown:2,"2":"Unknown", }); +/** +* List of available verification methods. +*/ +module.exports.VerificationMethod = Object.freeze({ +/** +* The `m.sas.v1` verification method. +* +* SAS means Short Authentication String. +*/ +SasV1:0,"0":"SasV1", +/** +* The `m.qr_code.scan.v1` verification method. +*/ +QrCodeScanV1:1,"1":"QrCodeScanV1", +/** +* The `m.qr_code.show.v1` verification method. +*/ +QrCodeShowV1:2,"2":"QrCodeShowV1", +/** +* The `m.reciprocate.v1` verification method. +*/ +ReciprocateV1:3,"3":"ReciprocateV1", }); +/** +* Take a look at [`matrix_sdk_common::deserialized_responses::ShieldState`] +* for more info. +*/ +module.exports.ShieldColor = Object.freeze({ +/** +* Important warning +*/ +Red:0,"0":"Red", +/** +* Low warning +*/ +Grey:1,"1":"Grey", +/** +* No warning +*/ +None:2,"2":"None", }); +/** +* The result of a signature check. +*/ +module.exports.SignatureState = Object.freeze({ +/** +* The signature is missing. +*/ +Missing:0,"0":"Missing", +/** +* The signature is invalid. +*/ +Invalid:1,"1":"Invalid", +/** +* The signature is valid but the device or user identity that created the +* signature is not trusted. +*/ +ValidButNotTrusted:2,"2":"ValidButNotTrusted", +/** +* The signature is valid and the device or user identity that created the +* signature is trusted. +*/ +ValidAndTrusted:3,"3":"ValidAndTrusted", }); +/** +* The local trust state of a device. +*/ +module.exports.LocalTrust = Object.freeze({ +/** +* The device has been verified and is trusted. +*/ +Verified:0,"0":"Verified", +/** +* The device been blacklisted from communicating. +*/ +BlackListed:1,"1":"BlackListed", +/** +* The trust state of the device is being ignored. +*/ +Ignored:2,"2":"Ignored", +/** +* The trust state is unset. +*/ +Unset:3,"3":"Unset", }); +/** +* Who can see a room's history. +*/ +module.exports.HistoryVisibility = Object.freeze({ +/** +* Previous events are accessible to newly joined members from +* the point they were invited onwards. +* +* Events stop being accessible when the member's state changes +* to something other than *invite* or *join*. +*/ +Invited:0,"0":"Invited", +/** +* Previous events are accessible to newly joined members from +* the point they joined the room onwards. +* +* Events stop being accessible when the member's state changes +* to something other than *join*. +*/ +Joined:1,"1":"Joined", +/** +* Previous events are always accessible to newly joined members. +* +* All events in the room are accessible, even those sent when +* the member was not a part of the room. +*/ +Shared:2,"2":"Shared", +/** +* All events while this is the `HistoryVisibility` value may be +* shared by any participating homeserver with anyone, regardless +* of whether they have ever joined the room. +*/ +WorldReadable:3,"3":"WorldReadable", }); +/** +* Represent the type of a request. +*/ +module.exports.RequestType = Object.freeze({ +/** +* Represents a `KeysUploadRequest`. +*/ +KeysUpload:0,"0":"KeysUpload", +/** +* Represents a `KeysQueryRequest`. +*/ +KeysQuery:1,"1":"KeysQuery", +/** +* Represents a `KeysClaimRequest`. +*/ +KeysClaim:2,"2":"KeysClaim", +/** +* Represents a `ToDeviceRequest`. +*/ +ToDevice:3,"3":"ToDevice", +/** +* Represents a `SignatureUploadRequest`. +*/ +SignatureUpload:4,"4":"SignatureUpload", +/** +* Represents a `RoomMessageRequest`. +*/ +RoomMessage:5,"5":"RoomMessage", +/** +* Represents a `KeysBackupRequest`. +*/ +KeysBackup:6,"6":"KeysBackup", }); +/** +* The basic key algorithm names in the specification. +*/ +module.exports.DeviceKeyAlgorithmName = Object.freeze({ +/** +* The Ed25519 signature algorithm. +*/ +Ed25519:0,"0":"Ed25519", +/** +* The Curve25519 ECDH algorithm. +*/ +Curve25519:1,"1":"Curve25519", +/** +* The Curve25519 ECDH algorithm, but the key also contains +* signatures. +*/ +SignedCurve25519:2,"2":"SignedCurve25519", +/** +* An unknown device key algorithm. +*/ +Unknown:3,"3":"Unknown", }); +/** +* An enum over the different key types a device can have. +* +* Currently devices have a curve25519 and ed25519 keypair. The keys +* transport format is a base64 encoded string, any unknown key type +* will be left as such a string. +*/ +module.exports.DeviceKeyName = Object.freeze({ +/** +* The curve25519 device key. +*/ +Curve25519:0,"0":"Curve25519", +/** +* The ed25519 device key. +*/ +Ed25519:1,"1":"Ed25519", +/** +* An unknown device key. +*/ +Unknown:2,"2":"Unknown", }); +/** +* List of VerificationRequestState phases +*/ +module.exports.VerificationRequestPhase = Object.freeze({ +/** +* The verification request has been newly created by us. +*/ +Created:0,"0":"Created", +/** +* The verification request was received from the other party. +*/ +Requested:1,"1":"Requested", +/** +* The verification request is ready to start a verification flow. +*/ +Ready:2,"2":"Ready", +/** +* The verification request has transitioned into a concrete verification +* flow. For example it transitioned into the emoji based SAS +* verification. +*/ +Transitioned:3,"3":"Transitioned", +/** +* The verification flow that was started with this request has finished. +*/ +Done:4,"4":"Done", +/** +* The verification process has been cancelled. +*/ +Cancelled:5,"5":"Cancelled", }); + +const AttachmentFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_attachment_free(ptr >>> 0)); +/** +* A type to encrypt and to decrypt anything that can fit in an +* `Uint8Array`, usually big buffer. +*/ +class Attachment { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + AttachmentFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_attachment_free(ptr); + } + /** + * Encrypt the content of the `Uint8Array`. + * + * It produces an `EncryptedAttachment`, which can be used to + * retrieve the media encryption information, or the encrypted + * data. + * @param {Uint8Array} array + * @returns {EncryptedAttachment} + */ + static encrypt(array) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(array, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.attachment_encrypt(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return EncryptedAttachment.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Decrypt an `EncryptedAttachment`. + * + * The encrypted attachment can be created manually, or from the + * `encrypt` method. + * + * **Warning**: The encrypted attachment can be used only + * **once**! The encrypted data will still be present, but the + * media encryption info (which contain secrets) will be + * destroyed. It is still possible to get a JSON-encoded backup + * by calling `EncryptedAttachment.mediaEncryptionInfo`. + * @param {EncryptedAttachment} attachment + * @returns {Uint8Array} + */ + static decrypt(attachment) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(attachment, EncryptedAttachment); + wasm.attachment_decrypt(retptr, attachment.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +module.exports.Attachment = Attachment; + +const BackupDecryptionKeyFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_backupdecryptionkey_free(ptr >>> 0)); +/** +* The private part of the backup key, the one used for recovery. +*/ +class BackupDecryptionKey { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(BackupDecryptionKey.prototype); + obj.__wbg_ptr = ptr; + BackupDecryptionKeyFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + BackupDecryptionKeyFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_backupdecryptionkey_free(ptr); + } + /** + * Create a new random [`BackupDecryptionKey`]. + * @returns {BackupDecryptionKey} + */ + static createRandomKey() { + const ret = wasm.backupdecryptionkey_createRandomKey(); + return BackupDecryptionKey.__wrap(ret); + } + /** + * Try to create a [`BackupDecryptionKey`] from a base 64 encoded string. + * @param {string} key + * @returns {BackupDecryptionKey} + */ + static fromBase64(key) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.backupdecryptionkey_fromBase64(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return BackupDecryptionKey.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Convert the backup decryption key to a base 64 encoded string. + * @returns {string} + */ + toBase64() { + const ret = wasm.backupdecryptionkey_toBase64(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Get the public part of the backup key. + * @returns {MegolmV1BackupKey} + */ + get megolmV1PublicKey() { + const ret = wasm.backupdecryptionkey_megolmV1PublicKey(this.__wbg_ptr); + return MegolmV1BackupKey.__wrap(ret); + } + /** + * Try to decrypt a message that was encrypted using the public part of the + * backup key. + * @param {string} ephemeral_key + * @param {string} mac + * @param {string} ciphertext + * @returns {string} + */ + decryptV1(ephemeral_key, mac, ciphertext) { + let deferred5_0; + let deferred5_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(ephemeral_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(mac, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + const ptr2 = passStringToWasm0(ciphertext, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len2 = WASM_VECTOR_LEN; + wasm.backupdecryptionkey_decryptV1(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr4 = r0; + var len4 = r1; + if (r3) { + ptr4 = 0; len4 = 0; + throw takeObject(r2); + } + deferred5_0 = ptr4; + deferred5_1 = len4; + return getStringFromWasm0(ptr4, len4); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred5_0, deferred5_1, 1); + } + } +} +module.exports.BackupDecryptionKey = BackupDecryptionKey; + +const BackupKeysFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_backupkeys_free(ptr >>> 0)); +/** +* Stored versions of the backup keys. +*/ +class BackupKeys { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(BackupKeys.prototype); + obj.__wbg_ptr = ptr; + BackupKeysFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + BackupKeysFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_backupkeys_free(ptr); + } + /** + * The key used to decrypt backed up room keys + * @returns {BackupDecryptionKey | undefined} + */ + get decryptionKey() { + const ret = wasm.__wbg_get_backupkeys_decryptionKey(this.__wbg_ptr); + return ret === 0 ? undefined : BackupDecryptionKey.__wrap(ret); + } + /** + * The key used to decrypt backed up room keys + * @param {BackupDecryptionKey | undefined} [arg0] + */ + set decryptionKey(arg0) { + let ptr0 = 0; + if (!isLikeNone(arg0)) { + _assertClass(arg0, BackupDecryptionKey); + ptr0 = arg0.__destroy_into_raw(); + } + wasm.__wbg_set_backupkeys_decryptionKey(this.__wbg_ptr, ptr0); + } + /** + * The version that we are using for backups. + * @returns {string | undefined} + */ + get backupVersion() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_backupkeys_backupVersion(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The version that we are using for backups. + * @param {string | undefined} [arg0] + */ + set backupVersion(arg0) { + var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_backupkeys_backupVersion(this.__wbg_ptr, ptr0, len0); + } + /** + * The key used to decrypt backed up room keys, encoded as base64 + * + * @deprecated Use `BackupKeys.decryptionKey.toBase64()` + * @returns {string | undefined} + */ + get decryptionKeyBase64() { + const ret = wasm.backupkeys_decryptionKeyBase64(this.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.BackupKeys = BackupKeys; + +const BaseMigrationDataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_basemigrationdata_free(ptr >>> 0)); +/** +* The base dataset that is important to migrate to the Rust SDK. +* +* Can be imported into the rust store with {@link #migrateBaseData}. +*/ +class BaseMigrationData { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + BaseMigrationDataFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_basemigrationdata_free(ptr); + } + /** + * The user id of the account owner. + * @returns {UserId | undefined} + */ + get userId() { + const ret = wasm.__wbg_get_basemigrationdata_userId(this.__wbg_ptr); + return ret === 0 ? undefined : UserId.__wrap(ret); + } + /** + * The user id of the account owner. + * @param {UserId | undefined} [arg0] + */ + set userId(arg0) { + let ptr0 = 0; + if (!isLikeNone(arg0)) { + _assertClass(arg0, UserId); + ptr0 = arg0.__destroy_into_raw(); + } + wasm.__wbg_set_basemigrationdata_userId(this.__wbg_ptr, ptr0); + } + /** + * The device ID of the account owner. + * @returns {DeviceId | undefined} + */ + get deviceId() { + const ret = wasm.__wbg_get_basemigrationdata_deviceId(this.__wbg_ptr); + return ret === 0 ? undefined : DeviceId.__wrap(ret); + } + /** + * The device ID of the account owner. + * @param {DeviceId | undefined} [arg0] + */ + set deviceId(arg0) { + let ptr0 = 0; + if (!isLikeNone(arg0)) { + _assertClass(arg0, DeviceId); + ptr0 = arg0.__destroy_into_raw(); + } + wasm.__wbg_set_basemigrationdata_deviceId(this.__wbg_ptr, ptr0); + } + /** + * The pickle string holding the Olm Account, as returned by + * `olm_pickle_account` in libolm. + * @returns {string} + */ + get pickledAccount() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_pickledAccount(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * The pickle string holding the Olm Account, as returned by + * `olm_pickle_account` in libolm. + * @param {string} arg0 + */ + set pickledAccount(arg0) { + const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_pickledAccount(this.__wbg_ptr, ptr0, len0); + } + /** + * The backup version that is currently active. + * @returns {string | undefined} + */ + get backupVersion() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_backupVersion(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The backup version that is currently active. + * @param {string | undefined} [arg0] + */ + set backupVersion(arg0) { + var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_backupVersion(this.__wbg_ptr, ptr0, len0); + } + /** + * The backup recovery key, as a base64-encoded string. + * @returns {string | undefined} + */ + get backupRecoveryKey() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_backupRecoveryKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The backup recovery key, as a base64-encoded string. + * @param {string | undefined} [arg0] + */ + set backupRecoveryKey(arg0) { + var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_backupRecoveryKey(this.__wbg_ptr, ptr0, len0); + } + /** + * The private, base64-encoded, master cross-signing key. + * @returns {string | undefined} + */ + get privateCrossSigningMasterKey() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_privateCrossSigningMasterKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The private, base64-encoded, master cross-signing key. + * @param {string | undefined} [arg0] + */ + set privateCrossSigningMasterKey(arg0) { + var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_privateCrossSigningMasterKey(this.__wbg_ptr, ptr0, len0); + } + /** + * The private, base64-encoded, self-signing key. + * @returns {string | undefined} + */ + get privateCrossSigningSelfSigningKey() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_privateCrossSigningSelfSigningKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The private, base64-encoded, self-signing key. + * @param {string | undefined} [arg0] + */ + set privateCrossSigningSelfSigningKey(arg0) { + var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_privateCrossSigningSelfSigningKey(this.__wbg_ptr, ptr0, len0); + } + /** + * The private, base64-encoded, user-signing key. + * @returns {string | undefined} + */ + get privateCrossSigningUserSigningKey() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_privateCrossSigningUserSigningKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The private, base64-encoded, user-signing key. + * @param {string | undefined} [arg0] + */ + set privateCrossSigningUserSigningKey(arg0) { + var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_privateCrossSigningUserSigningKey(this.__wbg_ptr, ptr0, len0); + } + /** + * Create a new `BaseMigrationData` with default values. + */ + constructor() { + const ret = wasm.basemigrationdata_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } +} +module.exports.BaseMigrationData = BaseMigrationData; + +const CancelInfoFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_cancelinfo_free(ptr >>> 0)); +/** +* Information about the cancellation of a verification request or +* verification flow. +*/ +class CancelInfo { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CancelInfo.prototype); + obj.__wbg_ptr = ptr; + CancelInfoFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CancelInfoFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_cancelinfo_free(ptr); + } + /** + * Get the human readable reason of the cancellation. + * @returns {string} + */ + reason() { + const ret = wasm.cancelinfo_reason(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Get the `code` (e.g. `m.user`) that was used to cancel the + * verification. + * @returns {string} + */ + cancelCode() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.cancelinfo_cancelCode(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Was the verification cancelled by us? + * @returns {boolean} + */ + cancelledbyUs() { + const ret = wasm.cancelinfo_cancelledbyUs(this.__wbg_ptr); + return ret !== 0; + } +} +module.exports.CancelInfo = CancelInfo; + +const CrossSigningBootstrapRequestsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_crosssigningbootstraprequests_free(ptr >>> 0)); +/** +* A set of requests to be executed when bootstrapping cross-signing using +* {@link OlmMachine.bootstrapCrossSigning}. +*/ +class CrossSigningBootstrapRequests { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CrossSigningBootstrapRequests.prototype); + obj.__wbg_ptr = ptr; + CrossSigningBootstrapRequestsFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CrossSigningBootstrapRequestsFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_crosssigningbootstraprequests_free(ptr); + } + /** + * An optional request to upload a device key. + * + * This will either be `undefined`, or an "outgoing request" as returned by + * {@link OlmMachine.outgoingRequests}. + * + * If it is defined, the request should be sent first, and the result sent + * back with {@link OlmMachine.markRequestAsSent}. + * @returns {any} + */ + get uploadKeysRequest() { + const ret = wasm.__wbg_get_crosssigningbootstraprequests_uploadKeysRequest(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Request to upload the cross-signing keys. + * + * Should be sent second. + * @returns {UploadSigningKeysRequest} + */ + get uploadSigningKeysRequest() { + const ret = wasm.__wbg_get_crosssigningbootstraprequests_uploadSigningKeysRequest(this.__wbg_ptr); + return UploadSigningKeysRequest.__wrap(ret); + } + /** + * Request to upload key signatures, including those for the cross-signing + * keys, and maybe some for the optional uploaded key too. + * + * Should be sent last. + * @returns {SignatureUploadRequest} + */ + get uploadSignaturesRequest() { + const ret = wasm.__wbg_get_crosssigningbootstraprequests_uploadSignaturesRequest(this.__wbg_ptr); + return SignatureUploadRequest.__wrap(ret); + } +} +module.exports.CrossSigningBootstrapRequests = CrossSigningBootstrapRequests; + +const CrossSigningKeyExportFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_crosssigningkeyexport_free(ptr >>> 0)); +/** +* A struct containing private cross signing keys that can be backed +* up or uploaded to the secret store. +*/ +class CrossSigningKeyExport { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CrossSigningKeyExport.prototype); + obj.__wbg_ptr = ptr; + CrossSigningKeyExportFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CrossSigningKeyExportFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_crosssigningkeyexport_free(ptr); + } + /** + * The seed of the master key encoded as unpadded base64. + * @returns {string | undefined} + */ + get masterKey() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.crosssigningkeyexport_masterKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The seed of the self signing key encoded as unpadded base64. + * @returns {string | undefined} + */ + get self_signing_key() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.crosssigningkeyexport_self_signing_key(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The seed of the user signing key encoded as unpadded base64. + * @returns {string | undefined} + */ + get userSigningKey() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.crosssigningkeyexport_userSigningKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +module.exports.CrossSigningKeyExport = CrossSigningKeyExport; + +const CrossSigningStatusFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_crosssigningstatus_free(ptr >>> 0)); +/** +* Struct representing the state of our private cross signing keys, +* it shows which private cross signing keys we have locally stored. +*/ +class CrossSigningStatus { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(CrossSigningStatus.prototype); + obj.__wbg_ptr = ptr; + CrossSigningStatusFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + CrossSigningStatusFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_crosssigningstatus_free(ptr); + } + /** + * Do we have the master key? + * @returns {boolean} + */ + get hasMaster() { + const ret = wasm.crosssigningstatus_hasMaster(this.__wbg_ptr); + return ret !== 0; + } + /** + * Do we have the self signing key? This one is necessary to sign + * our own devices. + * @returns {boolean} + */ + get hasSelfSigning() { + const ret = wasm.crosssigningstatus_hasSelfSigning(this.__wbg_ptr); + return ret !== 0; + } + /** + * Do we have the user signing key? This one is necessary to sign + * other users. + * @returns {boolean} + */ + get hasUserSigning() { + const ret = wasm.crosssigningstatus_hasUserSigning(this.__wbg_ptr); + return ret !== 0; + } +} +module.exports.CrossSigningStatus = CrossSigningStatus; + +const Curve25519PublicKeyFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_curve25519publickey_free(ptr >>> 0)); +/** +* A Curve25519 public key. +*/ +class Curve25519PublicKey { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Curve25519PublicKey.prototype); + obj.__wbg_ptr = ptr; + Curve25519PublicKeyFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + Curve25519PublicKeyFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_curve25519publickey_free(ptr); + } + /** + * The number of bytes a Curve25519 public key has. + * @returns {number} + */ + get length() { + const ret = wasm.curve25519publickey_length(this.__wbg_ptr); + return ret >>> 0; + } + /** + * Serialize an Curve25519 public key to an unpadded base64 + * representation. + * @returns {string} + */ + toBase64() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.curve25519publickey_toBase64(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.Curve25519PublicKey = Curve25519PublicKey; + +const DecryptedRoomEventFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_decryptedroomevent_free(ptr >>> 0)); +/** +* A decrypted room event. +*/ +class DecryptedRoomEvent { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(DecryptedRoomEvent.prototype); + obj.__wbg_ptr = ptr; + DecryptedRoomEventFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DecryptedRoomEventFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_decryptedroomevent_free(ptr); + } + /** + * The JSON-encoded decrypted event. + * @returns {string} + */ + get event() { + const ret = wasm.__wbg_get_decryptedroomevent_event(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The user ID of the event sender, note this is untrusted data + * unless the `verification_state` is as well trusted. + * @returns {UserId | undefined} + */ + get sender() { + const ret = wasm.decryptedroomevent_sender(this.__wbg_ptr); + return ret === 0 ? undefined : UserId.__wrap(ret); + } + /** + * The device ID of the device that sent us the event, note this + * is untrusted data unless `verification_state` is as well + * trusted. + * @returns {DeviceId | undefined} + */ + get senderDevice() { + const ret = wasm.decryptedroomevent_senderDevice(this.__wbg_ptr); + return ret === 0 ? undefined : DeviceId.__wrap(ret); + } + /** + * The Curve25519 key of the device that created the megolm + * decryption key originally. + * @returns {string | undefined} + */ + get senderCurve25519Key() { + const ret = wasm.decryptedroomevent_senderCurve25519Key(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The signing Ed25519 key that have created the megolm key that + * was used to decrypt this session. + * @returns {string | undefined} + */ + get senderClaimedEd25519Key() { + const ret = wasm.decryptedroomevent_senderClaimedEd25519Key(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Returns an empty array + * + * Previously, this returned the chain of Curve25519 keys through which + * this session was forwarded, via `m.forwarded_room_key` events. + * However, that is not cryptographically reliable, and clients should not + * be using it. + * + * @see https://github.com/matrix-org/matrix-spec/issues/1089 + * @returns {Array} + */ + get forwardingCurve25519KeyChain() { + const ret = wasm.decryptedroomevent_forwardingCurve25519KeyChain(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The verification state of the device that sent us the event. + * Note this is the state of the device at the time of + * decryption. It may change in the future if a device gets + * verified or deleted. + * @param {boolean} strict + * @returns {ShieldState | undefined} + */ + shieldState(strict) { + const ret = wasm.decryptedroomevent_shieldState(this.__wbg_ptr, strict); + return ret === 0 ? undefined : ShieldState.__wrap(ret); + } +} +module.exports.DecryptedRoomEvent = DecryptedRoomEvent; + +const DehydratedDeviceFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_dehydrateddevice_free(ptr >>> 0)); +/** +* A dehydrated device that can be uploaded to the server +*/ +class DehydratedDevice { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(DehydratedDevice.prototype); + obj.__wbg_ptr = ptr; + DehydratedDeviceFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DehydratedDeviceFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_dehydrateddevice_free(ptr); + } + /** + * Create the request to upload the dehydrated device + * @param {string} initial_device_display_name + * @param {Uint8Array} pickle_key + * @returns {Promise} + */ + keysForUpload(initial_device_display_name, pickle_key) { + const ret = wasm.dehydrateddevice_keysForUpload(this.__wbg_ptr, addHeapObject(initial_device_display_name), addHeapObject(pickle_key)); + return takeObject(ret); + } +} +module.exports.DehydratedDevice = DehydratedDevice; + +const DehydratedDevicesFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_dehydrateddevices_free(ptr >>> 0)); +/** +* Struct collecting methods to create and rehydrate dehydrated devices. +*/ +class DehydratedDevices { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(DehydratedDevices.prototype); + obj.__wbg_ptr = ptr; + DehydratedDevicesFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DehydratedDevicesFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_dehydrateddevices_free(ptr); + } + /** + * Create a new [`DehydratedDevice`] which can be uploaded to the server. + * @returns {Promise} + */ + create() { + const ret = wasm.dehydrateddevices_create(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Rehydrate a dehydrated device. + * @param {Uint8Array} pickle_key + * @param {DeviceId} device_id + * @param {string} device_data + * @returns {Promise} + */ + rehydrate(pickle_key, device_id, device_data) { + _assertClass(device_id, DeviceId); + const ptr0 = passStringToWasm0(device_data, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.dehydrateddevices_rehydrate(this.__wbg_ptr, addHeapObject(pickle_key), device_id.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } +} +module.exports.DehydratedDevices = DehydratedDevices; + +const DeviceFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_device_free(ptr >>> 0)); +/** +* A device represents a E2EE capable client of an user. +*/ +class Device { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Device.prototype); + obj.__wbg_ptr = ptr; + DeviceFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DeviceFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_device_free(ptr); + } + /** + * Request an interactive verification with this device. + * + * Returns a Promise for a 2-element array `[VerificationRequest, + * ToDeviceRequest]`. + * @param {any[] | undefined} [methods] + * @returns {Promise} + */ + requestVerification(methods) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + var ptr0 = isLikeNone(methods) ? 0 : passArrayJsValueToWasm0(methods, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.device_requestVerification(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Is this device considered to be verified. + * + * This method returns true if either the `is_locally_trusted` + * method returns `true` or if the `is_cross_signing_trusted` + * method returns `true`. + * @returns {boolean} + */ + isVerified() { + const ret = wasm.device_isVerified(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is this device considered to be verified using cross signing. + * @returns {boolean} + */ + isCrossSigningTrusted() { + const ret = wasm.device_isCrossSigningTrusted(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is this device cross-signed by its owner? + * @returns {boolean} + */ + isCrossSignedByOwner() { + const ret = wasm.device_isCrossSignedByOwner(this.__wbg_ptr); + return ret !== 0; + } + /** + * Set the local trust state of the device to the given state. + * + * This won’t affect any cross signing trust state, this only + * sets a flag marking to have the given trust state. + * + * `trust_state` represents the new trust state that should be + * set for the device. + * @param {LocalTrust} local_state + * @returns {Promise} + */ + setLocalTrust(local_state) { + const ret = wasm.device_setLocalTrust(this.__wbg_ptr, local_state); + return takeObject(ret); + } + /** + * The user ID of the device owner. + * @returns {UserId} + */ + get userId() { + const ret = wasm.device_userId(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * The unique ID of the device. + * @returns {DeviceId} + */ + get deviceId() { + const ret = wasm.device_deviceId(this.__wbg_ptr); + return DeviceId.__wrap(ret); + } + /** + * Get the human readable name of the device. + * @returns {string | undefined} + */ + get displayName() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.device_displayName(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the key of the given key algorithm belonging to this device. + * @param {DeviceKeyAlgorithmName} algorithm + * @returns {DeviceKey | undefined} + */ + getKey(algorithm) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.device_getKey(retptr, this.__wbg_ptr, algorithm); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return r0 === 0 ? undefined : DeviceKey.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the Curve25519 key of the given device. + * @returns {Curve25519PublicKey | undefined} + */ + get curve25519Key() { + const ret = wasm.device_curve25519Key(this.__wbg_ptr); + return ret === 0 ? undefined : Curve25519PublicKey.__wrap(ret); + } + /** + * Get the Ed25519 key of the given device. + * @returns {Ed25519PublicKey | undefined} + */ + get ed25519Key() { + const ret = wasm.device_ed25519Key(this.__wbg_ptr); + return ret === 0 ? undefined : Ed25519PublicKey.__wrap(ret); + } + /** + * Get a map containing all the device keys. + * @returns {Map} + */ + get keys() { + const ret = wasm.device_keys(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Get the list of algorithms this device supports. + * + * Returns `Array`. + * @returns {Array} + */ + get algorithms() { + const ret = wasm.device_algorithms(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Get a map containing all the device signatures. + * @returns {Signatures} + */ + get signatures() { + const ret = wasm.device_signatures(this.__wbg_ptr); + return Signatures.__wrap(ret); + } + /** + * Get the trust state of the device. + * @returns {LocalTrust} + */ + get localTrustState() { + const ret = wasm.device_localTrustState(this.__wbg_ptr); + return ret; + } + /** + * Is the device locally marked as trusted? + * @returns {boolean} + */ + isLocallyTrusted() { + const ret = wasm.device_isLocallyTrusted(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is the device locally marked as blacklisted? + * + * Blacklisted devices won’t receive any group sessions. + * @returns {boolean} + */ + isBlacklisted() { + const ret = wasm.device_isBlacklisted(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is the device deleted? + * @returns {boolean} + */ + isDeleted() { + const ret = wasm.device_isDeleted(this.__wbg_ptr); + return ret !== 0; + } + /** + * Timestamp representing the first time this device has been seen (in + * milliseconds). + * @returns {bigint} + */ + firstTimeSeen() { + const ret = wasm.device_firstTimeSeen(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * Mark this device as verified. + * Works only if the device is owned by the current user. + * + * Returns a signature upload request that needs to be sent out. + * @returns {Promise} + */ + verify() { + const ret = wasm.device_verify(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Whether or not the device is a dehydrated device. + * @returns {boolean} + */ + get isDehydrated() { + const ret = wasm.device_isDehydrated(this.__wbg_ptr); + return ret !== 0; + } +} +module.exports.Device = Device; + +const DeviceIdFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_deviceid_free(ptr >>> 0)); +/** +* A Matrix key ID. +* +* Device identifiers in Matrix are completely opaque character +* sequences. This type is provided simply for its semantic value. +*/ +class DeviceId { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(DeviceId.prototype); + obj.__wbg_ptr = ptr; + DeviceIdFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DeviceIdFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_deviceid_free(ptr); + } + /** + * Create a new `DeviceId`. + * @param {string} id + */ + constructor(id) { + const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.deviceid_new(ptr0, len0); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Return the device ID as a string. + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.deviceid_toString(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.DeviceId = DeviceId; + +const DeviceKeyFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_devicekey_free(ptr >>> 0)); +/** +* An enum over the different key types a device can have. +* +* Currently devices have a curve25519 and ed25519 keypair. The keys +* transport format is a base64 encoded string, any unknown key type +* will be left as such a string. +*/ +class DeviceKey { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(DeviceKey.prototype); + obj.__wbg_ptr = ptr; + DeviceKeyFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DeviceKeyFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_devicekey_free(ptr); + } + /** + * Get the name of the device key. + * @returns {DeviceKeyName} + */ + get name() { + const ret = wasm.devicekey_name(this.__wbg_ptr); + return ret; + } + /** + * Get the value associated to the `Curve25519` device key name. + * @returns {Curve25519PublicKey | undefined} + */ + get curve25519() { + const ret = wasm.devicekey_curve25519(this.__wbg_ptr); + return ret === 0 ? undefined : Curve25519PublicKey.__wrap(ret); + } + /** + * Get the value associated to the `Ed25519` device key name. + * @returns {Ed25519PublicKey | undefined} + */ + get ed25519() { + const ret = wasm.devicekey_ed25519(this.__wbg_ptr); + return ret === 0 ? undefined : Ed25519PublicKey.__wrap(ret); + } + /** + * Get the value associated to the `Unknown` device key name. + * @returns {string | undefined} + */ + get unknown() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.devicekey_unknown(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Convert the `DeviceKey` into a base64 encoded string. + * @returns {string} + */ + toBase64() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.devicekey_toBase64(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.DeviceKey = DeviceKey; + +const DeviceKeyAlgorithmFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_devicekeyalgorithm_free(ptr >>> 0)); +/** +* The basic key algorithms in the specification. +*/ +class DeviceKeyAlgorithm { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(DeviceKeyAlgorithm.prototype); + obj.__wbg_ptr = ptr; + DeviceKeyAlgorithmFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DeviceKeyAlgorithmFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_devicekeyalgorithm_free(ptr); + } + /** + * Read the device key algorithm's name. If the name is + * `Unknown`, one may be interested by the `to_string` method to + * read the original name. + * @returns {DeviceKeyAlgorithmName} + */ + get name() { + const ret = wasm.devicekeyalgorithm_name(this.__wbg_ptr); + return ret; + } + /** + * Return the device key algorithm as a string. + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.devicekeyalgorithm_toString(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.DeviceKeyAlgorithm = DeviceKeyAlgorithm; + +const DeviceKeyIdFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_devicekeyid_free(ptr >>> 0)); +/** +* A Matrix device key ID. +* +* A key algorithm and a device ID, combined with a ‘:’. +*/ +class DeviceKeyId { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(DeviceKeyId.prototype); + obj.__wbg_ptr = ptr; + DeviceKeyIdFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DeviceKeyIdFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_devicekeyid_free(ptr); + } + /** + * Parse/validate and create a new `DeviceKeyId`. + * @param {string} id + */ + constructor(id) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.devicekeyid_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Returns key algorithm of the device key ID. + * @returns {DeviceKeyAlgorithm} + */ + get algorithm() { + const ret = wasm.devicekeyid_algorithm(this.__wbg_ptr); + return DeviceKeyAlgorithm.__wrap(ret); + } + /** + * Returns device ID of the device key ID. + * @returns {DeviceId} + */ + get deviceId() { + const ret = wasm.devicekeyid_deviceId(this.__wbg_ptr); + return DeviceId.__wrap(ret); + } + /** + * Return the device key ID as a string. + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.devicekeyid_toString(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.DeviceKeyId = DeviceKeyId; + +const DeviceListsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_devicelists_free(ptr >>> 0)); +/** +* Information on E2E device updates. +*/ +class DeviceLists { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + DeviceListsFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_devicelists_free(ptr); + } + /** + * Create an empty `DeviceLists`. + * + * `changed` and `left` must be an array of `UserId`. + * + * Items inside `changed` and `left` will be invalidated by this method. Be + * careful not to use the `UserId`s after this method has been called. + * @param {(UserId)[] | undefined} [changed] + * @param {(UserId)[] | undefined} [left] + */ + constructor(changed, left) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + var ptr0 = isLikeNone(changed) ? 0 : passArrayJsValueToWasm0(changed, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(left) ? 0 : passArrayJsValueToWasm0(left, wasm.__wbindgen_malloc); + var len1 = WASM_VECTOR_LEN; + wasm.devicelists_new(retptr, ptr0, len0, ptr1, len1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Returns true if there are no device list updates. + * @returns {boolean} + */ + isEmpty() { + const ret = wasm.devicelists_isEmpty(this.__wbg_ptr); + return ret !== 0; + } + /** + * List of users who have updated their device identity keys or + * who now share an encrypted room with the client since the + * previous sync + * @returns {(UserId)[]} + */ + get changed() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.devicelists_changed(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * List of users who no longer share encrypted rooms since the + * previous sync response. + * @returns {(UserId)[]} + */ + get left() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.devicelists_left(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +module.exports.DeviceLists = DeviceLists; + +const Ed25519PublicKeyFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_ed25519publickey_free(ptr >>> 0)); +/** +* An Ed25519 public key, used to verify digital signatures. +*/ +class Ed25519PublicKey { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Ed25519PublicKey.prototype); + obj.__wbg_ptr = ptr; + Ed25519PublicKeyFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + Ed25519PublicKeyFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_ed25519publickey_free(ptr); + } + /** + * The number of bytes an Ed25519 public key has. + * @returns {number} + */ + get length() { + const ret = wasm.ed25519publickey_length(this.__wbg_ptr); + return ret >>> 0; + } + /** + * Serialize an Ed25519 public key to an unpadded base64 + * representation. + * @returns {string} + */ + toBase64() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.ed25519publickey_toBase64(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.Ed25519PublicKey = Ed25519PublicKey; + +const Ed25519SignatureFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_ed25519signature_free(ptr >>> 0)); +/** +* An Ed25519 digital signature, can be used to verify the +* authenticity of a message. +*/ +class Ed25519Signature { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Ed25519Signature.prototype); + obj.__wbg_ptr = ptr; + Ed25519SignatureFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + Ed25519SignatureFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_ed25519signature_free(ptr); + } + /** + * Try to create an Ed25519 signature from an unpadded base64 + * representation. + * @param {string} signature + */ + constructor(signature) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(signature, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.ed25519signature_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Serialize a Ed25519 signature to an unpadded base64 + * representation. + * @returns {string} + */ + toBase64() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.ed25519signature_toBase64(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.Ed25519Signature = Ed25519Signature; + +const EmojiFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_emoji_free(ptr >>> 0)); +/** +* An emoji that is used for interactive verification using a short +* auth string. +* +* This will contain a single emoji and description from the list of +* emojis from [the specification]. +* +* [the specification]: https://spec.matrix.org/unstable/client-server-api/#sas-method-emoji +*/ +class Emoji { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Emoji.prototype); + obj.__wbg_ptr = ptr; + EmojiFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + EmojiFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_emoji_free(ptr); + } + /** + * The emoji symbol that represents a part of the short auth + * string, for example: 🐶 + * @returns {string} + */ + get symbol() { + const ret = wasm.emoji_symbol(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The description of the emoji, for example ‘Dog’. + * @returns {string} + */ + get description() { + const ret = wasm.emoji_description(this.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.Emoji = Emoji; + +const EncryptedAttachmentFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_encryptedattachment_free(ptr >>> 0)); +/** +* An encrypted attachment, usually created from `Attachment.encrypt`. +*/ +class EncryptedAttachment { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(EncryptedAttachment.prototype); + obj.__wbg_ptr = ptr; + EncryptedAttachmentFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + EncryptedAttachmentFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_encryptedattachment_free(ptr); + } + /** + * Create a new encrypted attachment manually. + * + * It needs encrypted data, stored in an `Uint8Array`, and a + * [media encryption + * information](https://docs.rs/matrix-sdk-crypto/latest/matrix_sdk_crypto/struct.MediaEncryptionInfo.html), + * as a JSON-encoded string. + * + * The media encryption information aren't stored as a string: + * they are parsed, validated and fully deserialized. + * + * See [the specification to learn + * more](https://spec.matrix.org/unstable/client-server-api/#extensions-to-mroommessage-msgtypes). + * @param {Uint8Array} encrypted_data + * @param {string} media_encryption_info + */ + constructor(encrypted_data, media_encryption_info) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(encrypted_data, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(media_encryption_info, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + wasm.encryptedattachment_new(retptr, ptr0, len0, ptr1, len1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The actual encrypted data. + * + * **Warning**: It returns a **copy** of the entire encrypted + * data; be nice with your memory. + * @returns {Uint8Array} + */ + get encryptedData() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.encryptedattachment_encryptedData(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Return the media encryption info as a JSON-encoded string. The + * structure is fully valid. + * + * If the media encryption info have been consumed already, it + * will return `null`. + * @returns {string | undefined} + */ + get mediaEncryptionInfo() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.encryptedattachment_mediaEncryptionInfo(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Check whether the media encryption info has been consumed by + * `Attachment.decrypt` already. + * @returns {boolean} + */ + get hasMediaEncryptionInfoBeenConsumed() { + const ret = wasm.encryptedattachment_hasMediaEncryptionInfoBeenConsumed(this.__wbg_ptr); + return ret !== 0; + } +} +module.exports.EncryptedAttachment = EncryptedAttachment; + +const EncryptionInfoFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_encryptioninfo_free(ptr >>> 0)); +/** +* Struct containing information on how an event was decrypted. +*/ +class EncryptionInfo { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(EncryptionInfo.prototype); + obj.__wbg_ptr = ptr; + EncryptionInfoFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + EncryptionInfoFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_encryptioninfo_free(ptr); + } + /** + * The user ID of the event sender. Note this is untrusted data + * unless `verification_state` is also trusted. + * @returns {UserId} + */ + get sender() { + const ret = wasm.encryptioninfo_sender(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * The device ID of the device that sent us the event. Note this + * is untrusted data unless `verification_state` is also + * trusted. + * @returns {DeviceId | undefined} + */ + get senderDevice() { + const ret = wasm.encryptioninfo_senderDevice(this.__wbg_ptr); + return ret === 0 ? undefined : DeviceId.__wrap(ret); + } + /** + * The Curve25519 key of the device that created the megolm + * decryption key originally. + * @returns {string | undefined} + */ + get senderCurve25519Key() { + const ret = wasm.encryptioninfo_senderCurve25519Key(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The signing Ed25519 key that created the megolm key that + * was used to decrypt this session. + * @returns {string | undefined} + */ + get senderClaimedEd25519Key() { + const ret = wasm.encryptioninfo_senderClaimedEd25519Key(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The verification state of the device that sent us the event. + * Note this is the state of the device at the time of + * decryption. It may change in the future if a device gets + * verified or deleted. + * + * # Arguments + * + * * `strict` - whether to enable "strict mode" verification. In non-strict + * mode, unverified users are given no shield, and keys that have been + * forwarded or restored from an insecure backup are given a grey shield + * (both get a red shield in strict mode). + * @param {boolean} strict + * @returns {ShieldState} + */ + shieldState(strict) { + const ret = wasm.encryptioninfo_shieldState(this.__wbg_ptr, strict); + return ShieldState.__wrap(ret); + } +} +module.exports.EncryptionInfo = EncryptionInfo; + +const EncryptionSettingsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_encryptionsettings_free(ptr >>> 0)); +/** +* Settings for an encrypted room. +* +* This determines the algorithm and rotation periods of a group +* session. +*/ +class EncryptionSettings { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + EncryptionSettingsFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_encryptionsettings_free(ptr); + } + /** + * The encryption algorithm that should be used in the room. + * @returns {EncryptionAlgorithm} + */ + get algorithm() { + const ret = wasm.__wbg_get_encryptionsettings_algorithm(this.__wbg_ptr); + return ret; + } + /** + * The encryption algorithm that should be used in the room. + * @param {EncryptionAlgorithm} arg0 + */ + set algorithm(arg0) { + wasm.__wbg_set_encryptionsettings_algorithm(this.__wbg_ptr, arg0); + } + /** + * How long the session should be used before changing it, + * expressed in microseconds. + * @returns {bigint} + */ + get rotationPeriod() { + const ret = wasm.__wbg_get_encryptionsettings_rotationPeriod(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * How long the session should be used before changing it, + * expressed in microseconds. + * @param {bigint} arg0 + */ + set rotationPeriod(arg0) { + wasm.__wbg_set_encryptionsettings_rotationPeriod(this.__wbg_ptr, arg0); + } + /** + * How many messages should be sent before changing the session. + * @returns {bigint} + */ + get rotationPeriodMessages() { + const ret = wasm.__wbg_get_encryptionsettings_rotationPeriodMessages(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * How many messages should be sent before changing the session. + * @param {bigint} arg0 + */ + set rotationPeriodMessages(arg0) { + wasm.__wbg_set_encryptionsettings_rotationPeriodMessages(this.__wbg_ptr, arg0); + } + /** + * The history visibility of the room when the session was + * created. + * @returns {HistoryVisibility} + */ + get historyVisibility() { + const ret = wasm.__wbg_get_encryptionsettings_historyVisibility(this.__wbg_ptr); + return ret; + } + /** + * The history visibility of the room when the session was + * created. + * @param {HistoryVisibility} arg0 + */ + set historyVisibility(arg0) { + wasm.__wbg_set_encryptionsettings_historyVisibility(this.__wbg_ptr, arg0); + } + /** + * Should untrusted devices receive the room key, or should they be + * excluded from the conversation. + * @returns {boolean} + */ + get onlyAllowTrustedDevices() { + const ret = wasm.__wbg_get_encryptionsettings_onlyAllowTrustedDevices(this.__wbg_ptr); + return ret !== 0; + } + /** + * Should untrusted devices receive the room key, or should they be + * excluded from the conversation. + * @param {boolean} arg0 + */ + set onlyAllowTrustedDevices(arg0) { + wasm.__wbg_set_encryptionsettings_onlyAllowTrustedDevices(this.__wbg_ptr, arg0); + } + /** + * Create a new `EncryptionSettings` with default values. + */ + constructor() { + const ret = wasm.encryptionsettings_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } +} +module.exports.EncryptionSettings = EncryptionSettings; + +const EventIdFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_eventid_free(ptr >>> 0)); +/** +* A Matrix [event ID]. +* +* An `EventId` is generated randomly or converted from a string +* slice, and can be converted back into a string as needed. +* +* [event ID]: https://spec.matrix.org/v1.2/appendices/#room-ids-and-event-ids +*/ +class EventId { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + EventIdFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_eventid_free(ptr); + } + /** + * Parse/validate and create a new `EventId`. + * @param {string} id + */ + constructor(id) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.eventid_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Returns the event's localpart. + * @returns {string} + */ + get localpart() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.eventid_localpart(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Returns the server name of the event ID. + * @returns {ServerName | undefined} + */ + get serverName() { + const ret = wasm.eventid_serverName(this.__wbg_ptr); + return ret === 0 ? undefined : ServerName.__wrap(ret); + } + /** + * Return the event ID as a string. + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.eventid_toString(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.EventId = EventId; + +const IdentityKeysFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_identitykeys_free(ptr >>> 0)); +/** +* Struct holding the two public identity keys of an account. +*/ +class IdentityKeys { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(IdentityKeys.prototype); + obj.__wbg_ptr = ptr; + IdentityKeysFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + IdentityKeysFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_identitykeys_free(ptr); + } + /** + * The Ed25519 public key, used for signing. + * @returns {Ed25519PublicKey} + */ + get ed25519() { + const ret = wasm.__wbg_get_identitykeys_ed25519(this.__wbg_ptr); + return Ed25519PublicKey.__wrap(ret); + } + /** + * The Ed25519 public key, used for signing. + * @param {Ed25519PublicKey} arg0 + */ + set ed25519(arg0) { + _assertClass(arg0, Ed25519PublicKey); + var ptr0 = arg0.__destroy_into_raw(); + wasm.__wbg_set_identitykeys_ed25519(this.__wbg_ptr, ptr0); + } + /** + * The Curve25519 public key, used for establish shared secrets. + * @returns {Curve25519PublicKey} + */ + get curve25519() { + const ret = wasm.__wbg_get_identitykeys_curve25519(this.__wbg_ptr); + return Curve25519PublicKey.__wrap(ret); + } + /** + * The Curve25519 public key, used for establish shared secrets. + * @param {Curve25519PublicKey} arg0 + */ + set curve25519(arg0) { + _assertClass(arg0, Curve25519PublicKey); + var ptr0 = arg0.__destroy_into_raw(); + wasm.__wbg_set_identitykeys_curve25519(this.__wbg_ptr, ptr0); + } +} +module.exports.IdentityKeys = IdentityKeys; + +const InboundGroupSessionFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_inboundgroupsession_free(ptr >>> 0)); +/** +* Inbound group session. +* +* Inbound group sessions are used to exchange room messages between a group of +* participants. Inbound group sessions are used to decrypt the room messages. +*/ +class InboundGroupSession { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(InboundGroupSession.prototype); + obj.__wbg_ptr = ptr; + InboundGroupSessionFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + InboundGroupSessionFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_inboundgroupsession_free(ptr); + } + /** + * The room where this session is used in. + * @returns {RoomId} + */ + get roomId() { + const ret = wasm.inboundgroupsession_roomId(this.__wbg_ptr); + return RoomId.__wrap(ret); + } + /** + * The Curve25519 key of the sender of this session, as a + * [Curve25519PublicKey]. + * @returns {Curve25519PublicKey} + */ + get senderKey() { + const ret = wasm.inboundgroupsession_senderKey(this.__wbg_ptr); + return Curve25519PublicKey.__wrap(ret); + } + /** + * Returns the unique identifier for this session. + * @returns {string} + */ + get sessionId() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.inboundgroupsession_sessionId(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Has the session been imported from a file or server-side backup? As + * opposed to being directly received as an `m.room_key` event. + * @returns {boolean} + */ + hasBeenImported() { + const ret = wasm.inboundgroupsession_hasBeenImported(this.__wbg_ptr); + return ret !== 0; + } +} +module.exports.InboundGroupSession = InboundGroupSession; + +const KeysBackupRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_keysbackuprequest_free(ptr >>> 0)); +/** +* A request that will back up a batch of room keys to the server +* ([specification]). +* +* [specification]: https://spec.matrix.org/unstable/client-server-api/#put_matrixclientv3room_keyskeys +*/ +class KeysBackupRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(KeysBackupRequest.prototype); + obj.__wbg_ptr = ptr; + KeysBackupRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + KeysBackupRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_keysbackuprequest_free(ptr); + } + /** + * The request ID. + * @returns {string} + */ + get id() { + const ret = wasm.__wbg_get_keysbackuprequest_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A JSON-encoded string containing the rest of the payload: `rooms`. + * + * It represents the body of the HTTP request. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_keysbackuprequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The backup version that these room keys should be part of. + * @returns {string} + */ + get version() { + const ret = wasm.__wbg_get_keysbackuprequest_version(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `KeysBackupRequest`. + * @param {string} id + * @param {string} body + * @param {string} version + */ + constructor(id, body, version) { + const ret = wasm.keysbackuprequest_new(addHeapObject(id), addHeapObject(body), addHeapObject(version)); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Get its request type. + * @returns {RequestType} + */ + get type() { + const ret = wasm.keysbackuprequest_type(this.__wbg_ptr); + return ret; + } +} +module.exports.KeysBackupRequest = KeysBackupRequest; + +const KeysClaimRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_keysclaimrequest_free(ptr >>> 0)); +/** +* Data for a request to the `/keys/claim` API endpoint +* ([specification]). +* +* Claims one-time keys that can be used to establish 1-to-1 E2EE +* sessions. +* +* [specification]: https://spec.matrix.org/unstable/client-server-api/#post_matrixclientv3keysclaim +*/ +class KeysClaimRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(KeysClaimRequest.prototype); + obj.__wbg_ptr = ptr; + KeysClaimRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + KeysClaimRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_keysclaimrequest_free(ptr); + } + /** + * The request ID. + * @returns {string} + */ + get id() { + const ret = wasm.__wbg_get_keysclaimrequest_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A JSON-encoded string containing the rest of the payload: `timeout`, + * `one_time_keys`. + * + * It represents the body of the HTTP request. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_keysclaimrequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `KeysClaimRequest`. + * @param {string} id + * @param {string} body + */ + constructor(id, body) { + const ret = wasm.keysclaimrequest_new(addHeapObject(id), addHeapObject(body)); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Get its request type. + * @returns {RequestType} + */ + get type() { + const ret = wasm.keysclaimrequest_type(this.__wbg_ptr); + return ret; + } +} +module.exports.KeysClaimRequest = KeysClaimRequest; + +const KeysQueryRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_keysqueryrequest_free(ptr >>> 0)); +/** +* Data for a request to the `/keys/query` API endpoint +* ([specification]). +* +* Returns the current devices and identity keys for the given users. +* +* [specification]: https://spec.matrix.org/unstable/client-server-api/#post_matrixclientv3keysquery +*/ +class KeysQueryRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(KeysQueryRequest.prototype); + obj.__wbg_ptr = ptr; + KeysQueryRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + KeysQueryRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_keysqueryrequest_free(ptr); + } + /** + * The request ID. + * @returns {string} + */ + get id() { + const ret = wasm.__wbg_get_keysqueryrequest_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A JSON-encoded string containing the rest of the payload: `timeout`, + * `device_keys`, `token`. + * + * It represents the body of the HTTP request. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_keysqueryrequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `KeysQueryRequest`. + * @param {string} id + * @param {string} body + */ + constructor(id, body) { + const ret = wasm.keysclaimrequest_new(addHeapObject(id), addHeapObject(body)); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Get its request type. + * @returns {RequestType} + */ + get type() { + const ret = wasm.keysqueryrequest_type(this.__wbg_ptr); + return ret; + } +} +module.exports.KeysQueryRequest = KeysQueryRequest; + +const KeysUploadRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_keysuploadrequest_free(ptr >>> 0)); +/** +* Outgoing Requests * +* Data for a request to the `/keys/upload` API endpoint +* ([specification]). +* +* Publishes end-to-end encryption keys for the device. +* +* [specification]: https://spec.matrix.org/unstable/client-server-api/#post_matrixclientv3keysupload +*/ +class KeysUploadRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(KeysUploadRequest.prototype); + obj.__wbg_ptr = ptr; + KeysUploadRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + KeysUploadRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_keysuploadrequest_free(ptr); + } + /** + * The request ID. + * @returns {string} + */ + get id() { + const ret = wasm.__wbg_get_keysuploadrequest_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A JSON-encoded string containing the rest of the payload: `device_keys`, + * `one_time_keys`, `fallback_keys`. + * + * It represents the body of the HTTP request. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_keysuploadrequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `KeysUploadRequest`. + * @param {string} id + * @param {string} body + */ + constructor(id, body) { + const ret = wasm.keysclaimrequest_new(addHeapObject(id), addHeapObject(body)); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Get its request type. + * @returns {RequestType} + */ + get type() { + const ret = wasm.keysuploadrequest_type(this.__wbg_ptr); + return ret; + } +} +module.exports.KeysUploadRequest = KeysUploadRequest; + +const MaybeSignatureFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_maybesignature_free(ptr >>> 0)); +/** +* Represents a signature that is either valid _or_ that could not be +* decoded. +*/ +class MaybeSignature { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(MaybeSignature.prototype); + obj.__wbg_ptr = ptr; + MaybeSignatureFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + MaybeSignatureFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_maybesignature_free(ptr); + } + /** + * Check whether the signature has been successfully decoded. + * @returns {boolean} + */ + isValid() { + const ret = wasm.maybesignature_isValid(this.__wbg_ptr); + return ret !== 0; + } + /** + * Check whether the signature could not be successfully decoded. + * @returns {boolean} + */ + isInvalid() { + const ret = wasm.maybesignature_isInvalid(this.__wbg_ptr); + return ret !== 0; + } + /** + * The signature, if successfully decoded. + * @returns {Signature | undefined} + */ + get signature() { + const ret = wasm.maybesignature_signature(this.__wbg_ptr); + return ret === 0 ? undefined : Signature.__wrap(ret); + } + /** + * The base64 encoded string that is claimed to contain a + * signature but could not be decoded, if any. + * @returns {string | undefined} + */ + get invalidSignatureSource() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.maybesignature_invalidSignatureSource(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +module.exports.MaybeSignature = MaybeSignature; + +const MegolmDecryptionErrorFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_megolmdecryptionerror_free(ptr >>> 0)); +/** +* Js Decryption error with code. +*/ +class MegolmDecryptionError { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(MegolmDecryptionError.prototype); + obj.__wbg_ptr = ptr; + MegolmDecryptionErrorFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + MegolmDecryptionErrorFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_megolmdecryptionerror_free(ptr); + } + /** + * Description code for the error. See `DecryptionErrorCode` + * @returns {DecryptionErrorCode} + */ + get code() { + const ret = wasm.__wbg_get_megolmdecryptionerror_code(this.__wbg_ptr); + return ret; + } + /** + * detailed description + * @returns {string} + */ + get description() { + const ret = wasm.__wbg_get_megolmdecryptionerror_description(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Witheld code if any. Only for `UnknownMessageIndex` error code + * @returns {string | undefined} + */ + get maybe_withheld() { + const ret = wasm.__wbg_get_megolmdecryptionerror_maybe_withheld(this.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.MegolmDecryptionError = MegolmDecryptionError; + +const MegolmV1BackupKeyFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_megolmv1backupkey_free(ptr >>> 0)); +/** +* The public part of the backup key. +*/ +class MegolmV1BackupKey { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(MegolmV1BackupKey.prototype); + obj.__wbg_ptr = ptr; + MegolmV1BackupKeyFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + MegolmV1BackupKeyFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_megolmv1backupkey_free(ptr); + } + /** + * The actual base64 encoded public key. + * @returns {string} + */ + get publicKeyBase64() { + const ret = wasm.megolmv1backupkey_publicKeyBase64(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Get the full name of the backup algorithm this backup key supports. + * @returns {string} + */ + get algorithm() { + const ret = wasm.megolmv1backupkey_algorithm(this.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.MegolmV1BackupKey = MegolmV1BackupKey; + +const MigrationFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_migration_free(ptr >>> 0)); +/** +* Migration routines +* +* The public methods are exposed as static methods on this class, for +* namespacing and to enable easier mocking in unit tests. +*/ +class Migration { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + MigrationFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_migration_free(ptr); + } + /** + * Import the base dataset from a libolm-based setup to a vodozemac-based + * setup stored in IndexedDB. + * + * Populates the user credentials, Olm account, backup data, etc. This is + * the first step in the migration process. Once this base data is + * imported, further data can be imported with {@link + * #migrateOlmSessions}, {@link #migrateMegolmSessions}, and TODO room settings. + * + * # Arguments + * + * * `data` - The data to be migrated + * * `pickle_key` - The libolm pickle key that was used to pickle the olm + * account objects. + * * `store_handle` - A connection to the CryptoStore which will be used to + * store the vodozemac data. + * @param {BaseMigrationData} data + * @param {Uint8Array} pickle_key + * @param {StoreHandle} store_handle + * @returns {Promise} + */ + static migrateBaseData(data, pickle_key, store_handle) { + _assertClass(data, BaseMigrationData); + _assertClass(store_handle, StoreHandle); + const ret = wasm.migration_migrateBaseData(data.__wbg_ptr, addHeapObject(pickle_key), store_handle.__wbg_ptr); + return takeObject(ret); + } + /** + * Migrate Olm sessions of a libolm-based setup to a vodozemac-based setup + * stored in an indexedDB crypto store. + * + * Before this method can be used, {@link #migrateBaseData} must be used to + * import the base data into the crypto store. + * + * This method should be called a number of times, with separate batches of + * `sessions`. If a progress display is given, it can be updated after + * each batch is successfully imported. + * + * # Arguments + * + * * `sessions` - An `Array` of {@link PickledSession}s to import. Items + * inside `sessions` will be invalidated by this method. + * * `pickle_key` - The libolm pickle key that was used to pickle the olm + * session objects. + * * `store_handle` - A connection to the CryptoStore which will be used to + * store the vodozemac data. + * @param {(PickledSession)[]} sessions + * @param {Uint8Array} pickle_key + * @param {StoreHandle} store_handle + * @returns {Promise} + */ + static migrateOlmSessions(sessions, pickle_key, store_handle) { + const ptr0 = passArrayJsValueToWasm0(sessions, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(store_handle, StoreHandle); + const ret = wasm.migration_migrateOlmSessions(ptr0, len0, addHeapObject(pickle_key), store_handle.__wbg_ptr); + return takeObject(ret); + } + /** + * Migrate Megolm sessions of a libolm-based setup to a vodozemac-based + * setup stored in an indexedDB crypto store. + * + * Before this method can be used, {@link #migrateBaseData} must be used to + * import the base data into the crypto store. + * + * This method should be called a number of times, with separate batches of + * `sessions`. If a progress display is given, it can be updated after + * each batch is successfully imported. + * + * # Arguments + * + * * `sessions` - An `Array` of {@link PickledInboundGroupSession}s to + * import. Items inside `sessions` will be invalidated by this method. + * * `pickle_key` - The libolm pickle key that was used to pickle the + * megolm session objects. + * * `store_handle` - A connection to the CryptoStore which will be used to + * store the vodozemac data. + * @param {(PickledInboundGroupSession)[]} sessions + * @param {Uint8Array} pickle_key + * @param {StoreHandle} store_handle + * @returns {Promise} + */ + static migrateMegolmSessions(sessions, pickle_key, store_handle) { + const ptr0 = passArrayJsValueToWasm0(sessions, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(store_handle, StoreHandle); + const ret = wasm.migration_migrateMegolmSessions(ptr0, len0, addHeapObject(pickle_key), store_handle.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.Migration = Migration; + +const OlmMachineFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_olmmachine_free(ptr >>> 0)); +/** +* State machine implementation of the Olm/Megolm encryption protocol +* used for Matrix end to end encryption. +*/ +class OlmMachine { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(OlmMachine.prototype); + obj.__wbg_ptr = ptr; + OlmMachineFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + OlmMachineFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_olmmachine_free(ptr); + } + /** + * Constructor will always fail. To create a new `OlmMachine`, please use + * the `initialize` method. + * + * Why this pattern? `initialize` returns a `Promise`. Returning a + */ + constructor() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.olmmachine_new(retptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Create a new `OlmMachine`. + * + * The created machine will keep the encryption keys either in a IndexedDB + * based store, or in a memory store and once the objects is dropped, + * the keys will be lost. + * + * # Arguments + * + * * `user_id` - represents the unique ID of the user that owns this + * machine. + * + * * `device_id` - represents the unique ID of the device + * that owns this machine. + * + * * `store_name` - The name that should be used to open the IndexedDB + * based database. If this isn't provided, a memory-only store will be + * used. *Note* the memory-only store will lose your E2EE keys when the + * `OlmMachine` gets dropped. + * + * * `store_passphrase` - The passphrase that should be used to encrypt the + * IndexedDB-based store. + * @param {UserId} user_id + * @param {DeviceId} device_id + * @param {string | undefined} [store_name] + * @param {string | undefined} [store_passphrase] + * @returns {Promise} + */ + static initialize(user_id, device_id, store_name, store_passphrase) { + _assertClass(user_id, UserId); + _assertClass(device_id, DeviceId); + var ptr0 = isLikeNone(store_name) ? 0 : passStringToWasm0(store_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(store_passphrase) ? 0 : passStringToWasm0(store_passphrase, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_initialize(user_id.__wbg_ptr, device_id.__wbg_ptr, ptr0, len0, ptr1, len1); + return takeObject(ret); + } + /** + * Create a new `OlmMachine` backed by an existing store. + * + * # Arguments + * + * * `user_id` - represents the unique ID of the user that owns this + * machine. + * + * * `device_id` - represents the unique ID of the device + * that owns this machine. + * + * * `store_handle` - the connection to the crypto store to be used for + * this machine. + * @param {UserId} user_id + * @param {DeviceId} device_id + * @param {StoreHandle} store_handle + * @returns {Promise} + */ + static initFromStore(user_id, device_id, store_handle) { + _assertClass(user_id, UserId); + _assertClass(device_id, DeviceId); + _assertClass(store_handle, StoreHandle); + const ret = wasm.olmmachine_initFromStore(user_id.__wbg_ptr, device_id.__wbg_ptr, store_handle.__wbg_ptr); + return takeObject(ret); + } + /** + * The unique user ID that owns this `OlmMachine` instance. + * @returns {UserId} + */ + get userId() { + const ret = wasm.olmmachine_userId(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * The unique device ID that identifies this `OlmMachine`. + * @returns {DeviceId} + */ + get deviceId() { + const ret = wasm.olmmachine_deviceId(this.__wbg_ptr); + return DeviceId.__wrap(ret); + } + /** + * The time, in milliseconds since the unix epoch, at which the `Account` + * backing this `OlmMachine` was created. + * + * An `Account` is created when an `OlmMachine` is first instantiated + * against a given `Store`, at which point it creates identity keys etc. + * This method returns the timestamp, according to the local clock, at + * which that happened. + * @returns {number} + */ + get deviceCreationTimeMs() { + const ret = wasm.olmmachine_deviceCreationTimeMs(this.__wbg_ptr); + return ret; + } + /** + * Get the public parts of our Olm identity keys. + * @returns {IdentityKeys} + */ + get identityKeys() { + const ret = wasm.olmmachine_identityKeys(this.__wbg_ptr); + return IdentityKeys.__wrap(ret); + } + /** + * Get the display name of our own device. + * @returns {Promise} + */ + get displayName() { + const ret = wasm.olmmachine_displayName(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Whether automatic transmission of room key requests is enabled. + * + * Room key requests allow the device to request room keys that it might + * have missed in the original share using `m.room_key_request` + * events. + * @returns {boolean} + */ + get roomKeyRequestsEnabled() { + const ret = wasm.olmmachine_roomKeyRequestsEnabled(this.__wbg_ptr); + return ret !== 0; + } + /** + * Enable or disable automatic transmission of room key requests. + * @param {boolean} enabled + */ + set roomKeyRequestsEnabled(enabled) { + wasm.olmmachine_set_roomKeyRequestsEnabled(this.__wbg_ptr, enabled); + } + /** + * Whether room key forwarding is enabled. + * + * If room key forwarding is enabled, we will automatically reply to + * incoming `m.room_key_request` messages from verified devices by + * forwarding the requested key (if we have it). + * @returns {boolean} + */ + get roomKeyForwardingEnabled() { + const ret = wasm.olmmachine_roomKeyForwardingEnabled(this.__wbg_ptr); + return ret !== 0; + } + /** + * Enable or disable room key forwarding. + * @param {boolean} enabled + */ + set roomKeyForwardingEnabled(enabled) { + wasm.olmmachine_set_roomKeyForwardingEnabled(this.__wbg_ptr, enabled); + } + /** + * Get the list of users whose devices we are currently tracking. + * + * A user can be marked for tracking using the + * [`update_tracked_users`](#method.update_tracked_users) method. + * + * Returns a `Set`. + * @returns {Promise} + */ + trackedUsers() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.olmmachine_trackedUsers(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Update the list of tracked users. + * + * The OlmMachine maintains a list of users whose devices we are keeping + * track of: these are known as "tracked users". These must be users + * that we share a room with, so that the server sends us updates for + * their device lists. + * + * # Arguments + * + * * `users` - An array of user ids that should be added to the list of + * tracked users + * + * Any users that hadn't been seen before will be flagged for a key query + * immediately, and whenever `receive_sync_changes` receives a + * "changed" notification for that user in the future. + * + * Users that were already in the list are unaffected. + * + * Items inside `users` will be invalidated by this method. Be careful not + * to use the `UserId`s after this method has been called. + * @param {(UserId)[]} users + * @returns {Promise} + */ + updateTrackedUsers(users) { + const ptr0 = passArrayJsValueToWasm0(users, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_updateTrackedUsers(this.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } + /** + * Handle to-device events and one-time key counts from a sync + * response. + * + * This will decrypt and handle to-device events returning the + * decrypted versions of them. + * + * To decrypt an event from the room timeline call + * `decrypt_room_event`. + * + * # Arguments + * + * * `to_device_events`: the JSON-encoded to-device evens from the `/sync` + * response + * * `changed_devices`: the mapping of changed and left devices, from the + * `/sync` response + * * `one_time_keys_counts`: The number of one-time keys on the server, + * from the `/sync` response. A `Map` from string (encryption algorithm) + * to number (number of keys). + * * `unused_fallback_keys`: Optionally, a `Set` of unused fallback keys on + * the server, from the `/sync` response. If this is set, it is used to + * determine if new fallback keys should be uploaded. + * + * # Returns + * + * A list of JSON strings, containing the decrypted to-device events. + * @param {string} to_device_events + * @param {DeviceLists} changed_devices + * @param {Map} one_time_keys_counts + * @param {Set | undefined} [unused_fallback_keys] + * @returns {Promise} + */ + receiveSyncChanges(to_device_events, changed_devices, one_time_keys_counts, unused_fallback_keys) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(to_device_events, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(changed_devices, DeviceLists); + wasm.olmmachine_receiveSyncChanges(retptr, this.__wbg_ptr, ptr0, len0, changed_devices.__wbg_ptr, addBorrowedObject(one_time_keys_counts), isLikeNone(unused_fallback_keys) ? 0 : addHeapObject(unused_fallback_keys)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + heap[stack_pointer++] = undefined; + } + } + /** + * Get the outgoing requests that need to be sent out. + * + * This returns a list of values, each of which can be any of: + * * {@link KeysUploadRequest}, + * * {@link KeysQueryRequest}, + * * {@link KeysClaimRequest}, + * * {@link ToDeviceRequest}, + * * {@link SignatureUploadRequest}, + * * {@link RoomMessageRequest}, or + * * {@link KeysBackupRequest}. + * + * Those requests need to be sent out to the server and the + * responses need to be passed back to the state machine + * using {@link OlmMachine.markRequestAsSent}. + * @returns {Promise} + */ + outgoingRequests() { + const ret = wasm.olmmachine_outgoingRequests(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Mark the request with the given request ID as sent (see + * `outgoing_requests`). + * + * Arguments are: + * + * * `request_id` represents the unique ID of the request that was sent + * out. This is needed to couple the response with the now sent out + * request. + * * `response_type` represents the type of the request that was sent out. + * * `response` represents the response that was received from the server + * after the outgoing request was sent out. + * @param {string} request_id + * @param {RequestType} request_type + * @param {string} response + * @returns {Promise} + */ + markRequestAsSent(request_id, request_type, response) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(request_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(response, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + wasm.olmmachine_markRequestAsSent(retptr, this.__wbg_ptr, ptr0, len0, request_type, ptr1, len1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Encrypt a room message for the given room. + * + * **Note**: A room key needs to be shared with the group of users that are + * members in the given room. If this is not done this method will panic. + * + * The usual flow to encrypt an event using this state machine is as + * follows: + * + * 1. Get the one-time key claim request to establish 1:1 Olm sessions for + * the room members of the room we wish to participate in. This is done + * using the [`get_missing_sessions()`](Self::get_missing_sessions) + * method. This method call should be locked per call. + * + * 2. Share a room key with all the room members using the + * [`share_room_key()`](Self::share_room_key). This method call should + * be locked per room. + * + * 3. Encrypt the event using this method. + * + * 4. Send the encrypted event to the server. + * + * After the room key is shared steps 1 and 2 will become noops, unless + * there's some changes in the room membership or in the list of devices a + * member has. + * + * + * `room_id` is the ID of the room for which the message should + * be encrypted. `event_type` is the type of the event. `content` + * is the plaintext content of the message that should be + * encrypted. + * + * # Panics + * + * Panics if a group session for the given room wasn't shared + * beforehand. + * @param {RoomId} room_id + * @param {string} event_type + * @param {string} content + * @returns {Promise} + */ + encryptRoomEvent(room_id, event_type, content) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(room_id, RoomId); + const ptr0 = passStringToWasm0(event_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(content, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + wasm.olmmachine_encryptRoomEvent(retptr, this.__wbg_ptr, room_id.__wbg_ptr, ptr0, len0, ptr1, len1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Decrypt an event from a room timeline. + * + * # Arguments + * + * * `event`, the event that should be decrypted. + * * `room_id`, the ID of the room where the event was sent to. + * + * # Returns + * + * A `Promise` which resolves to a {@link DecryptedRoomEvent} instance, or + * rejects with a {@link MegolmDecryptionError} instance. + * @param {string} event + * @param {RoomId} room_id + * @returns {Promise} + */ + decryptRoomEvent(event, room_id) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(event, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(room_id, RoomId); + wasm.olmmachine_decryptRoomEvent(retptr, this.__wbg_ptr, ptr0, len0, room_id.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get encryption info for a decrypted timeline event. + * + * This recalculates the `EncryptionInfo` data that is returned by + * `decryptRoomEvent`, based on the current + * verification status of the sender, etc. + * + * Returns an error for an unencrypted event. + * + * # Arguments + * + * * `event` - The event to get information for. + * * `room_id` - The ID of the room where the event was sent to. + * + * # Returns + * + * {@link EncryptionInfo} + * @param {string} event + * @param {RoomId} room_id + * @returns {Promise} + */ + getRoomEventEncryptionInfo(event, room_id) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(event, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(room_id, RoomId); + wasm.olmmachine_getRoomEventEncryptionInfo(retptr, this.__wbg_ptr, ptr0, len0, room_id.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the status of the private cross signing keys. + * + * This can be used to check which private cross signing keys we + * have stored locally. + * @returns {Promise} + */ + crossSigningStatus() { + const ret = wasm.olmmachine_crossSigningStatus(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Export all the private cross signing keys we have. + * + * The export will contain the seeds for the ed25519 keys as + * unpadded base64 encoded strings. + * + * Returns `null` if we don’t have any private cross signing keys; + * otherwise returns a `CrossSigningKeyExport`. + * @returns {Promise} + */ + exportCrossSigningKeys() { + const ret = wasm.olmmachine_exportCrossSigningKeys(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Import our private cross signing keys. + * + * The keys should be provided as unpadded-base64-encoded strings. + * + * Returns a `CrossSigningStatus`. + * @param {string | undefined} [master_key] + * @param {string | undefined} [self_signing_key] + * @param {string | undefined} [user_signing_key] + * @returns {Promise} + */ + importCrossSigningKeys(master_key, self_signing_key, user_signing_key) { + var ptr0 = isLikeNone(master_key) ? 0 : passStringToWasm0(master_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(self_signing_key) ? 0 : passStringToWasm0(self_signing_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + var ptr2 = isLikeNone(user_signing_key) ? 0 : passStringToWasm0(user_signing_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len2 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_importCrossSigningKeys(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2); + return takeObject(ret); + } + /** + * Create a new cross signing identity and get the upload request + * to push the new public keys to the server. + * + * Warning: This will delete any existing cross signing keys that + * might exist on the server and thus will reset the trust + * between all the devices. + * + * Uploading these keys will require user interactive auth. + * + * # Arguments + * + * * `reset`, whether the method should create a new identity or use the + * existing one during the request. If set to true, the request will + * attempt to upload a new identity. If set to false, the request will + * attempt to upload the existing identity. Since the uploading process + * requires user interactive authentication, which involves sending out + * the same request multiple times, setting this argument to false + * enables you to reuse the same request. + * + * Returns a {@link CrossSigningBootstrapRequests}. + * @param {boolean} reset + * @returns {Promise} + */ + bootstrapCrossSigning(reset) { + const ret = wasm.olmmachine_bootstrapCrossSigning(this.__wbg_ptr, reset); + return takeObject(ret); + } + /** + * Get the cross signing user identity of a user. + * + * Returns a promise for an `OwnUserIdentity`, a `UserIdentity`, or + * `undefined`. + * @param {UserId} user_id + * @returns {Promise} + */ + getIdentity(user_id) { + _assertClass(user_id, UserId); + const ret = wasm.olmmachine_getIdentity(this.__wbg_ptr, user_id.__wbg_ptr); + return takeObject(ret); + } + /** + * Sign the given message using our device key and if available + * cross-signing master key. + * @param {string} message + * @returns {Promise} + */ + sign(message) { + const ptr0 = passStringToWasm0(message, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_sign(this.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } + /** + * Invalidate the currently active outbound group session for the + * given room. + * + * Returns true if a session was invalidated, false if there was + * no session to invalidate. + * @param {RoomId} room_id + * @returns {Promise} + */ + invalidateGroupSession(room_id) { + _assertClass(room_id, RoomId); + const ret = wasm.olmmachine_invalidateGroupSession(this.__wbg_ptr, room_id.__wbg_ptr); + return takeObject(ret); + } + /** + * Get to-device requests to share a room key with users in a room. + * + * `room_id` is the room ID. `users` is an array of `UserId` + * objects. `encryption_settings` are an `EncryptionSettings` + * object. + * + * Note: Care should be taken that only one such request at a + * time is in flight for the same room, e.g. using a lock. + * + * Returns an array of `ToDeviceRequest`s. + * + * Items inside `users` will be invalidated by this method. Be careful not + * to use the `UserId`s after this method has been called. + * @param {RoomId} room_id + * @param {(UserId)[]} users + * @param {EncryptionSettings} encryption_settings + * @returns {Promise} + */ + shareRoomKey(room_id, users, encryption_settings) { + _assertClass(room_id, RoomId); + const ptr0 = passArrayJsValueToWasm0(users, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(encryption_settings, EncryptionSettings); + const ret = wasm.olmmachine_shareRoomKey(this.__wbg_ptr, room_id.__wbg_ptr, ptr0, len0, encryption_settings.__wbg_ptr); + return takeObject(ret); + } + /** + * Generate an "out-of-band" key query request for the given set of users. + * + * This can be useful if we need the results from `getIdentity` or + * `getUserDevices` to be as up-to-date as possible. + * + * Returns a `KeysQueryRequest` object. The response of the request should + * be passed to the `OlmMachine` with the `mark_request_as_sent`. + * + * Items inside `users` will be invalidated by this method. Be careful not + * to use the `UserId`s after this method has been called. + * @param {(UserId)[]} users + * @returns {KeysQueryRequest} + */ + queryKeysForUsers(users) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArrayJsValueToWasm0(users, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.olmmachine_queryKeysForUsers(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return KeysQueryRequest.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the a key claiming request for the user/device pairs that + * we are missing Olm sessions for. + * + * Returns `null` if no key claiming request needs to be sent + * out, otherwise it returns a `KeysClaimRequest` object. + * + * Sessions need to be established between devices so group + * sessions for a room can be shared with them. + * + * This should be called every time a group session needs to be + * shared as well as between sync calls. After a sync some + * devices may request room keys without us having a valid Olm + * session with them, making it impossible to server the room key + * request, thus it’s necessary to check for missing sessions + * between sync as well. + * + * Note: Care should be taken that only one such request at a + * time is in flight, e.g. using a lock. + * + * The response of a successful key claiming requests needs to be + * passed to the `OlmMachine` with the `mark_request_as_sent`. + * + * `users` represents the list of users that we should check if + * we lack a session with one of their devices. This can be an + * empty iterator when calling this method between sync requests. + * + * Items inside `users` will be invalidated by this method. Be careful not + * to use the `UserId`s after this method has been called. + * @param {(UserId)[]} users + * @returns {Promise} + */ + getMissingSessions(users) { + const ptr0 = passArrayJsValueToWasm0(users, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_getMissingSessions(this.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } + /** + * Get a map holding all the devices of a user. + * + * ### Parameters + * + * * `user_id` - The unique ID of the user that the device belongs to. + * + * * `timeout_secs` - The amount of time we should wait for a `/keys/query` + * response before returning if the user's device list has been marked as + * stale. **Note**, this assumes that the requests from {@link + * OlmMachine.outgoingRequests} are being processed and sent out. + * + * If unset, we will return immediately even if the device list is stale. + * + * ### Returns + * + * A {@link UserDevices} object. + * @param {UserId} user_id + * @param {number | undefined} [timeout_secs] + * @returns {Promise} + */ + getUserDevices(user_id, timeout_secs) { + _assertClass(user_id, UserId); + const ret = wasm.olmmachine_getUserDevices(this.__wbg_ptr, user_id.__wbg_ptr, !isLikeNone(timeout_secs), isLikeNone(timeout_secs) ? 0 : timeout_secs); + return takeObject(ret); + } + /** + * Get a specific device of a user. + * + * ### Parameters + * + * * `user_id` - The unique ID of the user that the device belongs to. + * + * * `device_id` - The unique ID of the device. + * + * * `timeout_secs` - The amount of time we should wait for a `/keys/query` + * response before returning if the user's device list has been marked as + * stale. **Note**, this assumes that the requests from {@link + * OlmMachine.outgoingRequests} are being processed and sent out. + * + * If unset, we will return immediately even if the device list is stale. + * + * ### Returns + * + * If the device is known, a {@link Device}. Otherwise, `undefined`. + * @param {UserId} user_id + * @param {DeviceId} device_id + * @param {number | undefined} [timeout_secs] + * @returns {Promise} + */ + getDevice(user_id, device_id, timeout_secs) { + _assertClass(user_id, UserId); + _assertClass(device_id, DeviceId); + const ret = wasm.olmmachine_getDevice(this.__wbg_ptr, user_id.__wbg_ptr, device_id.__wbg_ptr, !isLikeNone(timeout_secs), isLikeNone(timeout_secs) ? 0 : timeout_secs); + return takeObject(ret); + } + /** + * Get a verification object for the given user ID with the given + * flow ID (a to-device request ID if the verification has been + * requested by a to-device request, or a room event ID if the + * verification has been requested by a room event). + * + * It returns a “`Verification` object”, which is either a `Sas` + * or `Qr` object. + * @param {UserId} user_id + * @param {string} flow_id + * @returns {any} + */ + getVerification(user_id, flow_id) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(user_id, UserId); + const ptr0 = passStringToWasm0(flow_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.olmmachine_getVerification(retptr, this.__wbg_ptr, user_id.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get a verification request object with the given flow ID. + * @param {UserId} user_id + * @param {string} flow_id + * @returns {VerificationRequest | undefined} + */ + getVerificationRequest(user_id, flow_id) { + _assertClass(user_id, UserId); + const ptr0 = passStringToWasm0(flow_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_getVerificationRequest(this.__wbg_ptr, user_id.__wbg_ptr, ptr0, len0); + return ret === 0 ? undefined : VerificationRequest.__wrap(ret); + } + /** + * Get all the verification requests of a given user. + * @param {UserId} user_id + * @returns {Array} + */ + getVerificationRequests(user_id) { + _assertClass(user_id, UserId); + const ret = wasm.olmmachine_getVerificationRequests(this.__wbg_ptr, user_id.__wbg_ptr); + return takeObject(ret); + } + /** + * Receive a verification event. + * + * This method can be used to pass verification events that are happening + * in rooms to the `OlmMachine`. The event should be in the decrypted form. + * @param {string} event + * @param {RoomId} room_id + * @returns {Promise} + */ + receiveVerificationEvent(event, room_id) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(event, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(room_id, RoomId); + wasm.olmmachine_receiveVerificationEvent(retptr, this.__wbg_ptr, ptr0, len0, room_id.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Export the keys that match the given predicate. + * + * `predicate` is a closure that will be called for every known + * `InboundGroupSession`, which represents a room key. If the closure + * returns `true`, the `InboundGroupSession` will be included in the + * export; otherwise it won't. + * + * Returns a Promise containing a Result containing a String which is a + * JSON-encoded array of ExportedRoomKey objects. + * @param {Function} predicate + * @returns {Promise} + */ + exportRoomKeys(predicate) { + const ret = wasm.olmmachine_exportRoomKeys(this.__wbg_ptr, addHeapObject(predicate)); + return takeObject(ret); + } + /** + * Import the given room keys into our store. + * + * Mostly, a deprecated alias for `importExportedRoomKeys`, though the + * return type is different. + * + * Returns a String containing a JSON-encoded object, holding three + * properties: + * * `total_count` (the total number of keys found in the export data). + * * `imported_count` (the number of keys that were imported). + * * `keys` (the keys that were imported; a map from room id to a map of + * the sender key to a list of session ids). + * + * @deprecated Use `importExportedRoomKeys` or `importBackedUpRoomKeys`. + * @param {string} exported_room_keys + * @param {Function} progress_listener + * @returns {Promise} + */ + importRoomKeys(exported_room_keys, progress_listener) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(exported_room_keys, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.olmmachine_importRoomKeys(retptr, this.__wbg_ptr, ptr0, len0, addHeapObject(progress_listener)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Import the given room keys into our store. + * + * `exported_keys` is a JSON-encoded list of previously exported keys that + * should be imported into our store. If we already have a better + * version of a key, the key will _not_ be imported. + * + * `progress_listener` is a closure that takes 2 `BigInt` arguments: + * `progress` and `total`, and returns nothing. + * + * Returns a {@link RoomKeyImportResult}. + * @param {string} exported_room_keys + * @param {Function} progress_listener + * @returns {Promise} + */ + importExportedRoomKeys(exported_room_keys, progress_listener) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(exported_room_keys, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.olmmachine_importExportedRoomKeys(retptr, this.__wbg_ptr, ptr0, len0, addHeapObject(progress_listener)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Import the given room keys into our store. + * + * # Arguments + * + * * `backed_up_room_keys`: keys that were retrieved from backup and that + * should be added to our store (provided they are better than our + * current versions of those keys). Specifically, it should be a Map from + * {@link RoomId}, to a Map from session ID to a (decrypted) session data + * structure. + * + * * `progress_listener`: an optional callback that takes 3 arguments: + * `progress` (the number of keys that have successfully been imported), + * `total` (the total number of keys), and `failures` (the number of keys + * that failed to import), and returns nothing. + * + * # Returns + * + * A {@link RoomKeyImportResult}. + * @param {Map} backed_up_room_keys + * @param {Function | undefined} [progress_listener] + * @returns {Promise} + */ + importBackedUpRoomKeys(backed_up_room_keys, progress_listener) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.olmmachine_importBackedUpRoomKeys(retptr, this.__wbg_ptr, addBorrowedObject(backed_up_room_keys), isLikeNone(progress_listener) ? 0 : addHeapObject(progress_listener)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + heap[stack_pointer++] = undefined; + } + } + /** + * Store the backup decryption key in the crypto store. + * + * This is useful if the client wants to support gossiping of the backup + * key. + * + * Returns `Promise`. + * @param {BackupDecryptionKey} decryption_key + * @param {string} version + * @returns {Promise} + */ + saveBackupDecryptionKey(decryption_key, version) { + _assertClass(decryption_key, BackupDecryptionKey); + const ptr0 = passStringToWasm0(version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_saveBackupDecryptionKey(this.__wbg_ptr, decryption_key.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } + /** + * Get the backup keys we have saved in our store. + * Returns a `Promise` for {@link BackupKeys}. + * @returns {Promise} + */ + getBackupKeys() { + const ret = wasm.olmmachine_getBackupKeys(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Check if the given backup has been verified by us or by another of our + * devices that we trust. + * + * The `backup_info` should be a Javascript object with the following + * format: + * + * ```json + * { + * "algorithm": "m.megolm_backup.v1.curve25519-aes-sha2", + * "auth_data": { + * "public_key":"XjhWTCjW7l59pbfx9tlCBQolfnIQWARoKOzjTOPSlWM", + * "signatures": {} + * } + * } + * ``` + * + * Returns a {@link SignatureVerification} object. + * @param {any} backup_info + * @returns {Promise} + */ + verifyBackup(backup_info) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.olmmachine_verifyBackup(retptr, this.__wbg_ptr, addHeapObject(backup_info)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Activate the given backup key to be used with the given backup version. + * + * **Warning**: The caller needs to make sure that the given `BackupKey` is + * trusted, otherwise we might be encrypting room keys that a malicious + * party could decrypt. + * + * The {@link #verifyBackup} method can be used to do so. + * + * Returns `Promise`. + * @param {string} public_key_base_64 + * @param {string} version + * @returns {Promise} + */ + enableBackupV1(public_key_base_64, version) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(public_key_base_64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + wasm.olmmachine_enableBackupV1(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Are we able to encrypt room keys. + * + * This returns true if we have an active `BackupKey` and backup version + * registered with the state machine. + * + * Returns `Promise`. + * @returns {Promise} + */ + isBackupEnabled() { + const ret = wasm.olmmachine_isBackupEnabled(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Disable and reset our backup state. + * + * This will remove any pending backup request, remove the backup key and + * reset the backup state of each room key we have. + * + * Returns `Promise`. + * @returns {Promise} + */ + disableBackup() { + const ret = wasm.olmmachine_disableBackup(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Encrypt a batch of room keys and return a request that needs to be sent + * out to backup the room keys. + * + * Returns an optional {@link KeysBackupRequest}. + * @returns {Promise} + */ + backupRoomKeys() { + const ret = wasm.olmmachine_backupRoomKeys(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Get the number of backed up room keys and the total number of room keys. + * Returns a {@link RoomKeyCounts}. + * @returns {Promise} + */ + roomKeyCounts() { + const ret = wasm.olmmachine_roomKeyCounts(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Encrypt the list of exported room keys using the given passphrase. + * + * `exported_room_keys` is a list of sessions that should be encrypted + * (it's generally returned by `export_room_keys`). `passphrase` is the + * passphrase that will be used to encrypt the exported room keys. And + * `rounds` is the number of rounds that should be used for the key + * derivation when the passphrase gets turned into an AES key. More rounds + * are increasingly computationnally intensive and as such help against + * brute-force attacks. Should be at least `10_000`, while values in the + * `100_000` ranges should be preferred. + * @param {string} exported_room_keys + * @param {string} passphrase + * @param {number} rounds + * @returns {string} + */ + static encryptExportedRoomKeys(exported_room_keys, passphrase, rounds) { + let deferred4_0; + let deferred4_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(exported_room_keys, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(passphrase, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + wasm.olmmachine_encryptExportedRoomKeys(retptr, ptr0, len0, ptr1, len1, rounds); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr3 = r0; + var len3 = r1; + if (r3) { + ptr3 = 0; len3 = 0; + throw takeObject(r2); + } + deferred4_0 = ptr3; + deferred4_1 = len3; + return getStringFromWasm0(ptr3, len3); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); + } + } + /** + * Try to decrypt a reader into a list of exported room keys. + * + * `encrypted_exported_room_keys` is the result from + * `encrypt_exported_room_keys`. `passphrase` is the passphrase that was + * used when calling `encrypt_exported_room_keys`. + * @param {string} encrypted_exported_room_keys + * @param {string} passphrase + * @returns {string} + */ + static decryptExportedRoomKeys(encrypted_exported_room_keys, passphrase) { + let deferred4_0; + let deferred4_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(encrypted_exported_room_keys, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(passphrase, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + wasm.olmmachine_decryptExportedRoomKeys(retptr, ptr0, len0, ptr1, len1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr3 = r0; + var len3 = r1; + if (r3) { + ptr3 = 0; len3 = 0; + throw takeObject(r2); + } + deferred4_0 = ptr3; + deferred4_1 = len3; + return getStringFromWasm0(ptr3, len3); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); + } + } + /** + * Register a callback which will be called whenever there is an update to + * a room key. + * + * `callback` should be a function that takes a single argument (an array + * of {@link RoomKeyInfo}) and returns a Promise. + * @param {Function} callback + * @returns {Promise} + */ + registerRoomKeyUpdatedCallback(callback) { + const ret = wasm.olmmachine_registerRoomKeyUpdatedCallback(this.__wbg_ptr, addHeapObject(callback)); + return takeObject(ret); + } + /** + * Register a callback which will be called whenever there is an update to + * a user identity. + * + * `callback` should be a function that takes a single argument (a {@link + * UserId}) and returns a Promise. + * @param {Function} callback + * @returns {Promise} + */ + registerUserIdentityUpdatedCallback(callback) { + const ret = wasm.olmmachine_registerUserIdentityUpdatedCallback(this.__wbg_ptr, addHeapObject(callback)); + return takeObject(ret); + } + /** + * Register a callback which will be called whenever there is an update to + * a device. + * + * `callback` should be a function that takes a single argument (an array + * of user IDs as strings) and returns a Promise. + * @param {Function} callback + * @returns {Promise} + */ + registerDevicesUpdatedCallback(callback) { + const ret = wasm.olmmachine_registerDevicesUpdatedCallback(this.__wbg_ptr, addHeapObject(callback)); + return takeObject(ret); + } + /** + * Register a callback which will be called whenever a secret + * (`m.secret.send`) is received. + * + * The only secret this will currently broadcast is the + * `m.megolm_backup.v1` (the cross signing secrets are handled internally). + * + * To request a secret from other devices, a client sends an + * `m.secret.request` device event with `action` set to `request` and + * `name` set to the identifier of the secret. A device that wishes to + * share the secret will reply with an `m.secret.send` event, encrypted + * using olm. + * + * The secrets are guaranteed to have been received over a 1-to-1 encrypted + * to_device message from a one of the user's own verified devices. + * + * See https://matrix-org.github.io/matrix-rust-sdk/matrix_sdk_crypto/store/struct.Store.html#method.secrets_stream for more information. + * + * `callback` should be a function that takes 2 arguments: the secret name + * (string) and value (string). + * + * **Note**: if the secret is valid and handled on the javascript side, the + * secret inbox should be cleared by calling + * `delete_secrets_from_inbox`. + * @param {Function} callback + * @returns {Promise} + */ + registerReceiveSecretCallback(callback) { + const ret = wasm.olmmachine_registerReceiveSecretCallback(this.__wbg_ptr, addHeapObject(callback)); + return takeObject(ret); + } + /** + * Get all the secrets with the given secret_name we have currently + * stored. + * The only secret this will currently return is the + * `m.megolm_backup.v1` secret. + * + * Usually you would just register a callback with + * [`register_receive_secret_callback`], but if the client is shut down + * before handling them, this method can be used to retrieve them. + * This method should therefore be called at client startup to retrieve any + * secrets received during the previous session. + * + * The secrets are guaranteed to have been received over a 1-to-1 encrypted + * to_device message from one of the user's own verified devices. + * + * Returns a `Promise` for a `Set` of `String` corresponding to the secret + * values. + * + * If the secret is valid and handled, the secret inbox should be cleared + * by calling `delete_secrets_from_inbox`. + * @param {string} secret_name + * @returns {Promise>} + */ + getSecretsFromInbox(secret_name) { + const ptr0 = passStringToWasm0(secret_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_getSecretsFromInbox(this.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } + /** + * Delete all secrets with the given secret name from the inbox. + * + * Should be called after handling the secrets with + * `get_secrets_from_inbox`. + * + * # Arguments + * + * * `secret_name` - The name of the secret to delete. + * @param {string} secret_name + * @returns {Promise>} + */ + deleteSecretsFromInbox(secret_name) { + const ptr0 = passStringToWasm0(secret_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.olmmachine_deleteSecretsFromInbox(this.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } + /** + * Request missing local secrets from our other trusted devices. + * + * "Local secrets" refers to secrets which can be shared between trusted + * devices, such as private cross-signing keys, and the megolm backup + * decryption key. + * + * This method will cause the sdk to generated outgoing secret requests + * (`m.secret.request`) to get the missing secrets. These requests will + * then be returned by a future call to {@link + * OlmMachine#outgoing_requests}. + * + * # Returns + * + * A `Promise` for a `bool` result, which will be true if secrets were + * missing, and a request was generated. + * @returns {Promise>} + */ + requestMissingSecretsIfNeeded() { + const ret = wasm.olmmachine_requestMissingSecretsIfNeeded(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Get the stored room settings, such as the encryption algorithm or + * whether to encrypt only for trusted devices. + * + * These settings can be modified via {@link #setRoomSettings}. + * + * # Returns + * + * `Promise` + * @param {RoomId} room_id + * @returns {Promise} + */ + getRoomSettings(room_id) { + _assertClass(room_id, RoomId); + const ret = wasm.olmmachine_getRoomSettings(this.__wbg_ptr, room_id.__wbg_ptr); + return takeObject(ret); + } + /** + * Store encryption settings for the given room. + * + * This method checks if the new settings are "safe" -- ie, that they do + * not represent a downgrade in encryption security from any previous + * settings. Attempts to downgrade security will result in an error. + * + * If the settings are valid, they will be persisted to the crypto store. + * These settings are not used directly by this library, but the saved + * settings can be retrieved via {@link #getRoomSettings}. + * @param {RoomId} room_id + * @param {RoomSettings} room_settings + * @returns {Promise} + */ + setRoomSettings(room_id, room_settings) { + _assertClass(room_id, RoomId); + _assertClass(room_settings, RoomSettings); + const ret = wasm.olmmachine_setRoomSettings(this.__wbg_ptr, room_id.__wbg_ptr, room_settings.__wbg_ptr); + return takeObject(ret); + } + /** + * Manage dehydrated devices + * @returns {DehydratedDevices} + */ + dehydratedDevices() { + const ret = wasm.olmmachine_dehydratedDevices(this.__wbg_ptr); + return DehydratedDevices.__wrap(ret); + } + /** + * Shut down the `OlmMachine`. + * + * The `OlmMachine` cannot be used after this method has been called. + * + * All associated resources will be closed too, like IndexedDB + * connections. + */ + close() { + const ptr = this.__destroy_into_raw(); + wasm.olmmachine_close(ptr); + } +} +module.exports.OlmMachine = OlmMachine; + +const OwnUserIdentityFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_ownuseridentity_free(ptr >>> 0)); +/** +* Struct representing a cross signing identity of a user. +* +* This is the user identity of a user that is our own. +*/ +class OwnUserIdentity { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(OwnUserIdentity.prototype); + obj.__wbg_ptr = ptr; + OwnUserIdentityFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + OwnUserIdentityFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_ownuseridentity_free(ptr); + } + /** + * Is this user identity verified? + * @returns {boolean} + */ + isVerified() { + const ret = wasm.ownuseridentity_isVerified(this.__wbg_ptr); + return ret !== 0; + } + /** + * Mark our user identity as verified. + * + * This will mark the identity locally as verified and sign it with our own + * device. + * + * Returns a signature upload request that needs to be sent out. + * @returns {Promise} + */ + verify() { + const ret = wasm.ownuseridentity_verify(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Send a verification request to our other devices. + * @param {any[] | undefined} [methods] + * @returns {Promise} + */ + requestVerification(methods) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + var ptr0 = isLikeNone(methods) ? 0 : passArrayJsValueToWasm0(methods, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.ownuseridentity_requestVerification(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Does our user identity trust our own device, i.e. have we signed our own + * device keys with our self-signing key? + * @returns {Promise} + */ + trustsOurOwnDevice() { + const ret = wasm.ownuseridentity_trustsOurOwnDevice(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Get the master key of the identity. + * @returns {string} + */ + get masterKey() { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.ownuseridentity_masterKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } + } + /** + * Get the self-signing key of the identity. + * @returns {string} + */ + get selfSigningKey() { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.ownuseridentity_selfSigningKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } + } + /** + * Get the user-signing key of the identity, this is only present for our + * own user identity.. + * @returns {string} + */ + get userSigningKey() { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.ownuseridentity_userSigningKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } + } +} +module.exports.OwnUserIdentity = OwnUserIdentity; + +const PickledInboundGroupSessionFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_pickledinboundgroupsession_free(ptr >>> 0)); +/** +* A pickled version of an `InboundGroupSession`. +* +* Holds all the information that needs to be stored in a database to restore +* an InboundGroupSession. +*/ +class PickledInboundGroupSession { + + static __unwrap(jsValue) { + if (!(jsValue instanceof PickledInboundGroupSession)) { + return 0; + } + return jsValue.__destroy_into_raw(); + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + PickledInboundGroupSessionFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_pickledinboundgroupsession_free(ptr); + } + /** + * The pickle string holding the Megolm Session, as returned by + * `olm_pickle_inbound_group_session` in libolm. + * @returns {string} + */ + get pickle() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_pickledAccount(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * The pickle string holding the Megolm Session, as returned by + * `olm_pickle_inbound_group_session` in libolm. + * @param {string} arg0 + */ + set pickle(arg0) { + const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_pickledAccount(this.__wbg_ptr, ptr0, len0); + } + /** + * The public curve25519 key of the account that sent us the session. + * @returns {string} + */ + get senderKey() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_pickledinboundgroupsession_senderKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * The public curve25519 key of the account that sent us the session. + * @param {string} arg0 + */ + set senderKey(arg0) { + const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_pickledinboundgroupsession_senderKey(this.__wbg_ptr, ptr0, len0); + } + /** + * The public ed25519 key of the account that is believed to have initiated + * the session, if known. + * + * If the session was received directly from the creator via an + * Olm-encrypted `m.room_key` event, this value is taken from the `keys` + * property of the plaintext payload of that event (see + * [`m.olm.v1.curve25519-aes-sha2`]). + * + * If the session was forwarded to us using an [`m.forwarded_room_key`], + * this value is a copy of the `sender_claimed_ed25519_key` from the + * content of the event. + * + * [`m.olm.v1.curve25519-aes-sha2`]: https://spec.matrix.org/v1.9/client-server-api/#molmv1curve25519-aes-sha2 + * [`m.forwarded_room_key`]: https://spec.matrix.org/v1.9/client-server-api/#mforwarded_room_key + * @returns {string | undefined} + */ + get senderSigningKey() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_backupRecoveryKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The public ed25519 key of the account that is believed to have initiated + * the session, if known. + * + * If the session was received directly from the creator via an + * Olm-encrypted `m.room_key` event, this value is taken from the `keys` + * property of the plaintext payload of that event (see + * [`m.olm.v1.curve25519-aes-sha2`]). + * + * If the session was forwarded to us using an [`m.forwarded_room_key`], + * this value is a copy of the `sender_claimed_ed25519_key` from the + * content of the event. + * + * [`m.olm.v1.curve25519-aes-sha2`]: https://spec.matrix.org/v1.9/client-server-api/#molmv1curve25519-aes-sha2 + * [`m.forwarded_room_key`]: https://spec.matrix.org/v1.9/client-server-api/#mforwarded_room_key + * @param {string | undefined} [arg0] + */ + set senderSigningKey(arg0) { + var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_backupRecoveryKey(this.__wbg_ptr, ptr0, len0); + } + /** + * The id of the room that the session is used in. + * + * Nullable so that a `PickledInboundGroupSession` can be constructed + * incrementally. Must be populated! + * @returns {RoomId | undefined} + */ + get roomId() { + const ret = wasm.__wbg_get_pickledinboundgroupsession_roomId(this.__wbg_ptr); + return ret === 0 ? undefined : RoomId.__wrap(ret); + } + /** + * The id of the room that the session is used in. + * + * Nullable so that a `PickledInboundGroupSession` can be constructed + * incrementally. Must be populated! + * @param {RoomId | undefined} [arg0] + */ + set roomId(arg0) { + let ptr0 = 0; + if (!isLikeNone(arg0)) { + _assertClass(arg0, RoomId); + ptr0 = arg0.__destroy_into_raw(); + } + wasm.__wbg_set_pickledinboundgroupsession_roomId(this.__wbg_ptr, ptr0); + } + /** + * Flag remembering if the session was directly sent to us by the sender + * or if it was imported. + * @returns {boolean} + */ + get imported() { + const ret = wasm.__wbg_get_pickledinboundgroupsession_imported(this.__wbg_ptr); + return ret !== 0; + } + /** + * Flag remembering if the session was directly sent to us by the sender + * or if it was imported. + * @param {boolean} arg0 + */ + set imported(arg0) { + wasm.__wbg_set_pickledinboundgroupsession_imported(this.__wbg_ptr, arg0); + } + /** + * Flag remembering if the session has been backed up. + * @returns {boolean} + */ + get backedUp() { + const ret = wasm.__wbg_get_pickledinboundgroupsession_backedUp(this.__wbg_ptr); + return ret !== 0; + } + /** + * Flag remembering if the session has been backed up. + * @param {boolean} arg0 + */ + set backedUp(arg0) { + wasm.__wbg_set_pickledinboundgroupsession_backedUp(this.__wbg_ptr, arg0); + } + /** + * Construct a new `PickledInboundGroupSession`, with default values. + */ + constructor() { + const ret = wasm.pickledinboundgroupsession_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } +} +module.exports.PickledInboundGroupSession = PickledInboundGroupSession; + +const PickledSessionFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_pickledsession_free(ptr >>> 0)); +/** +* A pickled version of a `Session`. +* +* Holds all the information that needs to be stored in a database to restore +* an Olm Session. Can be imported into the rust store with {@link +* #migrateOlmSessions}. +*/ +class PickledSession { + + static __unwrap(jsValue) { + if (!(jsValue instanceof PickledSession)) { + return 0; + } + return jsValue.__destroy_into_raw(); + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + PickledSessionFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_pickledsession_free(ptr); + } + /** + * The pickle string holding the Olm Session, as returned by + * `olm_pickle_session` in libolm. + * @returns {string} + */ + get pickle() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_basemigrationdata_pickledAccount(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * The pickle string holding the Olm Session, as returned by + * `olm_pickle_session` in libolm. + * @param {string} arg0 + */ + set pickle(arg0) { + const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_basemigrationdata_pickledAccount(this.__wbg_ptr, ptr0, len0); + } + /** + * The base64-encoded public curve25519 key of the other user that we share + * this session with. + * @returns {string} + */ + get senderKey() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_pickledinboundgroupsession_senderKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * The base64-encoded public curve25519 key of the other user that we share + * this session with. + * @param {string} arg0 + */ + set senderKey(arg0) { + const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_pickledinboundgroupsession_senderKey(this.__wbg_ptr, ptr0, len0); + } + /** + * Was the session created using a fallback key? + * @returns {boolean} + */ + get createdUsingFallbackKey() { + const ret = wasm.__wbg_get_pickledsession_createdUsingFallbackKey(this.__wbg_ptr); + return ret !== 0; + } + /** + * Was the session created using a fallback key? + * @param {boolean} arg0 + */ + set createdUsingFallbackKey(arg0) { + wasm.__wbg_set_pickledsession_createdUsingFallbackKey(this.__wbg_ptr, arg0); + } + /** + * When the session was created. + * @returns {Date} + */ + get creationTime() { + const ret = wasm.__wbg_get_pickledsession_creationTime(this.__wbg_ptr); + return takeObject(ret); + } + /** + * When the session was created. + * @param {Date} arg0 + */ + set creationTime(arg0) { + wasm.__wbg_set_pickledsession_creationTime(this.__wbg_ptr, addHeapObject(arg0)); + } + /** + * When the session was last used. + * @returns {Date} + */ + get lastUseTime() { + const ret = wasm.__wbg_get_pickledsession_lastUseTime(this.__wbg_ptr); + return takeObject(ret); + } + /** + * When the session was last used. + * @param {Date} arg0 + */ + set lastUseTime(arg0) { + wasm.__wbg_set_pickledsession_lastUseTime(this.__wbg_ptr, addHeapObject(arg0)); + } + /** + * Construct a new `PickledSession`, with default values. + */ + constructor() { + const ret = wasm.pickledsession_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } +} +module.exports.PickledSession = PickledSession; + +const PutDehydratedDeviceRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_putdehydrateddevicerequest_free(ptr >>> 0)); +/** +* A request that will upload a dehydrated device to the server. +*/ +class PutDehydratedDeviceRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(PutDehydratedDeviceRequest.prototype); + obj.__wbg_ptr = ptr; + PutDehydratedDeviceRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + PutDehydratedDeviceRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_putdehydrateddevicerequest_free(ptr); + } + /** + * A JSON-encoded string containing the rest of the payload: `rooms`. + * + * It represents the body of the HTTP request. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_putdehydrateddevicerequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `PutDehydratedDeviceRequest` + * @param {string} body + */ + constructor(body) { + const ret = wasm.putdehydrateddevicerequest_new(addHeapObject(body)); + this.__wbg_ptr = ret >>> 0; + return this; + } +} +module.exports.PutDehydratedDeviceRequest = PutDehydratedDeviceRequest; + +const QrFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_qr_free(ptr >>> 0)); +/** +* QR code based verification. +*/ +class Qr { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Qr.prototype); + obj.__wbg_ptr = ptr; + QrFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + QrFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_qr_free(ptr); + } + /** + * Get the current state of this request. + * + * Returns a `QrState`. + * @returns {QrState} + */ + state() { + const ret = wasm.qr_state(this.__wbg_ptr); + return ret; + } + /** + * Has the QR verification been scanned by the other side. + * + * When the verification object is in this state it’s required + * that the user confirms that the other side has scanned the QR + * code. + * @returns {boolean} + */ + hasBeenScanned() { + const ret = wasm.qr_hasBeenScanned(this.__wbg_ptr); + return ret !== 0; + } + /** + * Has the scanning of the QR code been confirmed by us? + * @returns {boolean} + */ + hasBeenConfirmed() { + const ret = wasm.qr_hasBeenConfirmed(this.__wbg_ptr); + return ret !== 0; + } + /** + * Get our own user ID. + * @returns {UserId} + */ + get userId() { + const ret = wasm.qr_userId(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * Get the user id of the other user that is participating in + * this verification flow. + * @returns {UserId} + */ + get otherUserId() { + const ret = wasm.qr_otherUserId(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * Get the device ID of the other side. + * @returns {DeviceId} + */ + get otherDeviceId() { + const ret = wasm.qr_otherDeviceId(this.__wbg_ptr); + return DeviceId.__wrap(ret); + } + /** + * Did we initiate the verification request? + * @returns {boolean} + */ + weStarted() { + const ret = wasm.qr_weStarted(this.__wbg_ptr); + return ret !== 0; + } + /** + * Get info about the cancellation if the verification flow has + * been cancelled. + * @returns {CancelInfo | undefined} + */ + cancelInfo() { + const ret = wasm.qr_cancelInfo(this.__wbg_ptr); + return ret === 0 ? undefined : CancelInfo.__wrap(ret); + } + /** + * Has the verification flow completed? + * @returns {boolean} + */ + isDone() { + const ret = wasm.qr_isDone(this.__wbg_ptr); + return ret !== 0; + } + /** + * Has the verification flow been cancelled? + * @returns {boolean} + */ + isCancelled() { + const ret = wasm.qr_isCancelled(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is this a verification that is verifying one of our own devices? + * @returns {boolean} + */ + isSelfVerification() { + const ret = wasm.qr_isSelfVerification(this.__wbg_ptr); + return ret !== 0; + } + /** + * Have we successfully scanned the QR code and are able to send + * a reciprocation event? + * @returns {boolean} + */ + reciprocated() { + const ret = wasm.qr_reciprocated(this.__wbg_ptr); + return ret !== 0; + } + /** + * Get the unique ID that identifies this QR verification flow, + * be either a to-device request ID or a room event ID. + * @returns {string} + */ + get flowId() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.qr_flowId(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Get the room id if the verification is happening inside a + * room. + * @returns {RoomId | undefined} + */ + get roomId() { + const ret = wasm.qr_roomId(this.__wbg_ptr); + return ret === 0 ? undefined : RoomId.__wrap(ret); + } + /** + * Generate a QR code object that is representing this + * verification flow. + * + * The QrCode can then be rendered as an image or as an unicode + * string. + * + * The `to_bytes` method can be used to instead output the raw + * bytes that should be encoded as a QR code. + * + * Returns a `QrCode`. + * @returns {QrCode} + */ + toQrCode() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.qr_toQrCode(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return QrCode.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Generate a the raw bytes that should be encoded as a QR code + * is representing this verification flow. + * + * The `to_qr_code` method can be used to instead output a QrCode + * object that can be rendered. + * @returns {Uint8ClampedArray} + */ + toBytes() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.qr_toBytes(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Notify the other side that we have successfully scanned the QR + * code and that the QR verification flow can start. + * + * This will return some OutgoingContent if the object is in the + * correct state to start the verification flow, otherwise None. + * @returns {any} + */ + reciprocate() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.qr_reciprocate(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Confirm that the other side has scanned our QR code. + * + * Returns either an `OutgoingRequest` which should be sent out, or + * `undefined` if the verification is already confirmed. + * @returns {any} + */ + confirmScanning() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.qr_confirmScanning(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Cancel the verification flow. + * + * Returns either an `OutgoingRequest` which should be sent out, or + * `undefined` if the verification is already cancelled. + * @returns {any} + */ + cancel() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.qr_cancel(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Cancel the verification. + * + * This cancels the verification with given code (e.g. `m.user`). + * + * Returns either an `OutgoingRequest` which should be sent out, or + * `undefined` if the verification is already cancelled. + * @param {string} code + * @returns {any} + */ + cancelWithCode(code) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(code, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.qr_cancelWithCode(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Register a callback which will be called whenever there is an update to + * the request + * + * The `callback` is called with no parameters. + * @param {Function} callback + */ + registerChangesCallback(callback) { + wasm.qr_registerChangesCallback(this.__wbg_ptr, addHeapObject(callback)); + } +} +module.exports.Qr = Qr; + +const QrCodeFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_qrcode_free(ptr >>> 0)); +/** +* A QR code. +*/ +class QrCode { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(QrCode.prototype); + obj.__wbg_ptr = ptr; + QrCodeFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + QrCodeFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_qrcode_free(ptr); + } + /** + * Render the QR code into a `Uint8ClampedArray` where 1 represents a + * dark pixel and 0 a white pixel. + * @returns {Uint8ClampedArray} + */ + renderIntoBuffer() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.qrcode_renderIntoBuffer(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +module.exports.QrCode = QrCode; + +const QrCodeScanFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_qrcodescan_free(ptr >>> 0)); +/** +* A scanned QR code. +*/ +class QrCodeScan { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(QrCodeScan.prototype); + obj.__wbg_ptr = ptr; + QrCodeScanFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + QrCodeScanFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_qrcodescan_free(ptr); + } + /** + * Parse the decoded payload of a QR code in byte slice form. + * + * This method is useful if you would like to do your own custom QR code + * decoding. + * @param {Uint8ClampedArray} buffer + * @returns {QrCodeScan} + */ + static fromBytes(buffer) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.qrcodescan_fromBytes(retptr, addBorrowedObject(buffer)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return QrCodeScan.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + heap[stack_pointer++] = undefined; + } + } +} +module.exports.QrCodeScan = QrCodeScan; + +const RehydratedDeviceFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_rehydrateddevice_free(ptr >>> 0)); +/** +* A rehydrated device +* +* This device can receive to-device events to get room keys that were send to +* it. +*/ +class RehydratedDevice { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(RehydratedDevice.prototype); + obj.__wbg_ptr = ptr; + RehydratedDeviceFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + RehydratedDeviceFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_rehydrateddevice_free(ptr); + } + /** + * Receive the to-device events that sent to the dehydrated device + * + * The rehydrated device will decrypt the events and pass the room keys + * into the `OlmMachine`. + * + * `to_device_events` is a JSON-encoded result of the `events` array from + * `/dehydrated_device/{device_id}/events`. + * + * Returns an array of `RoomKeyInfo`, indicating the room keys that were + * received. + * @param {string} to_device_events + * @returns {Promise>} + */ + receiveEvents(to_device_events) { + const ptr0 = passStringToWasm0(to_device_events, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.rehydrateddevice_receiveEvents(this.__wbg_ptr, ptr0, len0); + return takeObject(ret); + } +} +module.exports.RehydratedDevice = RehydratedDevice; + +const RoomIdFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_roomid_free(ptr >>> 0)); +/** +* A Matrix [room ID]. +* +* [room ID]: https://spec.matrix.org/v1.2/appendices/#room-ids-and-event-ids +*/ +class RoomId { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(RoomId.prototype); + obj.__wbg_ptr = ptr; + RoomIdFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + static __unwrap(jsValue) { + if (!(jsValue instanceof RoomId)) { + return 0; + } + return jsValue.__destroy_into_raw(); + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + RoomIdFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_roomid_free(ptr); + } + /** + * Parse/validate and create a new `RoomId`. + * @param {string} id + */ + constructor(id) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.roomid_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Return the room ID as a string. + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.roomid_toString(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.RoomId = RoomId; + +const RoomKeyCountsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_roomkeycounts_free(ptr >>> 0)); +/** +* Struct holding the number of room keys we have. +*/ +class RoomKeyCounts { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(RoomKeyCounts.prototype); + obj.__wbg_ptr = ptr; + RoomKeyCountsFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + RoomKeyCountsFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_roomkeycounts_free(ptr); + } + /** + * The total number of room keys. + * @returns {number} + */ + get total() { + const ret = wasm.__wbg_get_roomkeycounts_total(this.__wbg_ptr); + return ret; + } + /** + * The total number of room keys. + * @param {number} arg0 + */ + set total(arg0) { + wasm.__wbg_set_roomkeycounts_total(this.__wbg_ptr, arg0); + } + /** + * The number of backed up room keys. + * @returns {number} + */ + get backedUp() { + const ret = wasm.__wbg_get_roomkeycounts_backedUp(this.__wbg_ptr); + return ret; + } + /** + * The number of backed up room keys. + * @param {number} arg0 + */ + set backedUp(arg0) { + wasm.__wbg_set_roomkeycounts_backedUp(this.__wbg_ptr, arg0); + } +} +module.exports.RoomKeyCounts = RoomKeyCounts; + +const RoomKeyImportResultFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_roomkeyimportresult_free(ptr >>> 0)); +/** +* The result of a call to {@link OlmMachine.importExportedRoomKeys} or +* {@link OlmMachine.importBackedUpRoomKeys}. +*/ +class RoomKeyImportResult { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(RoomKeyImportResult.prototype); + obj.__wbg_ptr = ptr; + RoomKeyImportResultFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + RoomKeyImportResultFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_roomkeyimportresult_free(ptr); + } + /** + * The number of room keys that were imported. + * @returns {number} + */ + get importedCount() { + const ret = wasm.__wbg_get_roomkeyimportresult_importedCount(this.__wbg_ptr); + return ret >>> 0; + } + /** + * The total number of room keys that were found in the export. + * @returns {number} + */ + get totalCount() { + const ret = wasm.__wbg_get_roomkeyimportresult_totalCount(this.__wbg_ptr); + return ret >>> 0; + } + /** + * The keys that were imported. + * + * A Map from room id to a Map of the sender key to a Set of session ids. + * + * Typescript type: `Map>`. + * @returns {Map} + */ + keys() { + const ret = wasm.roomkeyimportresult_keys(this.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.RoomKeyImportResult = RoomKeyImportResult; + +const RoomKeyInfoFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_roomkeyinfo_free(ptr >>> 0)); +/** +* Information on a room key that has been received or imported. +*/ +class RoomKeyInfo { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(RoomKeyInfo.prototype); + obj.__wbg_ptr = ptr; + RoomKeyInfoFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + RoomKeyInfoFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_roomkeyinfo_free(ptr); + } + /** + * The {@link EncryptionAlgorithm} that this key is used for. Will be one + * of the `m.megolm.*` algorithms. + * @returns {EncryptionAlgorithm} + */ + get algorithm() { + const ret = wasm.roomkeyinfo_algorithm(this.__wbg_ptr); + return ret; + } + /** + * The room where the key is used. + * @returns {RoomId} + */ + get roomId() { + const ret = wasm.roomkeyinfo_roomId(this.__wbg_ptr); + return RoomId.__wrap(ret); + } + /** + * The Curve25519 key of the device which initiated the session originally. + * @returns {Curve25519PublicKey} + */ + get senderKey() { + const ret = wasm.roomkeyinfo_senderKey(this.__wbg_ptr); + return Curve25519PublicKey.__wrap(ret); + } + /** + * The ID of the session that the key is for. + * @returns {string} + */ + get sessionId() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.roomkeyinfo_sessionId(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.RoomKeyInfo = RoomKeyInfo; + +const RoomMessageRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_roommessagerequest_free(ptr >>> 0)); +/** +* A customized owned request type for sending out room messages +* ([specification]). +* +* [specification]: https://spec.matrix.org/unstable/client-server-api/#put_matrixclientv3roomsroomidsendeventtypetxnid +*/ +class RoomMessageRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(RoomMessageRequest.prototype); + obj.__wbg_ptr = ptr; + RoomMessageRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + RoomMessageRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_roommessagerequest_free(ptr); + } + /** + * The request ID. + * @returns {string} + */ + get id() { + const ret = wasm.__wbg_get_roommessagerequest_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A string representing the room to send the event to. + * @returns {string} + */ + get room_id() { + const ret = wasm.__wbg_get_roommessagerequest_room_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A string representing the transaction ID for this event. + * + * Clients should generate an ID unique across requests with the same + * access token; it will be used by the server to ensure idempotency of + * requests. + * @returns {string} + */ + get txn_id() { + const ret = wasm.__wbg_get_roommessagerequest_txn_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A string representing the type of event to be sent. + * @returns {string} + */ + get event_type() { + const ret = wasm.__wbg_get_roommessagerequest_event_type(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A JSON-encoded string containing the message's content. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_roommessagerequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `RoomMessageRequest`. + * @param {string} id + * @param {string} room_id + * @param {string} txn_id + * @param {string} event_type + * @param {string} content + */ + constructor(id, room_id, txn_id, event_type, content) { + const ret = wasm.roommessagerequest_new(addHeapObject(id), addHeapObject(room_id), addHeapObject(txn_id), addHeapObject(event_type), addHeapObject(content)); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Get its request type. + * @returns {RequestType} + */ + get type() { + const ret = wasm.roommessagerequest_type(this.__wbg_ptr); + return ret; + } +} +module.exports.RoomMessageRequest = RoomMessageRequest; + +const RoomSettingsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_roomsettings_free(ptr >>> 0)); +/** +* Room encryption settings which are modified by state events or user options +*/ +class RoomSettings { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(RoomSettings.prototype); + obj.__wbg_ptr = ptr; + RoomSettingsFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + RoomSettingsFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_roomsettings_free(ptr); + } + /** + * The encryption algorithm that should be used in the room. + * + * Should be one of the members of {@link EncryptionAlgorithm}. + * @returns {EncryptionAlgorithm} + */ + get algorithm() { + const ret = wasm.__wbg_get_roomsettings_algorithm(this.__wbg_ptr); + return ret; + } + /** + * The encryption algorithm that should be used in the room. + * + * Should be one of the members of {@link EncryptionAlgorithm}. + * @param {EncryptionAlgorithm} arg0 + */ + set algorithm(arg0) { + wasm.__wbg_set_roomsettings_algorithm(this.__wbg_ptr, arg0); + } + /** + * Whether untrusted devices should receive room keys. If this is `false`, + * they will be excluded from the conversation. + * @returns {boolean} + */ + get onlyAllowTrustedDevices() { + const ret = wasm.__wbg_get_roomsettings_onlyAllowTrustedDevices(this.__wbg_ptr); + return ret !== 0; + } + /** + * Whether untrusted devices should receive room keys. If this is `false`, + * they will be excluded from the conversation. + * @param {boolean} arg0 + */ + set onlyAllowTrustedDevices(arg0) { + wasm.__wbg_set_roomsettings_onlyAllowTrustedDevices(this.__wbg_ptr, arg0); + } + /** + * The maximum time, in milliseconds, that an encryption session should be + * used for, before it is rotated. + * @returns {number | undefined} + */ + get sessionRotationPeriodMs() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_roomsettings_sessionRotationPeriodMs(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r2 = getFloat64Memory0()[retptr / 8 + 1]; + return r0 === 0 ? undefined : r2; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The maximum time, in milliseconds, that an encryption session should be + * used for, before it is rotated. + * @param {number | undefined} [arg0] + */ + set sessionRotationPeriodMs(arg0) { + wasm.__wbg_set_roomsettings_sessionRotationPeriodMs(this.__wbg_ptr, !isLikeNone(arg0), isLikeNone(arg0) ? 0 : arg0); + } + /** + * The maximum number of messages an encryption session should be used for, + * before it is rotated. + * @returns {number | undefined} + */ + get sessionRotationPeriodMessages() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.__wbg_get_roomsettings_sessionRotationPeriodMessages(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r2 = getFloat64Memory0()[retptr / 8 + 1]; + return r0 === 0 ? undefined : r2; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The maximum number of messages an encryption session should be used for, + * before it is rotated. + * @param {number | undefined} [arg0] + */ + set sessionRotationPeriodMessages(arg0) { + wasm.__wbg_set_roomsettings_sessionRotationPeriodMessages(this.__wbg_ptr, !isLikeNone(arg0), isLikeNone(arg0) ? 0 : arg0); + } + /** + * Create a new `RoomSettings` with default values. + */ + constructor() { + const ret = wasm.roomsettings_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } +} +module.exports.RoomSettings = RoomSettings; + +const SasFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_sas_free(ptr >>> 0)); +/** +* Short Authentication String (SAS) verification. +*/ +class Sas { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Sas.prototype); + obj.__wbg_ptr = ptr; + SasFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + SasFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_sas_free(ptr); + } + /** + * Get our own user ID. + * @returns {UserId} + */ + get userId() { + const ret = wasm.sas_userId(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * Get our own device ID. + * @returns {DeviceId} + */ + get deviceId() { + const ret = wasm.sas_deviceId(this.__wbg_ptr); + return DeviceId.__wrap(ret); + } + /** + * Get the user id of the other side. + * @returns {UserId} + */ + get otherUserId() { + const ret = wasm.sas_otherUserId(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * Get the device ID of the other side. + * @returns {DeviceId} + */ + get otherDeviceId() { + const ret = wasm.sas_otherDeviceId(this.__wbg_ptr); + return DeviceId.__wrap(ret); + } + /** + * Get the unique ID that identifies this SAS verification flow, + * be either a to-device request ID or a room event ID. + * @returns {string} + */ + get flowId() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.sas_flowId(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Get the room ID if the verification is happening inside a + * room. + * @returns {RoomId | undefined} + */ + get roomId() { + const ret = wasm.sas_roomId(this.__wbg_ptr); + return ret === 0 ? undefined : RoomId.__wrap(ret); + } + /** + * Does this verification flow support displaying emoji for the + * short authentication string? + * @returns {boolean} + */ + supportsEmoji() { + const ret = wasm.sas_supportsEmoji(this.__wbg_ptr); + return ret !== 0; + } + /** + * Did this verification flow start from a verification request? + * @returns {boolean} + */ + startedFromRequest() { + const ret = wasm.sas_startedFromRequest(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is this a verification that is verifying one of our own + * devices? + * @returns {boolean} + */ + isSelfVerification() { + const ret = wasm.sas_isSelfVerification(this.__wbg_ptr); + return ret !== 0; + } + /** + * Have we confirmed that the short auth string matches? + * @returns {boolean} + */ + haveWeConfirmed() { + const ret = wasm.sas_haveWeConfirmed(this.__wbg_ptr); + return ret !== 0; + } + /** + * Has the verification been accepted by both parties? + * @returns {boolean} + */ + hasBeenAccepted() { + const ret = wasm.sas_hasBeenAccepted(this.__wbg_ptr); + return ret !== 0; + } + /** + * Get info about the cancellation if the verification flow has + * been cancelled. + * @returns {CancelInfo | undefined} + */ + cancelInfo() { + const ret = wasm.sas_cancelInfo(this.__wbg_ptr); + return ret === 0 ? undefined : CancelInfo.__wrap(ret); + } + /** + * True if we initiated the verification flow (ie, we sent the + * `m.key.verification.request`). + * @returns {boolean} + */ + weStarted() { + const ret = wasm.sas_weStarted(this.__wbg_ptr); + return ret !== 0; + } + /** + * Accept the SAS verification. + * + * This does nothing (and returns `undefined`) if the verification was + * already accepted, otherwise it returns an `OutgoingRequest` + * that needs to be sent out. + * @returns {any} + */ + accept() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.sas_accept(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Confirm the SAS verification. + * + * This confirms that the short auth strings match on both sides. + * + * Does nothing if we’re not in a state where we can confirm the + * short auth string. + * + * Returns a `Promise` for an array of `OutgoingRequest`s. + * @returns {Promise} + */ + confirm() { + const ret = wasm.sas_confirm(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Cancel the verification. + * + * Returns either an `OutgoingRequest` which should be sent out, or + * `undefined` if the verification is already cancelled. + * @returns {any} + */ + cancel() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.sas_cancel(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Cancel the verification. + * + * This cancels the verification with given code (e.g. `m.user`). + * + * Returns either an `OutgoingRequest` which should be sent out, or + * `undefined` if the verification is already cancelled. + * @param {string} code + * @returns {any} + */ + cancelWithCode(code) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(code, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.sas_cancelWithCode(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Has the SAS verification flow timed out? + * @returns {boolean} + */ + timedOut() { + const ret = wasm.sas_timedOut(this.__wbg_ptr); + return ret !== 0; + } + /** + * Are we in a state where we can show the short auth string? + * @returns {boolean} + */ + canBePresented() { + const ret = wasm.sas_canBePresented(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is the SAS flow done? + * @returns {boolean} + */ + isDone() { + const ret = wasm.sas_isDone(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is the SAS flow cancelled? + * @returns {boolean} + */ + isCancelled() { + const ret = wasm.sas_isCancelled(this.__wbg_ptr); + return ret !== 0; + } + /** + * Get the emoji version of the short auth string. + * + * Returns `undefined` if we can't yet present the short auth string, + * otherwise an array of seven `Emoji` objects. + * @returns {(Emoji)[] | undefined} + */ + emoji() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.sas_emoji(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the index of the emoji representing the short auth string + * + * Returns `undefined` if we can’t yet present the short auth + * string, otherwise seven `u8` numbers in the range from 0 to 63 + * inclusive which can be converted to an emoji using [the + * relevant specification + * entry](https://spec.matrix.org/unstable/client-server-api/#sas-method-emoji). + * @returns {Uint8Array | undefined} + */ + emojiIndex() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.sas_emojiIndex(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the decimal version of the short auth string. + * + * Returns None if we can’t yet present the short auth string, + * otherwise a tuple containing three 4-digit integers that + * represent the short auth string. + * @returns {Uint16Array | undefined} + */ + decimals() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.sas_decimals(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getArrayU16FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 2, 2); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Register a callback which will be called whenever there is an update to + * the request. + * + * The `callback` is called with no parameters. + * @param {Function} callback + */ + registerChangesCallback(callback) { + wasm.sas_registerChangesCallback(this.__wbg_ptr, addHeapObject(callback)); + } +} +module.exports.Sas = Sas; + +const ServerNameFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_servername_free(ptr >>> 0)); +/** +* A Matrix-spec compliant [server name]. +* +* It consists of a host and an optional port (separated by a colon if +* present). +* +* [server name]: https://spec.matrix.org/v1.2/appendices/#server-name +*/ +class ServerName { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(ServerName.prototype); + obj.__wbg_ptr = ptr; + ServerNameFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + ServerNameFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_servername_free(ptr); + } + /** + * Parse/validate and create a new `ServerName`. + * @param {string} name + */ + constructor(name) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.servername_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Returns the host of the server name. + * + * That is: Return the part of the server before `:` or the + * full server name if there is no port. + * @returns {string} + */ + get host() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.servername_host(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Returns the port of the server name if any. + * @returns {number | undefined} + */ + get port() { + const ret = wasm.servername_port(this.__wbg_ptr); + return ret === 0xFFFFFF ? undefined : ret; + } + /** + * Returns true if and only if the server name is an IPv4 or IPv6 + * address. + * @returns {boolean} + */ + isIpLiteral() { + const ret = wasm.servername_isIpLiteral(this.__wbg_ptr); + return ret !== 0; + } +} +module.exports.ServerName = ServerName; + +const ShieldStateFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_shieldstate_free(ptr >>> 0)); +/** +* Take a look at [`matrix_sdk_common::deserialized_responses::ShieldState`] +* for more info. +*/ +class ShieldState { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(ShieldState.prototype); + obj.__wbg_ptr = ptr; + ShieldStateFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + ShieldStateFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_shieldstate_free(ptr); + } + /** + * The shield color + * @returns {ShieldColor} + */ + get color() { + const ret = wasm.__wbg_get_shieldstate_color(this.__wbg_ptr); + return ret; + } + /** + * The shield color + * @param {ShieldColor} arg0 + */ + set color(arg0) { + wasm.__wbg_set_shieldstate_color(this.__wbg_ptr, arg0); + } + /** + * Error message that can be displayed as a tooltip + * @returns {string | undefined} + */ + get message() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.shieldstate_message(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + let v1; + if (r0 !== 0) { + v1 = getStringFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +module.exports.ShieldState = ShieldState; + +const SignatureFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_signature_free(ptr >>> 0)); +/** +* Represents a potentially decoded signature (but not a validated +* one). +*/ +class Signature { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Signature.prototype); + obj.__wbg_ptr = ptr; + SignatureFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + SignatureFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_signature_free(ptr); + } + /** + * Get the Ed25519 signature, if this is one. + * @returns {Ed25519Signature | undefined} + */ + get ed25519() { + const ret = wasm.signature_ed25519(this.__wbg_ptr); + return ret === 0 ? undefined : Ed25519Signature.__wrap(ret); + } + /** + * Convert the signature to a base64 encoded string. + * @returns {string} + */ + toBase64() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.signature_toBase64(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +module.exports.Signature = Signature; + +const SignatureUploadRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_signatureuploadrequest_free(ptr >>> 0)); +/** +* Data for a request to the `/keys/signatures/upload` API endpoint +* ([specification]). +* +* Publishes cross-signing signatures for the user. +* +* [specification]: https://spec.matrix.org/unstable/client-server-api/#post_matrixclientv3keyssignaturesupload +*/ +class SignatureUploadRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(SignatureUploadRequest.prototype); + obj.__wbg_ptr = ptr; + SignatureUploadRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + SignatureUploadRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_signatureuploadrequest_free(ptr); + } + /** + * The request ID. + * Some signature upload will have to an `id` field, some won't. + * They have one when they are created automatically during an interactive + * verification, otherwise they don't. + * @returns {string | undefined} + */ + get id() { + const ret = wasm.__wbg_get_signatureuploadrequest_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A JSON-encoded string containing the payload of the request + * + * It represents the body of the HTTP request. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_signatureuploadrequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `SignatureUploadRequest`. + * @param {string} id + * @param {string} signed_keys + */ + constructor(id, signed_keys) { + const ret = wasm.signatureuploadrequest_new(addHeapObject(id), addHeapObject(signed_keys)); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Get its request type. + * @returns {RequestType} + */ + get type() { + const ret = wasm.signatureuploadrequest_type(this.__wbg_ptr); + return ret; + } +} +module.exports.SignatureUploadRequest = SignatureUploadRequest; + +const SignatureVerificationFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_signatureverification_free(ptr >>> 0)); +/** +* The result of a signature verification of a signed JSON object. +*/ +class SignatureVerification { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(SignatureVerification.prototype); + obj.__wbg_ptr = ptr; + SignatureVerificationFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + SignatureVerificationFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_signatureverification_free(ptr); + } + /** + * Give the backup signature state from the current device. + * See SignatureState for values + * @returns {SignatureState} + */ + get deviceState() { + const ret = wasm.signatureverification_deviceState(this.__wbg_ptr); + return ret; + } + /** + * Give the backup signature state from the current user identity. + * See SignatureState for values + * @returns {SignatureState} + */ + get userState() { + const ret = wasm.signatureverification_userState(this.__wbg_ptr); + return ret; + } + /** + * Is the result considered to be trusted? + * + * This tells us if the result has a valid signature from any of the + * following: + * + * * Our own device + * * Our own user identity, provided the identity is trusted as well + * * Any of our own devices, provided the device is trusted as well + * @returns {boolean} + */ + trusted() { + const ret = wasm.signatureverification_trusted(this.__wbg_ptr); + return ret !== 0; + } +} +module.exports.SignatureVerification = SignatureVerification; + +const SignaturesFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_signatures_free(ptr >>> 0)); +/** +* A collection of `Signature`. +*/ +class Signatures { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Signatures.prototype); + obj.__wbg_ptr = ptr; + SignaturesFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + SignaturesFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_signatures_free(ptr); + } + /** + * Creates a new, empty, signatures collection. + */ + constructor() { + const ret = wasm.signatures_new(); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Add the given signature from the given signer and the given key ID to + * the collection. + * @param {UserId} signer + * @param {DeviceKeyId} key_id + * @param {Ed25519Signature} signature + * @returns {MaybeSignature | undefined} + */ + addSignature(signer, key_id, signature) { + _assertClass(signer, UserId); + _assertClass(key_id, DeviceKeyId); + _assertClass(signature, Ed25519Signature); + const ret = wasm.signatures_addSignature(this.__wbg_ptr, signer.__wbg_ptr, key_id.__wbg_ptr, signature.__wbg_ptr); + return ret === 0 ? undefined : MaybeSignature.__wrap(ret); + } + /** + * Try to find an Ed25519 signature from the given signer with + * the given key ID. + * @param {UserId} signer + * @param {DeviceKeyId} key_id + * @returns {Ed25519Signature | undefined} + */ + getSignature(signer, key_id) { + _assertClass(signer, UserId); + _assertClass(key_id, DeviceKeyId); + const ret = wasm.signatures_getSignature(this.__wbg_ptr, signer.__wbg_ptr, key_id.__wbg_ptr); + return ret === 0 ? undefined : Ed25519Signature.__wrap(ret); + } + /** + * Get the map of signatures that belong to the given user. + * @param {UserId} signer + * @returns {Map | undefined} + */ + get(signer) { + _assertClass(signer, UserId); + const ret = wasm.signatures_get(this.__wbg_ptr, signer.__wbg_ptr); + return takeObject(ret); + } + /** + * Remove all the signatures we currently hold. + */ + clear() { + wasm.signatures_clear(this.__wbg_ptr); + } + /** + * Do we hold any signatures or is our collection completely + * empty. + * @returns {boolean} + */ + isEmpty() { + const ret = wasm.signatures_isEmpty(this.__wbg_ptr); + return ret !== 0; + } + /** + * How many signatures do we currently hold. + * @returns {number} + */ + get count() { + const ret = wasm.signatures_count(this.__wbg_ptr); + return ret >>> 0; + } + /** + * Get the json with all signatures + * @returns {string} + */ + asJSON() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.signatures_asJSON(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +module.exports.Signatures = Signatures; + +const StoreHandleFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_storehandle_free(ptr >>> 0)); +/** +* A struct containing an open connection to a CryptoStore. +* +* Opening the CryptoStore can take some time, due to the PBKDF calculation +* involved, so if multiple operations are being done on the same store, it is +* more efficient to open it once. +*/ +class StoreHandle { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(StoreHandle.prototype); + obj.__wbg_ptr = ptr; + StoreHandleFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + StoreHandleFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_storehandle_free(ptr); + } + /** + * Open a crypto store. + * + * The created store will be based on IndexedDB if a `store_name` is + * provided; otherwise it will be based on a memory store and once the + * objects is dropped, the keys will be lost. + * + * # Arguments + * + * + * * `store_name` - The name that should be used to open the IndexedDB + * based database. If this isn't provided, a memory-only store will be + * used. *Note* the memory-only store will lose your E2EE keys when the + * `StoreHandle` gets dropped. + * + * * `store_passphrase` - The passphrase that should be used to encrypt the + * store, for IndexedDB-based stores + * @param {string | undefined} [store_name] + * @param {string | undefined} [store_passphrase] + * @returns {Promise} + */ + static open(store_name, store_passphrase) { + var ptr0 = isLikeNone(store_name) ? 0 : passStringToWasm0(store_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(store_passphrase) ? 0 : passStringToWasm0(store_passphrase, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + const ret = wasm.storehandle_open(ptr0, len0, ptr1, len1); + return takeObject(ret); + } +} +module.exports.StoreHandle = StoreHandle; + +const ToDeviceRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_todevicerequest_free(ptr >>> 0)); +/** +* Data for a request to the `/sendToDevice` API endpoint +* ([specification]). +* +* Send an event to a single device or to a group of devices. +* +* [specification]: https://spec.matrix.org/unstable/client-server-api/#put_matrixclientv3sendtodeviceeventtypetxnid +*/ +class ToDeviceRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(ToDeviceRequest.prototype); + obj.__wbg_ptr = ptr; + ToDeviceRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + ToDeviceRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_todevicerequest_free(ptr); + } + /** + * The request ID. + * For to-device request this would be the same value as `txn_id`. It is + * exposed also as `id` so that the js bindings are consistent with the + * other request types by using this field to mark as sent. + * @returns {string} + */ + get id() { + const ret = wasm.__wbg_get_todevicerequest_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A string representing the type of event being sent to each devices. + * @returns {string} + */ + get event_type() { + const ret = wasm.__wbg_get_todevicerequest_event_type(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A string representing a request identifier unique to the access token + * used to send the request. + * @returns {string} + */ + get txn_id() { + const ret = wasm.__wbg_get_todevicerequest_txn_id(this.__wbg_ptr); + return takeObject(ret); + } + /** + * A JSON-encoded string containing the rest of the payload: `messages`. + * + * It represents the body of the HTTP request. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_todevicerequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `ToDeviceRequest`. + * @param {string} id + * @param {string} event_type + * @param {string} txn_id + * @param {string} body + */ + constructor(id, event_type, txn_id, body) { + const ret = wasm.todevicerequest_new(addHeapObject(id), addHeapObject(event_type), addHeapObject(txn_id), addHeapObject(body)); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Get its request type. + * @returns {RequestType} + */ + get type() { + const ret = wasm.todevicerequest_type(this.__wbg_ptr); + return ret; + } +} +module.exports.ToDeviceRequest = ToDeviceRequest; + +const TracingFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_tracing_free(ptr >>> 0)); +/** +* Type to install and to manipulate the tracing layer. +*/ +class Tracing { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + TracingFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_tracing_free(ptr); + } + /** + * Check whether the `tracing` feature has been enabled. + * + * @deprecated: `tracing` is now always enabled. + * @returns {boolean} + */ + static isAvailable() { + const ret = wasm.tracing_isAvailable(); + return ret !== 0; + } + /** + * Install the tracing layer. + * @param {LoggerLevel} min_level + */ + constructor(min_level) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.tracing_new(retptr, min_level); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Re-define the minimum logger level. + * @param {LoggerLevel} min_level + */ + set minLevel(min_level) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.tracing_set_minLevel(retptr, this.__wbg_ptr, min_level); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Turn the logger on, i.e. it emits logs again if it was turned + * off. + */ + turnOn() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.tracing_turnOn(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Turn the logger off, i.e. it no longer emits logs. + */ + turnOff() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.tracing_turnOff(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} +module.exports.Tracing = Tracing; + +const UploadSigningKeysRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_uploadsigningkeysrequest_free(ptr >>> 0)); +/** +* Other Requests * +* Request that will publish a cross signing identity. +* +* This uploads the public cross signing key triplet. +*/ +class UploadSigningKeysRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(UploadSigningKeysRequest.prototype); + obj.__wbg_ptr = ptr; + UploadSigningKeysRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + UploadSigningKeysRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_uploadsigningkeysrequest_free(ptr); + } + /** + * A JSON-encoded string containing the rest of the payload: `master_key`, + * `self_signing_key`, `user_signing_key`. + * + * It represents the body of the HTTP request. + * @returns {string} + */ + get body() { + const ret = wasm.__wbg_get_uploadsigningkeysrequest_body(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a new `UploadSigningKeysRequest`. + * @param {string} body + */ + constructor(body) { + const ret = wasm.uploadsigningkeysrequest_new(addHeapObject(body)); + this.__wbg_ptr = ret >>> 0; + return this; + } +} +module.exports.UploadSigningKeysRequest = UploadSigningKeysRequest; + +const UserDevicesFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_userdevices_free(ptr >>> 0)); +/** +* A read only view over all devices belonging to a user. +*/ +class UserDevices { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(UserDevices.prototype); + obj.__wbg_ptr = ptr; + UserDevicesFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + UserDevicesFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_userdevices_free(ptr); + } + /** + * Get the specific device with the given device ID. + * @param {DeviceId} device_id + * @returns {Device | undefined} + */ + get(device_id) { + _assertClass(device_id, DeviceId); + const ret = wasm.userdevices_get(this.__wbg_ptr, device_id.__wbg_ptr); + return ret === 0 ? undefined : Device.__wrap(ret); + } + /** + * Returns true if there is at least one devices of this user + * that is considered to be verified, false otherwise. + * + * This won't consider your own device as verified, as your own + * device is always implicitly verified. + * @returns {boolean} + */ + isAnyVerified() { + const ret = wasm.userdevices_isAnyVerified(this.__wbg_ptr); + return ret !== 0; + } + /** + * Array over all the device IDs of the user devices. + * @returns {Array} + */ + keys() { + const ret = wasm.userdevices_keys(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Iterator over all the devices of the user devices. + * @returns {Array} + */ + devices() { + const ret = wasm.userdevices_devices(this.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.UserDevices = UserDevices; + +const UserIdFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_userid_free(ptr >>> 0)); +/** +* A Matrix [user ID]. +* +* [user ID]: https://spec.matrix.org/v1.2/appendices/#user-identifiers +*/ +class UserId { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(UserId.prototype); + obj.__wbg_ptr = ptr; + UserIdFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + static __unwrap(jsValue) { + if (!(jsValue instanceof UserId)) { + return 0; + } + return jsValue.__destroy_into_raw(); + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + UserIdFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_userid_free(ptr); + } + /** + * Parse/validate and create a new `UserId`. + * @param {string} id + */ + constructor(id) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.userid_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Returns the user's localpart. + * @returns {string} + */ + get localpart() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.userid_localpart(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Returns the server name of the user ID. + * @returns {ServerName} + */ + get serverName() { + const ret = wasm.userid_serverName(this.__wbg_ptr); + return ServerName.__wrap(ret); + } + /** + * Whether this user ID is a historical one. + * + * A historical user ID is one that doesn't conform to the latest + * specification of the user ID grammar but is still accepted + * because it was previously allowed. + * @returns {boolean} + */ + isHistorical() { + const ret = wasm.userid_isHistorical(this.__wbg_ptr); + return ret !== 0; + } + /** + * Return the user ID as a string. + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.userid_toString(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Create a clone of this `UserId`. + * + * This can be useful when passing a `UserId` instance to methods such as + * {@link OlmMachine.updateTrackedUsers} which destroy the instance. + * @returns {UserId} + */ + clone() { + const ret = wasm.userid_clone(this.__wbg_ptr); + return UserId.__wrap(ret); + } +} +module.exports.UserId = UserId; + +const UserIdentityFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_useridentity_free(ptr >>> 0)); +/** +* Struct representing a cross signing identity of a user. +* +* This is the user identity of a user that isn't our own. Other users will +* only contain a master key and a self signing key, meaning that only device +* signatures can be checked with this identity. +* +* This struct wraps a read-only version of the struct and allows verifications +* to be requested to verify our own device with the user identity. +*/ +class UserIdentity { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(UserIdentity.prototype); + obj.__wbg_ptr = ptr; + UserIdentityFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + UserIdentityFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_useridentity_free(ptr); + } + /** + * Is this user identity verified? + * @returns {boolean} + */ + isVerified() { + const ret = wasm.useridentity_isVerified(this.__wbg_ptr); + return ret !== 0; + } + /** + * Manually verify this user. + * + * This method will attempt to sign the user identity using our private + * cross signing key. + * + * This method fails if we don't have the private part of our user-signing + * key. + * + * Returns a request that needs to be sent out for the user to be marked as + * verified. + * @returns {Promise} + */ + verify() { + const ret = wasm.useridentity_verify(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Create a `VerificationRequest` object after the verification + * request content has been sent out. + * @param {RoomId} room_id + * @param {EventId} request_event_id + * @param {any[] | undefined} [methods] + * @returns {Promise} + */ + requestVerification(room_id, request_event_id, methods) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(room_id, RoomId); + _assertClass(request_event_id, EventId); + var ptr0 = isLikeNone(methods) ? 0 : passArrayJsValueToWasm0(methods, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.useridentity_requestVerification(retptr, this.__wbg_ptr, room_id.__wbg_ptr, request_event_id.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Send a verification request to the given user. + * + * The returned content needs to be sent out into a DM room with the given + * user. + * + * After the content has been sent out a VerificationRequest can be started + * with the `request_verification` method. + * @param {any[] | undefined} [methods] + * @returns {Promise} + */ + verificationRequestContent(methods) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + var ptr0 = isLikeNone(methods) ? 0 : passArrayJsValueToWasm0(methods, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.useridentity_verificationRequestContent(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the master key of the identity. + * @returns {string} + */ + get masterKey() { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.useridentity_masterKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } + } + /** + * Get the self-signing key of the identity. + * @returns {string} + */ + get selfSigningKey() { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.useridentity_selfSigningKey(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } + } +} +module.exports.UserIdentity = UserIdentity; + +const VerificationRequestFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_verificationrequest_free(ptr >>> 0)); +/** +* An object controlling key verification requests. +* +* Interactive verification flows usually start with a verification +* request, this object lets you send and reply to such a +* verification request. +* +* After the initial handshake the verification flow transitions into +* one of the verification methods. +*/ +class VerificationRequest { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(VerificationRequest.prototype); + obj.__wbg_ptr = ptr; + VerificationRequestFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + VerificationRequestFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_verificationrequest_free(ptr); + } + /** + * Create an event content that can be sent as a room event to + * request verification from the other side. This should be used + * only for verifications of other users and it should be sent to + * a room we consider to be a DM with the other user. + * @param {UserId} own_user_id + * @param {DeviceId} own_device_id + * @param {UserId} other_user_id + * @param {any[] | undefined} [methods] + * @returns {string} + */ + static request(own_user_id, own_device_id, other_user_id, methods) { + let deferred3_0; + let deferred3_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(own_user_id, UserId); + _assertClass(own_device_id, DeviceId); + _assertClass(other_user_id, UserId); + var ptr0 = isLikeNone(methods) ? 0 : passArrayJsValueToWasm0(methods, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.verificationrequest_request(retptr, own_user_id.__wbg_ptr, own_device_id.__wbg_ptr, other_user_id.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr2 = r0; + var len2 = r1; + if (r3) { + ptr2 = 0; len2 = 0; + throw takeObject(r2); + } + deferred3_0 = ptr2; + deferred3_1 = len2; + return getStringFromWasm0(ptr2, len2); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred3_0, deferred3_1, 1); + } + } + /** + * Our own user id. + * @returns {UserId} + */ + get ownUserId() { + const ret = wasm.verificationrequest_ownUserId(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * The ID of the other user that is participating in this + * verification request. + * @returns {UserId} + */ + get otherUserId() { + const ret = wasm.verificationrequest_otherUserId(this.__wbg_ptr); + return UserId.__wrap(ret); + } + /** + * The ID of the other device that is participating in this + * verification. + * @returns {DeviceId | undefined} + */ + get otherDeviceId() { + const ret = wasm.verificationrequest_otherDeviceId(this.__wbg_ptr); + return ret === 0 ? undefined : DeviceId.__wrap(ret); + } + /** + * Get the room ID if the verification is happening inside a + * room. + * @returns {RoomId | undefined} + */ + get roomId() { + const ret = wasm.verificationrequest_roomId(this.__wbg_ptr); + return ret === 0 ? undefined : RoomId.__wrap(ret); + } + /** + * Get info about the cancellation if the verification request + * has been cancelled. + * @returns {CancelInfo | undefined} + */ + get cancelInfo() { + const ret = wasm.verificationrequest_cancelInfo(this.__wbg_ptr); + return ret === 0 ? undefined : CancelInfo.__wrap(ret); + } + /** + * Has the verification request been answered by another device? + * @returns {boolean} + */ + isPassive() { + const ret = wasm.verificationrequest_isPassive(this.__wbg_ptr); + return ret !== 0; + } + /** + * Is the verification request ready to start a verification flow? + * @returns {boolean} + */ + isReady() { + const ret = wasm.verificationrequest_isReady(this.__wbg_ptr); + return ret !== 0; + } + /** + * Has the verification flow timed out? + * @returns {boolean} + */ + timedOut() { + const ret = wasm.verificationrequest_timedOut(this.__wbg_ptr); + return ret !== 0; + } + /** + * The number of milliseconds remaining before this verification flow times + * out. + * + * Returns zero if the time has already passed. + * @returns {number} + */ + timeRemainingMillis() { + const ret = wasm.verificationrequest_timeRemainingMillis(this.__wbg_ptr); + return ret; + } + /** + * Get the supported verification methods of the other side. + * + * Will be present only if the other side requested the + * verification or if we’re in the ready state. + * + * # Returns + * + * `undefined` if we do not yet know the supported methods; otherwise, an + * array of `VerificationMethod`s. + * @returns {any[] | undefined} + */ + get theirSupportedMethods() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.verificationrequest_theirSupportedMethods(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get our own supported verification methods that we advertised. + * + * Will be present only we requested the verification or if we’re + * in the ready state. + * @returns {any[] | undefined} + */ + get ourSupportedMethods() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.verificationrequest_ourSupportedMethods(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + let v1; + if (r0 !== 0) { + v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + } + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the unique ID of this verification request. + * @returns {string} + */ + get flowId() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.verificationrequest_flowId(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Is this a verification that is verifying one of our own + * devices? + * @returns {boolean} + */ + isSelfVerification() { + const ret = wasm.verificationrequest_isSelfVerification(this.__wbg_ptr); + return ret !== 0; + } + /** + * Did we initiate the verification request? + * @returns {boolean} + */ + weStarted() { + const ret = wasm.verificationrequest_weStarted(this.__wbg_ptr); + return ret !== 0; + } + /** + * Has the verification flow that was started with this request + * finished? + * @returns {boolean} + */ + isDone() { + const ret = wasm.verificationrequest_isDone(this.__wbg_ptr); + return ret !== 0; + } + /** + * Get the current phase of this request. + * + * Returns a `VerificationRequestPhase`. + * @returns {VerificationRequestPhase} + */ + phase() { + const ret = wasm.verificationrequest_phase(this.__wbg_ptr); + return ret; + } + /** + * If this request has transitioned into a concrete verification + * flow (and not yet been completed or cancelled), returns a `Verification` + * object. + * + * Returns: a `Sas`, a `Qr`, or `undefined`. + * @returns {any} + */ + getVerification() { + const ret = wasm.verificationrequest_getVerification(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Register a callback which will be called whenever there is an update to + * the request. + * + * The `callback` is called with no parameters. + * @param {Function} callback + */ + registerChangesCallback(callback) { + wasm.verificationrequest_registerChangesCallback(this.__wbg_ptr, addHeapObject(callback)); + } + /** + * Has the verification flow that was started with this request + * been cancelled? + * @returns {boolean} + */ + isCancelled() { + const ret = wasm.verificationrequest_isCancelled(this.__wbg_ptr); + return ret !== 0; + } + /** + * Accept the verification request signaling that our client + * supports the given verification methods. + * + * `methods` represents the methods that we should advertise as + * supported by us. + * + * It returns either a `ToDeviceRequest`, a `RoomMessageRequest` + * or `undefined`. + * @param {any[]} methods + * @returns {any} + */ + acceptWithMethods(methods) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArrayJsValueToWasm0(methods, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.verificationrequest_acceptWithMethods(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Accept the verification request. + * + * This method will accept the request and signal that it + * supports the `m.sas.v1`, the `m.qr_code.show.v1`, and + * `m.reciprocate.v1` method. + * + * `m.qr_code.show.v1` will only be signaled if the `qrcode` + * feature is enabled. This feature is disabled by default. If + * it's enabled and QR code scanning should be supported or QR + * code showing shouldn't be supported the `accept_with_methods` + * method should be used instead. + * + * It returns either a `ToDeviceRequest`, a `RoomMessageRequest` + * or `undefined`. + * @returns {any} + */ + accept() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.verificationrequest_accept(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Cancel the verification request. + * + * It returns either a `ToDeviceRequest`, a `RoomMessageRequest` + * or `undefined`. + * @returns {any} + */ + cancel() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.verificationrequest_cancel(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Transition from this verification request into a SAS verification flow. + * + * Returns `Promise<[Sas, RoomMessageRequest|ToDeviceRequest] | undefined>` + * @returns {Promise} + */ + startSas() { + const ret = wasm.verificationrequest_startSas(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Generate a QR code that can be used by another client to start + * a QR code based verification. + * + * Returns a `Qr` or `undefined`. + * @returns {Promise} + */ + generateQrCode() { + const ret = wasm.verificationrequest_generateQrCode(this.__wbg_ptr); + return takeObject(ret); + } + /** + * Start a QR code verification by providing a scanned QR code + * for this verification flow. + * @param {QrCodeScan} data + * @returns {Promise} + */ + scanQrCode(data) { + _assertClass(data, QrCodeScan); + const ret = wasm.verificationrequest_scanQrCode(this.__wbg_ptr, data.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.VerificationRequest = VerificationRequest; + +const VersionsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_versions_free(ptr >>> 0)); +/** +* Object containing the versions of the Rust libraries we are using. +*/ +class Versions { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(Versions.prototype); + obj.__wbg_ptr = ptr; + VersionsFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + VersionsFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_versions_free(ptr); + } + /** + * The version of the vodozemac crate. + * @returns {string} + */ + get vodozemac() { + const ret = wasm.__wbg_get_versions_vodozemac(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The version of the matrix-sdk-crypto crate. + * @returns {string} + */ + get matrix_sdk_crypto() { + const ret = wasm.__wbg_get_versions_matrix_sdk_crypto(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The Git commit hash of the crate's source tree at build time. + * @returns {string} + */ + get git_sha() { + const ret = wasm.__wbg_get_versions_git_sha(this.__wbg_ptr); + return takeObject(ret); + } + /** + * The build-time output of the `git describe` command of the source tree + * of crate. + * @returns {string} + */ + get git_description() { + const ret = wasm.__wbg_get_versions_git_description(this.__wbg_ptr); + return takeObject(ret); + } +} +module.exports.Versions = Versions; + +module.exports.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); +}; + +module.exports.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); +}; + +module.exports.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return addHeapObject(ret); +}; + +module.exports.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === undefined; + return ret; +}; + +module.exports.__wbindgen_in = function(arg0, arg1) { + const ret = getObject(arg0) in getObject(arg1); + return ret; +}; + +module.exports.__wbindgen_string_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +module.exports.__wbindgen_is_object = function(arg0) { + const val = getObject(arg0); + const ret = typeof(val) === 'object' && val !== null; + return ret; +}; + +module.exports.__wbindgen_jsval_eq = function(arg0, arg1) { + const ret = getObject(arg0) === getObject(arg1); + return ret; +}; + +module.exports.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbindgen_boolean_get = function(arg0) { + const v = getObject(arg0); + const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; + return ret; +}; + +module.exports.__wbindgen_is_bigint = function(arg0) { + const ret = typeof(getObject(arg0)) === 'bigint'; + return ret; +}; + +module.exports.__wbindgen_number_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'number' ? obj : undefined; + getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); +}; + +module.exports.__wbindgen_bigint_from_i64 = function(arg0) { + const ret = arg0; + return addHeapObject(ret); +}; + +module.exports.__wbindgen_bigint_from_u64 = function(arg0) { + const ret = BigInt.asUintN(64, arg0); + return addHeapObject(ret); +}; + +module.exports.__wbindgen_error_new = function(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); +}; + +module.exports.__wbg_pickledsession_unwrap = function(arg0) { + const ret = PickledSession.__unwrap(takeObject(arg0)); + return ret; +}; + +module.exports.__wbg_pickledinboundgroupsession_unwrap = function(arg0) { + const ret = PickledInboundGroupSession.__unwrap(takeObject(arg0)); + return ret; +}; + +module.exports.__wbg_ownuseridentity_new = function(arg0) { + const ret = OwnUserIdentity.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_useridentity_new = function(arg0) { + const ret = UserIdentity.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_roomkeycounts_new = function(arg0) { + const ret = RoomKeyCounts.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_backupkeys_new = function(arg0) { + const ret = BackupKeys.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_rehydrateddevice_new = function(arg0) { + const ret = RehydratedDevice.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_dehydrateddevice_new = function(arg0) { + const ret = DehydratedDevice.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_device_new = function(arg0) { + const ret = Device.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_userdevices_new = function(arg0) { + const ret = UserDevices.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_megolmdecryptionerror_new = function(arg0) { + const ret = MegolmDecryptionError.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_userid_new = function(arg0) { + const ret = UserId.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_deviceid_new = function(arg0) { + const ret = DeviceId.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_devicekeyid_new = function(arg0) { + const ret = DeviceKeyId.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_olmmachine_new = function(arg0) { + const ret = OlmMachine.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_crosssigningstatus_new = function(arg0) { + const ret = CrossSigningStatus.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_inboundgroupsession_new = function(arg0) { + const ret = InboundGroupSession.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_keysuploadrequest_new = function(arg0) { + const ret = KeysUploadRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_keysqueryrequest_new = function(arg0) { + const ret = KeysQueryRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_keysclaimrequest_new = function(arg0) { + const ret = KeysClaimRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_todevicerequest_new = function(arg0) { + const ret = ToDeviceRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_signatureuploadrequest_new = function(arg0) { + const ret = SignatureUploadRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_roommessagerequest_new = function(arg0) { + const ret = RoomMessageRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_keysbackuprequest_new = function(arg0) { + const ret = KeysBackupRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_putdehydrateddevicerequest_new = function(arg0) { + const ret = PutDehydratedDeviceRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_crosssigningbootstraprequests_new = function(arg0) { + const ret = CrossSigningBootstrapRequests.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_decryptedroomevent_new = function(arg0) { + const ret = DecryptedRoomEvent.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_encryptioninfo_new = function(arg0) { + const ret = EncryptionInfo.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_storehandle_new = function(arg0) { + const ret = StoreHandle.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_crosssigningkeyexport_new = function(arg0) { + const ret = CrossSigningKeyExport.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_roomkeyinfo_new = function(arg0) { + const ret = RoomKeyInfo.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_signatures_new = function(arg0) { + const ret = Signatures.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_maybesignature_new = function(arg0) { + const ret = MaybeSignature.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_signatureverification_new = function(arg0) { + const ret = SignatureVerification.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_roomkeyimportresult_new = function(arg0) { + const ret = RoomKeyImportResult.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_roomsettings_new = function(arg0) { + const ret = RoomSettings.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_sas_new = function(arg0) { + const ret = Sas.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_qr_new = function(arg0) { + const ret = Qr.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_emoji_new = function(arg0) { + const ret = Emoji.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_verificationrequest_new = function(arg0) { + const ret = VerificationRequest.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_devicekey_new = function(arg0) { + const ret = DeviceKey.__wrap(arg0); + return addHeapObject(ret); +}; + +module.exports.__wbg_userid_unwrap = function(arg0) { + const ret = UserId.__unwrap(takeObject(arg0)); + return ret; +}; + +module.exports.__wbg_roomid_unwrap = function(arg0) { + const ret = RoomId.__unwrap(takeObject(arg0)); + return ret; +}; + +module.exports.__wbindgen_try_into_number = function(arg0) { + let result; +try { result = +getObject(arg0) } catch (e) { result = e } +const ret = result; +return addHeapObject(ret); +}; + +module.exports.__wbg_new_abda76e883ba8a5f = function() { + const ret = new Error(); + return addHeapObject(ret); +}; + +module.exports.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +module.exports.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } +}; + +module.exports.__wbindgen_cb_drop = function(arg0) { + const obj = takeObject(arg0).original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + return ret; +}; + +module.exports.__wbindgen_is_null = function(arg0) { + const ret = getObject(arg0) === null; + return ret; +}; + +module.exports.__wbindgen_jsval_loose_eq = function(arg0, arg1) { + const ret = getObject(arg0) == getObject(arg1); + return ret; +}; + +module.exports.__wbindgen_as_number = function(arg0) { + const ret = +getObject(arg0); + return ret; +}; + +module.exports.__wbg_String_b9412f8799faab3e = function(arg0, arg1) { + const ret = String(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +module.exports.__wbg_getwithrefkey_edc2c8960f0f1191 = function(arg0, arg1) { + const ret = getObject(arg0)[getObject(arg1)]; + return addHeapObject(ret); +}; + +module.exports.__wbg_set_f975102236d3c502 = function(arg0, arg1, arg2) { + getObject(arg0)[takeObject(arg1)] = takeObject(arg2); +}; + +module.exports.__wbg_Window_4c97c099b03994c2 = function(arg0) { + const ret = getObject(arg0).Window; + return addHeapObject(ret); +}; + +module.exports.__wbg_WorkerGlobalScope_b87d69ab991859f6 = function(arg0) { + const ret = getObject(arg0).WorkerGlobalScope; + return addHeapObject(ret); +}; + +module.exports.__wbg_global_c22c39d5b60f622c = function(arg0) { + const ret = getObject(arg0).global; + return addHeapObject(ret); +}; + +module.exports.__wbg_indexedDB_f50e4ba5302a87c6 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).indexedDB; + return isLikeNone(ret) ? 0 : addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_String_88810dfeb4021902 = function(arg0, arg1) { + const ret = String(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +module.exports.__wbg_getwithrefkey_5e6d9547403deab8 = function(arg0, arg1) { + const ret = getObject(arg0)[getObject(arg1)]; + return addHeapObject(ret); +}; + +module.exports.__wbg_debug_d38cb52bf10ed549 = function(arg0, arg1) { + getObject(arg0).debug(getObject(arg1)); +}; + +module.exports.__wbg_info_91b7c811ac298019 = function(arg0, arg1) { + getObject(arg0).info(getObject(arg1)); +}; + +module.exports.__wbg_warn_036ee814e500dd31 = function(arg0, arg1) { + getObject(arg0).warn(getObject(arg1)); +}; + +module.exports.__wbg_error_68c9b37cbadeb5e7 = function(arg0, arg1) { + getObject(arg0).error(getObject(arg1)); +}; + +module.exports.__wbg_queueMicrotask_481971b0d87f3dd4 = function(arg0) { + queueMicrotask(getObject(arg0)); +}; + +module.exports.__wbg_queueMicrotask_3cbae2ec6b6cd3d6 = function(arg0) { + const ret = getObject(arg0).queueMicrotask; + return addHeapObject(ret); +}; + +module.exports.__wbindgen_is_function = function(arg0) { + const ret = typeof(getObject(arg0)) === 'function'; + return ret; +}; + +module.exports.__wbg_clearTimeout_541ac0980ffcef74 = function(arg0) { + const ret = clearTimeout(takeObject(arg0)); + return addHeapObject(ret); +}; + +module.exports.__wbg_setTimeout_7d81d052875b0f4f = function() { return handleError(function (arg0, arg1) { + const ret = setTimeout(getObject(arg0), arg1); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_indexedDB_7c51d9056667f4e0 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).indexedDB; + return isLikeNone(ret) ? 0 : addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_debug_5fb96680aecf5dc8 = function(arg0) { + console.debug(getObject(arg0)); +}; + +module.exports.__wbg_error_8e3928cfb8a43e2b = function(arg0) { + console.error(getObject(arg0)); +}; + +module.exports.__wbg_info_530a29cb2e4e3304 = function(arg0) { + console.info(getObject(arg0)); +}; + +module.exports.__wbg_warn_63bbae1730aead09 = function(arg0) { + console.warn(getObject(arg0)); +}; + +module.exports.__wbg_indexedDB_d312f95759a15fdc = function() { return handleError(function (arg0) { + const ret = getObject(arg0).indexedDB; + return isLikeNone(ret) ? 0 : addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_add_1dac52a28ed73a3a = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).add(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_clear_b4570827d1866b70 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).clear(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_count_58c6ff5f27ecc3ae = function() { return handleError(function (arg0) { + const ret = getObject(arg0).count(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_createIndex_d786564b37de8e73 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + const ret = getObject(arg0).createIndex(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_delete_f60bba7d0ae59a4f = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).delete(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_get_5361b64cac0d0826 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).get(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_getAll_b0220bb36d03e1ca = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).getAll(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_getAllKeys_efcb2539294e25ef = function() { return handleError(function (arg0) { + const ret = getObject(arg0).getAllKeys(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_index_383b6812c1508030 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).index(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_openCursor_30d58ae27a327629 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).openCursor(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_openCursor_611b1e488c393dd8 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).openCursor(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_put_22792e17580ca18b = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).put(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_name_ad77fa16ecd61496 = function(arg0, arg1) { + const ret = getObject(arg1).name; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +module.exports.__wbg_message_c539585471131985 = function(arg0, arg1) { + const ret = getObject(arg1).message; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +module.exports.__wbg_code_bddcff79610894cf = function(arg0) { + const ret = getObject(arg0).code; + return ret; +}; + +module.exports.__wbg_newwithmessage_1d1e1d949e9544ac = function() { return handleError(function (arg0, arg1) { + const ret = new DOMException(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_target_2fc177e386c8b7b0 = function(arg0) { + const ret = getObject(arg0).target; + return isLikeNone(ret) ? 0 : addHeapObject(ret); +}; + +module.exports.__wbg_key_7a534de95a1f5fbf = function() { return handleError(function (arg0) { + const ret = getObject(arg0).key; + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_continue_f1c3e0815924de62 = function() { return handleError(function (arg0) { + getObject(arg0).continue(); +}, arguments) }; + +module.exports.__wbg_delete_21feb1c8d3ec008f = function() { return handleError(function (arg0) { + const ret = getObject(arg0).delete(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_update_e3809a2f181f4e30 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).update(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_bound_ce324390556f056d = function() { return handleError(function (arg0, arg1) { + const ret = IDBKeyRange.bound(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_lowerBound_e77f6e14cb69151e = function() { return handleError(function (arg0, arg1) { + const ret = IDBKeyRange.lowerBound(getObject(arg0), arg1 !== 0); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_count_33e33b561d09c064 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).count(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_get_d78ddae222eedf30 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).get(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_getAll_5d06335f9c967efc = function() { return handleError(function (arg0) { + const ret = getObject(arg0).getAll(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_openCursor_425aba9cbe1d4d39 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).openCursor(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_setonblocked_eb1032a3dfaabd1c = function(arg0, arg1) { + getObject(arg0).onblocked = getObject(arg1); +}; + +module.exports.__wbg_setonupgradeneeded_ad7645373c7d5e1b = function(arg0, arg1) { + getObject(arg0).onupgradeneeded = getObject(arg1); +}; + +module.exports.__wbg_result_6cedf5f78600a79c = function() { return handleError(function (arg0) { + const ret = getObject(arg0).result; + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_error_685b20024dc2d6ca = function() { return handleError(function (arg0) { + const ret = getObject(arg0).error; + return isLikeNone(ret) ? 0 : addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_readyState_f8d58cc9e9c4f906 = function(arg0) { + const ret = getObject(arg0).readyState; + return addHeapObject(ret); +}; + +module.exports.__wbg_setonsuccess_632ce0a1460455c2 = function(arg0, arg1) { + getObject(arg0).onsuccess = getObject(arg1); +}; + +module.exports.__wbg_setonerror_8479b33e7568a904 = function(arg0, arg1) { + getObject(arg0).onerror = getObject(arg1); +}; + +module.exports.__wbg_setonabort_523135fd9168ae8b = function(arg0, arg1) { + getObject(arg0).onabort = getObject(arg1); +}; + +module.exports.__wbg_setoncomplete_d8e4236665cbf1e2 = function(arg0, arg1) { + getObject(arg0).oncomplete = getObject(arg1); +}; + +module.exports.__wbg_setonerror_da071ec94e148397 = function(arg0, arg1) { + getObject(arg0).onerror = getObject(arg1); +}; + +module.exports.__wbg_objectStore_da468793bd9df17b = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).objectStore(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_value_86d3334f5075b232 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).value; + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_oldVersion_62bad07a4720a82d = function(arg0) { + const ret = getObject(arg0).oldVersion; + return ret; +}; + +module.exports.__wbg_item_87130eb4d38ecdc5 = function(arg0, arg1, arg2) { + const ret = getObject(arg1).item(arg2 >>> 0); + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +module.exports.__wbg_version_7406e3f97ae69966 = function(arg0) { + const ret = getObject(arg0).version; + return ret; +}; + +module.exports.__wbg_objectStoreNames_588b5924274239fd = function(arg0) { + const ret = getObject(arg0).objectStoreNames; + return addHeapObject(ret); +}; + +module.exports.__wbg_setonversionchange_af0457acbb949df2 = function(arg0, arg1) { + getObject(arg0).onversionchange = getObject(arg1); +}; + +module.exports.__wbg_close_6bfe4ca2fe67cb67 = function(arg0) { + getObject(arg0).close(); +}; + +module.exports.__wbg_createObjectStore_882f2f6b1b1ef040 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).createObjectStore(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_deleteObjectStore_1732efdd0f8a351d = function() { return handleError(function (arg0, arg1, arg2) { + getObject(arg0).deleteObjectStore(getStringFromWasm0(arg1, arg2)); +}, arguments) }; + +module.exports.__wbg_transaction_1e282a79e9bb7387 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).transaction(getStringFromWasm0(arg1, arg2), takeObject(arg3)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_transaction_b39e2665b40b6324 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).transaction(getObject(arg1), takeObject(arg2)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_open_f0d7259fd7e689ce = function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), arg3 >>> 0); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_open_a05198d687357536 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_now_4e659b3d15f470d9 = function(arg0) { + const ret = getObject(arg0).now(); + return ret; +}; + +module.exports.__wbg_crypto_d05b68a3572bb8ca = function(arg0) { + const ret = getObject(arg0).crypto; + return addHeapObject(ret); +}; + +module.exports.__wbg_process_b02b3570280d0366 = function(arg0) { + const ret = getObject(arg0).process; + return addHeapObject(ret); +}; + +module.exports.__wbg_versions_c1cb42213cedf0f5 = function(arg0) { + const ret = getObject(arg0).versions; + return addHeapObject(ret); +}; + +module.exports.__wbg_node_43b1089f407e4ec2 = function(arg0) { + const ret = getObject(arg0).node; + return addHeapObject(ret); +}; + +module.exports.__wbindgen_is_string = function(arg0) { + const ret = typeof(getObject(arg0)) === 'string'; + return ret; +}; + +module.exports.__wbg_require_9a7e0f667ead4995 = function() { return handleError(function () { + const ret = undefined; + return addHeapObject(__nccwpck_require__(7818)); +}, arguments) }; + +module.exports.__wbg_msCrypto_10fc94afee92bd76 = function(arg0) { + const ret = getObject(arg0).msCrypto; + return addHeapObject(ret); +}; + +module.exports.__wbg_randomFillSync_b70ccbdf4926a99d = function() { return handleError(function (arg0, arg1) { + getObject(arg0).randomFillSync(takeObject(arg1)); +}, arguments) }; + +module.exports.__wbg_getRandomValues_7e42b4fb8779dc6d = function() { return handleError(function (arg0, arg1) { + getObject(arg0).getRandomValues(getObject(arg1)); +}, arguments) }; + +module.exports.__wbg_length_cd7af8117672b8b8 = function(arg0) { + const ret = getObject(arg0).length; + return ret; +}; + +module.exports.__wbg_new_16b304a2cfa7ff4a = function() { + const ret = new Array(); + return addHeapObject(ret); +}; + +module.exports.__wbg_newnoargs_e258087cd0daa0ea = function(arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); +}; + +module.exports.__wbg_new_d9bc3a0147634640 = function() { + const ret = new Map(); + return addHeapObject(ret); +}; + +module.exports.__wbg_next_40fc327bfc8770e6 = function(arg0) { + const ret = getObject(arg0).next; + return addHeapObject(ret); +}; + +module.exports.__wbg_value_d93c65011f51a456 = function(arg0) { + const ret = getObject(arg0).value; + return addHeapObject(ret); +}; + +module.exports.__wbg_iterator_2cee6dadfd956dfa = function() { + const ret = Symbol.iterator; + return addHeapObject(ret); +}; + +module.exports.__wbg_new_72fb9a18b5ae2624 = function() { + const ret = new Object(); + return addHeapObject(ret); +}; + +module.exports.__wbg_new_32f8dd294d1394fd = function(arg0) { + const ret = new Set(getObject(arg0)); + return addHeapObject(ret); +}; + +module.exports.__wbg_self_ce0dbfc45cf2f5be = function() { return handleError(function () { + const ret = self.self; + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_window_c6fb939a7f436783 = function() { return handleError(function () { + const ret = window.window; + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_globalThis_d1e6af4856ba331b = function() { return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_global_207b558942527489 = function() { return handleError(function () { + const ret = global.global; + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_at_c729a14f9fc27c62 = function(arg0, arg1) { + const ret = getObject(arg0).at(arg1); + return addHeapObject(ret); +}; + +module.exports.__wbg_get_bd8e338fbd5f5cc8 = function(arg0, arg1) { + const ret = getObject(arg0)[arg1 >>> 0]; + return addHeapObject(ret); +}; + +module.exports.__wbg_set_d4638f722068f043 = function(arg0, arg1, arg2) { + getObject(arg0)[arg1 >>> 0] = takeObject(arg2); +}; + +module.exports.__wbg_from_89e3fc3ba5e6fb48 = function(arg0) { + const ret = Array.from(getObject(arg0)); + return addHeapObject(ret); +}; + +module.exports.__wbg_isArray_2ab64d95e09ea0ae = function(arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; +}; + +module.exports.__wbg_push_a5b05aedc7234f9f = function(arg0, arg1) { + const ret = getObject(arg0).push(getObject(arg1)); + return ret; +}; + +module.exports.__wbg_instanceof_ArrayBuffer_836825be07d4c9d2 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof ArrayBuffer; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +module.exports.__wbg_call_27c0f87801dedf93 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_call_b3ca7c6051f9bec1 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_call_8e7cb608789c2528 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_call_938992c832f74314 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3), getObject(arg4)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_instanceof_Map_87917e0a7aaf4012 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Map; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +module.exports.__wbg_set_8417257aaedc936b = function(arg0, arg1, arg2) { + const ret = getObject(arg0).set(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); +}; + +module.exports.__wbg_entries_ce844941d0c51880 = function(arg0) { + const ret = getObject(arg0).entries(); + return addHeapObject(ret); +}; + +module.exports.__wbg_next_196c84450b364254 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).next(); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_done_298b57d23c0fc80c = function(arg0) { + const ret = getObject(arg0).done; + return ret; +}; + +module.exports.__wbg_isSafeInteger_f7b04ef02296c4d2 = function(arg0) { + const ret = Number.isSafeInteger(getObject(arg0)); + return ret; +}; + +module.exports.__wbg_getTime_2bc4375165f02d15 = function(arg0) { + const ret = getObject(arg0).getTime(); + return ret; +}; + +module.exports.__wbg_new_cf3ec55744a78578 = function(arg0) { + const ret = new Date(getObject(arg0)); + return addHeapObject(ret); +}; + +module.exports.__wbg_now_3014639a94423537 = function() { + const ret = Date.now(); + return ret; +}; + +module.exports.__wbg_entries_95cc2c823b285a09 = function(arg0) { + const ret = Object.entries(getObject(arg0)); + return addHeapObject(ret); +}; + +module.exports.__wbg_add_9124415f4aba6d98 = function(arg0, arg1) { + const ret = getObject(arg0).add(getObject(arg1)); + return addHeapObject(ret); +}; + +module.exports.__wbg_values_c0bc1cfee72c6a48 = function(arg0) { + const ret = getObject(arg0).values(); + return addHeapObject(ret); +}; + +module.exports.__wbg_instanceof_Promise_b438ddea4cacc51f = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Promise; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +module.exports.__wbg_new_81740750da40724f = function(arg0, arg1) { + try { + var state0 = {a: arg0, b: arg1}; + var cb0 = (arg0, arg1) => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_807(a, state0.b, arg0, arg1); + } finally { + state0.a = a; + } + }; + const ret = new Promise(cb0); + return addHeapObject(ret); + } finally { + state0.a = state0.b = 0; + } +}; + +module.exports.__wbg_resolve_b0083a7967828ec8 = function(arg0) { + const ret = Promise.resolve(getObject(arg0)); + return addHeapObject(ret); +}; + +module.exports.__wbg_then_0c86a60e8fcfe9f6 = function(arg0, arg1) { + const ret = getObject(arg0).then(getObject(arg1)); + return addHeapObject(ret); +}; + +module.exports.__wbg_then_a73caa9a87991566 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); +}; + +module.exports.__wbg_buffer_12d079cc21e14bdb = function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); +}; + +module.exports.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); +}; + +module.exports.__wbg_new_63b92bc8671ed464 = function(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); +}; + +module.exports.__wbg_newwithbyteoffsetandlength_a8a85013a437f95b = function(arg0, arg1, arg2) { + const ret = new Uint8ClampedArray(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); +}; + +module.exports.__wbg_new_9e7e1a3dd500a343 = function(arg0) { + const ret = new Uint8ClampedArray(getObject(arg0)); + return addHeapObject(ret); +}; + +module.exports.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6 = function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Uint8Array; + } catch (_) { + result = false; + } + const ret = result; + return ret; +}; + +module.exports.__wbg_newwithlength_e9b4878cebadb3d3 = function(arg0) { + const ret = new Uint8Array(arg0 >>> 0); + return addHeapObject(ret); +}; + +module.exports.__wbg_subarray_a1f73cd4b5b42fe1 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); +}; + +module.exports.__wbg_length_c20a40f15020d68a = function(arg0) { + const ret = getObject(arg0).length; + return ret; +}; + +module.exports.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); +}; + +module.exports.__wbg_newwithlength_49b6d8e2a8d1135c = function(arg0) { + const ret = new Uint8ClampedArray(arg0 >>> 0); + return addHeapObject(ret); +}; + +module.exports.__wbg_length_cbdddb61aff4bc24 = function(arg0) { + const ret = getObject(arg0).length; + return ret; +}; + +module.exports.__wbg_set_971b06ef901d0144 = function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); +}; + +module.exports.__wbg_parse_66d1801634e099ac = function() { return handleError(function (arg0, arg1) { + const ret = JSON.parse(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_stringify_8887fe74e1c50d81 = function() { return handleError(function (arg0) { + const ret = JSON.stringify(getObject(arg0)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_get_e3c254076557e348 = function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +module.exports.__wbg_set_1f9b04f170055d33 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); + return ret; +}, arguments) }; + +module.exports.__wbindgen_bigint_get_as_i64 = function(arg0, arg1) { + const v = getObject(arg1); + const ret = typeof(v) === 'bigint' ? v : undefined; + getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); +}; + +module.exports.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +module.exports.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; + +module.exports.__wbindgen_memory = function() { + const ret = wasm.memory; + return addHeapObject(ret); +}; + +module.exports.__wbindgen_closure_wrapper5003 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 683, __wbg_adapter_54); + return addHeapObject(ret); +}; + +module.exports.__wbindgen_closure_wrapper12279 = function(arg0, arg1, arg2) { + const ret = makeClosure(arg0, arg1, 1862, __wbg_adapter_57); + return addHeapObject(ret); +}; + +module.exports.__wbindgen_closure_wrapper12281 = function(arg0, arg1, arg2) { + const ret = makeClosure(arg0, arg1, 1862, __wbg_adapter_60); + return addHeapObject(ret); +}; + +module.exports.__wbindgen_closure_wrapper18910 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 2692, __wbg_adapter_63); + return addHeapObject(ret); +}; + +module.exports.__wbindgen_closure_wrapper19328 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 2802, __wbg_adapter_66); + return addHeapObject(ret); +}; + +// Initially, 'wasm' is set to a Proxy object which will synchronously load the WebAssembly module and +// replace 'wasm' with a reference to the exports from the wasm module. +// +// Ideally this will never get used because the application will call initAsync instead. +wasm = new Proxy( + {}, + { + get: (target, prop, receiver) => __initSync()[prop], + }, +); + +let inited = false; +const __initSync = function () { + if (inited) { + return; + } + if (initPromise) { + throw new Error("Asynchronous initialisation already in progress: cannot initialise synchronously"); + } + const bytes = unbase64(__nccwpck_require__(7073)); + const mod = new WebAssembly.Module(bytes); + const instance = new WebAssembly.Instance(mod, imports); + wasm = instance.exports; + wasm.__wbindgen_start(); + inited = true; + return wasm; +}; + +let initPromise = null; + +/** + * Load the WebAssembly module in the background, if it has not already been loaded. + * + * Returns a promise which will resolve once the other methods are ready. + * + * @returns {Promise} + */ +module.exports.initAsync = function () { + if (inited) { + return Promise.resolve(); + } + if (!initPromise) { + initPromise = Promise.resolve() + .then(() => __nccwpck_require__(7073)) + .then((b64) => WebAssembly.instantiate(unbase64(b64), imports)) + .then((result) => { + wasm = result.instance.exports; + wasm.__wbindgen_start(); + inited = true; + }); + } + return initPromise; +}; + +const b64lookup = new Uint8Array([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 62, 0, 62, 0, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 63, 0, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, +]); + +// base64 decoder, based on the code at https://developer.mozilla.org/en-US/docs/Glossary/Base64#solution_2_%E2%80%93_rewriting_atob_and_btoa_using_typedarrays_and_utf-8 +function unbase64(sBase64) { + const sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, ""); + const nInLen = sB64Enc.length; + const nOutLen = (nInLen * 3 + 1) >> 2; + const taBytes = new Uint8Array(nOutLen); + + let nMod3; + let nMod4; + let nUint24 = 0; + let nOutIdx = 0; + for (let nInIdx = 0; nInIdx < nInLen; nInIdx++) { + nMod4 = nInIdx & 3; + nUint24 |= b64lookup[sB64Enc.charCodeAt(nInIdx)] << (6 * (3 - nMod4)); + if (nMod4 === 3 || nInLen - nInIdx === 1) { + nMod3 = 0; + while (nMod3 < 3 && nOutIdx < nOutLen) { + taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255; + nMod3++; + nOutIdx++; + } + nUint24 = 0; + } + } + + return taBytes; +} + + +/***/ }), + +/***/ 7073: +/***/ ((module) => { + +module.exports = `AGFzbQEAAAABxgZaYAF/AGACf38AYAJ/fwF/YAN/f38AYAF/AX9gBH9/f38AYAN/f38Bf2AFf39/ +f38AYAABf2AEf39/fwF/YAZ/f39/f38AYAV/f39/fwF/YAd/f39/f39/AGACf34AYAh/f39/f39/ +fwBgAn9/AX5gA39/fwF+YAN/f34AYAJ/fABgBH9/fn4AYAd/f39/f39/AX9gCX9/f39/f39/fwBg +Bn9/f39/fwF/YAJ/fgF/YAN/fn4Bf2AEf39+fwBgAX8BfGAAAGADf398AGAFf39+f38AYAR/fn9/ +AGAFf39/fn8AYAR/f39+AGACfn8Bf2ADf35/AGAJf39/f39/f39/AX9gAX8BfmAFf35/fn8AYA9/ +f39/f39/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AKf39/f39/f39/fwBgAX4Bf2ADf35/AX9g +E39/f39/f39/f39/f39/f39/f38Bf2AFf35/f38AYAh/f39/f39/fwF/YAN/fH8AYAF8AX9gAAF8 +YAR/fH9/AX9gAn5/AGADf35+AGAEf3x/fwBgEX9/f39/f39/f39/f39/f39/AX9gFX9/f39/f39/ +f39/f39/f39/f39/fwF/YA1/f39/f39/f39/f39/AGALf39/f39/f39/f38AYAJ8fwF/YAh/fn9/ +f39/fwF/YAd/f39+f39/AX9gA35/fwBgBn9/fn5/fwBgBH5+f38Bf2ADf358AGAJf39/f39/fn5+ +AGADfn9/AX9gBX9/f398AX9gBH9/f3wBf2AXf39/f39/f39/f39/f39/f39/f39/f38Bf2ACfn4B +fGAGf39/f39+AGADfn9/AX5gBH9+fn4AYAF8AX5gBH9+fn8AYAZ+f39/f38BfmACf3wBf2ACfn4B +fmAFf399f38AYAR/fX9/AGAFf398f38AYAF+AX5gAAF+YAx/f39/f39/f39/f38Bf2ATf39/f39/ +f39/f39/f39/f39/fwBgGn9/f39/f39/f39/f39/f39/f39/f39/f39/AX9gDX9/f39/f39/f39/ +f38Bf2AOf39/f39/f39/f39/f38Bf2AGf35/f39/AGARf39/f39/f39/f39/f39/f38AAuxf2gEY +X193YmluZGdlbl9wbGFjZWhvbGRlcl9fFV9fd2JpbmRnZW5fc3RyaW5nX25ldwACGF9fd2JpbmRn +ZW5fcGxhY2Vob2xkZXJfXxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgAAGF9fd2JpbmRnZW5f +cGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX251bWJlcl9uZXcALxhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18XX193YmluZGdlbl9pc191bmRlZmluZWQABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18N +X193YmluZGdlbl9pbgACGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diaW5kZ2VuX3N0cmlu +Z19nZXQAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18UX193YmluZGdlbl9pc19vYmplY3QABBhf +X3diaW5kZ2VuX3BsYWNlaG9sZGVyX18TX193YmluZGdlbl9qc3ZhbF9lcQACGF9fd2JpbmRnZW5f +cGxhY2Vob2xkZXJfXxtfX3diaW5kZ2VuX29iamVjdF9jbG9uZV9yZWYABBhfX3diaW5kZ2VuX3Bs +YWNlaG9sZGVyX18WX193YmluZGdlbl9ib29sZWFuX2dldAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXxRfX3diaW5kZ2VuX2lzX2JpZ2ludAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3di +aW5kZ2VuX251bWJlcl9nZXQAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmluZGdlbl9i +aWdpbnRfZnJvbV9pNjQAKRhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmluZGdlbl9iaWdp +bnRfZnJvbV91NjQAKRhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18UX193YmluZGdlbl9lcnJvcl9u +ZXcAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfcGlja2xlZHNlc3Npb25fdW53cmFw +AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJ19fd2JnX3BpY2tsZWRpbmJvdW5kZ3JvdXBzZXNz +aW9uX3Vud3JhcAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxlfX3diZ19vd251c2VyaWRlbnRp +dHlfbmV3AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFl9fd2JnX3VzZXJpZGVudGl0eV9uZXcA +BBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18XX193Ymdfcm9vbWtleWNvdW50c19uZXcABBhfX3di +aW5kZ2VuX3BsYWNlaG9sZGVyX18UX193YmdfYmFja3Vwa2V5c19uZXcABBhfX3diaW5kZ2VuX3Bs +YWNlaG9sZGVyX18aX193YmdfcmVoeWRyYXRlZGRldmljZV9uZXcABBhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18aX193YmdfZGVoeWRyYXRlZGRldmljZV9uZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18QX193YmdfZGV2aWNlX25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diZ191 +c2VyZGV2aWNlc19uZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18fX193YmdfbWVnb2xtZGVj +cnlwdGlvbmVycm9yX25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxBfX3diZ191c2VyaWRf +bmV3AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEl9fd2JnX2RldmljZWlkX25ldwAEGF9fd2Jp +bmRnZW5fcGxhY2Vob2xkZXJfXxVfX3diZ19kZXZpY2VrZXlpZF9uZXcABBhfX3diaW5kZ2VuX3Bs +YWNlaG9sZGVyX18UX193Ymdfb2xtbWFjaGluZV9uZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVy +X18cX193YmdfY3Jvc3NzaWduaW5nc3RhdHVzX25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +Xx1fX3diZ19pbmJvdW5kZ3JvdXBzZXNzaW9uX25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XxtfX3diZ19rZXlzdXBsb2FkcmVxdWVzdF9uZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18a +X193Ymdfa2V5c3F1ZXJ5cmVxdWVzdF9uZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193 +Ymdfa2V5c2NsYWltcmVxdWVzdF9uZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18ZX193Ymdf +dG9kZXZpY2VyZXF1ZXN0X25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyBfX3diZ19zaWdu +YXR1cmV1cGxvYWRyZXF1ZXN0X25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxxfX3diZ19y +b29tbWVzc2FnZXJlcXVlc3RfbmV3AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2tl +eXNiYWNrdXByZXF1ZXN0X25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyRfX3diZ19wdXRk +ZWh5ZHJhdGVkZGV2aWNlcmVxdWVzdF9uZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18nX193 +YmdfY3Jvc3NzaWduaW5nYm9vdHN0cmFwcmVxdWVzdHNfbmV3AAQYX193YmluZGdlbl9wbGFjZWhv +bGRlcl9fHF9fd2JnX2RlY3J5cHRlZHJvb21ldmVudF9uZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18YX193YmdfZW5jcnlwdGlvbmluZm9fbmV3AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +FV9fd2JnX3N0b3JlaGFuZGxlX25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx9fX3diZ19j +cm9zc3NpZ25pbmdrZXlleHBvcnRfbmV3AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFV9fd2Jn +X3Jvb21rZXlpbmZvX25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxRfX3diZ19zaWduYXR1 +cmVzX25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxhfX3diZ19tYXliZXNpZ25hdHVyZV9u +ZXcABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18fX193Ymdfc2lnbmF0dXJldmVyaWZpY2F0aW9u +X25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx1fX3diZ19yb29ta2V5aW1wb3J0cmVzdWx0 +X25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxZfX3diZ19yb29tc2V0dGluZ3NfbmV3AAQY +X193YmluZGdlbl9wbGFjZWhvbGRlcl9fDV9fd2JnX3Nhc19uZXcABBhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18MX193YmdfcXJfbmV3AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fD19fd2JnX2Vt +b2ppX25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx1fX3diZ192ZXJpZmljYXRpb25yZXF1 +ZXN0X25ldwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxNfX3diZ19kZXZpY2VrZXlfbmV3AAQY +X193YmluZGdlbl9wbGFjZWhvbGRlcl9fE19fd2JnX3VzZXJpZF91bndyYXAABBhfX3diaW5kZ2Vu +X3BsYWNlaG9sZGVyX18TX193Ymdfcm9vbWlkX3Vud3JhcAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXxpfX3diaW5kZ2VuX3RyeV9pbnRvX251bWJlcgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XxpfX3diZ19uZXdfYWJkYTc2ZTg4M2JhOGE1ZgAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxxf +X3diZ19zdGFja182NTgyNzlmZTQ0NTQxY2Y2AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHF9f +d2JnX2Vycm9yX2Y4NTE2NjdhZjcxYmNmYzYAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18SX193 +YmluZGdlbl9jYl9kcm9wAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEl9fd2JpbmRnZW5faXNf +bnVsbAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxlfX3diaW5kZ2VuX2pzdmFsX2xvb3NlX2Vx +AAIYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFF9fd2JpbmRnZW5fYXNfbnVtYmVyABoYX193Ymlu +ZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX1N0cmluZ19iOTQxMmY4Nzk5ZmFhYjNlAAEYX193Ymlu +ZGdlbl9wbGFjZWhvbGRlcl9fJF9fd2JnX2dldHdpdGhyZWZrZXlfZWRjMmM4OTYwZjBmMTE5MQAC +GF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19zZXRfZjk3NTEwMjIzNmQzYzUwMgADGF9f +d2JpbmRnZW5fcGxhY2Vob2xkZXJfXx1fX3diZ19XaW5kb3dfNGM5N2MwOTliMDM5OTRjMgAEGF9f +d2JpbmRnZW5fcGxhY2Vob2xkZXJfXyhfX3diZ19Xb3JrZXJHbG9iYWxTY29wZV9iODdkNjlhYjk5 +MTg1OWY2AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2dsb2JhbF9jMjJjMzlkNWI2 +MGY2MjJjAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIF9fd2JnX2luZGV4ZWREQl9mNTBlNGJh +NTMwMmE4N2M2AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX1N0cmluZ184ODgxMGRm +ZWI0MDIxOTAyAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJF9fd2JnX2dldHdpdGhyZWZrZXlf +NWU2ZDk1NDc0MDNkZWFiOAACGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxxfX3diZ19kZWJ1Z19k +MzhjYjUyYmYxMGVkNTQ5AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19fd2JnX2luZm9fOTFi +N2M4MTFhYzI5ODAxOQABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ193YXJuXzAzNmVl +ODE0ZTUwMGRkMzEAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18cX193YmdfZXJyb3JfNjhjOWIz +N2NiYWRlYjVlNwABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyVfX3diZ19xdWV1ZU1pY3JvdGFz +a180ODE5NzFiMGQ4N2YzZGQ0AAAYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJV9fd2JnX3F1ZXVl +TWljcm90YXNrXzNjYmFlMmVjNmI2Y2QzZDYABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18WX193 +YmluZGdlbl9pc19mdW5jdGlvbgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyNfX3diZ19jbGVh +clRpbWVvdXRfNTQxYWMwOTgwZmZjZWY3NAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyFfX3di +Z19zZXRUaW1lb3V0XzdkODFkMDUyODc1YjBmNGYAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18g +X193YmdfaW5kZXhlZERCXzdjNTFkOTA1NjY2N2Y0ZTAABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVy +X18cX193YmdfZGVidWdfNWZiOTY2ODBhZWNmNWRjOAAAGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XxxfX3diZ19lcnJvcl84ZTM5MjhjZmI4YTQzZTJiAAAYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +G19fd2JnX2luZm9fNTMwYTI5Y2IyZTRlMzMwNAAAGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtf +X3diZ193YXJuXzYzYmJhZTE3MzBhZWFkMDkAABhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18gX193 +YmdfaW5kZXhlZERCX2QzMTJmOTU3NTlhMTVmZGMABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18a +X193YmdfYWRkXzFkYWM1MmEyOGVkNzNhM2EABhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18cX193 +YmdfY2xlYXJfYjQ1NzA4MjdkMTg2NmI3MAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxxfX3di +Z19jb3VudF81OGM2ZmY1ZjI3ZWNjM2FlAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIl9fd2Jn +X2NyZWF0ZUluZGV4X2Q3ODY1NjRiMzdkZThlNzMACxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18d +X193YmdfZGVsZXRlX2Y2MGJiYTdkMGFlNTlhNGYAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18a +X193YmdfZ2V0XzUzNjFiNjRjYWMwZDA4MjYAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18dX193 +YmdfZ2V0QWxsX2IwMjIwYmIzNmQwM2UxY2EAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18hX193 +YmdfZ2V0QWxsS2V5c19lZmNiMjUzOTI5NGUyNWVmAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +HF9fd2JnX2luZGV4XzM4M2I2ODEyYzE1MDgwMzAABhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18h +X193Ymdfb3BlbkN1cnNvcl8zMGQ1OGFlMjdhMzI3NjI5AAQYX193YmluZGdlbl9wbGFjZWhvbGRl +cl9fIV9fd2JnX29wZW5DdXJzb3JfNjExYjFlNDg4YzM5M2RkOAACGF9fd2JpbmRnZW5fcGxhY2Vo +b2xkZXJfXxpfX3diZ19wdXRfMjI3OTJlMTc1ODBjYTE4YgAGGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXxtfX3diZ19uYW1lX2FkNzdmYTE2ZWNkNjE0OTYAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVy +X18eX193YmdfbWVzc2FnZV9jNTM5NTg1NDcxMTMxOTg1AAEYX193YmluZGdlbl9wbGFjZWhvbGRl +cl9fG19fd2JnX2NvZGVfYmRkY2ZmNzk2MTA4OTRjZgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XyVfX3diZ19uZXd3aXRobWVzc2FnZV8xZDFlMWQ5NDllOTU0NGFjAAIYX193YmluZGdlbl9wbGFj +ZWhvbGRlcl9fHV9fd2JnX3RhcmdldF8yZmMxNzdlMzg2YzhiN2IwAAQYX193YmluZGdlbl9wbGFj +ZWhvbGRlcl9fGl9fd2JnX2tleV83YTUzNGRlOTVhMWY1ZmJmAAQYX193YmluZGdlbl9wbGFjZWhv +bGRlcl9fH19fd2JnX2NvbnRpbnVlX2YxYzNlMDgxNTkyNGRlNjIAABhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18dX193YmdfZGVsZXRlXzIxZmViMWM4ZDNlYzAwOGYABBhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18dX193YmdfdXBkYXRlX2UzODA5YTJmMTgxZjRlMzAAAhhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18cX193YmdfYm91bmRfY2UzMjQzOTA1NTZmMDU2ZAACGF9fd2JpbmRnZW5fcGxhY2Vo +b2xkZXJfXyFfX3diZ19sb3dlckJvdW5kX2U3N2Y2ZTE0Y2I2OTE1MWUAAhhfX3diaW5kZ2VuX3Bs +YWNlaG9sZGVyX18cX193YmdfY291bnRfMzNlMzNiNTYxZDA5YzA2NAAEGF9fd2JpbmRnZW5fcGxh +Y2Vob2xkZXJfXxpfX3diZ19nZXRfZDc4ZGRhZTIyMmVlZGYzMAACGF9fd2JpbmRnZW5fcGxhY2Vo +b2xkZXJfXx1fX3diZ19nZXRBbGxfNWQwNjMzNWY5Yzk2N2VmYwAEGF9fd2JpbmRnZW5fcGxhY2Vo +b2xkZXJfXyFfX3diZ19vcGVuQ3Vyc29yXzQyNWFiYTljYmUxZDRkMzkABBhfX3diaW5kZ2VuX3Bs +YWNlaG9sZGVyX18jX193Ymdfc2V0b25ibG9ja2VkX2ViMTAzMmEzZGZhYWJkMWMAARhfX3diaW5k +Z2VuX3BsYWNlaG9sZGVyX18pX193Ymdfc2V0b251cGdyYWRlbmVlZGVkX2FkNzY0NTM3M2M3ZDVl +MWIAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18dX193YmdfcmVzdWx0XzZjZWRmNWY3ODYwMGE3 +OWMABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18cX193YmdfZXJyb3JfNjg1YjIwMDI0ZGMyZDZj +YQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyFfX3diZ19yZWFkeVN0YXRlX2Y4ZDU4Y2M5ZTlj +NGY5MDYABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18jX193Ymdfc2V0b25zdWNjZXNzXzYzMmNl +MGExNDYwNDU1YzIAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18hX193Ymdfc2V0b25lcnJvcl84 +NDc5YjMzZTc1NjhhOTA0AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIV9fd2JnX3NldG9uYWJv +cnRfNTIzMTM1ZmQ5MTY4YWU4YgABGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyRfX3diZ19zZXRv +bmNvbXBsZXRlX2Q4ZTQyMzY2NjVjYmYxZTIAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18hX193 +Ymdfc2V0b25lcnJvcl9kYTA3MWVjOTRlMTQ4Mzk3AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +Il9fd2JnX29iamVjdFN0b3JlX2RhNDY4NzkzYmQ5ZGYxN2IABhhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18cX193YmdfdmFsdWVfODZkMzMzNGY1MDc1YjIzMgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXyFfX3diZ19vbGRWZXJzaW9uXzYyYmFkMDdhNDcyMGE4MmQAGhhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18bX193YmdfaXRlbV84NzEzMGViNGQzOGVjZGM1AAMYX193YmluZGdlbl9wbGFjZWhv +bGRlcl9fHl9fd2JnX3ZlcnNpb25fNzQwNmUzZjk3YWU2OTk2NgAaGF9fd2JpbmRnZW5fcGxhY2Vo +b2xkZXJfXydfX3diZ19vYmplY3RTdG9yZU5hbWVzXzU4OGI1OTI0Mjc0MjM5ZmQABBhfX3diaW5k +Z2VuX3BsYWNlaG9sZGVyX18pX193Ymdfc2V0b252ZXJzaW9uY2hhbmdlX2FmMDQ1N2FjYmI5NDlk +ZjIAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18cX193YmdfY2xvc2VfNmJmZTRjYTJmZTY3Y2I2 +NwAAGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyhfX3diZ19jcmVhdGVPYmplY3RTdG9yZV84ODJm +MmY2YjFiMWVmMDQwAAYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fKF9fd2JnX2RlbGV0ZU9iamVj +dFN0b3JlXzE3MzJlZmRkMGY4YTM1MWQAAxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18iX193Ymdf +dHJhbnNhY3Rpb25fMWUyODJhNzllOWJiNzM4NwAJGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyJf +X3diZ190cmFuc2FjdGlvbl9iMzllMjY2NWI0MGI2MzI0AAYYX193YmluZGdlbl9wbGFjZWhvbGRl +cl9fG19fd2JnX29wZW5fZjBkNzI1OWZkN2U2ODljZQAJGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XxtfX3diZ19vcGVuX2EwNTE5OGQ2ODczNTc1MzYABhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18a +X193Ymdfbm93XzRlNjU5YjNkMTVmNDcwZDkAGhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18dX193 +YmdfY3J5cHRvX2QwNWI2OGEzNTcyYmI4Y2EABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193 +YmdfcHJvY2Vzc19iMDJiMzU3MDI4MGQwMzY2AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19f +d2JnX3ZlcnNpb25zX2MxY2I0MjIxM2NlZGYwZjUABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18b +X193Ymdfbm9kZV80M2IxMDg5ZjQwN2U0ZWMyAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fFF9f +d2JpbmRnZW5faXNfc3RyaW5nAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX3JlcXVp +cmVfOWE3ZTBmNjY3ZWFkNDk5NQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx9fX3diZ19tc0Ny +eXB0b18xMGZjOTRhZmVlOTJiZDc2AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJV9fd2JnX3Jh +bmRvbUZpbGxTeW5jX2I3MGNjYmRmNDkyNmE5OWQAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18m +X193YmdfZ2V0UmFuZG9tVmFsdWVzXzdlNDJiNGZiODc3OWRjNmQAARhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18dX193YmdfbGVuZ3RoX2NkN2FmODExNzY3MmI4YjgABBhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18aX193YmdfbmV3XzE2YjMwNGEyY2ZhN2ZmNGEACBhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18gX193YmdfbmV3bm9hcmdzX2UyNTgwODdjZDBkYWEwZWEAAhhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18aX193YmdfbmV3X2Q5YmMzYTAxNDc2MzQ2NDAACBhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18bX193YmdfbmV4dF80MGZjMzI3YmZjODc3MGU2AAQYX193YmluZGdlbl9wbGFjZWhvbGRl +cl9fHF9fd2JnX3ZhbHVlX2Q5M2M2NTAxMWY1MWE0NTYABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVy +X18fX193YmdfaXRlcmF0b3JfMmNlZTZkYWRmZDk1NmRmYQAIGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXxpfX3diZ19uZXdfNzJmYjlhMThiNWFlMjYyNAAIGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XxpfX3diZ19uZXdfMzJmOGRkMjk0ZDEzOTRmZAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtf +X3diZ19zZWxmX2NlMGRiZmM0NWNmMmY1YmUACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18dX193 +Ymdfd2luZG93X2M2ZmI5MzlhN2Y0MzY3ODMACBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18hX193 +YmdfZ2xvYmFsVGhpc19kMWU2YWY0ODU2YmEzMzFiAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +HV9fd2JnX2dsb2JhbF8yMDdiNTU4OTQyNTI3NDg5AAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +GV9fd2JnX2F0X2M3MjlhMTRmOWZjMjdjNjIAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193 +YmdfZ2V0X2JkOGUzMzhmYmQ1ZjVjYzgAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193Ymdf +c2V0X2Q0NjM4ZjcyMjA2OGYwNDMAAxhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18bX193YmdfZnJv +bV84OWUzZmMzYmE1ZTZmYjQ4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHl9fd2JnX2lzQXJy +YXlfMmFiNjRkOTVlMDllYTBhZQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxtfX3diZ19wdXNo +X2E1YjA1YWVkYzcyMzRmOWYAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18tX193YmdfaW5zdGFu +Y2VvZl9BcnJheUJ1ZmZlcl84MzY4MjViZTA3ZDRjOWQyAAQYX193YmluZGdlbl9wbGFjZWhvbGRl +cl9fG19fd2JnX2NhbGxfMjdjMGY4NzgwMWRlZGY5MwACGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XxtfX3diZ19jYWxsX2IzY2E3YzYwNTFmOWJlYzEABhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18b +X193YmdfY2FsbF84ZTdjYjYwODc4OWMyNTI4AAkYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fG19f +d2JnX2NhbGxfOTM4OTkyYzgzMmY3NDMxNAALGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyVfX3di +Z19pbnN0YW5jZW9mX01hcF84NzkxN2UwYTdhYWY0MDEyAAQYX193YmluZGdlbl9wbGFjZWhvbGRl +cl9fGl9fd2JnX3NldF84NDE3MjU3YWFlZGM5MzZiAAYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +Hl9fd2JnX2VudHJpZXNfY2U4NDQ5NDFkMGM1MTg4MAAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XxtfX3diZ19uZXh0XzE5NmM4NDQ1MGIzNjQyNTQABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18b +X193YmdfZG9uZV8yOThiNTdkMjNjMGZjODBjAAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fJF9f +d2JnX2lzU2FmZUludGVnZXJfZjdiMDRlZjAyMjk2YzRkMgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXx5fX3diZ19nZXRUaW1lXzJiYzQzNzUxNjVmMDJkMTUAGhhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18aX193YmdfbmV3X2NmM2VjNTU3NDRhNzg1NzgABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVy +X18aX193Ymdfbm93XzMwMTQ2MzlhOTQ0MjM1MzcAMBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18e +X193YmdfZW50cmllc185NWNjMmM4MjNiMjg1YTA5AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +Gl9fd2JnX2FkZF85MTI0NDE1ZjRhYmE2ZDk4AAIYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9f +d2JnX3ZhbHVlc19jMGJjMWNmZWU3MmM2YTQ4AAQYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fKV9f +d2JnX2luc3RhbmNlb2ZfUHJvbWlzZV9iNDM4ZGRlYTRjYWNjNTFmAAQYX193YmluZGdlbl9wbGFj +ZWhvbGRlcl9fGl9fd2JnX25ld184MTc0MDc1MGRhNDA3MjRmAAIYX193YmluZGdlbl9wbGFjZWhv +bGRlcl9fHl9fd2JnX3Jlc29sdmVfYjAwODNhNzk2NzgyOGVjOAAEGF9fd2JpbmRnZW5fcGxhY2Vo +b2xkZXJfXxtfX3diZ190aGVuXzBjODZhNjBlOGZjZmU5ZjYAAhhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18bX193YmdfdGhlbl9hNzNjYWE5YTg3OTkxNTY2AAYYX193YmluZGdlbl9wbGFjZWhvbGRl +cl9fHV9fd2JnX2J1ZmZlcl8xMmQwNzljYzIxZTE0YmRiAAQYX193YmluZGdlbl9wbGFjZWhvbGRl +cl9fMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2FhNGExN2MzM2EwNmU1Y2IABhhf +X3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfbmV3XzYzYjkyYmM4NjcxZWQ0NjQABBhfX3di +aW5kZ2VuX3BsYWNlaG9sZGVyX18xX193YmdfbmV3d2l0aGJ5dGVvZmZzZXRhbmRsZW5ndGhfYThh +ODUwMTNhNDM3Zjk1YgAGGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXxpfX3diZ19uZXdfOWU3ZTFh +M2RkNTAwYTM0MwAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyxfX3diZ19pbnN0YW5jZW9mX1Vp +bnQ4QXJyYXlfMmIzYmJlY2QwMzNkMTlmNgAEGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXyRfX3di +Z19uZXd3aXRobGVuZ3RoX2U5YjQ4NzhjZWJhZGIzZDMABBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVy +X18fX193Ymdfc3ViYXJyYXlfYTFmNzNjZDRiNWI0MmZlMQAGGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXx1fX3diZ19sZW5ndGhfYzIwYTQwZjE1MDIwZDY4YQAEGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXxpfX3diZ19zZXRfYTQ3YmFjNzAzMDZhMTlhNwADGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XyRfX3diZ19uZXd3aXRobGVuZ3RoXzQ5YjZkOGUyYThkMTEzNWMABBhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18dX193YmdfbGVuZ3RoX2NiZGRkYjYxYWZmNGJjMjQABBhfX3diaW5kZ2VuX3BsYWNl +aG9sZGVyX18aX193Ymdfc2V0Xzk3MWIwNmVmOTAxZDAxNDQAAxhfX3diaW5kZ2VuX3BsYWNlaG9s +ZGVyX18cX193YmdfcGFyc2VfNjZkMTgwMTYzNGUwOTlhYwACGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXyBfX3diZ19zdHJpbmdpZnlfODg4N2ZlNzRlMWM1MGQ4MQAEGF9fd2JpbmRnZW5fcGxhY2Vo +b2xkZXJfXxpfX3diZ19nZXRfZTNjMjU0MDc2NTU3ZTM0OAACGF9fd2JpbmRnZW5fcGxhY2Vob2xk +ZXJfXxpfX3diZ19zZXRfMWY5YjA0ZjE3MDA1NWQzMwAGGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJf +XxxfX3diaW5kZ2VuX2JpZ2ludF9nZXRfYXNfaTY0AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9f +F19fd2JpbmRnZW5fZGVidWdfc3RyaW5nAAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEF9fd2Jp +bmRnZW5fdGhyb3cAARhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18RX193YmluZGdlbl9tZW1vcnkA +CBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18eX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXI1MDAz +AAYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyMTIy +NzkABhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18fX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXIx +MjI4MQAGGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx9fX3diaW5kZ2VuX2Nsb3N1cmVfd3JhcHBl +cjE4OTEwAAYYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fH19fd2JpbmRnZW5fY2xvc3VyZV93cmFw +cGVyMTkzMjgABgOKVIhUAgMDAwMDAgMCAQMCAwEDAwMCAQIBAwMMHxUDAwMEAgMDAwMCAQEDAQEA +AwMBAwEFAQsBAAEDAwEDDAMBAgMAAwMDAwEDAAEHAgMBAAEDAwMDAQMBAwICAwIBAwMDAzk6AwEH +AwMDAQcDAgIDAwMDAwQDAwMUAQEBAQEBBAMDAwIBAQMDAQEDAgMDAwMDBQoDAwEDAwEDBQQDAwID +AwQAAwMDCgABAQABAQADFgMAAAMDAQABDAAHAQMBAwIBAgACCgEDAwMBAwMDAwMDAwYBAgQEBAED +CQIBAQMFAwMAAwMGAAMDAgMDBgM7AwEBAwUBMQMBAwICAQEDBgEBAQMBAQMBAwAAAQICAwMHAx0M +BwUCAwQDAwEWAwU8AwwAAAUBBAMDAAMDBQABAQEBAAEBAQEBAQQFAwMAAgMCAwEBAAUBAwMDBgEB +AAEDAwMBAwExAAICAwMDBgEBAwMDAgUFBQEDAQMAAQMAAwACAwIDAwMBAwAHAwIBAQEDAwMDAQAD +AQMCAAQBBgEBAQADAQoDAQUGAQEBAQMFAQMBAQMDAwAEAgEBAQQABQABBgYGAwMCAQEDAQEFBgAA +AAEAAQEBAAAOAgMAAgICAgEBAAQCAwMDAQEDAQECAQEDAwYBAwECAQADAwEBAQABAgIDBgEBAQkA +AQIBAgECAwMAPQEAAQEBAQMDAwMBAQMDAQIBAQIAAgICAwEDAwMDAwMDAwMDAwMDDAIBBQAAAAM+ +AwMHAwMDAwEHAgEBAQEBAQEBAQMBAAEFAwMDAQIDAQEBBj8FAwMDAgABAAIADAEDCgMCAwAAAx8B +AQMDAwMAAQEBAQMBAQEBBAEBCAEDAwIAAAEFBwEFAgAEAAMBAQEBAQEBAQEBAQEBAQABAQEBAwMB +AgIDAAEBAgEBAwMACAgIAQEBAQECAQEBAQECAQMAAwIBAQMAAQcBAAwCDgEBAQMBAQEABQIMAgxA +AQEBAQEDAQECAgICAgAAAAAAAAIDAgUCAgICCgEDAAABAQMCAQMCAAMBAgIKAQEBAQMAAQEBAwEB +AQEBAQEBAQEBCgEBAQEBAgIBAQEBAAAAAwIBAQEBAQEBAQEHAQEBARkBDAMMAAMBBQMBAQMCAQEA +AAAFAQcHAgEBAgMDAQEBAQEBAQMFAQEBAQMBAQEDAgACAgIAAgECAgIEDAELFAADAwMCAwMCAQEA +AgMBAwIDAwICBwMAAwkCBQABAAMCAwMDAw4DAQEKAwMDBAYHAQIMAwQDAQMBBAECAwIDAwMDBAQE +HwMkAgMLCgICAwIDBQABIAMCAQEBAQEBAQEKBwEDAwMCAwMBAQEBAQEBAQEBAQECAQEDQQICAQIC +AgQCAgECAQEDAwMDAgIPAQIBBQIRAwICAgIBAwMCAQICAAMBAQEBAQIBAQMDAQIhAAMDAwMDAwAB +AQEBAQEBAQEBAQEDAwIBAwEBAAIEAgICAgEBAQEBAQECAQMAAAMEAgEDBQEAAx0FAwEAAAECAR0C +AgIFAgIHAAICAAICAAcHBwUABwkDAQICAgICAgICAgICAgIBAwEGAgJCAwECBwUFAAADBQUDAAEB +AQIBAwEBAwICAgICAQIDAQMCBwECAwIDAQMDAwYAAgMCAgIDAgICAQMCAgIDAAMDAwMDAQEDAgED +AwICAgEEAwEDBREAAQABBwcDAwMDAAEDAgQAAwEBAgEBAQEBAQMBAAMEAwMHAwACCQQBAwMCAgEC +AQEDAgIFBwEABwAGAQIAAx0CAwECFAMDAwIGFgEDAQAHBwAAAQMCAQcHAAYMBAQEAQEBAwMEAQQA +AQEPAQEBAQEBAwICAgQEFAkDAwMDAwMDAwMDAw4HAQMDAwUCAQMDFQEBBQMAAxkDAwUCAgICAgIC +AgIDAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQcHDQEBBQUHAQECAgMDAwIBAQMBAwMBAwwMAwABAQEB +AQEBAQEBAQEBAgMDAwIBAQEBAQAHAQEGBAECAAIgAwMCAQMCAwAAAQMAAAEDAQEDAwAAAgUBAAMA +AAMCAQICAgEBAQMBAQEBAQEBAQEBAQEEAQEBAwMBAQMEAwEqAgMBAwAFAgMCAAECAwIDFwUFAQAA +AAADAwEEAQEDAQMBCAMKAwECAQUBAwMDBQMDAwIDAAECDAMDQwMDAgIBAAcDAwMBAQMFBQEDAAIF +Ah8FAQUFAwUFBQUFAwUFAQcDAwEBAQUKBQUFAwECAwMDAwMBAgAABQUBAQUCRBQCBwcHBwQAAAQF +AQMSAwUGAwMDAgQDAwMDAwMDAwMBAAIDAgECDwAABAEBAQEBAAMDAwMBAwULAwIDAwMEBAYBAQEC +AQEBBQIFAwMAAAorAQEBAQAAAAADAwMAAwICAgYCAwkBBwoBBgkDBgMDAwMEAQIDBwMDAwMBDgED +BQUDAwMDAwEDAwMDAwMCAwEBAQMBBTIDJQMHAQUFAAABAQEFBwcBAQUFBQECBQEBAQEEJgcFAwAD +AQUFAQQGAAEBAQECAwEEEwMBAQMCAwEDAQEBAQEBAQEBBAECAQEBAQMBAwMBBRcAAwMDAw4OAQED +DQUGAQABAwICBAQBAQEBAQUHBwICAgAFBAEHAQcCAwMAAAMCAgEBAQIBAQMJCgEnAAABAAADAQUA +AAADASwDAgEGAwAAAAAAAAAAAAEAAAUAAQcBCwUFBQUFBQUFAgMEAAMAFwQEAAMBAQABAg0FAwEB +AgMBAQEBAQABAAwDAgEDAQEAAAEBAQUGBgYGCgMKAQECAQEDAgMKAgACFAMCAAABAQEBAQEBAQEB +AQMAAAAAAAABAQEBAQEBAQEBBQMCAQEDAQMABAUFAQEGAw4CAAEEAgABAAEBBgkBAQcHBwcMAAEC +CQQBAQcIBAABAgEBAgIFAgUFBQUBCgcFBQUFAQEJJQcAAgICBgYGAQEBBwUHAgECAAEHBwIHBwsF +AwAAAAEFAAABBAMDAAEBAQEBAQQKDgEDAwUEAQQBAQEBAQEBAQEFBQUAAAMABAQEBAQBAwMBAQEC +AQMBAQEBAgoKAAMAAAEBBwAHCgcGAgAAAxcEBQUBAQECAgQFAgECAQMBAQ8KAAIDAQMDAAgAAQEB +AgEHBwIAAwMPCAYGBAEBAwEBAQEDBQUCAgIDBAICHQECAgICAAAAAAAAAQQEBAIKBwAGAgIEBAMB +AQUCAgICRQAAAAAAAwEFBAEDAQQCBAAAAQAAAQADBwICAgQCCQEBBQMEBQQHAwABAQADAgICAgIC +AgICAgICAgIFAAUFAQEBAQEBAQUFBQUGAQUFBRcBEwEDARkBAQEAAQEBAQEBAAAAAAACAAEKCgoB +AAEBAgEBDxkBBgYMAwACBAQAAAQAAAQAAAEBAwMBAQEBAwMMAQMFCQYBAQEDAQEHBhUBAgQAAAAD +BAEBBQECAgICAAIDBAICBwICAgUBAQEEBAABAQEBAAEFAgEBBAEBAQEBAQEBAwkwBAEqAQEEAAIA +AAMJAAQEAQABAAEBAQIBBwAFAQIKAQECBAIBAwMCAwUBAQAAAAEBAQEBAQEBAQEBAQEAAQEEAQAD +AQABAQEAAQEBAQIBAwMBA0YBAwABBgAPAAQDAgICAgIAAAEBAQQJAAEBCwEFAQABAQEsAQECAwMD +AwUCBAAGAAAAAQAAAQEHBwEBAQEBAQEBAQIBAgEBAQEBAQAIBgkCBgABEAEKAQACAgIAAQEBBQAA +AgEAAQEXAgQaAAABAwMBBgMDAwMGBQECAQEBAgQDAQoBAAEDBgEFAwMGBgAAAQEBDwAABAEEAQEB +BwEBAQEBBQUHAQEBAQEBAQEBAQIJBQEBAQcEAQcFAAAAAAICAQEFAQEDAwQEAwMAAgQBAQMDAwIE +BAACAwMHBQcDAQABAQIBAAEFBAUFBwQDRwJIBwcDAwMDAwMDAwMDAwEBAQABAQEBAQEBAQAABAME +AgQCAgEAAAABAgcFAQEBAQECAgMEAAEEAAQBSQEAAgEBAQEBAQAAAAAAAAAAEwAAAAAABAsAAAQA +AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQADAQQTAAAAAgMAAAABAAAIAQIC +AQECAgICAgICAgICAg8BAQIAAAEAAQEBBQUFAgEPAAIDAwEBAwABAQEBAQEHAQEAAAAAAQEBAQQE +AwMDAwMDAwEJJQAEBAQEBAQEBAQEBAQBAQEEAwMBBQQDAQQgAQEAAAACAgEGAAABEA8EBgACAg0B +BgIGAAYCBgECAQMEEAEGAgEBAgcBAAAAAQQEAQADAwEABAEBAAEBAQEBAQIAAAAAAAEBAQEBBQUD +BQIDCgIBAQECAQMADw8LDwEBAQEBAwYEAQEBAQEBAQEBAAAJBgYGCQYCAAQEAAAAAAAJCQkBAwMB +AQEBAQEJCQkGCQIJBgYGBgkJCQYJCQYJCQEAAQMBAAQJCQYBBQICBQEEAQEDAwMDAgUFBQAAAAAA +AAAFAQABAQQBAQEEBAQEBAQEAAAJCQAJAAEAAAAAAAAAAAMBAQEBBQcBAQEEAQECAQQEAQYBAgEJ +AQEFAgAAAAEBBAUBAQICBQIEBAMDAgMAASIBAQMBAQcHBwcFBQUFBQUFBQUBAQEBAQEBAQEDAyID +IgEDAwEAAwMDBQUBAwcDAwEFAwMiAQMGAQEDAAoAAAAAAgsABAMDAwMDAwMDAAAAAQIHAQEAAAAI +AQECAgIDAwMDAwMDAwMDAwAAAAEAAAABBwURBwoBAgICAAAAAgIFAAICAgABAwcFAAAABwEFCQAF +AAAAAAAAAQEAAQUBAgANAAQEBAQEBAQEBAQEBAQEBAQNAAEAAwEDAwEDBwANAQIFAQACAgoDAgAA +AAMDBAMDAwMDAwMDAwMDAwMDAwMDAwMAAAABAQMDAQEBBQECAgICAwEBAQEBAAEFAwEBAwMDAgEF +AAEABAIDAgQEBAQAAwIBAAADAwMBAQMBBQEAAAADBgMBAgcDAgMBAAEBAQAAAAABAwMDAwMDAwMA +AAMDAAAAAAAAAwMDAwMDAAICAQMDAwMCBQMDAwMDAwACAgAJAAICAgIBAQQDBgYBAAFKAQEBAQEB +AQEBAAAAAAEECQkCAgAAAQABAgIAAAACAgMBAQEBAQEBAQAGBgEJAAEBAgQBAgIAAQEAGQEBAgIB +AQICAAEBAQEBAQEFAAcAAAMAAwACAQAAAgICAwACBgABBAECAQQAAAICAwMDAwMDAwMDAwICAgEA +AAEBAQEBAQEDAwICAwUBAQEBAgICBQUCAgICAgICAgIBAQECAgIBAQEBAgIIAAUCBwECAgICAQEE +AAABAAAAAAEDAwMECQMEAQYAAAkJCQYJAQMFBQUFCgUGBgYGBgYGAgAECQICAwcFAQMBAQIDAggB +BQYGBgEBAAEGAAAEABcCAAAAAAkECQkJAgkCAQkCAAAABAICAgYHAwMKAgMJCQkAAQcHBwcHBwcH +AgIEAgIJCQICAgQAAAUCAQgBAQkGAwEDBAQBBwgBAQMDAwEBAQIBAwMAAAAAAQEBAgIABAQEBAEA +AAEBAwcGCQIBAwUKAwMDAwMDAwMDAwEDAwMDBQUFBQEGDAAAAAAAAAQBAQQHAQoKAQcDBwIJAQMe +HgICAQIJCQEBAAAAAQMFAgcGAwIAAAAAAQEEAQAAAgQEAAMBAAUEBAAAEwADAwMBAwMDAwEFAQAF +AwMDAwMDAwMDAwMDAwMDAwMFBwMDAwMCAQMpARUBBQEEAwMDAQMBAAMDAwcMBQMEAQUDAQIDAQAA +AAAAAwgDAAQCAAAAAAEEBAQEBAQAAAADAAUDAwMDBAENAgUEAgAEBAQEAAABAQEBAQQBBwQBBwEA +AwMDAwEDBQECAQcBAQAAAAACAAEBAQQBAQQEAAAAAwMCAAAABAACAgIAAQQAAQIAAwAEBAECAgIC +AAQBAgAAAAAEBAQHBwEEAAEBAAAAAAAEAgQCAgICAAICAgIEAgICAgICAAICAQMAAAIVAgEBAQEC +AwMDBAQDAgABAAEAAAAABBYCAAABAwEBAQQEAgECAgICBAEBAQMBAQEAAAcCAgICAgIEAAECAQAB +AAECAgICAgIHAwMDAwMDAwMDAwMDAwMDAwUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAB +AAYEAwMAAQUAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwEEAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAQERAgAHAQMDAwMDAwMDBQUFBQUFBgIBAAAAAQEAAwIC +AhEEBwEBAw8BAQEBBAEiAgEBAAMDAwMEAQMEAgICAgIvGwUFBQoFAQEBAAAAAgACAgECAQEEBAQE +BAQCAAQABAABAQAAAQEBBAQEAQMEAgQBHAQDAAAAAAACAgICAgIBAQEBAQEBAQEBAQEBAwEBBAEB +AQAFBQUBAgECAgICAgICAgICAgIBBgAAAAABAgICAgICAgICAgEBAQEBAgEBAgECAAABAQEDAQIC +AwMBAwEBBgEBDQUGAAAgBwcDBwcBAAEAAQEEAQMLBAQEAQEBAAABAgUAAwcBBwADAwMDAwMDAwMD +AQEBAQEBAQEBAQEBAQcHBwcHBwcDAgIBAQQAABkCAgEBGQEEBwEBAgQBBwEBASUBBQcBBSAFAAAA +AgAAAAIDAwMDAwACAwMDAwMDAgEEBwcAAwYEBAQcAQEBAQACAAABAQEFBQUFAgECAgICAgABAgIC +AgIBAgIBAQEBAQIAAAACGRkCAgMCBgMFAwMGAgAAAAAAAAAAAAABAAAAAQAAAAAAAwICAAEBAQEI +BAQEBAQABAATAAAAAAAAAgIAAAACBAQEAAAAAAQEBAQEBAoKCgoKCgoKAgMCAgICAAAAAgAHAAAA +AAoKAAEBAwECAgIBAgICBAICAgICAQICAgICAgICAgICAgQAAwICAgEBAQEBBAEBAQEAAAEEAwIH +BAMACgIDAQYDCAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBAQBAQkAAAQECwICBAAAAAAA +AAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEGwAAAQQAAAAHBAoDAwMDAAQBBAMC +BAAAAAAAAAADAAIBBAQAAwMAAREEAgUEBAsBGQQBBAEBAAMDAQMBAwMBBgEGAwEAAAEAAQEBAQAA +AAAAAAAAAAABAQMBAQEMDAAEBAQEBQABAQEBBAQEBAQECgEBDQAAAAQEAQIAAQEBAQEBAQINAgIB +BgIDAAAAAQEAAgEDEgQCAQIAAAIBAgICAgICAQoCAgEEAwAAEgIFAwIEAQAAAwADAAADAAIDARoa +CRoDBAMDAAAAAwABACQkAwEBCQABAQEDAwMDAwMDAwEBAwANDQ0NDQ0SEhIDAwMDAwMNDQ0NEhID +AwMAAQEAAQABAQIBAwMBAwEBAwICAwMDAwYEAAMDAwADAwMBAwEBAwMDAgMBAwIAAAAAAAAAAAAA +AAAAAAYBAQEBBAYGBgQEBAQEBAQBAAABAgYGBgEBAQAAAQEHBwEDAwEGAQEGBwEBAAECAwAHAQED +AwIDAwMHAQEEBAAECAUABAIAAAAAAgIEAgoKCgoKCgEICAgICAgAAAAAJAEEAAAAAAIEAwEAAAMD +AwUCAQEDBgEGAAAAAAAAAAAAAAABBgQBAQAAAQMDAwMDAQEDAQMBAwABBQYDAgMDAwEFAQsCAAAJ +AAAABgYRERwAAAASEgEAAQEBAQEGCQAAAAAAAAABAQENDQQFAwMEAQAAAAADAQEBAwEBAQECAgID +BAECAQEBAQEBAQsAAQEBAQ4AAgICAgIDBAEAAQMAAAADAwEBAQEBAQACBgICBAFLAQAAAAAAAAAA +AAAABAAGAgYBAAMAAgADAwMDAwMABQgBAAAAAAIABQABAQMEAgICBAICBgIEAgICAgICAggCAgIC +AQMCAgICAwUPAQECAAADAAsDBgEAAgMBAA0CBQEbGwEAAAAAAAAAAQAAAAQCAQIAAQACAgIAAwAA +AAAAAQAAAAEAAQAAAAABAQEBAAEAAAEGCwYEAgINDQ0NDRISEhISAw0NEhISCwMFBAQEBAABAQEB +AAEEAQEBAQAAAAAAAAEBBAMFAQQBAQEBAQIBAQICAQMBBQcBAQACAgECAQUFAQUHAQUBAgkAAAAC +AQAAAAAAAAIAAAEBAgAIAQICAgICAAAAAAMGAQYBAQUAAAACAgICAAECAAAAAAADAQQJAQEHAAAB +AQAAAAAAAAACAg0BAgMDAwEBAQEDAgIGAgICAQICAwEBBAYBAQEBAAABAAMBAQEBBgEBAgMFAgMG +BQMDCQEAAAAAAAACAAIAAAAAAAEBAQEBAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAQBAAICAQAAAAAA +AAAAAAAAAAAAAAAAAQMCBAEBAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAgIAAAAAAAAABgABAgEBAQECAgMCCQkBAgACAgICAgICAgABAQAAAAAAAgIC +AQIAAgAFAgICBQcAAAAAAAAAAQMBAQABAAYDBQUFBQEBAQECAgICMgMRAgAFBAEABwAEAgMCAgMA +AAABAgICAgICAgIAAgICAgIAAAIAAgIBBQUCAgICAgICAAIDAgIGBQAAAAAAAAAAFxdMAAEBAQMD +AAABAQUFAAUFBQUFBQUFBQUFBQUFBQUFBQUFAAAAAAABAQEBAwMAAAMDAwMAAQEAAAMCAwMDAwAB +AQEBAQEAAAEBAgAAAAEBAAABAQUBAQAAAAAAAAQEAAAABAAAAAADBwABAgICAgAAAAAIAAMAAwAD +BAMDBQACAQEBAQQBAQEAAgICAgICAgICAgACAwEDBAACAgITExMTARMTGgYBAwEFAgMDBgICAgIT +EwgBBAQFAQEAAAAAAwAEBAAAAQABAwQAAAMDAwMDAwMDAwMDAwMDAwMDAwMHBAcEAAQEBwMDAwMD +AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMHBAECBwUFAAgEBAEH +AQABBAQBABwcEREREQMDAxwREQMBBAMAAQEDBAMcEREDBAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAA +AQEBAAQAAAADAwMDAwMDAwMDAAEAAAAAAAADAAAAAAABBgUDAAQABAQAAAABAQAAAAABAQAEBgAJ +AQYGAQEBAwEEBgABBgAAAgMDBQUFBQUFBQUFAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQADAAAA +AAAAAAAAAAABAQAEAAABAAAAAAMAAAABBwEDAgAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEAAwMh +AQEBAQMDAwUFBQUFBQUFBQUFAAIAAQEBAQEBAQIBAQEBAQEBAQMDBQUFAgUDAwUFAQEBAQEBAQEB +BwMbBQUFAQMhAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAABAAAAAAAAAAAAAAAAAAAAAAAA +AQAAAAAAAAAAAAABAgEBAAAAAAAAAAAAAQAEBwQEAAAAAAABBAQEBAQBAQEBAQAAAAAAAAAAAAQB +BwYAAQQBAQEBAQEBAwECAQQAAQQGBAEBAAUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE +AQAAAAEBAQEAAAEBAAEBAAABAQABAQABAQAAAQEAAQECAgICAAEBAQAAAAAABQUBAQECAAEBAgIC +AgICBAEEAQIAAAEBAQEBAAEFAgICAgIzAgIFBBYCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAEAQAAAAAAAAAAAAAAAAAEBAEAAAABAQEBAQEBAAAEAAAAEBADBAQEBAQDAAAAAwEB +AAAAAAABAQADCQkABQIDBAIAAAQEBAQEBAQEAwAAAwQCAgICEBAQEBAQEBAAAAQEBAQBAQIEBAEB +AQEBAQAAAQABAQMIAQACAwMDAwACAgMAAhAQBgQBAAICAgJNAQACAh0HTlALAAIBAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAQADAAICAQACAAAAAwACAgAAAAAA +AAAAAAAAAAAAAAAAAAAAAAACAgAAARgYGBgYGBgYGBgYGAMDAAAAAAMDGAACAQEAAQAhAAAAAAAA +AAAAAAACAgIAIQMBAQEAAgMDAwATBAAAAQACCwICBRMNBQECAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAgDAAEDAAAAAAAAAAAAEBAQAgAAAwAAAAADAAMDAwMBAQABAQEBAAMJ +BgIJBgQAAAABAQEQEBAQAQICAQQIAQABAQADAQABAAAJCQkAAQgIAQEBBQEGAQAEAAABAgEABAAD +AwMAAAAAAAAAAAUEAwMABggICAgICAgAAAAAAAAAEQAABAIICAAEBAEICAgICAYAUQACAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAQAAAAAAAAAAAAAAAAA +AAAAAAQAAAAEAAAEBAAAAAAAAAQBAAAAAAAAAAAAAwEEAAABAAAABAAIBQQBAQEBAQAAAAAEAAAA +BAgBDAABAAAAAAAAAAEAAAUAAAEEAQAAAQEFBQICBgICAAAAAAAAAAAAAAAAAAIAAAAAAAABAgAA +AgAAAgIAAAAAAAACAgQCBAAAAAAAAAAAAAgEAAAAAQIDAQQDAwQAAQIEAQAAAAoKAgADAwMEAQEB +AQEAAAADAwAAAgEAAQAEAAIABAMCAgMDDQUAAxwDAgAIAAgIAAgIAAgACAgICAgICAgICAgICAgI +CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAgAA +AgICAgICAgADAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAACAwAAAAAAAAAAAAAAAAAAAAAAAAAABAAA +AAIABAIAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEAMwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AgMICAAAAAAABQABAQEAAAABCAAIAAgIAAgAAAgACAAICAgACAAICAgAAAgIAAgICAgICAgICAgI +CAgICAgICAgIAgAAAQAAAAIBAQAAAAADAAAAAQAAAAAAAAAEAgQGAgAFAAAAAAAAAAADAAgACAgI +AAAABQABAQAEAAgIAAgIAgAAAAAAAAAAAAABAgIACAgcAwgAAgIAAAAAAAAAAAAAAAAAAAIAAgAA +AAAAAgAAAAIAAgICAQAEAQEEAQEABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF +BQUFBQUFBQUFBQUFBQUFBQUFBQQBAQIEAAQEAQAAAAAAAAAAAAQBBAEBAQQBAQEBAAQCAQEBAQEB +BAEBAQEBAQEBAQEBAAEBAAMCAgAAAgILBAEEAgEBAQIABAIBAQkCBgUFBQUFBQUFBQUFBQUFBQUF +BQUFBQUFBQUFBQUFBQEBAQAAAAECAgQAAAIFAgIEAAAEAAEBAQEEAQEBAQAEAQEEAAEDBAcBBAAB +AQQBAQEBBAEBAgQAAQEAAQQGAQEDAAMFBQUABAYHBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAQIAAAIAAAAAAgIAAgAAAQEBAgIAAgEAAwYBAQEBAgIE +BAQEAAEAAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQECAwMAAAAA +AAAAAAAAAAEBAQEBAQEBAwIBAQEBAQEBAQEDAAMBAQEBAQECAQEBCQABAgEBAQEDAgICCQACAAEB +BAAAAgICAgEAAAUDBAQEBAQEBAQCAQMBAwIAAAEBAQEEAAECAAACAgICAgIBAAEBAQICAQQEBAIG +AQEBAQAAAAEBAQEBAQAAAAAAAQEBAQEBBAABAQABAwABAAEBAQUBAQEBAQICAQEABgQCAAEBAgEA +BgAEAQICAQEBAQEBAQEBAQIDAQEBAQEBAQEBBQEDAQIFBQUFAQMBAQABAQEBAgABAQIGAQEDAgMB +AQAEBAICAQEBAQIBAgIBAQIBBAACAQECAgYBAQEBAQEBAwQBAQEEAwEBAQEBAQEBAQEBAQYBAgIB +AQEBBgQBAAAEAQMAAAAAAQEBAgMEBgQDBAQJAAEBAQMBAwABAQEBAQICAAAAAAABBQMBBAEbAAAC +AAQABQEBCQQEAQEBAQEEAwQBBAQCBAICAgICAAICBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAgIAAAAAAAAAAAAAAAAAAAICAAICAAAAAAAAAgICAgACAAAAAgIDAw0NAgICAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQICAgAABAEBAgICAgICAgIAAgIBAgICAgICAgICAgICAgIAAgECAgIC +AgICAgICAAICAAAAAAIDAgICAgICAgICAgEBAQABAQECBAQBAQECAgQCAAICAgICAgICAgADAgIC +AgAAAAICAgABAAACAgICAgICAgICAgICAgICAgICAgICAQEDAQMDAwABBgECAgICBAQABAEBAQIC +AgICAgIBAQQCAgICAgQEAgICAgICAgICAgIAAAIGAgEBAgICAgICAgICAgICAgICAgICAgAEAQQA +AgICAQICAgICAgICAgICAgIABAQBAgICAgIEBAECAgICAgICAgICAgICAgICAgIBBAQEAgICAgID +AgICAgICAgIBBAIbAgICAgIEAAQAAAICAQECAgICAgIBAgMDAwICAgEAAAACAgIDAgIBAQEBAQIC +AgEDAgIAAAACAgIEBAICAgEAAQMDAwECAgICAwICAgICAgICAgQAAAAAAAAABAMAAQMCBAECUgIG +AgICAAICAgECAgICAgICAgICAgQCAgIEBAICAgICAwICAgMDAwACAgIDAgICARsbAgICAQICAgIC +AgIBAgICBgICBgYGBgQEAgICAgICAgICAgIEBAIIDwICAQEBAg8XAwMDAgECAgICAgICAgICAgIC +AgICAgICAgICAgICAgICAgQEBAQEBAQEBAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC +AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAECAgICAgICAgICAgICAgIC +AgICAgICAgICAgICAgICAgIEAgICAgICAgICAgQAAQQCAQICAgICAQEBAgICAgIAAQICAgICAgIC +AQEBAgIBAQECAQICAgICAgECAgICAgEAAgQCBAIEBAQCAAICAgICAQICAgICAgICAgIXBAgCAgAA +AgICAgIAAAICAgICAgICAgICAQICAgICAgICAgICAQICAgIAAAAEAgIBAQEBAQACAgICAgICAgEB +AQIEAQEBAgICAgECAgICAgICAgICAgICAgIBAQIBAgQCAQICAgIEAgQEBAIEBAQACAIAAAAEBAEA +AAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8DAwQEBAQEFw8CAgAFAwENUwkGCRQUCSYj +BgYJJwYGFgkmBgYLJgsGJwsLCQMDAgoKBwcGCwkDCwECBQUFBQMnBgYGCQUDCQYLAQEBAQEBARYj +LQsHDAwUFgsLDigFBQMGBgk1NjYjC1Q3FQVVDAcFAwUFBwoOFAcHDh4jDg4UCRQMVisLCwUGCRYH +CgoWDg4jNxY4AxUVDisLAQMJFgkCBwMFAQMGBgYDAwY1LQ5XCRYLCwMCAgQCBAUDBQIEAgQEBAQE +BAQEBAQEBAQEBAQEBAQEBAQFFSg4FRUMDgoKCgUFDAwHAwMHBwEHCg4MCgYGBgcDCgIVCgUDBgUD +AgYGBgYDAwUFBQcDBwMFBQwMAQUHCgoDBQcUWAMDAwMDBwIMFQcHKAsoCgcHHxUCFwMFBQkKBgID +AwIKBVkKAgIFCQcJCQYGFAwKBwcHNC4uLh4eLAUJChkqAwIUFgUFBRQUBQctDg4DCwsDBwcHGAMD +BQUEBwFwAfYa9hoFAwEAFwYJAX8BQYCAwAALB7l78AMGbWVtb3J5AgAeX193YmdfYmFja3VwZGVj +cnlwdGlvbmtleV9mcmVlALo4HF9fd2JnX21lZ29sbXYxYmFja3Vwa2V5X2ZyZWUAhSAhbWVnb2xt +djFiYWNrdXBrZXlfcHVibGljS2V5QmFzZTY0AIYkG21lZ29sbXYxYmFja3Vwa2V5X2FsZ29yaXRo +bQDuKiNiYWNrdXBkZWNyeXB0aW9ua2V5X2NyZWF0ZVJhbmRvbUtleQC7Ix5iYWNrdXBkZWNyeXB0 +aW9ua2V5X2Zyb21CYXNlNjQAoRAcYmFja3VwZGVjcnlwdGlvbmtleV90b0Jhc2U2NADvKiViYWNr +dXBkZWNyeXB0aW9ua2V5X21lZ29sbVYxUHVibGljS2V5AN8iHWJhY2t1cGRlY3J5cHRpb25rZXlf +ZGVjcnlwdFYxAPQIGF9fd2JnX3Jvb21rZXljb3VudHNfZnJlZQDdMB1fX3diZ19nZXRfcm9vbWtl +eWNvdW50c190b3RhbADiLB1fX3diZ19zZXRfcm9vbWtleWNvdW50c190b3RhbACMLyBfX3diZ19n +ZXRfcm9vbWtleWNvdW50c19iYWNrZWRVcADjLCBfX3diZ19zZXRfcm9vbWtleWNvdW50c19iYWNr +ZWRVcACNLxVfX3diZ19iYWNrdXBrZXlzX2ZyZWUArxQiX193YmdfZ2V0X2JhY2t1cGtleXNfZGVj +cnlwdGlvbktleQC+HyJfX3diZ19zZXRfYmFja3Vwa2V5c19kZWNyeXB0aW9uS2V5AOAiIl9fd2Jn +X2dldF9iYWNrdXBrZXlzX2JhY2t1cFZlcnNpb24A/hkiX193Ymdfc2V0X2JhY2t1cGtleXNfYmFj +a3VwVmVyc2lvbgD0Hh5iYWNrdXBrZXlzX2RlY3J5cHRpb25LZXlCYXNlNjQAsBwUX193YmdfbWln +cmF0aW9uX2ZyZWUAuzgcX193YmdfYmFzZW1pZ3JhdGlvbmRhdGFfZnJlZQDWFCJfX3diZ19nZXRf +YmFzZW1pZ3JhdGlvbmRhdGFfdXNlcklkAJgYIl9fd2JnX3NldF9iYXNlbWlncmF0aW9uZGF0YV91 +c2VySWQA8xskX193YmdfZ2V0X2Jhc2VtaWdyYXRpb25kYXRhX2RldmljZUlkAJkYJF9fd2JnX3Nl +dF9iYXNlbWlncmF0aW9uZGF0YV9kZXZpY2VJZAD0GypfX3diZ19nZXRfYmFzZW1pZ3JhdGlvbmRh +dGFfcGlja2xlZEFjY291bnQA/xkqX193Ymdfc2V0X2Jhc2VtaWdyYXRpb25kYXRhX3BpY2tsZWRB +Y2NvdW50APUeKV9fd2JnX2dldF9iYXNlbWlncmF0aW9uZGF0YV9iYWNrdXBWZXJzaW9uAP4YKV9f +d2JnX3NldF9iYXNlbWlncmF0aW9uZGF0YV9iYWNrdXBWZXJzaW9uAPYeLV9fd2JnX2dldF9iYXNl +bWlncmF0aW9uZGF0YV9iYWNrdXBSZWNvdmVyeUtleQD/GC1fX3diZ19zZXRfYmFzZW1pZ3JhdGlv +bmRhdGFfYmFja3VwUmVjb3ZlcnlLZXkA9x44X193YmdfZ2V0X2Jhc2VtaWdyYXRpb25kYXRhX3By +aXZhdGVDcm9zc1NpZ25pbmdNYXN0ZXJLZXkAgBk4X193Ymdfc2V0X2Jhc2VtaWdyYXRpb25kYXRh +X3ByaXZhdGVDcm9zc1NpZ25pbmdNYXN0ZXJLZXkA+B49X193YmdfZ2V0X2Jhc2VtaWdyYXRpb25k +YXRhX3ByaXZhdGVDcm9zc1NpZ25pbmdTZWxmU2lnbmluZ0tleQCBGT1fX3diZ19zZXRfYmFzZW1p +Z3JhdGlvbmRhdGFfcHJpdmF0ZUNyb3NzU2lnbmluZ1NlbGZTaWduaW5nS2V5APkePV9fd2JnX2dl +dF9iYXNlbWlncmF0aW9uZGF0YV9wcml2YXRlQ3Jvc3NTaWduaW5nVXNlclNpZ25pbmdLZXkAghk9 +X193Ymdfc2V0X2Jhc2VtaWdyYXRpb25kYXRhX3ByaXZhdGVDcm9zc1NpZ25pbmdVc2VyU2lnbmlu +Z0tleQD6HhViYXNlbWlncmF0aW9uZGF0YV9uZXcA1CkZbWlncmF0aW9uX21pZ3JhdGVCYXNlRGF0 +YQDaLRlfX3diZ19waWNrbGVkc2Vzc2lvbl9mcmVlAME3MF9fd2JnX2dldF9waWNrbGVkc2Vzc2lv +bl9jcmVhdGVkVXNpbmdGYWxsYmFja0tleQDVKTBfX3diZ19zZXRfcGlja2xlZHNlc3Npb25fY3Jl +YXRlZFVzaW5nRmFsbGJhY2tLZXkA2y0lX193YmdfZ2V0X3BpY2tsZWRzZXNzaW9uX2NyZWF0aW9u +VGltZQD7JiVfX3diZ19zZXRfcGlja2xlZHNlc3Npb25fY3JlYXRpb25UaW1lAPAqJF9fd2JnX2dl +dF9waWNrbGVkc2Vzc2lvbl9sYXN0VXNlVGltZQD8JiRfX3diZ19zZXRfcGlja2xlZHNlc3Npb25f +bGFzdFVzZVRpbWUA8SoScGlja2xlZHNlc3Npb25fbmV3AJ4XHG1pZ3JhdGlvbl9taWdyYXRlT2xt +U2Vzc2lvbnMA5CwlX193YmdfcGlja2xlZGluYm91bmRncm91cHNlc3Npb25fZnJlZQDhOy5fX3di +Z19nZXRfcGlja2xlZGluYm91bmRncm91cHNlc3Npb25fc2VuZGVyS2V5AIMZLl9fd2JnX3NldF9w +aWNrbGVkaW5ib3VuZGdyb3Vwc2Vzc2lvbl9zZW5kZXJLZXkA+x4rX193YmdfZ2V0X3BpY2tsZWRp +bmJvdW5kZ3JvdXBzZXNzaW9uX3Jvb21JZAD1GytfX3diZ19zZXRfcGlja2xlZGluYm91bmRncm91 +cHNlc3Npb25fcm9vbUlkAPYbLV9fd2JnX2dldF9waWNrbGVkaW5ib3VuZGdyb3Vwc2Vzc2lvbl9p +bXBvcnRlZADWKS1fX3diZ19zZXRfcGlja2xlZGluYm91bmRncm91cHNlc3Npb25faW1wb3J0ZWQA +3C0tX193YmdfZ2V0X3BpY2tsZWRpbmJvdW5kZ3JvdXBzZXNzaW9uX2JhY2tlZFVwANcpLV9fd2Jn +X3NldF9waWNrbGVkaW5ib3VuZGdyb3Vwc2Vzc2lvbl9iYWNrZWRVcADdLR5waWNrbGVkaW5ib3Vu +ZGdyb3Vwc2Vzc2lvbl9uZXcA5TEfbWlncmF0aW9uX21pZ3JhdGVNZWdvbG1TZXNzaW9ucwDyKiJf +X3diZ19zZXRfcGlja2xlZHNlc3Npb25fc2VuZGVyS2V5APseNV9fd2JnX3NldF9waWNrbGVkaW5i +b3VuZGdyb3Vwc2Vzc2lvbl9zZW5kZXJTaWduaW5nS2V5APceH19fd2JnX3NldF9waWNrbGVkc2Vz +c2lvbl9waWNrbGUA9R4rX193Ymdfc2V0X3BpY2tsZWRpbmJvdW5kZ3JvdXBzZXNzaW9uX3BpY2ts +ZQD1Hh9fX3diZ19nZXRfcGlja2xlZHNlc3Npb25fcGlja2xlAP8ZNV9fd2JnX2dldF9waWNrbGVk +aW5ib3VuZGdyb3Vwc2Vzc2lvbl9zZW5kZXJTaWduaW5nS2V5AP8YIl9fd2JnX2dldF9waWNrbGVk +c2Vzc2lvbl9zZW5kZXJLZXkAgxkrX193YmdfZ2V0X3BpY2tsZWRpbmJvdW5kZ3JvdXBzZXNzaW9u +X3BpY2tsZQD/GSBfX3diZ19tZWdvbG1kZWNyeXB0aW9uZXJyb3JfZnJlZQCMFiRfX3diZ19nZXRf +bWVnb2xtZGVjcnlwdGlvbmVycm9yX2NvZGUA2CkrX193YmdfZ2V0X21lZ29sbWRlY3J5cHRpb25l +cnJvcl9kZXNjcmlwdGlvbgD9Ji5fX3diZ19nZXRfbWVnb2xtZGVjcnlwdGlvbmVycm9yX21heWJl +X3dpdGhoZWxkAKUhFV9fd2JnX29sbW1hY2hpbmVfZnJlZQDDNw5vbG1tYWNoaW5lX25ldwCPPRVv +bG1tYWNoaW5lX2luaXRpYWxpemUA8iQYb2xtbWFjaGluZV9pbml0RnJvbVN0b3JlAJUvEW9sbW1h +Y2hpbmVfdXNlcklkAOIdE29sbW1hY2hpbmVfZGV2aWNlSWQA4x0fb2xtbWFjaGluZV9kZXZpY2VD +cmVhdGlvblRpbWVNcwDlLBdvbG1tYWNoaW5lX2lkZW50aXR5S2V5cwCjEhZvbG1tYWNoaW5lX2Rp +c3BsYXlOYW1lANwaIW9sbW1hY2hpbmVfcm9vbUtleVJlcXVlc3RzRW5hYmxlZAD1KiVvbG1tYWNo +aW5lX3NldF9yb29tS2V5UmVxdWVzdHNFbmFibGVkAP0rI29sbW1hY2hpbmVfcm9vbUtleUZvcndh +cmRpbmdFbmFibGVkAPYqJ29sbW1hY2hpbmVfc2V0X3Jvb21LZXlGb3J3YXJkaW5nRW5hYmxlZAD+ +KxdvbG1tYWNoaW5lX3RyYWNrZWRVc2VycwCKFR1vbG1tYWNoaW5lX3VwZGF0ZVRyYWNrZWRVc2Vy +cwD+Dh1vbG1tYWNoaW5lX3JlY2VpdmVTeW5jQ2hhbmdlcwD1AxtvbG1tYWNoaW5lX291dGdvaW5n +UmVxdWVzdHMA+Rscb2xtbWFjaGluZV9tYXJrUmVxdWVzdEFzU2VudAD8BRtvbG1tYWNoaW5lX2Vu +Y3J5cHRSb29tRXZlbnQAzAgbb2xtbWFjaGluZV9kZWNyeXB0Um9vbUV2ZW50ANEKJW9sbW1hY2hp +bmVfZ2V0Um9vbUV2ZW50RW5jcnlwdGlvbkluZm8AxAodb2xtbWFjaGluZV9jcm9zc1NpZ25pbmdT +dGF0dXMA+hshb2xtbWFjaGluZV9leHBvcnRDcm9zc1NpZ25pbmdLZXlzAPsbIW9sbW1hY2hpbmVf +aW1wb3J0Q3Jvc3NTaWduaW5nS2V5cwCyDCBvbG1tYWNoaW5lX2Jvb3RzdHJhcENyb3NzU2lnbmlu +ZwDPGRZvbG1tYWNoaW5lX2dldElkZW50aXR5AOISD29sbW1hY2hpbmVfc2lnbgD3EyFvbG1tYWNo +aW5lX2ludmFsaWRhdGVHcm91cFNlc3Npb24A+xEXb2xtbWFjaGluZV9zaGFyZVJvb21LZXkAmQkc +b2xtbWFjaGluZV9xdWVyeUtleXNGb3JVc2VycwCqBx1vbG1tYWNoaW5lX2dldE1pc3NpbmdTZXNz +aW9ucwDZDxlvbG1tYWNoaW5lX2dldFVzZXJEZXZpY2VzAKsOFG9sbW1hY2hpbmVfZ2V0RGV2aWNl +AOgKGm9sbW1hY2hpbmVfZ2V0VmVyaWZpY2F0aW9uAMELIW9sbW1hY2hpbmVfZ2V0VmVyaWZpY2F0 +aW9uUmVxdWVzdADSCiJvbG1tYWNoaW5lX2dldFZlcmlmaWNhdGlvblJlcXVlc3RzANMTI29sbW1h +Y2hpbmVfcmVjZWl2ZVZlcmlmaWNhdGlvbkV2ZW50AOQIGW9sbW1hY2hpbmVfZXhwb3J0Um9vbUtl +eXMA0BkZb2xtbWFjaGluZV9pbXBvcnRSb29tS2V5cwCKDCFvbG1tYWNoaW5lX2ltcG9ydEV4cG9y +dGVkUm9vbUtleXMAiwwhb2xtbWFjaGluZV9pbXBvcnRCYWNrZWRVcFJvb21LZXlzAOcCIm9sbW1h +Y2hpbmVfc2F2ZUJhY2t1cERlY3J5cHRpb25LZXkAswwYb2xtbWFjaGluZV9nZXRCYWNrdXBLZXlz +APwbF29sbW1hY2hpbmVfdmVyaWZ5QmFja3VwAKAOGW9sbW1hY2hpbmVfZW5hYmxlQmFja3VwVjEA +rgkab2xtbWFjaGluZV9pc0JhY2t1cEVuYWJsZWQA3RoYb2xtbWFjaGluZV9kaXNhYmxlQmFja3Vw +AP0bGW9sbW1hY2hpbmVfYmFja3VwUm9vbUtleXMA/hsYb2xtbWFjaGluZV9yb29tS2V5Q291bnRz +AP8bIm9sbW1hY2hpbmVfZW5jcnlwdEV4cG9ydGVkUm9vbUtleXMA+Agib2xtbWFjaGluZV9kZWNy +eXB0RXhwb3J0ZWRSb29tS2V5cwDoAylvbG1tYWNoaW5lX3JlZ2lzdGVyUm9vbUtleVVwZGF0ZWRD +YWxsYmFjawDnMS5vbG1tYWNoaW5lX3JlZ2lzdGVyVXNlcklkZW50aXR5VXBkYXRlZENhbGxiYWNr +AOgxKW9sbW1hY2hpbmVfcmVnaXN0ZXJEZXZpY2VzVXBkYXRlZENhbGxiYWNrAOkxKG9sbW1hY2hp +bmVfcmVnaXN0ZXJSZWNlaXZlU2VjcmV0Q2FsbGJhY2sA6jEeb2xtbWFjaGluZV9nZXRTZWNyZXRz +RnJvbUluYm94AOAtIW9sbW1hY2hpbmVfZGVsZXRlU2VjcmV0c0Zyb21JbmJveADhLShvbG1tYWNo +aW5lX3JlcXVlc3RNaXNzaW5nU2VjcmV0c0lmTmVlZGVkAPcyGm9sbW1hY2hpbmVfZ2V0Um9vbVNl +dHRpbmdzAOsxGm9sbW1hY2hpbmVfc2V0Um9vbVNldHRpbmdzAOItHG9sbW1hY2hpbmVfZGVoeWRy +YXRlZERldmljZXMA2SkQb2xtbWFjaGluZV9jbG9zZQDDNxxfX3diZ19rZXlzdXBsb2FkcmVxdWVz +dF9mcmVlAI0kHl9fd2JnX2dldF9rZXlzdXBsb2FkcmVxdWVzdF9pZAD3KCBfX3diZ19nZXRfa2V5 +c3VwbG9hZHJlcXVlc3RfYm9keQD+JhZrZXlzdXBsb2FkcmVxdWVzdF90eXBlAOMtG19fd2JnX2tl +eXNxdWVyeXJlcXVlc3RfZnJlZQCNJB1fX3diZ19nZXRfa2V5c3F1ZXJ5cmVxdWVzdF9pZAD3KB9f +X3diZ19nZXRfa2V5c3F1ZXJ5cmVxdWVzdF9ib2R5AP4mFWtleXNxdWVyeXJlcXVlc3RfdHlwZQDk +LRtfX3diZ19rZXlzY2xhaW1yZXF1ZXN0X2ZyZWUAjSQdX193YmdfZ2V0X2tleXNjbGFpbXJlcXVl +c3RfaWQA9ygfX193YmdfZ2V0X2tleXNjbGFpbXJlcXVlc3RfYm9keQD+JhRrZXlzY2xhaW1yZXF1 +ZXN0X25ldwDsSxVrZXlzY2xhaW1yZXF1ZXN0X3R5cGUA5S0aX193YmdfdG9kZXZpY2VyZXF1ZXN0 +X2ZyZWUAgBMcX193YmdfZ2V0X3RvZGV2aWNlcmVxdWVzdF9pZAD3KCRfX3diZ19nZXRfdG9kZXZp +Y2VyZXF1ZXN0X2V2ZW50X3R5cGUA/iYgX193YmdfZ2V0X3RvZGV2aWNlcmVxdWVzdF90eG5faWQA +/SYeX193YmdfZ2V0X3RvZGV2aWNlcmVxdWVzdF9ib2R5AP8mE3RvZGV2aWNlcmVxdWVzdF9uZXcA +li8UdG9kZXZpY2VyZXF1ZXN0X3R5cGUA5i0hX193Ymdfc2lnbmF0dXJldXBsb2FkcmVxdWVzdF9m +cmVlAIAaI19fd2JnX2dldF9zaWduYXR1cmV1cGxvYWRyZXF1ZXN0X2lkAKUhJV9fd2JnX2dldF9z +aWduYXR1cmV1cGxvYWRyZXF1ZXN0X2JvZHkA/SYac2lnbmF0dXJldXBsb2FkcmVxdWVzdF9uZXcA ++S8bc2lnbmF0dXJldXBsb2FkcmVxdWVzdF90eXBlAOctHV9fd2JnX3Jvb21tZXNzYWdlcmVxdWVz +dF9mcmVlAKIQH19fd2JnX2dldF9yb29tbWVzc2FnZXJlcXVlc3RfaWQA9ygkX193YmdfZ2V0X3Jv +b21tZXNzYWdlcmVxdWVzdF9yb29tX2lkAP4mI19fd2JnX2dldF9yb29tbWVzc2FnZXJlcXVlc3Rf +dHhuX2lkAP0mJ19fd2JnX2dldF9yb29tbWVzc2FnZXJlcXVlc3RfZXZlbnRfdHlwZQD/JiFfX3di +Z19nZXRfcm9vbW1lc3NhZ2VyZXF1ZXN0X2JvZHkAgCcWcm9vbW1lc3NhZ2VyZXF1ZXN0X25ldwD3 +Khdyb29tbWVzc2FnZXJlcXVlc3RfdHlwZQDoLRxfX3diZ19rZXlzYmFja3VwcmVxdWVzdF9mcmVl +ANgWHl9fd2JnX2dldF9rZXlzYmFja3VwcmVxdWVzdF9pZAD3KCBfX3diZ19nZXRfa2V5c2JhY2t1 +cHJlcXVlc3RfYm9keQD+JiNfX3diZ19nZXRfa2V5c2JhY2t1cHJlcXVlc3RfdmVyc2lvbgD9JhVr +ZXlzYmFja3VwcmVxdWVzdF9uZXcA+i8Wa2V5c2JhY2t1cHJlcXVlc3RfdHlwZQDpLSNfX3diZ191 +cGxvYWRzaWduaW5na2V5c3JlcXVlc3RfZnJlZQDaKSdfX3diZ19nZXRfdXBsb2Fkc2lnbmluZ2tl +eXNyZXF1ZXN0X2JvZHkA9ygcdXBsb2Fkc2lnbmluZ2tleXNyZXF1ZXN0X25ldwDdTyVfX3diZ19w +dXRkZWh5ZHJhdGVkZGV2aWNlcmVxdWVzdF9mcmVlANopKV9fd2JnX2dldF9wdXRkZWh5ZHJhdGVk +ZGV2aWNlcmVxdWVzdF9ib2R5APcoHnB1dGRlaHlkcmF0ZWRkZXZpY2VyZXF1ZXN0X25ldwDdTyhf +X3diZ19jcm9zc3NpZ25pbmdib290c3RyYXByZXF1ZXN0c19mcmVlAOAROV9fd2JnX2dldF9jcm9z +c3NpZ25pbmdib290c3RyYXByZXF1ZXN0c191cGxvYWRLZXlzUmVxdWVzdAD/JkBfX3diZ19nZXRf +Y3Jvc3NzaWduaW5nYm9vdHN0cmFwcmVxdWVzdHNfdXBsb2FkU2lnbmluZ0tleXNSZXF1ZXN0ANYl +P19fd2JnX2dldF9jcm9zc3NpZ25pbmdib290c3RyYXByZXF1ZXN0c191cGxvYWRTaWduYXR1cmVz +UmVxdWVzdADkHRVrZXlzdXBsb2FkcmVxdWVzdF9uZXcA7EsUa2V5c3F1ZXJ5cmVxdWVzdF9uZXcA +7EsVX193YmdfYXR0YWNobWVudF9mcmVlALUuEmF0dGFjaG1lbnRfZW5jcnlwdADlCBJhdHRhY2ht +ZW50X2RlY3J5cHQAkwYeX193YmdfZW5jcnlwdGVkYXR0YWNobWVudF9mcmVlAIMdF2VuY3J5cHRl +ZGF0dGFjaG1lbnRfbmV3AN0LIWVuY3J5cHRlZGF0dGFjaG1lbnRfZW5jcnlwdGVkRGF0YQDeGidl +bmNyeXB0ZWRhdHRhY2htZW50X21lZGlhRW5jcnlwdGlvbkluZm8Aygk2ZW5jcnlwdGVkYXR0YWNo +bWVudF9oYXNNZWRpYUVuY3J5cHRpb25JbmZvQmVlbkNvbnN1bWVkANspHV9fd2JnX2Nyb3Nzc2ln +bmluZ3N0YXR1c19mcmVlAOEwHGNyb3Nzc2lnbmluZ3N0YXR1c19oYXNNYXN0ZXIAgywhY3Jvc3Nz +aWduaW5nc3RhdHVzX2hhc1NlbGZTaWduaW5nAIQsIWNyb3Nzc2lnbmluZ3N0YXR1c19oYXNVc2Vy +U2lnbmluZwCFLB5fX3diZ19pbmJvdW5kZ3JvdXBzZXNzaW9uX2ZyZWUA/B4aaW5ib3VuZGdyb3Vw +c2Vzc2lvbl9yb29tSWQA5R0daW5ib3VuZGdyb3Vwc2Vzc2lvbl9zZW5kZXJLZXkA2xYdaW5ib3Vu +ZGdyb3Vwc2Vzc2lvbl9zZXNzaW9uSWQAyRIjaW5ib3VuZGdyb3Vwc2Vzc2lvbl9oYXNCZWVuSW1w +b3J0ZWQAhiwdX193YmdfZGVjcnlwdGVkcm9vbWV2ZW50X2ZyZWUA3xoiX193YmdfZ2V0X2RlY3J5 +cHRlZHJvb21ldmVudF9ldmVudACLKBlkZWNyeXB0ZWRyb29tZXZlbnRfc2VuZGVyAJIZH2RlY3J5 +cHRlZHJvb21ldmVudF9zZW5kZXJEZXZpY2UAhB0mZGVjcnlwdGVkcm9vbWV2ZW50X3NlbmRlckN1 +cnZlMjU1MTlLZXkA5CIqZGVjcnlwdGVkcm9vbWV2ZW50X3NlbmRlckNsYWltZWRFZDI1NTE5S2V5 +AMceL2RlY3J5cHRlZHJvb21ldmVudF9mb3J3YXJkaW5nQ3VydmUyNTUxOUtleUNoYWluAOcsHmRl +Y3J5cHRlZHJvb21ldmVudF9zaGllbGRTdGF0ZQDKEhlfX3diZ19lbmNyeXB0aW9uaW5mb19mcmVl +AP0eFWVuY3J5cHRpb25pbmZvX3NlbmRlcgCGIhtlbmNyeXB0aW9uaW5mb19zZW5kZXJEZXZpY2UA +viMiZW5jcnlwdGlvbmluZm9fc2VuZGVyQ3VydmUyNTUxOUtleQD6KiZlbmNyeXB0aW9uaW5mb19z +ZW5kZXJDbGFpbWVkRWQyNTUxOUtleQDlIhplbmNyeXB0aW9uaW5mb19zaGllbGRTdGF0ZQC/IxJf +X3diZ190cmFjaW5nX2ZyZWUA3CkTdHJhY2luZ19pc0F2YWlsYWJsZQDTUgt0cmFjaW5nX25ldwDL +EhR0cmFjaW5nX3NldF9taW5MZXZlbACKIA50cmFjaW5nX3R1cm5PbgDUCg90cmFjaW5nX3R1cm5P +ZmYA6godX193YmdfZW5jcnlwdGlvbnNldHRpbmdzX2ZyZWUA3TAmX193YmdfZ2V0X2VuY3J5cHRp +b25zZXR0aW5nc19hbGdvcml0aG0A6ikmX193Ymdfc2V0X2VuY3J5cHRpb25zZXR0aW5nc19hbGdv +cml0aG0AiycrX193YmdfZ2V0X2VuY3J5cHRpb25zZXR0aW5nc19yb3RhdGlvblBlcmlvZADxLCtf +X3diZ19zZXRfZW5jcnlwdGlvbnNldHRpbmdzX3JvdGF0aW9uUGVyaW9kAKEvM19fd2JnX2dldF9l +bmNyeXB0aW9uc2V0dGluZ3Nfcm90YXRpb25QZXJpb2RNZXNzYWdlcwDyLDNfX3diZ19zZXRfZW5j +cnlwdGlvbnNldHRpbmdzX3JvdGF0aW9uUGVyaW9kTWVzc2FnZXMAoi8uX193YmdfZ2V0X2VuY3J5 +cHRpb25zZXR0aW5nc19oaXN0b3J5VmlzaWJpbGl0eQDrKS5fX3diZ19zZXRfZW5jcnlwdGlvbnNl +dHRpbmdzX2hpc3RvcnlWaXNpYmlsaXR5AIwnNF9fd2JnX2dldF9lbmNyeXB0aW9uc2V0dGluZ3Nf +b25seUFsbG93VHJ1c3RlZERldmljZXMA7Ck0X193Ymdfc2V0X2VuY3J5cHRpb25zZXR0aW5nc19v +bmx5QWxsb3dUcnVzdGVkRGV2aWNlcwDtLRZlbmNyeXB0aW9uc2V0dGluZ3NfbmV3AJgdFl9fd2Jn +X3NoaWVsZHN0YXRlX2ZyZWUArRYbX193YmdfZ2V0X3NoaWVsZHN0YXRlX2NvbG9yANgpG19fd2Jn +X3NldF9zaGllbGRzdGF0ZV9jb2xvcgCNJxNzaGllbGRzdGF0ZV9tZXNzYWdlAOsVEV9fd2JnX3Vz +ZXJpZF9mcmVlAM01CnVzZXJpZF9uZXcA4hMQdXNlcmlkX2xvY2FscGFydADiERF1c2VyaWRfc2Vy +dmVyTmFtZQCnGxN1c2VyaWRfaXNIaXN0b3JpY2FsAI4nD3VzZXJpZF90b1N0cmluZwDjEwx1c2Vy +aWRfY2xvbmUAxSMTX193YmdfZGV2aWNlaWRfZnJlZQDNNQxkZXZpY2VpZF9uZXcAyh4RZGV2aWNl +aWRfdG9TdHJpbmcA4xMWX193YmdfZGV2aWNla2V5aWRfZnJlZQCcJA9kZXZpY2VrZXlpZF9uZXcA +zxUVZGV2aWNla2V5aWRfYWxnb3JpdGhtALwaFGRldmljZWtleWlkX2RldmljZUlkAKgbFGRldmlj +ZWtleWlkX3RvU3RyaW5nANoNHV9fd2JnX2RldmljZWtleWFsZ29yaXRobV9mcmVlAIEaF2Rldmlj +ZWtleWFsZ29yaXRobV9uYW1lAOQaG2RldmljZWtleWFsZ29yaXRobV90b1N0cmluZwDbDRFfX3di +Z19yb29taWRfZnJlZQDNNQpyb29taWRfbmV3AOQTD3Jvb21pZF90b1N0cmluZwDjExVfX3diZ19z +ZXJ2ZXJuYW1lX2ZyZWUA7SkOc2VydmVybmFtZV9uZXcA5RMPc2VydmVybmFtZV9ob3N0AOMRD3Nl +cnZlcm5hbWVfcG9ydACQIBZzZXJ2ZXJuYW1lX2lzSXBMaXRlcmFsAI8nEl9fd2JnX2V2ZW50aWRf +ZnJlZQDtKQtldmVudGlkX25ldwC3EBFldmVudGlkX2xvY2FscGFydADkERJldmVudGlkX3NlcnZl +ck5hbWUA0BUQZXZlbnRpZF90b1N0cmluZwDjExtfX3diZ19lZDI1NTE5cHVibGlja2V5X2ZyZWUA +tT4XZWQyNTUxOXB1YmxpY2tleV9sZW5ndGgAoy8ZZWQyNTUxOXB1YmxpY2tleV90b0Jhc2U2NADl +GhtfX3diZ19lZDI1NTE5c2lnbmF0dXJlX2ZyZWUA4TAUZWQyNTUxOXNpZ25hdHVyZV9uZXcAgAwZ +ZWQyNTUxOXNpZ25hdHVyZV90b0Jhc2U2NADmGh5fX3diZ19jdXJ2ZTI1NTE5cHVibGlja2V5X2Zy +ZWUAtj4aY3VydmUyNTUxOXB1YmxpY2tleV9sZW5ndGgAoy8cY3VydmUyNTUxOXB1YmxpY2tleV90 +b0Jhc2U2NADlGhdfX3diZ19pZGVudGl0eWtleXNfZnJlZQDhMB5fX3diZ19nZXRfaWRlbnRpdHlr +ZXlzX2VkMjU1MTkA6yIeX193Ymdfc2V0X2lkZW50aXR5a2V5c19lZDI1NTE5AJEnIV9fd2JnX2dl +dF9pZGVudGl0eWtleXNfY3VydmUyNTUxOQDnFyFfX3diZ19zZXRfaWRlbnRpdHlrZXlzX2N1cnZl +MjU1MTkA4BkUX193YmdfZGV2aWNla2V5X2ZyZWUA5xoOZGV2aWNla2V5X25hbWUAgywUZGV2aWNl +a2V5X2N1cnZlMjU1MTkA+BMRZGV2aWNla2V5X2VkMjU1MTkA3BgRZGV2aWNla2V5X3Vua25vd24A +7BUSZGV2aWNla2V5X3RvQmFzZTY0AOgaHF9fd2JnX2RlaHlkcmF0ZWRkZXZpY2VzX2ZyZWUA7ikY +ZGVoeWRyYXRlZGRldmljZXNfY3JlYXRlAJEzG2RlaHlkcmF0ZWRkZXZpY2VzX3JlaHlkcmF0ZQCO +KBtfX3diZ19yZWh5ZHJhdGVkZGV2aWNlX2ZyZWUAoSQecmVoeWRyYXRlZGRldmljZV9yZWNlaXZl +RXZlbnRzAPAtG19fd2JnX2RlaHlkcmF0ZWRkZXZpY2VfZnJlZQDvKR5kZWh5ZHJhdGVkZGV2aWNl +X2tleXNGb3JVcGxvYWQA8S0RX193YmdfZGV2aWNlX2ZyZWUAghoaZGV2aWNlX3JlcXVlc3RWZXJp +ZmljYXRpb24ApRARZGV2aWNlX2lzVmVyaWZpZWQAhCscZGV2aWNlX2lzQ3Jvc3NTaWduaW5nVHJ1 +c3RlZACFKxtkZXZpY2VfaXNDcm9zc1NpZ25lZEJ5T3duZXIAhisUZGV2aWNlX3NldExvY2FsVHJ1 +c3QAtxwNZGV2aWNlX3VzZXJJZAC4HA9kZXZpY2VfZGV2aWNlSWQAuRwSZGV2aWNlX2Rpc3BsYXlO +YW1lAI8RDWRldmljZV9nZXRLZXkAjgkUZGV2aWNlX2N1cnZlMjU1MTlLZXkAgxMRZGV2aWNlX2Vk +MjU1MTlLZXkAuxcLZGV2aWNlX2tleXMAzQYRZGV2aWNlX2FsZ29yaXRobXMAlCARZGV2aWNlX3Np +Z25hdHVyZXMAxyMWZGV2aWNlX2xvY2FsVHJ1c3RTdGF0ZQCVJxdkZXZpY2VfaXNMb2NhbGx5VHJ1 +c3RlZAD9KBRkZXZpY2VfaXNCbGFja2xpc3RlZAD+KBBkZXZpY2VfaXNEZWxldGVkAP8oFGRldmlj +ZV9maXJzdFRpbWVTZWVuALkuDWRldmljZV92ZXJpZnkAhyITZGV2aWNlX2lzRGVoeWRyYXRlZACH +KxZfX3diZ191c2VyZGV2aWNlc19mcmVlAIMaD3VzZXJkZXZpY2VzX2dldACtChl1c2VyZGV2aWNl +c19pc0FueVZlcmlmaWVkAIgrEHVzZXJkZXZpY2VzX2tleXMAoiQTdXNlcmRldmljZXNfZGV2aWNl +cwD6JRpfX3diZ19vd251c2VyaWRlbnRpdHlfZnJlZQCIHBpvd251c2VyaWRlbnRpdHlfaXNWZXJp +ZmllZACJKxZvd251c2VyaWRlbnRpdHlfdmVyaWZ5AIgiI293bnVzZXJpZGVudGl0eV9yZXF1ZXN0 +VmVyaWZpY2F0aW9uAOURIm93bnVzZXJpZGVudGl0eV90cnVzdHNPdXJPd25EZXZpY2UAiSIZb3du +dXNlcmlkZW50aXR5X21hc3RlcktleQCLEB5vd251c2VyaWRlbnRpdHlfc2VsZlNpZ25pbmdLZXkA +jBAeb3dudXNlcmlkZW50aXR5X3VzZXJTaWduaW5nS2V5AI0QF19fd2JnX3VzZXJpZGVudGl0eV9m +cmVlAIkcF3VzZXJpZGVudGl0eV9pc1ZlcmlmaWVkAIorE3VzZXJpZGVudGl0eV92ZXJpZnkAyCMg +dXNlcmlkZW50aXR5X3JlcXVlc3RWZXJpZmljYXRpb24AmgkndXNlcmlkZW50aXR5X3ZlcmlmaWNh +dGlvblJlcXVlc3RDb250ZW50AKYQFnVzZXJpZGVudGl0eV9tYXN0ZXJLZXkAixAbdXNlcmlkZW50 +aXR5X3NlbGZTaWduaW5nS2V5AIwQFl9fd2JnX3N0b3JlaGFuZGxlX2ZyZWUA8CkQc3RvcmVoYW5k +bGVfb3BlbgD2LCBfX3diZ19jcm9zc3NpZ25pbmdrZXlleHBvcnRfZnJlZQCUGR9jcm9zc3NpZ25p +bmdrZXlleHBvcnRfbWFzdGVyS2V5AOkaJmNyb3Nzc2lnbmluZ2tleWV4cG9ydF9zZWxmX3NpZ25p +bmdfa2V5AIQaJGNyb3Nzc2lnbmluZ2tleWV4cG9ydF91c2VyU2lnbmluZ0tleQCFGhZfX3diZ19y +b29ta2V5aW5mb19mcmVlAIocFXJvb21rZXlpbmZvX2FsZ29yaXRobQDsIhJyb29ta2V5aW5mb19y +b29tSWQAhiIVcm9vbWtleWluZm9fc2VuZGVyS2V5AN4YFXJvb21rZXlpbmZvX3Nlc3Npb25JZACG +GhZfX3diZ19kZXZpY2VsaXN0c19mcmVlANMQD2RldmljZWxpc3RzX25ldwCNBhNkZXZpY2VsaXN0 +c19pc0VtcHR5AIsrE2RldmljZWxpc3RzX2NoYW5nZWQAphcQZGV2aWNlbGlzdHNfbGVmdACRFhVf +X3diZ19zaWduYXR1cmVzX2ZyZWUAlRkOc2lnbmF0dXJlc19uZXcA0TUXc2lnbmF0dXJlc19hZGRT +aWduYXR1cmUA6AgXc2lnbmF0dXJlc19nZXRTaWduYXR1cmUArQ8Oc2lnbmF0dXJlc19nZXQA5QUQ +c2lnbmF0dXJlc19jbGVhcgDtMBJzaWduYXR1cmVzX2lzRW1wdHkAjCsQc2lnbmF0dXJlc19jb3Vu +dACNKxFzaWduYXR1cmVzX2FzSlNPTgCNDxRfX3diZ19zaWduYXR1cmVfZnJlZQCFHxFzaWduYXR1 +cmVfZWQyNTUxOQCmGBJzaWduYXR1cmVfdG9CYXNlNjQA6hoZX193YmdfbWF5YmVzaWduYXR1cmVf +ZnJlZQCnGBZtYXliZXNpZ25hdHVyZV9pc1ZhbGlkAPEpGG1heWJlc2lnbmF0dXJlX2lzSW52YWxp +ZADyKRhtYXliZXNpZ25hdHVyZV9zaWduYXR1cmUA7g0lbWF5YmVzaWduYXR1cmVfaW52YWxpZFNp +Z25hdHVyZVNvdXJjZQDtFSBfX3diZ19zaWduYXR1cmV2ZXJpZmljYXRpb25fZnJlZQC7FiFzaWdu +YXR1cmV2ZXJpZmljYXRpb25fZGV2aWNlU3RhdGUAjSwfc2lnbmF0dXJldmVyaWZpY2F0aW9uX3Vz +ZXJTdGF0ZQCOLB1zaWduYXR1cmV2ZXJpZmljYXRpb25fdHJ1c3RlZACOKx5fX3diZ19yb29ta2V5 +aW1wb3J0cmVzdWx0X2ZyZWUA6BMrX193YmdfZ2V0X3Jvb21rZXlpbXBvcnRyZXN1bHRfaW1wb3J0 +ZWRDb3VudADzKShfX3diZ19nZXRfcm9vbWtleWltcG9ydHJlc3VsdF90b3RhbENvdW50APQpGHJv +b21rZXlpbXBvcnRyZXN1bHRfa2V5cwCNBBdfX3diZ19yb29tc2V0dGluZ3NfZnJlZQDdMCBfX3di +Z19nZXRfcm9vbXNldHRpbmdzX2FsZ29yaXRobQD1KSBfX3diZ19zZXRfcm9vbXNldHRpbmdzX2Fs +Z29yaXRobQCWJy5fX3diZ19nZXRfcm9vbXNldHRpbmdzX29ubHlBbGxvd1RydXN0ZWREZXZpY2Vz +APYpLl9fd2JnX3NldF9yb29tc2V0dGluZ3Nfb25seUFsbG93VHJ1c3RlZERldmljZXMA8i0uX193 +YmdfZ2V0X3Jvb21zZXR0aW5nc19zZXNzaW9uUm90YXRpb25QZXJpb2RNcwCKIi5fX3diZ19zZXRf +cm9vbXNldHRpbmdzX3Nlc3Npb25Sb3RhdGlvblBlcmlvZE1zAIApNF9fd2JnX2dldF9yb29tc2V0 +dGluZ3Nfc2Vzc2lvblJvdGF0aW9uUGVyaW9kTWVzc2FnZXMA8CA0X193Ymdfc2V0X3Jvb21zZXR0 +aW5nc19zZXNzaW9uUm90YXRpb25QZXJpb2RNZXNzYWdlcwCXJxByb29tc2V0dGluZ3NfbmV3AIkw +Dl9fd2JnX3Nhc19mcmVlAJUgCnNhc191c2VySWQA5h0Mc2FzX2RldmljZUlkAOcdD3Nhc19vdGhl +clVzZXJJZADoHRFzYXNfb3RoZXJEZXZpY2VJZADpHQpzYXNfZmxvd0lkALESCnNhc19yb29tSWQA +6h0Rc2FzX3N1cHBvcnRzRW1vamkAjysWc2FzX3N0YXJ0ZWRGcm9tUmVxdWVzdACQKxZzYXNfaXNT +ZWxmVmVyaWZpY2F0aW9uAJErE3Nhc19oYXZlV2VDb25maXJtZWQAkisTc2FzX2hhc0JlZW5BY2Nl +cHRlZACTKw5zYXNfY2FuY2VsSW5mbwCXFA1zYXNfd2VTdGFydGVkAI8sCnNhc19hY2NlcHQA3A0L +c2FzX2NvbmZpcm0A/wQKc2FzX2NhbmNlbADdDRJzYXNfY2FuY2VsV2l0aENvZGUA8goMc2FzX3Rp +bWVkT3V0AJQrEnNhc19jYW5CZVByZXNlbnRlZACVKwpzYXNfaXNEb25lAJYrD3Nhc19pc0NhbmNl +bGxlZACXKwlzYXNfZW1vamkA6gsOc2FzX2Vtb2ppSW5kZXgApg0Mc2FzX2RlY2ltYWxzAOMOG3Nh +c19yZWdpc3RlckNoYW5nZXNDYWxsYmFjawDrGg1fX3diZ19xcl9mcmVlAJYgCHFyX3N0YXRlAOAY +EXFyX2hhc0JlZW5TY2FubmVkAJgrE3FyX2hhc0JlZW5Db25maXJtZWQAmSsJcXJfdXNlcklkAOsd +DnFyX290aGVyVXNlcklkAOwdEHFyX290aGVyRGV2aWNlSWQA7R0McXJfd2VTdGFydGVkAJAsDXFy +X2NhbmNlbEluZm8AmBQJcXJfaXNEb25lAJorDnFyX2lzQ2FuY2VsbGVkAJsrFXFyX2lzU2VsZlZl +cmlmaWNhdGlvbgCcKw9xcl9yZWNpcHJvY2F0ZWQAnSsJcXJfZmxvd0lkAMwSCXFyX3Jvb21JZADu +HQtxcl90b1FyQ29kZQD+DApxcl90b0J5dGVzAN8PDnFyX3JlY2lwcm9jYXRlAN4NEnFyX2NvbmZp +cm1TY2FubmluZwDfDQlxcl9jYW5jZWwA4A0RcXJfY2FuY2VsV2l0aENvZGUA8woacXJfcmVnaXN0 +ZXJDaGFuZ2VzQ2FsbGJhY2sA7BoVX193YmdfY2FuY2VsaW5mb19mcmVlALISEWNhbmNlbGluZm9f +cmVhc29uAPskFWNhbmNlbGluZm9fY2FuY2VsQ29kZQDhDRhjYW5jZWxpbmZvX2NhbmNlbGxlZGJ5 +VXMAkSwQX193YmdfZW1vamlfZnJlZQDhMAxlbW9qaV9zeW1ib2wAmCcRZW1vamlfZGVzY3JpcHRp +b24A/CQRX193YmdfcXJjb2RlX2ZyZWUA/BEXcXJjb2RlX3JlbmRlckludG9CdWZmZXIAsxIVX193 +YmdfcXJjb2Rlc2Nhbl9mcmVlAIscFHFyY29kZXNjYW5fZnJvbUJ5dGVzAJwIHl9fd2JnX3Zlcmlm +aWNhdGlvbnJlcXVlc3RfZnJlZQCODxt2ZXJpZmljYXRpb25yZXF1ZXN0X3JlcXVlc3QAtQYddmVy +aWZpY2F0aW9ucmVxdWVzdF9vd25Vc2VySWQA7x0fdmVyaWZpY2F0aW9ucmVxdWVzdF9vdGhlclVz +ZXJJZADmHSF2ZXJpZmljYXRpb25yZXF1ZXN0X290aGVyRGV2aWNlSWQAjh4admVyaWZpY2F0aW9u +cmVxdWVzdF9yb29tSWQA8B0edmVyaWZpY2F0aW9ucmVxdWVzdF9jYW5jZWxJbmZvAJkUHXZlcmlm +aWNhdGlvbnJlcXVlc3RfaXNQYXNzaXZlAJ4rG3ZlcmlmaWNhdGlvbnJlcXVlc3RfaXNSZWFkeQCf +Kxx2ZXJpZmljYXRpb25yZXF1ZXN0X3RpbWVkT3V0AKArJ3ZlcmlmaWNhdGlvbnJlcXVlc3RfdGlt +ZVJlbWFpbmluZ01pbGxpcwC8Fyl2ZXJpZmljYXRpb25yZXF1ZXN0X3RoZWlyU3VwcG9ydGVkTWV0 +aG9kcwD8Cid2ZXJpZmljYXRpb25yZXF1ZXN0X291clN1cHBvcnRlZE1ldGhvZHMA/QoadmVyaWZp +Y2F0aW9ucmVxdWVzdF9mbG93SWQAtBImdmVyaWZpY2F0aW9ucmVxdWVzdF9pc1NlbGZWZXJpZmlj +YXRpb24AoSsddmVyaWZpY2F0aW9ucmVxdWVzdF93ZVN0YXJ0ZWQAkiwadmVyaWZpY2F0aW9ucmVx +dWVzdF9pc0RvbmUAoisZdmVyaWZpY2F0aW9ucmVxdWVzdF9waGFzZQDxHSN2ZXJpZmljYXRpb25y +ZXF1ZXN0X2dldFZlcmlmaWNhdGlvbgD3Dit2ZXJpZmljYXRpb25yZXF1ZXN0X3JlZ2lzdGVyQ2hh +bmdlc0NhbGxiYWNrAO0aH3ZlcmlmaWNhdGlvbnJlcXVlc3RfaXNDYW5jZWxsZWQAoysldmVyaWZp +Y2F0aW9ucmVxdWVzdF9hY2NlcHRXaXRoTWV0aG9kcwC1Chp2ZXJpZmljYXRpb25yZXF1ZXN0X2Fj +Y2VwdADiDRp2ZXJpZmljYXRpb25yZXF1ZXN0X2NhbmNlbADjDRx2ZXJpZmljYXRpb25yZXF1ZXN0 +X3N0YXJ0U2FzAMkjInZlcmlmaWNhdGlvbnJlcXVlc3RfZ2VuZXJhdGVRckNvZGUAyiMedmVyaWZp +Y2F0aW9ucmVxdWVzdF9zY2FuUXJDb2RlANwGE19fd2JnX3ZlcnNpb25zX2ZyZWUAgBMcX193Ymdf +Z2V0X3ZlcnNpb25zX3ZvZG96ZW1hYwD3KCRfX3diZ19nZXRfdmVyc2lvbnNfbWF0cml4X3Nka19j +cnlwdG8A/iYaX193YmdfZ2V0X3ZlcnNpb25zX2dpdF9zaGEA/SYiX193YmdfZ2V0X3ZlcnNpb25z +X2dpdF9kZXNjcmlwdGlvbgD/JgtnZXRWZXJzaW9ucwCTDgVzdGFydACkKxFfX3diaW5kZ2VuX21h +bGxvYwDLLRJfX3diaW5kZ2VuX3JlYWxsb2MAzDITX193YmluZGdlbl9leHBvcnRfMgEAH19fd2Jp +bmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIApks/d2FzbV9iaW5kZ2VuX19jb252ZXJ0X19jbG9z +dXJlc19faW52b2tlMV9tdXRfX2gyNzQ0OWVkNjVmNDU4ZGZkANsleV9keW5fY29yZV9fb3BzX19m +dW5jdGlvbl9fRm5fX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dh +c21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDc2OWQ4MjBkZTE4OTExMDUAyj13X2R5bl9j +b3JlX19vcHNfX2Z1bmN0aW9uX19Gbl9fX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Ns +b3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faGVlMzJhNTc3MWQ5MTRiZDkA +yD58X2R5bl9jb3JlX19vcHNfX2Z1bmN0aW9uX19Gbk11dF9fQV9fX19PdXRwdXRfX19SX2FzX3dh +c21fYmluZGdlbl9fY2xvc3VyZV9fV2FzbUNsb3N1cmVfX19kZXNjcmliZV9faW52b2tlX19oMGFi +MDE5OTBiN2Y5MTVhZADsPT93YXNtX2JpbmRnZW5fX2NvbnZlcnRfX2Nsb3N1cmVzX19pbnZva2Uw +X211dF9faGIzMDBiNTZlYWYyMGRiMTgA4T4PX193YmluZGdlbl9mcmVlAItFFF9fd2JpbmRnZW5f +ZXhuX3N0b3JlAIVKP3dhc21fYmluZGdlbl9fY29udmVydF9fY2xvc3VyZXNfX2ludm9rZTJfbXV0 +X19oMWE0NWE1MmNlNGExMjU0ZAD7PRBfX3diaW5kZ2VuX3N0YXJ0AKQrCYI2BQBBAQuoBfxS2U/8 +UvxJr0yoTOkpoVCOUv9PpVDkS4NQn1GEUJ9SlVLUT5JSslGRUvJPwlCmUrFMzVCUUsdQy1ClUptQ +80+oUq9SqlLKULVRrVLzT7BS40vbUaBS00+cUPBPilCzUPdPlFDDULBMm1GnTPZPoFCaUJBRn1Ci +UKhQ/k+pUKNS+U+eUOJLl1D1T5hRsFCYUKxQtVDuT9hP8U+5UNRQmVKPUoJQt1D8T8ZQuFCJUK5S ++0+aUZZQmVCHULpQkFL6T6pRgVCVUIVQqlCdULRQp1CgUK5Qskz4T8RQ70+vUKRQslCXUfRP+FGG +UNZP/U+tUIBQiFC2UMgJhEnaScAIuhf8Up5H3UXPRtBG2kTVRdNGyEXERfxS/VKfR9JGykXjRfxS +oEe+RelF4kXCRadL9EG9RutFyUXhRcdFv0XcRdJF2EWPSpYLlE/HS8hLlkH9Fto0kAzUMoAd8kLo +M8tSy1LLUstSylKVM85NlU/QT+ZNzk7nTZ9F4yiaTdsnqwitR7Ee4E3kTMYUnh+XTtYxuC/STYZF +yQnCCsII7Bn1JqlP4gj8UtZG/FL9UrlF50XXRrpF6kXDRb1Fz0XMRd5FzkXURdZF5EXARdFF6EXG +RbtF7EXQRc1FwUbBRdpFp0u4RdlF4EXQT49KlgvXS9o02EvyQstSy1LLUstSy1LLUspSow7XCP0k ++j7iSPJLn0XnKN5M0TvNTdVNohatR9YxiE3DCLhMwwrjCPYm/FL8Uv1S/FLlRadLj0qWC9pL20vW +Mto08kLLUstSy1LLUstSy1LLUspS+j7QT9E7n0XuKK1H1jH8UuRL6VD8UshQzFDAULxQwVDFUL5Q +vlCjUNdPv1DVT79Q2k+/UL5QgSSxUrFQvVDJUNpP+j7aMJdM/FLaG+Ay1zK5N99L3zLYMrg33kvd +MtoyuzfgS94y2zK6N91L3DLZMrc34UvFRadLj0r9GOdL4TLKUtJPg0PRT+VLjk/dGY5F20/ZFNYZ +3xTaGdQZ2xnVGdgZ/yTbFNMZ3BmfJ+IUhkOgQfUoniWnTr8/5DP8UvgmoiXPTeY0sSP3SdhHzjH+ +UtEYzwSuC8Ucukj7MPxS7E+HUrtQ00+ZUZ5ShlK9UsxS4Sb8UuwTogvTTNlM/FLjMc8v1jH8UstH +p0uPSpYL60uWQdo0/FLTPM1S5jGkS/xS60/pT+pP4Tn7CN85+QbeOfoImC//UsQs+jXWRM0mjjS5 +PPo1pjW2MLUwtDDwS8wToUrBGdBS4k/mT85S50/uS+1L4U/lT+RP40/gT4BT6E/vIuBH3Q7UE6wK +5BebGJoYoRfZGNgY1xjZFu9LwBGMGYJAlwifCfU/6Qr5C6ZA2wujEJU9rA7GD7EJswrXCfsKiwmE +Cdw//w6oD4AKwguBCsMLlj3MDd8M0A+wC8QHlQnEDdMKggrEC8cP4xDaD94O2w/fDpc99Q2AD+Y/ +xQ3YDe8JoAu0EKkPuA6XC9wLyA/xCp4MgQ/gDsULgwqtDpEOtQy0DNwP4Q6qD8wL4g7dD/xSvkbm +Raw+iCCuPoMirT6EIqs+hyDPUs9Sz1LaNPsy0lLqRspSylLKUtFS+jLKUutM5xSgB9A60TqPJNgl +6jSsLqou4jrpOs03gDXgOtU6+jTcOvU0qC7vNPM0xDf8NMs35zr9NMY3yDfxNO00+Cj3NIAs2DrQ +T9sb3jHqTfo+4kjAOIkg1D+yNKVAqCGBHa4MrkX3S9gM3TnfMINM4DCATNkM+EvcDPVL3Qz8S9IN +gkzeMP9L1gz+S9cM+0vaDIFM1Qz5S9sM+kvUDf1L0w2ETOUQ9EvkEK0MrwwAQaoFC5IJ2yXPN6BL +hDjjSORH5TOLT/NOp0vkR+1H7U/7SYlM7U/+UvxSvEXaGLIL50f8Uv1SmC//UuJP5k/OUudP7kvt +S+FP5U/kT+NP4E+AU+hPoUqCNeETti70AowzoQWDM5kD3iXECOYwxAWHM/gBnwWCM84DogWBNeQS +oAWGM+0BiDOWAoQz/QGJM+ABijPrAYUz2QKBM5UDgDOrBIM14xKLM68C6gW4Nv8erjalE6o2iB21 +NvYPsjbhGrA2/h6vNoodujaHHbw2ix22NuAasTb3D7s2jB20NoYdqzaJHbc29Q+5NoUdszb0D602 +jB6sNo0ey1LyQspSwAr8UuMx1jHrTdNO0E/NKZZMmCClIOAPlyCXJMokmCSIKuQpliT/L48wniSp +TKVNuRSBP/xSik7UUtgV3kziSKpLkUmnS+1HlUzVUsoVuk38Uv1Sy0XXRY9KlguYTJlM5jSJQ6Mn +oiehJ9BPp0uPSscK/FKhTKJMkDP8UrRMsQ/JNe06zDXuOss1mj3KNbQ+yzWaPbU06jCkGIE//FKe +QJxA8zP7QJQn/U2iSqNK/FKEMPclgjDYB9Y3pS+GMNARgzCBDIEw+CWFMIQP0DXiGM414RjPNd8Y +p0uPSpYLpUzmNN9D20OnSMs94EPzUppI10OhSLg94EOcSNxDqEi8PZNI1UOgSMA94EOVSNlDpUjB +PeBDm0jeQ6JIuj3gQ5lI2kOmSLs9lkjdQ6RIvj3gQ5RI1kOfSMI94EOXSNRDqUi5PZ1I0kOjSLc9 +kkjTQ55Ivz2YSNhDqki9PeYT3k/POtI6jiTXJes0rS6rLuM66jrMN/803zrWOvk03Tr2NKku8DT0 +NMU3+zTKN+Y6/jTHN8k38jTuNPko+DSBLNk66zqmJN4WgSfNEuMU7hq1TLQXpEyKQ6ZDiEOfTN0U +3RazTIpMnR2mSrdM3kyKTJNMoEqAJYElqkr8Up5MlEyjTKck2BS8HNwUgiWnD+Af5BTeFNEeplCm +UM1S5jHVRPJClTPLUstSylL8UqtQ/FLZE/xSq0y/P7o0+j6nS+1H/FKBTqpL/FL9Upcz2gGtM4IL +mDOBC6QzgAnCM4IIszPTB7gz9QmwM+kIqTPMCcUzyAefM/8KwTPbCLozmwqjM8sJvDPrBbEz/QW+ +M9QImjPaCq8z7AmyM5cJpjPjCcYzjgadM50KmTOcCqcz4AqsM9sKwzPJB7Qz3AqhM98KoDOeCrsz +3Qq9M+8IpTPVCqIz1wquM+YJqjPZCrUz6wrkCbkz7QmbM9YKwDPYCp4z3gq/M6sHxDObCasz5Qmo +M4ALnDPhCrYz+Ae3M9kJj0qWC61MxzPKUv5M/FLbRdZS30XTRfVI7UXuRdtPzz+wNN5M11LIM6gk +2FKVI5wy+zH6MbM57kjrOeJH6znhR6xFkgScBfQ2+A/TNoYf7jaKH+E2niDJNp4d0jagHek2oSDU +NpYe8zagHuI2nyDeNpwe4zaIH+Y2pB3YNqEd2jaYHvI2qB3VNpwg2zaZHu82oiDXNpceyjaTHtk2 +hx/RNpsg7TafHsU2jx7HNpEeyzafHfA2px3rNq4T0DatE+Q2ox3oNqUd3TabHsg2kh7nNokfxjaQ +HvE2ix/NNpkg3zadHs82lR7sNp4e4DaiHcw2lB7WNp0g9TahHuU2oCDONpog3DaaHuo2ph3kR/xS +jR+/P7c01DWkJ/o+2hajIPxSrxL9MdQ/tjStTfxSuBCSII4f3k2STK1F3xaMQ95MtkzgFt5N4BTZ +GawkjEy0HOUU4RnXGd5M2hSDIPNL4RTwTotDmE3hFuUpikyLTM4ptRyqTJAk8kLLUoQbhR6nS9BJ +mCrWMbgvyBPFFIMqgiqEKpwdoEykIPFLiSq+Ds4Shxq5SP9H+DD+Uv4xwCyoGKIazEfZMKdLnkud +LO1Pm0mRSO1PjTWRB44LhRv0R+4wmUD3C5AV9COJSaMxxw2RD6YKkxKFSPYwohK3BsYIjQ6NSawx +yAqtB8kKyxaMSP9H9DD+UqsdkwrNCZATikmhMc9QjUjyGvcG/wy8Jo5I9TDaNK0klgf7C9wTiEmi +MdFDgDLOUKcrgkj/R/Mw/lLKQ49IxkODSM9Dh0jNQ4AyzlCnK5BI/0fzMP5Sx0OJSMtDgEjOQ4hI +0EOESLlMhkjFQ4FIzEOLSMRDikiLSs9NyCf/KZIln0WGKYtK8kugJ8MJ5A6nS+1HrUfWMa0qwCDD +HbQq/FLoTYVO4zGlFdNRtk6wS9lHh0OlJPxS/DGnS69KmAu6TPxSu0z8UoRRs1GFUYdR4lD8UuNQ +4VDuUPFQ4FD1UehQu1HhUeVQiFHfUbFR3FHyUfdQ+lDXUPBR1lHrUMtRz1HLUf1Q4FHyUO9QgFLs +UPRR0lHQUNhQ01DVUNVR+1D2UPtR9FD8UNZQ7VDjUf9R71HiUdpQ31DmUOpQ+VD1UPhQ61HZUPNQ +0FHsUflR/lHKTKdLj0qWC/xSwEyWQctS8kLZUtMz7Uf8Us1S5jGPHOYCzg3fAa8k7QK/LswC2zfA +A8oz7ALHA4cplAKsL/UCyTO4A/o7hQKnIKIDrBvjAogp2ALjGb8C4zjUBIkDzDOzA8szpAOzBM4z +1wP8Ut0FkjCmA88z0gPNQMUFriT5AsQDywPNA7hIhwWPCc0zzQKMCfxSzVLmMeRH/FLgCZYW7U+8 +SLtI/lLaGLQL2jTWMfxS4zGRKtASvUj+UvxSxASUH/xS/DGnS+1H6kbGBKdLj0qWC/xSy0y0UvxS +zVLmMfxS5FDRUOdQ0lCWQdBP/FLdUN5Q/FKEHvxS8FD8UvxS0jT+UPxShlH8UoNR/VCAUYFRglHj +SOpG/FKlK6gIyVL3IdhIqRb2If5S/FLvDqYs7U/PSMRI7U/WMZ8lxU7mTNpM5UziTOFM30ynS49K +uwqwT/xS3Ez3OpoU/w3FPtdIxUjGPv5S0lLiJvst5En7LepM7U/USMVI7U/+UoYtxS7DBckLuCfD +SLcn3lD8UrgvhkXeTMw7qCztT8tI3UySTrIgg0TTSIRE1jH8Us8v1jH8UvxS2zPgTPxS6UynS4lM +2lKJUcpKw0GnS6ks/FLjTNVI/FKlK/5S50yzIIVE1kj+UvxSpSv8UqgmlkHbUsou/FKXMJkwAEG+ +DgvNBpZB1EDtTLgk1EDuTJgZyD7PN8c+yT3KPYsplkH8Upgw2kjeM7wK1UDvTJkW6kb8UoxRp0uP +SpYL8EyqRuRHp0uPSpYL/FLxTPxSz1CNUe1P4EjdSO1P/lK5TLwvzlCqKN5I3Uj+UvxS4ASeDfJM +30OJRN9I81KnS+1Hzz/8Uqowgk6nKvlM/0ymMrhNuya0Td5MmE77TN5Mvk2aTqIfqxejH4dNi06G +TdwkvE2LTYVNiU2KTZtNhk6sLIxNp0uwMPxS+j6qS9o03wvQCfJCy1LfTdNN1E36DcpNiE6hKt5N +xk22TchN/k2pKslNy03eTNBNxST8UttP/TqATtBP7UeQOMUn+0DLJ/4fiCHCJ8knwCf/SP9Ikinc +UtcVsznxSLM5zUbFRthAkCnNUuYxkw+uTfw8uiDBMKdNiU/8UqVRpFGTUZFRklGPUbBRp0uPSpYL +qE3fHctS0D2DPMtSy1LyQvxS6DPdUs8XqU29TeRMw07AFpgO/FLJT5lNzCCrEsEgzSC+HcYkuyDD +JMskwSS1Kp8qzySeMKgwrCrRJKIqzSSQRZMp3lLVFYBN+j7iSMdNkEWUKcBG/Dy8IPk5qhfsM78o +/FLNUuYxojCkMKMwpjChMKAwpk2kTbMqpTCgKtQk8kLLUstSy1LLUstSy1LLUstS0E/8UsYgxSDD +IOg58Ei4ObFN1UbaRs1S5jHEJKUqqyrIJK8wySTML8pG/FL9UoE/vUySSd9S8jPXUvEz/EzaSe1N ++j7eIaAW/FK3TadLj0qWC/xSwU3aNMtS+j6dSb8gu02kKqtLlUnATZRJv02WSfxN7Uf8UpBFmSnJ +QK4p+kz8UtMngU27NLk0p0vtR/xSyifUUpUF2weQJY9Klgv8UthN3x3LUstS8kL8Upcl+0DYJ8A7 +nSmTJaElqTDvEd5M+j6QRZsprUvhSbEw4kjDO7Ae2yP9TaswrirOJJkytx2vKrgduR3QJJwqyyCb +Kr0dwR3SJJBF9D3/Pe4S2UbaQNhGqCrXJ4JNnCm/P4wh0U2VQdYnxiehH9on5CaDTskpwiCOJaoq +pU3gUtYV0z7ZJ8EpjSHEJ+JIwkbURr85hUWUBLM570j8UsZG2ECaKc1S5jHXUvUz1Sf9PeRH3x3y +QstSy1LLUstS/FLQT/xS0UbIRs1S5jH9LvxS4k33M+NN/FLFTvRN103WTadNzE3lTPJC7UCdHMtS +/FLHJ51AoQbwEtYry0mHSbYx/lLmNKoRyAj8UuwFmgv1HOBJh0nGMf5S1jHQT/xS/TGYO5Y7lzuZ +O41PyTXtOuw1gzvoNZc87jXgPek1gTvnNd898DXhPeo1gjvnNd897zWEO+01mTzrNZg87zWEO81S +5jGBP9E72ECfKdRH+zjHIPxSp0vtR5A43CeqS/o+phbyQuFS/FLuTbRR/02jTYY7h06mKsQg90yE +TZgypB/lTZ4q+03BJ/hMhE6RJb8/szSQRfY91T+0NKtLjkn8UrhRt1HHRsRGw0bNUuYxwh3VJOJS ++jP7M/wzr038Uqo8uznBRLBN20/PP9sg3CDkR+xNs07zTdRO/FKgUaBRo1GjUaFRolGiUaJRolGi +UfxSp0uPSsoK9U3lDtIJ9k3aNK0k/gv3TZlAmhXWMdYxqVG6UZ5RuVG5LPxS20/MRr9GzVLmMdhA +oCnORslGy0atR6dL7UenRfc9+0DiJ/xSjyXjUp0fmzCuMLxHuyyBP6dFpin8Up5AlSHDJ69Lk0mo +KdIGpymtCKkprAinS49Klgv8UoxO4EaqKd8d8kLLUstSy1LLUstSy1LLUstSy1LLUstSy1LLUstS +/FLQT4NN/FLjMf1M/FLyE7YJ+D/5BZhJyw+eBeUByCvJK5ME4xzcP8AG9T+mC6cOpkCeCPoFoxTL +E8kRzCayMJgGlxDTBtwD/g3fCMwOrxCVB8gGuEjuC9sRzwPNUuYxtU25TZNO1USRTr5R/FLQL99M +lE78Uvk1wiz4NcEsnEmVTuFK4kbcPoM53T7pPfxSzVLmMfxSwyztT89InkntT/5S0E/WMaAl4SSJ +N/9SizvpRvVSnRX+Uv5S6Ub/UrMPxhClDIBTgQ6ODu49/FL8UuhGv1HqRplOo078UuUbqDL8Uv0x +/FLbT6kyqjKqRtdEqkbAUcFR5FKLN4w3jjf8Nf41kDeQNJE0ghSKN403jzf7Nf01kTePNJI07QrF +LPxSo0miSZxO/FLjH55OmC//UvBLoUrqPew9qzL8UuZGlDS+KpU0vyoAQYwVC2TlUpY0oArjSv81 +wSriLvM3pE7jSMASqkaeT/xSqDL9MfxS20+pMqoy/FKTN5Q3lTeANoE2lje9FagGgATiSKdL5ErP +C5tO4hX8UqdJ/FLCUa0ylzTmUpg08kL8Uqg1xFH8Up9OoE6rSfxSxlHFUYxF9lL8UqFOnU7kH/xS +hC7ePvxSrEmnS61Jp0vkSpwL/FKfT8Yw7U+lSa5J7U/+UvxS30yeC+NIpU6mTvxSh0H5QY9F/FL8 +UudSmTT8UqdOqE71EKU/91L8UgBB8RULhQXhPqsyqjWpNeI+lkH8UqdJ/FLkIeM+40j8UvdRhVH2 +UYdR/FL8UfNR/FL8UuZRzlHMUcpR7VHJUepR7lHRUchR6E78UvJL70bIKLkw8Bn8UsgU/FLUUeUn +mjT9Mb08/FK0TuxOsU7tT7pJuEn+Uu5OtU67Se1Pp0vtR/xSxE64TvxSnzTeFfxS6FLVJulS1Sb8 +Uq1O/FL9MepS+Er8Ur5OvE7oUedR6VHWMcM8/FLILLgv0E+nS8ks/FLKCMwP7C7MScFJtTH+UvxS +1jGdJadLxSrDTv0xk07qTtBOsk7FTvxSyE7HToE90iDMO9hI/lL8UooJgxTtT81JxEntT/8/9RL8 +UpQXpBzjLrlJxEmyMf5Shi2cEuc+x0nnPtYxzy/8Uv0x3U7iSMQ8/FL8UuMx/FL9MeRH3k7XTc9O +6kHTIPxShBTtT8ZJ/lKlNMUZxE3OSbgx1jGeT6dLj0q4DfxS2E78UoUUykn+UtlO7U/KSf5S6kHX +INpO+lHWMe1Hrk7rUvdK/FK3Mac/0E/8Uog2xzyROZE540j8Ut9O3kz7QO1H7FLPSfxS/FKZCvcW +7U/SSdFJ/lLrQfxSpzT8UudOxU6hS/xSzy/8Uqk0/FLpTvxSqjT8Uu1O/FKnTvAn7yfvTvxSiE78 +Us8v7VLUSaIN8U78UvJOokuFT6dLj0qWC/xS9E78UvNR/FL8UvxS/FL2UaxSqVKkUrxQq1KhUqdS +/FL8UvxSp0uPSv0Y/FKCT6dL0CynS+JJ/FLLKvo+/FL8UpNSo1CiUaNQ/FL8UuMm/FKdT/xS1jHl +TKdLj0qWC/xSh0/kR4pP/FKdC/xS/FLHMfxSmjvND/xSvDT8Uo9P40j8Us8v/FK9NPxSkU/8UpJP +/FL8UpNP/FKnTs8v/FL8UtYx/FKPS+pGqkb8UrYP7U/lSeNJ7U/+UvxS/FLDMuJI1jGQS6dLj0r9 +GPxS8CHwPqdJ/FKWT5lPl0+YT7hS/FKONtE87U/qSeZJ/lLdIM8860n8UppPm0/tT+hJ5kn+UuUv +zjzpSY820DznSf0xiU7jUsI071LyQrQ//FLNUuxJ1DzTLOEV/FLDNNYx5Sb8UvkKnDv8Uv9S+1L7 +UvVS+VL+Uv5S+lL/UvBSgFP4UrlS+T38UvxS7UmgN6E3ojeQNpE2ozfFNMY0xTL8UqdOiE7mL6BP +rhKhT7IQ/FK6Ut5M/FKoMv0xqTKqMvxS20/8Urgv/FKdO/xSo0/INO1P8En0Se1P/lKmT8009knt +T/xS1TzLNO1P8Un0Se1P/lK7Usw08kmkT8k080ntT6JPxzTvSe1PpU/KNPVJ/FLGMvxS+wntR88R +p0uPSpYL/FKoT6dO/FKqT69P/FK0UqdLj0r9GPxSp0uJTP5Soju/GPxSxxXWPLFP/FL1IfU+p0m+ +UvRS/FKzT/Y+synzUv5SyTL9SZ87yjKyNf5JyzL/SYBKlkvxUqs6/BbyUsRS+D77Pdg82DzYPNo8 +2zzXPNs82TyGHqA7/FL8UuRHiU7jSM8P5EfqHvxSp061I9M00TS7T8Y94yulCblPtinnCrpP+xzO +D5IbwzL8Ut087UfiSLc/jk+HSqdJ5CuJStw8mw6cF/xSiEqZNvk+xE2GSuJIqhz4IfxSzy/8Ur1P +oTv8J78Kvk/8UtExv0/AT8Y95SvFT8FP/FLCT8NPn0uGQYVB6kaKSo5F3h38UohK/FKlS8pPkAW3 +KcdP8g0Kruj6AYhU/ZsCAiF/Bn4jAEGAGmsiAiQAAkAgAAJ/AkACQCAAAn8CQAJ/An8CQAJAAkAC +QAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACfwJ/An8CfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJ/ +An8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkAgAC0AmBFBAWsOAwIEAQALIAAgAEHICGpByAgQzU8aCwJAAkACQCAAQdQAagJ/ +AkACQAJ/AkACQCAALQDECEEBaw4DBwsAAQsgAEEQaiEZAkAgAEHJAGotAABBAWsOBAYLAwoACyAA +QTxqKAIAIQUgAEE4aigCACEWIABBQGsoAgAhCyAAQcQAaigCAAwBCyAAQckAakEAOgAAIABBxABq +IAA2AgAgAEFAayAAQcAIaiILNgIAIABBPGogAEEMaigCACIFNgIAIABBOGogACgCCCIWNgIAIABB +EGohGSAACyEDIABBNGogBTYCACAAQTBqIgggFjYCACAAQcgAakEAOgAAQcST2wAoAgBBAksNAUHU +jdsAEPs+IgpB/wFxRQ0BQQAhBUHUjdsAKAIAIAoQ9S5FDQFB1I3bACgCACIMQShqKAIAIQ0gDEEk +aigCACEPIAwoAhwhCiACIAxBIGooAgAiDgR/IAJBADYC+BQgAiANNgL0FCACIA82AvAUIAIgDjYC +7BRBASEFIAoFQQALNgLoFCACQYgZaiACQegUakG0nsYAEPssIAIgCDYC6BFBACEIIAIgBSAOTwR/ +QQAFIAIgDTYC9BQgAiAPNgLwFCACIA42AuwUIAIgBTYC+BQgBUEBaiEFIAoLNgLoFCACQbgTaiAC +QegUakG0nsYAEPssIAIgBSAOSQR/IAIgDTYC9BQgAiAPNgLwFCACIA42AuwUIAIgBTYC+BQgBUEB +aiEFIAoFQQALNgLoFCACQaAUaiACQegUakG0nsYAEPssIAIgBSAOTwR/QQAFIAIgDTYC9BQgAiAP +NgLwFCACIA42AuwUIAIgBTYC+BQgBUEBaiEFIAoLNgLoFCACQZAXaiACQegUakG0nsYAEPssIAIg +BSAOSQR/IAIgDTYC9BQgAiAPNgLwFCACIA42AuwUIAIgBTYC+BQgBUEBaiEFIAoFQQALNgLoFCAC +QaAYaiACQegUakG0nsYAEPssIAIgBSAOTwR/QQAFIAIgDTYC9BQgAiAPNgLwFCACIA42AuwUIAIg +BTYC+BQgBUEBaiEFIAoLNgLoFCACQYgRaiACQegUakG0nsYAEPssIAUgDkkEQCACIAU2AuANIAIg +DTYC3A0gAiAPNgLYDSACIA42AtQNIAohCAsgAiAINgLQDSACQZASaiIFIAJB0A1qIgpBtJ7GABD7 +LCACQbgVakHUnsYANgIAIAJBtBVqQbCcxgA2AgAgAkGsFWpB1J7GADYCACACQagVakGwnMYANgIA +IAJBoBVqQdSexgA2AgAgAkGcFWpBsJzGADYCACACQZQVakHUnsYANgIAIAJBkBVqQbCcxgA2AgAg +AkGIFWpB1J7GADYCACACQYQVakGwnMYANgIAIAJB/BRqQdSexgA2AgAgAkH4FGpBsJzGADYCACAC +QcSexgA2AvAUIAIgBTYCsBUgAiACQYgRajYCpBUgAiACQaAYajYCmBUgAiACQZAXajYCjBUgAiAC +QaAUajYCgBUgAiACQbgTajYC9BQgAiACQegRajYC7BQgAiACQYgZajYC6BQgAiAMQRxqNgLYDSAC +QQc2AtQNIAIgAkHoFGo2AtANIBkgDCAKEMQyIABBAToASCAAKAIwIRYgACgCNCIFIABBGGooAgBB +AkYNAhogAEEAOgBIIABB0ABqIBkpAwA3AwAgAEH0AGogBTYCACAAQfAAaiAWNgIAIABB2ABqIBlB +CGopAwA3AwAgAEHgAGogGUEQaikDADcDACAAQegAaiAZQRhqKQMANwMAIABB+ABqIAJBwApqQcAC +EM1PGiAAQcQDakEAOgAAIABBvANqIAs2AgAgAEG4A2ogAzYCACAAQcUDaiACQcQFakH7BBDNTxoL +IAEhC0EAIQFBACENQQAhDEEAIRYjAEGQDGsiAyQAIABB0ABqIgQoAghBAkcEQCAEQQhqIAQQ+CcL +IAJB6BRqIRQgAyAENgLUAQJAAkAgBAJ/AkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkAC +QAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJA +AkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQfQCai0AAEEBaw4EGRsBGgALIANBoAlqIARB6AJq +KAIAEPJHQYGAgIB4IQ8gAygCoAkiCkGBgICAeEYNGyADKAKkCSEGIANB2AFqIgUgA0GoCWpB+AEQ +zU8aIARBLGogBjYCACAEQShqIgYgCjYCACAEQTBqIAVB+AEQzU8aIANBoAlqIgoQ7lIgCkGw8sIA +IARB+AFqEOgRQbbywgAgBEGAAmoQ5hEgBSAEQYgCaikDABD3DAJAIAMoAtgBQYCAgIB4RgRAIANB +yAFqQQ4Q7h8gAygCyAEhByADKALMASIBQdSTwwApAAA3AAAgAUEGakHak8MAKQAANwAAIANBDjYC +iAYgAyABNgKEBiADIAc2AoAGDAELIANBiAZqIANB4AFqKAIANgIAIAMgAykC2AE3A4AGC0G+8sIA +QRAgA0GABmoQthIgA0HYAWoiCiAGEJVRQaCSwwAgChC1EhDZIiAGKAIAQYCAgIB4Rg0XIANB2AFq +IgEQ7lIgA0G4CWogBEHIAWopAAA3AwAgA0GwCWogBEHAAWopAAA3AwAgA0GoCWogBEG4AWopAAA3 +AwAgAyAEQbABaikAADcDoAkgAUGpksMAIANBoAlqIgEQ5RIQ2SIgBEHwAmoiDSAGNgIAIAEQ7lIg +A0HAAWogDRCuRiABQZTbwgBBCiADKALAASADKALEARCxERogARDZIiAEQZEEaiIMQQA6AAAgBEGM +BGogDTYCACAEQYgEaiAGNgIAIARBhARqIARB7AJqKAIAIgE2AgAgBEGEA2ogBEEkaigCACIHNgIA +IARBgANqIAQoAiAiDzYCACAEQfgCaiEXDAELIARB+AJqIRcCQCAEQZEEaiIMLQAAQQFrDgYIGgMN +FgIACyAEQYwEaigCACENIARBiARqKAIAIQYgBEGEA2ooAgAhByAEQYADaigCACEPIARBhARqKAIA +IQELIAQgDzYC+AIgBEGIA2ogATYCACAEQZAEakEAOgAAIARBkANqIA02AgAgBEGMA2ogBjYCACAE +QfwCaiAHNgIAIANBuAFqIA0QrkYgAygCuAEhBiADKAK8ASENIARBvARqIhJBADoAACAEQaQEaiAN +NgIAIARBoARqIAY2AgAgBEGcBGogBzYCACAEQZgEaiAPNgIAIARBlARqIhYgATYCAAwCCyAEQbwE +aigCACEBIARBuARqKAIAIQYMJgsgBEGUBGohFgJAAkAgBEG8BGoiEi0AAEEBaw4EGhgABAELIARB +xARqKAIAIQEgBEHABGooAgAhBgwCCyAEQaQEaigCACENIARBoARqKAIAIQYgBEGcBGooAgAhByAE +QZgEaigCACEPIAQoApQEIQELIARBuARqIgUgDTYCACAEQbQEaiIKIAY2AgAgBEGwBGoiBiAHNgIA +IARBrARqIgcgDzYCACAEQagEaiABNgIAIANBsAFqIAEQ+E0QvywgA0GoAWogAygCsAEgBygCACAG +KAIAIAooAgAgBSgCACADKAK0ASgCLBEKACADKAKoASEGIARBxARqIAMoAqwBIgE2AgAgBEHABGog +BjYCAAsgA0GgCWogBiALIAEoAgwRAwAgAy0A6AkiAUEERg0FIANB2AFqIANBoAlqQcgAEM1PGkEC +IRMgA0HyB2oiBiADQesJai0AADoAACADIAMvAOkJOwHwByAEQcAEaiIFEJk2IARBjAVqIQcgAUED +Rg0DIAcgA0HYAWpByAAQzU8hByAEQdQFaiABOgAAIARB1wVqIAYtAAA6AAAgBEHVBWogAy8B8Ac7 +AAAgBSAHQcwAEM1PGiAEQYgFai0AACITQQJGBEAgA0GgAWogBEGoBGooAgAoAgBBjAFqEL8sIANB +mAFqIAMoAqABIARBrARqKAIAIARBsARqKAIAIARBtARqKAIAIARBuARqKAIAIAMoAqQBKAIwEQoA +IAMoApgBIQYgBEHcBWogAygCnAEiATYCACAEQdgFaiAGNgIADAILIANBqgdqIARBxwRqLQAAOgAA +IAMgBEHFBGovAAA7AagHIARBwgRqLwEAIQ8gBEHBBGotAAAhDSAEQcgEaigCACEFIARBzARqKAIA +IQogBEHQBGooAgAhCSAEQdQEaigCACEQIARB2ARqKAIAIRUgBEHcBGooAgAhASAEQeAEaigCACEH +IAQtAMQEIREgBC0AwAQhBiADQYAGaiAEQeQEakEkEM1PGiADQdoFaiAEQYsFai0AADoAACADIARB +iQVqLwAAOwHYBQwECyAEQdwFaigCACEBIARB2AVqKAIAIQYLIANBoAlqIAYgCyABKAIMEQMAIAMo +AqAJIghBBkYNFUECIRMgA0GqC2oiDiADQasJai0AADoAACADQdALaiADQdAJaikCADcDACADQdgL +aiADQdgJaikCADcDACADQeALaiADQeAJaigCADYCACADIAMvAKkJOwGoCyADIAMpAsgJNwPICyAD +LQCoCSERIAMvAaYJIQ8gAy0ApQkhDSADLQCkCSEGIAMoAqwJIQUgAygCsAkhCiADKAK0CSEJIAMo +ArgJIRAgAygCvAkhFSADKALACSEBIAMoAsQJIQcgBEHYBWoQmTYgCEEFRwRAAn8gCEEERgRAIANB +BjYCkAhBBgwBCyADQasJaiADQaoLai0AADoAACADQdAJaiADQdALaikDADcCACADQdgJaiADQdgL +aikDADcCACADQeAJaiADQeALaigCADYCACADIBE6AKgJIAMgDzsBpgkgAyANOgClCSADIAY6AKQJ +IAMgCDYCoAkgAyADLwGoCzsAqQkgAyAHNgLECSADIAE2AsAJIAMgFTYCvAkgAyAQNgK4CSADIAk2 +ArQJIAMgCjYCsAkgAyAFNgKsCSADIAMpA8gLNwLICSADQZAIaiADQaAJaiIGEPw5IAYQrRQgAygC +mAghCiADKAKUCCEFIAMtAJAICyERIANBqgdqIAMtAJMIOgAAIAMgAy8AkQg7AagHQQ0hBgwDCyAD +QaoHaiAOLQAAOgAAIAMgAy8BqAs7AagHDAILQeDGwgBBI0GklMMAEOYrAAsgByADQdgBakEkEM1P +GiAEQdQFakEDOgAAIANBqgdqIARBkwVqLQAAOgAAIAMgBEGRBWovAAA7AagHIARBrAVqKAIAIQcg +BEGoBWooAgAhASAEQaQFaigCACEVIARBoAVqKAIAIRAgBEGcBWooAgAhCSAEQZgFaigCACEKIARB +lAVqKAIAIQUgBEGQBWotAAAhESAEQY4Fai8BACEPIARBjQVqLQAAIQ0gBC0AjAUhBgsgA0GKB2oi +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 +AyAGNgLQCyADIAc2AswLIAMgCTYCyAsgA0HYBWoiBSAHIAYQjAUgA0GQAWogBRCJTCADQdgBaiAD +KAKQASADKAKUARDgKwJAAn8CQAJAIAMtANgBIgZBBkcEQCADQYgFaiADQegBaikDADcDACADIAMt +ANsBOgD7BCADIAMvANkBOwD5BCADIAMpA+ABNwOABSADIAMoAtwBNgL8BCADIAY6APgEQQEhByAD +QQE2AtgBIAZBBUYEQCADQdgBaiIGEO0oIARBoARqIgUoAgApA+ABISMgA0GIAWpBBhDuHyADKAKI +ASEKIAMoAowBIgdBsPLCACgAADYAACAHQQRqQbTywgAvAAA7AAAgA0EGNgKwByADIAc2AqwHIAMg +CjYCqAcgBSgCACADQQA2ApgIIANCgICAgBA3ApAIIANB8AFqIgVBzK3DADYCACADQQM6APgBIANB +IDYC6AEgA0EANgL0ASADQQA2AuABIANBADYC2AEgAyADQZAIajYC7AFB0AFqIAYQ3CANOiADQYwG +aiIKIANBmAhqIgkoAgA2AgAgAyADKQKQCDcChAYgA0EDOgCABiADQdgBaiIGIANB+ARqQQRyIgcg +A0GoB2ogA0GABmoQ1AwgBhDjQiADQYABakEIEO4fIAMoAoABIQggAygChAEiDkLl7JXzxu7XtOQA +NwAAIANBCDYCsAcgAyAONgKsByADIAg2AqgHIAQoAqAEIANBADYCmAggA0KAgICAEDcCkAggBUHM +rcMANgIAIANBAzoA+AEgA0EgNgLoASADQQA2AvQBIANBADYC4AEgA0EANgLYASADIANBkAhqNgLs +AUHYAWogBhDcIA06IAogCSgCADYCACADIAMpApAINwKEBiADQQM6AIAGIANB2AFqIgUgByADQagH +aiADQYAGaiIKENQMIAUQ40JBACEGIANB+ABqQRAQ7h8gAygCeCENIAMoAnwiCEG+8sIAKQAANwAA +IAhBCGpBxvLCACkAADcAACADQRA2ApgIIAMgCDYClAggAyANNgKQCCAFICMQ+j0gCiAHIANBkAhq +IAUQ1AwgChDjQiAHQc7ywgBBBxDWIiIFRQ0CIANB8ABqIAUQgDggAygCcCIFRQ0CIANB2AFqIAUg +AygCdBDzHCADKALcASENIAMoAtgBIQYMAgsMAgsgAygC3AEhB0EMDAILIAMgDTYCrAcgAyAGNgKo +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 +vywgBEH8AmooAgAhASAEKAL4AiEHIAMoAkAhBiADKAJEIQUgA0E4aiAEQZADaigCABCuRiADQTBq +IAYgByABIAMoAjggAygCPCAFKAIwEQoAIAMoAjAhBiAEQbwEaiADKAI0IgE2AgAgBEG4BGogBjYC +AAsgA0GgCWogBiALIAEoAgwRAwBBBiADKAKgCSIIQQZGDSkaIANBqgRqIhYgA0GrCWotAAA6AAAg +A0GQBGogA0HQCWopAgA3AwAgA0GYBGogA0HYCWopAgA3AwAgA0GgBGogA0HgCWooAgA2AgAgAyAD +LwCpCTsBqAQgAyADKQLICTcDiAQgAy0AqAkhESADLwGmCSEPIAMtAKUJIQ0gAy0ApAkhBiADKAKs +CSEFIAMoArAJIQogAygCtAkhCSADKAK4CSEQIAMoArwJIRUgAygCwAkhASADKALECSEHIARBuARq +EJk2IAhBBUYEQCADQa4EaiAWLQAAOgAAIAMgAy8BqAQ7AawEIARBlARqEIYOIARBkARqQQA6AAAM +CwsCQAJAAkAgCEEERgRAIANBBjYC2AEMAQsgA0GrCWogA0GqBGotAAA6AAAgA0HQCWogA0GQBGop +AwA3AgAgA0HYCWogA0GYBGopAwA3AgAgA0HgCWogA0GgBGooAgA2AgAgAyAROgCoCSADIA87AaYJ +IAMgDToApQkgAyAGOgCkCSADIAg2AqAJIAMgAy8BqAQ7AKkJIAMgBzYCxAkgAyABNgLACSADIBU2 +ArwJIAMgEDYCuAkgAyAJNgK0CSADIAo2ArAJIAMgBTYCrAkgAyADKQOIBDcCyAkgA0HYAWogA0Gg +CWoiBhD8OSAGEK0UIAMoAtgBIhFBBkcNAQsgBEGQBGpBADoAACADQYIGaiAEQZsEai0AADoAACAD +IARBmQRqLwAAOwGABiAEQZQEai0AACEGIARBlQRqLQAAIQ0gBEGWBGovAQAhDyAEQZgEai0AACER +IARBnARqKAIAIQUgBEGgBGooAgAhCiAEQaQEaigCACEJIARBqARqKAIAIRAgBEGsBGooAgAhFSAE +QbAEaigCACEBIARBtARqKAIAIQcgA0HYAWoQ/0IMAQsgA0GCBmogAy0A2wE6AAAgAyADLwDZATsB +gAZBDSEGIAMoAuABIQogAygC3AEhBQsgA0GuBGogA0GCBmotAAA6AAAgAyADLwGABjsBrAQgBEGQ +BGotAABFDQAgBEGUBGoQhg4LIARBkARqQQA6AABBgYCAgHghEgwHCyAEQQE6AI0FIARBgAVqQQA2 +AgAgBEHwBGpBAjYCAEEBCyAEKALgBCEBIAQpA9gEISMgBCgC1AQhBiAEKALQBCEIDQEgBEEAOgCN +BSAEQcwFakEAOgAAIARByAVqIAc2AgAgBEHEBWogBjYCACAEQcAFaiAINgIAIARBuAVqIAE2AgAg +BEGwBWogIzcDACAEQZAFaiAEQegEaikDADcDACAEQZgFaiAEQfAEaikDADcDACAEQaAFaiAEQfgE +aikDADcDACAEQagFaiAEQYAFaikDADcDACAEQc0FaiADQaAJakGDAhDNTxoLIANB2AFqIARBkAVq +IhggCxDxKEEDIAMoAsACIhFBA0YNAhogA0GODGogAy0A3wE6AAAgAyADLwDdATsBjAwgAy0A3AEh +EyADLwHaASEPIAMtANkBIQ0gAy0A2AEhBiADKALgASEBIAMoAuQBIQcgAygC6AEhCSADKALsASEQ +IAMoAvABIRUgAygC9AEhCCADKAL4ASEOIANByAtqIANB/AFqQcQAEM1PGiADQcALaiADQdwCaigC +ADYCACADQbgLaiADQdQCaikCADcDACADQbALaiADQcwCaikCADcDACADIAMpAsQCNwOoCyAYEMVL +DAMLIARBrAVqQQA6AAAgBEGoBWogBzYCACAEQaQFaiAGNgIAIARBoAVqIAg2AgAgBEGYBWogATYC +ACAEQZAFaiAjNwMAIARBrQVqIANBoAlqQYMCEM1PGgsgA0HYAWogBEGQBWoiGCALENMFIAMoAsAC +IhFBA0cEQCADQY4MaiADLQDfAToAACADIAMvAN0BOwGMDCADLQDcASETIAMvAdoBIQ8gAy0A2QEh +DSADLQDYASEGIAMoAuABIQEgAygC5AEhByADKALoASEJIAMoAuwBIRAgAygC8AEhFSADKAL0ASEI +IAMoAvgBIQ4gA0HIC2ogA0H8AWpBxAAQzU8aIANBwAtqIANB3AJqKAIANgIAIANBuAtqIANB1AJq +KQIANwMAIANBsAtqIANBzAJqKQIANwMAIAMgAykCxAI3A6gLIBgQtTgMAgtBBAshASAJIAE6AAAg +EkEDOgAADAQLIARBjQVqLQAABEAgBEHoBGoQ2SILIARBADoAjQUgA0HuB2oiGyADQY4Mai0AADoA +ACADIAMvAYwMOwHsByADQagHaiIcIANByAtqQcQAEM1PGiAEQQE6AIwFIANBoAdqIh0gA0HAC2oo +AgA2AgAgA0GYB2oiHiADQbgLaikDADcDACADQZAHaiIfIANBsAtqKQMANwMAIANB1ghqIhggGy0A +ADoAACADIAMpA6gLNwOIByADIAMvAewHOwHUCCADQZAIaiAcQcQAEM1PGiADQYgIaiIbIB0oAgA2 +AgAgA0GACGoiHCAeKQMANwMAIANB+AdqIh0gHykDADcDACADIAMpA4gHNwPwByAFEPcrAkAgEUEC +RgRAIANB2ghqIBgtAAA6AAAgAyADLwHUCDsB2AgMAQsgA0GkBmogA0GQCGpBxAAQzU8aIANBhAdq +IBsoAgA2AgAgA0H8BmogHCkDADcCACADQfQGaiAdKQMANwIAIAMgDjYCoAYgAyAINgKcBiADIBU2 +ApgGIAMgEDYClAYgAyAJNgKQBiADIBE2AugGIAMgBzYCjAYgAyABNgKIBiADIBM6AIQGIAMgDzsB +ggYgAyANOgCBBiADIAY6AIAGIAMgAykD8Ac3AuwGIAMgAy8B1Ag7AIUGIAMgGC0AADoAhwYgA0HY +BWoiASADQYAGahC9RCADQaAJaiABIARB2AdqKAIAEOEHAkAgAygCgAoiAUECRwRAIANB+ARqIANB +oAlqQeAAEM1PGiADQfAEaiADQZwKaigCADYCACADQegEaiADQZQKaikCADcDACADQeAEaiADQYwK +aikCADcDACADIAMpAoQKNwPYBAwBCyADQaAJahD4QgsgA0GABmoQ0jsCQCABQQJGBEAgBCgC2Act +AEghE0EAIQEMAQsgA0GgCWoiBiADQfgEakHgABDNTxogA0GMCmogA0HgBGopAwA3AgAgA0GUCmog +A0HoBGopAwA3AgAgA0GcCmogA0HwBGooAgA2AgAgAyABNgKACiADIAMpA9gENwKECiADQShqIANB +0AlqELJGIANBIGogAygCKCADKAIsEMIwIAMgAygCJCIHNgKEBiADIAMoAiAiATYCgAYgA0HYAWog +BiAEKALYBxCtBSADLQDYASIGQRFHBEAgA0HaCGogA0HfAWotAAA6AAAgAyADLwDdATsB2AggAy0A +3AEhEyADLwHaASEPIAMtANkBIQ0gAygC4AEhASADKALkASEHIAMoAugBIQkgAygC7AEhECADKALw +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 +IARBlgRqIAc7AQAgBEGVBGogAToAACAEQawEaiADKQPYBTcBACAEQbgEaiADKQP4BDcCACAEQbQE +aiAKKAIANgEAIARBwARqIAgpAwA3AgAgBEHIBGogDikDADcCACAEQdAEaiAJKQMANwIAQQAhASAF +QYGAgIB4Rw0BIARBiARqKAIAIgEoAgAhByADIAEQwkQgAygCACEBIAMoAgQhBiAEQZAFakEAOgAA +IARBiAVqIAdBCGo2AgAgBEHcBGogBjYCACAEQdgEaiABNgIACyADQaAJaiAEQdgEaiIIIAsQowIg +AygCiAoiBUEDRg0EIANBsAdqIgogA0HACWooAgA2AgAgAyADKQO4CTcDqAcgAykDsAkhJCADKQOo +CSEjIAMoAqQJIQwgAy8BogkhByADLQChCSEBIAMtAKAJIQYgA0GABmogA0HECWpBxAAQzU8aIANB +4AtqIg4gA0GkCmooAgA2AgAgA0HYC2oiCSADQZwKaikCADcDACADQdALaiIQIANBlApqKQIANwMA +IAMgAykCjAo3A8gLIAgQxykgBUECRg0BIANB/AFqIANBgAZqQcQAEM1PGiADQdwCaiAOKAIANgIA +IANB1AJqIAkpAwA3AgAgA0HMAmogECkDADcCACADQfgBaiAKKAIANgIAIAMgJDcD6AEgAyAjNwPg +ASADIAw2AtwBIAMgBzsB2gEgAyAFNgLAAiADIAE6ANkBIAMgBjoA2AEgAyADKQPICzcCxAIgAyAD +KQOoBzcD8AEgA0HYAWoiBhC2CyEBIAYQ0jsLIARBkARqEP5CDAULIANBmAhqIAooAgA2AgAgAyAD +KQOoBzcDkAggBEGQBGoQ/kIMBQtBAwwCCyADQZgIaiAKKAIANgIAIAMgAykD2AU3A5AIDAMLQQQL +IQEgFyABOgAADAcLQQshBgsgA0GQB2oiBSADQZgIaigCADYCACADIAMpA5AINwOIByAXQQE6AAAg +BkH/AXEiCkEMRg0FIANB+AdqIAUoAgA2AgAgAyADKQOIBzcD8AcgEhDbNCAKQQtHDQEgAUH/AXFF +DQcgBEH9A2pBADoAACAEQYgDaigCACEHIANBoAlqIgYgBEHAA2pBNBDNTxpBqApBCBCrOSIBIAc2 +AuwJIAFB8AlqIAZBNBDNTxogAUEAOgCkCiAEIAE2AoAECyADQaAJaiAEQYAEaiIGIAsQ4AYgAy0A +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 +BUEDRg0BIAogAkHQDWpByAAQzU8hCiAAQYQGaiAFOgAAIABBhwZqIA4tAAA6AAAgAEGFBmogAi8B +uBM7AAAgCyAKQcwAEM1PGiAAQbgFai0AACIIQQJGBEAgAkHYAWogAEHYBGooAgAoAgBBjAFqEL8s +IAJB0AFqIAIoAtgBIABB3ARqKAIAIABB4ARqKAIAIABB5ARqKAIAIABB6ARqKAIAIAIoAtwBKAIw +EQoAIAIoAtABIQUgAEGMBmogAigC1AEiCTYCACAAQYgGaiAFNgIADAELIABBkAVqKAIAIQ4gAEGM +BWooAgAhDyAAQYgFaigCACEKIABBhAVqKAIAIRAgAEGABWooAgAhEyAAQfwEaigCACENIABB+ARq +KAIAIQQgAEHyBGovAQAhFCAAQfEEai0AACEMIABB9QRqLwAAIABB9wRqLQAAIAAtAPQEIQMgAC0A +8AQhCyACQZASaiAAQZQFakEkEM1PGiACQaIUaiAAQbsFai0AADoAACACIABBuQVqLwAAOwGgFEEQ +dHIhCQwCCyACQegUaiAFIAEgCSgCDBEDACACKALoFCIFQQZGDQ0gAkGoGGogAkGYFWopAgA3AwAg +AkGwGGogAkGgFWopAgA3AwAgAkG4GGogAkGoFWooAgA2AgAgAiACKQKQFTcDoBggAkHzFGotAAAh +CCACKAKMFSEOIAIoAogVIQ8gAigChBUhCiACKAKAFSEQIAIoAvwUIRMgAigC+BQhDSACKAL0FCEE +IAItAPAUIQMgAi8B7hQhFCACLQDtFCEMIAItAOwUIQsgAi8A8RQgAEGIBmoQmTYgCEEQdHIhCUEC +IQggBUEFRg0BIAVBBEYEQEEGIQMgAkEGNgKQF0ENIQtBACEJDAILIAIgCTsA8RQgAkHzFGogCUEQ +djoAACACQZgVaiACQagYaikDADcCACACQaAVaiACQbAYaikDADcCACACQagVaiACQbgYaigCADYC +ACACIA42AowVIAIgDzYCiBUgAiAKNgKEFSACIBA2AoAVIAIgEzYC/BQgAiANNgL4FCACIAQ2AvQU +IAIgAzoA8BQgAiAUOwHuFCACIAw6AO0UIAIgCzoA7BQgAiAFNgLoFCACIAIpA6AYNwKQFSACQZAX +aiACQegUaiIFEPw5IAUQrRQgAi8AkRcgAi0AkxdBEHRyIQlBDSELIAIoApgXIQ0gAigClBchBCAC +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 +OgAAIABBuAVqIAk2AgAgAEH8BGogBTYCACAAQfgEaiALNgIAIABB8ARqQYCU69wDNgIAIABB6ARq +IQ1BgJTr3AMLIQggAEGEBWogBTYCACAAQYAFaiIYIAs2AgAgAEG9BWpBADoAACAAQZAFaiAINgIA +IABBiAVqIgsgACkD6AQ3AwBBAiEMQcST2wAoAgBBAksNBUGQjtsAEPs+IgVB/wFxRQ0FQQAhCkGQ +jtsAKAIAIAUQ9S5FDQVBkI7bACgCACIFQShqKAIAIRAgBUEkaigCACETIAUoAhwhFCAFQRxqIQ4g +AiAFQSBqKAIAIggEfyACQQA2AuANIAIgEDYC3A0gAiATNgLYDSACIAg2AtQNQQEhCiAUBUEACyIP +NgLQDSACQdgXaiACQdANakGUnsYAEPssIAIgGDYCgBggAiAIIApLBH8gAiAKNgKwGCACIBA2AqwY +IAIgEzYCqBggAiAINgKkGCAUBUEACzYCoBggAkGIGWoiDCACQaAYaiIIQZSexgAQ+ywgAkHkDWpB +pJ7GADYCACACQeANaiACQegYajYCACACQaCcxgA2AtgNIAIgCzYC6BggAiAMNgLcDSACIAJBgBhq +NgLUDSACIAJB2BdqNgLQDSAIIA4gAkHQDWoQ8kEgAEGYBWogBSAIEMQyIABBAToAvQUgAEGgBWoo +AgAhDAwGC0EAIQkgACgCyAQiA0EFRg0BCyAAQeQEaigCACEOIABB4ARqKAIAIQ8gAEHcBGooAgAh +CiAAQdgEaigCACEQIABB1ARqKAIAIRMgAEHQBGooAgAhDSAAQcwEaigCACEEIABBxgRqLwEAIRQg +AEHFBGotAAAhDAwCCyACQfgAaiAAQbgDaigCACgCAEGMAWoQvywgAEGsA2ooAgAhByAAKAKoAyEG +IAIoAnghBSACKAJ8IQogAkHwAGogAEHAA2ooAgAQrkYgAkHoAGogBSAGIAcgAigCcCACKAJ0IAoo +AjARCgAgAigCaCEFIABB7ARqIAIoAmwiCTYCACAAQegEaiAFNgIACyACQegUaiAFIAEgCSgCDBED +AEEGIAIoAugUIgdBBkYNTxogAkGwEGogAkGYFWopAgA3AwAgAkG4EGogAkGgFWopAgA3AwAgAkHA +EGogAkGoFWooAgA2AgAgAiACKQKQFTcDqBAgAkHzFGotAAAhBiACKAKMFSEOIAIoAogVIQ8gAigC +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 +IAJB7BdqQaCcxgA2AgAgAkHoF2ogAkHkGWo2AgAgAkGQnMYANgLgFyACIABB2AZqNgLkGSACIAs2 +AuQXIAIgAkGIGWo2AtwXIAIgAkG8GWo2AtgXIAUgFCACQdgXahDyQUGQkdsAKAIAIAUQxDQLQQIh +DAsgAEHwBmoQujkgAEHtBmohBUELIQsLIAVBADoAACAIQQE6AAAgIhD9HwsgG0EBOgAAICEQqzhB +AiEFIAtBC0cNASAAQdgFaigCABD4TSEHIAAgAEHQBWopAwA3A+AFIABB6AVqIAJBiBlqQSgQzU8a +IABBADoAmAYgAEGQBmogBzYCACAAQZkGaiACQdgXakEnEM1PGgsgAkHQDWogAEHgBWoiCCABEJcC +IAIoArgOIgVBA0YNAiACKALwDSEOIAIoAuwNIQ8gAigC6A0hCiACKALkDSEQIAIoAuANIRMgAigC +3A0hBiACKALYDSEHIAIoAtQNIRIgAi8B0g0hFCACLQDRDSEMIAItANANIQsgAkGgGGogAkH0DWpB +xAAQzU8aIAJBmBhqIAJB1A5qKAIANgIAIAJBkBhqIAJBzA5qKQIANwMAIAJBiBhqIAJBxA5qKQIA +NwMAIAIgAikCvA43A4AYIAgQxykLIAJBkBdqIAJBoBhqQcQAEM1PGiACQYgXaiACQZgYaigCADYC +ACACQYAXaiACQZAYaikDADcDACACQfgWaiACQYgYaikDADcDACACIAIpA4AYNwPwFiAYQQE6AAAg +IBCuOAwIC0EEDAMLQQQMBAtBrJbGAEERIAJB2BdqQbysxgBBsJfGABCJGAALIAtBAzoAAEEFCyEB +IAggAToAAEEECyEBIBsgAToAAEEDCyEBIBggAToAAEEECyEBIAMgAToAACAVQQM6AAAMAQsgAEG9 +BWotAAAEQCAAQZgFahDZIgsgAEEAOgC9BSACQbgTaiIIIAJBkBdqQcQAEM1PGiAAQQE6ALwFIAJB +sBNqIgMgAkGIF2ooAgA2AgAgAkGoE2oiCSACQYAXaikDADcDACACQaATaiIYIAJB+BZqKQMANwMA +IAIgAikD8BY3A5gTIAJBoBRqIAhBxAAQzU8aIAJBmBRqIgggAygCADYCACACQZAUaiIDIAkpAwA3 +AwAgAkGIFGoiCSAYKQMANwMAIAIgAikDmBM3A4AUIA0Q6SsgBUECRw0BIBVBAToAACALQf8BcUES +Rw0CCyARQQM6AABBBQwfCyACQbQSaiACQaAUakHEABDNTxogAkGUE2ogCCgCADYCACACQYwTaiAD +KQMANwIAIAJBhBNqIAkpAwA3AgAgAiAONgKwEiACIA82AqwSIAIgCjYCqBIgAiAQNgKkEiACIBM2 +AqASIAIgBTYC+BIgAiAGNgKcEiACIAc2ApgSIAIgEjYClBIgAiAUOwGSEiACIAw6AJESIAIgCzoA +kBIgAiACKQOAFDcC/BIgAkHoEWoiByACQZASahC9RCACQegUaiAHIABBiAhqKAIAEOEHAkACQAJA +AkAgAigCyBUiB0ECRwRAIAJBiBFqIgYgAkHoFGoiBUHgABDNTxogAkGAEWoiCCACQeQVaiILKAIA +NgIAIAJB+BBqIg0gAkHcFWoiDCkCADcDACACQfAQaiIKIAJB1BVqIhApAgA3AwAgAiACKQLMFTcD +6BAgAkGQEmoQ0jsgBSAGQeAAEM1PGiAQIAopAwA3AgAgDCANKQMANwIAIAsgCCgCADYCACACIAc2 +AsgVIAIgAikD6BA3AswVIAJBOGogAkGYFWoQskYgAkEwaiACKAI4IAIoAjwQwjAgAiACKAI0IgY2 +ApQSIAIgAigCMCIHNgKQEiACQdANaiAFIAAoAogIEK0FIAItANANIgtBEUcNAiACLQDRDQ0BQQEh +EgwDCyACQZASahDSOyAAKAKICC0ASCESQQAhBwwDC0EDIRIgAkHoFGoQvhZFDQFBBEECIAJB6BRq +ELQZGyESDAELIAIoAvANIQ4gAigC7A0hDyACKALoDSEKIAIoAuQNIRAgAigC4A0hEyACKALcDSEG +IAIoAtgNIQcgAigC1A0hEiACLwHSDSEUIAItANENIQwgAkGQEmoQ+j4gAkHoFGoQxDsgFUEBOgAA +DAILIAJB6BRqEMQ7CyAVQQE6AABBESELCyAEEOc/An8gC0H/AXFBEUcEQCARQQE6AABBgICAgHgh +CCAHIQQgBiENIBIiA0EIdgwBCyACQShqIABB2ARqKAIAIABB3ARqKAIAEMIwIAIoAiwhCiACKAIo +IRAgAkHYDWogAEGYCGoiCCgCACIFQRhqKQAANwMAIAJB4A1qIAVBIGopAAA3AwAgAkHoDWogBUEo +aikAADcDACACIAVBEGopAAA3A9ANIAJBiBFqIAJB0A1qEPFRAn8gCCgCABDaTSIFKAIAIghFBEBB +ACEJQQAMAQsgAiAINgKAFSACQQA2AvwUIAIgCDYC8BQgAkEANgLsFCACIAUoAgQiCDYChBUgAiAI +NgL0FCAFKAIIIQlBAQshBSACIAk2AogVIAIgBTYC+BQgAiAFNgLoFCACQZASaiACQegUahD0DSAC +QZMRai0AACEFIAItAIwRIQsgAi0AjREhDCACLwGOESEUIAItAJARIQMgAigCkBIhBCACKAKUEiEN +IAIoApgSIRMgAigCiBEhCCACLwCRESEVIBFBAToAAEEFIAhBgYCAgHhGDR4aIAchDyAGIQ4gFSAF +QRB0cgshCSAfEOg/IAhBgICAgHhHBEAgEkH/AXEhFSAAQcgEaigCACEXIABBxARqKAIAIREMAgsg +AEHEBGoQ+j4LQYGAgIB4IQgLIABBxANqEOESIABBAToAwQRBAyAIQYKAgIB4Rg0cGgsgAEHjAmog +CUEQdjoAACAAQeECaiAJOwAAIABBlANqIBc2AgAgAEGQA2ogETYCACAAQYQDakGAgICAeDYCACAA +QYADaiAVNgIAIABB/AJqIA42AgAgAEH4AmogDzYCACAAQfQCaiAKNgIAIABB8AJqIBA2AgAgAEHs +AmogEzYCACAAQegCaiANNgIAIABB5AJqIAQ2AgAgAEHgAmogAzoAACAAQd4CaiAUOwEAIABB3QJq +IAw6AAAgAEHcAmoiByALOgAAIABB2AJqIgYgCDYCACAaEMMfIAYoAgBBgYCAgHhHDRYgGiAHNgIA +AkACQEEGIActAABBC2tB/wFxIgcgB0EGTxtBAmsOBAEXFwAXCyAAKALgAkEFRw0WCyAAQZwDaigC +ACgCACEHIABBrgRqIhdBADoAACAAQagEaiAAQdgAaiIJNgIAIABBtANqIABB1ABqKAIAIgs2AgAg +AEGwA2oiBSAAKAJQIhE2AgAgAEGkBGogB0GQAWoiDDYCAAtBACEIIABBrARqQQA7AQAgAEG4A2og +DDYCACACQegUaiAJIBEgCxD0ECAAQbwDaiEJAkACQCACKALoFEGAgICAeEYEQCAJQYGAgIB4NgIA +DAELIAkgAkHoFGpBNBDNTyIJKAIAQYGAgIB4Rw0BC0ELIQsMFAsgAEGAAjsBrAQgAEHwA2oiCyAJ +QTQQzU8hByAAQbwEaiIRQQA6AAAgAEG0BGogBzYCACAAQbAEaiIKIAAoArgDIgk2AgALIABBuARq +IAk2AgAgCSgCAEHZAGpBBBDyRUUNCCACQSBqIAAoArgEKAIAQQhqEL8sIAJBGGogAigCICALIAIo +AiQoAmwRAwAgAigCGCEJIABBxARqIAIoAhwiCzYCACAAQcAEaiAJNgIACyACQegUaiAJIAEgCygC +DBEDACACKALoFCIHQYOAgIB4Rg0DIAJBwBNqIgYgAkGMFWooAgA2AgAgAkGQEWoiDiACQZgVaikC +ADcDACACQZgRaiINIAJBoBVqKQIANwMAIAJBoBFqIg8gAkGoFWopAgA3AwAgAiACKQKEFTcDuBMg +AiACKQKQFTcDiBEgAikC/BQhJCACKQL0FCEjIAIoAvAUIQkgAi8B7hQhDCACLQDtFCEIIAItAOwU +IQsgAEHABGoQmTYgB0GCgICAeEYNBCAAIAs6AMQEIAAgBzYCwAQgAEHUBGogJDcCACAAQcwEaiAj +NwIAIABByARqIAk2AgAgAEHGBGogDDsBACAAQcUEaiAIOgAAIABB3ARqIAIpA7gTNwEAIABB6ARq +IAIpA4gRNwIAIABB5ARqIAYoAgA2AQAgAEHwBGogDikDADcCACAAQfgEaiANKQMANwIAIABBgAVq +IA8pAwA3AgBBACEIIAdBgYCAgHhHDQEgAEG4BGooAgAiBygCACEGIAJBEGogBxDCRCACKAIQIQcg +AigCFCEIIABBwAVqQQA6AAAgAEG4BWogBkEIajYCACAAQYwFaiAINgIAIABBiAVqIAc2AgALIAJB +6BRqIABBiAVqIg4gARCXAiACKALQFSIHQQNGDQQgAkGoFGoiBiACQYgVaigCADYCACACIAIpA4AV +NwOgFCACKQP4FCEkIAIpA/AUISMgAigC7BQhCSACLwHqFCEMIAItAOkUIQggAi0A6BQhCyACQZAS +aiACQYwVakHEABDNTxogAkG4GGoiDSACQewVaigCADYCACACQbAYaiIPIAJB5BVqKQIANwMAIAJB +qBhqIhIgAkHcFWopAgA3AwAgAiACKQLUFTcDoBggDhDHKSAHQQJGDQEgAkH0DWogAkGQEmpBxAAQ +zU8aIAJB1A5qIA0oAgA2AgAgAkHMDmogDykDADcCACACQcQOaiASKQMANwIAIAJB8A1qIAYoAgA2 +AgAgAiAkNwPgDSACICM3A9gNIAIgCTYC1A0gAiAMOwHSDSACIAc2ArgOIAIgCDoA0Q0gAiALOgDQ +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 +CyAHEKsRDAYLIAdBBGoQ7yQMBQsgB0EEahDaNAwECyAHKAIEQQZGDQMgB0EEahD5PwwDCyAHQQRq +EItKIAdBDGoQn0UgB0EIahCLSiAHKAIQRQ0CIAdBEGoQi0oMAgsCQAJAAkBBBCAHKAIEQQRrIgYg +BkEJTxtBBGsOBAAEAQIECyAHQQRqEP8/DAMLIAdBCGoQgT0MAgsgB0EIaigCACIHKAIMQYCAgIB4 +RwRAIAdBDGoQiD8LIAcQxj0gBxCYBAwBCyAHKAIEQQFLDQAgB0EEahCBPQsgAUFAayQAIAJBuAVq +IAJBzANqKQIANwMAIAIgAikCxAMiIzcDsAMgAiAjNwOwBQsgAEHACGoQrDkgABD6PiAAQQhqEPo+ +IABBAToAxAggAkG4AmoiASACQbgFaikDADcDACACQZgCaiIHIAJBmAVqKQMANwMAIAJBoAJqIgYg +AkGgBWopAwA3AwAgAkGoAmoiBSACQagFaigCADYCACACIAIpA7AFNwOwAiACIAIpA5AFNwOQAiAZ +QYKAgIB4Rg0AIAJB6AJqIAEpAwA3AwAgAkHIAmogBykDADcDACACQdACaiAGKQMANwMAIAJB2AJq +IAUoAgA2AgAgAiACKQOwAjcD4AIgAiACKQOQAjcDwAIgABDSNQJ/IBlBgYCAgHhHBEAgAkH8Amog +AkHoAmopAwA3AgAgAkGMA2ogAkHIAmopAwA3AgAgAkGUA2ogAkHQAmopAwA3AgAgAkGcA2ogAkHY +AmooAgA2AgAgAiAZNgLwAiACIAIpA+ACNwL0AiACIAIpA8ACNwKEAyACQYABNgLACkE0QQQQpy4i +AUEANgIAIAFBBGogAkHwAmpBMBDNTxogAiABECk2AsQFIAJBCGogAEGQEWogAkHACmoiASACQcQF +aiIIEPsnIAIoAgggAigCDBDkQQwBCyACQagDaiACQegCaikDADcDACACIAIpA+ACNwOgAyACQYAB +NgLACiACIAJBoANqEJ82EBk2AsQFIAIgAEGUEWogAkHACmoiASACQcQFaiIIEPsnIAIoAgAgAigC +BBDkQQshByAIEJZBIAEQlkEgAiAHNgKMAiACQYwCahCWQSAAQZARahCWQSAAQZQRahCWQUEAIRlB +AQwBC0EBIRlBAws6AJgRIAJBgBpqJAAgGQ8LQbypxgBBNyACQdgXakH0qcYAQdCqxgAQiRgAC5jY +AQIcfwJ+IwBBwCRrIgMkAAJ/AkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8C +QAJAAkACQAJAAkACQAJAAkACfgJAAkACQAJAAkACQAJAAkACQAJ+AkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIAIgQtAOIBQQFrDgQG +BABBAQsgBEHoAWohEwJAIARB6QJqIhstAABBAWsOBAUEDAMACyAEQeQCaigCACEFIARB1AJqKAIA +IQYgBEHQAmooAgAhByAEQeACaigCACEIIARB3AJqKAIAIQsMAQsgBEEAOwHgASAEIAQoAtgBNgLQ +ASAEQcwBaigCACEGIAQoAsgBIQcgBCgC1AEhCyADQcgBaiAEQRhqIgEpAwA3AwAgA0HAAWogBEEQ +aiIIKQMANwMAIANBuAFqIARBCGoiCSkDADcDACADIAQpAwA3A7ABIAQoAtwBIQUgA0G4A2ogASkA +ADcDACADQbADaiAIKQAANwMAIANBqANqIAkpAAA3AwAgAyAEKQAANwOgAyAEQbABaiEKIANBoANq +IQ0jAEGgA2siASQAAkAgBSgCKEGAgICAeEYEQCABQcgAaiAFQTBqEPYGIAFBgICAgHg2AkAMAQsg +AUG4AmogBUHYAGpB4AAQzU8aIAFB4AFqIgggBRD2BiABQRhqIAhBuAEQzU8aCyABQeABaiIIIAFB +GGoiCRDWFyABQRBqIAFB7AFqKAIANgIAIAEgASkC5AE3AwggASgC4AEhDyABQdQBaiANEPFRIAgQ +uC0gCCABKALYASABQdwBaiINKAIAEJELIAkgCEHwABDNTxogASAPOgCfAyAJIAFBnwNqQQEQkQsg +CCAJQfAAEM1PGiAJIAggAUEIahDkPSAIIAkQ4h8gCkEMaiAIQSAQ8EogCkEIaiANKAIANgIAIAog +ASkC1AE3AgAgAUGgA2okACAEQQE6AOABIAQoAtABIQggBEHoAWoiEyADQbABakHgABDNTxogBEHp +AmoiG0EAOgAAIARB5AJqIAU2AgAgBEHgAmogCDYCACAEQdwCaiALNgIAIARB1AJqIAY2AgAgBEHQ +AmogBzYCAAsgBEHMAmogBjYCACAEQcgCaiIPIAc2AgAgBEHoAmpBADoAACAEQYgCaiIGIBMpAwA3 +AwAgBEHYAmoiDCAFNgIAIARBkAJqIBNBCGopAwA3AwAgBEGYAmogE0EQaikDADcDACAEQaACaiAT +QRhqKQMANwMAQQIhBUHEk9sAKAIAQQJLDQdBpJDbABD7PiIBQf8BcUUNB0EAIQdBpJDbACgCACAB +EPUuRQ0HQaSQ2wAoAgAiBUEoaigCACEJIAVBJGooAgAhCiAFKAIcIQ0gAyAFQSBqKAIAIgEEfyAD +QQA2ArgfIAMgCTYCtB8gAyAKNgKwHyADIAE2AqwfQQEhByANBUEACzYCqB8gA0GQGWogA0GoH2pB +mPvBABDaLCADIA82AsAWIAMgASAHTQR/QQAFIAMgCTYCtB8gAyAKNgKwHyADIAE2AqwfIAMgBzYC +uB8gB0EBaiEHIA0LNgKoHyADQbAPaiADQagfakGY+8EAENosIAMgBjYCkBUgAyABIAdLBH8gAyAJ +NgK0HyADIAo2ArAfIAMgATYCrB8gAyAHNgK4HyAHQQFqIQcgDQVBAAs2AqgfIANB4BVqIANBqB9q +QZj7wQAQ2iwgAyAMNgLQGSADIAEgB00Ef0EABSADIAk2ArQfIAMgCjYCsB8gAyABNgKsHyADIAc2 +ArgfIAdBAWohByANCzYCqB8gA0HwF2ogA0GoH2pBmPvBABDaLCADIAEgB0sEfyADIAc2AqAaIAMg +CTYCnBogAyAKNgKYGiADIAE2ApQaIA0FQQALNgKQGiADQZgTaiIHIANBkBpqIgFBmPvBABDaLCAD +QeAfakGkwcEANgIAIANB3B9qQbDAwQA2AgAgA0HUH2pBpMHBADYCACADQdAfakGwwMEANgIAIANB +yB9qQaj7wQA2AgAgA0G8H2pBpPLBADYCACADQcQfaiADQdAZajYCACADQbgfaiADQZAVajYCACAD +QfTAwQA2ArAfIAMgBzYC2B8gAyADQfAXajYCzB8gAyADQeAVajYCwB8gAyADQbAPajYCtB8gAyAD +QcAWajYCrB8gAyADQZAZajYCqB8gASAFQRxqIANBqB9qENVBIARBqAJqIAUgARDEMiAEQQE6AOgC +IARBsAJqKAIAIQUMCAsgBEHwAmohDQJAAkACQAJAIARBzQRqIg8tAABBAWsOBQEEAAIDDgsgBEHQ +BGohBQJAAkAgBEHdBWoiCS0AAEEBaw4ICAUBEgoUFyAACyAEQdgFaigCACEBIARBnAVqKAIAIQgg +BEGYBWooAgAhByAEQdQFaigCACEGIARB0AVqKAIAIQsMDwsgBEHwBWooAgAhByAEQewFaigCACEG +DA8LQcDAwQBBI0GY+8EAEOYrAAsgBEHQBGohBgJAAkAgBEH2BmoiCS0AAEEBaw4DAQMpAAsgBEHM +BmooAgAhCCAEQcgGaigCACEHIARB5AZqKAIAIQEgBEHgBmooAgAhCwwnC0HAwMEAQSNB8PzBABDm +KwALIARB8AVqIQECQCAEQdQMaiIKLQAAQQFrDgMFATYACyAEQfQFaigCACELIARB0AxqKAIAIQkg +BCgC8AUhCAw0CwALQcDAwQBBI0GY+8EAEOYrAAtBwMDBAEEjQeD2wQAQ5isAC0HAwMEAQSNBuPfB +ABDmKwALQcDAwQBBI0HkicIAEOYrAAtBASEIDBELIARBAToA6AIgBEHAAmpBADYCACAEQbACakEC +NgIACyADQfANaiAGQQhqKQMANwMAIANB+A1qIAZBEGopAwA3AwAgA0GADmogBkEYaikDADcDACAD +IAYpAwA3A+gNIAQoAtgCIQEgBCgCzAIhBiAEKALIAiEHIAVBAkYNASAEQQA6AOgCIANBsB9qIARB +sAJqKQMANwMAIANBuB9qIARBuAJqKQMANwMAIANBwB9qIARBwAJqKQMANwMAIAMgBEGoAmopAwA3 +A6gfIANByB9qIANB6A1qQcgBEM1PGiAEQfACaiADQagfakHoARDNTxogBEHtBGpBADoAACAEQegE +aiABNgIAIARB5ARqIAg2AgAgBEHgBGogCzYCACAEQdwEaiAGNgIAIARB2ARqIAc2AgAgBEHuBGog +A0GgA2pBwgoQzU8aC0EAIQZBACEIQQAhCiMAQcASayIBJAAgBEHwAmoiBSgCCEECRwRAIAVBCGog +BRD4JwsgA0GQGmohCyAFQSBqIQ0gASAFNgKsAQJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkAC +QAJAAkACQAJAAkACQAJ+AkACQAJAAkACQAJAAkACQAJAAn4CQAJ/AkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAVB/QFqLQAAQQFrDgULEAAODwELIAVBgAJqIQ8CQCAF +QY0DaiIMLQAAQQFrDggREAMFFAcKGQALIAVBiANqKAIAIQcgBUHMAmooAgAhCCAFQcgCaigCACEO +IAVBhANqKAIAIQYgBUGAA2ooAgAhCQwBCyAFQfwBakEAOgAAIAFB8AJqIA1BCGopAwA3AwAgAUH4 +AmogDUEQaikDADcDACABQYADaiANQRhqKQMANwMAIAEgDSkDADcD6AIgBUHoAWooAgAhDiAFQewB +aigCACEIIAVB8AFqKAIAIQkgBUH0AWooAgAhBiAFQfgBaigCACEHIAVBgAJqIg8gAUHoAmpByAAQ +zU8aIAVBjQNqIgxBADoAACAFQYgDaiAHNgIAIAVBhANqIAY2AgAgBUGAA2ogCTYCACAFQcwCaiAI +NgIAIAVByAJqIA42AgALIAVB1AJqIAY2AgAgBUHQAmogCTYCACAFQYwDakEAOgAAIAVBxAJqIAg2 +AgAgBUHAAmogDjYCACAFQaACaiIIIA8pAwA3AwAgBUHYAmogBzYCACAFQagCaiAPQQhqKQMANwMA +IAVBsAJqIA9BEGopAwA3AwAgBUG4AmogD0EYaikDADcDACABQaABaiAGEL8sIAEoAqABIQYgASgC +pAEhByAFQZADaiAIEPFRIAFBmAFqIAYgBUGUA2ooAgAgBUGYA2ooAgAgBygCKBEFACABKAKYASEG +IAVBoANqIAEoApwBIgc2AgAgBUGcA2ogBjYCAAwBCyAFQaADaigCACEHIAVBnANqKAIAIQYLIAFB +qA1qIAYgAiAHKAIMEQMAIAEtAKgNIgdBDEYNCCABQZgFaiIIIAFBuA1qKQIANwMAIAFBoAVqIgkg +AUHADWopAgA3AwAgAUGoBWoiCiABQcgNaigCADYCACABIAEpArANNwOQBSABKAKsDSEGIAEvAKkN +IQ4gAS0Aqw0hECAFQZwDahCZNiAHQQtHDQcgBUHcAmogBjYCACAFQYwDakEBOgAAIAVBkANqEIg/ +IAVB2AJqKAIAIgYoAihBgICAgHhHDQEgBUHoAmpBADYCACAFQeACakKAgICAgAE3AwAgBSgC3AIi +BkUNGyAFQQA6AIwDIAVByANqQQA6AAAgBSAGQQhqNgKQAyAFQewCaiAGNgIACyAFQZADaiIGIAIQ +ugciBw0CQQQhBgwXCyAFQfQCaiAGNgIAIAUoAtwCIgdFDREgBUEAOgCMAyAFQcgDakEAOgAAIAUg +B0EIajYCkAMgBUH4AmogBzYCAAsgBUGQA2oiBiACELoHIgcNAUEGIQYMFQsgBUHwAmoiCCAHNgIA +IAYQ2T8gCBDUTCIGKAIIIQcgBUGUA2ogBigCBCIGNgIAIAVBmANqIAYgB0HYAGxqIgg2AgBBAAwM +CyAFQfwCaiIIIAc2AgAgBhDZPyAIENRMIgYoAgghByAFQZQDaiAGKAIEIgY2AgAgBUGYA2ogBiAH +QdgAbGoiBzYCAANAIAYgB0YEQCAIEJpMIAVB+AJqEK85IAUoAvQCIQYMEAsgBSAGNgKQAyAFIAZB +2ABqNgKUAyABQagNaiIGIAUoAvQCEP5KIAFBkAFqIAUoApADENY+IAEoAqwNIAEoArANIAEoApAB +IAEoApQBEIA8IAYQiD9FBEAgBSgClAMhBiAFKAKYAyEHDAELCyAFQegDakEAOgAAIAVBnANqIAUo +ApADNgIAIAVBoANqIAVB2AJqKAIANgIACyABQagNaiAFQZwDaiIGIAIQ5QMgASgCqA0iB0EGRg0H +IAFBmAhqIgggAUG0DWooAgA2AgAgASABKQKsDTcDkAggBhDwPyAHQQVGBEAgAUHYAmogCCgCADYC +ACABIAEpA5AINwPQAiABQagNaiAFQZADaigCABC9CyABQdIHaiABLQCrDToAACABQdgGaiABQbwN +aikCADcDACABQeAGaiABQcQNaikCADcDACABQegGaiABQcwNaikCADcDACABQegEaiABQdwNaikC +ADcDACABQfAEaiABQeQNaikCADcDACABQfgEaiABQewNaigCADYCACABIAEvAKkNOwHQByABIAEp +ArQNNwPQBiABIAEpAtQNNwPgBCABLQCoDSEIIAEoAqwNIQcgASgCsA0hBiABQcgCaiABQfgNaikD +ADcDACABIAEpA/ANNwPAAkIBDA0LQcST2wAoAgBBA0sNC0GMkNsAEPs+IgZB/wFxRQ0LQQAhB0GM +kNsAKAIAIAYQ9S5FDQtBjJDbACgCACIGQShqKAIAIQkgBkEkaigCACEKIAYoAhwhDCABIAZBIGoo +AgAiCAR/IAFBADYCuA0gASAJNgK0DSABIAo2ArANIAEgCDYCrA1BASEHIAwFQQALNgKoDSABQaAC +aiABQagNakH098IAEN0sIAFBtA1qQgA3AgAgAUEBNgKsDSABQcj4wgA2AqgNIAFBpMnCADYCsA0g +ASAHIAhJBH8gASAHNgKgCCABIAk2ApwIIAEgCjYCmAggASAINgKUCCAMBUEACzYCkAggAUGwBWoi +ByABQZAIaiIIQfT3wgAQ3SwgAUGIAWogBUGQA2ooAgAQ1j4gAUGkCGpBsNTCADYCACABQaAIaiAB +QYAIajYCACABQZTJwgA2ApgIIAEgASkDiAE3AoAIIAEgBzYCnAggASABQagNajYClAggASABQaAC +ajYCkAggAUGAAmoiByAGQRxqIAgQ8kFBjJDbACgCACAHEMQ0DAsLQeDGwgBBI0GE+sIAEOYrAAsg +AUHoBmogCigCADYCACABQeAGaiAJKQMANwMAIAFB2AZqIAgpAwA3AwAgASABKQOQBTcD0AYgBUGQ +A2oQiD8gDiAQQRB0ckEIdCAHciEHQQ4hCEICIR8MFQtBAyEGDA8LIAVBgAJqIQcCQAJAIAVBpgRq +Ig8tAABBAWsOAwEDFwALIAVB/ANqKAIAIQggBUH4A2ooAgAhBiAFQZQEaigCACEOIAVBkARqKAIA +IQ0MFQtB4MbCAEEjQcz7wgAQ5isACyAFQaADaiEMAkAgBUGECmoiCS0AAEEBaw4DBAEkAAsgBUGk +A2ooAgAhDyAFQYAKaigCACEKIAUoAqADIQ0MIgsAC0HgxsIAQSNBpPbCABDmKwALQQchBgwKC0Hg +xsIAQSNB/IfDABDmKwALQQELIQcDQCAHRQRAIAYgCEYEQCAFQfACahCaTCAFQewCahCvOQwNCyAF +QZADaiAGNgIAIAVBlANqIAZB2ABqNgIAIAVB6ANqQQA6AAAgBUGcA2ogBjYCACAFQaADaiAFQdgC +aigCADYCAEEBIQcMAQsgAUGoDWogBUGcA2oiBiACEOUDAkAgASgCqA0iB0EGRwRAIAFB+AdqIggg +AUG0DWooAgA2AgAgASABKQKsDTcD8AcgASkDuA0hHyAGEPA/IAdBBUYEQCABQdgCaiAIKAIANgIA +IAEgASkD8Ac3A9ACIAFBqA1qIAVBkANqKAIAEL0LIAFB0gdqIAEtAKsNOgAAIAFB2AZqIAFBvA1q +KQIANwMAIAFB4AZqIAFBxA1qKQIANwMAIAFB6AZqIAFBzA1qKQIANwMAIAFB6ARqIAFB3A1qKQIA +NwMAIAFB8ARqIAFB5A1qKQIANwMAIAFB+ARqIAFB7A1qKAIANgIAIAEgAS8AqQ07AdAHIAEgASkC +tA03A9AGIAEgASkC1A03A+AEIAEtAKgNIQggASgCrA0hByABKAKwDSEGIAFByAJqIAFB+A1qKQMA +NwMAIAEgASkD8A03A8ACIAVB8AJqEJpMIAVB7AJqEK85IAVB4AJqENJLQgEhHwwNCyABQfAAaiAF +QZADaigCABDWPiABKAJwIQYgAUHoAGogASgCdCIIEO4fIAEoAmghCSABKAJsIAYgCBDNTyEKIAVB +6AJqKAIAIgYgBUHgAmoiDigCAEYEQCAOIAYQmw8gBSgC6AIhBgsgBUHkAmooAgAgBkEobGoiBiAH +NgIQIAYgCDYCCCAGIAo2AgQgBiAJNgIAIAYgASkD8Ac3AhQgBiAfNwMgIAZBHGogAUH4B2ooAgA2 +AgAgBSAFKALoAkEBajYC6AIgBUGUA2ooAgAhBiAFQZgDaigCACEIDAELQQUhBgwJC0EAIQcMAAsA +CyABQYABaiAFQZADaiIGKAIAEJ0xIAFB2AZqIAYoAgAiBkEgaikCADcDACABQeAGaiAGQShqKQIA +NwMAIAFB6AZqIAZBMGopAgA3AwAgASAGKQIYNwPQBkEPIQggASgChAEhBiABKAKAASEHQgILIR8g +BUH8AmoQmkwgBUH4AmoQrzkMBwsgBUHQAmooAgAhCCABQagIaiAFQbgCaikAADcDACABQaAIaiAF +QbACaikAADcDACABQZgIaiAFQagCaikAADcDACABIAVBoAJqIgcpAAA3A5AIIAFBqA1qIAggAUGQ +CGogBhDwAiABKAKADkGAgICAeEYNASAFQZADaiABQagNaiIGQegAEM1PIQcgBUHUAmooAgAhCEHY +AEEIEKs5IAYgBxC9CyAGQdgAEM1PIQcgBUHQCmoiCRC+CyABQeAFaiAFQYALaikDADcDACABQdgF +aiAFQfgKaikDADcDACABQbgFaiAFQdgKaikDADcDACABQcAFaiAFQeAKaikDADcDACABQcgFaiAF +QegKaikDADcDACABIAVB8ApqKQMANwPQBSABIAkpAwA3A7AFIAVBiAtqKAIAIQkgAUGIEmogAUGw +BWpBOBDNTxogAUGQCGoiCiAGQZgFEM1PGiAFQfgDaiAKQZgFEM1PGiAFQZAJaiAJNgIAIAVBlAlq +IAVBjAtqKQIANwIAIAVBnAlqIAVBlAtqKAIANgIAIAVBoAlqIAVBmAtqKQMANwMAIAVBqAlqIAVB +oAtqKAIANgIAIAVBrAlqIAVBpAtqKQIANwIAIAVBtAlqIAVBrAtqKAIANgIAIAVBuAlqIAVBsAtq +QSQQzU8aIAVB3AlqIAVB1AtqQSQQzU8aIAVBiApqQQE2AgAgBUGECmogBzYCACAFQYAKakEBNgIA +IAVBjApqIAVBhAxqKQIANwIAIAVBlApqIAVBjAxqKAIANgIAIAVBmApqIAVBkAxqKQMANwMAIAVB +oApqIAVBmAxqKAIANgIAIAVBpApqIAVBnAxqKQIANwIAIAVBrApqIAVBpAxqKAIANgIAIAVBsApq +IAVBqAxqKQMANwMAIAVBuApqIAVBsAxqKAIANgIAIAVByApqIAg2AgAgBUHMCmpBADoAACAFQcQK +aiAFQbwMaigCADYCACAFQbwKaiAFQbQMaikCADcCAAsgAUGoDWogBUH4A2oiCCACEKoCIAEtAKgN +IgdBDEYNASABQbgGaiIJIAFBuA1qKQIANwMAIAFBwAZqIgogAUHADWopAgA3AwAgAUHIBmoiDCAB +QcgNaigCADYCACABIAEpArANNwOwBiABKAKsDSEGIAEvAKkNIQ4gAS0Aqw0hECAIEIk9IAdBC0cN +AiAFQfgLahC4SyABQdIHaiAFQZMDai0AADoAACABQdgGaiAFQaQDaikCADcDACABQeAGaiAFQawD +aikCADcDACABQegGaiAFQbQDaikCADcDACABQegEaiAFQcQDaikCADcDACABQfAEaiAFQcwDaikC +ADcDACABQfgEaiAFQdQDaigCADYCACABIAVBkQNqLwAAOwHQByABIAVBnANqKQIANwPQBiABIAVB +vANqKQIANwPgBCAFQZADai0AACEIIAVBlANqKAIAIQcgBUGYA2ooAgAhBiABQcgCaiAFQeADaikD +ADcDACABQdgCaiAFQfADaigCADYCACABIAVB2ANqKQMANwPAAiABIAVB6ANqKQMANwPQAkIADAcL +IAFBkAhqIAFBqA1qQcgAEM1PGkHEk9sAKAIAQQNLDQNBmJDbABD7PiIGQf8BcUUNA0EAIQhBmJDb +ACgCACAGEPUuRQ0DQZiQ2wAoAgAiBkEcaiEJIAZBIGooAgAiCgRAIAZBKGooAgAhDCAGQSRqKAIA +IQ4gBigCHCEIIAFBADYCwAUgASAMNgK8BSABIA42ArgFIAEgCjYCtAULIAEgCDYCsAUgAUGgAmoi +BiABQbAFaiIIQaD3wgAQ3SwgAUG8BWpCATcCACABQZTJwgA2AogCIAFBATYCtAUgAUHs98IANgKw +BSABQZQCNgLkByABIAg2AoQCIAEgBjYCgAIgASABQeAHajYCuAUgASABQZAIajYC4AcgAUGACGoi +BiAJIAFBgAJqEOBBQZiQ2wAoAgAgBhDENAwDC0EIIQYMAQsgAUHoBmogDCgCADYCACABQeAGaiAK +KQMANwMAIAFB2AZqIAkpAwA3AwAgASABKQOwBjcD0AYgBUH4C2oQuEsgBUGQA2oQxUcgDiAQQRB0 +ckEIdCAHciEHQQ4hCEICIR8MAgsgDCAGOgAAIAtCAzcDAEEDIQYMGAsgAUH4AGogBUHAAmooAgAg +BUHEAmooAgAQwjAgAUHYBmogB0EIaikCADcDACABQeAGaiAHQRBqKQIANwMAIAFB6AZqIAdBGGop +AgA3AwAgASAHKQIANwPQBiABKAJ8IQYgASgCeCEHIAFBkAhqEMgSQQ8hCEICIR8LIAVB3AJqIgko +AgBFDQIgBUGMA2otAABFDQIgCRCvOQwCCwJAQcST2wAoAgBBA0sNAEGAkNsAEPs+IgZB/wFxRQ0A +QQAhB0GAkNsAKAIAIAYQ9S5FDQBBgJDbACgCACIGQShqKAIAIQkgBkEkaigCACEKIAYoAhwhDCAB +IAZBIGooAgAiCAR/IAFBADYCuA0gASAJNgK0DSABIAo2ArANIAEgCDYCrA1BASEHIAwFQQALNgKo +DSABQYACaiABQagNakG09sIAEN0sIAFBtA1qQgA3AgAgAUEBNgKsDSABQYj3wgA2AqgNIAFBpMnC +ADYCsA0gASAHIAhJBH8gASAHNgLABSABIAk2ArwFIAEgCjYCuAUgASAINgK0BSAMBUEACzYCsAUg +AUGgAmoiCCABQbAFaiIHQbT2wgAQ3SwgAUGkCGpBkPfCADYCACABQaAIaiABQYAIajYCACABQZTJ +wgA2ApgIIAEgBUHgAmo2AoAIIAEgCDYCnAggASABQagNajYClAggASABQYACajYCkAggByAGQRxq +IAFBkAhqEPJBQYCQ2wAoAgAgBxDENAsgAUHgAGogBUHAAmooAgAgBUHEAmooAgAQwjAgAUHYBmog +BUGoAmopAgA3AwAgAUHgBmogBUGwAmopAgA3AwAgAUHoBmogBUG4AmopAgA3AwAgASAFQaACaikC +ADcD0AYgASgCZCEGIAEoAmAhByAFQeACahDSS0EPIQhCAgshHyAFQdwCaiIJKAIARQ0AIAVBjANq +LQAARQ0AIAkQrzkLIAVBjANqQQA6AAAgAUHCB2oiECABQdIHai0AADoAACABQZgHaiIRIAFB2AZq +IhUpAwA3AwAgAUGgB2oiEiABQeAGaiIWKQMANwMAIAFBqAdqIhQgAUHoBmoiGSkDADcDACABQegB +aiIXIAFB6ARqKQMANwMAIAFB8AFqIhggAUHwBGopAwA3AwAgAUH4AWoiGiABQfgEaigCADYCACAB +IAEvAdAHOwHAByABIAEpA9AGNwOQByABIAEpA+AENwPgASAFQQE6AI0DIAFB2AFqIhwgAUHYAmoi +CSgCADYCACABQdABaiIdIAFB0AJqIgwpAwA3AwAgAUHIAWoiHiABQcgCaiIKKQMANwMAIAFB5gJq +Ig4gEC0AADoAACABIAEpA8ACNwPAASABIAEvAcAHOwHkAiAJIBQpAwA3AwAgDCASKQMANwMAIAog +ESkDADcDACABIAEpA5AHNwPAAiABQbgCaiIQIBooAgA2AgAgAUGwAmoiESAYKQMANwMAIAFBqAJq +IhIgFykDADcDACABIAEpA+ABNwOgAiABQZgCaiIXIBwoAgA2AgAgAUGQAmoiGCAdKQMANwMAIAFB +iAJqIhQgHikDADcDACABIAEpA8ABNwOAAiAPEP4QQgIhICAfQgJRBEAgAUGSB2ogDi0AADoAACAB +QbgFaiAKKQMANwMAIAFBwAVqIAwpAwA3AwAgAUHIBWogCSkDADcDACAVIBIpAwA3AwAgFiARKQMA +NwMAIBkgECgCADYCACABIAEvAeQCOwGQByABIAEpA8ACNwOwBSABIAEpA6ACNwPQBgwTCyAFQfwB +akEBOgAAIAVByABqIAg6AAAgBUFAayAfNwMAIAVByQBqIAEvAeQCOwAAIAVB0ABqIAY2AgAgBUHM +AGogBzYCACABQagFaiIGIBcoAgA2AgAgAUGgBWoiByAYKQMANwMAIAFBmAVqIBQpAwA3AwAgBUHL +AGogDi0AADoAACABIAEpA4ACNwOQBSAFQewAaiAJKQMANwIAIAVB5ABqIAwpAwA3AgAgBUHcAGog +CikDADcCACAFQdQAaiABKQPAAjcCACAFQfQAaiABKQOgAjcCACAFQfwAaiASKQMANwIAIAVBhAFq +IBEpAwA3AgAgBUGMAWogECgCADYCACAFQZABaiABKQOAAjcDACAFQZgBaiAUKQMANwMAIAFBuAFq +IAYoAgA2AgAgASAHKQMANwOwAQJAQcST2wAoAgANAEGwkNsAEPs+IgZB/wFxRQ0AQQAhB0GwkNsA +KAIAIAYQ9S5FDQBBsJDbACgCACIGQRxqIQggBkEgaigCACIJBEAgBkEoaigCACEMIAZBJGooAgAh +CiAGKAIcIQcgAUEANgK4DSABIAw2ArQNIAEgCjYCsA0gASAJNgKsDQsgASAHNgKoDSABQZAIaiIG +IAFBqA1qIgdBlPrCABDdLCABQbQNakIANwIAIAFBlMnCADYC8AIgAUEBNgKsDSABQcz6wgA2AqgN +IAFBpMnCADYCsA0gASAHNgLsAiABIAY2AugCIAFBsAVqIAggAUHoAmoQ4EEgAUHYBmogAUG4BWoo +AgA2AgAgASABKQKwBTcD0AZBsJDbACgCACABQdAGahDENAsgAUHwAmogDUEIaikDADcDACABQfgC +aiANQRBqKQMANwMAIAFBgANqIA1BGGopAwA3AwAgASANKQMANwPoAiAFQegBaigCACEGIAVB7AFq +KAIAIQggBUHwAWooAgAhDSAFQfQBaigCACEOIA8gAUHoAmpB+AEQzU8aIAVBlARqIA42AgAgBUGQ +BGogDTYCACAFQfwDaiAINgIAIAVB+ANqIAY2AgAgBUGmBGoiD0EAOgAAIAVBmARqIAEpA7ABNwMA +IAVBoARqIAFBuAFqKAIANgIAIAVBgAJqIQcLIAVBgARqIAVBmARqKQMANwMAIAVB9ANqIAg2AgAg +BUHwA2oiCCAGNgIAIAVBpARqQYACOwEAIAVBoAJqIgkgBykDADcDACAFQagCaiAHQQhqKQMANwMA +IAVBsAJqIAdBEGopAwA3AwAgBUG4AmogB0EYaikDADcDACAFQYgEaiAFQaAEaigCACIGNgIAIAFB +2ABqIAVBhARqKAIAIAYQ8w0gASgCXCEGIAEoAlgNAiAFQQE6AKQEIAVBjARqIAY2AgAgAUHQAGog +BhCZFSABIAEpA1A3AqgNIAFBqA1qIA1BEGoiBhCNNkUNASABQTBqIAUoAowEEJgVIAEgASkDMDcC +qA0gAUGoDWogCBD/Pg0EIA1BKGooAgBBCGogBSgCjAQQzSUQjkoNBSAFKAKMBCIGKAIAQQZGDQYg +AUEoaiAGEJgVIAEoAighBiAFQcQCaiABKAIsNgIAIAVBwAJqIAY2AgAgBUHIAmogCSkDADcDACAF +QdACaiAJQQhqKQMANwMAIAVB2AJqIAlBEGopAwA3AwAgBUHgAmogCUEYaikDADcDACAFQewDakEA +OgAAIAVB6ANqIA42AgALIAFBqA1qIAVBwAJqIgwgAhCVBEEEIQYgASgCiA4iCEEERw0CIA9BAzoA +ACALQgM3AwAMEQsgAUHIAGogBSgCjAQQmRUgAUFAayABKAJIIAEoAkwQwjAgASgCRCEOIAEoAkAh +DSABQThqIAYQ8S5BBSEGQQohDCABKAI4IQogASgCPAwFC0ELIQwMCAsgAUHoAWoiDyABQcQNaikC +ADcDACABIAEpArwNNwPgASABKAK4DSEJIAEoArQNIQogASgCsA0hDiABKAKsDSENIAEoAqgNIQYg +AUHQBmogAUHMDWpBPBDNTxogAUHIBmoiECABQaQOaigCADYCACABQcAGaiIRIAFBnA5qKQIANwMA +IAFBuAZqIhIgAUGUDmopAgA3AwAgASABKQKMDjcDsAYgDBD7PwJ/AkAgCEEDRwRAIAFBtAhqIAFB +0AZqQTwQzU8aIAFBjAlqIBAoAgA2AgAgAUGECWogESkDADcCACABQfwIaiASKQMANwIAIAFBrAhq +IA8pAwA3AgAgASAJNgKgCCABIAo2ApwIIAEgDjYCmAggASANNgKUCCABIAY2ApAIIAEgASkDsAY3 +AvQIIAEgASkD4AE3AqQIIAEgCDYC8AgCQCAIQQJHBEAgAUGwBWogAUGQCGpBgAEQzU8aIAFBqA1q +IAFB4AVqEOlIIAEoAqgNRQ0DIAFBkAhqIgYgAUGsDWpBwAEQzU8aIAYgBUGMBGooAgAQziUQjkoN +ASABQbAFahDEOyAFKAKMBCEGDAcLIAFBkAhqEPhCQQMhBkEKIQwMCgsgAUGoDWoiBiABQZAIakHA +ARDNTxogBhD4SCENIAYgBSgCjAQQziVBwAEQzU8aIAYQ+EghDkEGDAILIAFBmAdqIA8pAwA3AwAg +ASABKQPgATcDkAdBDiEMDAgLQQMLIQYgAUGwBWoQxDtBACEJQQohDAwGCyABQSBqIAUoAowEEJgV +IAFBGGogASgCICABKAIkEMIwIAEoAhwhDiABKAIYIQ0gAUEQaiAFKALwAyAFKAL0AxDCMEEFIQZB +CiEMIAEoAhAhCiABKAIUDAILIAFBqA1qIgYgDSgCKEEIakHAARDNTxogBhD4SCENIAYgBSgCjAQQ +zSVBwAEQzU8aIAYQ+EghDkEGIQZBCiEMQQAMAQsgBUGkBGpBADoAACABIAY2ArAFIAVBpQRqQQA6 +AAAgAUGwDWogBUGIBGooAgA2AgAgASAFQYAEaikCADcDqA0gAUGQCGogAUGoDWoQsBcgASgCkAgi +DUUNASABKAKUCCEOIAFBmAdqIAVBsAJqKQMANwMAIAFBoAdqIAVBuAJqKQMANwMAIAEgBUGoAmop +AwA3A5AHIAVBoAJqKAIAIQpBEiEMIAVBpAJqKAIACyEJIAVBpARqLQAADQEMBAsgASgClAghBiAB +QbAFahD9EkELIQwMAQsgBUGMBGoQ/RIMAgsgBUGkBGotAABFDQAgBUGMBGoQ/RILIAVBpARqQQA6 +AAAMAQsgBUEAOgCkBAsgBUGlBGotAAAEQCAFQYAEahCIPwsgBUEAOgClBCABQeAEaiIQIAFBkAdq +QTAQzU8aQQEhDyAFQQE6AKYEIAVBoAFqIgggDDoAACAFQaEBaiABLwDAATsAACAFQaMBaiABQcIB +ai0AADoAACAFQbQBaiAJNgIAIAVBsAFqIAo2AgAgBUGsAWogDjYCACAFQagBaiANNgIAIAVBpAFq +IgkgBjYCACAFQbgBaiAQQTAQzU8aIAcQ3iwgCC0AAEESRgRAIAFBoAhqIAlBLBDNTxogAUGSB2og +BUHLAGotAAA6AAAgAUG4BWogBUHcAGopAgA3AwAgAUHABWogBUHkAGopAgA3AwAgAUHIBWogBUHs +AGopAgA3AwAgAUHoBmogBUGMAWooAgA2AgAgAUHgBmogBUGEAWopAgA3AwAgAUHYBmogBUH8AGop +AgA3AwAgASAFQckAai8AADsBkAcgASAFQdQAaikCADcDsAUgASAFQfQAaikCADcD0AYgBUHIAGot +AAAhCCAFQUBrKQMAISAgBUHMAGooAgAhByAFQdAAaigCACEGIAFBmAhqIAVBmAFqKQMANwMAIAEg +BUGQAWopAwA3A5AIIAFBqA1qIAFBkAhqQcAAEM1PGgwDCyAHIAhByAAQzU8aIAVB9AFqKAIAIQog +BUHIAmoiDSAFQcgAakHYABDNTyEGIAVBhApqIglBADoAACAFQYAKaiAKNgIAIAVBpANqQQE2AgAg +BUGgA2oiDCAGNgIAC0EAIQYgAUEIaiAPEPQiIAEoAggiCCAPQf////8BcSIHIAcgCEsbIQcgASgC +DCEOA0AgBwRAIAFBqA1qIhAgBiANahC9CyAGIA5qIBBB2AAQzU8aIAdBAWshByAGQdgAaiEGDAEL +CyABQagNaiIGEL4LIAFB4AVqIAFB2A1qKQMANwMAIAFB2AVqIAFB0A1qKQMANwMAIAEgASkDyA03 +A9AFIAFB6AFqIgcgAUH4DWooAgA2AgAgASABKQPwDTcD4AEgASgC4A0hDSABQYgIaiIQIAFB5A5q +KAIANgIAIAEgASkC3A43A4AIIAFB+AdqIhEgAUHwDmooAgA2AgAgASABKQPoDjcD8AcgAUHoB2oi +EiABQfwOaigCADYCACABIAEpAvQONwPgByABQdgHaiIUIAFBiA9qKAIANgIAIAEgASkDgA83A9AH +IAFB0AZqIhUgAUGIDmpBJBDNTxogAUGQB2oiFiABQawOakEkEM1PGiABQbgGaiIZIAFB7A1qKAIA +NgIAIAFBuAVqIAFBsA1qKQMANwMAIAFBwAVqIAFBuA1qKQMANwMAIAFByAVqIAFBwA1qKQMANwMA +IAEgASkC5A03A7AGIAEgASkDqA03A7AFIAFByAdqIhcgAUGUD2ooAgA2AgAgASABKQKMDzcDwAcg +AUHIAWoiGCABQYQOaigCADYCACABIAEpAvwNNwPAASABQdAOahC4SyABQYgSaiABQbAFakE4EM1P +GiABQZAIaiIaIAZBmAUQzU8aIAVBqANqIBpBmAUQzU8aIAVBwAhqIA02AgAgBUHECGogASkDsAY3 +AgAgBUHMCGogGSgCADYCACAFQdAIaiABKQPgATcDACAFQdgIaiAHKAIANgIAIAVB3AhqIAEpA8AB +NwIAIAVB5AhqIBgoAgA2AgAgBUHoCGogFUEkEM1PGiAFQYwJaiAWQSQQzU8aIAVBuAlqIA82AgAg +BUG0CWogDjYCACAFQbAJaiAINgIAIAVBvAlqIAEpA4AINwIAIAVBxAlqIBAoAgA2AgAgBUHICWog +ASkD8Ac3AwAgBUHQCWogESgCADYCACAFQdQJaiABKQPgBzcCACAFQdwJaiASKAIANgIAIAVB4Alq +IAEpA9AHNwMAIAVB6AlqIBQoAgA2AgAgBUH4CWogCjYCACAFQfwJakEAOgAAIAVB9AlqIBcoAgA2 +AgAgBUHsCWogASkDwAc3AgALIAFBqA1qIAVBqANqIgggAhCqAgJAIAEtAKgNIgdBDEcEQCABQegE +aiIKIAFBuA1qKQIANwMAIAFB8ARqIg0gAUHADWopAgA3AwAgAUH4BGoiDyABQcgNaigCADYCACAB +IAEpArANNwPgBCABKAKsDSEGIAEvAKkNIQ4gAS0Aqw0hECAIEIk9IAlBAToAACABQZgIaiIIIAop +AwA3AwAgAUGgCGoiCSANKQMANwMAIAFBqAhqIgogDygCADYCACABIAEpA+AENwOQCCAMEJRAIAdB +C0cEQCABQcgFaiAKKAIANgIAIAFBwAVqIAkpAwA3AwAgAUG4BWogCCkDADcDACABIAEpA5AINwOw +BSAFQcgCahDEKSAFQYACahCyGiAFQfwBakEAOgAAIA4gEEEQdHJBCHQgB3IhB0EOIQhCAiEgDAQL +IAVByAJqEMQpQcST2wAoAgBBA0sNAUG8kNsAEPs+IgZB/wFxRQ0BQQAhB0G8kNsAKAIAIAYQ9S5F +DQFBvJDbACgCACIGQShqKAIAIQkgBkEkaigCACEKIAYoAhwhDSABIAZBIGooAgAiCAR/IAFBADYC +uA0gASAJNgK0DSABIAo2ArANIAEgCDYCrA1BASEHIA0FQQALNgKoDSABQeAEaiABQagNakHU+sIA +EN0sIAFBtA1qQgA3AgAgAUEBNgKsDSABQcT7wgA2AqgNIAFBpMnCADYCsA0gASAHIAhJBH8gASAH +NgLgBiABIAk2AtwGIAEgCjYC2AYgASAINgLUBiANBUEACzYC0AYgAUGQB2oiCCABQdAGaiIHQdT6 +wgAQ3SwgAUHEBWpBjOjCADYCACABQcAFaiABQbAGajYCACABQZTJwgA2ArgFIAEgBUGAAmo2ArAG +IAEgCDYCvAUgASABQagNajYCtAUgASABQeAEajYCsAUgByAGQRxqIAFBsAVqEPJBQbyQ2wAoAgAg +BxDENAwBCyAJQQM6AAAgC0IDNwMAQQUhBgwDCyABQZIHaiAFQYMCai0AADoAACABQbgFaiAFQZQC +aikCADcDACABQcAFaiAFQZwCaikCADcDACABQcgFaiAFQaQCaikCADcDACABQdgGaiAFQbQCaikC +ADcDACABQeAGaiAFQbwCaikCADcDACABQegGaiAFQcQCaigCADYCACABIAVBgQJqLwAAOwGQByAB +IAVBjAJqKQIANwOwBSABIAVBrAJqKQIANwPQBiAFQYgCaigCACEGIAVBhAJqKAIAIQcgBUGAAmot +AAAhCEICISALIAVB/AFqQQA6AAALIAsgCDoACCALICA3AwAgCyABLwGQBzsACSALIAY2AhAgCyAH +NgIMIAsgASkDsAU3AhQgCyABKQPQBjcCNCALQQtqIAFBkgdqLQAAOgAAIAtBHGogAUG4BWopAwA3 +AgAgC0EkaiABQcAFaikDADcCACALQSxqIAFByAVqKQMANwIAIAtBPGogAUHYBmopAwA3AgAgC0HE +AGogAUHgBmopAwA3AgAgC0HMAGogAUHoBmooAgA2AgAgC0HQAGogAUGoDWpBwAAQzU8aQQEhBgsg +BSAGOgD9ASABQawBahCKPSABQcASaiQAIAMpA5AaIh9CA1ENDCADQb4RaiADQZsaai0AADoAACAD +QaARaiADQawaaikCADcDACADQagRaiADQbQaaikCADcDACADQbARaiADQbwaaikCADcDACADQYAR +aiADQcwaaikCADcDACADQYgRaiADQdQaaikCADcDACADQZARaiADQdwaaigCADYCACADIAMvAJka +OwG8ESADIAMpAqQaNwOYESADIAMpAsQaNwP4ECADLQCYGiEHIAMoApwaIQggAygCoBohBiADQbgQ +aiADQeAaakHAABDNTxogBRDUSwwzCyAEQfACaiINIANB6A1qQcgBEM1PGiAEQc0EaiIPQQA6AAAg +BEHIBGogATYCACAEQcQEaiAINgIAIARBwARqIAs2AgAgBEG8BGogBjYCACAEQbgEaiAHNgIAIARB +zgRqIANBoANqQcIKEM1PGgsgBEHMBGpBADoAACADQaATaiANQQhqKQMANwMAIANBqBNqIA1BEGop +AwA3AwAgA0GwE2ogDUEYaikDADcDACADIA0pAwA3A5gTIARBuARqKAIAIQcgBEG8BGooAgAhCCAE +QcAEaigCACELIARBxARqKAIAIQYgBEHIBGooAgAhASAEQdAEaiIFIANBmBNqQcgAEM1PGiAEQd0F +aiIJQQA6AAAgBEHYBWogATYCACAEQdQFaiAGNgIAIARB0AVqIAs2AgAgBEGcBWogCDYCACAEQZgF +aiAHNgIACyAEQaQFaiAGNgIAIARBoAVqIAs2AgAgBEHcBWpBADoAACAEQZQFaiAINgIAIARBkAVq +IAc2AgAgBEHwBGoiByAFKQMANwMAIARBqAVqIAE2AgAgBEH4BGogBUEIaikDADcDACAEQYAFaiAF +QRBqKQMANwMAIARBiAVqIAVBGGopAwA3AwAgA0GoAWogBhC/LCADKAKoASEBIAMoAqwBIQYgBEHg +BWogBxDxUSADQaABaiABIARB5AVqKAIAIARB6AVqKAIAIAYoAigRBQAgAygCoAEhBiAEQfAFaiAD +KAKkASIHNgIAIARB7AVqIAY2AgALIANBqB9qIAYgAiAHKAIMEQMAIAMtAKgfIgFBDEYNByADQfAW +aiIHIANBuB9qKQIANwMAIANB+BZqIgggA0HAH2opAgA3AwAgA0GAF2oiCiADQcgfaigCADYCACAD +IAMpArAfNwPoFiADKAKsHyEGIAMvAKkfIQsgAy0Aqx8hDCAEQewFahCZNiABQQtHDQYgBEGsBWog +BjYCACAEQdwFakEBOgAAIARB4AVqEIg/IARBqAVqKAIAIgYoAihBgICAgHhHDQEgBEG4BWpBADYC +ACAEQbAFakKAgICAgAE3AwAgBCgCrAUiAUUNFSAEQQA6ANwFIARBmAZqQQA6AAAgBCABQQhqNgLg +BSAEQbwFaiABNgIACyAEQeAFaiIBIAIQuQciBg0CQQQhBgwRCyAEQcQFaiAGNgIAIAQoAqwFIgFF +DQsgBEEAOgDcBSAEQZgGakEAOgAAIAQgAUEIajYC4AUgBEHIBWogATYCAAsgBEHgBWoiBiACELkH +IgcNAUEGIQYMDwsgBEHABWoiByAGNgIAIAEQ2T8gBxDUTCIBKAIIIQcgBEHkBWogASgCBCIGNgIA +IARB6AVqIAYgB0HYAGxqIgc2AgBBACEIDAYLIARBzAVqIgEgBzYCACAGENk/IAEQ1EwiBigCCCEH +IARB5AVqIAYoAgQiBjYCACAEQegFaiAGIAdB2ABsaiIHNgIAA0AgBiAHRgRAIAEQmkwgBEHIBWoQ +rzkgBCgCxAUhBgwKCyAEIAY2AuAFIAQgBkHYAGo2AuQFIANBqB9qIgYgBCgCxAUQ/kogA0GYAWog +BCgC4AUQ1j4gAygCrB8gAygCsB8gAygCmAEgAygCnAEQgDwgBhCIP0UEQCAEKALkBSEGIAQoAugF +IQcMAQsLIARBuAZqQQA6AAAgBEHsBWogBCgC4AU2AgAgBEHwBWogBEGoBWooAgA2AgALIANBqB9q +IARB7AVqIgEgAhDiAyADKAKoHyIGQQZGDQMgA0GYGmoiByADQbQfaigCADYCACADIAMpAqwfNwOQ +GiABEPA/IAZBBUYEQCADQYgZaiAHKAIANgIAIAMgAykDkBo3A4AZIANBqB9qIARB4AVqKAIAEL0L +IANB7hdqIAMtAKsfOgAAIANBmBlqIANBvB9qKQIANwMAIANBoBlqIANBxB9qKQIANwMAIANBqBlq +IANBzB9qKQIANwMAIANBmBVqIANB3B9qKQIANwMAIANBoBVqIANB5B9qKQIANwMAIANBqBVqIANB +7B9qKAIANgIAIAMgAy8AqR87AewXIAMgAykCtB83A5AZIAMgAykC1B83A5AVIAMtAKgfIQcgAygC +rB8hCCADKAKwHyEGIANB+BhqIANB+B9qKQMANwMAIAMgAykD8B83A/AYQgEMBwtBxJPbACgCAEED +Sw0FQYyQ2wAQ+z4iAUH/AXFFDQVBACEHQYyQ2wAoAgAgARD1LkUNBUGMkNsAKAIAIgFBKGooAgAh +CCABQSRqKAIAIQkgASgCHCEKIAMgAUEgaigCACIGBH8gA0EANgK4HyADIAg2ArQfIAMgCTYCsB8g +AyAGNgKsH0EBIQcgCgVBAAs2AqgfIANBsBdqIANBqB9qQYj5wQAQ2iwgA0G0H2pCADcCACADQQE2 +AqwfIANB3PnBADYCqB8gA0GwwMEANgKwHyADIAYgB0sEfyADIAc2AqAaIAMgCDYCnBogAyAJNgKY +GiADIAY2ApQaIAoFQQALNgKQGiADQfAXaiIGIANBkBpqIgdBiPnBABDaLCADQZABaiAEQeAFaigC +ABDWPiADQaQaakGQ3MEANgIAIANBoBpqIANBgBpqNgIAIANBoMDBADYCmBogAyADKQOQATcCgBog +AyAGNgKcGiADIANBqB9qNgKUGiADIANBsBdqNgKQGiADQZgXaiIGIAFBHGogBxDyQUGMkNsAKAIA +IAYQxDQMBQsgA0GoGWogCigCADYCACADQaAZaiAIKQMANwMAIANBmBlqIAcpAwA3AwAgAyADKQPo +FjcDkBkgBEHgBWoQiD8gCyAMQRB0ckEIdCABciEIQQ4hB0ICISAMEAtBAyEGDAoLQQMMJQtBByEG +DAgLA0AgCEUEQCAGIAdGBEAgBEHABWoQmkwgBEG8BWoQrzkMDQsgBEHgBWogBjYCACAEQeQFaiAG +QdgAajYCACAEQbgGakEAOgAAIARB7AVqIAY2AgAgBEHwBWogBEGoBWooAgA2AgBBASEIDAELIANB +qB9qIARB7AVqIgEgAhDiAwJAIAMoAqgfIgdBBkcEQCADQZAXaiIGIANBtB9qKAIANgIAIAMgAykC +rB83A4gXIAMpA7gfIR8gARDwPyAHQQVGBEAgA0GIGWogBigCADYCACADIAMpA4gXNwOAGSADQagf +aiAEQeAFaigCABC9CyADQe4XaiADLQCrHzoAACADQZgZaiADQbwfaikCADcDACADQaAZaiADQcQf +aikCADcDACADQagZaiADQcwfaikCADcDACADQZgVaiADQdwfaikCADcDACADQaAVaiADQeQfaikC +ADcDACADQagVaiADQewfaigCADYCACADIAMvAKkfOwHsFyADIAMpArQfNwOQGSADIAMpAtQfNwOQ +FSADLQCoHyEHIAMoAqwfIQggAygCsB8hBiADQfgYaiADQfgfaikDADcDACADIAMpA/AfNwPwGCAE +QcAFahCaTCAEQbwFahCvOSAEQbAFahDSS0IBISAMDQsgA0H4AGogBEHgBWooAgAQ1j4gAygCeCEB +IANB8ABqIAMoAnwiCBDuHyADKAJwIQogAygCdCABIAgQzU8hCyAEQbgFaigCACIGIARBsAVqIgEo +AgBGBEAgASAGEJsPIAQoArgFIQYLIARBtAVqKAIAIAZBKGxqIgEgBzYCECABIAg2AgggASALNgIE +IAEgCjYCACABIAMpA4gXNwIUIAEgHzcDICABQRxqIANBkBdqKAIANgIAIAQgBCgCuAVBAWo2ArgF +IARB5AVqKAIAIQYgBEHoBWooAgAhBwwBC0EFIQYMCQtBACEIDAALAAsgA0GIAWogBEHgBWoiASgC +ABCdMSADQZgZaiABKAIAIgFBIGopAgA3AwAgA0GgGWogAUEoaikCADcDACADQagZaiABQTBqKQIA +NwMAIAMgASkCGDcDkBlBDyEHIAMoAowBIQYgAygCiAEhCEICCyEgIARBzAVqEJpMIARByAVqEK85 +DAcLIARBoAVqKAIAIQcgA0GoGmogBEGIBWopAAA3AwAgA0GgGmogBEGABWopAAA3AwAgA0GYGmog +BEH4BGopAAA3AwAgAyAEQfAEaiIBKQAANwOQGiADQagfaiAHIANBkBpqIAYQ8AIgAygCgCBBgICA +gHhGDQEgBEHgBWogA0GoH2oiAUHoABDNTyEGIARBpAVqKAIAIQdB2AAQwjkgASAGEL0LIAFB2AAQ +zU8hBiAEQaANaiIIELwLIANBoBhqIARB0A1qKQMANwMAIANBmBhqIARByA1qKQMANwMAIANB+Bdq +IARBqA1qKQMANwMAIANBgBhqIARBsA1qKQMANwMAIANBiBhqIARBuA1qKQMANwMAIAMgBEHADWop +AwA3A5AYIAMgCCkDADcD8BcgBEHYDWooAgAhCCADQYgkaiADQfAXakE4EM1PGiADQZAaaiIKIAFB +mAUQzU8aIARByAZqIApBmAUQzU8aIARB4AtqIAg2AgAgBEHkC2ogBEHcDWopAgA3AgAgBEHsC2og +BEHkDWooAgA2AgAgBEHwC2ogBEHoDWopAwA3AwAgBEH4C2ogBEHwDWooAgA2AgAgBEH8C2ogBEH0 +DWopAgA3AgAgBEGEDGogBEH8DWooAgA2AgAgBEGIDGogBEGADmpBJBDNTxogBEGsDGogBEGkDmpB +JBDNTxogBEHYDGpBATYCACAEQdQMaiAGNgIAIARB0AxqQQE2AgAgBEHcDGogBEHUDmopAgA3AgAg +BEHkDGogBEHcDmooAgA2AgAgBEHoDGogBEHgDmopAwA3AwAgBEHwDGogBEHoDmooAgA2AgAgBEH0 +DGogBEHsDmopAgA3AgAgBEH8DGogBEH0DmooAgA2AgAgBEGADWogBEH4DmopAwA3AwAgBEGIDWog +BEGAD2ooAgA2AgAgBEGYDWogBzYCACAEQZwNakEAOgAAIARBlA1qIARBjA9qKAIANgIAIARBjA1q +IARBhA9qKQIANwIACyADQagfaiAEQcgGaiIHIAIQ/BAgAy0AqB8iAUEMRg0BIANB2BdqIgggA0G4 +H2opAgA3AwAgA0HgF2oiCSADQcAfaikCADcDACADQegXaiIKIANByB9qKAIANgIAIAMgAykCsB83 +A9AXIAMoAqwfIQYgAy8AqR8hCyADLQCrHyEMIAcQ+TwgAUELRw0CIARByA5qELhLIANB7hdqIARB +4wVqLQAAOgAAIANBmBlqIARB9AVqKQIANwMAIANBoBlqIARB/AVqKQIANwMAIANBqBlqIARBhAZq +KQIANwMAIANBmBVqIARBlAZqKQIANwMAIANBoBVqIARBnAZqKQIANwMAIANBqBVqIARBpAZqKAIA +NgIAIAMgBEHhBWovAAA7AewXIAMgBEHsBWopAgA3A5AZIAMgBEGMBmopAgA3A5AVIARB4AVqLQAA +IQcgBEHkBWooAgAhCCAEQegFaigCACEGIANB+BhqIARBsAZqKQMANwMAIANBiBlqIARBwAZqKAIA +NgIAIAMgBEGoBmopAwA3A/AYIAMgBEG4BmopAwA3A4AZQgAMBwsgA0GQGmogA0GoH2pByAAQzU8a +QcST2wAoAgBBA0sNA0GYkNsAEPs+IgZB/wFxRQ0DQQAhCEGYkNsAKAIAIAYQ9S5FDQNBmJDbACgC +ACIGQRxqIQcgBkEgaigCACIJBEAgBkEoaigCACEKIAZBJGooAgAhCyAGKAIcIQggA0EANgKAGCAD +IAo2AvwXIAMgCzYC+BcgAyAJNgL0FwsgAyAINgLwFyADQbAXaiIGIANB8BdqIghBtPjBABDaLCAD +QfwXakIBNwIAIANBoMDBADYCoBcgA0EBNgL0FyADQYD5wQA2AvAXIANB0QE2AswXIAMgCDYCnBcg +AyAGNgKYFyADIANByBdqNgL4FyADIANBkBpqNgLIFyADQYAaaiIGIAcgA0GYF2oQ4EFBmJDbACgC +ACAGEMQ0DAMLQQghBgwBCyADQagZaiAKKAIANgIAIANBoBlqIAkpAwA3AwAgA0GYGWogCCkDADcD +ACADIAMpA9AXNwOQGSAEQcgOahC4SyAEQeAFahDFRyALIAxBEHRyQQh0IAFyIQhBDiEHQgIhIAwC +CyAJIAY6AABBAyEFDBYLIANBgAFqIARBkAVqKAIAIARBlAVqKAIAEMIwIANBmBlqIAFBCGopAgA3 +AwAgA0GgGWogAUEQaikCADcDACADQagZaiABQRhqKQIANwMAIAMgASkCADcDkBkgAygChAEhBiAD +KAKAASEIIANBkBpqEMgSQQ8hB0ICISALIARBrAVqIgEoAgBFDQIgBEHcBWotAABFDQIgARCvOQwC +CwJAQcST2wAoAgBBA0sNAEGAkNsAEPs+IgFB/wFxRQ0AQQAhB0GAkNsAKAIAIAEQ9S5FDQBBgJDb +ACgCACIBQShqKAIAIQggAUEkaigCACEJIAEoAhwhCiADIAFBIGooAgAiBgR/IANBADYCuB8gAyAI +NgK0HyADIAk2ArAfIAMgBjYCrB9BASEHIAoFQQALNgKoHyADQZgXaiADQagfakHI98EAENosIANB +tB9qQgA3AgAgA0EBNgKsHyADQZz4wQA2AqgfIANBsMDBADYCsB8gAyAGIAdLBH8gAyAHNgKAGCAD +IAg2AvwXIAMgCTYC+BcgAyAGNgL0FyAKBUEACzYC8BcgA0GwF2oiByADQfAXaiIGQcj3wQAQ2iwg +A0GkGmpBpPjBADYCACADQaAaaiADQYAaajYCACADQaDAwQA2ApgaIAMgBEGwBWo2AoAaIAMgBzYC +nBogAyADQagfajYClBogAyADQZgXajYCkBogBiABQRxqIANBkBpqEPJBQYCQ2wAoAgAgBhDENAsg +A0HoAGogBEGQBWooAgAgBEGUBWooAgAQwjAgA0GYGWogBEH4BGopAgA3AwAgA0GgGWogBEGABWop +AgA3AwAgA0GoGWogBEGIBWopAgA3AwAgAyAEQfAEaikCADcDkBkgAygCbCEGIAMoAmghCCAEQbAF +ahDSS0EPIQdCAgshICAEQawFaiIBKAIARQ0AIARB3AVqLQAARQ0AIAEQrzkLIARB3AVqQQA6AAAg +A0GOEmoiCSADQe4Xai0AADoAACADQdgZaiIMIANBmBlqKQMANwMAIANB4BlqIgsgA0GgGWopAwA3 +AwAgA0HoGWoiCiADQagZaikDADcDACADQfgRaiIRIANBmBVqKQMANwMAIANBgBJqIhAgA0GgFWop +AwA3AwAgA0GIEmoiDiADQagVaigCADYCACADIAMvAewXOwGMEiADIAMpA5AZNwPQGSADIAMpA5AV +NwPwESAEQQE6AN0FIANB6BFqIhIgA0GIGWooAgA2AgAgA0HgEWoiFCADQYAZaikDADcDACADQdgR +aiIVIANB+BhqKQMANwMAIANB9hJqIgEgCS0AADoAACADIAMpA/AYNwPQESADIAMvAYwSOwH0EiAD +QegSaiIJIAopAwA3AwAgA0HgEmoiCiALKQMANwMAIANB2BJqIgsgDCkDADcDACADIAMpA9AZNwPQ +EiADQcgSaiIMIA4oAgA2AgAgA0HAEmoiDiAQKQMANwMAIANBuBJqIhAgESkDADcDACADIAMpA/AR +NwOwEiADQagSaiIWIBIoAgA2AgAgA0GgEmoiEiAUKQMANwMAIANBmBJqIhEgFSkDADcDACADIAMp +A9ARNwOQEiAFEP0QQgIhHyAgQgJRBEAgA0HmFmogAS0AADoAACADQcgWaiALKQMANwMAIANB0BZq +IAopAwA3AwAgA0HYFmogCSkDADcDACADQagWaiAQKQMANwMAIANBsBZqIA4pAwA3AwAgA0G4Fmog +DCgCADYCACADIAMvAfQSOwHkFiADIAMpA9ASNwPAFiADIAMpA7ASNwOgFgwVCyAEQcwEakEBOgAA +IARBmANqIAc6AAAgBEGQA2ogIDcDACAEQZkDaiADLwH0EjsAACAEQaADaiAGNgIAIARBnANqIAg2 +AgAgA0GQE2oiBiAWKAIANgIAIANBiBNqIgcgEikDADcDACADQYATaiARKQMANwMAIARBmwNqIAEt +AAA6AAAgAyADKQOQEjcD+BIgBEG8A2ogCSkDADcCACAEQbQDaiAKKQMANwIAIARBrANqIAspAwA3 +AgAgBEGkA2ogAykD0BI3AgAgBEHEA2ogAykDsBI3AgAgBEHMA2ogECkDADcCACAEQdQDaiAOKQMA +NwIAIARB3ANqIAwoAgA2AgAgBEHgA2ogAykDkBI3AwAgBEHoA2ogESkDADcDACADQcgRaiAGKAIA +NgIAIAMgBykDADcDwBECQEHEk9sAKAIADQBBsJDbABD7PiIBQf8BcUUNAEEAIQdBsJDbACgCACAB +EPUuRQ0AQbCQ2wAoAgAiAUEcaiEGIAFBIGooAgAiCARAIAFBKGooAgAhCSABQSRqKAIAIQsgASgC +HCEHIANBADYCuB8gAyAJNgK0HyADIAs2ArAfIAMgCDYCrB8LIAMgBzYCqB8gA0GQGmoiASADQagf +aiIHQbj7wQAQ2iwgA0G0H2pCADcCACADQaDAwQA2AqATIANBATYCrB8gA0Hw+8EANgKoHyADQbDA +wQA2ArAfIAMgBzYCnBMgAyABNgKYEyADQfAXaiAGIANBmBNqEOBBIANBmBlqIANB+BdqKAIANgIA +IAMgAykC8Bc3A5AZQbCQ2wAoAgAgA0GQGWoQxDQLIANBoBNqIA1BCGopAwA3AwAgA0GoE2ogDUEQ +aikDADcDACADQbATaiANQRhqKQMANwMAIAMgDSkDADcDmBMgBEG4BGooAgAhByAEQbwEaigCACEI +IARBwARqKAIAIQsgBEHEBGooAgAhASAFIANBmBNqQfgBEM1PGiAEQeQGaiABNgIAIARB4AZqIAs2 +AgAgBEHMBmogCDYCACAEQcgGaiAHNgIAIARB9gZqIglBADoAACAEQegGaiADKQPAETcDACAEQfAG +aiADQcgRaigCADYCACAEQdAEaiEGCyAEQdAGaiAEQegGaikDADcDACAEQcQGaiAINgIAIARBwAZq +IgggBzYCACAEQfQGakGAAjsBACAEQfAEaiIHIAYpAwA3AwAgBEH4BGogBkEIaikDADcDACAEQYAF +aiAGQRBqKQMANwMAIARBiAVqIAZBGGopAwA3AwAgBEHYBmogBEHwBmooAgAiBTYCACADQeAAaiAE +QdQGaigCACAFEPMNIAMoAmQhBSADKAJgDQIgBEEBOgD0BiAEQdwGaiAFNgIAIANB2ABqIAUQmRUg +AyADKQNYNwKoHyADQagfaiALQRBqIgUQjTZFDQEgA0E4aiAEKALcBhCYFSADIAMpAzg3AqgfIANB +qB9qIAgQ/z4NBCALQShqKAIAQQhqIAQoAtwGEM0lEI5KDQUgBCgC3AYiBSgCAEEGRg0GIANBMGog +BRCYFSADKAIwIQUgBEGUBWogAygCNDYCACAEQZAFaiAFNgIAIARBmAVqIAcpAwA3AwAgBEGgBWog +B0EIaikDADcDACAEQagFaiAHQRBqKQMANwMAIARBsAVqIAdBGGopAwA3AwAgBEG8BmpBADoAACAE +QbgGaiABNgIACyADQagfaiAEQZAFaiIMIAIQ+QFBBCEFIAMoAoggIgdBBEcNAiAJQQM6AAAMDwsg +A0HQAGogBCgC3AYQmRUgA0HIAGogAygCUCADKAJUEMIwIAMoAkwhASADKAJIIQggA0FAayAFEPEu +QQUhBUEKIQcgAygCQCEKIAMoAkQMBQtBCyEHDAgLIANB2BdqIgsgA0HEH2opAgA3AwAgAyADKQK8 +HzcD0BcgAygCuB8hCSADKAK0HyEKIAMoArAfIQEgAygCrB8hCCADKAKoHyEFIANBkBlqIANBzB9q +QTwQzU8aIANBiBlqIg4gA0GkIGooAgA2AgAgA0GAGWoiECADQZwgaikCADcDACADQfgYaiIRIANB +lCBqKQIANwMAIAMgAykCjCA3A/AYIAwQ+z8CfwJAIAdBA0cEQCADQbQaaiADQZAZakE8EM1PGiAD +QYwbaiAOKAIANgIAIANBhBtqIBApAwA3AgAgA0H8GmogESkDADcCACADQawaaiALKQMANwIAIAMg +CTYCoBogAyAKNgKcGiADIAE2ApgaIAMgCDYClBogAyAFNgKQGiADIAMpA/AYNwL0GiADIAMpA9AX +NwKkGiADIAc2AvAaAkAgB0ECRwRAIANB8BdqIANBkBpqQYABEM1PGiADQagfaiADQaAYahDpSCAD +KAKoH0UNAyADQZAaaiIFIANBrB9qQcABEM1PGiAFIARB3AZqKAIAEM4lEI5KDQEgA0HwF2oQxDsg +BCgC3AYhBQwHCyADQZAaahD4QkEDIQVBCiEHDAoLIANBqB9qIgEgA0GQGmpBwAEQzU8aIAEQ+Egh +CCABIAQoAtwGEM4lQcABEM1PGiABEPhIIQFBBgwCCyADQdgZaiALKQMANwMAIAMgAykD0Bc3A9AZ +QQ4hBwwIC0EDCyEFIANB8BdqEMQ7QQAhCUEKIQcMBgsgA0EoaiAEKALcBhCYFSADQSBqIAMoAigg +AygCLBDCMCADKAIkIQEgAygCICEIIANBGGogBCgCwAYgBCgCxAYQwjBBBSEFQQohByADKAIYIQog +AygCHAwCCyADQagfaiIBIAsoAihBCGpBwAEQzU8aIAEQ+EghCCABIAQoAtwGEM0lQcABEM1PGiAB +EPhIIQFBBiEFQQohB0EADAELIARB9AZqQQA6AAAgAyAFNgLwFyAEQfUGakEAOgAAIANBsB9qIARB +2AZqKAIANgIAIAMgBEHQBmopAgA3A6gfIANBkBpqIANBqB9qELAXIAMoApAaIghFDQEgAygClBoh +ASADQdgZaiAEQYAFaikDADcDACADQeAZaiAEQYgFaikDADcDACADIARB+ARqKQMANwPQGSAEQfAE +aigCACEKQRIhByAEQfQEaigCAAshCSAEQfQGai0AAA0BDAQLIAMoApQaIQUgA0HwF2oQ/BJBCyEH +DAELIARB3AZqEPwSDAILIARB9AZqLQAARQ0AIARB3AZqEPwSCyAEQfQGakEAOgAADAELIARBADoA +9AYLIARB9QZqLQAABEAgBEHQBmoQiD8LIARBADoA9QYgA0GQFWoiDiADQdAZakEwEM1PGkEBIQsg +BEEBOgD2BiAEQfADaiIMIAc6AAAgBEHxA2ogAy8A6BY7AAAgBEHzA2ogA0HqFmotAAA6AAAgBEGE +BGogCTYCACAEQYAEaiAKNgIAIARB/ANqIAE2AgAgBEH4A2ogCDYCACAEQfQDaiIBIAU2AgAgBEGI +BGogDkEwEM1PGiAGENwsIAwtAABBEkYEQCADQbgfaiABQSwQzU8aIANB5hZqIARBmwNqLQAAOgAA +IANByBZqIARBrANqKQIANwMAIANB0BZqIARBtANqKQIANwMAIANB2BZqIARBvANqKQIANwMAIANB +uBZqIARB3ANqKAIANgIAIANBsBZqIARB1ANqKQIANwMAIANBqBZqIARBzANqKQIANwMAIAMgBEGZ +A2ovAAA7AeQWIAMgBEGkA2opAgA3A8AWIAMgBEHEA2opAgA3A6AWIARBmANqLQAAIQcgBEGQA2op +AwAhHyAEQZwDaigCACEIIARBoANqKAIAIQYgA0GwH2ogBEHoA2opAwA3AwAgAyAEQeADaikDADcD +qB8gA0HgFWogA0GoH2pBwAAQzU8aDAULIAYgDEHIABDNTxogBEHEBGooAgAhCSAEQZgFaiIIIARB +mANqQdgAEM1PIQUgBEHUDGoiCkEAOgAAIARB0AxqIAk2AgAgBEH0BWpBATYCACAEQfAFaiIBIAU2 +AgALQQAhBiADQRBqIAsQ9CIgAygCECIHIAtB/////wFxIgUgBSAHSxshBSADKAIUIQwDQCAFBEAg +A0GoH2oiDiAGIAhqEL0LIAYgDGogDkHYABDNTxogBUEBayEFIAZB2ABqIQYMAQsLIANBqB9qIgUQ +vAsgA0GgGGogA0HYH2opAwA3AwAgA0GYGGogA0HQH2opAwA3AwAgAyADKQPIHzcDkBggA0HYF2oi +BiADQfgfaigCADYCACADIAMpA/AfNwPQFyADKALgHyEIIANB+BFqIg4gA0HkIGooAgA2AgAgAyAD +KQLcIDcD8BEgA0HYEWoiECADQfAgaigCADYCACADIAMpA+ggNwPQESADQbgXaiIRIANB/CBqKAIA +NgIAIAMgAykC9CA3A7AXIANBoBdqIhIgA0GIIWooAgA2AgAgAyADKQOAITcDmBcgA0GQGWoiFCAD +QYggakEkEM1PGiADQdAZaiIVIANBrCBqQSQQzU8aIANB+BhqIhYgA0HsH2ooAgA2AgAgA0H4F2og +A0GwH2opAwA3AwAgA0GAGGogA0G4H2opAwA3AwAgA0GIGGogA0HAH2opAwA3AwAgAyADKQLkHzcD +8BggAyADKQOoHzcD8BcgA0GIGmoiGSADQZQhaigCADYCACADIAMpAowhNwOAGiADQfAWaiIXIANB +hCBqKAIANgIAIAMgAykC/B83A+gWIANB0CBqELhLIANBiCRqIANB8BdqQTgQzU8aIANBkBpqIhgg +BUGYBRDNTxogBEH4BWogGEGYBRDNTxogBEGQC2ogCDYCACAEQZQLaiADKQPwGDcCACAEQZwLaiAW +KAIANgIAIARBoAtqIAMpA9AXNwMAIARBqAtqIAYoAgA2AgAgBEGsC2ogAykD6BY3AgAgBEG0C2og +FygCADYCACAEQbgLaiAUQSQQzU8aIARB3AtqIBVBJBDNTxogBEGIDGogCzYCACAEQYQMaiAMNgIA +IARBgAxqIAc2AgAgBEGMDGogAykD8BE3AgAgBEGUDGogDigCADYCACAEQZgMaiADKQPQETcDACAE +QaAMaiAQKAIANgIAIARBpAxqIAMpA7AXNwIAIARBrAxqIBEoAgA2AgAgBEGwDGogAykDmBc3AwAg +BEG4DGogEigCADYCACAEQcgMaiAJNgIAIARBzAxqQQA6AAAgBEHEDGogGSgCADYCACAEQbwMaiAD +KQOAGjcCAAsgA0GoH2ogBEH4BWoiByACEPwQIAMtAKgfIgVBDEcEQCADQZgVaiIIIANBuB9qKQIA +NwMAIANBoBVqIgkgA0HAH2opAgA3AwAgA0GoFWoiCyADQcgfaigCADYCACADIAMpArAfNwOQFSAD +KAKsHyEGIAMvAKkfIQwgAy0Aqx8hDiAHEPk8IApBAToAACADQcgVaiIHIAgpAwA3AwAgA0HQFWoi +CCAJKQMANwMAIANB2BVqIgkgCygCADYCACADIAMpA5AVNwPAFSABEI9AIAVBC0cEQCADQdgWaiAJ +KAIANgIAIANB0BZqIAgpAwA3AwAgA0HIFmogBykDADcDACADIAMpA8AVNwPAFiAEQZgFahDEKSAE +QdAEahCxGiAEQcwEakEAOgAAIAwgDkEQdHJBCHQgBXIhCEEOIQdCAiEfDAULIARBmAVqEMQpQcST +2wAoAgBBA0sNAkG8kNsAEPs+IgFB/wFxRQ0CQQAhBUG8kNsAKAIAIAEQ9S5FDQJBvJDbACgCACIB +QShqKAIAIQcgAUEkaigCACEIIAEoAhwhCSADIAFBIGooAgAiBgR/IANBADYCuB8gAyAHNgK0HyAD +IAg2ArAfIAMgBjYCrB9BASEFIAkFQQALNgKoHyADQdAZaiADQagfakH4+8EAENosIANBtB9qQgA3 +AgAgA0EBNgKsHyADQej8wQA2AqgfIANBsMDBADYCsB8gAyAFIAZJBH8gAyAFNgKAGCADIAc2AvwX +IAMgCDYC+BcgAyAGNgL0FyAJBUEACzYC8BcgA0GQGWoiBiADQfAXaiIFQfj7wQAQ2iwgA0GkGmpB +lPHBADYCACADQaAaaiADQZAVajYCACADQaDAwQA2ApgaIAMgBEHQBGo2ApAVIAMgBjYCnBogAyAD +QagfajYClBogAyADQdAZajYCkBogBSABQRxqIANBkBpqEPJBQbyQ2wAoAgAgBRDENAwCCyAKQQM6 +AABBBSEFCyAPIAU6AAAMAwsgA0HmFmogBEHTBGotAAA6AAAgA0HIFmogBEHkBGopAgA3AwAgA0HQ +FmogBEHsBGopAgA3AwAgA0HYFmogBEH0BGopAgA3AwAgA0GoFmogBEGEBWopAgA3AwAgA0GwFmog +BEGMBWopAgA3AwAgA0G4FmogBEGUBWooAgA2AgAgAyAEQdEEai8AADsB5BYgAyAEQdwEaikCADcD +wBYgAyAEQfwEaikCADcDoBYgBEHYBGooAgAhBiAEQdQEaigCACEIIARB0ARqLQAAIQdCAiEfCyAE +QcwEakEAOgAACyADQbYQaiIBIANB5hZqLQAAOgAAIANBmBBqIgUgA0HIFmopAwA3AwAgA0GgEGoi +CSADQdAWaikDADcDACADQagQaiIKIANB2BZqKQMANwMAIANB+A9qIgsgA0GoFmopAwA3AwAgA0GA +EGoiDCADQbAWaikDADcDACADQYgQaiIOIANBuBZqKAIANgIAIAMgAy8B5BY7AbQQIAMgAykDwBY3 +A5AQIAMgAykDoBY3A/APIANBsA9qIANB4BVqQcAAEM1PGiAPQQE6AAAgH0IDUQ0AIANBvhFqIAEt +AAA6AAAgA0GgEWogBSkDADcDACADQagRaiAJKQMANwMAIANBsBFqIAopAwA3AwAgA0GAEWogCykD +ADcDACADQYgRaiAMKQMANwMAIANBkBFqIA4oAgA2AgAgAyADLwG0EDsBvBEgAyADKQOQEDcDmBEg +AyADKQPwDzcD+BAgA0G4EGogA0GwD2pBwAAQzU8aIA0Q/iEMAgtBBAshASAbIAE6AAAgAEIDNwMA +QQMMBAsgBEHoAmotAAAEQCAEQagCahDZIgsgBEEAOgDoAiADQZ4DaiIBIANBvhFqLQAAOgAAIANB +gANqIgUgA0GgEWopAwA3AwAgA0GIA2oiCSADQagRaikDADcDACADQZADaiIKIANBsBFqKQMANwMA +IANB4AJqIg0gA0GAEWopAwA3AwAgA0HoAmoiCyADQYgRaikDADcDACADQfACaiIPIANBkBFqKAIA +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 +QbABahC8RwsgBEEAOgDgASAEKQMgQgJSDQAgBC0A4QFFDQAgBEEoaiIBLQAAQQ9GDQAgARCxGgsg +ACATOgAIIAAgHzcDACAEQQA6AOEBIAAgAy8B8Bc7AAkgACAGNgIQIAAgBTYCDCAAIAMpA5gTNwIU +IAAgAykD6A03AjQgAEELaiADQfIXai0AADoAACAAQRxqIANBoBNqKQMANwIAIABBJGogA0GoE2op +AwA3AgAgAEEsaiADQbATaikDADcCACAAQTxqIANB8A1qKQMANwIAIABBxABqIANB+A1qKQMANwIA +IABBzABqIANBgA5qKAIANgIAIABB0ABqIANBoANqQfAAEM1PGiAAQQI6AMABIABBxAFqIANBkBpq +QSwQzU8aQQELIQAgBCAAOgDiASADQcAkaiQAC+l3Ahp/AX4jAEGQMmsiAyQAIAECfwJAAkACQAJA +AkACQAJAAn8CQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkAgAS0AEEEBaw4FBgQBAgMAC0HEk9sAKAIAQQFLDQhBrIzbABD7PiIFQf8B +cUUNCEGsjNsAKAIAIAUQ9S5FDQhBrIzbACgCACIFQRxqIQQgBUEgaigCACIHBEAgBUEoaigCACEI +IAVBJGooAgAhCyAFKAIcIQYgA0EANgKoESADIAg2AqQRIAMgCzYCoBEgAyAHNgKcEQsgAyAGNgKY +ESADQbgEaiIFIANBmBFqIgZB7JjDABDdLCADQaQRakIANwIAIANBlMnCADYCoAsgA0EBNgKcESAD +QaCZwwA2ApgRIANBpMnCADYCoBEgAyAGNgKcCyADIAU2ApgLIANBwA5qIAQgA0GYC2oQ4EEgA0G4 +AWogA0HIDmooAgA2AgAgAyADKQLADjcDsAFBrIzbACgCACADQbABahDENAwICyABQRhqIQYCQAJA +IAFB4QBqIgstAABBAWsOBAEECw4ACyABQdwAaigCACEJIAFB2ABqKAIAIQ4MCQtB4MbCAEEjQYSR +wwAQ5isACyABQRhqIQsCQAJAAkAgAUH4BWoiDi0AAEEBaw4DAgQBAAsgAUH0BWooAgAhBiABQfAF +aigCACEJDA8LIAFBOGohEQJAAkACQAJAIAFBhAJqIg8tAABBAWsOBQEGCQIDAAsgAUE8aigCACEG +IAEoAjghCQwSC0HgxsIAQSNB5KPDABDmKwALIAFBiAJqIQkCQCABQeQDaiIMLQAAQQFrDgMIBBYA +CyABQdwDaigCACEFIAFB2ANqKAIAIQYMFAsgAUGIAmohDAJAAkAgAUH1A2oiCC0AAEEBaw4EAQQd +HgALIAFB8ANqKAIAIQUgAUHsA2ooAgAhCSABQegDaigCACEGDBsLQeDGwgBBI0HcqsMAEOYrAAtB +4MbCAEEjQaSswwAQ5isACyABQRhqIQsCQCABQekAaiIGLQAAQQFrDgQCASgrAAsgAUHkAGooAgAh +DiABQeAAaigCACEJIAFB3ABqKAIAIQUgAUHYAGooAgAhBwwmCwALQeDGwgBBI0HkoMMAEOYrAAtB +4MbCAEEjQdyYwwAQ5isACyABQcACaigCACEJIAFBvAJqKAIAIQYMCgtB4MbCAEEjQfCiwwAQ5isA +CwJAQQIgASgCACILKALEASIJKAIAQQZrIgUgBUEFTxtBAWsOBAYgJicACyADQfgAaiALQdgBaikD +ADcDACADQYABaiALQeABaikDADcDACADQYgBaiALQegBaikDADcDACADIAtB0AFqKQMANwNwIAEo +AgQhDiABQRhqIgYgA0HwAGpBwAAQzU8aIAFB4QBqIgtBADoAACABQdwAaiAJQQRqIgk2AgAgAUHY +AGogDjYCAAsgAUHgAGpBADoAACADQZgNaiIFIAZBGGopAAA3AwAgA0GQDWoiBCAGQRBqKQAANwMA +IANBiA1qIgcgBkEIaikAADcDACADIAYpAAA3A4ANQcST2wAoAgBBAksNAUGIjNsAEPs+IghB/wFx +RQ0BQYiM2wAoAgAgCBD1LkUNAUGIjNsAKAIAIgVBHGohBCAFQSBqKAIAIgcEQCAFQShqKAIAIQgg +BUEkaigCACEKIAUoAhwhDCADQQA2AqgRIAMgCDYCpBEgAyAKNgKgESADIAc2ApwRCyADIAw2ApgR +IANBmAtqIgggA0GYEWoiB0GEkcMAEN0sIAcgCRDOPSADQeD4wgA2AvwJIAMgA0H4EGo2AvgJIAMg +CDYC9AkgAyAHNgL4ECADQawJaiIIIAQgA0H0CWoQ4EEgAUE4aiIEIAUgCBDEMiABQQE6AGAgBxC/ +PyADQcAEaiADQYgNaikDADcDACADQcgEaiADQZANaikDADcDACADQdAEaiADQZgNaikDADcDACAD +IAMpA4ANNwO4BCABQUBrKAIAQQJGDQIgAUEAOgBgIANBoBFqIARBCGopAwA3AwAgA0GoEWogBEEQ +aikDADcDACADQbARaiAEQRhqKQMANwMAIAMgBCkDADcDmBEgA0G4EWogA0G4BGpB0AQQzU8aIAFB +6ABqIANBmBFqQfAEEM1PGiABQeAFakEAOgAAIAFB3AVqIA42AgAgAUHYBWogCTYCACABQeEFaiAD +KAC8AjYAACABQeQFaiADQb8CaigAADYAAAsgA0GYC2ogAUHoAGoiBSACEOsoIAMoApgLIglBAkYN +JSADQeoPaiADQaMLai0AADoAACADIAMvAKELOwHoDyADLQCgCyECIAMoApwLIQcgAygCpAshCyAD +QcAOaiADQagLakHAABDNTxogBRDMSww1CyABQQE6AGAgAUHQAGpBADYCACABQUBrQQI2AgAgA0HA +BGogBykDADcDACADQcgEaiAEKQMANwMAIANB0ARqIAUpAwA3AwAgAyADKQOADTcDuAQLIAFB6ABq +IANBuARqQdAEEM1PGiABQcAFakEAOgAAIAFBvAVqIA42AgAgAUG4BWogCTYCACABQcEFaiADKAC8 +AjYAACABQcQFaiADQb8CaigAADYAAAsgA0GYEWogAUHoAGoiBSACEK4CIAMoApgRIglBAkcEQCAD +QeoPaiADQaMRai0AADoAACADIAMvAKEROwHoDyADLQCgESECIAMoApwRIQcgAygCpBEhCyADQcAO +aiADQagRakHAABDNTxogBRCKQAwzC0EEDCMLIANBoBFqIAtB2AFqKQMANwMAIANBqBFqIAtB4AFq +KQMANwMAIANBsBFqIAtB6AFqKQMANwMAIAMgC0HQAWopAwA3A5gRIAEoAgQoAgAhBSABQRhqIgsg +A0GYEWpB2AUQzU8aIAFB+AVqIg5BADoAACABQfQFaiAJQQRqIgY2AgAgAUHwBWogBUGQAWoiCTYC +AAsgA0GgCWogC0EYaiIFKQAANwMAIANBmAlqIAtBEGoiBykAADcDACADQZAJaiALQQhqIgQpAAA3 +AwAgAyALKQAANwOICSAGKAIAQQNHDRcgAUE8aiAGNgIAIAFBOGoiESAJNgIAIAFBQGsgCykDADcD +ACABQYQCaiIPQQA6AAAgAUHIAGogBCkDADcDACABQdAAaiAHKQMANwMAIAFB2ABqIAUpAwA3AwAL +IAFB4ABqIAk2AgAgAUGEAWogBjYCACABQeQAaiIFIAFBQGspAgA3AgAgAUHsAGogAUHIAGopAgA3 +AgAgAUH0AGogAUHQAGopAgA3AgAgAUH8AGogAUHYAGopAgA3AgAgA0G4BGogBhDvEiADKAK4BEGA +gICAeEYNASABQYgBaiADQbgEaiIFQTQQzU8hBCADQegAaiABKAJgKAIAQQhqEL8sIAMoAmghBiAD +KAJsIQcgA0HgAGogAUGUAWoQ8S4gA0HUBGogAUGkAWopAgA3AgAgA0HcBGogAUGsAWopAgA3AgAg +A0HkBGogAUG0AWopAgA3AgAgAyABQZwBaikCADcCzAQgAykDYCEdIAUgBBDFHiADIB03AsQEIANB +wA5qIgQgBUE0EM1PGiADQdgAaiAGIAFBiAJqIARBNBDNTyAHKAJsEQMAIAMoAlghBiABQcACaiAD +KAJcIgk2AgAgAUG8AmogBjYCAAsgA0G4BGogBiACIAkoAgwRAwAgAygCuAQiBEGDgICAeEYNICAD +QeAKaiIIIANByARqKQIANwMAIANB6ApqIgkgA0HQBGopAgA3AwAgA0HwCmoiDCADQdgEaikCADcD +ACADQcAKaiIKIANB6ARqKQIANwMAIANByApqIg0gA0HwBGopAgA3AwAgA0HQCmoiECADQfgEaikC +ADcDACADIAMpAsAENwPYCiADIAMpAuAENwO4CiADLwG+BCEHIAMtAL0EIQUgAy0AvAQhBiABQbwC +ahCZNiAEQYKAgIB4Rg0BIANB2AtqIBApAwA3AgAgA0HQC2ogDSkDADcCACADQcgLaiAKKQMANwIA +IANBqAtqIAgpAwA3AgAgA0GwC2ogCSkDADcCACADQbgLaiAMKQMANwIAIAMgAykDuAo3AsALIAMg +BzsBngsgAyADKQPYCjcCoAsgAyAFOgCdCyADIAY6AJwLIAMgBDYCmAsgBEGBgICAeEYNBCABQbwB +aiIFIANBmAtqQcgAEM1PIQQgAUGIAmoiCRD/PCADQcAEaiABQewAaikCADcDACADQcgEaiABQfQA +aikCADcDACADQdAEaiABQfwAaikCADcDACADIAFB5ABqKQIANwO4BCABQeAAaigCACEGIAkgA0G4 +BGpB0AEQzU8aIAFB5ANqIgxBADoAACABQdwDaiAENgIAIAFB2ANqIAY2AgAMAgtBAiEJQcST2wAo +AgBBA0sNK0HcgNsAEPs+IgZB/wFxRQ0rQQAhAkHcgNsAKAIAIAYQ9S5FDStB3IDbACgCACIEQShq +KAIAIQggBEEkaigCACEMIAQoAhwhCiADIARBIGooAgAiBwR/IANBADYCyAQgAyAINgLEBCADIAw2 +AsAEIAMgBzYCvARBASECIAoFQQALNgK4BCADQYANaiADQbgEakGAo8MAEN0sIANBpAtqQgA3AgAg +A0EBNgKcCyADQcyjwwA2ApgLIANBpMnCADYCoAsgBEEcaiEGIAMgAiAHTwR/QQAFIAMgCDYCxAQg +AyAMNgLABCADIAc2ArwEIAMgAjYCyAQgAkEBaiECIAoLNgK4BCADQbABaiADQbgEakGAo8MAEN0s +IANB6A9qIAUQ8VEgAyACIAdJBH8gAyACNgLIBCADIAg2AsQEIAMgDDYCwAQgAyAHNgK8BCAKBUEA +CzYCuAQgA0HADmoiBCADQbgEaiIIQYCjwwAQ3SwgA0H4EGoiAiABKAKEARDOPSADQdgEakHg+MIA +NgIAIANBzARqQdSjwwA2AgAgA0HUBGogA0HwDWo2AgAgA0HIBGogA0HoD2oiDDYCACADQZTJwgA2 +AsAEIAMgBDYC0AQgAyADQbABajYCxAQgAyADQZgLajYCvAQgAyADQYANajYCuAQgAyACNgLwDSAD +QZAOaiIEIAYgCBDhQUHcgNsAKAIAIAQQxDQgAhC/PyAMEIg/DCsLIANB6A1qIAwpAwA3AwAgA0Hg +DWogCSkDADcDACADQdgNaiAIKQMANwMAIAMgAykD2Ao3A9ANIAFBiAJqEP88QQMhCQwpCyABQeAD +aiAGNgIAIAYoAgAhBCAFKQI0IR0gAUGwAmogCSkDADcDACABQbgCaiAJQQhqKQMANwMAIAFBwAJq +IAlBEGopAwA3AwAgAUHIAmogCUEYaikDADcDACABQdQDakEAOgAAIAFBqAJqIB03AwAgAUHQA2og +BEEIajYCAAsgA0GYC2ogAUGoAmoiBSACEJUEIAMoAvgLIgpBBEYNASADQYgNaiINIANBpAtqIhMp +AgA3AwAgA0GQDWoiECADQawLaiIUKQIANwMAIANBmA1qIhIgA0G0C2oiFSkCADcDACADIAMpApwL +NwOADSADLwGaCyEHIAMtAJkLIQQgAy0AmAshCCADQcAOaiADQbwLaiIWQTwQzU8aIANBgBBqIhcg +A0GUDGoiGCgCADYCACADQfgPaiIZIANBjAxqIhopAgA3AwAgA0HwD2oiGyADQYQMaiIcKQIANwMA +IAMgAykC/As3A+gPIAUQ+z9BACEFQQshBgJAAkACQCAKQQJrDgICAAELIANByAFqIBIpAwA3AwAg +A0HAAWogECkDADcDACADQbgBaiANKQMANwMAIAMgAykDgA03A7ABIAghBiAEIQUMAQsgEyANKQMA +NwIAIBQgECkDADcCACAVIBIpAwA3AgAgAyAHOwGaCyADIAQ6AJkLIAMgCDoAmAsgAyADKQOADTcC +nAsgFiADQcAOakE8EM1PGiAcIBspAwA3AgAgGiAZKQMANwIAIBggFygCADYCACADIAo2AvgLIAMg +AykD6A83AvwLIANB0ABqIANByAtqELFGIAMgAykDUDcC8A0gA0HIAGogAUHgA2ooAgAQwkQgAyAD +KQNINwKQDiADQfANaiADQZAOahCXQQRAIANBmAtqENtAIQULIANBmAtqEMQ7CyADQZARaiADQcgB +aikDADcDACADQYgRaiADQcABaikDADcDACADQYARaiADQbgBaikDADcDACADIAMpA7ABNwP4ECAM +QQE6AAAgBkH/AXEiBEEMRg0CIANBkAtqIgggA0GQEWopAwA3AwAgA0GIC2oiDCADQYgRaikDADcD +ACADQYALaiIKIANBgBFqKQMANwMAIAMgAykD+BA3A/gKIAkQhkAgBEELRw0DIAVB/wFxRQ0EIANB +oAtqIAFB7ABqKQIANwMAIANBqAtqIAFB9ABqKQIANwMAIANBsAtqIAFB/ABqKQIANwMAIAMgAUHk +AGopAgA3A5gLIAFB4ABqKAIAIQYgAUGEAWooAgAhBSAJIANBmAtqQeABEM1PGiABQfUDaiIIQQA6 +AAAgAUHwA2ogBTYCACABQewDaiABQbwBaiIJNgIAIAFB6ANqIAY2AgAgAUH2A2ogA0G4BGpB+gEQ +zU8aIAFBiAJqIQwMBQsgA0GYC2oQ/kIgAUGIAmoQ/zxBAiEJAkBBxJPbACgCAEEDSw0AQeiA2wAQ ++z4iBkH/AXFFDQBBACECQeiA2wAoAgAgBhD1LkUNAEHogNsAKAIAIgxBKGooAgAhByAMQSRqKAIA +IQggDCgCHCEEIAMgDEEgaigCACIGBH8gA0EANgLIBCADIAc2AsQEIAMgCDYCwAQgAyAGNgK8BEEB +IQIgBAVBAAs2ArgEIANB8A1qIANBuARqQfSjwwAQ3SwgA0GkC2pCADcCACADQQE2ApwLIANBuKTD +ADYCmAsgA0GkycIANgKgC0EAIQUgAyACIAZPBH9BAAUgAyAHNgLEBCADIAg2AsAEIAMgBjYCvAQg +AyACNgLIBCACQQFqIQIgBAs2ArgEIANBkA5qIANBuARqQfSjwwAQ3SwgAyABQeQAaiIKNgLQDyAC +IAZJBEAgAyAHNgLEBCADIAg2AsAEIAMgBjYCvAQgAyACNgLIBCAEIQUgAkEBaiECCyADIAU2ArgE +IANB6A9qIANBuARqQfSjwwAQ3SwgA0EQaiABQYgBaiINEJVNIAMgAykDEDcC4BAgAyADQeAQajYC +iBBBACEFIAMgAiAGTwR/QQAFIAMgBzYCxAQgAyAINgLABCADIAY2ArwEIAMgAjYCyAQgAkEBaiEC +IAQLNgK4BCADQfgQaiADQbgEakH0o8MAEN0sIANBCGogDRCJTCADIAMpAwg3AqAPIAIgBkkEQCAD +IAc2AsQEIAMgCDYCwAQgAyAGNgK8BCADIAI2AsgEIAQhBSACQQFqIQILIAMgBTYCuAQgA0GADWog +A0G4BGpB9KPDABDdLCADIAo2ArgQQQAhBSACIAZJBEAgAyACNgLQDiADIAc2AswOIAMgCDYCyA4g +AyAGNgLEDiAEIQULIAMgBTYCwA4gA0GwAWoiBCADQcAOaiICQfSjwwAQ3SwgA0H8BGpB4PjCADYC +ACADQfAEakHA68IANgIAIANB5ARqQbDUwgA2AgAgA0HYBGpBxN3CADYCACADQcwEakHA68IANgIA +IANB+ARqIANBzBBqNgIAIANB7ARqIANBuBBqNgIAIANB4ARqIANBoA9qNgIAIANB1ARqIANBiBBq +NgIAIANByARqIANB0A9qNgIAIANBlMnCADYCwAQgA0EBNgLADiADIAQ2AvQEIAMgA0GADWo2AugE +IAMgA0H4EGo2AtwEIAMgA0HoD2o2AtAEIAMgA0GQDmo2AsQEIAMgA0GYC2o2ArwEIAMgA0HwDWo2 +ArgEIAMgAjYCzBAgAyAMQRxqNgKwDSADQQY2AqwNIAMgA0G4BGo2AqgNQeiA2wAoAgAgA0GoDWoQ +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 +Sw0AQcSA2wAQ+z4iBkH/AXFFDQBBACECQcSA2wAoAgAgBhD1LkUNAEHEgNsAKAIAIg1BKGooAgAh +ByANQSRqKAIAIQogDSgCHCEEIAMgDUEgaigCACIGBH8gA0EANgLQDiADIAc2AswOIAMgCjYCyA4g +AyAGNgLEDkEBIQIgBAVBAAs2AsAOIANBjA9qIANBwA5qQeyqwwAQ3SwgA0GsD2pCADcCACADQQE2 +AqQPIANBxKvDADYCoA8gA0GkycIANgKoD0EAIQUgAyACIAZPBH9BAAUgAyAHNgLMDiADIAo2AsgO +IAMgBjYCxA4gAyACNgLQDiACQQFqIQIgBAs2AsAOIANBuA9qIANBwA5qQeyqwwAQ3SwgAyABQagC +ajYCzA8gAiAGSQRAIAMgBzYCzA4gAyAKNgLIDiADIAY2AsQOIAMgAjYC0A4gBCEFIAJBAWohAgsg +AyAFNgLADiADQdAPaiADQcAOakHsqsMAEN0sIANBgBBqIAFBxANqKQAANwMAIANB+A9qIAFBvANq +KQAANwMAIANB8A9qIAFBtANqKQAANwMAIAMgAUGsA2opAAA3A+gPIAFBnANqIRAgAyADQegPajYC +5A9BACEFIAMgAiAGTwR/QQAFIAMgBzYCzA4gAyAKNgLIDiADIAY2AsQOIAMgAjYC0A4gAkEBaiEC +IAQLNgLADiADQYgQaiADQcAOakHsqsMAEN0sIANBQGsgEBDbTSADIAMpA0A3AqAQIAMgA0GgEGo2 +ApwQIAIgBkkEQCADIAc2AswOIAMgCjYCyA4gAyAGNgLEDiADIAI2AtAOIAQhBSACQQFqIQILIAMg +BTYCwA4gA0HMEGogA0HADmpB7KrDABDdLCADQThqIBAQ1D4gAyADKQM4NwKoEEEAIQUgAiAGSQRA +IAMgAjYC0A4gAyAHNgLMDiADIAo2AsgOIAMgBjYCxA4gBCEFCyADIAU2AsAOIANB4BBqIgIgA0HA +DmoiBEHsqsMAEN0sIBAQ3E0hCiADQYQPakHMq8MANgIAIANB+A5qQbDUwgA2AgAgA0HsDmpBxN3C +ADYCACADQeAOakHA68IANgIAIANB1A5qQcDrwgA2AgAgAyAKNgK0ECADQYAPaiADQbAQajYCACAD +QfQOaiADQagQajYCACADQegOaiADQZwQajYCACADQdwOaiADQeQPajYCACADQdAOaiADQcwPajYC +ACADQZTJwgA2AsgOIAMgA0G0EGo2ArAQIAMgAjYC/A4gAyADQcwQajYC8A4gAyADQYgQajYC5A4g +AyADQdAPajYC2A4gAyADQbgPajYCzA4gAyADQaAPajYCxA4gAyADQYwPajYCwA4gAyANQRxqNgK8 +DiADQQY2ArgOIAMgBDYCtA5BxIDbACgCACADQbQOahDENAsgAUH0A2otAAANBAwXCyADQZARaiAN +KQMANwMAIANBiBFqIAopAwA3AwAgA0GAEWogCSkDADcDACADIAMpA/ANNwP4EAsgAUGcA2oQ4RIg +AUH0A2pBADoAAEEDIQkMFwtBBAwDC0HEk9sAKAIAQQJLDRJBuIDbABD7PiIFQf8BcUUNEkEAIQJB +uIDbACgCACAFEPUuRQ0SQbiA2wAoAgAiCkEoaigCACEHIApBJGooAgAhCSAKKAIcIQQgAyAKQSBq +KAIAIgYEfyADQQA2AtAOIAMgBzYCzA4gAyAJNgLIDiADIAY2AsQOQQEhAiAEBUEACzYCwA4gA0GM +D2ogA0HADmpB3KvDABDdLCADQawPakIANwIAIANBATYCpA8gA0GMrMMANgKgDyADQaTJwgA2AqgP +QQAhBSADIAIgBk8Ef0EABSADIAc2AswOIAMgCTYCyA4gAyAGNgLEDiADIAI2AtAOIAJBAWohAiAE +CzYCwA4gA0G4D2ogA0HADmpB3KvDABDdLCADIAFBqAJqNgLMDyACIAZJBEAgAyAHNgLMDiADIAk2 +AsgOIAMgBjYCxA4gAyACNgLQDiAEIQUgAkEBaiECCyADIAU2AsAOIANB0A9qIANBwA5qQdyrwwAQ +3SwgA0GAEGogAUHEA2opAAA3AwAgA0H4D2ogAUG8A2opAAA3AwAgA0HwD2ogAUG0A2opAAA3AwAg +AyABQawDaikAADcD6A8gAUGcA2ohDSADIANB6A9qNgLkD0EAIQUgAyACIAZPBH9BAAUgAyAHNgLM +DiADIAk2AsgOIAMgBjYCxA4gAyACNgLQDiACQQFqIQIgBAs2AsAOIANBiBBqIANBwA5qQdyrwwAQ +3SwgA0EwaiANENtNIAMgAykDMDcCoBAgAyADQaAQajYCnBAgAiAGSQRAIAMgBzYCzA4gAyAJNgLI +DiADIAY2AsQOIAMgAjYC0A4gBCEFIAJBAWohAgsgAyAFNgLADiADQcwQaiADQcAOakHcq8MAEN0s +IANBKGogDRDUPiADIAMpAyg3AqgQIAMgAiAGSQR/IAMgAjYC0A4gAyAHNgLMDiADIAk2AsgOIAMg +BjYCxA4gBAVBAAs2AsAOIANB4BBqIgIgA0HADmoiBUHcq8MAEN0sIA0Q3E0hBCADQYQPakHMq8MA +NgIAIANB+A5qQbDUwgA2AgAgA0HsDmpBxN3CADYCACADQeAOakHA68IANgIAIANB1A5qQcDrwgA2 +AgAgAyAENgK0ECADQYAPaiADQbAQajYCACADQfQOaiADQagQajYCACADQegOaiADQZwQajYCACAD +QdwOaiADQeQPajYCACADQdAOaiADQcwPajYCACADQZTJwgA2AsgOIAMgA0G0EGo2ArAQIAMgAjYC +/A4gAyADQcwQajYC8A4gAyADQYgQajYC5A4gAyADQdAPajYC2A4gAyADQbgPajYCzA4gAyADQaAP +ajYCxA4gAyADQYwPajYCwA4gAyAKQRxqNgK8DiADQQY2ArgOIAMgBTYCtA5BuIDbACgCACADQbQO +ahDENAwSCyABQZwDahDhEgwSC0EDCyEBIAggAToAAAwTC0ECIQlBxJPbACgCAEEDSw0XQYCB2wAQ ++z4iBUH/AXFFDRdBACECQYCB2wAoAgAgBRD1LkUNF0GAgdsAKAIAIgxBKGooAgAhCiAMQSRqKAIA +IQ0gDCgCHCEEIAMgDEEgaigCACIFBH8gA0EANgLIBCADIAo2AsQEIAMgDTYCwAQgAyAFNgK8BEEB +IQIgBAVBAAs2ArgEIANBgA1qIANBuARqQZSswwAQ3SwgA0GkC2pCADcCACADQQE2ApwLIANBzKPD +ADYCmAsgA0GkycIANgKgC0EAIQggAyACIAVPBH9BAAUgAyAKNgLEBCADIA02AsAEIAMgBTYCvAQg +AyACNgLIBCACQQFqIQIgBAs2ArgEIANB8ABqIANBuARqQZSswwAQ3SwgAyAGKQIYNwKQDiACIAVJ +BEAgAyAKNgLEBCADIA02AsAEIAMgBTYCvAQgAyACNgLIBCAEIQggAkEBaiECCyADIAg2ArgEIANB +sAFqIANBuARqQZSswwAQ3SwgA0H4EGogA0GICWoQ8VFBACEHIAIgBUkEQCADIAI2AsgEIAMgCjYC +xAQgAyANNgLABCADIAU2ArwEIAQhBwsgAyAHNgK4BCADQcAOaiIEIANBuARqIghBlKzDABDdLCAD +QawJaiICIAYQzj0gA0HkBGpB4PjCADYCACADQdgEakHUo8MANgIAIANBzARqQbDUwgA2AgAgA0Hg +BGogA0HwDWo2AgAgA0HUBGogA0H4EGoiCjYCACADQcgEaiADQZAOajYCACADQZTJwgA2AsAEIAMg +BDYC3AQgAyADQbABajYC0AQgAyADQfAAajYCxAQgAyADQZgLajYCvAQgAyADQYANajYCuAQgAyAC +NgLwDSADQegPaiIEIAxBHGogCBDWQUGAgdsAKAIAIAQQxDQgAhC/PyAKEIg/DBcLIANBoAtqIAtB +2AFqKQMANwMAIANBqAtqIAtB4AFqKQMANwMAIANBsAtqIAtB6AFqKQMANwMAIAMgC0HQAWopAwA3 +A5gLIAEoAgQoAgAhBCABKAIIIQUgASgCDCEOIAFBGGoiCyADQZgLakHAABDNTxogAUHpAGoiBkEA +OgAAIAFB5ABqIA42AgAgAUHgAGogCTYCACABQdwAaiAFNgIAIAFB2ABqIARBkAFqIgc2AgALIAFB +6ABqQQA6AAAgA0GIAWoiBCALQRhqKQAANwMAIANBgAFqIgwgC0EQaikAADcDACADQfgAaiIKIAtB +CGopAAA3AwAgAyALKQAANwNwQcST2wAoAgBBAksNAUGIgNsAEPs+Ig1B/wFxRQ0BQQAhCEGIgNsA +KAIAIA0Q9S5FDQFBiIDbACgCACIMQShqKAIAIQogDEEkaigCACENIAwoAhwhDyADIAxBIGooAgAi +BAR/IANBADYCyAQgAyAKNgLEBCADIA02AsAEIAMgBDYCvARBASEIIA8FQQALNgK4BCADQfgQaiAD +QbgEakHkoMMAEN0sIAMgBCAITQR/QQAFIAMgCjYCxAQgAyANNgLABCADIAQ2ArwEIAMgCDYCyAQg +CEEBaiEIIA8LNgK4BCADQbwCaiADQbgEakHkoMMAEN0sIAMgCUEsajYCqA0gAyAEIAhLBH8gAyAK +NgLEBCADIA02AsAEIAMgBDYCvAQgAyAINgLIBCAIQQFqIQggDwVBAAs2ArgEIANBrAlqIANBuARq +QeSgwwAQ3SwgAyAJQRhqNgLQDSADIAQgCEsEfyADIAg2AtAOIAMgCjYCzA4gAyANNgLIDiADIAQ2 +AsQOIA8FQQALNgLADiADQfQJaiIEIANBwA5qIghB5KDDABDdLCADQeQEakH0ycIANgIAIANB4ARq +IgpBpMnCADYCACADQdgEakGMnMMANgIAIANBzARqQfybwwA2AgAgA0HUBGogA0HQDWo2AgAgA0HI +BGoiDSADQagNajYCACADQfTJwgA2AsAEIANBpMnCADYCvAQgAyAENgLcBCADIANBrAlqNgLQBCAD +IANBvAJqNgLEBCADIANB+BBqNgK4BCAIIAxBHGogA0G4BGoQ1kEgAUE4aiIEIAwgCBDEMiABQQE6 +AGggA0G4AWogA0H4AGoiCCkDADcDACADQcABaiADQYABaiIMKQMANwMAIANByAFqIANBiAFqKQMA +NwMAIAMgAykDcDcDsAEgAUFAaygCAEECRg0CIAFBADoAaCADQcAEaiAEQQhqKQMANwMAIA0gBEEQ +aikDADcDACADQdAEaiAEQRhqKQMANwMAIAogCCkDADcDACADQegEaiAMKQMANwMAIANB8ARqIANB +iAFqKQMANwMAIAMgAykDcDcD2AQgAyAEKQMANwO4BCABQfAAaiADQbgEakHAABDNTxogAUHCAWpB +ADoAACABQbwBaiAONgIAIAFBuAFqIAU2AgAgAUG0AWogBzYCACABQbABaiAJNgIAIAFBwwFqIANB +mBFqQfUgEM1PGgsgA0HADmogAUHwAGoiByACEOwoIAMtAMAOIgJBDEYNCCADQZgOaiADQcwOaigC +ADYCACADQYgNaiADQdgOaikCADcDACADQZANaiADQeAOaigCADYCACADIAMpAsQONwOQDiADIAMp +AtAONwOADSADLwDBDiEFIAMtAMMOIQQgBxDOSwwKCyABQQE6AGggAUHQAGpBADYCACABQUBrQQI2 +AgAgA0G4AWogCikDADcDACADQcABaiAMKQMANwMAIANByAFqIAQpAwA3AwAgAyADKQNwNwOwAQsg +AUHwAGogAykDsAE3AwAgAUGiAWpBADoAACABQZwBaiAONgIAIAFBmAFqIAU2AgAgAUGUAWogBzYC +ACABQZABaiAJNgIAIAFBiAFqIANByAFqKQMANwMAIAFBgAFqIANBwAFqKQMANwMAIAFB+ABqIANB +uAFqKQMANwMAIAFBowFqIANBmBFqQfUgEM1PGgsgA0G4BGogAUHwAGoiByACEOEBIAMtALgEIgJB +DEcEQCADQZgOaiADQcQEaigCADYCACADQYgNaiADQdAEaikCADcDACADQZANaiADQdgEaigCADYC +ACADIAMpArwENwOQDiADIAMpAsgENwOADSADLwC5BCEFIAMtALsEIQQgBxDXLQwIC0EEDAYLQRIh +AkHEk9sAKAIAQQFLDRNBuIzbABD7PiILQf8BcUUNE0EAIQZBuIzbACgCACALEPUuRQ0TQbiM2wAo +AgAiC0EcaiEBIAtBIGooAgAiBQRAIAtBKGooAgAhBCALQSRqKAIAIQcgCygCHCEGIANBADYCqBEg +AyAENgKkESADIAc2AqARIAMgBTYCnBELIAMgBjYCmBEgA0G4BGoiBSADQZgRaiIEQaiZwwAQ3Swg +A0GkEWpCADcCACADQZTJwgA2AqALIANBATYCnBEgA0HUmcMANgKYESADQaTJwgA2AqARIAMgBDYC +nAsgAyAFNgKYCyADQcAOaiIFIAEgA0GYC2oQ4EFBuIzbACgCACAFEMQ0DBMLQRIhAkHEk9sAKAIA +QQNLDRJBxIzbABD7PiILQf8BcUUNEkEAIQZBxIzbACgCACALEPUuRQ0SQcSM2wAoAgAiC0EcaiEB +IAtBIGooAgAiBQRAIAtBKGooAgAhBCALQSRqKAIAIQcgCygCHCEGIANBADYCqBEgAyAENgKkESAD +IAc2AqARIAMgBTYCnBELIAMgBjYCmBEgA0G4BGoiBSADQZgRaiIEQdyZwwAQ3SwgA0GkEWpCADcC +ACADQZTJwgA2AqALIANBATYCnBEgA0GcmsMANgKYESADQaTJwgA2AqARIAMgBDYCnAsgAyAFNgKY +CyADQcAOaiIFIAEgA0GYC2oQ4EFBxIzbACgCACAFEMQ0DBILQQMLIQEgCyABOgAAIABBEzoAAEED +DBELQQMMCAtBAwshASAGIAE6AAAgAEETOgAAQQUMDgsgAUHoAGotAAAEQCABQThqENkiCyAFIARB +EHRyIQUgAUEAOgBoIANB+A1qIANBmA5qKAIAIgQ2AgAgA0HwD2oiBiADQYgNaikDADcDACADQfgP +aiIHIANBkA1qKAIANgIAIAFBAToAaSADQegDaiIIIAQ2AgAgAyADKQOQDiIdNwPwDSADIAMpA4AN +NwPoDyADIB03A+ADIANB2ANqIgQgBygCADYCACADQdADaiIHIAYpAwA3AwAgAyADKQPoDzcDyAMg +CxD1KwJAAkAgAkELRgRAIANBmBFqIAEoAgBByAFqEPNHIAMoApgRIgJBkICAgHhHDQIgA0G4BGoi +AiADQZgRakEEckHAABDNTxogAhD3QiADQcAEaiADQegDaigCADYCACADIAMpA+ADNwO4BCADQZgL +aiACENgTIAMoApgLIgINASADKAKcCyELIANBuARqEIhAQQshAgwPCyADQaARaiIBIAgoAgA2AgAg +A0GsEWogBykDADcCACADQbQRaiAEKAIANgIAIAMgAykDyAM3AqQRIANB+ANqIAEpAwA3AwAgA0GA +BGogA0GoEWopAwA3AwAgA0GIBGogA0GwEWopAwA3AwAgAyADKQPgAzcD8AMgBUEIdCACciELQQ4h +AgwOCyADKAKcCyELIAEoAgBByAFqEPo+IAEoAgAiAUHMAWogCzYCACABQcgBaiACNgIAIANBuARq +EIhADAwLIANB4ANqEPdCIAJBk4CAgHhGBEAgA0GYEWpBBHIQ2jQMDAsgA0GYEWoQ1gYMCwsgA0GA +EWogAUGoA2opAQA3AwAgA0GIEWogAUGwA2opAQA3AwAgA0GQEWogAUG4A2opAQA3AwAgAyABQaAD +aikBADcD+BAgAUGeA2ovAQAhByABQZ0Dai0AACEFIAFBnANqLQAAIQYgA0GwAWogAUHAA2pBJBDN +TxogA0H2EGogAUHnA2otAAA6AAAgAyABQeUDai8AADsB9BAgAUHkA2otAAAhCQsgAUH0A2pBADoA +AAwBCyADQYgRaiADQcgQaigCADYCACADQYARaiADQcAQaikDADcDACADIAMpA7gQNwP4EEEFIQYL +IANBwA1qIgIgA0GQEWopAwA3AwAgA0G4DWoiBCADQYgRaikDADcDACADQbANaiIKIANBgBFqKQMA +NwMAIAMgAykD+BA3A6gNIANBgA1qIANBsAFqQSQQzU8aIANB/gxqIg0gA0H2EGotAAA6AAAgAyAD +LwH0EDsB/AwgCEEBOgAAIAlB/wFxQQRGDQAgA0HoDWogAikDADcDACADQeANaiAEKQMANwMAIANB +2A1qIAopAwA3AwAgAyADKQOoDTcD0A0gA0HwAGogA0GADWpBJBDNTxogA0HODWogDS0AADoAACAD +IAMvAfwMOwHMDSAMEPIvDAILQQULIQEgDyABOgAAIA5BAzoAACAAQRM6AABBBAwHCyABQbwBahDv +PyABQYgBahCpRwwBCyABQYgBahCpRwsgA0HoCWoiAiADQegNaikDADcDACADQeAJaiIEIANB4A1q +KQMANwMAIANB2AlqIgggA0HYDWopAwA3AwAgAyADKQPQDTcD0AkgA0GsCWoiDCADQfAAakEkEM1P +GiADQaoJaiIKIANBzg1qLQAAOgAAIAMgAy8BzA07AagJIA9BAToAACADQaAKaiAIKQMANwMAIANB +qApqIAQpAwA3AwAgA0GwCmogAikDADcDACADIAMpA9AJNwOYCiADQfQJaiAMQSQQzU8aIANB8glq +IAotAAA6AAAgAyADLwGoCTsB8AkgERDuJAsgA0HoAmoiBCADQaAKaikDADcDACADQfACaiIIIANB +qApqKQMANwMAIANB+AJqIgwgA0GwCmopAwA3AwAgAyADKQOYCjcD4AIgA0G8AmoiCiADQfQJakEk +EM1PGiADQboCaiINIANB8glqLQAAOgAAIAMgAy8B8Ak7AbgCIA5BAToAACADQbADaiICIAQpAwA3 +AwAgA0G4A2oiBCAIKQMANwMAIANBwANqIgggDCkDADcDACADIAMpA+ACNwOoAyADQYQDaiAKQSQQ +zU8aIANBggNqIg4gDS0AADoAACADIAMvAbgCOwGAAyALEIlAIAlB/wFxQQNHBEAgASgCAEH4AGoQ +7kIgASgCACIBIAY6AHggAUH6AGogBzsBACABQfkAaiAFOgAAIAFB/ABqIAMpA6gDNwEAIAFBhAFq +IAIpAwA3AQAgAUGMAWogBCkDADcBACABQZQBaiAIKQMANwEAIAFBnAFqIANBhANqQSQQzU8aIAFB +wAFqIAk6AAAgAUHBAWogAy8BgAM7AAAgAUHDAWogDi0AADoAAAwCCyADQYgEaiAIKQMANwMAIANB +gARqIAQpAwA3AwAgA0H4A2ogAikDADcDACADIAMpA6gDNwPwAyAGQf8BcSAFQf8BcUEIdHIgB0EQ +dHIhC0EOIQIMAgsgAUHgAGotAAAEQCABQThqENkiCyABQQA6AGAgA0GSDmoiBCADQeoPai0AADoA +ACADIAMvAegPOwGQDiADQbABaiIIIANBwA5qQcAAEM1PGiABQQE6AGEgA0G2AmoiBSAELQAAOgAA +IAMgAy8BkA47AbQCIANB9AFqIAhBwAAQzU8aIAYQ8ysgCUUEQCABKAIAQfgAahDuQiABKAIAIgEg +BzYCeCABQfwAaiACOgAAIAFB/QBqIAMvAbQCOwAAIAFB/wBqIAUtAAA6AAAgAUGAAWogCzYCACAB +QYQBaiADQfQBakHAABDNTxoMAQsgA0G2BGogBS0AADoAACADIAMvAbQCOwG0BCADQfADaiADQfQB +akHAABDNTxoMAQtBEiECCyAAIAI6AAAgACADLwG0BDsAASAAIAs2AgQgAEEDaiADQbYEai0AADoA +ACAAQQhqIANB8ANqQcAAEM1PGkEBCzoAECADQZAyaiQAC8p0AhJ/An4jAEGgFmsiAyQAIAECfwJA +AkACQAJAAkACQAJAAkACQAJ/AkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkAgAS0A/AJBAWsOCAQLAAYHCAkKAQsgAUGAA2ohDgJAIAFBvANq +Ig0tAABBAWsOAw4LAwALIAFBiANqKAIAIQcgAUGEA2ooAgAhCSABKAKAAyEFDAELIAFBADYA9QIg +AUH4AmpBADYAACABIAEoAvACIgU2AtACIAFBvANqIg1BADoAACABQYQDaiABKAKgAiIJNgIAIAEg +BTYCgAMgASABKQOoAjcDsAIgAUGIA2ogAUGkAmooAgAiBzYCACABQYADaiEOCyABQZQDaiAHNgIA +IAFBkANqIAk2AgAgAUGMA2oiBCAFNgIAIANBmAJqIAUQ2kEgAygCmAIhBiADKAKcAiEHIANBkAJq +IAQoAgAQ20EgAygCkAIhBCADKAKUAiEJIAFBuANqQQA6AAAgAUGoA2ogCTYCACABQaQDaiAENgIA +IAFBoANqIAc2AgAgAUGcA2ogBjYCACABQZgDaiAFNgIACyADQdgJaiABQZgDaiIEIAIQnAQgAygC +2AkiFEECRg0LIANBsgJqIAMtAN8JOgAAIAMgAy8A3Qk7AbACIAMtANwJIQUgAygC4AkhCiADKALk +CSEJIAMoAugJIQwgAykC7AkhFSADKAL0CSEHIAMpA/gJIRYgBBDmPyAUDQEgBwRAIAMgBzYC/BEg +AyAVNwL0ESADIAw2AvARIAMgCTYC7BEgAyAKNgLoESADQegRahCcTSABQYwDaigCAEFAaxCcTRC8 +BwRAAkAgAUGQA2ooAgAiBARAIANB6BFqIAQgAUGUA2ooAgAQ7y0NAQtBACEHAkBBxJPbACgCAEEC +Sw0AQbCK2wAQ+z4iDEH/AXFFDQBBACEJQbCK2wAoAgAgDBD1LkUNAEGwitsAKAIAIgRBKGooAgAh +BiAEQSRqKAIAIQsgBCgCHCEIIAMgBEEgaigCACIKBH8gA0EANgLoCSADIAY2AuQJIAMgCzYC4Akg +AyAKNgLcCUEBIQkgCAVBAAs2AtgJIANBwAJqIANB2AlqQYzRwQAQ2iwgA0GUA2pCADcCACADQQE2 +AowDIANB3NHBADYCiAMgA0GwwMEANgKQAyAEQRxqIQwgAyAJIApPBH9BAAUgAyAGNgLkCSADIAs2 +AuAJIAMgCjYC3AkgAyAJNgLoCSAJQQFqIQkgCAs2AtgJIANBgBFqIANB2AlqQYzRwQAQ2iwgA0Ho +AWogA0HoEWoQsUYgAyADKQPoATcC6BAgAyADQegQajYCxBEgAyAJIApJBH8gAyAJNgLoCSADIAY2 +AuQJIAMgCzYC4AkgAyAKNgLcCSAIBUEACzYC2AkgA0GwEGoiBCADQdgJaiIGQYzRwQAQ2iwgA0Hg +AWogA0HoEWoQskYgA0H4CWpBhMHBADYCACADQewJakH0wMEANgIAIANB9AlqIANB6AJqNgIAIANB +6AlqIANBxBFqNgIAIANBoMDBADYC4AkgAyADKQPgATcCsBEgAyADQbARajYC6AIgAyAENgLwCSAD +IANBgBFqNgLkCSADIANBiANqNgLcCSADIANBwAJqNgLYCSADQdARaiIEIAwgBhDhQUGwitsAKAIA +IAQQxDQLIANB6BFqEPsfDBcLQcST2wAoAgANFUGkitsAEPs+IgRB/wFxRQ0VQQAhB0GkitsAKAIA +IAQQ9S5FDRVBpIrbACgCACIJQShqKAIAIQogCUEkaigCACELIAkoAhwhBCADIAlBIGooAgAiBgR/ +IANBADYC6AkgAyAKNgLkCSADIAs2AuAJIAMgBjYC3AlBASEHIAQFQQALNgLYCSADQcACaiADQdgJ +akHk0cEAENosIANBlANqQgA3AgAgA0EBNgKMAyADQZDSwQA2AogDIANBsMDBADYCkAMgAyAGIAdN +BH9BAAUgAyAKNgLkCSADIAs2AuAJIAMgBjYC3AkgAyAHNgLoCSAHQQFqIQcgBAs2AtgJIANBgBFq +IANB2AlqQeTRwQAQ2iwgA0H4AWogA0HoEWoQsUYgAyADKQP4ATcC6BAgAyADQegQajYCxBEgBiAH +SwRAIAMgBzYC6AkgAyAKNgLkCSADIAs2AuAJIAMgBjYC3AkgBCEICyADIAg2AtgJIANBsBBqIgQg +A0HYCWoiBkHk0cEAENosIANB8AFqIANB6BFqELJGIANB+AlqQYTBwQA2AgAgA0HsCWpB9MDBADYC +ACADQfQJaiADQegCajYCACADQegJaiADQcQRajYCACADQaDAwQA2AuAJIAMgAykD8AE3ArARIAMg +A0GwEWo2AugCIAMgBDYC8AkgAyADQYARajYC5AkgAyADQYgDajYC3AkgAyADQcACajYC2AkgA0HQ +EWoiBCAJQRxqIAYQ4UFBpIrbACgCACAEEMQ0DBULQQAhB0HEk9sAKAIAQQNLDRNBmIrbABD7PiIE +Qf8BcUUNE0GYitsAKAIAIAQQ9S5FDRNBmIrbACgCACIEQShqKAIAIQYgBEEkaigCACEQIAQoAhwh +DyADIARBIGooAgAiCAR/IANBADYC6AkgAyAGNgLkCSADIBA2AuAJIAMgCDYC3AlBASELIA8FQQAL +NgLYCSADQcACaiADQdgJakGY0sEAENosIANBlANqQgA3AgAgA0EBNgKMAyADQZjTwQA2AogDIANB +sMDBADYCkAMgAyAIIAtNBH9BAAUgAyAGNgLkCSADIBA2AuAJIAMgCDYC3AkgAyALNgLoCSALQQFq +IQsgDws2AtgJIANBgBFqIANB2AlqQZjSwQAQ2iwgA0GIAmogA0HoEWoQsUYgAyADKQOIAjcC6BAg +AyADQegQajYCxBEgAyAIIAtLBH8gAyALNgLoCSADIAY2AuQJIAMgEDYC4AkgAyAINgLcCSAPBUEA +CzYC2AkgA0GwEGoiBiADQdgJaiILQZjSwQAQ2iwgA0GAAmogA0HoEWoQskYgA0H4CWpBhMHBADYC +ACADQewJakH0wMEANgIAIANB9AlqIANB6AJqNgIAIANB6AlqIANBxBFqNgIAIANBoMDBADYC4Akg +AyADKQOAAjcCsBEgAyADQbARajYC6AIgAyAGNgLwCSADIANBgBFqNgLkCSADIANBiANqNgLcCSAD +IANBwAJqNgLYCSADQdARaiIGIARBHGogCxDhQUGYitsAKAIAIAYQxDQMEwtBACEHQcST2wAoAgBB +AksNFCABQYwDaigCACEIQYyK2wAQ+z4iBEH/AXFFDRRBjIrbACgCACAEEPUuRQ0UQQAhBkGMitsA +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 +ECADIAc2AsAQIAMgFTcCuBAgAyAMNgK0ECADIAk2ArAQAkACQAJAAkAgAUGMA2ooAgAiBCgCcEUN +ACAEQfQAahDXQSADQbAQahDXQRCAG0UNACABQZADaigCACIFRQ0BIAFBlANqKAIAQRhsIQcDQCAH +RQ0CIANBwAFqIAUQ7jcgAyADKQPAATcC6BEgA0G4AWogA0GwEGoQ7jcgAyADKQO4ATcC2AkgB0EY +ayEHIAVBGGohBSADQegRaiADQdgJahCXQUUNAAtBxJPbACgCAA0IQdyJ2wAQ+z4iBEH/AXFFDQhB +ACEHQdyJ2wAoAgAgBBD1Lg0DDAgLQcST2wAoAgBBA0sNAUH0idsAEPs+IgRB/wFxRQ0BQQAhB0H0 +idsAKAIAIAQQ9S5FDQFB9InbACgCACIEQShqKAIAIQwgBEEkaigCACEGIAQoAhwhBSADIARBIGoo +AgAiCQR/IANBADYC6AkgAyAMNgLkCSADIAY2AuAJIAMgCTYC3AlBASEHIAUFQQALNgLYCSADQcAC +aiADQdgJakGg1MEAENosIANB5AlqQgA3AgAgA0EBNgLcCSADQbDVwQA2AtgJIANBsMDBADYC4Akg +AyAHIAlJBH8gAyAHNgL4ESADIAw2AvQRIAMgBjYC8BEgAyAJNgLsESAFBUEACzYC6BEgA0GAEWoi +BiADQegRaiIFQaDUwQAQ2iwgA0GgAWogASgCjAMQ2kEgA0H8EWpB9MDBADYCACADQfgRaiADQegQ +ajYCACADQaDAwQA2AvARIAMgAykDoAE3ArARIAMgA0GwEWo2AugQIAMgBjYC9BEgAyADQdgJajYC +7BEgAyADQcACajYC6BEgA0HQEWoiBiAEQRxqIAUQ8kFB9InbACgCACAGEMQ0DAELQcST2wAoAgBB +AksNAEHoidsAEPs+IgRB/wFxRQ0AQQAhB0HoidsAKAIAIAQQ9S5FDQBB6InbACgCACIEQShqKAIA +IQwgBEEkaigCACEGIAQoAhwhBSADIARBIGooAgAiCQR/IANBADYC6AkgAyAMNgLkCSADIAY2AuAJ +IAMgCTYC3AlBASEHIAUFQQALNgLYCSADQcACaiADQdgJakG41cEAENosIANB5AlqQgA3AgAgA0EB +NgLcCSADQczWwQA2AtgJIANBsMDBADYC4AkgAyAHIAlJBH8gAyAHNgL4ESADIAw2AvQRIAMgBjYC +8BEgAyAJNgLsESAFBUEACzYC6BEgA0GAEWoiBiADQegRaiIFQbjVwQAQ2iwgA0GoAWogASgCjAMQ +2kEgA0H8EWpB9MDBADYCACADQfgRaiADQegQajYCACADQaDAwQA2AvARIAMgAykDqAE3ArARIAMg +A0GwEWo2AugQIAMgBjYC9BEgAyADQdgJajYC7BEgAyADQcACajYC6BEgA0HQEWoiBiAEQRxqIAUQ +8kFB6InbACgCACAGEMQ0CyADQbAQahCLPkEAIQRBAAwGC0HcidsAKAIAIgRBKGooAgAhBiAEQSRq +KAIAIQUgBCgCHCEJIAMgBEEgaigCACIIBH8gA0EANgLoCSADIAY2AuQJIAMgBTYC4AkgAyAINgLc +CUEBIQcgCQVBAAs2AtgJIANBwAJqIANB2AlqQdTWwQAQ2iwgA0HkCWpCADcCACADQQE2AtwJIANB +kNfBADYC2AkgA0GwwMEANgLgCSADIAcgCEkEfyADIAc2AvgRIAMgBjYC9BEgAyAFNgLwESADIAg2 +AuwRIAkFQQALNgLoESADQYARaiIIIANB6BFqIgZB1NbBABDaLCADQbABaiABKAKMAxDaQSADQfwR +akH0wMEANgIAIANB+BFqIANB6BBqNgIAIANBoMDBADYC8BEgAyADKQOwATcCsBEgAyADQbARajYC +6BAgAyAINgL0ESADIANB2AlqNgLsESADIANBwAJqNgLoESADQdARaiIIIARBHGogBhDyQUHcidsA +KAIAIAgQxDQMBAtBACELQQshBkHEk9sAKAIAQQJLDQBBgIrbABD7PiIEQf8BcUUNAEGAitsAKAIA +IAQQ9S5FDQBBACEJQYCK2wAoAgAiBUEoaigCACEKIAVBJGooAgAhCyAFKAIcIQQgAwJ/IAVBIGoo +AgAiB0UEQEEAIQxBAAwBCyADQQA2AugJIAMgCjYC5AkgAyALNgLgCSADIAc2AtwJQQEhDCAECyII +NgLYCSADQYARaiADQdgJakGY18EAENosIANB5AlqQgA3AgAgA0EBNgLcCSADQfzXwQA2AtgJIANB +sMDBADYC4AkgByAMSwRAIAMgDDYC+BEgAyAKNgL0ESADIAs2AvARIAMgBzYC7BEgBCEJCyADIAk2 +AugRIANBsBBqIgQgA0HoEWoiCkGY18EAENosIANBmAFqIAFBjANqKAIAENpBIANB/BFqQfTAwQA2 +AgAgA0H4EWogA0GwEWo2AgAgA0GgwMEANgLwESADIAMpA5gBNwLQESADIANB0BFqNgKwESADIAQ2 +AvQRIAMgA0HYCWo2AuwRIAMgA0GAEWo2AugRIANBwAJqIgQgBUEcaiAKEPJBQQAhC0GAitsAKAIA +IAQQxDQLQQAhBAwECyAOQQM6AAAgAEEMOgAAQQQMJwsgA0HqAmogCi0AADoAACADIAMvAcQROwHo +AgwCCyADKAKwECIEIQkgBARAIANBsBBqEJ5NIAMoArAQIQkLIARBAEchBCADKALEECEIIAMoAsAQ +IQcgAykCuBAhFSADKAK0ECEMQQELIQtBCyEGCyADQaYRaiIFIANB6gJqLQAAOgAAIAMgAy8B6AI7 +AaQRQQEhCiAOQQE6AAAgA0GmAmoiDiAFLQAAOgAAIAMgAy8BpBE7AaQCIA0Q9z9BCyEFIAZBC0cN +BCABIAs2AtQCIAFBAToA+AIgASAEQQFxOgD0AiABQewCaiAINgIAIAFB6AJqIAc2AgAgAUHgAmog +FTcDACABQdwCaiAMNgIAIAFB2AJqIAk2AgAgAUHMAmooAgAgC3JFBEBBBSEJDCELIAEQvAsgAUGB +AjsB+gIgASgCzAJFDQNBACEFIAFBADoA+QIgDSABQbgCaiIEKQMANwMAIA1BEGogBEEQaikDADcD +ACANQQhqIARBCGopAwA3AwAgA0GQAWogDRCxRiADIAMpA5ABNwKIAyADQYgBaiABKALQAhDyTSAD +IAMpA4gBNwLYCSADQYgDaiADQdgJahCXQUUNCSABQcwEaiIKQQA6AAAgAUGcA2ogDTYCACABIAEo +AtACQShqIgU2ApgDIAFBmANqIQkLIAFBoANqIgcgDRCfTRCbCCABQeADahCzKyABQcgEaiINQQA6 +AAAgAUGABGogBzYCACABQfwDaiIMIAU2AgALIAFBiARqIAc2AgAgAUGEBGogBTYCACAFKAIUIQQg +AUHEBGpBADoAACABQYwEaiAEQQhqNgIACyABQYwEaiIEIAIQuQciCEUNAiADIAg2AsQRIAQQ2T8g +A0HEEWoQ1EwiBCgCAEENIQcgA0ENOgDYCUUNAyADQdgJahCAHSADQYgDaiAEIAFBiARqKAIAELUI +QRYhByADLQCIAyIEQRZGBEAgA0HEEWoQmkwgA0GIA2oiBBDoSCADQYABaiABKAKIBEEsahDxLiAD +KAKEASEIIAMoAoABIQYgA0H4AGogASgCiAQQtSEgBCAGIAggAygCeCADKAJ8ENggIANB8ABqIAFB +hARqKAIAIgQoAgAgBCgCBBDCMCADQegJaiADQZADaigCADYCACADIAMpA3A3AtgJIAMgAykCiAM3 +AuAJIANB6BBqIANB2AlqEPQdIAMoAugQIQ4gAykC7BAhFgwGCyADQaYRaiADLQCLAzoAACADQbgQ +aiADQaADaikCADcDACADQcAQaiADQagDaigCADYCACADIAMvAIkDOwGkESADIAMpApgDNwOwECAD +KAKMAyEOIAMpApADIRYgBCEHDAQLQQAhBSABQQA2AvABIAFBAToA9wIMBgsgA0GuEGogDi0AADoA +ACADIAMvAaQCOwGsECAIrSAEQf8Bca1CIIaEIARBCHatQiiGhCEWIAYhBSALIQoMHAsgDUEDOgAA +IApBAzoAACAAQQw6AABBBQwdCyADQaYRaiADQbICai0AADoAACADQbgQaiADQYgRaikCADcDACAD +QcAQaiADQZARaigCADYCACADIAMvALACOwGkESADIAMpAoARNwOwEAsgA0HEEWoQmkwLQQEhBSAB +QQE6AMgEIANB2BFqIANBuBBqKQMAIhU3AwAgA0GuAmoiBCADQaYRai0AADoAACADQcgCaiIIIBU3 +AwAgA0HQAmoiBiADQcAQaigCADYCACADIAMpA7AQIhU3A9ARIAMgAy8BpBE7AawCIAMgFTcDwAIg +DBDwPyABQaADahDKKSADQf4QaiAELQAAIgQ6AAAgA0HAEWogBigCACIGNgIAIAFBAToAzAQgA0G4 +EWogCCkDACIVNwMAIANBgBJqIBU3AgAgA0GIEmogBjYCACADIAMvAawCIgg7AfwQIAMgAykDwAIi +FTcDsBEgAyAIOwDpESADIAQ6AOsRIAMgFTcC+BEgAyAWNwLwESADIA42AuwRIAMgBzoA6BEgCRDO +OyADLQDoESIEQRZGBEAgA0HwAmogA0HsEWoiBEEIaigCADYCACADIAQpAgA3A+gCDAELQQsgBEEL +a0H/AXEiBCAEQQtPG0ECRwRAIANBiANqIANB6BFqQSQQzU8aQQAhBQJAQcST2wAoAgBBBEsNAEG4 +idsAEPs+IgRB/wFxRQ0AQQAhB0G4idsAKAIAIAQQ9S5FDQBBuInbACgCACIIQShqKAIAIQYgCEEk +aigCACEJIAgoAhwhCiADIAhBIGooAgAiBAR/IANBADYC6AkgAyAGNgLkCSADIAk2AuAJIAMgBDYC +3AlBASEHIAoFQQALNgLYCSADQdARaiADQdgJakGcz8EAENosIANBvBBqQgE3AgAgA0EBNgK0ECAD +QcjPwQA2ArAQIANBywE2ArQCIAMgA0GwAmo2ArgQIAMgA0GIA2o2ArACIAMgBCAHTQR/QQAFIAMg +BjYC5AkgAyAJNgLgCSADIAQ2AtwJIAMgBzYC6AkgB0EBaiEHIAoLNgLYCSADQcACaiADQdgJakGc +z8EAENosIANB6ABqIAFBgANqIgsQsUYgAyADKQNoNwKkESADIANBpBFqNgKoAiADIAQgB0sEfyAD +IAc2AugJIAMgBjYC5AkgAyAJNgLgCSADIAQ2AtwJIAoFQQALNgLYCSADQYARaiIEIANB2AlqIgZB +nM/BABDaLCADQeAAaiALELJGIANB+AlqQYTBwQA2AgAgA0HsCWpB9MDBADYCACADQfQJaiADQawC +ajYCACADQegJaiADQagCajYCACADQaDAwQA2AuAJIAMgAykDYDcCxBEgAyADQcQRajYCrAIgAyAE +NgLwCSADIANBwAJqNgLkCSADIANBsBBqNgLcCSADIANB0BFqNgLYCSADQbARaiAIQRxqIAYQ4UEg +A0HwEGogA0G4EWooAgA2AgAgAyADKQKwETcD6BBBuInbACgCACADQegQahDENAsgA0GIA2oQgB0M +AQtBACEFAkBBxJPbACgCAEEDSw0AQayJ2wAQ+z4iBEH/AXFFDQBBACEJQayJ2wAoAgAgBBD1LkUN +AEGsidsAKAIAIgRBHGohCCAEQSBqKAIAIgYEQCAEQShqKAIAIQcgBEEkaigCACEKIAQoAhwhCSAD +QQA2AugJIAMgBzYC5AkgAyAKNgLgCSADIAY2AtwJCyADIAk2AtgJIANBiANqIgQgA0HYCWoiBkGs +zsEAENosIANB2ABqIAFBgANqIgcQsUYgAyADKQNYNwLoECADQdAAaiAHELJGIANBvBBqQf0ANgIA +IANB5AlqQgI3AgAgA0H+ADYCtBAgA0EDNgLcCSADQYTPwQA2AtgJIANBoMDBADYCiBEgAyADKQNQ +NwKwESADIANBsBFqNgK4ECADIANB6BBqNgKwECADIANBsBBqNgLgCSADIAY2AoQRIAMgBDYCgBEg +A0HAAmogCCADQYARahDgQSADQdgRaiADQcgCaigCADYCACADIAMpAsACNwPQEUGsidsAKAIAIANB +0BFqEMQ0CyADLQDoEUEWRg0AIANB6BFqEIAdCyADQegJaiABQZADaikDADcDACADQeAJaiABQYgD +aikDADcDACADIAEpA4ADNwPYCSABQZABaiADQdgJahDuHiABIAU2AvABIAFBAToA9wIgAUH0AWog +AykD6AI3AgAgAUH8AWogA0HwAmooAgA2AgALIAEoAtQCBEBBACEHIAFBADoA+AIgASABQdgCaikD +ADcD0AMgAUHYA2ogAUHgAmopAwA3AwAgAUHgA2ogAUHoAmopAwA3AwAgASgC0AMNAyABIAFB1ANq +IgU2AoADIAFBzANqIgdBADoAACABQYgDaiAFNgIAIAEgASgC0AJBKGoiCTYChAMgAUGEA2ohDAwB +C0EAIQcgAUEANgKAAiABQYECOwD1AgwDCyABQYwDaiAFNgIAIAkoAhAhBCABQcgDakEAOgAAIAFB +kANqIARBCGo2AgALAkACQAJAAkACQCABQZADaiIEIAIQuQciCARAIAMgCDYCpBEgBBDZPyADQaQR +ahDUTCEFIANBDToAgBEgBSgCACEEIANBiANqIANBgBFqQSQQzU8aAkACQCAEBEAgA0GIA2oQgB0M +AQsgA0GqAmoiBCADLQCLAzoAACADQbgRaiIIIANBoANqKQIANwMAIANBwBFqIgYgA0GoA2ooAgA2 +AgAgAyADLwCJAzsBqAIgAyADKQKYAzcDsBEgAygCjAMhBSADLQCIAyIJQRZHDQELIANB2AlqIAUg +AUGMA2ooAgAQowMgAygC2AkiBUGAgICAeEYNAiADQf4QaiIEIANB3wlqIggtAAA6AAAgA0HwEGoi +BiADQfQJaiIJKQIANwMAIANB+BBqIgogA0H8CWoiCygCADYCACADQeAQaiADQYgKaikCADcCACAD +IAMvAN0JOwH8ECADIAMpAuwJNwPoECADIAMpAoAKNwLYECADLQDcCSEQIAMpAuQJIRUgAygC4Akh +DSADQbcQaiAELQAAOgAAIANBzBBqIAYpAwA3AgAgA0HUEGogCigCADYCACADIAU2ArAQIAMgDTYC +uBAgAyAVNwK8ECADIBA6ALQQIAMgAy8B/BA7ALUQIAMgAykD6BA3AsQQIANBpBFqIgQQmkwgBBDo +SCADQdgJaiABKAKMA0EIahDKGiADKALYCQRAIANBqgJqIgQgCC0AADoAACADQbgRaiIIIAkpAgA3 +AwAgA0HAEWoiBiALKAIANgIAIAMgA0HdCWovAAA7AagCIAMgA0HsCWopAgA3A7ARIANB4AlqKAIA +IQUgA0HkCWopAgAhFSADLQDcCSEJIANB6BFqIgogA0GACmpBnAEQzU8aIANBgBFqEIAdIANBoANq +IAgpAwA3AgAgA0GoA2ogBigCADYCACADIBU3ApADIAMgBTYCjAMgAyAJOgCIAyADIAMvAagCOwCJ +AyADIAQtAAA6AIsDIAMgAykDsBE3ApgDIANBrANqIApBnAEQzU8aIANB6BBqIgQgA0GIA2oQ8VEg +A0HIAGogBBCfISADKAJMIQQgAygCSCEIIANBQGsgA0GwEGoiBhChKSADQaQRaiAIIAQgAygCQCAD +KAJEEMAxIANBOGogASgCjAMQxE0gA0EwaiADKAI4IAMoAjwQwjAgA0HoCWogA0GsEWooAgA2AgAg +AyADKQMwNwLYCSADIAMpAqQRNwLgCSADQcQRaiADQdgJahD0HSADKALEESEFIAMpAsgRIRUgBhC3 +NUEWIQkMBQsgA0GuAmogAy0AgxE6AAAgA0HYEWogA0GYEWopAgA3AwAgA0HgEWogA0GgEWooAgA2 +AgAgAyADLwCBETsBrAIgAyADKQKQETcD0BEgA0GkEWoQnRkgA0GwEGoQtzVBDSEJDAQLIAMpApAD +IRUgA0GuAmogBC0AADoAACADQdgRaiAIKQMANwMAIANB4BFqIAYoAgA2AgAgAyADLwGoAjsBrAIg +AyADKQOwETcD0BEMAgsgB0EDOgAADAMLIANB/hBqIANB3wlqLQAAIgQ6AAAgA0HwEGogA0H0CWop +AgAiFTcDACADQfgQaiADQfwJaigCACIINgIAIANBrgJqIAQ6AAAgA0HgEWogCDYCACADQdgRaiAV +NwMAIAMgA0HdCWovAAAiBDsB/BAgAyADQewJaikCACIVNwPoECADIAQ7AawCIAMgFTcD0BEgA0Hg +CWooAgAhBSADQeQJaikCACEVIAMtANwJIQkLIANBpBFqEJpMCyADQYIDaiIEIANBrgJqLQAAOgAA +IANB8AJqIgggA0HYEWopAwA3AwAgA0H4AmoiBiADQeARaigCADYCACADIAMvAawCOwGAAyADIAMp +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 +AmoQsRkLIAFBADsA9QICQCABKALwAUUNACABLQD3AkUNACABQfQBahCxGQsgAUEAOgD3AgJAIAEt +APoCRQ0AIAFBIGoQlEUgAS0A+gJFDQAgAUHIAGoQ+0AgAS0A+gJFDQAgAUE4ahCWRSABLQD6AkUN +ACABQagBahC4SyABLQD6AkUNACABQbQBahC+SyABLQD6AkUNACABQcABahC7SyABLQD6AkUNACAB +QcwBahC/SwsgAS0A+wIEQCABQdgBahC2SwsCQCABLQD6AkUNACABQeAAahDpPyABLQD6AkUNACAB +QYQBahDWPyABLQD6AkUNACABQTxqEKgZIAEtAPoCRQ0AIAEQnD8gAS0A+gJFDQAgAUHkAWoQwEsg +AS0A+gJFDQAgAUHUAGoQ+0ALIAFBADsB+gIgASgC1AJFDQAgAS0A+AJFDQAgAUHYAmoQiz4LIAFB +ADoA+AILIAFBzAJqKAIARQ0AIAEtAPkCRQ0AIAFBuAJqEPsfCyAAIAU6AAAgAUEAOgD5AiAAIAMv +AawQOwABIAAgFjcCHCAAIAc2AhggACAVNwIQIAAgDDYCDCAAIAk2AgggACAKNgIEIABBA2ogA0Gu +EGotAAA6AABBAQs6APwCIANBoBZqJAALiMcDAiV/BH4jAEGw4gBrIgUkAAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACfwJ/AkACQAJAAkACQAJAAkACQAJAAkACfwJ/AkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEoAgAiCS0A +NUEBaw4EBAcBBgALIAlBADoANCAJQSRqKAIAIQQgCSgCICEMIAkoAjAhCyAJKAIsIQMgCSgCKCEP +QcST2wAoAgBBAksNAUHcjNsAEPs+IgFB/wFxRQ0BQdyM2wAoAgAgARD1LkUNAUHcjNsAKAIAIgFB +KGooAgAhByABQSRqKAIAIQggASgCHCEKIAUgAUEgaigCACIGBH8gBUEANgJ0IAUgBzYCcCAFIAg2 +AmwgBSAGNgJoQQEhGSAKBUEACzYCZCAFQaA+aiAFQeQAakGYk8IAENosIAUgBiAZTQR/QQAFIAUg +BzYCcCAFIAg2AmwgBSAGNgJoIAUgGTYCdCAZQQFqIRkgCgs2AmQgBUHgJmogBUHkAGpBmJPCABDa +LCAFIAYgGUsEfyAFIBk2AphAIAUgBzYClEAgBSAINgKQQCAFIAY2AoxAIAoFQQALNgKIQCAFQZAr +aiIHIAVBiMAAaiIGQZiTwgAQ2iwgBUGEAWpBpMHBADYCACAFQYABakGwwMEANgIAIAVB+ABqQaTB +wQA2AgAgBUH0AGpBsMDBADYCACAFQaTBwQA2AmwgBUGwwMEANgJoIAUgBzYCfCAFIAVB4CZqNgJw +IAUgBUGgPmo2AmQgBiABQRxqIAVB5ABqEOFBIAkgASAGEMQyIAlBAToANCAJKAIIQQJGDQIgCUEA +OgA0IAVBkMAAaiAJQQhqKQMANwMAIAVBmMAAaiAJQRBqKQMANwMAIAVBoMAAaiAJQRhqKQMANwMA +IAUgCSkDADcDiEAgBUGowABqIAVB4CZqQcgCEM1PGiAJQThqIAVBiMAAakHoAhDNTxogCUGkA2og +BDYCACAJQaADaiAMNgIAIAlBqANqIAVBsCZqQSwQzU8aIAlB5ANqQQA6AAAgCUHcA2ogCzYCACAJ +QdgDaiADNgIAIAlB1ANqIA82AgAgCUHlA2ogBUHkAGpByyUQzU8aC0EAIQdBACEPIwBBkDNrIgEk +ACAJQThqIgYoAghBAkcEQCAGQQhqIAYQ+CcLIAVB2ABqIQ0gASAGNgJkAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACfwJ/AkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAIAZBrANqLQAAQQFrDgYDBQEEJhkACyAGQagDakEANgIAIAZB6AJqIggQ +vhIgAUHoEGogCBDzRyABKALoEEGTgICAeEYNASAGQQE6AKsDIAZBkAJqIAFB6BBqQdgAEM1PIQhB +xJPbACgCAEEBSw0LQfSM2wAQ+z4iB0H/AXFFDQtB9IzbACgCACAHEPUuRQ0LQfSM2wAoAgAiB0Ec +aiEKIAdBIGooAgAiDARAIAdBKGooAgAhCyAHQSRqKAIAIQMgBygCHCEXIAFBADYC+BAgASALNgL0 +ECABIAM2AvAQIAEgDDYC7BALIAEgFzYC6BAgAUHQAmoiByABQegQaiIMQbSVwwAQ3SwgAUH0EGpC +ADcCACABQZTJwgA2AogPIAFBATYC7BAgAUHglcMANgLoECABQaTJwgA2AvAQIAEgDDYChA8gASAH +NgKADyABQegKaiAKIAFBgA9qEOBBIAFBwAhqIAFB8ApqKAIANgIAIAEgASkC6Ao3A7gIQfSM2wAo +AgAgAUG4CGoQxDQMCwsgBkGwA2ohFwJAAkACQCAGQfQDaiIILQAAQQFrDgUKBg8BAgALIAZBvANq +KAIAIQ8gBkG4A2ooAgAhECAGQbQDaigCACEHIAYoArADIRgMDQsgBkH4A2ohBwJAAkAgBkGlBGoi +GC0AAEEBaw4EAQYRFAALIAZBoARqKAIAIRAgBkGcBGooAgAhGSAGQZgEaigCACEPDA8LQeDGwgBB +I0HQ+MIAEOYrAAsgBkHoBWohDwJAAkAgBkGZBmoiGC0AAEEBaw4EAQUcHwALIAZBlAZqKAIAIQog +BkGQBmooAgAhByAGQYwGaigCACEZIAZBiAZqKAIAIRAMGgtB4MbCAEEjQdyYwwAQ5isACyABIAEo +AuwQNgJoQcST2wAoAgBBA0sNCEHojNsAEPs+IgJB/wFxRQ0IQeiM2wAoAgAgAhD1LkUNCEHojNsA +KAIAIgJBHGohCCACQSBqKAIAIgoEQCACQShqKAIAIQwgAkEkaigCACELIAIoAhwhByABQQA2AuAC +IAEgDDYC3AIgASALNgLYAiABIAo2AtQCCyABIAc2AtACIAFBgA9qIgIgAUHQAmoiB0HolcMAEN0s +IAFB3AJqQgE3AgAgAUGUycIANgLwCiABQQE2AtQCIAFBoJbDADYC0AIgAUHQATYC1AYgASAHNgLs +CiABIAI2AugKIAEgAUHQBmo2AtgCIAEgAUHoAGo2AtAGIAFBuAhqIgIgCCABQegKahDgQUHojNsA +KAIAIAIQxDQMCAtB4MbCAEEjQaiWwwAQ5isACyAGQYAEaiEXAkACQCAGQdIHaiIILQAAQQFrDgUH +AigBLQALIAZBxAdqKAIAIRAgBkHAB2ooAgAhDyAGQcwHaigCACEHDCYLIAZB2AdqIRACQAJAIAZB +oAhqIhgtAABBAWsOAwUCAQALIBAoAgAhBwwoCyAGQYgIaiEKAkAgBkGcCGoiGS0AAEEBaw4DAwEA +AgsgBkGYCGooAgAhDyAGQZQIaigCACEHDCkLAAsgBkGQCGooAgAhDyAGQYwIaigCACEeIAYoAogI +IQcMJgtB4MbCAEEjQbTSwgAQ5isAC0HgxsIAQSNB8MrCABDmKwALQeDGwgBBI0HUlMMAEOYrAAtB +4MbCAEEjQfjqwgAQ5isACyAGQewCaigCACEHIAYoAugCIQIgAUHoAGoQ2jQMOQsgBigCkAJBjICA +gHhHDQsgBkHwAmoiECAGQZQCakEsEM1PIQcgBkH0A2oiCEEAOgAAIAZBuANqIAc2AgAgBkG8A2og +BkGkA2ooAgAiDzYCACAGQbQDaiAGQaADaigCACIHNgIAIAZBsANqIhcgBigCnAMiGDYCAAsgBkHM +A2ogDzYCACAGQcgDaiAQNgIAIAZBxANqIAc2AgAgBkHAA2ogGDYCACAGQYAEakEAOgAAIAZB+ANq +IAc2AgALIAFBgA9qIAZB+ANqIgcgAhDIAiABLQCADyIKQQxGDQggAUHOBmoiDCABLQCDDzoAACAB +QbgGaiILIAFBkA9qKQIANwMAIAFBwAZqIgMgAUGYD2opAgA3AwAgAUHIBmoiECABQaAPaigCADYC +ACABIAEvAIEPOwHMBiABIAEpAogPNwOwBiABKAKEDyEPIAcQrTggCkELRw0FIAZBCzoA0AMgBkHU +A2ogDzYCACABQZgGaiIKIAFB2AZqKQMANwMAIAFBoAZqIgwgAUHgBmopAwA3AwAgAUGoBmoiCyAB +QegGaikDADcDACABIAEpA9AGNwOQBiAGQcADaigCACgCACEDIAZByANqKAIAIRAgAUHQAmoiESAB +QegQakGqARDNTxogB0EYaiALKQMANwMAIAdBEGogDCkDADcDACAHQQhqIAopAwA3AwAgByABKQOQ +BjcDACAGQaUEaiIYQQA6AAAgBkGgBGogEDYCACAGQZwEaiADQYwBaiIZNgIAIAZBmARqIA82AgAg +BkGmBGogEUGqARDNTxoLIAZBpARqQQA6AABBxJPbACgCAEECSw0BQcSP2wAQ+z4iCkH/AXFFDQFB +xI/bACgCACAKEPUuRQ0BQcSP2wAoAgAiCkEcaiELIApBIGooAgAiDARAIApBKGooAgAhAyAKQSRq +KAIAIREgCigCHCEeIAFBADYC+BAgASADNgL0ECABIBE2AvAQIAEgDDYC7BALIAEgHjYC6BAgAUHo +DWoiAyABQegQaiIMQdD4wgAQ3SwgDCAQEM89IAFB4PjCADYC5AwgASABQegMajYC4AwgASADNgLc +DCABIAw2AugMIAFB0AxqIgMgCyABQdwMahDgQSAHIAogAxDEMiAGQQE6AKQEIAwQvz8gBkGABGoo +AgBBAkYNAiAGQQA6AKQEIAFB8A1qIAdBCGopAwA3AwAgAUH4DWogB0EQaikDADcDACABQYAOaiAH +QRhqKQMANwMAIAEgBykDADcD6A0gAUGIDmogAUHwDGpB+AAQzU8aIAZBqARqIAFB6A1qQZgBEM1P +GiAGQcwFakEAOgAAIAZByAVqIBk2AgAgBkHEBWogDzYCACAGQcAFaiAQNgIAIAZBzQVqIAEvAO0M +OwAAIAZBzwVqIAFB7wxqLQAAOgAACyABQegQaiAGQagEaiIKIAIQ8CggASkD6BAiKEIDUQ0EIAEt +APAQIRAgAUGgEGogAUHxEGpBxwAQzU8aIAFBgA9qIAFBuBFqQaABEM1PGiAKENNLDAkLIAZBAToA +pAQgBkGQBGpBADYCACAGQYAEakECNgIACyAGQagEaiABQfAMakH4ABDNTxogBkGsBWpBADoAACAG +QagFaiAZNgIAIAZBpAVqIA82AgAgBkGgBWogEDYCACAGQa0FaiABLwDtDDsAACAGQa8FaiABQe8M +ai0AADoAAAsgAUHoEGogBkGoBGoiCiACEKcCIAEpA+gQIihCA1IEQCABLQDwECEQIAFBoBBqIAFB +8RBqQccAEM1PGiABQYAPaiABQbgRakGgARDNTxogChCAQwwHC0EEDAILIAYgCjoA0AMgBkHRA2og +AS8BzAY7AAAgBkHUA2ogDzYCACAGQdgDaiABKQOwBjcCACAGQdMDaiAMLQAAOgAAIAZB4ANqIAsp +AwA3AgAgBkHoA2ogAykDADcCACAGQfADaiAQKAIANgIAIAFBgw9qIAZB0ANqQSQQzU8aIAFBiAxq +IAFBgA9qQScQzU8aQQ4hEAwPC0EDCyECIBggAjoAAEEEDAsLQQMMCgsgBkEAOgCrAyAGQbADaiAI +QdgAEM1PIQcgBkGUBGpBADoAACAGQZAEaiAHNgIAIAZBjARqIAZBpANqKAIANgIAIAZBiARqIAYo +ApwDNgIACyAGQYgEaiIHIAIQwwJFBEAgBxCWQCAGQbADahDWBgwrCyAGQQY6AKwDDCwLIAZBpARq +LQAABEAgBxDZIgsgBkEAOgCkBCABQfAHaiIKIAFBoBBqQccAEM1PGiABQdAGaiIMIAFBgA9qQaAB +EM1PGiAGQQE6AKUEIAFB2AlqIApBxwAQzU8aIAFBuAhqIAxBoAEQzU8aIAcQ2C0gKEICUgRAIAFB +6BBqIgogAUG4CGpBoAEQzU8aIAFBgA9qIgwgAUHYCWpBxwAQzU8aIAZBgARqIBA6AAAgBiAoNwP4 +AyAGQYEEaiAMQccAEM1PGiAGQcgEaiAKQaABEM1PGiAGQcADaigCACEQIAZBxANqKAIAEI5OIRkg +BkGZBmoiGEEAOgAAIAZBkAZqIAc2AgAgBkGMBmogGTYCACAGQYgGaiAQNgIAIAZBlAZqIAZBzANq +KAIAIgo2AgAgBkHoBWohDwwBCyABQYgMaiABQdgJakHHABDNTxoMCQsgBkGYBmpBADoAAEHEk9sA +KAIAQQJLDQFBoIzbABD7PiILQf8BcUUNAUEAIQxBoIzbACgCACALEPUuRQ0BQaCM2wAoAgAiC0Eo +aigCACERIAtBJGooAgAhEyALKAIcIQ4gASALQSBqKAIAIgMEfyABQQA2AuACIAEgETYC3AIgASAT +NgLYAiABIAM2AtQCQQEhDCAOBUEACzYC0AIgAUHwDGogAUHQAmpB3JjDABDdLCABIAdB0AFqNgKQ +BiABIAMgDEsEfyABIAw2AuACIAEgETYC3AIgASATNgLYAiABIAM2AtQCIA4FQQALNgLQAiABQegN +aiIMIAFB0AJqIgNB3JjDABDdLCABQdgAaiAHKALEARD6HSABQeQCakGw1MIANgIAIAFB4AJqIAFB +8AdqNgIAIAFBwOvCADYC2AIgASABKQNYNwLwByABIAw2AtwCIAEgAUGQBmo2AtQCIAEgAUHwDGo2 +AtACIAFBoBBqIgwgC0EcaiADEPJBIA8gCyAMEMQyIAZBAToAmAYgBkHwBWooAgBBAkYNAiAGQQA6 +AJgGIAZBoAZqIA8pAwA3AwAgBkHQBmpBADoAACAGQcwGaiAKNgIAIAZByAZqIBk2AgAgBkHEBmog +EDYCACAGQcAGaiAHNgIAIAZBqAZqIA9BCGopAwA3AwAgBkGwBmogD0EQaikDADcDACAGQbgGaiAP +QRhqKQMANwMAIAZB0QZqIAFB6BBqQaciEM1PGgsgAUHQAmogBkGgBmoiByACEO8oIAEtANACIhBB +E0YNAyABQYAPaiABQdACakEBckHHABDNTxogBxDVSwwGCyAGQQE6AJgGIAZBgAZqQQA2AgAgBkHw +BWpBAjYCAAsgBkGwBmpBADoAACAGQawGaiAKNgIAIAZBqAZqIBk2AgAgBkGkBmogEDYCACAGQaAG +aiAHNgIAIAZBsQZqIAFB6BBqQaciEM1PGgsgAUHQAmogBkGgBmoiByACENwBIAEtANACIhBBE0cE +QCABQYAPaiABQdACakEBckHHABDNTxogBxDcMQwEC0EEDAELQQMLIQIgGCACOgAAQQULIQIgCCAC +OgAADAQLIAZBmAZqLQAABEAgDxDZIgsgBkEAOgCYBiABQdAGaiIKIAFBgA9qQccAEM1PGiAGQQE6 +AJkGIAFBoApqIApBxwAQzU8aIA8Q2S0gEEESRgRAIAZBgARqLQAAIRAgBkH4A2opAwAhKCABQYgM +aiAGQYEEakHHABDNTxogAUHoCmogBkHIBGpBoAEQzU8aDAILIAFBiAxqIAFBoApqQccAEM1PGiAG +QfgDahDHOQtCAiEoCyABQYgCaiABQYgMakHHABDNTxogAUHoAGogAUHoCmpBoAEQzU8aIAhBAToA +ACAoQgNRDQEgBiAoNwMgIAZBKGoiByAQOgAAIAZBKWogAUGIAmpBxwAQzU8aIAZB8ABqIAFB6ABq +QaABEM1PGiAXEKMuIAYpAyBCAlENAyAGQakDakGBAjsAACAGQbgKaiAGQSBqQfABEM1PGiABQegQ +aiIHIAZBwApqQdgAEM1PGiAGQaQDaiIIKAIAQagBaiAHEO8rIAgoAgAhByABQfgQaiIKIAZBqAtq +KQIANwMAIAFB8BBqIgwgBkGgC2opAgA3AwAgASAGQZgLaikCADcD6BAgB0G8AWooAgAiCCAHKAK0 +AUYEQCAHQbQBaiAIEJoPIAcoArwBIQgLIAdBuAFqKAIAIAhBGGxqIgggASkD6BA3AgAgCEEQaiAK +KQMANwIAIAhBCGogDCkDADcCACAHIAcoArwBQQFqNgK8ASAGQfgLai0AAEECRwRAIAZBADoAqgMg +AUHQAmoiByAGQbALakHMABDNTxogBigCpANBwAFqIAcQ7CsLIBcgBkGADGoQ80cgBigCsANBk4CA +gHhGDQIgBkGIBGogF0HYABDNTyEHIAZB7ARqQQA6AAAgBkHoBGogBzYCACAGQeQEaiAGKAKkAzYC +ACAGQeAEaiAGQZwDaigCADYCAAsgBkHgBGoiByACEMMCRQ0PIAZBBToArAMMHwsgBkEDOgCsAwwe +CyABIAZBtANqKAIANgJoQcST2wAoAgBBA0sNGUGMjdsAEPs+IgJB/wFxRQ0ZQQAhB0GMjdsAKAIA +IAIQ9S5FDRlBjI3bACgCACICQRxqIQggAkEgaigCACIKBEAgAkEoaigCACEMIAJBJGooAgAhCyAC +KAIcIQcgAUEANgL4ECABIAw2AvQQIAEgCzYC8BAgASAKNgLsEAsgASAHNgLoECABQYAPaiICIAFB +6BBqIgdBuJbDABDdLCABQfQQakIBNwIAIAFBlMnCADYC8AogAUEBNgLsECABQfiWwwA2AugQIAFB +0AE2AtQGIAEgBzYC7AogASACNgLoCiABIAFB0AZqNgLwECABIAFB6ABqNgLQBiABQbgIaiICIAgg +AUHoCmoQ4EFBjI3bACgCACACEMQ0DBkLIAZBqANqQQE6AAAgFyAHQcgAEM1PGiAGLQCwAyIIQQ9H +DRcgBkEAOgCoAyAGQfwDaiAGQbgDaigCACIQNgIAIAZB+ANqIAZBtANqKAIAIg82AgAgAUGAFGog +BkHUA2opAgA3AwAgAUH4E2ogBkHMA2opAgA3AwAgAUHwE2ogBkHEA2opAgA3AwAgASAGQbwDaikC +ADcD6BMgBkGcA2ooAgAoAgAhByABQdACaiIIIAFB6BBqQcADEM1PGiAGQYAEaiIXIAhBwAMQzU8a +IAZB0gdqIghBADoAACAGQcwHaiAHQcgAaiIHNgIAIAZBxAdqIBA2AgAgBkHAB2ogDzYCAAsgBkHQ +B2pBADsBACAGQcgHaiAHNgIAIAZB3AdqIBA2AgAgBkHYB2ogDzYCACAGQYAJaiAHNgIAIAZBhAlq +QQA6AAAgBkGgB2ogBkGAB2opAwAiKDcDACAGQagHaiAGQYgHaikDACIpNwMAIAZBsAdqIAZBkAdq +KQMAIio3AwAgBkG4B2ogBkGYB2opAwAiKzcDACAGQeAHaiAoNwMAIAZB6AdqICk3AwAgBkHwB2og +KjcDACAGQfgHaiArNwMACyABQegQaiAGQdgHaiIQIAIQlQQgASgCyBEiB0EERg0IIAFBgA9qIAFB +6BBqQeAAEM1PGiABQYgNaiIMIAFB5BFqKAIANgIAIAFBgA1qIgsgAUHcEWopAgA3AwAgAUH4DGoi +AyABQdQRaikCADcDACABIAEpAswRNwPwDCAQEPs/IAZBgAVqIQogB0EDRg0JIAogAUGAD2pB4AAQ +zU8hDyAGQeAFaiAHNgIAIAZB/AVqIAwoAgA2AgAgBkH0BWogCykDADcCACAGQewFaiADKQMANwIA +IAZB5AVqIAEpA/AMNwIAIBcgD0GAARDNTxogBkHgBGooAgBBAkYEQEELIQcMFAsgBkHRB2pBADoA +ACAGQYAGaiIHIA9BgAEQzU8hCiAGQaAIaiIYQQA6AAAgBiAKNgLYBwsgAUHoEGogB0EwahDqSCAB +LQDoEARAIAZB3AdqIgogASkA6RA3AAAgBkH0B2ogAUGBEWopAAA3AAAgBkHsB2ogAUH5EGopAAA3 +AAAgBkHkB2ogAUHxEGopAAA3AAAgBkH8B2ogChDxUSAGQZwIaiIZQQA6AAAgBkGICGoiCiAHNgIA +IAZBkAhqIAZBhAhqKAIAIg82AgAgBkGMCGogBkGACGooAgAiHjYCAAwBC0ELIQdBACEPDAILIAFB +0ABqIAcoAiRBCGoQ5TUgAUHIAGogASgCUCAeIA8gASgCVCgCKBEFACABKAJIIQcgBkGYCGogASgC +TCIPNgIAIAZBlAhqIAc2AgALIAFB6BBqIAcgAiAPKAIMEQMAIAEtAOgQIgdBDEYNAiABQdoJaiIM +IAEtAOsQOgAAIAFBwAhqIgsgAUH4EGopAgA3AwAgAUHICGoiAyABQYARaikCADcDACABQdAIaiIR +IAFBiBFqKAIANgIAIAEgAS8A6RA7AdgJIAEgASkC8BA3A7gIIAEoAuwQIQ8gBkGUCGoQmTYgBkEB +OgCcCCABQaIKaiAMLQAAOgAAIAFB8ApqIAspAwA3AwAgAUH4CmogAykDADcDACABQYALaiARKAIA +NgIAIAEgAS8B2Ak7AaAKIAEgASkDuAg3A+gKIAoQ9T8gBkH8B2oQiD8LIAFB8gdqIgogAUGiCmot +AAA6AAAgAUHwDWoiDCABQfAKaikDADcDACABQfgNaiILIAFB+ApqKQMANwMAIAFBgA5qIgMgAUGA +C2ooAgA2AgAgASABLwGgCjsB8AcgASABKQPoCjcD6A0gGEEBOgAAIAFBkgZqIhEgCi0AADoAACAB +QfAAaiIKIAwpAwA3AwAgAUH4AGoiDCALKQMANwMAIAFBgAFqIgsgAygCADYCACABIAEvAfAHOwGQ +BiABIAEpA+gNNwNoIBAQ0DsgB0ELRw0CIBAgDzYCACAPRQ0OIAZB3AdqIA82AgAgBkHQB2pBADoA +ACAGQZgIakEAOgAAIAZB4AdqIA9BCGo2AgALIAZB4AdqIgcgAhC6ByICRQ0GIAEgAjYC8AcgBxDZ +PyABQfAHahDUTCICKAIIIQcgAigCBCABIAFB6ApqNgLoECAHIAFB6BBqEPYCIAFB8AdqENRMIgIo +AghFDQogAigCBCELQcST2wAoAgBBAksNCUH4hNsAEPs+IgJB/wFxRQ0JQQAhCEH4hNsAKAIAIAIQ +9S4NAgwJCyAZQQM6AAAgGEEDOgAAQQQhAgwHCyAGQdAHakEAOgAAIAFBigJqIBEtAAA6AAAgAUHY +BmogCikDADcDACABQeAGaiAMKQMANwMAIAFB6AZqIAsoAgA2AgAgASABLwGQBjsBiAIgASABKQNo +NwPQBiAGQYAGahDEOwwMC0H4hNsAKAIAIgJBKGooAgAhDyACQSRqKAIAIQogAigCHCEMIAEgAkEg +aigCACIHBH8gAUEANgL4ECABIA82AvQQIAEgCjYC8BAgASAHNgLsEEEBIQggDAVBAAs2AugQIAFB +oApqIAFB6BBqQYjrwgAQ3SwgAUH0EGpCADcCACABQQE2AuwQIAFBuOvCADYC6BAgAUGkycIANgLw +ECABIAcgCEsEfyABIAg2AsgIIAEgDzYCxAggASAKNgLACCABIAc2ArwIIAwFQQALNgK4CCABQegN +aiIIIAFBuAhqIgdBiOvCABDdLCABQfwKakHA68IANgIAIAFB+ApqIAFB2AlqNgIAIAFBlMnCADYC +8AogASAGQaAHajYC2AkgASAINgL0CiABIAFB6BBqNgLsCiABIAFBoApqNgLoCiAHIAJBHGogAUHo +CmoQ8kFB+ITbACgCACAHEMQ0DAYLQQMhAgwECyAKIAFBgA9qQSQQzU8aIAZB4AVqQQM2AgAgAUGK +AmogBkGDBWotAAA6AAAgAUHYBmogBkGQBWopAgA3AwAgAUHgBmogBkGYBWopAgA3AwAgAUHoBmog +BkGgBWooAgA2AgAgASAGQYEFai8AADsBiAIgASAGQYgFaikCADcD0AYgBkGEBWooAgAhDyAGLQCA +BSEHDAkLIAcQlkAgAUHoEGoiAiAGQYgEakHYABDNTxogAUGAD2ogAhD/AiABKAKADyICRQ0BIAEo +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 +CyAJQaAEaiIEIAIQ4gFFBEAgBBCOQCAJQcgDahDVBgw8C0EGIQ8MPQsgCUG4BWooAgAiASgCAEED +Rw0IIAFBHGooAgAhBiABKAIYIQggASgCBCEHIAlB9QRqIg1BADoAACAJQfAEaiAHNgIAIAlB7ARq +IAlBwAVqKAIAIgw2AgAgCUHoBGogCUG8BWooAgAiCzYCACAJQeQEaiAGNgIAIAlB4ARqIAg2AgAL +IAlB9ARqQQA6AABBxJPbACgCAEECSw0BQayP2wAQ+z4iAUH/AXFFDQFBrI/bACgCACABEPUuRQ0B +QayP2wAoAgAiAUEoaigCACERIAFBJGooAgAhEyABKAIcIQ4gBSABQSBqKAIAIgMEfyAFQQA2AphA +IAUgETYClEAgBSATNgKQQCAFIAM2AoxAQQEhFCAOBUEACzYCiEAgBUGMPmogBUGIwABqQYT2wQAQ +2iwgBSADIBRLBH8gBSAUNgKwPiAFIBE2Aqw+IAUgEzYCqD4gBSADNgKkPiAOBUEACzYCoD4gBUHA +P2oiESAFQaA+aiIDQYT2wQAQ2iwgBUGcwABqQaTywQA2AgAgBUGYwABqIAVB8D9qNgIAIAVBpMHB +ADYCkEAgBUGwwMEANgKMQCAFIAdBIGo2AvA/IAUgETYClEAgBSAFQYw+ajYCiEAgAyABQRxqIAVB +iMAAahDyQSAQIAEgAxDEMiAJQQE6APQEIAlByARqKAIAQQJGDQIgCUEAOgD0BCAQQQhqKQMAISgg +EEEQaikDACEpIBApAwAhKiAFQbg+aiAQQRhqKQMAIis3AwAgBUGwPmogKTcDACAFQag+aiAoNwMA +IAlB+ARqICo3AwAgCUGABWogKDcDACAJQYgFaiApNwMAIAlBkAVqICs3AwAgCUGwBWpBADoAACAJ +QagFaiAGNgIAIAlBpAVqIAg2AgAgCUGgBWogDDYCACAJQZwFaiALNgIAIAlBmAVqIAc2AgAgBSAq +NwOgPiAJQbMFaiAFQY88ai0AADoAACAJQbEFaiAFLwCNPDsAAAsgBUGIwABqIAlB+ARqIgEgAhDo +KCAFKQOIQCIoQgNRDQcgBUHyPWogBUGTwABqLQAAOgAAIAVB6D1qIAVBoMAAaikDADcDACAFIAUv +AJFAOwHwPSAFIAUpA5hANwPgPSAFLQCQQCEHIAUoApRAIQYgBUGwPWogBUGowABqQTAQzU8aIAVB +kDxqIAVB2MAAakGgARDNTxogARDRSwwLCyAJQQE6APQEIAlB2ARqQQA2AgAgCUHIBGpBAjYCAAsg +CUGQBWoiAUEAOgAAIAlBiAVqIAY2AgAgCUGEBWogCDYCACAJQYAFaiAMNgIAIAlB/ARqIAs2AgAg +CUH4BGoiCCAHNgIAIAlBkQVqIAUvAI08OwAAIAlBkwVqIAVBjzxqLQAAOgAACyAJKAL4BCAJQfwE +aigCAEEoaigCAEHIAWoQk0oNASAFQZDAAGogCSgC+AQiBkEoaikDADcDACAFQZjAAGogBkEwaikD +ADcDACAFQaDAAGogBkE4aikDADcDACAFIAYpAyA3A4hAIAlBhAVqKQIAISggCSkC/AQhKUGwDxDC +OSAFQYjAAGpByAEQzU8iB0EAOgDiASAHIAZBQGs2AtwBIAcgKTcC1AEgByAoNwPIASAJQYwFaiAH +NgIACyAFQYjAAGogCUGMBWoiDCACENsBIAUpA4hAIihCA1ENASAFQYbAAGogBUGTwABqLQAAOgAA +IAVB+D9qIAVBoMAAaikDADcDACAFIAUvAJFAOwGEQCAFIAUpA5hANwPwPyAFLQCQQCEHIAUoApRA +IQYgBUHAP2ogBUGowABqQTAQzU8aIAVBoD5qIAVB2MAAakGgARDNTxogDBCeGwwGC0ICIShBAiEG +QQohB0HEk9sAKAIAQQNLDQVBuI/bABD7PiIMQf8BcUUNBUEAIQpBuI/bACgCACAMEPUuRQ0FQbiP +2wAoAgAiDEEcaiELIAxBIGooAgAiAwRAIAxBKGooAgAhDSAMQSRqKAIAIREgDCgCHCEKIAVBADYC +mEAgBSANNgKUQCAFIBE2ApBAIAUgAzYCjEALIAUgCjYCiEAgBUGMPmoiCiAFQYjAAGoiDEGU9sEA +ENosIAVBlMAAakIANwIAIAVBoMDBADYCiD4gBUEBNgKMQCAFQdj2wQA2AohAIAVBsMDBADYCkEAg +BSAMNgKEPiAFIAo2AoA+IAVB9D1qIgogCyAFQYA+ahDgQUG4j9sAKAIAIAoQxDQMBQsgAUEDOgAA +QQQMAgtBACEGQgIhKEEKIQdBxJPbACgCAEEDSw0FQdyP2wAQ+z4iAUH/AXFFDQVB3I/bACgCACAB +EPUuRQ0FQdyP2wAoAgAiAUEcaiEIQQAhDCABQSBqKAIAIgoEQCABQShqKAIAIQsgAUEkaigCACED +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 +uAZqIgQgAhDvKCAFLQCQKyIHQRNGDQMgBUHKO2ogBS0Akys6AAAgBUHgNmogBUGgK2opAwA3AwAg +BSAFLwCRKzsByDsgBSAFKQOYKzcD2DYgBSgClCshBiAFQaA+aiAFQagrakEwEM1PGiAEENVLDAYL +IAlBAToAsAYgCUGYBmpBADYCACAJQYgGakECNgIACyAJQcgGakEAOgAAIAlBxAZqIAg2AgAgCUHA +BmogBjYCACAJQbwGaiAHNgIAIAlBuAZqIAQ2AgAgCUHJBmogBUGIwABqQaciEM1PGgsgBUGQK2oh +GyACIQpBACEMQQAhBkEAIQ1CACEoQQAhDkEAIRFBACETQgAhKSMAQaDQAGsiAyQAIAlBuAZqIgQC +fwJAAkACQAJAAkACfwJAAkACQAJ/AkACQAJAAkACfwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAn8CfwJAAn8CQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AEEEBaw4FBAsBAgMAC0HEk9sAKAIAQQFL +DQxBrIzbABD7PiIBQf8BcUUNDEGsjNsAKAIAIAEQ9S5FDQxBrIzbACgCACIBQRxqIQYgAUEgaigC +ACIHBEAgAUEoaigCACEIIAFBJGooAgAhCyABKAIcIREgA0EANgKoBCADIAg2AqQEIAMgCzYCoAQg +AyAHNgKcBAsgAyARNgKYBCADQeg0aiIBIANBmARqIgdBkJfCABDaLCADQaQEakIANwIAIANBoMDB +ADYCsCogA0EBNgKcBCADQcSXwgA2ApgEIANBsMDBADYCoAQgAyAHNgKsKiADIAE2AqgqIANBwMUA +aiAGIANBqCpqEOBBIANBoCZqIANByMUAaigCADYCACADIAMpAsBFNwOYJkGsjNsAKAIAIANBmCZq +EMQ0DAwLIARBGGohHAJAAkAgBEHhAGoiES0AAEEBaw4EAQsPCgALIARB3ABqKAIAIQEgBEHYAGoo +AgAhCAwNC0HAwMEAQSNBjJLCABDmKwALIARBGGohEQJAAkACQCAEQfgFaiIcLQAAQQFrDgMCCwEA +CyAEQfQFaigCACEIIARB8AVqKAIAIQEMHgsgBEE4aiEVAkACQAJAAkAgBEGEAmoiEy0AAEEBaw4F +AQ0HAgMACyAEQTxqKAIAIQggBCgCOCEBDCELQcDAwQBBI0G4qMIAEOYrAAsgBEGIAmohFAJAIARB +5ANqIgwtAABBAWsOAwYLJgALIARB3ANqKAIAIQEgBEHYA2ooAgAhCAwkCyAEQYgCaiEMAkACQCAE +QfUDaiIHLQAAQQFrDgQBCy0uAAsgBEHwA2ooAgAhASAEQewDaigCACEUIARB6ANqKAIAIQgMKwtB +wMDBAEEjQdCvwgAQ5isAC0HAwMEAQSNBmLHCABDmKwALIARBGGohEQJAAkACQCAEQekAaiIcLQAA +QQFrDgQCCjoBAAsgBEHkAGooAgAhCCAEQeAAaigCACEBIARB3ABqKAIAIQYgBEHYAGooAgAhEww4 +CyAEQfAAaiENAkACQCAEQaIBaiIULQAAQQFrDgQGCgABPQsgBEGoAWooAgAhASAEQaQBaigCACEI +DEQLIARBiANqIRMCQAJAAkAgBEHgDWoiBi0AAEEBaw4GAQtMAmRlAAsgBEHQDWooAgAhFSAEQcwN +aigCACEBIARByA1qKAIAIQgMRgtBwMDBAEEjQYSdwgAQ5isACyAEQegNaiEVAkACQAJAIARBuBZq +IgwtAABBAWsOBAILAYcBAAsgBEH8EWooAgAhCCAEQfgRaigCACEBDEwLIARBwBZqIR8CQAJAAkAC +QCAEQYYYaiIaLQAAQQFrDgYCDQFaA4MBAAsgBEGAGGooAgAhByAEQfwXaigCACEBDE8LIARBiBhq +IRICQAJAAkAgBEGgGGoiDi0AAEEBaw4ECw4BAgALIARBkBhqKAIAIQggBEGMGGooAgAhByAEKAKI +GCEBDFELIARBqBhqKAIAIQEgBEGkGGooAgAhCAxRCyAEQcAYaigCACEBIARBvBhqKAIAIQgMUQtB +wMDBAEEjQfiIwgAQ5isACyAEQYgYaiEBAkACQCAEQZAhaiIdLQAAQQFrDgMJCwEACyAEQbQgaigC +ACEHIARBsCBqKAIAIQggBEGMIWooAgAhFiAEQYghaigCACEODFgLAkACQCAEQaMeaiIWLQAAQQFr +DgUBC2psbgALIARB7BhqKAIAIQcgBEHoGGooAgAhEiAEQeAYaigCACELIARB2BhqKAIAIQggBEGc +HmooAgAhDiAEQeQYaigCAAxZC0HAwMEAQSNBjILCABDmKwALQcDAwQBBI0Hcm8IAEOYrAAtBwMDB +AEEjQdigwgAQ5isAC0HAwMEAQSNBgJfCABDmKwALIARBwAJqKAIAIQEgBEG8AmooAgAhCAwbC0HA +wMEAQSNBxKfCABDmKwALQcDAwQBBI0HYoMIAEOYrAAtBwMDBAEEjQciHwgAQ5isAC0HAwMEAQSNB +3IHCABDmKwALIARB6ABqIRQCQAJAIARBwAVqIgctAABBAWsOAwACAQkLQcDAwQBBI0GMksIAEOYr +AAsgBEGIAWohBgJAAkACQCAEQdUBaiIOLQAAQQFrDgQBAwwCAAsgBEHQAWooAgAhASAEQcwBaigC +ACEIIARByAFqKAIAIRMMCgtBwMDBAEEjQfCPwgAQ5isACyAEQdgBaiENIARBlQVqIhotAABBAWsO +AwEADQwLAAtBwMDBAEEjQfCPwgAQ5isACwJAQQIgBCgCACIIKALEASIBKAIAQQZrIgYgBkEFTxtB +AWsOBBEsMjMACyADQcDOAGogCEHYAWopAwA3AwAgA0HIzgBqIAhB4AFqKQMANwMAIANB0M4AaiAI +QegBaikDADcDACADIAhB0AFqKQMANwO4TiAEKAIEIQggBEEYaiIcIANBuM4AakHAABDNTxogBEHh +AGoiEUEAOgAAIARB3ABqIAFBBGoiATYCACAEQdgAaiAINgIACyAEQeAAakEAOgAAIANBwMsAaiIG +IBxBGGopAAA3AwAgA0G4ywBqIgcgHEEQaikAADcDACADQbDLAGoiCyAcQQhqKQAANwMAIAMgHCkA +ADcDqEtBxJPbACgCAEECSw0BQYiM2wAQ+z4iE0H/AXFFDQFBiIzbACgCACATEPUuRQ0BQYiM2wAo +AgAiBkEcaiEHIAZBIGooAgAiCwRAIAZBKGooAgAhEyAGQSRqKAIAIQwgBigCHCEVIANBADYCqAQg +AyATNgKkBCADIAw2AqAEIAMgCzYCnAQLIAMgFTYCmAQgA0GoKmoiDSADQZgEaiILQYySwgAQ2iwg +CyABEM49IANB9PnBADYCyEUgAyADQfDMAGo2AsRFIAMgDTYCwEUgAyALNgLwTCADQZgmaiINIAcg +A0HAxQBqEOBBIARBOGoiByAGIA0QxDIgBEEBOgBgIAsQvz8gA0HwNGogA0GwywBqKQMANwMAIANB ++DRqIANBuMsAaikDADcDACADQYA1aiADQcDLAGopAwA3AwAgAyADKQOoSzcD6DQgBEFAaygCAEEC +Rg0CIARBADoAYCADQaAEaiAHQQhqKQMANwMAIANBqARqIAdBEGopAwA3AwAgA0GwBGogB0EYaikD +ADcDACADIAcpAwA3A5gEIANBuARqIANB6DRqQdAEEM1PGiAEQegAaiADQZgEakHwBBDNTxogBEHg +BWpBADoAACAEQdwFaiAINgIAIARB2AVqIAE2AgAgBEHhBWogAygA+AM2AAAgBEHkBWogA0H7A2oo +AAA2AAALIANBqCpqIARB6ABqIgYgChDrKCADKAKoKiIKQQJGDTEgA0HCwQBqIANBsypqLQAAOgAA +IANB4D9qIANB1CpqKAIANgIAIANByMIAaiADQfAqaigCADYCACADQcDCAGogA0HoKmopAwA3AwAg +A0G4wgBqIANB4CpqKQMANwMAIAMgAy8AsSo7AcBBIAMgAykCzCo3A9g/IAMgAykD2Co3A7BCIAMt +ALAqIREgAygCrCohEiADLQC0KiETIAMtALUqIRUgAy8BtiohDCADKAK4KiEIIAMpArwqISggAykC +xCohKSADQbLBAGogA0H3KmotAAA6AAAgAyADLwD1KjsBsEEgAy0A9CohASAGEMxLDKYBCyAEQQE6 +AGAgBEHQAGpBADYCACAEQUBrQQI2AgAgA0HwNGogCykDADcDACADQfg0aiAHKQMANwMAIANBgDVq +IAYpAwA3AwAgAyADKQOoSzcD6DQLIARB6ABqIhQgA0HoNGpB0AQQzU8aIARBwAVqIgdBADoAACAE +QbwFaiAINgIAIARBuAVqIAE2AgAgBEHBBWogAygA+AM2AAAgBEHEBWogA0H7A2ooAAA2AAALIARB +uAVqKAIAIggoAgBBA0cNCCADQaAmaiAUQQhqKQMANwMAIANBqCZqIBRBEGopAwA3AwAgA0GwJmog +FEEYaikDADcDACADIBQpAwA3A5gmIARBvAVqKAIAIRMgCCgCBCEBIARBiAFqIgYgA0GYJmpBwAAQ +zU8aIARB1QFqIg5BADoAACAEQdABaiABNgIAIARBzAFqIAg2AgAgBEHIAWogEzYCAAsgBEHUAWpB +ADoAACADQYjNAGoiCyAGQRhqKQAANwMAIANBgM0AaiINIAZBEGopAAA3AwAgA0H4zABqIgwgBkEI +aikAADcDACADIAYpAAA3A/BMQcST2wAoAgBBAksNAUHYi9sAEPs+IhVB/wFxRQ0BQdiL2wAoAgAg +FRD1LkUNAUHYi9sAKAIAIgtBKGooAgAhDSALQSRqKAIAIRIgCygCHCEVIAMgC0EgaigCACIMBH8g +A0EANgKoBCADIA02AqQEIAMgEjYCoAQgAyAMNgKcBEEBIR8gFQVBAAs2ApgEIANBgNAAaiADQZgE +akHwj8IAENosIAMgAUEMajYCiEsgAyAMIB9LBH8gAyAfNgLQRSADIA02AsxFIAMgEjYCyEUgAyAM +NgLERSAVBUEACzYCwEUgA0GYwABqIg0gA0HAxQBqIhVB8I/CABDaLCADQawEakGkwcEANgIAIANB +qARqIgxBsMDBADYCACADQYCQwgA2AqAEIAMgDTYCpAQgAyADQYjLAGo2ApwEIAMgA0GA0ABqNgKY +BCAVIAtBHGogA0GYBGoQ8kEgBEGoAWoiDSALIBUQxDIgBEEBOgDUASADQbAqaiADQfjMAGopAwA3 +AwAgA0G4KmogA0GAzQBqKQMANwMAIANBwCpqIANBiM0AaikDADcDACADIAMpA/BMNwOoKiAEQbAB +aigCAEECRg0CIARBADoA1AEgA0GgBGogDUEIaikDADcDACAMIA1BEGopAwA3AwAgA0GwBGogDUEY +aikDADcDACADIA0pAwA3A5gEIANBuARqIANBqCpqQbADEM1PGiAEQdgBaiADQZgEakHQAxDNTxog +BEG1BWpBADoAACAEQbAFaiATNgIAIARBrAVqIAE2AgAgBEGoBWogCDYCAAsgA0HAxQBqIARB2AFq +IgsgChDpKCADKALARSIKQQJGDQcgA0HqwgBqIANBy8UAai0AADoAACADQbDDAGogA0HsxQBqKAIA +NgIAIANBiMUAaiADQYjGAGooAgA2AgAgA0GAxQBqIANBgMYAaikDADcDACADQfjEAGogA0H4xQBq +KQMANwMAIAMgAy8AyUU7AehCIAMgAykC5EU3A6hDIAMgAykD8EU3A/BEIAMtAMhFIREgAygCxEUh +EiADLQDMRSETIAMtAM1FIRUgAy8BzkUhDCADKALQRSEIIAMpAtRFISggAykC3EUhKSADQZLCAGog +A0GPxgBqLQAAOgAAIAMgAy8AjUY7AZBCIAMtAIxGIQEgCxDNSwyfAQsgBEEBOgDUASAEQcABakEA +NgIAIARBsAFqQQI2AgAgA0GwKmogDCkDADcDACADQbgqaiANKQMANwMAIANBwCpqIAspAwA3AwAg +AyADKQPwTDcDqCoLIARB2AFqIg0gA0GoKmpBsAMQzU8aIARBlQVqIhpBADoAACAEQZAFaiATNgIA +IARBjAVqIAE2AgAgBEGIBWogCDYCAAsgBEGUBWpBADoAACADQdjFAGogDUEYaikAADcDACADQdDF +AGogDUEQaikAADcDACADQcjFAGogDUEIaikAADcDACADIA0pAAA3A8BFIANBmARqIgsgBEGIBWoo +AgAiAUEoakHAARDNTxogBEGMBWooAgAiCCgCDCETIAhBEGooAgAhFSADQejKAGoiFiABEM49IANB +BTYCgFAgBEHwA2oiASADQcDFAGogCyATIBUgCEEUaiAWIANBgNAAahCbBSAEQbgEai0AAEECRg0B +IARBAToAlAUgBEG8BGogAUHMABDNTyEBIANBmARqIggQ+AsgAyABENQ+IAhB4P7BAEEKIAMoAgAg +AygCBBCxERogCBDZIiAEQZAFaigCABD4TSEIIARBhQJqQQA6AAAgBEGAAmogATYCACAEQfwBaiAI +NgIACyADQZgEaiAEQfgBaiIBIAoQ8wIgAy0AmAQiE0EMRw0BIBpBAzoAAEEEDAQLIANBkNAAaiAB +QRBqKAIANgIAIANBiNAAaiABQQhqKQIANwMAIAMgASkCADcDgFAgA0GYBGoiARD4CyABQeD+wQAg +BCgCjAUQ5xEQ2SJBxJPbACgCAEEDSw2YAUH8i9sAEPs+IghB/wFxRQ2YAUEAIQpB/IvbACgCACAI +EPUuRQ2YAUH8i9sAKAIAIghBHGohESAIQSBqKAIAIgEEQCAIQShqKAIAIRMgCEEkaigCACEVIAgo +AhwhCiADQQA2AqgEIAMgEzYCpAQgAyAVNgKgBCADIAE2ApwECyADIAo2ApgEIANBwMUAaiIBIANB +mARqIgpBkJDCABDaLCADQaQEakIBNwIAIANBoMDBADYC8EogA0EBNgKcBCADQeSQwgA2ApgEIANB +zgE2ApQlIAMgCjYC7EogAyABNgLoSiADIANBkCVqNgKgBCADIANBgNAAajYCkCUgA0GwxABqIgEg +ESADQejKAGoQ4EFB/IvbACgCACABEMQ0DJgBCyADQZjEAGoiCiADQbgEaigCADYCACADIAMpArAE +NwOQRCADKQKoBCEpIAMpAqAEISggAygCnAQhCCADLwGaBCEMIAMtAJkEIRUgARDuLyATQQtGBEBB +xJPbACgCACEIAkAgFUH/AXFBAUcEQAJAIAhBA0sNAEHwi9sAEPs+IghB/wFxRQ0AQQAhCkHwi9sA +KAIAIAgQ9S5FDQBB8IvbACgCACIIQRxqIREgCEEgaigCACIBBEAgCEEoaigCACETIAhBJGooAgAh +FSAIKAIcIQogA0EANgKoBCADIBM2AqQEIAMgFTYCoAQgAyABNgKcBAsgAyAKNgKYBCADQcDFAGoi +ASADQZgEaiIKQeyQwgAQ2iwgA0GkBGpCADcCACADQaDAwQA2AohQIANBATYCnAQgA0HMkcIANgKY +BCADQbDAwQA2AqAEIAMgCjYChFAgAyABNgKAUCADQejKAGoiASARIANBgNAAahDgQUHwi9sAKAIA +IAEQxDQLQQIhASAEQZQFai0AAA0BDJkBCyAIQQJLDZcBQeSL2wAQ+z4iAUH/AXFFDZcBQQAhCkHk +i9sAKAIAIAEQ9S5FDZcBQeSL2wAoAgAiAUEcaiEIIAFBIGooAgAiDARAIAFBKGooAgAhCyABQSRq +KAIAIREgASgCHCEKIANBADYCqAQgAyALNgKkBCADIBE2AqAEIAMgDDYCnAQLIAMgCjYCmAQgA0HA +xQBqIgEgA0GYBGoiCkHUkcIAENosIANBpARqQgA3AgAgA0GgwMEANgKIUCADQQE2ApwEIANBhJLC +ADYCmAQgA0GwwMEANgKgBCADIAo2AoRQIAMgATYCgFAgA0HoygBqIgEgCCADQYDQAGoQ4EFB5Ivb +ACgCACABEMQ0DJcBCyAEQbwEahDhEgyXAQsgA0GQywBqIAooAgA2AgAgAyADKQOQRDcDiEsgBEG8 +BGoQ4RIgBEGUBWpBADoAAEEOIRFBAQyYAQtBACEKQQIhAUHEk9sAKAIAQQNLDZkBQZSM2wAQ+z4i +CEH/AXFFDZkBQZSM2wAoAgAgCBD1LkUNmQFBlIzbACgCACIIQRxqIQZBACERIAhBIGooAgAiCwRA +IAhBKGooAgAhEyAIQSRqKAIAIRUgCCgCHCERIANBADYCqAQgAyATNgKkBCADIBU2AqAEIAMgCzYC +nAQLIAMgETYCmAQgA0GoKmoiCyADQZgEaiINQZySwgAQ2iwgA0GkBGpCADcCACADQaDAwQA2AshF +IANBATYCnAQgA0HgksIANgKYBCADQbDAwQA2AqAEIAMgDTYCxEUgAyALNgLARSADQZgmaiILIAYg +A0HAxQBqEOBBQZSM2wAoAgAgCxDENAyZAQtBAwshASAOIAE6AAAgB0EDOgAAQQQMJAsgA0GgBGog +CEHYAWopAwA3AwAgA0GoBGogCEHgAWopAwA3AwAgA0GwBGogCEHoAWopAwA3AwAgAyAIQdABaikD +ADcDmAQgBCgCBCgCACEGIARBGGoiESADQZgEakHYBRDNTxogBEH4BWoiHEEAOgAAIARB9AVqIAFB +BGoiCDYCACAEQfAFaiAGQZABaiIBNgIACyADQcjCAGogEUEYaiIHKQAANwMAIANBwMIAaiARQRBq +IgYpAAA3AwAgA0G4wgBqIBFBCGoiDSkAADcDACADIBEpAAA3A7BCIAgoAgBBA0cNGCAEQTxqIAg2 +AgAgBEE4aiIVIAE2AgAgBEFAayARKQMANwMAIARBhAJqIhNBADoAACAEQcgAaiANKQMANwMAIARB +0ABqIAYpAwA3AwAgBEHYAGogBykDADcDAAsgBEHgAGogATYCACAEQYQBaiAINgIAIARB5ABqIgEg +BEFAaykCADcCACAEQewAaiAEQcgAaikCADcCACAEQfQAaiAEQdAAaikCADcCACAEQfwAaiAEQdgA +aikCADcCACADQeg0aiAIEO8SIAMoAug0QYCAgIB4Rg0BIARBiAFqIANB6DRqIgFBNBDNTyEGIANB +6ABqIAQoAmAoAgBBCGoQvywgAygCaCEHIAMoAmwhCCADQeAAaiAEQZQBahDxLiADQYQ1aiAEQaQB +aikCADcCACADQYw1aiAEQawBaikCADcCACADQZQ1aiAEQbQBaikCADcCACADIARBnAFqKQIANwL8 +NCADKQNgISggASAGEMUeIAMgKDcC9DQgA0GoKmoiBiABQTQQzU8aIANB2ABqIAcgBEGIAmogBkE0 +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 +AyAONgLwNCADIAc2Auw0QQEhDCAUBUEACzYC6DQgA0HwzABqIANB6DRqQdigwgAQ2iwgAyAHIAxN +BH9BAAUgAyANNgL0NCADIA42AvA0IAMgBzYC7DQgAyAMNgL4NCAMQQFqIQwgFAs2Aug0IANBuM4A +aiADQeg0akHYoMIAENosIAMgAUEsajYCmEAgAyAHIAxLBH8gAyANNgL0NCADIA42AvA0IAMgBzYC +7DQgAyAMNgL4NCAMQQFqIQwgFAVBAAs2Aug0IANBmCZqIANB6DRqQdigwgAQ2iwgAyABQRhqNgKo +SyADIAcgDEsEfyADIAw2ArgqIAMgDTYCtCogAyAONgKwKiADIAc2AqwqIBQFQQALNgKoKiADQcDF +AGoiByADQagqaiIMQdigwgAQ2iwgA0GUNWpBpMHBADYCACADQZA1aiINQbDAwQA2AgAgA0GINWpB +jI3CADYCACADQfw0akGgmsIANgIAIANBhDVqIANBqMsAajYCACADQfg0aiIOIANBmMAAajYCACAD +QaTBwQA2AvA0IANBsMDBADYC7DQgAyAHNgKMNSADIANBmCZqNgKANSADIANBuM4AajYC9DQgAyAD +QfDMAGo2Aug0IAwgC0EcaiADQeg0ahDWQSAEQThqIgcgCyAMEMQyIARBAToAaCADQZglaiADQYAE +aiIMKQMANwMAIANBoCVqIANBiARqIgspAwA3AwAgA0GoJWogA0GQBGopAwA3AwAgAyADKQP4AzcD +kCUgBEFAaygCAEECRg0CIARBADoAaCADQfA0aiAHQQhqKQMANwMAIA4gB0EQaikDADcDACADQYA1 +aiAHQRhqKQMANwMAIA0gDCkDADcDACADQZg1aiALKQMANwMAIANBoDVqIANBkARqKQMANwMAIAMg +AykD+AM3A4g1IAMgBykDADcD6DQgBEHwAGogA0HoNGpBwAAQzU8aIARBwgFqQQA6AAAgBEG8AWog +CDYCACAEQbgBaiAGNgIAIARBtAFqIBM2AgAgBEGwAWogATYCACAEQcMBaiADQZgEakH1IBDNTxoL +IANBqCpqIARB8ABqIgYgChDsKCADLQCoKiIBQQxGDQggA0HIJWogA0HIKmooAgA2AgAgAyADKQLA +KjcDwCUgAykCuCohKSADKQKwKiEoIAMoAqwqIQggAy8AqSogAy0AqyogBhDOS0EQdHIhCgxpCyAE +QQE6AGggBEHQAGpBADYCACAEQUBrQQI2AgAgA0GYJWogDSkDADcDACADQaAlaiALKQMANwMAIANB +qCVqIAcpAwA3AwAgAyADKQP4AzcDkCULIARB8ABqIg0gAykDkCU3AwAgBEGiAWoiFEEAOgAAIARB +nAFqIAg2AgAgBEGYAWogBjYCACAEQZQBaiATNgIAIARBkAFqIAE2AgAgBEGIAWogA0GoJWopAwA3 +AwAgBEGAAWogA0GgJWopAwA3AwAgBEH4AGogA0GYJWopAwA3AwAgBEGjAWogA0GYBGpB9SAQzU8a +CyAEQaABakEAOwEAQcST2wAoAgBBAUsNBkGUgNsAEPs+IgZB/wFxRQ0GQQAhAUGUgNsAKAIAIAYQ +9S5FDQZBlIDbACgCACIGQRxqIQcgBkEgaigCACIIBEAgBkEoaigCACEMIAZBJGooAgAhCyAGKAIc +IQEgA0EANgL4NCADIAw2AvQ0IAMgCzYC8DQgAyAINgLsNAsgAyABNgLoNCADQagqaiIBIANB6DRq +IgZB6KDCABDaLCADQfQ0akIANwIAIANBoMDBADYCyEUgA0EBNgLsNCADQZihwgA2Aug0IANBsMDB +ADYC8DQgAyAGNgLERSADIAE2AsBFIANBuM4AaiAHIANBwMUAahDgQSADQfjMAGogA0HAzgBqKAIA +NgIAIAMgAykCuE43A/BMQZSA2wAoAgAgA0HwzABqEMQ0DAYLQRIhEUHEk9sAKAIAQQFLDXhBuIzb +ABD7PiIIQf8BcUUNeEEAIQpBuIzbACgCACAIEPUuRQ14QbiM2wAoAgAiCEEcaiEBIAhBIGooAgAi +BgRAIAhBKGooAgAhByAIQSRqKAIAIQwgCCgCHCEKIANBADYCqAQgAyAHNgKkBCADIAw2AqAEIAMg +BjYCnAQLIAMgCjYCmAQgA0HoNGoiBiADQZgEaiIHQcyXwgAQ2iwgA0GkBGpCADcCACADQaDAwQA2 +ArAqIANBATYCnAQgA0H4l8IANgKYBCADQbDAwQA2AqAEIAMgBzYCrCogAyAGNgKoKiADQcDFAGoi +BiABIANBqCpqEOBBQbiM2wAoAgAgBhDENAx4C0ESIRFBxJPbACgCAEEDSw13QcSM2wAQ+z4iCEH/ +AXFFDXdBACEKQcSM2wAoAgAgCBD1LkUNd0HEjNsAKAIAIghBHGohASAIQSBqKAIAIgYEQCAIQShq +KAIAIQcgCEEkaigCACEMIAgoAhwhCiADQQA2AqgEIAMgBzYCpAQgAyAMNgKgBCADIAY2ApwECyAD +IAo2ApgEIANB6DRqIgYgA0GYBGoiB0GAmMIAENosIANBpARqQgA3AgAgA0GgwMEANgKwKiADQQE2 +ApwEIANBwJjCADYCmAQgA0GwwMEANgKgBCADIAc2AqwqIAMgBjYCqCogA0HAxQBqIgYgASADQagq +ahDgQUHEjNsAKAIAIAYQxDQMdwtBAwshASARIAE6AAAgG0ETOgAAQQMMdgtBAwxmC0EDDF8LIARB +kAFqKAIAIQEgA0HoAWogBEGUAWooAgAoAgBBCGoQvywgA0HgAWogAygC6AEgASgCGCABQRxqKAIA +IAMoAuwBKAJoEQUAIAMoAuABIQggBEGoAWogAygC5AEiATYCACAEQaQBaiAINgIACyADQeg0aiAI +IAogASgCDBEDACADKALoNCIBQYOAgIB4Rg0CIANB8CVqIANB7DRqQSQQzU8aIANB6CVqIgYgA0Go +NWopAgA3AwAgA0HgJWoiCCADQaA1aikCADcDACADQdglaiIMIANBmDVqKQIANwMAIAMgAykCkDU3 +A9AlIARBpAFqIgcQmTYgAUGCgICAeEYNAyAEIAE2AvgBIARB/AFqIANB8CVqQSQQzU8aIARBoQFq +QQE6AAAgBEG4AmogBikDADcCACAEQbACaiAIKQMANwIAIARBqAJqIAwpAwA3AgAgBEGgAmogAykD +0CU3AgAgBEGwAWogBEH4AWoiAUHIABDNTygCAEGBgICAeEYNASAEQaABakEBOwEAIARBwAJqIAFB +yAAQzU8iASgCAEGAgICAeEYEQCADQeg0aiIGEPgLIAZB/KHCACAEQcQCaiIIEOkRENkiIAcgCBDt +KyADQZgmaiIMIAcQ7SsgA0GkJmogBEGQAWooAgAQ6wkgBEEAOgCgASADQeApaiABQcgAEM1PGiAD +QYA5aiANQQhqKQMANwMAIANBiDlqIA1BEGopAwA3AwAgA0GQOWogDUEYaikDADcDACADIA0pAwA3 +A/g4IARBlAFqKAIAIQggBEGYAWooAgAhASAEQZwBaigCACEVIAYgDEGQBBDNTxogA0GoKmoiByAG +QcAKEM1PGiAEQYgDaiITIAdBwAoQzU8aIARB4A1qIgZBADoAACAEQdANaiAVNgIAIARBzA1qIAE2 +AgAgBEHIDWogCDYCAAwBC0EFIQgCQEHEk9sAKAIAQQNLDQBBoIDbABD7PiIGQf8BcUUNAEEAIQFB +oIDbACgCACAGEPUuRQ0AQaCA2wAoAgAiBkEcaiEHIAZBIGooAgAiCgRAIAZBKGooAgAhDCAGQSRq +KAIAIQsgBigCHCEBIANBADYC+DQgAyAMNgL0NCADIAs2AvA0IAMgCjYC7DQLIAMgATYC6DQgA0Go +KmoiASADQeg0aiIGQaChwgAQ2iwgA0H0NGpCADcCACADQaDAwQA2AshFIANBATYC7DQgA0H0ocIA +NgLoNCADQbDAwQA2AvA0IAMgBjYCxEUgAyABNgLARSADQbjOAGoiASAHIANBwMUAahDgQUGggNsA +KAIAIAEQxDQLDFkLIARB2A1qIAE2AgAgBEHUDWogCDYCACAEQeENakGAAjsAACADQeA/aiIIIARB +oAdqKQAANwMAIANB6D9qIgwgBEGoB2opAAA3AwAgA0HwP2oiCyAEQbAHaikAADcDACADIARBmAdq +KQAANwPYPyAEQbgHaiATQZAEEM1PGiAEQdwNaiAVNgIAQcST2wAoAgBBAUsNA0Hk/9oAEPs+IgFB +/wFxRQ0DQQAhB0Hk/9oAKAIAIAEQ9S5FDQNB5P/aACgCACIBQRxqIQ4gAUEgaigCACIVBEAgAUEo +aigCACESIAFBJGooAgAhGiABKAIcIQcgA0EANgL4NCADIBI2AvQ0IAMgGjYC8DQgAyAVNgLsNAsg +AyAHNgLoNCADQcDFAGoiASADQeg0aiIHQbScwgAQ2iwgA0H0NGpCADcCACADQaDAwQA2AsBOIANB +ATYC7DQgA0H8nMIANgLoNCADQbDAwQA2AvA0IAMgBzYCvE4gAyABNgK4TiADQfDMAGogDiADQbjO +AGoQ4EEgA0GwywBqIANB+MwAaigCADYCACADIAMpAvBMNwOoS0Hk/9oAKAIAIANBqMsAahDENAwD +C0EFIQgCQEHEk9sAKAIAQQNLDQBBrIDbABD7PiIGQf8BcUUNAEEAIQFBrIDbACgCACAGEPUuRQ0A +QayA2wAoAgAiBkEcaiEHIAZBIGooAgAiCgRAIAZBKGooAgAhDCAGQSRqKAIAIQsgBigCHCEBIANB +ADYC+DQgAyAMNgL0NCADIAs2AvA0IAMgCjYC7DQLIAMgATYC6DQgA0GoKmoiASADQeg0aiIGQYii +wgAQ2iwgA0H0NGpCADcCACADQaDAwQA2AshFIANBATYC7DQgA0HcosIANgLoNCADQbDAwQA2AvA0 +IAMgBjYCxEUgAyABNgLARSADQbjOAGoiASAHIANBwMUAahDgQUGsgNsAKAIAIAEQxDQLDFgLQQMh +CAxVCyAEQfwBaiADQfAlakEkEM1PIARBgoCAgHg2AvgBIANB0D9qIARBnAJqKAIANgIAIAMgBEGU +AmopAgA3A8g/IARB/QFqLwAAIARB/wFqLQAAQRB0ciEKIARBjAJqKQIAISkgBEGEAmopAgAhKCAE +QYACaigCACEILQAAIQEMVwsgBCgC1A0oAgAhASAEQegNaiAEQfAHaikDADcDACAEQfANaiADKQPY +PzcAACAEQfgNaiAIKQMANwAAIARBgA5qIAwpAwA3AAAgBEGIDmogCykDADcAACAEQZQPakEAOgAA +IARBkA9qIAFBCGo2AgALIANB6DRqIARB6A1qIhUgChD5ASADKALINSIBQQRGDREgA0GYwABqIANB +6DRqQeAAEM1PGiADQZDAAGoiCCADQeQ1aigCADYCACADQYjAAGoiDCADQdw1aikCADcDACADQYBA +ayILIANB1DVqKQIANwMAIAMgAykCzDU3A/g/IBUQ+z8gBEHIDGohByABQQNGDRAgByADQZjAAGpB +4AAQzU8hByAEQeENakEBOgAAIARBqA1qIAE2AgAgBEHEDWogCCgCADYCACAEQbwNaiAMKQMANwIA +IARBtA1qIAspAwA3AgAgBEGsDWogAykD+D83AgAgBEHIC2ogB0GAARDNTxogBEGoDGooAgBBAkYN +DyAEQQA6AOENIARBmCFqIAdBgAEQzU8hCCADQdgBaiAEQcghahCxRiADIAMpA9gBNwLARSADQdAB +aiAEQdQNaigCABDCRCADIAMpA9ABNwLoNAJAIANBwMUAaiADQeg0ahCXQUUNACAIENtARQ0AIARB +4g1qQQA6AAAgBEHcDWooAgAhCCAEKALUDSEBIBUgBEG4B2pBkAQQzU8aIARBuBZqIgxBADoAACAE +QfwRaiAINgIAIARB+BFqIAE2AgAMAQtBxJPbACgCAEEDSw1MQfD/2gAQ+z4iCEH/AXFFDUxBACEK +QfD/2gAoAgAgCBD1LkUNTEHw/9oAKAIAIghBHGohASAIQSBqKAIAIgcEQCAIQShqKAIAIQwgCEEk +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 +gFA3AgAgBEHEHWogJSgCADYCACAEQcgdaiAiQSQQzU8aIARB7B1qICFBJBDNTxogBEGYHmogDigC +ADYCACAEQZAeaiADKQOISzcDACAEQZweaiADKQPoSjcCACAEQaQeaiASKAIANgIAIARBqB5qIAMp +A4hDNwMAIARBsB5qIBYoAgA2AgAgBEG0HmogAykD0EQ3AgAgBEG8HmogHSgCADYCACAEQcgeaiAg +KAIANgIAIARBwB5qIAMpA5BCNwMAIARB2B5qICY2AgAgBEHcHmpBADoAACAEQdQeaiAkKAIANgIA +IARBzB5qIAMpA4BENwIACyADQeg0aiAEQYgYaiIBIAoQ/BAgAy0A6DQiCEEMRwRAIANBmMQAaiIH +IANB9DRqKQIANwMAIANBoMQAaiILIANB/DRqKQIANwMAIANBqMQAaiISIANBhDVqKQIANwMAIAMg +AykC7DQ3A5BEIAMvAOk0IQ4gAy0A6zQhFiABEPk8IAhBC0YNAyAOIBZBEHRyIQ4gA0HIxABqIBIp +AwA3AwAgA0HAxABqIAspAwA3AwAgA0G4xABqIAcpAwA3AwAgAyADKQOQRDcDsEQMAQtBBgwOCyAE +QfgXahCaTCAEQYUYakEAOgAACyAEQYQYakEAOgAADAILIARB+BdqEJpMIARBhRhqQQA6AAAgBEHU +F2otAABBAkYNACAEQYQYai0AAEUNACAEQaAXahDdPwsgBEGEGGpBADoAAEENIQgLIANB6MEAaiIB +IANByMQAaikDADcDACADQeDBAGoiCyADQcDEAGopAwA3AwAgA0HYwQBqIhIgA0G4xABqKQMANwMA +IAMgAykDsEQ3A9BBIBpBAToAACAIQf8BcUEORg0KIARBlxZqIA5BEHY6AAAgBEGVFmogDjsAACAE +QZQWaiIHIAg6AAAgBEG6FmpBAToAACAEQZgWaiADKQPQQTcCACAEQaAWaiASKQMANwIAIARBqBZq +IAspAwA3AgAgBEGwFmogASkDADcCACAfEKscIActAAAiAUENRw0BIAQgBEHMFWo2AsAWIARBxBZq +IAMpAsBFNwIAIARB4BZqQQA6AAAgBEG8FmogBEGAEmooAgA2AgAgBEHMFmogA0HIxQBqKQIANwIA +IARB1BZqIANB0MUAaikCADcCACAEQdwWaiADQdjFAGooAgA2AgALIANB6DRqIARBvBZqIgcgChDc +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 +AkACQCABQf8BcSIHQQtGBEAgAyAoNwLgAiADIAg2AtwCIANBmARqIAQoAgBByAFqEPNHIAMoApgE +IghBkICAgHhHDQIgA0HoNGoiBiADQZgEakEEckHAABDNTxogBhD3QiADQfA0aiADQeQCaigCADYC +ACADIAMpAtwCNwPoNCADQagqaiAGENgTIAMoAqgqIggNASADKAKsKiEKIANB6DRqEIhAQQshEQwV +CyADQfADaiAGKAIANgIAIAMgAykDuAM3A+gDIApBCHQgB3IMCwsgAygCrCohCiAEKAIAQcgBahD6 +PiAEKAIAIgZBzAFqIAo2AgAgBkHIAWogCDYCACADQeg0ahCIQAwSCyADQdwCahD3QiAIQZOAgIB4 +RgRAIANBmARqQQRyENo0DBILIANBmARqENUGDBELIANBkMMAaiAEQbwDaigBADYCACADIARBtANq +KQEANwOIQyAEQawDaikCACEpIARBpANqKQIAISggBEGgA2ooAgAhCCAEQZ4Dai8BACENIARBnQNq +LQAAIQYgBEGcA2otAAAhASADQZgmaiAEQcADakEkEM1PGiADQco/aiAEQecDai0AADoAACADIARB +5QNqLwAAOwHIPyAEQeQDai0AACEUCyAEQfQDakEAOgAACyADQYAEaiIKIANBkMMAaigCADYCACAD +IAMpA4hDNwP4AyADQfDMAGogA0GYJmpBJBDNTxogA0GqP2oiCyADQco/ai0AADoAACADIAMvAcg/ +OwGoPyAHQQE6AAAgFEH/AXFBBEYNACADQZglaiAKKAIANgIAIAMgAykD+AM3A5AlIANBuM4AaiAD +QfDMAGpBJBDNTxogA0G6P2ogCy0AADoAACADIAMvAag/OwG4PyAMEPIvDAILQQULIQEgEyABOgAA +IBxBAzoAACAbQRM6AABBBAwOCyAEQbwBahDvPyAEQYgBahCpRwwBCyAEQYgBahCpRwsgA0GYwgBq +IgcgA0GYJWooAgA2AgAgAyADKQOQJTcDkEIgA0GYwABqIgogA0G4zgBqQSQQzU8aIANBsiVqIgwg +A0G6P2otAAA6AAAgAyADLwG4PzsBsCUgE0EBOgAAIANB8MIAaiAHKAIANgIAIAMgAykDkEI3A+hC +IANBqMsAaiAKQSQQzU8aIANBwiVqIAwtAAA6AAAgAyADLwGwJTsBwCUgFRDuJAsgA0GgwQBqIgog +A0HwwgBqKAIANgIAIAMgAykD6EI3A5hBIANB8MQAaiIMIANBqMsAakEkEM1PGiADQaoDaiILIANB +wiVqLQAAOgAAIAMgAy8BwCU7AagDIBxBAToAACADQdgCaiIHIAooAgA2AgAgAyADKQOYQTcD0AIg +A0GsAmogDEEkEM1PGiADQaoCaiIMIAstAAA6AAAgAyADLwGoAzsBqAIgERCJQCAUQf8BcUEDRwRA +IAQoAgBB+ABqEO5CIAQoAgAiCiABOgB4IApBiAFqICk3AwAgCkGAAWogKDcDACAKQfwAaiAINgIA +IApB+gBqIA07AQAgCkH5AGogBjoAACAKQZABaiADKQPQAjcBACAKQZgBaiAHKAIANgEAIApBnAFq +IANBrAJqQSQQzU8aIApBwAFqIBQ6AAAgCkHBAWogAy8BqAI7AAAgCkHDAWogDC0AADoAAAwJCyAD +QfADaiAHKAIANgIAIAMgAykD0AI3A+gDIAFB/wFxIAZB/wFxQQh0ciANQRB0cgshCkEOIREMCAsg +A0H6P2ogBEHDBGotAAA6AAAgA0GQywBqIARB5ARqKAEANgIAIANBsMAAaiAEQYAFaigCADYCACAD +QajAAGogBEH4BGopAwA3AwAgA0GgwABqIARB8ARqKQMANwMAIAMgBEHBBGovAAA7Afg/IAMgBEHc +BGopAQA3A4hLIAMgBEHoBGopAwA3A5hAIARBwARqLQAAIREgBEG8BGooAgAhEiAEQcQEai0AACET +IARBxQRqLQAAIRUgBEHGBGovAQAhDCAEQcgEaigCACEIIARBzARqKQIAISggBEHUBGopAgAhKSAD +QdLEAGogBEGHBWotAAA6AAAgAyAEQYUFai8AADsB0EQgBEGEBWotAAAhAQsgBEGUBWpBADoAAEEA +DAELIANBgNAAahD9I0ECIQFBAAshCiADQerCAGogA0H6P2otAAA6AAAgA0GwwwBqIANBkMsAaigC +ADYCACADQfjEAGogA0GgwABqKQMANwMAIANBgMUAaiADQajAAGopAwA3AwAgA0GIxQBqIANBsMAA +aigCADYCACADQZLCAGogA0HSxABqLQAAOgAAIAMgAy8B+D87AehCIAMgAykDiEs3A6hDIAMgAykD +mEA3A/BEIAMgAy8B0EQ7AZBCIBpBAToAACANELM4CyAEQdQBai0AAARAIARBqAFqENkiCyAEQQA6 +ANQBIANBgsIAaiILIANB6sIAai0AADoAACADQdjBAGoiDSADQbDDAGooAgA2AgAgA0HQwwBqIg4g +A0H4xABqKQMANwMAIANB2MMAaiIaIANBgMUAaikDADcDACADQeDDAGoiFiADQYjFAGooAgA2AgAg +AyADLwHoQjsBgEIgAyADKQOoQzcD0EEgAyADKQPwRDcDyEMgBEEBOgDVASADQfLBAGoiHyADQZLC +AGotAAA6AAAgA0GawQBqIAstAAA6AAAgA0GQwwBqIA0oAgA2AgAgAyADLwGQQjsB8EEgAyADLwGA +QjsBmEEgAyADKQPQQTcDiEMgA0GAA2ogFigCADYCACADQfgCaiAaKQMANwMAIANB8AJqIA4pAwA3 +AwAgAyADKQPIQzcD6AIgA0GCxABqIB8tAAA6AAAgAyADLwHwQTsBgEQgBhDyKwsgA0HCwQBqIANB +msEAai0AADoAACADQeA/aiADQZDDAGooAgA2AgAgA0G4wgBqIANB8AJqKQMANwMAIANBwMIAaiAD +QfgCaikDADcDACADQcjCAGogA0GAA2ooAgA2AgAgA0GywQBqIANBgsQAai0AADoAACADIAMvAZhB +OwHAQSADIAMpA4hDNwPYPyADIAMpA+gCNwOwQiADIAMvAYBEOwGwQSAHQQE6AAAgFBCKQAsgBEHg +AGotAAAEQCAEQThqENkiCyAEQQA6AGAgA0GKwQBqIgcgA0HCwQBqLQAAOgAAIANB2CVqIgsgA0Hg +P2ooAgA2AgAgA0H4JWoiFCADQbjCAGopAwA3AwAgA0GAJmoiDiADQcDCAGopAwA3AwAgA0GIJmoi +DSADQcjCAGooAgA2AgAgAyADLwHAQTsBiEEgAyADKQPYPzcD0CUgAyADKQOwQjcD8CUgBEEBOgBh +IANB+sAAaiIaIANBssEAai0AADoAACADQaYCaiIGIActAAA6AAAgA0GgAmoiByALKAIANgIAIAMg +Ay8BsEE7AfhAIAMgAy8BiEE7AaQCIAMgAykD0CU3A5gCIANBkAJqIgsgDSgCADYCACADQYgCaiIN +IA4pAwA3AwAgA0GAAmoiDiAUKQMANwMAIAMgAykD8CU3A/gBIANB9gFqIhQgGi0AADoAACADIAMv +AfhAOwH0ASAcEPMrIApFBEAgBCgCAEH4AGoQ7kIgBCgCACIKIBI2AnggCkH8AGogEToAACAKQf0A +aiADLwGkAjsAACAKQf8AaiAGLQAAOgAAIApBkAFqICk3AwAgCkGIAWogKDcDACAKQYQBaiAINgIA +IApBggFqIAw7AQAgCkGBAWogFToAACAKQYABaiATOgAAIApBmAFqIAMpA5gCNwEAIApBoAFqIAco +AgA2AQAgCkGkAWogAykD+AE3AgAgCkGsAWogDikDADcCACAKQbQBaiANKQMANwIAIApBvAFqIAso +AgA2AgAgCkHAAWogAToAACAKQcEBaiADLwH0ATsAACAKQcMBaiAULQAAOgAADAELIANB9gNqIAYt +AAA6AAAgA0HwA2ogBygCADYCACADQdADaiAOKQMANwMAIANB2ANqIA0pAwA3AwAgA0HgA2ogCygC +ADYCACADQcYDaiAULQAAOgAAIAMgAy8BpAI7AfQDIAMgAykDmAI3A+gDIAMgAykD+AE3A8gDIAMg +Ay8B9AE7AcQDIBNB/wFxIBVB/wFxQQh0ciAMQRB0ciEKDAELQRIhEQsgGyAROgAAIBsgAy8B9AM7 +AAEgGyApNwIUIBsgKDcCDCAbIAg2AgggGyAKNgIEIBsgAykD6AM3AhwgGyADKQPIAzcDKCAbQQNq +IANB9gNqLQAAOgAAIBtBJGogA0HwA2ooAgA2AgAgG0EwaiADQdADaikDADcDACAbQThqIANB2ANq +KQMANwMAIBtBQGsgA0HgA2ooAgA2AgAgGyABOgBEIBsgAy8BxAM7AEUgG0HHAGogA0HGA2otAAA6 +AABBAQs6ABAgA0Gg0ABqJAAgBS0AkCsiB0ETRwRAIAVByjtqIAUtAJMrOgAAIAVB4DZqIAVBoCtq +KQMANwMAIAUgBS8AkSs7Acg7IAUgBSkDmCs3A9g2IAUoApQrIQYgBUGgPmogBUGoK2pBMBDNTxog +BBDaMQwEC0EEDAELQQMLIQEgGCABOgAAQQULIQEgDyABOgAADAQLIAlBsAZqLQAABEAgEBDZIgsg +CUEAOgCwBiAFQeI5aiIBIAVByjtqLQAAOgAAIAVB6C9qIgggBUHgNmopAwA3AwAgBSAFLwHIOzsB +4DkgBSAFKQPYNjcD4C8gBUGQPGoiCiAFQaA+akEwEM1PGiAJQQE6ALEGIAVB9jNqIgwgAS0AADoA +ACAFQegzaiIBIAgpAwA3AwAgBSAFLwHgOTsB9DMgBSAFKQPgLzcD4DMgBUGwM2ogCkEwEM1PGiAQ +ENMtIAdBEkYEQCAFQdw1aiAJQZsEai0AADoAACAFQdA1aiAJQagEaikDADcDACAFIAlBmQRqLwAA +OwHaNSAFIAlBoARqKQMANwPINSAJQZgEai0AACEHIAlBkARqKQMAISggCUGcBGooAgAhBiAFQZg1 +aiAJQbAEakEwEM1PGiAFQfgzaiAJQeAEakGgARDNTxoMAgsgBUHcNWogDC0AADoAACAFQdA1aiAB +KQMANwMAIAUgBS8B9DM7Ado1IAUgBSkD4DM3A8g1IAVBmDVqIAVBsDNqQTAQzU8aIAlBkARqEMU5 +C0ICISgLIAVBjitqIgQgBUHcNWotAAA6AAAgBUGAK2oiASAFQdA1aikDADcDACAFIAUvAdo1OwGM +KyAFIAUpA8g1NwP4KiAFQcgqaiAFQZg1akEwEM1PGiAFQagpaiAFQfgzakGgARDNTxogD0EBOgAA +IChCA1ENASAJICg3AzggCSAFLwGMKzsAQSAJQUBrIgggBzoAACAJQcQAaiAGNgIAIAlByABqIAUp +A/gqNwMAIAlBwwBqIAQtAAA6AAAgCUHQAGogASkDADcDACAJQdgAaiAFQcgqakEwEM1PGiAJQYgB +aiAFQagpakGgARDNTxogFxCiLiAJKQM4QgJRDQIgCUHBA2pBgQI7AAAgCUHQCmogHkHwARDNTxog +BUGIwABqIgEgCUHYCmpB2AAQzU8aIAlBvANqIgYoAgBBqAFqIAEQ7ysgBigCACEBIAVBmMAAaiIH +IAlBwAtqKQIANwMAIAVBkMAAaiIIIAlBuAtqKQIANwMAIAUgCUGwC2opAgA3A4hAIAFBvAFqKAIA +Ig8gASgCtAFGBEAgAUG0AWogDxCaDyABKAK8ASEPCyABQbgBaigCACAPQRhsaiIGIAUpA4hANwIA +IAZBEGogBykDADcCACAGQQhqIAgpAwA3AgAgASABKAK8AUEBajYCvAEgCUGQDGotAABBAkcEQCAJ +QQA6AMIDIAVB1C5qIAlByAtqQcwAEM1PGiAJKAK8AyIBQcgBaigCACIPIAEoAsABRgRAIAFBwAFq +IA8QkzUgASgCyAEhDwsgAUHEAWooAgAgD0HMAGxqIAVB1C5qQcwAEM1PGiABIAEoAsgBQQFqNgLI +AQsgFyAJQZgMahDzRyAJKALIA0GTgICAeEYNAyAJQaAEaiAXQdgAEM1PIQEgCUGEBWpBADoAACAJ +QYAFaiABNgIAIAlB/ARqIAkoArwDNgIAIAlB+ARqIAlBtANqKAIANgIACyAJQfgEaiIEIAIQ4gFF +DQ9BBSEPDCALQQMhDwwfCyAJQcADakEBOgAAIBcgCEHIABDNTxogCS0AyAMiD0EPRw0XIAlBADoA +wAMgCUGUBGogCUHQA2ooAgAiBzYCACAJQZAEaiAJQcwDaigCACIGNgIAIAVBoMMAaiAJQewDaikC +ADcDACAFQZjDAGogCUHkA2opAgA3AwAgBUGQwwBqIAlB3ANqKQIANwMAIAUgCUHUA2opAgA3A4hD +IAlBtANqKAIAKAIAIQEgBUGQK2oiCCAFQYjAAGpBwAMQzU8aIAlBmARqIhcgCEHAAxDNTxogCUHq +B2oiD0EAOgAAIAlB5AdqIAFByABqIgQ2AgAgCUHcB2ogBzYCACAJQdgHaiAGNgIADAELIAUgCUHM +A2ooAgA2AsA4QcST2wAoAgBBA0sNGUGMjdsAEPs+IgFB/wFxRQ0ZQQAhBEGMjdsAKAIAIAEQ9S5F +DRlBjI3bACgCACIBQRxqIQIgAUEgaigCACIGBEAgAUEoaigCACEHIAFBJGooAgAhCCABKAIcIQQg +BUEANgKYQCAFIAc2ApRAIAUgCDYCkEAgBSAGNgKMQAsgBSAENgKIQCAFQZAraiIBIAVBiMAAaiIG +QZyUwgAQ2iwgBUGUwABqQgE3AgAgBUGgwMEANgKoPiAFQQE2AoxAIAVB3JTCADYCiEAgBUHQATYC +rDogBSAGNgKkPiAFIAE2AqA+IAUgBUGoOmo2ApBAIAUgBUHAOGo2Aqg6IAVBkDxqIgEgAiAFQaA+ +ahDgQUGMjdsAKAIAIAEQxDQMGQsgCUHoB2pBADsBACAJQeAHaiAENgIAIAlB9AdqIAc2AgAgCUHw +B2ogBjYCACAJQZgJaiAENgIAIAlBnAlqQQA6AAAgCUG4B2ogCUGYB2opAwAiKDcDACAJQcAHaiAJ +QaAHaikDACIpNwMAIAlByAdqIAlBqAdqKQMAIio3AwAgCUHQB2ogCUGwB2opAwAiKzcDACAJQfgH +aiAoNwMAIAlBgAhqICk3AwAgCUGICGogKjcDACAJQZAIaiArNwMACyAFQYjAAGogCUHwB2oiByAC +EPkBIAUoAuhAIgRBBEYNCCAFQaA+aiAFQYjAAGpB4AAQzU8aIAVB4DFqIgggBUGEwQBqKAIANgIA +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 +uscAEOYrAAtBgKPHAEEjQeyvxwAQ5isAC0GAo8cAQSNBzK/HABDmKwALQYCjxwBBI0HUrccAEOYr +AAtBgKPHAEEjQcStxwAQ5isAC0GAo8cAQSNBrKTHABDmKwALQQYhAwwSC0EHDBMLQQQMFAtBBiED +DBsLIAFB2AVqIgZBADoAACABQagFaiIJIAEoAqQFIgM2AgALIAFBtAVqIgxBADoAACABQawFaiII +IAM2AgALIAFBsAVqIAM2AgALIARBuD5qIANBARCrNCABQdAFaiAEQdA+aikCADcCACABQcgFaiAE +Qcg+aikCADcCACABQcAFaiAEQcA+aikCADcCACABQbgFaiAEKQK4PjcCAAsgAUG4BWoiAyACEOAD +Qf8BcSITQQJGDQEgAxDDOiATDR8gAUEBOgC0BSAIEOE/IAFBAToA2AUgASgCqAUhAyAJEOI/IAFB +AToA3AUgBCADNgKwICAKENk/IAEgAygCFAR/IARBwAFqIANBFGoQnDEgBCgCxAEhAyAEKALAAQVB +AAs2AuAFIAFB5AVqIAM2AgAgBEGwIGoQmkwgAUGkBWoiCiABQZQFaigCACgCEEEIajYCACABQagF +aiAEQdACakE0EM1PGiABQdwFaiIIQQA6AAAgAUHdBWogBC8AoF07AAAgAUHfBWogBEGi3QBqLQAA +OgAACyABQdgFaiILQQA6AAAgAUGoBWoiCSABKAKkBSIDNgIADAELIAxBBDoAACAGQQM6AAAgC0ED +OgAAQQQMBAsgAUG0BWoiBkEAOgAAIAFBrAVqIgwgAzYCAAsgAUGwBWogAzYCAAsgBEG4PmogA0EB +EKs0IAFB0AVqIARB0D5qKQIANwIAIAFByAVqIARByD5qKQIANwIAIAFBwAVqIARBwD5qKQIANwIA +IAFBuAVqIAQpArg+NwIACyABQbgFaiIDIAIQ4ANB/wFxIhNBAkcEQCADEMM6IBMNGiAGQQE6AAAg +DBDhPyALQQE6AAAgCSgCACEDIAkQ4j8gCEEBOgAAIAQgAzYCsCAgChDZPyADKAIUDQJBAAwDCyAG +QQQ6AAAgC0EDOgAAIAhBAzoAAEEFCyEBIAUgAToAAEEDIQMMFgsgBEG4AWogA0EUahCcMSAEKAK8 +ASEFIAQoArgBCyEDIARBsCBqEJpMIAFBmAVqKQMAITggAUHgBWopAwAhOSAEQbABaiABQZQFaiIJ +KAIAEPEuIAQpA7ABITogCSgCACgCCEEIakEEELdGIQkgAUEBOgCgBSAEQc4CaiIIIARBztwAai0A +ADoAACAEIAQvAMxcOwHMAiAHEIwqIAFB/ARqIAk6AAAgAUH0BGogOTcCACABQfAEaiAFNgIAIAFB +7ARqIAM2AgAgAUHkBGogODcCACABQdwEaiA6NwIAIAFB/QRqIAQvAcwCOwAAIAFB/wRqIAgtAAA6 +AAAgAUHMBGooAgAhAwsgAUGEBWogA0HIAGo2AgAgAUGABWogA0E4ajYCACABQYgFaiIJIAFB0ARq +IhNB/K/HAEEEENAzNgIAAkACQAJAAkAgAUHMBGooAgAiBSgCVEGAgICAeEcEQCAEQYCwxwBBEBAA +Igg2Arg+IARB0AJqIQsgAUHIBGooAgBBOGohBiMAQeAAayIDJAAgAyAFQdQAaiIHNgIEAkACQAJA +IAYoAgAiBQRAIANBzABqIQogBUEIaiEUIwBBgAFrIgUkACAFQdgAaiEMIwBBMGsiBiQAIAZBCGpB +gAEQ7h8gBkEANgIoIAYgBikDCDcCICAGIAZBIGo2AiwCQAJAIAcgBkEsahDALiIHBEAgBkEgahCI +PwwBCyAGKAIkIQcgBigCICIWQYCAgIB4Rg0AIAYgBigCKDYCHCAGIAc2AhggBiAWNgIUIAwgFCAG +QRRqENwIDAELIAxBAjoABCAMQYCAgIB4NgIAIAxBCGogBzYCAAsgBkEwaiQAAkAgBSgCWCIGQYCA +gIB4RwRAIAVB0ABqIAVB7ABqKAIAIgc2AgAgBUHIAGogBUHkAGopAgAiODcDACAFQThqIAVB+ABq +KQIANwIAIAVBJGogODcCACAFQSxqIAc2AgAgBSAFKQJcIjg3A0AgBSAFKQJwNwIwIAUgODcCHCAF +IAY2AhggBUEMaiAFQRhqEOsXIAUoAgwiBkGAgICAeEcEQCAKQQhqIAUpAhA3AgAgCiAGNgIEIApB +CDoAACAFQRhqEIg/DAILIAogBSgCEDYCBCAKQQI6AAAgBUEYahCIPwwBCyAFQdAAaiAFQewAaigC +ACIGNgIAIAVByABqIAVB5ABqKQIAIjg3AwAgBSAFKQJcIjk3A0AgCkEQaiAGNgIAIApBCGogODcC +ACAKIDk3AgALIAVBgAFqJAAgA0EoaiAKEJQwIAMtACgiBUELRw0BIANBEGogA0E0aigCADYCACAD +IAMpAiw3AwggA0EoaiADQQhqEMIXIAMoAihFBEAgAygCLCEFIAtBCzoAACALIAU2AgQgA0EIahCI +PwwECyALIAMoAiw2AgQgC0EHOgAAIANBCGoQiD8MAwsjAEEgayIFJAAgBUEUaiADQQRqEOwXIANB +KGoiBgJ/IAUoAhQiB0GAgICAeEcEQCAFIAUoAhwiCjYCECAFIAUoAhgiDDYCDCAFIAc2AgggBSAM +IAoQ4SsgBiAFKAIAIAUoAgQQ5EE2AgQgBUEIahCIP0EADAELIAYgBSgCGDYCBEEBCzYCACAFQSBq +JAAgAygCKEUNASALIAMoAiw2AgQgC0EHOgAADAILIAsgAykCODcCECALQRhqIANBQGspAgA3AgAg +C0EgaiADQcgAaigCADYCACADIAMpACk3AxggAyADQTBqKQAANwAfIAtBCGogAykAHzcAACALIAMp +Axg3AAEgCyAFOgAADAELIAMoAiwhBSALQQs6AAAgCyAFNgIECyADQeAAaiQAIAQtANACIgNBC0cN +ASAJIAggBCgC1AIQrS8LIAFB/ARqLQAAQQJHBEAgBEGQsMcAQRAQACIINgK4PiAEQdACaiELIAFB +yARqKAIAQThqIQMjAEHgAGsiBSQAIAUgAUHcBGoiBzYCBAJAAkACQCADKAIAIgMEQCAFQcwAaiEK +IANBCGohFCMAQYABayIDJAAgA0HYAGohDCMAQTBrIgYkACAGQQhqQYABEO4fIAZBADYCKCAGIAYp +Awg3AiAgBiAGQSBqNgIsAkACQCAHIAZBLGoQwA4iBwRAIAZBIGoQiD8MAQsgBigCJCEHIAYoAiAi +FkGAgICAeEYNACAGIAYoAig2AhwgBiAHNgIYIAYgFjYCFCAMIBQgBkEUahDcCAwBCyAMQQI6AAQg +DEGAgICAeDYCACAMQQhqIAc2AgALIAZBMGokAAJAIAMoAlgiBkGAgICAeEcEQCADQdAAaiADQewA +aigCACIHNgIAIANByABqIANB5ABqKQIAIjg3AwAgA0E4aiADQfgAaikCADcCACADQSRqIDg3AgAg +A0EsaiAHNgIAIAMgAykCXCI4NwNAIAMgAykCcDcCMCADIDg3AhwgAyAGNgIYIANBDGogA0EYahDr +FyADKAIMIgZBgICAgHhHBEAgCkEIaiADKQIQNwIAIAogBjYCBCAKQQg6AAAgA0EYahCIPwwCCyAK +IAMoAhA2AgQgCkECOgAAIANBGGoQiD8MAQsgA0HQAGogA0HsAGooAgAiBjYCACADQcgAaiADQeQA +aikCACI4NwMAIAMgAykCXCI5NwNAIApBEGogBjYCACAKQQhqIDg3AgAgCiA5NwIACyADQYABaiQA +IAVBKGogChCUMCAFLQAoIgNBC0cNASAFQRBqIAVBNGooAgA2AgAgBSAFKQIsNwMIIAVBKGogBUEI +ahDCFyAFKAIoRQRAIAUoAiwhAyALQQs6AAAgCyADNgIEIAVBCGoQiD8MBAsgCyAFKAIsNgIEIAtB +BzoAACAFQQhqEIg/DAMLIAVBKGohByMAQTBrIgYkACAGQQhqQYABEO4fIAZBADYCKCAGIAYpAwg3 +AiAgBiAGQSBqNgIsAkACQCAFQQRqKAIAIAZBLGoQwA4iAwRAIAZBIGoQiD8MAQsgBigCJCEDIAYo +AiAiCkGAgICAeEYNACAGIAYoAigiDDYCHCAGIAM2AhggBiAKNgIUIAYgAyAMEOErIAYoAgAgBigC +BBDkQSEDIAdBADYCACAHIAM2AgQgBkEUahCIPwwBCyAHQQE2AgAgByADNgIECyAGQTBqJAAgBSgC +KEUNASALIAUoAiw2AgQgC0EHOgAADAILIAsgBSkCODcCECALQRhqIAVBQGspAgA3AgAgC0EgaiAF +QcgAaigCADYCACAFIAUpACk3AxggBSAFQTBqKQAANwAfIAtBCGogBSkAHzcAACALIAUpAxg3AAEg +CyADOgAADAELIAUoAiwhAyALQQs6AAAgCyADNgIECyAFQeAAaiQAIAQtANACIgNBC0cNAiAJIAgg +BCgC1AIQrS8LIAEoAoAFIgMoAgAEQCAEIAM2AqBdIAQgE0GgsMcAQQsQ0DM2ArAgIARBq7DHAEEP +EAAiCTYCuD4gBEHQAmohCyABQcgEaigCAEE4aiEDIwBB4ABrIgUkACAFIARBoN0AaiIHNgIEAkAC +QAJAIAMoAgAiAwRAIAVBzABqIQogA0EIaiEUIwBBgAFrIgMkACADQdgAaiEMIwBBMGsiBiQAIAZB +CGpBgAEQ7h8gBkEANgIoIAYgBikDCDcCICAGIAZBIGo2AiwCQAJAIAcgBkEsahDITCIHBEAgBkEg +ahCIPwwBCyAGKAIkIQcgBigCICIWQYCAgIB4Rg0AIAYgBigCKDYCHCAGIAc2AhggBiAWNgIUIAwg +FCAGQRRqENwIDAELIAxBAjoABCAMQYCAgIB4NgIAIAxBCGogBzYCAAsgBkEwaiQAAkAgAygCWCIG +QYCAgIB4RwRAIANB0ABqIANB7ABqKAIAIgc2AgAgA0HIAGogA0HkAGopAgAiODcDACADQThqIANB ++ABqKQIANwIAIANBJGogODcCACADQSxqIAc2AgAgAyADKQJcIjg3A0AgAyADKQJwNwIwIAMgODcC +HCADIAY2AhggA0EMaiADQRhqEOsXIAMoAgwiBkGAgICAeEcEQCAKQQhqIAMpAhA3AgAgCiAGNgIE +IApBCDoAACADQRhqEIg/DAILIAogAygCEDYCBCAKQQI6AAAgA0EYahCIPwwBCyADQdAAaiADQewA +aigCACIGNgIAIANByABqIANB5ABqKQIAIjg3AwAgAyADKQJcIjk3A0AgCkEQaiAGNgIAIApBCGog +ODcCACAKIDk3AgALIANBgAFqJAAgBUEoaiAKEJQwIAUtACgiA0ELRw0BIAVBEGogBUE0aigCADYC +ACAFIAUpAiw3AwggBUEoaiAFQQhqEMIXIAUoAihFBEAgBSgCLCEDIAtBCzoAACALIAM2AgQgBUEI +ahCIPwwECyALIAUoAiw2AgQgC0EHOgAAIAVBCGoQiD8MAwsgBUEoaiEHIwBBMGsiBiQAIAZBCGpB +gAEQ7h8gBkEANgIoIAYgBikDCDcCICAGIAZBIGo2AiwCQAJAIAVBBGooAgAgBkEsahDITCIDBEAg +BkEgahCIPwwBCyAGKAIkIQMgBigCICIKQYCAgIB4Rg0AIAYgBigCKCIMNgIcIAYgAzYCGCAGIAo2 +AhQgBiADIAwQ4SsgBigCACAGKAIEEORBIQMgB0EANgIAIAcgAzYCBCAGQRRqEIg/DAELIAdBATYC +ACAHIAM2AgQLIAZBMGokACAFKAIoRQ0BIAsgBSgCLDYCBCALQQc6AAAMAgsgCyAFKQI4NwIQIAtB +GGogBUFAaykCADcCACALQSBqIAVByABqKAIANgIAIAUgBSkAKTcDGCAFIAVBMGopAAA3AB8gC0EI +aiAFKQAfNwAAIAsgBSkDGDcAASALIAM6AAAMAQsgBSgCLCEDIAtBCzoAACALIAM2AgQLIAVB4ABq +JAAgBC0A0AIiA0ELRw0DIARBsCBqIAkgBCgC1AIQrS8LIAEoAoQFIgMoAgBBgICAgHhHBEAgBCAD +NgKgXSAEIBNBoLDHAEELENAzNgKwICAEQbqwxwBBDRAAIgk2Arg+IARB0AJqIQcgAUHIBGooAgBB +OGohAyMAQeAAayIFJAAgBSAEQaDdAGoiDDYCBAJAAkACQCADKAIAIgMEQCAFQcwAaiEGIANBCGoh +FCMAQYABayIDJAAgA0HYAGohCiMAQSBrIgskACALQQhqIAwQ7BcCQCALKAIIIgxBgICAgHhHBEAg +CyALKQIMNwIYIAsgDDYCFCAKIBQgC0EUahDcCAwBCyAKQQhqIAsoAgw2AgAgCkECOgAEIApBgICA +gHg2AgALIAtBIGokAAJAIAMoAlgiC0GAgICAeEcEQCADQdAAaiADQewAaigCACIKNgIAIANByABq +IANB5ABqKQIAIjg3AwAgA0E4aiADQfgAaikCADcCACADQSRqIDg3AgAgA0EsaiAKNgIAIAMgAykC +XCI4NwNAIAMgAykCcDcCMCADIDg3AhwgAyALNgIYIANBDGogA0EYahDrFyADKAIMIgtBgICAgHhH +BEAgBkEIaiADKQIQNwIAIAYgCzYCBCAGQQg6AAAgA0EYahCIPwwCCyAGIAMoAhA2AgQgBkECOgAA +IANBGGoQiD8MAQsgA0HQAGogA0HsAGooAgAiCzYCACADQcgAaiADQeQAaikCACI4NwMAIAMgAykC +XCI5NwNAIAZBEGogCzYCACAGQQhqIDg3AgAgBiA5NwIACyADQYABaiQAIAVBKGogBhCUMCAFLQAo +IgNBC0cNASAFQRBqIAVBNGooAgA2AgAgBSAFKQIsNwMIIAVBKGogBUEIahDCFyAFKAIoRQRAIAUo +AiwhAyAHQQs6AAAgByADNgIEIAVBCGoQiD8MBAsgByAFKAIsNgIEIAdBBzoAACAFQQhqEIg/DAML +IAVBKGohCyMAQTBrIgYkACAGQQhqQYABEO4fIAZBADYCKCAGIAYpAwg3AiAgBiAGQSBqNgIsAkAC +QCAFQQRqKAIAIAZBLGoQwkwiAwRAIAZBIGoQiD8MAQsgBigCJCEDIAYoAiAiCkGAgICAeEYNACAG +IAYoAigiDDYCHCAGIAM2AhggBiAKNgIUIAYgAyAMEOErIAYoAgAgBigCBBDkQSEDIAtBADYCACAL +IAM2AgQgBkEUahCIPwwBCyALQQE2AgAgCyADNgIECyAGQTBqJAAgBSgCKEUNASAHIAUoAiw2AgQg +B0EHOgAADAILIAcgBSkCODcCECAHQRhqIAVBQGspAgA3AgAgB0EgaiAFQcgAaigCADYCACAFIAUp +ACk3AxggBSAFQTBqKQAANwAfIAdBCGogBSkAHzcAACAHIAUpAxg3AAEgByADOgAADAELIAUoAiwh +AyAHQQs6AAAgByADNgIECyAFQeAAaiQAIAQtANACIgNBC0cNBCAEQbAgaiAJIAQoAtQCEK0vCyAB +KALMBCIGQbABaigCAEUNBSABQZAFaiATQcewxwBBBxDQMzYCACABKALMBCIDQbABaigCACEFIAFB +oAVqIANBrAFqKAIAIgk2AgAgAUGkBWogCSAFQdgAbGoiDDYCAEEAIQMMBAsgBEG2PmogBC0A0wI6 +AAAgBEGoPmogBEHoAmopAgA3AwAgBEGwPmogBEHwAmooAgA2AgAgBCAELwDRAjsBtD4gBCAEKQLg +AjcDoD4gBCgC1AIhBSAEKQLYAiE4IARBuD5qEJZBDAkLIARBtj5qIAQtANMCOgAAIARBqD5qIARB +6AJqKQIANwMAIARBsD5qIARB8AJqKAIANgIAIAQgBC8A0QI7AbQ+IAQgBCkC4AI3A6A+IAQoAtQC +IQUgBCkC2AIhOCAEQbg+ahCWQQwICyAEQbY+aiAELQDTAjoAACAEQag+aiAEQegCaikCADcDACAE +QbA+aiAEQfACaigCADYCACAEIAQvANECOwG0PiAEIAQpAuACNwOgPiAEKALUAiEFIAQpAtgCITgg +BEG4PmoQlkEMBwsgBEG2PmogBC0A0wI6AAAgBEGoPmogBEHoAmopAgA3AwAgBEGwPmogBEHwAmoo +AgA2AgAgBCAELwDRAjsBtD4gBCAEKQLgAjcDoD4gBCgC1AIhBSAEKQLYAiE4IARBuD5qEJZBDAYL +A0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMOBgABAgMEBQYLIAkgDEcNBiABQcwEaigC +ACEGDA4LIAFBtAVqIAk2AgAgCSgCTCEDIAFB8AVqIi1BADoAACABQbgFaiISIANBCGoiDTYCAAwI +CyABQewFaiIuQQA6AAAgAUG8BWoiFSANNgIADAgLIAFByAVqIi9BADoAACABQcAFaiIZIA02AgAM +CAsgAUHEBWogDTYCAAwICyAEQaDdAGogDUEBEKs0IAFB5AVqIARBuN0AaikCADcCACABQdwFaiAE +QbDdAGopAgA3AgAgAUHUBWogBEGo3QBqKQIANwIAIAFBzAVqIAQpAqBdNwIAQQYhAwwICwJAAkAg +AUHMBWoiAyACEOADQf8BcSIFQQJHBEAgAxDDOiAFDR8gAUEBOgDIBSAZEOE/IAFBAToA7AUgASgC +vAUhAyAVEOI/IAFBAToA8AUgBCADNgKAXCASENk/IARBuD5qIANBGGoQ2AUgBEGA3ABqEJpMIARB +6NsAaiABQbQFaigCACIDQSBqKQMANwMAIARB8NsAaiADQShqKQMANwMAIARB+NsAaiADQTBqKQMA +NwMAIAQgAykDGDcD4FsgAy0AUCEFIAMpAzghOSADKQNAITogBCkDuD4hOCAEQbAgaiAEQcA+akHA +HRDNTxogAUEBOgD0BSA4QgNRDQEgBEHYAmogBEGwIGpBwB0QzU8aIARBrCBqIARBz9wAaigAADYA +ACAEIAU6AKggIAQgOjcDoCAgBCA5NwOYICAEIDg3A9ACIAQgBCgAzFw2AKkgIBEQq0AgAUHIBGoi +CygCACEDIAQgAUGUBWoiDDYCuD4gBCABQagFaikDADcCvD4jAEEQayIHJAAgB0EEaiEFIARBuD5q +IQYCQCADQThqKAIAIgpFBEAjAEEwayIDJAAgA0EYaiIJIAYQzEwgAykCHCE4IANBJGoiCiAGQQRq +EL9IIANBDGpBATYCACADQbOTyAA2AgggAyA4NwIAIAMgAykCKDcCECAFIANBAxCWTiAKEIg/IAkQ +iD8gA0EwaiQADAELIwBB8ABrIgMkACADQSxqIhMgBhDMTCADQcQAaiIJIApBCGoiCkHHsMcAQQcg +AygCMCADKAI0EJsUIANBIGoiFCAJELlKIAMpAiQhOCADQeQAaiIWIAZBBGoQv0ggCSAKQcewxwBB +ByADKAJoIAMoAmwQmxQgA0E4aiIKIAkQuUogA0EUakEBNgIAIANBs5PIADYCECADIDg3AgggAyAD +KQI8NwIYIAUgA0EIakEDEJZOIAoQiD8gFhCIPyAUEIg/IBMQiD8gA0HwAGokAAsgBRCvQSETIAdB +EGokACAEIBM2ArAgIAsoAgBBOGohAyMAQeAAayIJJAAgCSAEQdACaiIUNgIEAkACQAJAIAMoAgAi +AwRAIAlBzABqIQsgA0EIaiEWIwBBgAFrIgUkACAFQdgAaiEKIwBBMGsiByQAIAdBCGpBgAEQ7h8g +B0EANgIoIAcgBykDCDcCICAHIAdBIGo2AiwCQAJAIBQgB0EsahCxDSIDBEAgB0EgahCIPwwBCyAH +KAIkIQMgBygCICIUQYCAgIB4Rg0AIAcgBygCKDYCHCAHIAM2AhggByAUNgIUIAogFiAHQRRqENwI +DAELIApBAjoABCAKQYCAgIB4NgIAIApBCGogAzYCAAsgB0EwaiQAAkAgBSgCWCIDQYCAgIB4RwRA +IAVB0ABqIAVB7ABqKAIAIgc2AgAgBUHIAGogBUHkAGopAgAiODcDACAFQThqIAVB+ABqKQIANwIA +IAVBJGogODcCACAFQSxqIAc2AgAgBSAFKQJcIjg3A0AgBSAFKQJwNwIwIAUgODcCHCAFIAM2Ahgg +BUEMaiAFQRhqEOsXIAUoAgwiA0GAgICAeEcEQCALQQhqIAUpAhA3AgAgCyADNgIEIAtBCDoAACAF +QRhqEIg/DAILIAsgBSgCEDYCBCALQQI6AAAgBUEYahCIPwwBCyAFQdAAaiAFQewAaigCACIDNgIA +IAVByABqIAVB5ABqKQIAIjg3AwAgBSAFKQJcIjk3A0AgC0EQaiADNgIAIAtBCGogODcCACALIDk3 +AgALIAVBgAFqJAAgCUEoaiALEJQwIAktACgiA0ELRw0BIAlBEGogCUE0aigCADYCACAJIAkpAiw3 +AwggCUEoaiAJQQhqEMIXIAkoAihFBEAgCSgCLCEDIAZBCzoAACAGIAM2AgQgCUEIahCIPwwECyAG +IAkoAiw2AgQgBkEHOgAAIAlBCGoQiD8MAwsgCUEoaiEHIwBBMGsiAyQAIANBCGpBgAEQ7h8gA0EA +NgIoIAMgAykDCDcCICADIANBIGo2AiwCQAJAIAlBBGooAgAgA0EsahCxDSIFBEAgA0EgahCIPwwB +CyADKAIkIQUgAygCICILQYCAgIB4Rg0AIAMgAygCKCIKNgIcIAMgBTYCGCADIAs2AhQgAyAFIAoQ +4SsgAygCACADKAIEEORBIQUgB0EANgIAIAcgBTYCBCADQRRqEIg/DAELIAdBATYCACAHIAU2AgQL +IANBMGokACAJKAIoRQ0BIAYgCSgCLDYCBCAGQQc6AAAMAgsgBiAJKQI4NwIQIAZBGGogCUFAaykC +ADcCACAGQSBqIAlByABqKAIANgIAIAkgCSkAKTcDGCAJIAlBMGopAAA3AB8gBkEIaiAJKQAfNwAA +IAYgCSkDGDcAASAGIAM6AAAMAQsgCSgCLCEDIAZBCzoAACAGIAM2AgQLIAlB4ABqJAAgBC0AuD4i +A0ELRw0CIAFBkAVqIBMgBCgCvD4QrS8gBEHQAmoQsCQgDBCIPyABQaAFaigCACEJIAFBpAVqKAIA +IQwMBAsgL0EEOgAAIC5BAzoAACAtQQM6AAAgLEEDOgAAC0EEIQMMGwsgBEG2PmogBC0Auz46AAAg +BEGoPmogBEHQPmopAgA3AwAgBEGwPmogBEHYPmooAgA2AgAgBCAELwC5PjsBtD4gBCAEKQLIPjcD +oD4gBCgCvD4hBSAEKQLAPiE4IARBsCBqEJZBIARB0AJqELAkIAwQiD8MDQsgAUGgBWogCUHYAGo2 +AgAgBEHoAmogCUEwaikAADcDACAEQeACaiAJQShqKQAANwMAIARB2AJqIAlBIGopAAA3AwAgBCAJ +KQAYNwPQAiABQZQFaiAEQdACahDxUSAEQagBaiAJENY+IAQoAqgBIQMgAUGsBWogBCgCrAE2AgAg +AUGoBWogAzYCACABQfQFaiIsQQA6AAAgAUGwBWoiESAJNgIADAELQQAhAwwFC0EBIQMMBAtBAiED +DAMLQQMhAwwCC0EEIQMMAQtBBSEDDAALAAsgBkHIAWooAgBFDQEgAUGQBWogAUHQBGpBzrDHAEEX +ENAzNgIAIAFBzARqKAIAIgNByAFqKAIAIQUgAUH0BWogA0HEAWooAgAiCzYCACABQfgFaiALIAVB +zABsaiIKNgIAQQALIQMDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAw4HAAEC +AwQFBgcLIAogC0cNByABQcwEaigCACEGDBELIAFBoAVqIAs2AgAgAUHsBWoiH0EAOgAAIAFBqAVq +Ih4gCzYCACABQaQFaiAxQThqNgIADAkLIAFBrAVqIAs2AgAgCygCACEDIAFB6AVqIjJBADoAACAB +QbAFaiIgIANBCGoiDzYCAAwJCyABQeQFaiIzQQA6AAAgAUG0BWoiISAPNgIADAkLIAFBwAVqIjRB +ADoAACABQbgFaiIiIA82AgAMCQsgAUG8BWogDzYCAAwJCyAEQeDdAGogD0EBEKs0IAFB3AVqIARB ++N0AaikCADcCACABQdQFaiAEQfDdAGopAgA3AgAgAUHMBWogBEHo3QBqKQIANwIAIAFBxAVqIAQp +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 +AWo2AggLIARBsCBqEJpMIAFByAZqEK85IAFBjAdqLQAABEAgGBDEKQsgAUGAAjsBjAcgGBD3MCAB +QZQHaigCACEFIAFBnAdqKAIAIQgMBAsgAUGUB2ogBUHYAGo2AgAgAUHABGogBUHYABDNTxogAUGQ +BWotAABBAkcNAQsgAUGQB2oQnRQgAUEAOgC4BCABQfQDahCdPSABQQA6ALkEIAFB5ANqEJpMIARB +DToAqAIgBEGoAmpBAXIgBEHVAWpBIxDNTxogAUEgahCGFyABQcgAahD7QCABQThqEKBBIAFBtAFq +EL5LIAFBwAFqELtLIAFBzAFqEL9LIAFB2AFqELZLIAFB4ABqEOk/IAFBhAFqENY/IAFBPGoQqBkg +ARCcPyABQeQBahDASyABQdQAahD7QCABQQA6ALsEDA4LIARBqANqIAVB2AAQzU8aIAEoAuADIQMg +BEG4PmoiCSAEQdACakHwARDNTxogAUGYBWoiGCAJQfABEM1PGiABQY0HaiI2QQA6AAAgAUGIB2og +A0E8aiI3NgIADAILIAQgBCgC1AI2ArAgIAQgBEHYAmotAAA6ALQgQZSqxwBBKyAEQbAgakHAqscA +QaioxwAQiRgAC0EAIQMMBQtBASEDDAQLQQIhAwwDC0EDIQMMAgtBBCEDDAELQQUhAwwACwALAAsg +AS0AuARFDQAgAUGABGoQ4zALIAFBADoAuAQLIAFB9ANqEJ09IAEtALkERQ0AIAFB6ANqEJcZCyAB +QQA6ALkEIAFB5ANqEJpMIAEQ8xogAUEAOgC7BCABLQC6BEUNACABQfABahDzGgsgACAEQagCakEk +EM1PGkEBDAELIBwgAzoAACAAQQ46AABBBAs6ALwEIARBgN4AaiQADwtBqKzHAEEoQdCsxwAQ5isA +C0GAo8cAQSNBiKzHABDmKwALQYCjxwBBI0H4q8cAEOYrAAtBgKPHAEEjQZisxwAQ5isAC6iLAQIi +fwJ+IwBBwCprIgIkAAJAAn8CQAJ/AkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +An8CQAJAAkACQAJ/AkACQAJ/An8CQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAIAAtAPgVQQFrDgMNAgEACyAAIABB+ApqQfgKEM1PGgsCQAJAAkACQAJAAkACQAJAAkAg +AC0A9ApBAWsOAxMJAAELIABBEGohHwJAIABB5ApqIhotAABBAWsOAw0JAwALIABBFGooAgAhBSAA +QeAKaigCACEDIAAoAhAhBwwBCyACQfAAaiAAKALoChCOLyACKAJwIQMgACACKAJ0NgIEIAAgAzYC +ACACQegAaiAAKALsCiAAKALwChDKLSACKAJoIQcgAigCbCEFIABB5ApqIhpBADoAACAAQeAKaiAD +NgIAIABBFGogBTYCACAAIAc2AhAgAEEMaiAFNgIAIAAgBzYCCCAAQRBqIR8LIAJBiAJqIAcgBRDv +DyACKAKIAiIEQYCAgIB4RwRAIAIpAowCISQgAEEAOgBJIABBQGsgJDcDACAAQTxqIAQ2AgAgAEE4 +aiADNgIAIABBGGohEyAAQckAaiEVDAILQQEhBSACKAKMAhDmEAxUCyAAQRhqIRMgAEHJAGohFQJA +IAAtAElBAWsOBAkGAgUACyAAQThqKAIAIQMLIABByABqQQA6AAAgAkGAAmoiBCAAQcQAaigCADYC +ACACIABBPGopAgA3A/gBQcST2wAoAgBBAksNAUG8itsAEPs+IgVB/wFxRQ0BQQAhB0G8itsAKAIA +IAUQ9S5FDQFBvIrbACgCACIEQShqKAIAIQYgBEEkaigCACEIIAQoAhwhCSACIARBIGooAgAiBQR/ +IAJBADYC8BAgAiAGNgLsECACIAg2AugQIAIgBTYC5BBBASEHIAkFQQALNgLgECACQfAOaiACQeAQ +akHkxsQAEOksIAJB4ABqIANBBGoiDBDcRiACIAIpA2A3AvAkIAIgAkHwJGo2AqAgIAIgBSAHTQR/ +QQAFIAIgBjYC7BAgAiAINgLoECACIAU2AuQQIAIgBzYC8BAgB0EBaiEHIAkLNgLgECACQaglaiAC +QeAQakHkxsQAEOksIAJB2ABqIAMQ3UYgAiACKQNYNwLgICACIAJB4CBqNgKoIyACIAUgB0sEfyAC +IAc2AvAQIAIgBjYC7BAgAiAINgLoECACIAU2AuQQIAkFQQALNgLgECACQegXaiIFIAJB4BBqIgdB +5MbEABDpLCACQdAAaiAMEN1GIAJBgBFqIgZBhMfEADYCACACQfQQakGEx8QANgIAIAJB/BBqIAJB +4CNqNgIAIAJB8BBqIgggAkGoI2o2AgAgAkH0xsQANgLoECACIAIpA1A3ApgkIAIgAkGYJGo2AuAj +IAIgBTYC+BAgAiACQaglajYC7BAgAiACQaAgajYC5BAgAiACQfAOajYC4BAgAkGADWoiBSAEQRxq +IAcQ4UEgEyAEIAUQxDIgAEEBOgBIIAJBiAlqIAJBgAJqIgQoAgA2AgAgAiACKQP4ATcDgAkgAEEg +aigCAEECRg0CIABBADoASCACQegQaiATQQhqKQMANwMAIAggE0EQaikDADcDACACQfgQaiATQRhq +KQMANwMAIAIgEykDADcD4BAgBiACQZAJakHwAhDNTxogAEHQAGogAkHgEGpBkAMQzU8aIABB4ANq +IAM2AgAgAEEAOgDzAyAAQeQDaiACKQP4ATcCACAAQewDaiAEKAIANgIAIABB8ANqIAIvAfgIOwEA +IABB8gNqIAItAPoIOgAAIABB9ANqIAJBiAJqQewGEM1PGgtBACEFIwBBwBNrIgMkACAAQdAAaiIS +IgQoAghBAkcEQCAEQQhqIAQQ+CcLIAJB6BdqIQcgBEEgaiELIAMgBDYCFCAEAn8CQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQaMDai0AAEEBaw4HAQMH +CAIODwALIARBogNqQQA6AAAgBEGgA2pBADsBAEHEk9sAKAIADQVByIrbABD7PiIGQf8BcUUNBUHI +itsAKAIAIAYQ9S5FDQVByIrbACgCACIGQRxqIQggBkEgaigCACIJBEAgBkEoaigCACEMIAZBJGoo +AgAhCiAGKAIcIQUgA0EANgLACyADIAw2ArwLIAMgCjYCuAsgAyAJNgK0CwsgAyAFNgKwCyADQeAE +aiIFIANBsAtqIgZBnO/CABDdLCADQbwLakIANwIAIANBlMnCADYCICADQQE2ArQLIANB1O/CADYC +sAsgA0GkycIANgK4CyADIAY2AhwgAyAFNgIYIANBmAJqIAggA0EYahDgQSADQYATaiADQaACaigC +ADYCACADIAMpApgCNwP4EkHIitsAKAIAIANB+BJqEMQ0DAULQeDGwgBBI0Hc78IAEOYrAAsgBEGo +A2ohCCAEQYwKaiIMLQAAQQFrDgMCAAoBCwALIARBrANqKAIAIQkgBEGICmooAgAhCiAEKAKoAyEO +DAcLQeDGwgBBI0HMiMMAEOYrAAsgBEEBOgCiAyAEQYADakEANgIAIARB+AJqIgVBADYCACAEQfAC +akIENwMAIARB6AJqQgA3AwAgBEHgAmoiBkKAgICAwAA3AwAgBEHIA2pBADYCACAEQcQDaiAFNgIA +IARBwANqIAY2AgAgBEG0A2pBgICAgHg2AgAgBEGoA2ogBEGUA2opAgA3AgAgBEGwA2ogBEGcA2oo +AgA2AgAgBEGQA2ooAgAQ+E0hBSAEQdwEakEAOgAAIARB2ARqIAU2AgALIANBsAtqIARB0ANqIgYg +ARCkBCADKQOwC0IDUQ0BIARBoQNqQQE6AAAgCyADQbALaiIFQdAAEM1PIQggBhDrQiAEQaIDakEA +OgAAIARBkANqKAIAIQYgBSAEQagDaiIJQSgQzU8aIAkgBUHAAhDNTxogBEGEBmpBADoAACAEQewF +aiAINgIAIARB6AVqIAY2AgALIANB4ARqIARBqANqIgggARD6ASADKALgBCIJQYGAgIB4Rg0BIANB +kgRqIgwgA0HrBGotAAA6AAAgAyADLwDpBDsBkAQgAy0A6AQhBSADKALkBCENIAMtAOwEIQYgA0Ht +A2ogA0HtBGpBIxDNTxogA0HgA2oiCiADQagFaikDADcDACADQdgDaiIOIANBoAVqKQMANwMAIANB +0ANqIg8gA0GYBWopAwA3AwAgAyADKQOQBTcDyAMgA0GYAmogA0GwBWpBsAEQzU8aIAgQjhggCUGA +gICAeEYEQCADQZYEaiAMLQAAOgAAIAMgAy8BkAQ7AZQEIANB+BJqIANB7QNqQSMQzU8aIANB+ARq +IAopAwA3AwAgA0HwBGogDikDADcDACADQegEaiAPKQMANwMAIAMgAykDyAM3A+AEDA8LIANB6ABq +IANBmAJqQbABEM1PGiADQSNqIAwtAAA6AAAgAyADLwGQBDsAISADQSVqIANB7QNqQSMQzU8aIARB +oANqQQE6AAAgA0HgAGogCikDADcDACADQdgAaiAOKQMANwMAIANB0ABqIA8pAwA3AwAgAyAGOgAk +IAMgBToAICADIA02AhwgAyAJNgIYIAMgAykDyAM3A0ggBEHwAGogA0EoakHwARDNTxogA0EYahCp +SyAEQYQDaiAEQbQCaigCACIFIAUgBEG4AmooAgBBzABsahCXGEHEk9sAKAIADQJB1IrbABD7PiIG +Qf8BcUUNAkEAIQVB1IrbACgCACAGEPUuRQ0CQdSK2wAoAgAiBkEoaigCACEMIAZBJGooAgAhCiAG +KAIcIQ4gAyAGQSBqKAIAIgkEfyADQQA2AsALIAMgDDYCvAsgAyAKNgK4CyADIAk2ArQLQQEhBSAO +BUEACzYCsAsgA0HQEmogA0GwC2pB7O/CABDdLCADQbwLakIANwIAIANBATYCtAsgA0Gs8MIANgKw +CyADQaTJwgA2ArgLIAMgBSAJSQR/IAMgBTYCKCADIAw2AiQgAyAKNgIgIAMgCTYCHCAOBUEACzYC +GCADQfgSaiIJIANBGGoiBUHs78IAEN0sIANB9ARqQdDcwgA2AgAgA0HwBGogA0G4BGo2AgAgA0GU +ycIANgLoBCADIAQoArgCNgK4BCADIAk2AuwEIAMgA0GwC2o2AuQEIAMgA0HQEmo2AuAEIAUgBkEc +aiADQeAEahDyQUHUitsAKAIAIAUQxDQMAgsgB0ETOgAAQQMMDwsgB0ETOgAAQQQMDgsgBEGQA2oo +AgBBBGoQ+E0hCiAEQYwKaiIMQQA6AAAgBEGICmogCjYCACAEQawDaiAEKAK4AiIJNgIAIAQgBCgC +tAIiDjYCqAMLQQAhBiADQQhqIAkQxBYgAygCCCIPIAlB/////wNxIgUgBSAPSxshBSADKAIMIQ0D +QCAFBEAgA0GwC2oiECAGIA5qEO0GIAYgDWogEEHMABDNTxogBUEBayEFIAZBzABqIQYMAQsLIANB +sAtqIgUQvgsgA0HIAGogA0HgC2opAwA3AwAgA0FAayADQdgLaikDADcDACADIAMpA9ALNwM4IANB +uBNqIgYgA0GADGooAgA2AgAgAyADKQP4CzcDsBMgAygC6AshDiADQcgSaiIQIANB4AxqKAIANgIA +IAMgAykD2Aw3A8ASIANBuBJqIhEgA0HsDGooAgA2AgAgAyADKQLkDDcDsBIgA0GoEmoiGSADQYQN +aigCADYCACADIAMpAvwMNwOgEiADQZgSaiIUIANBkA1qKAIANgIAIAMgAykDiA03A5ASIANB+BJq +IhYgA0GQDGpBJBDNTxogA0HQEmoiGyADQbQMakEkEM1PGiADQcAEaiIXIANB9AtqKAIANgIAIANB +IGogA0G4C2opAwA3AwAgA0EoaiADQcALaikDADcDACADQTBqIANByAtqKQMANwMAIAMgAykC7As3 +A7gEIAMgAykDsAs3AxggA0GIEmoiHCADQZwNaigCADYCACADIAMpApQNNwOAEiADQagTaiIYIANB +jAxqKAIANgIAIAMgAykChAw3A6ATIANB8AxqELtLIANBkBBqIANBGGpBOBDNTxogA0HgBGoiHSAF +QZgFEM1PGiAEQbADaiAdQZgFEM1PGiAEQcgIaiAONgIAIARBzAhqIAMpA7gENwIAIARB1AhqIBco +AgA2AgAgBEHYCGogAykDsBM3AwAgBEHgCGogBigCADYCACAEQeQIaiADKQOgEzcCACAEQewIaiAY +KAIANgIAIARB8AhqIBZBJBDNTxogBEGUCWogG0EkEM1PGiAEQdgJaiAJNgIAIARB1AlqIA02AgAg +BEHQCWogDzYCACAEQcAJaiAQKAIANgIAIARBuAlqIAMpA8ASNwMAIARBxAlqIAMpA7ASNwIAIARB +zAlqIBEoAgA2AgAgBEHcCWogAykDoBI3AgAgBEHkCWogGSgCADYCACAEQegJaiADKQOQEjcDACAE +QfAJaiAUKAIANgIAIARBgApqIAo2AgAgBEGECmpBADoAACAEQfwJaiAcKAIANgIAIARB9AlqIAMp +A4ASNwIACyADQbALaiAEQbADaiIFIAEQqgIgAy0AsAsiBkEMRg0CIANBlARqIgkgA0GwC2pBAXJB +IxDNTxogBRCJPSAMQQE6AAAgA0G4BGogCUEjEM1PGiAIEJRAIAZBC0cNAyAEQaEDakEAOgAAIANB +sAtqIgUgC0HQABDNTxogCCAFQeABEM1PGiAEQYgFakEAOgAACyADQeAEaiAEQagDaiIFIAEQyAQg +Ay0A4AQiBkEMRg0DIANB0BJqIANB4ARqQQFyQSMQzU8aIAUQ6hsgBkELRw0EIARBkANqKAIAEPhN +IQYgBEGgA2pBADoAACADQZAQaiAEQfAAakHwARDNTxogA0HgBGoiCCADQbALakHQBhDNTxogBSAI +QdAGEM1PGiAEQfwJakEAOgAAIARB+AlqIAY2AgALIANBsAtqIARBqANqIgUgARCqAiADLQCwCyIG +QQxGDQQgA0EYaiADQbALakEBckEjEM1PGiAFEIk9IAZBC0cNBSAEQaADakEAOgAAIAMgBCkAhQM3 +A/gSIAMgBEGMA2ooAAA2AP8SIARBhANqLQAAIQZBEiEFDAgLIAxBAzoAACAHQRM6AABBBQwICyAD +QfgSaiADQbgEakEjEM1PGgwECyAHQRM6AABBBgwGCyADQfgSaiADQdASakEjEM1PGgwCCyAHQRM6 +AABBBwwECyADQfgSaiADQRhqQSMQzU8aCyAEQYQDahC6SyAEQaADai0AAARAIARB8ABqENoaCyAE +QQA6AKADQQ4hBQsgBEGhA2otAABFDQAgCxDrPwsgBEEAOgChAyAEQeACahDJRyAEQfgCahCACCAH +IAU6AAAgBEGiA2pBADoAACAHIAY6AAQgByADLwGUBDsAASAHQQNqIANBlgRqLQAAOgAAIAdBBWog +A0H4EmpBIxDNTxogB0FAayADQfgEaikDADcDACAHQThqIANB8ARqKQMANwMAIAdBMGogA0HoBGop +AwA3AwAgByADKQPgBDcDKEEBCzoAowMgA0EUahCKPSADQcATaiQAIAItAOgXIgZBE0YNCCACQf4M +aiACLQDrFzoAACACIAIvAOkXOwH8DCACKALsFyEIIAIoAvAXIQcgAigC9BchBCACQcAMaiACQfgX +akE4EM1PGiASEIZMDFALIABBAToASCAAQTBqQQA2AgAgAEEgakECNgIAIAJBiAlqIAQoAgA2AgAg +AiACKQP4ATcDgAkLIABB0ABqIg4gAkGQCWpB8AIQzU8aIABBwANqIAM2AgAgAEEAOgDTAyAAQcQD +aiACKQOACTcCACAAQcwDaiACQYgJaigCADYCACAAQdQDaiACQYgCakHsBhDNTxogAEHTA2ohGQwQ +CyAAQdMDaiEZIABB0ABqIQ4CQAJAAkAgAC0A0wNBAWsOBwADEwECQUISC0Gww8QAQSNB5MbEABDm +KwALIABB2ANqIRICQAJAAkAgAEG0BmoiES0AAEEBaw4GCgQWARACAAsgAEGcBmooAgAhBSAAQZgG +aigCACEDDBQLIABBuAZqIQkgAEH1BmohDAJAAkACQAJAIAAtAPUGQQFrDgQCBgEDAAsgAEHEBmoo +AgAhBiAAQcAGaigCACEFIABB8AZqKAIAIQMgAEHsBmooAgAhBwwYCyAAQfgGaiEPAkACQAJAIABB ++AdqIg0tAABBAWsOAwIHAQALIABB/AZqKAIAIQMgACgC+AYhBQwaCyAAQYgHaiEIIABBrQdqIQYC +QAJAAkACQCAALQCtB0EBaw4GEQkCAwAmAQsgAEG0B2ooAgAhAwwkCyAAQagHaigCACEDIABBpAdq +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 +aiIKIAJB+CJqKQMANwMAIAJBkCJqIgsgAkGAI2ooAgA2AgAgAiACLwGEIzsBlCIgAiACKQPwIjcD +gCIgBkEBOgAAIAJBriJqIgYgBC0AADoAACACQaAiaiIEIAopAwA3AwAgAkGoImoiCiALKAIANgIA +IAIgAi8BlCI7AawiIAIgAikDgCI3A5giIAgQuR8CQCADQQtGBEAgAEGAB2ooAgAhByAAQYQHaigC +ACEFDAELIAJBxiJqIAYtAAA6AAAgAkG4ImogBCkDADcDACACQcAiaiAKKAIANgIAIAIgAi8BrCI7 +AcQiIAIgAikDmCI3A7AiCyAAQQE6APgHIAJB5iFqIAJBxiJqLQAAIgQ6AAAgAkHYIWogAkG4Imop +AwAiJDcDACACQeAhaiACQcAiaigCACIGNgIAIAJB/iFqIgggBDoAACACIAIvAcQiIgQ7AeQhIAIg +AikDsCIiJTcD0CEgAiAEOwH8ISACQfghaiIEIAY2AgAgAkHwIWoiBiAkNwMAIAIgJTcD6CEgDxDa +PyADQQtHDQIgAEELOgDIBiAAIAU2ArgGIABB0AZqIAc2AgAgAEHMBmogBTYCACAAQfQGakEAOgAA +IABBvAZqIAc2AgAgAkGwIWoiAyACQcQhaikCADcDACACQbghaiIEIAJBzCFqKAIANgIAIAIgAikC +vCE3A6ghIABB/AdqKAIAIQcgAEGACGooAgAhBSACQeAgaiIGIAJBmCRqQcYAEM1PGiAAQfwGaiAF +NgIAIABB+AZqIg8gBzYCACAAQYAHaiACKQOoITcCACAAQYgHaiADKQMANwIAIABBkAdqIAQoAgA2 +AgAgAEEAOgCZByAAQZQHaiAJNgIAIABBmgdqIAZBPhDNTxogAEGZB2ohDSAJCyEDIABBmAdqQQE6 +AAAgAEGAB2ogAzYCACAAQdwHaiAFNgIAIABB2AdqIAAoAvgGNgIAIABBjAdqQQA2AgAgAEGEB2pC +gICAgMAANwIAIABBnAdqIAMoAgQ2AgAgAEHUB2pBADoAAAtBAyAAQZwHaiIDIAEQxQciBEUNBBog +AEGQB2ogBDYCACADENk/IABBgAdqKAIAKAIAIgMoAlgiBEEASA0BIANB2ABqIgMgBEEBajYCACAC +QZgkaiADEMMvIAIoApgkDQIgAkGgJGooAgAhBCACKAKcJCEIIABBmAdqQQA6AAAgAEGEB2ohCiAA +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 +Qeohai0AADoAACADQRBqIAJBqCNqQTgQzU8aIAMgBToAUCADICQ3A0ggAyACKALIIjYAUSADQdQA +aiACKADLIjYAACAAIAAoAtAGQQFqNgLQBgwGCyACQbIiaiADQQJqLQAAOgAAIAIgAy8AADsBsCIg +AkHgIGogDEE4EM1PGiAAQdQGahCCBSAAQcgGahC4SwsgAkHSIWoiAyACQbIiai0AADoAACACIAIv +AbAiOwHQISACQagfaiACQeAgakE4EM1PGiALQQE6AAAgBkH/AXEiBUETRg0CIAJBniBqIAMtAAA6 +AAAgAiACLwHQITsBnCAgAkHgH2ogAkGoH2pBOBDNTxogChCbLyAFQRJHDQMgAiAINgKgJCACIAc2 +ApgkIAIgBzYCnCQgAiAHIARB2ABsajYCpCQgAEHQBWogAkGYJGoQ+SYgAkGgJGoiAyAAQZQEaigC +ADYCACACIABBjARqKQIANwOYJCAAQfwEaiIEEPtAIABBhAVqIAMoAgA2AgAgBCACKQOYJDcCACAC +Qd4gaiAAQbMGai0AADoAACACIAAvALEGOwHcICAAQbAGai0AACEGIABBrAZqKAIAIQkgAEGoBmoo +AgAhAyAAQagEaigCACEHIABBrARqKAIAIQQgAkGgIGogAEGwBGpBOBDNTxogAkGoJWogAEHoBGpB +sAEQzU8aIABBtQZqDAgLQQMLOgAAC0EGIQMMAwsgAkHeIGogAkGeIGotAAA6AAAgAiACLwGcIDsB +3CAgAkGgIGogAkHgH2pBOBDNTxoMAwtBACEDDAALAAsgESADOgAADAILIABBqARqENoaIABBqAZq +EKlLIAAtALUGBEAgAEGABGoQqUsLIABBjARqEPtAQYCAgIB4IQMgAEG1BmoLQQA6AAAgAkHuDmoi +BSACQd4gai0AADoAACACIAIvAdwgOwHsDiACQbAOaiACQaAgakE4EM1PGiACQYANaiACQaglakGw +ARDNTxogEUEBOgAAIANBgYCAgHhGDQAgAkHeEGogBS0AADoAACACIAIvAewOOwHcECACQaAQaiAC +QbAOakE4EM1PGiACQfAOaiACQYANakGwARDNTxogEhCcGCADQYCAgIB4Rw0BIAJBjh9qIAJB3hBq +LQAAOgAAIAIgAi8B3BA7AYwfIAJB0B5qIAJBoBBqQTgQzU8aDA8LQQQMDAsgAkG4GGogAkHwDmpB +sAEQzU8aIAJB8xdqIAJB3hBqLQAAOgAAIAIgAi8B3BA7APEXIAJBgBhqIAJBoBBqQTgQzU8aIABB +0ANqQQE6AAAgAiAENgL8FyACIAc2AvgXIAIgCDYC9BcgAiAGOgDwFyACIAk2AuwXIAIgAzYC6Bcg +AEGgAWogAkH4F2pB8AEQzU8aIAJB6BdqEKlLIABBtANqIABB5AJqKAIAIgMgAyAAQegCaigCAEHM +AGxqEJcYAkBBxJPbACgCAA0AQdSK2wAQ+z4iA0H/AXFFDQBBACEFQdSK2wAoAgAgAxD1LkUNAEHU +itsAKAIAIgNBKGooAgAhByADQSRqKAIAIQYgAygCHCEIIAIgA0EgaigCACIEBH8gAkEANgLwECAC +IAc2AuwQIAIgBjYC6BAgAiAENgLkEEEBIQUgCAVBAAs2AuAQIAJBmCRqIAJB4BBqQdTHxAAQ6Swg +AkHsEGpCADcCACACQQE2AuQQIAJBlMjEADYC4BAgAkHkxsQANgLoECACIAQgBUsEfyACIAU2Argl +IAIgBzYCtCUgAiAGNgKwJSACIAQ2AqwlIAgFQQALNgKoJSACQYANaiIEIAJBqCVqIgVB1MfEABDp +LCACQfwXakGcyMQANgIAIAJB+BdqIAJB8CRqNgIAIAJB1MbEADYC8BcgAiAAKALoAjYC8CQgAiAE +NgL0FyACIAJB4BBqNgLsFyACIAJBmCRqNgLoFyAFIANBHGogAkHoF2oQ8kEgAkHoIGogAkGwJWoo +AgA2AgAgAiACKQKoJTcD4CBB1IrbACgCACACQeAgahDENAsgAEHAA2ooAgBBBGoQ+E0hBCAAQdwD +aiAAKALoAiIINgIAIABB2ANqIgkgACgC5AI2AgAgAEHgA2ogAkHgEGpB2AYQzU8aIABBvApqIgxB +ADoAACAAQbgKaiAENgIACyAJKAIAIQVBACEHIAJBGGogCBDEFiAIQcwAbCEUIAIoAhwhCiACQeoX +aiEWIAIoAhgiGyEGA0AgBkUgByAURnJFBEAgBSgCACILIAsoAgAiA0EBajYCACADQQBIDQogBSgC +BCIPIA8oAgAiA0EBajYCACADQQBIDQogBUEIaigCACEXIAUoAkQhHCAFKAIMIg0gDSgCACIDQQFq +NgIAIANBAEgNCiACQYAYaiIDIAVBKGopAgA3AwAgAkH4F2oiGCAFQSBqKQIANwMAIAJB8BdqIh0g +BUEYaikCADcDACACIAVBEGopAgA3A+gXIAJBEGogBUEwahDxLiAFLQBIISAgAigCFCEhIAIoAhAh +IiAFKAI4IhIgEigCACIQQQFqNgIAIBBBAEgNCiAFKAI8IhAgECgCACIRQQFqNgIAIBFBAEgNCiAF +KAJAIhEgESgCACIeQQFqNgIAIB5BAEgNCiAFQcwAaiEFIAJBwCVqIh4gAykDADcDACACQbglaiIj +IBgpAwA3AwAgAkGwJWoiGCAdKQMANwMAIAIgAikD6Bc3A6glIAcgCmoiA0EMaiANNgIAIANBCGog +FzYCACADQQRqIA82AgAgAyALNgIAIANBEGogAikDqCU3AgAgA0EYaiAYKQMANwIAIANBIGogIykD +ADcCACADQShqIB4pAwA3AgAgA0HIAGogIDoAACADQcQAaiAcNgIAIANBQGsgETYCACADQTxqIBA2 +AgAgA0E4aiASNgIAIANBNGogITYCACADQTBqICI2AgAgA0HJAGogAi8A6Bc7AAAgA0HLAGogFi0A +ADoAACAGQQFrIQYgB0HMAGohBwwBCwsgAkHoF2oiAxDGCyACQbANaiACQZgYaikDADcDACACQagN +aiACQZAYaikDADcDACACIAIpA4gYNwOgDSACQbAjaiIFIAJBuBhqKAIANgIAIAIgAikDsBg3A6gj +IAIoAqAYIQcgAkHoH2oiBiACQZgZaigCADYCACACIAIpA5AZNwPgHyACQbAfaiILIAJBpBlqKAIA +NgIAIAIgAikCnBk3A6gfIAJBuA5qIg8gAkG8GWooAgA2AgAgAiACKQK0GTcDsA4gAkGQI2oiDSAC +QcgZaigCADYCACACIAIpA8AZNwOIIyACQZgkaiISIAJByBhqQSQQzU8aIAJB4CBqIhAgAkHsGGpB +JBDNTxogAkHoI2oiESACQawYaigCADYCACACQYgNaiACQfAXaikDADcDACACQZANaiACQfgXaikD +ADcDACACQZgNaiACQYAYaikDADcDACACIAIpAqQYNwPgIyACIAIpA+gXNwOADSACQZgfaiIUIAJB +1BlqKAIANgIAIAIgAikCzBk3A5AfIAJBqCBqIhYgAkHEGGooAgA2AgAgAiACKQK8GDcDoCAgAkGo +GWoQu0sgAkHIHGogAkGADWpBOBDNTxogAkGoJWoiFyADQZgFEM1PGiAAQeADaiAXQZgFEM1PGiAA +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 +ACIENgIAIAEgASkCEDcDACABKAIEIAQQDiABEIg/IAMQxQogAUFAayQACyEVIBpBAToAAAtBAyEH +QQIhAyAFQQJHBEAgHxCwQCAAQQhqEPo+IAAoAgQiASABKAIAQQFrNgIAQQEhByAFIQMLIAAgBzoA +9AogACADQQJHBH8gABD9MgJAIANFBEAgAiAVNgLoFyACQYABNgKIAiACIABB8BVqIAJBiAJqIgEg +AkHoF2oiCBD7JyACIAIoAgAgAigCBBDkQTYC4BAMAQsgAiAVNgLoFyACQYABNgKIAiACQQhqIABB +9BVqIAJBiAJqIgEgAkHoF2oiCBD7JyACIAIoAgggAigCDBDkQTYC4BALIAJB4BBqEJZBIAEQlkEg +CBCWQSAAQfAVahCWQSAAQfQVahCWQUEBBUEDCzoA+BUgAkHAKmokACADQQJGC+9kAhd/A34jAEHw +K2siAyQAIAECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJ/AkACQAJAAkAC +QAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AMkEBaw4EBwMBAgALIAFBADsBMEHEk9sAKAIAQQFL +DQhBlIDbABD7PiIEQf8BcUUNCEGUgNsAKAIAIAQQ9S5FDQhBlIDbACgCACIEQRxqIQUgBEEgaigC +ACIGBEAgBEEoaigCACEJIARBJGooAgAhDCAEKAIcIQcgA0EANgKIECADIAk2AoQQIAMgDDYCgBAg +AyAGNgL8DwsgAyAHNgL4DyADQbgFaiIEIANB+A9qIgdB9KDDABDdLCADQYQQakIANwIAIANBlMnC +ADYCgCEgA0EBNgL8DyADQaShwwA2AvgPIANBpMnCADYCgBAgAyAHNgL8ICADIAQ2AvggIANB8Clq +IAUgA0H4IGoQ4EEgA0GwKGogA0H4KWooAgA2AgAgAyADKQLwKTcDqChBlIDbACgCACADQagoahDE +NAwICyABQThqKAIAIQcgASgCNCEEDAgLIAFBmAJqIRACQAJAAkAgAUHwDGoiES0AAEEBaw4GAQMQ +AiAhAAsgAUHgDGooAgAhDCABQdwMaigCACEHIAFB2AxqKAIAIQQMCgtB4MbCAEEjQdCewwAQ5isA +CyABQfgMaiEMAkACQCABQcgVaiISLQAAQQFrDgQFAgFDAAsgAUGMEWooAgAhBCABQYgRaigCACEH +DA8LIAFB0BVqIRUCQAJAAkAgAUGWF2oiBy0AAEEBaw4GAQMTFgI9AAsgAUGQF2ooAgAhCSABQYwX +aigCACEGDBELQeDGwgBBI0GQh8MAEOYrAAsgAUGYF2ohCQJAAkAgAUGgIGoiDy0AAEEBaw4DBwIB +AAsgAUHEH2ooAgAhBiABQcAfaigCACEEIAFBnCBqKAIAIQogAUGYIGooAgAhCAwVCyABQbMdaiIK +LQAAQQFrDgUCACMlJwELAAsgAUH8F2ooAgAhBiABQfgXaigCACELIAFB8BdqKAIAIQUgAUHoF2oo +AgAhBCABQawdaigCACEIIAFB9BdqKAIADBMLQeDGwgBBI0GcgMMAEOYrAAtB4MbCAEEjQaidwwAQ +5isAC0HgxsIAQSNB5KDDABDmKwALQeDGwgBBI0H8/8IAEOYrAAsgASgCICEEIANB2ABqIAEoAiQo +AgBBCGoQvywgA0HQAGogAygCWCAEKAIYIARBHGooAgAgAygCXCgCaBEFACADKAJQIQQgAUE4aiAD +KAJUIgc2AgAgASAENgI0CyADQfgPaiAEIAIgBygCDBEDACADKAL4DyIEQYOAgIB4Rg0CIANBhAFq +IANB/A9qQSQQzU8aIANB+ABqIgUgA0G4EGopAgA3AwAgA0HwAGoiBiADQbAQaikCADcDACADQegA +aiIJIANBqBBqKQIANwMAIAMgAykCoBA3A2AgAUE0aiIHEJk2IARBgoCAgHhGDQMgASAENgKIASAB +QYwBaiADQYQBakEkEM1PGiABQQE6ADEgAUHIAWogBSkDADcCACABQcABaiAGKQMANwIAIAFBuAFq +IAkpAwA3AgAgAUGwAWogAykDYDcCACABQUBrIAFBiAFqIgRByAAQzU8aIAEoAkBBgYCAgHhGDQEg +AUEBOwEwIAFB0AFqIARByAAQzU8hBCABKALQAUGAgICAeEYEQCADQfgPaiIFEPgLIAVBiKLDACAB +QdQBaiIGEOkRENkiIAcgBhDtKyADQagBaiIGIAcQ7SsgA0G0AWogASgCIBDrCSABQQA6ADAgA0Hw +BGogBEHIABDNTxogA0GQFGogAUEIaikDADcDACADQZgUaiABQRBqKQMANwMAIANBoBRqIAFBGGop +AwA3AwAgAyABKQMANwOIFCABKAIkIQQgASgCKCEHIAEoAiwhDCAFIAZBkAQQzU8aIANBuAVqIgYg +BUHAChDNTxogAUGYAmoiECAGQcAKEM1PGiABQfAMaiIRQQA6AAAgAUHgDGogDDYCACABQdwMaiAH +NgIAIAFB2AxqIAQ2AgAMAQtBBSEHAkBBxJPbACgCAEEDSw0AQaCA2wAQ+z4iAkH/AXFFDQBBACEE +QaCA2wAoAgAgAhD1LkUNAEGggNsAKAIAIgJBHGohBSACQSBqKAIAIgYEQCACQShqKAIAIQggAkEk +aigCACEJIAIoAhwhBCADQQA2AogQIAMgCDYChBAgAyAJNgKAECADIAY2AvwPCyADIAQ2AvgPIANB +uAVqIgIgA0H4D2oiBEGsocMAEN0sIANBhBBqQgA3AgAgA0GUycIANgKAISADQQE2AvwPIANBgKLD +ADYC+A8gA0GkycIANgKAECADIAQ2AvwgIAMgAjYC+CAgA0HwKWoiAiAFIANB+CBqEOBBQaCA2wAo +AgAgAhDENAsMTgsgAUHoDGogBzYCACABQeQMaiAENgIAIAFB8QxqQYACOwAAIANBiBtqIgUgAUGw +BmopAAA3AwAgA0GQG2oiByABQbgGaikAADcDACADQZgbaiIGIAFBwAZqKQAANwMAIAMgAUGoBmop +AAA3A4AbIAFByAZqIBBBkAQQzU8aIAFB7AxqIAw2AgBBxJPbACgCAEEBSw0DQeT/2gAQ+z4iBEH/ +AXFFDQNBACEJQeT/2gAoAgAgBBD1LkUNA0Hk/9oAKAIAIgRBHGohDCAEQSBqKAIAIggEQCAEQShq +KAIAIQogBEEkaigCACELIAQoAhwhCSADQQA2AogQIAMgCjYChBAgAyALNgKAECADIAg2AvwPCyAD +IAk2AvgPIANB+CBqIgQgA0H4D2oiCUGAnsMAEN0sIANBhBBqQgA3AgAgA0GUycIANgL4KSADQQE2 +AvwPIANByJ7DADYC+A8gA0GkycIANgKAECADIAk2AvQpIAMgBDYC8CkgA0GoKGogDCADQfApahDg +QSADQegmaiADQbAoaigCADYCACADIAMpAqgoNwPgJkHk/9oAKAIAIANB4CZqEMQ0DAMLQQUhBwJA +QcST2wAoAgBBA0sNAEGsgNsAEPs+IgJB/wFxRQ0AQQAhBEGsgNsAKAIAIAIQ9S5FDQBBrIDbACgC +ACICQRxqIQUgAkEgaigCACIGBEAgAkEoaigCACEIIAJBJGooAgAhCSACKAIcIQQgA0EANgKIECAD +IAg2AoQQIAMgCTYCgBAgAyAGNgL8DwsgAyAENgL4DyADQbgFaiICIANB+A9qIgRBlKLDABDdLCAD +QYQQakIANwIAIANBlMnCADYCgCEgA0EBNgL8DyADQeiiwwA2AvgPIANBpMnCADYCgBAgAyAENgL8 +ICADIAI2AvggIANB8ClqIgIgBSADQfggahDgQUGsgNsAKAIAIAIQxDQLDE0LIABBDDoAAEEDDE4L +IAFBjAFqIANBhAFqQSQQzU8gAUGCgICAeDYCiAEgA0H+GmogAUGPAWotAAA6AAAgA0HwGmogAUGk +AWopAgA3AwAgA0H4GmogAUGsAWooAgA2AgAgAyABLwCNATsB/BogAyABQZwBaikCADcD6BogAUGU +AWopAgAhGiABQZABaigCACEHLQAAIQQMTAsgASgC5AwoAgAhBCABQfgMaiABQYAHaikDADcDACAB +QYANaiADKQOAGzcAACABQYgNaiAFKQMANwAAIAFBkA1qIAcpAwA3AAAgAUGYDWogBikDADcAACAB +QaQOakEAOgAAIAFBoA5qIARBCGo2AgALIANB+A9qIAFB+AxqIgwgAhCVBCADKALYECIEQQRGDQsg +A0HAG2ogA0H4D2pB4AAQzU8aIANBuBtqIgYgA0H0EGooAgA2AgAgA0GwG2oiCSADQewQaikCADcD +ACADQagbaiIKIANB5BBqKQIANwMAIAMgAykC3BA3A6AbIAwQ+z8gAUHYC2ohBSAEQQNGDQogBSAD +QcAbakHgABDNTyEHIAFB8QxqQQE6AAAgAUG4DGogBDYCACABQdQMaiAGKAIANgIAIAFBzAxqIAkp +AwA3AgAgAUHEDGogCikDADcCACABQbwMaiADKQOgGzcCACABQdgKaiAHQYABEM1PGiABQbgLaigC +AEECRg0JIAFBADoA8QwgAUGoIGogB0GAARDNTyEEIANByABqIAFB2CBqELFGIAMgAykDSDcC+CAg +A0FAayABQeQMaigCABDCRCADIAMpA0A3AvgPAkAgA0H4IGogA0H4D2oQl0FFDQAgBBDbQEUNACAB +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 +AAA7AZwdIAMgAUHoC2opAAA3A4gdIAFB4AtqKQMAIRogAUHcC2ooAgAhByABLQDYCyEEDDYLQQMM +LQsgAUEBOgCyHSABQYAYakEANgIADAcLIANB2CtqIANBhBBqKQIANwMAIANB4CtqIANBjBBqKAIA +NgIAIAMgAykC/A83A9ArQQshBAwZCyABQeQMaigCABCzTSgCCCEEIAFB+A1qQQA6AAAgAUH8DGog +AUHoDGooAgA2AgAgASAEQQhqNgL4DAsgA0HwKWogAUH4DGoiBiACEPUGIAMtAPApIgRBDEYNASAD +Qe4caiIIIAMtAPMpOgAAIANB2BxqIgkgA0GEKmopAgA3AwAgA0HgHGoiDCADQYwqaikCADcDACAD +IAMvAPEpOwHsHCADIAMpAvwpNwPQHCADKAL0KSEHIAMoAvgpIQUgBhDaPyAEQQtHDQIgAUELOgD4 +DCABQYANaiAFNgIAIAFB/AxqIAc2AgAgAUGgDWogBTYCACABQZwNaiIEIAc2AgAgA0HoJmoiBSAD +QbAoaigCADYCACADIAMpAqgoNwPgJiABQYAHaikDACEaIANB+CBqIgcgA0H4D2pBPxDNTxogAUGo +DWogGjcDACABQaQNaiAENgIAIAFBsA1qIAMpA+AmNwIAIAFBuA1qIAUoAgA2AgAgAUG8DWpBADoA +ACABQb0NaiAHQT8QzU8aCyADQfgPaiABQaQNaiIFIAIQiwYgAy0A+A8iBEEMRg0CIANBhh1qIgIg +Ay0A+w86AAAgA0H4HGoiBiADQZAQaikCADcDACADQYAdaiIIIANBmBBqKAIANgIAIAMgAy8A+Q87 +AYQdIAMgAykCiBA3A/AcIAMoAvwPIQcgAykCgBAhGiAFEKk4IARBC0YNMiADQZ4daiACLQAAOgAA +IANBkB1qIAYpAwA3AwAgA0GYHWogCCgCADYCACADIAMvAYQdOwGcHSADIAMpA/AcNwOIHQwvC0EF +DCcLIAFBlA1qIAwpAwA3AgAgAUGMDWogCSkDADcCACABQYQNaiADKQPQHDcCACABQYANaiICIAU2 +AgAgASAEOgD4DCABQfkMaiADLwHsHCIFOwAAIAFB/AxqIAc2AgAgAUH7DGogCC0AACIGOgAAIANB +nh1qIAY6AAAgA0GYHWogAUGYDWooAAA2AgAgA0GQHWogAUGQDWopAAA3AwAgAyAFOwGcHSADIAFB +iA1qKQAANwOIHSACKQMAIRoMLQtBBgwlC0EAIQhBACEEIAsEQCADQSBqIAEoAqgdEMRNIANBGGog +AygCICADKAIkEMIwIANB+A9qIAMoAhggAygCHCALIAYQpgggAygC+A8iBkUNCSADQcgraiILIANB +jBBqKAIANgIAQQwhBCADQcAraiINIANBhBBqKQIANwMAIAMgAykC/A83A7grIANBiCpqIANBkBBq +QbABEM1PGiADQfwpaiANKQMANwIAIANBhCpqIAsoAgA2AgAgAyAGNgLwKSADIAMpA7grNwL0KSAB +QagXaiADQbQrahCAG0UNCyADKALwKSEEIANBqChqIANB9ClqQcQBEM1PGgsgA0HgJmoiBiADQago +akHEARDNTxogAUHIGWoiCyAENgIAIAFBAToAsR0gAUHMGWogBkHEARDNTxogBQRAIANBEGogASgC +qB0QxE0gA0EIaiADKAIQIAMoAhQQwjAgA0H4D2ogAygCCCADKAIMIAUgExCnCCADKAL4DyIFRQ0H +IANByCtqIgYgA0GMEGooAgA2AgBBDCEEIANBwCtqIgggA0GEEGopAgA3AwAgAyADKQL8DzcDuCsg +A0GIKmogA0GQEGpBsAEQzU8aIANB/ClqIAgpAwA3AgAgA0GEKmogBigCADYCACADIAU2AvApIAMg +AykDuCs3AvQpIAFBpBdqIANBtCtqEIAbRQ0IIAMoAvApIQggA0GoKGogA0H0KWpBxAEQzU8aCyAD +QeAmaiIEIANBqChqQcQBEM1PGiABQZAbaiAINgIAIAFBAToAsB0gAUGUG2ogBEHEARDNTxogAUGA +GGoiBCgCAEUNASABQQA6ALIdIAFB9B1qIARByAEQzU8aIAEoAqgdKAIMIQQgAUHwHWpBADoAACAB +QbgdaiAEQQhqNgIACyABQbgdaiIEIAIQugciBUUNCCADIAU2AvgPIAQQ2T8gAygC+A9BFGoiBBCT +RSAEIAFB9B1qQcgBEM1PGiADQfgPahCaTCABQZAbaigCACEICyAIRQ0BIAFBsB1qQQA6AAAgAUH0 +HWogAUGQG2pByAEQzU8aIAFBqB1qKAIAKAIUIQQgAUHwHWpBADoAACABQbgdaiAEQQhqNgIACyAB +QbgdaiIEIAIQugciBUUNCiADIAU2AvgPIAQQ2T8gAygC+A9BFGoiBBCTRSAEIAFB9B1qQcgBEM1P +GiADQfgPahCaTAsgAUHIGWoiBCgCAEUNASABQbEdakEAOgAAIAFB9B1qIARByAEQzU8aIAFBqB1q +KAIAKAIQIQQgAUHwHWpBADoAACABQbgdaiAEQQhqNgIACyABQbgdaiIEIAIQugciBUUNBiADIAU2 +AvgPIAQQ2T8gAygC+A9BFGoiBBCTRSAEIAFB9B1qQcgBEM1PGiADQfgPahCaTAsgAUGQG2oiBCgC +AEUNCyABQbAdai0AAA0GDAsLIANB2CtqIANBhBBqKQIANwMAIANB4CtqIANBjBBqKAIANgIAIAMg +AykC/A83A9ArQQshBAwICyADQfApahC+RyADQfgmaiADQcAoaikCACIaNwMAIANB8CZqIANBuChq +KQIAIhs3AwAgA0HoJmogA0GwKGopAgAiHDcDACADQdgraiAcNwMAIANB4CtqIBs3AwAgA0HoK2og +GjcDACADIAMpAqgoIho3A+AmIAMgGjcD0CsMBwsgA0HYK2ogA0GEEGopAgA3AwAgA0HgK2ogA0GM +EGooAgA2AgAgAyADKQL8DzcD0CtBCyEEDAcLQQMMBAsgA0HwKWoQvkcgA0H4JmogA0HAKGopAgAi +GjcDACADQfAmaiADQbgoaikCACIbNwMAIANB6CZqIANBsChqKQIAIhw3AwAgA0HYK2ogHDcDACAD +QeAraiAbNwMAIANB6CtqIBo3AwAgAyADKQKoKCIaNwPgJiADIBo3A9ArDAULQQUMAgsgBBC+RwwE +C0EECyEGQQ4hBAwECyABQQA6ALAdIAsQk0ULIAFBADoAsR0gAUGAGGoQk0UMAQsgAUGwHWpBADoA +AAJAIAFByBlqIgQoAgBFDQAgAUGxHWotAABFDQAgBBC+RwsgAUGxHWpBADoAAAJAIAFBgBhqIgQo +AgBFDQAgAUGyHWotAABFDQAgBBC+RwsgAUGyHWohDkENIQQLIA5BADoAACAJEN0/IANBuCZqIANB +6CtqKQMANwMAIANBsCZqIANB4CtqKQMANwMAIANBqCZqIANB2CtqKQMANwMAIAMgAykD0Cs3A6Am +QQEhBgsgCiAGOgAAIARB/wFxQQ5GDQEgA0HYJmogA0G4JmopAwA3AwAgA0HQJmogA0GwJmopAwA3 +AwAgA0HIJmogA0GoJmopAwA3AwAgAyADKQOgJjcDwCYgCRCNESAEQQh2IQgLIANB6B5qIgUgA0HY +JmopAwA3AwAgA0HgHmoiBiADQdAmaikDADcDACADQdgeaiIKIANByCZqKQMANwMAIAMgAykDwCY3 +A9AeIA9BAToAACADQfgeaiILIAopAwA3AwAgA0GAH2oiCiAGKQMANwMAIANBiB9qIgYgBSkDADcD +ACADIAMpA9AeNwPwHiAJEIQ9IARB/wFxQQ1HBEAgA0GgIGogBikDADcDACADQZggaiAKKQMANwMA +IANBkCBqIAspAwA3AwAgAyADKQPwHjcDiCAMBQtBxJPbACgCAEECSw0BQcCR2wAQ+z4iBEH/AXFF +DQFBACEGQcCR2wAoAgAgBBD1LkUNAUHAkdsAKAIAIgRBKGooAgAhCCAEQSRqKAIAIQogBCgCHCEL +IAMgBEEgaigCACIFBH8gA0EANgKIECADIAg2AoQQIAMgCjYCgBAgAyAFNgL8D0EBIQYgCwVBAAs2 +AvgPIANB4CZqIANB+A9qQaCHwwAQ3SwgA0GEEGpCADcCACADQQE2AvwPIANB5IfDADYC+A8gA0Gk +ycIANgKAECADIAUgBksEfyADIAY2AoAqIAMgCDYC/CkgAyAKNgL4KSADIAU2AvQpIAsFQQALNgLw +KSADQagoaiIGIANB8ClqIgVBoIfDABDdLCADQYwhakHsh8MANgIAIANBiCFqIANBqCBqNgIAIANB +lMnCADYCgCEgAyABQYQXaigCADYCqCAgAyAGNgKEISADIANB+A9qNgL8ICADIANB4CZqNgL4ICAF +IARBHGogA0H4IGoQ8kFBwJHbACgCACAFEMQ0DAELIA9BAzoAAEEFDAILIANBsB9qIAFBiBdqKAIA +QRRqEOAQIANB+A9qIgQQvgsgA0GwIGoiBSADQcgQaigCADYCACADIAMpA8AQNwOoICADKAKwECEG +IANByCZqIgggA0GoEWooAgA2AgAgAyADKQOgETcDwCYgA0GoJmoiCiADQbQRaigCADYCACADIAMp +AqwRNwOgJiADQdgeaiILIANBwBFqKAIANgIAIAMgAykDuBE3A9AeIANBwCtqIg8gA0HMEWooAgA2 +AgAgAyADKQLEETcDuCsgA0HgH2oiDiADQdgRaigCADYCACADIAMpA9ARNwPYHyADQfApaiITIANB +2BBqQSQQzU8aIANBqChqIg0gA0H8EGpBJBDNTxogA0HoJmoiFCADQbwQaigCADYCACADQZgfaiAD +QYAQaikDADcDACADQaAfaiADQYgQaikDADcDACADQagfaiADQZAQaikDADcDACADIAMpArQQNwPg +JiADIAMpA/gPNwOQHyADQdAfaiIWIANB5BFqKAIANgIAIAMgAykC3BE3A8gfIANB2CtqIhcgA0HU +EGooAgA2AgAgAyADKQLMEDcD0CsgA0GYEGoQlEUgAUGAF2ooAgAhGCADQdgUaiADQZAfakE4EM1P +GiADQfggaiIZIARBmAUQzU8aIAkgGUGYBRDNTxogAUGwHGogBjYCACABQbQcaiADKQPgJjcCACAB +QbwcaiAUKAIANgIAIAFBwBxqIAMpA6ggNwMAIAFByBxqIAUoAgA2AgAgAUHMHGogAykD0Cs3AgAg +AUHUHGogFygCADYCACABQdgcaiATQSQQzU8aIAFB/BxqIA1BJBDNTxogAUGoHWogCCgCADYCACAB +QaAdaiADKQPAJjcDACABQawdaiADKQOgJjcCACABQbQdaiAKKAIANgIAIAFBuB1qIAMpA9AeNwMA +IAFBwB1qIAsoAgA2AgAgAUHEHWogAykDuCs3AgAgAUHMHWogDygCADYCACABQdgdaiAOKAIANgIA +IAFB0B1qIAMpA9gfNwMAIAFB6B1qIBg2AgAgAUHsHWpBADoAACABQeQdaiAWKAIANgIAIAFB3B1q +IAMpA8gfNwIACyADQfgPaiABQZgXaiIFIAIQqgIgAy0A+A8iBEEMRwRAIANB8B9qIgYgA0GEEGop +AgA3AwAgA0H4H2oiCSADQYwQaikCADcDACADQYAgaiIKIANBlBBqKQIANwMAIAMgAykC/A83A+gf +IAMvAPkPIQggAy0A+w8hCyAFEIk9IARBC0YNBCAIIAtBEHRyIQggA0GgIGogCikDADcDACADQZgg +aiAJKQMANwMAIANBkCBqIAYpAwA3AwAgAyADKQPoHzcDiCAMAgtBBgshASAHIAE6AAAMBgsgAUGI +F2oQmkwgAUGVF2pBADoAAAsgAUGUF2pBADoAAAwCCyABQYgXahCaTCABQZUXakEAOgAAIAFB5BZq +LQAAQQJGDQAgAUGUF2otAABFDQAgAUGwFmoQ3T8LIAFBlBdqQQA6AABBDSEECyADQbgdaiIGIANB +oCBqKQMANwMAIANBsB1qIgkgA0GYIGopAwA3AwAgA0GoHWoiCiADQZAgaikDADcDACADIAMpA4gg +NwOgHSAHQQE6AAAgBEH/AXFBDkYNASABQacVaiAIQRB2OgAAIAFBpRVqIgUgCDsAACABQaQVaiIH +IAQ6AAAgAUHKFWpBAToAACABQagVaiADKQOgHTcCACABQbAVaiAKKQMANwIAIAFBuBVqIAkpAwA3 +AgAgAUHAFWogBikDADcCACAVEK0cIActAAAiBEENRw0CIAEgAUHcFGo2AtAVIAFB1BVqIAMpAvgg +NwIAIAFB8BVqQQA6AAAgAUHMFWogAUGQEWooAgA2AgAgAUHcFWogA0GAIWopAgA3AgAgAUHkFWog +A0GIIWopAgA3AgAgAUHsFWogA0GQIWooAgA2AgALIANB+A9qIAFBzBVqIgUgAhDdAiADLQD4DyIE +QQxGDQMgA0HWHWoiAiADLQD7DzoAACADQcgdaiIGIANBkBBqKQIANwMAIANB0B1qIgggA0GYEGoo +AgA2AgAgAyADLwD5DzsB1B0gAyADKQKIEDcDwB0gAygC/A8hByADKQKAECEaIAUQh0AgBEELRg0I +IANB8h1qIAItAAA6AAAgA0HgHWogBikDADcDACADQegdaiAIKAIANgIAIAMgAy8B1B07AfAdIAMg +AykDwB03A9gdIAFBpBVqLQAAIgJBDUcNAgwGC0EDDAMLIARBC08EQCABQQA6AMoVIANB+CBqIAdB +JBDNTxpBxJPbACgCAEEDSw0GQcz/2gAQ+z4iBEH/AXFFDQZBACECQcz/2gAoAgAgBBD1LkUNBkHM +/9oAKAIAIgRBKGooAgAhBSAEQSRqKAIAIQYgBCgCHCEIIAMgBEEgaigCACIHBH8gA0EANgKIECAD +IAU2AoQQIAMgBjYCgBAgAyAHNgL8D0EBIQIgCAVBAAs2AvgPIANBkB9qIANB+A9qQbidwwAQ3Swg +A0H8KWpCADcCACADQQE2AvQpIANB6J3DADYC8CkgA0GkycIANgL4KSADIAIgB08Ef0EABSADIAU2 +AoQQIAMgBjYCgBAgAyAHNgL8DyADIAI2AogQIAJBAWohAiAICzYC+A8gA0GoIGogA0H4D2pBuJ3D +ABDdLCADIAFBlBFqNgKoHiADIAIgB0kEfyADIAI2ArgoIAMgBTYCtCggAyAGNgKwKCADIAc2Aqwo +IAgFQQALNgKoKCADQeAmaiIFIANBqChqIgJBuJ3DABDdLCADQZgQakHwncMANgIAIANBjBBqQeyH +wwA2AgAgA0GUEGogA0H0HWo2AgAgA0GIEGogA0GoHmo2AgAgA0GUycIANgKAECADIAU2ApAQIAMg +A0GoIGo2AoQQIAMgA0HwKWo2AvwPIAMgA0GQH2o2AvgPIAMgA0H4IGo2AvQdIAIgBEEcaiADQfgP +ahDhQUHM/9oAKAIAIAIQxDQMBgsgA0HyHWogBUECai0AADoAACADQeAdaiABQbwVaikAADcDACAD +QegdaiABQcQVaigAADYCACADIAUvAAA7AfAdIAMgAUG0FWopAAA3A9gdIAFBrBVqKQIAIRogASgC +qBUhByAEIQILIAJBC0kNAyABQcoVai0AAEUNAyABQaQVahDZMQwDC0EECyEBIBIgAToAAEEECyEB +IBEgAToAAAwMCyABQcoVakEAOgAAIAFBlBFqEIVAIAFByRVqIQIMBAsgA0H4IGoQ2TELIAFByhVq +QQA6AAAMAQsgAUEAOgDJFSADQfgPaiAFQZAEEM1PGiAEQewBaigCACICIAQoAuQBRgRAIARB5AFq +IAIQoDUgBCgC7AEhAgsgBEHoAWooAgAgAkGQBGxqIANB+A9qQZAEEM1PGiAEIAQoAuwBQQFqNgLs +AQtBCyEEIAFByRVqIgItAABFDQAgAUGUEWoQhUALIAJBADoAACADQbYcaiICIANB8h1qLQAAOgAA +IANBqBxqIgUgA0HgHWopAwA3AwAgA0GwHGoiBiADQegdaigCADYCACADIAMvAfAdOwG0HCADIAMp +A9gdNwOgHCASQQE6AAAgA0HOHGoiCCACLQAAOgAAIANBwBxqIgIgBSkDADcDACADQcgcaiIFIAYo +AgA2AgAgAyADLwG0HDsBzBwgAyADKQOgHDcDuBwgDBD2KyAEQQtGDQIgA0GeHWogCC0AADoAACAD +QZAdaiACKQMANwMAIANBmB1qIAUoAgA2AgAgAyADLwHMHDsBnB0gAyADKQO4HDcDiB0gAUGoIGoQ +xDsLIAFBuAtqKAIAQQJGDQAgAUHxDGotAABFDQAgAUHYCmoQxDsLIAFB8QxqQQA6AAAgAUHyDGoi +Ai0AAA0CDAMLIAFBqCBqEMQ7CwJAIAFBuAtqKAIAQQJGDQAgAUHxDGotAABFDQAgAUHYCmoQxDsL +IAFB8QxqQQA6AABBCyEEIAFB8gxqIgItAABFDQELIAFByAZqEIVACyACQQA6AAAgA0HOGmoiAiAD +QZ4dai0AADoAACADQcAaaiIFIANBkB1qKQMANwMAIANByBpqIgYgA0GYHWooAgA2AgAgAyADLwGc +HTsBzBogAyADKQOIHTcDuBogEUEBOgAAIARB/wFxIghBDEYNACADQeYaaiACLQAAOgAAIANB2Bpq +IAUpAwA3AwAgA0HgGmogBigCADYCACADIAMvAcwaOwHkGiADIAMpA7gaNwPQGiAQEIkWIAhBC0cN +ASABQThqKQMAIRogASgCNCEHDAILIABBDDoAAEEEDAQLIANB/hpqIANB5hpqLQAAOgAAIANB8Bpq +IANB2BpqKQMANwMAIANB+BpqIANB4BpqKAIANgIAIAMgAy8B5Bo7AfwaIAMgAykD0Bo3A+gaIAFB +NGoQ1D8gAUEAOgAwDAILIAEtADAEQCABQdABahDvPwsgAUEAOgAwC0ELIQQgASgCQEGBgICAeEYN +ACABLQAxRQ0AIAFBQGsQ7z8LIAAgBDoAACABQQA6ADEgACADLwH8GjsAASAAIBo3AgggACAHNgIE +IAAgAykD6Bo3AhAgAEEDaiADQf4aai0AADoAACAAQRhqIANB8BpqKQMANwIAIABBIGogA0H4Gmoo +AgA2AgBBAQs6ADIgA0HwK2okAAvxQwIOfwJ+IwBB4BprIgIkAAJAAkACfwJAAkACQAJAAkAgAgJ/ +AkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAxBAWsOBBEKDwEACyAAKAIAIQpBASEDAkACQEEM +IAAoAggiBCgCAEH+////B2oiBiAGQRFPG0ECaw4PAwMDAwMDAwNNTQ9NTQABTQsgCigCAEGQAWog +BEEEahCrDQxMCyAAIAo2AhAgAEEcakEAOgAAIABBGGogBEEEaiIHNgIAIABBFGogACgCBCIDNgIA +DA8LIABBEGohDQJAIABB0AVqIg4tAABBAWsOAwwJAwALIABBzAVqKAIAIQQgAEHIBWooAgAhCgwB +CyAAQdAFaiIOQQA6AAAgAEHMBWogBDYCACAAQcgFaiAKNgIAIABBEGohDQsgCigCACEDIABBADoA +OSAAQTRqIAQ2AgAgAEEwaiADQQhqIgM2AgAgAEE5aiEPDAELIABBOWohDwJAIAAtADlBAWsOBAgG +AgUACyAAQTRqKAIAIQQgAEEwaigCACEDCyAAQThqQQA6AABBxJPbACgCAEECSw0BQayG2wAQ+z4i +BkH/AXFFDQFBrIbbACgCACAGEPUuRQ0BIAJB+AdqIgVBrIbbACgCACIGQRxqQbDAwQAQ1EEgDSAG +IAUQxDIgAEEBOgA4IABBGGooAgBBAkYNAiAAQQA6ADggAkHgE2oiBiANQQhqKQMANwMAIAJB6BNq +IgUgDUEQaikDADcDACACQfATaiIHIA1BGGopAwA3AwAgAiANKQMANwPYEyACQZgIaiACQbgFakHA +AhDNTxogAkGQCGogBykDADcDACACQYgIaiAFKQMANwMAIAJBgAhqIAYpAwA3AwAgAiACKQPYEzcD ++AcgAEFAayACQfgHakHgAhDNTxogAEGwA2pBADoAACAAQaQDaiADNgIAIABBoANqIAQ2AgAgAEGx +A2ogAkGgA2pBlwIQzU8aCyACQdgTaiAAQUBrIgMgARDqKCACLQDYEyIEQQxGDQsgAkGBC2ogAkHY +E2pBAXJBIxDNTxogAxDLSwxECyAAQQE6ADggAEEoakEANgIAIABBGGpBAjYCAAsgAEFAayIHIAJB +uAVqQcACEM1PGiAAQZADaiIKQQA6AAAgAEGEA2ogAzYCACAAQYADaiAENgIAIABBkQNqIAJBoANq +QZcCEM1PGgwLCyAAQUBrIQcgAEGQA2oiCi0AAEEBaw4IAQAOCwwWEBMKCwALQcDAwQBBI0HE28EA +EOYrAAtBwMDBAEEjQcTbwQAQ5isAC0HAwMEAQSNB8JXCABDmKwALIAooAgBBkAFqIAQQgTcMPQsg +AEEcai0AAA0DIABBGGooAgAhByAAQRRqKAIAIQMLAkAgBygCAEEDRw0AIAcoAgRBAUsNACACIAdB +CGoiASgCAEEMahCdMSACQfgHaiIEIANBPGogAigCACACKAIEEIcQIAQQkgkhAyACQaADaiIFIAEo +AgAQp1EgBCAHEKZRIAJBuAVqIAMgBSAEEJ8OIAIoArgFQQRGDQAgAkG4BWoQoxMLQQEhAyAAQQE6 +ABxBACEHDDsLQcDAwQBBI0H4ksIAEOYrAAtBAww3C0HAwMEAQSNB6JLCABDmKwALIABBiANqQgA3 +AwAgAEGgAmoiBUEBNgIAIABBpAJqIABBgANqKAIANgIAIAJB+AdqIAUQqTwgAigC+AcNHCAAQQE6 +AI0DIAcgAikC/Ac3AgAgB0EIaiACQYQIaikCADcCACACIAc2AqQLIABBhANqKAIAIQsgAkH4B2og +BRC6BSACKAL4B0EIRg0wIABB8AJqIgMgAikC+Ac3AgAgAEH4AmogAkGACGooAgA2AgACQAJAAkAC +QCADKAIAQQFrDgcBAgMIDQ0OAAtBxJPbACgCAEECSw0tQcSG2wAQ+z4iA0H/AXFFDS1BACEBQcSG +2wAoAgAgAxD1LkUNLUHEhtsAKAIAIghBKGooAgAhDCAIQSRqKAIAIQMgCCgCHCEGIAIgCEEgaigC +ACIJBH8gAkEANgKICCACIAw2AoQIIAIgAzYCgAggAiAJNgL8B0EBIQEgBgVBAAs2AvgHIAJB5Atq +IAJB+AdqQdTbwQAQ2iwgAkGECGpCADcCACACQQE2AvwHIAJBiNzBADYC+AcgAkGwwMEANgKACEEA +IQQgAiABIAlJBH8gAiABNgLoEyACIAw2AuQTIAIgAzYC4BMgAiAJNgLcEyAGBUEACzYC2BMgAkHA +DGoiAyACQdgTaiIBQdTbwQAQ2iwgAkHIAGogAEH0AmoQizQgAkHsE2pBkNzBADYCACACQegTaiAC +QdgLajYCACACQaDAwQA2AuATIAIgAikDSDcC2AsgAiADNgLkEyACIAJB+AdqNgLcEyACIAJB5Atq +NgLYEyACQcQLaiAIQRxqIAEQ8kEgAkG4C2ogAkHMC2ooAgA2AgAgAiACKQLECzcDsAtBxIbbACgC +ACACQbALahDENAwtCyAAKAKEAyEBIAJB4ABqIAUQzyAgAigCZCEDIAIoAmAhBiACQdgAaiAHEPQ1 +IAJB+AdqIAEgBiADIAIoAlggAigCXBDLByACLQC4CEECRg0yIAJB2BNqIgEgAkH4B2pByAAQzU8a +AkAgARCsTSAHEPMmRQRAIAJBpAtqEKIIDAELIAJB0ABqIAUQzyAgAkHYE2ogAigCUCACKAJUIABB +9AJqEPIDCyACQdgTahCQFAwtCyAAKAKEAyEBIAJBmAFqIAUQzyAgAigCnAEhBiACKAKYASEEIAJB +kAFqIAcQ9DUgAkHYE2ogASAEIAYgAigCkAEgAigClAEQywcgAi0AmBRBAkcEQCACQfgHaiIBIAJB +2BNqQcgAEM1PGiACQYgBaiAFEM8gIAEgAigCiAEgAigCjAEgAEH0AmoQ6QMgARCQFAsgACgChAMh +ASACQYABaiAFEM8gIAIoAoQBIQYgAigCgAEhBCACQfgAaiAHEPQ1IAJB+AdqIAEgBCAGIAIoAngg +AigCfBDQQSACKQP4ByIQQgJRDSwgAkGACGohASAQUARAIAJB2BNqIgQgAUHIARDNTxogAkHoAGog +BRDPICACQcAMaiIBIAQgAigCaCACKAJsIAMQ5AMgARCRPiAEELcjDC0LIAJB2BNqIgMgAUG4ARDN +TxogAkHwAGogBRDPICADIAIoAnAgAigCdCAAQfQCahC0AyADEJ0bDCwLIABB/AJqIABB9AJqNgIA +IAAoAoQDIQMgAkHQAWogBRDPICACKALUASEGIAIoAtABIQQgAkHIAWogBxD0NSAAQagCaiIIIAMg +BCAGIAIoAsgBIAIoAswBEMsHIABBAToAiQMgAEHoAmotAABBAkcEQCAAQQA6AIkDIABBoANqIAhB +yAAQzU8iBhCsTSAHEPMmDQMgAkGkC2oQoggMKQsgAEHIAGooAgANKSAAKAKEAyEDIAJBuAFqIAUQ +zyAgAigCuAEhBiACKAK8ASEFIAJBsAFqIAAoAvwCEN9KIAIoArABIQQgAigCtAEhCCAAQbgDakEA +OgAAIABBqANqIAg2AgAgAEGkA2ogBDYCACAAQaADaiAFNgIAIABBnANqIAY2AgAgAEGYA2ogAzYC +AAsgAkH4B2ogAEGYA2oiAyABEJwEIAIoAvgHIgZBAkYNDCACQaQOaiACQfgHakEEckEkEM1PGiAD +EOY/IAYNECADQRBqIAJBuA5qKQIAIhA3AgAgAEEANgKwAyADIAIpAqgOIhE3AgAgAEG4A2ogETcC +ACAAQYgDakEBOgAAIABByANqIBA3AgAgAEHAA2ogAkGwDmopAgAiEDcCACADQQhqIBA3AgAgAEGs +A2ooAgBFDQ8gAEEAOgCIAyACQaAIaiACQagOaiIDQRBqKQIANwMAIAJBmAhqIANBCGopAgA3AwAg +AiADKQIANwOQCCAAQYQDaigCACEDIAJB2BNqIgUgAkH4B2pB1AAQzU8aIABB2ANqIAVB1AAQzU8a +IABBADoAsQQgAEGsBGogAzYCAAsgAkH4B2ogAEHYA2oiAyABELUCIAIoAugIIgFBA0YNECACLQD4 +ByEEIAJBtQ9qIAJB+AdqQQFyQSMQzU8aIAJB6A5qIAJBnAhqQcwAEM1PGiACQeAOaiIGIAJBhAlq +KAIANgIAIAJB2A5qIgUgAkH8CGopAgA3AwAgAkHQDmoiCCACQfQIaikCADcDACACIAIpAuwINwPI +DiADELIXIAFBAkYNESACQfwPaiACQegOakHMABDNTxogAkHkEGogBigCADYCACACQdwQaiAFKQMA +NwIAIAJB1BBqIAgpAwA3AgAgAiAEOgDYDyACIAIpA8gONwLMECACQdgPaiIDQQFyIAJBtQ9qQSMQ +zU8aIAIgATYCyBAgAEEAOgCNAyACQeATaiAHQQhqKQIANwMAIAIgBykCADcD2BMgAkH4B2ogAkHY +E2ogAEH8AmooAgAgA0EAIABBABCuByACKQP4B1BFDQwgAkHoEGoiASACQYAIakHIARDNTxogACgC +hANBKGogARCBAwwNCyACQcABaiAFEM8gIAAoAvwCIQUgAikDwAEhEEGwBxDCOSIDQQA6ALwCIAMg +BTYCtAIgAyAGNgKwAiADIBA3AwAgAEGYA2ogAzYCAAsgAkH4B2ogAEGYA2oiAyABEJRKIAItAPgH +IgRBDEYNFiACQYEOaiACQfgHakEBckEjEM1PGiADEM8lIARBC0YNJCACQb0aaiACQYEOakEjEM1P +GiAAQaADahCQFAwjCyAAKAKEAyEGIAJBgAJqIAUQzyAgAigChAIhBCACKAKAAiEIIAJB+AFqIAcQ +9DUgAkHYE2ogBiAIIAQgAigC+AEgAigC/AEQywcgAi0AmBRBAkcEQCACQfgHaiIEIAJB2BNqQcgA +EM1PGiACQfABaiAFEM8gIAQgAigC8AEgAigC9AEQnAMgBBCQFAsgACgChAMhBiACQegBaiAFEM8g +IAIoAuwBIQQgAigC6AEhCCACQeABaiAHEPQ1IABB0ABqIgkgBiAIIAQgAigC4AEgAigC5AEQ0EEg +AEEBOgCMAyAJKQMAIhBCAlYNAgJAIBCnQQFrDgIDIgALIABBoANqIABB2ABqQcgBEM1PIQYgAkHY +AWogBRDPICACQdgTaiAGIAIoAtgBIAIoAtwBIAMQ5AMgAEEBOgCLAyAGEMYrRQ0BIAAoAoQDIQQg +AEEAOgCLAyACKALYEyIFQaCAgIB4RwRAIAIgBTYC+AcgAkH4B2pBBHIgAkHYE2pBBHIiA0GkARDN +TxogAkGwCWogAkGQFWopAwA3AwAgAkGoCWogAkGIFWopAwA3AwAgAiACKQOAFTcDoAkgAkHADGog +A0GkARDNTxogAkGgCWoQ/D4LIAJB+AdqIgwgAkHADGpBpAEQzU8aQdgMEMI5IgMgBTYCACADQQRq +IAxBpAEQzU8aIANBADoA0AwgAyAGNgLEDCADIAQ2AsAMIABBmANqIAM2AgALIAJB+AdqIABBmANq +IgMgARD7AiACLQD4ByIEQQxGDQ8gAkHNGGogAkH4B2pBAXJBIxDNTxogAxDWMCAEQQtHDRELIAAt +AIsDDQ8MHgsgAEGgA2ogAEHYAGpBuAEQzU8hBkGoDBDCOSIDQQA6ACUgAyAAQfQCajYCICADIAY2 +AhwgAEGYA2ogAzYCAAsgAkH4B2ogAEGYA2oiAyABELoCIAIoAqgJIgFBA0YNDyACLQD4ByEEIAJB +jRpqIAJB+AdqQQFyIgZBIxDNTxogAkGAGWogAkGcCGoiBUGMARDNTxogAkH4GGogAkG0CWooAgA2 +AgAgAiACKQKsCTcD8BggAxDsGyABQQJGDRAgBSACQYAZakGMARDNTxogBiACQY0aakEjEM1PGiAC +IAQ6APgHIAIoAvgHQaCAgIB4RwRAIABBhANqKAIAIAJB2BNqIgUgAkH4B2oQhQ1BKGogBRDuBgsg +AQRAIAJBuBpqIAJB+BhqKAIANgIAIAIgAikD8Bg3A7AaIABBhANqKAIAIAJB2BNqIgMgAkGwGmoQ +liNBKGogAxDuBgsgAEGgA2oQnRsMHQsgACgChAMhASACQagCaiAFEM8gIAIoAqwCIQYgAigCqAIh +BCACQaACaiAHEPQ1IAJB+AdqIAEgBCAGIAIoAqACIAIoAqQCENFBIAIoApgJQQJGDRMgAkHYE2oi +BCACQfgHaiIBQcgBEM1PGiACIAQQ8E02AsAMIAIgBzYC+AcgAkHADGogARCeRQ0UIAJBmAJqIAUQ +zyAgAkH4B2ogAkHYE2ogAigCmAIgAigCnAIgAxDkAyACKAL4B0GggICAeEcEQCACQaAVaiIFIAJB ++AdqQagBEM1PGiACQdgWaiACQbAJaikDADcDACACQdAWaiACQagJaikDADcDACACIAIpA6AJNwPI +FiAAKAKEAyACQZACaiACQdgTaiIEENhBIAIoApQCIQMgAigCkAIgAkGIAmogBBDZQSADIAIoAogC +IAIoAowCIAUgAkHIFmoQ7EAgBBC3IwwiCyACQfgHahCRPgwaCyAAKAKEAyEGIAJB0AJqIAUQzyAg +AigC1AIhBCACKALQAiEIIAJByAJqIAcQ9DUgAkH4B2ogBiAIIAQgAigCyAIgAigCzAIQ0UECQCAC +KAKYCUECRwRAIAIgAEGgA2ogAkH4B2oiBEHIARDNTyIGEPBNNgLYEyACIAc2AvgHIAJB2BNqIAQQ +nkUNAyACQcACaiAFEM8gIAJB2BNqIAYgAigCwAIgAigCxAIgAxDkAyAAQYECOwGOAyAAQQE6AIoD +IAYQxisNAUGggICAeCEDQQshBCACKALYE0GggICAeEYNGCAAQQA6AI8DIAJBiBdqIgQgAkHYE2pB +qAEQzU8aIABBADoAjgMgAkG4GGogAkGIFWopAwA3AwAgAkHAGGogAkGQFWopAwA3AwAgAiACKQOA +FTcDsBggACgChAMgAkG4AmogBhDYQSACKAK8AiEDIAIoArgCIAJBsAJqIAYQ2UEgAyACKAKwAiAC +KAK0AiAEIAJBsBhqEOxADBoLIAJB+AdqEPRCDCYLIAAoAoQDIQQgAEEAOwGOAyAAQQA6AIoDIAIo +AtgTIgNBoICAgHhHBEAgAiADNgL4ByACQfgHakEEciACQdgTakEEciIFQaQBEM1PGiACQbAJaiAC +QZAVaikDADcDACACQagJaiACQYgVaikDADcDACACIAIpA4AVNwOgCSACQcAMaiAFQaQBEM1PGiAC +QaAJahD8PgsgAkH4B2oiDCACQcAMakGkARDNTxpB2AwQwjkiBSADNgIAIAVBBGogDEGkARDNTxog +BUEAOgDQDCAFIAY2AsQMIAUgBDYCwAwgAEGYA2ogBTYCAAsgAkH4B2ogAEGYA2oiBiABEPsCIAIt +APgHIgRBDEYNCCACQeUWaiACQfgHakEBckEjEM1PGiAGENYwIARBC0YNFyACQb0aaiACQeUWakEj +EM1PGgwVCyACQaQLahCiCEELIQQMFQtBBAwNCyACQbASaiIMIAJBgAhqQagBEM1PGiAAKAKEAyAC +QagBaiAAQaACahDPICACKAKsASEDIAIoAqgBIAJBoAFqIAAoAvwCEN9KIAIoAqQBIQUgAigCoAEh +BCACQQA2AtgTIAMgBCAFIAwgAkHYE2oQ7EALIABBrANqKAIARQ0AIABBiANqLQAARQ0AIABBmANq +EPsfCyAAQYgDakEAOgAADBgLIABBtANqIAJBpA5qQSQQzU8gAEEBNgKwAy0AACEEIAJBvRpqIABB +tQNqQSMQzU8aDA4LQQUMCAsgAkG9GmogAkG1D2pBIxDNTxoMDAtBBgwGC0EHDAULIAJB2BNqEJE+ +DA4LIAJBvRpqIAJBzRhqQSMQzU8aIABBADoAiwMgAEGgA2oQtyMMBwtBCAwCCyACQb0aaiACQY0a +akEjEM1PGiAAQaADahCdGwwFC0EDCyEHIAogBzoAAAwYCyAAQY0DaiEDQQshBAwVCyACQfgHahD0 +QgwSCyACQaQLahCiCAwFCyAAQYwDakEAOgAADBELIABBiANqQQA6AAAMBgsCQCADQaCAgIB4Rg0A +IAAtAIoDRQ0AIAAtAI8DBEAgAkHYE2oQgwMLIAAtAI4DRQ0AIAJBgBVqEPw+CyAAQQA7AY4DIABB +ADoAigMLIABBoANqELcjDA4LIABBADsBjgMgAEEAOgCKAyAAQaADahC3IwwHCyACQdgTahC3IwwL +CyAAQQA6AIsDIABBoANqELcjCyAAQYwDakEAOgAADAQLAkAgAEHoAmotAABBAkYNACAALQCJA0UN +ACAAQagCahCQFAsgAEEAOgCJAwwJCyAAQaADahCQFAsCQCAAQegCai0AAEECRg0AIAAtAIkDRQ0A +IABBqAJqEJAUCyAAQQA6AIkDDAELIAJBOGogBRDLJiACKQM4p0EBRwRAQQshBEHEk9sAKAIAQQNL +DQdB0IbbABD7PiIDQf8BcUUNB0EAIQFB0IbbACgCACADEPUuRQ0HQdCG2wAoAgAiCEEoaigCACEL +IAhBJGooAgAhDCAIKAIcIQUgCEEgaigCACIJDQRBAAwFCyACIAIpA0AiEDcDqAsCQCAQEJgjBEAg +AkEgaiAAQfQCaiIIEIs0IAIgAikDIDcC2BMgAkEYaiAFEM8gIAIgAikDGDcC+AcgAkH4B2ogCxCN +NkUNASACQdgTaiALQQhqEI02RQRAIAUoAgANAgtBxJPbACgCAA0HQeiG2wAQ+z4iAUH/AXFFDQdB +ACEEQeiG2wAoAgAgARD1LkUNB0HohtsAKAIAIgZBKGooAgAhCSAGQSRqKAIAIQsgBigCHCEBIAZB +IGooAgAiBQ0DQQAMBAtBxJPbACgCAA0GQdyG2wAQ+z4iAUH/AXFFDQZBACEDQdyG2wAoAgAgARD1 +LkUNBkHchtsAKAIAIghBKGooAgAhCSAIQSRqKAIAIQsgCCgCHCEBIAIgCEEgaigCACIEBH8gAkEA +NgKICCACIAk2AoQIIAIgCzYCgAggAiAENgL8B0EBIQMgAQVBAAs2AvgHIAJBsAtqIAJB+AdqQaDc +wQAQ2iwgAkHkE2pCADcCACACQQE2AtwTIAJB+NzBADYC2BMgAkGwwMEANgLgE0EAIQUgAiADIARP +BH9BAAUgAiAJNgKECCACIAs2AoAIIAIgBDYC/AcgAiADNgKICCADQQFqIQMgAQs2AvgHIAJBxAtq +IAJB+AdqQaDcwQAQ2iwgAkEoaiAAQfQCahCLNCACIAIpAyg3AtgLIAIgAyAESQR/IAIgAzYC0Awg +AiAJNgLMDCACIAs2AsgMIAIgBDYCxAwgAQVBAAs2AsAMIAJB5AtqIgEgAkHADGoiA0Gg3MEAENos +IAJBmAhqQYDdwQA2AgAgAkGMCGpBkNzBADYCACACQZQIaiACQeALajYCACACQYgIaiACQdgLajYC +ACACQaDAwQA2AoAIIAIgATYCkAggAiACQcQLajYChAggAiACQdgTajYC/AcgAiACQbALajYC+Acg +AiACQagLajYC4AsgAyAIQRxqIAJB+AdqEOFBQdyG2wAoAgAgAxDENAwGCyAAKAKEAygCKCIBIAEo +AgAiA0EBajYCACADQQBIDQggAkH4B2oiBCAAKAKEAxCLFCACQRBqIAUQzyAgAigCFCEDIAIoAhAh +BiAAQQA6AI0DIAJB4BNqIAdBCGopAgA3AwAgAiAHKQIANwPYEyACQfgLaiIFIAEgBCAGIAMgAkHY +E2ogCBCsByAAKAKEAyAFEN4CCyAAQY0DaiEDQQshBCAALQCNA0UNBiAHEPw8DAYLIAJBADYCiAgg +AiAJNgKECCACIAs2AoAIIAIgBTYC/AdBASEEIAELNgL4ByACQeQLaiACQfgHakGQ3cEAENosIAJB +hAhqQgA3AgAgAkEBNgL8ByACQeDdwQA2AvgHIAJBsMDBADYCgAhBACEDIAIgBCAFSQR/IAIgBDYC +6BMgAiAJNgLkEyACIAs2AuATIAIgBTYC3BMgAQVBAAs2AtgTIAJBwAxqIgEgAkHYE2oiA0GQ3cEA +ENosIAJBCGogCBCLNCACQewTakGQ3MEANgIAIAJB6BNqIAJBsAtqNgIAIAJBoMDBADYC4BMgAiAC +KQMINwKwCyACIAE2AuQTIAIgAkH4B2o2AtwTIAIgAkHkC2o2AtgTIAJBxAtqIgEgBkEcaiADEPJB +QeiG2wAoAgAgARDENAwCCyACQQA2AogIIAIgCzYChAggAiAMNgKACCACIAk2AvwHQQEhASAFCzYC ++AcgAkHkC2ogAkH4B2pB6N3BABDaLCACQYQIakIANwIAIAJBATYC/AcgAkG43sEANgL4ByACQbDA +wQA2AoAIQQAhAyACIAEgCUkEfyACIAE2AugTIAIgCzYC5BMgAiAMNgLgEyACIAk2AtwTIAUFQQAL +NgLYEyACQcAMaiIBIAJB2BNqIgNB6N3BABDaLCACQTBqIABB9AJqEIs0IAJB7BNqQZDcwQA2AgAg +AkHoE2ogAkGwC2o2AgAgAkGgwMEANgLgEyACIAIpAzA3ArALIAIgATYC5BMgAiACQfgHajYC3BMg +AiACQeQLajYC2BMgAkHEC2oiASAIQRxqIAMQ8kFB0IbbACgCACABEMQ0DAELQQshBAsgBxD8PCAA +QY0DaiEDCyADQQA6AAAgAkHeCmogAkG9GmpBIxDNTxogCkEBOgAAIARB/wFxQQxGDQEgAkGBC2og +AkHeCmpBIxDNTxogBxDDDwwDCwALQQQLIQcgDyAHOgAAIA5BAzoAAEEBIQdBBCEDDAELIABBOGot +AAAEQCANENkiC0EAIQcgAEEAOgA4IAJB/QJqIgEgAkGBC2pBIxDNTxpBASEDIABBAToAOSACQdoC +aiABQSMQzU8aIA0Qzy0gBEH/AXFBC0cEQCACIAQ6APgHIAJB+AdqQQFyIAJB2gJqQSMQzU8aAkBB +xJPbACgCAEEESw0AQdCM2wAQ+z4iAUH/AXFFDQBBACEKQdCM2wAoAgAgARD1LkUNAEHQjNsAKAIA +IgFBHGohBiABQSBqKAIAIgUEQCABQShqKAIAIQQgAUEkaigCACEIIAEoAhwhCiACQQA2AsgFIAIg +BDYCxAUgAiAINgLABSACIAU2ArwFCyACIAo2ArgFIAJBoANqIgUgAkG4BWoiAUGAlsIAENosIAJB +xAVqQgE3AgAgAkGgwMEANgLgEyACQQE2ArwFIAJBuJbCADYCuAUgAkHNATYCxAwgAiABNgLcEyAC +IAU2AtgTIAIgAkHADGo2AsAFIAIgAkH4B2o2AsAMIAJB6BBqIgEgBiACQdgTahDgQUHQjNsAKAIA +IAEQxDQLIAJB+AdqELAaCyAOQQE6AAAgDRD2QgsgACADOgAMIAJB4BpqJAAgBwvtPgJefxx+IwBB +4AVrIgIkACAAQSRqKAIAIRQgACkDICJgQgN8ImKnIS4gYEICfCJhpyEvIGBCAXwiYKchHyBiQiCI +pyEHIGFCIIinIQggYEIgiKchFSACQfAEaiERIAJB4ARqIRYgAkHQBGohFyACQcABaiEgIAJBsAFq +ISEgAkGgAWohIiACQZABaiEjIAJBgAFqISQgAkFAayElIAJBMGohJiACQSBqIScgAkEQaiEoIAAo +AiAhMEH0yoHZBiExQbLaiMsHITJB7siBmQMhKUHl8MGLBiEzQQYhSSACQbQBaiFWIAJBpAFqIVcg +AkGUAWohWCACQYQBaiFZIAJBvAFqIVogAkGsAWohWyACQZwBaiFcIAJBjAFqIV0gACgCACIEITQg +ACgCBCIDITUgACgCCCIFITYgAEEMaigCACIGIT4gBCIqIT8gAyIYITcgBSISIUAgBiIrIUEgACgC +ECIKIUIgAEEUaigCACILISwgAEEYaigCACIMIRkgAEEcaigCACINIUNB5fDBiwYhREHuyIGZAyFF +QbLaiMsHIUZB9MqB2QYhR0Hl8MGLBiFKQe7IgZkDIUtBstqIywchTEH0yoHZBiFNQeXwwYsGIU5B +7siBmQMhT0Gy2ojLByFQQfTKgdkGIVEgCiIaIVIgCyIbITggDCITIRwgDSItIVMgAEEoaigCACIO +IR0gAEEsaigCACIPIUggDiIQIVQgDyIeITkDQCBJBEAgAkH0AWoiOiAHNgIAIAJB5AFqIjsgCDYC +ACACQdQBaiI8IBU2AgAgAkHEAWoiPSAUNgIAIFYgODYCACBXIBs2AgAgWCAsNgIAIFkgCzYCACAC +QfQAaiI4IDc2AgAgAkHkAGoiNyAYNgIAIAJB1ABqIlUgNTYCACACQcQAaiI1IAM2AgAgAkE0aiJe +ICk2AgAgAkEkaiJfIEU2AgAgAkEUaiJFIEs2AgAgAkH4AWoiByBUNgIAIAJB6AFqIgggEDYCACAC +QdgBaiIQIB02AgAgAkHIAWoiCSAONgIAIAJBuAFqIhggHDYCACACQagBaiIbIBM2AgAgAkGYAWoi +KSAZNgIAIAJBiAFqIiwgDDYCACACQfgAaiILIEA2AgAgAkHoAGoiDCASNgIAIAJB2ABqIg4gNjYC +ACACQcgAaiISIAU2AgAgAkE4aiITIDI2AgAgAkEoaiIUIEY2AgAgAkEYaiIVIEw2AgAgAkH8AWoi +GSA5NgIAIAJB7AFqIhwgHjYCACACQdwBaiIeIEg2AgAgAkHMAWoiHSAPNgIAIFogUzYCACBbIC02 +AgAgXCBDNgIAIF0gDTYCACACQfwAaiItIEE2AgAgAkHsAGoiMiArNgIAIAJB3ABqIisgPjYCACAC +QcwAaiI2IAY2AgAgAkE8aiJIIDE2AgAgAkEsaiJGIEc2AgAgAkEcaiJHIE02AgAgAiAuNgLwASAC +IC82AuABIAIgHzYC0AEgAiAwNgLAASACIFI2ArABIAIgGjYCoAEgAiBCNgKQASACIAo2AoABIAIg +PzYCcCACICo2AmAgAiA0NgJQIAIgBDYCQCACIDM2AjAgAiBENgIgIAIgSjYCECACIE42AgAgAiBP +NgIEIAIgUDYCCCACIFE2AgwgAkHABGoiOSIfICVBwAAQzU8aIAJByANqIgMgJUEIaiIqKQIANwMA +IAIgJSkCADcDwAMgAkGIBGoiBCACKQMINwMAIAIgAikDADcDgAQgAiACQYAEaiIFIAJBwANqIgYQ +0iwgAyAXQQhqIgopAgA3AwAgAiAXKQIANwPAAyAEIChBCGoiGikCADcDACACICgpAgA3A4AEICgg +BSAGENIsIAMgFkEIaiINKQIANwMAIAIgFikCADcDwAMgBCAnQQhqIi4pAgA3AwAgAiAnKQIANwOA +BCAnIAUgBhDSLCADIBFBCGoiDykCADcDACACIBEpAgA3A8ADIAQgJkEIaiIvKQIANwMAIAIgJikC +ADcDgAQgJiAFIAYQ0iwgCSACKQMIIAkpAwCFImCnQRB3NgIAIBAgFSkDACAQKQMAhSJip0EQdzYC +ACAIIBQpAwAgCCkDAIUiYadBEHc2AgAgByATKQMAIAcpAwCFImOnQRB3NgIAIB0gYEIgiKdBEHc2 +AgAgPSACKQMAIAIpA8ABhSJgQiCIp0EQdzYCACAeIGJCIIinQRB3NgIAIDwgAikDECACKQPQAYUi +YkIgiKdBEHc2AgAgHCBhQiCIp0EQdzYCACA7IAIpAyAgAikD4AGFImFCIIinQRB3NgIAIBkgY0Ig +iKdBEHc2AgAgOiACKQMwIAIpA/ABhSJjQiCIp0EQdzYCACACIGCnQRB3NgLAASACIGKnQRB3NgLQ +ASACIGGnQRB3NgLgASACIGOnQRB3NgLwASAfICBBwAAQzU8aIAMgIEEIaiIfKQIANwMAIAIgICkC +ADcDwAMgBCAkQQhqIjApAgA3AwAgAiAkKQIANwOABCAkIAUgBhDSLCADIAopAgA3AwAgAiAXKQIA +NwPAAyAEICNBCGoiMSkCADcDACACICMpAgA3A4AEICMgBSAGENIsIAMgDSkCADcDACACIBYpAgA3 +A8ADIAQgIkEIaiIzKQIANwMAIAIgIikCADcDgAQgIiAFIAYQ0iwgAyAPKQIANwMAIAIgESkCADcD +wAMgBCAhQQhqIjQpAgA3AwAgAiAhKQIANwOABCAhIAUgBhDSLCASICwpAwAgEikDAIUiYKdBDHc2 +AgAgDiApKQMAIA4pAwCFImKnQQx3NgIAIAwgGykDACAMKQMAhSJhp0EMdzYCACALIBgpAwAgCykD +AIUiY6dBDHc2AgAgNiBgQiCIp0EMdzYCACA1IAIpA4ABIAIpA0CFImBCIIinQQx3NgIAICsgYkIg +iKdBDHc2AgAgVSACKQOQASACKQNQhSJiQiCIp0EMdzYCACAyIGFCIIinQQx3NgIAIDcgAikDoAEg +AikDYIUiYUIgiKdBDHc2AgAgLSBjQiCIp0EMdzYCACA4IAIpA7ABIAIpA3CFImNCIIinQQx3NgIA +IAIgYKdBDHc2AkAgAiBip0EMdzYCUCACIGGnQQx3NgJgIAIgY6dBDHc2AnAgOSAlQcAAEM1PGiAD +ICopAgA3AwAgAiAlKQIANwPAAyAEIAIpAwg3AwAgAiACKQMANwOABCACIAUgBhDSLCADIAopAgA3 +AwAgAiAXKQIANwPAAyAEIBopAgA3AwAgAiAoKQIANwOABCAoIAUgBhDSLCADIA0pAgA3AwAgAiAW +KQIANwPAAyAEIC4pAgA3AwAgAiAnKQIANwOABCAnIAUgBhDSLCADIA8pAgA3AwAgAiARKQIANwPA +AyAEIC8pAgA3AwAgAiAmKQIANwOABCAmIAUgBhDSLCAJIAIpAwggCSkDAIUiYKdBCHc2AgAgECAV +KQMAIBApAwCFImKnQQh3NgIAIAggFCkDACAIKQMAhSJhp0EIdzYCACAHIBMpAwAgBykDAIUiY6dB +CHc2AgAgHSBgQiCIp0EIdzYCACA9IAIpAwAgAikDwAGFImBCIIinQQh3NgIAIB4gYkIgiKdBCHc2 +AgAgPCACKQMQIAIpA9ABhSJiQiCIp0EIdzYCACAcIGFCIIinQQh3NgIAIDsgAikDICACKQPgAYUi +YUIgiKdBCHc2AgAgGSBjQiCIp0EIdzYCACA6IAIpAzAgAikD8AGFImNCIIinQQh3NgIAIAIgYKdB +CHc2AsABIAIgYqdBCHc2AtABIAIgYadBCHc2AuABIAIgY6dBCHc2AvABIDkgIEHAABDNTxogAyAf +KQIANwMAIAIgICkCADcDwAMgBCAwKQIANwMAIAIgJCkCADcDgAQgJCAFIAYQ0iwgAyAKKQIANwMA +IAIgFykCADcDwAMgBCAxKQIANwMAIAIgIykCADcDgAQgIyAFIAYQ0iwgAyANKQIANwMAIAIgFikC +ADcDwAMgBCAzKQIANwMAIAIgIikCADcDgAQgIiAFIAYQ0iwgAyAPKQIANwMAIAIgESkCADcDwAMg +BCA0KQIANwMAIAIgISkCADcDgAQgISAFIAYQ0iwgHSgCACE+IB4oAgAhPyAcKAIAIUAgGSgCACFB +IBUpAwAhbCAUKQMAIW0gEykDACFuICwpAwAhYCASKQMAIWggKSkDACFiIA4pAwAhaSAbKQMAIWEg +DCkDACFqIBgpAwAhYyALKQMAIWsgCSgCACFCIBAoAgAhQyAIKAIAIUQgAikDACFvIAIpAwghcCAC +KQMQIXEgAikDICFyIAIpAzAhcyACKQNAIXQgAikDUCF1IAIpA2AhdiACKQNwIXcgAikDgAEhZCAC +KQOQASFlIAIpA6ABIWYgAikDsAEhZyACKQPAASF4IAIpA9ABIXkgAikD4AEheiACKQPwASF7IBkg +BygCADYCACA6IHs3AgAgHCBENgIAIDsgejcCACAeIEM2AgAgPCB5NwIAIB0gQjYCACA9IHg3AgAg +GCBnNwMAIBsgZjcDACApIGU3AwAgLCBkNwMAIC0gZyB3hSJnp0EHdzYCACALIGMga4Uia0IgiKdB +B3c2AgAgOCBrp0EHdzYCACAyIGYgdoUiZqdBB3c2AgAgDCBhIGqFImpCIIinQQd3NgIAIDcgaqdB +B3c2AgAgKyBlIHWFImWnQQd3NgIAIA4gYiBphSJpQiCIp0EHdzYCACBVIGmnQQd3NgIAIDYgZCB0 +hSJkp0EHdzYCACASIGAgaIUiaEIgiKdBB3c2AgAgNSBop0EHdzYCACATIG43AwAgFCBtNwMAIBUg +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 +aiA3NgIAIAJB7AJqICs2AgAgAkHoAmogEjYCACACQeQCaiAYNgIAIAJB3AJqID42AgAgAkHYAmog +NjYCACACQdQCaiA1NgIAIAIgPzYC8AIgAiAqNgLgAiACIDQ2AtACIAIgBjYCzAIgAiAFNgLIAiAC +IAM2AsQCIAIgBDYCwAIgAkG8A2ogUzYCACACQbgDaiAcNgIAIAJBtANqIDg2AgAgAkGsA2ogLTYC +ACACQagDaiATNgIAIAJBpANqIBs2AgAgAkGcA2ogQzYCACACQZgDaiAZNgIAIAJBlANqICw2AgAg +AiBSNgKwAyACIBo2AqADIAIgQjYCkAMgAiANNgKMAyACIAw2AogDIAIgCzYChAMgAiAKNgKAAyAC +QfwDaiA5NgIAIAJB+ANqIFQ2AgAgAkH0A2ogBzYCACACQewDaiAeNgIAIAJB6ANqIBA2AgAgAkHk +A2ogCDYCACACQdwDaiBINgIAIAJB2ANqIB02AgAgAkHUA2ogFTYCACACIC42AvADIAIgLzYC4AMg +AiAfNgLQAyACIA82AswDIAIgDjYCyAMgAiAUNgLEAyACIDA2AsADIABBDGooAgAhCiAAQRxqKAIA +IQsgAEEYaigCACEMIABBFGooAgAhDSAAKAIIIQ4gACgCBCEPIAAoAgAhKiAAKAIQIRggAkG8BGog +CTYCACACQawEaiAJNgIAIAJBnARqIAk2AgAgFyAJNgIAIBYgETYCACAAQSRqIGBCBHwiYkIgiD4C +ACAAIGI+AiAgAiBgQgN8ImE+ArAEIAJBtARqIBGtQiCGImIgYUIgiIQ3AgAgAiBgQgJ8ImE+AqAE +IAJBpARqIGFCIIggYoQ3AgAgAiBgQgF8ImE+ApAEIAJBlARqIGFCIIggYoQ3AgAgAiAJNgKMBCAC +IBE2AogEIAIgYDcDgAQgAkHABGoiAEEANgIQIAAgAkHAAmoiAzYCCCAAIAM2AgQgACACQYACaiIF +NgIAIABBDGogAkGAA2oiBDYCACAAIAMgBWtBBHYiBTYCGCAAIAUgBCADa0EEdiIDIAMgBUsbNgIU +IAJBADYCJCACIAQ2AhwgAiAAKQIANwIAIAJBIGogAkHAA2oiBTYCACACQQhqIABBCGopAgA3AgAg +AkEQaiAAQRBqIgMpAgA3AgAgAkEYaiAAQRhqKAIANgIAIAIgACgCFCADKAIAayIDNgIsIAIgAyAF +IARrQQR2IgQgAyAESRs2AiggAigCJCEEIAIoAighBiAAIAJBMBDNTyIDIAYgBGsiBDYCQCADQQA2 +AjggA0E0aiACQYAEaiIGNgIAIAMgBTYCMCADIAQgBiAFa0EEdiIDIAMgBEsbNgI8IAAoAjghBCAA +KAI8IQUgAiAAQcQAEM1PIgMgBSAEayIENgJUIANBADYCTCADQcgAaiAANgIAIAMgBjYCRCADIAQg +ACAGa0EEdiIAIAAgBEsbNgJQQQAhAyACKAJQIgQgAigCTCIAayIFQQAgBCAFTxshCCACKAJEIABB +BHRqIQQgAigCMCAAIAIoAjhqIgBBBHRqIQUgAigCHCAAIAIoAiRqIgBBBHRqIQYgACACKAIQakEE +dCIAIAIoAgBqIRIgAigCCCAAaiErQQAhBwNAIAgEQCACQZgFaiADIBJqIgBBCGopAgA3AwAgAkGo +BWogAyAraiIaQQhqKQIANwMAIAJBuAVqIAMgBmoiG0EIaikCADcDACACQcgFaiADIAVqIhNBCGop +AgA3AwAgAkHYBWogAyAEaiItQQhqKQIANwMAIAIgACkCADcDkAUgAiAaKQIANwOgBSACIBspAgA3 +A7AFIAIgEykCADcDwAUgAiAtKQIANwPQBSACQrLaiMvHrpmQ6wA3AwggAkLl8MGL5o2ZkDM3AwAg +AkHABGogAkGQBWogAhDSLCAHQYACRg0CIAEgB2oiACACKQPIBDcACCAAIAIpA8AENwAAIAIgCjYC +DCACIA42AgggAiAPNgIEIAIgKjYCACACQcAEaiIaIAJBoAVqIAIQ0iwgAEEYaiACKQPIBDcAACAA +QRBqIAIpA8AENwAAIAIgCzYCDCACIAw2AgggAiANNgIEIAIgGDYCACAaIAJBsAVqIAIQ0iwgAEEo +aiACKQPIBDcAACAAQSBqIAIpA8AENwAAIAIgAkHABWogAkHQBWoQ0iwgAEE4aiACKQMINwAAIABB +MGogAikDADcAACAIQQFrIQggA0EQaiEDIAdBQGshBwwBCwsgAkHgBWokAA8LCwtB3IjYABCjSwAL +uWsCEX8DfiMAQcANayIEJAACQAJAIAECfwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +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 +BUGwA2ogBzYCAAwBCyAFQbQDaigCACEGIAVBsANqKAIAIQcLIANBoARqIAcgAiAGKAIMEQMAIAMp +A6AEIhRCBFENCCADQcgBaiADQagEakEkEM1PGiADQcABaiIGIANB3ARqKAIANgIAIANBuAFqIgcg +A0HUBGopAgA3AwAgAyADKQLMBDcDsAEgBUGwA2oQmTYgFEIDUQ0FIAUgFDcDYCAFQegAaiADQcgB +akEkEM1PGiAFQZwBaiAGKAIANgIAIAVBlAFqIAcpAwA3AgAgBUGMAWogAykDsAE3AgAgBUEgaiAF +QeAAaiIGQcAAEM1PGiAFKQMgQgJSDQIgBUGgAWoiCyAFQfgCaigCACAFQfwCaigCACAFQYADaigC +ACAFQYQDaigCABD+MyAFQawDakEBOgAAIAVBgAJqIAVBsAFqIgcQgRUgA0GQAmoiCRDuUiADQbAC +aiIIIAcQzEQgA0GgBGoiBiAIQcABEM1PGiAJQfCOwwAgBhDnEiAGIAcQzEQgA0GwBmogA0H4BWop +AgA3AwAgA0GoBmoiDCADQfAFaikCADcDACADQaAGaiADQegFaiINKQIANwMAIAMgAykC4AU3A5gG +QfuOwwAgA0GYBmoiDxDmEhDZIiAFQagCaiIJIAsQww4gCUEAEL8WQRhBCBCrOSIHQRBqIAVBuAJq +KQMANwMAIAdBCGogBUGwAmopAwA3AwAgByAJKQMANwMAIAxBCDYCACADQbQGakIINwIAIANBrAZq +QgA3AgAgA0HIA2pBADYCACADQZgCaiIJQQA2AgAgA0IANwKgBiADQcADaiADKQKkBjcDACADQoCA +gICAATcCmAYgAyADKQKwBjcDkAIgBhC+CyADQeACaiADQdAEaikDADcDACADQdgCaiADQcgEaikD +ADcDACADQYADaiADQfAEaigCADYCACADQeADaiADQdAFaigCADYCACADQewDaiADQdwFaigCADYC +ACADIAMpA8AENwPQAiADIAMpA+gENwP4AiADIAMoAtgENgLoAiADIAMpA8gFNwPYAyADIAMpAtQF +NwLkAyADQfgDaiANKAIANgIAIANBhARqIANB9AVqKAIANgIAIANBkARqIANBgAZqKAIANgIAIAMg +AykD4AU3A/ADIAMgAykC7AU3AvwDIAMgAykD+AU3A4gEIANBkANqIANBgAVqQSQQzU8aIANBvANq +QQE2AgAgA0G4A2ogBzYCACADQcwDaiADKQOQAjcCACADQdQDaiAJKAIANgIAIANB9AJqIANB5ARq +KAIANgIAIANBuAJqIANBqARqKQMANwMAIANBwAJqIANBsARqKQMANwMAIANByAJqIANBuARqKQMA +NwMAIANBATYCtAMgAyADKQLcBDcC7AIgAyADKQOgBDcDsAIgA0GcBGogA0GMBmooAgA2AgAgA0GM +A2ogA0H8BGooAgA2AgAgAyADKQKEBjcClAQgAyADKQL0BDcChAMgA0GkBWoQ1j8gDxCwSyADQcgA +aiAFQaACahC2NyADQUBrIAMoAkggCCADKAJMKAIgEQMAIAMoAkAhByAFIAMoAkQiBjYCtAMgBSAH +NgKwAwwBCyAFQbQDaigCACEGIAVBsANqKAIAIQcLIANBoARqIAcgAiAGKAIMEQMAIAMtAKAEIgdB +DEYNASADQZIGaiADLQCjBDoAACADIAMvAKEEOwGQBiADKAKkBCEIIAMoAqgEIQkgAygCrAQhCyAD +KAKwBCEGIAMoArQEIQwgAygCuAQhDSADKAK8BCEPIAMoAsAEIRAgBUGwA2oQmTYgA0GQBmohESAH +QQtHDQkgA0E4aiAFQaACahC2NyADKAI4IQYgAygCPCEHIAVBrANqQQA6AAAgA0GgBGoiCCAFQaAB +akHAABDNTxogA0EwaiAGIAggBygCJBEDACADKAIwIQcgBSADKAI0IgY2ArQDIAUgBzYCsAMMCAsg +A0GYBmogBkHAABDNTxogA0GIAWogA0GoBmoiBhCrTSADIAMpA4gBNwKgBAJAIAVB+AJqIANBoARq +EP8+RQRAIANBgAFqIAYQ4U0gBUGAA2ooAgAgBUGEA2ooAgAgAygCgAEgAygChAEQgDwNAQsgA0H4 +AGogBhCrTSADQfAAaiADKAJ4IAMoAnwQwjAgAygCdCEJIAMoAnAhCCADQegAaiAGEOFNIANB4ABq +IAMoAmggAygCbBDCMCADKAJkIQYgAygCYCELIANB2ABqIAUoAvgCIAVB/AJqKAIAEMIwIAMoAlwh +DSADKAJYIQwgA0HQAGogBUGAA2ooAgAgBUGEA2ooAgAQwjAgAygCVCEQIAMoAlAhDyADQZgGahDV +FkEBIQcMGgsgA0HwAWoiCBDuUiADQbACaiIJIAYQzEQgA0GgBGoiByAJQcABEM1PGiAIQfCOwwAg +BxDnEiAHIAYQzEQgA0GoAmogA0H4BWopAgA3AwAgA0GgAmogA0HwBWopAgA3AwAgA0GYAmogA0Ho +BWopAgA3AwAgAyADKQLgBTcDkAJB+47DACADQZACahDmEhDZIkHEk9sAKAIAQQFLDQZBhIvbABD7 +PiIHQf8BcUUNBkEAIQhBhIvbACgCACAHEPUuRQ0GQYSL2wAoAgAiB0EcaiEJIAdBIGooAgAiCwRA +IAdBKGooAgAhDCAHQSRqKAIAIQ0gBygCHCEIIANBADYCsAQgAyAMNgKsBCADIA02AqgEIAMgCzYC +pAQLIAMgCDYCoAQgA0GwAmoiByADQaAEaiIIQYyPwwAQ3SwgA0GsBGpCADcCACADQZTJwgA2ApgC +IANBATYCpAQgA0G0j8MANgKgBCADQaTJwgA2AqgEIAMgCDYClAIgAyAHNgKQAiADQfABaiAJIANB +kAJqEOBBIANBkAhqIANB+AFqKAIANgIAIAMgAykC8AE3A4gIQYSL2wAoAgAgA0GICGoQxDQMBgsg +CkEMOgAAQQQMGgsgBUG0A2ooAgAhBiAFQbADaigCACEHDAwLIAVB6ABqIANByAFqQSQQzU8gBUID +NwNgIANBogRqIAVB6wBqLQAAOgAAIAMgBS8AaTsBoAQgBUGIAWooAgAhECAFQYQBaigCACEPIAVB +gAFqKAIAIQ0gBUH8AGooAgAhDCAFQfgAaigCACEGIAVB9ABqKAIAIQsgBUHwAGooAgAhCSAFQewA +aigCACEILQAAIQcMFgsgBUHMA2ooAgAhBiAFQcgDaigCACEHDBILQeDGwgBBI0HgjsMAEOYrAAsg +CkEMOgAAQQMMFQsgBUHgAWogBhCBFSADQZgGahDVFgwGCyADQaAEaiAHIAIgBigCDBEDACADLQCg +BCIHQQxGDQEgA0GWBmogAy0AowQ6AAAgAyADLwChBDsBlAYgAygCpAQhCCADKAKoBCEJIAMoAqwE +IQsgAygCsAQhBiADKAK0BCEMIAMoArgEIQ0gAygCvAQhDyADKALABCEQIAVBsANqEJk2IANBlAZq +IREgB0ELRg0CCyADQaIEaiARQQJqLQAAOgAAIAMgES8AADsBoAQgBUGAAmoQgEAgBUGsA2otAAAN +AgwPCyAKQQw6AABBBQwRC0HEk9sAKAIAQQFLDQFBkIvbABD7PiIHQf8BcUUNAUEAIQZBkIvbACgC +ACAHEPUuRQ0BQZCL2wAoAgAiB0EcaiEIIAdBIGooAgAiCQRAIAdBKGooAgAhCyAHQSRqKAIAIQwg +BygCHCEGIANBADYCsAQgAyALNgKsBCADIAw2AqgEIAMgCTYCpAQLIAMgBjYCoAQgA0GYBmoiBiAD +QaAEaiIHQbyPwwAQ3SwgA0GsBGpCADcCACADQZTJwgA2ApgCIANBATYCpAQgA0Hoj8MANgKgBCAD +QaTJwgA2AqgEIAMgBzYClAIgAyAGNgKQAiADQfABaiAIIANBkAJqEOBBIANBkAhqIANB+AFqKAIA +NgIAIAMgAykC8AE3A4gIQZCL2wAoAgAgA0GICGoQxDQMAQsgBUGgAWoQ1RYMDAsgBUGsA2pBADoA +ACAFQfgBaiAFQZgCaikDADcDACAFQfABaiAFQZACaikDADcDACAFQegBaiAFQYgCaikDADcDACAF +QeABaiAFQYACaikDADcDAAsgA0EoaiAFQaACahC2NyADQSBqIAMoAiggAygCLCgCHBEBACADKAIg +IQcgBUG0A2ogAygCJCIGNgIAIAVBsANqIAc2AgALIANBoARqIAcgAiAGKAIMEQMAIAMtAKAEIgdB +DEYNASADQacCaiIGIANBuARqKAAANgAAIANBoAJqIgggA0GxBGopAAA3AwAgA0GYAmoiCSADQakE +aikAADcDACADIAMpAKEENwOQAiADKQK8BCEUIAVBsANqIgsQmTYgB0ELRw0DIAVBCzoAiAMgBUGM +A2ogAykAkwIiFDcAACAFQcACaiAUNwAAIAVBnANqIANBowJqKQAAIhU3AAAgBUGUA2ogA0GbAmop +AAAiFjcAACAFQcgCaiAWNwAAIAVB0AJqIBU3AAAgFKdFDQIgBUHYAmoiByADQZACakEDciIGKQAA +NwAAIAVB6AJqIAZBEGopAAA3AAAgBUHgAmogBkEIaikAADcAACAFQfADakEAOgAAIAUgBzYCsAML +IANBGGogBUGwA2oiBiACEPEPIAMoAhhFDQMgCkEMOgAAQQcMCwsgCkEMOgAAQQYMCgtBxJPbACgC +AEEBSw0CQaiL2wAQ+z4iB0H/AXFFDQJBACEGQaiL2wAoAgAgBxD1LkUNAkGoi9sAKAIAIgdBHGoh +CCAHQSBqKAIAIgkEQCAHQShqKAIAIQwgB0EkaigCACENIAcoAhwhBiADQQA2ArAEIAMgDDYCrAQg +AyANNgKoBCADIAk2AqQECyADIAY2AqAEIANBmAZqIgYgA0GgBGoiB0Hwj8MAEN0sIANBrARqQgA3 +AgAgA0GUycIANgL4ASADQQE2AqQEIANBsJDDADYCoAQgA0GkycIANgKoBCADIAc2AvQBIAMgBjYC +8AEgA0GICGoiBiAIIANB8AFqEOBBQaiL2wAoAgAgBhDENAwCCyAFQYkDaiADKQOQAjcAACAFQaAD +aiILIAYoAAA2AAAgBUGZA2ogCCkDADcAACAFQZEDaiAJKQMANwAAIAUgBzoAiAMgBUGkA2ogFDcC +ACADQaIEaiADLQCSAjoAACADIAMvAZACOwGgBCAUQiCIpyEQIAVBjANqKAIAIQggCygCACENIAVB +nANqKAIAIQwgBUGYA2ooAgAhBiAFQZQDaigCACELIAVBkANqKAIAIQkgFKchDwwECyADKAIcIQcg +BhDbPwJAIAdFBEAgA0EANgKYBgwBCyADIAc2AvABIANBoARqIANB8AFqEMoaIAMgAygCoAQEfyAD +QZwGaiADQaQEakHAARDNTxpBAQVBAAs2ApgGIANB8AFqEK05CwJAQcST2wAoAgBBAUsNAEGci9sA +EPs+IgdB/wFxRQ0AQQAhCEGci9sAKAIAIAcQ9S5FDQBBnIvbACgCACIHQShqKAIAIQsgB0EkaigC +ACEMIAcoAhwhDSADIAdBIGooAgAiCQR/IANBADYCsAQgAyALNgKsBCADIAw2AqgEIAMgCTYCpARB +ASEIIA0FQQALNgKgBCADQeAHaiADQaAEakG4kMMAEN0sIANBrARqQgA3AgAgA0EBNgKkBCADQeyQ +wwA2AqAEIANBpMnCADYCqAQgAyAIIAlJBH8gAyAINgKYCCADIAs2ApQIIAMgDDYCkAggAyAJNgKM +CCANBUEACzYCiAggA0H0B2oiCSADQYgIaiIIQbiQwwAQ3SwgA0GEAmpB9JDDADYCACADQYACaiAD +QZwIajYCACADQZTJwgA2AvgBIAMgCTYC/AEgAyADQaAEajYC9AEgAyADQeAHajYC8AEgAyADQZgG +ajYCnAggCCAHQRxqIANB8AFqEPJBQZyL2wAoAgAgCBDENAsgBkEQaiAFQegCaikDADcDACAGQQhq +IAVB4AJqKQMANwMAIAYgBUHYAmopAwA3AwAMAQsgCyAFQfgCaigCACAFQfwCaigCABC2FAsgA0EQ +aiAFQaACahC2NyADQQhqIAMoAhAgAygCFCgCSBEBACADKAIIIQcgBUHMA2ogAygCDCIGNgIAIAVB +yANqIAc2AgALIANBoARqIAcgAiAGKAIMEQMAAkAgAy0AoAQiB0EMRwRAIANBnghqIhEgAy0AowQ6 +AAAgAyADLwChBDsBnAggAygCpAQhCCADKAKoBCEJIAMoAqwEIQsgAygCsAQhBiADKAK0BCEMIAMo +ArgEIQ0gAygCvAQhDyADKALABCEQIAVByANqEJk2IAdBC0cNASADIAs2ApAIIAMgCTYCjAggAyAI +NgKICAJAIAYEQCADQfgBaiADQZAIaigCADYCACADIAMpAogIIhQ3A/ABIAMgBjYC4AdBACEGIBSn +QYCAgIB4RwRAIANBmAZqIANB4AdqEN5KIANBoARqIAMoApwGIAMoAqAGEIwNAn8CQAJAIAMoAqAE +IgZBCkcEQAJAQQYgBkEEayIGIAZBBk8bDgYDAwMDAwACCyADQaQEahDMOwwCCyADIAMoAqQENgL0 +ByADQfQHaiADQfABahC3FCADKAL0BwwCCyADQaAEahD/PwsgA0GoBGogA0H4AWooAgA2AgAgAyAD +KQPwATcDoAQgA0GgBGoQiD9BAAshBiADQZgGahCIPwsgA0HgB2oQ2UsMAQsgA0GICGoQ+0BBACEG +CyADQagGaiIHIAVBwANqKQIANwMAIANBoAZqIgkgBUG4A2opAgA3AwAgAyAFQbADaikCADcDmAYg +A0GgBGoiCEEBEKcaIANBxARqIAcpAwA3AgAgA0G8BGogCSkDADcCACADIAMpA5gGNwK0BEE0QQQQ +qzkiEUKBgICAEDcCACARQQhqIAhBLBDNTxogCCAFQfgCaigCACAFQfwCaigCACAFQaACaigCACAF +QaQCaigCABCSHUEkQQQQqzkiB0KBgICAEDcCACAHIAMpAqAENwIIIAdBEGogA0GoBGoiEykCADcC +ACAHQRhqIANBsARqIgkpAgA3AgAgB0EgaiADQbgEaiILKAIANgIAIAVBhANqKAIAIQwgBUGAA2oo +AgAhDSALIAVB+AFqKQMANwMAIAkgBUHwAWopAwA3AwAgEyAFQegBaikDADcDACADIAVB4AFqKQMA +NwOgBCANIAwgByAIIBEgBhCFAyEIQQshBwwFCyAKQQw6AABBCAwFCyADQaIEaiARLQAAOgAAIAMg +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 +QSQQzU8gAUIDNwO4ASAEQb4NaiABQcMBai0AADoAACAEIAFBwQFqLwAAOwG8DSABQeABaigCACEN +IAFB3AFqKAIAIQwgAUHYAWooAgAhCyABQdQBaigCACEJIAFB0AFqKAIAIQYgAUHMAWooAgAhCCAB +QcgBaigCACEKIAFBxAFqKAIAIQUtAAAhAwwXC0EDDBMLQQMMGAsgAUG4AmogAxCBFSAEQagIahCv +PgwGCyAEQfAEaiADIAIgBSgCDBEDACAELQDwBCIDQQxGDQEgBEH+DGogBC0A8wQ6AAAgBCAELwDx +BDsB/AwgBCgC9AQhBSAEKAL4BCEKIAQoAvwEIQggBCgCgAUhBiAEKAKEBSEJIAQoAogFIQsgBCgC +jAUhDCAEKAKQBSENIAFBiARqEJk2IARB/AxqIRAgA0ELRg0CCyAEQb4NaiAQQQJqLQAAOgAAIAQg +EC8AADsBvA0gAUHYAmoQgEAgAUGEBGotAAANAgwRC0EFDA4LQcST2wAoAgBBAUsNAUGQi9sAEPs+ +IgNB/wFxRQ0BQQAhBUGQi9sAKAIAIAMQ9S5FDQFBkIvbACgCACIDQRxqIQYgA0EgaigCACIIBEAg +A0EoaigCACEKIANBJGooAgAhCSADKAIcIQUgBEEANgKABSAEIAo2AvwEIAQgCTYC+AQgBCAINgL0 +BAsgBCAFNgLwBCAEQagJaiIDIARB8ARqIgVB2NPEABDpLCAEQfwEakIANwIAIARB1MbEADYCsAgg +BEEBNgL0BCAEQYTUxAA2AvAEIARB5MbEADYC+AQgBCAFNgKsCCAEIAM2AqgIIARBiAlqIAYgBEGo +CGoQ4EEgBEHwCGogBEGQCWooAgA2AgAgBCAEKQKICTcD6AhBkIvbACgCACAEQegIahDENAwBCyAB +QfgBahCvPgwOCyABQYQEakEAOgAAIAFB0AJqIAFB8AJqKQMANwMAIAFByAJqIAFB6AJqKQMANwMA +IAFBwAJqIAFB4AJqKQMANwMAIAFBuAJqIAFB2AJqKQMANwMACyAEQSBqIAFB+AJqELY3IARBGGog +BCgCICAEKAIkKAIcEQEAIAQoAhghAyABQYwEaiAEKAIcIgU2AgAgAUGIBGogAzYCAAsgBEHwBGog +AyACIAUoAgwRAwACQCAELQDwBCIDQQxHBEAgBEGXDWoiBiAEQYgFaigAADYAACAEQZANaiIIIARB +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 +AEEAOgDsAyAAQUBrKAIAIQggAyAAQcQAaigCAEEAIAAoAjwiAhs2AoABIAMgCDYCfCADIAI2Angg +A0EANgJ0IAMgAkEARyIGNgJwIAMgCDYCbCADIAI2AmggA0EANgJkIAMgBjYCYCAEQQhqIRYgA0H4 +BWohFCADQcgFaiETIANB5AVqIRkgA0HYBWohGiADQdAFaiEbIANB8AVqIRwgA0HYDmpBBHIhCyAD +QfAOakEEciENIANB3AlqIR0DQCADQewNaiADQeAAahDTGCADKALsDSICRQRAIANB4ABqEL0kIANB +5A1qEJ8fIAAoAlRBgICAgHhGDQggAEEAOgDpAyAAIABB1ABqIgIpAgA3AoAEIABBiARqIAJBCGoo +AgA2AgAgAEG4BGoiB0EAOgAAIAAgACgC4ANByARqIgI2AowEIABBjARqIQkMBQsgAyADKALwDTYC +hA4gAyACNgKADgJ/IAMoAvQNIggEQCADKAL8DSEMIAMoAvgNIRggCCEXQQEMAQsgDCEIQQAhDEEA +CyECIAMgDDYC0AEgAyAYNgLMASADIBc2AsgBIANBADYCxAEgAyACNgLAASADIBg2ArwBIAMgCDYC +uAEgA0EANgK0ASADIAI2ArABA0AgA0HQCWohAiMAQRBrIgwkACAMQQRqIANBsAFqENkcAkAgDCgC +BCIERQRAIAJBBDYCDAwBCyACQQxqIAQgDCgCDCIGQcQAbGpBiAFqQcQAEM1PGiACQQhqIAQgBkEM +bGoiBEEMaigCADYCACACIARBBGopAgA3AgALIAxBEGokACADKALcCUEERgRAIANBsAFqEKIMIANB +gA5qEPo+IAghDAwCCyADQZAOaiAVKAIANgIAIAMgAykC0Ak3A4gOIANBlA5qIB1BxAAQzU8aIANB +EGogA0GADmoQ8S4gA0HwDmogFiADKAIQIAMoAhQQ3wkCfwJAAkAgAygC8A5FBEAgCyANKQIANwIA +IAtBCGogDUEIaikCADcCAAwBCyADQegOaiADQYAPaikDADcDACADQeAOaiADQfgOaiICKQMANwMA +IAMgAykD8A4iIzcD2A4gI6cNAQsgA0H4DmogC0EIaikCADcDACADIAspAgA3A/AOIANB8A5qEIk7 +DAELIAMQijQgAkGYmtAAKQMANwMAIANBkJrQACkDADcD8A4gAyADKQMINwOIDyADIAMpAwA3A4AP +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 +NgJIIAMgBTYCRCADIAQ2AkAgDCANIA4gA0HgAGoQ+wwgAygC8AIhCCADKAL0AiEJIAMoAvgCIQog +AygC/AIhCyADIAc2AvwCIAMgBjYC+AIgAyAFNgL0AiADIAQ2AvACIAMgCzYCjAMgAyAKNgKIAyAD +IAk2AoQDIAMgCDYCgAMgAyAZQduE28oDaiIENgJMIAMgGEHxo8TPBWoiBTYCSCADIBdB3PqB7gZr +IgY2AkQgAyAWQavCjqcFayIHNgJAIBAgDCANIA4Q+wwgAyAGNgJ8IAMgBzYCeCADIAQ2AnQgAyAF +NgJwIAMoAuACIQQgAygC5AIhBSADKALoAiEGIAMoAuwCIQcgAyALNgKMAyADIAo2AogDIAMgCTYC +hAMgAyAINgKAAyADIAc2AkwgAyAGNgJIIAMgBTYCRCADIAQ2AkAgDCANIA4gA0HwAGoQ+wwgAygC +8AIhCCADKAL0AiEJIAMoAvgCIQogAygC/AIhCyADIAc2AvwCIAMgBjYC+AIgAyAFNgL0AiADIAQ2 +AvACIAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyAVQeiq4b8CayIENgJMIAMgFEGB +to2UAWoiBTYCSCADIBNBvovGoQJqIgY2AkQgAyASQcP7sagFaiIHNgJAIBAgDCANIA4Q+wwgAyAG +NgKMASADIAc2AogBIAMgBDYChAEgAyAFNgKAASADKALgAiEEIAMoAuQCIQUgAygC6AIhBiADKALs +AiEHIAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyAHNgJMIAMgBjYCSCADIAU2AkQg +AyAENgJAIAwgDSAOIANBgAFqEPsMIAMoAvACIQggAygC9AIhCSADKAL4AiEKIAMoAvwCIQsgAyAH +NgL8AiADIAY2AvgCIAMgBTYC9AIgAyAENgLwAiADIAs2AowDIAMgCjYCiAMgAyAJNgKEAyADIAg2 +AoADIAMgEUH0uvmVB2oiBDYCTCADIA9BgpyF+QdrIgU2AkggAyACQdnyj6EGayIGNgJEIAMgAUGM +nZDzA2siBzYCQCAQIAwgDSAOEPsMIAMgBjYCnAEgAyAHNgKYASADIAQ2ApQBIAMgBTYCkAEgAygC +4AIhBCADKALkAiEFIAMoAugCIQYgAygC7AIhByADIAs2AowDIAMgCjYCiAMgAyAJNgKEAyADIAg2 +AoADIAMgBzYCTCADIAY2AkggAyAFNgJEIAMgBDYCQCAMIA0gDiADQZABahD7DCADKALwAiEIIAMo +AvQCIQkgAygC+AIhCiADKAL8AiELIAMgHTYC7AIgAyAcNgLoAiADIBs2AuQCIAMgGjYC4AIgAyAZ +NgL8AiADIBg2AvgCIAMgFzYC9AIgAyAWNgLwAiADIBU2AowDIAMgFDYCiAMgAyATNgKEAyADIBI2 +AoADIAMgETYCTCADIA82AkggAyACNgJEIAMgATYCQCADQdACaiIeIBAgDCANIA4Q8AsgAygC0AIh +GiADKALUAiEbIAMoAtgCIRwgAygC3AIhHSADIAc2AvwCIAMgBjYC+AIgAyAFNgL0AiADIAQ2AvAC +IAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyAdQb+sktsBayIENgJMIAMgHEH68IaC +AWsiBTYCSCADIBtBxruG/gBqIgY2AkQgAyAaQczDsqACaiIHNgJAIBAgDCANIA4Q+wwgAyAGNgKs +ASADIAc2AqgBIAMgBDYCpAEgAyAFNgKgASADKALgAiEEIAMoAuQCIQUgAygC6AIhBiADKALsAiEH +IAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyAHNgJMIAMgBjYCSCADIAU2AkQgAyAE +NgJAIAwgDSAOIANBoAFqEPsMIAMoAvACIQggAygC9AIhCSADKAL4AiEKIAMoAvwCIQsgAyAZNgLs +AiADIBg2AugCIAMgFzYC5AIgAyAWNgLgAiADIBU2AvwCIAMgFDYC+AIgAyATNgL0AiADIBI2AvAC +IAMgETYCjAMgAyAPNgKIAyADIAI2AoQDIAMgATYCgAMgAyAdNgJMIAMgHDYCSCADIBs2AkQgAyAa +NgJAIB4gECAMIA0gDhDwCyADKALQAiEWIAMoAtQCIRcgAygC2AIhGCADKALcAiEZIAMgBzYC/AIg +AyAGNgL4AiADIAU2AvQCIAMgBDYC8AIgAyALNgKMAyADIAo2AogDIAMgCTYChAMgAyAINgKAAyAD +IBlB79ik7wJqIgQ2AkwgAyAYQaqJ0tMEaiIFNgJIIAMgF0Hc08LlBWoiBjYCRCADIBZB2pHmtwdq +Igc2AkAgECAMIA0gDhD7DCADIAY2ArwBIAMgBzYCuAEgAyAENgK0ASADIAU2ArABIAMoAuACIQQg +AygC5AIhBSADKALoAiEGIAMoAuwCIQcgAyALNgKMAyADIAo2AogDIAMgCTYChAMgAyAINgKAAyAD +IAc2AkwgAyAGNgJIIAMgBTYCRCADIAQ2AkAgDCANIA4gA0GwAWoQ+wwgAygC8AIhCCADKAL0AiEJ +IAMoAvgCIQogAygC/AIhCyADIBU2AuwCIAMgFDYC6AIgAyATNgLkAiADIBI2AuACIAMgETYC/AIg +AyAPNgL4AiADIAI2AvQCIAMgATYC8AIgAyAdNgKMAyADIBw2AogDIAMgGzYChAMgAyAaNgKAAyAD +IBk2AkwgAyAYNgJIIAMgFzYCRCADIBY2AkAgHiAQIAwgDSAOEPALIAMoAtACIRIgAygC1AIhEyAD +KALYAiEUIAMoAtwCIRUgAyAHNgL8AiADIAY2AvgCIAMgBTYC9AIgAyAENgLwAiADIAs2AowDIAMg +CjYCiAMgAyAJNgKEAyADIAg2AoADIAMgFUGu3Ya+BmsiBDYCTCADIBRBk/O4vgVrIgU2AkggAyAT +Qbiw8/8EayIGNgJEIAMgEkG5gJqFBGsiBzYCQCAQIAwgDSAOEPsMIAMgBjYCzAEgAyAHNgLIASAD +IAQ2AsQBIAMgBTYCwAEgAygC4AIhBCADKALkAiEFIAMoAugCIQYgAygC7AIhByADIAs2AowDIAMg +CjYCiAMgAyAJNgKEAyADIAg2AoADIAMgBzYCTCADIAY2AkggAyAFNgJEIAMgBDYCQCAMIA0gDiAD +QcABahD7DCADKALwAiEIIAMoAvQCIQkgAygC+AIhCiADKAL8AiELIAMgETYC7AIgAyAPNgLoAiAD +IAI2AuQCIAMgATYC4AIgAyAdNgL8AiADIBw2AvgCIAMgGzYC9AIgAyAaNgLwAiADIBk2AowDIAMg +GDYCiAMgAyAXNgKEAyADIBY2AoADIAMgFTYCTCADIBQ2AkggAyATNgJEIAMgEjYCQCAeIBAgDCAN +IA4Q8AsgAygC0AIhASADKALUAiECIAMoAtgCIQ8gAygC3AIhESADIAc2AvwCIAMgBjYC+AIgAyAF +NgL0AiADIAQ2AvACIAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyARQY3o/8gDayIE +NgJMIAMgD0G53eHSAmsiBTYCSCADIAJB0capNmoiBjYCRCADIAFB59KkoQFqIgc2AkAgECAMIA0g +DhD7DCADIAY2AtwBIAMgBzYC2AEgAyAENgLUASADIAU2AtABIAMoAuACIQQgAygC5AIhBSADKALo +AiEGIAMoAuwCIQcgAyALNgKMAyADIAo2AogDIAMgCTYChAMgAyAINgKAAyADIAc2AkwgAyAGNgJI +IAMgBTYCRCADIAQ2AkAgDCANIA4gA0HQAWoQ+wwgAygC8AIhCCADKAL0AiEJIAMoAvgCIQogAygC +/AIhCyADIB02AuwCIAMgHDYC6AIgAyAbNgLkAiADIBo2AuACIAMgGTYC/AIgAyAYNgL4AiADIBc2 +AvQCIAMgFjYC8AIgAyAVNgKMAyADIBQ2AogDIAMgEzYChAMgAyASNgKAAyADIBE2AkwgAyAPNgJI +IAMgAjYCRCADIAE2AkAgHiAQIAwgDSAOEPALIAMoAtACIRogAygC1AIhGyADKALYAiEcIAMoAtwC +IR0gAyAHNgL8AiADIAY2AvgCIAMgBTYC9AIgAyAENgLwAiADIAs2AowDIAMgCjYCiAMgAyAJNgKE +AyADIAg2AoADIAMgHUGFldy9AmoiBDYCTCADIBxBuMLs8AJqIgU2AkggAyAbQfzbsekEaiIGNgJE +IAMgGkGTmuCZBWoiBzYCQCAQIAwgDSAOEPsMIAMgBjYC7AEgAyAHNgLoASADIAQ2AuQBIAMgBTYC +4AEgAygC4AIhBCADKALkAiEFIAMoAugCIQYgAygC7AIhByADIAs2AowDIAMgCjYCiAMgAyAJNgKE +AyADIAg2AoADIAMgBzYCTCADIAY2AkggAyAFNgJEIAMgBDYCQCAMIA0gDiADQeABahD7DCADKALw +AiEIIAMoAvQCIQkgAygC+AIhCiADKAL8AiELIAMgGTYC7AIgAyAYNgLoAiADIBc2AuQCIAMgFjYC +4AIgAyAVNgL8AiADIBQ2AvgCIAMgEzYC9AIgAyASNgLwAiADIBE2AowDIAMgDzYCiAMgAyACNgKE +AyADIAE2AoADIAMgHTYCTCADIBw2AkggAyAbNgJEIAMgGjYCQCAeIBAgDCANIA4Q8AsgAygC0AIh +FiADKALUAiEXIAMoAtgCIRggAygC3AIhGSADIAc2AvwCIAMgBjYC+AIgAyAFNgL0AiADIAQ2AvAC +IAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyAZQdTmqagGaiIENgJMIAMgGEG7laiz +B2oiBTYCSCADIBdB0u308QdrIgY2AkQgAyAWQfumt+wGayIHNgJAIBAgDCANIA4Q+wwgAyAGNgL8 +ASADIAc2AvgBIAMgBDYC9AEgAyAFNgLwASADKALgAiEEIAMoAuQCIQUgAygC6AIhBiADKALsAiEH +IAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyAHNgJMIAMgBjYCSCADIAU2AkQgAyAE +NgJAIAwgDSAOIANB8AFqEPsMIAMoAvACIQggAygC9AIhCSADKAL4AiEKIAMoAvwCIQsgAyAVNgLs +AiADIBQ2AugCIAMgEzYC5AIgAyASNgLgAiADIBE2AvwCIAMgDzYC+AIgAyACNgL0AiADIAE2AvAC +IAMgHTYCjAMgAyAcNgKIAyADIBs2AoQDIAMgGjYCgAMgAyAZNgJMIAMgGDYCSCADIBc2AkQgAyAW +NgJAIB4gECAMIA0gDhDwCyADKALQAiESIAMoAtQCIRMgAygC2AIhFCADKALcAiEVIAMgBzYC/AIg +AyAGNgL4AiADIAU2AvQCIAMgBDYC8AIgAyALNgKMAyADIAo2AogDIAMgCTYChAMgAyAINgKAAyAD +IBVB366A6gVrIgQ2AkwgAyAUQbWzlr8FayIFNgJIIAMgE0GQ6dHtA2siBjYCRCADIBJB3dzOxANr +Igc2AkAgECAMIA0gDhD7DCADIAY2AowCIAMgBzYCiAIgAyAENgKEAiADIAU2AoACIAMoAuACIQQg +AygC5AIhBSADKALoAiEGIAMoAuwCIQcgAyALNgKMAyADIAo2AogDIAMgCTYChAMgAyAINgKAAyAD +IAc2AkwgAyAGNgJIIAMgBTYCRCADIAQ2AkAgDCANIA4gA0GAAmoQ+wwgAygC8AIhCCADKAL0AiEJ +IAMoAvgCIQogAygC/AIhCyADIBE2AuwCIAMgDzYC6AIgAyACNgLkAiADIAE2AuACIAMgHTYC/AIg +AyAcNgL4AiADIBs2AvQCIAMgGjYC8AIgAyAZNgKMAyADIBg2AogDIAMgFzYChAMgAyAWNgKAAyAD +IBU2AkwgAyAUNgJIIAMgEzYCRCADIBI2AkAgHiAQIAwgDSAOEPALIAMoAtACIQEgAygC1AIhAiAD +KALYAiEPIAMoAtwCIREgAyAHNgL8AiADIAY2AvgCIAMgBTYC9AIgAyAENgLwAiADIAs2AowDIAMg +CjYCiAMgAyAJNgKEAyADIAg2AoADIAMgEUHnr7TzAmsiBDYCTCADIA9B3PObywJrIgU2AkggAyAC +QfuUx98AayIGNgJEIAMgAUHwwKqDAWoiBzYCQCAQIAwgDSAOEPsMIAMgBjYCnAIgAyAHNgKYAiAD +IAQ2ApQCIAMgBTYCkAIgAygC4AIhBCADKALkAiEFIAMoAugCIQYgAygC7AIhByADIAs2AowDIAMg +CjYCiAMgAyAJNgKEAyADIAg2AoADIAMgBzYCTCADIAY2AkggAyAFNgJEIAMgBDYCQCAMIA0gDiAD +QZACahD7DCADKALwAiEIIAMoAvQCIQkgAygC+AIhCiADKAL8AiELIAMgHTYC7AIgAyAcNgLoAiAD +IBs2AuQCIAMgGjYC4AIgAyAZNgL8AiADIBg2AvgCIAMgFzYC9AIgAyAWNgLwAiADIBU2AowDIAMg +FDYCiAMgAyATNgKEAyADIBI2AoADIAMgETYCTCADIA82AkggAyACNgJEIAMgATYCQCAeIBAgDCAN +IA4Q8AsgAygC0AIhGiADKALUAiEbIAMoAtgCIRwgAygC3AIhHSADIAc2AvwCIAMgBjYC+AIgAyAF +NgL0AiADIAQ2AvACIAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyAdQZaCk80BaiIE +NgJMIAMgHEGI2N3xAWoiBTYCSCADIBtBzO6hugJqIgY2AkQgAyAaQbX5wqUDaiIHNgJAIBAgDCAN +IA4Q+wwgAyAGNgKsAiADIAc2AqgCIAMgBDYCpAIgAyAFNgKgAiADKALgAiEEIAMoAuQCIQUgAygC +6AIhBiADKALsAiEHIAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMgAyAHNgJMIAMgBjYC +SCADIAU2AkQgAyAENgJAIAwgDSAOIANBoAJqEPsMIAMoAvACIQggAygC9AIhCSADKAL4AiEKIAMo +AvwCIQsgAyAZNgLsAiADIBg2AugCIAMgFzYC5AIgAyAWNgLgAiADIBU2AvwCIAMgFDYC+AIgAyAT +NgL0AiADIBI2AvACIAMgETYCjAMgAyAPNgKIAyADIAI2AoQDIAMgATYCgAMgAyAdNgJMIAMgHDYC +SCADIBs2AkQgAyAaNgJAIB4gECAMIA0gDhDwCyADKALQAiEWIAMoAtQCIRcgAygC2AIhGCADKALc +AiEZIAMgBzYC/AIgAyAGNgL4AiADIAU2AvQCIAMgBDYC8AIgAyALNgKMAyADIAo2AogDIAMgCTYC +hAMgAyAINgKAAyADIBlBs5nwyANqIgQ2AkwgAyAYQcrU4vYEaiIFNgJIIAMgF0HPlPPcBWoiBjYC +RCADIBZB89+5wQZqIgc2AkAgECAMIA0gDhD7DCADIAY2ArwCIAMgBzYCuAIgAyAENgK0AiADIAU2 +ArACIAMoAuACIQQgAygC5AIhBSADKALoAiEGIAMoAuwCIQcgAyALNgKMAyADIAo2AogDIAMgCTYC +hAMgAyAINgKAAyADIAc2AkwgAyAGNgJIIAMgBTYCRCADIAQ2AkAgDCANIA4gA0GwAmoQ+wwgAygC +8AIhCCADKAL0AiEJIAMoAvgCIQogAygC/AIhCyADIBU2AuwCIAMgFDYC6AIgAyATNgLkAiADIBI2 +AuACIAMgETYC/AIgAyAPNgL4AiADIAI2AvQCIAMgATYC8AIgAyAdNgKMAyADIBw2AogDIAMgGzYC +hAMgAyAaNgKAAyADIBk2AkwgAyAYNgJIIAMgFzYCRCADIBY2AkAgHiAQIAwgDSAOEPALIAMoAtAC +IRIgAygC1AIhEyADKALYAiEUIAMoAtwCIRUgAyAHNgL8AiADIAY2AvgCIAMgBTYC9AIgAyAENgLw +AiADIAs2AowDIAMgCjYCiAMgAyAJNgKEAyADIAg2AoADIAMgFUHuhb6kB2oiBDYCTCADIBRB78aV +xQdqIgU2AkggAyATQeyP3tkHayIGNgJEIAMgEkH4++OZB2siBzYCQCAQIAwgDSAOEPsMIAMgBjYC +zAIgAyAHNgLIAiADIAQ2AsQCIAMgBTYCwAIgAygC4AIhBCADKALkAiEFIAMoAugCIQYgAygC7AIh +ByADIAs2AowDIAMgCjYCiAMgAyAJNgKEAyADIAg2AoADIAMgBzYCTCADIAY2AkggAyAFNgJEIAMg +BDYCQCAMIA0gDiADQcACahD7DCADKALwAiEIIAMoAvQCIQkgAygC+AIhCiADKAL8AiELIAMgETYC +7AIgAyAPNgLoAiADIAI2AuQCIAMgATYC4AIgAyAdNgL8AiADIBw2AvgCIAMgGzYC9AIgAyAaNgLw +AiADIBk2AowDIAMgGDYCiAMgAyAXNgKEAyADIBY2AoADIAMgFTYCTCADIBQ2AkggAyATNgJEIAMg +EjYCQCAeIBAgDCANIA4Q8AsgAygC0AIhASADKALUAiECIAMoAtgCIQ8gAygC3AIhESADIAc2AvwC +IAMgBjYC+AIgAyAFNgL0AiADIAQ2AvACIAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMg +AyARQYaAhPoGayIRNgJMIAMgD0GVpr7dBWsiDzYCSCADIAJBibiZiARrIgI2AkQgAyABQY6OuswD +ayIBNgJAIB4gDCANIA4Q+wwgAyACNgLsAiADIAE2AugCIAMgETYC5AIgAyAPNgLgAiADKALQAiEB +IAMoAtQCIQIgAygC2AIhDyADKALcAiERIAMgCzYCjAMgAyAKNgKIAyADIAk2AoQDIAMgCDYCgAMg +AyARNgJMIAMgDzYCSCADIAI2AkQgAyABNgJAIBEgI2ohIyAPICRqISQgAiAlaiElIAEgJmohJiAM +IA0gDiAQEPsMIAMoAvwCIB9qIR8gAygC+AIgIGohICADKAL0AiAhaiEhIAMoAvACICJqISIgJyEB +DAMFIAIgA2ogASACaigAACIPQRh0IA9BgP4DcUEIdHIgD0EIdkGA/gNxIA9BGHZycjYCACACQQRq +IQIMAQsACwALCyAAICM2AhwgACAkNgIYIAAgHzYCFCAAICA2AhAgACAlNgIMIAAgJjYCCCAAICE2 +AgQgACAiNgIAIANBkANqJAAL8jsCGn8IfiMAQdAEayICJAAgAkEgaiABEIsyAkACQAJAAkACQAJA +AkACQAJAAkACQAJ/AkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAC +fwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/IAItACBB +BEYEQCACLwAhIgNBCHYMAQsgAikDICIcQv8Bg0IEUg0BIBxCCIinIQMgHEIQiKcLIQQgA0H/AXEi +A0EBaw4kAgMEBAgJCgsMDQ4PEBEFBQUFBgYGISIjJCUmJycnJycnJycHAQsgAEEAOgAEIABBAToA +ACAAQQhqIBw3AgAMOQsgACAEENBIDDgLIAAgBBDJSgw3CyMAQSBrIgEkACABQQc6AAggAEEEaiAB +QQhqIAFBH2pBkPHIABD6GiAAQQE6AAAgAUEgaiQADDYLIwBBIGsiASQAIAFBADoACCABIANBA0Y6 +AAkgAEEEaiABQQhqIAFBH2pBkPHIABD6GiAAQQE6AAAgAUEgaiQADDULIANBD2sOBA0ODxAMCyAD +QRNrDgMVFhcUCyAAQQE6AAAgAEGCyAA7AQQMMgsgAkEgaiABEIolIAItACAiAUEDRg0wIAIvACEh +AyAAQQhqIAIpAiQ3AgAgAEEFaiADOwAAIAAgAToABCAAQQE6AAAMMQsgAkEgaiABEMQcIAItACAi +AUEDRg0uIAItACEhAyACLwEiIQQgAEEIaiACKQIkNwIAIAAgAToABCAAQQE6AAAgAiAEOwAPIAIg +AzoADiAAQQVqIAIvAQ47AAAMMAsgAkEgaiABEKgXIAItACAiAUEDRg0sIAIvACEhAyAAQQhqIAIp +AiQ3AgAgAEEFaiADOwAAIAAgAToABCAAQQE6AAAMLwsgAkEgaiABEK4RIAIoAiBFDSogAigCJCEB +IABBCGogAkEoaikDADcCACAAQQVqIAFBCHY7AAAgACABOgAEIABBAToAAAwuCyACQSBqIAEQ+SAg +Ai0AICIBQQNGDSggAi8AISEDIABBCGogAikCJDcCACAAQQVqIAM7AAAgACABOgAEIABBAToAAAwt +CyACQSBqIAEQxBwgAi0AICIBQQNGDSYgAi0AISEDIAIvASIhBCAAQQhqIAIpAiQ3AgAgACABOgAE +IABBAToAACACIAQ7ABMgAiADOgASIABBBWogAi8BEjsAAAwsCyACQSBqIAEQqBcgAi0AICIBQQNG +DSQgAi8AISEDIABBCGogAikCJDcCACAAQQVqIAM7AAAgACABOgAEIABBAToAAAwrCyACQSBqIAEQ +rhEgAigCIEUNIiACKAIkIQEgAEEIaiACQShqKQMANwIAIABBBWogAUEIdjsAACAAIAE6AAQgAEEB +OgAADCoLIAJBIGogARCoFyACLQAgIgFBA0YNICACLwAhIQMgAEEIaiACKQIkNwIAIABBBWogAzsA +ACAAIAE6AAQgAEEBOgAADCkLIAJBIGogARCuESACKAIgRQ0eIAIoAiQhASAAQQhqIAJBKGopAwA3 +AgAgAEEFaiABQQh2OwAAIAAgAToABCAAQQE6AAAMKAtBjsPIAEEoQbjDyAAQ5isACyAEQf8BcSED +DAULIAJBIGogARCUHCACLQAgIgRBCUYEQCACLQAhDAQLDAILIAJBIGogARDnGCACLQAgIgRBCUYE +QCACLwEiDAMLDAELIAJBIGogARCSFSACLQAgIgRBCUYEQCACKAIkDAILCyACQboEaiACLQAjOgAA +IAIgAi8AITsBuAQgAikCKCEcIAIoAiQLIQMgBEEJRw0BCyMAQTBrIgQkACAEQQxqIAEgAxCTHwJA +AkACQAJAIAQtAAwiAUEJRgRAIARBGGooAgAhASAEQRRqKAIAIQMgBCgCEEUEQCAEIAMgARCPBCAE +KAIARQRAIAAgBCgCBCAEQQhqKAIAEKgoDAYLIAQpAgQhHCAEQQxqIAMgARCnKCAELQAMRQRAIAAg +BCkADTcAASAAQRlqIARBJWopAAA3AAAgAEERaiAEQR1qKQAANwAAIABBCWogBEEVaikAADcAAEEA +IQEMBQsgAEEHOgAEIABBCGogHDcCACAEQQxqEL9BQQEhAQwECyAEIAMgARCPBCAEKAIARQ0CIAQp +AgQhHCAEQQxqIAMgARCnKCAELQAMRQRAIAAgBCkADTcAASAAQRlqIARBJWopAAA3AAAgAEERaiAE +QR1qKQAANwAAIABBCWogBEEVaikAADcAAEEAIQEMAgsgAEEHOgAEIABBCGogHDcCACAEQQxqEL9B +QQEhAQwBCyAAQQdqIAQtAA86AAAgAEEFaiAELwANOwAAIAQpAhAhHCAAQRBqIAQoAhg2AgAgAEEI +aiAcNwIAIAAgAToABCAAQQE6AAAMAwsgACABOgAADAILIAAgBCgCBCAEQQhqKAIAEKgoDAELIAAg +AToAAAsgBEEwaiQADCALIABBBWogAi8BuAQ7AAAgAEEHaiACQboEai0AADoAACAAQQxqIBw3AgAg +AEEIaiADNgIAIAAgBDoABCAAQQE6AAAMHwtBjsPIAEEoQcjDyAAQ5isACyACQSBqIAEQlBwgAi0A +ICIDQQlGBEAgAi0AIQwECwwCCyACQSBqIAEQ5xggAi0AICIDQQlGBEAgAi8BIgwDCwwBCyACQSBq +IAEQkhUgAi0AICIDQQlGBEAgAigCJAwCCwsgAkG6BGogAi0AIzoAACACIAIvACE7AbgEIAIpAigh +HCACKAIkCyEEIANBCUcNByACQSBqIAEgBBCTHyACLQAgIgFBCUYEQCAAIAJBKGooAgAgAkEsaigC +ABCnKAwaCyAAQQdqIAItACM6AAAgAEEFaiACLwAhOwAAIAIpAiQhHCAAQRBqIAIoAiw2AgAgAEEI +aiAcNwIAIAAgAToABCAAQQE6AAAMGQsgBEH/AXEMDQsgAkEgaiABEOcYIAItACAiA0EJRg0LIABB +CGogAikCJDcCACAAQRBqIAJBLGooAgA2AgAgAi0AISEBIABBBmogAi8BIjsBACAAQQVqIAE6AAAg +ACADOgAEIABBAToAAAwXCyACQSBqIAEQkhUgAi0AICIDQQlGDQkgAEEHaiACLQAjOgAAIABBBWog +Ai8AITsAACACKAIkIQEgAEEMaiACKQIoNwIAIABBCGogATYCACAAIAM6AAQgAEEBOgAADBYLIARB +/wFxDAcLIAJBIGogARDnGCACLQAgIgNBCUYNBSAAQQhqIAIpAiQ3AgAgAEEQaiACQSxqKAIANgIA +IAItACEhASAAQQZqIAIvASI7AQAgAEEFaiABOgAAIAAgAzoABCAAQQE6AAAMFAsgAkEgaiABEJIV +IAItACAiA0EJRg0DIABBB2ogAi0AIzoAACAAQQVqIAIvACE7AAAgAigCJCEBIABBDGogAikCKDcC +ACAAQQhqIAE2AgAgACADOgAEIABBAToAAAwTCyACQSBqIAEgBEEIdCADchCdCSACLQAgIgNBCUcE +QCAAQQdqIAItACM6AAAgAEEFaiACLwAhOwAAIAIoAiQhASAAQQxqIAIpAig3AgAgAEEIaiABNgIA +IAAgAzoABCAAQQE6AAAMEwsgASABKAIQQQFrIgM2AhAgA0UNASMAQSBrIgMkACADQQk6AAggAkEg +aiIEQQRqIANBCGogA0EfakGQ8cgAEPoaIARBAToAACADQSBqJAAgASABKAIQQQFqNgIQIAAgBEEk +EM1PGgwSCyAAQQVqIAIvAbgEOwAAIABBB2ogAkG6BGotAAA6AAAgAEEMaiAcNwIAIABBCGogBDYC +ACAAIAM6AAQgAEEBOgAADBELIABBAToAACAAQQg6AAQMEAsgAigCJAwBCyACLwEiCyEEIAEgASgC +EEEBayIDNgIQIANFBEAgAEEBOgAAIABBCDoABAwOCyMAQSBrIgMkACADQQs6AAggAkEgaiIGQQRq +IANBCGogA0EfakGQ8cgAEPoaIAZBAToAACADQSBqJAAgAAJ/AkAgAi0AIEUEQCACQfoDaiIGIAIt +ACM6AAAgAkHqA2oiByACQSdqLQAAOgAAIAIgAi8AITsB+AMgAiACQTRqKQIANwO4BCACIAJBOWop +AAA3AL0EIAIgAkElai8AADsB6ANBBCEDIAJBLGopAgAhHCAERQ0BQQEMAgsgAkGKBGogAkEnai0A +ACIBOgAAIAIgAkElai8AACIDOwGIBCACQShqKAIAIQQgAkEsaikCACEcIAItACQhBSAAQQdqIAE6 +AAAgAEEFaiADOwAAIABBDGogHDcCACAAQQhqIAQ2AgAgACAFOgAEIABBAToAAAwPCyACQSRqLQAA +IQMgAkEoaigCACEFIAJB2gNqIAYtAAA6AAAgAkHKA2ogBy0AADoAACACIAIvAfgDOwHYAyACIAIv +AegDOwHIAyACIAIpA7gENwOoBCACIAIpAL0ENwCtBEEACzoAACAAIAIvAdgDOwABIABBA2ogAkHa +A2otAAA6AAAgACADOgAEIAAgAi8ByAM7AAUgAEEHaiACQcoDai0AADoAACAAIBw3AgwgACAFNgII +IAEgASgCEEEBajYCECAAIAIpA6gENwAUIABBGWogAikArQQ3AAAMDQsgAigCJAwBCyACLwEiCyEE +IAEgASgCEEEBayIDNgIQIANFBEAgAEEBOgAAIABBCDoABAwLCyACIAQ2AhwgAiABNgIYIAIgAkEY +ajYCRCACQcgAaiACQcQAahC9FgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACLQBIIgNBCUYEQCACLQBJRQRAIAJBIGpBACAC +Qc8EakHow8gAEPMXDCELIAItAEohBSACQdgAaiACQcQAahC9FiACLQBYIgNBCUcNASACLQBZRQRA +IAJBIGpBASACQc8EakHow8gAEPMXDCELIAItAFohBiACQegAaiACQcQAahC9FiACLQBoIgNBCUcN +AiACLQBpRQRAIAJBIGpBAiACQc8EakHow8gAEPMXDCELIAItAGohByACQfgAaiACQcQAahC9FiAC +LQB4IgNBCUcNAyACLQB5RQRAIAJBIGpBAyACQc8EakHow8gAEPMXDCELIAItAHohCCACQYgBaiAC +QcQAahC9FiACLQCIASIDQQlHDQQgAi0AiQFFBEAgAkEgakEEIAJBzwRqQejDyAAQ8xcMIQsgAi0A +igEhCSACQZgBaiACQcQAahC9FiACLQCYASIDQQlHDQUgAi0AmQFFBEAgAkEgakEFIAJBzwRqQejD +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 +QeATayIDJAACQCABAn8CQAJAAkAgAwJ/AkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkAgAS0A0AJBAWsOCAwAAgQFCiEHAQsACyABQgA3A8gCIAFBATYC4AEgAUHkAWogASgC +wAI2AgAgA0GYCGogAUHgAWoiBRCpPCADKAKYCARAIAFBzQJqIQcgA0GYCGoQ+0JBCyECDDILIAFB +AToAzQIgASADKQKcCDcCACABQQhqIANBpAhqKQIANwIAIAMgATYC1AIgASgCxAIhCSADQZgIaiAF +ELoFIAMoApgIQQhGDS8gASADKQKYCDcCsAIgAUG4AmogA0GgCGooAgA2AgAgAUGwAmohBwJAAkAC +QAJAIAEoArACQQFrDgcBAgMICgoLAAtBxJPbACgCAEECSw0sQcSG2wAQ+z4iAkH/AXFFDSxBxIbb +ACgCACACEPUuRQ0sQcSG2wAoAgAiB0EoaigCACEKIAdBJGooAgAhCyAHKAIcIQQgAyAHQSBqKAIA +IggEfyADQQA2AqgIIAMgCjYCpAggAyALNgKgCCADIAg2ApwIQQEhBiAEBUEACzYCmAggA0GUA2og +A0GYCGpB9NPCABDdLCADQaQIakIANwIAIANBATYCnAggA0Go1MIANgKYCCADQaTJwgA2AqAIQQAh +AiADIAYgCEkEfyADIAY2AugMIAMgCjYC5AwgAyALNgLgDCADIAg2AtwMIAQFQQALNgLYDCADQfAD +aiICIANB2AxqIgRB9NPCABDdLCADQUBrIAFBtAJqEIs0IANB7AxqQbDUwgA2AgAgA0HoDGogA0GI +A2o2AgAgA0GUycIANgLgDCADIAMpA0A3AogDIAMgAjYC5AwgAyADQZgIajYC3AwgAyADQZQDajYC +2AwgA0H0AmogB0EcaiAEEPJBIANB6AJqIANB/AJqKAIANgIAIAMgAykC9AI3A+ACQcSG2wAoAgAg +A0HgAmoQxDQMLAsgASgCxAIhAiADQdgAaiAFEM8gIAMoAlwhBCADKAJYIQcgA0HQAGogARD0NSAD +QZgIaiACIAcgBCADKAJQIAMoAlQQywcgAy0A2AhBAkYNFyADQdgMaiICIANBmAhqQcgAEM1PGgJA +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 +akIANwIAIANBATYCnAggA0GA1sIANgKYCCADQaTJwgA2AqAIQQAhAiADIAcgCEkEfyADIAc2AugM +IAMgCTYC5AwgAyALNgLgDCADIAg2AtwMIAUFQQALNgLYDCADQfADaiICIANB2AxqIgVBsNXCABDd +LCADIAoQizQgA0HsDGpBsNTCADYCACADQegMaiADQeACajYCACADQZTJwgA2AuAMIAMgAykDADcC +4AIgAyACNgLkDCADIANBmAhqNgLcDCADIANBlANqNgLYDCADQfQCaiICIAZBHGogBRDyQUHohtsA +KAIAIAIQxDQMAgsgA0EANgKoCCADIAo2AqQIIAMgCzYCoAggAyAJNgKcCEEBIQYgBQs2ApgIIANB +lANqIANBmAhqQYjWwgAQ3SwgA0GkCGpCADcCACADQQE2ApwIIANB2NbCADYCmAggA0GkycIANgKg +CEEAIQcgAyAGIAlJBH8gAyAGNgLoDCADIAo2AuQMIAMgCzYC4AwgAyAJNgLcDCAFBUEACzYC2Awg +A0HwA2oiBSADQdgMaiIHQYjWwgAQ3SwgA0EoaiABQbQCahCLNCADQewMakGw1MIANgIAIANB6Axq +IANB4AJqNgIAIANBlMnCADYC4AwgAyADKQMoNwLgAiADIAU2AuQMIAMgA0GYCGo2AtwMIAMgA0GU +A2o2AtgMIANB9AJqIgUgCEEcaiAHEPJBQdCG2wAoAgAgBRDENAwBC0ELIQILIAEQ/DwgAUHNAmoh +BwsgACACOgAAIAdBADoAACAAQQFqIANBvRNqQSMQzU8aQQELOgDQAiADQeATaiQADwsAC9YrAhx/ +BH4jAEGgCmsiAyQAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkAC +QAJAIAEpAwAiH1BFBEAgASkDCCIgUA0BIAEpAxAiIVANAiAfICF8IiIgH1QNAyAfICBUDQQgASwA +GiESIAEvARghASADIB8+AgAgA0EBQQIgH0KAgICAEFQiBBs2AqABIANBACAfQiCIpyAEGzYCBCAD +QQhqQQBBmAEQy08aIAMgID4CpAEgA0EBQQIgIEKAgICAEFQiBBs2AsQCIANBACAgQiCIpyAEGzYC +qAEgA0GsAWpBAEGYARDLTxogAyAhPgLIAiADQQFBAiAhQoCAgIAQVCIEGzYC6AMgA0EAICFCIIin +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 +CGoiBCgCADYCACABQQE6AP0FIAVBOGogAUEUaigCADYCACAFIAEpAgw3AzAgASgCGEGAgICAeEcN +ASAFKAIwQYCAgIB4RgRAIAVBgAFqIgIQmAogBUEIaiACEKU2IAUoAgwhBCAFKAIIIQIMNgtBvIvF +AEH3ABCYNSEEDDQLIAFBMGohGgJAIAFB0ABqIhwtAABBAWsOBAwIBwMACyABQUBrKAIAIQQgAUE8 +aigCACEGDAELIAEgASkCADcCJCABQQA6AP0FIAEgAUEMaiIHKQIANwIwIAFB0ABqIhxBADoAACAB +QSxqIAQoAgAiBDYCACABQThqIAdBCGooAgA2AgAgAUFAayAENgIAIAFBPGogAUEoaigCACIGNgIA +IAFBMGohGgsgAUHEAGoiByAaKQIANwIAIAFBzABqIBpBCGoiAygCADYCACABQdQAaiEWIAcoAgBB +gICAgHhHDQYgASAENgJYIAEgBjYCVCABQcwEaiIYQQA6AAAMAQsgAUHUAGohFgJAIAFBzARqIhgt +AABBAWsOAwMFAgALIAFB2ABqKAIAIQQgASgCVCEGCyABQcgEakEAOgAAIAFB5ABqQQA2AgAgAUHg +AGogBDYCACABQdwAaiAGNgIACyAFQYABaiABQdwAaiIHIAIQrgMgBSgCxAEiBkGBgICAeEYNCCAF +QbIGaiIIIAUtAIMBOgAAIAVBuAhqIgkgBUGUAWopAgA3AwAgBUHACGoiDCAFQZwBaikCADcDACAF +QZgJaiINIAVBrAFqKQIANwMAIAVBoAlqIgogBUG0AWopAgA3AwAgBUGoCWoiCyAFQbwBaikCADcD +ACAFIAUvAIEBOwGwBiAFIAUpAowBNwOwCCAFIAUpAqQBNwOQCSAFLQCAASEDIAUoAoQBIQIgBSgC +iAEhBCAFKQPIASEfIAcQ7zEgGEEBOgAAIAVB7gdqIgcgCC0AADoAACAFQdgHaiIIIAkpAwA3AwAg +BUHgB2oiCSAMKQMANwMAIAVBuAdqIgwgDSkDADcDACAFQcAHaiINIAopAwA3AwAgBUHIB2oiCiAL +KQMANwMAIAUgBS8BsAY7AewHIAUgBSkDsAg3A9AHIAUgBSkDkAk3A7AHIBYQskAgBkGAgICAeEYN +ByAFQYgGaiAKKQMANwMAIAVBgAZqIA0pAwA3AwAgBUH4BWogDCkDADcDACAFQa4GaiAHLQAAOgAA +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 +AgAhGSABQZwBaigCACEbIAUoAvQIIREgBSgC+AghFSMAQfABayINJAAgDUElOgC0ASANIBU2AqwB +IA0gETYCqAEgDSAVNgKkASANIBE2AqABIA1BgAg2ArABIA1B1ABqIQhCACEeIwBBkARrIgMkACAD +QbABaiANQaABaiIMEIsyAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJ/AkACQAJAAkACQAJA +AkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJ/IAMtALABQQRGBEAgAy8AsQEiBEEIdgwBCyADKQOwASIeQv8B +g0IEUg0BIB5CCIinIQQgHkIQiKcLIQcgBEH/AXEiBkEBaw4kAgMEBAgJCgsMDQ4PEBEFBQUFBgYG +ISIjJCUmJycnJycnJycHAQsgCEEAOgAEIAhBAjYCACAIQQhqIB43AgAMOQsgCCAHEMpIDDgLIAgg +BxC/Sgw3CyMAQSBrIgQkACAEQQc6AAggCEEEaiAEQQhqIARBH2pBvNTIABD6GiAIQQI2AgAgBEEg +aiQADDYLIwBBIGsiBCQAIARBADoACCAEIAZBA0Y6AAkgCEEEaiAEQQhqIARBH2pBvNTIABD6GiAI +QQI2AgAgBEEgaiQADDULIAZBD2sOBA0ODxAMCyAGQRNrDgMVFhcUCyAIQQI2AgAgCEGCyAA7AQQM +MgsgA0GwAWogDBCKJSADLQCwASIEQQNGDTAgAy8AsQEhByAIQQhqIAMpArQBNwIAIAhBBWogBzsA +ACAIIAQ6AAQgCEECNgIADDELIANBsAFqIAwQxBwgAy0AsAEiBEEDRg0uIAMtALEBIQcgAy8BsgEh +BiAIQQhqIAMpArQBNwIAIAggBDoABCAIQQI2AgAgAyAGOwAJIAMgBzoACCAIQQVqIAMvAQg7AAAM +MAsgA0GwAWogDBCoFyADLQCwASIEQQNGDSwgAy8AsQEhByAIQQhqIAMpArQBNwIAIAhBBWogBzsA +ACAIIAQ6AAQgCEECNgIADC8LIANBsAFqIAwQrhEgAygCsAFFDSogAygCtAEhBCAIQQhqIANBuAFq +KQMANwIAIAhBBWogBEEIdjsAACAIIAQ6AAQgCEECNgIADC4LIANBsAFqIAwQ+SAgAy0AsAEiBEED +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 +AWogDCAHQQh0IAZyEJ0JIAMtALABIgRBCUcEQCAIQQdqIAMtALMBOgAAIAhBBWogAy8AsQE7AAAg +AygCtAEhByAIQQxqIAMpArgBNwIAIAhBCGogBzYCACAIIAQ6AAQgCEECNgIADBMLIAwgDCgCEEEB +ayIENgIQIARFDQEjAEEgayIEJAAgBEEJOgAIIANBsAFqIgdBBGogBEEIaiAEQR9qQbzUyAAQ+hog +B0ECNgIAIARBIGokACAMIAwoAhBBAWo2AhAgCCAHQcwAEM1PGgwSCyAIQQVqIAMvAVQ7AAAgCEEH +aiADQdYAai0AADoAACAIQQxqIB43AgAgCEEIaiAHNgIAIAggBDoABCAIQQI2AgAMEQsgCEECNgIA +IAhBCDoABAwQCyADKAK0AQwBCyADLwGyAQshByAMIAwoAhBBAWsiBDYCECAERQRAIAhBAjYCACAI +QQg6AAQMDgsgAyAHNgJQIAMgDDYCTCADIANBzABqNgL8ASADQYCAgIB4NgKoAiADQeACaiEXIANB +tANqIRAgA0GkA2ohEiADQbwCaiETIANBrAJqIRQgByEEQQIhCwNAAkACQAJAAkACQCAEBEAgAyAE +QQFrNgJQIANBoANqIQkgAygCTCEKQgAhHyMAQTBrIgYkACAGQRBqIAoQizICQAJAAkACQAJAAkAC +QAJAAkACQAJAAn8CQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/ +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8gBi0AEEEE +RgRAIAYvABEiDkEIdgwBCyAGKQMQIh9C/wGDQgRSDQEgH0IIiKchDiAfQhCIpwshBCAOQf8BcSIO +QQFrDiQCAwQECAkKCwwNDg8QEQUFBQUGBgYhIiMkJSYnJycnJycnJwcBCyAJIB83AgQgCUEAOgAA +DDkLIAlBCToAACAJQQFBAiAEQf8BcSIEQQFGG0EAIAQbOgABDDgLIAkgBBDDSgw3CyMAQSBrIgQk +ACAEQQc6AAggCSAEQQhqIARBH2pB3NTIABD6GiAEQSBqJAAMNgsjAEEgayIEJAAgBEEAOgAIIAQg +DkEDRjoACSAJIARBCGogBEEfakHc1MgAEPoaIARBIGokAAw1CyAOQQ9rDgQNDg8QDAsgDkETaw4D +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 +IANBtgFqIAMpAaIDNwEAIANBvAFqIANBqANqKQEANwEAIANBtQFqIAQ6AAAgAyAGOgC0AQwFCwJA +AkACQCAEDgIAAQILIAtBAkcEQCADQbQBakHcy8gAQQgQsCAMBwsgA0GgA2ogAygCTBCiRiADQdAD +aiIEIBJBCGopAgA3AwAgAyASKQIANwPIAyADKAKgAyILQQJGDQMgFyAQKQIANwIAIBdBEGogEEEQ +aigCADYCACAXQQhqIBBBCGopAgA3AgAgA0HYAmogBCkDADcDACADIAMpA8gDNwPQAiADQYACaiAD +QdACakEkEM1PGgwHCyADKAKoAkGAgICAeEcEQCADQbQBakHky8gAQQ8QsCAMBgsgA0GgA2ogAygC +TBCjRiADQdADaiIEIBJBCGopAgA3AwAgAyASKQIANwPIAyADKAKgAyIGQYCAgIB4RwRAIANBgANq +IgkgEEEIaikCADcDACADIBApAgA3A/gCIAMoAqgCQYCAgIB4RwRAIANBqAJqEIg/CyAUIAMpA8gD +NwIAIBMgAykD+AI3AgAgFEEIaiAEKQMANwIAIBNBCGogCSkDADcCACADIAY2AqgCDAcLIANBvAFq +IANB0ANqKQMANwIAIAMgAykDyAM3ArQBDAULIANBoANqIANB/AFqEL5KIAMtAKADIgRBCUYNBSAD +QbUBaiADKQChAzcAACADQbwBaiADQagDaikAADcAACADIAQ6ALQBDAQLAkAgC0ECRwRAIANB+AJq +IANBgAJqQSQQzU8aDAELIANBoANqIgRBBGpB3MvIAEEIELEgIARBAjYCACADKAKgAyILQQJGDQIg +A0GIBGogA0GsA2opAgAiHjcDACADIAMpAqQDIh83A4AEIANB6ANqIANBxANqKAIANgIAIANB4ANq +IANBvANqKQIANwMAIANB0ANqIB43AwAgAyADKQK0AzcD2AMgAyAfNwPIAyADQfgCaiADQcgDakEk +EM1PGgsCQCADKAKoAiIEQYCAgIB4RgRAIANBoANqIgRBBGpB5MvIAEEPELEgIARBgICAgHg2AgAg +AygCoAMiBEGAgICAeEcEQCADQdADaiADQawDaikCACIeNwMAIANB+ANqIANBvANqKQIANwMAIANB +iARqIB43AwAgAyADKQK0AzcD8AMgAyADKQKkAzcDgAQMAgsgA0G8AWogA0GsA2opAgA3AgAgAyAD +KQKkAzcCtAEMBQsgA0GIBGogFEEIaikCADcDACADQfgDaiATQQhqKQIANwMAIAMgFCkCADcDgAQg +AyATKQIANwPwAwtBBCEJIANBtAFqIANB+AJqQSQQzU8aIANB5AFqIANBiARqKQMANwIAIANB9AFq +IANB+ANqKQMANwIAIANBqAFqIgYgA0G8AWopAgA3AwAgAyAENgLYASADIAMpA4AENwLcASADIAMp +A/ADNwLsASADIAMpArQBNwOgASADQegAaiADQcQBakE4EM1PIQogA0HgAGogBikDADcCACADIAs2 +AlQgAyADKQOgATcCWCADKAJQIgRFBEAgA0HKAGogA0HbAGotAAA6AAAgAyADLwBZOwFIIAMtAFgh +CSADKAJcIQQgAykCYCEeIANBEGogCkE4EM1PGgwDCyADQfwAahCIPyAHIARrIQRBAiELDAILIANB +vAFqIANB0ANqKQMANwIAIAMgAykDyAM3ArQBDAILIANBvAFqIANBrANqKQIANwIAIAMgAykCpAM3 +ArQBDAELIAggCToABCAIIAs2AgAgCCADLwFIOwAFIAggHjcCDCAIIAQ2AgggCEEHaiADQcoAai0A +ADoAACAMIAwoAhBBAWo2AhAgCEEUaiADQRBqQTgQzU8aDBALIAMoAqgCQYCAgIB4RwRAIANBqAJq +EIg/CyADQagBaiADQbwBaikCACIeNwMAIAMgAykCtAEiHzcDoAEgCEEMaiAeNwIAIAggHzcCBCAI +QQI2AgAMDwsgAygCUCEEDAALAAsgAygCtAEMAQsgAy8BsgELIQQgDCAMKAIQQQFrIgc2AhAgB0UE +QCAIQQI2AgAgCEEIOgAEDAsLAkACQCAEBEAgA0GgA2ogDBCiRiADKAKgAyIJQQJGBEAgA0HYAmog +A0GsA2opAgAiHjcDACADQbwBaiAeNwIAIAMgAykCpAMiHjcD0AIgAyAeNwK0AQwCCyADQZADaiAD +QbwDaikCADcDACADQZgDaiADQcQDaigCADYCACADQYADaiADQawDaikCADcDACADIAMpArQDNwOI +AyADIAMpAqQDNwP4AiADQdACaiIHIANB+AJqQSQQzU8aIANByANqIAdBJBDNTxogBEEBRwRAIANB +oANqIAwQo0YgAygCoAMiB0GAgICAeEcNAyADQdgCaiADQawDaikCACIeNwMAIANBvAFqIB43AgAg +AyADKQKkAyIeNwPQAiADIB43ArQBDAILIANBtAFqQQFB1MvIAEHoycgAEPMXDAELIANBtAFqQQBB +1MvIAEHoycgAEPMXCyADQYgCaiADQbwBaikCACIeNwMAIAMgAykCtAEiHzcDgAIgCEEMaiAeNwIA +IAggHzcCBCAIQQI2AgAMCwsgA0HsAWogAykCtAM3AgAgA0HkAWogA0GsA2opAgA3AgAgA0H0AWog +A0G8A2opAgA3AgAgAyADKQKkAyIeNwPQAiADIB43AtwBQQQhBiADQbQBaiADQcgDakEkEM1PGiAD +QYgCaiIKIANBvAFqKQIANwMAIAMgBzYC2AEgAyADKQK0ATcDgAIgA0HoAGogA0HEAWpBOBDNTyEH +IANB4ABqIAopAwA3AgAgAyAJNgJUIAMgAykDgAI3AlhBAiELAkAgBEECRwRAIANB/ABqEIg/QQIh +CQwBCyADQYIEaiADQdsAai0AADoAACADIAMvAFk7AYAEIAMtAFghBiADKAJcIQsgAykCYCEeIANB +EGogB0E4EM1PGgsgCCAGOgAEIAggCTYCACAIIAMvAYAEOwAFIAggHjcCDCAIIAs2AgggDCAMKAIQ +QQFqNgIQIAhBB2ogA0GCBGotAAA6AAAgCEEUaiADQRBqQTgQzU8aDAoLIAggAysDuAEQjy0MCQsg +CCADKgK0AbsQjy0MCAsgCCADKQO4ARCHLQwHCyAIIAM0ArQBEIctDAYLIAggAzMBsgHDEIctDAUL +IAggAy0AsQEQv0oMBAsgCCADKQO4ARCMLQwDCyAIIAM1ArQBEIwtDAILIAggAzMBsgFC//8DgxCM +LQwBCyAIIAMtALEBEMpICyADQZAEaiQAAkACQCANKAJUQQJGBEAjAEEQayITJAAgE0IANwIIIBMg +FTYCBCATIBE2AgAgDUGgAWohFCMAQcABayIKJAAgCkEIaiIIIBMQsDUgCkH0AGohEEEAIQdBACEM +QQAhEiMAQZADayIDJAAgA0EMaiAIELwWAkACQAJAAkACQAJAAn8CQAJAAn8gAy0ADEUEQCADLQAN +RQRAIANBBTYC0AEgCCADQdABahCAMQwCCyADLQAOIgRB2wBGDQIgBEH7AEYNAyAIIANBjwNqQaTA +yAAQhAUhBAwJCyADKAIQCyEEIBBBAjYCACAQIAQ2AgQMCAsgCCAILQAcQQFrIgQ6ABwgBEH/AXEE +QCAIQRRqIgQgBCgCAEEBajYCACADQQE6APQCIAMgCDYC8AIgA0HQAWohByMAQTBrIgQkACAEIANB +8AJqIgkoAgAiBhC8FgJAIAQtAABFBEAgBC0AAUUEQCAEQQI2AgggBiAEQQhqEIAxIQYgB0EDNgIA +IAcgBjYCBAwCCwJAAkAgBC0AAiIOQSxHBEAgDkHdAEcEQCAJLQAEDQIgBEEHNgIIIAYgBEEIahCA +MSEGIAdBAzYCACAHIAY2AgQMBQsgB0ECNgIADAQLIAktAAQNACAGQRRqIgkgCSgCAEEBajYCACAE +QQhqIAYQvBYgBC0ACARAIAcgBCgCDDYCBCAHQQM2AgAMBAsgBC0ACQRAIAQtAAohDgwCCyAEQQU2 +AgggBiAEQQhqEIAxIQYgB0EDNgIAIAcgBjYCBAwDCyAJQQA6AAQLIA5B3QBGBEAgBEEVNgIIIAYg +BEEIahCAMSEGIAdBAzYCACAHIAY2AgQMAgsgBEEIaiAGEM4GIAQoAghBAkcEQCAHIARBCGpBKBDN +TxoMAgsgByAEKAIMNgIEIAdBAzYCAAwBCyAHIAQoAgQ2AgQgB0EDNgIACyAEQTBqJAAgAygC0AEi +B0EDRg0DIANB0AJqIANB4AFqKQIANwMAIANB2AJqIANB6AFqKQIANwMAIANB4AJqIANB8AFqKQIA +NwMAIAMgAykC2AE3A8gCQQIhBiAHQQJGBEBBAEGQwsgAQbS/yAAQyBchBAwFCyADKALUASEEIANB +0AFqIQkjAEEwayIGJAAgBkEEaiADQfACaiIOKAIAIgwQvBYCQCAGLQAERQRAIAYtAAVFBEAgBkEC +NgIMIAwgBkEMahCAMSEMIAlBgYCAgHg2AgAgCSAMNgIEDAILAkACQCAGLQAGIgtBLEcEQCALQd0A +RwRAIA4tAAQNAiAGQQc2AgwgDCAGQQxqEIAxIQwgCUGBgICAeDYCACAJIAw2AgQMBQsgCUGAgICA +eDYCAAwECyAOLQAEDQAgDEEUaiILIAsoAgBBAWo2AgAgBkEMaiAMELwWIAYtAAwEQCAJIAYoAhA2 +AgQgCUGBgICAeDYCAAwECyAGLQANBEAgBi0ADiELDAILIAZBBTYCDCAMIAZBDGoQgDEhDCAJQYGA +gIB4NgIAIAkgDDYCBAwDCyAOQQA6AAQLIAtB3QBGBEAgBkEVNgIMIAwgBkEMahCAMSEMIAlBgYCA +gHg2AgAgCSAMNgIEDAILIAZBDGogDBC9BiAGKAIMQYCAgIB4RwRAIAkgBkEMakEkEM1PGgwCCyAJ +IAYoAhA2AgQgCUGBgICAeDYCAAwBCyAJIAYoAgg2AgQgCUGBgICAeDYCAAsgBkEwaiQAIAMoAtAB +IgxBgYCAgHhGDQMgA0GwAmoiBiADQeABaikCADcDACADQbgCaiIJIANB6AFqKQIANwMAIANBwAJq +IgsgA0HwAWooAgA2AgAgAyADKQLYATcDqAIgDEGAgICAeEYEQEECIQZBAUGQwsgAQbS/yAAQyBch +BAwFCyADKALUASESIANB6ABqIAsoAgA2AgAgA0HgAGogCSkDADcDACADQdgAaiAGKQMANwMAIANB ++ABqIANB0AJqKQMANwMAIANBgAFqIANB2AJqKQMANwMAIANBiAFqIANB4AJqKQMANwMAIAMgAykD +qAI3A1AgAyADKQPIAjcDcCAHIQYMBAsgA0EYNgLQASAIIANB0AFqEIAxDAELIAggCC0AHEEBayIE +OgAcIARB/wFxBEAgCEEUaiIEIAQoAgBBAWo2AgAgA0EBOgCkAiADIAg2AqACIANBgICAgHg2AsgC +IANB2AFqIQwgA0HQAmohDkECIQYCQAJAAkACQAJAA0AjAEEgayIEJAAgBEEMaiADQaACaiIVKAIA +IgsQvBYCQCADQdABaiIJAn8CQCAELQAMRQRAIAQtAA1FBEAgBEEDNgIUIAsgBEEUahCAMSELIAlB +AToAACAJIAs2AgQMBAsCQAJAIAQtAA4iEUEsRwRAIBFB/QBHBEAgFS0ABA0CIARBCDYCFCALIARB +FGoQgDEhCyAJQQE6AAAgCSALNgIEDAcLIAlBgAY7AQAMBgsgFS0ABA0AIAtBFGoiESARKAIAQQFq +NgIAIARBFGogCxC8FiAELQAUBEAgCSAEKAIYNgIEIAlBAToAAAwGCyAELQAVBEAgBC0AFiERDAIL +IARBBTYCFCALIARBFGoQgDEhCyAJQQE6AAAgCSALNgIEDAULIBVBADoABAsCQCARQSJHBEAgEUH9 +AEYNASAEQRE2AhQgCyAEQRRqEIAxIQsgCUEBOgAAIAkgCzYCBAwFCyALQQA2AgggC0EUaiIRIBEo +AgBBAWo2AgAgBEEUaiALQQxqIAsQ+wUgCQJ/IAQoAhRBAkYEQCAEKAIYDAELIARBDGohCwJAIAQo +AhgiESAEKAIcIhVB6+fIAEEIEIA8RQRAIBEgFUHz58gAQQ8QgDxFBEAgC0ECOgABDAILIAtBAToA +AQwBCyALQQA6AAELIAtBADoAACAELQAMRQ0DIAQoAhALNgIEQQEMAwsgBEEVNgIUIAsgBEEUahCA +MSELIAlBAToAACAJIAs2AgQMAwsgCSAEKAIQNgIEIAlBAToAAAwCCyAJIAQtAA06AAFBAAs6AAAL +IARBIGokACADLQDQAQ0BIAMtANEBIgRBA0cEQAJAAkACQCAEDgIBAgALIANBoAJqEJA/IgRFDQMM +BwsgBkECRwRAQZjCyABBCBDOHyEEDAcLIANB0AFqIQQCQCADQaACaigCACIHEOcWIgZFBEAgBCAH +EM4GDAELIARBAjYCACAEIAY2AgQLIAMoAtQBIQcgAygC0AEiBkECRwRAIANBwAJqIAxBGGopAgA3 +AwAgA0G4AmogDEEQaikCADcDACADQbACaiAMQQhqKQIANwMAIAMgDCkCADcDqAIMAwsgByEEDAYL +IAMoAsgCQYCAgIB4RwRAQaDCyABBDxDOHyEEDAYLIANB0AFqIQQCQCADQaACaigCACIJEOcWIgtF +BEAgBCAJEL0GDAELIARBgICAgHg2AgAgBCALNgIECyADKALUASEEIAMoAtABIhJBgICAgHhGDQUg +A0GIA2oiCSAMQRhqKAIANgIAIANBgANqIgsgDEEQaikCADcDACADQfgCaiIRIAxBCGopAgA3AwAg +AyAMKQIANwPwAiADKALIAkGAgICAeEcEQCADQcgCahCIPwsgDiADKQPwAjcCACAOQQhqIBEpAwA3 +AgAgDkEQaiALKQMANwIAIA5BGGogCSgCADYCACADIAQ2AswCIAMgEjYCyAIMAQsLIAZBAkYNAiAD +KALIAiIMQYCAgIB4Rw0BQaDCyABBDxDNHyEEDAMLIAMoAtQBIQQMAgsgA0GYAWogDkEIaikCADcD +ACADQaABaiAOQRBqKQIANwMAIANBqAFqIA5BGGooAgA2AgAgA0G4AWogA0GwAmopAwA3AwAgA0HA +AWogA0G4AmopAwA3AwAgA0HIAWogA0HAAmopAwA3AwAgAyADKQOoAjcDsAEgAyAOKQIANwOQASAD +KALMAiESIAchBAwCC0GYwsgAQQgQzR8hBAsgAygCyAJBgICAgHhHBEAgA0HIAmoQiD8LQQIhBgsg +CCAILQAcQQFqOgAcIAgQjRMhByADQeABaiADQbgBaikDADcCACADQegBaiADQcABaikDADcCACAD +QfABaiADQcgBaikDADcCACADQYgCaiADQZgBaikDADcCACADQZACaiADQaABaikDADcCACADQZgC +aiADQagBaigCADYCACADIAQ2AtQBIAMgEjYC/AEgAyAMNgL4ASADIAMpA7ABNwLYASADIAMpA5AB +NwKAAiADIAY2AtABIAMgBzYCnAICQCAGQQJHBEAgBw0BIANBDGogA0HYAWpBxAAQzU8aDAcLIAdF +DQUgA0GcAmoQ5RkMBQsgA0H4AWoQiD9BAiEGIAchBAwFCyADQRg2AtABIAggA0HQAWoQgDELIQQg +EEECNgIAIBAgBDYCBAwFCyADKALUASEEQQIhBgsgCCAILQAcQQFqOgAcIAgQnwwhByADQeABaiAD +QfgAaikDADcCACADQegBaiADQYABaikDADcCACADQfABaiADQYgBaikDADcCACADQYgCaiADQdgA +aikDADcCACADQZACaiADQeAAaikDADcCACADQZgCaiADQegAaigCADYCACADIAQ2AtQBIAMgEjYC +/AEgAyAMNgL4ASADIAMpA3A3AtgBIAMgAykDUDcCgAIgAyAGNgLQASADIAc2ApwCAkAgBkECRgRA +IAcNAQwCCyAHRQRAIANBDGogA0HYAWpBxAAQzU8aDAMLIANB+AFqEIg/QQIhBiAHIQQMAgsgA0Gc +AmoQ5RkLQQIhBgsgBkECRg0AIBBBCGogA0EMakHEABDNTxogECAENgIEIBAgBjYCAAwBCyAEIAgQ +2CMhBCAQQQI2AgAgECAENgIECyADQZADaiQAAkACQCAKKAJ0QQJHBEAgCkEoaiAKQfQAakHMABDN +TxogCkEIahDVIyIEDQEgFCAKQShqQcwAEM1PGgwCCyAUIAooAng2AgQgFEECNgIADAELIBRBAjYC +ACAUIAQ2AgQgCkHQAGoQiD8LIApBCGoQiD8gCkHAAWokACATQRBqJAAgDSgCoAEiBkECRgRAIA8g +DSgCpAE2AgQgD0ECOgAAIA1B1ABqEPY6DAMLIA0oAqQBIQQgDUEQaiANQagBakHEABDNTxogDSAE +NgIMIA0gBjYCCCANQdQAahD2OgwBCyANQQhqIA1B1ABqQcwAEM1PGiANKAIIIQYLIAZFBEAgD0EH +OgAAIA1BMGoQiD8MAQsgDSgCDCEEIA1BuAFqIA1BKGopAgA3AwAgDUGwAWogDUEgaikCADcDACAN +QagBaiANQRhqKQIANwMAIA0gDSkCEDcDoAEgDSAZIBsgDUGgAWoiByAEEK8DIgY2AlQgByANQQhq +QcwAEM1PGiMAQYABayIEJAAgBEE4aiAHQcQAaikAADcDACAEQTBqIAdBPGopAAA3AwAgBCAHQTRq +KQAANwMoIARByABqIAdBMGooAgAiAzYCACAEIAcpAig3A0AgBEHoAGogBkEYaikAADcDACAEQeAA +aiAGQRBqKQAANwMAIARB2ABqIAZBCGopAAA3AwAgBCAGKQAANwNQIARB9ABqIARB0ABqIARBKGog +BCgCRCADEJgWAkAgBCgCdCIHQYCAgIB4RwRAIAQgBCkCeCIeNwIgIAQgBzYCHCAEQdAAahCKUSAE +QUBrEIg/AkAgHkKAgICAcINCgICAgIAIUQRAQeGT2wAtAAAaQSBBARCrSCIHRQ0mIAdCADcAACAH +QRhqQgA3AAAgB0EQakIANwAAIAdBCGpCADcAAEHhk9sALQAAGkEgQQEQq0giBkUNJiAGQgA3AAAg +BkEYakIANwAAIAZBEGpCADcAACAGQQhqQgA3AAAgBEEQaiAEQRxqIgNBAEEgQeDcyAAQjDIgB0Eg +IAQoAhAgBCgCFEHw3MgAEJI6IARBCGogA0EgQcAAQYDdyAAQjDIgBkEgIAQoAgggBCgCDEGQ3cgA +EJI6IAMQ2isgD0EIaiAGNgIAIA8gBzYCBCAPQQg6AAAMAQsgBEEcahDaKyAPQcAANgIEIA9BBjoA +ACAPIAQoAiQ2AggLIARBHGoQiD8MAQsgD0EDOgAAIARB0ABqEIpRIARBQGsQiD8LIARBgAFqJAAg +DUHUAGoQi0oLIA1B8AFqJAAgBS0AsAhBCEYEQCAFQbgIaigCACEEIAUoArQIIQYgBUHwCGoQiD8M +BAsgBUGgCWogBUHACGooAgA2AgAgBUGYCWogBUG4CGopAgA3AwAgBSAFKQKwCDcDkAkgBUGQCWoQ +2hggBUGAgICAeDYCxAEgBUEDOgCAASAFQfAIahCIPwwSCyAFQbAIaiEIIwBBIGsiByQAQeGT2wAt +AAAaAkACQEEgQQEQq0giBgRAIAZCADcAACAGQRhqQgA3AAAgBkEQakIANwAAIAZBCGpCADcAACAH +IAY2AhRB4ZPbAC0AABpBIEEBEKtIIgNFDSMgA0IANwAAIANBGGpCADcAACADQRBqQgA3AAAgA0EI +akIANwAAIAcgAzYCGCAHEO8hNgIcIAdBCGogBiAHQRxqELkvAn8gBygCCCIEBEAgBygCDAwBCyAH +IAMgB0EcahC5LyAHKAIAIgRFDQIgBygCBAshBiAHQRxqEMQwIAdBGGoQi0ogB0EUahCLSiAIIAY2 +AgggCCAENgIEIAhBBDoAAAwCCwwiCyAHQRxqEMQwIAhBCGogAzYCACAIIAY2AgQgCEEIOgAACyAH +QSBqJAAgAUGEA2oCfyAFLQCwCEEIRgRAIAUoArQIIQYgBUG4CGooAgAMAQsgBUGQCWogBUGwCGoQ +iCcgBS0AkAkiBEELRw0FIAUoApQJIQYgBUGYCWooAgALNgIAIAFBgANqIgggBjYCACAFQZwIaiEO +IAFBmAFqKAIAIQQgAUGcAWooAgAhByMAQZACayIGJAAgBhDvITYCFCAGQTBqIglCADcDACAGQShq +IgxCADcDACAGQSBqIg1CADcDACAGQgA3AxggBkEIaiAGQRhqIAZBFGoQuS8CQAJAIAYoAggiA0UE +QCAGIAQgByAGQRhqQcCaDBCvAyIDNgI4IAZBiAJqIAkpAwA3AgAgBkGAAmogDCkDADcCACAGQfgB +aiANKQMANwIAIAYgBikDGDcC8AEgBkHAmgw2AuwBIAZBATYC6AEgBkGcAWohByAGQegBaiEJIwBB +oAFrIgQkACAEQTBqIANBGGopAAA3AwAgBEEoaiADQRBqKQAANwMAIARBIGogA0EIaikAADcDACAE +IAMpAAA3AxggBEHgAGoQ1hECQAJAIAQtAGBFBEAgBEE6aiAELQBjOgAAIAQgBEHxAGopAAA3AFUg +BCAEQewAaikCADcDUCAEQcgAaiAEKQBVNwAAIAQgBC8AYTsBOCAEIARB5ABqKQIANwA7IAQgBCkD +UDcAQyAEQeAAaiIDQQBBwAAQy08aIARBEGogA0EAQSBBkNzIABD5LSAEKAIQIAQoAhQgCCgCAEEg +QaDcyAAQkjogBEEIaiADQSBBwABBsNzIABD5LSAEKAIIIAQoAgwgCCgCBEEgQcDcyAAQkjogBEHQ +AGogBEEYaiAEQThqIANBwAAQihcgBCgCUCIDQYCAgIB4Rg0BIAQpAlQhHiAEQeAAahCVNSAHQcQA +aiAEQcgAaikBADcAACAHQTxqIARBQGspAQA3AAAgByAEKQE4NwA0IAcgCUEoEM1PIgcgHjcCLCAH +IAM2AigMAgsgB0EIaiAEKQJkNwIAIAdBBDoABCAHQQI2AgAMAQsgB0ECNgIAIAdBAzoABAsgBEEY +ahCKUSAEQaABaiQAIAYoApwBIgRBAkYNASAGQZgBaiIHIAZBsAFqKAIANgIAIAZBkAFqIgMgBkGo +AWopAgA3AwAgBiAGKQKgATcDiAEgBkHUAGogBkG0AWpBNBDNTxogBkHIAGogAykDADcCACAGQdAA +aiAHKAIANgIAIAYgBDYCPCAGIAYpA4gBNwJAIAZBnAFqIQwjAEEwayIJJAAgCUEIakGAAUEAEN0Y +IAlBADYCHCAJIAkpAwg3AhQjAEEQayITJAAgE0GACDYCDCATIAlBFGo2AgggCUEgaiENIAZBPGoh +CiMAQRBrIgMkACADIBNBCGoQ+yICQAJAIAMoAgAiBEEFRgRAIAMoAgQhCCMAQRBrIg8kACAPQQRq +IAhB6+fIAEEIELIdAkAgDygCBCIEQQJGBEAjAEEQayIEJAACQCAKKAIARQRAIAMgCEH/5MgAQQQQ +2SMMAQsgBCAIQYPlyABBGBDWEyAEKAIAIgdBBUcEQCAEKAIEIQsgAyAEKQIINwIIIAMgCzYCBCAD +IAc2AgAMAQsgBCgCBCELIApBBGohECMAQRBrIgckACAHQQRqIAtBm+XIAEEGELIdAkAgBygCBCIS +QQJGBEAgBCALIBA1AgAQsx0MAQsgBCAHKQIINwIIIAQgEjYCBCAEQQA2AgALIAdBEGokACAEKAIA +IgdBBUcEQCADIAQpAgQ3AgQgA0EMaiAEQQxqKAIANgIAIAMgBzYCAAwBCyAKQQhqIRAjAEEgayIH +JAAgB0EQaiALQaHlyABBCBCyHQJAAkAgBygCECISQQJGBEAgB0EQaiALQSAQsxsgBygCEEEFRw0B +IAcgBygCFDYCDEEAIQsDQCALQSBGBEAgBEEFNgIADAQLIAdBEGogB0EMaiALIBBqEM5IIAcoAhBB +BUYEQCALQQFqIQsMAQsLIAQgBykCEDcCACAEQQhqIAdBGGopAgA3AgAMAgsgBCAHKQIUNwIIIAQg +EjYCBCAEQQA2AgAMAQsgBCAHKQIQNwIAIARBCGogB0EYaikCADcCAAsgB0EgaiQAIAQoAgAiB0EF +RwRAIAMgBCkCBDcCBCADQQxqIARBDGooAgA2AgAgAyAHNgIADAELIANBBTYCAAsgBEEQaiQADAEL +IAMgDykCCDcCCCADIAQ2AgQgA0EANgIACyAPQRBqJAAgAygCACIEQQVHDQEgCkEoaiEPIwBBEGsi +FCQAIBRBBGogCEHz58gAQQ8Qsh0CQCAUKAIEIgRBAkYEQCMAQRBrIgQkACAEIAhBzubIAEEQENYT +AkACQCAEKAIAIgdBBUYEQCAEKAIEIQcgD0EMaiEKIwBBIGsiCCQAIAhBEGogB0He5sgAQQUQsh0C +QAJAIAgoAhAiC0ECRgRAIAhBEGogB0EYELMbIAgoAhBBBUcNASAIIAgoAhQ2AgxBACELA0AgC0EY +RgRAIARBBTYCAAwECyAIQRBqIAhBDGogCiALahDOSCAIKAIQQQVGBEAgC0EBaiELDAELCyAEIAgp +AhA3AgAgBEEIaiAIQRhqKQIANwIADAILIAQgCCkCFDcCCCAEIAs2AgQgBEEANgIADAELIAQgCCkC +EDcCACAEQQhqIAhBGGopAgA3AgALIAhBIGokACAEKAIAIghBBUcNASMAQRBrIhEkACARQQRqIAdB +4+bIAEEKELIdAkAgESgCBCIIQQJGBEAjAEFAaiIIJAAgDygCBCEbIAhBIGohCiAPKAIIIRUjAEEw +ayILJAAgC0EcaiAHIBUQ1ggCQCALKAIcIg9BAkcEQCAKIAsoASI2AQ4gCkESaiALQSZqLwEAOwEA +IApBDGogCy8BIDsBACAKQQhqIA82AgAgCkKBgICACDcCAAwBCyAKIAspAwg3AgQgCkEMaiALQRBq +KQMANwIAIAogBzYCFCAKQYCAgIB4NgIACyALQTBqJAACQCAIKAIgQYGAgIB4RwRAIAhBGGogCEEw +aikCADcDACAIQRBqIAhBKGopAgA3AwAgCCAIKQIgNwMIAkADQCAVRQ0BIAggGzYCPCAIQSBqIRIg +CEE8aiEHIwBBEGsiCiQAAkAgCEEIaiILKAIAQYCAgIB4RgRAIBIgCygCFCAHKAIALQAAEKVGDAEL +IAcoAgAtAAAhECMAQRBrIg8kACAPQQRqIRcjAEEwayIHJAACQCAQrUL/AYMiHkKAAVQEQCAHQSBq +IAsgHqciEEEIdBDILgJAAkAgBy0AIEEERwRAIAcpAyAiHkL/AYNCBFINAQsgB0EEOgAQDAELIAcg +HjcDEAsgByAQOgAiIAdBBDsBICAHQQhqIAdBEGogB0EgahCMMSAXAn8gBy0ACEEERgRAIBcgBy8A +CTsBBEECDAELIBcgBykDCDcCBEEACzYCAAwBCyAHQRBqIRkgHqchHSMAQRBrIhAkACAQIAtBBRDI +LgJAAkAgEC0AAEEERg0AIBApAwAiHkL/AYNCBFENACAZIB43AgQgGUEANgIADAELIBAgHToADyAL +IBBBD2pBARDhSCAZQQI2AgALIBBBEGokACAHQQI2AiAgB0EFOgAkIBcgGSAHQSBqEJUiCyAHQTBq +JAAgCiAPKAIEIgdBAkYEf0EFBSAKIA8oAQo2AQogCkEOaiAPQQ5qLwEAOwEAIAogDy8BCDsBCCAK +IAc2AgRBAAs2AgAgD0EQaiQAIAooAgAiB0EFRgRAIBJBBTYCACALIAsoAhBBAWo2AhAMAQsgEiAK +KQIENwIEIBJBDGogCkEMaigCADYCACASIAc2AgALIApBEGokACAIKAIgIgdBBUYEQCAVQQFrIRUg +G0EBaiEbDAELCyAEIAgpAiQ3AgQgBEEMaiAIQSxqKAIANgIAIAQgBzYCACAIKAIIQYCAgIB4Rg0C +IAhBCGoQiD8MAgsgCEEwaiAIQRhqKQMANwMAIAhBKGogCEEQaikDADcDACAIIAgpAwg3AyAjAEEw +ayIHJAACQAJAIAhBIGoiCigCAEGAgICAeEcEQCAHQRhqIApBEGooAgAiCzYCACAHQRBqIg8gCkEI +aikCADcDACAHIAopAgA3AwggB0EgaiAKKAIUIgogCxDWCCAHKAIgIgtBAkcNASAHQShqIA8oAgAi +CzYCACAHIAcpAwg3AyAgCigCACAHKAIkIAsQ4UggB0EgahCIPwsgBEEFNgIADAELIAQgBygBJjYB +CiAEQQ5qIAdBKmovAQA7AQAgBCAHLwEkOwEIIAQgCzYCBCAEQQA2AgAgB0EIahCIPwsgB0EwaiQA +DAELIAQgCCkCJDcCACAEQQhqIAhBLGopAgA3AgALIAhBQGskAAwBCyAEIBEpAgg3AgggBCAINgIE +IARBADYCAAsgEUEQaiQAIAQoAgAiB0EFRgRAIANBBTYCAAwDCyADIAQpAgQ3AgQgA0EMaiAEQQxq +KAIANgIAIAMgBzYCAAwCCyAEKAIEIQggAyAEKQIINwIIIAMgCDYCBCADIAc2AgAMAQsgAyAEKQIE +NwIEIANBDGogBEEMaigCADYCACADIAg2AgALIARBEGokAAwBCyADIBQpAgg3AgggAyAENgIEIANB +ADYCAAsgFEEQaiQAIAMoAgAiBEEFRgRAIA1BBTYCAAwDCyANIAMpAgQ3AgQgDUEMaiADQQxqKAIA +NgIAIA0gBDYCAAwCCyADKAIEIQcgDSADKQIINwIIIA0gBzYCBCANIAQ2AgAMAQsgDSADKQIENwIE +IA1BDGogA0EMaigCADYCACANIAQ2AgALIANBEGokACATQRBqJAACQCAJKAIgIgRBBUYEQCAMIAkp +AhQ3AgQgDEEMaiAJQRxqKAIANgIADAELIAwgCSkCJDcCBCAMQQxqIAlBLGooAgA2AgAgCUEUahCI +PwsgDCAENgIAIAlBMGokACAOQQRqIQcjAEEQayIEJAACQCAMKAIAQQVGBEAgByAMKQIENwIAIAdB +CGogDEEMaigCADYCACAEQRBqJAAMAQsgBEEIaiAMQQhqKQIANwMAIAQgDCkCADcDAEHw28gAQSAg +BEHg0cgAQdDcyAAQiRgACyAOQQg6AAAgBkHkAGoQiD8gBkE4ahCLSgwCCyAGKAIMIQQgDiADNgIE +IA5BBDoAACAOIAQ2AggMAQsgBkGYAWogBkGwAWooAgAiBDYCACAGQZABaiAGQagBaikCACIeNwMA +IAYgBikCoAEiHzcDiAEgDkEQaiAENgIAIA5BCGogHjcCACAOIB83AgAgBkE4ahCLSgsgBkEUahDE +MCAGQZACaiQAIAFBiQJqQQE6AAAgBUGQCWogAUGAAWpBuOnEAEERQQEQqiYCQCAFKAKQCSIEBEAg +BSgClAkhByAFQbAIaiIGIAVBmAlqQSwQzU8aIAFBkAJqIAc2AgAgAUGMAmoiByAENgIAIAFBiAJq +QQE6AAAgAUGUAmogBkEsEM1PGiAFQZAJaiAHQbjpxABBERD7ICAFKAKQCSIEDQEgBUGAAWogBSgC +lAkQjSIgBUGAgICAeDYCxAEMEAsgBUGAAWogBSgClAkQjSIgBUGAgICAeDYCxAEMEAsgAUHEAmog +BSkClAk3AgAgAUHAAmoiBiAENgIAIAVByenEAEEMEAA2AuAIIAFBADoAiQIgBUG4CGogBUGkCGop +AgA3AwAgBUHACGogBUGsCGooAgA2AgAgBSAFKQKcCCIeNwOwCAJAIB6nQf8BcUEIRgRAIAVBnAlq +IAVBvAhqKAIANgIAIAUgBSkCtAg3ApQJDAELIAVBkAlqIAVBsAhqEIgnIAUtAJAJIgRBC0cNCgsg +BUGLCWogBUGcCWooAgAiBDYAACAFQfgIaiAENgIAIAUgBSkClAkiHjcAgwkgBSAeNwPwCCAFQegI +aiAFQfAIahDCFyAFKALoCA0BIAUgBSgC7Ag2AuQIIwBBEGsiBCQAIARBCGogBkEEaiAFQeQIaiAF +QeAIahCcIyAEKAIMIQYgBUEoaiIDIAQoAgg2AgAgAyAGNgIEIARBEGokACAFKAIsIQQgBSgCKA0K +IAUgBDYC3AggBUHcCGoQlkEgBUHkCGoQlkEgBUHwCGoQiD8gBUHgCGoQlkEgAUEAOgCIAiABQcwC +aiAHQTQQzU8aCyAFQSBqIAFBzAJqIgQgAhC0DSAFKAIgIgdBA0YNBCAFKAIkIQYgBBDjMCAFQRhq +IAcgBhDaHiAFKAIYDQUgAUGEA2ooAgAhBCABQYADaigCACEGIAFBxAJqEJZBIAFBiAJqQQA7AQAM +AQsgBUGAgICAeDYCxAEgBSAFKALsCDYChAEgBUELOgCAAQwJCyABQYABahDHUSABQZABaikCACEe +QRBBBBCnLiIHIAQ2AgwgByAGNgIIIAdCgYCAgBA3AgAgAUH4BWpBADoAACABQZQCaiAHNgIAIAFB +jAJqIB43AgALIAVBkAlqIAFBjAJqIgQgAhCuAyAFKALUCUGBgICAeEYNAyAFQYABaiAFQZAJakHQ +ABDNTxogBBDvMSABQfQBahCWQSABQbwBahDjMCABQYABahCeQyABQbABahCIPyAFKALEAQwRCyAF +QZQBaiAFQaQJaikCADcCACAFQZwBaiAFQawJaikCADcCACAFIAUtAJMJOgCDASAFIAUvAJEJOwCB +ASAFIAUpApwJNwKMASAFQYCAgIB4NgLEASAFIAUpApQJNwKEASAFIAQ6AIABDAwLQQUMAgsgBUGA +AWogBSgCHBCNIiAFQYCAgIB4NgLEAQwGC0EGCyEBIBggAToAAAwOCyAFQZgBaiAFQagJaikCADcD +ACAFQaABaiAFQbAJaigCADYCACAFIAUpAJEJNwOACSAFIAVBmAlqKQAANwCHCSAFQYgBaiAFKQCH +CTcAACAFIAUpAqAJNwOQASAFQYCAgIB4NgLEASAFIAQ6AIABIAUgBSkDgAk3AIEBDAILIAVBgAFq +IAQQjSIgBUGAgICAeDYCxAEgBUHkCGoQlkELIAVB8AhqEIg/CyAFQeAIahCWQQsgAUHEAmoQlkEL +IAFBiAJqLQAARQ0AIAFBjAJqEOMwCyABQYgCakEAOgAAAkAgAUGJAmotAABFDQAgBS0AnAhBCEYE +QCAFQaAIahCIPwwBCyAFQZwIahDaGAsgAUEAOgCJAiABQYADahClQwwBCyABQbACahCWQQsgAUH0 +AWoQlkELIAFBvAFqEOMwCyABQYABahCeQwsgAUGwAWoQiD9BgICAgHgLIQYgBUHuBmoiByAFLQCD +AToAACAFQdgGaiIIIAVBlAFqKQIANwMAIAVB4AZqIgkgBUGcAWopAgA3AwAgBUG4BmoiDCAFQawB +aikCADcDACAFQcAGaiINIAVBtAFqKQIANwMAIAVByAZqIgogBUG8AWopAgA3AwAgBSAFLwCBATsB +7AYgBSAFKQKMATcD0AYgBSAFKQKkATcDsAYgBS0AgAEhAyAFKAKEASECIAUoAogBIQQgBSkDyAEh +HyAYQQE6AAAgBkGBgICAeEYNASAFQa4HaiAHLQAAOgAAIAVBmAdqIAgpAwA3AwAgBUGgB2ogCSkD +ADcDACAFQfgGaiAMKQMANwMAIAVBgAdqIA0pAwA3AwAgBUGIB2ogCikDADcDACAFIAUvAewGOwGs +ByAFIAUpA9AGNwOQByAFIAUpA7AGNwPwBiAWELAUIAZBgICAgHhGDQMgBUGIBmogBUGIB2opAwA3 +AwAgBUGABmogBUGAB2opAwA3AwAgBUH4BWogBUH4BmopAwA3AwAgBUGuBmogBUGuB2otAAA6AAAg +BUGYBmogBUGYB2opAwA3AwAgBUGgBmogBUGgB2opAwA3AwAgBSAFKQPwBjcD8AUgBSAFLwGsBzsB +rAYgBSAFKQOQBzcDkAYgAUHUAGoiBxDaKyAHEIg/CyAFQZQBaiAFQZgGaikDADcCACAFQZwBaiAF +QaAGaikDADcCACAFQawBaiAFQfgFaikDADcCACAFQbQBaiAFQYAGaikDADcCACAFQbwBaiAFQYgG +aikDADcCACAFIAM6AIABIAUgBS8BrAY7AIEBIAUgBDYCiAEgBSACNgKEASAFIAUpA5AGNwKMASAF +IAUpA/AFNwKkASAFIAVBrgZqLQAAOgCDASAFIB83A8gBIAUgBjYCxAFB2ABBCBDuLSICQoGAgIAQ +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 +NgIAIARBkAFqIANB0ABqQdgAEM1PGiAEQfABaigCABCHNyEBIARBwAJqQQA6AAAgBEHsAWogATYC +ACAEIAFBCGo2AogCCyAEQYgCaiIKIAUQugciAUUNASAEQegBaiIGIAE2AgAgChDZPyAGKAIAIQEg +A0G4AWoiBiADQZgCakHEABDNTxogA0G2AWoiDiADQfoDai0AADoAACADIAMvAPgDOwG0ASAEQYwC +aiAEQYwBaiIINgIAIAQgAUEUaiIBNgKIAiAEQZACaiAGQcQAEM1PGiAEQdQCaiIMQQA6AAAgBEHV +AmogAy8BtAE7AAAgBEHXAmogDi0AADoAAAwFCyADQYICaiAKLQAAOgAAIANBgARqIAwpAwA3AwAg +A0GIBGogDigCADYCACADIAMvAUw7AYACIAMgAykDODcD+ANBAyEGDBELIAdBAjYCAEEFDBILIARB +iAJqIQogBEHUAmoiDC0AAEEBaw4DCAADAQsACyAEQYwCaigCACEIIAQoAogCIQELIARBlAJqIAg2 +AgAgBEGQAmogATYCACABKAIUIQEgBEHQAmpBADoAACAEQZgCaiABQQhqNgIACyAEQZgCaiIBIAUQ +ugciBkUNBiADIAY2ArgEIAEQ2T8gA0G4BGoQ1EwiBigCACEIQQ0hASADQQ06AJgCIAhFDQUgA0GY +AmoQgB0gA0H4A2ogBiAEQZQCaigCABC1CEEWIQEgAy0A+AMiBkEWRgRAIANBuARqEJpMIANB+ANq +IgYQ6EggA0EoaiAEKAKUAkEsahDxLiADKAIsIQggAygCKCEOIANBIGogBCgClAIQtSEgBiAOIAgg +AygCICADKAIkENggIANBGGogBEGQAmooAgAiBigCACAGKAIEEMIwIANBqAJqIANBgARqKAIANgIA +IAMgAykDGDcCmAIgAyADKQL4AzcCoAIgA0G8BGogA0GYAmoQ9B0gAygCvAQhCCADKQLABCEUDAkL +IANB3gRqIAMtAPsDOgAAIANB0ARqIANBkARqKQIANwMAIANB2ARqIANBmARqKAIANgIAIAMgAy8A ++QM7AdwEIAMgAykCiAQ3A8gEIAMoAvwDIQggAykCgAQhFCAGIQEMBwsgB0ECNgIAQQMMDAtB4MbC +AEEjQeztwgAQ5isACyAHQQI2AgBBBAwKC0H87cIAQcMAQcDuwgAQ1yIAC0HgxsIAQSNBvIDDABDm +KwALIANB3gRqIANBtwRqLQAAOgAAIANB0ARqIANBqARqKQIANwMAIANB2ARqIANBsARqKAIANgIA +IAMgAy8AtQQ7AdwEIAMgAykCoAQ3A8gEDAELIAxBAzoAACAHQQI2AgBBBgwGCyADQbgEahCaTAsg +A0GWAmoiDiADQd4Eai0AADoAACADQYgCaiISIANB0ARqKQMANwMAIANBkAJqIhMgA0HYBGooAgA2 +AgAgAyADLwHcBDsBlAIgAyADKQPIBDcDgAJBASEGIAxBAToAACADQboEaiIMIA4tAAA6AAAgA0Go +BGoiDiASKQMANwMAIANBsARqIhIgEygCADYCACADIAMvAZQCOwG4BCADIAMpA4ACNwOgBCAKEPA/ +IAFBFkcEQCADQYICaiAMLQAAOgAAIANBgARqIA4pAwA3AwAgA0GIBGogEigCADYCACADIAMvAbgE +OwGAAiADIAMpA6AENwP4AyAEQegBahCaTCAEQewBahC9OQwCCyADIBQ3AqwBIAMgCDYCqAEgA0Go +AWoQsRkgBEHoAWoQmkwgBEHsAWoQvTkCQEHEk9sAKAIADQBB7IrbABD7PiIBQf8BcUUNAEEAIQhB +7IrbACgCACABEPUuRQ0AQeyK2wAoAgAiAUEcaiEGIAFBIGooAgAiCgRAIAFBKGooAgAhDCABQSRq +KAIAIQ4gASgCHCEIIANBADYCqAIgAyAMNgKkAiADIA42AqACIAMgCjYCnAILIAMgCDYCmAIgA0G4 +AWoiASADQZgCaiIIQdDuwgAQ3SwgA0GkAmpCADcCACADQZTJwgA2AoAEIANBATYCnAIgA0GU78IA +NgKYAiADQaTJwgA2AqACIAMgCDYC/AMgAyABNgL4AyADQcgEaiIBIAYgA0H4A2oQ4EFB7IrbACgC +ACABEMQ0CyAEIARB9AFqKAIAIARB8AFqIgEoAgAQkE4iBigCCCAGQQxqKAIAEOIeNgKIAiADQRBq +IAEoAgAQkE5BCGoQ8S4gAygCECEBIARBnAJqIAMoAhQ2AgAgBCABNgKYAiADQQhqIARB8ABqKAIA +IAQoAogCEMoPIAMoAgghASAEQaQCaiADKAIMNgIAIARBoAJqIAE2AgAgBEGFAmpBADoAACAEQYwC +aiAEQfgBaikCADcCACAEQZQCaiAEQYACaigCADYCACAEQYQCakEAOgAAIANBmAJqIgEgDUHQABDN +TxogBEGoAmogAUHgARDNTxogBEGIBGpBADoAAAsgA0G4AWogBEGoAmoiBiAFEMgEAkAgAy0AuAEi +AUEMRwRAIANBvgRqIgUgAy0AuwE6AAAgA0HQBGoiCiADQdABaikCADcDACADQdgEaiIMIANB2AFq +KAIANgIAIAMgAy8AuQE7AbwEIAMgAykCyAE3A8gEIAMoArwBIQggAykCwAEhFCAGEOobIAFBC0cN +ASAEQaQCaigCACEBIARBoAJqKAIAIQUgBEGcAmooAgAhBiAEQZgCaigCACEIIAMgBEGMAWoiChC1 +ISADQZgCaiINIAggBiAFIAEgAygCACADKAIEEKojIANBwAFqIgUgBEH8AGooAgA2AgAgAyAEQfQA +aikCADcDuAEgA0G8AmoQnRkgA0HEAmoiDCAFKAIANgIAIAMgAykDuAE3ArwCIAUgBEGIAWooAgA2 +AgAgAyAEQYABaikCADcDuAEgA0HIAmoQnRkgA0HQAmogBSgCADYCACADIAMpA7gBNwPIAiAFIARB +lAJqKAIANgIAIAMgBEGMAmopAgA3A7gBIA0Q+0AgA0GgAmogBSgCACIBNgIAIANBgARqIANBuAJq +KQMANwMAIANBiARqIANBwAJqKAIANgIAIANBggJqIANBowJqLQAAOgAAIAMgAykDuAEiFTcDmAIg +AyADKQOwAjcD+AMgAyADLwChAjsBgAIgAygCpAIhCCADKQOoAiEUIAMoApwCIQYgBSADQcwCaikC +ADcDACADIAwpAgA3A7gBIARBiAJqEItKIAoQ6CtBACENIARBhAJqQQA6AAAgFachBQwECyAHQQI2 +AgBBBwwECyADQYICaiAFLQAAOgAAIANBgARqIAopAwA3AwAgA0GIBGogDCgCADYCACADIAMvAbwE +OwGAAiADIAMpA8gENwP4AyAEQYwCahD7QCAEQaACahD6PiAEQZgCahD6PiAEQYgCahCLSkEDIQYL +IARBjAFqEOgrIARBgAFqEJ0ZIARB9ABqEJ0ZCyAEQYQCai0AAARAIA0Q6z8LIARBADoAhAJBASEN +IARBhQJqLQAARQ0AIARB+AFqEIg/CyAHIAE6AAwgByAGNgIIIAcgBTYCBCAHIA02AgAgByADLwGA +AjsADSAHIBQ3AhQgByAINgIQIAcgAykD+AM3AhwgByADKQO4ATcDMCAHQQ9qIANBggJqLQAAOgAA +IAdBJGogA0GABGopAwA3AgAgB0EsaiADQYgEaigCADYCACAHQThqIANBwAFqKQMANwMAQQELOgCG +AiADQTRqEIo9IANB4ARqJAAgAigCuAkiAUECRg0HIAJBnglqIAJBxwlqLQAAOgAAIAJBkAlqIAJB +3AlqKQIANwMAIAJBmAlqIAJB5AlqKAIANgIAIAJBgAlqIAJB8AlqKQMANwMAIAIgAi8AxQk7AZwJ +IAIgAikC1Ak3A4gJIAIgAikD6Ak3A/gIIAItAMQJIQUgAigCwAkhBiACKAK8CSEHIAIoAsgJIQMg +AikCzAkhFCAEEIdMDCYLIABBAToAXCAAQUBrQQA2AgAgAEEwakECNgIAIAJBsAVqIAUoAgA2AgAg +AiACKQOIAjcDqAULIABB4ABqIgkgAkG4BWpB0AEQzU8aIABBtAJqIAo2AgAgAEGwAmogBDYCACAA +QQA6AMYCIABBuAJqIAIpA6gFNwMAIABBwAJqIAJBsAVqKAIANgIAIABBxwJqIAJBmAJqQYkDEM1P +GiAAQcYCaiEEDAoLIABBxgJqIQQgAEHgAGohCQJAAkACQCAALQDGAkEBaw4HAAMNDgECIAwLQbDD +xABBI0H0xMQAEOYrAAsgAEHIAmohBgJAAkACQCAAQYADaiINLQAAQQFrDgMCBAEACyAGKAIAIQUM +DwsgAEHMAmohAwJAAkACQCAAQfwCaiIHLQAAQQFrDgMCBQEACyADKAIAIQUMEQsgAEHQAmohCAJA +AkAgAEHYAmoiCi0AAEEBaw4EDAUBFQALIAgoAgAhBQwSCyAAQdQCaigCACEFDBILQbDDxABBI0HA +98QAEOYrAAtBsMPEAEEjQbD3xAAQ5isACyAAQcgCaiENAkAgAEGUA2oiCC0AAEEBaw4DCQEWAAsg +AEHMAmooAgAhBQwUCwALQbDDxABBI0H0xMQAEOYrAAsgAkHABWogAkGkAmooAgA2AgAgAiACKQKc +AjcDuAVB0IfFAEEQEA4hCSACQbgFahCIPwwhC0Gww8QAQSNBgIjFABDmKwALQQMMGgtBsMPEAEEj +QZCIxQAQ5isAC0Gww8QAQSNBuPLEABDmKwALQbDDxABBI0HQ98QAEOYrAAtBsMPEAEEjQZDNxAAQ +5isACyAAQcQCakGAAjsBACAAQdQDakEAOgAAIABB0ANqIABBsAJqKAIANgIACyACQYgHaiAAQcgC +aiIFIAEQpQQgAikDiAdCA1ENCyAAQcQCakEBOgAAIAkgAkGIB2pB0AAQzU8hBiAFEKJDIABB0AJq +QQA6AAAgACAGNgLIAgsgAkGIB2ogAEHIAmoiBiABEMkCIAItAIgHIgVBDEYNCyACQbYJaiIIIAIt +AIsHOgAAIAJBqAlqIgogAkGgB2opAgA3AwAgAkGwCWoiByACQagHaigCADYCACACIAIvAIkHOwG0 +CSACIAIpApgHNwOgCSACKAKMByEDIAIpApAHIRQgBhCtOCAFQQtHDQUgAEGwAWoiBSADNgIAIAMQ +wQUgAkGIB2ogBSgCABC5IiACKAKIByEFIAJBuAlqIAJBjAdqQdgAEM1PGiAAQbwBaiACQewHaigC +ADYCACAAQbQBaiACKQLkBzcCACAAQcABaiACKQLwBzcCACAAQcgBaiACQfgHaigCADYCACAFQYCA +gIB4Rg0MIABBzAFqIAU2AgAgAEHQAWogAkG4CWpB2AAQzU8aIABBsAJqKAIAEIc3IQUgAEGAA2oi +DUEAOgAAIABBrAJqIAU2AgAgACAFQQhqIgU2AsgCCyAAQfwCaiIHQQA6AAAgAEHMAmoiAyAFNgIA +CyAAQdgCaiIKQQA6AAAgAEHQAmoiCCAFNgIACyAAQdQCaiAFNgIACyACQdwLaiAFQQEQqzQgAEH0 +AmogAkH0C2opAgA3AgAgAEHsAmogAkHsC2opAgA3AgAgAEHkAmogAkHkC2opAgA3AgAgAEHcAmog +AikC3As3AgALIABB3AJqIgUgARDgA0H/AXEiDEECRg0BIAUQwzogDEUNAkHg98QAQShBiPjEABDm +KwALIAJB2gtqIAgtAAA6AAAgAkHIC2ogCikDADcDACACQdALaiAHKAIANgIAIAIgAi8BtAk7AdgL +IAIgAikDoAk3A8ALQQMhBgwPCyAKQQQ6AAAgB0EDOgAAIA1BAzoAAEEFIQEMCwsgAEEBOgDYAiAI +EOE/IABBAToA/AIgAEHMAmoiBSgCACEIIAMQ4j8gAEGoAmoiAyAINgIAIABBAToAgAMgBhDZPyAD +KAIAIQYgAkGgCmoiAyACQYgHakHEABDNTxogAkGeCmoiByACQaoMai0AADoAACACIAIvAKgMOwGc +CiAFIABBzAFqIgU2AgAgAEHIAmoiDSAGQRRqNgIAIABB0AJqIANBxAAQzU8aIABBlANqIghBADoA +ACAAIAIvAZwKOwCVAyAAQZcDaiAHLQAAOgAACyAAQdQCaiAFNgIAIABB0AJqIAAoAsgCIgU2AgAg +BSgCFCEFIABBkANqQQA6AAAgAEHYAmogBUEIajYCAAsgAEHYAmoiBSABEMUHIgZFDQQgAiAGNgKY +DCAFENk/IAJBmAxqENRMIgYoAgAhA0ENIQUgAkENOgCIByADRQ0DIAJBiAdqEI0dIAJB3AtqIAYg +AEHUAmooAgAQtQhBFiEFIAItANwLIgZBFkYEQCACQZgMahCaTCACQdwLaiIGEOhIIAJByABqIAAo +AtQCQSxqEPEuIAIoAkwhAyACKAJIIQcgAkFAayAAKALUAhC1ISAGIAcgAyACKAJAIAIoAkQQ2CAg +AkE4aiAAQdACaigCACIGKAIAIAYoAgQQwjAgAkGYB2ogAkHkC2ooAgA2AgAgAiACKQM4NwKIByAC +IAIpAtwLNwKQByACQZwMaiACQYgHahD0HSACKAKcDCEDIAIpAqAMIRQMBwsgAkG+DGogAi0A3ws6 +AAAgAkGwDGogAkH0C2opAgA3AwAgAkG4DGogAkH8C2ooAgA2AgAgAiACLwDdCzsBvAwgAiACKQLs +CzcDqAwgAigC4AshAyACKQLkCyEUIAYhBQwFC0EDIQEMBwtBBCEBDAYLQbTFxABBwwBB+MXEABDX +IgALIAJBvgxqIAJBlwxqLQAAOgAAIAJBsAxqIAJBiAxqKQIANwMAIAJBuAxqIAJBkAxqKAIANgIA +IAIgAi8AlQw7AbwMIAIgAikCgAw3A6gMDAELIAhBAzoAAEEGIQEMAwsgAkGYDGoQmkwLIAJB/gpq +IgcgAkG+DGotAAA6AAAgAkHwCmoiCiACQbAMaikDADcDACACQfgKaiIMIAJBuAxqKAIANgIAIAIg +Ai8BvAw7AfwKIAIgAikDqAw3A+gKQQEhBiAIQQE6AAAgAkGWC2oiCCAHLQAAOgAAIAJBiAtqIgcg +CikDADcDACACQZALaiIKIAwoAgA2AgAgAiACLwH8CjsBlAsgAiACKQPoCjcDgAsgDRDwPyAFQRZH +BEAgAkHaC2ogCC0AADoAACACQcgLaiAHKQMANwMAIAJB0AtqIAooAgA2AgAgAiACLwGUCzsB2Asg +AiACKQOACzcDwAsgAEGoAmoQmkwgAEGsAmoQvTkMBAsgAiAUNwKUCiACIAM2ApAKIAJBkApqELEZ +IABBqAJqEJpMIABBrAJqEL05AkBBxJPbACgCAA0AQeyK2wAQ+z4iBUH/AXFFDQBBACEDQeyK2wAo +AgAgBRD1LkUNAEHsitsAKAIAIgVBHGohBiAFQSBqKAIAIggEQCAFQShqKAIAIQogBUEkaigCACEH +IAUoAhwhAyACQQA2ApgHIAIgCjYClAcgAiAHNgKQByACIAg2AowHCyACIAM2AogHIAJBoApqIgUg +AkGIB2oiA0GIxsQAEOksIAJBlAdqQgA3AgAgAkHUxsQANgLkCyACQQE2AowHIAJBzMbEADYCiAcg +AkHkxsQANgKQByACIAM2AuALIAIgBTYC3AsgAkGoDGoiBSAGIAJB3AtqEOBBQeyK2wAoAgAgBRDE +NAsgACAAQbQCaigCACAAQbACaiIFKAIAEJBOIgYoAgggBkEMaigCABDiHjYCyAIgAkEwaiAFKAIA +EJBOQQhqEPEuIAIoAjAhBSAAQdwCaiACKAI0NgIAIAAgBTYC2AIgAkEoaiAAQbABaigCACAAKALI +AhDKDyACKAIoIQUgAEHkAmogAigCLDYCACAAQeACaiAFNgIAIABBADoAxQIgAEHMAmogAEG4Amop +AgA3AgAgAEHUAmogAEHAAmooAgA2AgAgAEHEAmpBADoAACACQYgHaiIFIAlB0AAQzU8aIABB6AJq +IAVB4AEQzU8aIABByARqQQA6AAALIAJBoApqIABB6AJqIgYgARDJBAJAIAItAKAKIgVBDEcEQCAC +Qa4LaiIBIAItAKMKOgAAIAJBoAtqIgggAkG4CmopAgA3AwAgAkGoC2oiCyACQcAKaigCADYCACAC +IAIvAKEKOwGsCyACIAIpArAKNwOYCyACKAKkCiEDIAIpAqgKIRQgBhCAHCAFQQtHDQEgAEHkAmoo +AgAhASAAQeACaigCACEFIABB3AJqKAIAIQYgAEHYAmooAgAhAyACQSBqIABBzAFqIggQtSEgAkGI +B2oiByADIAYgBSABIAIoAiAgAigCJBCqIyACQagKaiIBIABBvAFqKAIANgIAIAIgAEG0AWopAgA3 +A6AKIAJBrAdqEJ0ZIAJBtAdqIgsgASgCADYCACACIAIpA6AKNwKsByABIABByAFqKAIANgIAIAIg +AEHAAWopAgA3A6AKIAJBuAdqEJ0ZIAJBwAdqIAEoAgA2AgAgAiACKQOgCjcDuAcgASAAQdQCaigC +ADYCACACIABBzAJqKQIANwOgCiAHEPtAIAJBkAdqIAEoAgAiBTYCACACQcgLaiACQagHaikDADcD +ACACQdALaiACQbAHaigCADYCACACQdoLaiACQZMHai0AADoAACACIAIpA6AKIhU3A4gHIAIgAikD +oAc3A8ALIAIgAi8AkQc7AdgLIAIoApQHIQMgAikDmAchFCACKAKMByEGIAJBuAtqIAJBvAdqKQIA +NwMAIAIgCykCADcDsAsgAEHIAmoQi0ogCBDKKUEAIQEgAEHEAmpBADoAACAVpyEHDAYLQQchAQwB +CyACQdoLaiABLQAAOgAAIAJByAtqIAgpAwA3AwAgAkHQC2ogCygCADYCACACIAIvAawLOwHYCyAC +IAIpA5gLNwPACyAAQcwCahD7QCAAQeACahD6PiAAQdgCahD6PiAAQcgCahCLSkEDIQYMAgsgBCAB +OgAAQQQLIQEgCyABOgAAIBFBAzoAAEECIQsMBgsgAEHMAWoQyikgAEHAAWoQnRkgAEG0AWoQnRkL +IABBxAJqLQAABEAgCRCvQAsgAEEAOgDEAkEBIQEgAC0AxQJFDQAgAEG4AmoQiD8LIAJBnglqIAJB +2gtqLQAAOgAAIAJBkAlqIAJByAtqKQMANwMAIAJBmAlqIAJB0AtqKAIANgIAIAJBgAlqIAJBuAtq +KQMANwMAIAIgAi8B2As7AZwJIAIgAikDwAs3A4gJIAIgAikDsAs3A/gIIARBAToAACAJEI4RCyAA +QdwAai0AAARAIA8Q2SILIABBADoAXCACQZ4BaiIIIAJBnglqLQAAOgAAIAJBkAFqIgsgAkGQCWop +AwA3AwAgAkGYAWoiCSACQZgJaigCADYCACACQYABaiIKIAJBgAlqKQMANwMAIABBAToAXSACIAIv +AZwJOwGcASACIAIpA4gJNwOIASACIAIpA/gINwN4IAJBygFqIgQgCC0AADoAACACIAIvAZwBOwHI +ASACQcABaiIIIAkoAgA2AgAgAkG4AWoiCSALKQMANwMAIAIgAikDiAE3A7ABIAJBqAFqIgsgCikD +ADcDACACIAIpA3g3A6ABIA8Q3ykCQCABRQRAIAJBgAJqIAspAwA3AgAgAkHXAWogBC0AADoAACAC +QewBaiAJKQMANwIAIAJB9AFqIAgoAgA2AgAgAiACKQOgATcC+AEgAiAFOgDUASACIAY2AtABIAIg +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 +NwKsAiACIBQ3AqQCIAIgAzYCoAIgAiAFOgCcAiACIAY2ApgCIAIgBC0AADoAnwIgAkGYAmoQgw8h +CQwBCyACKAJkEOYQIQkLIABB+AVqEJZBIABBgAZqLQAABEAgAkHYAGoQlkELIABBADoAgAZBAQsh +CyARQQE6AAALQQIhBCAAIAtBAkcEfyAQEJwvIAJBGGoiASALBH8gCQUgCRCiQBAnCzYCBCABIAs2 +AgAgAigCHCEPIAIoAhghBCAAKAIEIgEgASgCAEEBazYCAEEBBUEDCzoAlAYgACAEQQJHBH8gABDT +NwJAIARFBEAgAiAPNgK4BSACQYABNgKYAiACQQhqIABBsAxqIAJBmAJqIgEgAkG4BWoiChD7JyAC +IAIoAgggAigCDBDkQTYCiAcMAQsgAiAPNgK4BSACQYABNgKYAiACQRBqIABBtAxqIAJBmAJqIgEg +AkG4BWoiChD7JyACIAIoAhAgAigCFBDkQTYCiAcLIAJBiAdqEJZBIAEQlkEgChCWQSAAQbAMahCW +QSAAQbQMahCWQUEBBUEDCzoAuAwgAkHADGokACAEQQJGC580AhJ/CH4jAEHAA2siAiQAIAJBGGog +ARCLMgJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkAC +fwJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACfyACLQAYQQRGBEAgAi8AGSIDQQh2DAELIAIpAxgiFEL/AYNCBFINASAUQgiIpyED +IBRCEIinCyEEIANB/wFxIgNBAWsOJAIDBAQICQoLDA0ODxARBQUFBQYGBiEiIyQlJicnJycnJycn +BwELIABBADoABCAAQQE6AAAgAEEIaiAUNwIADDkLIAAgBBDSSAw4CyAAIAQQx0oMNwsjAEEgayIB +JAAgAUEHOgAIIABBBGogAUEIaiABQR9qQeDwyAAQ+hogAEEBOgAAIAFBIGokAAw2CyMAQSBrIgEk +ACABQQA6AAggASADQQNGOgAJIABBBGogAUEIaiABQR9qQeDwyAAQ+hogAEEBOgAAIAFBIGokAAw1 +CyADQQ9rDgQNDg8QDAsgA0ETaw4DFRYXFAsgAEEBOgAAIABBgsgAOwEEDDILIAJBGGogARCKJSAC +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 +QawHaiIBQQFyIAJBiQdqQSMQzU8aIAIgBDoArAcgARDOHiEDDAULIAJBoAFqIgFBAXIgAkHgBmpB +IxDNTxogAiAGOgCgASABEMweIQMMBAsgCkEEOgAADAILIABBFGooAgAhAyAAKAIQIQQgAEGsA2pB +ADsBACACQYAEaiAAQYADaikCADcDACACQYgEaiAAQYgDaikCADcDACACIABB+AJqKQIANwP4AyAA +QaQDaigCACEFAkAgAEGgA2ooAgAiBigCDEGAgICAeEYEQCACQYCAgIB4NgLgCQwBCyACQeAJaiAG +QQxqEMUeCyAAQbgDaiIGEMYLIAJB0AFqIAJBiARqKQMANwMAIAJByAFqIAJBgARqKQMANwMAIAJB +8AFqIAJB6AlqKAIANgIAIAJB0AJqIABB6ARqKAIANgIAIAJB3AJqIABB9ARqKAIANgIAIAIgBTYC +2AEgAiACKQP4AzcDwAEgAiACKQLgCTcD6AEgAiAAQeAEaikDADcDyAIgAiAAQewEaikCADcC1AIg +AkHoAmogAEGABWooAgA2AgAgAkH0AmogAEGMBWooAgA2AgAgAkGAA2ogAEGYBWooAgA2AgAgAiAA +QfgEaikDADcD4AIgAiAAQYQFaikCADcC7AIgAiAAQZAFaikDADcD+AIgAkGAAmogAEGYBGpBJBDN +TxogAkGkAmogAEG8BGpBJBDNTxogAkHkAWogAEH8A2ooAgA2AgAgAkGoAWogAEHAA2opAwA3AwAg +AkGwAWogAEHIA2opAwA3AwAgAkG4AWogAEHQA2opAwA3AwAgAkGMA2ogAEGkBWooAgA2AgAgAkH8 +AWogAEGUBGooAgA2AgAgAiAAQfQDaikCADcC3AEgAiAGKQMANwOgASACIABBnAVqKQIANwKEAyAC +IABBjARqKQIANwL0ASACQRhqIAQgAkGgAWogAygCIBEDACACKAIYIQQgACACKAIcIgM2ArQDIAAg +BDYCsAMLIAJBoAFqIAQgASADKAIMEQMAIAItAKABIgFBDEcEQCACQdEHaiACQaABakEBckEjEM1P +GiAAQbADahCZNiABQQtGBEAgAEHYA2oQlEUgAEGABGoQ+0AgAEHwA2oQo0VBACEDIABBADoArgMg +AEGsA2pBADsBACAAQSBqELcaIABBGGoQ+j4MBwsgAkH0B2oiA0EBciACQdEHakEjEM1PGiACIAE6 +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 +AyACIAQ2AoQDIAJBoAZqIVQgAkGEBmohVSACQZQGaiFOIAJBqAZqIU8gAkGYBmohRSACQZAGaiFG +IAJBpAZqIVYgAkGIBmohPCACQYwGaiE9IAJBgAdqIVcgAkHoBmohWCACQfgGaiFZIAJBsAZqIT4g +AkGsBmohRyACQYAGaiEuIAJByAZqIVogAkHQBmohWyACQZAHaiFcIAJB8AVqQQRyISAgAkHYB2oh +XSACQfwFaiE5IAJB+AVqIRUgAkH8CGohPyAsQQRyIUAgAkGECGohXiACQfQIaiEqIAJB5ARqIVAg +AkHwBGohXyACQZgJaiFgIAJB+ARqIVEgAkGMCWohUiACQYAJaiFBIAJBnAtqIUIgAkHUBGohQyAC +QdgEaiE0IAJB7AhqIUggAkHsBGohSSACQeAEaiFEIAJB9ARqIUogAkHoBGohNyACQdwEaiE4IAJB +tAlqIWEgAkGoCWohYiACQfgJaiFjIAJB0AVqIWQgAkGEC2ohZSACQbgFaiEUIAJByAVqIRogAkGY +C2pBBHIhSyACQYAFaiE6IAJB/ARqIUwgAkHQBGohJSACQawJaiEbIAJBmAVqIScgAkHACWohKSAC +QaAFaiEsIAJByARqISEgAkHoBWohLSACQeAFaiEYIAhBBHIhGSABKAIEIR8gASgCACEoA0ACQAJA +AkAgAigCiAMiBCACKAKQA0YNACACIARBsAFqNgKIAyAEKAIAIQMgAkGUA2ogBEEEakGsARDNTxog +A0GggICAeEYNACACIAM2AsAEIBkgAkGUA2pBrAEQzU8hBAJAIANBn4CAgHhGBEAgAigCxAQiAUEP +RgRAIAJBEGogIRD0HyACKAIUIQQgAigCECEDCyACQQhqICUQ8S4gAikDCCFmAkAgNCgCCEUEQCA/ +QQA2AgggP0EANgIADAELIDQoAgAiBwRAID8gByA0KAIEEPUFDAELQazPyQAQo0sACyACQfAIaiId +IAQ2AgAgQEEYaiBBKQIANwIAIAIgAzYC7AggAiABNgLoCCBAIAIpAugINwIAIAIgZjcC9AggQEEI +aiAdKQIANwIAIEBBEGogAkH4CGopAgA3AgAgAkGfgICAeDYCuAcMAQsgAkHYAmogGBDxLiACKALc +AiEkIAIoAtgCIRAgAkHQAmogLRDxLiACKALUAiERIAIoAtACIQ4CQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkBBECADQfX///8HaiIDIANBFE8bQQFrDhMBAgMEBQYHCAkK +CwwNDg8QERITAAsgKiAlEOtAIAJBIGogNxDxLiACKAIkIS8gAigCICErIAJBGGogXxCHKCACKAIc +ITAgAigCGCExIAJB6AhqIAQQiiwgAigCiAkhJiACKAKECSEjIAIoAoAJISIgAigC/AghHSACKAL4 +CCEBIAIoAvQIIR4gAigC8AghBCACKALsCCEcIAIoAugIIQNBi4CAgHghCgwTCyACQThqIEQQ8S4g +AigCPCEmIAIoAjghIyACQTBqIDcQhyggAigCNCEvIAIoAjAhKyACKALwBCExIAIoAvQEITAgAkHo +CGogIRDrQCACQZgLaiA6EIosIAIoAvgEBH8gAkEoaiBREPEuIAIoAiwhMiACKAIoBUEACyE1IAIo +AqALIU0gAigCnAshOyACKAKYCyE2IAIoAvwIISIgAigC+AghHSACKAL0CCEBIAIoAvAIIR4gAigC +7AghBCACKALoCCEcQYyAgIB4IQoMEgsgAkHQAGogOBDxLiACKAJUISMgAigCUCEiIAJByABqIFAQ +hyggAigCTCErIAIoAkghJiACQegIaiAEEIosIAIoAtAEIh5BB0YEQCACQUBrIEMQ9B8gAigCRCEd +IAIoAkAhAQsgAigC8AghBCACKALsCCEcIAIoAugIIQNBjYCAgHghCgwRCyACQeAAaiA4EPEuIAIo +AmQhIyACKAJgISIgAkHYAGogUBCHKCACKAJcISsgAigCWCEmQQAhCiMAQTBrIgskACAlKAIEIQwg +CyAlKAIIIg0QthYgCygCACIPIA1B/////wFxIgEgASAPSxshAyALQSRqIQcgC0EYaiEBIAsoAgQh +CANAIAMEQCABIAogDGoiE0EQahDFHiAHIBNBHGoQjD0gCyATQQhqKQMANwMQIAsgEykDADcDCCAI +IApqIAtBCGpBKBDOTxogA0EBayEDIApBKGohCgwBCwsgKiANNgIIICogCDYCBCAqIA82AgAgC0Ew +aiQAIAJB6AhqIAQQiiwgAigC/AghHSACKAL4CCEBIAIoAvQIIR4gAigC8AghBCACKALsCCEcIAIo +AugIIQNBjoCAgHghCgwQCyACQfAAaiBEEPEuIAIoAnQhJiACKAJwISMgAkHoAGogNxDxLiACKAJs +IS8gAigCaCErIGAgURCKLCACKQPwBCFmIAJB6AhqICEQ60AgZkIgiKchMCACKAKkCSE7IAIoAqAJ +ITYgAigCnAkhMiACKAKYCSE1IAIoAvwIISIgAigC+AghHSACKAL0CCEBIAIoAvAIIR4gAigC7Agh +BCACKALoCCEcIGanITFBj4CAgHghCgwPCyACQYABaiAlEPEuIAIoAoQBIQEgAigCgAEhHiACQfgA +aiA0EPEuIAIoAnwhIiACKAJ4IR0gAkHoCGogBBCKLCACKALwCCEEIAIoAuwIIRwgAigC6AghA0GQ +gICAeCEKDA4LIAJBmAFqICUQ8S4gAigCnAEhASACKAKYASEeIAJBkAFqIDQQ8S4gAigClAEhIiAC +KAKQASEdIAJBiAFqIEQQ8S4gAigCjAEhJiACKAKIASEjIAJB6AhqIAQQiiwgAigC8AghBCACKALs +CCEcIAIoAugIIQNBkYCAgHghCgwNCyACQagBaiAlEPEuIAIoAqwBIQEgAigCqAEhHiACQegIaiAE +EJwQIAJBoAFqIDQQ8S4gAigCpAEhIiACKAKgASEdIAIoAugIIQMgAigC7AghHCACKALwCCEEQZKA +gIB4IQoMDAsgAkG4AWogShDxLiACKAK8ASE1IAIoArgBITACfwJAAkACQCACKALEBCIBQf////8H +a0EAIAFBgoCAgHhIG0EBaw4CAQIACyACQegIaiIBIAQQmxAgKiAlEJ0RIEEgOBCWECBSIDcQmxAg +AkGYC2ogAUEwEM1PGiACKAKYCwwCCyBCICEQv0lBgICAgHgMAQsgAkHoCGogIRDFHiAqIEMQ4S8g +QkEQaiACQfgIaikCADcCACBCQQhqIAJB8AhqKQIANwIAIEIgAikC6Ag3AgBBgYCAgHgLIQMgAkGw +AWogTBDxLiACKAK0ASE2IAIoArABITIgAigCnAshHCACKAKgCyEEIAIoAqQLIR4gAigCqAshASAC +KAKsCyEdIAIoArALISIgAigCtAshIyACKAK4CyEmIAIoArwLISsgAigCwAshLyACKALECyExQZOA +gIB4IQoMCwsgAkHoCGogJRDFHiACKALEBCIDQQtPBEAgAkHIAWogIRD0HyACKALIASEcIAIoAswB +IQQLIAJBwAFqIDgQ8S4gAigCxAEhIyACKALAASEiIAIoAugIIR4gAigC7AghASACKALwCCEdQZSA +gIB4IQoMCgsCfyACKALEBCIDQQNHBEAgA0ECTwRAIAJB6AFqICEQ9B8gAigC6AEhHCACKALsASEE +CyACKAL0BAR/IAJB4AFqIEoQ9B8gAigC5AEhNSACKALgAQVBAAshMCACKALQBCIeQQNGBEAgAkHY +AWogQxD0HyACKALcASEdIAIoAtgBIQELIEEgOBCbECBSIDcQv0kgAigClAkhMSACKAKQCSEvIAIo +AowJISsgAigCiAkhJiACKAKECSEjIAIoAoAJDAELIAJB6AhqICEQxR4gKiBDEOEvIAIoAvgIIR0g +AigC9AghASACKALwCCEeIAIoAuwIIQQgAigC6AghHCACKAL8CAshIiACQdABaiBMEPEuQZWAgIB4 +IQogAigC0AEhMiACKALUASE2DAkLIAJB6AhqIAQQv0kgAkHwAWogJRDxLiACKAL0ASEBIAIoAvAB +IR4gAigC6AghAyACKALsCCEcIAIoAvAIIQRBloCAgHghCgwICyA/IDQQ3C8gAkHoCGogBBC/SSAC +QfgBaiAlEPEuIAIoAvwBIQEgAigC+AEhHiACKALoCCEDIAIoAuwIIRwgAigC8AghBCACKAL8CCEd +IAIoAoAJISIgAigChAkhI0GXgICAeCEKDAcLIAJBgAJqIAQQ8S5BmICAgHghCiACKAKAAiEDIAIo +AoQCIRwMBgsgAkHoCGogBBCsMCACKAL4CCEBIAIoAvQIIR4gAigC8AghBCACKALsCCEcIAIoAugI +IQNBmYCAgHghCgwFCwJ/IAIoAtwEQYCAgIB4RgRAAkAgSSgCCEUEQCAqQQA2AgggKkEANgIADAEL +IEkoAgAiAwRAICogAyBJKAIEEJ0GDAELQZD71gAQo0sACyACQegIaiBEEMUeIAIoAvwIITAgAigC ++AghMSACKAL0CCEvIAIoAvAIISsgAigC7AghJiACKALoCCEjQYCAgIB4DAELIAJB6AhqIDgQxR4g +KiA3EMUeIAJBoAJqIDoQ8S4gAigCpAIhOyACKAKgAiE2IEEgShDFHiACKAKICSEyIAIoAoQJITUg +AigCgAkhMCACKAL8CCExIAIoAvgIIS8gAigC9AghKyACKALwCCEmIAIoAuwIISMgAigC6AgLISJB +moCAgHghCiACKALEBCIDQQZGBEBBBiEDDAULAkACQAJAAkACQAJAAkAgA0EBaw4FAQIDBAUACyAC +QYgCaiAhEPEuIAIgAikDiAI3AuwIDAULIAJBkAJqICEQ8S4gAiACKQOQAjcC7AgMBAsgAkGYAmog +IRDxLiACIAIpA5gCNwLsCAwDCyBIICEQrDAMAgsgSCAhEO0ZDAELIEggIRDhLwsgAigC/AghHSAC +KAL4CCEBIAIoAvQIIR4gAigC8AghBCACKALsCCEcDAQLIAJBjApqIAJBwARqEIwCQY+AgIB4ITIg +AigC/AQiAUGPgICAeEcEQAJ/AkACQAJAAkBBASABQfX///8HaiIBIAFBBE8bQQFrDgMBAgMACyAC +QagCaiA6EPEuIAIgAikDqAI3ApwLQYuAgIB4DAMLIAJBsAJqIBoQ8S4gAikDsAIhZiACQcgKaiIB +IEwQjAIgZSAUEOcjIAJBmAtqIAFBzAAQzU8aIAIgZjcC5AsgAigCmAsMAgsgSyA6EO0ZQY2AgIB4 +DAELIEsgOhDhL0GOgICAeAshMiACQcgKaiBLQdAAEM1PGgsgYyBkEOcjIAJB6AhqIAJBjApqQTwQ +zU8aIGIgAkHICmpB0AAQzU8aIAIoAugIIQogAigC7AghAyACKALwCCEcIAIoAvQIIQQgAigC+Agh +HiACKAL8CCEBIAIoAoAJIR0gAigChAkhIiACKAKICSEjIAIoAowJISYgAigCkAkhKyACKAKUCSEv +IAIoApgJITEgAigCnAkhMCACKAKgCSE1IAIoAqgJITYgAigCrAkhOyACKAKwCSFNIAJBmAtqIGFB +1AAQzU8aDAMLIAIoAtAEBH8gAkG4AmogJRDxLiACKAK8AiEBIAIoArgCBUEACyEeIAJB6AhqIAQQ +jD0gAigC8AghBCACKALsCCEcIAIoAugIIQNBnICAgHghCgwCCyApICwQxR4gAkHoCGogIRDCFiAC +QcACaiAnEPEuIAIgAikDwAI3A7gJIAIoAugIIRwgAigC7AghBCACKALwCCEeIAIoAvQIIQEgAigC ++AghHSACKAL8CCEiIAIoAoAJISMgAigChAkhJiACKAKICSErIAIoAowJIS8gAigCkAkhMSACKAKU +CSEwIAIoApgJITUgAigCnAkhMiACKAKgCSE2IAIoAqQJITsgAigCqAkhTSACQZgLaiAbQSQQzU8a +QZ2AgIB4IQoMAQsgAkHIAmogBBD0H0GegICAeCEKIAIoAsgCIQMgAigCzAIhHAsgXiACQZgLakHU +ABDNTxogAiARNgLkCCACIA42AuAIIAIgJDYC3AggAiAQNgLYCCACIE02AoAIIAIgOzYC/AcgAiA2 +NgL4ByACIDI2AvQHIAIgNTYC8AcgAiAwNgLsByACIDE2AugHIAIgLzYC5AcgAiArNgLgByACICY2 +AtwHIAIgIzYC2AcgAiAiNgLUByACIB02AtAHIAIgATYCzAcgAiAeNgLIByACIAQ2AsQHIAIgHDYC +wAcgAiADNgK8ByACIAo2ArgHCyACQfAFaiEXAkAgAkG4B2oiAygCAEGfgICAeEYEQEEAIRJCACFm +IwBB8AFrIgYkACAGQQA2AmwgBkEANgJcIAYgA0EEaiIzQRhqKAIAIgM2AnQgBiAzKAIUIgQ2AnAg +BiADNgJkIAYgBDYCYCAGIDNBHGooAgBBACAEGzYCeCAGIARBAEciAzYCaCAGIAM2AlggM0EUagJA +AkACQAJAAkACQCAGQdgAahCWMSIHRQ0AIAZBADYCrAEgBkEANgKcASAGIAcoAgQiAzYCtAEgBiAH +KAIAIgQ2ArABIAYgAzYCpAEgBiAENgKgASAGIAcoAghBACAEGzYCuAEgBiAEQQBHIgM2AqgBIAYg +AzYCmAEjAEEQayIHJAAgB0EIaiAGQZgBahDGESAHKAIIIQQgBygCDCAHQRBqJABBACAEGyIERQ0A +IAQoAgQhAyAEKAIAIQoMAQtBIyEDIAZBCGpBIxDuHyAGKAIIIQQgBigCDCIKQYCw0ABBIxDNTyES +IARBgICAgHhHDQELIAZBOGogCiADEOArAkAgBi0AOEEGRgRAIAYgBigCPDYCmAEgBkHYAWpBBHIg +BkGYAWoiAxCcFSADEN8dDAELIAZB6AFqIAZByABqKQMANwMAIAZB4AFqIgogBkFAaykDADcDACAG +IAYpAzgiZzcD2AEgZ6ciA0H/AXEiBEEGRw0CCyAGQTNqIAZB5AFqKAIAIgM2AAAgBiAGKQLcASJm +NwArIBdBDGogAzYAACAXIGY3AAQgF0GggICAeDYCAAwCCyAXIAQ2AgQgF0GggICAeDYCACAXQQxq +QSM2AgAgF0EIaiASNgIADAELIAYgBikA2QE3AyggBiAKKQAANwAvIAZBGGogBikALzcAACAGIAYp +A+gBNwMgIAYgAzoAECAGIAYpAyg3ABECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +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 +BkHgAGopAwA3AwAMBwsgBkHYAGogBkGYAWpBwAAQzU8aIAYoAlgiA0EERw0KCyAGKAJcIQMgF0EI +aiAGQeAAaikCADcDAAwFCyAGQegBaiAGQegAaigCADYCACAGQeABaiAGQeAAaikCADcDACAGIAYp +AlgiZzcD2AEgZ6ciA0GAgICAeEcNBwsgBigC3AEhAyAXQQhqIAZB4AFqKQMANwMADAMLIAZB8ABq +IAZBsAFqKQIANwMAIAZB6ABqIAZBqAFqKQIANwMAIAZB4ABqIAZBoAFqKQIANwMAIAYgBikCmAEi +ZjcDWCBmpyIDQYCAgIB4Rw0ECyAGKAJcIQMgF0EIaiAGQeAAaikDADcDAAwBCyAXQQhqIAYpAlw3 +AwALIBcgAzYCBCAXQaCAgIB4NgIADAkLIAZB4ABqIDNBCGooAgA2AgAgBiAzKQIANwNYIAZBpAFq +QgE3AgAgBkEBNgKcASAGQfiv0AA2ApgBIAZB2Q82AtwBIAYgBkHYAWo2AqABIAYgBkHYAGoiAzYC +2AEgF0EEaiAGQZgBahDdJCAXQaCAgIB4NgIAIAMQyUACQAJAAkAgBA4FDAwMAQIACyAGQRBqQQRy +EMwZDAsLIAZBEGpBBHIQiD8MCgsgBkEQakEEciIDEM40IAMQpT0MCQsgBigCdCEKIAYpAmwhZyAG +KAJoIRIgBikDYCFmIAYoAlwhBEENDAYLIAYoAugBIRIgBikD4AEhZiAGKALcASEEQQwMBQsgBkFA +ayAGQYABaikCADcDACAGQcgAaiAGQYgBaikCADcDACAGQdAAaiAGQZABaikCADcDACAGIAYpAng3 +AzggBigCdCEKIAYpAmwhZyAGKAJoIRIgBikCYCFmIAYoAlwhBEELDAQLIAYoAnQhCiAGKQJsIWcg +BigCaCESIAYpA2AhZiAGKAJcIQRBCgwDCyAGQUBrIAZBgAFqKQIANwMAIAZByABqIAZBiAFqKQIA +NwMAIAZB0ABqIAZBkAFqKQIANwMAIAYgBikCeDcDOCAGKAJ0IQogBikCbCFnIAYoAmghEiAGKQJg +IWYgBigCXCEEQQkMAgsgBikCbCFnIAYoAmghEiAGKQNgIWYgBigCXCEEQQgMAQtBDgshByAXIAYp +Azg3AiwgFyAKNgIoIBcgZzcDICAXIBI2AhwgFyBmNwIUIBcgBDYCECAXIAM2AgwgFyAHNgIIIBdB +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 +ahCIPwwBCyAHRQ0AIDkQxz8LIAJBuAdqIgMgAkHABGpBsAEQzU8aIFMgAxCjDAwACwALIwBBIGsi +DiQAIAcoAgAiBCkDACFmIAcoAgQhAyAOIAcoAgw2AhggDiAENgIQIA4gAyAEakEBajYCDCAOIARB +CGo2AgggDiBmQn+FQoCBgoSIkKDAgH+DNwMAA0AgDhCAOiIEBEAgBEHIAGsiAxDfI0UEQCADEOAj +RQ0CCyMAQRBrIgMkACADIAQ2AgwgByAHKAIAIANBDGooAgBrQdgAbRDqFSAEQdgAaxD7DSADQRBq +JAAMAQsLIA5BIGokAAwACwALIAIgAigCvAc2AsAEIAIgAkHAB2otAAA6AMQEQbzXzABBKyACQcAE +akH418wAQbzlzAAQiRgAC8oqAQ1/IwBBwANrIgMkACABAn8CQAJAAn8CQAJAAkACQAJAAkACQAJA +IAEtAJkBQQFrDgUDAQAFBAILIAFBoAFqKAIAIQUgASgCnAEhBAwGCwALIAFBADoAmAEgAUEoaiIK +IAEoAiAgAUEkaigCABChGCABQcQAakIINwIAIAFBPGpCADcCACABQQA2AjQgAUEBOgCYAUHEk9sA +KAIADQNB2PnaABD7PiIFQf8BcUUNA0HY+doAKAIAIAUQ9S5FDQNB2PnaACgCACIHQShqKAIAIQYg +B0EkaigCACEIIAcoAhwhCSADIAdBIGooAgAiBQR/IANBADYC2AEgAyAGNgLUASADIAg2AtABIAMg +BTYCzAFBASEEIAkFQQALNgLIASADQdACaiADQcgBakGc3sIAEN0sIANBrANqQgA3AgAgA0EBNgKk +AyADQdDewgA2AqADIANBpMnCADYCqAMgAyAEIAVPBH9BAAUgAyAGNgLUASADIAg2AtABIAMgBTYC +zAEgAyAENgLYASAEQQFqIQQgCQs2AsgBIANB5AJqIANByAFqQZzewgAQ3SwgAyAKNgK8ASADIAQg +BUkEfyADIAQ2AoABIAMgBjYCfCADIAg2AnggAyAFNgJ0IAkFQQALNgJwIANB+AJqIgUgA0HwAGoi +BEGc3sIAEN0sIANB6AFqQejewgA2AgAgA0HcAWpB2N7CADYCACADQeQBaiADQaQCajYCACADQdgB +aiADQbwBajYCACADQZTJwgA2AtABIAMgAUGIAWo2AqQCIAMgBTYC4AEgAyADQeQCajYC1AEgAyAD +QaADajYCzAEgAyADQdACajYCyAEgBCAHQRxqIANByAFqEOFBIANBwAJqIANB+ABqKAIANgIAIAMg +AykCcDcDuAJB2PnaACgCACADQbgCahDENAwDC0HgxsIAQSNBjN7CABDmKwALIAFBoAFqKAIAIQ4g +ASgCnAEhDEEBDAMLQQIMAgsgA0GgA2ogASgCjAEoAjhBCGoQjUogAygCoANFBEAgA0EANgLcASAD +QQA2AswBIANBqANqKAIAIQQgAyADKAKkAyIHKAIEIgY2AuQBIAMgBygCACIFNgLgASADIAY2AtQB +IAMgBTYC0AEgAyAHKAIIQQAgBRs2AugBIAMgBUEARyIFNgLYASADIAU2AsgBIAFBzABqIANByAFq +IgUQ6xQgBCAEKAIAQQFrNgIAIANBADYC3AEgA0EANgLMASADIAFB0ABqKAIAIgc2AuQBIAMgASgC +TCIENgLgASADIAc2AtQBIAMgBDYC0AEgAyABQdQAaigCAEEAIAQbNgLoASADIARBAEciBDYC2AEg +AyAENgLIASABQdgAaiIEIAUQ7BQgBSAEIAoQvAMgA0GgA2oiBCAFEO0UIAEgAygCqANBAEc6AJQB +IAQQ0AggAQJ/QQEgASgCjAEQrE0iBSgCGCIEIAEoAogBIgcoAhhHDQAaQQAgBEEERw0AGiAFQRxq +IAdBHGoQl0FBAXMLOgCVASABIAEoAowBEKxNQSRqIAEoAogBQSRqEJ8uIgU6AJYBIAEgAS0AlAEE +f0EBBUEBIAUgAS0AlQEbCzoAlwEgA0E4aiABKAKQARC/LCADKAI4IQUgAygCPCEEIANBMGogASgC +kAEQ3EYgA0EoaiAFIAMoAjAgAygCNCAEKAJgEQUAIAMoAighBCABQaABaiADKAIsIgU2AgAgASAE +NgKcAQwBCyADIAMpAqQDNwLIAUG4r8MAQSsgA0HIAWpBlLHDAEH43sIAEIkYAAsgA0HIAWogBCAC +IAUoAgwRAwACQCADLQDIASIJQQxHBEAgA0HaAGoiCiADLQDLAToAACADQdAAaiILIANB3AFqKAIA +NgIAIANBxgBqIg0gA0HjAWotAAA6AAAgAyADLwDJATsBWCADIAMpAtQBNwNIIAMgAy8A4QE7AUQg +AygCzAEhBCADKALQASEFIAMtAOABIQggAygC5AEhBiADKALoASEHIAFBnAFqEJk2IAlBC0YNASAD +QZ4DaiAKLQAAOgAAIANBmANqIAsoAgA2AgAgA0GOA2ogDS0AADoAACADIAMvAVg7AZwDIAMgAykD +SDcDkAMgAyADLwFEOwGMAwwDCyAAQRM6AABBAwwECwJAIARFBEAgAUEANgIADAELIANB1AFqIANB +0ABqKAIANgIAIANB2wFqIANBxgBqLQAAOgAAIAMgBTYCyAEgAyADKQNINwLMASADIAg6ANgBIAMg +Ay8BRDsA2QEgAyAGNgLcASABIANByAFqEMQrCyABQQA6AJgBIAFB/ABqIAEoAigiBTYCACABQfgA +akEANgIAIAFB7ABqIAU2AgAgAUHoAGpBADYCACABQYABaiABQSxqKAIAIgQ2AgAgAUH0AGogBUEA +RyIINgIAIAFB8ABqIAQ2AgAgASAINgJkIAFBhAFqIAFBMGooAgBBACAFGzYCAEEACyEEA0ACQAJA +AkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkAgBA4CAAEDCyADQSBqIAFB5ABqIgQQgCIg +AygCICIFDQEgBBDCNyABQZcBaiEMIAEtAJcBRQ0GQcST2wAoAgBBAUsNBkHw+doAEPs+IgJB/wFx +RQ0GQQAhBUHw+doAKAIAIAIQ9S5FDQZB8PnaACgCACIGQShqKAIAIQQgBkEkaigCACEHIAYoAhwh +CCAGQSBqKAIAIgINBEEADAULIANByAFqIAwgAiAOKAIMEQMAIAMtAMgBIglBDEcEQCADQZ4BaiIN +IAMtAMsBOgAAIANBmAFqIgogA0HcAWooAgA2AgAgA0GOAWoiCyADQeMBai0AADoAACADIAMvAMkB +OwGcASADIAMpAtQBNwOQASADIAMvAOEBOwGMASADKALMASEEIAMoAtABIQUgAy0A4AEhCCADKALk +ASEGIAMoAugBIQcgAUGcAWoQmTYgCUELRw0KIANBgAFqIAooAgA2AgAgA0GHAWogCy0AADoAACAD +IAMpA5ABNwJ4IAMgAy8BjAE7AIUBIAMgBjYCiAEgAyAIOgCEASADIAU2AnQgAyAENgJwDAMLIABB +EzoAAEEFDBILIAMoAiQhBCABIAU2AhggAUEcaiAENgIAIAFBvAFqQQA6AAAgAUGkAWogBDYCACAB +QaABaiAFNgIAIAEgASgCkAE2ApwBQQIhBAwOCyADQcgBaiABQZwBaiILIAIQtAUgAygCyAEiDUEC +Rg0EIANB7gBqIAMtAM8BOgAAIANB6ABqIgogA0HgAWooAgA2AgAgA0HeAGogA0HnAWotAAA6AAAg +AyADLwDNATsBbCADIAMpA9gBNwNgIAMgAy8A5QE7AVwgAy0AzAEhCSADKALQASEEIAMoAtQBIQUg +Ay0A5AEhCCADKALoASEGIAMoAuwBIQcgCxDmPyANDQUgASAENgKoASABIAg6ALwBIAEgAy8BXDsA +vQEgASAHNgLEASABQawBaiAFNgIAIAFBsAFqIAMpA2A3AgAgAUHAAWogBjYCACABQbgBaiAKKAIA +NgIAIAFBvwFqIANB3gBqLQAAOgAAIAEoAogBLQAwDQYgA0EANgJwCyADQbgDaiABQcABaikDADcD +ACADQbADaiABQbgBaikDADcDACADQagDaiABQbABaikDADcDACADIAEpA6gBNwOgAyADQcgBaiIF +IANBoANqIgQQr1EgAyABNgL8AiADIAEoAogBNgL4AiADIANB8ABqNgKAAyAEIAUgA0H4AmoQ4gUg +A0GoAWogA0G0A2ooAgA2AgAgAyADKQKsAzcDoAEgAygCoAMhCiADKAKkAyEFIAMoAqgDIQggAS0A +lwFFBEAgA0GwAWogBSAFIAhBGGxqEKMYIANByAFqIAEoAowBKAI4QQhqEI1KIAMoAsgBDQkgA0HQ +AWooAgAhCSADKALMASABKAIYIAFBHGooAgAQgiEiBARAIANBADYC3AEgA0EANgLMASADIAQoAgQi +BjYC5AEgAyAEKAIAIgc2AuABIAMgBjYC1AEgAyAHNgLQASADIAQoAghBACAHGzYC6AEgAyAHQQBH +IgQ2AtgBIAMgBDYCyAEgA0G8AWogA0HIAWoiBBD6EyADIAMoAsQBQQAgAygCvAEiBhs2AugBIAMg +AygCwAEiBzYC5AEgAyAGNgLgASADQQA2AtwBIAMgBkEARyILNgLYASADIAc2AtQBIAMgBjYC0AEg +A0EANgLMASADIAs2AsgBIANBpAJqIgYgBBDuFCAEIAYgA0GwAWoQvQMgA0G4AmogBBDqFCABIAMo +AsACIgRBAEc6AJcBAkAgBEUNAEHEk9sAKAIAQQFLDQBB5PnaABD7PiIEQf8BcUUNAEEAIQdB5Pna +ACgCACAEEPUuRQ0AQeT52gAoAgAiBEEcaiEGIARBIGooAgAiCwRAIARBKGooAgAhDSAEQSRqKAIA +IQ8gBCgCHCEHIANBADYC2AEgAyANNgLUASADIA82AtABIAMgCzYCzAELIAMgBzYCyAEgA0GgA2oi +BCADQcgBaiILQZjfwgAQ3SwgA0HUAWpCATcCACADQZTJwgA2AoADIANBATYCzAEgA0Hs38IANgLI +ASADQYABNgKgAiADIAs2AvwCIAMgBDYC+AIgAyADQZwCajYC0AEgAyADQbgCajYCnAIgA0HkAmog +BiADQfgCahDgQSADQdgCaiADQewCaigCADYCACADIAMpAuQCNwPQAkHk+doAKAIAIANB0AJqEMQ0 +CyADQbgCahDQCCADQaQCahCzGSADQbwBahCiGQsgCSAJKAIAQQFrNgIAIANBsAFqELMZCyADQQhq +IAEoAhggAUEcaigCABDCMCADQcgBaiIEIAFBNGogAygCCCADKAIMEIcQIAQQkQkhBiADIAo2AtAB +IAMgBTYCyAEgAyAFIAhBGGxqNgLUASADIAU2AswBIAYgBBDhJyABQUBrIANBoAFqEMYpIANB8ABq +EJhBDAkLIANBADYC2AEgAyAENgLUASADIAc2AtABIAMgAjYCzAFBASEFIAgLNgLIASADQaQCaiAD +QcgBakH038IAEN0sIANBrANqQgA3AgAgA0EBNgKkAyADQbDgwgA2AqADIANBpMnCADYCqAMgAyAC +IAVNBH9BAAUgAyAENgLUASADIAc2AtABIAMgAjYCzAEgAyAFNgLYASAFQQFqIQUgCAs2AsgBIANB +uAJqIANByAFqQfTfwgAQ3SwgAyACIAVLBH8gAyAENgLUASADIAc2AtABIAMgAjYCzAEgAyAFNgLY +ASAFQQFqIQUgCAVBAAs2AsgBIANB0AJqIANByAFqQfTfwgAQ3SwgBkEcaiEGIAMgAiAFTQR/QQAF +IAMgBDYC1AEgAyAHNgLQASADIAI2AswBIAMgBTYC2AEgBUEBaiEFIAgLNgLIASADQeQCaiADQcgB +akH038IAEN0sIAMgAiAFSwR/IAMgBTYCgAEgAyAENgJ8IAMgBzYCeCADIAI2AnQgCAVBAAs2AnAg +A0H4AmoiBSADQfAAaiICQfTfwgAQ3SwgA0GAAmpBuODCADYCACADQfwBaiABQZYBajYCACADQfQB +akG44MIANgIAIANB8AFqIAFBlQFqNgIAIANB6AFqQbjgwgA2AgAgA0HkAWogAUGUAWo2AgAgA0Hc +AWpBuODCADYCACADQdgBaiAMNgIAIANBlMnCADYC0AEgAyAFNgL4ASADIANB5AJqNgLsASADIANB +0AJqNgLgASADIANBuAJqNgLUASADIANBoANqNgLMASADIANBpAJqNgLIASACIAYgA0HIAWoQ1UFB +8PnaACgCACACEMQ0C0HEk9sAKAIADQhB/PnaABD7PiICQf8BcUUNCEEAIQhB/PnaACgCACACEPUu +RQ0IQfz52gAoAgAiAkEoaigCACEFIAJBJGooAgAhByACKAIcIQQgAyACQSBqKAIAIgYEfyADQQA2 +AtgBIAMgBTYC1AEgAyAHNgLQASADIAY2AswBQQEhCCAEBUEACzYCyAEgA0HkAmogA0HIAWpByODC +ABDdLCADQdQBakIANwIAIANBATYCzAEgA0GE4cIANgLIASADQaTJwgA2AtABIAMgBiAISwR/IAMg +CDYCgAEgAyAFNgJ8IAMgBzYCeCADIAY2AnQgBAVBAAs2AnAgA0H4AmoiBCADQfAAaiIFQcjgwgAQ +3SwgA0G0A2pBuODCADYCACADQbADaiAMNgIAIANBlMnCADYCqAMgAyAENgKsAyADIANByAFqNgKk +AyADIANB5AJqNgKgAyAFIAJBHGogA0GgA2oQ8kFB/PnaACgCACAFEMQ0DAgLIABBEzoAAEEEDAsL +IANBngNqIANB7gBqLQAAOgAAIANBmANqIAooAgA2AgAgA0GOA2ogA0HeAGotAAA6AAAgAyADLwFs +OwGcAyADIAMpA2A3A5ADIAMgAy8BXDsBjAMMAgsgA0EYaiABKAKQARC/LCADQRBqIAMoAhggASgC +GCABQRxqKAIAIAMoAhwoAmARBQAgAygCECEMIAFBoAFqIAMoAhQiDjYCACABIAw2ApwBDAQLIANB +ngNqIA0tAAA6AAAgA0GYA2ogCigCADYCACADQY4DaiALLQAAOgAAIAMgAy8BnAE7AZwDIAMgAykD +kAE3A5ADIAMgAy8BjAE7AYwDIAFBqAFqEJ0/CyABQeQAahDCNyABEJdFDAULIAMgAykCzAE3AqAD +QbivwwBBKyADQaADakGUscMAQYjfwgAQiRgAC0EAIQQMAgtBASEEDAELCyADQZgDaiABQTxqKAIA +NgIAIANBngNqIAFBwwBqLQAAOgAAIAMgASkCNDcDkAMgAyABLwBBOwGcAyABQcQAaigCACEEIAFB +yABqKAIAIQUgAS0AlwEhCCABLQBAIQkgARCXRSABQdgAahCEGSABQcwAahDIGSABQZgBaiEMQRIh +AgwBCyABQdgAahCEGSABQcwAahDIGSABQUBrEMJLIAFBNGoQiBkgAUGYAWohDEEOIQIgAS0AmAFF +DQAgAUEoahCEGQsgACAJOgAEIAAgAjoAACAMQQA6AAAgACADLwGcAzsABSAAIAU2AgwgACAENgII +IAAgAykDkAM3AhAgACAIOgAcIAAgAy8BjAM7AB0gAEEHaiADQZ4Dai0AADoAACAAQRhqIANBmANq +KAIANgIAIABBH2ogA0GOA2otAAA6AAAgACAHNgIkIAAgBjYCIEEBCzoAmQEgA0HAA2okAAuZKgIR +fwJ+IwBBoA9rIgMkAAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJ/AkACQAJAAkACQAJA +IAEtANANQQFrDgMKBAABCyABQbQNaiEPAkAgAS0AtA1BAWsOAwkEAwALIAEoAqQNIQUgASgCoA0h +BAwBCyABKALADSADQeAAaiIGIAFBzA1qKAIANgIAIAEgASgCuA02ArwNIAMgASkCxA03A1gQ+E0h +BCABIAFBvA1qIgU2AqQNIAEgBDYCoA0gAUEAOgC0DSABIAMpA1g3A6gNIAFBsA1qIAYoAgA2AgAg +AUG0DWohDwsgAUEAOwG4BiABIAU2AhAgASAENgIMIAEgASkDqA03AwAgAUEIaiABQbANaigCADYC +ACABQbkGaiENQQAMAwsgAUG5BmohDSABLQC5BkEBaw4FAwAEBwkBCwALIAEoAhAhBSABKAIMIQQg +AS0AuAYLIQYgASABKQMAIhQ3AxggASAENgIUIAFBgAI7ALsGIAEgBjoAugYgAUKAgICAwAA3Aygg +ASAFNgIkIAFBADYCOCABQTBqQQA2AgAgAUFAa0EANgIAIAFB1ABqQQA2AgAgAUHMAGogFD4CACAB +QSBqIAFBCGooAgAiBDYCACABIAQ2AjQgAUHIAGogAUEcaigCACIFNgIAIAEgBTYCRCABQdAAaiAF +IARBoAJsajYCAEEADAULQaDEwABBI0Gci8EAEOYrAAsgAUHEBmooAgAhCyABKALABiEJQQEMAwtB +oMTAAEEjQfyOwQAQ5isAC0GgxMAAQSNBsLXBABDmKwALQQILIQQDQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQCAEDgIAAQILIAFB2ABqIAFBxABqIgQQuB8gAUHcAGoiBSgCAEEDRw0CIAQQzhUgAUEA +OgC8BiABIAFBMGoiBCgCADYCwAYgA0GQA2oiBSAEKAIANgIAIAMgASkDKDcDiAMgAxDRMiADQeAK +aiIEQQA2AgAgA0HQCmpCCDcDACADQcgKakIANwMAIANBuApqQgQ3AwAgA0GwCmoiBkIANwMAIANB +6AlqQgA3AwAgA0HwCWpCBDcDACADQfgJakKAgICAwAA3AwAgA0GACmpCADcDACADQYgKakIINwMA +IANBkApqQoCAgICAATcDACADQZgKakIANwMAIANBoApqQgg3AwAgA0GAgICAeDYCyAkgA0EANgKg +CSADQoCAgIDAADcD2AogA0KAgICAwAA3A8AKIANCgICAgIABNwOoCiADQQA2ArgJIANCgICAgMAA +NwPgCSADKQMAIRQgAykDCCEVIANBxAlqIghBADYCACADQZgJaiIHIBU3AwAgA0HsCmoiCUEANgIA +IANBkAlqIgsgFDcDACADQYgJaiIKQfDCwAApAwA3AwAgA0HQAmogA0GwCWopAwA3AwAgA0HIAmog +A0GoCWopAwA3AwAgA0EANgK8CSADQoCAgIDAADcC5AogA0GAgICAeDYC1AkgA0HowsAAKQMANwOA +CSADIAMpA6AJNwPAAiADQdgOaiIMIANB0AlqKAIANgIAIAMgAykDyAk3A9AOIANBkAJqIg4gBigC +ADYCACADIAMpA6gKNwOIAiADQfgBaiIGIANBvApqKAIANgIAIAMgAykCtAo3A/ABIANBgANqIhAg +A0HUCmooAgA2AgAgAyADKQLMCjcD+AIgA0HwAmoiESAEKAIANgIAIAMgAykD2Ao3A+gCIANBwANq +IgQgA0HgCWpBJBDNTxogA0GYA2oiEiADQYQKakEkEM1PGiADQfAOaiITIAgoAgA2AgAgA0GoAmog +CikDADcDACADQbACaiALKQMANwMAIANBuAJqIAcpAwA3AwAgAyADKQK8CTcD6A4gAyADKQOACTcD +oAIgA0HgAmoiCCAJKAIANgIAIAMgAykC5Ao3A9gCIANBwA5qIgcgA0HcCWooAgA2AgAgAyADKQLU +CTcDuA4gA0HACmoQu0sgASgCFCEJIANB4A1qIANBoAJqQTgQzU8aIANB6ANqIgsgA0GACWpBmAUQ +zU8aIAFByAZqIAtBmAUQzU8aIAFB4AtqQQA2AgAgAUHkC2ogAykD6A43AgAgAUHsC2ogEygCADYC +ACABQfALaiADKQPQDjcDACABQfgLaiAMKAIANgIAIAFB/AtqIAMpA7gONwIAIAFBhAxqIAcoAgA2 +AgAgAUGIDGogBEEkEM1PGiABQawMaiASQSQQzU8aIAFB2AxqIA4oAgA2AgAgAUHQDGogAykDiAI3 +AwAgAUHcDGogAykD8AE3AgAgAUHkDGogBigCADYCACABQegMaiADKQOIAzcDACABQfAMaiAFKAIA +NgIAIAFB9AxqIAMpA/gCNwIAIAFB/AxqIBAoAgA2AgAgAUGIDWogESgCADYCACABQYANaiADKQPo +AjcDACABQZgNaiAJNgIAIAFBnA1qQQA6AAAgAUGUDWogCCgCADYCACABQYwNaiADKQPYAjcCAAwM +CyADQYAJaiAJIAIgCygCDBEDACADLQDICSIEQQRGDQQgA0HuAWoiByADLQCDCToAACADQegBaiIK +IANBlAlqKAIANgIAIANB2AFqIgwgA0GgCWooAgA2AgAgAyADLwCBCTsB7AEgAyADKQKMCTcD4AEg +AyADKQKYCTcD0AEgAy0AgAkhBSADKAKECSEGIAMoAogJIQggA0GsAWogA0GkCWpBJBDNTxogA0Gq +AWoiDiADQcsJai0AADoAACADIAMvAMkJOwGoASABQcAGahCZNiAEQQNGDQIgAUHgB2ogBToAACAB +QdwHaiABQewFajYCACABQeEHaiADLwHsATsAACABQegHaiAINgIAIAFB5AdqIAY2AgAgAUHsB2og +AykD4AE3AgAgAUH4B2ogAykD0AE3AgAgAUHjB2ogBy0AADoAACABQfQHaiAKKAIANgIAIAFBgAhq +IAwoAgA2AgAgAUGECGogA0GsAWpBJBDNTxogAUGoCGogBDoAACABQawIakEAOgAAIAFBqQhqIAMv +AagBOwAAIAFBqwhqIA4tAAA6AABBAiEEDAoLIAFBwAZqIgQgAhC2BEH/AXEiBUECRgRAQQQhBAwP +CyAEELY1IAVFDQYgAS0AugYNBAwFCyABIAEoAlg2AvwCIAFBoAVqIgQgAUGAA2ogBUGgAhDNTxCr +USABQegFai0AAEECRg0BIAFBAToAuwYgAUHsBWogBEHMABDNTyEEIANB0ABqIAEoAhQoAgBB3ABq +KAIAQQhqEOU1IAMoAlAhBSADKAJUIQYgA0HIAGogBBDbTSADKAJMIQggAygCSCEHIANBQGsgBBDU +PiADQThqIAUgByAIIAMoAkAgAygCRCAGKAIsEQoAIAMoAjghCSABQcQGaiADKAI8Igs2AgAgASAJ +NgLABgwHCyADQZ4PaiAHLQAAOgAAIANBmA9qIAooAgA2AgAgA0GID2ogDCgCADYCACADIAMvAewB +OwGcDyADIAMpA+ABNwOQDyADIAMpA9ABNwOADyABQewFahDhEiABQQA6ALsGIAFBgANqENIyIAFB +xABqEM4VDAkLIANBgAJqIARBEGooAgA2AgAgA0H4AWogBEEIaikCADcDACADIAQpAgA3A/ABAkBB +xJPbACgCAEEDSw0AQdiR2wAQ+z4iBUH/AXFFDQBBACEEQdiR2wAoAgAgBRD1LkUNAEHYkdsAKAIA +IgVBHGohCiAFQShqKAIAIQYgBUEkaigCACEIIAUoAhwhByADIAVBIGooAgAiBQR/IANBADYCkAkg +AyAGNgKMCSADIAg2AogJIAMgBTYChAlBASEEIAcFQQALNgKACSADQYgCaiADQYAJakGsi8EAENgs +IANB9ANqQgA3AgAgA0EBNgLsAyADQeyLwQA2AugDIANB4MfAADYC8AMgAyAEIAVPBH9BAAUgAyAG +NgKMCSADIAg2AogJIAMgBTYChAkgAyAENgKQCSAEQQFqIQQgBws2AoAJIANBuA5qIANBgAlqQayL +wQAQ2CwgA0GIA2ogAUH0BGoQ8VEgAyAEIAVJBH8gAyAGNgKMCSADIAg2AogJIAMgBTYChAkgAyAE +NgKQCSAEQQFqIQQgBwVBAAs2AoAJIANB0A5qIANBgAlqQayLwQAQ2CwgAyABQaQDajYC2AIgAyAE +IAVPBH9BAAUgAyAGNgKMCSADIAg2AogJIAMgBTYChAkgAyAENgKQCSAEQQFqIQQgBws2AoAJIANB +6A5qIANBgAlqQayLwQAQ2CwgAyAEIAVJBH8gAyAENgLQAyADIAY2AswDIAMgCDYCyAMgAyAFNgLE +AyAHBUEACzYCwAMgA0GYA2oiBCADQcADaiIFQayLwQAQ2CwgA0G4CWpBlIzBADYCACADQawJakH0 +i8EANgIAIANBqAlqIAFBjANqNgIAIANBoAlqQYSMwQA2AgAgA0GUCWpB9IvBADYCACADQbQJaiAD +QegCajYCACADQZwJaiADQdgCajYCACADQZAJaiADQYgDaiIGNgIAIANBwMfAADYCiAkgAyAENgKw +CSADIANB6A5qNgKkCSADIANB0A5qNgKYCSADIANBuA5qNgKMCSADIANB6ANqNgKECSADIANBiAJq +NgKACSADIANB8AFqNgLoAiAFIAogA0GACWoQ1UEgA0GAA2ogA0HIA2ooAgA2AgAgAyADKQLAAzcD ++AJB2JHbACgCACADQfgCahDENCAGEIg/CyADQfABahD9IwwEC0EDIQQMCgsgAUHsBWoQ2U0LIANB +MGogAUHsBWoiBRDbTSADQShqIAMoAjAgAygCNBDCMCADQYAJaiIEIAFBOGogAygCKCADKAIsEIcQ +IAQQjRYhCCADQZgJaiABQZQGaikAADcDACADQZAJaiABQYwGaikAADcDACADQYgJaiABQYQGaikA +ADcDACADIAFB/AVqKQAANwOACSADQcADaiIHIAQQ8VEgA0HoA2oiBiAIIAcQ2A8gBhDVEyADQSBq +IAUQ1D4gAygCICEKIANBGGogAygCJCIIEO4fIAMoAhghDCADKAIcIAogCBDNTyEKIAMgCDYC8AMg +AyAKNgLsAyADIAw2AugDIAYQq0ogAUEAOgC7BiAEIAVBzAAQzU8aIAFBKGogBBDsKwsgAS0AuwYE +QCABQewFahDhEgsgAUEAOgC7BgsgASgCNCEEIAEoAvwCIQUgASgCJCEGIANBgQE2AsADIAMgBRDP +TzYC6AMgAyAEEM9PNgKACSADQRBqIAYgA0HAA2oiBCADQegDaiIFIANBgAlqIgYQoyUgAyADKAIQ +IAMoAhRBwLXBAEH8tcEAEIAvNgKYAyADQZgDahCWQSAGEJZBIAUQlkEgBBCWQSABQYADahDSMkEA +IQQMAQtBASEEDAALAAsgA0GACWogAUHIBmoiBCACEPsQIAMtAIAJIgVBDEYNASADQbYOaiICIAMt +AIMJOgAAIANBsA5qIgcgA0GUCWooAgA2AgAgA0GgDmoiCSADQaAJaigCADYCACADIAMvAIEJOwG0 +DiADIAMpAowJNwOoDiADIAMpApgJNwOYDiADKAKECSEGIAMoAogJIQggBBD5PCAFQQtGDQIgA0Ge +D2ogAi0AADoAACADQZgPaiAHKAIANgIAIANBiA9qIAkoAgA2AgAgAyADLwG0DjsBnA8gAyADKQOo +DjcDkA8gAyADKQOYDjcDgA8LIAFBOGoQ/QIgAUG8BmohBCABLQC8BkUNBCABQShqELtLDAQLQQUh +BAwBC0HEk9sAKAIAQQJLDQFB5JHbABD7PiICQf8BcUUNAUEAIQRB5JHbACgCACACEPUuRQ0BQeSR +2wAoAgAiBUEoaigCACEGIAVBJGooAgAhCCAFKAIcIQcgAyAFQSBqKAIAIgIEfyADQQA2ApAJIAMg +BjYCjAkgAyAINgKICSADIAI2AoQJQQEhBCAHBUEACzYCgAkgA0G4DmogA0GACWpBpIzBABDYLCAD +QfQDakIANwIAIANBATYC7AMgA0HUjMEANgLoAyADQeDHwAA2AvADIAMgAiAETQR/QQAFIAMgBjYC +jAkgAyAINgKICSADIAI2AoQJIAMgBDYCkAkgBEEBaiEEIAcLNgKACSADQdAOaiADQYAJakGkjMEA +ENgsIAMgAiAESwR/IAMgBjYCjAkgAyAINgKICSADIAI2AoQJIAMgBDYCkAkgBEEBaiEEIAcFQQAL +NgKACSADQegOaiADQYAJakGkjMEAENgsIAMgAiAESwR/IAMgBDYC0AMgAyAGNgLMAyADIAg2AsgD +IAMgAjYCxAMgBwVBAAs2AsADIANBmANqIgQgA0HAA2oiAkGkjMEAENgsIANBrAlqQdyMwQA2AgAg +A0GgCWpBmO3AADYCACADQZwJaiABQcAGajYCACADQZQJakGY7cAANgIAIANBkAlqIAFBNGo2AgAg +A0GoCWogA0GIAmo2AgAgA0HAx8AANgKICSADIAFBOGo2AogCIAMgBDYCpAkgAyADQegOajYCmAkg +AyADQdAOajYCjAkgAyADQegDajYChAkgAyADQbgOajYCgAkgAiAFQRxqIANBgAlqENZBQeSR2wAo +AgAgAhDENAwBCyANIAQ6AAAMAgsgA0GYD2ogAUFAaygCADYCACADIAEpAzg3A5APIAFBvAZqIQQg +ASgCNCEIIAEoAsAGIQZBCyEFCyAEQQA6AAAgA0GmAWoiAiADQZ4Pai0AADoAACADQaABaiIHIANB +mA9qKAIANgIAIANBkAFqIgkgA0GID2ooAgA2AgAgAyADLwGcDzsBpAEgAyADKQOQDzcDmAEgAyAD +KQOADzcDiAFBASEEIA1BAToAACAFQf8BcUEMRg0AIANBhgFqIg0gAi0AADoAACADQYABaiICIAco +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 +Amo2ApABIAlBADYCbCAJQQU2AmAgCUHMi88ANgJcIAlB6ABqQQU2AgAgCSAJQZABajYCZCAJQcQA +aiAJQdwAahD8FQJAQcST2wAoAgANAEHIkNsAEPs+IgNB/wFxRQ0AQQAhBkHIkNsAKAIAIAMQ9S5F +DQBByJDbACgCACIEQShqKAIAIQUgBEEkaigCACEHIAQoAhwhCiAJIARBIGooAgAiAwR/IAlBADYC +oAEgCSAFNgKcASAJIAc2ApgBIAkgAzYClAFBASEGIAoFQQALNgKQASAJQfgBaiAJQZABakH0i88A +ELktIAlB6ABqQgA3AgAgCUEBNgJgIAlBrIzPADYCXCAJQYTrzgA2AmQgCSADIAZNBH9BAAUgCSAF +NgKcASAJIAc2ApgBIAkgAzYClAEgCSAGNgKgASAGQQFqIQYgCgs2ApABIAlBkAJqIAlBkAFqQfSL +zwAQuS0gCSAJQSBqNgJQIAkgAyAGSwR/IAkgBjYCyAIgCSAFNgLEAiAJIAc2AsACIAkgAzYCvAIg +CgVBAAs2ArgCIAlBpAJqIgMgCUG4AmoiBUH0i88AELktIAlBsAFqQcSMzwA2AgAgCUGkAWpBtIzP +ADYCACAJQawBaiAJQYQBajYCACAJQaABaiAJQdAAajYCACAJQej8zgA2ApgBIAkgDCkCNDcCwAEg +CSADNgKoASAJIAlBkAJqNgKcASAJIAlB3ABqNgKUASAJIAlB+AFqNgKQASAJIAlBwAFqNgKEASAF +IARBHGogCUGQAWoQ4UEgCUHoAWogCUHAAmooAgA2AgAgCSAJKQK4AjcD4AFByJDbACgCACAJQeAB +ahDENAsgCCgCBCIGQRhqKAIAIQQgCSAGQRxqKAIAQQAgBigCFCIDGzYCsAEgCSAENgKsASAJIAM2 +AqgBIAlBADYCpAEgCSADQQBHIgU2AqABIAkgBDYCnAEgCSADNgKYASAJQQA2ApQBIAkgBTYCkAEg +CUHQAGogCUGQAWoiAxCuECAJKAJUIgQgCSgCWCIFEOE1IAlBpAJqIAQgBUHUjM8AQQEQkAMgCSgC +rAIhBCAJKAKoAiEFIAtCATcCACAJQQI2ApQBIAlB3IzPADYCkAEgCUGDEzYC/AEgCSAJQfgBajYC +mAEgCSAJQcQAajYC+AEgCUHcAGogAxD8FSAJQcACaiAJQeQAaigCACIDNgIAIAkgCSkCXDcDuAIg +CUGQAmogCUEraiABIAUgBCAJKAK8AiADIAYQqhICQAJAAkAgCSgCkAIiA0EMRgRAIAlBuAJqEIg/ +IAlBpAJqEIg/An8gBigCFCIDRQRAQQAhBEEADAELIAYoAhwhBCAGKAIYIQZBAQshBSAJIAQ2Anwg +CSAGNgJ4IAkgAzYCdCAJQQA2AnAgCSAFNgJsIAkgBjYCaCAJIAM2AmQgCUEANgJgIAkgBTYCXCAC +QdwAaiIDIAJB4ABqIgQgAkHUAGoiGigCACIbGyEcIAxBPGohHSACQdgAaiEeIAJB6ABqKAIAIRAg +AkHkAGooAgAhDSAEKAIAIQ4gAygCACEIIAJBNGooAgAhESACQTBqKAIAIRIgAkEsaigCACETIAIo +AlAhHyACKQMgISADQCAJQRhqIAlB3ABqEPgQIAkoAhgiAkUEQCAJQZgBaiIBIAlBNGooAgA2AgAg +CUGkAWogCUFAaygCADYCACAAIAkpAiw3AgAgCSAJKQI4NwKcASAAQQhqIAEpAwA3AgAgAEEQaiAJ +QaABaikDADcCACAJQdAAahCdPSAJQcQAahCIPwwFCyAJKAIcIRcgCSACNgKAAQJAQcST2wAoAgAN +AEHUkNsAEPs+IgJB/wFxRQ0AQdSQ2wAoAgAgAhD1LkUNAEEAIQNB1JDbACgCACIHQShqKAIAIQog +B0EkaigCACELIAcoAhwhBQJ/IAdBIGooAgAiBkUEQEEAIQRBAAwBCyAJQQA2AqABIAkgCjYCnAEg +CSALNgKYASAJIAY2ApQBIAUhBEEBCyECIAkgBDYCkAEgCUHAAWogCUGQAWpB7IzPABC5LSAJQQE2 +ArwCIAlBkI3PADYCuAIgCUIANwLEAiAJQYTrzgA2AsACIAIgBkkEQCAJIAo2ApwBIAkgCzYCmAEg +CSAGNgKUASAJIAI2AqABIAUhAyACQQFqIQILIAkgAzYCkAEgCUHgAWogCUGQAWpB7IzPABC5LSAJ +IAlBIGo2AtQBIAkgAiAGTwR/QQAFIAkgCjYCnAEgCSALNgKYASAJIAY2ApQBIAkgAjYCoAEgAkEB +aiECIAULNgKQASAJQfgBaiAJQZABakHsjM8AELktIAkgDCkCNDcC2AEgCSAJQdgBajYCjAIgCSAC +IAZJBH8gCSACNgK0AiAJIAo2ArACIAkgCzYCrAIgCSAGNgKoAiAFBUEACzYCpAIgCUGQAmoiAiAJ +QaQCakHsjM8AELktIAlBmI3PADYCvAEgCUHEjM8ANgKwASAJQbSMzwA2AqQBIAlB6PzOADYCmAEg +CSAHQRxqNgKMASAJQQQ2AogBIAkgCUGAAWo2ArgBIAkgAjYCtAEgCSAJQYwCajYCrAEgCSAJQfgB +ajYCqAEgCSAJQdQBajYCoAEgCSAJQeABajYCnAEgCSAJQbgCajYClAEgCSAJQcABajYCkAEgCSAJ +QZABajYChAFB1JDbACgCACAJQYQBahDENAsgCUGQAWogCSgCgAEiAigCBCACKAIIEPIcIAkoApAB +IgJFDQAgCSAJKAKUATYCiAEgCSACNgKEAQJAAkACQCAdIAlBhAFqENQhIgIEQCAJQfgBaiACEKAy +IAkoAoACIQIgCSgC/AEhAyAJQQI2ApQBIAlBqI3PADYCkAEgCUICNwKcASAJQYETNgLEAiAJQYMT +NgK8AiAJIAlBuAJqNgKYASAJIAlBhAFqNgLAAiAJIAlBxABqNgK4AiAJQaQCaiAJQZABahD8FSAJ +QZgCaiAJQawCaiIKKAIAIgQ2AgAgCSAJKQKkAjcDkAIgCUHgAWogCUEraiABIAMgAiAJKAKUAiAE +IBcQqhIgCSgC4AEiAkEMRw0GIAlBkAJqEIg/IAlB+AFqEIg/QcST2wAoAgANAUHgkNsAEPs+IgJB +/wFxRQ0BQeCQ2wAoAgAgAhD1LkUNAUHgkNsAKAIAIgNBKGooAgAhBCADQSRqKAIAIQUgAygCHCEH +IAkCfyADQSBqKAIAIgJFBEBBACEGQQAMAQsgCUEANgKgASAJIAQ2ApwBIAkgBTYCmAEgCSACNgKU +AUEBIQYgBws2ApABIAlB4AFqIAlBkAFqQbiNzwAQuS0gCUEBNgK8AiAJQeyNzwA2ArgCIAlCADcC +xAIgCUGE684ANgLAAiAJIAIgBksEfyAJIAQ2ApwBIAkgBTYCmAEgCSACNgKUASAJIAY2AqABIAZB +AWohBiAHBUEACzYCkAEgCUH4AWogCUGQAWpBuI3PABC5LSAJIAlBIGo2AowCIAkgAiAGSwR/IAkg +BjYCtAIgCSAENgKwAiAJIAU2AqwCIAkgAjYCqAIgBwVBAAs2AqQCIAlBkAJqIgIgCUGkAmoiBEG4 +jc8AELktIAlB9I3PADYCsAEgCUG0jM8ANgKkASAJQej8zgA2ApgBIAkgCUHYAWo2AqwBIAkgAjYC +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 +aiADQcQIakE8EM1PGiADIAMoAIkJNgJYIAMgA0GMCWooAAA2AFsgAykDgAkhEyAGENksIAdBA0YN +CCABIAo6ACAgAUEBOgDZASABQSFqIAMvAZwBOwAAIAFBKGogBTYCACABQSRqIAk2AgAgAUEjaiAE +LQAAOgAAIAFBLGogA0HgAGpBPBDNTxogAUHwAGogBzoAACABQegAaiATNwMAIAFB8QBqIAMoAlg2 +AAAgAUH0AGogAygAWzYAACAHQQJGDQcgAUEAOgDZASABQfgAaiIGIAFBIGpB2AAQzU8hCSABQQA7 +AdoBIANBmApqIAFB6AFqIgooAgA2AgAgAyABKQPgATcDkAogAUEcaigCACEHIAEoAtABIQUgASgC +GCEEIANBoAFqIgggA0G4CGpB5AEQzU8aIAFB/AFqIAc2AgAgAUH4AWogBDYCACABQfABaiABQRBq +KQMANwMAIAogAUEIaikDADcDACABIAEpAwA3A+ABIAFBgAJqIAhB5AEQzU8aIAFBiARqIgpBADoA +ACABQegDaiAFNgIAIAFB5ANqIAk2AgAgAUHgAWohCQwDCyABQeABaiEJIAFBiARqIgotAABBAWsO +BA0AAwQBCwALIAFB/AFqKAIAIQcgAUH4AWooAgAhBCABQegDaigCACEFIAFB5ANqKAIAIQYLIAFB +hAJqIAc2AgAgAUGAAmoiECAENgIAIAFB7ANqIAY2AgAgAUGIAmoiESAJKQMANwMAIAFBkAJqIAlB +CGopAwA3AwAgAUGYAmogCUEQaikDADcDACABQfADaiISIAFB2ANqKQMANwMAIAFB+ANqIAFB4ANq +KAIANgIAIANBuAhqIgcgBRDpSCADQQM2AtgHIANBkAZqIAcgA0HYB2oQgSAgAygCkAYNAiADQbAI +aiIEIANBpAZqKAIANgIAIAMgA0GcBmopAgA3A6gIIANBmAZqKAIAIQcgAygClAYhBiADQeQEaiAD +QagGakGsARDNTxogA0HgBGogBCgCADYCACADIAc2AtQEIAMgBjYC0AQgAyADKQOoCDcC2AQgA0EA +NgL8ByADQQA2AvQHIANByABqQQYQ7h8gAygCSCEGIAMoAkwiBEGw8sIAKAAANgAAIARBBGpBtPLC +AC8AADsAACADQQY2ArAIIAMgBDYCrAggAyAGNgKoCCADQbgIaiABKALsAxDZSSADLQC4CEEGRg0V +IANBoAZqIgggA0HICGoiCykDADcDACADQZgGaiIMIANBwAhqIg0pAwA3AwAgAyADKQO4CDcDkAYg +A0G4CGoiBCADQfQHaiADQagIaiADQZAGahDUDCAEEONCIANBQGtBDRDuHyADKAJAIQ4gAygCRCIG +Qfz9wgApAAA3AAAgBkEFakGB/sIAKQAANwAAIANBDTYCsAggAyAGNgKsCCADIA42AqgIIAQgASgC +7ANBCGoQ2UkgAy0AuAhBBkYNFSAIIAspAwA3AwAgDCANKQMANwMAIAMgAykDuAg3A5AGIANBuAhq +IgQgA0H0B2ogA0GoCGoiBiADQZAGahDUDCAEEONCIANBOGpBBBDuHyADKAI4IQggAygCPCILQevK +5ZsHNgAAIANBBDYCiAggAyALNgKECCADIAg2AoAIIANBADYClAggA0EANgKMCCADQTBqQQcQ7h8g +AygCMCELIAMoAjQiCEGJ/sIAKAAANgAAIAhBA2pBjP7CACgAADYAACADQQc2AqAIIAMgCDYCnAgg +AyALNgKYCCAGIAEoAuwDKAJIQQhqEPFRIAQgBhCXUiADLQC4CEEGRg0VIANBoAZqIgggA0HICGoi +CykDADcDACADQZgGaiIMIANBwAhqIg0pAwA3AwAgAyADKQO4CDcDkAYgA0G4CGoiBCADQYwIaiAD +QZgIaiIOIANBkAZqIgYQ1AwgBBDjQiADQagIahCIPyADQaAIaiADQZQIaigCACIPNgIAIANBnAZq +IA82AgAgA0EFOgCQBiADIAMpAowINwKUBiAEIANB9AdqIANBgAhqIAYQ1AwgBBDjQiADQShqQQkQ +7h8gAygCKCEPIAMoAiwiBkGQ/sIAKQAANwAAIAZBCGpBmP7CAC0AADoAACADQQk2ArAIIAMgBjYC +rAggAyAPNgKoCCADQSBqIAUQsUYgAyADKQMgNwKYCCAEIA4Q/UcgAy0AuAhBBkYNFSAIIAspAwA3 +AwAgDCANKQMANwMAIAMgAykDuAg3A5AGIANBuAhqIgUgA0H0B2ogA0GoCGoiBCADQZAGahDUDCAF +EONCIANBGGpBDhDuHyADKAIYIQggAygCHCIGQZn+wgApAAA3AAAgBkEGakGf/sIAKQAANwAAIANB +DjYCiAggAyAGNgKECCADIAg2AoAIIANBADYClAggA0EANgKMCCADQRBqQQcQ7h8gAygCECEIIAMo +AhQiBkGJ/sIAKAAANgAAIAZBA2pBjP7CACgAADYAACADQQc2AqAIIAMgBjYCnAggAyAINgKYCCAE +IANB0ARqEPFRIAUgBBCXUiADLQC4CEEGRg0VIANBoAZqIgQgA0HICGoiBikDADcDACADQZgGaiII +IANBwAhqIgspAwA3AwAgAyADKQO4CDcDkAYgA0G4CGoiBSADQYwIaiADQZgIaiADQZAGaiIMENQM +IAUQ40IgA0GoCGoQiD8gA0GgCGogA0GUCGooAgAiDTYCACADQZwGaiANNgIAIANBBToAkAYgAyAD +KQKMCDcClAYgBSADQfQHaiADQYAIaiAMENQMIAUQ40IgA0EIakEEEO4fIAMoAgghDCADKAIMIg1B +9PLBqwY2AAAgA0EENgKwCCADIA02AqwIIAMgDDYCqAggBSAQEJhSIAMtALgIQQZGDRUgBCAGKQMA +NwMAIAggCykDADcDACADIAMpA7gINwOQBiADQbgIaiIFIANB9AdqIANBqAhqIANBkAZqENQMIAUQ +40IgA0EHEO4fIAMoAgAhBiADKAIEIgRB1fLCACgAADYAACAEQQNqQdjywgAoAAA2AAAgA0EHNgKw +CCADIAQ2AqwIIAMgBjYCqAggBSAREJcEIAMtALgIQQZGDRUgA0GgBmogA0HICGopAwA3AwAgA0GY +BmoiBCADQcAIaikDADcDACADIAMpA7gINwOQBiADQbgIaiIFIANB9AdqIANBqAhqIANBkAZqENQM +IAUQ40IgBCADQfwHaigCACIENgIAIANB5AdqIAQ2AgAgA0EFOgDYByADIAMpAvQHNwLcByAFIANB +2AdqENUDIAMoArgIIgVBgICAgHhGDQkgAUGABGoiByADKQK8CDcDACABQfwDaiAFNgIAIANB2Adq +EM4wIAFB5ARqQQA6AAAgAUGUBGogBykDADcCACABQZAEaiABKALsAzYCAAsgA0G4CGogAUGQBGoi +ByACEKoFIAMoAuAIQYGAgIB4Rg0FIAFBoAJqIANBuAhqQbgBEM1PGiAHEINAIAEgAUHsA2o1AgA3 +A5AECyADQbgIaiABQZAEahDGOSADKAK4CEEDRg0JIANB2ARqIANBwAhqIgIoAgA2AgAgAyADKQK4 +CCITNwPQBCATpw0KIANB+AhqIAFBoAJqQbgBEM1PGiACIAFB7ANqKAIAIgJBIGopAwA3AwAgA0HI +CGogAkEoaikDADcDACADQdAIaiACQTBqKQMANwMAIANB4AhqIAIoAkgiBUHQAWopAgA3AwAgA0Ho +CGogBUHYAWopAgA3AwAgA0HwCGogBUHgAWopAgA3AwAgAyACKQMYNwO4CCADIAVByAFqKQIANwPY +CCADQbgKaiABQfgDaigCADYCACADIAFB8ANqKQMANwOwCiABQfwDaiEFIANBkAZqIgIgA0G4CGoi +ChDJQSADQdAEahC/PyAKIAIQgSkgAygCuAgiAkUNAyADKAK8CCEHIANBkAZqENsxIAUQiD9BEiEK +DA0LIANByApqIANBpAZqKAIANgIAIAMgA0GcBmopAgA3A8AKIANBmAZqKAIAIQcgAygClAYhAkEK +IQoMCwtBAiEEQREhCgJAQcST2wAoAgANAEH4+NoAEPs+IgJB/wFxRQ0AQQAhB0H4+NoAKAIAIAIQ +9S5FDQBB+PjaACgCACICQRxqIQkgAkEgaigCACIFBEAgAkEoaigCACEGIAJBJGooAgAhCCACKAIc +IQcgA0EANgLICCADIAY2AsQIIAMgCDYCwAggAyAFNgK8CAsgAyAHNgK4CCADQaABaiIGIANBuAhq +IghBkMrCABDdLCADQcQIakIANwIAIANBlMnCADYCmAYgA0EBNgK8CCADQejKwgA2ArgIIANBpMnC +ADYCwAggAyAINgKUBiADIAY2ApAGIANB0ARqIgYgCSADQZAGahDgQUH4+NoAKAIAIAYQxDQLDA0L +IANBzgRqIAQtAAA6AAAgAyADLwGcATsBzAQgA0GQBGogA0HgAGpBPBDNTxoMCwsgAygCvAghAiAD +QZAGahDbMSAFEIg/QQshCgwJC0EDIQIMBgtB4MbCAEEjQbTJwgAQ5isACyAAQQM6AFBBAwwLCyAD +KAK8CCECIANB2AdqEM4wQQshCgwEC0HgxsIAQSNBqP7CABDmKwALQQQhAgwBC0G4/sIAQShB4P7C +ABDmKwALIAogAjoAACAAQQM6AFBBBAwGCyASEPtACyABQYgCahDcIiADQYgDaiIFIANBwApqQTwQ +zU8aIAFBAToAiAQgA0GGBGoiBCADQccDai0AADoAACADIAMvAMUDOwGEBCADQcgDaiAFQTwQzU8a +IAkQ0CUgCkESRgRAIANBzgRqIAFB+wBqLQAAOgAAIAMgAS8AeTsBzAQgAUH8AGooAgAhCSABQYAB +aigCACEFIAEtAHghCiADQZAEaiABQYQBakE8EM1PGiADIAFByQFqKAAANgKIBCADIAFBzAFqKAAA +NgCLBCABQcgBai0AACEEIAFBwAFqKQMAIRMMAgsgA0HOBGogBC0AADoAACADIAMvAYQEOwHMBCAD +QZAEaiADQcgDakE8EM1PGiABQfgAahDEKSACIQkgByEFCyABQQA6ANkBIAEtANoBBEAgAUHgAWoQ ++0ALIAFBADoA2gFBAiEEIAEtANsBDQEMAgsCQCABQfAAai0AAEECRg0AIAEtANkBRQ0AIAFBIGoQ +xCkLIAFBADoA2QEgAS0A2gEEQCABQeABahD7QAsgAUEAOgDaASABLQDbAUUNAQsgARDcIgsgACAK +OgAAIAAgAy8BzAQ7AAEgACAFNgIIIAAgCTYCBCAAQQNqIANBzgRqLQAAOgAAIABBDGogA0GQBGpB +PBDNTxogACAEOgBQIAAgEzcDSCAAIAc2AlwgACACNgJYIAAgAygCiAQ2AFEgAEHUAGogAygAiwQ2 +AABBAQs6ANgBIANBgAtqJAAPCyADIAMoArwINgKQBkG4r8MAQSsgA0GQBmpBqK/DAEHs/cIAEIkY +AAuhIQIOfwF+IwBBoAlrIgMkAAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AVEEBaw4ECAIMAQALIAFB +ADoAVSABIAEpAxA3AxggAUEoaiABKAIINgIAIAEgASkDADcDIEECIQUgASgCUCEHQcST2wAoAgBB +AksNCUGQjtsAEPs+IgRB/wFxRQ0JQZCO2wAoAgAgBBD1LkUNCSABQRhqIQ5BkI7bACgCACIEQShq +KAIAIQUgBEEkaigCACEKIAQoAhwhCyADIARBIGooAgAiBgR/IANBADYC0AIgAyAFNgLMAiADIAo2 +AsgCIAMgBjYCxAJBASEMIAsFQQALNgLAAiADQYQFaiADQcACakGgnsEAENgsIAMgDjYCkAggAyAG +IAxLBH8gAyAMNgLYByADIAU2AtQHIAMgCjYC0AcgAyAGNgLMByALBUEACzYCyAcgA0GEBmoiBSAD +QcgHaiIGQaCewQAQ2CwgA0HUAmpBsJ3BADYCACADQdACaiADQbAIajYCACADQezNwAA2AsgCIAMg +AUEgajYCsAggAyAFNgLMAiADIANBkAhqNgLEAiADIANBhAVqNgLAAiAGIARBHGogA0HAAmoQ8kEg +AUEwaiAEIAYQxDIgAUEBOgBVIAFBOGooAgAhBQwKCyABQdgAaiEOAkAgAUH0AGoiDC0AAEEBaw4E +CAEOAA0LIAFB+ABqIQoCQAJAIAFBsAFqIgstAABBAWsOBQUCAQYHAAsgAUH8AGooAgAhBCABQagB +aigCACEFIAEoAnghBgwPCyABQbgBaiEIAkAgAUHMAWoiBy0AAEEBaw4DAwEAAgsgAUHIAWooAgAh +BCABQcQBaigCACEFDBALAAsgAUHAAWooAgAhBCABQbwBaigCACEGIAEoArgBIQUMDQtBoMTAAEEj +QZyPwQAQ5isAC0GgxMAAQSNBjIvBABDmKwALIAFBvAFqKAIAIQUMDAsgAUHUAWooAgAhBCABQdAB +aigCACEFDAwLQaDEwABBI0GgnsEAEOYrAAtBoMTAAEEjQaCewQAQ5isACyABQQE6AFUgAUHIAGpB +ADYCACABQThqQQI2AgALIAEoAighBCABKQMgIREgASgCHCEGIAEoAhghCiAFQQJGDQEgAUEAOgBV +IAEgASkDMDcDWCABQZQBakEAOgAAIAFBkAFqIAc2AgAgAUGMAWogBjYCACABQYgBaiAKNgIAIAFB +gAFqIAQ2AgAgAUH4AGogETcDACABQeAAaiABQThqKQMANwMAIAFB6ABqIAFBQGspAwA3AwAgAUHw +AGogAUHIAGopAwA3AwAgAUGVAWogA0E9akGDAhDNTxoLIANBwAJqIAFB2ABqIgwgAhDxKEEDIQIg +AygCqAMiBEEDRg0NIANBxgRqIAMtAMMCOgAAIANBsARqIANB0AJqKQMANwMAIANBuARqIANB2AJq +KQMANwMAIAMgAy8AwQI7AcQEIAMgAykDyAI3A6gEIAMtAMACIQUgAygCxAIhBiADKALgAiEHIANB +5ANqIANB5AJqQcQAEM1PGiADQeADaiADQcQDaigCADYCACADQdgDaiADQbwDaikCADcDACADQdAD +aiADQbQDaikCADcDACADIAMpAqwDNwPIAyAMEMVLDBcLIAEgETcDWCABQfQAaiIMQQA6AAAgAUHw +AGogBzYCACABQewAaiAGNgIAIAFB6ABqIAo2AgAgAUHgAGogBDYCACABQfUAaiADQT1qQYMCEM1P +GiABQdgAaiEOCyABQbABakEAOgAAIAFB+ABqIAEpA1g3AwAgAUGoAWogAUHwAGooAgA2AgAgAUGI +AWogAUHoAGopAwA3AwAgAUGAAWogAUHgAGooAgA2AgALIANBwAJqIAFB+ABqIgogAhCZAiADLQDA +AiIFQQxGDQxBAiEEIANB5gRqIgsgAy0AwwI6AAAgA0HQBGoiCCADQdACaikCADcDACADQdgEaiIJ +IANB2AJqKQIANwMAIAMgAy8AwQI7AeQEIAMgAykCyAI3A8gEIAMoAsQCIQYgAygC4AIhByAKEKs4 +IAVBC0cNCyABQfAAaigCABD4TSEFIAFBsAFqIgtBADoAACABQagBaiAFNgIAIAFB/ABqIAFB7ABq +KAIAIgQ2AgAgASABQegAaigCACIGNgJ4CyABQcwBaiIHQQA6AAAgAUHAAWogBDYCACABQbwBaiAG +NgIAIAFBuAFqIgggBTYCACABQYQBaiAENgIAIAFBgAFqIAY2AgAgAUGsAWogBTYCAAsgA0EwaiAF +KAIAQdwAaigCAEEIahDlNSADQShqIAMoAjAgBiAEIAMoAjQoAlwRBQAgAygCKCEFIAFByAFqIAMo +AiwiBDYCACABQcQBaiAFNgIACyADQcgHaiAFIAIgBCgCDBEDACADKALIByIEQQJGDQUgA0GSCGoi +CSADLQDPBzoAACADQbgIaiINIANB3AdqKQIANwMAIANBwAhqIg8gA0HkB2opAgA3AwAgAyADLwDN +BzsBkAggAyADKQLUBzcDsAggAy0AzAchBSADKALQByEGIAMoAuwHIQcgAUHEAWoQmTYgAUEBOgDM +ASADQYYHaiAJLQAAOgAAIANB8AZqIgkgDSkDADcDACADQfgGaiINIA8pAwA3AwAgAyADLwGQCDsB +hAcgAyADKQOwCDcD6AYgCBD1PyAEDQYgAUGMAWogAykD6AY3AgAgAUGIAWogBjYCACABQaQBaiAH +NgIAIAFBlAFqIAkpAwA3AgAgAUGcAWogDSkDADcCACADQSBqIAFBrAFqIgQoAgAoAgBB3ABqKAIA +QQhqEOU1IAMoAiAhBiADKAIkIQUgA0EYaiAEKAIAENxGIANBEGogBiADKAIYIAMoAhwgBSgCYBEF +ACADKAIQIQQgAUG8AWogAygCFCIFNgIAIAEgBDYCuAELIANByAdqIAFBuAFqIgQoAgAgAiAFKAIM +EQMAIAMtAMgHIgVBDEYNCSADQaYHaiIIIAMtAMsHOgAAIANBkAdqIgkgA0HYB2opAgA3AwAgA0GY +B2oiDSADQeAHaikCADcDACADIAMvAMkHOwGkByADIAMpAtAHNwOIByADKALMByEGIAMoAugHIQcg +BBCZNiAFQQtHDQECQCAGRQRAIARBADYCAAwBCyADQdgHaiADQZgHaikDADcDACADQdAHaiADQZAH +aikDADcDACADIAMpA4gHIhE3A8gHIAQgA0HIB2oiBEEAIBGnGxDEQCAEEIs+CyADQQhqIAFBrAFq +KAIAKAIAQdwAaigCAEEIahDlNSADIAMoAgggAUGAAWooAgAgAUGEAWooAgAgAygCDCgCYBEFACAD +KAIAIQUgAUHUAWogAygCBCIENgIAIAFB0AFqIAU2AgALIANByAdqIAUgAiAEKAIMEQMAIAMtAMgH +IgVBDEYNASADQcYHaiIIIAMtAMsHOgAAIANBsAdqIgIgA0HYB2opAgA3AwAgA0G4B2oiBiADQeAH +aikCADcDACADIAMvAMkHOwHEByADIAMpAtAHNwOoByADKALMByEEIAMoAugHIQcgAUHQAWoQmTYg +BUELRw0CIANB8AhqIAYpAwA3AwAgA0HoCGogAikDADcDACADIAMpA6gHNwPgCCADQagIaiICIAFB +oAFqKQMANwMAIANBoAhqIgYgAUGYAWopAwA3AwAgA0GYCGoiBSABQZABaikDADcDACADIAFBiAFq +KQMANwOQCCADQbAIaiABQawBaigCACgCAEEIahCvGiADQYQIaiABQcgBaikCADcCACADQfwHaiAB +QcABaikCADcCACADQdwHaiAFKQMANwIAIANB5AdqIAYpAwA3AgAgA0HsB2ogAikDADcCACADQZ4J +aiADLQCzCDoAACADIAFBuAFqKQIANwL0ByADIAMpA5AINwLUByADIAMvALEIOwGcCSADLQCwCCEF +IANBkAlqIANByAhqKQMANwMAIANBiAlqIANBwAhqKQMANwMAIANB0AdqIANB3AhqKAIANgIAIAMg +AykDuAg3A4AJIAMgAykC1Ag3A8gHIAMoArQIIQYgAygC0AghByADQcACaiADQcgHakHEABDNTxoM +CwsgA0GeCWogCC0AADoAACADQYgJaiAJKQMANwMAIANBkAlqIA0pAwA3AwAgAyADLwGkBzsBnAkg +AyADKQOIBzcDgAkMCQtBBQwHCyADQZ4JaiAILQAAOgAAIANBiAlqIAIpAwA3AwAgA0GQCWogBikD +ADcDACADIAMvAcQHOwGcCSADIAMpA6gHNwOACSABQbgBahCXRSAEIQYMBwsgB0EDOgAAQQMMBQtB +AiEEIANBnglqIANBhgdqLQAAOgAAIANBiAlqIAkpAwA3AwAgA0GQCWogDSkDADcDACADIAMvAYQH +OwGcCSADIAMpA+gGNwOACQwGCyAAQQM2AmgMCgsgA0HmBmogCy0AADoAACADQdAGaiAIKQMANwMA +IANB2AZqIAkpAwA3AwAgAyADLwHkBDsB5AYgAyADKQPIBDcDyAYMBQtBAwwGC0EECyECIAsgAjoA +AAwDCyABQYgBahCdP0ECIQQLIANB5gVqIgIgA0GeCWotAAA6AAAgA0HQBWoiCCADQYgJaikDADcD +ACADQdgFaiIJIANBkAlqKQMANwMAIAMgAy8BnAk7AeQFIAMgAykDgAk3A8gFIANBhAVqIANBwAJq +QcQAEM1PGiADQYAFaiINIANB+AhqKAIANgIAIANB+ARqIg8gA0HwCGopAwA3AwAgA0HwBGoiECAD +QegIaikDADcDACADIAMpA+AINwPoBCALQQE6AAAgBEEDRg0BIANB5gZqIAItAAA6AAAgA0HQBmog +CCkDADcDACADQdgGaiAJKQMANwMAIAMgAy8B5AU7AeQGIAMgAykDyAU3A8gGIANBhAZqIANBhAVq +QcQAEM1PGiADQYAGaiANKAIANgIAIANB+AVqIA8pAwA3AwAgA0HwBWogECkDADcDACADIAMpA+gE +NwPoBSAKEMcpCyADQcYEaiADQeYGai0AADoAACADQbAEaiADQdAGaikDADcDACADQbgEaiADQdgG +aikDADcDACADIAMvAeQGOwHEBCADIAMpA8gGNwOoBCADQeQDaiADQYQGakHEABDNTxogA0HgA2og +A0GABmooAgA2AgAgA0HYA2ogA0H4BWopAwA3AwAgA0HQA2ogA0HwBWopAwA3AwAgAyADKQPoBTcD +yAMgDEEBOgAAIA4QrjgMAgtBBAshAiAMIAI6AAAgAEEDNgJoQQQhAgwBCyABLQBVBEAgAUEwahDZ +IgsgACAFOgAAIAFBADoAVSAAIAMvAcQEOwABIAAgBjYCBCAAIAMpA6gENwMIIAAgBzYCICAAQQNq +IANBxgRqLQAAOgAAIABBEGogA0GwBGopAwA3AwAgAEEYaiADQbgEaikDADcDACAAQSRqIANB5ANq +QcQAEM1PGiAAIAQ2AmggACADKQPIAzcCbCAAQfQAaiADQdADaikDADcCACAAQfwAaiADQdgDaikD +ADcCACAAQYQBaiADQeADaigCADYCAEEBIQILIAEgAjoAVCADQaAJaiQAC5MhAg5/AX4jAEGgCWsi +AyQAAkAgAQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQCABLQDDAUEBaw4EDQMBAgALIAFBAToAwgEgAUEAOwHAASADQdgAahDpJCADIAMpA1g3AtgG +IANBsARqIgogA0HYBmoiBxCGFSAHEPo+IAcQ+AsgB0GEysIAIAoQ5xEQ2SIgAUEBOgDBASABIAMp +ArAENwLIASABQdABaiADQbgEaigCADYCACABQYkCakEAOgAAIAFBgAJqIAEpA7gBNwMACyADQdgG +aiABQdQBaiIFIAIQ5QIgAy0AqAciB0EERg0MIANBpgFqIgQgAy0A2wY6AAAgAyADLwDZBjsBpAEg +Ay0A2AYhCSADKALcBiEKIAMoAuAGIQYgA0HoAGogA0HkBmpBPBDNTxogAyADKACpBzYCYCADIANB +rAdqKAAANgBjIAMpA6AHIREgBRDZLCAHQQNGDQggASAJOgAAIAFBAToAwAEgASADLwGkATsAASAB +IAY2AgggASAKNgIEIAFBA2ogBC0AADoAACABQQxqIANB6ABqQTwQzU8aIAEgBzoAUCABIBE3A0gg +ASADKAJgNgBRIAFB1ABqIAMoAGM2AAAgB0ECRg0HIAFBADoAwAEgAUGsA2ogAUHYAGoiByABQdgA +EM1PNgIAIAFBADsAwQEgAUHAA2oiCUEAOgAAIAFBsANqIAEoArgBIgY2AgAgAUGMA2ogAUG0AWoo +AgAiBDYCACABQYgDaiABKAKwASIFNgIAIAFBtANqIAEpAsgBNwIAIAFBvANqIAFB0AFqKAIANgIA +IAFByAFqIQoMAwsgAUHIAWohCiABQcADaiIJLQAAQQFrDgQNAAMEAQsACyABQYwDaigCACEEIAFB +iANqKAIAIQUgAUGwA2ooAgAhBiABQawDaigCACEHCyABIAU2AsgBIAFBzAFqIAQ2AgAgAUGQA2og +BzYCACABQZQDaiIQIAFBtANqKQIANwIAIAFBnANqIAFBvANqKAIANgIAIANB2AZqIgcgBhDpSCAD +QQM2AvgFIANBsARqIAcgA0H4BWoQgSAgAygCsAQNAiADQdAGaiIEIANBxARqKAIANgIAIAMgA0G8 +BGopAgA3A8gGIANBuARqIgUoAgAhByADKAK0BCEIIANBhANqIANByARqQawBEM1PGiADQYADaiAE +KAIANgIAIAMgBzYC9AIgAyAINgLwAiADIAMpA8gGNwL4AiADQQA2ApwGIANBADYClAYgA0HQAGpB +BhDuHyADKAJQIQggAygCVCIEQbDywgAoAAA2AAAgBEEEakG08sIALwAAOwAAIANBBjYC0AYgAyAE +NgLMBiADIAg2AsgGIANB2AZqIAEoApADENlJIAMtANgGQQZGDRUgA0HABGogA0HoBmopAwA3AwAg +BSADQeAGaikDADcDACADIAMpA9gGNwOwBCADQdgGaiIEIANBlAZqIANByAZqIANBsARqENQMIAQQ +40IgA0HIAGpBDRDuHyADKAJIIQggAygCTCIFQfz9wgApAAA3AAAgBUEFakGB/sIAKQAANwAAIANB +DTYC0AYgAyAFNgLMBiADIAg2AsgGIAQgASgCkANBCGoQ2UkgAy0A2AZBBkYNFSADQcAEaiILIANB +6AZqIgwpAwA3AwAgA0G4BGoiDSADQeAGaiIOKQMANwMAIAMgAykD2AY3A7AEIANB2AZqIgQgA0GU +BmogA0HIBmoiBSADQbAEahDUDCAEEONCIANBQGtBBBDuHyADKAJAIQggAygCRCIPQevK5ZsHNgAA +IANBBDYCqAYgAyAPNgKkBiADIAg2AqAGIANBADYCtAYgA0EANgKsBiADQThqQQcQ7h8gAygCOCEP +IAMoAjwiCEGJ/sIAKAAANgAAIAhBA2pBjP7CACgAADYAACADQQc2AsAGIAMgCDYCvAYgAyAPNgK4 +BiAFIAEoApADKAJIQQhqEPFRIAQgBRCXUiADLQDYBkEGRg0VIAsgDCkDADcDACANIA4pAwA3AwAg +AyADKQPYBjcDsAQgA0HYBmoiBCADQawGaiADQbgGaiIIIANBsARqIgUQ1AwgBBDjQiADQcgGahCI +PyADQcAGaiADQbQGaigCACILNgIAIANBvARqIAs2AgAgA0EFOgCwBCADIAMpAqwGNwK0BCAEIANB +lAZqIANBoAZqIAUQ1AwgBBDjQiADQTBqQQkQ7h8gAygCMCELIAMoAjQiBUGQ/sIAKQAANwAAIAVB +CGpBmP7CAC0AADoAACADQQk2AtAGIAMgBTYCzAYgAyALNgLIBiADQShqIAYQsUYgAyADKQMoNwK4 +BiAEIAgQ/UcgAy0A2AZBBkYNFSADQcAEaiIIIANB6AZqIgspAwA3AwAgA0G4BGoiDCADQeAGaiIN +KQMANwMAIAMgAykD2AY3A7AEIANB2AZqIgYgA0GUBmogA0HIBmoiBCADQbAEahDUDCAGEONCIANB +IGpBDhDuHyADKAIgIQ4gAygCJCIFQZn+wgApAAA3AAAgBUEGakGf/sIAKQAANwAAIANBDjYCqAYg +AyAFNgKkBiADIA42AqAGIANBADYCtAYgA0EANgKsBiADQRhqQQcQ7h8gAygCGCEOIAMoAhwiBUGJ +/sIAKAAANgAAIAVBA2pBjP7CACgAADYAACADQQc2AsAGIAMgBTYCvAYgAyAONgK4BiAEIANB8AJq +EPFRIAYgBBCXUiADLQDYBkEGRg0VIAggCykDADcDACAMIA0pAwA3AwAgAyADKQPYBjcDsAQgA0HY +BmoiBiADQawGaiADQbgGaiADQbAEaiIEENQMIAYQ40IgA0HIBmoQiD8gA0HABmogA0G0BmooAgAi +BTYCACADQbwEaiAFNgIAIANBBToAsAQgAyADKQKsBjcCtAQgBiADQZQGaiADQaAGaiAEENQMIAYQ +40IgA0EQakEEEO4fIAMoAhAhBCADKAIUIgVB9PLBqwY2AAAgA0EENgLQBiADIAU2AswGIAMgBDYC +yAYgBiAKEJhSIAMtANgGQQZGDRUgA0HABGoiCCADQegGaiILKQMANwMAIANBuARqIgYgA0HgBmoi +DCkDADcDACADIAMpA9gGNwOwBCADQdgGaiIEIANBlAZqIANByAZqIANBsARqENQMIAQQ40IgA0EI +akEHEO4fIAMoAgghDSADKAIMIgVB1fLCACgAADYAACAFQQNqQdjywgAoAAA2AAAgA0EHNgLQBiAD +IAU2AswGIAMgDTYCyAYgBBDpFSADLQDYBkEGRg0VIAggCykDADcDACAGIAwpAwA3AwAgAyADKQPY +BjcDsAQgA0HYBmoiBCADQZQGaiADQcgGaiADQbAEahDUDCAEEONCIAYgA0GcBmooAgAiBjYCACAD +QYQGaiAGNgIAIANBBToA+AUgAyADKQKUBjcC/AUgBCADQfgFahDVAyADKALYBiIGQYCAgIB4Rg0J +IAFBpANqIgcgAykC3AY3AgAgAUGgA2ogBjYCACADQfgFahDOMCABQZwEakEAOgAAIAFB0ANqIAFB +qANqKAIANgIAIAFBzANqIAcoAgA2AgAgAUHIA2ogASgCkAM2AgALIANB2AZqIAFByANqIgcgAhCq +BSADKAKAB0GBgICAeEYNBSABQdABaiADQdgGakG4ARDNTxogBxCDQCABIAFBkANqNQIANwPIAwsg +A0HYBmogAUHIA2oQxjkgAygC2AZBA0YNCSADQfgCaiADQeAGaiICKAIANgIAIAMgAykC2AYiETcD +8AIgEacNCiADQZgHaiABQdABakG4ARDNTxogAiABQZADaigCACICQSBqKQMANwMAIANB6AZqIAJB +KGopAwA3AwAgA0HwBmogAkEwaikDADcDACADQYAHaiACKAJIIgZB0AFqKQIANwMAIANBiAdqIAZB +2AFqKQIANwMAIANBkAdqIAZB4AFqKQIANwMAIAMgAikDGDcD2AYgAyAGQcgBaikCADcD+AYgA0HY +CGogAUGcA2ooAgA2AgAgAyABQZQDaikCADcD0AggAUGgA2ohBiADQbAEaiICIANB2AZqIgkQyUEg +A0HwAmoQvz8gCSACEIEpIAMoAtgGIgJFDQMgAygC3AYhByADQbAEahDbMSAGEIg/QRIhCQwNCyAD +QegIaiADQcQEaigCADYCACADIANBvARqKQIANwPgCCADQbgEaigCACEHIAMoArQEIQJBCiEJDAsL +QQIhBEERIQkCQEHEk9sAKAIADQBB+PjaABD7PiICQf8BcUUNAEEAIQdB+PjaACgCACACEPUuRQ0A +Qfj42gAoAgAiAkEcaiEKIAJBIGooAgAiBgRAIAJBKGooAgAhBSACQSRqKAIAIQggAigCHCEHIANB +ADYC6AYgAyAFNgLkBiADIAg2AuAGIAMgBjYC3AYLIAMgBzYC2AYgA0GwBGoiBSADQdgGaiIIQZDK +wgAQ3SwgA0HkBmpCADcCACADQZTJwgA2AvgCIANBATYC3AYgA0HoysIANgLYBiADQaTJwgA2AuAG +IAMgCDYC9AIgAyAFNgLwAiADQeAIaiIFIAogA0HwAmoQ4EFB+PjaACgCACAFEMQ0CwwNCyADQe4C +aiAELQAAOgAAIAMgAy8BpAE7AewCIANBsAJqIANB6ABqQTwQzU8aDAsLIAMoAtwGIQIgA0GwBGoQ +2zEgBhCIP0ELIQkMCQtBAyECDAYLQeDGwgBBI0G0ycIAEOYrAAsgAEEDOgBQQQMMCwsgAygC3AYh +AiADQfgFahDOMEELIQkMBAtB4MbCAEEjQaj+wgAQ5isAC0EEIQIMAQtBuP7CAEEoQeD+wgAQ5isA +CyAJIAI6AAAgAEEDOgBQQQQMBgsgEBD7QAsgA0GoAWoiBiADQeAIakE8EM1PGiABQQE6AMADIANB +pgJqIgQgA0HnAWotAAA6AAAgAyADLwDlATsBpAIgA0HoAWogBkE8EM1PGiAKEOYoIAlBEkYEQCAD +Qe4CaiABQdsAai0AADoAACADIAEvAFk7AewCIAFB3ABqKAIAIQogAUHgAGooAgAhBiABLQBYIQkg +A0GwAmogAUHkAGpBPBDNTxogAyABQakBaigAADYCqAIgAyABQawBaigAADYAqwIgAUGoAWotAAAh +BCABQaABaikDACERDAILIANB7gJqIAQtAAA6AAAgAyADLwGkAjsB7AIgA0GwAmogA0HoAWpBPBDN +TxogAUHYAGoQxCkgAiEKIAchBgsgAUEAOgDAASABQcEBaiEFQQIhBCABLQDBAQ0BDAILAkAgAS0A +UEECRg0AIAEtAMABRQ0AIAEQxCkLIAFBADoAwAEgAUHBAWohBSABLQDBAUUNAQsgAUHIAWoQ+0AL +IAVBADoAACAAIAk6AAAgACAGNgIIIAAgCjYCBCAAIAMvAewCOwABIABBA2ogA0HuAmotAAA6AAAg +AEEMaiADQbACakE8EM1PGiAAIAQ6AFAgACARNwNIIAAgBzYCXCAAIAI2AlggACADKAKoAjYAUSAA +QdQAaiADKACrAjYAAEEBCzoAwwEgA0GgCWokAA8LIAMgAygC3AY2ArAEQbivwwBBKyADQbAEakGo +r8MAQez9wgAQiRgAC8ckAgl/AX4jAEEQayIIJAACQAJAAkACQAJAAkACQCAAQfUBTwRAIABBzf97 +Tw0HIABBC2oiAEF4cSEFQZSa2wAoAgAiCUUNBEEAIAVrIQMCf0EAIAVBgAJJDQAaQR8gBUH///8H +Sw0AGiAFQQYgAEEIdmciAGt2QQFxIABBAXRrQT5qCyIHQQJ0QfiW2wBqKAIAIgFFBEBBACEADAIL +QQAhACAFQRkgB0EBdmtBACAHQR9HG3QhBANAAkAgASgCBEF4cSIGIAVJDQAgBiAFayIGIANPDQAg +ASECIAYiAw0AQQAhAyABIQAMBAsgAUEUaigCACIGIAAgBiABIARBHXZBBHFqQRBqKAIAIgFHGyAA +IAYbIQAgBEEBdCEEIAENAAsMAQtBkJrbACgCACICQRAgAEELakF4cSAAQQtJGyIFQQN2IgB2IgFB +A3EEQAJAIAFBf3NBAXEgAGoiAUEDdCIAQYiY2wBqIgQgAEGQmNsAaigCACIAKAIIIgNHBEAgAyAE +NgIMIAQgAzYCCAwBC0GQmtsAIAJBfiABd3E2AgALIABBCGohAyAAIAFBA3QiAUEDcjYCBCAAIAFq +IgAgACgCBEEBcjYCBAwHCyAFQZia2wAoAgBNDQMCQAJAIAFFBEBBlJrbACgCACIARQ0GIABoQQJ0 +QfiW2wBqKAIAIgEoAgRBeHEgBWshAyABIQIDQAJAIAEoAhAiAA0AIAFBFGooAgAiAA0AIAIoAhgh +BwJAAkAgAiACKAIMIgBGBEAgAkEUQRAgAkEUaiIAKAIAIgQbaigCACIBDQFBACEADAILIAIoAggi +ASAANgIMIAAgATYCCAwBCyAAIAJBEGogBBshBANAIAQhBiABIgBBFGoiASAAQRBqIAEoAgAiARsh +BCAAQRRBECABG2ooAgAiAQ0ACyAGQQA2AgALIAdFDQQgAiACKAIcQQJ0QfiW2wBqIgEoAgBHBEAg +B0EQQRQgBygCECACRhtqIAA2AgAgAEUNBQwECyABIAA2AgAgAA0DQZSa2wBBlJrbACgCAEF+IAIo +Ahx3cTYCAAwECyAAKAIEQXhxIAVrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAALAAsCQEEC +IAB0IgRBACAEa3IgASAAdHFoIgFBA3QiAEGImNsAaiIEIABBkJjbAGooAgAiACgCCCIDRwRAIAMg +BDYCDCAEIAM2AggMAQtBkJrbACACQX4gAXdxNgIACyAAIAVBA3I2AgQgACAFaiIGIAFBA3QiASAF +ayIEQQFyNgIEIAAgAWogBDYCAEGYmtsAKAIAIgMEQCADQXhxQYiY2wBqIQFBoJrbACgCACECAn9B +kJrbACgCACIFQQEgA0EDdnQiA3FFBEBBkJrbACADIAVyNgIAIAEMAQsgASgCCAshAyABIAI2Aggg +AyACNgIMIAIgATYCDCACIAM2AggLIABBCGohA0GgmtsAIAY2AgBBmJrbACAENgIADAgLIAAgBzYC +GCACKAIQIgEEQCAAIAE2AhAgASAANgIYCyACQRRqKAIAIgFFDQAgAEEUaiABNgIAIAEgADYCGAsC +QAJAIANBEE8EQCACIAVBA3I2AgQgAiAFaiIEIANBAXI2AgQgAyAEaiADNgIAQZia2wAoAgAiBkUN +ASAGQXhxQYiY2wBqIQBBoJrbACgCACEBAn9BkJrbACgCACIFQQEgBkEDdnQiBnFFBEBBkJrbACAF +IAZyNgIAIAAMAQsgACgCCAshBiAAIAE2AgggBiABNgIMIAEgADYCDCABIAY2AggMAQsgAiADIAVq +IgBBA3I2AgQgACACaiIAIAAoAgRBAXI2AgQMAQtBoJrbACAENgIAQZia2wAgAzYCAAsgAkEIaiED +DAYLIAAgAnJFBEBBACECQQIgB3QiAEEAIABrciAJcSIARQ0DIABoQQJ0QfiW2wBqKAIAIQALIABF +DQELA0AgACACIAAoAgRBeHEiBCAFayIGIANJIgcbIQkgACgCECIBRQRAIABBFGooAgAhAQsgAiAJ +IAQgBUkiABshAiADIAYgAyAHGyAAGyEDIAEiAA0ACwsgAkUNACAFQZia2wAoAgAiAE0gAyAAIAVr +T3ENACACKAIYIQcCQAJAIAIgAigCDCIARgRAIAJBFEEQIAJBFGoiACgCACIEG2ooAgAiAQ0BQQAh +AAwCCyACKAIIIgEgADYCDCAAIAE2AggMAQsgACACQRBqIAQbIQQDQCAEIQYgASIAQRRqIgEgAEEQ +aiABKAIAIgEbIQQgAEEUQRAgARtqKAIAIgENAAsgBkEANgIACyAHRQ0CIAIgAigCHEECdEH4ltsA +aiIBKAIARwRAIAdBEEEUIAcoAhAgAkYbaiAANgIAIABFDQMMAgsgASAANgIAIAANAUGUmtsAQZSa +2wAoAgBBfiACKAIcd3E2AgAMAgsCQAJAAkACQAJAIAVBmJrbACgCACIBSwRAIAVBnJrbACgCACIA +TwRAIAVBr4AEakGAgHxxIgJBEHZAACEAIAhBBGoiAUEANgIIIAFBACACQYCAfHEgAEF/RiICGzYC +BCABQQAgAEEQdCACGzYCACAIKAIEIgFFBEBBACEDDAoLIAgoAgwhBkGomtsAIAgoAggiA0GomtsA +KAIAaiIANgIAQaya2wBBrJrbACgCACICIAAgACACSRs2AgACQAJAQaSa2wAoAgAiAgRAQfiX2wAh +AANAIAEgACgCACIEIAAoAgQiB2pGDQIgACgCCCIADQALDAILQbSa2wAoAgAiAEEAIAAgAU0bRQRA +QbSa2wAgATYCAAtBuJrbAEH/HzYCAEGEmNsAIAY2AgBB/JfbACADNgIAQfiX2wAgATYCAEGUmNsA +QYiY2wA2AgBBnJjbAEGQmNsANgIAQZCY2wBBiJjbADYCAEGkmNsAQZiY2wA2AgBBmJjbAEGQmNsA +NgIAQayY2wBBoJjbADYCAEGgmNsAQZiY2wA2AgBBtJjbAEGomNsANgIAQaiY2wBBoJjbADYCAEG8 +mNsAQbCY2wA2AgBBsJjbAEGomNsANgIAQcSY2wBBuJjbADYCAEG4mNsAQbCY2wA2AgBBzJjbAEHA +mNsANgIAQcCY2wBBuJjbADYCAEHUmNsAQciY2wA2AgBByJjbAEHAmNsANgIAQdCY2wBByJjbADYC +AEHcmNsAQdCY2wA2AgBB2JjbAEHQmNsANgIAQeSY2wBB2JjbADYCAEHgmNsAQdiY2wA2AgBB7Jjb +AEHgmNsANgIAQeiY2wBB4JjbADYCAEH0mNsAQeiY2wA2AgBB8JjbAEHomNsANgIAQfyY2wBB8Jjb +ADYCAEH4mNsAQfCY2wA2AgBBhJnbAEH4mNsANgIAQYCZ2wBB+JjbADYCAEGMmdsAQYCZ2wA2AgBB +iJnbAEGAmdsANgIAQZSZ2wBBiJnbADYCAEGcmdsAQZCZ2wA2AgBBkJnbAEGImdsANgIAQaSZ2wBB +mJnbADYCAEGYmdsAQZCZ2wA2AgBBrJnbAEGgmdsANgIAQaCZ2wBBmJnbADYCAEG0mdsAQaiZ2wA2 +AgBBqJnbAEGgmdsANgIAQbyZ2wBBsJnbADYCAEGwmdsAQaiZ2wA2AgBBxJnbAEG4mdsANgIAQbiZ +2wBBsJnbADYCAEHMmdsAQcCZ2wA2AgBBwJnbAEG4mdsANgIAQdSZ2wBByJnbADYCAEHImdsAQcCZ +2wA2AgBB3JnbAEHQmdsANgIAQdCZ2wBByJnbADYCAEHkmdsAQdiZ2wA2AgBB2JnbAEHQmdsANgIA +QeyZ2wBB4JnbADYCAEHgmdsAQdiZ2wA2AgBB9JnbAEHomdsANgIAQeiZ2wBB4JnbADYCAEH8mdsA +QfCZ2wA2AgBB8JnbAEHomdsANgIAQYSa2wBB+JnbADYCAEH4mdsAQfCZ2wA2AgBBjJrbAEGAmtsA +NgIAQYCa2wBB+JnbADYCAEGkmtsAIAFBD2pBeHEiAEEIayICNgIAQYia2wBBgJrbADYCAEGcmtsA +IANBKGsiBCABIABrakEIaiIANgIAIAIgAEEBcjYCBCABIARqQSg2AgRBsJrbAEGAgIABNgIADAgL +IAIgBEkgASACTXINACAAKAIMIgRBAXENACAEQQF2IAZGDQMLQbSa2wBBtJrbACgCACIAIAEgACAB +SRs2AgAgASADaiEEQfiX2wAhAAJAAkADQCAEIAAoAgBHBEAgACgCCCIADQEMAgsLIAAoAgwiB0EB +cQ0AIAdBAXYgBkYNAQtB+JfbACEAA0ACQCACIAAoAgAiBE8EQCAEIAAoAgRqIgcgAksNAQsgACgC +CCEADAELC0GkmtsAIAFBD2pBeHEiAEEIayIENgIAQZya2wAgA0EoayIJIAEgAGtqQQhqIgA2AgAg +BCAAQQFyNgIEIAEgCWpBKDYCBEGwmtsAQYCAgAE2AgAgAiAHQSBrQXhxQQhrIgAgACACQRBqSRsi +BEEbNgIEQfiX2wApAgAhCiAEQRBqQYCY2wApAgA3AgAgBCAKNwIIQYSY2wAgBjYCAEH8l9sAIAM2 +AgBB+JfbACABNgIAQYCY2wAgBEEIajYCACAEQRxqIQADQCAAQQc2AgAgAEEEaiIAIAdJDQALIAIg +BEYNByAEIAQoAgRBfnE2AgQgAiAEIAJrIgBBAXI2AgQgBCAANgIAIABBgAJPBEAgAiAAELEKDAgL +IABBeHFBiJjbAGohAQJ/QZCa2wAoAgAiBEEBIABBA3Z0IgBxRQRAQZCa2wAgACAEcjYCACABDAEL +IAEoAggLIQAgASACNgIIIAAgAjYCDCACIAE2AgwgAiAANgIIDAcLIAAgATYCACAAIAAoAgQgA2o2 +AgQgAUEPakF4cUEIayICIAVBA3I2AgQgBEEPakF4cUEIayIDIAIgBWoiAGshBSADQaSa2wAoAgBG +DQMgA0GgmtsAKAIARg0EIAMoAgQiAUEDcUEBRgRAIAMgAUF4cSIBEM0IIAEgBWohBSABIANqIgMo +AgQhAQsgAyABQX5xNgIEIAAgBUEBcjYCBCAAIAVqIAU2AgAgBUGAAk8EQCAAIAUQsQoMBgsgBUF4 +cUGImNsAaiEBAn9BkJrbACgCACIEQQEgBUEDdnQiA3FFBEBBkJrbACADIARyNgIAIAEMAQsgASgC +CAshBCABIAA2AgggBCAANgIMIAAgATYCDCAAIAQ2AggMBQtBnJrbACAAIAVrIgE2AgBBpJrbAEGk +mtsAKAIAIgAgBWoiAjYCACACIAFBAXI2AgQgACAFQQNyNgIEIABBCGohAwwIC0GgmtsAKAIAIQAC +QCABIAVrIgJBD00EQEGgmtsAQQA2AgBBmJrbAEEANgIAIAAgAUEDcjYCBCAAIAFqIgEgASgCBEEB +cjYCBAwBC0GYmtsAIAI2AgBBoJrbACAAIAVqIgQ2AgAgBCACQQFyNgIEIAAgAWogAjYCACAAIAVB +A3I2AgQLIABBCGohAwwHCyAAIAMgB2o2AgRBpJrbAEGkmtsAKAIAIgBBD2pBeHEiAUEIayICNgIA +QZya2wBBnJrbACgCACADaiIEIAAgAWtqQQhqIgE2AgAgAiABQQFyNgIEIAAgBGpBKDYCBEGwmtsA +QYCAgAE2AgAMAwtBpJrbACAANgIAQZya2wBBnJrbACgCACAFaiIBNgIAIAAgAUEBcjYCBAwBC0Gg +mtsAIAA2AgBBmJrbAEGYmtsAKAIAIAVqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAAsgAkEIaiED +DAMLQQAhA0GcmtsAKAIAIgAgBU0NAkGcmtsAIAAgBWsiATYCAEGkmtsAQaSa2wAoAgAiACAFaiIC +NgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEDDAILIAAgBzYCGCACKAIQIgEEQCAAIAE2AhAg +ASAANgIYCyACQRRqKAIAIgFFDQAgAEEUaiABNgIAIAEgADYCGAsCQCADQRBPBEAgAiAFQQNyNgIE +IAIgBWoiACADQQFyNgIEIAAgA2ogAzYCACADQYACTwRAIAAgAxCxCgwCCyADQXhxQYiY2wBqIQEC +f0GQmtsAKAIAIgRBASADQQN2dCIDcUUEQEGQmtsAIAMgBHI2AgAgAQwBCyABKAIICyEEIAEgADYC +CCAEIAA2AgwgACABNgIMIAAgBDYCCAwBCyACIAMgBWoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYC +BAsgAkEIaiEDCyAIQRBqJAAgAwvmNAIdfwN+IwBBwAtrIgIkACAAAn8CQAJ/AkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0A+ARBAWsOAw8CAQALIAAg +AEG4AmpBuAIQzU8aCwJAAkACQAJAAkACQCAALQCwAkEBaw4DDQYAAQsgAEEYaiEXAkAgAEGUAmoi +GC0AAEEBaw4DDAYDAAsgAEEcaigCACEIIABBkAJqKAIAIQYgAEGMAmooAgAhECAAQYgCaigCACEE +IAAoAhghCgwBCyACQdAAaiAAKAKYAhCOLyACKAJQIQQgACACKAJUNgIEIAAgBDYCACAAIAAoApwC +NgKsAiACQcgAaiAAKAKgAhCOLyACKAJIIQYgAEEMaiACKAJMNgIAIAAgBjYCCCACQUBrIAAoAqQC +IAAoAqgCEMotIAIoAkAhCiACKAJEIQggAEGUAmoiGEEAOgAAIABBkAJqIAY2AgAgAEGMAmogAEGs +AmoiEDYCACAAQYgCaiAENgIAIABBHGogCDYCACAAIAo2AhggAEEUaiAINgIAIAAgCjYCECAAQRhq +IRcLIAJBoAtqIgUgEBDcKCACQeACaiAFELUXIAItAOACDQsgAkHeAGogAi0A4wIiBToAACACQcAI +aiACQfACaikCACIfNwMAIAJByAhqIAJB+AJqKQIAIiA3AwAgAkHQCGogAkGAA2otAAAiBzoAACAC +IAIvAOECIgM7AVwgAiACQegCaikCACIhNwO4CCACQeQCaigCACEJIABBImogBToAACAAQSBqIhQg +AzsAACAAIAk2ACMgACAhNwAnIABBL2ogHzcAACAAQTdqICA3AAAgAEE/aiAHOgAAIAYoAgQhECAG +KAIAIREgAkHgAmogCiAIEPoSIAIoAuACIgYEQCAAIAIoAuQCIgg2AkQgACAGNgJAIABBgAJqIhlB +ADoAACAAQfQBaiAUNgIAIABB8AFqIAQ2AgAgAEHUAGogCDYCACAAQdAAaiAGNgIAIABBzABqIBA2 +AgAgAEHIAGoiGiARNgIADAILIAAgAigC5AIiATYCREEAIQQgAEEANgJAIAEQ5hAhCAwYCyAAQcgA +aiEaAkAgAEGAAmoiGS0AAEEBaw4DDwMCAAsgAEHUAGooAgAhCCAAQdAAaigCACEGIABBzABqKAIA +IRAgAEH0AWooAgAhFCAAQfABaigCACEEIAAoAkghEQsgAEH4AWoiBSAENgIAIABB/AFqIBQgESAQ +EOIeIgo2AgAgAEH8AGoiFEEAOgAAIABB7ABqIAg2AgAgAEHoAGogBjYCACAAQeQAaiAQNgIAIABB +4ABqIBE2AgAgAEHcAGogCjYCACAAQdgAaiIbIAUoAgAiBDYCAAwDCyAAQdgAaiEbIABB/ABqIhQt +AABBAWsOBAsAAwUBCwALIABB7ABqKAIAIQggAEHoAGooAgAhBiAAQeQAaigCACEQIABB4ABqKAIA +IREgAEHcAGooAgAhCiAAKAJYIQQLIABB+ABqIgUgEDYCACAAQfQAaiIHIBE2AgAgAEHwAGogBDYC +ACACQThqIAQQ3EYgAigCOCEQIAIoAjwhESAAQZwBakEAOgAAIABBmAFqIAg2AgAgAEGUAWogBjYC +ACAAQZABaiAFKAIAIhw2AgAgAEGMAWogBygCACIdNgIAIABBiAFqIBE2AgAgAEGEAWogEDYCACAA +QYABaiAKNgIADAELIABBnAFqLQAADQYgAEGYAWooAgAhCCAAQZQBaigCACEGIABBkAFqKAIAIRwg +AEGMAWooAgAhHSAAQYgBaigCACERIABBhAFqKAIAIRAgAEGAAWooAgAhCgsgAiAINgKQCCACIAY2 +AowIIAJBuAhqIRUgAkGMCGoiBCgCACEGIAQoAgQhBCMAQeAAayIOJAAgDkEIaiIFIAYgBBCnOSAO +QSBqIgYgBRDJLSAOQdQAaiEWIwBBQGoiDCQAIAxBDGohEkEAIQRBACEJIwBB0ABrIgMkACADQThq +IAYQvBYCQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8gAy0AOEUEQCADLQA5RQRAIANBBTYC +DCAGIANBDGoQgDEMAgsgAy0AOiIFQdsARg0CIAVB+wBGDQMgBiADQc8AakHkvsAAEIYFIQQMDgsg +AygCPAshBCASQYCAgIB4NgIAIBIgBDYCBAwNCyAGIAYtACRBAWsiBDoAJCAEQf8BcQRAIAYQvkEg +AyAGNgJEIANBOGogBhC8FiADLQA4DQMgAy0AOUUEQCADQQI2AgwgBiADQQxqEIAxIQQMCQsCQCAD +LQA6Qd0ARwRAIANBADoASCADQQxqIAYQmR0gAygCDEUNASADKAIQIQQMCgtBAEHAj8AAQayGwAAQ +3hchBAwJCyADIAMoAhAiCTYCLCADIANBFGooAgAiEzYCMCADQQxqIANBxABqEPYHAn8gAygCDCIF +QYGAgIB4RgRAIAMoAhAMAQsgBUGAgICAeEcNA0EBQcCPwABBrIbAABDeFwshBCADQSxqEJBFDAgL +IANBGDYCDCAGIANBDGoQgDEMBgsgBiAGLQAkQQFrIgU6ACQgBUH/AXFFDQQgBhC+QSADQQE6ACgg +AyAGNgIkIANBADYCLCADQYCAgIB4NgI4IANBMGohHiAGIQUDQAJAIANBxABqIAUQvBYCQAJAAkAg +Ay0ARA0AAn8gAy0ARUUEQCADQQM2AgwgBSADQQxqEIAxDAELAkACQAJAAkAgAy0ARiITQSxHBEAg +E0H9AEcNAUEAIQVBAyEPDAgLIAMtACgNASAFEL5BIANBDGogBRC8FiADLQAMBEAgAygCEAwFCyAD +LQANRQ0GIAMtAA4hEwwCCyADLQAoRQ0CCyADQQA6ACgLAkAgE0H/AXEiB0EiRwRAIAdB/QBGDQEg +AyALNgI0IAMgDTYCMCADIAk2AiwgA0ERNgIMIAUgA0EMahCAMSEEQQEhDwwHCyAFEL5BIAVBADYC +CCADQQxqIAVBDGogBRC7CCADKAIQIQcgAygCDEECRgRAQQEhBSAHIQQMBgsgA0HEAGohBQJAIAcg +AygCFCITQfLVxQBBCRCAPEUEQCAHIBNB9tfFAEENEIA8RQRAIAVBAjoAAQwCCyAFQQE6AAEMAQsg +BUEAOgABCyAFQQA6AAAgAy0ARA0DQQAhBSADLQBFIQ8MBQsgAyALNgI0IAMgDTYCMCADIAk2Aiwg +A0EVNgIMIAUgA0EMahCAMSEEQQEhDwwFCyADQQg2AgwgBSADQQxqEIAxCyEEQQEhBQwCC0EBIQUg +AygCSCEEDAELIAMgCzYCNCADIA02AjAgAyAJNgIsIANBBTYCDCAFIANBDGoQgDEhBEEBIQ8MAQsC +QAJAAkACQAJAAkAgBUUEQCAPDgQCAwEEAQsgAyALNgI0IAMgDTYCMCADIAk2AixBASEPDAYLIANB +JGoQrD8iBUUNBCADIAs2AjQgAyANNgIwIAMgCTYCLEEBIQ8gBSEEDAULIAlFDQIgAyALNgI0IAMg +DTYCMEEBIQkgA0EBNgIsQYyPwABBCRDxHyEEQQEhDwwECyADKAI4QYCAgIB4RwRAIAMgCzYCNCAD +IA02AjAgAyAJNgIsQQEhD0GVj8AAQQ0Q8R8hBAwECyADQQxqIANBJGoQnTkgAygCDCIFQYCAgIB4 +RwRAIAMpAhAhHyADQThqEPtAIAMgHzcCPCADIAU2AjgMAwsgAyALNgI0IAMgDTYCMCADIAk2Aiwg +AygCECEEQQEhDwwDCyADIAs2AjQgAyANNgIwIAMgCTYCLCAJRSEPAkAgCQ0AIwBBIGsiBCQAIARB +CGpBjI/AAEEJEIFPIANBDGoiBQJ/IAQoAggiB0GBgICAeEcEQCAEIAQpAgw3AhggBCAHNgIUIAQg +BEEUahCfGCAFIAQpAwA3AgRBAAwBCyAFIAQoAgw2AgRBAQs2AgAgBEEgaiQAIAMoAgxFBEAgA0EU +aigCACELIAMoAhAhDQwBCyADKAIQIQQMAwsgAyALNgJIIAMgDTYCRCADKAI4IgVBgICAgHhGBEAg +A0EMakGVj8AAQQ0Qj00gAygCDCIFQYCAgIB4RwRAIAMoAhQhCSADKAIQIQQMCQsgAygCECEEIANB +xABqEJBFDAMLIAMoAkAhCSADKAI8IQQMBwsCQAJ/IAMoAiQiBRDnFiIHBEAgAyALNgI0IAMgDTYC +MCADQQA2AiwgBwwBCyADQQxqIAUQmR0gAygCDEUNASADIAs2AjQgAyANNgIwIANBADYCLCADKAIQ +CyEEQQEhD0EAIQkMAgsgAygCFCELIAMoAhAhDUEBIQkLIAMoAiQhBQwBCwsgAygCOEGAgICAeEYN +AiADQThqEIg/DAILIAMoAhQhCyADKAIQIQQMBgsgAygCPCEEDAQLIAlBAEcgD3EEQCAeEJBFC0GA +gICAeCEFCyAGIAYtACRBAWo6ACQgAyAGEI0TIgc2AiAgAyALNgIcIAMgDTYCGCADIAk2AhQgAyAE +NgIQIAMgBTYCDAJAIAVBgICAgHhHBEAgBw0BIANBCGogA0EUaiIHQQhqKAIANgIAIAMgBykCADcD +AAwHCyAHRQ0FIANBIGoQ3x0MBQsgA0EMahC9R0GAgICAeCEFIAchBAwFCyADQRg2AgwgBiADQQxq +EIAxCyEEIBJBgICAgHg2AgAgEiAENgIEDAULQYCAgIB4IQULIAYgBi0AJEEBajoAJCADIAYQnwwi +BzYCICADIBM2AhwgAyAJNgIYIAMgCzYCFCADIAQ2AhAgAyAFNgIMAkAgBUGAgICAeEYEQCAHDQEM +AgsgB0UEQCADQQhqIANBFGoiB0EIaigCADYCACADIAcpAgA3AwAMAwsgA0EMahC9R0GAgICAeCEF +IAchBAwCCyADQSBqEN8dC0GAgICAeCEFCyAFQYCAgIB4Rg0AIBIgAykDADcCCCASIAQ2AgQgEiAF +NgIAIBJBEGogA0EIaigCADYCAAwBCyAGIAQQvFIhBCASQYCAgIB4NgIAIBIgBDYCBAsgA0HQAGok +AAJAIAwoAgxBgICAgHhHBEAgDEEwaiAMQRxqKAIANgIAIAxBKGogDEEUaikCADcDACAMIAwpAgw3 +AyAgDEE0aiEEAkAgDEEgaiIGKAIMRQRAIAQgBikCADcCACAEQQhqIAZBCGooAgA2AgAMAQtBjOTW +AEEpEPgRIQUgBEGAgICAeDYCACAEIAU2AgQgBkEMahD6PiAGEIg/CyAMKAI0QYCAgIB4RwRAIBYg +DCkCNDcCACAWQQhqIAxBPGooAgA2AgAMAgsgDCgCOBDaCyEEIBZBgICAgHg2AgAgFiAENgIEDAEL +IBYgDCgCEDYCBCAWQYCAgIB4NgIACyAMQUBrJAACQCAOKAJUQYCAgIB4RwRAIA5B0ABqIgQgDkHc +AGooAgA2AgAgDiAOKQJUNwNIIA5BIGoQ1SMiBkUEQCAVIA4pA0g3AgAgFUEIaiAEKAIANgIADAIL +IBVBgICAgHg2AgAgFSAGNgIEIA5ByABqEIg/DAELIBUgDigCWDYCBCAVQYCAgIB4NgIACyAOQSBq +EIg/IA5B4ABqJAAgAigCuAgiBkGAgICAeEYNBCACKAK8CCEEIAIgAigCwAgiBTYCnAggAiAENgKY +CCACIAY2ApQIIAJBuAhqIAQgBSAKQSAQgkcgAigCuAgiBkECRwRAIAJBqAhqIgQgAkHMCGopAgA3 +AwAgAkGwCGoiBSACQdQIaiIHKAIANgIAIAIgAikCxAg3A6AIIAIpArwIIR8gAkGAA2ogAkHYCGpB +uAIQzU8aIAJB9AJqIAQpAwA3AgAgAkH8AmogBSgCADYCACACIB83AuQCIAIgBjYC4AIgAiACKQOg +CDcC7AIgAkG4CGogAkHgAmogECARIB0gHBDUDyACQagLaiAHKQIANwMAIAJBsAtqIAJB3AhqKQIA +NwMAIAJBuAtqIAJB5AhqKAIANgIAIAJBmAtqIAJB8AhqKQMANwMAIAIgAikCzAg3A6ALIAIgAikD +6Ag3A5ALIAIoAsgIIQggAigCxAghBCACKALACCEGIAIpA7gIIR8gAkGUCGoQiD8gAkGMCGoQ+j4M +CwsgAkGoC2ogAkHMCGopAgA3AwAgAkGwC2ogAkHUCGooAgA2AgAgAiACQcQIaikCADcDoAsgAigC +wAghCCACQZQIahCIP0EAIQYMCQsgAEGIAWooAgAhBiAAQYQBaigCACEEDAoLQbDDxABBI0HAh8UA +EOYrAAtBsMPEAEEjQbCHxQAQ5isACyACQagLaiACQewCaigCADYCACACIAIpAuQCNwOgC0HQh8UA +QRAQDiEIIAJBoAtqEIg/DAsLIAIoArwIIQRBAiEGDAQLQbDDxABBI0GEzMQAEOYrAAtBsMPEAEEj +QfDWxAAQ5isAC0Gww8QAQSNBvMjEABDmKwALQbDDxABBI0G48sQAEOYrAAsgAkGMCGoQ+j5CAiEf +CyAAQQE6AJwBIAJBqAJqIgogAkG4C2ooAgA2AgAgAkGgAmoiBSACQbALaikDADcDACACQZgCaiIH +IAJBqAtqKQMANwMAIAJBiAJqIgMgAkGYC2opAwA3AwAgAiACKQOgCzcDkAIgAiACKQOQCzcDgAIg +H0IDUQ0BIAJB2AJqIAooAgA2AgAgAkHQAmogBSkDADcDACACQcgCaiAHKQMANwMAIAJBuAJqIAMp +AwA3AwAgAiACKQOQAjcDwAIgAiACKQOAAjcDsAIgAEGAAWoQoUMgH0ICUQ0CIABBwAFqIgogCDYC +ACAAQbwBaiAENgIAIABBuAFqIAY2AgAgAEGwAWoiBiAfNwMAIABBxAFqIAIpA8ACNwIAIABB4AFq +IAIpA7ACNwMAIABBzAFqIAJByAJqKQMANwIAIABB1AFqIAJB0AJqKQMANwIAIABB3AFqIAJB2AJq +KAIANgIAIABB6AFqIAJBuAJqKQMANwMAIABBkAFqIAoQgRUgAkEwaiAAQfAAaigCABDcRiACKAI0 +IQUgAigCMCEHIAJB4AJqIgQQmAogAkG4CGoiAyAHIAUgBBCxHCAAIAMQhSciBTYCgAEgAkEoaiAF +QQhqEOU1IAIoAighBSACKAIsIQcgBCAGQcAAEM1PGiACQSBqIAUgBCAHKAIkEQMAIAIoAiAhBCAA +IAIoAiQiBjYCiAEgACAENgKEAQsgAkHgAmogBCABIAYoAgwRAwAgAi0A4AIiAUEMRg0FIAJB2Adq +IgQgAkHwAmoiBikCADcDACACQeAHaiIFIAJB+AJqIgcpAgA3AwAgAkHoB2oiAyACQYADaigCADYC +ACACIAIpAugCNwPQByACKALkAiEIIAIvAOECIAItAOMCIABBhAFqEJk2IAFBC0YEQCAAQYABaigC +ACEBIABB+ABqKAIAIQQgAEH0AGooAgAhCCAHIABBqAFqKQMANwMAIAYgAEGgAWopAwA3AwAgAkHo +AmogAEGYAWopAwA3AwAgAiAAQZABaikDADcD4AIgCCAEIAEgAkHgAmogAEHwAGooAgAQ+E0QhzdB +ABCFAyEEQQQhBgwDCyACQYgIaiADKAIANgIAIAJBgAhqIAUpAwA3AwAgAkH4B2ogBCkDADcDACAC +IAIpA9AHNwPwByAAQYABahDaOSAAQZABahCAQEEQdHJBCHQgAXIhBEEDIQYMAgtBAwwFCyACQYgI +aiACQdgCaigCADYCACACQYAIaiACQdACaikDADcDACACQfgHaiACQcgCaikDADcDACACIAIpA8AC +NwPwBwsgAkG4AWoiCiACQYgIaigCADYCACACQbABaiIBIAJBgAhqKQMANwMAIAJBqAFqIgUgAkH4 +B2opAwA3AwAgAiACKQPwBzcDoAEgFEEBOgAAIAZBBUYNBCACQdgBaiAKKAIANgIAIAJB0AFqIAEp +AwA3AwAgAkHIAWogBSkDADcDACACIAIpA6ABNwPAASAbEOosAkAgBkEERgRAIABB+AFqKAIAEJA6 +IQgMAQsgAkH4AWogAkHYAWooAgA2AgAgAkHwAWogAkHQAWopAwA3AwAgAkHoAWogAkHIAWopAwA3 +AwAgAiACKQPAATcD4AELIABB/AFqEItKIABBAToAgAIgAkH4AGogAkH4AWooAgAiATYCACACQfAA +aiACQfABaikDACIfNwMAIAJB6ABqIAJB6AFqKQMAIiA3AwAgAkGIAWoiBSAgNwMAIAJBkAFqIgcg +HzcDACACQZgBaiIDIAE2AgAgAiACKQPgASIfNwNgIAIgHzcDgAEgGhCpNiAGQQRGDQEgAkGEA2og +AygCADYCACACQfwCaiAHKQMANwIAIAJB9AJqIAUpAwA3AgAgAiACKQOAATcC7AIgAiAINgLoAiAC +IAQ2AuQCIAIgBjYC4AIgAkHgAmoQgw8hCAtBACEECyAAQQE6AJQCIAIgBK0gCK1CIIaENwPgAiAX +EK5AQQAhASACQRhqIgYCfyACQeACaiIEKAIAIgUEQCAFIAQoAgQQsj0QFQwBC0EBIQEgBCgCBAs2 +AgQgBiABNgIAIAIoAhwhCiACKAIYIQQgAEEQahD6PiAAQQxqKAIAIgEgASgCAEEBazYCACAAQawC +ahCWQSAAKAIEIgEgASgCAEEBazYCAEEBDAMLQQQLIQEgFCABOgAACyAZQQM6AAAgGEEDOgAAQQIh +BEEDCzoAsAIgACAEQQJGIgEEf0EDBSAAENwlAkAgBEUEQCACIAo2AqALIAJBgAE2AuACIAJBCGog +AEHwBGogAkHgAmoiBiACQaALaiIEEPsnIAIgAigCCCACKAIMEORBNgK4CAwBCyACIAo2AqALIAJB +gAE2AuACIAJBEGogAEH0BGogAkHgAmoiBiACQaALaiIEEPsnIAIgAigCECACKAIUEORBNgK4CAsg +AkG4CGoQlkEgBhCWQSAEEJZBIABB8ARqEJZBIABB9ARqEJZBQQELOgD4BCACQcALaiQAIAELghsC +DH8BfiMAQbAHayIDJAAgAQJ/AkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQCABLQCsAUEBaw4DEwQAAQsgAUHIAGohDQJAIAFBgAFqIgstAABBAWsOBQkE +AwoMAAsgAUHMAGooAgAhBSABQfgAaigCACEEIAEoAkghBgwBCyABIAEpAwg3AyggAUGAAWoiC0EA +OgAAIAFB+ABqIAEoAqgBIgQ2AgAgAUHMAGogASgCBCIFNgIAIAEgASgCACIGNgJIIAFBMGogAUEQ +aikDADcDACABQThqIAFBGGopAwA3AwAgAUFAayABQSBqKQMANwMAIAFByABqIQ0LIAFBnAFqIgdB +ADoAACABQZABaiAFNgIAIAFBjAFqIAY2AgAgAUGIAWoiCCAENgIAIAFB1ABqIAU2AgAgAUHQAGog +BjYCACABQfwAaiAENgIADAMLIAFBiAFqIQgCQCABQZwBaiIHLQAAQQFrDgMFAQACCyABQZgBaigC +ACEEIAFBlAFqKAIAIQUMAwsACyABQZABaigCACEFIAFBjAFqKAIAIQYgASgCiAEhBAsgA0E4aiAE +KAIAQdwAaigCAEEIahDlNSADQTBqIAMoAjggBiAFIAMoAjwoAlwRBQAgAygCMCEFIAFBmAFqIAMo +AjQiBDYCACABQZQBaiAFNgIACyADQbAGaiAFIAIgBCgCDBEDACADKAKwBiIKQQJGDQkgA0GaBGoi +ByADLQC3BjoAACADQcAEaiIJIANBxAZqKQIANwMAIANByARqIgwgA0HMBmopAgA3AwAgAyADLwC1 +BjsBmAQgAyADKQK8BjcDuAQgAy0AtAYhBSADKAK4BiEEIAMoAtQGIQYgAUGUAWoQmTYgAUEBOgCc +ASADQdYDaiAHLQAAOgAAIANBwANqIgcgCSkDADcDACADQcgDaiIJIAwpAwA3AwAgAyADLwGYBDsB +1AMgAyADKQO4BDcDuAMgCBD1PyAKDQogAUHcAGogAykDuAM3AgAgAUHYAGogBDYCACABQfQAaiAG +NgIAIAFB5ABqIAcpAwA3AgAgAUHsAGogCSkDADcCACADQShqIAFB/ABqIgQoAgAoAgBB3ABqKAIA +QQhqEOU1IAMoAighBSADKAIsIQYgA0EgaiAEKAIAENxGIANBGGogBSADKAIgIAMoAiQgBigCYBEF +ACADKAIYIQUgAUGMAWogAygCHCIENgIAIAEgBTYCiAEMAwtBwMDBAEEjQdSKwgAQ5isAC0HAwMEA +QSNB9InCABDmKwALIAFBjAFqKAIAIQQgAUGIAWooAgAhBQsgA0GwBmogBSACIAQoAgwRAwAgAy0A +sAYiBUEMRg0IIANB9gNqIgggAy0AswY6AAAgA0HgA2oiCSADQcAGaikCADcDACADQegDaiIKIANB +yAZqKQIANwMAIAMgAy8AsQY7AfQDIAMgAykCuAY3A9gDIAMoArQGIQQgAygC0AYhBiABQYgBaiIH +EJk2IAVBC0cNAgJAIARFBEAgB0EANgIADAELIANBwAZqIANB6ANqKQMANwMAIANBuAZqIANB4ANq +KQMANwMAIAMgAykD2AMiDzcDsAYgByADQbAGaiIEQQAgD6cbEMRAIAQQiz4LIANBEGogAUH8AGoo +AgAoAgBB3ABqKAIAQQhqEOU1IANBCGogAygCECABQdAAaigCACABQdQAaigCACADKAIUKAJgEQUA +IAMoAgghBSABQaQBaiADKAIMIgQ2AgAgAUGgAWogBTYCAAwBCyABQaQBaigCACEEIAFBoAFqKAIA +IQULIANBsAZqIAUgAiAEKAIMEQMAIAMtALAGIgVBDEYNASADQZYEaiIIIAMtALMGOgAAIANBgARq +IgQgA0HABmopAgA3AwAgA0GIBGoiByADQcgGaikCADcDACADIAMvALEGOwGUBCADIAMpArgGNwP4 +AyADKAK0BiECIAMoAtAGIQYgAUGgAWoQmTYgBUELRw0CIANB+ARqIAcpAwA3AwAgA0HwBGogBCkD +ADcDACADIAMpA/gDNwPoBCADQbAEaiIEIAFB8ABqKQMANwMAIANBqARqIgUgAUHoAGopAwA3AwAg +A0GgBGoiBiABQeAAaikDADcDACADIAFB2ABqKQMANwOYBCADQbgEaiABQfwAaigCACgCAEEIahCv +GiADQewGaiABQZgBaikCADcCACADQeQGaiABQZABaikCADcCACADQcQGaiAGKQMANwIAIANBzAZq +IAUpAwA3AgAgA0HUBmogBCkDADcCACADQaYFaiADLQC7BDoAACADIAFBiAFqKQIANwLcBiADIAMp +A5gENwK8BiADIAMvALkEOwGkBSADLQC4BCEFIANBmAVqIANB0ARqKQMANwMAIANBkAVqIANByARq +KQMANwMAIANBuAZqIANB5ARqKAIANgIAIAMgAykDwAQ3A4gFIAMgAykC3AQ3A7AGIAMoArwEIQQg +AygC2AQhBiADQagFaiADQbAGakHEABDNTxoMCQsgA0GmBWogCC0AADoAACADQZAFaiAJKQMANwMA +IANBmAVqIAopAwA3AwAgAyADLwH0AzsBpAUgAyADKQPYAzcDiAUMBwtBBQwFCyADQaYFaiAILQAA +OgAAIANBkAVqIAQpAwA3AwAgA0GYBWogBykDADcDACADIAMvAZQEOwGkBSADIAMpA/gDNwOIBSAB +QYgBahCXRSACIQQMBQsgB0EDOgAAQQMMAwtBAiECIANBpgVqIANB1gNqLQAAOgAAIANBkAVqIAcp +AwA3AwAgA0GYBWogCSkDADcDACADIAMvAdQDOwGkBSADIAMpA7gDNwOIBQwEC0HAwMEAQSNBtIrC +ABDmKwALQQQLIQEgCyABOgAADAILIAFB2ABqEJ0/QQIhAgsgA0G+AWoiByADQaYFai0AADoAACAD +QagBaiIIIANBkAVqKQMANwMAIANBsAFqIgkgA0GYBWopAwA3AwAgAyADLwGkBTsBvAEgAyADKQOI +BTcDoAEgA0HcAGogA0GoBWpBxAAQzU8aIANB2ABqIgogA0GABWooAgA2AgAgA0HQAGoiDCADQfgE +aikDADcDACADQcgAaiIOIANB8ARqKQMANwMAIAMgAykD6AQ3A0AgC0EBOgAAIAJBA0cNAQsgAEEE +NgJgQQMMAQsgA0G+AmogBy0AADoAACADQagCaiAIKQMANwMAIANBsAJqIAkpAwA3AwAgAyADLwG8 +ATsBvAIgAyADKQOgATcDoAIgA0HcAWogA0HcAGpBxAAQzU8aIANB2AFqIAooAgA2AgAgA0HQAWog +DCkDADcDACADQcgBaiAOKQMANwMAIAMgAykDQDcDwAEgDRDHKQJAIAJBAkcEQCADQbgFaiADQagC +aikDADcDACADQcAFaiADQbACaikDADcDACADIAU6AKgFIAMgAy8BvAI7AKkFIAMgBDYCrAUgAyAD +KQOgAjcDsAUgAyAGNgLIBSADIANBvgJqLQAAOgCrBSADQcwFaiADQdwBakHEABDNTxogA0GcBmog +A0HIAWopAwA3AgAgA0GkBmogA0HQAWopAwA3AgAgA0GsBmogA0HYAWooAgA2AgAgAyACNgKQBiAD +IAMpA8ABNwKUBiADQbgEaiICIANBqAVqEL1EIANBsAZqIAIgAUEoahCUCCADKAKQByICQQJHBEAg +A0HCAGogAy0AswY6AAAgA0HwBGogA0HABmopAwA3AwAgA0H4BGogA0HIBmopAwA3AwAgAyADLwCx +BjsBQCADIAMpA7gGNwPoBCADLQCwBiEFIAMoArQGIQQgAygC0AYhBiADQdwAaiADQdQGakE8EM1P +GiADQbAEaiADQawHaigCADYCACADQagEaiADQaQHaikCADcDACADQaAEaiADQZwHaikCADcDACAD +IAMpApQHNwOYBAsgA0HYBWoQnT8gA0GoBWoQzzAgA0H4BWoQl0UgA0GQBmoQmEEgA0G2A2ogA0HC +AGotAAA6AAAgA0GgA2ogA0HwBGopAwA3AwAgA0GoA2ogA0H4BGopAwA3AwAgAyADLwFAOwG0AyAD +IAMpA+gENwOYAyADQdwCaiADQdwAakE8EM1PGiADQdgCaiADQbAEaigCADYCACADQdACaiADQagE +aikDADcDACADQcgCaiADQaAEaikDADcDACADIAMpA5gENwPAAgwBCyADQbYDaiADQb4Cai0AADoA +ACADQaADaiADQagCaikDADcDACADQagDaiADQbACaikDADcDACADIAMvAbwCOwG0AyADIAMpA6AC +NwOYA0EDIQILIAAgBToAACAAIAMvAbQDOwABIAAgBDYCBCAAIAMpA5gDNwMIIAAgBjYCICAAQQNq +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 +ADoARSAMIBU2AkAgDCAkNgI8IAwgCjYCOCAMIBc2AjQgDCALNgIwIAwgFjYCLCAMIAE2AiggDEHF +AGohHwsgDCABNgIgIAxBADoARCAMQSRqIBY2AgBBxJPbACgCAEECSw0BQez+2gAQ+z4iAUH/AXFF +DQFBACEWQez+2gAoAgAgARD1LkUNAUHs/toAKAIAIg1BKGooAgAhCSANQSRqKAIAIQcgDSgCHCEB +IAggDUEgaigCACIQBH8gCEEANgLwDyAIIAk2AuwPIAggBzYC6A8gCCAQNgLkD0EBIRYgAQVBAAs2 +AuAPIAhB6ABqIAhB4A9qQaixwgAQ2iwgCCAVQcQAajYCfCAIIBAgFk0Ef0EABSAIIAk2AuwPIAgg +BzYC6A8gCCAQNgLkDyAIIBY2AvAPIBZBAWohFiABCzYC4A8gCEHEEGogCEHgD2pBqLHCABDaLCAI +IBVBNGo2AtgQIAggECAWSwR/IAggCTYC7A8gCCAHNgLoDyAIIBA2AuQPIAggFjYC8A8gFkEBaiEW +IAEFQQALNgLgDyAIQYgRaiAIQeAPakGoscIAENosIAggDEEgajYCuBAgCCAQIBZLBH8gCCAWNgKo +DyAIIAk2AqQPIAggBzYCoA8gCCAQNgKcDyABBUEACzYCmA8gCEHgEGoiASAIQZgPaiIHQaixwgAQ +2iwgCEGMEGpBpMHBADYCACAIQYgQakGwwMEANgIAIAhBgBBqQZSpwgA2AgAgCEH0D2pBzKbCADYC +ACAIQfwPaiAIQbgQajYCACAIQfAPaiAIQdgQajYCACAIQaCawgA2AugPIAggATYChBAgCCAIQYgR +ajYC+A8gCCAIQcQQajYC7A8gCCAIQfwAajYC5A8gCCAIQegAajYC4A8gByANQRxqIAhB4A9qENZB +IAwgDSAHEMQyIAxBAToARCAMKAIgIRYgDCgCJCIBIAwoAghBAkYNAhogDEEAOgBEIAwgDCkDADcD +SCAMQYUBakEAOgAAIAxBgAFqIBU2AgAgDEH8AGogJDYCACAMQfgAaiAKNgIAIAxB9ABqIBc2AgAg +DEHwAGogCzYCACAMQewAaiABNgIAIAxB6ABqIBY2AgAgDEHQAGogDEEIaikDADcDACAMQdgAaiAM +QRBqKQMANwMAIAxB4ABqIAxBGGopAwA3AwAgDEGGAWogCEGAAWpBug0QzU8aCyMAQeAhayIEJAAg +DEHIAGoiBigCCEECRwRAIAZBCGogBhD4JwsgCEHgD2ohGyAEIAY2AogBIAYCfwJAAkACQAJAAn8C +QAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAIAZBPWotAABBAWsOBBoPAAMBCyAGQcQAaigCACEeIAZBQGsoAgAhDgwBCyAGQTxq +QQA6AAAgBEGAAWogBkEwaigCACgCAEEIahC/LCAEQfgAaiAEKAKAASAGKAIgIAZBJGooAgAgBkEo +aigCACAGQSxqKAIAIAQoAoQBKAIsEQoAIAQoAnghDiAGQcQAaiAEKAJ8Ih42AgAgBkFAayAONgIA +CyAEQfADaiAOIAIgHigCDBEDACAELQC4BCILQQRGDRYgBC0A8AMhDiAEQbUBaiAEQfADakEBckEj +EM1PGiAEQZABaiAEQZQEakEkEM1PGiAEQY4BaiIJIARBuwRqLQAAOgAAIAQgBC8AuQQ7AYwBIAZB +QGsiARCZNkEDIQcgC0EDRg0YIAYgDjoAQCAGQTxqQQE6AAAgBkHBAGogBEG1AWpBIxDNTxogBkHk +AGogBEGQAWpBJBDNTxogBkGIAWogCzoAACAGQYkBaiAELwGMATsAACAGQYsBaiAJLQAAOgAAIAtB +AkYNEyAGQQA6ADwgBkGMAWoiEyABQcwAEM1PIQEgBkH5A2oiHkEAOgAAIAZB9ANqIAE2AgAgBkHw +A2ogBkE4aigCACIONgIAIAZB7ANqIAZBNGooAgAiATYCACAGQegDaiAGQTBqKAIAIgc2AgAgBkHY +AWohEgwBCyAGQdgBaiESAkAgBkH5A2oiHi0AAEEBaw4HGQwCMzQDCQALIAZB9ANqKAIAIRMgBkHw +A2ooAgAhDiAGQewDaigCACEBIAZB6ANqKAIAIQcLIAZB5ANqIBM2AgAgBkHgA2ogDjYCACAGQdwD +aiABNgIAIAZB2ANqIAc2AgAgBkH4A2pBADoAACAHKAIAIQEgDikCRCEnIA4pAjQhJSAGQcAEakEA +OgAAIAZBjARqICU3AgAgBkGEBGogJzcCACAGQYAEaiABQQhqNgIACyAEQfADaiAGQYAEaiITIAIQ +nAIgBCgC0AQiCkEERg0SIAQtAPADIQ4gBEGNA2ogBEHwA2pBAXJBIxDNTxogBEHQAmogBEGUBGpB +PBDNTxogBEHIAmoiCyAEQewEaigCADYCACAEQcACaiIJIARB5ARqKQIANwMAIARBuAJqIgEgBEHc +BGopAgA3AwAgBCAEKQLUBDcDsAIgExDxJkEDIQcgCkEDRg0RIAYgDjoA2AEgBkHZAWogBEGNA2pB +IxDNTxogBkH8AWogBEHQAmpBPBDNTxogBkG4AmogCjYCACAGQbwCaiAEKQOwAjcCACAGQcQCaiAB +KQMANwIAIAZBzAJqIAkpAwA3AgAgBkHUAmogCygCADYCACAKQQJGDQMgBkEBOgD4AyAGQdgCaiIi +IBJBgAEQzU8hASAGQbwEaiIOQQA6AAAgBkGEBGogATYCACAGQYgEaiAGQeQDaigCACIHNgIAIAYg +BkHYA2ooAgAiATYCgAQMAQsgBkGABGohEwJAIAZBvARqIg4tAABBAWsOAxcJAgALIAZBiARqKAIA +IQcgBkGEBGooAgAhIiAGKAKABCEBCyAGQZQEaiAHNgIAIAZBkARqICI2AgAgBkGMBGogATYCACAB +KAIAIQkgBEHwAGogBxDbTSAEKAJwIQcgBCgCdCEBIAZBuARqQQA6AAAgBkGgBGogATYCACAGQZwE +aiAHNgIAIAZBmARqIAlBDGo2AgALIARB8ANqIAZBmARqIgEgAhDqAiAEKQPwA1BFDRUgBCgC+AMh +ByAEQdAWaiAEQfwDakE8EM1PGiABEOY/AkACQCAHBEAgBkGUBGooAgAhCSAEIAc2AvADIARB8ANq +IgFBBHIgBEHQFmpBPBDNTxogBEHoAGogARDVPiAEKAJsIQcgBCgCaCAEQeAAaiAJENQ+IAcgBCgC +YCAEKAJkEIA8DQEgBEHwA2oQhQ4LIARBADYCqB0MAQsgBEGoHWogBEHwA2pBwAAQzU8aCyAEQdgA +aiAGQZAEaigCAEEwahCxRiAEIAQpA1g3ArAUIARB0ABqIAZBjARqKAIAEMJEIAQgBCkDUDcC8AMC +QAJAIARBsBRqIARB8ANqEJdBRQRAIAQoAqgdIQcMAQsgBigCkAQQ20AgBCgCqB0hBw0BCyAHRQ0C +IARB8ANqIgEgBEGoHWpBwAAQzU8aIARByABqIAEgBigCkARBMGoQwARBASEHQQIhAQJAAkACQCAE +KAJIQQFrDgIAAQILQQMhBwwBCyAEKAJMIQdBASEBCyAEQfADahCFDgwDC0EAIQEgB0UNAiAEQagd +ahCFDgwCCyAGQQA6APgDQcST2wAoAgBBA0sNK0HI/toAEPs+IgFB/wFxRQ0rQQAhB0HI/toAKAIA +IAEQ9S5FDStByP7aACgCACINQRxqIQogDUEgaigCACILBEAgDUEoaigCACEJIA1BJGooAgAhASAN +KAIcIQcgBEEANgKABCAEIAk2AvwDIAQgATYC+AMgBCALNgL0AwsgBCAHNgLwAyAEQagdaiIHIARB +8ANqIgFB3KXDABDdLCAEQfwDakIANwIAIARBlMnCADYC2BYgBEEBNgL0AyAEQZymwwA2AvADIARB +pMnCADYC+AMgBCABNgLUFiAEIAc2AtAWIARBsBRqIgEgCiAEQdAWahDgQUHI/toAKAIAIAEQxDQM +KwsgBEFAayAGKAKQBEEwahCxRiAEIAQpA0A3ArAUIARBOGogBigCjAQQwkQgBCAEKQM4NwLwA0EC +IQFBAkEAIARBsBRqIARB8ANqEJdBGyEHCyAOQQE6AAAgExD2PyABQQJGDQkgBkH4A2pBADoAACAG +QdgDaigCACEOIAZB4ANqKAIAIRMgBEHIDGoiCSAGQdgCakGAARDNTxogBkGEBGogBzYCACAGQYAE +aiIQIAE2AgAgBkHkA2ooAgAhASAGQYgEaiAJQYABEM1PGiAGQYgFaiAEQfADakHYCBDNTxogBkH0 +DWoiFkEAOgAAIAZB6A1qIAE2AgAgBkHkDWogEzYCACAGQeANaiAONgIADAELIAZBgARqIRACQCAG +QfQNaiIWLQAAQQFrDgMIAwIACyAGQYQEaigCACEHIAZB6A1qKAIAIQEgBkHkDWooAgAhEyAGQeAN +aigCACEOCyAGQfUNakEBOgAAIAZB8A1qIBM2AgAgBkHsDWogDjYCACAGQYgFaiIOIAZBiARqQYAB +EM1PIQogBkGMBmogBzYCACAGQYgGaiILIAYoAoAENgIAQcST2wAoAgBBAksNE0Gk/toAEPs+IgdB +/wFxRQ0TQaT+2gAoAgAgBxD1LkUNE0Gk/toAKAIAIhRBKGooAgAhDSAUQSRqKAIAIQkgFCgCHCEH +IAQgFEEgaigCACIRBH8gBEEANgK4HSAEIA02ArQdIAQgCTYCsB0gBCARNgKsHUEBISEgBwVBAAs2 +AqgdIARB2BFqIARBqB1qQeCnwwAQ3SwgBEG0HWpCADcCACAEQQE2AqwdIARBjKjDADYCqB0gBEGk +ycIANgKwHSAEIBEgIUsEfyAEICE2AsAUIAQgDTYCvBQgBCAJNgK4FCAEIBE2ArQUIAcFQQALNgKw +FCAEQfgOaiIJIARBsBRqIgdB4KfDABDdLCAEQeQWakGUqMMANgIAIARB4BZqIARBqBtqNgIAIARB +lMnCADYC2BYgBCALNgKoGyAEIAk2AtwWIAQgBEGoHWo2AtQWIAQgBEHYEWo2AtAWIAcgFEEcaiAE +QdAWahDyQSAEQZghaiAEQbgUaigCADYCACAEIAQpArAUNwOQIUGk/toAKAIAIARBkCFqEMQ0DBML +IAZBkAZqIRUCQAJAIAZB3A1qIiItAABBAWsOAwYCAQALIAZBlAZqKAIAIRMgBkHQDWooAgAhDiAG +QcwNaigCACEBIAZByA1qKAIAISEgBigCkAYhBwwUCyAGQZgGaiEXAkACQAJAAkAgBkHAB2oiIS0A +AEEBaw4FAgQZAQMACyAGQZwGaigCACETIAZB7AZqKAIAIQ4gBigCmAYhBwwXCyAGQcQHaiEBAkAC +QCAGQZgIaiITLQAAQQFrDgMBBBwACyABKAIAIQ4MGgtB4MbCAEEjQYDywgAQ5isAC0HgxsIAQSNB +gMvCABDmKwALIAZByAdqIQcCQAJAIAZBxA1qIiQtAABBAWsOAwUCAQALIAZB4AdqKAIAIRMgBkHA +DWooAgAhDiAGQeQHaigCAAwbCyAGQegHaiEOIAZBsAhqIg0tAABBAWsOBAIAHB8BCwALIAZBhAhq +KAIAIQEgBkGACGooAgAhEyAGQawIaigCACERIAZBqAhqKAIAISMMGQtB4MbCAEEjQbTJwgAQ5isA +C0HgxsIAQSNBkMvCABDmKwALQeDGwgBBI0GkoMMAEOYrAAtB4MbCAEEjQaSowwAQ5isACyAEIAc6 +ANgRQcST2wAoAgAhAiAHQf8BcUEDRg0JIAJBAUsNCkHg/toAEPs+IgJB/wFxRQ0KQQAhDkHg/toA +KAIAIAIQ9S5FDQpB4P7aACgCACIKQShqKAIAIQkgCkEkaigCACEHIAooAhwhASAEIApBIGooAgAi +CwR/IARBADYCgAQgBCAJNgL8AyAEIAc2AvgDIAQgCzYC9ANBASEOIAEFQQALNgLwAyAEQcgMaiAE +QfADakGMp8MAEN0sIARB/ANqQgA3AgAgBEEBNgL0AyAEQcinwwA2AvADIARBpMnCADYC+ANBACEC +IAsgDksEQCAEIA42AuAWIAQgCTYC3BYgBCAHNgLYFiAEIAs2AtQWIAEhAgsgBCACNgLQFiAEQbAU +aiIBIARB0BZqIgdBjKfDABDdLCAEQbwdakHQp8MANgIAIARBuB1qIARB+A5qNgIAIARBlMnCADYC +sB0gBCABNgK0HSAEIARB8ANqNgKsHSAEIARByAxqNgKoHSAEIARB2BFqNgL4DiAHIApBHGogBEGo +HWoQ8kFB4P7aACgCACAHEMQ0DAoLQQIhBwJAQcST2wAoAgBBAUsNAEH4/toAEPs+IgJB/wFxRQ0A +QQAhDkH4/toAKAIAIAIQ9S5FDQBB+P7aACgCACICQRxqIQogAkEgaigCACILBEAgAkEoaigCACEJ +IAJBJGooAgAhASACKAIcIQ4gBEEANgKABCAEIAk2AvwDIAQgATYC+AMgBCALNgL0AwsgBCAONgLw +AyAEQagdaiIJIARB8ANqIgFB1KzDABDdLCAEQfwDakIANwIAIARBlMnCADYC2BYgBEEBNgL0AyAE +QaStwwA2AvADIARBpMnCADYC+AMgBCABNgLUFiAEIAk2AtAWIARBsBRqIgEgCiAEQdAWahDgQUH4 +/toAKAIAIAEQxDQLDCoLIARB0Q5qIARBjQNqQSMQzU8aDCcLQQMMIwsgG0EEOgBQQQMMKQtB4MbC +AEEjQcSswwAQ5isACyAEQagdaiAEQbUBakEjEM1PGkEOIQIMJgtB4MbCAEEjQcylwwAQ5isAC0Hg +xsIAQSNBxKDDABDmKwALIA5BAzoAAEEGDB0LIAJBA0sNAEHU/toAEPs+IgJB/wFxRQ0AQQAhDkHU +/toAKAIAIAIQ9S5FDQBB1P7aACgCACICQRxqIQsgAkEgaigCACIJBEAgAkEoaigCACEHIAJBJGoo +AgAhASACKAIcIQ4gBEEANgKABCAEIAc2AvwDIAQgATYC+AMgBCAJNgL0AwsgBCAONgLwAyAEQagd +aiIHIARB8ANqIgFBpKbDABDdLCAEQfwDakIANwIAIARBlMnCADYC2BYgBEEBNgL0AyAEQYSnwwA2 +AvADIARBpMnCADYC+AMgBCABNgLUFiAEIAc2AtAWIARBsBRqIgEgCyAEQdAWahDgQUHU/toAKAIA +IAEQxDQLQQIhBwwTCyAGQdwNaiIiQQA6AAAgBkHQDWogCjYCACAGQcwNaiABNgIAIAZByA1qIAYo +AuwNIiE2AgAgBkGUBmogBigCjAYiEzYCACAGQZAGaiIVIAYoAogGIgc2AgALIAZB2A1qIA42AgAg +BkHUDWogITYCACAEQdgRaiIJIAEQ7QYgBkGcBmogEzYCACAGQZgGaiIXIAc2AgAgBkGgBmogCUHM +ABDNTxogBkHAB2oiIUEAOgAAIAZB7AZqIA42AgALIAZB8AZqIA42AgAgBkHEB2oiASAGQfQGaiIO +IAZBoAZqQcwAEM1PNgIAIAdFDQEgBkGQCGpBADoAACAGQcgHaiATNgIACyAEQagdaiAGQcQHaiIB +IAIQ+ARBAyEOIAQoAqgdIgdBA0YNDCAEQbAUaiAEQawdakGcAhDNTxogARDwPwwDCyAGQZgIaiIT +QQA6AAALIA4oAkQhByAGQZQIakEAOgAAIAZBzAdqIAc2AgAgBkHIB2ogDjYCAAsgBEGoHWogBkHI +B2oiCyACEPgEIAQoAqgdIgdBA0cEQCAEQdAWaiIJIARBrB1qQZwCEM1PGiALEPA/IBNBAToAACAE +QbAUaiAJQZwCEM1PGiABEO0/DAELIBNBAzoAAEEEIQ4MCQsgBCAHNgKoHSAEQawdaiAEQbAUakGc +AhDNTxogBEHQFmogBEGoHWoQjQcgBCgC0BYiAUEERg0HIARBmCFqIARB3BZqKAIAIgk2AgAgBCAE +KQLUFiInNwOQISAEKQLgFiElIARB+BhqIAk2AgAgBCAnNwPwGCAGQcgHaiIHIAE2AgAgBkHMB2og +JzcCACAGQdQHaiAJNgIAIAZBxA1qIiRBADoAACAGQeQHakEUNgIAQZyJwwAhEyAGQeAHakGcicMA +NgIAIAZB2AdqICU3AwAgBkHADWogBkHwBmooAgAiDjYCAEEUCyEBIARBwBpqIgsgB0EQaikDADcD +ACAEQbgaaiIJIAdBCGopAwA3AwAgBCAHKQMANwOwGiAOEPFNIREgBkGwCGoiDUEAOgAAIAZBrAhq +IBE2AgAgBkGoCGogDkEwaiIjNgIAIAZBhAhqIAE2AgAgBkGACGogEzYCACAGQfgHaiALKQMANwMA +IAZB8AdqIAkpAwA3AwAgBkHoB2oiDiAEKQOwGjcDAAsgBkGxCGpBADoAACAEQYgcaiIKIA5BEGop +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 +GiAIQf4AaiIHIAhBqxBqLQAAOgAAIAggCC8AqRA7AXwgDEHoAGoiARCZNkEDIRcgCUEDRg0DIAxB +5ABqQQE6AAAgASAIQZgPakHIABDNTyEBIAxBsAFqIAk6AAAgDEGxAWogCC8BfDsAACAMQbMBaiAH +LQAAOgAAIAlBAkYNASAMQQA6AGQgDEG0AWogAUHMABDNTyEBIAxBoQRqQQA6AAAgDEGcBGogATYC +ACAMQZgEaiAMQeAAaigCADYCACAMQZAEaiAMQdgAaikDADcDAAsgCEHgD2ohIEEAIQtBACEJIwBB +8CRrIgMkAAJAAkAgDEGAAmoiBQJ/AkACQAJAAkACQAJAAkACfwJ/AkACQAJAAkACQAJAAkACfwJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQCAFLQChAkEBaw4HEQsBGhsCCgALIAVBADoAoAIgBSAFKAKQ +AiIBNgKAAiAFIAUoApQCNgKEAiAFIAUoApgCIgc2AogCIAUgBSgCnAI2AowCIAEoAgAhASAHKQI0 +IScgBykCRCElIAVB6AJqQQA6AAAgBUGsAmogJTcCACAFQbQCaiAnNwIAIAUgAUEIajYCqAILIANB +uANqIAVBqAJqIhogAhCbAiADKAKYBCIKQQRGDRAgAy0AuAMhASADQdUCaiADQbgDakEBckEjEM1P +GiADQZgCaiADQdwDakE8EM1PGiADQZACaiILIANBtARqKAIANgIAIANBiAJqIgkgA0GsBGopAgA3 +AwAgA0GAAmoiByADQaQEaikCADcDACADIAMpApwENwP4ASAaEPEmQQMhDSAKQQNGDQcgBSABOgAA +IAVBAWogA0HVAmpBIxDNTxogBUEkaiADQZgCakE8EM1PGiAFIAo2AmAgBSADKQP4ATcCZCAFQewA +aiAHKQMANwIAIAVB9ABqIAkpAwA3AgAgBUH8AGogCygCADYCACAKQQJGDQYgBUEBOgCgAiAFQYAB +aiINIAVBgAEQzU8hASAFQeQCaiIYQQA6AAAgBUGsAmogATYCACAFQbACaiAFKAKMAiIBNgIAIAUg +BSgCgAIiDzYCqAIMAQsgBUGoAmohGgJAIAVB5AJqIhgtAABBAWsOAwUJAgALIAVBsAJqKAIAIQEg +BUGsAmooAgAhDSAFKAKoAiEPCyAFQbwCaiABNgIAIAVBuAJqIA02AgAgBUG0AmogDzYCACAPKAIA +IQcgA0HwAWogARDbTSADKALwASEPIAMoAvQBIQ0gBUHgAmoiBEEAOgAAIAVByAJqIA02AgAgBUHE +AmogDzYCACAFQcACaiIKIAdBDGoiATYCAAwBCyAFQcACaiEKAkACQCAFQeACaiIELQAAQQFrDgMR +CAABCyAFQdwCaigCACEPIAVB2AJqKAIAIQEMAgsgBUHIAmooAgAhDSAFQcQCaigCACEPIAUoAsAC +IQELIAVB1AJqIA02AgAgBUHQAmogDzYCACAFQcwCaiABNgIAIAEoAgRBCGoiARDCOiADQbgDaiAB +EMMvIAMoArgDDQ0gA0HAA2ooAgAhCSADKAK8AyAFKALQAiAFKALUAhCsIiIHBEAgA0G4A2oiASAH +EJcHIAMoArgDIQ8gA0GgImogAUEEckE8EM1PGiAJIAkoAgBBAWs2AgAMHwsgCSAJKAIAQQFrNgIA +IANB6AFqIAUoAswCEL8sIANB4AFqIAMoAugBIAUoAtACIAUoAtQCIAMoAuwBKAJMEQUAIAMoAuAB +IQEgBUHcAmogAygC5AEiDzYCACAFQdgCaiABNgIACyADQbgDaiABIAIgDygCDBEDACADKAK4AyIB +QQJGDRAgAygCwAMhByADKAK8AyENIANB4CBqIANBxANqQTwQzU8aIAVB2AJqEJk2IAFFBEAgB0UE +QEEAIQ8MHwsgAyAHNgLwFCADQfAUakEEciADQeAgakE8EM1PIRQgBUHMAmooAgAoAghBCGoiARCJ +PiADQbgDaiABEOggIAMoArgDDQ8gAyADKAK8AyIJNgLAJCADIANBwANqLQAAOgDEJCADQbgDaiAD +QfAUahDbECADKAK4AyEHIAMgAygCvAMiASADKALAA0EDdCIPaiIRNgLMDiADIAc2AsgOIAMgATYC +wA4gCUEIaiEQA0AgDwRAIAEoAgQhDSABKAIAIQsgA0G4A2oiCSADQfAUahCXByADQbAZaiIHIBAg +CyANIAkQwxQgD0EIayEPIAFBCGohASAHEJ1FDAEFIAMgETYCxA4gA0HADmoQhB8gA0HAJGoQnx8g +BSgCzAIoAgRBCGoiARCJPiADQbgDaiABEOggIAMoArgDDRIgAyADKAK8AyILNgLADiADIANBwANq +LQAAOgDEDiADQdgBaiAFQdACaigCACAFQdQCaigCABDCMCADKALcASEJIAMoAtgBIQ0gA0G4A2oi +ByADQfAUahCXByADQbAZaiIBIAtBCGogDSAJIAcQwxQgARCdRSADQcAOahCfHyADKALwFCEPIANB +oCJqIBRBPBDNTxoMIAsACwALIANByANqIANB6CBqKQIANwIAIANB0ANqIANB8CBqKQIANwIAIANB +2ANqIANB+CBqKAIANgIAIAMgBzYCvAMgAyANNgK4AyADIAMpAuAgNwLAA0EAIQ9BxJPbACgCAEEE +Sw0cQbT52gAQ+z4iAUH/AXFFDRxBACENQbT52gAoAgAgARD1LkUNHEG0+doAKAIAIhBBHGohCyAQ +QSBqKAIAIgkEQCAQQShqKAIAIQcgEEEkaigCACEBIBAoAhwhDSADQQA2AsAZIAMgBzYCvBkgAyAB +NgK4GSADIAk2ArQZCyADIA02ArAZIANB8BRqIgcgA0GwGWoiAUGg6sEAENosIANBvBlqQgE3AgAg +A0GgwMEANgLIDiADQQE2ArQZIANB3OrBADYCsBkgA0HNATYCsCAgAyABNgLEDiADIAc2AsAOIAMg +A0GsIGo2ArgZIAMgA0G4A2o2AqwgIANBwCRqIgEgCyADQcAOahDgQUG0+doAKAIAIAEQxDQMHAtB +wMDBAEEjQfiewgAQ5isACyAFQQA6AKACQcST2wAoAgBBA0sNEEHI/toAEPs+IgFB/wFxRQ0QQcj+ +2gAoAgAgARD1LkUNEEHI/toAKAIAIgpBHGohCyAKQSBqKAIAIgkEQCAKQShqKAIAIQcgCkEkaigC +ACEBIAooAhwhDyADQQA2AsgDIAMgBzYCxAMgAyABNgLAAyADIAk2ArwDCyADIA82ArgDIANBsBlq +IgcgA0G4A2oiAUHQqsIAENosIANBxANqQgA3AgAgA0GgwMEANgL4FCADQQE2ArwDIANBkKvCADYC +uAMgA0GwwMEANgLAAyADIAE2AvQUIAMgBzYC8BQgA0HQEmoiASALIANB8BRqEOBBQcj+2gAoAgAg +ARDENAwQCyADQZkOaiADQdUCakEjEM1PGgwYCyAFQagCaiEVAkACQCAFQZwMaiIXLQAAQQFrDgMH +AgEACyAFQawCaigCACENIAVBkAxqKAIAIQEgBUGMDGooAgAhGiAFQYgMaigCACEPDBsLIAVBuARq +IR0CQAJAIAVBhAxqIhMtAABBAWsOAwYCAQALIAVBvARqKAIAIQogBUH4C2ooAgAhDyAFQfQLaigC +ACEBIAVB8AtqKAIAIRogBSgCuAQhDQweCyAFQcAEaiEEAkACQAJAAkAgBUHoBWoiGi0AAEEBaw4F +AgQjAQMACyAFQcQEaigCACEKIAVBlAVqKAIAIQ8gBSgCwAQhDQwhCyAFQewFaiEYAkACQCAFQcAG +aiINLQAAQQFrDgMBBCYACyAYKAIAIQEMJAtBwMDBAEEjQez0wQAQ5isAC0HAwMEAQSNBsMLBABDm +KwALIAVB8AVqIRgCQAJAIAVB7AtqIh4tAABBAWsOAwUCAQALIAVBiAZqKAIAIQ8gBUHoC2ooAgAh +DSAFQYwGaigCAAwmCyAFQZAGaiENAkACQCAFQdgGaiIbLQAAQQFrDgQEAikBAAsgBUGsBmooAgAh +ASAFQagGaigCACEPIAVB1AZqKAIAIRIgBUHQBmooAgAhCgwnCyAFQeAGaiEGAkACQCAFQbgIaiIZ +LQAAQQFrDgQAAi0BLAtBwMDBAEEjQeTAwQAQ5isACyAFQcAIaiEBIAVB6ApqIgstAABBAWsOBA0A +LS4BCwALIAVB3AhqKAIAIQogBUHYCGooAgAhEiAFQcgKaigCACEPIAVBxApqKAIAIQkMKgtBwMDB +AEEjQeTAwQAQ5isAC0HAwMEAQSNBwMLBABDmKwALQcDAwQBBI0HYnsIAEOYrAAtBwMDBAEEjQZit +wgAQ5isAC0HAwMEAQSNBwKrCABDmKwALICBBBDoAUEEDDEMLIAMgAykCvAM3ArAZQei2wgBBKyAD +QbAZakGUt8IAQeDpwQAQiRgAC0HAwMEAQSNB8OnBABDmKwALIAMgAygCvAM2ArAZIAMgA0HAA2ot +AAA6ALQZQei2wgBBKyADQbAZakHUt8IAQYDqwQAQiRgACyADIAMoArwDNgKwGSADIANBwANqLQAA +OgC0GUHotsIAQSsgA0GwGWpBpLfCAEGQ6sEAEIkYAAsgBEEDOgAAIBhBAzoAACAgQQQ6AFBBBgw+ +C0HAwMEAQSNB6P/BABDmKwALIAUoAoACELNNKAIIIQEgBUGoA2pBADoAACAFQawCaiAFKAKEAjYC +ACAFIAFBCGo2AqgCCyADQfAUaiAFQagCaiIKIAIQkgIgAy0A8BQiAUEMRg0BIANBlANqIgsgAy0A +8xQ6AAAgA0GAA2oiCSADQYQVaikCADcDACADQYgDaiIHIANBjBVqKQIANwMAIAMgAy8A8RQ7AZID +IAMgAykC/BQ3A/gCIAMoAvQUIRAgAygC+BQhDSAKENo/IAFBC0cNAiAFIBA2AswCIAVBCzoAqAIg +BUGwAmogDTYCACAFQawCaiAQNgIAIAVB0AJqIA02AgAgA0GoImoiByADQdgSaigCADYCACADIAMp +AtASNwOgIiAFKAKIAikCRCElIANBsBlqIgEgA0G4A2pBPxDNTxogBUHYAmogJTcDACAFIAVBzAJq +NgLUAiAFQeACaiADKQOgIjcCACAFQegCaiAHKAIANgIAIAVB7AJqQQA6AAAgBUHtAmogAUE/EM1P +GgsgA0G4A2ogBUHUAmoiByACEIoGIAMtALgDIgFBDEYNAiADQZUDaiADQbgDakEBckEjEM1PGiAH +EKk4IAFBC0cNA0ECDAULICBBBDoAUEEEDDkLIAUgAToAqAIgBUGpAmoiAiADLwGSAzsAACAFQbAC +aiANNgIAIAVBrAJqIBA2AgAgBUG0AmogAykD+AI3AgAgBUGrAmogCy0AADoAACAFQbwCaiAJKQMA +NwIAIAVBxAJqIAcpAwA3AgAgA0GZDmogAkEjEM1PGgwCCyAgQQQ6AFBBBQw3CyADQZkOaiADQZUD +akEjEM1PGgtBAwshDSAFEPhCC0EOIQ8MMgsgA0G4A2oQsBoLIANBkAxqIgEgA0GgImpBPBDNTxog +BUEBOgDgAiADQcAcaiABQTwQzU8aIAoQ5j8CQAJAIA8EQCAFQbwCaigCACEHIAMgDzYCuAMgA0G4 +A2oiAUEEciADQcAcakE8EM1PGiADQdABaiABENU+IAMoAtQBIQEgAygC0AEhDSADQcgBaiAHENQ+ +IA0gASADKALIASADKALMARCAPA0BIANBuANqEIUOCyADQQA2AtASDAELIANB0BJqIANBuANqQcAA +EM1PGgsgA0HAAWogBUG4AmooAgBBMGoQsUYgAyADKQPAATcCsBkgA0G4AWogBUG0AmooAgAQwkQg +AyADKQO4ATcCuAMCQAJAAkACQCADQbAZaiADQbgDahCXQUUEQCADKALQEiEPDAELIAUoArgCENtA +IAMoAtASIQ8NAQsgD0UNASADQbgDaiIBIANB0BJqQcAAEM1PGiADQbABaiABIAUoArgCQTBqEMAE +QQEhDUECIQECQAJAAkAgAygCsAFBAWsOAgABAgtBAyENDAELIAMoArQBIQ1BASEBCyADQbgDahCF +DgwCC0EAIQEgD0UNASADQdASahCFDgwBCyADQagBaiAFKAK4AkEwahCxRiADIAMpA6gBNwKwGSAD +QaABaiAFKAK0AhDCRCADIAMpA6ABNwK4A0ECIQFBAkEAIANBsBlqIANBuANqEJdBGyENCyAYQQE6 +AAAgGhD2PyABQQJGDQEgBUEAOgCgAiAFKAKAAiEPIAUoAogCIRogA0GQDGoiByAFQYABakGAARDN +TxogBUGsAmogDTYCACAFIAE2AqgCIAUoAowCIQEgBUGwAmogB0GAARDNTxogBUGwA2ogA0G4A2pB +2AgQzU8aIAVBnAxqIhdBADoAACAFQZAMaiABNgIAIAVBjAxqIBo2AgAgBUGIDGogDzYCACAFQagC +aiEVCyAFQZ0MakEBOgAAIAVBmAxqIBo2AgAgBUGUDGogDzYCACAFQbADaiIPIAVBsAJqQYABEM1P +IQogBUG0BGogDTYCACAFQbAEaiILIAUoAqgCNgIAQcST2wAoAgBBAksNAUGk/toAEPs+IgdB/wFx +RQ0BQQAhGEGk/toAKAIAIAcQ9S5FDQFBpP7aACgCACIRQShqKAIAIQ0gEUEkaigCACEJIBEoAhwh +ByADIBFBIGooAgAiEAR/IANBADYCwBkgAyANNgK8GSADIAk2ArgZIAMgEDYCtBlBASEYIAcFQQAL +NgKwGSADQeAgaiADQbAZakHUrMIAENosIANBvBlqQgA3AgAgA0EBNgK0GSADQYCtwgA2ArAZIANB +sMDBADYCuBkgAyAQIBhLBH8gAyAYNgLgEiADIA02AtwSIAMgCTYC2BIgAyAQNgLUEiAHBUEACzYC +0BIgA0GgImoiCSADQdASaiIHQdSswgAQ2iwgA0GEFWpBiK3CADYCACADQYAVaiADQcAOajYCACAD +QaDAwQA2AvgUIAMgCzYCwA4gAyAJNgL8FCADIANBsBlqNgL0FCADIANB4CBqNgLwFCAHIBFBHGog +A0HwFGoQ8kEgA0HIHGogA0HYEmooAgA2AgAgAyADKQLQEjcDwBxBpP7aACgCACADQcAcahDENAwB +CyADIA06AMAcQcST2wAoAgAhAQJAIA1B/wFxQQNHBEAgAUEBSw0BQeD+2gAQ+z4iAUH/AXFFDQFB +ACEHQeD+2gAoAgAgARD1LkUNAUHg/toAKAIAIgpBKGooAgAhCyAKQSRqKAIAIQkgCigCHCECIAMg +CkEgaigCACIPBH8gA0EANgLIAyADIAs2AsQDIAMgCTYCwAMgAyAPNgK8A0EBIQcgAgVBAAs2ArgD +IANBoCJqIANBuANqQYCswgAQ2iwgA0HEA2pCADcCACADQQE2ArwDIANBvKzCADYCuAMgA0GwwMEA +NgLAA0EAIQEgByAPSQRAIAMgBzYCgBUgAyALNgL8FCADIAk2AvgUIAMgDzYC9BQgAiEBCyADIAE2 +AvAUIANB0BJqIgIgA0HwFGoiB0GArMIAENosIANBxBlqQcSswgA2AgAgA0HAGWogA0HgIGo2AgAg +A0GgwMEANgK4GSADIAI2ArwZIAMgA0G4A2o2ArQZIAMgA0GgImo2ArAZIAMgA0HAHGo2AuAgIAcg +CkEcaiADQbAZahDyQUHg/toAKAIAIAcQxDQMAQsgAUEDSw0AQdT+2gAQ+z4iAUH/AXFFDQBBACEH +QdT+2gAoAgAgARD1LkUNAEHU/toAKAIAIgFBHGohDyABQSBqKAIAIgsEQCABQShqKAIAIQkgAUEk +aigCACECIAEoAhwhByADQQA2AsgDIAMgCTYCxAMgAyACNgLAAyADIAs2ArwDCyADIAc2ArgDIANB +sBlqIgcgA0G4A2oiAkGYq8IAENosIANBxANqQgA3AgAgA0GgwMEANgL4FCADQQE2ArwDIANB+KvC +ADYCuAMgA0GwwMEANgLAAyADIAI2AvQUIAMgBzYC8BQgA0HQEmoiAiAPIANB8BRqEOBBQdT+2gAo +AgAgAhDENAtBAiENDCoLIAVBhAxqIhNBADoAACAFQfgLaiAKNgIAIAVB9AtqIAE2AgAgBUHwC2og +BSgClAwiGjYCACAFQbwEaiAFKAK0BCIKNgIAIAVBuARqIh0gBSgCsAQiDTYCAAsgBUGADGogDzYC +ACAFQfwLaiAaNgIAIAEoAgAiGyAbKAIAIgdBAWo2AgAgB0EASA0FIANBmAFqIAFBBGoQ1zEgASgC +RCELIAMoApwBIRwgAygCmAEhEiABKAIMIiEgISgCACIHQQFqNgIAIAdBAEgNBSADQcgZaiABQShq +KQIANwMAIANBwBlqIAFBIGopAgA3AwAgA0G4GWogAUEYaikCADcDACADIAFBEGopAgA3A7AZIANB +kAFqIAFBMGoQ8S4gAS0ASCEUIAMoApQBIREgAygCkAEhECABKAI4IiIgIigCACIHQQFqNgIAIAdB +AEgNBSABKAI8IiMgIygCACIHQQFqNgIAIAdBAEgNBSABKAJAIgEgASgCACIJQQFqNgIAIAlBAEgN +BSADQYgRaiADQcgZaikDACImNwMAIANBgBFqIANBwBlqKQMAIig3AwAgA0H4EGogA0G4GWopAwAi +JzcDACADIAMpA7AZIiU3A/AQIAVB1ARqICE2AgAgBUHQBGogHDYCACAFQcwEaiASNgIAIAVByARq +IBs2AgAgBUHEBGogCjYCACAFQcAEaiIEIA02AgAgBUHYBGogJTcDACAFQeAEaiAnNwMAIAVB6ARq +ICg3AwAgBUHwBGogJjcDACAFQegFaiIaQQA6AAAgBUGUBWogDzYCACAFQZAFaiAUOgAAIAVBjAVq +IAs2AgAgBUGIBWogATYCACAFQYQFaiAjNgIAIAVBgAVqICI2AgAgBUH8BGogETYCACAFQfgEaiAQ +NgIACyAFQZgFaiAPNgIAIAVB7AVqIhggBUGcBWoiASAFQcgEakHMABDNTzYCACANRQ0BIAVBuAZq +QQA6AAAgBUHwBWogCjYCAAsgA0GwGWogBUHsBWoiASACEPcEQQMgAygCsBkiD0EDRg0jGiADQdAS +aiADQbQZakGcAhDNTxogARDwPwwECyAFQcAGaiINQQA6AAALIAEoAkQhByAFQbwGakEAOgAAIAVB +9AVqIAc2AgAgBUHwBWogATYCAAsgA0GwGWogBUHwBWoiByACEPcEIAMoArAZIg9BA0cEQCADQfAU +aiIBIANBtBlqQZwCEM1PGiAHEPA/IA1BAToAACADQdASaiABQZwCEM1PGiAYEO0/DAILIA1BAzoA +AEEEDCALAAsgAyAPNgKwGSADQbQZaiADQdASakGcAhDNTxogA0HwFGogA0GwGWoQjQcgAygC8BQi +B0EERg0QIAMpAvQUIScgAygC/BQhASADKQKAFSElIAVB7AtqIh5BADoAACAFQYwGakEUNgIAQZGL +wgAhDyAFQYgGakGRi8IANgIAIAVBgAZqICU3AwAgBUH8BWogATYCACAFQfQFaiAnNwIAIAVB8AVq +IhggBzYCACAFQegLaiAFQZgFaigCACINNgIAQRQLIQEgA0GYGGoiCSAYQRBqKQMANwMAIANBkBhq +IgcgGEEIaikDADcDACADIBgpAwA3A4gYIA0Q8U0hEiAFQdgGaiIbQQA6AAAgBUHUBmogEjYCACAF +QdAGaiANQTBqIgo2AgAgBUGsBmogATYCACAFQagGaiAPNgIAIAVBoAZqIAkpAwA3AwAgBUGYBmog +BykDADcDACAFQZAGaiINIAMpA4gYNwMACyAFQQA6ANkGIANBqBlqIgsgDUEQaikCADcDACADQaAZ +aiIJIA1BCGopAgA3AwAgAyANKQIANwOYGUHEk9sAKAIAQQJLDQFB7PjaABD7PiIHQf8BcUUNAUHs ++NoAKAIAIAcQ9S5FDQFB7PjaACgCACIRQShqKAIAIRAgEUEkaigCACELIBEoAhwhCSADIBFBIGoo +AgAiFAR/IANBADYCgBUgAyAQNgL8FCADIAs2AvgUIAMgFDYC9BRBASEZIAkFQQALNgLwFCADQbwf +aiADQfAUakHkwMEAENosIANBiAFqIAoQsUYgAyADKQOIATcCkB4gAyADQZAeajYCqCQgAyAUIBlN +BH9BAAUgAyAQNgL8FCADIAs2AvgUIAMgFDYC9BQgAyAZNgKAFSAZQQFqIRkgCQs2AvAUIANB8B9q +IANB8BRqQeTAwQAQ2iwgA0GAAWogChCyRiADIAMpA4ABNwKIHyADIANBiB9qNgK0JCADIBQgGUsE +fyADIBA2AvwUIAMgCzYC+BQgAyAUNgL0FCADIBk2AoAVIBlBAWohGSAJBUEACzYC8BQgA0GsIGog +A0HwFGpB5MDBABDaLCADQdASaiIHIAoQ6kggAyAHNgLoIyADIBQgGU0Ef0EABSADIBA2AvwUIAMg +CzYC+BQgAyAUNgL0FCADIBk2AoAVIBlBAWohGSAJCzYC8BQgA0HAJGogA0HwFGpB5MDBABDaLCAD +IBQgGUsEfyADIBk2ArAiIAMgEDYCrCIgAyALNgKoIiADIBQ2AqQiIAkFQQALNgKgIiADQeAgaiIH +IANBoCJqIglB5MDBABDaLCADQagVakGkwcEANgIAIANBpBVqQbDAwQA2AgAgA0GcFWpBpMHBADYC +ACADQZgVakGwwMEANgIAIANBkBVqQZTBwQA2AgAgA0GEFWpBhMHBADYCACADQYwVaiADQegjajYC +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 +8ApqEME5IAMoAvAUQQNGDQggA0HoIGogA0H4FGoiAigCADYCACADIAMpAvAUIiY3A+AgICanDQkg +A0GwFWogBUGACWpBuAEQzU8aIAIgBUHMCmooAgAiB0EgaikDADcDACADQYAVaiAHQShqKQMANwMA +IANBiBVqIAdBMGopAwA3AwAgA0GYFWogBygCSCICQdABaikCADcDACADQaAVaiACQdgBaikCADcD +ACADQagVaiACQeABaikCADcDACADIAcpAxg3A/AUIAMgAkHIAWopAgA3A5AVIANB8BZqIAVB2Apq +KAIANgIAIAMgBUHQCmopAwA3A+gWIAVB3ApqIQogA0GgImoiByADQfAUaiICEMlBIANB4CBqEL8/ +IAIgBxCBKSADKALwFCILRQ0DIAMoAvQUIQkgA0GgImoQoS4gChCIP0ESIQ8MDQsgA0GwImopAgAh +JiADQawiaigCACESIANBqCJqKAIAIQkgAygCpCIhC0EKIQ8MCwtBAiEHQREhDwJAQcST2wAoAgAN +AEH4+NoAEPs+IgFB/wFxRQ0AQQAhEkH4+NoAKAIAIAEQ9S5FDQBB+PjaACgCACIBQRxqIQogAUEg +aigCACIJBEAgAUEoaigCACELIAFBJGooAgAhAiABKAIcIRIgA0EANgKAFSADIAs2AvwUIAMgAjYC ++BQgAyAJNgL0FAsgAyASNgLwFCADQdASaiIQIANB8BRqIgJBwMHBABDaLCADQfwUakIANwIAIANB +oMDBADYCqCIgA0EBNgL0FCADQZjCwQA2AvAUIANBsMDBADYC+BQgAyACNgKkIiADIBA2AqAiIANB +4CBqIgIgCiADQaAiahDgQUH4+NoAKAIAIAIQxDQLDA0LIANB3iBqIActAAA6AAAgAyADLwG4HzsB +3CAgA0GsIGogA0GIH2pBMBDNTxoMCwsgAygC9BQhCyADQaAiahChLiAKEIg/QQshDwwJC0EDIQEM +BQtBAwwFCyADQfwUaigCACESIANB+BRqKAIAIQogAygC9BQhAUECIQdBDSEPDA8LIAMoAvQUIQsg +A0HoI2oQzjBBCyEPDAQLQQQhAQwBC0H4/8EAQShBoIDCABDmKwALIAsgAToAAEEECyEBIBkgAToA +AAwGCyAjEPtACyAFQegIahDcIiADQbwfaiIHIANBwCRqQTAQzU8aIAVBAToA6AogA0GiIGoiAiAD +Qe8fai0AADoAACADIAMvAO0fOwGgICADQfAfaiAHQTAQzU8aIAEQ0CUgD0ESRgRAIANB3iBqIAVB +2wdqLQAAOgAAIAMgBS8A2Qc7AdwgIAVB3AdqKAIAIQEgBUHgB2ooAgAhCiAFQeQHaigCACESIAVB +6AdqKQMAISYgBS0A2AchDyADQawgaiAFQfAHakEwEM1PGiADIAUoAKkINgKkICADIAVBrAhqKAAA +NgCnICAFQagIai0AACEHIAVBoAhqKQMAISgMAgsgA0HeIGogAi0AADoAACADIAMvAaAgOwHcICAD +QawgaiADQfAfakEwEM1PGiAFQdgHahDEKSALIQEgCSEKCyAFQQA6ALkIIAUtALoIBEAgBUHACGoQ ++0ALIAVBADoAughBAiEHIAUtALsIDQEMAgsCQCAFQdAHai0AAEECRg0AIAUtALkIRQ0AIAVBgAdq +EMQpCyAFQQA6ALkIIAUtALoIBEAgBUHACGoQ+0ALIAVBADoAugggBS0AuwhFDQELIAYQ3CILIANB +wh5qIgIgA0HeIGotAAA6AAAgAyADLwHcIDsBwB4gA0GQHmogA0GsIGpBMBDNTxogAyADKACnIDYA +ix4gAyADKAKkIDYCiB4gGUEBOgAAIAdB/wFxQQNGDQAgA0H+HmogAi0AADoAACADIAMvAcAeOwH8 +HiADQcweaiADQZAeakEwEM1PGiADIAMoAIseNgDHHiADIAMoAogeNgLEHiAGEKAhDAMLQQQLIQEg +GyABOgAAIB5BAzoAAEEFCyEBIBogAToAACATQQM6AAAgF0EDOgAADAMLIAUtANkGBEAgBUGwBmoQ +2SILIAVBADoA2QYgA0HaGGoiECADQf4eai0AADoAACADIAMvAfweOwHYGCADQagYaiIRIANBzB5q +QTAQzU8aIAVBAToA2AYgA0GWGWoiAiAQLQAAOgAAIAMgAygAxx42AKMYIAMgAygCxB42AqAYIAMg +Ay8B2Bg7AZQZIANB5BhqIhAgEUEwEM1PGiADIAMoAKMYNgDfGCADIAMoAqAYNgLcGCANEMspIANB +yhdqIg0gAi0AADoAACADIAMvAZQZOwHIFyADQZgXaiICIBBBMBDNTxogBUEBOgDsCyADQYYYaiAN +LQAAOgAAIAMgAygA3xg2AJMXIAMgAygC3Bg2ApAXIAMgAy8ByBc7AYQYIANB1BdqIAJBMBDNTxog +AyADKACTFzYAzxcgAyADKAKQFzYCzBcgGBCHPQsgBUGcBWoQ4RIgA0HOEWoiDSADQYYYai0AADoA +ACADIAMvAYQYOwHMESADQZgRaiICIANB1BdqQTAQzU8aIAVBAToA6AUgA0GOEmoiECANLQAAOgAA +IAMgAygAzxc2AJMRIAMgAygCzBc2ApARIAMgAy8BzBE7AYwSIANB2BFqIAJBMBDNTxogAyADKACT +ETYA0xEgAyADKAKQETYC0BEgBBD0JgJAAkACQAJAAkAgB0H/AXFBAkcEQCADQe4QaiAQLQAAOgAA +IAMgAygA0xE2ALMQIAMgAygC0BE2ArAQIAMgAy8BjBI7AewQIANBuBBqIANB2BFqQTAQzU8aIANB +IGogBUGADGoiECgCAEEwahCxRiADKAIkIQ0gAygCICECIANBGGogECgCAEEwahCyRiADQRBqIAMo +AhggAygCHBDCMCADQfAUaiACIA0gAygCECADKAIUQfSKwgBBECALIAkQyBUgA0EIaiADQfwUahDx +LiADKQMIISUgA0HMGWogA0GIFWopAgA3AgAgA0HEGWogA0GAFWopAgA3AgAgA0G8GWogA0H4FGop +AgA3AgAgAyADKQLwFDcCtBkgA0GigICAeDYCsBkgAyADQbAZaiICEIM9NgKoIiADICU3AqAiIAIg +BUH8C2ooAgAoAgBBMGoQjEogAygCsBkNAiADIAMoArQZIg02AuAgIAMgA0G4GWoiAi0AADoA5CAg +AyADQaAiahDxLiADKAIEIQsgAygCACEJIAIgA0GoImooAgA2AgAgAyADKQKgIjcDsBkgA0HQEmoi +AiANQQhqIAkgCyADQbAZahDuECACEKFFIANB4CBqEJ8fIANBzhJqIANB7hBqLQAAOgAAIAMgAy8B +7BA7AcwSIANBmBJqIANBuBBqQTAQzU8aIAMgAygAsxA2AJMSIAMgAygCsBA2ApASDAELIANBzhJq +IBAtAAA6AAAgAyADLwGMEjsBzBIgA0GYEmogA0HYEWpBMBDNTxoLIANB1g9qIgkgA0HOEmotAAA6 +AAAgAyADLwHMEjsB1A8gA0GgD2oiAiADQZgSakEwEM1PGiADIAMoAJMSNgCbDyADIAMoApASNgKY +DyATQQE6AAAgAyADLwHUDzsAwQ4gAyAJLQAAOgDDDiADQdgOaiACQTAQzU8aIANBlA9qIAMoAJsP +NgAAIAMgKDcDiA8gAyAmNwPQDiADIBI2AswOIAMgCjYCyA4gAyABNgLEDiADIA86AMAOIAMgAygC +mA82AJEPIAMgBzoAkA8gHRCLQCADQcAOakEBciEJIAdB/wFxQQJHBEAgA0GuEGogCUECai0AADoA +ACADIAkvAAA7AawQIANBiRBqIANBwA5qQQVyQSMQzU8aIANB4A9qIANB6A5qQSgQzU8aIAMgA0GR +D2oiAkEDaigAADYA2w8gAyACKAAANgLYD0EAIRogByENDAQLAkACQAJAQQIgD0EKayICIAJB/wFx +QQhPG0H/AXFBA2sOBQEAAAACAAsgA0GuEGogCUECai0AADoAACADIAkvAAA7AawQIANBiRBqIANB +wA5qQQVyQSMQzU8aIANB+A9qIANBgA9qKQMANwMAIANB8A9qIANB+A5qKQMANwMAIANB6A9qIANB +8A5qKQMANwMAIAMgAykD6A43A+APQQMhDUEBIRoMBQsgA0HoIGogA0HADmpBBHIiAkEIaigCADYC +ACADIAIpAgA3A+AgQQAhGkHEk9sAKAIAQQNLDQNBvP7aABD7PiICQf8BcUUNA0EAIQRBvP7aACgC +ACACEPUuRQ0DQbz+2gAoAgAiDUEcaiEKIA1BIGooAgAiCwRAIA1BKGooAgAhCSANQSRqKAIAIQIg +DSgCHCEEIANBADYCwBkgAyAJNgK8GSADIAI2ArgZIAMgCzYCtBkLIAMgBDYCsBkgA0HwFGoiCSAD +QbAZaiICQaitwgAQ2iwgA0G8GWpCATcCACADQaDAwQA2AtgSIANBATYCtBkgA0GUrsIANgKwGSAD +Qc8BNgLEHCADIAI2AtQSIAMgCTYC0BIgAyADQcAcajYCuBkgAyADQeAgajYCwBwgA0GgImoiAiAK +IANB0BJqEOBBQbz+2gAoAgAgAhDENAwDC0EAIRpBAiENQcST2wAoAgBBAksNAUGw/toAEPs+IgJB +/wFxRQ0BQQAhGEGw/toAKAIAIAIQ9S5FDQFBsP7aACgCACIQQRxqIQogEEEgaigCACILBEAgEEEo +aigCACEJIBBBJGooAgAhAiAQKAIcIRggA0EANgLAGSADIAk2ArwZIAMgAjYCuBkgAyALNgK0GQsg +AyAYNgKwGSADQfAUaiIJIANBsBlqIgJBnK7CABDaLCADQbwZakIANwIAIANBoMDBADYC2BIgA0EB +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 +NgIAIANB1AFqIAY2AgAgA0HQAWogCDYCACADQewBakEAOgAACyADQZgCaiIGQQA6AAAgA0H0AWoi +CiABNgIACyAFQbgEaiABQQRqQQEQqzQgA0GQAmogBUHQBGopAgA3AgAgA0GIAmogHCkCADcCACAD +QYACaiAFQcAEaikCADcCACADQfgBaiAFKQK4BDcCAAsCfyADQfgBaiIIIBIQ4ANB/wFxIgFBAkcE +QCAIEMM6IAENCyAGQQE6AAAgCigCACIBQRhqIQggAUEEagwBCyAGQQM6AABBAAshBkEDIQEgDAJ/ +IAZFBEBBACEGQQMMAQsgChD0P0EBCzoAACAGRQ0OIAMgBjYCyAEgA0HMAWoiASAINgIAIANB7AFq +QQE6AAAgIRDqP0ELIQYgASgCACIILQAADQ8gA0EAOgDsASADKALIASEBIAUgCDYCvAQgBSABNgK4 +BCAFQbgEaiIBEJpMIANB8AFqIgogA0HUAWooAgBB7ABqNgIAIANB9AFqIAFBKBDNTxogA0GcAmoi +DEEAOgAAIANBnQJqIAUvANwFOwAAIANBnwJqIAVB3gVqLQAAOgAACyADQZgCaiIhQQA6AAAgA0H0 +AWoiCCADKALwASIGNgIACyAFQfgFaiAGQQRqIAYoAgAQqzQgA0GQAmogBUGQBmopAgA3AgAgA0GI +AmogBUGIBmopAgA3AgAgA0GAAmogBUGABmopAgA3AgAgA0H4AWogBSkC+AU3AgALIANB+AFqIgYg +EhDgA0H/AXEiAUECRg0KIAYQwzogAQRAQeTGwwBBKEHU3MMAEOYrAAsgAygC9AEiBigCACEBIANB +AToAmAIgCBD0PyADQeABaiIIIAZBGGo2AgAgA0HcAWogATYCACADQdgBaiAGQQRqNgIAIANBAToA +nAIgChDqP0ELIQYgCCgCAC0AAA0DIAVByABqIANB1AFqKAIAKAKIAUEIahDlNSAFQUBrIAUoAkgg +BSgCTCgCUBEBACAFKAJAIQEgA0H0AWogBSgCRCIGNgIAIAMgATYC8AELIAVBuARqIANB8AFqIgwo +AgAgEiAGKAIMEQMAIAUtALgEIgZBDEYNBCAFQbgFaiIKIBxBCGopAgA3AwAgBUHABWoiASAcQRBq +KAIANgIAIAUgESkAADcDyAUgBSAcKQIANwOwBSAFIB4pAAA3Ac4FIAUtALkEIQggDBCZNiAGQQtH +DQEgDCAlKQAANwAAIAxBCGogJUEIaigAADYAACADQbQCakEAOgAAIANB/AFqIANB0AFqKAIANgIA +CyADQfwBaiIBIBIQuwciDA0CQQYhAQwJCyAFQagGaiABKAIANgIAIAVBoAZqIAopAwA3AwAgBSAF +KQOwBTcDmAYgBSAFKQPIBTcD6AUgBSAFKQHOBTcB7gULIANB2AFqEKlKDAgLIAUgDDYC2AUgARDZ +PyADQdQBaigCACIKKAJYIApBfzYCWEUEQCAFQbgEaiAKQdgAahDoICAFKAK4BEUEQCAFIAUtAMAE +OgDgBSAFIAUoArwEIgo2AtwFIANB+AFqKAIAIQEgA0H0AWooAgAhBiAFIANB8AFqKAIANgLABCAF +IAY2ArwEIAUgBjYCuAQgBSAGIAFBDGwiCGo2AsQEIAxBGGohFCAKQQhqIRcDQAJAIAgEQCAFQeYF +aiIMIAZBC2otAAA6AAAgBSAGQQxqIgE2ArwEIAUgBi8ACTsB5AUgBi0ACCIKQQJHDQELIAVBuARq +EIMfIANB4AFqKAIAQQE6AAAgBUHcBWoQ8h4gBUHYBWoQmkwgA0HYAWoQqUogA0HsAWohAUELIQYM +DAsgBikCACEqICQgBS8B5AU7AAAgJEECaiAMLQAAOgAAIAUgCjoAgAYgBSAqNwP4BSAFQThqIAVB ++AVqEJ0xIBcgBSgCOCAFKAI8EN1JGiAFLQCABgRAIBQgBSgC+AUgBSgC/AUQnQULIAhBDGshCCAF +QfgFahD6PiABIQYMAAsACyAFIAUtAMAEOgD8BSAFIAUoArwENgL4BUHc18MAQSsgBUH4BWpBiNjD +AEHIzcMAEIkYAAsAC0EFIQEMBQtB5MbDAEEoQaTcwwAQ5isAC0HkxsMAQShB9NvDABDmKwALAAtB +AwwYCyAhQQM6AAAgDEEDOgAAQQQhAQsgECABOgAAQQMMCgsgA0HsAWoiAS0AAEUNACACEJpMCyAB +QQA6AAAgBUH4BGoiASAFQaAGaikDADcDACAFQYAFaiIKIAVBqAZqKAIANgIAIAUgBSkD6AU3A4AE +IAUgBSkB7gU3AYYEIAUgBSkDmAY3A/AEIBBBAToAACAfIAUpA/AENwAAIB9BCGogASkDADcAACAf +QRBqIAooAgA2AAAgBSAFKQOABDcDkAQgBSAFKQGGBDcBlgQgAhC5HyAGQQtHDQEgA0HFAWpBADoA +ACAFIANBmAFqKQMANwK4BCAFQbgEaiIBELFLIAMgA0G8AWooAgA2AsgBIANBzAFqIAFBNBDNTxog +A0GAAmpBADoAAAsgA0HIAWoiDCASELsHIgFFDQQgA0HAAWoiCCABNgIAIAwQ2T8gCCgCAEEYaiAD +QbABaigCACADQbQBaigCABCeBCIBRQ0BIAMgATYCyAEgA0G8AWopAgAhK0HwAEEEENgwIgZBADoA +MCAGICs3AgQgBiAMNgIAIANBkAJqIgFBADoAACADQfABaiAGNgIAIANB2AFqIANBqAFqKAIAIgg2 +AgAgA0HQAWoiAiADQaABaikDACIqNwMADAILIAVBiAVqIAVBkARqQSIQzU8aDAcLIAgQmkxBASEI +QQshBgwGCyADQegBaiAINgIAIANB4AFqICo3AwAgBUEoaiAqQgBC6AcQwBggBSkDKCIrIAhBwIQ9 +bq18IipCgICAgBBUIAVBMGopAwAgKiArVK18UHFFDQIgBUH4BWogKqcQsDEgA0H0AWogBjYCACAD +QfgBaiAFKQP4BTcCACADQYACaiAFQYAGaikDADcCACADQYgCaiAFQYgGaikDADcCAAsgBUG4BGog +A0H0AWoiCCASEP8JIAUoArgEQQNGDQIgBUGoBmogHCkCADcDACAFQaAGaiAFQcAEaikCADcDACAF +IAUpArgENwOYBiAIEI4+AkAgBSgCmAZBAkYiBkUEQCAFQZgGahD8IQwBCyAVENoiCyABQQE6AAAg +AhDEOkEAIQgCQCAGRQ0AQQIhCEHEk9sAKAIAQQNLDQBBkJHbABD7PiIBQf8BcUUNAEGQkdsAKAIA +IAEQ9S5FDQBBACECQZCR2wAoAgAiFEEoaigCACEQIBRBJGooAgAhDCAUKAIcIQYCfyAUQSBqKAIA +IhdFBEBBACEBQQAMAQsgBUEANgLIBCAFIBA2AsQEIAUgDDYCwAQgBSAXNgK8BCAGIQFBAQshCiAF +IAE2ArgEIAVB8ARqIAVBuARqQejNwwAQ4CwgBUEBNgK8BCAFQdzOwwA2ArgEIAVCADcCxAQgBUH0 +zsMANgLABCAKIBdJBEAgBSAKNgKoBiAFIBA2AqQGIAUgDDYCoAYgBSAXNgKcBiAGIQILIAUgAjYC +mAYgBUGwBWoiASAFQZgGaiIGQejNwwAQ4CwgBUG0zMMANgKMBiAFQeTOwwA2AoAGIAUgA0GwAWo2 +AugFIAUgBUHoBWo2AogGIAUgATYChAYgBSAFQbgEajYC/AUgBSAFQfAEajYC+AUgBiAUQRxqIAVB ++AVqEPJBQZCR2wAoAgAgBhDENAsgA0HIAWoQujkgA0HFAWohAUELIQYMBQtBBAwCC0GqycMAQREg +BUG4BGpBzNfDAEGwysMAEIkYAAsgAUEDOgAAQQULIQEgCyABOgAAQQQMCgsgA0HFAWoiAS0AAEUN +ACADQZgBahCxSwsgAUEAOgAAIAVBsANqIgwgBUGIBWpBIhDNTxogC0EBOgAAIAVB1ANqIAxBIhDN +TxogDRD9HyAGQQtHDQIgA0ELOgB4IANB+QBqIAg6AABBACAIQf8BcQ0FGiADQbwBaiINQQA6AAAg +AyADQewAaigCACIINgLEASADQcABaiADQegAaigCACIBNgIAIANBpAFqIAg2AgAgA0GgAWogATYC +ACADQZwBaiIhIANB8ABqKAIAQQRqIgY2AgALIANBsAFqIgIgCDYCACADQawBaiIIIAE2AgAgA0Go +AWogBjYCACAFQSBqIAYoAgBB3ABqKAIAQQhqEOU1IAVBGGogBSgCICAIKAIAIAIoAgAgBSgCJCgC +XBEFACAFKAIYIQYgA0G4AWogBSgCHCIINgIAIANBtAFqIAY2AgALIAVBuARqIAYgEiAIKAIMEQMA +IAUoArgEIhdBAkYNBSAFQbIDaiIMICNBAmotAAA6AAAgBSAjLwAAOwGwAyAFLQC8BCEGIAUoAsAE +IQggBSgCxAQhASAFKALIBCECIAUoAswEIQogBSgC0AQhCyAFKALUBCEQIAUpA9gEISogA0G0AWoQ +mTYgFw0BIANBqAFqKAIAIQwgBSAqNwPQBCAFIBA2AswEIAUgCzYCyAQgBSAKNgLEBCAFIAI2AsAE +IAUgATYCvAQgBSAINgK4BCAFQRBqIAwQ3EYgA0GsAWooAgAgA0GwAWooAgAgBSgCECAFKAIUEIA8 +RQ0CIAVBCGogDBDhRiAFQYgFaiAFQbgEaiAFKAIIIAUoAgwQthwgBSgCnAUEQCAFQYgFahD7Hwsg +BSkD0AQhKiAFKALMBCEQIAUoAsgEIQsgBSgCxAQhCiAFKALABCECIAUoArwEIQEgBSgCuAQhCAwC +CyADIAY6AHggA0H5AGoiASAIOgAAIANB+gBqIAVB1ANqQSIQzU8aIAVB/gNqIANB+wBqLQAAOgAA +IAUgAS8AADsB/AMgA0GUAWopAgAhKyADQZABaigCACEKIANBjAFqKAIAIQIgA0GIAWooAgAhASAD +QYQBaigCACEIIANBgAFqKAIAIQ0gA0H8AGooAgAhDAwHCyAFQZIEaiAMLQAAOgAAIAUgBS8BsAM7 +AZAECyAFQfoFaiIMIAVBkgRqLQAAOgAAIAUgBS8BkAQ7AfgFIA1BAToAACAFQfoDaiINIAwtAAA6 +AAAgBSAFLwH4BTsB+AMgIRDmPyAXDQEgC60gEK1CIIaEISsgA0HEAWooAgAhDSADQcABaigCAAsh +DEEADAULIAVB/gNqIA0tAAA6AAAgBSAFLwH4AzsB/AMgCCEMIAEhDSACIQggCiEBIAshAiAQIQog +KiErDAMLIA1BAzoAAEEFCyEBIBYgAToAAEEECyEBIAMgAToAVEEAIScMAwtBAQshCyAFQZYCaiAF +Qf4Dai0AADoAACAFIAUvAfwDOwGUAiAWQQE6AAAgKRDfMQsgAy0AVQRAIANBMGoQ2SILIANBADoA +VSAFQZoCaiIQIAVBlgJqLQAAOgAAIANBAToAVCAFIAUvAZQCOwGYAiADEIIkIAMgBjoAFCADIAs2 +AhAgA0GAlOvcAzYCCCADICo3AzggAyArNwMwIAMgCjYCLCADIAI2AiggAyABNgIkIAMgCDYCICAD +IA02AhwgAyAMNgIYIAMgBS8BmAI7ABUgA0EXaiAQLQAAOgAADAALAAsjAEHgAGsiIiQAIBpBKGoh +IyAiQTBqQQRyIRUgIkEEciEYAkADQAJAIwBBgAFrIiAkACAaQRxqIRsCQAJAIBpBJGooAgAEQCAg +QQA2AgwgICAbNgIIIBpBIGooAgApAzAiKyAaKQMIUQ0BICBBCGoQ8AoLIBpBEGohHCAgQcgAakEE +ciERICBBEGpBBHIhHgNAQQAhFkEAIRMjAEHgAGsiGSQAIBwoAgQiAgRAIBwoAgAoAghBCGohAQNA +IAEgAigC4AJGDQALIAIoAugCIRYLICBBEGohJSAcKAIAIgtBDGogEigCACImEJQKQQAhIQNAAkAg +GUEIaiALQQhqENATAkACQAJAAkACQAJAIBkoAghBAWsOAgIAAQsgJigCBCAmKAIAKAIIEQAAICVB +AzYCAAwDCwJAIBkoAgwiBygCCEGAlOvcA0cEQCAcIAcQkBgiJ0H8AmoiAi0AACACQQA6AAANAUHg +xMMAQRZB8MXDABDmKwALIBkgB0EIazYCGCAZQRhqENE5DAQLIBkgHDYCECAZICc2AhQgJ0H9Amoi +FEEAOgAAIBkgJ0EIajYCWCAZQbTGwwA2AlQgGSAZQdQAajYCXCAZQRhqIR0gGUHcAGohH0EAIQhB +ACEKQQAhDUIAISpCACErIwBBsAZrIgQkACAHKQPYAiEsAkACQAJ/AkAgBwJ/An8CQAJAAkACQAJA +AkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBy0A +VEEBaw4EAwIMAQALIAdBADoAVSAHQSBqIAcoAgg2AgAgByAHKQMANwMYIAcgBykDEDcDKEECISQg +BygCUCEGQcST2wAoAgBBAksNCUHshNsAEPs+IgFB/wFxRQ0JQeyE2wAoAgAgARD1LkUNCSAHQRhq +IQFB7ITbACgCACIMQShqKAIAIQsgDEEkaigCACEKIAwoAhwhAiAEIAxBIGooAgAiDQR/IARBADYC +qAIgBCALNgKkAiAEIAo2AqACIAQgDTYCnAJBASEIIAIFQQALNgKYAiAEQZAEaiAEQZgCakGonMQA +EOYsIAQgATYCsAMgBCAIIA1JBH8gBCAINgLIBCAEIAs2AsQEIAQgCjYCwAQgBCANNgK8BCACBUEA +CzYCuAQgBEGIBWoiASAEQbgEaiICQaicxAAQ5iwgBEGsAmpByJzEADYCACAEQagCaiAEQdQDajYC +ACAEQbicxAA2AqACIAQgB0EoajYC1AMgBCABNgKkAiAEIARBsANqNgKcAiAEIARBkARqNgKYAiAC +IAxBHGogBEGYAmoQ8kEgB0EwaiAMIAIQxDIgB0EBOgBVIAdBOGooAgAhJAwKCyAHQdgAaiEpAkAC +QAJAAkACQCAHQfQAaiIkLQAAQQFrDgUCBQEDBAALIAdB8ABqKAIAIQYMEAsgB0H4AGohCgJAAkAC +QCAHQawBaiILLQAAQQFrDgMCBgEACyAKKAIAIQYMEgsgB0H8AGohDAJAAkACQCAHQagBaiICLQAA +QQFrDgMCBwEACyAMKAIAIQYMFAsgB0GAAWohAQJAIAdBpAFqIggtAABBAWsOAwgGFgALIAEoAgAh +BgwUC0Ggh8QAQSNBsKzEABDmKwALQaCHxABBI0HYo8QAEOYrAAtBoIfEAEEjQaicxAAQ5isACyAH +QfgAaiEQAkACQAJAAkAgB0HEAWoiAi0AAEEBaw4FAgUBLAMACyAHQZQBaigCACEKIAdBkAFqKAIA +IQwgB0GAAWooAgAhDSAHQYwBaigCACEIIAdBiAFqKAIAIQYgB0G4AWooAgAhAQwVCyAHQcgBaiEN +AkACQAJAAkAgB0HtAWoiCi0AAEEBaw4GCwcCAwAhAQsgB0H0AWooAgAhBgwfCyAHQegBaigCACEG +IAdB5AFqKAIAIQEMFwsgB0HwAWohAwJAAkACQCAHQZwCaiIMLQAAQQFrDgMCBwEACyADKAIAIQgM +GQsgB0H0AWohAQJAIAdBmAJqIgYtAABBAWsOAwkGGwALIAEoAgAhCAwZC0Ggh8QAQSNB4KzEABDm +KwALIAdB8AFqIQMCQAJAIAdBnAJqIggtAABBAWsOAwEFABsLIAdB9AFqIQECQCAHQZgCaiIMLQAA +QQFrDgMKBR0ACyABKAIAIQYMGwtBoIfEAEEjQZCtxAAQ5isAC0Ggh8QAQSNByJ/EABDmKwALIAdB +0AFqIQoCQCAHQZACaiIILQAAQQFrDgMIAi0ACyAHQdgBaigCACEBIAdB8AFqKAIAIQYgBykD0AEh +KgwrCyAHQZwBaiENAkACQCAHQbwBaiIMLQAAQQFrDgMJAgABCyAHQbgBaigCACEBIAdBtAFqKAIA +IQYMNAsgB0GkAWooAgAhASAHQaABaigCACEIIAcoApwBIQYMMgsAC0Ggh8QAQSNBqJzEABDmKwAL +QaCHxABBI0HArMQAEOYrAAtBoIfEAEEjQfCsxAAQ5isAC0Ggh8QAQSNBqJ/EABDmKwALQaCHxABB +I0GgrcQAEOYrAAtBoIfEAEEjQeSXxAAQ5isAC0Ggh8QAQSNByKPEABDmKwALIAdBAToAVSAHQcgA +akEANgIAIAdBOGpBAjYCAAsgBygCLCEKIAcoAighAiAHKAIgIQEgBykDGCEqICRBAkYNASAHQQA6 +AFUgByAHKQMwNwNYIAdBlAFqQQA6AAAgB0GQAWogBjYCACAHQYwBaiAKNgIAIAdBiAFqIAI2AgAg +B0GAAWogATYCACAHQfgAaiAqNwMAIAdB4ABqIAdBOGopAwA3AwAgB0HoAGogB0FAaykDADcDACAH +QfAAaiAHQcgAaikDADcDACAHQZUBaiAEQc0AakHDARDNTxoLIARBmAJqIAdB2ABqIhAgHxCUAyAE +KAKYAiILQQJGDRcgBEGWAmogBC0AnwI6AAAgBCAELwCdAjsBlAIgBC0AnAIhBiAEKAKgAiEMIAQo +AqQCIQ0gBCgCqAIhASAEKAKsAiEIIAQoArACIQIgBCgCtAIhCiAEKQO4AiErIAQpA8ACISogEBDm +SwwzCyAHICo3A1ggB0H0AGoiJEEAOgAAIAdB8ABqIAY2AgAgB0HsAGogCjYCACAHQegAaiACNgIA +IAdB4ABqIAE2AgAgB0H1AGogBEHNAGpBwwEQzU8aIAdB2ABqISkLIAdBrAFqIgtBADoAACAHQfgA +aiIKIAZBBGoiBjYCAAsgBigCAEHgAGooAgAiBiAGKAIAIgFBAWo2AgAgAUEASA0TIAdBqAFqIgJB +ADoAACAHQfwAaiIMIAY2AgALIAdBpAFqIghBADoAACAHQYABaiIBIAY2AgALIARBmAJqIAZBDGpB +ARCrNCAHQZwBaiAEQbACaikCADcCACAHQZQBaiAEQagCaikCADcCACAHQYwBaiAEQaACaikCADcC +ACAHQYQBaiAEKQKYAjcCAAsCQCAHQYQBaiINIB8Q4ANB/wFxIgZBAkcEQCANEMM6IAYNESAIQQE6 +AAAgASgCACIGQSBqIQgMAQsgCEEDOgAAQQAhBgsgAgJ/IAZFBEBBACEGQQMMAQsgARCKPkEBCzoA +ACAGRQRAIAtBAzoAAEEDDCoLIAwQ+zwgB0EBOgCsASAKENc/IAdB8ABqKAIAKAIIIQEgB0GUAWog +B0HsAGooAgAiCjYCACAHQZABaiAHQegAaigCACIMNgIAIAdBjAFqIAg2AgAgB0GIAWogBjYCACAH +QYABaiAHQeAAaigCACINNgIAIAdB+ABqIhAgBykDWDcDACAHQZgBaiAEKQOQAzcDACAHQaABaiAE +QZgDaikDADcDACAHQagBaiAEQaADaikDADcDACAHQcQBaiICQQA6AAAgB0G4AWogAUEIaiIBNgIA +IAdBxQFqIARBmAJqQfMAEM1PGgsgB0HFAWpBAToAACAHQbwBaiABNgIAIAdBnAFqIAg2AgAgB0GY +AWoiCCAGNgIAIAdBtAFqIAo2AgAgB0GwAWogDDYCACAHQagBaiANNgIAIAdBoAFqIAcpA3g3AwAg +CCgCBCEGIAdB7QFqIgpBADoAACAHQegBaiAGNgIAIAdB5AFqIAE2AgAgB0HIAWohDQsgB0GcAmoi +DEEAOgAAIAdB8AFqIgMgBkHsAGoiCDYCACAHQdQBaiAGNgIAIAdB0AFqIAE2AgAgB0HsAWpBADoA +AAsgB0GYAmoiBkEAOgAAIAdB9AFqIgEgCDYCAAsgBEG4BGogCEEEakEBEKs0IAdBkAJqIARB0ARq +KQIANwIAIAdBiAJqIARByARqKQIANwIAIAdBgAJqIARBwARqKQIANwIAIAdB+AFqIAQpArgENwIA +CwJ/IAdB+AFqIgggHxDgA0H/AXEiC0ECRwRAIAgQwzogCw0LIAZBAToAACABKAIAIgZBGGohCCAG +QQRqDAELIAZBAzoAAEEACyEGQQMhCyAMAn8gBkUEQEEAIQZBAwwBCyABEPQ/QQELIgE6AAAgBkUN +DiAHIAY2AsgBIAdBzAFqIgYgCDYCACAHQewBakEBOgAAIAMQ6j8gBigCACIILQAABEBBCyEGDBAL +IAdBADoA7AEgBygCyAEhASAEIAg2ArwEIAQgATYCuAQgBEG4BGoiARCaTCAHQfABaiIDIAdB1AFq +KAIAQewAajYCACAHQfQBaiABQSgQzU8aIAdBnAJqIghBADoAACAHQZ0CaiAELwDcBTsAACAHQZ8C +aiAEQd4Fai0AADoAAAsgB0GYAmoiDEEAOgAAIAdB9AFqIgEgBygC8AEiBjYCAAsgBEH4BWogBkEE +aiAGKAIAEKs0IAdBkAJqIARBkAZqKQIANwIAIAdBiAJqIARBiAZqKQIANwIAIAdBgAJqIARBgAZq +KQIANwIAIAdB+AFqIAQpAvgFNwIACyAHQfgBaiILIB8Q4ANB/wFxIgZBAkYNCiALEMM6IAYEQEGU +q8QAQShBsK3EABDmKwALIAcoAvQBIgYoAgAhCCAHQQE6AJgCIAEQ9D8gB0HgAWoiASAGQRhqNgIA +IAdB3AFqIAg2AgAgB0HYAWogBkEEajYCACAHQQE6AJwCIAMQ6j8gASgCAC0AAARAQQshBgwECyAE +QUBrIAdB1AFqKAIAKAKIAUEIahDlNSAEQThqIAQoAkAgBCgCRCgCUBEBACAEKAI4IQEgB0H0AWog +BCgCPCIGNgIAIAcgATYC8AELIARBuARqIAdB8AFqIgwoAgAgHyAGKAIMEQMAIAQtALgEIgZBDEYN +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 +fyAEIAE2AqgGIAQgCjYCpAYgBCAINgKgBiAEIAY2ApwGIA0FQQALNgKYBiAEQbAFaiIBIARBmAZq +IghB2J/EABDmLCAEQYwGakHInMQANgIAIARBiAZqIARB6AVqNgIAIARB1JrEADYCgAYgBCAHQbAB +ajYC6AUgBCABNgKEBiAEIARBuARqNgL8BSAEIARB8ARqNgL4BSAIIAtBHGogBEH4BWoQ8kFBkJHb +ACgCACAIEMQ0C0ECIQELIAdByAFqELo5IAdBxQFqIQhBCyEGDAULQQQMAgtB0JbEAEERIARBuARq +QeCnxABB1JfEABCJGAALIAhBAzoAAEEFCyEBIAIgAToAAEEEDAoLIAdBxQFqIggtAABFDQAgB0GY +AWoQsUsLQQAhDCAIQQA6AAAgBEGwA2oiCyAEQYgFakEiEM1PGiACQQE6AAAgBEHUA2ogC0EiEM1P +GiAQEIYgIAZBC0cNAiAHQQs6AHggB0H5AGogAToAACABQf8BcQ0FIAdBvAFqIgxBADoAACAHIAdB +7ABqKAIAIgE2AsQBIAdBwAFqIAdB6ABqKAIAIgg2AgAgB0GkAWogATYCACAHQaABaiAINgIAIAdB +nAFqIg0gB0HwAGooAgBBBGoiBjYCAAsgB0GwAWoiAiABNgIAIAdBrAFqIgEgCDYCACAHQagBaiAG +NgIAIARBGGogBigCAEHcAGooAgBBCGoQ5TUgBEEQaiAEKAIYIAEoAgAgAigCACAEKAIcKAJcEQUA +IAQoAhAhBiAHQbgBaiAEKAIUIgE2AgAgB0G0AWogBjYCAAsgBEG4BGogBiAfIAEoAgwRAwAgBCgC +uAQiF0ECRg0FIARBsgNqIAQtAL8EOgAAIAQgBC8AvQQ7AbADIAQtALwEIQYgBCgCwAQhASAEKALE +BCEIIAQoAsgEIQIgBCgCzAQhCiAEKALQBCELIAQoAtQEIRAgBCkD2AQhKiAHQbQBahCZNiAXDQEg +B0GoAWooAgAhAyAEICo3A9AEIAQgEDYCzAQgBCALNgLIBCAEIAo2AsQEIAQgAjYCwAQgBCAINgK8 +BCAEIAE2ArgEIARBCGogAxDcRiAHQawBaigCACAHQbABaigCACAEKAIIIAQoAgwQgDxFDQIgBCAD +EOFGIARBiAVqIgEgBEG4BGogBCgCACAEKAIEELYcIAEQlUUgBCkD0AQhKiAEKALMBCEQIAQoAsgE +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 +AkAgCSgCgAJFDQBBxJPbACgCAEECSw0AQeCE2wAQ+z4iAUH/AXFFDQBBACEKQeCE2wAoAgAgARD1 +LkUNAEHghNsAKAIAIgtBKGooAgAhCCALQSRqKAIAIQIgCygCHCEBIAkgC0EgaigCACIGBH8gCUEA +NgLQASAJIAg2AswBIAkgAjYCyAEgCSAGNgLEAUEBIQogAQVBAAs2AsABIAlB2AJqIAlBwAFqQfTL +wQAQ2iwgCUHMAWpCADcCACAJQQE2AsQBIAlByMzBADYCwAEgCUGwwMEANgLIASAJIAYgCksEfyAJ +IAo2AogBIAkgCDYChAEgCSACNgKAASAJIAY2AnwgAQVBAAs2AnggCUHYAGoiASAJQfgAaiICQfTL +wQAQ2iwgCUGgAmpB5MvBADYCACAJQZwCaiAJQYgCajYCACAJQaDAwQA2ApQCIAkgATYCmAIgCSAJ +QcABajYCkAIgCSAJQdgCajYCjAIgCSAJQfgBajYCiAIgAiALQRxqIAlBjAJqEPJBQeCE2wAoAgAg +AhDENAsgCUH4AWoQnT0MAgsgAgRAIAlBwAFqIA9BDGtBJBDNTxogCUGMAmoQghcgCUH4AWoQnT0M +AwsgCigCCCIIBEAgCigCDCEKIAlByAJqIA9BGGopAgA3AwAgCUHAAmogD0EQaikCADcDACAJQbgC +aiAPQQhqKQIANwMAIAkgDykCADcDsAIgCUEIaiAIIAoQwjAgCUHAAWoiAiAOIAkoAgggCSgCDCAJ +QbACahDZBiACEKJFIAlB+AFqIAggChDMKQsgGEEwayEYIA9BMGohDyABIQoMAAsACyAJQdwBaiAO +QRhqKQIANwIAIAlB1AFqIA5BEGopAgA3AgAgCUHMAWogDkEIaikCADcCACAJIA4pAgA3AsQBIA4t +AEwEQCAOQTBqEJ09CyAOQQA6AEwgDkEkahCdPUEADAELIA4tAEwEQCAOQTBqEJ09CyAOQQA6AEwg +DkEkahCdPSAOEKwWQQELNgIAIABBBGogCUHAAWpBJBDNTxpBAQshACAOIAA6AE0gCUHwAmokAAu2 +HwMTfwF8AX4jAEGgDWsiAiQAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QCAAQaABagJ/AkACQAJAAkAgAC0AmBVBAWsOAwwCAQALIAAgAEHICmpByAoQzU8aCwJAAkACQAJA +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 +IAIgIDoAQSACIB86AEAgAiAeOgA/IAIgHToAPiACIBw6AD0gAiAbOgA8IAIgGjoAOyACIBk6ADog +AiAYOgA5IAIgFzoAOCACIBY6ADcgAiAVOgA2IAIgFDoANSACIBM6ADQgAiASOgAzIAIgEToAMiAC +IBA6ADEgAiAPOgAwIAIgDjoALyACIA06AC4gAiAMOgAtIAIgCzoALCACIAU2AiggAiAKOgAnIAIg +CToAJiACIAc6ACUgAiADOgAkQQAhBwJAIAMEQCAFIQMMAQsgBiIDRQRAIAJBImogAkEkakEBciID +QQJqLQAAOgAAIAJBCGogAkEsaiIEQQhqKQIANwMAIAJBEGogBEEQaikCADcDACACQRhqIARBGGot +AAA6AAAgAiADLwAAOwEgIAIgBCkCADcDACAFIQMLIAZFIQQgCEUEQCACQShqEOUZCyAEIQcLIAZF +IARFckUEQCACQcgAahDlGQsgB0UNASAAIAIvASA7AAEgAEEIaiACKQMANwIAIABBBGogAzYCACAA +QQNqIAJBImotAAA6AAAgAEEQaiACQQhqKQMANwIAIABBGGogAkEQaikDADcCACAAQSBqIAJBGGot +AAA6AABBAAwCCyACQRg2AiQgASACQSRqEIAxIQEgAEEBOgAAIAAgATYCBAwCCyAAIAMgARDYIzYC +BEEBCzoAAAsgAkHQAmokAAu7FwEifyMAQdACayICJAAgAiABELwWAkACQAJ/IAItAABFBEAgAi0A +AQ0CIAJBBTYCJCABIAJBJGoQgDEMAQsgAigCBAshASAAQQE6AAAgACABNgIEDAELIAACfwJAIAIt +AAJB2wBHBEAgASACQc8CakH0idIAEIUFIQMMAQsgASABLQAcQQFrIgM6ABwgA0H/AXEEQCABQRRq +IgMgAygCAEEBajYCACACQQE6AFAgAiABNgJMIAJB1ABqIAJBzABqEPUHAn8CfwJAIAItAFRFBEAg +Ai0AVQ0BQQAgAkHPAmpB9InSABDYFwwCCyACKAJYDAELIAItAFYhByACQdwAaiACQcwAahD1ByAC +LQBcBEAgAigCYAwBCyACLQBdBEAgAi0AXiEJIAJB5ABqIAJBzABqEPUHAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACLQBkRQRAIAItAGVF +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 +KAKoAQwWCyACKAKwAQwVCyACKAK4AQwUCyACKALAAQwTCyACKALIAQwSCyACKALQAQwRCyACKALY +AQwQCyACKALgAQwPCyACKALoAQwOCyACKALwAQwNCyACKAL4AQwMCyACKAKAAgwLCyACKAKIAgwK +CyACKAKQAgwJCyACKAKYAgwICyACKAKgAgwHCyACKAKoAgwGCyACKAKwAgwFCyACKAK4AgwECyAC +KALAAgwDCyACKALIAgwCCyACKAIoDAELQQEgAkHPAmpB9InSABDYFwshBUEBCyEDQQEhBCABIAEt +ABxBAWo6ABwgAiABEJ8MIgY2AkggAiAjOgBEIAIgIjoAQyACICE6AEIgAiAgOgBBIAIgHzoAQCAC +IB46AD8gAiAdOgA+IAIgHDoAPSACIBs6ADwgAiAaOgA7IAIgGToAOiACIBg6ADkgAiAXOgA4IAIg +FjoANyACIBU6ADYgAiAUOgA1IAIgEzoANCACIBI6ADMgAiAROgAyIAIgEDoAMSACIA86ADAgAiAO +OgAvIAIgDToALiACIAw6AC0gAiALOgAsIAIgBTYCKCACIAo6ACcgAiAJOgAmIAIgBzoAJSACIAM6 +ACRBACEHAkAgAwRAIAUhAwwBCyAGIgNFBEAgAkEiaiACQSRqQQFyIgNBAmotAAA6AAAgAkEIaiAC +QSxqIgRBCGopAgA3AwAgAkEQaiAEQRBqKQIANwMAIAJBGGogBEEYai0AADoAACACIAMvAAA7ASAg +AiAEKQIANwMAIAUhAwsgBkUhBCAIRQRAIAJBKGoQ5RkLIAQhBwsgBkUgBEVyRQRAIAJByABqEOUZ +CyAHRQ0BIAAgAi8BIDsAASAAQQhqIAIpAwA3AgAgAEEEaiADNgIAIABBA2ogAkEiai0AADoAACAA +QRBqIAJBCGopAwA3AgAgAEEYaiACQRBqKQMANwIAIABBIGogAkEYai0AADoAAEEADAILIAJBGDYC +JCABIAJBJGoQgDEhASAAQQE6AAAgACABNgIEDAILIAAgAyABENgjNgIEQQELOgAACyACQdACaiQA +C+cWAQt/IwBBsAFrIgMkACABAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtABdBAWsOBQ8L +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 +zABqEKUIIAItAKQCDRggAi0ApQJFBEBBGiACQc8CakH8gccAEN4XDCALIAItAKYCIR4gAkGsAmog +AkHMAGoQpQggAi0ArAINGSACLQCtAkUEQEEbIAJBzwJqQfyBxwAQ3hcMIAsgAi0ArgIhHyACQbQC +aiACQcwAahClCCACLQC0Ag0aIAItALUCRQRAQRwgAkHPAmpB/IHHABDeFwwgCyACLQC2AiEgIAJB +vAJqIAJBzABqEKUIIAItALwCDRsgAi0AvQJFBEBBHSACQc8CakH8gccAEN4XDCALIAItAL4CISEg +AkHEAmogAkHMAGoQpQggAi0AxAINHCACLQDFAkUEQEEeIAJBzwJqQfyBxwAQ3hcMIAsgAi0AxgIh +IiACQSRqIAJBzABqEKUIIAItACQNHSACLQAlRQRAQR8gAkHPAmpB/IHHABDeFwwgC0EIdCAEciAF +QRB0ciADQRh0ciEFIAItACYhI0EBIQhBAAwgCyACKAJoDB4LIAIoAnAMHQsgAigCeAwcCyACKAKA +AQwbCyACKAKIAQwaCyACKAKQAQwZCyACKAKYAQwYCyACKAKgAQwXCyACKAKoAQwWCyACKAKwAQwV +CyACKAK4AQwUCyACKALAAQwTCyACKALIAQwSCyACKALQAQwRCyACKALYAQwQCyACKALgAQwPCyAC +KALoAQwOCyACKALwAQwNCyACKAL4AQwMCyACKAKAAgwLCyACKAKIAgwKCyACKAKQAgwJCyACKAKY +AgwICyACKAKgAgwHCyACKAKoAgwGCyACKAKwAgwFCyACKAK4AgwECyACKALAAgwDCyACKALIAgwC +CyACKAIoDAELQQEgAkHPAmpB/IHHABDeFwshBUEBCyEDQQEhBCABIAEtACRBAWo6ACQgAiABEJ8M +IgY2AkggAiAjOgBEIAIgIjoAQyACICE6AEIgAiAgOgBBIAIgHzoAQCACIB46AD8gAiAdOgA+IAIg +HDoAPSACIBs6ADwgAiAaOgA7IAIgGToAOiACIBg6ADkgAiAXOgA4IAIgFjoANyACIBU6ADYgAiAU +OgA1IAIgEzoANCACIBI6ADMgAiAROgAyIAIgEDoAMSACIA86ADAgAiAOOgAvIAIgDToALiACIAw6 +AC0gAiALOgAsIAIgBTYCKCACIAo6ACcgAiAJOgAmIAIgBzoAJSACIAM6ACRBACEHAkAgAwRAIAUh +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 +iMTIABD5GgwCCyAAQQk6AAAgACABOgABDAELIAItACEhASAAQQk6AAAgACABOgABCyACQTBqJAAL +8RcBBH8CQCAAKAIAQYCAgIB4Rg0AAkACQAJAIAAtAJALDgQAAwMBAwsgAEGAC2oQrDkgAEHoCmoQ +qUsMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQeQAai0AAA4FAicnAQAnCwJAAkACQAJAAkAC +QCAAQewDai0AAA4HKisrAgAEASsLAkACQAJAAkAgAEHMBmotAAAOBwYrKwABAgMrCyAAQdAGahDL +OAwpCwJAAkACQCAAQY0Hai0AAEEDaw4CAAErCyAAQZAHahDaPwwBCwJAAkACQCAAQbEHai0AAEED +aw4CAAEDCyAAQbQHahDZPwwBCyAAQbQHahCZNiAAQagHahCaTAsgAEGcB2oQoT0gAEGwB2pBADoA +AAsgAEGMB2pBADoAAAwoCwJAAkACQCAAQdAGaigCACIBLQA1DgUAKSkCASkLIAFBIGoQ+j4MKAsC +QAJAAkACQCABQcQDai0AAA4HKSoqAAECAyoLAkACQAJAIAFBjARqLQAAQQNrDgMAAQIpCyABQZAE +ahDLOAwoCwJAAkAgAUG9BGotAABBA2sOAgEAKQsgAUHEBWotAABBA0cNJwJAAkAgAUH1BGotAABB +A2sOAgABKQsgAUH4BGoiAhDjKiACENkiDCcLIAFBkAVqLQAAQQNHDSYCQAJAIAFBjAVqKAIAIgIt +AOIBQQNrDgIAAScLAkACQCACQekCai0AAEEDaw4CAQAnCwJAAkACQCACQc0Eai0AAEEDaw4DAAEC +KAsCQAJAAkACQAJAAkACQAJAIAJB3QVqLQAAQQNrDgYDBAAGAQIvCyACQewFahD+PyACQcAFahCa +TAwECyACQewFahD+PyACQcwFahCaTAwFCyACQcgGahC0PSACQcgOahC4SyACQeAFahDEKSACQbgG +ahCIPwwpCyACQewFahCZNiACQeAFahCIPwwpCyACQeAFahDUMAsgAkG8BWoQrzkgAkGwBWoiAxDz +MiADEKA9DCYLIAJB4AVqENQwCyACQcgFahCvOQwkCwJAAkACQCACQfYGai0AAA4EAAICAQILIAJB +6AZqEIg/DAELIAJBkAVqEPs/IAJB3AZqEIYTIAJB9AZqQQA6AAAgAkHQBmoQiD8gAkH1BmpBADoA +AAsgAkGYA2oQxCkgAkHMBGoMJQsgAkHUDGotAABBA0YEQCACQfgFahC0PQsgAkGYBWoQxCkgAkHQ +BGoQzwcgAkHMBGoMJAsgAkHwAmoiAxDcKiADENkiDCQLIAIoAvABIgQgAkH0AWooAgAiAygCABEA +ACADKAIEBEAgAygCCBogBBCYBAsgAkHoAWoQ+j4gAkGwAWoQvEcgAkEAOgDgASACKQMgQgJSDSUg +AkEoaiIDLQAAQQ9GDSUgAxDPBwwlCyABQcAEaiICEOQqIAIQ2SIMJgsCQAJAIAFBsQZqLQAAQQNr +DgIBAB8LAkACQAJAIAFByAZqLQAAQQNrDgMAAQIgCwJAAkAgAUGZB2otAABBA2sOAgEAIQsgAUH4 +C2otAABBA0cNHwJAAkACQCABQY0Iai0AAEEDaw4CAAEiCyABQZAIaiICEN8qIAIQ2SIMAQsgAUHN +C2otAABBA0cNACABQbAIahDuLyABQfQKahDhEiABQcwLakEAOgAACyABQYwIai0AAEUNHiABQeAH +ahDZIgweCyABQaAHaiICEOEqIAIQ2SIMHgsgAUGwDGotAABBA0cNHgJAAkACQCABQbwIai0AAEED +aw4DAgABIQsgAUGcCmotAABBA0cNHCABQeAIahD7PwwcCwJAAkACQCABQa0Kai0AAEEDaw4CAAEe +CyABQbAKahDuLwwBCyABQbAKahCvOAsgAUHUCWoQ4RIgAUGsCmpBADoAAAwbCyABQfQIahCZNiAB +QcAIahD/PAwbCwJAAkAgAUGhB2otAABBA2sOAgABHwsgAUGoB2oiAhDmKiACENkiDBkLAkACQCAB +QdoHai0AAEEDaw4CAAEaCyABQdwHahCZNgwYCwJAAkACQAJAAkAgAUGYFGotAAAOBwQbGwIAAwEb +CwJAAkACQCABQfAcai0AAA4FABoaAQIaCyABQaAUahDjPwwZCwJAAkACQAJAAkACQCABQb4eai0A +AEEDaw4EAgMAAR0LAkAgAUHIJ2otAAAOBAQFBQAFCyABQcAeahCQEQwECyABQcAeahC0PQwDCyAB +QcAeahDWNAwZCyABQcAeahDUMAwXCyABQfAmahDdPwsgAUGwHmoQmkwMFQsgAUH0HGoQrzgMFgsg +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 +AUG5CGpBADoAACABQbQIaiABQdAAajYCACABQYwIaiAINgIAIAFBiAhqIAo2AgAgAUGECGogBjYC +ACABQYAIaiAJNgIAIAFB+AdqIAU2AgALIANB6ARqIAFB4AdqIg0gAhC0AiADKALYBSIMQQNGDQEg +AygCiAUhCyADKAKEBSECIAMoAoAFIQggAygC/AQhCiADKAL4BCEGIAMoAvQEIQkgAygC8AQhByAD +KALsBCEFIAMoAugEIQQgA0GoAmogA0GMBWpBzAAQzU8aIANBoAJqIg4gA0H0BWooAgA2AgAgA0GY +AmoiDyADQewFaikCADcDACADQZACaiIQIANB5AVqKQIANwMAIAMgAykC3AU3A4gCIA0QshcgDEEC +Rg0CIANBnAFqIANBqAJqQcwAEM1PGiADQYQCaiAOKAIANgIAIANB/AFqIA8pAwA3AgAgA0H0AWog +ECkDADcCACADIAw2AugBIAMgCzYCmAEgAyACNgKUASADIAg2ApABIAMgCjYCjAEgAyAGNgKIASAD +IAk2AoQBIAMgBzYCgAEgAyAFNgJ8IAMgBDYCeCADIAMpA4gCNwLsASABQdAAaiENIAMoAtABRQ0D +IAFB+ABqIQ4gDEUNBCADQewBaiEGIAMgAUG8BGoiAjYC9AIgASgCvARBAWsOAgYHBQsgBEEIdiEM +IBJCIIinIQsgEqchAgwNCyAAQQM2ApABQQQMDgsgBEEIdiEMDAsLIANBGGogDRDxLkEMIQQgAygC +GCEFIAMoAhwhBwwJCyADQSBqIA4Q8S5BDCEEIAMoAiAhBSADKAIkIQcMCAsgA0HoBGoiBCABQdgE +akHAARDNTxogAyAGNgKoBiADQfgCaiADQfQCaiAEIAYQwQogAy0A+AIiBEEPRw0GIANB6ARqIgUg +AUGYBmpBwAEQzU8aIANBxARqIgQgA0HQAWoQ4BAgAyAENgKoBiADQfgCaiADQfQCaiAFIAQQwQog +Ay0A+AIiBEEPRwRAIAMvAPkCIAMtAPsCQRB0ciEMIAMoApgDIQsgAygClAMhAiADKAKQAyEIIAMo +AowDIQogAygCiAMhBiADKAKEAyEJIAMoAoADIQcgAygC/AIhBSADQcQEahCLPgwICyADQcQEahCL +PgwFCyADQegEaiIEIAFB2ARqQcABEM1PGiADIAY2AqgGIANB+AJqIANB9AJqIAQgBhDBCiADLQD4 +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 +IANBADYCfCADIAk2AnggAyAKNgJ0IAMgCDYCcEEBIQYgBAVBAAs2AmwgA0EsaiADQewAakHAzMIA +EN0sIANB+ABqQgA3AgAgA0EBNgJwIANBiM3CADYCbCADQaTJwgA2AnRBACECIAMgBiAISQR/IAMg +BjYCZCADIAk2AmAgAyAKNgJcIAMgCDYCWCAEBUEACzYCVCADQUBrIgQgA0HUAGoiAkHAzMIAEN0s +IANBKGpBkM3CADYCACADQSRqIANB6ABqNgIAIANBlMnCADYCHCADIAFBFGo2AmggAyAENgIgIAMg +A0HsAGo2AhggAyADQSxqNgIUIAIgB0EcaiADQRRqEPJBQayD2wAoAgAgAhDENAwCC0G4g9sAKAIA +IgVBHGohBiAFQSBqKAIAIgcEQCAFQShqKAIAIQggBUEkaigCACEJIAUoAhwhBCADQQA2AnwgAyAI +NgJ4IAMgCTYCdCADIAc2AnALIAMgBDYCbCADQRRqIgQgA0HsAGoiBUGgzcIAEN0sIANB+ABqQgA3 +AgAgA0GUycIANgJcIANBATYCcCADQdTNwgA2AmwgA0GkycIANgJ0IAMgBTYCWCADIAQ2AlQgA0FA +ayIEIAYgA0HUAGoQ4EFBuIPbACgCACAEEMQ0DAILIAhBBjoAAAwDCyADQewAaiABKAIIQRRqEOAQ +IANBsAFqIANB+ABqKQIANwMAIANBuAFqIANBgAFqKAIANgIAIAMgAykCcDcDqAEgAygCbCECDAEL +IAEoAgAQnk0LIAFBCGoQmkwgAUEEahC9OSAAIAI2AgQgAEEANgIAIABBCGogAykDqAE3AgAgAEEQ +aiADQbABaikDADcCACAAQRhqIANBuAFqKAIANgIAQQEMAQsgAEEBNgIAQQQLOgAXIANBwAFqJAAL +7xoCCX8BfiMAQUBqIgIkACACQTBqIAEQizICQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAn8C +QAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8gAi0AMEEERgRAIAIvADEiBEEIdgwBCyAC +KQMwIgtC/wGDQgRSDQEgC0IIiKchBCALQhCIpwshAyAEQf8BcSIEQQFrDiQCAwQECAkKCwwNDg8Q +EQUFBQUGBgYhIiMkJSYnJycnJycnJwcBCyAAIAs3AgQgAEEAOgAADDkLIAAgAxDRSAw4CyAAIAMQ +yEoMNwsjAEEgayIBJAAgAUEHOgAIIAAgAUEIaiABQR9qQfDwyAAQ+hogAUEgaiQADDYLIwBBIGsi +ASQAIAFBADoACCABIARBA0Y6AAkgACABQQhqIAFBH2pB8PDIABD6GiABQSBqJAAMNQsgBEEPaw4E +DQ4PEAwLIARBE2sOAxUWFxQLIABBgsgAOwEADDILIAJBMGogARCKJSACLQAwIgFBA0YNMCACLwAx +IQMgACACKQI0NwIEIAAgAzsAASAAIAE6AAAMMQsgAkEwaiABEMQcIAItADAiAUEDRg0uIAItADEh +AyACLwEyIQQgACACKQI0NwIEIAAgAToAACACIAQ7AAEgAiADOgAAIAAgAi8BADsAAQwwCyACQTBq +IAEQqBcgAi0AMCIBQQNGDSwgAi8AMSEDIAAgAikCNDcCBCAAIAM7AAEgACABOgAADC8LIAJBMGog +ARCuESACKAIwRQ0qIAIoAjQhASAAIAJBOGopAwA3AgQgACABQQh2OwABIAAgAToAAAwuCyACQTBq +IAEQ+SAgAi0AMCIBQQNGDSggAi8AMSEDIAAgAikCNDcCBCAAIAM7AAEgACABOgAADC0LIAJBMGog +ARDEHCACLQAwIgFBA0YNJiACLQAxIQMgAi8BMiEEIAAgAikCNDcCBCAAIAE6AAAgAiAEOwAFIAIg +AzoABCAAIAIvAQQ7AAEMLAsgAkEwaiABEKgXIAItADAiAUEDRg0kIAIvADEhAyAAIAIpAjQ3AgQg +ACADOwABIAAgAToAAAwrCyACQTBqIAEQrhEgAigCMEUNIiACKAI0IQEgACACQThqKQMANwIEIAAg +AUEIdjsAASAAIAE6AAAMKgsgAkEwaiABEKgXIAItADAiAUEDRg0gIAIvADEhAyAAIAIpAjQ3AgQg +ACADOwABIAAgAToAAAwpCyACQTBqIAEQrhEgAigCMEUNHiACKAI0IQEgACACQThqKQMANwIEIAAg +AUEIdjsAASAAIAE6AAAMKAtBjsPIAEEoQbjDyAAQ5isACyADQf8BcSEEDAULIAJBMGogARCUHCAC +LQAwIgNBCUYEQCACLQAxDAQLDAILIAJBMGogARDnGCACLQAwIgNBCUYEQCACLwEyDAMLDAELIAJB +MGogARCSFSACLQAwIgNBCUYEQCACKAI0DAILCyACQSJqIAItADM6AAAgAiACLwAxOwEgIAIpAjgh +CyACKAI0CyEEIANBCUcNAQsjAEEgayIDJAAgA0EQaiABIAQQkx8CQAJAAkACQCADLQAQIgFBCUYE +QCADQRxqKAIAIQEgA0EYaigCACEEIAMoAhRFBEAgA0EEaiAEIAEQjwQgAygCBEUEQCAAIAMoAggg +A0EMaigCABCdLQwGCyADKQIIIQsgA0EQaiAEIAEQlC1BCSEBIAMtABBBCUYEQCAAIAMpAhQ3AgQg +AEEMaiADQRxqKAIANgIADAULIAAgCzcCBCADQRBqEMc9QQchAQwECyADQQRqIAQgARCPBCADKAIE +RQ0CIAMpAgghCyADQRBqIAQgARCULUEJIQEgAy0AEEEJRgRAIAAgAykCFDcCBCAAQQxqIANBHGoo +AgA2AgAMAgsgACALNwIEIANBEGoQxz1BByEBDAELIAAgAy8AETsAASAAQQNqIAMtABM6AAAgAykC +FCELIAAgAygCHDYCDCAAIAs3AgQgACABOgAADAMLIAAgAToAAAwCCyAAIAMoAgggA0EMaigCABCd +LQwBCyAAIAE6AAALIANBIGokAAwgCyAAIAIvASA7AAEgAEEDaiACQSJqLQAAOgAAIAAgCzcCCCAA +IAQ2AgQgACADOgAADB8LQY7DyABBKEHIw8gAEOYrAAsgAkEwaiABEJQcIAItADAiBEEJRgRAIAIt +ADEMBAsMAgsgAkEwaiABEOcYIAItADAiBEEJRgRAIAIvATIMAwsMAQsgAkEwaiABEJIVIAItADAi +BEEJRgRAIAIoAjQMAgsLIAJBImogAi0AMzoAACACIAIvADE7ASAgAikCOCELIAIoAjQLIQMgBEEJ +Rw0HIAJBMGogASADEJMfIAItADAiAUEJRgRAIAAgAkE4aigCACACQTxqKAIAEJQtDBoLIAAgAi8A +MTsAASAAQQNqIAItADM6AAAgAikCNCELIAAgAigCPDYCDCAAIAs3AgQgACABOgAADBkLIANB/wFx +DA0LIAJBMGogARDnGCACLQAwIgNBCUYNCyAAIAIpAjQ3AgQgAEEMaiACQTxqKAIANgIAIAItADEh +ASAAIAIvATI7AQIgACABOgABIAAgAzoAAAwXCyACQTBqIAEQkhUgAi0AMCIDQQlGDQkgACACLwAx +OwABIABBA2ogAi0AMzoAACACKAI0IQEgACACKQI4NwIIIAAgATYCBCAAIAM6AAAMFgsgA0H/AXEM +BwsgAkEwaiABEOcYIAItADAiA0EJRg0FIAAgAikCNDcCBCAAQQxqIAJBPGooAgA2AgAgAi0AMSEB +IAAgAi8BMjsBAiAAIAE6AAEgACADOgAADBQLIAJBMGogARCSFSACLQAwIgNBCUYNAyAAIAIvADE7 +AAEgAEEDaiACLQAzOgAAIAIoAjQhASAAIAIpAjg3AgggACABNgIEIAAgAzoAAAwTCyACQTBqIAEg +A0EIdCAEchCdCSACLQAwIgNBCUcEQCAAIAIvADE7AAEgAEEDaiACLQAzOgAAIAIoAjQhASAAIAIp +Ajg3AgggACABNgIEIAAgAzoAAAwTCyABIAEoAhBBAWsiAzYCECADRQ0BIwBBIGsiAyQAIANBCToA +CCACQTBqIANBCGogA0EfakHw8MgAEPoaIANBIGokACAAIAIpAjA3AgAgAEEIaiACQThqKQIANwIA +IAEgASgCEEEBajYCEAwSCyAAIAIvASA7AAEgAEEDaiACQSJqLQAAOgAAIAAgCzcCCCAAIAM2AgQg +ACAEOgAADBELIABBCDoAAAwQCyACKAI0DAELIAIvATILIQQgASABKAIQQQFrIgM2AhAgA0UEQCAA +QQg6AAAMDgsjAEEgayIDJAAgA0ELOgAIIAJBMGogA0EIaiADQR9qQfDwyAAQ+hogA0EgaiQAAkAg +Ai0AMCIDQQlGBEAgAkEYaiACQTxqKAIANgIAIAIgAikCNDcDECAERQRAQQkhBCACKQIUIQsgAigC +ECEDDAILIAJBEGoQiD9BBCEEQQAhAwwBCyACIAIpADE3AyAgAiACQThqKQAANwAnIABBCGogAikA +JzcAACAAIAIpAyA3AAEgACADOgAADA4LIAAgCzcCCCAAIAM2AgQgACAEOgAAIAEgASgCEEEBajYC +EAwNCyACKAI0DAELIAIvATILIQYgASABKAIQQQFrIgM2AhAgA0UEQCAAQQg6AAAMCwsgAiAGNgIM +IAIgATYCCCACQTBqIQQjAEEwayIDJAAgA0EIakGAgMAAIAJBCGoiBygCBCIFIAVBgIDAAE8bQQAQ +3RggA0EANgIcIAMgAykDCDcCFCAFQQFrIQUgBygCACEJAkADQCAFQX9HBEAgByAFNgIEIANBIGog +CRCCAiADLQAhIQggAy0AICIKQQlHBEAgBCADKQAjNwADIARBCGogA0EoaikAADcAACAEIAMtACI6 +AAIgBCAIOgABIAQgCjoAACADQRRqEIg/DAMFIANBFGogCBCyLyAFQQFrIQUMAgsACwsgBCADKQIU +NwIEIARBCToAACAEQQxqIANBHGooAgA2AgALIANBMGokAAJAIAItADAiA0EJRgRAIAJBGGogAkE8 +aigCADYCACACIAIpAjQ3AxAgAigCDCIDRQRAQQkhBCACKQIUIQsgAigCECEDDAILIAYgA2shAyAC +QRBqEIg/QQQhBAwBCyACIAIpADE3AyAgAiACQThqKQAANwAnIABBCGogAikAJzcAACAAIAIpAyA3 +AAEgACADOgAADAsLIAAgCzcCCCAAIAM2AgQgACAEOgAAIAEgASgCEEEBajYCEAwKCyAAIAIrAzgQ +jzEMCQsgACACKgI0uxCPMQwICyAAIAIpAzgQjTEMBwsgACACNAI0EI0xDAYLIAAgAjMBMsMQjTEM +BQsgACACLQAxEMhKDAQLIAAgAikDOBCOMQwDCyAAIAI1AjQQjjEMAgsgACACMwEyQv//A4MQjjEM +AQsgACACLQAxENFICyACQUBrJAALkTcCGX8EfiMAQeAFayIEJABBxJPbACgCACIaQQNJBEACQAJA +QcST2wAoAgBBAksNAEHwjtsAEPs+IgZB/wFxRQ0AQfCO2wAoAgAgBhD1LkUNAEHwjtsAKAIAIgtB +KGooAgAhDCALQSRqKAIAIQcgCygCHCEGIAQgC0EgaigCACIZBH8gBEEANgKoBCAEIAw2AqQEIAQg +BzYCoAQgBCAZNgKcBEEBIRQgBgVBAAs2ApgEIARBqANqIARBmARqQbTYzwAQuS0gBCACKAIIIghB +LGopAgA3AqADIAQgBEGgA2o2AvQCIAQgFCAZTwR/QQAFIAQgDDYCpAQgBCAHNgKgBCAEIBk2ApwE +IAQgFDYCqAQgFEEBaiEUIAYLNgKYBCAEQdQDaiAEQZgEakG02M8AELktIAQgCEE0aikCADcCwAMg +BCAEQcADajYC+AIgBCAUIBlJBH8gBCAUNgKoBCAEIAw2AqQEIAQgBzYCoAQgBCAZNgKcBCAGBUEA +CzYCmAQgBEH8AmoiBiAEQZgEaiIHQbTYzwAQuS0gCEEMaikCACEdIARBuARqQcTYzwA2AgAgBEGs +BGpBxIzPADYCACAEQbSMzwA2AqAEIARBtARqIARBlARqNgIAIARBqARqIARB+AJqNgIAIAQgHTcC +7AMgBCAEQfQCajYCnAQgBCAEQagDajYCmAQgBCAEQewDajYClAQgBCAGNgKwBCAEIARB1ANqNgKk +BCAEQYAEaiIGIAtBHGogBxDhQSAEQdABaiALIAYQxDIMAQsgBEEANgLoASAEQQI2AtgBCyAEQegC +aiAEQegBaikDADcDACAEQeACaiAEQeABaikDADcDACAEQdgCaiIGIARB2AFqKQMAIh43AwAgBCAE +KQPQATcD0AIgHqdBAkcEQCAGIARB0AJqEPgnCyAEIARB0AJqNgLwAgtBACEUIAMoAgAiFgRAIAQg +FjYClAMgBEEANgKQAyAEIBY2AoQDIARBADYCgAMgBCADKAIEIgY2ApgDIAQgBjYCiAMgAygCCCEU +QQEhEAsgBCAUNgKcAyAEIBA2AowDIAQgEDYC/AIgBEE4aiAEQfwCahDGEQJAAkACQAJAAn8gBCgC +OCIDBEAgBCgCPCEIIARBMGogAxDxLiAEIAQoAjQiAzYCpAMgBCAEKAIwIhQ2AqADIARB1ANqIgYg +FCADEN8mIARBmARqIREjAEGQAWsiCSQAAkACQAJAAkACQCAGKAIAQQFrDgIAAQILIAlBMGogCCgC +ACAIKAIEEPU1IAkoAjAiB0GAgICAeEYNAiAJIAkoAjgiBjYCDCAJIAkoAjQiAzYCCCAJIAc2AgQg +CUEwaiADIAYQ3REgCS0AMEUEQCARIAkvADE7AAAgEUECaiAJLQAzOgAAIAlBGGogCUFAaykCACIf +NwMAIAlBIGogCUHIAGopAgAiIDcDACAJQShqIAlB0ABqLQAAIgY6AAAgCSAJQThqKQIAIh03AxAg +CUE0aigCACEDIBFBH2ogBjoAACARQRdqICA3AAAgEUEPaiAfNwAAIBEgHTcAByARQQQ6ADggESAD +NgADIAlBBGoQiD8MBAsgCUGIAWogCUHEAGooAgA2AgAgCUGAAWogCUE8aikCADcDACAJIAkpAjQ3 +A3ggCUH4AGoQoRQhAyARQQU6ADggESADNgIAIAlBBGoQiD8MAwsgCUEwaiEcIAgoAgAhByAIKAIE +IQYjAEEgayIMJAAgDEEIaiIDIAcgBhCnOSMAQaABayIHJAAgByADEMktIAdB5ABqIRVCACEdQQAh +BkEAIRAjAEHQAWsiBSQAIAVB8ABqIAcQvBYCQAJAAn8gBS0AcEUEQCAFLQBxDQIgBUEFNgIoIAcg +BUEoahCAMQwBCyAFKAJ0CyEDIBVBBDoAOAwBCwJAAkAgBS0AckH7AEcEQCAHIAVBzwFqQfD0zgAQ +hgUhAwwBCyAHIActACRBAWsiAzoAJCADQf8BcUUNASAHEL5BIAVBAToAbCAFIAc2AmggBUEANgKM +ASAFQQA2AqQBIAVCgICAgIABNwKcASAFQS1qIQ4gBUGQAWohD0EBIRdBBCESA0AgBUEoaiETIwBB +IGsiCiQAIApBFGogBUHoAGoiAygCACILELwWAkAgCi0AFEUEQCAKLQAVRQRAIApBAzYCACALIAoQ +gDEhAyATQZmAgIB4NgIAIBMgAzYCBAwCCwJAAkAgCi0AFiIIQSxHBEAgCEH9AEcEQCADLQAEDQIg +CkEINgIAIAsgChCAMSEDIBNBmYCAgHg2AgAgEyADNgIEDAULIBNBmICAgHg2AgAMBAsgAy0ABA0A +IAsQvkEgCiALELwWIAotAAAEQCATIAooAgQ2AgQgE0GZgICAeDYCAAwECyAKLQABBEAgCi0AAiEI +DAILIApBBTYCACALIAoQgDEhAyATQZmAgIB4NgIAIBMgAzYCBAwDCyADQQA6AAQLAkAgCEEiRwRA +IAhB/QBGDQEgCkERNgIAIAsgChCAMSEDIBNBmYCAgHg2AgAgEyADNgIEDAMLIAsQvkEgC0EANgII +IApBFGogC0EMaiALELsIAn8gCigCFCIDQQJHBEAgCigCHCEYIAooAhghGwJAIANFBEACQCAbIBhB +5KrMAEEDEIA8RQRAIBsgGEGD1MwAQQoQgDwNASAbIBhBoNTMAEEIEIA8RQRAIAogGDYCCCAKIBs2 +AgQgCkGNgICAeDYCAAwECyAKQZeAgIB4NgIADAMLIApBlYCAgHg2AgAMAgsgCkGWgICAeDYCAAwB +CyMAQRBrIgskAAJAAkAgGyAYQeSqzABBAxCAPEUEQCAbIBhBg9TMAEEKEIA8DQEgGyAYQaDUzABB +CBCAPEUEQCALQQhqIBgQ7h8gCygCCCEIIAsoAgwgGyAYEM1PIQMgCiAYNgIMIAogAzYCCCAKIAg2 +AgQgCkGMgICAeDYCAAwDCyAKQZeAgIB4NgIADAILIApBlYCAgHg2AgAMAQsgCkGWgICAeDYCAAsg +C0EQaiQACyAKKAIAQZiAgIB4RgRAIAooAgQMAgsgEyAKKQMANwMAIBNBCGogCkEIaikDADcDAAwE +CyAKKAIYCyEDIBNBmYCAgHg2AgAgEyADNgIEDAILIApBFTYCACALIAoQgDEhAyATQZmAgIB4NgIA +IBMgAzYCBAwBCyATIAooAhg2AgQgE0GZgICAeDYCAAsgCkEgaiQAIAUoAiwhAwJAAn8CQAJAIAUo +AigiC0GZgICAeEYNAAJAIAtBmICAgHhHBEACQAJAAkACQEEDIAtB6////wdqIgggCEEDTxtBAWsO +AwECAwALIA0EQEEBIRdBts/PAEEDEPEfIQMMBwsgBUEoaiEIAkAgBUHoAGooAgAiBhDnFiIDRQRA +IAggBhDZDQwBCyAIQQE6AAAgCCADNgIECyAFLQAoRQ0IDAQLIBdBAXFFBEBBASEQQbH4zwBBChDx +HyEDDAULIAVBKGogBUHoAGoQgjkgBSgCLCEDIAUoAigNBCAFKQIwIR0gBUGMAWoQukEgBSAdNwKU +ASAFIAM2ApABQQEhECAFQQE2AowBQQAhFwwICyASQQRHBEBBASEXQe/4zwBBCBDxHyEDDAULIAVB +KGohCwJAIAVB6ABqKAIAIggQ5xYiA0UEQCMAQRBrIgMkACADQQhqIAgQsycgCwJ/IAMtAAhFBEAg +CyADLQAJOgABQQAMAQsgCyADKAIMNgIEQQELOgAAIANBEGokAAwBCyALQQE6AAAgCyADNgIECyAF +LQAoDQIgBS0AKSESDAcLIAUgBSkDMDcDsAEgBSADNgKsASAFIAs2AqgBIAVBuAFqIAVB6ABqEJk5 +IAUoArwBIQMgBSgCuAEiCEGVgICAeEcEQCAFQTBqIAVBsAFqKQMANwMAIAUgBSkDqAE3AyggBSAF +KQPAATcDQCAFIAM2AjwgBSAINgI4IAVBnAFqIAVBKGoQ1xoMBwsgBUGoAWoQxB0MAgsgDQRAIBdB +AXEEQEGx+M8AQQoQ8B8hAwwECyAFQcABaiAPQQhqIggoAgA2AgAgBSAPKQIANwO4ASAFQShqIAVB +nAFqEJsGIAUoAihFBEAgBUEwaiIDKQIAIR0gBSgCLCEXIAMgBUH4AGopAwA3AwAgBUE4aiAFQYAB +aikDADcDACAFQUBrIAVBiAFqKAIANgIAIAVBzABqIAgoAgA2AgAgBSAFKQNwNwMoIAUgDykCADcC +RCAFIAVBKGpBKBDNT0GcAWoQrEsgBiEDQQMgEiASQQRGGwwFCyAFKAIsIQMgBUG4AWoQmhkMAwtB +ASEXQbbPzwBBAxDwHyEDDAILIAUoAiwhAwtBASEXCyAFQZwBahCsSyAXQQFxRSAQRXJFBEAgDxCa +GQtBBAshCyAHIActACRBAWo6ACQgBxCNEyEGIAUgAzYCKCAFQSxqIAVBKBDNTyEIIAUgBjYCZCAF +IB03AlggBSAXNgJUIAUgCzoAYAJAIAtB/wFxQQRHBEAgBkUNASAFQShqEOlCIAYhAwwECyAGRQ0D +IAVB5ABqENo0DAMLIBVBBGogCEE0EM1PGiAVQTtqIAVB4QBqIgZBAmotAAA6AAAgFSAGLwAAOwA5 +IBUgCzoAOAwECyAFQfgAaiAOQQhqKQAANwMAIAVBgAFqIA5BEGopAAA3AwAgBUGIAWogDkEYaigA +ADYCACAFIA4pAAA3A3AgBSgAKSEGQQEhDQwACwALIAcgAxC8UiEDIBVBBDoAOAwBCyAFQRg2Aigg +ByAFQShqEIAxIQMgFUEEOgA4CyAVIAM2AgAgBUHQAWokAAJAIActAJwBQQRHBEAgB0EoaiAHQeQA +akE8EM1PGiAHENUjIgNFBEAgHCAHQShqQTwQzU8aDAILIBxBBDoAOCAcIAM2AgAgB0EoahDpQgwB +CyAcQQQ6ADggHCAHKAJkNgIACyAHEIg/IAdBoAFqJAAgDEEgaiQAIAkoAjAhBiAJLQBoIgNBBEcE +QCARQQRqIAlBNGpBNBDNTxogEUE7aiAJQesAai0AADoAACARIAkvAGk7ADkgESADOgA4IBEgBjYC +AAwDCyARQQU6ADggESAGNgIADAILIAlBPGpCATcCACAJQQE2AjQgCUGUxMwANgIwIAlB/BA2AhQg +CSAJQRBqNgI4IAkgBjYCECAJQewAaiIDIAlBMGoQ+RUgAxCmNCEDIBFBBToAOCARIAM2AgAgBigC +AEEDRw0BIAZBBGoQ+j4MAQsgCSgCNCEDIBFBBToAOCARIAM2AgALIAlBkAFqJAAgBCgCmAQhECAE +An8CQCAELQDQBCIGQQVHBEAgBEHQAWogBEGcBGpBNBDNTxogBEH6AmoiAyAEQdMEai0AADoAACAE +IAQvANEEOwH4AiAGQQRGDQEgBCAQNgKcBCAEQaAEaiAEQdABakE0EM1PGiAEQdQEaiAGOgAAIARB +1QRqIAQvAfgCOwAAIARB1wRqIAMtAAA6AABBCgwCCyAEQaADahD6PkEIDAMLIARBKGogAigCCCIG +QSxqKAIAIAZBMGooAgAQwjAgBCgCKCEQIAQoAiwhAyAEQSBqIAZBNGooAgAgBkE4aigCABDCMCAE +IAM2AqAEIAQgEDYCnAQgBCAEKQMgNwKkBEEFCyIDOgCYBAJAQcST2wAoAgANAEH8jtsAEPs+IgZB +/wFxRQ0AQQAhFkH8jtsAKAIAIAYQ9S5FDQBB/I7bACgCACIMQShqKAIAIQcgDEEkaigCACEGIAwo +AhwhAyAEIAxBIGooAgAiCAR/IARBADYC5AMgBCAHNgLgAyAEIAY2AtwDIAQgCDYC2ANBASEWIAMF +QQALNgLUAyAEQcADaiAEQdQDakHU2M8AELktIARB4ANqQgA3AgAgBEEBNgLYAyAEQZTZzwA2AtQD +IARBhOvOADYC3AMgBCAIIBZLBH8gBCAWNgKQBCAEIAc2AowEIAQgBjYCiAQgBCAINgKEBCADBUEA +CzYCgAQgBEHsA2oiAyAEQYAEaiIGQdTYzwAQuS0gBEG8A2pBnNnPADYCACAEQbgDaiAEQZQEajYC +ACAEQej8zgA2ArADIAQgAzYCtAMgBCAEQdQDajYCrAMgBCAEQcADajYCqAMgBCAEQZgEajYClAQg +BiAMQRxqIARBqANqEPJBQfyO2wAoAgAgBhDENCAEKQPYBCEeIAQoApwEIRAgBC0AmAQhAwsgBEGe +AWogBC0AmwQ6AAAgBCAELwCZBDsBnAEgBCgCoAQhGSAEKAKkBCEWIAQoAqgEIRQgBEHwAGogBEGs +BGpBLBDNTxogBEGgA2oQ+j4gGkECTQRAIARB8AJqEIo9IARB0AJqENkiCyADQf8BcUEKRw0CIARB +xABqIgYgBEHwAGoiDUEsEM1PGiAEQaABaiIDIAZBLBDNTxogBCAUNgLcASAEIBY2AtgBIAQgGTYC +1AEgBCAQNgLQASAEQeABaiADQSwQzU8aIARB0AFqIRAjAEHABmsiDyQAIA9B2ARqIgMgAhDpSCAP +QQ06AJwGIA9BlANqIAMgD0GcBmoQtysCQCAPKAKUA0UEQCAPQdABaiIDIA9BmANqQcABEM1PGiAP +QRBqIgwgA0HAARDNTxogAigCCCIDQTBqKAIAIQggA0EsaigCACEHIA9BADYC2AQgD0EIaiAPQdgE +aiADQTRqKAIAIANBOGooAgAQxQwgDyAPKAIMIgs2ApgDIA8gDygCCCIaNgKUAyMAQdAAayIOJAAg +DkEsaiIGIBogCxDfJiAOKAIsIQMgBhDVPwJAIANFBEAgDkEsaiEGIwBBMGsiEiQAIBIgEBDHCAJA +IBItAAAiA0EGRwRAIBJBKGogEkEQaikDADcDACASIBItAAM6ABsgEiASLwABOwAZIBIgEikDCDcD +ICASIBIoAgQ2AhwgEiADOgAYIAYgEkEYahDHBgwBCyASKAIEIQMgBkEVOgAAIAYgAzYCBAsgEkEw +aiQAIA4tACwiA0EWRgRAIA5BEGogDkE4aigCACIDNgIAIA4gDikCMDcDCCANIAwgByAIIBogCyAQ +QSBqIA4oAgwgAxDKDCAOQQhqEIg/DAILIA0gDikCPDcCECANQRhqIA5BxABqKQIANwIAIA1BIGog +DkHMAGooAgA2AgAgDiAOKQAtNwMYIA4gDkE0aikAADcAHyANQQhqIA4pAB83AAAgDSAOKQMYNwAB +IA0gAzoAAAwBCyANQQs6AAALIA5B0ABqJAAgD0GUA2oQ+j4MAQsgD0HQAWoiAyAPQZgDakEkEM1P +GiANIANBJBDNTxoLIA9BwAZqJAAgBC0AcEEWRg0DIARBmARqIAIQ6UhBACEDIAQoApgEBEBBwAFB +BBCrOSIDIARBnARqQcABEM1PGgsgBEG4BGogBEHwAWoQwC8gBC0AiAIhASAEQcQEaiAEQfwBahDh +LyAEQbAEaiAEQegBaikCADcDACAEQagEaiAEQeABaikCADcDACAEQaAEaiAEQdgBaikCADcDACAE +IAQpAtABNwOYBCAEQQNBAiABQQBHIAFBAkYbIAFBA0YbOgDQBEE8QQQQpS4gBEGYBGpBPBDNTyEC +QSRBBBClLiAEQfAAakEkEM1PIQEgACADNgIMIAAgATYCCCAAIAI2AgQgAEEGOgAADAQLIARBCGog +AigCCCIBQSxqKAIAIAFBMGooAgAQwjAgBCgCDCEZIAQoAgghECAEIAFBNGooAgAgAUE4aigCABDC +MCAEKAIEIRQgBCgCACEWQQQLIQMgGkECTQRAIARB8AJqEIo9IARB0AJqENkiCwsgACAELwGcATsA +ASAAQQNqIARBngFqLQAAOgAAIARBxABqIgEgBEHwAGpBLBDNTxogAEEUaiABQSwQzU8aIABBAjoA +UCAAIB43A0AgACAUNgIQIAAgFjYCDCAAIBk2AgggACAQNgIEIAAgAzoAAAwCCyAEQfAAaiACEOpI +IAQtAHAEQCAEQZICaiAEQfMAai0AADoAACAEIARBiQFqKQAANwCdBCAEIARBhAFqKQAANwOYBCAE +QagCaiAEKQCdBDcAACAEIAQvAHE7AZACIAQgBCkDmAQ3AKMCIARB9ABqKQAAIR0gBCAEQfwAaikA +ADcAmwIgBCAdNwCTAiAELQCIAiELIARByAJqIARB6AFqKQIANwMAIARBwAJqIARB4AFqKQIANwMA +IARBuAJqIARB2AFqKQIANwMAIAQgBCkC0AE3A7ACIwBBwNgAayINJAAgASgCOCEIIwBBgAFrIgwk +ACAMEO8hEMsUIAxBQGsgDBDwHCMAQeAAayIHJAAgByAIQbACaiAEQbACaiIGEIBLIAdBIGoiAyAM +IARBkAJqIhAQ8xMgB0FAayICIAwgBhDzEyAHIAMgAhC/FSECIAdB4ABqJAAgDEE4aiAIQcwCaikA +ADcDACAMQTBqIAhBxAJqKQAANwMAIAxBKGogCEG8AmopAAA3AwAgDEHoAGogBkEIaikAADcDACAM +QfAAaiAGQRBqKQAANwMAIAxB+ABqIAZBGGopAAA3AwAgDCAIQbQCaikAADcDICAMIAYpAAA3A2Aj +AEEQayIHJAAgB0EIaiACEOkuIAcoAgwhBiAHKAIIIQIgBxDUIDYCBCAHIAI2AgAgBygCACEDIAco +AgQhAiANQSBqIghBCGpCADcDACAIQgA3AwAgCEEAOgAoIAggBjYCICAIQgA3AxggCCACNgIUIAgg +AzYCECAHQRBqJAAgCEHQAGogDEEgakHgABDNTxogCEEBOgCgHSAIQZgdakEANgIAIAwQljUgDEGA +AWokABCGTyEdIA1BzB1qIAgQg0sgDUEYaiABQRBqEPEuIA0oAhwhDCANKAIYIQggDUEQaiABQRhq +EPEuIA0oAhQhByANKAIQIQYgAUEoaigCACIaIBooAgAiAUEBajYCACABQQBIBEAACyANQZg7aiIC +IA1BIGpBqB0QzU8aIA1B2B1qIgFBARCnGiANQfAdaiACQagdEM1PGiABEKw8IQMgDUEIaiANQcwd +ahCWJSANKAIIIQIgDSgCDCEBIAAgAzYCTCAAIBo2AkggAEEMaiAHNgIAIAAgBjYCCCAAIAw2AgQg +ACAINgIAIABBFGogATYCACAAIAI2AhAgACAQKQAANwAYIABBIGogEEEIaikAADcAACAAQShqIBBB +EGopAAA3AAAgAEEwaiAQQRhqKQAANwAAIAAgCyALQQNHcToAUCAAIB03A0AgACAdNwM4IA1BwNgA +aiQAIARB0AFqEOlCDAILIARBGGogAigCCCIBQSxqKAIAIAFBMGooAgAQwjAgBCkDGCEdIARBEGog +AUE0aigCACABQThqKAIAEMIwIAAgBCkDEDcCDCAAIB03AgQgAEEHOgAACyAAQQI6AFAgBEHQAWoQ +6UILIARB4AVqJAAL4hYCBn8BfiMAQUBqIgIkACACQTBqIAEQizICQAJAAkACQAJAAkACQAJAAkAC +QAJAAn8CQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8gAi0AMEEERgRAIAIv +ADEiA0EIdgwBCyACKQMwIghC/wGDQgRSDQEgCEIIiKchAyAIQhCIpwshBCADQf8BcSIDQQFrDiQC +AwQECAkKCwwNDg8QEQUFBQUGBgYhIiMkJSYnJycnJycnJwcBCyAAIAg3AgQgAEEAOgAADDkLIABB +CToAAAw4CyAAQQk6AAAMNwsgAEEJOgAADDYLIABBCToAAAw1CyADQQ9rDgQNDg8QDAsgA0ETaw4D +FRYXFAsgAEGCyAA7AQAMMgsgAkEwaiABEIolIAItADAiAUEDRg0wIAIvADEhAyAAIAIpAjQ3AgQg +ACADOwABIAAgAToAAAwxCyACQTBqIAEQxBwgAi0AMCIBQQNGDS4gAi0AMSEDIAIvATIhBCAAIAIp +AjQ3AgQgACABOgAAIAIgBDsADSACIAM6AAwgACACLwEMOwABDDALIAJBMGogARCoFyACLQAwIgFB +A0YNLCACLwAxIQMgACACKQI0NwIEIAAgAzsAASAAIAE6AAAMLwsgAkEwaiABEK4RIAIoAjBFDSog +AigCNCEBIAAgAkE4aikDADcCBCAAIAFBCHY7AAEgACABOgAADC4LIAJBMGogARD5ICACLQAwIgFB +A0YNKCACLwAxIQMgACACKQI0NwIEIAAgAzsAASAAIAE6AAAMLQsgAkEwaiABEMQcIAItADAiAUED +Rg0mIAItADEhAyACLwEyIQQgACACKQI0NwIEIAAgAToAACACIAQ7ABEgAiADOgAQIAAgAi8BEDsA +AQwsCyACQTBqIAEQqBcgAi0AMCIBQQNGDSQgAi8AMSEDIAAgAikCNDcCBCAAIAM7AAEgACABOgAA +DCsLIAJBMGogARCuESACKAIwRQ0iIAIoAjQhASAAIAJBOGopAwA3AgQgACABQQh2OwABIAAgAToA +AAwqCyACQTBqIAEQqBcgAi0AMCIBQQNGDSAgAi8AMSEDIAAgAikCNDcCBCAAIAM7AAEgACABOgAA +DCkLIAJBMGogARCuESACKAIwRQ0eIAIoAjQhASAAIAJBOGopAwA3AgQgACABQQh2OwABIAAgAToA +AAwoC0GOw8gAQShBuMPIABDmKwALIARB/wFxIQMMBQsgAkEwaiABEJQcIAItADAiBEEJRgRAIAIt +ADEMBAsMAgsgAkEwaiABEOcYIAItADAiBEEJRgRAIAIvATIMAwsMAQsgAkEwaiABEJIVIAItADAi +BEEJRgRAIAIoAjQMAgsLIAJBImogAi0AMzoAACACIAIvADE7ASAgAikCOCEIIAIoAjQLIQMgBEEJ +Rw0BCyMAQRBrIgQkACAEIAEgAxCTHwJAIAQtAAAiAUEJRgRAIAQoAgQaIAQgBEEIaigCACAEQQxq +KAIAEI8EIABBCToAAAwBCyAAIAQvAAE7AAEgAEEDaiAELQADOgAAIAQpAgQhCCAAIAQoAgw2Agwg +ACAINwIEIAAgAToAAAsgBEEQaiQADCALIAAgAi8BIDsAASAAQQNqIAJBImotAAA6AAAgACAINwII +IAAgAzYCBCAAIAQ6AAAMHwtBjsPIAEEoQcjDyAAQ5isACyACQTBqIAEQlBwgAi0AMCIDQQlGBEAg +Ai0AMQwECwwCCyACQTBqIAEQ5xggAi0AMCIDQQlGBEAgAi8BMgwDCwwBCyACQTBqIAEQkhUgAi0A +MCIDQQlGBEAgAigCNAwCCwsgAkEiaiACLQAzOgAAIAIgAi8AMTsBICACKQI4IQggAigCNAshBCAD +QQlHDQcgAkEwaiABIAQQkx8gAi0AMCIBQQlGBEAgAEEJOgAADBoLIAAgAi8AMTsAASAAQQNqIAIt +ADM6AAAgAikCNCEIIAAgAigCPDYCDCAAIAg3AgQgACABOgAADBkLIARB/wFxDA0LIAJBMGogARDn +GCACLQAwIgNBCUYNCyAAIAIpAjQ3AgQgAEEMaiACQTxqKAIANgIAIAItADEhASAAIAIvATI7AQIg +ACABOgABIAAgAzoAAAwXCyACQTBqIAEQkhUgAi0AMCIDQQlGDQkgACACLwAxOwABIABBA2ogAi0A +MzoAACACKAI0IQEgACACKQI4NwIIIAAgATYCBCAAIAM6AAAMFgsgBEH/AXEMBwsgAkEwaiABEOcY +IAItADAiA0EJRg0FIAAgAikCNDcCBCAAQQxqIAJBPGooAgA2AgAgAi0AMSEBIAAgAi8BMjsBAiAA +IAE6AAEgACADOgAADBQLIAJBMGogARCSFSACLQAwIgNBCUYNAyAAIAIvADE7AAEgAEEDaiACLQAz +OgAAIAIoAjQhASAAIAIpAjg3AgggACABNgIEIAAgAzoAAAwTCyACQTBqIAEgBEEIdCADchCdCSAC +LQAwIgNBCUcEQCAAIAIvADE7AAEgAEEDaiACLQAzOgAAIAIoAjQhASAAIAIpAjg3AgggACABNgIE +IAAgAzoAAAwTCyACKAI0IQQgASABKAIQQQFrIgM2AhAgA0UNAUEAIQMgAkEAOgAcIAIgBDYCGCAC +IAE2AhQDQAJAAkAgA0H/AXFBAUsEQEEJIQMMAQsgAkEwaiEFIwBBEGsiAyQAAkACQAJAAkACQCAC +QRRqIgYtAAhBAWsOAgIAAQtBjsPIAEEoQfjDyAAQ5isACyADQQRqIAYoAgAQ+SAgAy0ABCIHQQNG +DQEgAy8ABSEGIAUgAykCCDcCBCAFIAY7AAEgBSAHOgAADAILIANBBGogBigCACAGKAIEENceIAMo +AgRBAkcEQCAFQQk6AAAgBkECOgAIDAILIAUgAykCCDcCBCAFQQE6AAAMAQsgBUEJOgAAIAZBAToA +CAsgA0EQaiQAIAItADAiA0EJRg0BIAIgAikBMjcDICACIAJBOGopAQA3ASYgAi0AMSEECyAAIAQ6 +AAEgACADOgAAIAAgAikDIDcBAiAAQQhqIAIpASY3AQAgASABKAIQQQFqNgIQDBQLIAItABwhAwwA +CwALIAAgAi8BIDsAASAAQQNqIAJBImotAAA6AAAgACAINwIIIAAgBDYCBCAAIAM6AAAMEQsgAEEI +OgAADBALIAIoAjQMAQsgAi8BMgshAyABIAEoAhBBAWsiBDYCECAERQRAIABBCDoAAAwOCwJAA0AC +QCADRQ0CIAJBMGogARCKAiACLQAwIgRBCUcNACACQTBqIAEQigIgAi0AMCIEQQlGBEAgA0EBayED +DAILCwsgAiACKQEyNwMgIAIgAkE4aikBADcBJiACLQAxIQEgACACKQMgNwECIABBCGogAikBJjcB +ACAAIAE6AAEgACAEOgAADA4LIABBCToAACABIAEoAhBBAWo2AhAMDQsgAigCNAwBCyACLwEyCyED +IAEgASgCEEEBayIENgIQAkACQCAEBEADQCADRQ0DIAJBMGogARCKAiACLQAwIgRBCUcNAiADQQFr +IQMMAAsACyAAQQg6AAAMDAsgACACKQEyNwECIABBCGogAkE4aikBADcBACAAIAItADE6AAEgACAE +OgAADAsLIABBCToAACABIAEoAhBBAWo2AhAMCgsgAEEJOgAADAkLIABBCToAAAwICyAAQQk6AAAM +BwsgAEEJOgAADAYLIABBCToAAAwFCyAAQQk6AAAMBAsgAEEJOgAADAMLIABBCToAAAwCCyAAQQk6 +AAAMAQsgAEEJOgAACyACQUBrJAALqRMCCn8BfiMAQUBqIgckAAJAIAJBG0kEQAwBCyACQRprIghB +ACACIAhPGyENAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQANAIAdBOGogBiIMIAZBGmoiDiABIAJBlPnXABCTLCAHKAI8IQkgBygC +OCEKIAdBMGogBSAFQSBqIgggAyAEQaT51wAQkywgBygCNCEFIAcoAjAhBiAHQShqIAogCUEAQbT5 +1wAQxjUgBygCKCAHKAIsEN4TIQ8gBUUNASAGIAAgD0I6iKdqQQNqLQAAOgAAIAVBAUYNAiAGIAAg +D0I0iKdBP3FqQQNqLQAAOgABIAVBAk0NAyAGIAAgD0IuiKdBP3FqQQNqLQAAOgACIAVBA0YNBCAG +IAAgD0IoiKdBP3FqQQNqLQAAOgADIAVBBE0NBSAGIAAgD0IiiKdBP3FqQQNqLQAAOgAEIAVBBUYN +BiAGIAAgD0IciKdBP3FqQQNqLQAAOgAFIAVBBk0NByAGIAAgD6ciC0EWdkE/cWpBA2otAAA6AAYg +BUEHRg0IIAYgACALQRB2QT9xakEDai0AADoAByAHQSBqIAogCUEGQcT61wAQxjUgBygCICAHKAIk +EN4TIQ8gBUEITQ0JIAYgACAPQjqIp2pBA2otAAA6AAggBUEJRg0KIAYgACAPQjSIp0E/cWpBA2ot +AAA6AAkgBUEKTQ0LIAYgACAPQi6Ip0E/cWpBA2otAAA6AAogBUELRg0MIAYgACAPQiiIp0E/cWpB +A2otAAA6AAsgBUEMTQ0NIAYgACAPQiKIp0E/cWpBA2otAAA6AAwgBUENRg0OIAYgACAPQhyIp0E/ +cWpBA2otAAA6AA0gBUEOTQ0PIAYgACAPpyILQRZ2QT9xakEDai0AADoADiAFQQ9GDRAgBiAAIAtB +EHZBP3FqQQNqLQAAOgAPIAdBGGogCiAJQQxB1PvXABDGNSAHKAIYIAcoAhwQ3hMhDyAFQRBNDREg +BiAAIA9COoinakEDai0AADoAECAFQRFGDRIgBiAAIA9CNIinQT9xakEDai0AADoAESAFQRJNDRMg +BiAAIA9CLoinQT9xakEDai0AADoAEiAFQRNGDRQgBiAAIA9CKIinQT9xakEDai0AADoAEyAFQRRN +DRUgBiAAIA9CIoinQT9xakEDai0AADoAFCAFQRVGDRYgBiAAIA9CHIinQT9xakEDai0AADoAFSAF +QRZNDRcgBiAAIA+nIgtBFnZBP3FqQQNqLQAAOgAWIAVBF0YNGCAGIAAgC0EQdkE/cWpBA2otAAA6 +ABcgB0EQaiAKIAlBEkHk/NcAEMY1IAcoAhAgBygCFBDeEyEPIAVBGE0NGSAGIAAgD0I6iKdqQQNq +LQAAOgAYIAVBGUYNGiAGIAAgD0I0iKdBP3FqQQNqLQAAOgAZIAVBGk0NGyAGIAAgD0IuiKdBP3Fq +QQNqLQAAOgAaIAVBG0YNHCAGIAAgD0IoiKdBP3FqQQNqLQAAOgAbIAVBHE0NHSAGIAAgD0IiiKdB +P3FqQQNqLQAAOgAcIAVBHUYNHiAGIAAgD0IciKdBP3FqQQNqLQAAOgAdIAVBHk0NHyAGIAAgD6ci +CUEWdkE/cWpBA2otAAA6AB4gBUEfRg0gIAYgACAJQRB2QT9xakEDai0AADoAHyAIIQUgDkECayIG +IA1NDQALIAxBGGohBQwgC0EAQQBBxPnXABDiGwALQQFBAUHU+dcAEOIbAAtBAiAFQeT51wAQ4hsA +C0EDQQNB9PnXABDiGwALQQQgBUGE+tcAEOIbAAtBBUEFQZT61wAQ4hsAC0EGIAVBpPrXABDiGwAL +QQdBB0G0+tcAEOIbAAtBCCAFQdT61wAQ4hsAC0EJQQlB5PrXABDiGwALQQpBCkH0+tcAEOIbAAtB +C0ELQYT71wAQ4hsAC0EMQQxBlPvXABDiGwALQQ1BDUGk+9cAEOIbAAtBDkEOQbT71wAQ4hsAC0EP +QQ9BxPvXABDiGwALQRBBEEHk+9cAEOIbAAtBEUERQfT71wAQ4hsAC0ESQRJBhPzXABDiGwALQRNB +E0GU/NcAEOIbAAtBFEEUQaT81wAQ4hsAC0EVQRVBtPzXABDiGwALQRZBFkHE/NcAEOIbAAtBF0EX +QdT81wAQ4hsAC0EYQRhB9PzXABDiGwALQRlBGUGE/dcAEOIbAAtBGkEaQZT91wAQ4hsAC0EbQRtB +pP3XABDiGwALQRxBHEG0/dcAEOIbAAtBHUEdQcT91wAQ4hsAC0EeQR5B1P3XABDiGwALQR9BH0Hk +/dcAEOIbAAsgAiACQQNwIg5rIQwCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQANAIAUgDE8EQAJA +AkAgDkEBaw4CAQAQCyAEIAhNDQMgAyAIaiIJIAAgASAMai0AACIKQfwBcUECdmpBA2otAAA6AAAg +DEEBaiIFIAJPDQQgCEEBaiICIARPDQVBAyEGIAlBAWogACAKQQR0IAEgBWotAAAiAUEEdnJBP3Fq +QQNqLQAAOgAAIAhBAmoiBSAETw0GIAFBAnRBPHEhAQwOCyAEIAhNDQZBAiEGIAMgCGogACABIAxq +LQAAIgFB/AFxQQJ2akEDai0AADoAACAEIAhBAWoiBUsEQCABQQR0QTBxIQEMDgsgBSAEQfT31wAQ +4hsACyAHQQhqIAUgBUEDaiIFIAEgAkGE+NcAEJMsIAcoAgwhCSAHKAIIIQogByAIIAhBBGoiCCAD +IARBlPjXABCTLCAJRQ0GIAcoAgQiBkUNByAHKAIAIg0gACAKLQAAIgtB/AFxQQJ2akEDai0AADoA +ACAJQQFNDQggBkEBTQ0JIA0gACALQQR0IAotAAEiC0EEdnJBP3FqQQNqLQAAOgABIAlBAk0NCiAG +QQJNDQsgDSAAIAtBAnQgCi0AAiIJQQZ2ckE/cWpBA2otAAA6AAIgBkEDRwRAIA0gACAJQT9xakED +ai0AADoAAwwBCwtBA0EDQYT51wAQ4hsACyAIIARBpPfXABDiGwALIAUgAkG099cAEOIbAAsgAiAE +QcT31wAQ4hsACyAFIARB1PfXABDiGwALIAggBEHk99cAEOIbAAtBAEEAQaT41wAQ4hsAC0EAQQBB +tPjXABDiGwALQQEgCUHE+NcAEOIbAAtBASAGQdT41wAQ4hsAC0ECQQJB5PjXABDiGwALQQIgBkH0 ++NcAEOIbAAsgAyAFaiAAIAFqQQNqLQAAOgAAIAYgCGohCAsgB0FAayQAIAgLjxMCB38HfiMAQcAB +ayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBCSABKAIAQYCAgIB4cyIDIANBC08bQQFrDgoB +AgMEBQYHCAkKAAsgAkEoaiABQQRqEMUeIAJBNGogAUEQahCqFiACQcgAaiABQSRqEIw9IAJB2ABq +IAFBMGoQkQwCQCABQThqKAIAIgFFBEBBACEDDAELEK4/IQMgAUEYaigCACEEIAEpAxAhCSACQYAB +aiABQSBqEIw9IAJB+ABqIAQ2AgAgAiAJNwNwIAIgASkDCDcDaCACIAEpAwA3A2AgAyACQeAAakEw +EM1PGgsgAkHoAGogAkEwaigCADYCACACQfQAaiACQTxqKQIANwIAIAJB/ABqIAJBxABqKAIANgIA +IAJBiAFqIAJB0ABqKAIANgIAIAIgAikCKDcDYCACIAIpAjQ3AmwgAiACKQJINwOAASACKQNYIQkg +AEEEaiACQeAAakEsEM1PGiAAQThqIAM2AgAgAEEwaiAJNwIAIABBgICAgHg2AgAMCgsgAkHgAGog +AUEEahDFHiACQewAaiABQRBqEKoWIABBgYCAgHg2AgAgAEEcaiACQfgAaikCADcCACAAQRRqIAJB +8ABqKQIANwIAIABBDGogAkHoAGopAgA3AgAgACACKQJgNwIEDAkLIAJBKGogAUEEahDFHiACQTRq +IAFBEGoQqhYgAkHIAGogAUEkahCMPSACQdgAaiABQTBqEJEMAkAgAUE4aigCACIBRQRAQQAhAwwB +CxCuPyEDIAJB/ABqIAFBHGoQjD0gASkDACEJIAEpAwghCiABQShqELoUIQQgAkHwAGogAUEQahD2 +KCACIAQ2AogBIAIgCjcDaCACIAk3A2AgAyACQeAAakEwEM1PGgsgAkHoAGogAkEwaigCADYCACAC +QfQAaiACQTxqKQIANwIAIAJB/ABqIAJBxABqKAIANgIAIAJBiAFqIAJB0ABqKAIANgIAIAIgAikC +KDcDYCACIAIpAjQ3AmwgAiACKQJINwOAASACKQNYIQkgAEEEaiACQeAAakEsEM1PGiAAQThqIAM2 +AgAgAEEwaiAJNwIAIABBgoCAgHg2AgAMCAsgAkEoaiABQQRqEMUeIAJBNGogAUEQahCqFiACQcgA +aiABQSRqEIw9IAJB2ABqIAFBMGoQkQwCQCABQThqKAIAIgNFBEBBACEBDAELELA/IQEgAkHgAGoi +BCADEMIWIAEgBEHQABDNTxoLIAJB6ABqIAJBMGooAgA2AgAgAkH0AGogAkE8aikCADcCACACQfwA +aiACQcQAaigCADYCACACQYgBaiACQdAAaigCADYCACACIAIpAig3A2AgAiACKQI0NwJsIAIgAikC +SDcDgAEgAikDWCEJIABBBGogAkHgAGpBLBDNTxogAEE4aiABNgIAIABBMGogCTcCACAAQYOAgIB4 +NgIADAcLIAJByABqIAFBBGoQxR4gAkE0aiABQRBqEMUeAkAgAUEcaigCACIDRQRAQQAhAQwBCxCy +PyEBIAJB4ABqIAMQ9iggA0EMahC6FCEDIAEgAikCYDcCACACIAM2AmwgAUEIaiACQegAaikCADcC +AAsgAkHoAGoiAyACQdAAaigCADYCACACQfQAaiACQTxqKAIANgIAIAIgAikCSCIJNwNgIAIgAikC +NDcCbCAAQRRqIAJB8ABqKQMANwIAIABBDGogAykDADcCACAAIAk3AgQgAEEcaiABNgIAIABBhICA +gHg2AgAMBgsgAkHgAGogAUEEahDFHiACQewAaiABQRBqEKoWIABBhYCAgHg2AgAgAEEcaiACQfgA +aikCADcCACAAQRRqIAJB8ABqKQIANwIAIABBDGogAkHoAGopAgA3AgAgACACKQJgNwIEDAULIAJB +NGogAUEQahDFHkEAIQMgAUEoaiIEKAIABH8gAkEQaiAEEPQfIAIoAhQhBiACKAIQBUEACyEEIAJB +4ABqIAFBHGoQjD0CQCABKAIERQ0AQQEhAyABQQhqIgEoAgBFBEAMAQsgAkEIaiABEPQfIAIoAgwh +ByACKAIIIQULIAJB0ABqIAJBPGooAgAiATYCACACQTBqIAJB6ABqKAIAIgg2AgAgAiACKQI0Igk3 +A0ggAiACKQJgIgo3AyggAEEMaiAHNgIAIABBCGogBTYCACAAIAM2AgQgAEEQaiAJNwIAIABBGGog +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 +CUYEQCACLQARDAQLDAILIAJBEGogARDnGCACLQAQIgNBCUYEQCACLwESDAMLDAELIAJBEGogARCS +FSACLQAQIgNBCUYEQCACKAIUDAILCyACQSZqIAItABM6AAAgAiACLwAROwEkIAIpAhghBSACKAIU +CyEEIANBCUcNAQsjAEEgayIDJAAgA0EQaiABIAQQkx8CQAJAAkACQCADLQAQIgFBCUYEQCADQRxq +KAIAIQEgA0EYaigCACEEIAMoAhRFBEAgA0EEaiAEIAEQjwQgAygCBEUEQCAAIAMoAgggA0EMaigC +ABD8LQwGCyADKQIIIQUgA0EQaiAEIAEQnQhBCSEBIAMtABBBCUYEQCAAIAMtABE6AAEMBQsgACAF +NwIEIANBEGoQgkRBByEBDAQLIANBBGogBCABEI8EIAMoAgRFDQIgAykCCCEFIANBEGogBCABEJ0I +QQkhASADLQAQQQlGBEAgACADLQAROgABDAILIAAgBTcCBCADQRBqEIJEQQchAQwBCyAAIAMvABE7 +AAEgAEEDaiADLQATOgAAIAMpAhQhBSAAIAMoAhw2AgwgACAFNwIEIAAgAToAAAwDCyAAIAE6AAAM +AgsgACADKAIIIANBDGooAgAQ/C0MAQsgACABOgAACyADQSBqJAAMIAsgACACLwEkOwABIABBA2og +AkEmai0AADoAACAAIAU3AgggACAENgIEIAAgAzoAAAwfC0GOw8gAQShByMPIABDmKwALIAJBEGog +ARCUHCACLQAQIgRBCUYEQCACLQARDAQLDAILIAJBEGogARDnGCACLQAQIgRBCUYEQCACLwESDAML +DAELIAJBEGogARCSFSACLQAQIgRBCUYEQCACKAIUDAILCyACQSZqIAItABM6AAAgAiACLwAROwEk +IAIpAhghBSACKAIUCyEDIARBCUcNByACQRBqIAEgAxCTHyACLQAQIgFBCUYEQCAAIAJBGGooAgAg +AkEcaigCABCdCAwaCyAAIAIvABE7AAEgAEEDaiACLQATOgAAIAIpAhQhBSAAIAIoAhw2AgwgACAF +NwIEIAAgAToAAAwZCyADQf8BcQwNCyACQRBqIAEQ5xggAi0AECIDQQlGDQsgACACKQIUNwIEIABB +DGogAkEcaigCADYCACACLQARIQEgACACLwESOwECIAAgAToAASAAIAM6AAAMFwsgAkEQaiABEJIV +IAItABAiA0EJRg0JIAAgAi8AETsAASAAQQNqIAItABM6AAAgAigCFCEBIAAgAikCGDcCCCAAIAE2 +AgQgACADOgAADBYLIANB/wFxDAcLIAJBEGogARDnGCACLQAQIgNBCUYNBSAAIAIpAhQ3AgQgAEEM +aiACQRxqKAIANgIAIAItABEhASAAIAIvARI7AQIgACABOgABIAAgAzoAAAwUCyACQRBqIAEQkhUg +Ai0AECIDQQlGDQMgACACLwAROwABIABBA2ogAi0AEzoAACACKAIUIQEgACACKQIYNwIIIAAgATYC +BCAAIAM6AAAMEwsgAkEQaiABIANBCHQgBHIQnQkgAi0AECIDQQlHBEAgACACLwAROwABIABBA2og +Ai0AEzoAACACKAIUIQEgACACKQIYNwIIIAAgATYCBCAAIAM6AAAMEwsgASABKAIQQQFrIgM2AhAg +A0UNASMAQSBrIgMkACADQQk6AAggAkEQaiADQQhqIANBH2pBnNTIABD6GiADQSBqJAAgACACKQIQ +NwIAIABBCGogAkEYaikCADcCACABIAEoAhBBAWo2AhAMEgsgACACLwEkOwABIABBA2ogAkEmai0A +ADoAACAAIAU3AgggACADNgIEIAAgBDoAAAwRCyAAQQg6AAAMEAsgAigCFAwBCyACLwESCyEEIAEg +ASgCEEEBayIDNgIQIANFBEAgAEEIOgAADA4LIwBBIGsiAyQAIANBCzoACCACQRBqIANBCGogA0Ef +akGc1MgAEPoaIANBIGokACACLQAQIgNBCUYEQCACLQARIQMgAEEANgIEIAAgAzoAASAAQQRBCSAE +GzoAACABIAEoAhBBAWo2AhAMDgsgACACKQESNwECIABBCGogAkEYaikBADcBACAAIAItABE6AAEg +ACADOgAADA0LIAIoAhQMAQsgAi8BEgshBCABIAEoAhBBAWsiAzYCECADRQRAIABBCDoAAAwLCyMA +QSBrIgMkACADQQo6AAggAkEQaiADQQhqIANBH2pBnNTIABD6GiADQSBqJAAgAi0AECIDQQlGBEAg +Ai0AESEDIABBADYCBCAAIAM6AAEgAEEEQQkgBBs6AAAgASABKAIQQQFqNgIQDAsLIAAgAikBEjcB +AiAAQQhqIAJBGGopAQA3AQAgACACLQAROgABIAAgAzoAAAwKCyAAIAIrAxgQhzEMCQsgACACKgIU +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 +ACACIANBmAdqIAUQmwUgAy0AiAoiB0ECRwRAIANB+AhqIgIgA0HACWpByAAQzU8aIANBpg5qIANB +iwpqLQAAOgAAIAMgAy8AiQo7AaQOIANB2AxqIAJByAAQzU8aIANBkApqEMRLIANBmAxqIgIgAUGA +AWpBwAAQzU8aIANBqA5qIAJBiAEQzU8aDAILIANBiAlqIANB0AlqKAIAIgI2AgAgA0GACWogA0HI +CWopAgAiDzcDACADQbAOaiAPNwMAIANBuA5qIAI2AgAgAyADKQLACSIPNwP4CCADIA83A6gOIANB +kApqEMRLIAFBgAFqEIUOC0ECIQcLIANB6AJqIgUgA0GoDmpBiAEQzU8aIAFBAToA/AMgA0HmAmoi +AiADQaYOai0AADoAACADIAMvAaQOOwHkAiADQfADaiAFQYgBEM1PGiADQfsEaiACLQAAOgAAIAMg +Ay8B5AI7APkEIAMgBzoA+AQgARDtLwJAIAdBAkcEQCADKALwAyECIANBgAVqIANB8ANqQQRyIgRB +hAEQzU8aIAMgAjYCuAcgA0G4B2oiBUEEciAEQTwQzU8aIANBwAxqIANBvAVqQcgAEM1PGiADQYYG +aiADQfkEaiICQQJqLQAAOgAAIAMgAi8AADsBhAYgASgCwAQgA0GQCmoiASAFEIoHQQRqIAEQ0g8g +A0GKB2ogAy0Auwc6AAAgA0GAB2ogA0HIB2opAwA3AwAgAyADLwC5BzsBiAcgAyADKQPABzcD+AYg +Ay0AuAchBiADKAK8ByEEIANBmAxqIgEgA0HQB2pBKBDNTxogA0GIBmogAUHwABDNTxoMAQsgA0Hw +A2oQ/SMgA0GAB2ogA0GsAWopAgA3AwAgAyADKQKkASIPNwMgIAMgDzcD+AZBACEEQQohBgsgACAG +OgAAIAAgAy8BiAc7AAEgACAENgIEIAAgAykD+AY3AgggAEEDaiADQYoHai0AADoAACAAQRBqIANB +gAdqKQMANwIAIABBGGogA0GIBmpB8AAQzU8aIAAgBzoAiAEgACADLwGEBjsAiQEgAEGLAWogA0GG +BmotAAA6AABBAQs6AMgEIANBsA9qJAAL2RMCDH8DfiMAQbAPayIDJAAgAQJ/AkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AyARBAWsOAwcEAAELIAFB/ANqIQ0CQCABLQD8 +A0EBaw4DBgQDAAsgAUE8aigCACEEIAEoAjghCCABKALgAyEHDAELIAEgASgCxAQiBTYCwAQgAUGE +BGooAgAhBCABKAKABCEIIANBqAJqIgYgAUGIBGpBOBDNTxogBRCQTiEHIAEgBkE4EM1PIgVBADoA +/AMgBSAHNgLgAyAFIAQ2AjwgBSAINgI4IAVB/ANqIQ0LIAEgCDYCQCABQcQAaiAENgIAIAFByABq +IAFBOBDNTyEOQcST2wAoAgANBkG0jtsAEPs+IgRB/wFxRQ0GQQAhBkG0jtsAKAIAIAQQ9S5FDQZB +tI7bACgCACIJQShqKAIAIQsgCUEkaigCACEIIAkoAhwhBCABQUBrIQwgAyAJQSBqKAIAIgoEfyAD +QQA2AqgMIAMgCzYCpAwgAyAINgKgDCADIAo2ApwMQQEhBiAEBUEACzYCmAwgA0GYB2ogA0GYDGpB +iPXCABDdLCADQZwKakIANwIAIANBATYClAogA0Gw9cIANgKQCiADQaTJwgA2ApgKQQAhBSADIAYg +Ck8Ef0EABSADIAs2AqQMIAMgCDYCoAwgAyAKNgKcDCADIAY2AqgMIAZBAWohBiAECzYCmAwgA0H4 +CGogA0GYDGpBiPXCABDdLCADIAw2AqwHIAMgBiAKSQR/IAMgBjYCqAwgAyALNgKkDCADIAg2AqAM +IAMgCjYCnAwgBAVBAAs2ApgMIANBwAlqIgUgA0GYDGoiBEGI9cIAEN0sIANBGGogAUHsAGoQmzEg +A0G4DGpBsNTCADYCACADQawMakHE3cIANgIAIANBtAxqIANBsAdqNgIAIANBqAxqIANBrAdqNgIA +IANBlMnCADYCoAwgAyADKQMYNwKwByADIAU2ArAMIAMgA0H4CGo2AqQMIAMgA0GQCmo2ApwMIAMg +A0GYB2o2ApgMIANBjAdqIgUgCUEcaiAEEOFBQbSO2wAoAgAgBRDENAwGCyABQagDaiEEIAFB3ANq +IgctAABBAWsOAwQABwELAAsgBCgCACEGDAQLQeDGwgBBI0G49cIAEOYrAAtB4MbCAEEjQbTiwgAQ +5isAC0HgxsIAQSNB8PPCABDmKwALIAFB5ANqIgUgAUHgAGoQ7SsgAUHwA2oiCCABQewAahCUUSAD +QRBqIAdBCGoQ8S4gAygCFCEGIAMoAhAhCiAHKAIYIgQgBCgCACIJQQFqNgIAIAlBAEgNBSABKAJE +IQkgASgCQCELIANBkApqIgwgDkE4EM1PGiADQZgMaiAKIAYgBCALIAkgDBCfByADKAKYDCIERQ0C +IANB0AlqIgUgA0GsDGooAgA2AgAgA0HICWoiCCADQaQMaikCADcDACADIAMpApwMNwPACSADQZAK +aiIGIANBsAxqQSgQzU8aIAEgBDYCgAEgAUGEAWogAykDwAk3AgAgAUGMAWogCCkDADcCACABQZQB +aiAFKAIANgIAIAFBmAFqIAZBKBDNTxogA0G4B2oiBSAHKAIYIgRBCGpBwAEQzU8aIARByAFqKQIA +IQ8gBEHQAWopAgAhECAEQdgBaikCACERIAFB2AFqIARB4AFqKQIANwIAIAFB0AFqIBE3AgAgAUHI +AWogEDcCACABIA83AsABIAFB4AFqIAVBwAEQzU8aIAEgASkDQDcDoAMgAUHcA2oiB0EAOgAAIAEg +AUGAAWoiBjYCqAMgAUGoA2ohBAsgBigCICEFIAFB2ANqQQA6AAAgAUGsA2ogBUEIajYCAAsgA0EI +aiABQawDaiIFIAIQ1gkgAygCCCIIDQEgB0EDOgAADAILIANBsA5qIANBpAxqKQIANwMAIANBuA5q +IANBrAxqKAIANgIAIAMgAykCnAw3A6gOIAgQvz8gBRDUPwwECyADKAIMIQIgAyAINgKYByADIAI2 +ApwHIAUQ6j8gA0GYDGogAhD0GSADQZgHahCaTCADKAKYDCAHQQE6AAANAgsgDUEDOgAAIABBAzoA +iAFBAwwECwALIANBkApqIgIgA0GYDGoiBUGIAhDNTxogBBD4PyADQaAHaiABQfgDaigCADYCACAD +IAEpAvADNwOYByADQaAMaiABQewDaigCADYCACADIAEpAuQDNwOYDCADQcAJaiABQcABaiABQeAB +aiABKAKgAyABQaQDaigCACACIANBmAdqIAUQmwUgAy0AiAoiB0ECRwRAIANB+AhqIgIgA0HACWpB +yAAQzU8aIANBpg5qIANBiwpqLQAAOgAAIAMgAy8AiQo7AaQOIANB2AxqIAJByAAQzU8aIANBkApq +EMRLIANBmAxqIgIgAUGAAWpBwAAQzU8aIANBqA5qIAJBiAEQzU8aDAILIANBiAlqIANB0AlqKAIA +IgI2AgAgA0GACWogA0HICWopAgAiDzcDACADQbAOaiAPNwMAIANBuA5qIAI2AgAgAyADKQLACSIP +NwP4CCADIA83A6gOIANBkApqEMRLIAFBgAFqEIUOC0ECIQcLIANB6AJqIgUgA0GoDmpBiAEQzU8a +IAFBAToA/AMgA0HmAmoiAiADQaYOai0AADoAACADIAMvAaQOOwHkAiADQfADaiAFQYgBEM1PGiAD +QfsEaiACLQAAOgAAIAMgAy8B5AI7APkEIAMgBzoA+AQgARDtLwJAIAdBAkcEQCADKALwAyECIANB +gAVqIANB8ANqQQRyIgRBhAEQzU8aIAMgAjYCuAcgA0G4B2oiBUEEciAEQTwQzU8aIANBwAxqIANB +vAVqQcgAEM1PGiADQYYGaiADQfkEaiICQQJqLQAAOgAAIAMgAi8AADsBhAYgASgCwAQgA0GQCmoi +ASAFEJcHQQRqIAEQ0g8gA0GKB2ogAy0Auwc6AAAgA0GAB2ogA0HIB2opAwA3AwAgAyADLwC5BzsB +iAcgAyADKQPABzcD+AYgAy0AuAchBiADKAK8ByEEIANBmAxqIgEgA0HQB2pBKBDNTxogA0GIBmog +AUHwABDNTxoMAQsgA0HwA2oQ/SMgA0GAB2ogA0GsAWopAgA3AwAgAyADKQKkASIPNwMgIAMgDzcD ++AZBACEEQQohBgsgACAGOgAAIAAgAy8BiAc7AAEgACAENgIEIAAgAykD+AY3AgggAEEDaiADQYoH +ai0AADoAACAAQRBqIANBgAdqKQMANwIAIABBGGogA0GIBmpB8AAQzU8aIAAgBzoAiAEgACADLwGE +BjsAiQEgAEGLAWogA0GGBmotAAA6AABBAQs6AMgEIANBsA9qJAALkBcCA38BfiMAQTBrIgIkACAC +QRBqIAEQizICQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAn8CQAJAAkACQAJAAkACQAJAAkAC +QAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAn8gAi0AEEEERgRAIAIvABEiBEEIdgwBCyACKQMQIgVC/wGDQgRSDQEgBUII +iKchBCAFQhCIpwshAyAEQf8BcSIEQQFrDiQCAwQECAkKCwwNDg8QEQUFBQUGBgYhIiMkJSYnJycn +JycnJwcBCyAAIAU3AgQgAEEAOgAADDkLIAAgAxDJSAw4CyAAIAMQxUoMNwsjAEEgayIBJAAgAUEH +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 +ASAHQZyDygA2ArgBIAdBiOvJADYCwAEgByAGIAtPBH9BAAUgByAJNgLMAiAHIAI2AsgCIAcgCzYC +xAIgByAGNgLQAiAGQQFqIQYgAQs2AsACIAdB9ABqIAdBwAJqQcSCygAQqi0gByAHQcgAajYCiAEg +ByAGIAtJBH8gByAGNgKwASAHIAk2AqwBIAcgAjYCqAEgByALNgKkASABBUEACzYCoAEgB0GMAWoi +AiAHQaABaiIBQcSCygAQqi0gB0HgAmpBpIPKADYCACAHQdQCakGggcoANgIAIAdB3AJqIAdBtAFq +NgIAIAdB0AJqIAdBiAFqNgIAIAdBkIHKADYCyAIgByACNgLYAiAHIAdB9ABqNgLMAiAHIAdBuAFq +NgLEAiAHIAdB4ABqNgLAAiAHIAdBiAJqNgK0ASABIAxBHGogB0HAAmoQ4UEgB0HYAGogB0GoAWoo +AgA2AgAgByAHKQKgATcDUEGc+doAKAIAIAdB0ABqEMQ0CyAAKAIAQTBqIgEQiT4gB0HAAmogARDo +ICAHKALAAg0BIAcgBygCxAIiCTYCoAEgByAHQcgCai0AADoApAEgB0FAayAHQYgCahDxLiAHKAJE +IQYgBygCQCECIAdBOGogBygCSCAHKAJMEMIwIAdB0AJqIAdBmAJqKQMANwIAIAcgBykDkAI3AsgC +IAcgBykDODcCwAIgB0G4AWohGCAHQcACaiEBIwBBMGsiECQAIBAgCUEIaiACIAYQkxACQCAQKAIA +BEAgEEEoaiAQQRBqKQIANwMAIBBBIGogEEEIaikCADcDACAQIBApAgA3AxgjAEFAaiIOJAACQCAQ +QRhqIhMoAgxFBEAgEygCCCESEKBEIQYgDkEIaiICQQA2AgQgAiAGNgIAIA4oAgwhDSAOIA4oAggi +DDYCECAOIA02AhQgEygCACEJIBMoAgQhBiAOQRBqIgIoAgAiCi8B5gIiEUELTwRAQbS6yQBBIEGw +u8kAEOYrAAsgCiARQQFqOwHmAiAOQTRqIgsgETYCCCALIAo2AgAgCyACKAIENgIEIAogEUEDdGoi +AiAGNgIEIAIgCTYCACAKIBFBGGxqIgJB2ABqIAEpAgA3AgAgAkHgAGogAUEIaikCADcCACACQegA +aiABQRBqKQIANwIAIA4oAjQaIA4oAjwaIBJBATYCCCASIA02AgQgEiAMNgIADAELIA5BIGogE0EM +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 +IBhBCGogITcCACAGQegAaiICKQIAISEgAiABQRBqKQIANwIAIBhBEGogITcCAAsgEEEwaiQAIAco +ArgBBEAgB0G4AWoQ+j4gB0HAAWoQ/DwLIAdBoAFqEJ8fIAcgBygCjAIiAjYCeCAHKAKIAgsiCTYC +dAJAIAUoAgBBn4CAgHhHBEAgBSkDoAEhIiAHQShqIAdB9ABqIgIQ8S4gBykDKCEhIAdBwAJqIgMg +BUGgARDNTxogByAhNwPoAyAHICI3A+ADIAMQxTshASAHQSBqIAIQ8S4gByABNgK8AiAHIAcpAyA3 +ArQCIAMgACgCAEEcahCMSiAHKALAAg0DIAcgBygCxAIiATYCuAEgByAHQcgCai0AADoAvAEgB0HA +AmoiACABQQhqIAcoAnQgBygCeCAHQbQCahDuECAAEKFFIAdBuAFqEJ8fDAELIAdBuAFqIgYgBUEI +akHQABDNTxogBygCSCEFIAcoAkwhASAHQRhqIAMgBBDCMCAHQYgCaiAFIAEgBygCGCAHKAIcIAYg +CSACEI8TIAdBEGogB0GUAmoQ8S4gByAHKQMQNwKMASAHQQhqIAdBjAFqEPEuIAcpAwghISAHQdwC +aiAHQaACaikCADcCACAHQdQCaiAHQZgCaikCADcCACAHQcwCaiAHQZACaikCADcCACAHIAcpAogC +NwLEAiAHQaKAgIB4NgLAAiAHIAdBwAJqIgEQxTs2ArACIAcgITcCqAIgASAAKAIAQRxqEIxKIAco +AsACDQMgByAHKALEAiIBNgKgASAHIAdByAJqLQAAOgCkASAHQcACaiIAIAFBCGogBygCjAEgBygC +kAEgB0GoAmoQ7hAgABChRSAHQaABahCfHwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEED +IAcoArgBQQNrIgAgAEEQTxsODw8BAgMEBQYHCAkKCwwNDgALIAdBuAFqQQRyEPo+DA4LIAdBuAFq +QQRyEL8/IAdB4AFqEPo+IAdByAFqEIg/IAdB1AFqEIg/DA0LIAcoArwBQQJPBEAgB0HAAWoQ+j4L +IAdByAFqIgAoAgBBA0cEQCAAEL8/IAdB7AFqEPo+IAdB1AFqEIg/IAdB4AFqEIg/CyAHQfQBahD6 +PiAHQfwBahD6PgwMCyAHQbgBahC/PyAHQYACahD6PiAHQcQBahCIPyAHQdABahCIPyAHQdwBahCI +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 +NgLsASAFIAI2AugBIAUgGDYC5AEgBSAcNgLgASAFKALYASICBEAgBUGECGogAiAFQdwBaigCABC3 +CyAFQZQIaigCACEUIAVBkAhqKAIAIRMgBUGMCGooAgAhAiAFQYgIaigCACEYIAUoAoQIIgZFDQQg +BUG4BmogBUGYCGpBtAEQzU8aCyAFQbwDaiAFQbgGakG0ARDNTxogBSAUNgK4AyAFIBM2ArQDIAUg +AjYCsAMgBSAYNgKsAyAFIAY2AqgDAkAgBSgC0AEiAgRAIAVBhAhqIAIgBUHUAWooAgAQtwsgBUGU +CGooAgAhFCAFQZAIaigCACETIAVBjAhqKAIAIQIgBUGICGooAgAhGCAFKAKECCIZRQ0BIAVBuAZq +IAVBmAhqQbQBEM1PGgsgBUGEBWogBUG4BmoiBEG0ARDNTxogBSAUNgKABSAFIBM2AvwEIAUgAjYC ++AQgBSAYNgL0BCAFIBk2AvAEIAVBCGogBSgCpAEgBSgCqAEQwjAgBSgCDCEYIAUoAgghBiAFLQDE +ASEDQQxBBBCrOSICIAM6AAggAkKBgICAEDcCACAEIAVB4AFqQcgBEM1PGiAFQYAIaiIDIAQQ7kBB +5AFBBBCrOSITQoGAgIAQNwIAIBNBCGogA0HcARDNTxogBCAFQagDakHIARDNTxogAyAEEO5AQeQB +QQQQqzkiGUKBgICAEDcCACAZQQhqIANB3AEQzU8aIAMgBUHwBGoQ7kBB5AFBBBCrOSIUQoGAgIAQ +NwIAIBRBCGogA0HcARDNTxogBUGkAWoQ+j4MCAsgBSgCmAghGSAGRQ0EIAVBqANqEPNCIAVB7ARq +EK05DAQLQYCjxwBBI0GQp8cAEOYrAAtBgKPHAEEjQcS8xwAQ5isACyAFKAKYCCEZQQEhBgwCCyAF +KAKYCCEZQQEhHgsgHARAIAVB4AFqEPNCIAVBpANqEK05C0EAIQYgHkUNAQsgBUHQAWoQjT8gBkUN +ACAFQdgBahCNPwsgBUGkAWoQ+j5BACEGCyABQQE6AOgBIAUgGTYCfCAFIBQ2AnggBSATNgJ0IAUg +AjYCcCAFIBg2AmwgBSAGNgJoIA4Qt0ggBUHsAGohAgJAAkAgBkUEQCAFQZAIaiACQRBqKAIANgIA +IAVBiAhqIAJBCGopAgA3AwAgBSACKQIAIh83A4AIAkACQCAfpyIGQQxrQQAgBkENa0ECSRsOAgAB +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 +tAIgAyADKQNINwOYAgwFCyABQcQAaigCACEFCyADQbgCaiABKAJAIAIgBSgCDBEDAAJAIAMtALgC +IgVBDEcEQCADQYYBaiIHIAMtALsCOgAAIANB8ABqIgYgA0HIAmopAgA3AwAgA0H4AGoiCiADQdAC +aikCADcDACADIAMvALkCOwGEASADIAMpAsACNwNoIAMoArwCIQQgAygC2AIhCCABQUBrIgkQmTYg +BUELRg0BIANBtgJqIActAAA6AAAgA0GgAmogBikDADcDACADQagCaiAKKQMANwMAIAMgAy8BhAE7 +AbQCIAMgAykDaDcDmAIMBAsgAEEDNgJoQQQMBQsCQCAERQRAIAlBADYCAAwBCyADQcgCaiADQfgA +aikDADcDACADQcACaiADQfAAaikDADcDACADIAMpA2giDDcDuAIgCSADQbgCaiIEQQAgDKcbEMRA +IAQQiz4LIANBEGogASgCNCgCAEHcAGooAgBBCGoQ5TUgA0EIaiADKAIQIAEoAgggAUEMaigCACAD +KAIUKAJgEQUAIAMoAgghBSABQdwAaiADKAIMIgQ2AgAgASAFNgJYDAELIAFB3ABqKAIAIQQgASgC +WCEFCyADQbgCaiAFIAIgBCgCDBEDAAJAIAMtALgCIgVBDEcEQCADQaYBaiIEIAMtALsCOgAAIANB +kAFqIgcgA0HIAmopAgA3AwAgA0GYAWoiBiADQdACaikCADcDACADIAMvALkCOwGkASADIAMpAsAC +NwOIASADKAK8AiECIAMoAtgCIQggAUHYAGoQmTYgBUELRgRAIANBwAFqIAFBKGopAwA3AwAgA0G4 +AWogAUEgaikDADcDACADQbABaiABQRhqKQMANwMAIAMgASkDEDcDqAEgA0G4AmogASgCNCgCACIE +QQhqEPkOIARBMGooAgAiByAHKAIAIgVBAWo2AgAgBUEASA0CIARBNGooAgAiBiAGKAIAIgRBAWo2 +AgAgBEEASA0CIANBtgJqIAMtALsCOgAAIANBoAJqIANByAJqKQMANwMAIANBqAJqIANB0AJqKQMA +NwMAIAMgAy8AuQI7AbQCIAMgAykDwAI3A5gCIAMtALgCIQUgAygCvAIhBCADKALYAiEIIAMoAtwC +IQogA0HoAWogAUHIAGopAwA3AwAgA0HwAWogAUHQAGopAwA3AwAgAyABKQNANwPgASADQZACaiAD +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 +AgAhBCABQeQAaiADKAIEIgU2AgAgASAENgJgDAQLIANBlgNqIAgtAAA6AAAgA0GIA2ogCikDADcD +ACADIAMvAUw7AZQDIAMgAykDODcDgAMMBwsgAEEENgJgQQQMCAsgA0GWA2ogCi0AADoAACADQYgD +aiAIKQMANwMAIAMgAy8BZDsBlAMgAyADKQNQNwOAAyABQShqEJdFDAULIAFB5ABqKAIAIQUgASgC +YCEECyADQZgDaiAEIAIgBSgCDBEDACADKAKYAyICQQJGDQIgA0HuAWogAy0AnwM6AAAgA0HgAWoi +BiADQawDaikCADcDACADIAMvAJ0DOwHsASADIAMpAqQDNwPYASADLQCcAyEEIAMoAqADIQcgAygC +tAMhBSADKQO4AyEMIAFB4ABqEJk2IAJFBEAgA0GYAmogAUEwaikCADcDACADQaACaiABQThqKQIA +NwMAIANB+AFqIAFBzABqKQIANwMAIANBgAJqIAFB1ABqKQIANwMAIANBiAJqIAFB3ABqKAIANgIA +IAMgASgCFCIGNgKMAiADIAEpAig3A5ACIAMgASkCRDcD8AECfyAFBEAgA0G4BGoiCSABQcQAaiIC +QQhqKQIANwMAIANBwARqIgggAkEQaikCADcDACADQcgEaiIKIAJBGGooAgA2AgAgA0GgBGoiCyAB +QShqIgRBCGopAgA3AwAgA0GoBGoiASAEQRBqKQIANwMAIAMgAikCADcDsAQgAyAEKQIANwOYBCAD +QZgDaiAGKAIAQQhqEK8aIANB8ANqIAEpAwA3AwAgA0HoA2ogCykDADcDACADQYAEaiAJKQMANwMA +IANBiARqIAgpAwA3AwAgA0GQBGogCigCADYCACADQdQDaiADQeABaikDADcCACADIAc2AsgDIAMg +AykDmAQ3A+ADIAMgAykDsAQ3A/gDIAMgAykD2AE3AswDIANB3ANqIAU2AgAgA0HWAWogAy0AmwM6 +AAAgA0HIAWogA0GoA2opAwA3AwAgAyADLwCZAzsB1AEgAyADKQOgAzcDwAEgAy0AmAMhBCADKAKc +AyEHIAMpArQDIQwgAygCsAMhBSADQYQBaiADQbwDakE8EM1PGiADQfAAaiADQYQEaikCADcDACAD +QfgAaiADQYwEaikCADcDACADQYABaiADQZQEaigCADYCACADIAMpAvwDNwNoIAMoAvgDDAELIANB +kAJqEJdFIANB8AFqEJhBQQILIQIgA0GWA2ogA0HWAWotAAA6AAAgA0GIA2ogA0HIAWopAwA3AwAg +AyADLwHUATsBlAMgAyADKQPAATcDgAMgA0HEAmogA0GEAWpBPBDNTxogA0HAAmogA0GAAWooAgA2 +AgAgA0G4AmogA0H4AGopAwA3AwAgA0GwAmogA0HwAGopAwA3AwAgAyADKQNoNwOoAiAMQiCIpyEJ +IAynIQYMBQsgA0GWA2ogA0HuAWotAAA6AAAgA0GIA2ogBikDADcDACADIAMvAewBOwGUAyADIAMp +A9gBNwOAAyABQcQAahCYQSABQShqEJdFIAxCIIinIQkgDKchBgwDC0HAwMEAQSNBqIfCABDmKwAL +IABBBDYCYEEDDAMLIABBBDYCYEEFDAILQQMhAgsgACAEOgAAIAAgAy8BlAM7AAEgACAHNgIEIAAg +AykDgAM3AwggACAFNgIYIABBA2ogA0GWA2otAAA6AAAgAEEQaiADQYgDaikDADcDACAAIAatIAmt +QiCGhDcCHCAAQSRqIANBxAJqQTwQzU8aIAAgAjYCYCAAIAMpA6gCNwJkIABB7ABqIANBsAJqKQMA +NwIAIABB9ABqIANBuAJqKQMANwIAIABB/ABqIANBwAJqKAIANgIAQQELOgBAIANB0ARqJAALFQAg +ACABIAJBhIbDAEHgxsIAEJNVC5ISARp/IwBBgAJrIgIkACACIAEQvBYCQAJAAn8gAi0AAEUEQCAC +LQABDQIgAkEFNgIcIAEgAkEcahCAMQwBCyACKAIECyEBIABBAToAACAAIAE2AgQMAQsgAAJ/AkAg +Ai0AAkHbAEcEQCABIAJB/wFqQay9yAAQhAUhAwwBCyABIAEtABxBAWsiAzoAHCADQf8BcQRAIAFB +FGoiAyADKAIAQQFqNgIAIAJBAToAQCACIAE2AjwgAkHEAGogAkE8ahDxBwJ/An8CQCACLQBERQRA +IAItAEUNAUEAIAJB/wFqQay9yAAQyBcMAgsgAigCSAwBCyACLQBGIQcgAkHMAGogAkE8ahDxByAC +LQBMBEAgAigCUAwBCyACLQBNBEAgAi0ATiEJIAJB1ABqIAJBPGoQ8QcCQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAi0AVEUEQCACLQBVRQRAQQIgAkH/AWpBrL3IABDI +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 +HCAFIAE2AhggACgCBEEIaiIGEIk+IAVB8ABqIAYQ6CACQAJAIAUoAnBFBEAgBSAFKAJ0Igc2AuAB +IAUgBUH4AGotAAA6AOQBIAdBGGooAgBBgZTr3ANGBEAgBUEANgLsAQwCCyAFIAcoAggiDzYC7AEg +BSAHQQxqKAIAIgY2AvABIAEgAiAPIAYQgDxFDQEgBUHwAGogB0EIakEoEM1PGkGBlOvcAyECIAdB +gZTr3AM2AhggBSgCgAFBgZTr3ANGDQIgBUFAayAFQYwBaikCACIbNwMAIAVByABqIAVBlAFqKAIA +IgE2AgAgBUEoaiAbNwMAIAVBMGogATYCACAFIAUpAoQBIhs3AzggBSAbNwMgIAUpA3ghGyAFKAKA +ASECIAVB8ABqEPo+DAILIAUgBSgCdDYCOCAFIAVB+ABqLQAAOgA8QbzXzABBKyAFQThqQZjYzABB +2N/MABCJGAALQYGU69wDIQICQEHEk9sAKAIAQQNLDQBBnIXbABD7PiIGQf8BcUUNAEEAIQFBnIXb +ACgCACAGEPUuRQ0AQZyF2wAoAgAiEUEoaigCACEHIBFBJGooAgAhDyARKAIcIQYgBSARQSBqKAIA +IgkEfyAFQQA2AoABIAUgBzYCfCAFIA82AnggBSAJNgJ0QQEhASAGBUEACzYCcCAFQfgBaiAFQfAA +akHo38wAELMtIAVBxABqQgA3AgAgBUEBNgI8IAVBsODMADYCOCAFQazXzAA2AkAgBSABIAlPBH9B +AAUgBSAHNgJ8IAUgDzYCeCAFIAk2AnQgBSABNgKAASABQQFqIQEgBgs2AnAgBUGMAmogBUHwAGpB +6N/MABCzLSAFIAVBGGo2AmQgBSABIAlJBH8gBSABNgLYAiAFIAc2AtQCIAUgDzYC0AIgBSAJNgLM +AiAGBUEACzYCyAIgBUGgAmoiASAFQcgCaiIGQejfzAAQsy0gBUGQAWpByODMADYCACAFQYQBakG4 +4MwANgIAIAVBjAFqIAVBIGo2AgAgBUGAAWogBUHkAGo2AgAgBUGM3MwANgJ4IAUgATYCiAEgBSAF +QYwCajYCfCAFIAVBOGo2AnQgBSAFQfgBajYCcCAFIAVB7AFqNgIgIAYgEUEcaiAFQfAAahDhQUGc +hdsAKAIAIAYQxDQLCyAFQeABahCfHwJAIAJBgZTr3ANHBEAgBUHMAGoiDyAFQShqKQMANwIAIAVB +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 +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AOEEBaw4FBgEACA0CCyABQUBrIQgCQAJAIAFB +1ABqIgYtAABBAWsOAwYCAAELIAFB0ABqKAIAIQQgAUHMAGooAgAhBQwECyABQcgAaigCACEFIAFB +xABqKAIAIQQgASgCQCEHDAILAAsgASABKAIwIgc2AjQgAUHUAGoiBkEAOgAAIAFByABqIAEoAgQi +BTYCACABQcQAaiABKAIAIgQ2AgAgASAHNgJAIAFBDGogBTYCACABIAQ2AgggAUFAayEICyADQTBq +IAcoAgBB3ABqKAIAQQhqEOU1IANBKGogAygCMCAEIAUgAygCNCgCXBEFACADKAIoIQUgAUHQAGog +AygCLCIENgIAIAFBzABqIAU2AgALIANBmAFqIAUgAiAEKAIMEQMAIAMoApgBIgpBAkYNAiADQeIB +aiIGIAMtAJ8BOgAAIANBiAJqIgkgA0GsAWopAgA3AwAgA0GQAmoiCyADQbQBaikCADcDACADIAMv +AJ0BOwHgASADIAMpAqQBNwOAAiADLQCcASEFIAMoAqABIQQgAygCvAEhByABQcwAahCZNiABQQE6 +AFQgA0HWAGogBi0AADoAACADQUBrIgYgCSkDADcDACADQcgAaiIJIAspAwA3AwAgAyADLwHgATsB +VCADIAMpA4ACNwM4IAgQ9T8gCg0FIAEgBDYCECABIAc2AiwgAUEUaiADKQM4NwIAIAFBHGogBikD +ADcCACABQSRqIAkpAwA3AgAgA0EgaiABKAI0KAIAQdwAaigCAEEIahDlNSADKAIgIQQgAygCJCEF +IANBGGogASgCNBDcRiADQRBqIAQgAygCGCADKAIcIAUoAmARBQAgAygCECEEIAFBxABqIAMoAhQi +BTYCACABIAQ2AkAMBAtB4MbCAEEjQeyIwwAQ5isAC0HgxsIAQSNBjIjDABDmKwALIAZBAzoAACAA +QQM2AmhBAwwJCyABQcQAaigCACEFCyADQZgBaiABKAJAIAIgBSgCDBEDACADLQCYASIFQQxGDQEg +A0H2AGoiBiADLQCbAToAACADQeAAaiIJIANBqAFqKQIANwMAIANB6ABqIgogA0GwAWopAgA3AwAg +AyADLwCZATsBdCADIAMpAqABNwNYIAMoApwBIQQgAygCuAEhByABQUBrIggQmTYgBUELRg0CIANB +rgNqIAYtAAA6AAAgA0GYA2ogCSkDADcDACADQaADaiAKKQMANwMAIAMgAy8BdDsBrAMgAyADKQNY +NwOQAwwFC0ECIQIgA0GuA2ogA0HWAGotAAA6AAAgA0GYA2ogBikDADcDACADQaADaiAJKQMANwMA +IAMgAy8BVDsBrAMgAyADKQM4NwOQAwwFCyAAQQM2AmhBBAwFCwJAIARFBEAgCEEANgIADAELIANB +qAFqIANB6ABqKQMANwMAIANBoAFqIANB4ABqKQMANwMAIAMgAykDWCIMNwOYASAIIANBmAFqIgRB +ACAMpxsQxEAgBBCLPgsgA0EIaiABKAI0KAIAQdwAaigCAEEIahDlNSADIAMoAgggASgCCCABQQxq +KAIAIAMoAgwoAmARBQAgAygCACEFIAFB3ABqIAMoAgQiBDYCACABIAU2AlgMAQsgAUHcAGooAgAh +BCABKAJYIQULIANBmAFqIAUgAiAEKAIMEQMAIAMtAJgBIgVBDEcEQCADQZYBaiIGIAMtAJsBOgAA +IANBgAFqIgQgA0GoAWopAgA3AwAgA0GIAWoiCCADQbABaikCADcDACADIAMvAJkBOwGUASADIAMp +AqABNwN4IAMoApwBIQIgAygCuAEhByABQdgAahCZNiAFQQtGBEAgA0HAAmogCCkDADcDACADQbgC +aiAEKQMANwMAIAMgAykDeDcDsAIgA0H4AWoiBCABQShqKQMANwMAIANB8AFqIgUgAUEgaikDADcD +ACADQegBaiIHIAFBGGopAwA3AwAgAyABKQMQNwPgASADQYACaiABKAI0KAIAQQhqEK8aIANB1AFq +IAFB0ABqKQIANwIAIANBzAFqIAFByABqKQIANwIAIANBrAFqIAcpAwA3AgAgA0G0AWogBSkDADcC +ACADQbwBaiAEKQMANwIAIANBrgNqIAMtAIMCOgAAIAMgASkCQDcCxAEgAyADKQPgATcCpAEgAyAD +LwCBAjsBrAMgAy0AgAIhBSADQaADaiADQZgCaikDADcDACADQZgDaiADQZACaikDADcDACADQaAB +aiADQawCaigCADYCACADIAMpA4gCNwOQAyADIAMpAqQCNwOYASADKAKEAiEEIAMoAqACIQcgA0HM +AmogA0GYAWpBxAAQzU8aDAMLIANBrgNqIAYtAAA6AAAgA0GYA2ogBCkDADcDACADQaADaiAIKQMA +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 +DgoFAAYBBwgCAwkEGAsgAUHcBWotAABBA0cNFSABQdQFahCZNgwVCwJAAkAgAS0A2QVBA2sOAgAB +FAsgAUHcBWoQ8SYMEgsgAUHkCmotAABBA0cNEAJAAkAgAS0AmQZBA2sOAgEAEgsCQAJAAkAgAS0A +4wdBA2sOAgABEwsgAUH0B2oQ7CwMAQsCQAJ/AkACQAJAAkAgAUHgCWotAAAOBQAFBQECBQsgAUHU +CWoMAwsgAUHoCWoQ7j8MAQsgAUHwB2oQjD4LIAFBwAlqEIg/IAFBtAlqCxD7QAsgAUH4BmoQxCkL +IAFB4AdqQQA6AAAgAS0A4QdFDQ8gAUHoB2oQ+0AMDwsgAUGgBmoiAhDnKiACENkiDA8LIAFBwAVq +ELQ9DBMLIAFBwAVqENc/DBILIAFBwAVqELQ9DAULIAFBwAVqEPAaDBELIAFBwAVqEMs4DA4LIAFB +wAVqEIg/DAwLIAFBwAVqEIwcDA0LIAFBwAVqEIcDCyABQfgDahCxSwwLCwJAAkACQCAAQdwAaigC +ACIBLQAYQQNrDgIAAQYLAkAgAUE5ai0AAEEDaw4CAgAGCyABQdABahC1PQwFCwJAAkAgAUH0Amot +AABBA2sOAgABBgsgAUHEA2oQ8SYgAUHwAGoQ7xoMBAsgAUH4AmoQtD0MAwsgAUE8ahCZNgwDCwJA +AkACQCAAQdwAaigCACIBLQAMQQNrDgIAAQILIAFBEGoQ1DAMAQsgAUEQahC0PSABQQhqEJpMCyAB +EJgEDBYLAkACQAJAIABB3ABqKAIAIgEtACRBA2sOAgABAgsgAUEoahC/OAwBCyABQThqEJk2IAFB +LGoQnz0gAUEYahCpSgsgARCYBAwVCyABQegCahDCByABQTBqEIUOCyABEJgEDBMLIAFBADoA4QcL +IAFBmAZqLQAABEAgAUHoBWoQ2SILIAFBADoAmAYLIAFB6AxqEMQ7CyABQdgFakEAOgAACyABQaAD +ahDEKQsgAUGIA2oQ+x8LIAFBuAVqLQAARQ0AIAFBuAJqEOs/CyABQbgFakEAOgAAIAEtALkFBEAg +AUHQBGoQixkLIAFBADoAuQUgAS0AugUEQCABQcgAahDvGgsgAUEAOgC6BQsgAUHwDWoQ/wcLIAEt +ADhFDQAgARDZIgsgARCYBAwICyABQdwAagwECyABQcgCakEAOgAAIAFBygJqLQAABEAgAUGwAmoQ +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 +A2oQ1j8LIAFBADoAvwQgAUEAOgC9BEELIQQMAQsgAUEAOgC/BAsgAS0AvgQEQCABQeQDahC6Swsg +AUEAOgC+BCABQQE6AMAEIANBtglqIgIgA0GeD2otAAA6AAAgA0GgCWoiCCADQYgPaikDADcDACAD +QagJaiIJIANBkA9qKQMANwMAIAMgAy8BnA87AbQJIAMgAykDgA83A5gJIABBA2ogAi0AADoAACAA +IAMvAbQJOwABIAAgAykDmAk3AgggAEEQaiAIKQMANwIAIABBGGogCSkDADcCACABEI0YIAAgBzYC +ICAAIAY2AgQgACAEOgAAQQELOgDUBiADQaAPaiQAC9YlAwx/AX4BfCMAQeABayICJAAgAiABNgJY +AkACQAJAAkACQAJAAkACQCACQdgAahD/MEUEQCACKAJYEAkiAUEBTQRAIABBAToAACAAIAFBAEc6 +AAEMAgsCQAJAAkACQCACKAJYEApBAUcEQCACQcgAaiACKAJYEAsgAkE4aiACKAJIIAIrA1AQ90Eg +AigCOEEBRw0CIAIrA0AhDyACQdgAahCbSw0BQQAhASAPmUQAAAAAAADwf2MEQCACQQA6AMgBIAJB +yAFqEOc0QQIhAQsgACAPOQMQIABCAjcDCCAAIAE6AAAMBgsgAiACKAJYNgKwASACQRhqIAJBsAFq +EOovIAIoAhgNAiACKAKwASEBDAMLIABBAjoAACAPRAAAAAAAAODDZiEBIABC////////////AAJ+ +IA+ZRAAAAAAAAOBDYwRAIA+wDAELQoCAgICAgICAgH8LQoCAgICAgICAgH8gARsgD0T////////f +Q2QbQgAgDyAPYRsiDjcDECAAIA5CP4g3AwgMBAsgAkHcAGogAkHYAGoQ4zQgAigCXEGAgICAeEcE +QCACQdMBaiACQeQAaigCADYAACAAQQM6AAAgAiACKQJcNwDLASAAIAIpAMgBNwABIABBCGogAkHP +AWopAAA3AAAMBAsCQCACQdgAahCYS0UEQCACQdgAahCZSgRAIAIQnQE2AsgBIAJByAFqIgEgAkHY +AGoQqkUgARCWQUUNAgsgACACQdgAahDiMgwFCyACIAIoAlg2AmggAkHoAGoQuEoiAQRAIAJBgAFq +IAEQ9z4gAkEANgKMASACQQA2ArgBIAJCgICAgIABNwKwAQNAIAJByAFqIQMjAEEgayIBJAAgASAC +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 +ASACQQhqIAJBsAFqEOovIAIoAghFBEAgAigCsAEhAQwECyACKQMQIQ4gAiACQbABajYCgAEgAiAO +EA02AsgBIAIgAkHIAWoiATYCmAEgAkGAAWogAkGYAWoQokEgARCWQSACIAIoArABIgE2ApgBRQ0D +IAJBmAFqEJZBIAAgDjcDECAAQgA3AwggAEECOgAADAgLIABBADoAAAsgAkHYAGoQlkEMBgsgACAC +KALMATYCBCAAQQY6AAAgAkGwAWoQ6EsMBAsgAkEBNgLIASACIAE2AswBIwBB0ABrIgEkACABQc8A +NgIMIAFBz+vDADYCCCABQQA2AiggAUKAgICAEDcCICABQcQAakH438UANgIAIAFBAzoATCABQSA2 +AjwgAUEANgJIIAFBADYCNCABQQA2AiwgASABQSBqNgJAIAFBCGogAUEsahDjSARAQZDgxQBBNyAB +QRBqQcjgxQBBpOHFABCJGAALIAFBGGogAUEoaigCACIDNgIAIAEgASkCIDcDECABKAIUIAMQDiED +IAFBEGoQiD8gAUHQAGokACAAQQY6AAAgACADNgIEIAJByAFqQQRyEJZBDAQLIAJByAFqEJZBIAAg +DjcDECAAIA5CP4g3AwggAEECOgAADAMLIAAgAkGAAWoQ4jILIAJBgAFqEJZBDAELIAJB6ABqEJZB +CyACQeABaiQAC6APAQd/IwBBoA9rIgMkACABAn8CQAJAAkACQAJAAkACQAJAAkAgA0GeD2oCfwJA +AkACQAJAAkACQAJAAkACQCABLQDUBkEBaw4DBQEAAgsgAUHABGohCAJAAkACQCABLQDABEEBaw4E +CQMBAAILIAFBzARqKAIAIQUgASgCyAQhBAwJCyABQdgEaigCACEGIAEoAtQEIQUMBAsgASgCuAQh +BQwCCwALIAEoAtAGIANB0AZqIAFB4ARqQfABEM1PGigCAEHcAGooAgAhBiADQShqIgQgA0HgBGpB +uAQQzU8aIAEgBEG4BBDNTyIEQQA6AMAEIAQgBkEIaiIFNgK4BCAEQcAEaiEICyABIAU2AuADIAFB +ADYCvAQgASABQfABakHwARDNTyIEQeQDaiAEQcQBaigCACIGIAYgBEHIAWooAgBBzABsahCXGCAE +QQE6AL4EIARByARqIARB5AFqELxRIARBAToAvwQgBEHwA2ogBEGEAWoQtzggBEEBOgC9BCAEQZQE +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 +DAELCyANIAM2AgQgDSAFNgIMCyANQQRqEJM/IA1BEGokACAQICBBsPTHABD3ICIDIB82AgQgAyAT +ICFqNgIAIBAgFxDuFwwACwALAAsgCEEBTQ0AIBkgCEEBEJEfCyAGQdAAaiQAIAtBGGogC0EMaigC +ADYCACALIAspAgQ3AxAgHCAeEPsXCyALQUBrJAACQCAMKAIIIgNFBEAgGiAMKQIMNwIEIBpBDGog +DEEUaigCADYCAAwBCyAaIAM2AgQgDEEMahCsGUEBIRULIBogFTYCACAMQUBrJAAgCSgCDEUEQCAW +IAkoAhA2AgQgFkEIaiAJQRRqKQIANwIADAMLIBYgCSgCEDYCBAwBCyAWIAkoAiA2AgQLQQEhHQsg +FiAdNgIAIAlBQGskAAwBCyAWQQE2AgAgFiAENgIECyACKAIkIQMgAigCIA0IIAIpAighIyACKAJ8 +BEAgGBCsGQsgAiAjNwKEASACIAM2AoABIAJBATYCfAwDCyACKAKMAQRAQQAhBEGOj8cAQQoQ8R8h +A0EBDAoLIAJBIGogAkHgAGoQ2zggAigCJCEDIAIoAiANByACKQIoISMgAkGMAWoQukEgAiAjNwKU +ASACIAM2ApABIAJBATYCjAEMAgsgAiACKQMoNwOwASACIAM2AqwBIAIgBDYCqAEgAkG4AWogAkHg +AGoQhjkgAigCvAEhAyACKAK4ASIEQZWAgIB4Rg0FIAJBKGogAkGwAWopAwA3AwAgAiACKQOoATcD +ICACIAIpA8ABNwM4IAIgAzYCNCACIAQ2AjAgAkGcAWogAkEgahDXGgwBCwsgEUEARyEEIBEiBUUN +AQwCCyACKAIkIQNBACERQQEhBUEBIRJBASEHQQAhBAwGCyACQSBqQayJxwBBBxCRTSACKAIgIgUE +QCACKAIkIRIMAQsgAigCJCEDDAMLIAIgEjYCzAEgAiAFNgLIAQJ/AkACQAJAAkACQAJAAkACQCAC +KAJwQYCAgIB4RiIHBEAgAkEgakGClccAQQUQj00gAigCICIDQYCAgIB4Rg0CIAIgAikCJDcC1AEg +AiADNgLQAQwBCyACQdgBaiACQfgAaigCADYCACACIAIpAnA3A9ABCyACKAJ8IgYNASACQSBqQcSO +xwBBBBDBTCACKAIgDQMgAiACKAIkNgKoASACIAJBKGopAgA3AqwBDAILIAIoAiQhA0EBIQVBAQwG +CyACQbABaiAYQQhqKAIANgIAIAIgGCkCADcDqAELIAIoAowBIgMNASACQbgBahDoSAwCCyACKAIk +IQNBASEFDAILIAJBwAFqIBtBCGooAgA2AgAgAiAbKQIANwO4AQsgAkEgaiACQZwBahCOUSACKAIg +RQRAIAJBGGogAkGwAWooAgA2AgAgAkEIaiACQcABaigCADYCACACIAIpA6gBNwMQIAIgAikDuAE3 +AwAgAkEoaikCACEjIAIoAiQhGCACKALQASEHIAIoAtQBIQMgAigC2AEhESACQZwBahCsSwwICyAD +RSEFIAIoAiQhAyACQbgBahCaGSACQagBahCsGQsgAkHQAWoQvUwgBkULIRIgAkHIAWoQ+j4MBAsg +AkGoAWoQrR0LQQAhBAtBAQshBUEBIRJBASEHCyACQZwBahCsSwJAIAVFDQAgAigCjAFFDQAgGxCa +GQsgAigCfEEARyAScQRAIBgQrBkLIAIoAnBBgICAgHhHIAdxBEAgAkHwAGoQvUwLIBFFIARyRQRA +IAJB6ABqEPo+C0GAgICAeCEHCyABIAEtABxBAWo6ABwgARCNEyEEIAJBPGogAkEYaigCADYCACAC +QcgAaiACQQhqKAIANgIAIAIgEjYCMCACIAU2AiwgAiARNgIoIAIgAzYCJCACIAQ2AlggAiAjNwJQ +IAIgGDYCTCACIAIpAxA3AjQgAiACKQMANwJAIAIgBzYCICAHQYCAgIB4RwRAIARFDQIgAkEsahD6 +PiACQSBqEL1MIAJBNGoQrBkgAkFAaxCaGSACQcwAahDMGSAEIQMMAQsgBEUNACACQdgAahDfHQsg +ASADEP9QIQEgAEGAgICAeDYCACAAIAE2AgQMAgsgAEEIaiACQShqQTAQzU8aIAAgAzYCBCAAIAc2 +AgAMAQsgAkEYNgIgIAEgAkEgahCAMSEBIABBgICAgHg2AgAgACABNgIECyACQeABaiQAC70OAQ1/ +IwBB0AprIgMkACABAn8CQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtANgEQQFr +DgMMAgEACyABKALQBCIHKAIAQQNHDQogA0EQaiABQQhqKQMANwMAIANBGGogAUEQaikDADcDACAD +QSBqIAFBGGopAwA3AwAgAyABKQMANwMIIAEoAtQEIQsgBygCBCEIIAFBIGoiBiADQQhqQcAAEM1P +GiABQe0AaiINQQA6AAAgAUHoAGogCDYCACABQeQAaiAHNgIAIAFB4ABqIAs2AgAMAwsgAUEgaiEG +IAFB7QBqIg0tAABBAWsOBAcAAwYBCwALIAFB6ABqKAIAIQggAUHkAGooAgAhByABQeAAaigCACEL +CyABQewAakEAOgAAIANB+AFqIgQgBkEYaikAADcDACADQfABaiIJIAZBEGopAAA3AwAgA0HoAWoi +BSAGQQhqKQAANwMAIAMgBikAADcD4AFBxJPbACgCAEECSw0BQdiL2wAQ+z4iCkH/AXFFDQFB2Ivb +ACgCACAKEPUuRQ0BQdiL2wAoAgAiBUEoaigCACEOIAVBJGooAgAhDyAFKAIcIQkgAyAFQSBqKAIA +IgoEfyADQQA2AvAFIAMgDjYC7AUgAyAPNgLoBSADIAo2AuQFQQEhDCAJBUEACzYC4AUgA0GEAmog +A0HgBWpBxIzDABDdLCADIAhBDGo2ApgCQQAhBCADIAogDEsEfyADIAw2AsAJIAMgDjYCvAkgAyAP +NgK4CSADIAo2ArQJIAkFQQALNgKwCSADQZwCaiIEIANBsAlqIgpBxIzDABDdLCADQfQFakH0ycIA +NgIAIANB8AVqIglBpMnCADYCACADQdSMwwA2AugFIAMgBDYC7AUgAyADQZgCajYC5AUgAyADQYQC +ajYC4AUgCiAFQRxqIANB4AVqEPJBIAFBQGsiBCAFIAoQxDIgAUEBOgBsIANBuAJqIANB6AFqKQMA +NwMAIANBwAJqIANB8AFqKQMANwMAIANByAJqIANB+AFqKQMANwMAIAMgAykD4AE3A7ACIAFByABq +KAIAQQJGDQIgAUEAOgBsIANB6AVqIARBCGopAwA3AwAgCSAEQRBqKQMANwMAIANB+AVqIARBGGop +AwA3AwAgAyAEKQMANwPgBSADQYAGaiADQbACakGwAxDNTxogAUHwAGogA0HgBWpB0AMQzU8aIAFB +zQRqQQA6AAAgAUHIBGogCzYCACABQcQEaiAINgIAIAFBwARqIAc2AgALIANBsAlqIAFB8ABqIgQg +AhDpKCADKAKwCSICQQJGDQcgA0GICmogA0GwCWpBBHJByAAQzU8aIANBhgpqIANB/wlqLQAAOgAA +IAMgAy8A/Qk7AYQKIAMtAPwJIQcgBBDNSwwJCyABQQE6AGwgAUHYAGpBADYCACABQcgAakECNgIA +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 +wAA3AgggAkEIahCpPSAKQQQ2AgwgCkEENgIEIAQgDyAEa0GcAm4QshwgAkEQaiQAIAchBAJAAkAC +QCAMRQ0AIAUgCEHMAGwiAkYNACAHQQQgBUEEIAIQgh0iBEUNAQsgBiAENgIoIAYgCDYCJCAGIA0g +B2tBzABuNgIsIwBBEGsiAiQAIAZBCGoiBCgCBCIHIAQoAgwgB2tBnAJuELIcIAIgBCgCADYCDCAC +IAQoAgg2AgggAkEIahCpPSACQRBqJAAgBi0AAEEGRgRAIA4gBikCJDcCACAOQQhqIAZBLGooAgA2 +AgAMAgsgDiAGKQMANwIEIA5BgICAgHg2AgAgBkEkaiICEIM0IAIQ2z0MAQtBBCACEMRPAAsgBkEw +aiQAIAMoAkQiAkGAgICAeEcEQCADKQJIIRggAEEQaiIEEMYLIANBiAFqIABBQGspAwA3AwAgA0GA +AWogAEE4aikDADcDACADQagBaiAAQeAAaigCADYCACADQYgCaiAAQcABaigCADYCACADQZQCaiAA +QcwBaigCADYCACADIABBMGopAwA3A3ggAyAAQdgAaikDADcDoAEgAyAAQcgAaigCADYCkAEgAyAA +QbgBaikDADcDgAIgAyAAQcQBaikCADcCjAIgA0GcAmogGDcCACADQawCaiAAQeQBaigCADYCACAD +QbgCaiAAQfABaigCADYCACADIAI2ApgCIAMgAEHcAWopAgA3AqQCIAMgAEHoAWopAwA3A7ACIANB +uAFqIABB8ABqQSQQzU8aIANB3AFqIABBlAFqQSQQzU8aIANBnAFqIABB1ABqKAIANgIAIANB4ABq +IABBGGopAwA3AwAgA0HoAGogAEEgaikDADcDACADQfAAaiAAQShqKQMANwMAIANBxAJqIABB/AFq +KAIANgIAIANBtAFqIABB7ABqKAIANgIAIAMgAEHMAGopAgA3ApQBIAMgBCkDADcDWCADIABB9AFq +KQIANwK8AiADIABB5ABqKQIANwKsASADQSBqIAsgA0HYAGogEigCIBEDACADKAIgIQQgAEGEAmog +AygCJCICNgIAIABBgAJqIAQ2AgAMAgsgAyADKQJINwNQIANB0ABqEKc2IQIMAgsgAEGEAmooAgAh +AiAAQYACaigCACEECyADQdgAaiAEIAEgAigCDBEDACADLQBYIgFBDEYNBiADQcgCaiADQdgAakEB +ckEjEM1PGiAAQYACahCZNiABQQtGBEAgAEHQAWoQu0tBACECDAELIANB7AJqIgJBAXIgA0HIAmpB +IxDNTxogAyABOgDsAiACEM4eIQIgAEHQAWoQu0sLIAlBAToAAEEADAYLIAMoAvACIQsMBwtBsMPE +AEEjQeCIxQAQ5isAC0Gww8QAQSNB8IjFABDmKwALQbDDxABBI0G48sQAEOYrAAtBsMPEAEEjQayF +xQAQ5isACyAJQQM6AABBAQtFBEAgEBD+MiACDQEgAEGgAmoQiD8gAEGcAmoQlkFBgAEhC0EADAML +IBFBAzoAAEECIQIMAwsgAyACNgJYIANBGGogA0HYAGoiARChLSADKAIYIAMoAhwQgBEhCyABEKlG +CyAAQaACahCIPyAAQZwCahCWQUEBCyECIBFBAToAAAtBAyEFQQIhBCACQQJHBEAgEBD8KiAAKAIE +IgEgASgCAEEBazYCAEEBIQUgAiEECyAAIAU6ANACIAAgBEECRwR/IAAQ0jcCQCAERQRAIAMgCzYC +yAIgA0GAATYCWCADQQhqIABBsAVqIANB2ABqIgkgA0HIAmoiARD7JyADIAMoAgggAygCDBDkQTYC +7AIMAQsgAyALNgLIAiADQYABNgJYIANBEGogAEG0BWogA0HYAGoiCSADQcgCaiIBEPsnIAMgAygC +ECADKAIUEORBNgLsAgsgA0HsAmoQlkEgCRCWQSABEJZBIABBsAVqEJZBIABBtAVqEJZBQQEFQQML +OgC4BSADQZADaiQAIARBAkYLiw4CC38CfiMAQfABayICJAAgACgCACEDAkACQAJAIAEQiTwiCwRA +IAIgCzYCCAJAIAtBCGoiByADKAIAIgwQjDYEQCALQRBqIgYpAwAiDSADKAIEIgopAwAiDlEgDSAO +fUIAU3INAQtBASEBQcST2wAoAgANA0HUgdsAEPs+IgBB/wFxRQ0DQdSB2wAoAgAgABD1LkUNA0HU +gdsAKAIAIgpBKGooAgAhCCAKQSRqKAIAIQYgCigCHCEAIAIgCkEgaigCACIFBH8gAkEANgIoIAIg +CDYCJCACIAY2AiAgAiAFNgIcQQEhBCAABUEACzYCGCACQdQAaiACQRhqQbCV0AAQui0gAkH0AGpC +ADcCACACQQE2AmwgAkHcldAANgJoIAJB2IvQADYCcEEAIQEgAiAEIAVPBH9BAAUgAiAINgIkIAIg +BjYCICACIAU2AhwgAiAENgIoIARBAWohBCAACzYCGCACQYABaiACQRhqQbCV0AAQui0gAiAMNgKU +ASACIAQgBUkEfyACIAg2AiQgAiAGNgIgIAIgBTYCHCACIAQ2AiggBEEBaiEEIAAFQQALNgIYIAJB +mAFqIAJBGGpBsJXQABC6LSACIAMoAgQ2AqwBQQAhAyACIAQgBU8Ef0EABSACIAg2AiQgAiAGNgIg +IAIgBTYCHCACIAQ2AiggBEEBaiEEIAALNgIYIAJBsAFqIAJBGGpBsJXQABC6LSACIAc2AsQBIAIg +BCAFSQR/IAIgBDYC7AEgAiAINgLoASACIAY2AuQBIAIgBTYC4AEgAAVBAAs2AtwBIAJByAFqIgAg +AkHcAWoiAUGwldAAELotIAJB0ABqQYSW0AA2AgAgAkHEAGpBlJbQADYCACACQThqQYSW0AA2AgAg +AkEsakH0ldAANgIAIAJBzABqIAE2AgAgAkFAayACQcQBajYCACACQTRqIAJBrAFqNgIAIAJBKGog +AkGUAWo2AgAgAkHkldAANgIgIAIgCkEcajYCFCACQQU2AhAgAiALQRBqNgLcASACIAA2AkggAiAC +QbABajYCPCACIAJBmAFqNgIwIAIgAkGAAWo2AiQgAiACQegAajYCHCACIAJB1ABqNgIYIAIgAkEY +ajYCDEHUgdsAKAIAIAJBDGoQxDRBASEBDAMLQQAhAUHEk9sAKAIADQFB4IHbABD7PiIAQf8BcUUN +AUEAIQNB4IHbACgCACAAEPUuRQ0BQeCB2wAoAgAiBEEoaigCACEFIARBJGooAgAhCCAEKAIcIQAg +AiAEQSBqKAIAIgcEfyACQQA2AiggAiAFNgIkIAIgCDYCICACIAc2AhxBASEDIAAFQQALNgIYIAJB +gAFqIAJBGGpBpJbQABC6LSACQfQAakIANwIAIAJBATYCbCACQdSW0AA2AmggAkHYi9AANgJwIAIg +AyAHTwR/QQAFIAIgBTYCJCACIAg2AiAgAiAHNgIcIAIgAzYCKCADQQFqIQMgAAs2AhggAkGYAWog +AkEYakGkltAAELotIAIgDDYCxAEgAiADIAdJBH8gAiAFNgIkIAIgCDYCICACIAc2AhwgAiADNgIo +IANBAWohAyAABUEACzYCGCACQbABaiACQRhqQaSW0AAQui0gAiAKNgIMIAIgAyAHSQR/IAIgAzYC +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 +BDYCNCADIAY2AjAgAyAINgIsCyADIAU2AiggA0EIaiICIANBKGoiBUGojsMAEN0sIANBNGpCADcC +ACADQZTJwgA2ApgCIANBATYCLCADQdiOwwA2AiggA0GkycIANgIwIAMgBTYClAIgAyACNgKQAiAD +QbACaiICIAcgA0GQAmoQ4EFB5IvbACgCACACEMQ0DAELIAFB5AJqEOESDAELIANBjgNqIAFB6wJq +LQAAOgAAIAMgAS8A6QI7AYwDIAFB6AJqLQAAIQcgASgC5AIhCCABLQDsAiECIAEtAO0CIQUgA0Hq +AmogAUHuAmpBIhDNTxogA0HgAmogAUGoA2ooAgA2AgAgA0HYAmogAUGgA2opAgA3AwAgA0HQAmog +AUGYA2opAgA3AwAgA0HGAmogAUGvA2otAAA6AAAgAyABQZADaikCADcDyAIgAyABQa0Dai8AADsB +xAIgAUGsA2otAAAhBAsgAUEAOgC8A0EADAELIANBkAJqEP0jQQIhBEEACyEBIAAgBzoACCAAIAg2 +AgQgACABNgIAIAAgAy8BjAM7AAkgACAFOgANIAAgAjoADCAAQQtqIANBjgNqLQAAOgAAIABBDmog +A0HqAmpBIhDNTxogACAEOgBMIABByABqIANB4AJqKAIANgIAIABBQGsgA0HYAmopAwA3AwAgAEE4 +aiADQdACaikDADcDACAAIAMpA8gCNwMwIAAgAy8BxAI7AE0gAEHPAGogA0HGAmotAAA6AABBAQs6 +AL0DIANBkANqJAALkhsCCn8CfiMAQTBrIggkAAJAAkACQAJAAkAgACgCACIFBEAgACgCCCIKIAAo +AgQiA0kNASAAKAIQIgFFDQJBASEEQeyW2gBBECABEMhPRQ0CDAULIAAoAhAiAEUNBEGVl9oAQQEg +ABDITyEEDAQLIAAgCkEBaiILNgIIIAUgCmotAAAhCSAAIAAoAgxBAWoiAjYCDAJAAkACQAJAAkAC +QAJAAkAgAkH0A00EQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCUHBAGsOOQkCDQ0NDQ0N +DQ0NDQ0NDQ0IBw0KDQsNDQ0NDQ0NDQ0NAQQFDQYNDQwBDA0BDAEMAA0NAQwNDQ0BDA0LIAAoAhAi +AUUNGEEBIQRBlpbaAEEBIAEQyE9FDRgMGQsgAyALTQ0WIAUgC2otAABB7gBGDQEMFgtBASEEQQAh +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 +aigCADYCACABIAI2AnAgASAGNgJsIAEgAzYCaCABIAEpArABNwJ0IAFBKGogAUHQAGooAgA2AgAg +AUEgaiABQcgAaikCADcDACABIAEpAkA3AxggAUEYahCtIyIDRQRAIAggASkCaDcCACAIQRBqIAFB ++ABqKQIANwIAIAhBCGogAUHwAGopAgA3AgAMBAsgCEGAgICAeDYCACAIIAM2AgQgAUHoAGoQykcM +AwsgASgCHCECCyAIQYCAgIB4NgIAIAggAjYCBCABQUBrEKVFDAELIAMoAgghBiADKAIEIQMgAUEw +aiACNgIAIAFBLGogAzYCACABQTRqIAMgBkEFdGo2AgAgASADNgIoIAFBADYCOCABQZWAgIB4NgIY +IAFBADYClAEgAUGAgICAeDYCpAEgAUGYAWohCSABQShqIRcCQAJAAkACQANAIAFB6ABqIQ8jAEHQ +AGsiAyQAAkACQAJAIAFBGGoiAigCEEUNACACQRRqKAIAIgYgAkEcaigCAEYNACACIAZBIGo2AhQg +BigCACINQZWAgIB4Rw0BCyAPQYAGOwEADAELIANByABqIhAgBkEcaigCADYCACADQUBrIgsgBkEU +aikCADcDACADQThqIgcgBkEMaiIOKQIANwMAIANBGGoiHCAOKAIANgIAIANBJGogA0HEAGoiDikC +ADcCACADIAYpAgQiKTcDECADIAMpAjw3AhwgECADQShqKAIANgIAIAsgA0EgaikDADcDACAHIBwp +AwA3AwBBASELIAIgAigCIEEBajYCICADICk3AzAgA0EcaiAHKAIANgIAIAMgAykDMDcCFCACEMhD +IAJBCGogDikCADcCACACIAMpAjw3AgAgAyANNgIQIANBCGohByMAQUBqIg0kAAJAAkACQAJAAkAC +QAJAAkACQAJAAkBBFSADQRBqIgYoAgBBgICAgHhzIgIgAkEVTxtBAWsODwYFBQAFBQUFBQUFAQID +BAULIAdBADoAACAHQQBBAUECIAYpAwgiKUIBURsgKVAbOgABDAgLIA1BEGogBkEMaigCACICNgIA +IA0gBikCBDcDCCAHIA0oAgwgAhD9LCANQQhqEIg/DAgLIAcgBigCBCAGQQhqKAIAEP0sDAYLIA1B +IGogBkEMaigCADYCACANIAYpAgQ3AxgCQAJAIA1BGGoiECgCCEEKRw0AAkAgECgCBCICLQAAIgZB +4wBHBEAgBkHzAEYNAQwCCyACLQABQekARw0BIAItAAJB8ABHDQEgAi0AA0HoAEcNASACLQAEQeUA +Rw0BIAItAAVB8gBHDQEgAi0ABkH0AEcNASACLQAHQeUARw0BIAItAAhB+ABHDQFBACEGIAItAAlB +9ABHDQEMAgsgAi0AAUHlAEcNACACLQACQe4ARw0AIAItAANB5ABHDQAgAi0ABEHlAEcNACACLQAF +QfIARw0AIAItAAZB3wBHDQAgAi0AB0HrAEcNACACLQAIQeUARw0AQQEhBiACLQAJQfkARg0BC0EC +IQYLIAdBADoAACAHIAY6AAEgEBCIPwwGCyAGQQhqKAIAQQpHDQICQCAGKAIEIgItAAAiEEHjAEcE +QCAQQfMARg0BDAQLIAItAAFB6QBHDQMgAi0AAkHwAEcNAyACLQADQegARw0DIAItAARB5QBHDQMg +Ai0ABUHyAEcNAyACLQAGQfQARw0DIAItAAdB5QBHDQMgAi0ACEH4AEcNA0EAIRAgAi0ACUH0AEcN +AwwECyACLQABQeUARw0CIAItAAJB7gBHDQIgAi0AA0HkAEcNAiACLQAEQeUARw0CIAItAAVB8gBH +DQIgAi0ABkHfAEcNAiACLQAHQesARw0CIAItAAhB5QBHDQJBASEQIAItAAlB+QBHDQIMAwsgDUEw +aiAGQQhqKQMANwMAIA0gBikDADcDKCANQShqIA1BP2pB0MDDABCLNiECIAdBAToAACAHIAI2AgQM +BAsgB0EAOgAAIAdBAUECIAYtAAQiAkEBRhtBACACGzoAAQwCC0ECIRALIAdBADoAACAHIBA6AAEL +IAYQix4LIA1BQGskAAJAIAMtAAhFBEAgDyADLQAJOgABQQAhCwwBCyAPIAMoAgw2AgQLIA8gCzoA +AAsgA0HQAGokACABLQBoDQEgAS0AaSIDQQNHBEACQAJAAkAgAw4CAQIACyABQRhqEIMlIgJFDQMM +BgsgASgClAEEQEEBIQ9BzNDDAEEKEPEfIQIMBwsjAEEgayIDJAAgAUEYaiICKQMAISkgAkGVgICA +eDYCACADQQhqIAJBCGopAwA3AwAgAyApNwMAIANBEGoiAiADEP8xIAFB6ABqIAIQigUgA0EgaiQA +IAEoAmwhAiABKAJoDQUgASkCcCEpIAEoApQBBEAgCRDJGQsgASApNwKcASABIAI2ApgBIAFBATYC +lAEMAgsgASgCpAFBgICAgHhHBEBBASEPQajEwwBBChDxHyECDAYLIAFB6ABqIAFBGGoQpiYgASgC +bCECIAEoAmgiA0GAgICAeEYNBCABKAJwIQYgAUGkAWoQ+0AgASAGNgKsASABIAI2AqgBIAEgAzYC +pAEMAQsLIAEoApQBIgNFIQ8gA0UNASABQbgBaiAJQQhqKAIANgIAIAEgCSkCADcDsAECfyABKAKk +ASICQYCAgIB4RgRAIAFB6ABqQajEwwBBChCPTSABKAJoIgJBgICAgHhHBEAgASgCbCEPIAEoAnAM +AgsgASgCbCECIAFBsAFqEMkZDAULIAEoAqgBIQ8gASgCrAELIQMgAUHUAGogAUG4AWooAgA2AgAg +ASADNgJIIAEgDzYCRCABIAI2AkAgASABKQOwATcCTCABQegAaiIDIAFBGGpBKBDNTxogAxCWGSID +RQRAIAggASkCQDcCACAIQRBqIAFB0ABqKQIANwIAIAhBCGogAUHIAGopAgA3AgAMBQsgCEGAgICA +eDYCACAIIAM2AgQgAUFAaxDKRwwECyABKAJsIQIMAQtBzNDDAEEKEPAfIQIMAQtBASEPCyABKAKk +AUGAgICAeEcEQCABQaQBahCIPwsgASgClAFBAEcgD3EEQCAJEMkZCyAIQYCAgIB4NgIAIAggAjYC +BCABKAIoBEAgFxDOIgsgAUEYahCCQwsgAUHAAWokAEGAgICAeCEPAkAgBCgCIEGAgICAeEcEQCAR +IAQpAiA3AgQgEUEUaiAEQTBqKQIANwIAIBFBDGogBEEoaikCADcCAAwBCyARIAQoAiQ2AgRBgYCA +gHghDwsgESAPNgIADAILIARBIGohDUEAIQ4jAEHwAWsiAiQAAkACQAJAAkACQAJAAkACfwJAAkAC +QAJAAkBBFSAEQRBqIgEoAgAiBkGAgICAeHMiAyADQRVPG0EUaw4CAQIACyACQcgAaiABQQhqKQMA +NwMAIAIgASkDADcDQCACQUBrIAJB7wFqQYDAwwAQizYhASANQYCAgIB4NgIAIA0gATYCBAwLCyAB +QQxqKAIAIQggAUEIaigCACEDIAIgASgCBDYCECACIAM2AgwgAiADNgIIIAIgAyAIQQR0ajYCFCAC +QRhqIgEgAkEIahCUOyACQYABaiABEN0TIAIoAoABIghBgYCAgHhGBEAgAigChAEhCAwKCyAIQYCA +gIB4RgRAQQBBjNHDAEGIv8MAEN4XIQgMCgsgAigChAEhBiACIAIoAogBIg82AtQBIAIgBjYC0AEg +AiAINgLMASACQYABaiACQRhqEN0TIAIoAoABIgFBgYCAgHhGBEAgAigChAEhCAwJCyABQYCAgIB4 +RgRAQQFBjNHDAEGIv8MAEN4XIQgMCQsgAigChAEhAyACIAIoAogBNgLgASACIAM2AtwBIAIgATYC +2AEgAkGAAWohAyMAQTBrIgEkACABQQhqIAJBGGoiCRCEFwJAIAEoAghBlYCAgHhGBEAgA0IANwIA +DAELIAFBKGogAUEQaikDADcDAEEBIQcgCSAJKAIQQQFqNgIQIAEgASkDCDcDICABQRhqIAFBIGoQ +txcCQCABKAIYIgkEQCADIAk2AgQgA0EIaiABKAIcNgIAQQAhBwwBCyADIAEoAhw2AgQLIAMgBzYC +AAsgAUEwaiQAIAIoAoABDQEgAigChAEiAUUEQEECQYzRwwBBiL/DABDeFyEIDAgLIAIgAkGIAWoo +AgAiBzYCvAEgAiABNgK4ASACQYABaiACQRhqEN0TAkACfyACKAKAASIDQYGAgIB4RgRAIAIoAoQB +DAELIANBgICAgHhHDQFBA0GM0cMAQYi/wwAQ3hcLIQggAkG4AWoQ+j4MCAsgAigCiAEhCSACKAKE +ASEQIAJB1ABqIAJB4AFqKAIANgIAIAIgAikC2AE3AkwgAiAHNgJoIAIgATYCZCACIAk2AmAgAiAQ +NgJcIAIgAzYCWCACIA82AkggAiAGNgJEIAIgCDYCQCACQZABaiACQShqKAIANgIAIAJBiAFqIAJB +IGopAgA3AwAgAiACKQIYNwOAASACQYABahCtIyIBRQRAIA0gAkFAa0EsEM1PGgwLCyANQYCAgIB4 +NgIAIA0gATYCBCACQUBrENM7DAoLIAEoAgghAyABKAIEIQEgAkEwaiAGNgIAIAJBLGogATYCACAC +QTRqIAEgA0EFdGo2AgAgAiABNgIoQQAhASACQQA2AjggAkGVgICAeDYCGCACQYCAgIB4NgKsASAC +QYCAgIB4NgK4ASACQYCAgIB4NgLMASACQShqIRwCfwJAAkACQANAIAJBgAFqIRcjAEHQAGsiCCQA +AkACQAJAIAJBGGoiAygCEEUNACADQRRqKAIAIgcgA0EcaigCAEYNACADIAdBIGo2AhQgBygCACIQ +QZWAgIB4Rw0BCyAXQYAKOwEADAELIAhByABqIg8gB0EcaigCADYCACAIQUBrIgsgB0EUaikCADcD +ACAIQThqIgkgB0EMaiISKQIANwMAIAhBGGoiEyASKAIANgIAIAhBJGogCEHEAGoiEikCADcCACAI +IAcpAgQiKTcDECAIIAgpAjw3AhwgDyAIQShqKAIANgIAIAsgCEEgaikDADcDACAJIBMpAwA3AwBB +ASEPIAMgAygCIEEBajYCICAIICk3AzAgCEEcaiAJKAIANgIAIAggCCkDMDcCFCADEMhDIANBCGog +EikCADcCACADIAgpAjw3AgAgCCAQNgIQIAhBCGohECMAQUBqIgkkAAJAAkACQAJAAkACQAJAAkAC +QAJAAkBBFSAIQRBqIgcoAgBBgICAgHhzIgMgA0EVTxtBAWsODwYFBQAFBQUFBQUFAQIDBAULIBBB +ADoAACAQQgQgBykDCCIpIClCBFobPAABDAgLIAlBEGogB0EMaigCACIDNgIAIAkgBykCBDcDCCAQ +IAkoAgwgAxC6HCAJQQhqEIg/DAgLIBAgBygCBCAHQQhqKAIAELocDAYLIAlBIGogB0EMaigCADYC +ACAJIAcpAgQ3AxggCUEYaiILKAIEIQMCQAJAAkACQCALKAIIQQlrDgIBAAILAkAgAy0AACIHQeMA +RwRAIAdB8wBGDQEMAwsgAy0AAUHpAEcNAiADLQACQfAARw0CIAMtAANB6ABHDQIgAy0ABEHlAEcN +AiADLQAFQfIARw0CIAMtAAZB9ABHDQIgAy0AB0HlAEcNAiADLQAIQfgARw0CQQAhByADLQAJQfQA +Rw0CDAMLIAMtAAFB5QBHDQEgAy0AAiIHQfMARwRAIAdB7gBHDQIgAy0AA0HkAEcNAiADLQAEQeUA +Rw0CIAMtAAVB8gBHDQIgAy0ABkHfAEcNAiADLQAHQesARw0CIAMtAAhB5QBHDQJBASEHIAMtAAlB ++QBHDQIMAwsgAy0AA0HzAEcNASADLQAEQekARw0BIAMtAAVB7wBHDQEgAy0ABkHuAEcNASADLQAH +Qd8ARw0BIAMtAAhB6QBHDQFBAyEHIAMtAAlB5ABHDQEMAgsgAy0AAEHkAEcNACADLQABQeUARw0A +IAMtAAJB9gBHDQAgAy0AA0HpAEcNACADLQAEQeMARw0AIAMtAAVB5QBHDQAgAy0ABkHfAEcNACAD +LQAHQekARw0AQQIhByADLQAIQeQARg0BC0EEIQcLIBBBADoAACAQIAc6AAEgCxCIPwwGCyAHKAIE +IQMCQAJAIAdBCGooAgBBCWsOAgEABAsCQCADLQAAIgtB4wBHBEAgC0HzAEYNAQwFCyADLQABQekA +Rw0EIAMtAAJB8ABHDQQgAy0AA0HoAEcNBCADLQAEQeUARw0EIAMtAAVB8gBHDQQgAy0ABkH0AEcN +BCADLQAHQeUARw0EIAMtAAhB+ABHDQRBACELIAMtAAlB9ABHDQQMBQsgAy0AAUHlAEcNAyADLQAC +IgtB8wBHBEAgC0HuAEcNBCADLQADQeQARw0EIAMtAARB5QBHDQQgAy0ABUHyAEcNBCADLQAGQd8A +Rw0EIAMtAAdB6wBHDQQgAy0ACEHlAEcNBEEBIQsgAy0ACUH5AEcNBAwFCyADLQADQfMARw0DIAMt +AARB6QBHDQMgAy0ABUHvAEcNAyADLQAGQe4ARw0DIAMtAAdB3wBHDQMgAy0ACEHpAEcNA0EDIQsg +Ay0ACUHkAEcNAwwECyADLQAAQeQARw0CIAMtAAFB5QBHDQIgAy0AAkH2AEcNAiADLQADQekARw0C +IAMtAARB4wBHDQIgAy0ABUHlAEcNAiADLQAGQd8ARw0CIAMtAAdB6QBHDQJBAiELIAMtAAhB5ABH +DQIMAwsgCUEwaiAHQQhqKQMANwMAIAkgBykDADcDKCAJQShqIAlBP2pBkMHDABCLNiEDIBBBAToA +ACAQIAM2AgQMBAsgECAHLQAEEPQ7DAILQQQhCwsgEEEAOgAAIBAgCzoAAQsgBxCLHgsgCUFAayQA +AkAgCC0ACEUEQCAXIAgtAAk6AAFBACEPDAELIBcgCCgCDDYCBAsgFyAPOgAACyAIQdAAaiQAAkAC +QCACLQCAAQ0AIAItAIEBIgNBBUYNAwJAAkACQAJAIAMOBAABAgMFCyACKAKsAUGAgICAeEcEQCAC +IAY2AsgBIAIgATYCxAFBASEGQczQwwBBChDxHyEIQQEhDwwPCyACQYABaiACQRhqEKYmIAIoAoAB +IgNBgICAgHhGDQMgAikChAEhKSACQawBahD7QCACICk3ArABIAIgAzYCrAEMBQsgAigCuAFBgICA +gHhHBEAgAiAGNgLIASACIAE2AsQBQQEhBkGoxMMAQQoQ8R8hCEEBIQ8MDgsgAkGAAWogAkEYahCm +JiACKAKAASIDQYCAgIB4Rg0CIAIpAoQBISkgAkG4AWoQ+0AgAiApNwK8ASACIAM2ArgBDAQLIAEE +QCACIAY2AsgBIAIgATYCxAFBASEGQdbQwwBBCRDxHyEIQQEhDwwNCyMAQSBrIgEkACACQRhqIgMp +AwAhKSADQZWAgIB4NgIAIAFBCGogA0EIaikDADcDACABICk3AwAgAUEQaiIDIAEQ/zEgAkGAAWog +AxC3FyABQSBqJAAgAigCgAEiAUUNBSACKAKEASEGDAMLIAIoAswBQYCAgIB4RwRAIAIgBjYCyAEg +AiABNgLEAUEBIQZBxMTDAEEKEPEfIQhBASEPDAwLIAJBgAFqIAJBGGoQpiYgAigCgAEiA0GAgICA +eEYNACACKQKEASEpIAJBzAFqEPtAIAIgKTcC0AEgAiADNgLMAQwCCyACIAY2AsgBIAIgATYCxAEg +AigChAEhCAwJCyACQRhqEIMlIghFDQALIAIgBjYCyAEgAiABNgLEAQwHCyACIAY2AsgBIAIgATYC +xAECQCACKAKsAUGAgICAeEciDkUEQCACQYABakHM0MMAQQoQj00gAigCgAEiA0GAgICAeEcEQCAC +IAIpAoQBNwLcASACIAM2AtgBDAILIAIoAoQBIQgMCAsgAkHgAWogAkG0AWooAgA2AgAgAiACKQKs +ATcD2AELAkACQAJAAkAgAigCuAFBgICAgHhGIg8EQCACQYABakGoxMMAQQoQj00gAigCgAEiA0GA +gICAeEYNAiACIAIpAoQBNwIMIAIgAzYCCAwBCyACQRBqIAJBwAFqKAIANgIAIAIgAikCuAE3AwgL +IAEiA0UEQCACQYABakHW0MMAQQkQk00gAigCgAEiA0UNAiACKAKEASEGCyACIAY2AugBIAIgAzYC +5AEgAigCzAEiB0GAgICAeEcNBCACQYABakHExMMAQQoQj00gAigCgAEiB0GAgICAeEYNAiACKAKI +ASEPIAIoAoQBDAULIAIoAoQBIQhBAQwHCyACKAKEASEIDAULIAIoAoQBIQggAkHkAWoQ+j4MBAsg +AiAGNgLIAUEAIQEgAkEANgLEASACKAKEASEIQQEhBkEBIQ8MBgsgAigC1AEhDyACKALQAQshASAC +QfgAaiIJIAJBEGooAgA2AgAgAiACKQMINwNwIAIoAtwBIQggAigC2AEiEEGAgICAeEYNBSACKALg +ASELIAJB1ABqIAkoAgA2AgAgAiACKQNwNwJMIAIgBjYCaCACIAM2AmQgAiAPNgJgIAIgATYCXCAC +IAc2AlggAiALNgJIIAIgCDYCRCACIBA2AkAgAkGAAWoiASACQRhqQSgQzU8aIAEQlhkiAUUEQCAN +IAJBQGtBLBDNTxoMCgsgDUGAgICAeDYCACANIAE2AgQgAkFAaxDTOwwJCyACKAKEASEIDAULIAJB +CGoQiD8gAUULIQYgAkHYAWoQiD8MAQtBASEGQQEhDwsgAigCzAFBgICAgHhHBEAgAkHMAWoQiD8L +IAFBAEcgBnEEQCACQcQBahD6PgsgAigCuAFBgICAgHhHIA9xBEAgAkG4AWoQiD8LIA4gAigCrAFB +gICAgHhGcg0AIAJBrAFqEIg/CyANQYCAgIB4NgIAIA0gCDYCBCACKAIoBEAgHBDOIgsgAkEYahCC +QwwDCyACQdgBahCIPwsgAkHMAWoQiD8LIA1BgICAgHg2AgAgDSAINgIEIAJBGGoQpUULIAJB8AFq +JAAgBCgCIEGAgICAeEcEQCARIARBIGpBLBDNTxoMAgsgESAEKAIkNgIEIBFBgYCAgHg2AgAMAQsg +EUGBgICAeDYCACARIAE2AgQLIARB0ABqJAAgCigCOCIPQYGAgIB4RwRAIAooAjwhHiAKQQRqIApB +QGtBJBDNTxogCkEwaiAKQdABaikDADcDACAKIAopA8gBNwMoIAooAsABIQMgCigCxAEhASAKQaQB +ahCsSwwDCyAKKAI8IQEgCkHAAWoQtiMMAQtBACEFIAMhAQsgCkGkAWoQrEsCQCAFDQAgCigCjAFB +B0YNACAKQYwBahC2IwtBByEDCyAUIBQtACRBAWo6ACQgFBCNEyEFIApByABqIApBMGopAwA3AgAg +CiABNgI8IAogHjYCVCAKIA82AlAgCiAKKQMoNwJAIAogAzYCOCAKQdgAaiAKQQRqQSQQzU8aIAog +BTYCfAJAIANBB0cEQCAFRQ0BIApBOGoQtiUgBSEBDAQLIAVFDQMgCkH8AGoQ3x0MAwsgH0EIaiAK +QUBrQTwQzU8aIB8gATYCBCAfIAM2AgAMBAsgCigChAEhAwwACwALIBQgARC8UiEBIB9BBzYCACAf +IAE2AgQMAQsgCkEYNgI4IBQgCkE4ahCAMSEBIB9BBzYCACAfIAE2AgQLIApB4AFqJAACQCAbKAKM +AUEHRwRAIBtByABqIBtBjAFqQcQAEM1PGiAbQSBqENUjIgFFBEAgIiAbQcgAakHEABDNTxoMAgsg +IkEHNgIAICIgATYCBCAbQcgAahC2JQwBCyAiIBsoApABNgIEICJBBzYCAAsgG0EgahCIPyAbQdAB +aiQAIAwoArgBIgFBB0YNASAMKAK8ASEDIAxB+ABqIAxBwAFqQTwQzU8aIAwgAzYCdCAMIAE2AnAg +DEGAAmoQ+j4gHUUNAiAMICU2AoQCIAwgHTYCgAIgIUUNBCAMICY2ArwBIAwgITYCuAEgLFBFDQNB +zcfFAEEQEPAfIQEgAEICNwMAIAAgATYCCCAMQbgBahD6PgwFC0G4x8UAQQcQ8B8hASAAQgI3AwAg +ACABNgIIDAgLIAwoArwBENoLIQEgAEICNwMAIAAgATYCCCAMQYACahD6PgwHC0HFx8UAQQgQ8B8h +ASAAQgI3AwAgACABNgIIDAMLAn8gKkICUQRAQgAhKiAMQZUCakIANwAAIAxCADcDkAJBAAwBCyAM +QZgCaiAkQRBqKQMANwMAIAxBkAJqICRBCGopAwA3AwAgDCAkKQMANwOIAiAMKAJcIQEgDCgCWAsh +AyAAQUBrIAxB8ABqQcQAEM1PGiAAICo3AwAgACAtNwM4IAAgJjYCNCAAICE2AjAgACAlNgIsIAAg +HTYCKCAAIAE2AiQgACADNgIgIAAgDCkDiAI3AwggAEEQaiAMQZACaikDADcDACAAQRhqIAxBmAJq +KQMANwMAIAxB5ABqEIg/DAwLQb/HxQBBBhDwHyEBIABCAjcDACAAIAE2AggLIAxBgAJqEPo+CyAd +RSEdIAxB8ABqEL8UQQAMAwsgDCgCvAEhASAAQgI3AwAgACABNgIIDAULQdHBxQBBBBDwHyEBIABC +AjcDACAAIAE2AghBASEdQQEhAAwCC0EBIR1BAQshACAMQeQAahCIPwtBAAwDCyAMKQPAASEtQgEh +LAwBCwtBASEdQQEhAEEBISdBAQsgDEE4ahCoQyAdBEAgDEEwahCQRQsgAARAIAxBKGoQkEULICcE +QCAMQSBqEJBFC0UNACAMQRRqEPtACyAMQaACaiQAC5QNAgh/AX4jAEGQAmsiAyQAIAECfwJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQBZQQFrDgUJAAIDBAELAAsgAUEBOgBYIAEgASgC +VCIENgIwIAEgASkDGDcDACABQQhqIAFBIGopAwA3AwAgAUEQaiABQShqKQMANwMAIAMgARCxRiAD +KAIAIQUgAygCBCEGIAFB9ABqQQA6AAAgAUHoAGogBjYCACABQeQAaiAFNgIAIAEgBDYCYAsgA0FA +ayABQeAAaiIIIAIQnA4gAy0AQCIFQQxGDQcgA0EmaiIKIAMtAEM6AAAgA0EQaiIEIANB0ABqKQIA +NwMAIANBGGoiByADQdgAaikCADcDACADIAMvAEE7ASQgAyADKQJINwMIIAMoAkQhBiADKAJgIQkg +CBD1PyAFQQtHDQIgASAGNgI0IAFBOGogAykDCDcAACABQUBrIAQpAwA3AAAgAUHIAGogBykDADcA +ACABKAIwKAIgIQQgAUGYAWpBADoAACABIARBCGo2AmALIAFB4ABqIgQgAhC4ByIFRQ0CIAEgBTYC +UCAEENk/IAQgASgCUEEUahDgECABQfgAaiABKAIwEIsUIAFBADoAWCABIAEpAwA3A6ABIAFBqAFq +IAFBCGopAwA3AwAgAUGwAWogAUEQaikDADcDACABKAIwIgQpAwAhCyABQcwBakEAOgAAIAFBvAFq +IAs3AgAgASAENgK4AQsgA0FAayABQbgBaiIHIAIQnA4gAy0AQCIFQQxGDQYgA0GGAWoiAiADLQBD +OgAAIANB8ABqIgQgA0HQAGopAgA3AwAgA0H4AGoiCCADQdgAaikCADcDACADIAMvAEE7AYQBIAMg +AykCSDcDaCADKAJEIQYgAygCYCEJIAcQ9T8gBUELRw0HIAYNAiADQQA2AigMAwsgA0GOAmogCi0A +ADoAACADQfgBaiAEKQMANwMAIANBgAJqIAcpAwA3AwAgAyADLwEkOwGMAiADIAMpAwg3A/ABDAcL +IABBAzYCcEEEDAgLIANB0ABqIANB+ABqKQMANwMAIANByABqIANB8ABqKQMANwMAIAMgAykDaDcD +QCADQShqIANBQGsQxCsLIANBkAFqIAFBQGspAgA3AwAgA0GYAWogAUHIAGopAgA3AwAgA0HgAWog +AUHoAGopAgA3AwAgA0HoAWogAUHwAGopAgA3AwAgA0GOAmogAUH7AGotAAA6AAAgAyABKQJgNwPY +ASADIAEvAHk7AYwCIAMgAUE4aikCADcDiAEgASgCNCEHIAEtAHghBSADQYACaiABQZABaikDADcD +ACADQfgBaiABQYgBaikDADcDACADQdABaiABQbABaikCADcDACADQcgBaiABQagBaikCADcDACAD +QbgBaiADQThqKQIANwMAIANBsAFqIANBMGopAgA3AwAgAyABQYABaikDADcD8AEgAyABKQKgATcD +wAEgAyADKQIoNwOoASABQfwAaigCACEGIAFBnAFqKAIAIQQgAUGYAWooAgAhCSABQdAAahCaTCAB +QdgAaiECDAULQaDEwABBI0H4y8AAEOYrAAsgAEEDNgJwQQMMBAsgAEEDNgJwQQUMAwsgA0GOAmog +Ai0AADoAACADQfgBaiAEKQMANwMAIANBgAJqIAgpAwA3AwAgAyADLwGEATsBjAIgAyADKQNoNwPw +ASABQaABahD7HyABQfgAahDSMCABQeAAahCLGCABQTRqEJhBIAFB0ABqEJpMCyABQdgAaiECQQIh +ByABLQBYRQ0AIAEQ+x8LIAAgBToAACACQQA6AAAgACADLwGMAjsAASAAIAY2AgQgACADKQPwATcD +CCAAIAQ2AiQgACAJNgIgIAAgAykD2AE3AiggAEEDaiADQY4Cai0AADoAACAAQRBqIANB+AFqKQMA +NwMAIABBGGogA0GAAmopAwA3AwAgAEEwaiADQeABaikDADcCACAAQThqIANB6AFqKQMANwIAIAAg +BzYCcCAAQdAAaiADQdABaikDADcCACAAQcgAaiADQcgBaikDADcCACAAIAMpA8ABNwJAIAAgAykD +qAE3AlggAEHgAGogA0GwAWopAwA3AgAgAEHoAGogA0G4AWopAwA3AgAgACADKQOIATcCdCAAQfwA +aiADQZABaikDADcCACAAQYQBaiADQZgBaikDADcCACAAQYwBaiADQaABaigCADYCAEEBCzoAWSAD +QZACaiQAC5QNAgh/AX4jAEGQAmsiAyQAIAECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QCABLQBZQQFrDgUJAAIDBAELAAsgAUEBOgBYIAEgASgCVCIENgIwIAEgASkDGDcDACABQQhqIAFB +IGopAwA3AwAgAUEQaiABQShqKQMANwMAIAMgARCxRiADKAIAIQUgAygCBCEGIAFB9ABqQQA6AAAg +AUHoAGogBjYCACABQeQAaiAFNgIAIAEgBDYCYAsgA0FAayABQeAAaiIIIAIQnQ4gAy0AQCIFQQxG +DQcgA0EmaiIKIAMtAEM6AAAgA0EQaiIEIANB0ABqKQIANwMAIANBGGoiByADQdgAaikCADcDACAD +IAMvAEE7ASQgAyADKQJINwMIIAMoAkQhBiADKAJgIQkgCBD1PyAFQQtHDQIgASAGNgI0IAFBOGog +AykDCDcAACABQUBrIAQpAwA3AAAgAUHIAGogBykDADcAACABKAIwKAIgIQQgAUGYAWpBADoAACAB +IARBCGo2AmALIAFB4ABqIgQgAhC5ByIFRQ0CIAEgBTYCUCAEENk/IAQgASgCUEEUahDgECABQfgA +aiABKAIwEIsUIAFBADoAWCABIAEpAwA3A6ABIAFBqAFqIAFBCGopAwA3AwAgAUGwAWogAUEQaikD +ADcDACABKAIwIgQpAwAhCyABQcwBakEAOgAAIAFBvAFqIAs3AgAgASAENgK4AQsgA0FAayABQbgB +aiIHIAIQnQ4gAy0AQCIFQQxGDQYgA0GGAWoiAiADLQBDOgAAIANB8ABqIgQgA0HQAGopAgA3AwAg +A0H4AGoiCCADQdgAaikCADcDACADIAMvAEE7AYQBIAMgAykCSDcDaCADKAJEIQYgAygCYCEJIAcQ +9T8gBUELRw0HIAYNAiADQQA2AigMAwsgA0GOAmogCi0AADoAACADQfgBaiAEKQMANwMAIANBgAJq +IAcpAwA3AwAgAyADLwEkOwGMAiADIAMpAwg3A/ABDAcLIABBAzYCcEEEDAgLIANB0ABqIANB+ABq +KQMANwMAIANByABqIANB8ABqKQMANwMAIAMgAykDaDcDQCADQShqIANBQGsQxCsLIANBkAFqIAFB +QGspAgA3AwAgA0GYAWogAUHIAGopAgA3AwAgA0HgAWogAUHoAGopAgA3AwAgA0HoAWogAUHwAGop +AgA3AwAgA0GOAmogAUH7AGotAAA6AAAgAyABKQJgNwPYASADIAEvAHk7AYwCIAMgAUE4aikCADcD +iAEgASgCNCEHIAEtAHghBSADQYACaiABQZABaikDADcDACADQfgBaiABQYgBaikDADcDACADQdAB +aiABQbABaikCADcDACADQcgBaiABQagBaikCADcDACADQbgBaiADQThqKQIANwMAIANBsAFqIANB +MGopAgA3AwAgAyABQYABaikDADcD8AEgAyABKQKgATcDwAEgAyADKQIoNwOoASABQfwAaigCACEG +IAFBnAFqKAIAIQQgAUGYAWooAgAhCSABQdAAahCaTCABQdgAaiECDAULQcDAwQBBI0H8zcEAEOYr +AAsgAEEDNgJwQQMMBAsgAEEDNgJwQQUMAwsgA0GOAmogAi0AADoAACADQfgBaiAEKQMANwMAIANB +gAJqIAgpAwA3AwAgAyADLwGEATsBjAIgAyADKQNoNwPwASABQaABahD7HyABQfgAahDSMCABQeAA +ahCLGCABQTRqEJhBIAFB0ABqEJpMCyABQdgAaiECQQIhByABLQBYRQ0AIAEQ+x8LIAAgBToAACAC +QQA6AAAgACADLwGMAjsAASAAIAY2AgQgACADKQPwATcDCCAAIAQ2AiQgACAJNgIgIAAgAykD2AE3 +AiggAEEDaiADQY4Cai0AADoAACAAQRBqIANB+AFqKQMANwMAIABBGGogA0GAAmopAwA3AwAgAEEw +aiADQeABaikDADcCACAAQThqIANB6AFqKQMANwIAIAAgBzYCcCAAQdAAaiADQdABaikDADcCACAA +QcgAaiADQcgBaikDADcCACAAIAMpA8ABNwJAIAAgAykDqAE3AlggAEHgAGogA0GwAWopAwA3AgAg +AEHoAGogA0G4AWopAwA3AgAgACADKQOIATcCdCAAQfwAaiADQZABaikDADcCACAAQYQBaiADQZgB +aikDADcCACAAQYwBaiADQaABaigCADYCAEEBCzoAWSADQZACaiQAC5QNAgh/AX4jAEGQAmsiAyQA +IAECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQBZQQFrDgUJAAIDBAELAAsgAUEB +OgBYIAEgASgCVCIENgIwIAEgASkDGDcDACABQQhqIAFBIGopAwA3AwAgAUEQaiABQShqKQMANwMA +IAMgARCxRiADKAIAIQUgAygCBCEGIAFB9ABqQQA6AAAgAUHoAGogBjYCACABQeQAaiAFNgIAIAEg +BDYCYAsgA0FAayABQeAAaiIIIAIQng4gAy0AQCIFQQxGDQcgA0EmaiIKIAMtAEM6AAAgA0EQaiIE +IANB0ABqKQIANwMAIANBGGoiByADQdgAaikCADcDACADIAMvAEE7ASQgAyADKQJINwMIIAMoAkQh +BiADKAJgIQkgCBD1PyAFQQtHDQIgASAGNgI0IAFBOGogAykDCDcAACABQUBrIAQpAwA3AAAgAUHI +AGogBykDADcAACABKAIwKAIgIQQgAUGYAWpBADoAACABIARBCGo2AmALIAFB4ABqIgQgAhC6ByIF +RQ0CIAEgBTYCUCAEENk/IAQgASgCUEEUahDgECABQfgAaiABKAIwEIsUIAFBADoAWCABIAEpAwA3 +A6ABIAFBqAFqIAFBCGopAwA3AwAgAUGwAWogAUEQaikDADcDACABKAIwIgQpAwAhCyABQcwBakEA +OgAAIAFBvAFqIAs3AgAgASAENgK4AQsgA0FAayABQbgBaiIHIAIQng4gAy0AQCIFQQxGDQYgA0GG +AWoiAiADLQBDOgAAIANB8ABqIgQgA0HQAGopAgA3AwAgA0H4AGoiCCADQdgAaikCADcDACADIAMv +AEE7AYQBIAMgAykCSDcDaCADKAJEIQYgAygCYCEJIAcQ9T8gBUELRw0HIAYNAiADQQA2AigMAwsg +A0GOAmogCi0AADoAACADQfgBaiAEKQMANwMAIANBgAJqIAcpAwA3AwAgAyADLwEkOwGMAiADIAMp +Awg3A/ABDAcLIABBAzYCcEEEDAgLIANB0ABqIANB+ABqKQMANwMAIANByABqIANB8ABqKQMANwMA +IAMgAykDaDcDQCADQShqIANBQGsQxCsLIANBkAFqIAFBQGspAgA3AwAgA0GYAWogAUHIAGopAgA3 +AwAgA0HgAWogAUHoAGopAgA3AwAgA0HoAWogAUHwAGopAgA3AwAgA0GOAmogAUH7AGotAAA6AAAg +AyABKQJgNwPYASADIAEvAHk7AYwCIAMgAUE4aikCADcDiAEgASgCNCEHIAEtAHghBSADQYACaiAB +QZABaikDADcDACADQfgBaiABQYgBaikDADcDACADQdABaiABQbABaikCADcDACADQcgBaiABQagB +aikCADcDACADQbgBaiADQThqKQIANwMAIANBsAFqIANBMGopAgA3AwAgAyABQYABaikDADcD8AEg +AyABKQKgATcDwAEgAyADKQIoNwOoASABQfwAaigCACEGIAFBnAFqKAIAIQQgAUGYAWooAgAhCSAB +QdAAahCaTCABQdgAaiECDAULQeDGwgBBI0HE0sIAEOYrAAsgAEEDNgJwQQMMBAsgAEEDNgJwQQUM +AwsgA0GOAmogAi0AADoAACADQfgBaiAEKQMANwMAIANBgAJqIAgpAwA3AwAgAyADLwGEATsBjAIg +AyADKQNoNwPwASABQaABahD7HyABQfgAahDSMCABQeAAahCLGCABQTRqEJhBIAFB0ABqEJpMCyAB +QdgAaiECQQIhByABLQBYRQ0AIAEQ+x8LIAAgBToAACACQQA6AAAgACADLwGMAjsAASAAIAY2AgQg +ACADKQPwATcDCCAAIAQ2AiQgACAJNgIgIAAgAykD2AE3AiggAEEDaiADQY4Cai0AADoAACAAQRBq +IANB+AFqKQMANwMAIABBGGogA0GAAmopAwA3AwAgAEEwaiADQeABaikDADcCACAAQThqIANB6AFq +KQMANwIAIAAgBzYCcCAAQdAAaiADQdABaikDADcCACAAQcgAaiADQcgBaikDADcCACAAIAMpA8AB +NwJAIAAgAykDqAE3AlggAEHgAGogA0GwAWopAwA3AgAgAEHoAGogA0G4AWopAwA3AgAgACADKQOI +ATcCdCAAQfwAaiADQZABaikDADcCACAAQYQBaiADQZgBaikDADcCACAAQYwBaiADQaABaigCADYC +AEEBCzoAWSADQZACaiQAC5QSAgh/AX4jAEGQCGsiAyQAIAMgAikCADcCECADIAIpAgg3AhggA0Eg +aiEEIANBGGoiAigCACEFIAIoAgQhByMAQYACayICJAAgAkEIaiIJIAUgBxCnOSACQSBqIgUgCRDJ +LSACQaQBaiAFELAdAkAgAigCpAFBgICAgHhHBEAgAkHIAGogAkGkAWpB3AAQzU8aIAJBIGoQ1SMi +BUUEQCAEIAJByABqQdwAEM1PGgwCCyAEQYCAgIB4NgIAIAQgBTYCBCACQewAahD6PiACQfQAahD6 +PiACQcgAaiIEEP8zIAQQoT0gAkH8AGoQoBkgAkGIAWoQmhkgAkHUAGoQ+0AgAkHgAGoQzBkgAkGU +AWoQzBkMAQsgBCACKAKoATYCBCAEQYCAgIB4NgIACyACQSBqEIg/IAJBgAJqJAACQAJAAkACQCAD +KAIgQYCAgIB4RwRAIANB/ABqIANBIGpB3AAQzU8aAkAgASgCACIJIANBoAFqIgoQxDFFDQAgA0EQ +aiADQagBahDEMUUNACABKAIEKAIAIgEgASgCACICQQFqNgIAIAJBAEgNAiADQYgCaiIIIANB/ABq +QdwAEM1PGiADQQA6AOgDIAMgATYC5AIjAEEQayIGJAAjAEHQAGsiASQAIAFBADoAKCABQQM2AgAg +AUEwaiABEOVBIAFBPGogARDlQSABQQA6AEhB2ABBCBDYMCICQoGAgIAQNwMAIAJBCGogAUHQABDN +TxogAiACKAIAIgRBAWo2AgAgBEEASARAAAsgBkEIaiIEIAI2AgQgBCACNgIAIAFB0ABqJAAgBigC +DCEEIAYoAgghBRCgQCIBIAEoAgAiAkEBajYCACACQQBIBEAACyADQZwGaiIHIAhB5AEQzU8iAkHw +AWogATYCACACIAQ2AuwBIAIgBTYC6AEgAiABNgLkASAGQRBqJAAgA0GwBGoiASAHQewBEM1PGiAD +KQKICCELIANBCGoQyR0gAygCCCECIAMoAgwhBkHkA0EEEKcuIAFB7AEQzU8iAUEAOgDgAyABIAY2 +AuwBIAFBmKXEABDvFiAAIAI2AgggACALNwIADAULQcST2wAoAgBBA0sNA0GIg9sAEPs+IgFB/wFx +RQ0DQQAhAkGIg9sAKAIAIAEQ9S5FDQNBiIPbACgCACIHQShqKAIAIQQgB0EkaigCACEFIAcoAhwh +ASADIAdBIGooAgAiCAR/IANBADYCrAYgAyAENgKoBiADIAU2AqQGIAMgCDYCoAZBASECIAEFQQAL +NgKcBiADQdgBaiADQZwGakGYmsQAEOYsIANBvARqQgA3AgAgA0EBNgK0BCADQcyaxAA2ArAEIANB +hJvEADYCuAQgAyACIAhPBH9BAAUgAyAENgKoBiADIAU2AqQGIAMgCDYCoAYgAyACNgKsBiACQQFq +IQIgAQs2ApwGIANB7AFqIANBnAZqQZiaxAAQ5iwgAyAJNgKAAiACIAhJBEAgAyAENgKoBiADIAU2 +AqQGIAMgCDYCoAYgAyACNgKsBiABIQYgAkEBaiECCyADIAY2ApwGIANB8ANqIANBnAZqQZiaxAAQ +5iwgAyADQRBqNgKEAiADIAIgCE8Ef0EABSADIAQ2AqgGIAMgBTYCpAYgAyAINgKgBiADIAI2AqwG +IAJBAWohAiABCzYCnAYgA0GEBGogA0GcBmpBmJrEABDmLCADIAo2AuwDIAMgAiAISQR/IAMgAjYC +mAIgAyAENgKUAiADIAU2ApACIAMgCDYCjAIgAQVBAAs2AogCIANBnARqIgIgA0GIAmoiAUGYmsQA +EOYsIANB1AZqQfSaxAA2AgAgA0HIBmpB5JrEADYCACADQbwGakH0msQANgIAIANBsAZqQeSaxAA2 +AgAgA0HQBmogA0GYBGo2AgAgA0HEBmogA0HsA2o2AgAgA0G4BmogA0GEAmo2AgAgA0GsBmogA0GA +Amo2AgAgA0HUmsQANgKkBiADIANBqAFqNgKYBCADIAI2AswGIAMgA0GEBGo2AsAGIAMgA0HwA2o2 +ArQGIAMgA0HsAWo2AqgGIAMgA0GwBGo2AqAGIAMgA0HYAWo2ApwGIAEgB0EcaiADQZwGahDVQUGI +g9sAKAIAIAEQxDQMAwsgAyADKAIkNgLsA0HEk9sAKAIAQQNLDQFBlIPbABD7PiIGQf8BcUUNAUEA +IQJBlIPbACgCACAGEPUuRQ0BQZSD2wAoAgAiBUEoaigCACEHIAVBJGooAgAhCSAFKAIcIQYgAyAF +QSBqKAIAIgQEfyADQQA2AqwGIAMgBzYCqAYgAyAJNgKkBiADIAQ2AqAGQQEhAiAGBUEACzYCnAYg +A0HwA2ogA0GcBmpBhJvEABDmLCADQbwEakIANwIAIANBATYCtAQgA0G4m8QANgKwBCADQYSbxAA2 +ArgEIAMgAiAETwR/QQAFIAMgBzYCqAYgAyAJNgKkBiADIAQ2AqAGIAMgAjYCrAYgAkEBaiECIAYL +NgKcBiADQYQEaiADQZwGakGEm8QAEOYsIAMgASgCADYCmAQgAiAESQRAIAMgBzYCqAYgAyAJNgKk +BiADIAQ2AqAGIAMgAjYCrAYgBiEIIAJBAWohAgsgAyAINgKcBiADQZwEaiADQZwGakGEm8QAEOYs +IAMgA0EQajYC2AEgAyACIARJBH8gAyACNgKYAiADIAc2ApQCIAMgCTYCkAIgAyAENgKMAiAGBUEA +CzYCiAIgA0H8AGoiAiADQYgCaiIBQYSbxAAQ5iwgA0HIBmpBwJvEADYCACADQbwGakH0msQANgIA +IANBsAZqQeSaxAA2AgAgA0HEBmogA0HsAWo2AgAgA0G4BmogA0HYAWo2AgAgA0GsBmogA0GYBGo2 +AgAgA0HUmsQANgKkBiADIAI2AsAGIAMgA0GcBGo2ArQGIAMgA0GEBGo2AqgGIAMgA0GwBGo2AqAG +IAMgA0HwA2o2ApwGIAMgA0HsA2o2AuwBIAEgBUEcaiADQZwGahDWQUGUg9sAKAIAIAEQxDQMAQsA +CyAAQQA2AgAgA0HsA2oQ2jQMAQsgAEEANgIAIANB/ABqEMopCyADQRhqEPo+IANBEGoQ+j4gA0GQ +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 +IARBQGtBqAEQzU8aIAMoAsABQaCAgIB4RwRAIANB8AJqIAQoAhggA0HAAWoQoQ8gAygC8AIhAQsg +A0EUaiADQfACakEEckGsARDNTxogA0EQaiADQdgOaigCADYCACADIAMpA9AONwMIDAYLQcDAwQBB +I0Gk2sEAEOYrAAsgAEEDNgKwAQwICyADQagNaiADQdgBaikCADcDACADQaANaiADQdABaikCADcD +ACADQZgNaiADQcgBaikCADcDACADIAMpAsABNwOQDQwFCyAAQQM2ArABQQQhAgwGCyADQagNaiAH +KQMANwMAIANBoA1qIAYpAwA3AwAgA0GYDWogASkDADcDACADIAMpA/APNwOQDSAEQUBrEPlCIARB +ADoAJCAEQShqEKlHIAIhAQwDCyADQRRqIANBkA1qQQRyQawBEM1PGiADQRBqIANB2A5qKAIANgIA +IAMgAykD0A43AwggAiEBCyAELQAkBEAgBEFAaxD5QgsgBEEAOgAkIARBKGoQqUcLIANBkA1qIANB +FGpBrAEQzU8aIANB+AJqIANBEGooAgA2AgAgAyADKQMINwPwAgwBC0ECIQULQQUgBCgCAEEMayIC +IAJBBU8bQQZxQQJHBEAgBBDiKAsgACABNgIAIABBBGogA0GQDWpBrAEQzU8aIAAgBTYCsAEgACAD +KQPwAjcCtAEgAEG8AWogA0H4AmooAgA2AgBBASECCyAEIAI6ACUgA0GQEGokAAu2DQEKfyMAQeAB +ayICJAAgAkEgaiABEMRNIAIoAiQhBCACKAIgIQMgAkEANgLAASACQoCAgIAQNwK4ASACQYABakGs +8cMANgIAIAJBAzoAiAEgAkEgNgJ4IAJBADYChAEgAkEANgJwIAJBADYCaCACIAJBuAFqNgJ8AkAC +QCAAAn8CQAJAAkACQAJAAkAgAyAEIAJB6ABqEKofRQRAIAJBMGoiAyACQcABaiIFKAIANgIAIAIg +AikCuAE3AygCQAJAAkACQAJAAkBBBSABEJ9NIgQoAgBB4f///wdqIgYgBkEFTxtBAWsOBQECAwQF +AAsgAkGYAWogAygCADYCACACIAIpAyg3A5ABIAIgAkGQAWoQr0EiBjYCnAEgAkEANgKoASACQQA2 +AqABIAQoAgQEQCACQRhqQQsQ7h8gAigCGCEFIAIoAhwiA0Gc+8MAKQAANwAAIANBB2pBo/vDACgA +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 +IQQgASADKAIMIgU2AswEIAEgBDYCyAQMAwsgAyAINgJIIAcgBEEEakGMBBDNTxogA0HYBGogASgC +4ANBFGogA0HIAGoQsgkgAygC2ARBBUcEQCADQdgEahDjPwsgBUGQBGshBSAGIQQMAAsAC0GgxMAA +QSNB+IjBABDmKwALIANB2ARqIAQgAiAFKAIMEQMAIAMtANgEIgRBDEYNASADQZ4JaiADLQDbBDoA +ACADQYgJaiADQegEaikCADcDACADQZAJaiADQfAEaikCADcDACADIAMvANkEOwGcCSADIAMpAuAE +NwOACSADKALcBCEFIAMoAvgEIQYgAUHIBGoQmTYgBEELRg0CIANBnAlqIQcgA0GACWoLIQIgA0Ge +CmogB0ECai0AADoAACADQYgKaiACQQhqKQAANwMAIANBkApqIAJBEGopAAA3AwAgAyAHLwAAOwGc +CiADIAIpAAA3A4AKIAFBlARqEOk/IAFBADoAvAQgAUHwA2oQ1j8gAUEAOgC9BCABLQC/BA0DDAYL +IABBDDoAAEEEDAcLAkAgBUUEQCADQQA2AugIDAELIANB6ARqIANBkAlqKQMANwMAIANB4ARqIANB +iAlqKQMANwMAIAMgAykDgAk3A9gEIANB6AhqIANB2ARqEMQrCyABKALgAyECIAFBADoAvAQgA0HY +BGoiBCABQZQEakEkEM1PGiABQQA6AL0EIANBlAVqIAFB8ANqQSQQzU8aIANBjAVqIANB+AhqKQIA +NwIAIANBhAVqIANB8AhqKQIANwIAIAMgAykC6Ag3AvwEIANBoAlqIAJBGGogBBCzCSADKAKgCUGA +gICAeEYNACADQcQJahCXRSADQaAJahDpPyADQdwJahDWPwsgAS0AvAQNAQwCCyABQcgEahDASwwC +CyABQZQEahDpPwsgAUEAOgC8BCABLQC9BARAIAFB8ANqENY/CyABQQA6AL8EIAFBADoAvQQgAUG+ +BGohAkELIQQMAQsgAUEAOgC/BCABQb4EaiECCyABLQC+BARAIAFB5ANqELpLCyACQQA6AAAgACAE +OgAAIAAgBTYCBCAAIAY2AiAgACADLwGcCjsAASAAQQNqIANBngpqLQAAOgAAIAAgAykDgAo3Aggg +AEEQaiADQYgKaikDADcCACAAQRhqIANBkApqKQMANwIAQQELOgDABCADQaAKaiQAC8QNAQZ/IwBB +oAprIgMkACABAn8CQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQDABEEBaw4EBQAB +AgMLAAsgAUHYBGooAgAhBiABKALUBCEFDAILIAFBzARqKAIAIQUgASgCyAQhBAwDCyABQQA2ArwE +IAEgASgCuAQ2AuADIAEgAUHwAWpB8AEQzU8iBEHkA2ogBEHEAWooAgAiBiAGIARByAFqKAIAQcwA +bGoQlxggBEEBOgC+BCAEQcgEaiAEQeQBahC8USAEQQE6AL8EIARB8ANqIARBhAFqELc4IARBAToA +vQQgBEGUBGogBEHgAGoQtjggBEEBOgC8BCADQSBqIAQoAuADQQhqELY3IAMoAiAhBiADKAIkIQUg +A0HYBGoiByAEQfABEM1PGiADQRhqIAYgByAFKAIgEQMAIAMoAhghBSAEQdgEaiADKAIcIgY2AgAg +BCAFNgLUBAsgA0HYBGogBSACIAYoAgwRAwACQCADLQDYBCIEQQxHBEAgA0HGAGogAy0A2wQ6AAAg +A0EwaiADQegEaikCADcDACADQThqIANB8ARqKQIANwMAIAMgAy8A2QQ7AUQgAyADKQLgBDcDKCAD +KALcBCEFIAMoAvgEIQYgAUHUBGoQmTYgBEELRg0BIANBxABqIQcgA0EoagwECyAAQQw6AABBAwwM +CwJAIAFB7ANqIgQoAgBFDQAgASgC4AMhBSABQQA6AL4EIANB4ARqIAQoAgA2AgAgAyABKQLkAzcD +2AQgA0GgCWogBUEQaiADQdgEahDuCCADKAKgCUGAgICAeEYNACADQaAJahC6SwsgAUEAOgC/BCAB +QdAEaigCACEFIAFBzARqKAIAIQQgAyABKALIBDYCqAkgAyAENgKkCSADIAQ2AqAJIAMgBCAFQZAE +bCIFajYCrAkgA0HMAGohBwNAAkAgBQRAIAMgBEGQBGoiBjYCpAkgBCgCACIIQQVHDQELIANBoAlq +EMkTIAFB8ANqEPE3BEAgAUGUBGoQ1EQNCAsgA0EQaiABKALgAyIEQQhqELY3IANBCGogAygCECAE +KAIAIAQoAgQgAygCFCgCYBEFACADKAIIIQQgASADKAIMIgU2AswEIAEgBDYCyAQMAwsgAyAINgJI +IAcgBEEEakGMBBDNTxogA0HYBGogASgC4ANBFGogA0HIAGoQsgkgAygC2ARBBUcEQCADQdgEahCF +QAsgBUGQBGshBSAGIQQMAAsAC0HAwMEAQSNB2IbCABDmKwALIANB2ARqIAQgAiAFKAIMEQMAIAMt +ANgEIgRBDEYNASADQZ4JaiADLQDbBDoAACADQYgJaiADQegEaikCADcDACADQZAJaiADQfAEaikC +ADcDACADIAMvANkEOwGcCSADIAMpAuAENwOACSADKALcBCEFIAMoAvgEIQYgAUHIBGoQmTYgBEEL +Rg0CIANBnAlqIQcgA0GACWoLIQIgA0GeCmogB0ECai0AADoAACADQYgKaiACQQhqKQAANwMAIANB +kApqIAJBEGopAAA3AwAgAyAHLwAAOwGcCiADIAIpAAA3A4AKIAFBlARqEOk/IAFBADoAvAQgAUHw +A2oQ1j8gAUEAOgC9BCABLQC/BA0DDAYLIABBDDoAAEEEDAcLAkAgBUUEQCADQQA2AugIDAELIANB +6ARqIANBkAlqKQMANwMAIANB4ARqIANBiAlqKQMANwMAIAMgAykDgAk3A9gEIANB6AhqIANB2ARq +EMQrCyABKALgAyECIAFBADoAvAQgA0HYBGoiBCABQZQEakEkEM1PGiABQQA6AL0EIANBlAVqIAFB +8ANqQSQQzU8aIANBjAVqIANB+AhqKQIANwIAIANBhAVqIANB8AhqKQIANwIAIAMgAykC6Ag3AvwE +IANBoAlqIAJBGGogBBCzCSADKAKgCUGAgICAeEYNACADQcQJahCXRSADQaAJahDpPyADQdwJahDW +PwsgAS0AvAQNAQwCCyABQcgEahDASwwCCyABQZQEahDpPwsgAUEAOgC8BCABLQC9BARAIAFB8ANq +ENY/CyABQQA6AL8EIAFBADoAvQQgAUG+BGohAkELIQQMAQsgAUEAOgC/BCABQb4EaiECCyABLQC+ +BARAIAFB5ANqELpLCyACQQA6AAAgACAEOgAAIAAgBTYCBCAAIAY2AiAgACADLwGcCjsAASAAQQNq +IANBngpqLQAAOgAAIAAgAykDgAo3AgggAEEQaiADQYgKaikDADcCACAAQRhqIANBkApqKQMANwIA +QQELOgDABCADQaAKaiQAC5gOAgZ/A34jAEHQAWsiAyQAIAECfwJAAkACQAJAAkACQAJAAn8CQAJA +AkACQAJAAkACQAJAIAEtAMkBQQFrDgYDAAIGBwoBCwALIAFBADoAyAEgA0EOOgBIIANByABqIgQQ +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 +LwGkATsBjAIgAyADKQOQATcD+AEMBQsgAyAFNgJQIANBqAFqIANB0ABqIgEQ3kogAykCrAEhCSAD +KAKoASECIAEQkkULIANBEGoQ+0ALQQshBgwCCyAAQQw6AABBBAwCC0GAgICAeCECQQshBgsgACAG +OgAAIAAgAy8BjAI7AAEgACAFNgIQIAAgCTcCCCAAIAI2AgQgACADKQP4ATcCFCAAQQNqIANBjgJq +LQAAOgAAIABBHGogA0GAAmopAwA3AgBBAQs6ABAgA0GQAmokAAueDAIMfwJ+IwBBsAJrIgMkACAB +An8CQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkAgAS0ACEEBaw4EEAIB +DgALIAEgASgCACIENgIEIAQpAwBCAlENAgwSCyABQQxqIQsCQCABQRlqIgYtAABBAWsOBAUBBAcA +CyABQRRqKAIAIQQMAgsACyAEQcwAaigCACEEIAFBGWoiBkEAOgAAIAFBFGogBDYCACABQQxqIQsL +IAEgBDYCDCABQdQAakEAOgAAIAFBHGogBDYCACABQRhqQQA6AAALIAFBHGoiBCACELkHIgUNAUED +DAQLQcDAwQBBI0GghMIAEOYrAAsgAUEQaiIHIAU2AgAgAUEYakEBOgAAIAQQ2T8gBygCACIEKQMY +QgJRBEAgA0EQaiABKAIMKAKIAUEIahDlNSADQQhqIAMoAhAgAygCFCgCGBEBACADKAIIIQQgAUEg +aiADKAIMIgc2AgAgASAENgIcDAILIAFBADoAGEELIQYgBEEYaiIHKQMAQgJSDQVBsITCABCjSwAL +IAFBIGooAgAhByABQRxqKAIAIQQLIANBuAFqIAQgAiAHKAIMEQMAIAMpA7gBIg9CBFIEQCADQaoC +aiIIIANBwwFqLQAAOgAAIANBmAJqIgkgA0HUAWopAgA3AwAgA0GgAmoiCiADQdwBaikCADcDACAD +QYACaiIMIANB7AFqKQIANwMAIANBiAJqIg0gA0H0AWooAgA2AgAgAyADLwDBATsBqAIgAyADKQLM +ATcDkAIgAyADKQLkATcD+AEgAy0AwAEhBiADKALEASEEIAMoAsgBIQcgAUEcahCZNiAPQgJ9IhBC +AVgEQCAQp0EBRg0DQQAhBiABQRhqLQAADQQMBQsgAUEQaiIOKAIAIgVBGGoQ7EIgBUEgaiAGOgAA +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 +GEICUQRAIANBEGogASgCDCgCiAFBCGoQ5TUgA0EIaiADKAIQIAMoAhQoAhgRAQAgAygCCCEEIAFB +IGogAygCDCIHNgIAIAEgBDYCHAwCCyABQQA6ABhBCyEGIARBGGoiBykDAEICUg0FQcTOxAAQo0sA +CyABQSBqKAIAIQcgAUEcaigCACEECyADQbgBaiAEIAIgBygCDBEDACADKQO4ASIPQgRSBEAgA0Gq +AmoiCCADQcMBai0AADoAACADQZgCaiIJIANB1AFqKQIANwMAIANBoAJqIgogA0HcAWopAgA3AwAg +A0GAAmoiDCADQewBaikCADcDACADQYgCaiINIANB9AFqKAIANgIAIAMgAy8AwQE7AagCIAMgAykC +zAE3A5ACIAMgAykC5AE3A/gBIAMtAMABIQYgAygCxAEhBCADKALIASEHIAFBHGoQmTYgD0ICfSIQ +QgFYBEAgEKdBAUYNA0EAIQYgAUEYai0AAA0EDAULIAFBEGoiDigCACIFQRhqEJ1DIAVBIGogBjoA +ACAFIA83AxggBUEoaiAHNgIAIAUgBDYCJCAFIAMvAagCOwAhIAVBI2ogCC0AADoAACAFIAMpA5AC +NwIsIAVBNGogCSkDADcCACAFQTxqIAopAwA3AgAgBSADKQP4ATcCRCAFQcwAaiAMKQMANwIAIAVB +1ABqIA0oAgA2AgAgAUEYakEAOgAAIA4oAgAiBCkDGEICUgRAIARBGGohB0ELIQYMBQtB1M7EABCj +SwALQQQLIQQgBiAEOgAADAYLIANBrgJqIANBqgJqLQAAOgAAIANB6ABqIANBmAJqKQMANwMAIANB +8ABqIANBoAJqKQMANwMAIAMgAy8BqAI7AawCIAMgAykDkAI3A2ALIAFBEGoQmkwLIAFBGGpBgAI7 +AQAgA0E+aiIFIANBrgJqLQAAOgAAIANBKGoiCCADQegAaikDADcDACADQTBqIgkgA0HwAGopAwA3 +AwAgAyADLwGsAjsBPCADIAMpA2A3AyAgBkH/AXEiCkEMRg0DIANB3gBqIAUtAAA6AAAgA0HIAGog +CCkDADcDACADQdAAaiAJKQMANwMAIAMgAy8BPDsBXCADIAMpAyA3A0AgCxDsLyAKQQtHDQEgAyAH +NgIcIAMgBDYCGCADQRhqEJpMIAEgASgCBEHMAGooAgA2AgwgAUEQaiADQeAAakE0EM1PGiABQcQA +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 +OgCMCCADIAQ2AogIIANBAjYCkAggA0EANgLkCSADQQA2AugJIANBADYC8AkgA0EANgKACiADQZgI +aiEUIANB+AVqIQ0gA0H0CWohCyADQYQKaiEXQQIhEkECIQoDQCMAQSBrIgIkACACQQxqIANBiAhq +Ig4oAgAiCRC8FgJAIANB8AVqIgUCfwJAIAItAAxFBEAgAi0ADUUEQCACQQM2AhQgCSACQRRqEIAx +IQkgBUEBOgAAIAUgCTYCBAwECwJAAkAgAi0ADiIGQSxHBEAgBkH9AEcEQCAOLQAEDQIgAkEINgIU +IAkgAkEUahCAMSEJIAVBAToAACAFIAk2AgQMBwsgBUGAFDsBAAwGCyAOLQAEDQAgCRC+QSACQRRq +IAkQvBYgAi0AFARAIAUgAigCGDYCBCAFQQE6AAAMBgsgAi0AFQRAIAItABYhBgwCCyACQQU2AhQg +CSACQRRqEIAxIQkgBUEBOgAAIAUgCTYCBAwFCyAOQQA6AAQLAkAgBkEiRwRAIAZB/QBGDQEgAkER +NgIUIAkgAkEUahCAMSEJIAVBAToAACAFIAk2AgQMBQsgCRC+QSAJQQA2AgggAkEUaiAJQQxqIAkQ +uwggBQJ/IAIoAhRBAkYEQCACKAIYDAELIAJBDGogAigCGCACKAIcEPoOIAItAAxFDQMgAigCEAs2 +AgRBAQwDCyACQRU2AhQgCSACQRRqEIAxIQkgBUEBOgAAIAUgCTYCBAwDCyAFIAIoAhA2AgQgBUEB +OgAADAILIAUgAi0ADToAAUEACzoAAAsgAkEgaiQAAkACQAJ/AkACQAJAAkACQAJAAkACQCADLQDw +BQ0AIAMtAPEFIgJBCkYNAwJAAkACQAJAAkACQAJAAkAgAg4JAQIDBAUGBwkKAAsgA0GICGoQrD8i +AkUNEgwXCyADKAKQCEECRwRAQQAhCUG8iccAQQYQ8R8hAkEBDBgLIANB8AVqIQICQCADQYgIaigC +ACIFEOcWIglFBEAgAiAFEIZGDAELIAJBAjYCACACIAk2AgQLIAMoAvQFIQIgAygC8AUiBUECRg0W +IANBkApqIgkgDUHMARDNTxogA0GQCGoQ4kMgAyACNgKUCCADIAU2ApAIIBQgCUHMARDNTxoMEQsg +AygC5AlFDQ9BACEJQaSXxwBBCBDxHyECQQEMFgsgBwRAQQAhCUHQlscAQQcQ8R8hAkEBDBYLIANB +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 +BRDaHiADKAIIDQEgAUHIAGoQlkEgA0ENOgD8ASADQfwBakEBciADQS1qQSMQzU8aDAILIABBDjoA +AEEEIQQMAgsgA0H8AWogAygCDBCNIiABQcgAahCWQQsgACADQfwBakEkEM1PGkEBIQQLIAEgBDoA +UCADQaACaiQAC4ENAg1/AX4jAEGAB2siAiQAAkACQAJAIAACfwJAAn4CQAJAAn8CQAJAAkACQAJA +AkACQAJAIAAtAPgBQQFrDgMQAgEACyAAIABB+ABqQfgAEM1PGgsCQAJAAkACQCAALQB0QQFrDgML +BAABCyAAQQhqIQcCQCAAQewAaiIILQAAQQFrDgMIBAMACyAAQegAaigCACEDDAELIAJBOGogACgC +cBCOLyACKAI8IQcgAigCOCEDIABB7ABqIghBADoAACAAQegAaiADNgIAIAAgBzYCBCAAIAM2AgAg +AEEIaiEHCyAAQeAAaiIJQQA6AAAgAEHQAGogAzYCAAwDCwJAIABB4ABqIgktAABBAWsOAw4BAAIL +IABBzABqKAIAIQQgAEHIAGooAgAhAwwDCwALIABB0ABqKAIAIQMLIAJBMGogAxDcRiACKAI0IQQg +AigCMCEGIABB1ABqIgwgAxD4TRCHNzYCACMAQYAGayIDJAAgA0EIaiIKELoyIANBqANqIgsgChCc +JSADQegCaiIFIANB6ARqEO9KIAMgBRDDMCADIAMoAgQiDTYC5AIgAyADKAIAIg42AuACIAsgCkHY +AhDNTxogBSALIAYgBCAOIA0Q1A8gA0GUA2pBAToAACAHIAVBwAAQzU8aIANB4AJqEPo+IANBgAZq +JAAgAkGgAWoiAxCYCiACQYQBaiIFIAYgBCADELEcIABB2ABqIAUQhSc2AgAgAyAAQRhqIgUQgRUg +DCgCACIEIAQoAgAiA0EBajYCACADQQBIDQkgACgCWCIGIAYoAgAiA0EBajYCACADQQBIDQkgAkGQ +BmoiCiACQaABaiIDIAQgBhDgISADIAUQgRUgAEHcAGoiBCADIAAoAlQgACgCWCAKEOELNgIAIAJB +KGogBBC/LCACKAIoIQQgAigCLCEGIAMgB0HAABDNTxogAkEgaiAEIAMgBigCJBEDACACKAIgIQMg +AEHMAGogAigCJCIENgIAIABByABqIAM2AgALIAJBoAFqIAMgASAEKAIMEQMAIAItAKABIgFBDEYN +BiACQcgGaiIDIAJBrAFqKQIANwMAIAJB0AZqIgUgAkG0AWopAgA3AwAgAkHYBmoiCCACQbwBaikC +ADcDACACIAIpAqQBNwPABiACLwChASEEIAItAKMBIQYgAEHIAGoQmTYgAUELRw0BQQQhCCAAQdwA +aigCAAwCC0Gww8QAQSNBoIfFABDmKwALIAJB+AZqIAgpAwA3AwAgAkHwBmogBSkDADcDACACQegG +aiADKQMANwMAIAIgAikDwAY3A+AGIABB3ABqEK45QQMhCCAEIAZBEHRyQQh0IAFyCyEFIAJB2ABq +IgMgAkH4BmopAwA3AwAgAkHQAGoiBCACQfAGaikDADcDACACQcgAaiIGIAJB6AZqKQMANwMAIAIg +AikD4AY3A0AgCUEBOgAAIAJB6ABqIgkgBikDADcDACACQfAAaiIGIAQpAwA3AwAgAkH4AGoiBCAD +KQMANwMAIAIgAikDQDcDYCAHEOU7IAFBC0cNAUIADAILQbDDxABBI0Gwh8UAEOYrAAsgAkHAAWog +BCkDADcDACACQbgBaiAGKQMANwMAIAJBsAFqIAkpAwA3AwAgAiACKQNgNwOoASACIAU2AqQBIAIg +CDYCoAEgAkGgAWoQgw8hBUIBCyEPIABBAToAbCACIAWtQiCGIA+ENwOgASAHEKRDQQAhASACQRhq +IgcCfyACQaABaiIDKAIARQRAIAMoAgQQu0AQFgwBC0EBIQEgAygCBAs2AgQgByABNgIAIAIoAhwh +BSACKAIYIQMgACgCBCIBIAEoAgBBAWs2AgBBAQwBCyAJQQM6AAAgCEEDOgAAQQIhA0EDCzoAdCAA +IANBAkYiAQR/QQMFIAAQ0DcCQCADRQRAIAIgBTYC4AYgAkGAATYCoAEgAkEIaiAAQfABaiACQaAB +aiIHIAJB4AZqIgMQ+ycgAiACKAIIIAIoAgwQ5EE2ApAGDAELIAIgBTYC4AYgAkGAATYCoAEgAkEQ +aiAAQfQBaiACQaABaiIHIAJB4AZqIgMQ+ycgAiACKAIQIAIoAhQQ5EE2ApAGCyACQZAGahCWQSAH +EJZBIAMQlkEgAEHwAWoQlkEgAEH0AWoQlkFBAQs6APgBIAJBgAdqJAAgAQ8LAAtBsMPEAEEjQazI +xAAQ5isAC0Gww8QAQSNBuPLEABDmKwAL8AoBEH8jAEHgAGsiAyQAAkAgAUEVTwRAQeGT2wAtAAAa +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 +CCADQTBqIAEoAggoAgBBMGoQjEogAygCMA0DIAMgAygCNCIFNgKoASADIANBOGoiBi0AADoArAEg +A0EIaiADQbwBahDxLiADKAIMIQcgAygCCCEEIAYgA0HEAWooAgA2AgAgAyADKQK8ATcDMCADQdQB +aiIBIAVBCGogBCAHIANBMGoQ7hAgARChRSADQagBahCfHwsgACACOgAAIABBAWogA0GdAmpBIxDN +TxpBAQs6ACQgA0HAAmokAA8LIAMgAygCNDYC1AEgAyADQThqLQAAOgDYAUG4r8MAQSsgA0HUAWpB +5LDDAEGcnMMAEIkYAAsgAyADKAI0NgLUASADIANBOGotAAA6ANgBQbivwwBBKyADQdQBakHksMMA +QbycwwAQiRgAC7QOAgl/An4jAEGwA2siAiQAIAJBOGogASgCNEEIahD0NSACQegCaiAAIAEoAgAi +AyABKAIEIgQgAigCOCACKAI8EMsHAkAgAi0AqANBAkYEQCACQegCahDHRCACQbgBaiAAKAIsQQhq +EIxKIAIoArgBRQRAIAIgAigCvAEiBjYCRCACIAJBwAFqIgUtAAA6AEggAkEoaiADIAQQwjAgAkG4 +AWogBkEIaiACKAIoIAIoAiwQ3wkgAgJ/IAIoArgBIgNFBEAgAkGIAWogAkHEAWopAgA3AwAgAiAC +KQK8ATcDgAEgAkGAAWoQiTsMAQsgAkGIAWogAkHEAWopAgAiCzcDACACIAIpArwBIgw3A4ABIAIo +AswBIQQgAkH0AmogCzcCACACIAM2AugCIAIgDDcC7AIgAiAENgL8AiACQRhqEPYzIAVBgNrMACkD +ADcDACACQfjZzAApAwA3A7gBIAIgAikDIDcD0AEgAiACKQMYNwPIASACQegCaiACQbgBahCAGAsi +AygCDDYCgAMgAiADKAIAIgQ2AvgCIAIgBEEIajYC8AIgAiAEIAMoAgRqQQFqNgL0AiACIAQpAwBC +f4VCgIGChIiQoMCAf4M3A+gCIABBKGohBANAIAJBEGogAkHoAmoQhjoCQCACKAIQBEAgAigCFCIG +DQELIAJBCGogASgCNEEIahD0NSACKAIIIQQgAiACKAIMIgAQ7h8gAigCACEGIAIoAgQgBCAAEM1P +IQQgAiAANgKIASACIAQ2AoQBIAIgBjYCgAEgAkG4AWoiBSABQcgAEM1PGiACQegCaiEGIwBB8ABr +IgAkACADQRBqIgQgAkGAAWoiARDuGSELIAAgATYCbCADIAQQozIgACADNgIUIAAgAEHsAGo2AhAg +AEEIaiADIAsgAEEQakGc2M0AEL0KIAAoAgwhBAJAIAAoAggEQCAAQRhqIAFBCGooAgA2AgAgACAB +KQIANwMQIABBIGogBUHIABDNTxogAygCACIBIARqIgUtAAAhByAFIAunQRl2IgU6AAAgAyADKAIM +QQFqNgIMIAEgAygCBCAEQQhrcWpBCGogBToAACADIAMoAgggB0EBcWs2AgggASAEQah/bGpB2ABr +IABBEGpB2AAQzU8aIAZBAjoAQAwBCyAGIAMoAgAgBEGof2xqQcgAayIDQcgAEM1PGiADIAVByAAQ +zU8aIAEQiD8LIABB8ABqJAAgBhDHRCACQcQAahCfHwwECyAGEOAjDQACQEHEk9sAKAIAQQNLDQBB +oIbbABD7PiIAQf8BcUUNAEGghtsAKAIAIAAQ9S5FDQBBACEFQaCG2wAoAgAiAEEcaiEHIABBIGoo +AgAiCARAIABBKGooAgAhCSAAQSRqKAIAIQogACgCHCEFIAJBADYCyAEgAiAJNgLEASACIAo2AsAB +IAIgCDYCvAELIAIgBTYCuAEgAkGAAWoiACACQbgBaiIFQbDkzAAQsy0gAkGM3MwANgJYIAJBATYC +vAEgAkG05cwANgK4ASACQgA3AsQBIAJBrNfMADYCwAEgAiAFNgJUIAIgADYCUCACQZwBaiAHIAJB +0ABqEOBBIAJB8ABqIAJBpAFqKAIANgIAIAIgAikCnAE3A2hBoIbbACgCACACQegAahDENAsgAkG4 +AWogBhDpNyACKAK4AUGggICAeEcEQCACQYABaiIAIAJBuAFqEIUNIAQgABDuBgsgAkG4AWogARDp +NyACKAK4AUGggICAeEYNACACQYABaiIAIAJBuAFqEIUNIAQgABDuBgwACwALIAIgAigCvAE2AugC +IAIgAkHAAWotAAA6AOwCQbzXzABBKyACQegCakH418wAQaDkzAAQiRgACyACQbgBaiACQegCakHI +ABDNTxoCQEHEk9sAKAIAQQFLDQBBlIbbABD7PiIAQf8BcUUNAEGUhtsAKAIAIAAQ9S5FDQBBlIbb +ACgCACIAQShqKAIAIQQgAEEkaigCACEGIAAoAhwhBSACIABBIGooAgAiAwR/IAJBADYCkAEgAiAE +NgKMASACIAY2AogBIAIgAzYChAFBASEHIAUFQQALNgKAASACQegAaiACQYABakHU48wAELMtIAJB +jAFqQgA3AgAgAkEBNgKEASACQYjkzAA2AoABIAJBrNfMADYCiAEgAiADIAdLBH8gAiAHNgJgIAIg +BDYCXCACIAY2AlggAiADNgJUIAUFQQALNgJQIAJBnAFqIgMgAkHQAGoiBEHU48wAELMtIAJBMGog +AigC7AFBCGoQ9DUgAkHkAGpBkOTMADYCACACQeAAaiACQbABajYCACACQYzczAA2AlggAiACKQMw +NwKwASACIAM2AlwgAiACQYABajYCVCACIAJB6ABqNgJQIAJBxABqIgMgAEEcaiAEEPJBQZSG2wAo +AgAgAxDENAsgAkG4AWoQpQsgARClCwsgAkGwA2okAAuQGwEVfyMAQYACayICJAAgACABQQJ0aiEV +A0ACQAJAAkAgACAVRwRAQQAhASACQQA2AoQBIAJCgICAgMAANwJ8QQAhBSAAKAIAIhBBHGooAgAi +BARAIBBBJGooAgAhBSAQQSBqKAIAIQNBASEBCyAAQQRqIQAgAiAFNgKoASACIAM2AqQBIAIgBDYC +oAEgAkEANgKcASACIAE2ApgBIAIgAzYClAEgAiAENgKQASACQQA2AowBIAIgATYCiAEDQAJAIAJB +GGogAkGIAWoQvhAgAigCGCIWRQ0AAn8gAigCHCIBKAIAIgNFBEBBACEFQQAMAQsgASgCCCEFIAEo +AgQhDCADIRFBAQshASACIAU2AswBIAIgDDYCyAEgAiARNgLEASACQQA2AsABIAIgATYCvAEgAiAM +NgK4ASACIBE2ArQBIAJBADYCsAEgAiABNgKsAQNAIAJBEGogAkGsAWoQxhEgAigCECISRQ0CIAIo +AhQiASgCACEDIAEoAgQhASMAQSBrIhMkACATQQhqIgUgAyABEKc5IAJB3AFqIQojAEFAaiIIJAAg +CEEMaiIBIAUQyS1BACEFQQAhDUEAIRQjAEEgayIEJAAgBEEUaiABELwWAkAgCEE0aiILAn8CQAJA +AkACQAJAAn8gBC0AFEUEQCAELQAVRQRAIARBBTYCBCABIARBBGoQgDEMAgsgBC0AFiIDQdsARg0C +IANB+wBGDQMgASAEQR9qQcD1zgAQhgUhAwwGCyAEKAIYCyEBIAtBATYCACALIAE2AgQMBgsgASAB +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 +DwsgAiACKALgATYCZEHQt8oAQTkgAkHkAGpBuKLKAEGMuMoAEIkYAAsgAkEgaiIEIgEoAgghBSAB +KAIEIQEDQCAFBEAgARCIPyABQQxqEIg/IAFBGGoQiD8gBUEBayEFIAFBJGohAQwBCwsgBBCwPQwB +CwtBpJ/KAEE3IAJBIGpB3J/KAEG4oMoAEIkYAAufCwIJfwF+IwBBkAZrIgMkACABAn8CQAJ/AkAC +QAJAAkACQAJAIAEtAEhBAWsOAwMAAgELAAsgASABKAIENgIIIAEoAgAoAhAhBCABQcQAakEAOgAA +IAEgBEEIajYCDAsgAUEMaiIEIAIQuAciAkUNASADIAI2ArwBIAQQ2T8gA0G8AWoQ1EwhAiADQQ06 +AJgBIAIoAgAhBCADQcgBaiIFIANBmAFqQSQQzU8aIANB8ABqIAJBACAEGyAFEKo4IAMtAHAiAkEW +RgRAIANBjANqIAMoAnQgASgCCBCjAyADKAKMAyIEQYCAgIB4Rg0DIANBigNqIgIgA0GTA2oiBS0A +ADoAACADQeAAaiIGIANBqANqIgcpAgA3AwAgA0HoAGoiCCADQbADaiIJKAIANgIAIANB0ABqIANB +vANqKQIANwIAIAMgAy8AkQM7AYgDIAMgAykCoAM3A1ggAyADKQK0AzcCSCADLQCQAyEKIAMpApgD +IQwgAygClAMhCyADQSdqIAItAAA6AAAgA0E8aiAGKQMANwIAIANBxABqIAgoAgA2AgAgAyAENgIg +IAMgCzYCKCADIAw3AiwgAyAKOgAkIAMgAy8BiAM7ACUgAyADKQNYNwI0IANBvAFqIgYQmkwgBhDo +SCADQYwDaiABKAIIQQhqEMoaIAMoAowDBEAgAiAFLQAAOgAAIANB+ABqIgQgBykCADcDACADQYAB +aiIFIAkoAgA2AgAgAyADQZEDai8AADsBiAMgAyADQaADaikCADcDcCADQZQDaigCACEGIANBmANq +KQIAIQwgAy0AkAMhByADQdAEaiIIIANBtANqQZwBEM1PGiADQZgBahCAHSADQeABaiAEKQMANwIA +IANB6AFqIAUoAgA2AgAgAyAMNwLQASADIAY2AswBIAMgBzoAyAEgAyADLwGIAzsAyQEgAyACLQAA +OgDLASADIAMpA3A3AtgBIANB7AFqIAhBnAEQzU8aIANB2ABqIgIgA0HIAWoQ8VEgA0EYaiACEJ8h +IAMoAhwhAiADKAIYIQQgA0EQaiADQSBqIgUQoSkgA0G8AWogBCACIAMoAhAgAygCFBDAMSADQQhq +IAEoAggQxE0gAyADKAIIIAMoAgwQwjAgA0GcA2ogA0HEAWooAgA2AgAgAyADKQMANwKMAyADIAMp +ArwBNwKUAyADQewFaiADQYwDahD0HSADKALsBSEEIAMpAvAFIQwgBRC3NUEWIQIMBgsgA0GOBmog +Ay0AmwE6AAAgA0GABmogA0GwAWopAgA3AwAgA0GIBmogA0G4AWooAgA2AgAgAyADLwCZATsBjAYg +AyADKQKoATcD+AUgA0G8AWoQnRkgA0EgahC3NUENIQIMBQsgA0GOBmogAy0AczoAACADQYAGaiAD +QYgBaikCADcDACADQYgGaiADQZABaigCADYCACADIAMvAHE7AYwGIAMgAykCgAE3A/gFIAMpAngh +DCADKAJ0DAMLQaDEwABBI0GwhMEAEOYrAAsgAEEXOgAAQQMMAwsgA0GKA2ogA0GTA2otAAAiAjoA +ACADQeAAaiADQagDaikCACIMNwMAIANB6ABqIANBsANqKAIAIgQ2AgAgA0GOBmogAjoAACADQYgG +aiAENgIAIANBgAZqIAw3AwAgAyADQZEDai8AACICOwGIAyADIANBoANqKQIAIgw3A1ggAyACOwGM +BiADIAw3A/gFIANBmANqKQIAIQwgAy0AkAMhAiADQZQDaigCAAshBCADQbwBahCaTAsgACACOgAA +IAAgAy8BjAY7AAEgACAMNwIIIAAgBDYCBCAAIAMpA/gFNwIQIABBA2ogA0GOBmotAAA6AAAgAEEY +aiADQYAGaikDADcCACAAQSBqIANBiAZqKAIANgIAQQELOgBIIANBkAZqJAALyAkCFX8CfiMAQZAE +ayIJJAAgCUEMakEAQYAEEMtPGgJAIABBDGooAgAiEkUEQCABIAAoAgAgACgCBBCHQSECDAELIAAo +AgAhDSAAKAIIIg4tAAAhCgJAAkAgACgCBCIPRQ0AIA0gD2ohCyAJQQxqIQQgDSEAA0ACfyAALAAA +IgNBAE4EQCADQf8BcSEFIABBAWoMAQsgAC0AAUE/cSEGIANBH3EhCCADQV9NBEAgCEEGdCAGciEF +IABBAmoMAQsgAC0AAkE/cSAGQQZ0ciEGIANBcEkEQCAGIAhBDHRyIQUgAEEDagwBCyAIQRJ0QYCA +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 +AWoQuh8MAQsgA0GwAWpBBHIQ2iILIAZBAToAACAHEMU6QQAgAkECRw0EGkHEk9sAKAIAQQNLDQNB +kJHbABD7PiICQf8BcUUNA0EAIQRBkJHbACgCACACEPUuRQ0DQZCR2wAoAgAiAkEoaigCACEGIAJB +JGooAgAhByACKAIcIQggAkEgaigCACIFDQFBAAwCCyAGQQM6AAAgAEEMOgAAQQUMCgsgA0EANgIo +IAMgBjYCJCADIAc2AiAgAyAFNgIcQQEhBCAICzYCGCADQeAAaiADQRhqQeCCwwAQ3SwgA0EkakIA +NwIAIANBATYCHCADQdSDwwA2AhggA0GkycIANgIgIAMgBCAFSQR/IAMgBDYCwAEgAyAGNgK8ASAD +IAc2ArgBIAMgBTYCtAEgCAVBAAs2ArABIANB9ABqIgUgA0GwAWoiBEHggsMAEN0sIANB3AFqQcTJ +wgA2AgAgA0HYAWogA0GIAWo2AgAgA0GUycIANgLQASADIAFBOGo2AogBIAMgBTYC1AEgAyADQRhq +NgLMASADIANB4ABqNgLIASAEIAJBHGogA0HIAWoQ8kFBkJHbACgCACAEEMQ0C0ECCyEFIAFB0ABq +ELo5IAFBzQBqIQJBCyEEDAULQeDGwgBBI0HQgsMAEOYrAAsgAEEMOgAAQQMMBAtBvMXCAEERIANB +GGpBmK/DAEHAxsIAEIkYAAtB4MbCAEEjQdDGwgAQ5isACyABQc0AaiECIAEtAE1FDQAgAUEgahCx +SwsgACAFOgABIAAgBDoAACACQQA6AAAgAEECaiADQY4BakEiEM1PGkEBCzoATCADQeABaiQAC5EQ +Agh/AX4jAEHgAWsiAyQAIAECfwJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJA +IAEtAHFBAWsOBQQAAgkLAQsACyABQQA6AHAgA0EOOgBQIANB0ABqIgQQ8zogASABKAJsIgU2Agwg +ASABKAIINgIQIAQgBUHOsMcAQRdBABCqJiADKAJQIgRFDQUgAygCVCEFIANBhAFqIgYgA0HYAGpB +LBDNTxogAUEYaiAFNgIAIAEgBDYCFCABQQE6AHAgAUEcaiAGQSwQzU8aIANB0ABqIAFBFGpBzrDH +AEEXEPsgIAMoAlAiBEUNBiABQcwAaiADKQJUNwIAIAEgBDYCSCADQdAAaiABQcgAakHUvccAQQYQ +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 +AyADKQNgNwOYAiADLQBYIQQgAygCXCECIANB6AFqIANB8ABqQTAQzU8aIAMgAygAqQE2AuABIAMg +A0GsAWooAAA2AOMBIAMtAKgBIQUgAykDoAEhCyAGEJpMIAFB4ABqEK85IAEoAjhFDQAgAS0ANEUN +ACABQThqEK85CyABQSBqEIg/IAFBADoANAwBCyABQcQAaiADKQM4NwIAIAFBzABqIAgpAwA3AgAg +AUFAayICIAQ2AgAgASAGOgA8IAFBPWogAy8BVDsAACABQT9qIActAAA6AAAgAUHUAGogCSkDADcC +ACABQdwAaiAKKAIANgIAIANBoAJqIAFByABqKQIANwMAIAMgAikCADcDmAIgASgCPCECIANB8AFq +IAFB2ABqKQIANwMAIAMgAUHQAGopAgA3A+gBIAFBIGoQiD8gAUEAOgA0QQMhBUEOIQQLIAAgBDoA +ACAAIAMvAawCOwABIAAgAjYCBCAAIAMpA5gCNwMIIABBA2ogA0GuAmotAAA6AAAgAEEQaiADQaAC +aikDADcDACAAQRhqIANB6AFqQTAQzU8aIAAgBToAUCAAIAs3A0ggACADKALgATYAUSAAQdQAaiAD +KADjATYAAEEBDAELIABBBDoAUEEECzoANSADQbACaiQAC6QLAgh/AX4jAEGwAmsiAyQAIAECfwJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtADVBAWsOBAUAAQgCCwALIAFBPGooAgAhBCABKAI4 +IQUMAQsgAUEAOgA0IAEoAjAhBCADQRdqIAEoAiwQ6kggAy0AF0UNASABIAMpABg3AAAgAUEYaiAD +QTBqKQAANwAAIAFBEGogA0EoaikAADcAACABQQhqIANBIGopAAA3AAAgA0EIaiAEEOU1IAMoAggh +BCADKAIMIQUgAUEgaiABEPFRIAMgBCABQSRqKAIAIAFBKGooAgAgBSgCKBEFACADKAIAIQUgAUE8 +aiADKAIEIgQ2AgAgASAFNgI4CyADQdgAaiAFIAIgBCgCDBEDACADLQBYIgZBDEYNAkECIQUgA0HW +AGoiByADLQBbOgAAIANBQGsiCCADQegAaikCADcDACADQcgAaiIJIANB8ABqKQIANwMAIANB0ABq +IgogA0H4AGooAgA2AgAgAyADLwBZOwFUIAMgAykCYDcDOCADKAJcIQQgAUE4ahCZNiAGQQtHDQYg +AUELOgA8IAEgBDYCOCABQQE6ADQgAUFAayAENgIAIAQNAwwFC0EDIQVBBCECQQohBEHEk9sAKAIA +QQNLDQZB4PjaABD7PiIBQf8BcUUNBkHg+NoAKAIAIAEQ9S5FDQZB4PjaACgCACIBQRxqIQYgAUEg +aigCACIHBEAgAUEoaigCACEIIAFBJGooAgAhCSABKAIcIQogA0EANgJoIAMgCDYCZCADIAk2AmAg +AyAHNgJcCyADIAo2AlggA0HMAWoiASADQdgAaiIHQaTIwgAQ3SwgA0HkAGpCADcCACADQZTJwgA2 +AsgBIANBATYCXCADQYzJwgA2AlggA0GkycIANgJgIAMgBzYCxAEgAyABNgLAASADQbQBaiIBIAYg +A0HAAWoQ4EFB4PjaACgCACABEMQ0DAYLQeDGwgBBI0GkycIAEOYrAAsgAEEEOgBQQQMMBgsgASAE +NgJgIAFBADoANCABQZwBakEAOgAAIAEgBEEIajYCZAsgAUHkAGoiBCACELoHIgJFDQMgAyACNgLM +ASAEENk/IANBzAFqIgUiBhDUTCICKAIIIQQgAigCBCADIANBwAFqNgJYIAQgA0HYAGoiAhD2AiAC +IAUQ1EwiAigCCCIEQdgAbCACKAIEakHYAGtBACAEGxDiCiADQa4CaiADLQBbOgAAIANBoAJqIANB +6ABqKQMANwMAIAMgAy8AWTsBrAIgAyADKQNgNwOYAiADLQBYIQQgAygCXCECIANB6AFqIANB8ABq +QTAQzU8aIAMgAygAqQE2AuABIAMgA0GsAWooAAA2AOMBIAMtAKgBIQUgAykDoAEhCyAGEJpMIAFB +4ABqEK85IAEoAjhFDQAgAS0ANEUNACABQThqEK85CyABQSBqEIg/IAFBADoANAwBCyABQcQAaiAD +KQM4NwIAIAFBzABqIAgpAwA3AgAgAUFAayICIAQ2AgAgASAGOgA8IAFBPWogAy8BVDsAACABQT9q +IActAAA6AAAgAUHUAGogCSkDADcCACABQdwAaiAKKAIANgIAIANBoAJqIAFByABqKQIANwMAIAMg +AikCADcDmAIgASgCPCECIANB8AFqIAFB2ABqKQIANwMAIAMgAUHQAGopAgA3A+gBIAFBIGoQiD8g +AUEAOgA0QQMhBUEOIQQLIAAgBDoAACAAIAMvAawCOwABIAAgAjYCBCAAIAMpA5gCNwMIIABBA2og +A0GuAmotAAA6AAAgAEEQaiADQaACaikDADcDACAAQRhqIANB6AFqQTAQzU8aIAAgBToAUCAAIAs3 +A0ggACADKALgATYAUSAAQdQAaiADKADjATYAAEEBDAELIABBBDoAUEEECzoANSADQbACaiQAC5oW +Agt/An4jAEHgAmsiAyQAIAECfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQCABLQCMAUEBaw4EDAACAwELAAsgAUEBOgCPASABQQA7AI0BIANBDjoAmAEgA0GYAWoQuz4g +AUEAOgCPASABQQE6AI0BIAEgASgCgAEiBTYChAEgAUFAayABQcAAEM1PGiAFKAJAIQUgAUHIAWpB +ADoAACABIAVBCGo2ApABCyABQZABaiIGIAIQygciBUUNCiABIAU2AogBIAYQ2T8gA0EENgKgASAD +QfyvxwA2ApwBIAMgASkDQEICUjoAmAEjAEEwayIFJAAgBSADQaQBajYCICAFIANBmAFqNgIcIAVB +EGogBUEcahClHgJAIAUoAhAiCEUEQCAGQQA2AgggBkKAgICAwAA3AgAMAQsgBSgCFCEHIAVBCGpB +BBCuIyAFKAIIIQkgBSgCDCIEIAc2AgQgBCAINgIAIAVBLGoiCkEBNgIAIAUgBDYCKCAFIAk2AiQg +BUEkaiEIIAUoAhwhByAFKAIgIQkjAEEQayIEJAAgBCAJNgIMIAQgBzYCCANAAkAgBCAEQQhqEKUe +IAQoAgAiCUUNACAEKAIEIQsgCCgCCCIHIAgoAgBGBEAgCEEBENs7CyAIKAIEIAdBA3RqIgwgCzYC +BCAMIAk2AgAgCCAHQQFqNgIIDAELCyAEQRBqJAAgBkEIaiAKKAIANgIAIAYgBSkCJDcCAAsgBUEw +aiQAIAFBmAFqKAIAIgVFDQsgA0GYAWogASgChAEgAUGUAWooAgAgBRCRMCADKAKYASIFRQ0FIAMo +ApwBIQQgA0HIAGoiBiADQaABakEsEM1PGiABQaABaiAENgIAIAEgBTYCnAEgAUEBOgCOASABQaQB +aiAGQSwQzU8aIAFBnAFqIQsCQCABKQNAQgJSBEAgAUEAOgCNASADQcgAaiABQUBrQcAAEM1PGiAD +QZgBaiADQdgAahCBFSADQYwBaiABKAKEAUEQahCwSiADKAKMAQ0OIAMgAygCkAEiBTYC2AIgAyAD +QZQBai0AADoA3AIgBUEIahD3QyAFQSBqIANBsAFqKQMANwMAIAVBGGogA0GoAWopAwA3AwAgBUEQ +aiADQaABaikDADcDACAFIAMpA5gBNwMIIANB2AJqEPMdIANBmAFqIgUgA0HIAGoiBBCZESABQYgC +aiAFQZABEM1PIQUgBBCNKiABKQOIAkICUQ0BIAMgBTYCrAIgA0GYAWogC0H8r8cAQQQQ+yAgAygC +mAEiBUUNAyADIAMpApwBNwJMIAMgBTYCSCADQcy6xwBBBxAANgLYAiADQZgBaiEIIAEoAoQBQThq +IQQjAEHgAGsiBSQAIAUgA0GsAmoiCjYCBAJAAkACQCAEKAIAIgQEQCAFQcwAaiEHIARBCGohDCMA +QYABayIEJAAgBEHYAGohCSMAQTBrIgYkACAGQQhqQYABEO4fIAZBADYCKCAGIAYpAwg3AiAgBiAG +QSBqNgIsAkACQCAKIAZBLGoQxUwiCgRAIAZBIGoQiD8MAQsgBigCJCEKIAYoAiAiDUGAgICAeEYN +ACAGIAYoAig2AhwgBiAKNgIYIAYgDTYCFCAJIAwgBkEUahDcCAwBCyAJQQI6AAQgCUGAgICAeDYC +ACAJQQhqIAo2AgALIAZBMGokAAJAIAQoAlgiBkGAgICAeEcEQCAEQdAAaiAEQewAaigCACIJNgIA +IARByABqIARB5ABqKQIAIg43AwAgBEE4aiAEQfgAaikCADcCACAEQSRqIA43AgAgBEEsaiAJNgIA +IAQgBCkCXCIONwNAIAQgBCkCcDcCMCAEIA43AhwgBCAGNgIYIARBDGogBEEYahDrFyAEKAIMIgZB +gICAgHhHBEAgB0EIaiAEKQIQNwIAIAcgBjYCBCAHQQg6AAAgBEEYahCIPwwCCyAHIAQoAhA2AgQg +B0ECOgAAIARBGGoQiD8MAQsgBEHQAGogBEHsAGooAgAiBjYCACAEQcgAaiAEQeQAaikCACIONwMA +IAQgBCkCXCIPNwNAIAdBEGogBjYCACAHQQhqIA43AgAgByAPNwIACyAEQYABaiQAIAVBKGogBxCU +MCAFLQAoIgRBC0cNASAFQRBqIAVBNGooAgA2AgAgBSAFKQIsNwMIIAVBKGogBUEIahDCFyAFKAIo +RQRAIAUoAiwhBCAIQQs6AAAgCCAENgIEIAVBCGoQiD8MBAsgCCAFKAIsNgIEIAhBBzoAACAFQQhq +EIg/DAMLIAVBKGohBiMAQTBrIgQkACAEQQhqQYABEO4fIARBADYCKCAEIAQpAwg3AiAgBCAEQSBq +NgIsAkACQCAFQQRqKAIAIARBLGoQxUwiBwRAIARBIGoQiD8MAQsgBCgCJCEHIAQoAiAiCUGAgICA +eEYNACAEIAQoAigiCjYCHCAEIAc2AhggBCAJNgIUIAQgByAKEOErIAQoAgAgBCgCBBDkQSEHIAZB +ADYCACAGIAc2AgQgBEEUahCIPwwBCyAGQQE2AgAgBiAHNgIECyAEQTBqJAAgBSgCKEUNASAIIAUo +Aiw2AgQgCEEHOgAADAILIAggBSkCODcCECAIQRhqIAVBQGspAgA3AgAgCEEgaiAFQcgAaigCADYC +ACAFIAUpACk3AxggBSAFQTBqKQAANwAfIAhBCGogBSkAHzcAACAIIAUpAxg3AAEgCCAEOgAADAEL +IAUoAiwhBCAIQQs6AAAgCCAENgIECyAFQeAAaiQAIANBzABqIQUgAy0AmAEiBEELRw0EIAMgAygC +nAE2AowBIANBGGogBSADQYwBaiADQdgCahCcIyADKAIcIQQgAygCGA0FIAMgBDYCsAIgA0GwAmoQ +lkEgA0GMAWoQlkEgA0HYAmoQlkEgBRCWQQwBCyABQgI3A4gCCyABQQA6AI4BIAFB0AFqIAtBNBDN +TxoLIANBEGogAUHQAWoiBSACELQNIAMoAhAiAkEDRg0FIAMoAhQhBCAFEOMwIANBCGogAiAEENoe +IAMoAggNBiABQYgCahCWKCABQQA6AI4BIAFBkAFqEJ09IAFBiAFqEJpMIANBDToAtAIgA0G0AmpB +AXIgA0ElakEjEM1PGiABKQNAQgJRDQ8gAS0AjQENBwwPCyADQbQCaiADKAKcARCNIgwLCyADQcQC +aiADQagBaikCADcCACADQcwCaiADQbABaikCADcCACADQdQCaiADQbgBaigCADYCACADIAMtAJsB +OgC3AiADIAMvAJkBOwC1AiADIAMpAqABNwK8AiADIAMoApwBNgK4AiADIAQ6ALQCDAELIANBtAJq +IAQQjSIgA0GMAWoQlkELIANB2AJqEJZBIAUQlkEMCAsgA0G0AmogAygCnAEQjSIMCAsgAEEOOgAA +QQQMCwsgA0G0AmogAygCDBCNIgwFCyABQUBrEI0qDAcLQYCjxwBBI0GsuscAEOYrAAsgAEEOOgAA +QQMMBwsgA0ENOgC0AgwDCyADIAMoApABNgLYAiADIANBlAFqLQAAOgDcAkGUqscAQSsgA0HYAmpB +8KrHAEG8uscAEIkYAAsgAUGIAmoQliggAS0AjgFFDQAgAUGcAWoQ4zALIAFBADoAjgELIAFBkAFq +EJ09IAFBiAFqEJpMAkAgASkDQEICUQ0AIAEtAI0BRQ0AIAFBQGsQjSoLIAFBADoAjQEgAS0AjwFF +DQEgARD2QwwBCyABQQA6AI0BCyAAIANBtAJqQSQQzU8aQQELOgCMASADQeACaiQAC8FOAiJ/BH4j +AEHgFWsiBSQAIAVB0ABqIAEQji8gBSgCVCEeIAUoAlAgBSACNgJcIAUgAzYCZCAFIANBAEciIzYC +YCgCACIdIB0oAgAiAUEBajYCAAJAAkACQAJAIAFBAE4EQCAFQeQAaiEkIAUgHTYCaCAFQQA2AnQg +BUEANgJsIAVByABqIAVB3ABqEMBSEIFKIAUoAkghASAFIAUtAEw6AHwgBSABNgJ4IAVBpAFqISUg +BUHcB2ohHyAFQdQHaiEgIAVBvAVqIRoDQCAFQUBrIAVB+ABqEPsuIAUoAkAiIUECRgRAIAVB+ABq +EJZBIAVBtBVqIAVB9ABqKAIANgIAIAUgHTYCqBUgBSAFKQJsNwKsFUEAIQEgBUEAOgC8FSAFICI2 +ArgVIAUgAzYC1AcgBSAjNgLQByMAQYAOayIDJAAgA0EIaiICIAVB0AdqQfANEM1PGiADIAI2AvwN +IANB/A1qQbS/xgAQw1IhAiADKAIIQQNHBEAgA0EIahC9DgsgA0GADmokAAwGCyAFKAJEIQEgIQ0E +IAVBOGogARD4JCAFKAI8IQEgBSgCOA0EIAUgATYCgAEgBUHQB2ohCCAFQYABakEAELRPIQIjAEEQ +ayIQJAACQCACEDkiAUUEQCAIIAI2AgRBACEHDAELIBBBCGogARCLLCAQKAIIIQcgCCAQKAIMNgIE +CyAIIAc2AgAgEEEQaiQAIAUoAtQHIQEgBSgC0AciAkUNAyAFIAE2AogBIAUgAjYChAEgBUGAAWpB +ARC0TyEBIwBBEGsiByQAIAcgATYCDCAHQQxqEJpLIQIgBUEwaiIBIAcoAgw2AgQgASACQQFzNgIA +IAdBEGokACAFKAI0IQEgBSgCMA0CIAUgATYCjAEgBUEoaiAFQYwBahDAUhCBSiAFKAIoIQEgBSAF +LQAsOgCUASAFIAE2ApABA0AgBUEgaiAFQZABahD7LiAFKAIgIgJBAkYEQCAFQZABahCWQSAFQYwB +ahCWQSAFQYQBahD6PiAFQYABahCWQQwCCyAFKAIkIQECQAJAAkAgAg0AIAVBGGogARD4JCAFKAIc +IQEgBSgCGA0AIAUgATYCmAEgBUGYAWpBABC0TyEBIwBBEGsiByQAIAcgATYCDCAHQQxqKAIAEJIB +QQFGIQIgBUEQaiIBIAcoAgw2AgQgASACRTYCACAHQRBqJAAgBSgCFCEBIAUoAhBFBEAgBSABNgKc +ASAFQaABaiEKIAVBmAFqQQEQtE8hAkEAIRdBACEZQQAhGyMAQdAFayIEJAAgBCACNgIUAkAgBEEU +ahCZSkUEQCAEQRRqIgcgBEGEBGpBpOfDABDGBSECIApBAzYCACAKIAI2AgQgBxCWQQwBCyAEQRhq +IAJB4P3FAEEFEN43IARBAzYCLCAEQQA2AlggBEEANgKgAiAEQYCAgIB4NgKwAiAEQYQEakEBciEV +IARB4ABqIRAgBEGMBGohHCAEQaQCaiEWIARBKGohE0EDIRgCQAJAAkADQAJAAkACQAJAAkACQAJA +IAQoAiAiAiAEKAIkRg0AIAQgAkEIajYCICAEIAIoAgAiCCACKAIEIgcQ3zM2AswFIAQgEyAEQcwF +ahDcSCICNgLAAiAEQcACahCYSgRAIARBzAVqIBMQqkVFDQILIARBGGoQm0EgBCACNgIcIARBATYC +GCAEQQhqIAggBxCsSCAEQYQEaiEIAkACQAJAAkAgBCgCCCIHIAQoAgwiAkGP/cUAQQkQgDxFBEAg +ByACQZj9xQBBChCAPA0BIAcgAkGi/cUAQQsQgDwNAiAHIAJBrf3FAEETEIA8DQMgByACQcD9xQBB +HxCAPEUEQCAIQQU6AAEMBQsgCEEEOgABDAQLIAhBADoAAQwDCyAIQQE6AAEMAgsgCEECOgABDAEL +IAhBAzoAAQsgCEEAOgAAAkAgBC0AhAQiAkUEQCAELQCFBCEZDAELIAQoAogEIRsLIARBzAVqEJZB +AkACQAJAAkACQAJAIAJFBEAgGQ4HAgMEBQYBBwELIApBAzYCACAKIBs2AgQMDAsgBEEYahD3LwwM +CyAYQQNHBEBB5OfDAEEJEMIfIQIgCkEDNgIAIAogAjYCBAwLCyAEKAIYIARBADYCGCAEQYQEaiEH +IAQoAhwQw0MhAiMAQSBrIggkACAIQQhqIAIQlRgCQCAIKAIIIgJBgYCAgHhHBEAgCCAIKQIMNwIY +IAggAjYCFCAHIAhBFGoQ9xUMAQsgCCgCDCECIAdBAzYCACAHIAI2AgQLIAhBIGokACAEKAKIBCEC +IAQoAoQEIhhBA0cEQCAEIAQoAowENgI0IAQgAjYCMCAEIBg2AiwMDAtBAyEYIApBAzYCACAKIAI2 +AgQMCgsgFwRAQfbnwwBBChDCHyECIApBAzYCACAKIAI2AgQMCgsgBCgCGCAEQQA2AhggBCgCHBDD +QyECIwBBQGoiCSQAIAlBHGohDiMAQTBrIgwkACAMQQxqIAIQlBgCQCAMKAIMIghBgICAgHhHBEAg +DCAMKAIUIgc2AgggDCAMKAIQIgI2AgQgDCAINgIAIAxBDGogAiAHEN0RIA4CfyAMLQAMRQRAIA4g +DCkADTcAASAOQRlqIAxBJWopAAA3AAAgDkERaiAMQR1qKQAANwAAIA5BCWogDEEVaikAADcAAEEA +DAELIA4gDEEQahDGIzYCBEEBCzoAACAMEIg/DAELIAwoAhAhAiAOQQE6AAAgDiACNgIECyAMQTBq +JAAgBEGEBGoiCAJ/IAktABxFBEAgCCAJLwAdOwABIAhBA2ogCS0AHzoAACAJQQhqIAlBLGopAgAi +JzcDACAJQRBqIAlBNGopAgAiKDcDACAJQRhqIAlBPGotAAAiBzoAACAJIAlBJGopAgAiJjcDACAJ +QSBqKAIAIQIgCEEgaiAHOgAAIAhBGGogKDcCACAIQRBqICc3AgAgCEEIaiAmNwIAIAhBBGogAjYC +AEEADAELIAggCSgCIDYCBEEBCzoAACAJQUBrJAAgBC0AhARFDQggCiAEKAKIBDYCBCAKQQM2AgAM +CQsgBCgCWARAQYDowwBBCxDCHyECIApBAzYCACAKIAI2AgQMCQsgBCgCGCAEQQA2AhggBEGEBGoh +CSAEKAIcEMNDIQIjAEHgAWsiDCQAIAxBGGogAhCUGAJAIAwoAhgiCEGAgICAeEcEQCAMIAwoAiAi +BzYCFCAMIAwoAhwiAjYCECAMIAg2AgwgDEEYaiIIIAIgBxDxGSMAQSBrIg4kAAJAIAgoAgAEQCAJ +IAhByAEQzU8aDAELIA5BGGogCEEUaigCADYCACAOQRBqIAhBDGopAgA3AwAgDiAIKQIENwMIAn8j +AEFAaiINJAAgDUEANgIYIA1CgICAgBA3AhAgDUE0akH438UANgIAIA1BAzoAPCANQSA2AiwgDUEA +NgI4IA1BADYCJCANQQA2AhwgDSANQRBqNgIwIA5BCGoiCCANQRxqEPgGRQRAIA1BCGogDUEYaigC +ACICNgIAIA0gDSkCEDcDACANKAIEIAIQDiANEIg/AkACQAJAAkBBBCAIKAIAQQRrIgIgAkEETxsO +BAMBAwIACyAIEJ1ADAILIAhBBGoQ1zsMAQsgCEEEahCNPQsgDUFAayQADAELQZDgxQBBNyANQcjg +xQBBpOHFABCJGAALIQIgCUEANgIAIAkgAjYCBAsgDkEgaiQAIAxBDGoiAhDaKyACEIg/DAELIAwo +AhwhAiAJQQA2AgAgCSACNgIECyAMQeABaiQAIAQoAogEIQcgBCgChAQiAgRAIARBwAJqIBxBwAEQ +zU8aIAQoAlgEQCAEQdgAahCuSwsgBCAHNgJcIAQgAjYCWCAQIARBwAJqQcABEM1PGgwKCyAKQQM2 +AgAgCiAHNgIEDAgLIAQoAqACBEBBi+jDAEETEMIfIQIgCkEDNgIAIAogAjYCBAwICyAEKAIYIARB +ADYCGCAEQYQEaiEUIAQoAhwQw0MhAiMAQUBqIhEkACARQRxqIQ1BACEMQQAhCSMAQbABayIGJAAg +BiACNgIgIAZB8ABqIAZBIGoQ8QsgBigCcCEHAkACQAJAAkACQAJAAkACQAJAAkAgBi0AdCICQQJr +DgICAAELIA1BATYCACANIAc2AgQMCAsgBkHkAGogAkEARzoAACAGIAc2AmAgBkEANgJYIAZBADYC +RCAGQQA2AjwgBkH8AGohDiAGQeAAaiEIA0AgBkEQaiAIEPsuIAYoAhQhAkEEIRICQAJAIAYoAhBB +AWsOAgUBAAsgBkEIaiACELYnIAYoAgghByAGKAIMIQIgBkHYAGoQm0EgBiACNgJcIAZBATYCWCAG +QSRqIAcQkSAgBigCJCISQQRGBEAgBigCKCECDAULIAYgBikCKCImNwKoASAGIBI2AqQBIAYoAlgh +AiAGQQA2AlggBkEkaiACIAYoAlwQw0MQlBggBigCJEGAgICAeEYNAyAGQdAAaiAGQSxqKAIANgIA +IAYgBikCJDcDSCAmQiCIpyEMICanIQkLIA4gBikDSDcCACAOQQhqIAZB0ABqIgIoAgA2AgAgBiAM +NgJ4IAYgCTYCdCAGIBI2AnAgEkEERwRAIAZBkAFqIAZB+ABqKAIANgIAIAZBoAFqIAIoAgA2AgAg +BiAGKQJwNwOIASAGIAYpA0g3A5gBIAZBJGoiAiAGQTxqIAZBiAFqIAZBmAFqEPcNIAIQ+0AMAQsL +IAZB8ABqEI9DIA1BDGogBkHEAGooAgA2AgAgDSAGKQI8NwIEIA1BADYCAAwGCyAGQRhqIAZBIGoQ +ijIgBigCGEUNBCAGIAYoAhw2AjwgBkEsaiAGQTxqEPc+IAZBADYCOCAGQQA2AiQgBkEANgJQIAZB +ADYCSCAGQeQAaiEIA0AgBkHwAGohDiMAQdAAayIJJAAgCUEIaiAGQSRqEI8fAkAgCSgCCEUEQCAO +QQQ2AgAMAQsgCSgCDCEHIAkgCUEQaigCACICNgIUIAlBOGogBxCRICAJKAI4QQRHBEAgCUEgaiAJ +QUBrKAIANgIAIAkgCSkCODcDGCAJQThqIAIQlBggCSgCOEGAgICAeEcEQCAJQTBqIAlBQGsiBygC +ACICNgIAIAkgCSkCOCImNwMoIAcgCUEgaigCADYCACAJQcwAaiACNgIAIA4gCSkDGDcCACAJICY3 +AkQgDkEIaiAHKQMANwIAIA5BEGogCUHIAGopAwA3AgAMAgsgDiAJKAI8NgIEIA5BBTYCACAJKAIY +QQNHDQEgCUEYakEEchD6PgwBCyAOIAkoAjw2AgQgDkEFNgIAIAlBFGoQlkELIAlB0ABqJAAgBigC +cEEFRg0DIAZB6ABqIAZBgAFqKQIANwMAIAZB4ABqIAZB+ABqIgIpAgA3AwAgBiAGKQJwIiY3A1gg +JqdBBEcEQCAGQZABaiACKAIANgIAIAZBoAFqIAhBCGooAgA2AgAgBiAGKQJwNwOIASAGIAgpAgA3 +A5gBIAZBpAFqIgIgBkHIAGogBkGIAWogBkGYAWoQ9w0gAhD7QAwBCwsgBkHYAGoQj0MgDUEMaiAG +QdAAaigCADYCACANIAYpAkg3AgQgDUEANgIADAMLIAYoAighAiAGQaQBahCbQAsgDUEBNgIAIA0g +AjYCBCAGQTxqEMIZDAMLIA0gBigCdDYCBCANQQE2AgAgBkHIAGoQwhkLIAZBJGoQm0EgBkE8ahCW +QQwCCyAGQSBqIAZB8ABqQcTmwwAQxgUhAiANQQE2AgAgDSACNgIEDAELIAgQlkEgBkHYAGoQm0EL +IAZBIGoQlkEgBkGwAWokAAJAAkAgESgCHEUEQCARKAIgIQggESARQSRqKQIAIianIgc2AjggESAI +NgI0QQAhDSARQQA2AjAgESAIQQBHIgI2AiwgESAHNgIoIBEgCDYCJCARQQA2AiAgESACNgIcIBEg +JkIgiKdBACAIGzYCPCARQQxqIQxBACESIwBBQGoiBiQAIAZBADYCBCAGQRhqIgIgEUEcakEkEM1P +GiAGIAZBBGo2AjwgBkEMaiEOIwBBQGoiCyQAIAtBEGoiCCACQSgQzU8aIAtBBGohCSMAQZACayIP +JAAgD0FAayAIEJIYAkAgDygCTEECRgRAIAlBADYCCCAJQoCAgIDAADcCACAIENMbDAELIA8QxxYg +DygCACEHIA8oAgQgD0FAa0HQARDOTyECIA9BATYCFCAPIAI2AhAgDyAHNgIMIA9BGGogCEEoEM1P +GgNAAkAgD0FAayAPQRhqEJIYIA8oAkxBAkYNACAPKAIUIgIgDygCDEYEQCAPQQxqELM8CyAPKAIQ +IAJB0AFsaiAPQUBrQdABEM5PGiAPIAJBAWo2AhQMAQsLIA9BQGsQhUMgD0EYahDTGyAJQQhqIA9B +FGooAgA2AgAgCSAPKQIMNwIACyAPQZACaiQAAkAgCygCDCIHRQRAIA5BADYCCCAOQQA2AgAgC0EE +ahDqSwwBCyALKAIIIAsgC0E/ajYCECAHIAtBEGoiAhDyAiALQRhqIAtBDGooAgA2AgAgCyALKQIE +NwMQIA4gAhD6FwsgC0FAayQAAkAgBigCBEUEQCAMIAYpAgw3AgQgDEEMaiAGQRRqKAIANgIADAEL +IAwgBigCCDYCBCAGQQxqEK0ZQQEhEgsgDCASNgIAIAZBQGskACARKAIMRQRAIBQgESgCEDYCBCAU +QQhqIBFBFGopAgA3AgAMAwsgFCARKAIQNgIEDAELIBQgESgCIDYCBAtBASENCyAUIA02AgAgEUFA +ayQAIAQoAogEIQIgBCgChARFDQUgCkEDNgIAIAogAjYCBAwHCyAEKAKwAkGAgICAeEcEQEGe6MMA +QR8Qwh8hAiAKQQM2AgAgCiACNgIEDAcLIAQoAhggBEEANgIYIARBhARqIQ4gBCgCHBDDQyECIwBB +EGsiCSQAIAlBBGohDCMAQTBrIgYkACAGQRBqIRIjAEEgayIUJAAgFCACNgIMAkAgFEEMahC4SiIC +BEAgFEEQaiIIIAIQ9z4gFEEANgIcIwBBMGsiCyQAIAtBASAIKAIABH8gCEEIaigCACIHIAgoAgRr +IgJBACACIAdNGwVBAAsQ0kEQtRYgC0EANgIUIAsgCykDADcCDAJAAkADQCALQSRqIQcjAEEgayIN +JAAgDUEIaiAIEJQoAkAgDSgCCEUEQCAHQYCAgIB4NgIADAELIA0oAgwhAiAIIAgoAgxBAWo2Agwg +DUEUaiACEJQYIA0oAhRBgICAgHhHBEAgByANKQIUNwIAIAdBCGogDUEcaigCADYCAAwBCyAHIA0o +Ahg2AgQgB0GBgICAeDYCAAsgDUEgaiQAIAsoAiRBgYCAgHhGDQEgC0EgaiALQSxqKAIANgIAIAsg +CykCJCImNwMYICanQYCAgIB4RwRAIAtBDGogC0EkahD7IwwBCwsgC0EYahD7QCASQQhqIAtBFGoo +AgA2AgAgEiALKQIMNwIADAELIBIgCygCKDYCBCASQYCAgIB4NgIAIAtBDGoQrUsLIAtBMGokAAwB +CyAUQRBqIBRBDGoQ8QsgFCgCECEHAkACQAJAIBQtABQiAkECaw4CAgABCyASQYCAgIB4NgIAIBIg +BzYCBAwCCyMAQUBqIgskACALIAJBAEc6ABggCyAHNgIUIAtBCGpBACALENJBELUWIAtBADYCJCAL +IAspAwg3AhwCQAJAA0AgC0E0aiEHQgAhJiMAQSBrIggkACAIQQhqIAtBFGoQ+y5BgICAgHghDSAI +KAIMIQICQAJAAkACQAJAIAgoAghBAWsOAgACAQsgB0GBgICAeDYCACAHIAI2AgQMAwsgCEEUaiAC +EJQYIAgoAhQiDUGAgICAeEYNASAIKQIYISYLIAcgJjcCBCAHIA02AgAMAQsgCCgCGCECIAdBgYCA +gHg2AgAgByACNgIECyAIQSBqJAAgCygCNEGBgICAeEYNASALQTBqIAtBPGooAgA2AgAgCyALKQI0 +IiY3AyggJqdBgICAgHhHBEAgC0EcaiALQTRqEPsjDAELCyALQShqEPtAIBJBCGogC0EkaigCADYC +ACASIAspAhw3AgAMAQsgEiALKAI4NgIEIBJBgICAgHg2AgAgC0EcahCtSwsgC0EUahCWQSALQUBr +JAAMAQsgFEEMaiAUQRBqQfTmwwAQxgUhAiASQYCAgIB4NgIAIBIgAjYCBAsgFEEMahCWQSAUQSBq +JAACQCAGKAIQIgdBgICAgHhHBEAgBiAGKAIYIgI2AgwgBiAGKAIUIgg2AgggBiAHNgIEIAZBHGog +CCAIIAJBDGxqENwFAkAgBigCHEEERgRAIAwgBikCIDcCACAMQQhqIAZBKGooAgA2AgAMAQsgBkEc +ahDGIyECIAxBgICAgHg2AgAgDCACNgIECyAGQQRqEK1LDAELIAYoAhQhAiAMQYCAgIB4NgIAIAwg +AjYCBAsgBkEwaiQAAkAgCSgCBCICQYCAgIB4RwRAIA4gCSkCCDcCBAwBCyAOIAkoAgg2AgQLIA4g +AjYCACAJQRBqJAAgBCgChARBgICAgHhHBEAgBEGwAmoQuEIgBEG4AmogHCgCADYCACAEIAQpAoQE +NwOwAgwICyAKIAQoAogENgIEIApBAzYCAAwGCyAYQQNHIhJFBEBB5OfDAEEJEMEfIQIgCkEDNgIA +IAogAjYCBAwICyAXRQRAQfbnwwBBChDBHyECIApBAzYCACAKIAI2AgRBASEXDAMLIAQoAlgiAkUh +FyACRQ0BIARBhARqIARB2ABqQcgBEM1PGiAEKAKgAkUEQEGL6MMAQRMQwR8hAiAKQQM2AgAgCiAC +NgIEIARBhARqEK5LDAMLIAogBCkCLDcCACAKQQhqIARBNGooAgA2AgAgCkEAIAQoArgCIAQoArAC +IgJBgICAgHhGIgcbNgIUIApBASAEKAK0AiAHGzYCECAKQQAgAiAHGzYCDCAEKAKkAiECIAQpAqgC +ISYgCkEYaiAEQdgAakHIARDNTxogCiAmNwKEAiAKIAI2AoACIApB+AFqIARB0ABqKQMANwAAIApB +8AFqIARByABqKQMANwAAIApB6AFqIARBQGspAwA3AAAgCiAEKQM4NwDgAQwJCyAEQcACahCWQSAE +QcwFahCWQQwFC0GA6MMAQQsQwR8hAiAKQQM2AgAgCiACNgIECyAEQSxqEJ5ADAULIAQpAowEISYg +BCgCoAIEQCAWEK0ZCyAEICY3AqgCIAQgAjYCpAIgBEEBNgKgAgwCCyAEQdAAaiAVQRhqKQAANwMA +IARByABqIBVBEGopAAA3AwAgBEFAayAVQQhqKQAANwMAIAQgFSkAADcDOEEBIRcMAQsLQQAhEgtB +ASEXCyAEQbACahC4QiAEKAKgAgRAIBYQrRkLIAQoAlhBAEcgF3EEQCAEQdgAahCuSwsgGEEDRiAS +cg0AIARBLGoQnkALIARBGGoQ1kcLIARB0AVqJAAgBSgCoAFBA0YiGw0CIAVBrANqIAVBoAFqQYwC +EM1PGiAFQQhqIAVBhAFqEPEuIAUoAgghCCAFIAUoAgwiBzYCyBUgBSAINgLEFQJAIAUoAmwiAkUE +QCAFQQA2AtwHIAUgBzYC1AcgBSAINgLQByAFIAVB7ABqNgLYBwwBCyAFQbgFaiACIAUoAnAgBUHE +FWoQoBMgBSgCuAUEQCAfIBopAgA3AgAgH0EIaiAaQQhqKAIANgIAIAUgBSkCxBU3AtAHIAUgBUHs +AGo2AtgHDAELICAgGikCADcCACAgQQhqIBpBCGooAgA2AgAgBUEANgLQByAFIAVB7ABqNgLgByAF +QcQVahD6PgsgBUHQB2oQkgkhAiAFQcQHaiABELM1AkACQAJ/IAIoAgAiAUUEQEEAIQEgBSkCyAch +JiAFKALEBwwBCyAFQdAHaiEWIAIoAgQhEyAFQcQHaiEJA0ACQCABLwGOGCIIQQxsIQ5BACEMQX8h +BwJAAn8CQANAIAwgDkYEQCAIIQcMAgsgASAMaiEQIAxBDGohDCAHQQFqIQcCQCAJIBBBBGoQiUFB +/wFxDgIAAQILC0EADAELIBMNAUEBCyEIIBYgATYCBCAWIAg2AgAgFkEMaiAHNgIAIBZBCGogEzYC +AAwBCyATQQFrIRMgASAHQQJ0akGQGGooAgAhAQwBCwsgBSgC0AdFDQEgBSkC2AchKSAFKALUByEB +IAUpAsgHISYgBSgCxAcLIgdBgICAgHhGDQEgBSApNwLYFSAFIAE2AtQVIAUgAjYC0BUgBSAmNwLI +FSAFIAc2AsQVIAVBrANqIQgjAEHQAGsiCiQAAkAgBUHEFWoiDygCEEUEQCAPKAIMIQkQh0IhAiAK +QQhqIgFBADYCBCABIAI2AgAgCigCDCEOIAogCigCCCIQNgIQIAogDjYCFCAKQSBqIA9BCGooAgA2 +AgAgCiAPKQIANwMYIApBEGoiBygCACITLwGOGCIMQQtPBEBB8IDAAEEgQeyBwAAQ5isACyATIAxB +AWo7AY4YIBMgDEEMbGoiAkEEaiAKQRhqIgEpAgA3AgAgAkEMaiABQQhqKAIANgIAIBMgDEGMAmxq +QYgBaiAIQYwCEM1PGiAKQUBrIgEgDDYCCCABIBM2AgAgASAHKAIENgIEIAooAkAaIAooAkgaIAlB +ATYCCCAJIA42AgQgCSAQNgIADAELIApBMGogD0EQaiIBQQhqKAIANgIAIAogASkCADcDKCAKQcgA +aiAPQQhqKAIANgIAIAogDykCADcDQCAKQTRqIRcgCkFAayEZIA9BDGohHCMAQcALayIEJAACQAJA +AkACQAJAAkACQAJAAkACQCAKQShqIgEoAgAiAi8BjhhBC08EQEEBIREgASgCCCIJQQVPDQFBBCEH +DAILIARB6AJqIAEgGSAIEOkmIAQoAvACIRQgBCgC6AIhDSAEKALsAiERDAILAkACQCAJIgdBBWsO +AgIBAAsgCUEHayEJQQAhEUEGIQcMAQtBACERQQUhB0EAIQkLIAEoAgQhARCHQiIOIAIvAY4YIAdB +f3NqIhU7AY4YIARByABqIgwgAiAHQQxsaiIWQQxqKAIANgIAIAQgFkEEaikCADcDQCACIAdBjAJs +aiITQYgBaigCACEGIARB6AJqIhAgE0GMAWpBiAIQzU8aIARBKGogFSAOQQRqEIY4IBZBEGogFSAE +KAIoIAQoAiwQpDkgBEEgaiAVIA5BiAFqEIU4IBNBlANqIBUgBCgCICAEKAIkEI84IAIgBzsBjhgg +BCAJNgKYB0EAIQkgBCABQQAgERs2ApQHIAQgAiAOIBEbNgKQByAEQfgEaiAEQZAHaiAZIAgQ6SYg +BEG4C2oiGCAMKAIANgIAIAQgBCkDQDcDsAsgBCgC/AQhESAEKAL4BCENIAQoAoAFIRQgBEGoCWog +EEGIAhDNTxogBkEDRg0AIARBiAdqIhUgGCgCADYCACAEIAQpA7ALNwOAByAEQfgEaiAEQagJakGI +AhDNTxogBEHsAmohFgNAIAIoAgAiEARAIAQgEDYCNCAEIAIvAYwYIgI2AjwgBCABQQFqIgg2Ajgg +BEHgAmogFSgCADYCACAEIAQpA4AHNwPYAiAEIAY2AugCIBYgBEH4BGpBiAIQzU8aIAEgCUcNAwJA +AkAgEC8BjhgiDEELTwRAQQEhEiACQQVPDQEgAiEBQQQhAgwCCyAEQTRqIARB2AJqIARB6AJqIA4Q +2A4MBAsCQAJAIAIiAUEFaw4CAgEACyACQQdrIQFBACESQQYhAgwBC0EAIRJBBSECQQAhAQsQkkIh +CyAYIBAgAkEMbGoiCUEMaigCADYCACALIBAvAY4YIgcgAkF/c2oiGTsBjhggBCAJQQRqKQIANwOw +CyAQIAJBjAJsaiITQYgBaigCACEGIARBqAlqIBNBjAFqQYgCEM1PGiAEQRhqIBkgC0EEahCGOCAJ +QRBqIAcgAkEBaiIJayIHIAQoAhggBCgCHBCkOSAEQRBqIBkgC0GIAWoQhTggE0GUA2ogByAEKAIQ +IAQoAhQQjzggECACOwGOGCALLwGOGCIHQQFqIRMgB0EMTw0EIAwgAmsiAiATRw0FIAtBkBhqIBAg +CUECdGpBkBhqIAJBAnQQzU8aIARBCGogCyAIEMYYIARBoAlqIhMgGCgCADYCACAEIAQpA7ALNwOY +CSAEKAIIIQcgBCgCDCEJIARBkAdqIgwgBEGoCWoiAkGIAhDNTxogBCABNgKwCSAEIAggCSASGzYC +rAkgBCAQIAcgEhs2AqgJIAIgBEHYAmogBEHoAmogDhDYDiAEQdACaiIBIBMoAgA2AgAgBCAEKQOY +CTcDyAIgBEFAayAMQYgCEM1PGiAGQQNGDQIgFSABKAIANgIAIAQgBCkDyAI3A4AHIARB+ARqIARB +QGtBiAIQzU8aIBAhAiAIIQEgByEODAELCyAcKAIAIggoAgAiB0UNBCAIKAIEIQIQkkIiASAHNgKQ +GCAEIAEgAkEBahDGGCAEKAIAIRAgCCAEKAIEIgE2AgQgCCAQNgIAIARB6AJqIARB+ARqQYgCEM1P +GiABQQFrIAlHDQUgEC8BjhgiCEELTw0GIBAgCEEBaiIHOwGOGCAEQYgHaigCACECIBAgCEEMbGoi +AUEEaiAEKQOABzcCACABQQxqIAI2AgAgECAIQYwCbGoiAUGIAWogBjYCACABQYwBaiAEQegCakGI +AhDNTxogECAHQQJ0akGQGGogDjYCACAOIAc7AYwYIA4gEDYCAAsgFyAUNgIIIBcgETYCBCAXIA02 +AgAgBEHAC2okAAwGC0G0g8AAQTVB7IPAABDmKwALIBNBDEGkg8AAEOMbAAtBzILAAEEoQfSCwAAQ +5isAC0HggMAAEKNLAAtB/IHAAEEwQayCwAAQ5isAC0HwgMAAQSBBvILAABDmKwALIA8oAgwiASAB +KAIIQQFqNgIIIAooAjQgCigCPEGMAmxqGgsgCkHQAGokAAwFCyAFKALcByECIAUpAtQHISYgBUHE +B2oQiD8LIAVB0AdqIgcgJqcgAkGMAmxqQYgBaiIBQYwCEM1PGiABIAVBrANqQYwCEM1PGiAFQbgF +aiAHQYwCEM1PGiAFKAK4BUEDRg0DIAVBuAVqEPYyDAMLIAVBmAFqEJZBCyAFQZABahCWQSAFQYwB +ahCWQQwFCyAiQQFqISIgBUGcAWoQlkELIAVBmAFqEJZBIAUoAqABQQNHBEAgG0UNASAFQaABahD2 +MgUgJRCWQQsMAAsACwALAAsgBUGEAWoQ+j4LIAVBgAFqEJZBCyAFQfgAahCWQSAFQewAahCJGSAF +QegAahCsOUEAIQIgA0UNACAkEJZBCyAeIB4oAgBBAWs2AgAgACAhQQJHNgIIIAAgATYCBCAAIAI2 +AgAgBUHgFWokAAvmCgITfwF+IwBBgAFrIgYkAAJAAkACQAJAAkACQCABKAIAIgcvAeIBQQtPBEBB +BCEJAkAgASgCCCIIQQVJBEBBASEKDAELIAghCUEBIQoCQAJAIAhBBWsOAgIBAAsgCEEHayEIQQAh +CkEGIQkMAQtBACEKQQUhCUEAIQgLIAEoAgQhCxD7QSIMIAcvAeIBIg0gCUF/c2oiATsB4gEgBkHY +AGoiEyAHIAlBDGxqIg5B5ABqKAIANgIAIAYgDkHcAGopAgA3A1AgByAJQQN0aiIPKAIAIRAgDygC +BCEPIAZBKGogASAMEIY4IAcgCUEBaiIRQQN0aiANIBFrIg0gBigCKCAGKAIsEPE4IAZBIGogASAM +QdwAahCFOCAOQegAaiANIAYoAiAgBigCJBCIOCAHIAk7AeIBIAYgCDYCeEEAIQggBiALQQAgChs2 +AnQgBiAHIAwgChs2AnAgBkHgAGogBkHwAGogAiADIAQQgCggBigCZCEUIAYoAmAhFSAGKAJoIRYg +BkHIAGoiDSATKAIANgIAIAYgBikDUDcDQAJAA0ACQAJAIAcoAlgiAQRAIAYgATYCNCAGIAcvAeAB +Igc2AjwgBiALQQFqIgI2AjggEyANKAIANgIAIAYgBikDQDcDUCAIIAtHDQYgAS8B4gEiF0ELSQ0C +QQEhBAJAIAdBBUkEQCAHIQpBBCEHDAELIAchCgJAAkAgB0EFaw4CAgEACyAHQQdrIQpBACEEQQYh +BwwBC0EAIQRBBSEHQQAhCgsQikIiAyABLwHiASISIAdBf3NqIgs7AeIBIAZB+ABqIhggASAHQQxs +aiIIQeQAaigCADYCACAGIAhB3ABqKQIANwNwIAEgB0EDdGoiDigCACEJIA4oAgQhDiAGQRhqIAsg +AxCGOCABIAdBAWoiEUEDdGogEiARayISIAYoAhggBigCHBDxOCAGQRBqIAsgA0HcAGoQhTggCEHo +AGogEiAGKAIQIAYoAhQQiDggASAHOwHiASADLwHiASIIQQFqIQsgCEEMTw0HIBcgB2siByALRg0B +QcyCwABBKEH0gsAAEOYrAAsgBSgCACICKAIAIgFFDQcgAigCBCEDEIpCIgQgATYC5AEgBiAEIANB +AWoQwxggBigCACEBIAIgBigCBCIDNgIEIAIgATYCACAGQfgAaiAGQcgAaigCADYCACAGIAYpA0A3 +A3AgA0EBayAIRw0IIAEvAeIBIgJBC08NCSABIAJBAWoiAzsB4gEgASACQQN0aiIEIA82AgQgBCAQ +NgIAIAEgAkEMbGoiAkHcAGogBikDcDcCACACQeQAaiAGQfgAaigCADYCACABIANBAnRqQeQBaiAM +NgIAIAwgAzsB4AEgDCABNgJYDAMLIANB5AFqIAEgEUECdGpB5AFqIAdBAnQQzU8aIAZBCGogAyAC +EMMYIAZB6ABqIgcgGCgCADYCACAGIAYpA3A3A2AgBigCCCEDIAYoAgwhCCAGIAo2AnggBiACIAgg +BBs2AnQgBiABIAMgBBs2AnAgBkHwAGogECAPIAZB0ABqIAwQ8g4gDSAHKAIANgIAIAYgBikDYDcD +QCABIQcgAiELIAkhECAOIQ8gAyEMDAELCyAGQTRqIBAgDyAGQdAAaiAMEPIOCyAAIBY2AgggACAU +NgIEIAAgFTYCAAwGCyAGQfAAaiABIAIgAyAEEIAoIAYpAnAhGSAAIAYoAng2AgggACAZNwIADAUL +QbSDwABBNUHsg8AAEOYrAAsgC0EMQaSDwAAQ4xsAC0HggMAAEKNLAAtB/IHAAEEwQayCwAAQ5isA +C0HwgMAAQSBBvILAABDmKwALIAZBgAFqJAALjAsCCX8BfiMAQYADayIDJAAgAQJ/AkACQAJAAkAC +QAJAAkACQAJAAkACQCABLQAgQQFrDgMFAAIBCwALIAEgASgCACIENgIMIAEgASkCBDcCECAEKAIE +QQhqIgQQwjogA0EYaiAEEMMvIAMoAhgNAiADQSBqKAIAIQQgAygCHCABKAIQIAEoAhQQrCIiBQRA +IANBGGoiASAFEIoHIAMoAhghAiADQcQCaiABQQRyQTwQzU8aIAQgBCgCAEEBazYCAAwJCyAEIAQo +AgBBAWs2AgAgA0EQaiABKAIMEL8sIANBCGogAygCECABKAIQIAEoAhQgAygCFCgCTBEFACADKAII +IQQgAUEcaiADKAIMIgU2AgAgASAENgIYDAELIAFBHGooAgAhBSABKAIYIQQLIANBGGogBCACIAUo +AgwRAwAgAygCGCIEQQJGDQIgAygCICECIAMoAhwhBSADQeQAaiADQSRqQTwQzU8aIAFBGGoQmTYg +BEUEQCACRQRAQQAhAgwICyADIAI2AqABIANBoAFqQQRyIANB5ABqQTwQzU8hBSABKAIMKAIIQQhq +IgIQiT4gA0EYaiACEOggIAMoAhgNBCADIAMoAhwiBjYCsAIgAyADQSBqLQAAOgC0AiADQRhqIANB +oAFqENsQIAMoAhghByADIAMoAhwiAiADKAIgQQN0IgRqIgg2AuwBIAMgBzYC6AEgAyACNgLgASAG +QQhqIQYDQCAEBEAgAigCBCEHIAIoAgAhCSADQRhqIgogA0GgAWoQigcgA0HwAWoiCyAGIAkgByAK +EMMUIARBCGshBCACQQhqIQIgCxCdRQwBBSADIAg2AuQBIANB4AFqEIQfIANBsAJqEJ8fIAEoAgwo +AgRBCGoiAhCJPiADQRhqIAIQ6CAgAygCGA0HIAMgAygCHCICNgLgASADIANBIGotAAA6AOQBIAMg +ASgCECABQRRqKAIAEMIwIAMoAgQhBCADKAIAIQYgA0EYaiIBIANBoAFqEIoHIANB8AFqIgcgAkEI +aiAGIAQgARDDFCAHEJ1FIANB4AFqEJ8fIAMoAqABIQIgA0HEAmogBUE8EM1PGgwJCwALAAsgA0Eo +aiADQewAaikCADcCACADQTBqIANB9ABqKQIANwIAIANBOGogA0H8AGooAgA2AgAgAyACNgIcIAMg +BTYCGCADIAMpAmQ3AiBBACECQcST2wAoAgBBBEsNBUG0+doAEPs+IgRB/wFxRQ0FQQAhBUG0+doA +KAIAIAQQ9S5FDQVBtPnaACgCACIEQRxqIQYgBEEgaigCACIHBEAgBEEoaigCACEIIARBJGooAgAh +CSAEKAIcIQUgA0EANgKAAiADIAg2AvwBIAMgCTYC+AEgAyAHNgL0AQsgAyAFNgLwASADQaABaiIB +IANB8AFqIgRBpOrAABDYLCADQfwBakIBNwIAIANBwMfAADYC6AEgA0EBNgL0ASADQeDqwAA2AvAB +IANB/wA2AsACIAMgBDYC5AEgAyABNgLgASADIANBvAJqNgL4ASADIANBGGo2ArwCIANBsAJqIgEg +BiADQeABahDgQUG0+doAKAIAIAEQxDQMBQsgAyADKQIcNwLwAUG4qcEAQSsgA0HwAWpB5KnBAEHk +6cAAEIkYAAtBoMTAAEEjQfTpwAAQ5isAC0IBIQxBAwwECyADIAMoAhw2AvABIAMgA0Egai0AADoA +9AFBuKnBAEErIANB8AFqQaSqwQBBhOrAABCJGAALIAMgAygCHDYC8AEgAyADQSBqLQAAOgD0AUG4 +qcEAQSsgA0HwAWpB9KnBAEGU6sAAEIkYAAsgA0EYahCwGgsgACACNgIIIABBDGogA0HEAmpBPBDN +TxpBAQs6ACAgACAMNwMAIANBgANqJAALjAsCCX8BfiMAQYADayIDJAAgAQJ/AkACQAJAAkACQAJA +AkACQAJAAkACQCABLQAgQQFrDgMFAAIBCwALIAEgASgCACIENgIMIAEgASkCBDcCECAEKAIEQQhq +IgQQwjogA0EYaiAEEMMvIAMoAhgNAiADQSBqKAIAIQQgAygCHCABKAIQIAEoAhQQrCIiBQRAIANB +GGoiASAFEJcHIAMoAhghAiADQcQCaiABQQRyQTwQzU8aIAQgBCgCAEEBazYCAAwJCyAEIAQoAgBB +AWs2AgAgA0EQaiABKAIMEL8sIANBCGogAygCECABKAIQIAEoAhQgAygCFCgCTBEFACADKAIIIQQg +AUEcaiADKAIMIgU2AgAgASAENgIYDAELIAFBHGooAgAhBSABKAIYIQQLIANBGGogBCACIAUoAgwR +AwAgAygCGCIEQQJGDQIgAygCICECIAMoAhwhBSADQeQAaiADQSRqQTwQzU8aIAFBGGoQmTYgBEUE +QCACRQRAQQAhAgwICyADIAI2AqABIANBoAFqQQRyIANB5ABqQTwQzU8hBSABKAIMKAIIQQhqIgIQ +iT4gA0EYaiACEOggIAMoAhgNBCADIAMoAhwiBjYCsAIgAyADQSBqLQAAOgC0AiADQRhqIANBoAFq +ENsQIAMoAhghByADIAMoAhwiAiADKAIgQQN0IgRqIgg2AuwBIAMgBzYC6AEgAyACNgLgASAGQQhq +IQYDQCAEBEAgAigCBCEHIAIoAgAhCSADQRhqIgogA0GgAWoQlwcgA0HwAWoiCyAGIAkgByAKEMMU +IARBCGshBCACQQhqIQIgCxCdRQwBBSADIAg2AuQBIANB4AFqEIQfIANBsAJqEJ8fIAEoAgwoAgRB +CGoiAhCJPiADQRhqIAIQ6CAgAygCGA0HIAMgAygCHCICNgLgASADIANBIGotAAA6AOQBIAMgASgC +ECABQRRqKAIAEMIwIAMoAgQhBCADKAIAIQYgA0EYaiIBIANBoAFqEJcHIANB8AFqIgcgAkEIaiAG +IAQgARDDFCAHEJ1FIANB4AFqEJ8fIAMoAqABIQIgA0HEAmogBUE8EM1PGgwJCwALAAsgA0EoaiAD +QewAaikCADcCACADQTBqIANB9ABqKQIANwIAIANBOGogA0H8AGooAgA2AgAgAyACNgIcIAMgBTYC +GCADIAMpAmQ3AiBBACECQcST2wAoAgBBBEsNBUG0+doAEPs+IgRB/wFxRQ0FQQAhBUG0+doAKAIA +IAQQ9S5FDQVBtPnaACgCACIEQRxqIQYgBEEgaigCACIHBEAgBEEoaigCACEIIARBJGooAgAhCSAE +KAIcIQUgA0EANgKAAiADIAg2AvwBIAMgCTYC+AEgAyAHNgL0AQsgAyAFNgLwASADQaABaiIBIANB +8AFqIgRB/NnCABDdLCADQfwBakIBNwIAIANBlMnCADYC6AEgA0EBNgL0ASADQbjawgA2AvABIANB +kQI2AsACIAMgBDYC5AEgAyABNgLgASADIANBvAJqNgL4ASADIANBGGo2ArwCIANBsAJqIgEgBiAD +QeABahDgQUG0+doAKAIAIAEQxDQMBQsgAyADKQIcNwLwAUG4r8MAQSsgA0HwAWpB5K/DAEG82cIA +EIkYAAtB4MbCAEEjQczZwgAQ5isAC0IBIQxBAwwECyADIAMoAhw2AvABIAMgA0Egai0AADoA9AFB +uK/DAEErIANB8AFqQbSwwwBB3NnCABCJGAALIAMgAygCHDYC8AEgAyADQSBqLQAAOgD0AUG4r8MA +QSsgA0HwAWpB9K/DAEHs2cIAEIkYAAsgA0EYahCwGgsgACACNgIIIABBDGogA0HEAmpBPBDNTxpB +AQs6ACAgACAMNwMAIANBgANqJAALiwwBFH8jAEHQAGsiBSQAAkAgAUEVTwRAQeGT2wAtAAAaIAFB +AXZBFGxBBBCrSCITBEBBEBDCQyIIBEAgBUEQNgIwIAUgCDYCLCAAQShqIRRBECEKAkACQANAIAEg +Bk0EQCAFKAIwGiAFKAIsEJgEIBMQmAQMBwsCQAJAIAEgBmsiAkECSQ0AIAAgBkEUbCIDaiILQRRq +IAsQiEFB/wFxQf8BRwRAIAMgFGohBEECIQMDQCACIANGDQIgBCAEQRRrEIhBQf8BcUH/AUYEQCAD +IQIMAwUgBEEUaiEEIANBAWohAwwBCwALAAsgAyAUaiEEQQIhAwNAAkAgAiADRwRAIAQgBEEUaxCI +QUH/AXFB/wFGDQEgAyECCyAFQSBqIAYgAiAGaiIOIAAgAUHIgsYAEPcpIAUoAiAhBCAFKAIkIQlB +ACELIwBBEGsiAyQAIANBCGpBACAJQQF2IgcgBCAHQbiBxgAQ9ykgAygCDCENIAMoAgghDyADQQAg +ByAEIAlBFGxqIAdBbGxqIAdByIHGABD3KSADKAIAIAdBFGxqQRRrIQkgAygCBCESAkACQAJAA0Ag +ByALRg0BIAsgDUYNAiASIAcgC0F/c2oiBEsEQEEAIQQDQCAEQRRHBEAgBCAPaiIQKAIAIREgECAE +IAlqIhAoAgA2AgAgECARNgIAIARBBGohBAwBCwsgCUEUayEJIA9BFGohDyALQQFqIQsMAQsLIAQg +EkHogcYAEOIbAAsgA0EQaiQADAELIA0gDUHYgcYAEOIbAAsMAwsgBEEUaiEEIANBAWohAwwACwAL +IAIgBmohDgsgBiAOTSABIA5PcUUEQEHYg8YAQSxBhITGABDmKwALIAEgDk0gAkEJS3JFBEAgBUEY +aiAGIAZBCmoiAyABIAEgA0sbIg4gACABQZSExgAQ9ykgBSgCGCAFKAIcQQEgAiACQQFNGxCBCAsC +QCAKIAxHBEAgCCEHIAohCwwBCyAFIApBAXQiCzYCMCALEMJDIgdFDQMgBSAHNgIsIAcgCCAKQQN0 +EM1PGiAIEJgECyAHIAxBA3RqIgIgBjYCBCACIA4gBms2AgAgDEEBaiEMA0AgBSAMNgI0IAVBEGog +ByAMIAEQ+A4gBSgCFCEKIAUoAhBBAUcEQCAHIQggCyEKIA4hBgwCCyAFQSxqIgIgCkHYgsYAEPEg +IgMoAgAhDSAFQQhqIAMoAgQiEiACIApBAWoiD0HogsYAEPEgIgIoAgQgAigCACIQaiAAIAFB+ILG +ABD3KSAFKAIIIgMgDUEUbCIIaiEEIAMgBSgCDCICQRRsaiEJAkACQCANIAIgDWsiAksEQCATIAQg +AkEUbCICEM1PIgggAmohBiAJQRRrIQIDQCAGIAhNIAMgBE9yDQIgAiAEQWxBACAGQRRrIARBFGsQ +iEFB/wFxIglB/wFGIhEbaiIEIAZBbEEAIAlB/wFHG2oiBiARGyIJKQIANwIAIAJBEGogCUEQaigC +ADYCACACQQhqIAlBCGopAgA3AgAgAkEUayECDAALAAsgCCATIAMgCBDNTyICaiEGA0AgAiAGTyAE +IAlPcg0CIAMgBCACIAQgAhCIQUH/AXEiEUH/AUYiFRsiCCkCADcCACADQRBqIAhBEGooAgA2AgAg +A0EIaiAIQQhqKQIANwIAIANBFGohAyACIBFB/wFHQRRsaiECIAQgFUEUbGohBAwACwALIAQhAyAI +IQILIAMgAiAGIAJrEM1PGiAMIA9LBEAgByAPQQN0aiICIBI2AgQgAiANIBBqNgIAIAogDE8NAyAH +IApBA3RqIgIgAkEIaiAMIApBf3NqQQN0EM5PGiAMQQFrIQwMAQsLCyAFQcQAakIANwIAIAVBATYC +PCAFQcz7xQA2AjggBUHE9sUANgJAIAVBOGpBiIPGABDLMAALIAVBxABqQgA3AgAgBUEBNgI8IAVB +zPvFADYCOCAFQcT2xQA2AkAgBUE4akHIg8YAEMswAAtBuIPGABCjSwALQaiDxgAQo0sAC0GYg8YA +EKNLAAsgAUEBTQ0AIAAgAUEBEIEICyAFQdAAaiQAC8JVAhp/BX4jAEGgBGsiByQAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAIAEtANQBQQFrDgMDAAIBCwALIAEgASgCACIJNgIEIAdByABqIAlB/K/H +AEEEQQAQqiYCQAJAIAcoAkhFBEAgAUEANgJ4IAFB/ABqIAcoAkwiAjYCAAwBCyABQfgAaiAHQcgA +akE0EM1PIgkoAgANASABQfwAaigCACECCyAHQeADaiACEI0iIAdCAzcD2AMMCQsgB0GsA2ogAUHE +AGogCUE0EM1PQfyvxwBBBBD7IAJAAkAgBygCrANFBEAgAUEANgI4IAFBPGogBygCsAMiAjYCAAwB +CyABQThqIgkgBykCrAMiHTcCACAJQQhqIgwgB0G0A2ooAgA2AgAgHacNASABQTxqKAIAIQILIAdB +4ANqIAIQjSIgB0IDNwPYAwwICyABIAkpAgA3AiwgAUE0aiAMKAIANgIAIAFBzLrHAEEHEAA2AqwB +IAdB6AJqIAFBLGogAUGsAWoQ4jACQAJAIAcoAugCRQRAIAFBADYCCCABQQxqIAcoAuwCIgI2AgAM +AQsgAUEIaiAHQegCakEkEM1PIgkoAgANASABQQxqKAIAIQILIAdB4ANqIAIQjSIMBwsgAUGwAWog +CUEkEM1PGgsgB0HIAGogAUGwAWoiCSACEI8iQQMhAgJAAkACQCAHKAJIQQNHBEAgBykDSCEdIAkQ +wTUgHUIgiKchAiAdpyIJQQJGDQEgByACNgJEIAcgCTYCQEICIR0gCQ4CCAIDCyAAQgQ3AwAMCwsg +B0HgA2ogAhCNIgwHCyAHQcgAaiEWIAEoAgRBOGohCSMAQaABayIRJAAgESACNgIAAkAgCSgCACIC +BEAgEUEQaiARELIUIBEoAhAiCUGAgICAeEcEQCARIBEoAhgiDDYCDCARIBEoAhQiDTYCCCARIAk2 +AgQgEUEQaiEKIAJBCGohAiMAQdAAayIOJAAgDiANIAwQjzUCQCAOKAIAIglBgICAgHhHBEAgDkE4 +aiAOQRBqKQIANwIAIA5BQGsgDkEYaikCADcCACAOQcgAaiAOQSBqKQIANwIAIA4gDikCCDcCMCAO +IA4oAgQ2AiwgDiAJNgIoIwBB0AFrIgYkACAGQSxqIAIgDkEoahDXEAJAIAYtACwiAkEIRgRAIAZB +EGogBkE4aigCACICNgIAIAYgBikCMDcDCCAGKAIMIQkjAEEQayIZJAAgGUIANwIIIBkgAjYCBCAZ +IAk2AgAgBkFAayEYIwBBwAJrIgkkACAJIBkQsDUgCUGwAWohD0EAIQJBACEMQQAhDSMAQbAFayIE +JAAgBEEMaiAJELwWAkACQAJAAkACfgJAAkACQAJ/AkACfgJ/An8CQAJ/AkACQAJAAkACQAJAAkAC +QAJAAn8gBC0ADEUEQCAELQANRQRAIARBBTYCwAIgCSAEQcACahCAMQwCCyAELQAOIgNB2wBGDQIg +A0H7AEYNAyAJIARBrwVqQciexwAQhAUhAgwYCyAEKAIQCyECIA9CAjcDACAPIAI2AggMFwsgCSAJ +LQAcQQFrIgI6ABwgAkH/AXEEQCAJEL5BIARBAToA7AMgBCAJNgLoAyAEQcACaiAEQegDahCKCCAE +KALAAg0CIAQoAsQCIgxFBEBBAEHEiscAQfyCxwAQ3hchAgwTCyAEIARByAJqKAIAIg02AqAFIAQg +DDYCnAUgBEHAAmogBEHoA2oQhAggBCgCwAINAyAEKALEAiIURQRAQQFBxIrHAEH8gscAEN4XIQIM +EgsgBCAEQcgCaigCACIVNgKoBSAEIBQ2AqQFIARBwAJqIQgjAEHgAGsiAyQAIAMgBEHoA2oiECgC +ACILELwWAkAgAy0AAEUEQCADLQABRQRAIANBAjYCCCALIANBCGoQgDEhAiAIQQM2AgAgCCACNgIE +DAILAkACQCADLQACIgJBLEcEQCACQd0ARwRAIBAtAAQNAiADQQc2AgggCyADQQhqEIAxIQIgCEED +NgIAIAggAjYCBAwFCyAIQQI2AgAMBAsgEC0ABA0AIAsQvkEgA0EIaiALELwWIAMtAAgEQCAIIAMo +Agw2AgQgCEEDNgIADAQLIAMtAAkEQCADLQAKIQIMAgsgA0EFNgIIIAsgA0EIahCAMSECIAhBAzYC +ACAIIAI2AgQMAwsgEEEAOgAECyACQd0ARgRAIANBFTYCCCALIANBCGoQgDEhAiAIQQM2AgAgCCAC +NgIEDAILIANBCGogCxCDRyADKAIIQQJHBEAgCCADQQhqQdgAEM1PGgwCCyAIIAMoAgw2AgQgCEED +NgIADAELIAggAygCBDYCBCAIQQM2AgALIANB4ABqJAAgBCgCwAIiAkEDRg0EIAQoAsQCIQMgBEHI +BGogBEHIAmpB0AAQzU8aIAJBAkYEQEECQcSKxwBB/ILHABDeFyECDBELIARB+ANqIARByARqQdAA +EM1PGiAEIAM2AvQDIAQgAjYC8AMgBEHAAmogBEHoA2oQkAgCfwJAIAQtAMACDQAgBC0AwQIiGkEC +RgRAQQNBxIrHAEH8gscAEN4XDAILIARBwAJqIARB6ANqEJAIIAQtAMACDQAgBC0AwQIgBEHAAmog +BEHoA2oQjwgCQAJAIAQpA8ACIh1CAlENACAdUARAQQVBxIrHAEH8gscAEN4XDAQLIAQoAswCIRMg +BCgCyAIhFyAEQcACaiAEQegDahCzCCAEKQPAAiIdQgJRDQACfiAdUEUEQCAEKQPIAgwBC0IACyEe +IARBwAJqIQgjAEEgayIDJAAgA0EIaiAEQegDaiIQKAIAIgsQvBYCQCADLQAIRQRAIAMtAAlFBEAg +A0ECNgIQIAsgA0EQahCAMSECIAhCAzcDACAIIAI2AggMAgsCQAJAIAMtAAoiAkEsRwRAIAJB3QBH +BEAgEC0ABA0CIANBBzYCECALIANBEGoQgDEhAiAIQgM3AwAgCCACNgIIDAULIAhCAjcDAAwECyAQ +LQAEDQAgCxC+QSADQRBqIAsQvBYgAy0AEARAIAggAygCFDYCCCAIQgM3AwAMBAsgAy0AEQRAIAMt +ABIhAgwCCyADQQU2AhAgCyADQRBqEIAxIQIgCEIDNwMAIAggAjYCCAwDCyAQQQA6AAQLIAJB3QBG +BEAgA0EVNgIQIAsgA0EQahCAMSECIAhCAzcDACAIIAI2AggMAgsgA0EQaiALEIoTIAMpAxAiHUIC +UgRAIAggAykDGDcDCCAIIB03AwAMAgsgCCADKAIYNgIIIAhCAzcDAAwBCyAIIAMoAgw2AgggCEID +NwMACyADQSBqJAAgBCkDwAIiHUIDUg0BCyAEKALIAgwCC0EBcSESIAQpA8gCIR8gBEGQAWogBEHw +A2pB2AAQzU8aIB9CIIinIQUgH6chAiAdQgAgHUICUhsMFQsgBCgCxAILIQIgBEHwA2oQ9zsMEAsg +BEEYNgLAAiAJIARBwAJqEIAxDA4LIAkgCS0AHEEBayIFOgAcIAVB/wFxRQ0MIAkQvkEgBEEBOgDc +AyAEIAk2AtgDIARBADYC4AMgBEEANgLoAyAEQQI2AvADIARB+ANqIQUgBEHIAmohHEECIRdBAiET +AkACQANAIwBBIGsiAyQAIANBDGogBEHYA2oiGygCACILELwWAkAgBEHAAmoiCAJ/AkAgAy0ADEUE +QCADLQANRQRAIANBAzYCFCALIANBFGoQgDEhCyAIQQE6AAAgCCALNgIEDAQLAkACQCADLQAOIhBB +LEcEQCAQQf0ARwRAIBstAAQNAiADQQg2AhQgCyADQRRqEIAxIQsgCEEBOgAAIAggCzYCBAwHCyAI +QYASOwEADAYLIBstAAQNACALEL5BIANBFGogCxC8FiADLQAUBEAgCCADKAIYNgIEIAhBAToAAAwG +CyADLQAVBEAgAy0AFiEQDAILIANBBTYCFCALIANBFGoQgDEhCyAIQQE6AAAgCCALNgIEDAULIBtB +ADoABAsCQCAQQSJHBEAgEEH9AEYNASADQRE2AhQgCyADQRRqEIAxIQsgCEEBOgAAIAggCzYCBAwF +CyALEL5BIAtBADYCCCADQRRqIAtBDGogCxD7BSAIAn8gAygCFEECRgRAIAMoAhgMAQsgA0EMaiAD +KAIYIAMoAhwQuxAgAy0ADEUNAyADKAIQCzYCBEEBDAMLIANBFTYCFCALIANBFGoQgDEhCyAIQQE6 +AAAgCCALNgIEDAMLIAggAygCEDYCBCAIQQE6AAAMAgsgCCADLQANOgABQQALOgAACyADQSBqJAAg +BC0AwAINCSAELQDBAiIDQQlGDQECQAJAAkACQAJAAkACQAJAAkAgAw4IAQIDBAUGBwgACyAEQdgD +ahCQPyIDRQ0IQQAhCCADIQJBAQwUCyAMBEBBACEIQayJxwBBBxDxHyECQQEMFAsgBEHAAmogBEHY +A2oQ3TggBCgCwAIiDARAIAQoAsQCIRQgBEHgA2oQkEUgBCAUNgLkAyAEIAw2AuADDAgLIAQoAsQC +IQJBACEMDA8LIA0EQEEAIQhBs4nHAEEJEPEfIQJBAQwTCyAEQcACaiAEQdgDahDXOCAEKALAAiIN +BEAgBCgCxAIhFSAEQegDahCQRSAEIBU2AuwDIAQgDTYC6AMMBwsgBCgCxAIhAkEAIQ0MDgsgBCgC +8ANBAkcEQEEAIQhBvInHAEEGEPEfIQJBAQwSCyAEQcACaiESAkAgBEHYA2ooAgAiAxDnFiIIRQRA +IBIgAxCDRwwBCyASQQI2AgAgEiAINgIECyAEKALEAiEDIAQoAsACIhJBAkYNByAEQcgEaiIIIBxB +0AAQzU8aIARB8ANqEPFDIAQgAzYC9AMgBCASNgLwAyAFIAhB0AAQzU8aDAULIBNB/wFxQQJHBEBB +ACEIQcKJxwBBBhDxHyECQQEMEQsgBEHAAmogBEHYA2oQijkgBC0AwAINDSAELQDBAiETDAQLIBdB +/wFxQQJHBEBBACEIQciJxwBBChDxHyECQQEMEAsgBEHAAmogBEHYA2oQijkgBC0AwAINDCAELQDB +AiEXDAMLICFQRQRAQQAhCEHSiccAQRkQ8R8hAkEBDA8LIARBwAJqIARB2ANqEIg5IAQoAsACDQsg +BCkDyAIhIEIBISEMAgsgH1BFBEBBACEIQeuJxwBBExDxHyECQQEMDgsgBEHAAmogBEHYA2oQ4Tgg +BCgCwAINCiAEKQPIAiEeQgEhHwwBCyAdQgJSBEBBACEIQf6JxwBBHxDxHyECQQEMDQsgBEHAAmoh +AgJAIARB2ANqKAIAIgMQ5xYiCEUEQCACIAMQihMMAQsgAkICNwMAIAIgCDYCCAsgBCkDwAIiHUIC +UgRAIAQoAswCIRogBCgCyAIhAgwBCwsgBCgCyAIMCQsgDEEARyEIIAwhEiAMRQ0EDAULQQAhCCAD +IQJBAQwJCyAEKALEAiECDA8LIAQoAsQCIQIMDQsgBCgCxAIhAgwLCyAEQcACakGsiccAQQcQkU0g +BCgCwAIiEgRAIAQoAsQCIRQMAQsgBCgCxAIhAgwECyAEIBQ2AqAFIAQgEjYCnAUCQAJAAkACQCAN +IgVFBEAgBEHAAmpBs4nHAEEJEJNNIAQoAsACIgVFDQEgBCgCxAIhFQsgBCAVNgKoBSAEIAU2AqQF +IAQoAvADQQJGIhBFDQFBvInHAEEGEPAfIQIMAgsgBCgCxAIhAkEBIRAMAgsgBEHAAmogBEHwA2pB +2AAQzU8aAkAgE0H/AXFBAkcEfyATQQFxBSAEQcgEakHCiccAQQYQ/k4gBC0AyAQNASAELQDJBAsh +EyAhUARAIARByARqQdKJxwBBGRC5TiAEKALIBA0BIAQpA9AEISALQgAgHiAfUBshHiAXQQFxIQwg +BEHoAWogBEHAAmpB2AAQzU8aIB1CACAdQgJSGwwJCyAEKALMBCECIARBwAJqEPc7CyAEQaQFahD6 +PgsgBEGcBWoQ+j4gDUUMBQtBASEQQQAhCEEBDAQLIAQoAsQCCyECQQAhCAtBAQshEEEBCwJAIBBF +DQAgBCgC8ANBAkYNACAEQfADahD3OwsgDUEAR3EEQCAEQegDahD6PgsgDEUgCHJFBEAgBEHgA2oQ ++j4LQgILIR0gCSAJLQAcQQFqOgAcIAkQjRMhDSAEIBo2AswCIAQgAjYCyAIgBCAdNwPAAiAEQdAC +aiAEQegBakHYABDNTxogBCANNgLQAyAEIAw6AMkDIAQgEzoAyAMgBCAeNwPAAyAEICA3A7gDIAQg +FTYCtAMgBCAFNgKwAyAEIBQ2AqwDIAQgEjYCqAMCQCAdQgJSBEAgDQ0BIARBDGogBEHMAmpBhAEQ +zU8aDAkLIA1FDQcgBEHQA2oQ3x0MBwsgBEHAAmoQuT5CAiEdIA0hAgwHCyAEQRg2AsACIAkgBEHA +AmoQgDELIQIgD0ICNwMAIA8gAjYCCAwHCyAEQaQFahD6PgsgBEGcBWoQ+j4LQgILIR0gCSAJLQAc +QQFqOgAcIAkQnwwhAyAEIAU2AswCIAQgAjYCyAIgBCAdNwPAAiAEQdACaiAEQZABakHYABDNTxog +BCADNgLQAyAEIBI6AMkDIAQgGjoAyAMgBCAeNwPAAyAEIBM2ArwDIAQgFzYCuAMgBCAVNgK0AyAE +IBQ2ArADIAQgDTYCrAMgBCAMNgKoAwJAIB1CAlEEQCADDQEMAgsgA0UEQCAEQQxqIARBzAJqQYQB +EM1PGgwDCyAEQcACahC5PkICIR0gAyECDAILIARB0ANqEN8dC0ICIR0LIB1CAlENACAPQQxqIARB +DGpBhAEQzU8aIA8gAjYCCCAPIB03AwAMAQsgCSACEP9QIQIgD0ICNwMAIA8gAjYCCAsgBEGwBWok +AAJAIAkpA7ABQgJSBEAgCUEgaiAJQbABakGQARDNTxogCRDVIyICRQRAIBggCUEgakGQARDNTxoM +AgsgGEICNwMAIBggAjYCCCAJQSBqELk+DAELIBggCSgCuAE2AgggGEICNwMACyAJEIg/IAlBwAJq +JAAgGUEQaiQAIAZBCGoQ2isgBikDQCIdQgJSBEAgBigCSCECIApBDGogBkHMAGpBhAEQzU8aIAog +AjYCCCAKIB03AwAgBkEIahCIPwwCCyAKQQI6AAggCkICNwMAIApBDGogBigCSDYCACAGQQhqEIg/ +DAELIAYgBikALTcDGCAGIAZBNGopAAA3AB8gBigCPCEJIApBEGogBikAHzcAACAKQQlqIAYpAxg3 +AAAgCkEYaiAJNgIAIAogAjoACCAKQgI3AwALIAZB0AFqJAAMAQsgCkEMaiAOKAIENgIAIApBAjoA +CCAKQgI3AwALIA5B0ABqJAACQCARKQMQQgJSBEAgFiARQRBqQZABEM1PGgwBCyAWQQhqIBFBGGoQ +tCcgFkICNwMACyARQQRqEIg/DAILIBZBDGogESgCFDYCACAWQQc6AAggFkICNwMADAELIBFBEGoh +FSMAQTBrIggkAAJ/IBEQmEpFBEAgCEEQaiAREOIrIAhBJGoiAiAIKAIQIAgoAhQQwz0gCEEYaiAC +ELtKIAgoAhwhAiAIKAIgDAELIAhBCGpBBBDuHyAIKAIIIQkgCCgCDCICQe7qseMGNgAAIAhBBDYC +ICAIIAI2AhwgCCAJNgIYQQQLIQkjAEEgayIaJAAgGkEIaiIFIAIgCRCnOUEAIQxBACEJIwBB0AJr +Ig4kACAOQQhqIgQgBRDJLSAOQcABaiELQQAhAiMAQbAFayIDJAAgA0EMaiAEELwWAkACQAJAAkAC +fgJAAkACQAJ/AkACfgJ/An8CQAJ/AkACQAJAAkACQAJAAkACQAJAAn8gAy0ADEUEQCADLQANRQRA +IANBBTYCwAIgBCADQcACahCAMQwCCyADLQAOIgVB2wBGDQIgBUH7AEYNAyAEIANBrwVqQciexwAQ +hgUhAgwYCyADKAIQCyECIAtCAjcDACALIAI2AggMFwsgBCAELQAkQQFrIgI6ACQgAkH/AXEEQCAE +EL5BIANBAToA7AMgAyAENgLoAyADQcACaiADQegDahCHCCADKALAAg0CIAMoAsQCIglFBEBBAEHE +iscAQfyCxwAQ3hchAgwTCyADIANByAJqKAIAIgw2AqAFIAMgCTYCnAUgA0HAAmogA0HoA2oQ+wcg +AygCwAINAyADKALEAiIQRQRAQQFBxIrHAEH8gscAEN4XIQIMEgsgAyADQcgCaigCACIUNgKoBSAD +IBA2AqQFIANBwAJqIQYjAEHgAGsiBSQAIAUgA0HoA2oiDygCACIKELwWAkAgBS0AAEUEQCAFLQAB +RQRAIAVBAjYCCCAKIAVBCGoQgDEhAiAGQQM2AgAgBiACNgIEDAILAkACQCAFLQACIgJBLEcEQCAC +Qd0ARwRAIA8tAAQNAiAFQQc2AgggCiAFQQhqEIAxIQIgBkEDNgIAIAYgAjYCBAwFCyAGQQI2AgAM +BAsgDy0ABA0AIAoQvkEgBUEIaiAKELwWIAUtAAgEQCAGIAUoAgw2AgQgBkEDNgIADAQLIAUtAAkE +QCAFLQAKIQIMAgsgBUEFNgIIIAogBUEIahCAMSECIAZBAzYCACAGIAI2AgQMAwsgD0EAOgAECyAC +Qd0ARgRAIAVBFTYCCCAKIAVBCGoQgDEhAiAGQQM2AgAgBiACNgIEDAILIAVBCGogChCRRiAFKAII +QQJHBEAgBiAFQQhqQdgAEM1PGgwCCyAGIAUoAgw2AgQgBkEDNgIADAELIAYgBSgCBDYCBCAGQQM2 +AgALIAVB4ABqJAAgAygCwAIiAkEDRg0EIAMoAsQCIQUgA0HIBGogA0HIAmpB0AAQzU8aIAJBAkYE +QEECQcSKxwBB/ILHABDeFyECDBELIANB+ANqIANByARqQdAAEM1PGiADIAU2AvQDIAMgAjYC8AMg +A0HAAmogA0HoA2oQuQgCfwJAIAMtAMACDQAgAy0AwQIiGUECRgRAQQNBxIrHAEH8gscAEN4XDAIL +IANBwAJqIANB6ANqELkIIAMtAMACDQAgAy0AwQIgA0HAAmogA0HoA2oQsggCQAJAIAMpA8ACIh1C +AlENACAdUARAQQVBxIrHAEH8gscAEN4XDAQLIAMoAswCIRMgAygCyAIhFyADQcACaiADQegDahCx +CCADKQPAAiIdQgJRDQACfiAdUEUEQCADKQPIAgwBC0IACyEeIANBwAJqIQYjAEEgayIFJAAgBUEI +aiADQegDaiIPKAIAIgoQvBYCQCAFLQAIRQRAIAUtAAlFBEAgBUECNgIQIAogBUEQahCAMSECIAZC +AzcDACAGIAI2AggMAgsCQAJAIAUtAAoiAkEsRwRAIAJB3QBHBEAgDy0ABA0CIAVBBzYCECAKIAVB +EGoQgDEhAiAGQgM3AwAgBiACNgIIDAULIAZCAjcDAAwECyAPLQAEDQAgChC+QSAFQRBqIAoQvBYg +BS0AEARAIAYgBSgCFDYCCCAGQgM3AwAMBAsgBS0AEQRAIAUtABIhAgwCCyAFQQU2AhAgCiAFQRBq +EIAxIQIgBkIDNwMAIAYgAjYCCAwDCyAPQQA6AAQLIAJB3QBGBEAgBUEVNgIQIAogBUEQahCAMSEC +IAZCAzcDACAGIAI2AggMAgsgBUEQaiAKEIkTIAUpAxAiHUICUgRAIAYgBSkDGDcDCCAGIB03AwAM +AgsgBiAFKAIYNgIIIAZCAzcDAAwBCyAGIAUoAgw2AgggBkIDNwMACyAFQSBqJAAgAykDwAIiHUID +Ug0BCyADKALIAgwCC0EBcSENIAMpA8gCIR8gA0GQAWogA0HwA2pB2AAQzU8aIB9CIIinIRIgH6ch +AiAdQgAgHUICUhsMFQsgAygCxAILIQIgA0HwA2oQ9zsMEAsgA0EYNgLAAiAEIANBwAJqEIAxDA4L +IAQgBC0AJEEBayISOgAkIBJB/wFxRQ0MIAQQvkEgA0EBOgDcAyADIAQ2AtgDIANBADYC4AMgA0EA +NgLoAyADQQI2AvADIANB+ANqIRIgA0HIAmohG0ECIRdBAiETAkACQANAIwBBIGsiBSQAIAVBDGog +A0HYA2oiGCgCACIKELwWAkAgA0HAAmoiBgJ/AkAgBS0ADEUEQCAFLQANRQRAIAVBAzYCFCAKIAVB +FGoQgDEhCiAGQQE6AAAgBiAKNgIEDAQLAkACQCAFLQAOIg9BLEcEQCAPQf0ARwRAIBgtAAQNAiAF +QQg2AhQgCiAFQRRqEIAxIQogBkEBOgAAIAYgCjYCBAwHCyAGQYASOwEADAYLIBgtAAQNACAKEL5B +IAVBFGogChC8FiAFLQAUBEAgBiAFKAIYNgIEIAZBAToAAAwGCyAFLQAVBEAgBS0AFiEPDAILIAVB +BTYCFCAKIAVBFGoQgDEhCiAGQQE6AAAgBiAKNgIEDAULIBhBADoABAsCQCAPQSJHBEAgD0H9AEYN +ASAFQRE2AhQgCiAFQRRqEIAxIQogBkEBOgAAIAYgCjYCBAwFCyAKEL5BIApBADYCCCAFQRRqIApB +DGogChC7CCAGAn8gBSgCFEECRgRAIAUoAhgMAQsgBUEMaiAFKAIYIAUoAhwQuxAgBS0ADEUNAyAF +KAIQCzYCBEEBDAMLIAVBFTYCFCAKIAVBFGoQgDEhCiAGQQE6AAAgBiAKNgIEDAMLIAYgBSgCEDYC +BCAGQQE6AAAMAgsgBiAFLQANOgABQQALOgAACyAFQSBqJAAgAy0AwAINCSADLQDBAiIFQQlGDQEC +QAJAAkACQAJAAkACQAJAAkAgBQ4IAQIDBAUGBwgACyADQdgDahCsPyIFRQ0IQQAhBiAFIQJBAQwU +CyAJBEBBACEGQayJxwBBBxDxHyECQQEMFAsgA0HAAmogA0HYA2oQmjkgAygCwAIiCQRAIAMoAsQC +IRAgA0HgA2oQkEUgAyAQNgLkAyADIAk2AuADDAgLIAMoAsQCIQJBACEJDA8LIAwEQEEAIQZBs4nH +AEEJEPEfIQJBAQwTCyADQcACaiADQdgDahCgOCADKALAAiIMBEAgAygCxAIhFCADQegDahCQRSAD +IBQ2AuwDIAMgDDYC6AMMBwsgAygCxAIhAkEAIQwMDgsgAygC8ANBAkcEQEEAIQZBvInHAEEGEPEf +IQJBAQwSCyADQcACaiENAkAgA0HYA2ooAgAiBRDnFiIGRQRAIA0gBRCRRgwBCyANQQI2AgAgDSAG +NgIECyADKALEAiEFIAMoAsACIg1BAkYNByADQcgEaiIGIBtB0AAQzU8aIANB8ANqEPFDIAMgBTYC +9AMgAyANNgLwAyASIAZB0AAQzU8aDAULIBNB/wFxQQJHBEBBACEGQcKJxwBBBhDxHyECQQEMEQsg +A0HAAmogA0HYA2oQnDkgAy0AwAINDSADLQDBAiETDAQLIBdB/wFxQQJHBEBBACEGQciJxwBBChDx +HyECQQEMEAsgA0HAAmogA0HYA2oQnDkgAy0AwAINDCADLQDBAiEXDAMLIB9QRQRAQQAhBkHSiccA +QRkQ8R8hAkEBDA8LIANBwAJqIANB2ANqENE4IAMoAsACDQsgAykDyAIhIEIBIR8MAgsgIVBFBEBB +ACEGQeuJxwBBExDxHyECQQEMDgsgA0HAAmogA0HYA2oQ2DggAygCwAINCiADKQPIAiEeQgEhIQwB +CyAdQgJSBEBBACEGQf6JxwBBHxDxHyECQQEMDQsgA0HAAmohAgJAIANB2ANqKAIAIgUQ5xYiBkUE +QCACIAUQiRMMAQsgAkICNwMAIAIgBjYCCAsgAykDwAIiHUICUgRAIAMoAswCIRkgAygCyAIhAgwB +CwsgAygCyAIMCQsgCUEARyEGIAkhDSAJRQ0EDAULQQAhBiAFIQJBAQwJCyADKALEAiECDA8LIAMo +AsQCIQIMDQsgAygCxAIhAgwLCyADQcACakGsiccAQQcQkU0gAygCwAIiDQRAIAMoAsQCIRAMAQsg +AygCxAIhAgwECyADIBA2AqAFIAMgDTYCnAUgDCESAkACQAJAAkAgDEUEQCADQcACakGziccAQQkQ +k00gAygCwAIiEkUNASADKALEAiEUCyADIBQ2AqgFIAMgEjYCpAUgAygC8ANBAkYiD0UNAUG8iccA +QQYQ8B8hAgwCCyADKALEAiECQQEhDwwCCyADQcACaiADQfADakHYABDNTxoCQCATQf8BcUECRwR/ +IBNBAXEFIANByARqQcKJxwBBBhD+TiADLQDIBA0BIAMtAMkECyETIB9QBEAgA0HIBGpB0onHAEEZ +ELlOIAMoAsgEDQEgAykD0AQhIAtCACAeICFQGyEeIBdBAXEhCSADQegBaiADQcACakHYABDNTxog +HUIAIB1CAlIbDAkLIAMoAswEIQIgA0HAAmoQ9zsLIANBpAVqEPo+CyADQZwFahD6PiAMRQwFC0EB +IQ9BACEGQQEMBAsgAygCxAILIQJBACEGC0EBCyEPQQELAkAgD0UNACADKALwA0ECRg0AIANB8ANq +EPc7CyAMQQBHcQRAIANB6ANqEPo+CyAJRSAGckUEQCADQeADahD6PgtCAgshHSAEIAQtACRBAWo6 +ACQgBBCNEyEMIAMgGTYCzAIgAyACNgLIAiADIB03A8ACIANB0AJqIANB6AFqQdgAEM1PGiADIAw2 +AtADIAMgCToAyQMgAyATOgDIAyADIB43A8ADIAMgIDcDuAMgAyAUNgK0AyADIBI2ArADIAMgEDYC +rAMgAyANNgKoAwJAIB1CAlIEQCAMDQEgA0EMaiADQcwCakGEARDNTxoMCQsgDEUNByADQdADahDf +HQwHCyADQcACahC5PkICIR0gDCECDAcLIANBGDYCwAIgBCADQcACahCAMQshAiALQgI3AwAgCyAC +NgIIDAcLIANBpAVqEPo+CyADQZwFahD6PgtCAgshHSAEIAQtACRBAWo6ACQgBBCfDCEFIAMgEjYC +zAIgAyACNgLIAiADIB03A8ACIANB0AJqIANBkAFqQdgAEM1PGiADIAU2AtADIAMgDToAyQMgAyAZ +OgDIAyADIB43A8ADIAMgEzYCvAMgAyAXNgK4AyADIBQ2ArQDIAMgEDYCsAMgAyAMNgKsAyADIAk2 +AqgDAkAgHUICUQRAIAUNAQwCCyAFRQRAIANBDGogA0HMAmpBhAEQzU8aDAMLIANBwAJqELk+QgIh +HSAFIQIMAgsgA0HQA2oQ3x0LQgIhHQsgHUICUQ0AIAtBDGogA0EMakGEARDNTxogCyACNgIIIAsg +HTcDAAwBCyAEIAIQvFIhAiALQgI3AwAgCyACNgIICyADQbAFaiQAAkACQCAOKQPAAUICUgRAIA5B +MGogDkHAAWpBkAEQzU8aIA5BCGoQ1SMiAg0BIBUgDkEwakGQARDNTxoMAgsgFSAOKALIATYCCCAV +QgI3AwAMAQsgFUICNwMAIBUgAjYCCCAOQTBqELk+CyAOQQhqEIg/IA5B0AJqJAAgGkEgaiQAIAhB +GGoQiD8gCEEwaiQAIBEpAxAiHUICUgRAIBEoAhghAiAWQQxqIBFBHGpBhAEQzU8aIBYgAjYCCCAW +IB03AwAMAQsgFkEMaiARKAIYNgIAIBZBBzoACCAWQgI3AwALIBEQlkEgEUGgAWokACAHKQNIIh1C +AlENAiAHQegCaiICIAdB0ABqQSQQzU8aIAdBhAJqIAdB9ABqQeQAEM1PGiAHIB03A9gBIAdB4AFq +IAJBJBDNTxogB0HIAGogB0HYAWoQ0Q0gBykDSCIdQgJRDQQgB0HzAmogB0HTAGotAAA6AAAgByAH +LwBROwDxAiAHLQBQIQIgBykCVCEeIAdBrANqIgkgB0HcAGpBLBDNTxogB0GEA2ogB0G0A2opAgA3 +AgAgB0GMA2ogB0G8A2opAgA3AgAgB0GcA2ogB0HMA2opAgA3AgAgB0GkA2ogB0HUA2ooAgA2AgAg +ByAHKQKsAzcC/AIgByAHKQLEAzcClAMgByAeNwL0AiAHIAI6APACIAcgHTcD6AIgB0HIAGogB0H4 +AmoQgRUgCSABKAIEQRBqELBKIAcoAqwDDQMgByAHKAKwAyICNgKYBCAHIAdBtANqLQAAOgCcBCAC +QQhqEPdDIAJBIGogB0HgAGopAwA3AwAgAkEYaiAHQdgAaikDADcDACACQRBqIAdB0ABqKQMANwMA +IAIgBykDSDcDCCAHQZgEahDzHSAHKQPoAiEdIAdBCGogB0HwAmpBOBDNTxoMBQsgB0HEAGoQlkEM +BAtBgKPHAEEjQfS7xwAQ5isACyAHQegCaiICIAdB0ABqQSQQzU8aIAdB4ANqIAJBJBDNTxoMAwsg +ByAHKAKwAzYCmAQgByAHQbQDai0AADoAnARBlKrHAEErIAdBmARqQfCqxwBBhLzHABCJGAALIAdB +5ANqIAcpA1A3AgAgB0EEOgDgAwwBCyABQawBahCWQSABQTBqEJZBIAFBxABqEOMwIAcgHTcD2AMg +B0HgA2ogB0EIakE4EM1PGgwCCyAHQgM3A9gDIAFBrAFqEJZBIAFBMGoQlkELIAFBxABqEOMwCyAA +IAdB2ANqQcAAEM1PGkEBIQILIAEgAjoA1AEgB0GgBGokAAvBDQIIfwF+IwBB8AFrIgMkACABAn8C +QAJAAkACQAJ/AkACQAJAAkACQAJAAkACQCABLQBIQQFrDgQEAAIHAQsACyADQdAAaiABKAIAQYS7 +xwBBDUEAEKomIAMoAlAiBEUNBCADKAJUIQUgA0GIAWoiBiADQdgAakEsEM1PGiABQQhqIAU2AgAg +ASAENgIEIAFBDGogBkEsEM1PGiADQdAAaiABQQRqQYS7xwBBDRD7ICADKAJQIgRFDQEgAUE8aiIF +IAMpAlQ3AgAgASAENgI4IwBBEGsiBCQAIAUoAgAQYSEFIARBCGoQgzggA0EgaiIGIAQoAggiBwR/ +IAQoAgwFIAULNgIEIAYgBzYCACAEQRBqJAAgA0HQAGogAygCICADKAIkEJQqIAMoAlBFBEAgAUEA +NgJMIAFB0ABqIAMoAlQiBTYCAAwICyABQcwAaiADQdAAakEkEM1PIgQoAgBFBEAgAUHQAGooAgAh +BQwICyABQfAAaiAEQSQQzU8aCyADQRhqIAFB8ABqIgQgAhCnHiADKAIYIgZBAkYNAiADKAIcIQUg +BBDBNSAGDQYgAUKAgICAwAA3AkwgASAFNgJEIAFB1ABqQQA2AgAgA0G4AWogAUHEAGoQ9z4gAUHg +AGogA0HAAWooAgA2AgAgASADKQK4ATcCWEEADAULIANBxAFqIAMoAlQQjSIMBwtBgKPHAEEjQZS7 +xwAQ5isACyAAQQ46AABBAwwHCyADQcQBaiADKAJUEI0iDAULQQELIQQDQAJAAkACQCAERQRAIANB +EGogAUHYAGoQ7CQgAygCECEEIAFBtAFqIAMoAhQiBTYCACABIAQ2ArABIAQNASADQcwAaiABQdQA +aigAADYAACADIAEpAEw3AEQgAUHEAGoQlkEgAUE8ahCWQSABQQRqEOMwIANBzAFqIANByABqKQAA +NwAAIANB3AFqIANBNGopAgA3AgAgA0HkAWogA0E8aigCADYCACADQQ06AMQBIAMgAykAQTcAxQEg +AyADKQIsNwLUAQwICyADQdAAaiABQYwBaiIEIAIQjyICfwJAIAMoAlBBA0cEQCADKQNQIQsgBBDB +NSALQiCIpyEEIAunIgVBAkYNBCAFDQEgA0ECOgCIAUECDAILIABBDjoAAEEEDAoLIAMgBDYC6AEg +A0HQAGohBiMAQTBrIgQkAAJ/IANB6AFqIgoiBRCYSkUEQCAEQRBqIAUQ4isgBEEkaiIFIAQoAhAg +BCgCFBDDPSAEQRhqIAUQu0ogBCgCHCEFIAQoAiAMAQsgBEEIakEEEO4fIAQoAgghByAEKAIMIgVB +7uqx4wY2AAAgBEEENgIgIAQgBTYCHCAEIAc2AhhBBAshCCMAQSBrIgckACAHQQhqIgkgBSAIEKc5 +IwBBMGsiBSQAIAUgCRDJLSAFQShqIAUQolICQCAFLQAoRQRAIAUtACkhCCAFENUjIglFBEAgBkEA +OgAAIAYgCDoAAQwCCyAGQQE6AAAgBiAJNgIEDAELIAYgBSgCLDYCBCAGQQE6AAALIAUQiD8gBUEw +aiQAIAdBIGokACAEQRhqEIg/IARBMGokACAKEJZBIAMgAykDUCILNwOIASALpwshBEEBIQUgBEEB +cSAEQf8BcSIEQQJGckUEQCADLQCJAUEARyEFCwJAAkAgBA4DAQABAAsgA0GIAWpBBHIQ2jQLIANB +CGogASgCZBAFIAFB5ABqAkAgAygCCCIERQ0AIAMgBCADKAIMEMotIANBiAFqIAMoAgAgAygCBBD4 +QSADKAKIAUGAgICAeEYNACADQdgAaiADQZABaigCADYCACADIAMpAogBNwNQIANB6AFqIANB0ABq +EPgZIAMpA+gBIgunIgdFDQAgAUHUAGooAgAiBCABKAJMRgRAIAFBzABqIAQQiDUgASgCVCEECyAB +QdAAaigCACAEQQxsaiIEIAU6AAggBCALQiCIPgIEIAQgBzYCACABIAEoAlRBAWo2AlQLEJZBDAIL +IAEgBTYCZCADQdAAaiABQThqIAFB5ABqEOIwIAMoAlBFBEAgAUEANgJoIAFB7ABqIAMoAlQiBDYC +AAwBCyABQegAaiADQdAAakEkEM1PIgQoAgAEQCABQYwBaiAEQSQQzU8aQQEhBAwDCyABQewAaigC +ACEECyADQcQBaiAEEI0iIAFB5ABqEJZBIAFBzABqEPZLIAFBxABqEJZBDAMLQQAhBAwACwALIANB +xAFqIAUQjSILIAFBPGoQlkELIAFBBGoQ4zALIAAgA0HEAWpBJBDNTxpBAQs6AEggA0HwAWokAAv8 +HwIPfwN+IwBB4AFrIgMkACABKAIAIgYgBigCgAEiBEEBajYCgAEgAyAGQYDuwwAQnTYgAygCBCEI +AkACQCAEIAMoAgAiAigCZE8EQAJAAkACQAJAAkAgAigCYCIFIARLDQAgBCAFRw0BIAJB0ABqKAIA +IAQgAigCaGtLDQAgAi0AcA0CIANBCGogAkEIaiIHQSgQzU8aIAJBIGpBBjYCACADKAIgQQZGDQQg +A0GQAWogA0EIakEoEM1PGgwHCyADQZABaiACIAQQrQQMBgsgAi0AcEUNAQsgA0EGNgKoAQwECyAD +QZABaiACEJ8DDAMLIANBCGoQhEMgAyACQUBrNgJkIAJBNGooAgAhBSACQTxqKAIAIQsgA0EkaiEJ +A0AgBSALRgRAIANBBjYCgAEMAwsgAiAFQShqIgY2AjQgA0HoAGogBUEoEM1PGiADKAKAAUEGRg0C +IANBkAFqIgogBUEoEM1PGiADQQhqIgUgCkEoEM1PGgJAAkAgA0HkAGogBRCUPUUEQCADQQhqEM1H +DAELIANB2AFqIANBGGopAwA3AwAgA0HQAWogA0EQaikDADcDACADQcABaiAJQQhqKAIANgIAIAMg +AykDCDcDyAEgAyAJKQIANwO4ASADKAIgIgVBBkcNAQsgBiEFDAELCyADQcgAaiADQdgBaikDACIR +NwMAIANBQGsgA0HQAWopAwAiEjcDACADQdwAaiIGIANBwAFqKAIANgIAIAMgAykDyAEiEzcDOCAD +IAMpA7gBNwJUIANBGGogETcDACADQRBqIBI3AwAgAyATNwMIIANB8ABqIAYoAgA2AgAgAyADKQJU +NwNoIAJB3ABqKAIAIQYgAgJ/IAJB2ABqKAIAIgkgAigCVEcEQCAJQQFqDAELIAIgBkEBaiIGNgJc +QQELNgJYIAIoAgAgAkEBNgIAIAIoAgQhCyACIAY2AgRBACAGIAtHG0UEQCADQaABaiADQRhqKQMA +NwMAIANBmAFqIANBEGopAwA3AwAgA0G0AWogA0HwAGooAgA2AgAgAyADKQMINwOQASADIAMpA2g3 +AqwBIAMgBTYCqAEMAwsgBxCEQyAHIAMpAwg3AwAgAiAFNgIgIAdBEGogA0EYaikDADcDACAHQQhq +IANBEGopAwA3AwAgAkEkaiADKQNoNwIAIAIgAigCYEEBajYCYCACQSxqIANB8ABqKAIANgIAIANB +BjYCqAEMAgsgA0EGNgKoAQwBCyADQegAahCEQyACQQE6AHAgA0EGNgJQIANBOGoQhEMgA0EGNgKo +AQtBByEGIAMoAqgBIgJBBkcEQCADQfgAaiADQaABaikDADcDACADQfAAaiADQZgBaikDADcDACAD +QUBrIANBtAFqKAIANgIAIAMgAykDkAE3A2ggAyADKQKsATcDOCACIQYgASgCACEFCyAIIAgoAgBB +AWo2AgACQCAGQQdGBEAgAEEQNgIADAELIANBGGogA0H4AGopAwA3AwAgA0EQaiADQfAAaikDADcD +ACADQSxqIANBQGsoAgA2AgAgAyADKQNoNwMIIAMgAykDODcCJCADIAQ2AjQgAyAFNgIwIAMgBjYC +ICMAQeACayICJAAgAkHYAGogA0EIakEwEM1PGiACQQA2AkggAkEANgJAIAJBADYCVCACQQA2Akwg +AkHsAWohDyACQaABaiELIAFBBGooAgAhEAJAAkADQCACQaACaiACQdgAakEoEM1PGiACQQY2AnAC +QCACKAK4AkEGRwRAIAJBiAFqIAJBoAJqQSgQzU8aDAELIAJBoAJqEKk+IAJBiAFqIQggAigCgAEh +BSACKAKEASEBIwBB4AFrIgQkACAEQQhqIAVBoO7DABCdNiAEKAIMIQoCQAJAIAEgBCgCCCIHKAJk +TwRAAkACQAJAAkACQCAHKAJgIgUgAUsNACABIAVHDQEgB0HQAGooAgAgASAHKAJoa0sNACAHLQBw +DQIgBEG4AWogB0EIaiIJQSgQzU8aIAdBIGpBBjYCACAEKALQAUEGRg0EIAggBEG4AWpBKBDNTxoM +BwsgCCAHIAEQrQQMBgsgBy0AcEUNAQsgCEEGNgIYDAQLIAggBxCfAwwDCyAEQbgBahCEQyAEIAdB +QGs2AjwgB0E0aigCACEBIAdBPGooAgAhDCAEQdQBaiEGA0AgASAMRgRAIARBBjYCWAwDCyAHIAFB +KGoiBTYCNCAEQUBrIAFBKBDNTxogBCgCWEEGRg0CIARB6ABqIg0gAUEoEM1PGiAEQbgBaiIBIA1B +KBDNTxoCQAJAIARBPGogARCUPUUEQCAEQbgBahDNRwwBCyAEQbABaiAEQcgBaikDADcDACAEQagB +aiAEQcABaikDADcDACAEQZgBaiAGQQhqKAIANgIAIAQgBCkDuAE3A6ABIAQgBikCADcDkAEgBCgC +0AEiAUEGRw0BCyAFIQEMAQsLIARBIGogBEGwAWopAwAiETcDACAEQRhqIARBqAFqKQMAIhI3AwAg +BEE0aiIFIARBmAFqKAIANgIAIAQgBCkDoAEiEzcDECAEIAQpA5ABNwIsIARByAFqIBE3AwAgBEHA +AWogEjcDACAEIBM3A7gBIARB8ABqIAUoAgA2AgAgBCAEKQIsNwNoIAdB3ABqKAIAIQYgBwJ/IAdB +2ABqKAIAIgUgBygCVEcEQCAFQQFqDAELIAcgBkEBaiIGNgJcQQELNgJYIAcoAgAgB0EBNgIAIAco +AgQhDCAHIAY2AgRBACAGIAxHG0UEQCAIIAQpA7gBNwMAIAggBCkDaDcCHCAIIAE2AhggCEEQaiAE +QcgBaikDADcDACAIQQhqIARBwAFqKQMANwMAIAhBJGogBEHwAGooAgA2AgAMAwsgCRCEQyAJIAQp +A7gBNwMAIAcgATYCICAIQQY2AhggCUEQaiAEQcgBaikDADcDACAJQQhqIARBwAFqKQMANwMAIAdB +JGogBCkDaDcCACAHIAcoAmBBAWo2AmAgB0EsaiAEQfAAaigCADYCAAwCCyAIQQY2AhgMAQsgBEFA +axCEQyAHQQE6AHAgBEEGNgIoIARBEGoQhEMgCEEGNgIYCyAKIAooAgBBAWo2AgAgBEHgAWokAAsg +AigCoAFBBkcEQCACQcABaiACQZgBaikDADcDACACQbgBaiACQZABaikDADcDACACIAIpA4gBNwOw +ASACQdABaiIBIAtBCGooAgA2AgAgAiALKQIANwPIASACQThqIAJBsAFqIgUQsUYgAkEwaiACKAI4 +IAIoAjwQwjAgAiACKQMwNwLYASACQShqIAUQskYgAkEgaiACKAIoIAIoAiwQwjAgAiACKQMgNwLg +ASAPIAJByAFqELIsIAJBATYC6AEgAkGYAmogASgCADYCACACIAIpA8gBNwOQAiACQaACaiEEIBAo +AgAhASACQZACaiEHIwBB0ABrIgUkACAFQRhqIgggASgCNEEsahCKLCAFQRBqIAEoAhAgAUEUaigC +ABDCMCAFKAIUIQogBSgCECEMIAEoAgghCSAFQQhqIAFBDGooAgAiBhDuHyAFKAIIIQ0gBSgCDCAJ +QQhqIAYQzU8hCSAFIAY2AiwgBSAJNgIoIAUgDTYCJCAFQThqIAEoAiQiBkHQAWopAAA3AwAgBUFA +ayAGQdgBaikAADcDACAFQcgAaiAGQeABaikAADcDACAFIAZByAFqKQAANwMwIAUgASgCACABKAIE +EMIwIAVBJGohCSAFQTBqIQYgBSgCACENIAUoAgQhDiMAQaABayIBJAAgASAKNgIUIAEgDDYCEAJA +AkACQAJAIAgoAgBBAUYEQCAHKAIADgUCAgICAwELIAFB7ABqQgE3AgAgAUEBNgJkIAFB6I/MADYC +YCABQbAFNgKYASABIAg2ApQBIAEgAUGUAWo2AmggAUHgAGpB8I/MABDLMAALIAFB7ABqQgA3AgAg +AUEBNgJkIAFBoI/MADYCYCABIAFBnAFqNgJoIAFB4ABqQbiOzAAQyzAACyABQShqIAo2AgAgAUHc +AGpBADYCACABQdAAaiAONgIAIAFBIGogCUEIaigCADYCACABQTRqIAZBCGopAAA3AgAgAUE8aiAG +QRBqKQAANwIAIAFBxABqIAZBGGopAAA3AgAgASAMNgIkIAFBADYCVCABIA02AkwgASAJKQIANwMY +IAEgBikAADcCLCABQQhqIAcgAUEYahD5HSAEIAEpAwg3AgQgBEEDNgIADAELIAFBkAFqQQA2AgAg +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 +/SkgAygCCCIGIAlB0AFsIgdqIQQgBiADKAIMIgJB0AFsaiEPAkACQAJAIAkgAiAJayICSwRAIAMg +EyAEIAJB0AFsIgIQzU8iDjYCOCACIA5qIQIgD0HQAWshBQNAIAIgDk0gBCAGTXINAiAFIARBsH5B +ACACQdABayAEQdABaxDYIkH/AXEiBUH/AUYiBxtqIgQgAkGwfkEAIAVB/wFHG2oiAiAHG0HQARDN +T0HQAWshBQwACwALIAMgByATIAYgBxDNTyICaiIONgI8A0AgAiAOTyAEIA9Pcg0CIAYgBCACIAQg +AhDYIkH/AXEiBUH/AUYiBxtB0AEQzU9B0AFqIQYgAiAFQf8BR0HQAWxqIQIgBCAHQdABbGohBAwA +CwALIAMgAjYCPCADIAQ2AkAMAQsgAyACNgI4IAMgBjYCQAsgA0E4ahCTPyALIA1LBEAgDCANQQN0 +aiICIBE2AgQgAiAJIBJqNgIAIAggC08NAyAMIAhBA3RqIgIgAkEIaiALIAhBf3NqQQN0EM5PGiAL +QQFrIQsMAQsLCyADQcQAakIANwIAIANBATYCPCADQcz7xQA2AjggA0HE9sUANgJAIANBOGpBiIPG +ABDLMAALIANBxABqQgA3AgAgA0EBNgI8IANBzPvFADYCOCADQcT2xQA2AkAgA0E4akHIg8YAEMsw +AAtBuIPGABCjSwALQaiDxgAQo0sAC0GYg8YAEKNLAAsgAUEBTQ0AIAAgAUEBENYLCyADQdAAaiQA +C6gKAQh/IwBBkAJrIgMkACABAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg +AS0ADUEBaw4EDwQBAwALIAFBADoADCABIAEoAgg2AgAgA0EwaiABKAIEKAIAQdwAaigCAEEIahDl +NSADKAIwIQQgAygCNCEFIANBKGogASgCABDbTSADKAIsIQYgAygCKCEHIANBIGogASgCABDUPiAD +QRhqIAQgByAGIAMoAiAgAygCJCAFKAIsEQoAIAMoAhghBCABQRRqIAMoAhwiBTYCACABIAQ2AhAM +AQsgAUEUaigCACEFIAEoAhAhBAsgA0E4aiAEIAIgBSgCDBEDACADLQCAASIGQQRGDQ0gAy0AOSEE +IAMtADghBSADQawBaiADQThqQQJyQSIQzU8aIANBiAFqIANB3ABqQSQQzU8aIANBhgFqIgcgA0GD +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 +AwAgA0HoA2pB4MnSACkDADcDACADQeADakHYydIAKQMANwMAIANCADcD+AMgA0HQydIAKQMANwPY +AyADQdgDaiIGIANB8AJqQQEQkT8gA0HoAGogBkEoEM1PGiADQUBrIgQgA0GwA2pBKBDNTxogA0HY +AWoiASAEQdAAEM1PGiADQagCahDxSiAEIAFBmAEQzU8aIANB0AFqLQAAIQEgAyAENgLYAyADIAY2 +AvACIANBkAFqIQYCQCABQT9HBEAgA0EYaiAGQcAAIAFB+MTSABDGNSADQRBqIAMoAhggAygCHEEB +QYjF0gAQ9DkgAygCECADKAIUIAVBAUGYxdIAEJI6IAFBAWohBAwBCyADQdgBaiAFQQFBwAAgAWsQ +zh0gA0HkAWooAgAhBSADKALgASEHIAMoAtwBIQQgAygC2AEhCCADQQhqIAZBwAAgAUG4xNIAEMY1 +IAMoAgggAygCDCAIIARByMTSABCSOiADQfACaiAGQQEQzEggBUE/cSEEIAVBwABPBEAgA0HwAmog +ByAFQQZ2EMxICyADIAZBwAAgBEHYxNIAEPQ5IAMoAgAgAygCBCAHIAVBQHFqIARB6MTSABCSOgsg +AyAEOgDQASADQdgBaiIBIANBQGtBmAEQzU8aIANB8ANqIgRCADcDACADQegDaiIGQgA3AwAgA0Hg +A2oiBUIANwMAIANCADcD2AMgA0GIA2pCADcDACADQYADakIANwMAIANB+AJqQgA3AwAgA0IANwPw +AiABIANBqAJqIgEgA0HwAmoiCBDWBCADQegCaiIHQQA6AAAgAUEgIAhBIEGYxdIAEJI6IAdBIDoA +ACADQYACaiABIANB2ANqENYEIANBKGoiASAFKQMANwMAIANBMGoiBSAGKQMANwMAIANBOGoiBiAE +KQMANwMAIAMgAykD2AM3AyACQAJAAkACQAJAIAIOBAQBAgMAC0GcyNIAQShBoMvSABDmKwALIABB +CGohAAwCCyAAQRBqIQAMAQsgAEEYaiEACyADQfABaiAGKQMANwMAIANB6AFqIAUpAwA3AwAgA0Hg +AWogASkDADcDACADIAMpAyA3A9gBIAAoAgAgACgCBCADQdgBakEgQezK0gAQkjogA0GABGokAA8F +IANB8AJqIARqIgEgAS0AAEE2czoAACAEQQFqIQQMAQsACwALIAJBBEGQy9IAEOIbAAvkEAIHfwJ+ +IwBB4AFrIgYkACAGQZABaiADEIEVIAQgBCgCACIIQQFqNgIAAkAgCEEASA0AIAIgAigCACIIQQFq +NgIAIAhBAEgNACAGQRhqIAZBkAFqIAQgAhDgISAEIAQoAgAiCEEBajYCACAIQQBIDQAgBkGQAWog +BkEYahCBFSAGKAI4IgggCCgCACIHQQFqNgIAIAdBAEgNACAGKAI8IgcgBygCACIJQQFqNgIAIAlB +AEgNACAGQdgBaiAGQagBaikDADcDACAGQdABaiAGQaABaikDADcDACAGQcgBaiAGQZgBaikDADcD +ACAGIAYpA5ABNwPAASAGKAJAIgkgCSgCACIKQQFqNgIAIApBAEgNACAGKAJEIgogCigCACILQQFq +NgIAIAtBAEgNACAGQagBaiAGQdgBaikDADcDACAGQaABaiAGQdABaikDADcDACAGQZgBaiAGQcgB +aikDADcDACAGIAYpA8ABNwOQASAGIAo2ArwBIAYgCTYCuAEgBiAHNgK0ASAGIAg2ArABIAMgBCAC +IAZBkAFqEOELIgMgAygCACICQQFqNgIAIAJBAEgNACADIAMoAgAiAkEBajYCACACQQBIBEAACxD+ +NiEIIAZByABqIgJBDGoQ/jY2AgAgAkEIaiAINgIAIAIgAzYCBCACIAM2AgAgAyADKAIAIgJBAWo2 +AgAgAkEASA0AIwBBQGoiCCQAIAhBARCnGiAIQQA2AhgjAEHgAGsiAiQAIwBBEGsiByQAIAcQ+DMg +BykDACENIAcpAwghDiACQQEQpxogAkHIAGpBADYCACACQUBrQoCAgIDAADcDACACQThqQgA3AwAg +AkEwaiAONwMAIAJBKGogDTcDACACQSBqQcDJzQApAwA3AwAgAkG4yc0AKQMANwMYIAdBEGokACAC +QdAAaiIHQQA7AQQgB0EANgIAIAdBCGpCADcCAEHoAEEIEKcuIgdCgYCAgBA3AwAgB0EIaiACQeAA +EM1PGiACQeAAaiQAEKcwIQpByABBCBCnLiIJQoGAgIAQNwMAIAlBCGogCEHAABDNTxogBkHAAWoi +AiAJNgIMIAIgBzYCCCACIAM2AgQgAiAKNgIAIAhBQGskAEEcQQQQqzkiCEEANgAYIAhBADYAECAI +QQA6AAwgCEEANgIIIAhCgYCAgBA3AgAgAyADKAIAIgJBAWo2AgAgAkEASA0AIAYoAsABIgIgAigC +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 +AUHwDGoQ7j8MAQsgAUGAC2oQjD4LIAFB3AxqEIg/IAFB0AxqEPtAIAFB6ApqENwiCyABQdgJahDE +KQsgAUG5CmpBADoAACABQboKai0AAEUNByABQcAKahD7QAwHCyABQeAIaiICEOgqIAIQ2SIMCAsg +AUHsB2oQ8D8MCAsgAUGoBGoQ2j8LIAFB4AJqKAIAQQJGDQogAUGAAmoQxDsMCgsgAUGwBGoQxDsM +CAsgAUGoBGoQ8SYMCAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCUCIBLQDLAUEDaw4FAAMB +BAILCyABQdABahCiHgwKCwJAAkAgAUGYCWotAAAOBAEICAAICwJAAkAgAUGoCGotAAAOBAAJCQEJ +CyABQfwHahDPMgwICwJAAkACQCABQawCai0AAA4FAAoKAgEKCyABQfgBahDPMgwJCwJAAkACQCAB +LQCfBA4FCQoKAAEKCyABQawEahDsLAwBCwJAAkACQAJAAkAgAUHwBmotAAAOBQAEBAECBAsgAUHE +BmoQzzIgAUG4BmoQ+0AMAwsgAUH4BmoQ7j8MAQsgAUGoBGoQjD4LIAFBpAZqEIg/IAFBmAZqEPtA +IAFB7AVqEM8yCyABQYgDahDEKQsgAUGcBGpBADoAACABLQCdBEUNBSABQaAEahD7QAwFCyABQbAC +aiICEOAqIAIQ2SIMBgsgAUHsCGoQzzIMBgsgAUH8AWoQqTgMBgsgAUHQAWoQ8SYMBgsgAUHQAWoQ +2j8MBAsgAUEAOgCdBCABLQCeBEUNAQsgAUHwA2oQzzILIAEtAK0CBEAgAUHYAWoQ2SILIAFBADoA +rQILIAFBoAlqEMQ7IAFBADoAyAELIAEoAmBBAkYNACABLQDJAUUNACABEMQ7CyABQQA6AMkBIAEt +AMoBRQ0AIAFBkAFqEM8yCwwKCyABQQA6ALoKIAFBuwpqLQAARQ0BCyABQeAIahDcIgsgAUHZCGot +AAAEQCABQbAIahDZIgsgAUEAOgDZCAsgAUGcB2oLEOESCyABQbAFahDEOyABQZ0OakEAOgAACyAB +QaAEai0AAARAIAFBgANqEMQ7CyABQQA6AKAECyABQbQBahDhEgsgAUHkAGpBADoAAAsgAS0AREUN +ACABENkiCyABEJgEIABBHGoQggUgAEEQahC4SwsLrgoBAn8CQAJAAkACQAJAAkACQAJ/AkACQAJA +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 +ATYC2AEMAwsgAUHAAWogBUEkEM1PGgsgA0GgAWogAUHAAWoiBSACEI8iQQMhBAJAAkACQAJAAkAg +AygCoAFBA0cEQCADKQOgASEHIAUQwTUgB0IgiKchAkEAIQQgB6cOAwQBAgELIABBAjYCAAwJCyAD +QcgAaiABKAIUQThqIAIQhgkgAygCSEEBaw4CAwIBCyADQdgBakEEciACEI0iIANBATYC2AEgAUEY +aiEEDAQLIANBxABqIANB4ABqKAIANgIAIANBPGogA0HYAGopAwA3AgAgAyADKQNQNwI0IANB5ABq +KAIAIQQLIANBJGogA0E8aikCACIHNwIAIANBLGogA0HEAGooAgAiAjYCACADQQxqIAc3AgAgA0EU +aiACNgIAIAMgAykCNCIHNwIcIAMgBzcCBCABQRhqEJZBIAFBxABqEJZBIAFB2ABqEOMwIANB5AFq +IANBCGopAgA3AgAgA0HsAWogA0EQaikCADcCACADQQA2AtgBIAMgBDYC9AEgAyADKQIANwLcAQwE +CyADQUBrIANB3ABqKQIAIgc3AwAgA0E4aiADQdQAaikCACIINwMAIANBIGogCDcDACADQShqIAc3 +AwAgA0HsAWogBzcCACADQeQBaiAINwIAIAMgAykCTCIHNwMYIAMgBzcC3AEgA0HkAGooAgAhAiAD +QfgBaiADQegAaikDADcDACADQfQBaiACNgIAIANBATYC2AEgAUEYaiEEDAELQYCjxwBBI0GQwMcA +EOYrAAsgBBCWQSABQcQAaiEECyAEEJZBIAFB2ABqEOMwCyAAIANB2AFqQSgQzU8aQQEhBAsgASAE +OgDkASADQYACaiQAC/0GAg5/Gn4jAEHQAGsiAyQAIAMgASgCDCIErSIiIAIoAhgiBa0iKn4gASgC +BCIGrSIjIAIoAiAiB60iH358IAEoAhQiCK0iJCACKAIQIgmtIhF+fCABKAIcIgqtIiUgAigCCCIL +rSISfnwgATUCACITIAIoAiQiDK1+fCACNQIAIhQgASgCJCINrSImfnwgATUCCCIVIAIoAhwiDq0i +HX58IAE1AhAiFiACKAIUIg+tIhl+fCABNQIYIhcgAigCDCIQrSIafnwgATUCICIYIAIoAgQiAa0i +G358NwNIIAMgESAifiAjICp+fCASICR+fCAmIAdBE2ytIh5+fCATIB1+fCAUICV+fCAVIBl+fCAW +IBp+fCAXIBt+fCAYIAxBE2ytIhx+fDcDOCADIBIgIn4gESAjfnwgHiAlfnwgJiAFQRNsrSIhfnwg +EyAZfnwgFCAkfnwgFSAafnwgFiAbfnwgFyAcfnwgGCAOQRNsrSIgfnw3AyggAyAEQQF0rSInIBl+ +IB0gBkEBdK0iHX58IAhBAXStIiggGn58IApBAXStIikgG358IBMgH358IA1BAXStIh8gHH58IBUg +Kn58IBEgFn58IBIgF358IBQgGH58NwNAIAMgGiAnfiAZIB1+fCAbICh+fCAcICl+fCATICp+fCAf +ICB+fCARIBV+fCASIBZ+fCAUIBd+fCAYIB5+fDcDMCADIBsgJ34gGiAdfnwgHCAofnwgICApfnwg +ESATfnwgHyAPQRNsrSIRfnwgEiAVfnwgFCAWfnwgFyAefnwgGCAhfnw3AyAgAyAeICR+IBIgI358 +ICEgJX58ICYgCUETbK0iGX58IBMgGn58IBQgIn58IBUgG358IBYgHH58IBcgIH58IBEgGH58NwMY +IAMgHCAnfiAbIB1+fCAgICh+fCARICl+fCASIBN+fCAfIBBBE2ytIhJ+fCAUIBV+fCAWIB5+fCAX +ICF+fCAYIBl+fDcDECADICEgJH4gHiAifnwgGSAlfnwgJiALQRNsrSIafnwgEyAbfnwgFCAjfnwg +FSAcfnwgFiAgfnwgESAXfnwgEiAYfnw3AwggAyAgICd+IBwgHX58IBEgKH58IBIgKX58IB8gAUET +bK1+fCATIBR+fCAVIB5+fCAWICF+fCAXIBl+fCAYIBp+fDcDACAAIAMQsAkgA0HQAGokAAuXCAIU +fwF+AkACQAJ/AkACQAJAIAEoAgBFBEAgAUEOai0AAA0BIAFBDGoiAiACLQAAIgVBAXM6AAAgASgC +MCEDIAFBNGooAgAiAiABKAIEIgRFDQQaAkAgAiAETQRAIAIgBEcNAQwFCyADIARqLAAAQb9/Sg0E +CyADIAIgBCACQbCO2gAQpUcACyABQRxqKAIAIgUgAUE0aigCACIERg0BIAEoAjAhCiAEIQMCQCAF +IAFBPGooAgAiCEEBayIQaiICIARPDQAgASgCOCENIAUgCmohESAFIAhqIQcgBSABQRBqKAIAIgtr +IRIgAUEYaigCACIDIAVqIQ4gCCADayETIAEpAwghFiABQSRqKAIAIg9Bf0YhCSAPIQYgBSEDA0Ag +AyAFRw0BAkACQCAWIAIgCmoxAACIp0EBcUUEQCABIAc2AhxBACECIAchAyAJDQIMAQsgCyALIAYg +BiALSRsgCRsiAyAIIAMgCEsbIQwgAyECAkACQAJAA0AgAiAMRgRAQQAgBiAJGyEMIAshAgNAIAIg +DE0EQCABIAc2AhwgD0F/RwRAIAFBADYCJAsgACAHNgIIIAAgBTYCBCAAQQA2AgAPCyACQQFrIgIg +CE8NBSACIAVqIgMgBE8NAyACIA1qLQAAIAMgCmotAABGDQALIAEgDjYCHCATIQIgDiEDIAlFDQUM +BgsgAiAFaiAETw0CIAIgEWohFCACIA1qIAJBAWohAi0AACAULQAARg0ACyACIBJqIQNBACECIAlF +DQMMBAsgAyAEQYyM2gAQ4hsACyAEIAMgBWoiACAAIARJGyAEQZyM2gAQ4hsACyACIAhB/IvaABDi +GwALIAEgAjYCJCACIQYLIAMgEGoiAiAESQ0ACyAEIQMLQQAhBgJAIANFDQAgAyECA0ACQCACIARP +BEAgAiAERw0BIAQhBgwDCyACIApqLAAAQb9/TA0AIAIhBgwCCyACQQFqIgINAAsLIAAgBjYCCCAA +IAU2AgQgAEEBNgIAIAEgBiADIAMgBkkbNgIcDwsgAEECNgIADwsgAEECNgIADwsgAiAEawsEQAJ/ +IAMgBGoiAywAACICQQBOBEAgAkH/AXEMAQsgAy0AAUE/cSEHIAJBH3EhBiAGQQZ0IAdyIAJBX00N +ABogAy0AAkE/cSAHQQZ0ciEHIAcgBkEMdHIgAkFwSQ0AGiAGQRJ0QYCA8ABxIAMtAANBP3EgB0EG +dHJyCyECIAUNAiACQYCAxABGDQEgACAENgIEIABBATYCACAAAn9BASACQYABSQ0AGkECIAJBgBBJ +DQAaQQNBBCACQYCABEkbCyAEaiIANgIIIAEgADYCBA8LIAUNAQsgAEECNgIAIAFBAToADg8LIAAg +BDYCCCAAIAQ2AgQgAEEANgIAC78IAQF/IAAoAgBBn4CAgHhGBEAgACgCBEEPRgRAIABBCGoQgT8L +IABBEGoQgT8gAEEYahCuGQ8LIABBoAFqEIE/IABBqAFqEIE/AkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEQIAAoAgBB9f///wdqIgEgAUEUTxsOEwECAwQFBgcI +CQoLFQwNDg8QERIACyAAQQRqEIE/DwsgAEEQahC8RyAAQShqEIE/IABBMGoQp0UMEgsgAEEgahCB +PyAAQShqEKdFIABBCGoQvEcgAEFAaxCeQCAAQThqEKdFDwsgAEEcahCBPyAAQSRqEKdFIABBBGoQ +nkAgAEEQaigCAEEHRw0PIABBFGoQgT8PCyAAQRxqEIE/IABBJGoQp0UgAEEQaiIBEJkuIAEQoD0M +DwsgAEEgahCBPyAAQShqEIE/IABBOGoQnkAgAEEIahC8Rw8LIABBEGoQgT8gAEEYahCBPwwNCyAA +QRBqEIE/IABBGGoQgT8gAEEgahCBPwwMCyAAQRBqEIE/IABBBGoQqksgAEEYahCBPw8LIABBNGoQ +gT8CQAJAAkACQCAAKAIEIgFB/////wdrQQAgAUGCgICAeEgbDgIBAgALIABBCGoQiD8gAEEUahDM +GQwCCyAAQQRqIgEQzSwgARChPSAAQRBqIgEQ8C4gARCdPSAAQRxqIgEQziwgARChPSAAQShqEKtL +DAELIABBCGoQiD8LIABBPGoQgT8PCyAAQRBqEIg/IAAoAgRBC08EQCAAQQhqEIE/CyAAQRxqEIE/ +DwsCQCAAKAIEIgFBA0cEQCABQQJPBEAgAEEIahCBPwsgAEE0aiIBKAIABEAgARCBPwsgAEEQaigC +AEEDRgRAIABBFGoQgT8LIABBHGoQq0sgAEEoahCIPwwBCyAAQQhqEIg/IABBFGoQzBkLIABBPGoQ +gT8PCyAAQRhqEMcZDAgLIABBBGoQgT8PCyAAQQRqENVHDwsCfyAAQRxqIgEoAgBBgICAgHhGBEAg +AEEsahDJGSAAQSBqDAELIAEQiD8gAEEoahCIPyAAQUBrEIE/IABBNGoLEIg/AkACQAJAIAAoAgQO +BwkJCQECAAYACyAAQQhqEMwZDwsgAEEIahDVRw8LIABBCGoQzkcPCyAAEJIFAkAgACgCPCIBQY+A +gIB4Rg0AAkACQAJAAkBBASABQfX///8HaiIBIAFBBE8bDgMBAgMACyAAQUBrEMwZDAMLIABBQGsQ +gT8MAgsgAEGIAWoQgT8gAEE8ahDPRwwBCyAAQUBrEM5HCyAAQZABahCgQg8LIABBEGoiASgCAARA +IAEQgT8LIABBBGoQ+0APCyAAQeAAahCIPyAAQQhqEKU+IABB2ABqEIE/Cw8LIABBBGoQnkAPCyAA +QQRqEIg/IABBEGoQgT8PCyAAQQhqEIE/C80IAgp/An4jAEGABGsiAiQAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkAgASgCAEEBaw4LAQIDBAUGBwgJCgsACyAAQQRqIAFBqAFqKAIAQQhqEJ8xIABB +ADsBAAwLCyAAQQRqIAFBqAFqKAIAQThqEJ8xIABBADsBAAwKCyAAQQRqIAFBqAFqKAIAQQhqENYk +IABBATsBAAwJCyAAQQRqIAFBqAFqKAIAQQhqENYkIABBATsBAAwICyAAQQRqIAFBqAFqKAIAQQhq +ENYkIABBATsBAAwHCyAAQQRqIAFBqAFqKAIAQQhqENYkIABBATsBAAwGCyABQQhqIQQgARCMDgRA +IAJBkANqIgEgBBCUEiACQYgDaiAEEJUSIAJBmAJqIAFB8AAQzU8aIAIoApgCIQMgAkEoaiACQZwC +akH0ABDNTxoLIABBAmogBBCWEiAAIAM2AgggAEEMaiACQShqQfQAEM1PGiAAQQI7AQAMBQsgAEED +OwEADAQLIAFBCGohBCABEIwOBEAgAkGQA2oiASAEEJcSIAJBiANqIAQQmBIgAkGYAmogAUHwABDN +TxogAigCmAIhAyACQZwBaiACQZwCakH0ABDNTxoLIABBAmogBBCZEiAAIAM2AgggAEEMaiACQZwB +akH0ABDNTxogAEECOwEADAMLIABBAzsBAAwCCyACQSBqIAFBCGoiBhDfLiACIAIoAiQiBDYClAIg +AiACKAIgIgU2ApACQQAhASACQRhqIAQQuhYgAigCGCIIIARB/////wFxIgMgAyAISxshAyAFQQhq +IQcgAigCHCEJA0AgAwRAIAJBmAJqIAEgB2oQghUgASAJaiIFQRBqIAJBqAJqKQMANwMAIAVBCGog +AkGgAmopAwA3AwAgBSACKQOYAjcDACADQQFrIQMgAUEYaiEBDAELCyACQRBqIAYQ4C4gAiACKAIU +IgU2ApQDIAIgAigCECIGNgKQA0EAIQEgAkEIaiAFELgWIAIoAggiByAFQf////8BcSIDIAMgB0sb +IQMgAigCDCEKA0AgAwRAIAJBmAJqIAEgBmpBCGoQkBIgASAKaiILQRBqIAJBqAJqKQMANwIAIAtB +CGogAkGgAmopAwA3AgAgCyACKQOYAjcCACADQQFrIQMgAUEYaiEBDAELCyAAIAc2AhAgACAINgIE +IABBBDsBACAAQRhqIAU2AgAgAEEUaiAKNgIAIABBDGogBDYCACAAQQhqIAk2AgAgBiAGKAIAIgBB +AWs2AgAgAEEBRgRAIAJBkANqELsdCyACQZACahC7OQwBCyACQZgCaiABQagBaigCAEEIahDRPSAC +QZgDaiACQaACaigCACIBNgIAIAIgAikCmAIiDDcDkAMgAikCpAIhDSACLQCsAiEDIABBDGogATYC +ACAAIAw3AgQgAEEYaiADOgAAIABBEGogDTcCACAAQQU7AQALIAJBgARqJAALoAkBCX8jAEHABGsi +ByQAIAcgBjYCMCAHIAU2AiwgB0EgaiADKALAAUEIahD0NSAHQZgCaiABQTBqIg8gA0H4AGooAgAi +CEEsaigCACAIQTBqKAIAIAcoAiAgBygCJBD/GgJAIAcoAqgDQQJGBEAgB0GYAmoiCSADEKoNIA8g +CRCBAwwBCyAHQZgCahDnNwJAQcST2wAoAgBBAUsNAEHg+9oAEPs+IgpB/wFxRQ0AQeD72gAoAgAg +ChD1LkUNAEHg+9oAKAIAIgpBKGooAgAhDSAKQSRqKAIAIQ4gCigCHCEIIAcgCkEgaigCACIMBH8g +B0EANgKoAiAHIA02AqQCIAcgDjYCoAIgByAMNgKcAkEBIQsgCAVBAAs2ApgCIAdBQGsgB0GYAmpB +oL/KABCsLSAHQYgBakIANwIAIAdBATYCgAEgB0Hov8oANgJ8IAdBvKHKADYChAEgCkEcaiEKIAcg +CyAMTwR/QQAFIAcgDTYCpAIgByAONgKgAiAHIAw2ApwCIAcgCzYCqAIgC0EBaiELIAgLNgKYAiAH +QdQAaiAHQZgCakGgv8oAEKwtIAcgASkDADcCbCAHIAdB7ABqNgJoIAcgCyAMSQR/IAcgCzYCqAIg +ByANNgKkAiAHIA42AqACIAcgDDYCnAIgCAVBAAs2ApgCIAdB+AFqIgkgB0GYAmoiCEGgv8oAEKwt +IAdBGGogASgCNEEIahD0NSAHQbgCakHcusoANgIAIAdBrAJqQcy6ygA2AgAgB0G0AmogB0H0AGo2 +AgAgB0GoAmogB0HoAGo2AgAgB0HMqsoANgKgAiAHIAcpAxg3AnQgByAJNgKwAiAHIAdB1ABqNgKk +AiAHIAdB/ABqNgKcAiAHIAdBQGs2ApgCIAdBNGoiCSAKIAgQ4UFB4PvaACgCACAJEMQ0CyAHQaAC +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 +QYGAgIB4NgIAIAEgBS0ABDoABAwBCyABIAY2AgggASAENgIEIAFBj4CAgHg2AgALIAUQix4LIANB +QGskACABKAIAQZaAgIB4RwRAIAggASkDADcDACAIQQhqIAFBCGopAwA3AwAMAQsgCCABKAIENgIE +IAhBl4CAgHg2AgALIAFB0ABqJAAgAigCvAEhASACKAK4ASIDQZeAgIB4Rg0BAkACQCADQev///8H +ag4CAAQBCyAHQQNHBEBBACEDQdDSwwBBCRDxHyEBDAULIwBBIGsiAyQAIAJBCGoiASkDACEOIAFB +lYCAgHg2AgAgA0EIaiABQQhqKQMANwMAIAMgDjcDACADQRBqIgQgAxD/MSACQbgBaiEFIwBBIGsi +ASQAIAFBCGogBBCdUgJAIAEoAggiBEGBgICAeEcEQCABIAEpAgw3AhggASAENgIUIAUgAUEUahD3 +FQwBCyABKAIMIQQgBUEDNgIAIAUgBDYCBAsgAUEgaiQAIANBIGokACACKAK8ASEBIAIoArgBIgdB +A0cEQCACKALAASEDIAJB6ABqEK9CIAIgAzYCcCACIAE2AmwgAiAHNgJoDAILQQAhA0EDIQcMBAsg +AiACKQPAATcDiAEgAiABNgKEASACIAM2AoABIwBBEGsiASQAIAJBCGoiAykDACEOIANBlYCAgHg2 +AgAgAUEIaiADQQhqKQMANwMAIAEgDjcDACACQZABaiABEP8xIAFBEGokACACKAKUASEBIAIoApAB +IgNBlYCAgHhHBEAgAkHAAWogAkGIAWopAwA3AwAgAiACKQOAATcDuAEgAiACKQOYATcD0AEgAiAB +NgLMASACIAM2AsgBIAJB9ABqIAJBuAFqENcaDAELCyACQYABahCLHgtBACEDDAELAkAgB0EDRyID +RQRAIAJBuAFqQdDSwwAQjk0gAigCuAEiAUEDRwRAIAIgAikCvAE3ApQBIAIgATYCkAEMAgsgAigC +vAEhAQwCCyACQZgBaiACQfAAaigCADYCACACIAIpAmg3A5ABCyACQbgBaiACQfQAahDcUCACLQC4 +ASIBQQZHDQEgAigCvAEhASACQZABahC/PwsgAkH0AGoQrEsgB0EDRiADcg0BIAJB6ABqEL8/DAEL +IAJB4ABqIgQgAkHIAWopAwA3AwAgAiACKQPAATcDWCACLQC7AUEYdCACLwC5AUEIdHIgAXIhAyAC +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 +BSAGQZDC1gAQ4hsAC8sIAgd/AX4jAEGQBGsiAyQAIAMgAjYCJCADIAE2AiAgAyAAKAIEIgg2AsQB +IAMgACgCACIJNgLAAQJAIANBIGogA0HAAWoQl0EEQAJAQcST2wAoAgANAEHI+9oAEPs+IgFB/wFx +RQ0AQcj72gAoAgAgARD1LkUNAEHI+9oAKAIAIgJBKGooAgAhBSACQSRqKAIAIQcgAigCHCEGIAMg +AkEgaigCACIBBH8gA0EANgLQASADIAU2AswBIAMgBzYCyAEgAyABNgLEAUEBIQQgBgVBAAs2AsAB +IANBNGogA0HAAWpBjL7KABCsLSADQfQDakIANwIAIANBATYC7AMgA0HEvsoANgLoAyADQbyhygA2 +AvADIAMgASAETQR/QQAFIAMgBTYCzAEgAyAHNgLIASADIAE2AsQBIAMgBDYC0AEgBEEBaiEEIAYL +NgLAASADQcgAaiADQcABakGMvsoAEKwtIAMgCDYCZCADIAk2AmAgAyADQeAAajYCXCADIAEgBEsE +fyADIAQ2AtABIAMgBTYCzAEgAyAHNgLIASADIAE2AsQBIAYFQQALNgLAASADQZgBaiIBIANBwAFq +IgRBjL7KABCsLSADQRhqIAAoAjRBCGoQ9DUgA0HgAWpB3LrKADYCACADQdQBakHMusoANgIAIANB +3AFqIANB6ABqNgIAIANB0AFqIANB3ABqNgIAIANBzKrKADYCyAEgAyADKQMYNwJoIAMgATYC2AEg +AyADQcgAajYCzAEgAyADQegDajYCxAEgAyADQTRqNgLAASADQShqIgEgAkEcaiAEEOFBQcj72gAo +AgAgARDENAsgA0EQaiAAQQhqEMwXIAMgAy0AFDoATCADIAMoAhAiADYCSEEBQQMgACkDCEICfSIK +pyAKQgdaGyIBdEHnAHFFBEAgAEEIaiECAkAgAUEDRgRAIANBwAFqIgYgAhCUBSADKALgAyEBIANB +mAFqIANBsANqQSgQzU8aIANB3ANqKAIAIQUgAygC2AMhByADKALkAyEEIAYQ/TYMAQsgAEHIAGoo +AgAiASABKAIAIgRBAWo2AgAgBEEASA0DIANB6ANqIABBIGoQixQgACgCTCIEIAQoAgAiBUEBajYC +ACAFQQBIDQMgA0EIaiAAQRBqEPEuIAMoAgghByADKAIMIQUgAyAAQRhqEPEuIAMgATYC+AEgAykD +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 +CQsgA0GsAWogAygCBBCNIgwECyADQawBaiADKAJQEI0iDAULIABBDjoAAEEEDAYLIANBrAFqIAQQ +jSIgAUEEahCWQQwBCyADQawBaiAEEI0iCyABQcgAahCWQQsgAS0AfEUNACABQRBqEOMwCyABQQA6 +AHwLIAAgA0GsAWpBJBDNTxpBAQs6AH0gA0HQAWokAAuDCAIHfwJ+IwBBkAJrIgMkACADQdgAaiAC +KAIIIgJBCGoiBRCjBwJAAn8gAy0AWCIEQQZHBEAgA0GAAWogA0HoAGopAwA3AwAgAyADLQBbOgBz +IAMgAy8AWTsAcSADIAMpA2A3A3ggAyADKAJcNgJ0IAMgBDoAcCADQcwBaiABIANB8ABqELkPAkAg +Ay0AzAFFBEAgA0GOAWogAy0AzwE6AAAgA0HWAGoiBCADQdMBai0AADoAACADQcgAaiIGIANB6AFq +KQIANwMAIANB0ABqIgcgA0HwAWooAgA2AgAgAyADLwDNATsBjAEgAyADQdEBai8AADsBVCADIANB +4AFqKQIANwNAIANB2AFqKQIAIQogA0HUAWooAgAhCCADQdABai0AACEJIANBywFqIANBjAJqLQAA +OgAAIANBwwFqIANBhAJqKQIANwAAIANBuwFqIANB/AFqKQIANwAAIANBkgFqIAQtAAA6AAAgA0Gn +AWogBikDADcAACADQa8BaiAHKAIANgAAIAMgA0H0AWopAgA3ALMBIAMgCToAjwEgAyAINgCTASAD +IAo3AJcBIAMgAy8BVDsBkAEgAyADKQNANwCfASADQQA2AkggA0EANgJAIANBIGogASgCxAEiBEEU +aigCACAEQRhqKAIAEMIwIAMoAiQhBCADKAIgIQYgA0EANgLMASADQdgAaiIHIAFBBGoQ8VEgA0EY +aiADKAJcIAMoAmAQrEggA0EQaiADQcwBaiIBIAMoAhggAygCHBDFDCABIANBQGsgBiAEIAMoAhAg +AygCFCADQYwBahCtIiABELI3IAcQiD8gAygCQCEBIAMpAkQhCgwBCyADQcgAaiADQegBaikCACIK +NwMAIANBPmogA0HTAWotAAA6AAAgA0EwaiAKNwMAIANBOGogA0HwAWooAgA2AgAgAyADQeABaikC +ACIKNwNAIAMgA0HRAWovAAA7ATwgAyAKNwMoIANB2AFqKQIAIQogA0HUAWooAgAiASADLQDQASIE +QRZHDQIaCyADQQhqIAJBFGoQ8S4gAykDCCELIANBzAFqIgQgBRCWECADQeABaiACQRxqEMEvIANB +7AFqIgUgAkEoahDALyADQfgBaiACQTRqEOEvIAMgCzcC2AEgBRCaGSADQfABaiAKNwIAIAMgATYC +7AEgACAEQTgQzU8aDAILQRUhBCADKAJcCyEBIABBBWogAy8BPDsAACAAQRRqIAMpAyg3AgAgAEEH +aiADQT5qLQAAOgAAIABBHGogA0EwaikDADcCACAAQSRqIANBOGooAgA2AgAgAEEMaiAKNwIAIABB +CGogATYCACAAIAQ6AAQgAEGAgICAeDYCAAsgA0GQAmokAAuzbAIbfwN+IwBB8AFrIgwkAAJAAkAC +QAJAAkACQAJAAkAgAS0A3AFBAWsOAwMAAgELAAsgASABKAIAIgU2AgwgDEGYAWogBUGDsccAQQpB +ABCqJgJAAkAgDCgCmAFFBEAgAUEANgKAASABQYQBaiAMKAKcASICNgIADAELIAFBgAFqIAxBmAFq +QTQQzU8iBSgCAA0BIAFBhAFqKAIAIQILIAxBzAFqIAIQjSIMBQsgDEGMAWogAUHMAGogBUE0EM1P +QYOxxwBBChD7IAJAAkAgDCgCjAFFBEAgAUEANgJAIAFBxABqIAwoApABIgI2AgAMAQsgAUFAayIF +IAwpAowBIh43AgAgBUEIaiIGIAxBlAFqKAIANgIAIB6nDQEgAUHEAGooAgAhAgsgDEHMAWogAhCN +IgwECyABIAUpAgA3AjQgAUE8aiAGKAIANgIAIAEgASgCDEE4akGDsccAQQogASgCBCABQQhqKAIA +EP0wNgK0ASAMQegAaiABQTRqIAFBtAFqEOIwAkACQCAMKAJoRQRAIAFBADYCECABQRRqIAwoAmwi +AjYCAAwBCyABQRBqIAxB6ABqQSQQzU8iBSgCAA0BIAFBFGooAgAhAgsgDEHMAWogAhCNIgwDCyAB +QbgBaiAFQSQQzU8aCyAMQZgBaiABQbgBaiIFIAIQjyJBAyECAkACQAJAAkACQCAMKAKYAUEDRwRA +IAwpA5gBIR4gBRDBNSAeQiCIpyEFIB6nIgIOAwQBAgELIABBDjoAAAwJCyAMQcQAaiEXIAEoAgxB +OGohAiMAQTBrIhMkACATIAU2AgQCQCACKAIAIgIEQCATQRRqIBNBBGoQshQgEygCFCIFQYCAgIB4 +RwRAIBMgEygCHCIGNgIQIBMgEygCGCIJNgIMIBMgBTYCCCATQRRqIRAgAkEIaiECIwBB0ABrIhIk +ACASIAkgBhCPNQJAIBIoAgAiBUGAgICAeEcEQCASQThqIBJBEGopAgA3AgAgEkFAayASQRhqKQIA +NwIAIBJByABqIBJBIGopAgA3AgAgEiASKQIINwIwIBIgEigCBDYCLCASIAU2AigjAEHQAGsiDyQA +IA9BIGogAiASQShqENcQAkAgDy0AICICQQhGBEAgD0EIaiAPQSxqKAIAIgI2AgAgDyAPKQIkNwMA +IA8oAgQhBSMAQRBrIhskACAbQgA3AgggGyACNgIEIBsgBTYCACAPQTRqIRkjAEHgAGsiFSQAIBVB +CGoiDiAbELA1IBVBxABqIQ1BACEJQgAhHiMAQdAAayIKJAAgCkEIaiAOELwWAkACQAJAAkAgCi0A +CEUEQCAKLQAJRQRAIApBBTYCLCAOIApBLGoQgDEhAiANQQE2AgAgDSACNgIEDAULAkAgCi0ACiIC +QSJHBEAgAkH7AEYNASAKQQo2AiwgDiAKQSxqEIAxIQIgDUEBNgIAIA0gAjYCBAwGCyMAQSBrIgIk +ACACQQhqIQYjAEEQayIFJAAgBUEIaiAOEJoNAkAgBS0ACEUEQCAFLQAJIQkgBiAONgIEIAYgCToA +AAwBCyAGIAUoAgw2AgQgBkECOgAACyAFQRBqJAACQCACLQAIIgVBAkcEQCACKAIMGiAFRQRAIAJB +CGoQgzIgDQJ/IAIoAggEQCANIAIpAgg3AgQgDUEUaiACQRhqKQIANwIAIA1BDGogAkEQaikCADcC +AEEADAELIA0gAigCDDYCBEEBCzYCAAwCCyACQQhqEIMyIA0CfyACKAIIBEAgDUEANgIEIA1BCGog +AikCCDcCACANQRBqIAJBEGopAgA3AgBBAAwBCyANIAIoAgw2AgRBAQs2AgAMAQsgAigCDCEFIA1B +ATYCACANIAU2AgQLIAJBIGokAAwFCyAOIA4tABxBAWsiAjoAHCACQf8BcUUNAyAOEL5BIApBLGoh +FiMAQSBrIhEkACARQQhqIQIjAEEQayIFJAAgBUEIaiAOEJoNAkAgBS0ACEUEQCAFLQAJIQYgDhDn +FiIERQRAIAIgDjYCBCACIAY6AAAMAgsgAkECOgAAIAIgBDYCBAwBCyACIAUoAgw2AgQgAkECOgAA +CyAFQRBqJAACQCARLQAIIgJBAkcEQCARKAIMIQggAkUEQCARQQhqIRRBACEFQQAhBiMAQcABayID +JAAgA0HgAGogCBC8FgJAAkACQAJAAkACfwJAAkACfwJ/AkACQAJAAkACfyADLQBgRQRAIAMtAGFF +BEAgA0EFNgJwIAggA0HwAGoQgDEMAgsgAy0AYiICQdsARg0CIAJB+wBGDQMgCCADQb8BakHYoMcA +EIQFIQIMDgsgAygCZAshAiAUQQA2AgAgFCACNgIEDA0LIAggCC0AHEEBayICOgAcIAJB/wFxBEAg +CBC+QSADQQE6AJgBIAMgCDYClAEgA0HwAGogA0GUAWoQigggAygCcA0CIAMoAnQiBEUEQEEAQeCR +xwBB/ILHABDeFyECDAoLIAMgA0H4AGooAgAiAjYCsAEgAyAENgKsASADQSBqIANBlAFqEI8KIAMo +AiQhBQJAIAMoAiAEQCAFIQIMAQsgBUUEQEEBQeCRxwBB/ILHABDeFyECDAELIAMgBTYCuAEgA0EY +aiADQZQBahCOCiADKAIcIQcCQCADKAIYBEAgByECDAELIAdFBEBBAkHgkccAQfyCxwAQ3hchAgwB +CyADIAc2AowBIANBEGogA0GUAWoQjAogAygCFCEJAkAgAygCEARAIAkhAgwBCyAJRQRAQQNB4JHH +AEH8gscAEN4XIQIMAQsgAyAJNgJwIANBCGogA0GUAWoQigogAygCDCEGIAMoAggEfyAGBSAGDQ5B +BEHgkccAQfyCxwAQ3hcLIQIgA0HwAGoQrTkLIANBjAFqEK05CyADQbgBahCtOQsgA0GsAWoQ+j4M +CQsgA0EYNgJwIAggA0HwAGoQgDEMBwsgCCAILQAcQQFrIgI6ABwgAkH/AXFFDQUgCBC+QSADQQE6 +AJABIAMgCDYCjAEgA0EANgKUASADQQA2ApwBIANBADYCoAEgA0EANgKkASADQQA2AqgBA0AjAEEg +ayICJAAgAkEMaiADQYwBaiIaKAIAIgQQvBYCQCADQfAAaiIHAn8CQCACLQAMRQRAIAItAA1FBEAg +AkEDNgIUIAQgAkEUahCAMSEJIAdBAToAACAHIAk2AgQMBAsCQAJAIAItAA4iCUEsRwRAIAlB/QBH +BEAgGi0ABA0CIAJBCDYCFCAEIAJBFGoQgDEhCSAHQQE6AAAgByAJNgIEDAcLIAdBgAw7AQAMBgsg +Gi0ABA0AIAQQvkEgAkEUaiAEELwWIAItABQEQCAHIAIoAhg2AgQgB0EBOgAADAYLIAItABUEQCAC +LQAWIQkMAgsgAkEFNgIUIAQgAkEUahCAMSEJIAdBAToAACAHIAk2AgQMBQsgGkEAOgAECwJAIAlB +IkcEQCAJQf0ARg0BIAJBETYCFCAEIAJBFGoQgDEhCSAHQQE6AAAgByAJNgIEDAULIAQQvkEgBEEA +NgIIIAJBFGogBEEMaiAEEPsFIAcCfyACKAIUQQJGBEAgAigCGAwBCyACQQxqIAIoAhggAigCHBDE +FyACLQAMRQ0DIAIoAhALNgIEQQEMAwsgAkEVNgIUIAQgAkEUahCAMSEJIAdBAToAACAHIAk2AgQM +AwsgByACKAIQNgIEIAdBAToAAAwCCyAHIAItAA06AAFBAAs6AAALIAJBIGokAAJAAkACQAJAAkAC +QCADLQBwRQRAAkAgAy0AcSICQQZHBEACQAJAAkACQAJAAkAgAg4FAQIDBAUACyADQYwBahCQPyIC +RQ0ODBALIAUEQEGsiccAQQcQ8R8hAkEBDBELIANB8ABqIANBjAFqEN04IAMoAnAiBUUNBSADKAJ0 +IQsgA0GUAWoQkEUgAyALNgKYASADIAU2ApQBDA0LIAMoApwBRQ0LQdCPxwBBChDxHyECQQEMDwsg +AygCoAFFDQlB2o/HAEEQEPEfIQJBAQwOCyADKAKkAUUNB0GXkccAQRAQ8R8hAkEBDA0LIAMoAqgB +RQ0FQaeRxwBBCBDxHyECQQEMDAsgBUEARyEGIAUiBEUNAgwDCyADKAJ0IQJBACEFQQEhCUEBIQdB +AQwLCyADKAJ0IQIMCAsgA0HwAGpBrInHAEEHEJFNIAMoAnAiBARAIAMoAnQhCwwBCyADKAJ0IQIM +BwsgAyALNgKwASADIAQ2AqwBIAMoApwBIhohAgJAAn8gGkUEQCADQThqQdCPxwBBChD5Q0EBIQlB +ASEHIAMoAjwiAiADKAI4DQEaCyADIAI2ArQBIAMoAqABIhwhGAJ/IBxFBEAgA0EwakHaj8cAQRAQ ++UNBASEJIAMoAjQiGCADKAIwDQEaCyADIBg2ArgBIAMoAqQBIh0hBwJAIB1FBEAgA0EoakGXkccA +QRAQ+UMgAygCLCEHIAMoAigNAQsgAyAHNgJwIAMoAqgBIgkNA0GnkccAQQgQ8B8hByADQfAAahCt +OQsgHUUhCSADQbgBahCtOSAHCyEYIBxFIQcgA0G0AWoQrTkgGAshAiADQawBahD6PiAaRQwJCyAC +IQYgCyECDAkLIANB2ABqIANBjAFqEKcnIAMoAlwhAiADKAJYDQUgA0GoAWoQ+EUgAyACNgKoAQwD +CyADQdAAaiADQYwBahCqJyADKAJUIQIgAygCUA0EIANBpAFqEPpFIAMgAjYCpAEMAgsgA0HIAGog +A0GMAWoQqycgAygCTCECIAMoAkgNAyADQaABahD6RSADIAI2AqABDAELIANBQGsgA0GMAWoQpScg +AygCRCECIAMoAkANAiADQZwBahD6RSADIAI2ApwBDAALAAsgAygCdCECDAYLQQELIQlBASEHQQEL +IQQgAygCqAEEQCADQagBahCzOQsgAygCpAFBAEcgCXEEQCADQaQBahCtOQsgAygCoAFBAEcgB3EE +QCADQaABahCtOQsgAygCnAFBAEcgBHEEQCADQZwBahCtOQsgBUUgBnJFBEAgA0GUAWoQ+j4LQQAh +BAsgCCAILQAcQQFqOgAcIAMgCBCNEyIFNgKIASADIAk2AoQBIAMgBzYCgAEgAyAYNgJ8IAMgBjYC +eCADIAI2AnQgAyAENgJwAkAgBARAIAUNASADQegAaiADQfgAaiIFQQhqKQIANwMAIAMgBSkCADcD +YAwGC0EAIQQgBUUNBSADQYgBahDfHQwFCyADQfAAahCxN0EAIQQgBSECDAQLIANBGDYCcCAIIANB +8ABqEIAxCyECIBRBADYCACAUIAI2AgQMBAtBACEECyAIIAgtABxBAWo6ABwgAyAIEJ8MIgs2AogB +IAMgBjYChAEgAyAJNgKAASADIAc2AnwgAyAFNgJ4IAMgAjYCdCADIAQ2AnAgBEUEQEEAIQQgC0UN +ASADQYgBahDfHQwBCyALRQRAIANB6ABqIANB+ABqIgVBCGopAgA3AwAgAyAFKQIANwNgDAELIANB +8ABqELE3QQAhBCALIQILIARFDQAgFCACNgIEIBQgBDYCACAUIAMpA2A3AgggFEEQaiADQegAaikD +ADcCAAwBCyAIIAIQ/1AhAiAUQQA2AgAgFCACNgIECyADQcABaiQAIBYCfyARKAIIBEAgFiARKQII +NwIEIBZBFGogEUEYaikCADcCACAWQQxqIBFBEGopAgA3AgBBAAwBCyAWIBEoAgw2AgRBAQs2AgAM +AgsgEUEIaiEDQQAhAiMAQfAAayIEJAAgBEHkAGogCBC8FgJAAkACQAJAAkACQAJAAkACfwJAAkAC +fwJAAkACQAJAAn8gBC0AZEUEQCAELQBlRQRAIARBBTYCOCAIIARBOGoQgDEMAgsgBC0AZiIFQdsA +Rg0CIAVB+wBGDQMgCCAEQe8AakHonMcAEIQFIQIMEAsgBCgCaAshAiADQQA2AgAgAyACNgIEDA8L +IAggCC0AHEEBayIFOgAcIAVB/wFxBEAgCBC+QSAEQQE6AFggBCAINgJUIARBOGogBEHUAGoQiggg +BCgCOA0CIAQoAjwiBkUEQEEAQZiQxwBB/ILHABDeFyECDAkLIAQgBEFAaygCACICNgJoIAQgBjYC +ZCAEQRBqIARB1ABqEI8KIAQoAhQhBQJAIAQoAhAEQCAFIQIMAQsgBUUEQEEBQZiQxwBB/ILHABDe +FyECDAELIAQgBTYCOCAEQQhqIARB1ABqEI4KIAQoAgwhCSAEKAIIBH8gCQUgCQ0LQQJBmJDHAEH8 +gscAEN4XCyECIARBOGoQrTkLIARB5ABqEPo+DAgLIARBGDYCOCAIIARBOGoQgDEMBgsgCCAILQAc +QQFrIgU6ABwgBUH/AXFFDQQgCBC+QSAEQQE6AFAgBCAINgJMIARBADYCVCAEQQA2AlwgBEEANgJg +A0AjAEEgayIFJAAgBUEMaiAEQcwAaiIYKAIAIgsQvBYCQCAEQThqIgYCfwJAIAUtAAxFBEAgBS0A +DUUEQCAFQQM2AhQgCyAFQRRqEIAxIQsgBkEBOgAAIAYgCzYCBAwECwJAAkAgBS0ADiIUQSxHBEAg +FEH9AEcEQCAYLQAEDQIgBUEINgIUIAsgBUEUahCAMSELIAZBAToAACAGIAs2AgQMBwsgBkGACDsB +AAwGCyAYLQAEDQAgCxC+QSAFQRRqIAsQvBYgBS0AFARAIAYgBSgCGDYCBCAGQQE6AAAMBgsgBS0A +FQRAIAUtABYhFAwCCyAFQQU2AhQgCyAFQRRqEIAxIQsgBkEBOgAAIAYgCzYCBAwFCyAYQQA6AAQL +AkAgFEEiRwRAIBRB/QBGDQEgBUERNgIUIAsgBUEUahCAMSELIAZBAToAACAGIAs2AgQMBQsgCxC+ +QSALQQA2AgggBUEUaiALQQxqIAsQ+wUgBgJ/IAUoAhRBAkYEQCAFKAIYDAELIAVBDGogBSgCGCAF +KAIcEPUiIAUtAAxFDQMgBSgCEAs2AgRBAQwDCyAFQRU2AhQgCyAFQRRqEIAxIQsgBkEBOgAAIAYg +CzYCBAwDCyAGIAUoAhA2AgQgBkEBOgAADAILIAYgBS0ADToAAUEACzoAAAsgBUEgaiQAAkACQAJA +AkAgBC0AOEUEQAJAIAQtADkiBUEERwRAAkACQAJAAkAgBQ4DAQIDAAsgBEHMAGoQkD8iBUUNCgwM +CyAHBEBBrInHAEEHEPEfIQVBAQwNCyAEQThqIARBzABqEN04IAQoAjgiB0UNAyAEKAI8IQIgBEHU +AGoQkEUgBCACNgJYIAQgBzYCVAwJCyAEKAJcRQ0HQdCPxwBBChDxHyEFQQEMCwsgBCgCYEUNBUHa +j8cAQRAQ8R8hBUEBDAoLIAdBAEchGiAHIgZFDQIMAwsgBCgCPCEFQQAhB0EBDAgLIAQoAjwhBQwG +CyAEQThqQayJxwBBBxCRTSAEKAI4IgYEQCAEKAI8IQIMAQsgBCgCPCEFQQEMBgsgBCACNgJoIAQg +BjYCZCAEKAJcIgshBQJ/IAtFBEAgBEEgakHQj8cAQQoQ+UMgBCgCJCIFIAQoAiANARoLIAQgBTYC +OCAEKAJgIgkNByAEQRhqQdqPxwBBEBD5QyAEKAIcIQkgBCgCGEUNByAEQThqEK05IAkLIQUgBEHk +AGoQ+j4gC0UMBQsgBEEwaiAEQcwAahCrJyAEKAI0IQUgBCgCMA0DIARB4ABqEPpFIAQgBTYCYAwB +CyAEQShqIARBzABqEKUnIAQoAiwhBSAEKAIoDQIgBEHcAGoQ+kUgBCAFNgJcDAALAAsgBCgCPCEC +DAULQQELIQIgBCgCYARAIARB4ABqEK05CyAEKAJcQQBHIAJxBEAgBEHcAGoQrTkLIAdFIBpyRQRA +IARB1ABqEPo+C0EAIQYgBSECCyAIIAgtABxBAWo6ABwgBCAIEI0TIgc2AkggBCAJNgJEIAQgBTYC +QCAEIAI2AjwgBCAGNgI4IAYEQCAHRQ0FIARBOGoQgUBBACEGIAchAgwIC0EAIQYgB0UNByAEQcgA +ahDfHQwHCyAEQRg2AjggCCAEQThqEIAxCyECIANBADYCACADIAI2AgQMBwtBACEGCyAIIAgtABxB +AWo6ABwgBCAIEJ8MIgc2AkggBCAJNgJEIAQgBTYCQCAEIAI2AjwgBCAGNgI4IAZFBEBBACEGIAcN +AwwECyAHDQELIAQpAkAhHgwCCyAEQThqEIFAQQAhBiAHIQIMAQsgBEHIAGoQ3x0LIAZFDQAgAyAe +NwIIIAMgAjYCBCADIAY2AgAMAQsgCCACEP9QIQIgA0EANgIAIAMgAjYCBAsgBEHwAGokACAWAn8g +ESgCCARAIBZBADYCBCAWQQhqIBEpAgg3AgAgFkEQaiARQRBqKQIANwIAQQAMAQsgFiARKAIMNgIE +QQELNgIADAELIBEoAgwhAiAWQQE2AgAgFiACNgIECyARQSBqJAAgCigCLA0BIApBIGogCkFAaykC +ADcDACAKQRhqIApBOGopAgA3AwAgCiAKKQIwNwMQIA4gDi0AHEEBajoAHCAKQcgAaiAOELwWIAot +AEgNAgJ/IAotAElFBEAgCkEDNgIsIA4gCkEsahCBMQwBCyAKLQBKQf0ARgRAIA4QvkEgDUEANgIA +IA1BFGogCkEgaikDADcCACANQQxqIApBGGopAwA3AgAgDSAKKQMQNwIEDAYLIApBCjYCLCAOIApB +LGoQgTELIQIgDUEBNgIAIA0gAjYCBCAKQRBqEK8dDAQLIA0gCigCDDYCBCANQQE2AgAMAwsgDSAK +KAIwNgIEIA1BATYCAAwCCyANIAooAkw2AgQgDUEBNgIAIApBEGoQrx0MAQsgCkEYNgIsIA4gCkEs +ahCAMSECIA1BATYCACANIAI2AgQLIApB0ABqJAACQAJAIBUoAkRFBEAgFUE4aiICIBVB2ABqKQIA +NwMAIBVBMGoiBSAVQdAAaikCADcDACAVIBUpAkg3AyggFUEIahDVIyIGDQEgGSAVKQMoNwIEIBlB +ADYCACAZQRRqIAIpAwA3AgAgGUEMaiAFKQMANwIADAILIBkgFSgCSDYCBCAZQQE2AgAMAQsgGUEB +NgIAIBkgBjYCBCAVQShqEIs+CyAVQQhqEIg/IBVB4ABqJAAgG0EQaiQAIA8Q2isCQCAPKAI0RQRA +IBAgDygCODYCBCAQQQA2AgAgEEEIaiAPQTxqKQIANwIAIBBBEGogD0HEAGopAgA3AgAgEEEYaiAP +QcwAaigCADYCAAwBCyAQQQI6AAQgEEEBNgIAIBBBCGogDygCODYCAAsgDxCIPwwBCyAPIA8pACE3 +AxAgDyAPQShqKQAANwAXIA8oAjAhBSAQQQxqIA8pABc3AAAgEEEFaiAPKQMQNwAAIBBBFGogBTYC +ACAQIAI6AAQgEEEBNgIACyAPQdAAaiQADAELIBBBCGogEigCBDYCACAQQQI6AAQgEEEBNgIACyAS +QdAAaiQAAkAgEygCFEUEQCAXIBMpAhg3AgQgF0ELOgAAIBdBFGogE0EoaikCADcCACAXQQxqIBNB +IGopAgA3AgAMAQsgFyATQRhqELQnCyATQQhqEIg/DAILIBcgEygCGDYCBCAXQQc6AAAMAQsgE0EU +aiEVIwBBMGsiECQAAn8gE0EEaiICEJhKRQRAIBBBEGogAhDiKyAQQSRqIgIgECgCECAQKAIUEMM9 +IBBBGGogAhC7SiAQKAIcIQIgECgCIAwBCyAQQQhqQQQQ7h8gECgCCCEFIBAoAgwiAkHu6rHjBjYA +ACAQQQQ2AiAgECACNgIcIBAgBTYCGEEECyEFIwBBIGsiGSQAIBlBCGoiBiACIAUQpzkjAEHgAGsi +DiQAIA4gBhDJLSAOQcQAaiENQgAhHiMAQdAAayIKJAAgCkEIaiAOELwWAkACQAJAAkAgCi0ACEUE +QCAKLQAJRQRAIApBBTYCLCAOIApBLGoQgDEhAiANQQE2AgAgDSACNgIEDAULAkAgCi0ACiICQSJH +BEAgAkH7AEYNASAKQQo2AiwgDiAKQSxqEIAxIQIgDUEBNgIAIA0gAjYCBAwGCyMAQSBrIgIkACAC +QQhqIQYjAEEQayIFJAAgBUEIaiAOEJMNAkAgBS0ACEUEQCAFLQAJIQkgBiAONgIEIAYgCToAAAwB +CyAGIAUoAgw2AgQgBkECOgAACyAFQRBqJAACQCACLQAIIgVBAkcEQCACKAIMGiAFRQRAIAJBCGoQ +gzIgDQJ/IAIoAggEQCANIAIpAgg3AgQgDUEUaiACQRhqKQIANwIAIA1BDGogAkEQaikCADcCAEEA +DAELIA0gAigCDDYCBEEBCzYCAAwCCyACQQhqEIMyIA0CfyACKAIIBEAgDUEANgIEIA1BCGogAikC +CDcCACANQRBqIAJBEGopAgA3AgBBAAwBCyANIAIoAgw2AgRBAQs2AgAMAQsgAigCDCEFIA1BATYC +ACANIAU2AgQLIAJBIGokAAwFCyAOIA4tACRBAWsiAjoAJCACQf8BcUUNAyAOEL5BIApBLGohEiMA +QSBrIg8kACAPQQhqIQIjAEEQayIFJAAgBUEIaiAOEJMNAkAgBS0ACEUEQCAFLQAJIQYgDhDnFiIE +RQRAIAIgDjYCBCACIAY6AAAMAgsgAkECOgAAIAIgBDYCBAwBCyACIAUoAgw2AgQgAkECOgAACyAF +QRBqJAACQCAPLQAIIgJBAkcEQCAPKAIMIQggAkUEQCAPQQhqIRFBACEFQQAhBiMAQcABayIDJAAg +A0HgAGogCBC8FgJAAkACQAJAAkACfwJAAkACfwJ/AkACQAJAAkACfyADLQBgRQRAIAMtAGFFBEAg +A0EFNgJwIAggA0HwAGoQgDEMAgsgAy0AYiICQdsARg0CIAJB+wBGDQMgCCADQb8BakHYoMcAEIYF +IQIMDgsgAygCZAshAiARQQA2AgAgESACNgIEDA0LIAggCC0AJEEBayICOgAkIAJB/wFxBEAgCBC+ +QSADQQE6AJgBIAMgCDYClAEgA0HwAGogA0GUAWoQhwggAygCcA0CIAMoAnQiBEUEQEEAQeCRxwBB +/ILHABDeFyECDAoLIAMgA0H4AGooAgAiAjYCsAEgAyAENgKsASADQSBqIANBlAFqEIcKIAMoAiQh +BQJAIAMoAiAEQCAFIQIMAQsgBUUEQEEBQeCRxwBB/ILHABDeFyECDAELIAMgBTYCuAEgA0EYaiAD +QZQBahCQCiADKAIcIQcCQCADKAIYBEAgByECDAELIAdFBEBBAkHgkccAQfyCxwAQ3hchAgwBCyAD +IAc2AowBIANBEGogA0GUAWoQiAogAygCFCEJAkAgAygCEARAIAkhAgwBCyAJRQRAQQNB4JHHAEH8 +gscAEN4XIQIMAQsgAyAJNgJwIANBCGogA0GUAWoQiQogAygCDCEGIAMoAggEfyAGBSAGDQ5BBEHg +kccAQfyCxwAQ3hcLIQIgA0HwAGoQrTkLIANBjAFqEK05CyADQbgBahCtOQsgA0GsAWoQ+j4MCQsg +A0EYNgJwIAggA0HwAGoQgDEMBwsgCCAILQAkQQFrIgI6ACQgAkH/AXFFDQUgCBC+QSADQQE6AJAB +IAMgCDYCjAEgA0EANgKUASADQQA2ApwBIANBADYCoAEgA0EANgKkASADQQA2AqgBA0AjAEEgayIC +JAAgAkEMaiADQYwBaiIUKAIAIgQQvBYCQCADQfAAaiIHAn8CQCACLQAMRQRAIAItAA1FBEAgAkED +NgIUIAQgAkEUahCAMSEJIAdBAToAACAHIAk2AgQMBAsCQAJAIAItAA4iCUEsRwRAIAlB/QBHBEAg +FC0ABA0CIAJBCDYCFCAEIAJBFGoQgDEhCSAHQQE6AAAgByAJNgIEDAcLIAdBgAw7AQAMBgsgFC0A +BA0AIAQQvkEgAkEUaiAEELwWIAItABQEQCAHIAIoAhg2AgQgB0EBOgAADAYLIAItABUEQCACLQAW +IQkMAgsgAkEFNgIUIAQgAkEUahCAMSEJIAdBAToAACAHIAk2AgQMBQsgFEEAOgAECwJAIAlBIkcE +QCAJQf0ARg0BIAJBETYCFCAEIAJBFGoQgDEhCSAHQQE6AAAgByAJNgIEDAULIAQQvkEgBEEANgII +IAJBFGogBEEMaiAEELsIIAcCfyACKAIUQQJGBEAgAigCGAwBCyACQQxqIAIoAhggAigCHBDEFyAC +LQAMRQ0DIAIoAhALNgIEQQEMAwsgAkEVNgIUIAQgAkEUahCAMSEJIAdBAToAACAHIAk2AgQMAwsg +ByACKAIQNgIEIAdBAToAAAwCCyAHIAItAA06AAFBAAs6AAALIAJBIGokAAJAAkACQAJAAkACQCAD +LQBwRQRAAkAgAy0AcSICQQZHBEACQAJAAkACQAJAAkAgAg4FAQIDBAUACyADQYwBahCsPyICRQ0O +DBALIAUEQEGsiccAQQcQ8R8hAkEBDBELIANB8ABqIANBjAFqEJo5IAMoAnAiBUUNBSADKAJ0IQsg +A0GUAWoQkEUgAyALNgKYASADIAU2ApQBDA0LIAMoApwBRQ0LQdCPxwBBChDxHyECQQEMDwsgAygC +oAFFDQlB2o/HAEEQEPEfIQJBAQwOCyADKAKkAUUNB0GXkccAQRAQ8R8hAkEBDA0LIAMoAqgBRQ0F +QaeRxwBBCBDxHyECQQEMDAsgBUEARyEGIAUiBEUNAgwDCyADKAJ0IQJBACEFQQEhCUEBIQdBAQwL +CyADKAJ0IQIMCAsgA0HwAGpBrInHAEEHEJFNIAMoAnAiBARAIAMoAnQhCwwBCyADKAJ0IQIMBwsg +AyALNgKwASADIAQ2AqwBIAMoApwBIhQhAgJAAn8gFEUEQCADQThqQdCPxwBBChD5Q0EBIQlBASEH +IAMoAjwiAiADKAI4DQEaCyADIAI2ArQBIAMoAqABIhghFgJ/IBhFBEAgA0EwakHaj8cAQRAQ+UNB +ASEJIAMoAjQiFiADKAIwDQEaCyADIBY2ArgBIAMoAqQBIhshBwJAIBtFBEAgA0EoakGXkccAQRAQ ++UMgAygCLCEHIAMoAigNAQsgAyAHNgJwIAMoAqgBIgkNA0GnkccAQQgQ8B8hByADQfAAahCtOQsg +G0UhCSADQbgBahCtOSAHCyEWIBhFIQcgA0G0AWoQrTkgFgshAiADQawBahD6PiAURQwJCyACIQYg +CyECDAkLIANB2ABqIANBjAFqEKgnIAMoAlwhAiADKAJYDQUgA0GoAWoQ+EUgAyACNgKoAQwDCyAD +QdAAaiADQYwBahCvJyADKAJUIQIgAygCUA0EIANBpAFqEPpFIAMgAjYCpAEMAgsgA0HIAGogA0GM +AWoQrScgAygCTCECIAMoAkgNAyADQaABahD6RSADIAI2AqABDAELIANBQGsgA0GMAWoQqScgAygC +RCECIAMoAkANAiADQZwBahD6RSADIAI2ApwBDAALAAsgAygCdCECDAYLQQELIQlBASEHQQELIQQg +AygCqAEEQCADQagBahCzOQsgAygCpAFBAEcgCXEEQCADQaQBahCtOQsgAygCoAFBAEcgB3EEQCAD +QaABahCtOQsgAygCnAFBAEcgBHEEQCADQZwBahCtOQsgBUUgBnJFBEAgA0GUAWoQ+j4LQQAhBAsg +CCAILQAkQQFqOgAkIAMgCBCNEyIFNgKIASADIAk2AoQBIAMgBzYCgAEgAyAWNgJ8IAMgBjYCeCAD +IAI2AnQgAyAENgJwAkAgBARAIAUNASADQegAaiADQfgAaiIFQQhqKQIANwMAIAMgBSkCADcDYAwG +C0EAIQQgBUUNBSADQYgBahDfHQwFCyADQfAAahCxN0EAIQQgBSECDAQLIANBGDYCcCAIIANB8ABq +EIAxCyECIBFBADYCACARIAI2AgQMBAtBACEECyAIIAgtACRBAWo6ACQgAyAIEJ8MIgs2AogBIAMg +BjYChAEgAyAJNgKAASADIAc2AnwgAyAFNgJ4IAMgAjYCdCADIAQ2AnAgBEUEQEEAIQQgC0UNASAD +QYgBahDfHQwBCyALRQRAIANB6ABqIANB+ABqIgVBCGopAgA3AwAgAyAFKQIANwNgDAELIANB8ABq +ELE3QQAhBCALIQILIARFDQAgESACNgIEIBEgBDYCACARIAMpA2A3AgggEUEQaiADQegAaikDADcC +AAwBCyAIIAIQvFIhAiARQQA2AgAgESACNgIECyADQcABaiQAIBICfyAPKAIIBEAgEiAPKQIINwIE +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 +EOYrAAtBsMPEAEEjQbD3xAAQ5isAC0Gww8QAQSNB1MnEABDmKwALIAFBAToAGCAIEOE/IAFBAToA +PCABKAIMIQIgBxDiPyABQQE6AEAgAyACNgLkASAGENk/IANBGGogA0HkAWoiBBDUTBDCLSAEEJpM +IANBmAJqIAEoAgQiAkEYaikAADcDACADQaACaiACQSBqKQAANwMAIANBqAJqIAJBKGopAAA3AwAg +AyACQRBqKQAANwOQAiAEIAIoAgxBCGoQvy8gA0EQaiABKAIEENtNIANBCGogAygCECADKAIUEMIw +IAEoAgQiAi0ASCEGIAMoAgwhByADKAIIIQggAhD8SCEJIANBgAJqIAEoAgQiAigCPCIFKAIIIgRB +BUsgBEEERnIEfyADIAVBDGoQ9B8gAygCBCEKIAMoAgAhBSABKAIEBSACCygCOEEIahCUUSAAQYQC +aiADQagCaikDADcAACAAQfwBaiADQaACaikDADcAACAAQfQBaiADQZgCaikDADcAACAAIAMpA5AC +NwDsASADQfgBaiICIANB7AFqKAIANgIAIAMgAykC5AE3A/ABIABBCGogA0GIAmooAgA2AgAgACAD +KQOAAjcCACAAIAo2AhQgACAFNgIQIAAgBDYCDCAAQRhqIANBGGpBzAEQzU8aIAAgBzYC6AEgACAI +NgLkASAAIAk6AJkCIAAgBjoAmAIgACADKQPwATcCjAIgAEGUAmogAigCADYCAEEBIQQMAgsgCkEE +OgAAQQMhBCAFQQM6AAAgCUEDOgAAIABBAzYCAAwBC0Gww8QAQSNB0PfEABDmKwALIAEgBDoARCAD +QbACaiQAC58JAgZ/AX4jAEHAAmsiAyQAAkACQAJAAkACQAJAAkACQAJAAkAgAS0A5QFBAWsOAwMA +AgELAAsgAUEAOgDkASADQYOAgIB4NgKwASADQbABaiIFEOYYIAEgASgC3AEiBDYCECAFIAEoAuAB +EIsNIwBBEGsiBiQAIAZBBGoiByAEQThqIAUQ1zUgBxCvQSEEIAZBEGokACABQQE6AOQBIAMgBDYC +VCAFIAEoAhBB3K/HAEEPQQAQqiYCQAJAIAMoArABRQRAIAFBADYChAEgAUGIAWogAygCtAEiAjYC +AAwBCyABQYQBaiADQbABakE0EM1PIgUoAgANASABQYgBaigCACECCyADQfwBaiACEI0iIANBgoCA +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 +AUsNAUH89toAEPs+IglB/wFxRQ0BQQAhBkH89toAKAIAIAkQ9S5FDQFB/PbaACgCACIJQRxqIQ8g +CUEgaigCACIIBEAgCUEoaigCACEKIAlBJGooAgAhDCAJKAIcIQYgDkEANgJMIA4gCjYCSCAOIAw2 +AkQgDiAINgJACyAOIAY2AjwgDkEEaiIGIA5BPGoiCUGQ68QAEOksIA5ByABqQgE3AgAgDkHUxsQA +NgIwIA5BATYCQCAOQczrxAA2AjwgDkGvBTYCOCAOIAFBFGo2AjQgDiAJNgIsIA4gBjYCKCAOIA5B +NGo2AkQgDkEcaiIGIA8gDkEoahDgQUH89toAKAIAIAYQxDQMAQtBsMPEAEEjQdTrxAAQ5isACyAB +QUBrQQA6AAAgAUEsaiAHNgIAIAEgAUEYaikCADcCJAsgDkE8aiEXIAIhD0EAIQIjAEHQDGsiAyQA +AkACQCABQSRqIgQCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQtABxBAWsODREN +AAQFBgcICQoLDLMBAQsgBEEgaiESAkAgBEGMAWoiDS0AAEEBaw4DEA0DAAsgBEEkaigCACECIAQo +AiAhCwwBCyAEQRBqIAQoAgQiAjYCACAEIAQoAgAiCzYCDCAEQYwBaiINQQA6AAAgBEEkaiACNgIA +IAQgCzYCICAEIAQoAgg2AhQgBEEgaiESCyADQdAEaiALIAIQzx8gAygC0ARFBEAgBEEANgIoIARB +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 +ACADIAMvAagCOwHeASADIAMpA5AENwPAASASEKhAIApBDUcNAyAEIAI2AhggAkEFTw0MIAQgBCgC +DDYCICAEQSRqIARBEGooAgAiAjYCACAEQShqIANBiApqQfgAEM1PGiAEQaABaiISQQA6AAAgBEEg +aiEGDAELIBdBDjoAAEEDDJoBCyAEQZ0BaiIJQQA6AAAgBEHQAGpBBTYCACAEQcwAaiACNgIAIARB +yABqIAQoAiAiBzYCACAEQShqIQ1BBQshCCAEQZwBakEBOgAAIARB1ABqIgwgCDYCAEHEk9sAKAIA +QQJLDQFByPjaABD7PiIKQf8BcUUNAUEAIQhByPjaACgCACAKEPUuRQ0BQcj42gAoAgAiCkEcaiEF +IApBIGooAgAiCwRAIApBKGooAgAhECAKQSRqKAIAIREgCigCHCEIIANBADYC+AcgAyAQNgL0ByAD +IBE2AvAHIAMgCzYC7AcLIAMgCDYC6AcgA0HIBWoiCCADQegHaiIKQejaxAAQ6SwgA0H0B2pCATcC +ACADQdTGxAA2AtgEIANBAjYC7AcgA0Gg28QANgLoByADQawFNgKsDCADIAw2AqgMIAMgCjYC1AQg +AyAINgLQBCADIANBqAxqNgLwByADQZAEaiIIIAUgA0HQBGoQ4EFByPjaACgCACAIEMQ0DAELIANB +rANqIANByAFqKQMANwIAIANBtANqIANB0AFqKQMANwIAIANBvANqIANB2AFqKAIANgIAIAMgAy8B +3gE7AJ0DIAMgAykDwAE3AqQDIAMgAjYCoAMgAyALOgCcAyADIANB4AFqLQAAOgCfAwyWAQsgA0Ho +B2ogByACIAwoAgAQlR8gAygC6AciAkUNASADKALsByEHIANB2AVqIgggA0GACGopAgAiJjcDACAD +QdAFaiIKIANB+AdqKQIAIic3AwAgAyADKQLwByIoNwPIBSAEQSxqIgwgBzYCACAEIAI2AiggBEEw +aiAoNwIAIARBOGogJzcCACAEQUBrIgcgJjcCACAEQQA6AJwBIAMgDBC6LxD1RSIMNgLIBSADQegH +aiICQQBBARDuLUGw3MUAEJg9IAxBCGogA0HwB2oQlzogAygC6AchCyADKQLsByEmIARBPGoiDBCw +RSAHICY3AgAgDCALNgIAIANByAVqIgcQny0gA0HgBWogDUEYaikCADcDACAIIA1BEGopAgA3AwAg +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 +CQsgBUEYNgKgBiAIIAVBoAZqEIAxCyECIBpBAzYCACAaIAI2AgQMCQsgBUHgCmoQ+j4LIAVBvApq +EK0ZDAELIAUoAqQGIQILIAVBrAxqELtHC0EDCyEQIAggCC0AJEEBajoAJCAIEJ8MIQYgBUG0Bmog +BUGYBGooAgA2AgAgBSATNgKoBiAFIAI2AqQGIAUgBSkDkAQ3AqwGIAUgEDYCoAYgBUG4BmogBUHE +AmpBzAEQzU8aIAVBmghqIAVBsAJqKQMANwEAIAVBoghqIAVBuAJqKQMANwEAIAVBqghqIAVBwAJq +LwEAOwEAIAVBtAhqIAVBoAJqKAIANgIAIAUgBzYBjgggBSAbOwGMCCAFIAk2AogIIAUgCjYChAgg +BSAGNgK8CCAFIBE6ALkIIAUgHDoAuAggBSAFKQOoAjcBkgggBSAFKQOYAjcCrAgCQCAQQQNGBEAg +Bg0BDAILIAZFBEAgBUEEaiAFQagGakGUAhDNTxoMAwsgBUGgBmoQqTdBAyEQIAYhAgwCCyAFQbwI +ahDfHQtBAyEQCyAQQQNGDQAgGkEIaiAFQQRqQZQCEM1PGiAaIAI2AgQgGiAQNgIADAELIAggAhC8 +UiECIBpBAzYCACAaIAI2AgQLIAVB0AxqJAACQCAYKALkAkEDRwRAIBhByABqIBhB5AJqQZwCEM1P +GiAYQSBqENUjIgJFBEAgHSAYQcgAakGcAhDNTxoMAgsgHUEDNgIAIB0gAjYCBCAYQcgAahCpNwwB +CyAdIBgoAugCNgIEIB1BAzYCAAsgGEEgahCIPyAYQYAFaiQAIBVBGGoQiD8gFUEwaiQAIBQoAhQi +AkEDRwRAIBQoAhghBiAZQQhqIBRBHGpBlAIQzU8aIBkgBjYCBCAZIAI2AgAMAQsgGUEIaiAUKAIY +NgIAIBlBBzoABCAZQQM2AgALIBRBBGoQlkEgFEGwAmokACADKAKICiICQQNGDQYgA0GoDGoiBiAD +QYwKakEkEM1PGiADQfAFaiADQbAKakH0ARDNTxogAyACNgLIBSADQcwFaiAGQSQQzU8aIANB6Adq +IANByAVqEJ8KIAMtALAIIgJBAkYNCCADQdIDaiIGIAMtAOsHOgAAIAMgAy8A6Qc7AdADIAMpAuwH +ISYgAy0A6AchCSADQdAEaiIHIANB9AdqQTwQzU8aIANBigpqIgggA0GzCGotAAA6AAAgAyADLwCx +CDsBiAogBEHsAWoiCiAJOgAAIAQgAy8B0AM7AO0BIARB7wFqIAYtAAA6AAAgBEHwAWogJjcCACAE +QfgBaiAHQTwQzU8aIARBtAJqIAI6AAAgBCADLwGICjsAtQIgBEG3AmogCC0AADoAACAEQcACaiAE +KAI4NgIAIARBiANqQQA6AAAgBEHEAmogCjYCAEEBIQIMDQsgA0GICmogBEHEAmoiByAPEKUDIAMo +AogKQQNGDQggA0HoB2oiAiADQYgKakGcAhDNTxogBxCrQCADQdAEaiEJIARBwAJqIggoAgAhCiMA +QZABayIGJAACQCAKKAIAIgpFBEAgBkHcAGogAhDiFyAGKAJcQYCAgIB4RwRAIAkgBikCXDcCBCAJ +QQs6AAAgCUEMaiAGQeQAaigCADYCAAwCCyAJIAYoAmAQvjcMAQsgBkGEAWogAhDiFwJAAkACQCAG +KAKEASICQYCAgIB4RgRAIAZB5ABqIAYoAogBNgIAIAZBAjoAYAwBCyAGIAYpAogBNwIMIAYgAjYC +CCAGQdwAaiAKQQhqIAZBCGoQ3AggBigCXCICQYCAgIB4Rg0AIAZB2ABqIAZB8ABqKAIAIgo2AgAg +BkHQAGogBkHoAGopAgAiJjcDACAGQUBrIAZB/ABqKQIANwIAIAZBLGogJjcCACAGQTRqIAo2AgAg +BiAGKQJgIiY3A0ggBiAGKQJ0NwI4IAYgJjcCJCAGIAI2AiAgBkGAARDuHyAGQQA2AmQgBiAGKQMA +NwJcIAYgBkHcAGo2AggCQCAGQSBqIAZBCGoQnAkiAgRAIAZB3ABqEIg/DAELIAYoAmAhAiAGKAJc +IgpBgICAgHhGDQAgBkEUaiAGKAJkNgIAIAZBEGogAjYCACAGIAo2AgwgBkEgahCIPwwDCyAGIAI2 +AgwgBkECOgAIIAZBIGoQiD8MAQsgBkEQaiAGQegAaikCADcDACAGQRhqIAZB8ABqKAIANgIAIAYg +BikCYCImNwMIICanQf8BcUEIRg0BCyAJIAZBCGoQ+iYMAQsgCSAGKQIMNwIEIAlBCzoAACAJQQxq +IAZBFGooAgA2AgALIAZBkAFqJAAgAy0A0AQiAkELRw0EIANB2wNqIgIgA0HcBGooAgA2AAAgAyAD +KQLUBDcA0wMgBEHsAWoQ/EghBiADQbAMaiACKAAANgIAIAMgAykA0wM3A6gMIAMgBkEBczoAtAwg +A0GoAWogA0GoDGoQvA0gAygCrAEhAiADKAKoAQ0JIAQgAjYCwAIgA0GoDGoQiD8gA0HoB2oQhCcg +A0GgAWogBEGQAWogBEHoAWogCBCHLCADKAKkASECIAMoAqABDQ0gAyACNgKICiADQYgKahCWQSAD +QZgBaiAEQeABahDQJiADKAKcASECIAMoApgBDQ0gAyACNgKICiADQYgKaiICEJZBIAIgBEHYAWoQ +nSggAygCiAoNAiAEQQA2AsQCIARByAJqIAMoAowKIgI2AgAMDQsgA0GICmogBEHoAmoiAiAPELkV +IAMtAIgKQQJGDQUgAykDiAohJiACEME1ICZC/wGDUEUNAiAEQcACahCWQSAEQewBahDhEiAEQegB +ahCWQSAmQoD+A4NQDRAgBEHkAWooAgAhCwwJCyADQaAEaiACQQhqKQIANwIAIANBqARqIAJBEGop +AgA3AgAgA0GwBGogAkEYaigCADYCACADIAMtAIsKOgCTBCADIAMvAIkKOwCRBCADIAIpAgA3ApgE +IAMgBjYClAQgA0EJOgCQBAwOCyAHIANBiApqQSQQzU8iAigCAARAIARB6AJqIAJBJBDNTxpBAiEC +DAoLIARByAJqKAIAIQIMCgsgJkIgiKchAgwJCyADQagEaiADQegEaikCADcCACADQbAEaiADQfAE +aigCADYCACADIAMpANEENwPQAyADIANB2ARqKQAANwDXAyADQZgEaiADKQDXAzcAACADIAMpAuAE +NwKgBCADIAI6AJAEIAMgAykD0AM3AJEEDAYLIANBqAxqIgIgA0GMCmpBJBDNTxogA0GQBGogAkEk +EM1PGgwJC0EHIQIMEQsgAyADKQPoBzcClAQgA0EEOgCQBAwHC0EGIQIMDwsgA0GQBGogAhDpECAD +QagMahCIPwwBC0EAIQIMAQsLIANB6AdqEIQnDAELIANBkARqIAIQjSIgBEHAAmoQlkELIARB7AFq +EOESCyAEQegBahCWQQsgBEHYAWoQn0MMCAsgBEHYAWoQn0MgBEGgAWoiAigCAEUNACAEQbwCai0A +AEUNACACEJ9DCyAEQbwCakEAOgAAIANBkAFqIARBhAFqELsvIAMoApABIQIgBEHoAmogAygClAEi +BjYCACAEQeQCaiACNgIAIAINAiADQYgKaiICIAYQy0ogBEHAAmogAkEkEM1PGgsgBEHAAmoiAiAP +EMgeQQJGDQIgAhDBNSACIARB0ABqQTQQzU8aCyADQYgBaiAEQcACaiIGIA8QtA1BCSECIAMoAogB +IglBA0YNAyADKAKMASECIAYQ4zAgA0GAAWogCSACENoeIAMoAoABDQIgA0ENOgCQBCAEQZQBahCW +QSAEQYgBahCWQQwJCyADQZAEaiAGEI0iDAULQQghAgwBCyADQZAEaiADKAKEARCNIiAEQZQBahCW +QSAEQYgBahCWQQwGCyANIAI6AAAMagsgBEG8AmpBADoAAAwBCyADQZAEaiACEI0iCyAEQZQBahCW +QQsgBEGIAWoQlkELIARB0ABqEOMwCyAEQTxqEIVMIAMtAJAEIQILIANBoAVqIANBkARqQQFyQSMQ +zU8aIA1BAToAACACQf8BcSIGQQ5GDWMgA0HiAWogA0GgBWpBIxDNTxogEhCJECAGQQ1GBEAgBCAE +KAIMNgIgIARBJGogBEEQaigCACICNgIAIARBKGogA0GICmpB+AAQzU8aIARBoAFqIhJBADoAACAE +QSBqIQYMAQsgA0GcA2pBAXIgA0HiAWpBIxDNTxogAyACOgCcAwxkCyAEQZ0BaiIJQQA6AAAgBEHQ +AGpBBzYCACAEQcwAaiACNgIAIARByABqIAQoAiAiBzYCACAEQShqIQ1BBwshCCAEQZwBakEBOgAA +IARB1ABqIgwgCDYCAAJAQcST2wAoAgBBAksNAEHI+NoAEPs+IgpB/wFxRQ0AQQAhCEHI+NoAKAIA +IAoQ9S5FDQBByPjaACgCACIKQRxqIQUgCkEgaigCACILBEAgCkEoaigCACEQIApBJGooAgAhESAK +KAIcIQggA0EANgL4ByADIBA2AvQHIAMgETYC8AcgAyALNgLsBwsgAyAINgLoByADQcgFaiIIIANB +6AdqIgpB6NrEABDpLCADQfQHakIBNwIAIANB1MbEADYC2AQgA0ECNgLsByADQaDbxAA2AugHIANB +rAU2AqwMIAMgDDYCqAwgAyAKNgLUBCADIAg2AtAEIAMgA0GoDGo2AvAHIANBkARqIgggBSADQdAE +ahDgQUHI+NoAKAIAIAgQxDQLIANB6AdqIAcgAiAMKAIAEJUfIAMoAugHIgJFDQEgAygC7AchByAD +QdgFaiIIIANBgAhqKQIAIiY3AwAgA0HQBWoiCiADQfgHaikCACInNwMAIAMgAykC8AciKDcDyAUg +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 +aiIKIANB9AdqQTwQzU8aIANBogVqIgwgA0GzCGotAAA6AAAgAyADLwCxCDsBoAUgBEH4AWoiBSAI +OgAAIAQgAy8BqAI7APkBIARB+wFqIAktAAA6AAAgBEH8AWogJjcCACAEQYQCaiAKQTwQzU8aIARB +wAJqIAY6AAAgBCADLwGgBTsAwQIgBEHDAmogDC0AADoAAAJAIAQoAugBQeQAbw0AQcST2wAoAgBB +AUsNAEH099oAEPs+IgZB/wFxRQ0AQQAhCEH099oAKAIAIAYQ9S5FDQBB9PfaACgCACIGQRxqIQkg +BkEgaigCACIKBEAgBkEoaigCACEMIAZBJGooAgAhDSAGKAIcIQggA0EANgL4ByADIAw2AvQHIAMg +DTYC8AcgAyAKNgLsBwsgAyAINgLoByADQcgFaiIGIANB6AdqIghBuOTEABDpLCADQfQHakICNwIA +IANBrAVqQawFNgIAIANB1MbEADYCsAIgA0ECNgLsByADQYzhxAA2AugHIAMgBEGgAWo2AqgFIANB +rQU2AqQFIAMgBzYCoAUgAyAINgKsAiADIAY2AqgCIAMgA0GgBWo2AvAHIANB0ANqIAkgA0GoAmoQ +4EEgA0HwA2ogA0HYA2ooAgA2AgAgAyADKQLQAzcD6ANB9PfaACgCACADQegDahDENAsgBCgCSCEG +IANB6ABqIAUQ1D4gAyAEQagCajYC6AcgAyADKQNoNwLsByAEQcQCaiIJIAZBst/EACADQegHahCi +ISIGNgIAIAYgBCgC9AEQBw0HIANB4ABqIARB5AFqENAmIAMoAmQhBiADKAJgRQ0FIANB0ARqIAYQ +jSIMEQsgA0HoB2ogBEH0AmoiAiAPELkVIAMtAOgHQQJGDQogAykD6AchJiACEME1ICZC/wGDUEUN +CCAmQoD+A4NQRQRAIARBxAJqEJZBIARB+AFqEOESIARBMGoQiD8gBEH0AWoQlkEgBEHoAWooAgAh +AgwNC0HEk9sAKAIAQQFLDRRBgPjaABD7PiICQf8BcUUNFEEAIQ1BgPjaACgCACACEPUuRQ0UQYD4 +2gAoAgAiAkEcaiEGIAJBIGooAgAiCQRAIAJBKGooAgAhByACQSRqKAIAIQggAigCHCENIANBADYC ++AcgAyAHNgL0ByADIAg2AvAHIAMgCTYC7AcLIAMgDTYC6AcgA0GgBWoiAiADQegHaiIJQZzjxAAQ +6SwgA0HUBWpCAzcCACADQfwHakGtBTYCACADQfQHakGtBTYCACADQdTGxAA2ArACIANBBDYCzAUg +A0Hs48QANgLIBSADIARB8AFqNgL4ByADIARB7AFqNgLwByADQawFNgLsByADIARBoAFqNgLoByAD +IANByAVqNgKsAiADIAI2AqgCIAMgCTYC0AUgA0HQA2oiAiAGIANBqAJqEOBBQYD42gAoAgAgAhDE +NAwUCyADQeAEaiAGQQhqKQIANwIAIANB6ARqIAZBEGopAgA3AgAgA0HwBGogBkEYaigCADYCACAD +IAMtAOsHOgDTBCADIAMvAOkHOwDRBCADIAYpAgA3AtgEIAMgCTYC1AQgA0EJOgDQBAwSCyADQdAE +aiADKALsBxDpEAwQCyADQcgFaiICIANB7AdqQSQQzU8aIANB0ARqIAJBJBDNTxoMDgsgAyADKQPo +BzcC1AQgA0EEOgDQBAwNCyADIAY2AugHIANB6AdqIgYQlkEgBiAEQZQBaiAJEOIwIAMoAugHRQRA +IARBADYC0AIgBEHUAmogAygC7AciCDYCAAwLCyAEQdACaiADQegHakEkEM1PIgYoAgBFBEAgBEHU +AmooAgAhCAwLCyAEQfQCaiAGQSQQzU8aQQIhDQwJCyADQegHaiAEQfQCaiIGIA8QpjYgAygC6AdB +A0YNBSADKQPoByEmIAYQwTUgJkIgiKchCCAmpyIGQQJGDQkgAyAINgLMBSADIAY2AsgFIAYEfyAE +QfABagUgA0HYAGogBEEwahC8DSADKAJcIQYgAygCWARAIANB0ARqIAYQ6RAMCQsgAyAGNgLoByAD +QdAAaiAEQZQBaiAEQcQCaiADQegHahCHLCADKAJUIQYgAygCUA0CIAMgBjYCoAUgA0GgBWoQlkEg +A0HoB2oQlkEgBEHsAWoLIgYgBigCAEEBajYCACADQcgFahCbQQsgA0HoB2ogBEHcAWoQnSggAygC +6AdFBEAgBEEANgLQAiAEQdQCaiADKALsByICNgIADAMLIARB0AJqIANB6AdqQSQQzU8iBigCAARA +IARB9AJqIAZBJBDNTxpBASENDAgLIARB1AJqKAIAIQIMAgsgA0HQBGogBhCNIiADQegHahCWQQwF +CyAmQiCIpyECCyADQdAEaiACEI0iDAYLQQchAgwMC0EGIQIMCwtBACENDAELCyADQcgFahCbQQwB +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 +Ay8B6AM7APkBIARB+wFqIAktAAA6AAAgBEH8AWogJjcCACAEQYQCaiAIQTwQzU8aIARBwAJqIAY6 +AAAgBCADLwHoBzsAwQIgBEHDAmogCi0AADoAACAEKAJIIQYgA0EwaiACENQ+IAMgBEGoAmo2AugH +IAMgAykDMDcC7AcgBEHEAmogBkH45cQAIANB6AdqEKIhNgIAIARBmANqQQA6AAAgBEHUAmogAjYC +ACAEQdACaiAEKAJINgIAQQEhAgwQCyADQegHaiAEQdQCaiICIA8QpQMgAygC6AdBA0YNCSADQYgK +aiIGIANB6AdqQZwCEM1PGiACEKtAIANB0ARqIARB0AJqIgIoAgAgBhC2AyADLQDQBCIGQQtHDQog +A0GrBGoiBiADQewEaigCADYAACADQaMEaiIJIANB5ARqKQIANwAAIANBmwRqIgcgA0HcBGopAgA3 +AAAgAyADKQLUBDcAkwQgBEH4AWoQ/EghCCAEQewCakF/NgIAIAJBGGogBigAADYAACACQRBqIAkp +AAA3AAAgAkEIaiAHKQAANwAAIAIgAykAkwQ3AAAgBEHwAmogCEEBczoAACADQShqIAIQ1jMgAygC +LCECIAMoAigNCyADIAI2AugHIANBIGogBEGgAWogBEHEAmogA0HoB2oQhywgAygCJCECIAMoAiAN +DCADIAI2AtAEIANB0ARqEJZBIANB6AdqEJZBIANBGGogBEHwAWoQ0CYgAygCHCECIAMoAhgNAiAD +IAI2AugHIANB6AdqIgIQlkEgAiAEQegBahCdKCADKALoBw0BIARBADYC9AIgBEH4AmogAygC7Aci +AjYCAAwECyADQegHaiAEQZgDaiICIA8QuRUgAy0A6AdBAkYNBSADKQPoByEmIAIQwTUgJkL/AYNQ +RQ0CICZCgP4Dg1BFBEAgBEHQAmoQwjUgBEHEAmoQlkEgBEH4AWoQ4RIgBEEwahCIPyAEQfQBaigC +ACENDA0LQcST2wAoAgBBAUsNEkGk+NoAEPs+IgJB/wFxRQ0SQQAhDUGk+NoAKAIAIAIQ9S5FDRJB +pPjaACgCACICQRxqIQYgAkEgaigCACIJBEAgAkEoaigCACEHIAJBJGooAgAhCCACKAIcIQ0gA0EA +NgL4ByADIAc2AvQHIAMgCDYC8AcgAyAJNgLsBwsgAyANNgLoByADQdAEaiICIANB6AdqIglB4ObE +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 +NgIAIAVBDGogBEEUaikCADcCAAsgBEEwaiQADAELIAVBAjoABCAFQYCAgIB4NgIAIAVBCGogBDYC +AAsgAUEwaiQAIAMoAjBBgICAgHhGDQEgA0HoAGogA0HIAGooAgA2AgAgA0HgAGogA0FAaykCADcC +ACADQdgAaiADQThqKQIANwIAIAMgAykCMDcCUAwCCyAAIAMpAlw3AhAgAEEYaiADQeQAaikCADcC +ACAAQSBqIANB7ABqKAIANgIAIAMgAykATTcDMCADIANB1ABqKQAANwA3IABBCGogAykANzcAACAA +IAMpAzA3AAEgACABOgAADAQLIANBzABqIANBNGoQtCcgAy0ATCIBQQtHDQILIANBKGogA0HcAGoo +AgA2AgAgA0EYaiADQegAaigCADYCACADIANB1ABqKQIAIgs3A5ABIAMgA0HgAGopAgAiDDcDcCAD +IAs3AyAgAyAMNwMQIAMoAlALNgIEIABBCzoAACAAQQhqIAMpAyA3AgAgAEEUaiADKQMQNwIAIABB +EGogA0EoaigCADYCACAAQRxqIANBGGooAgA2AgAMAQsgACADLwBNOwABIABBA2ogAy0ATzoAACAD +QZgBaiADQdwAaigCACIFNgIAIANB+ABqIANB6ABqKAIAIgQ2AgAgAyADKQJUIgs3A5ABIAMgAykC +YCIMNwNwIAMoAlAhBiADKAJsIQcgAEEQaiAFNgIAIAAgCzcCCCAAIAw3AhQgAEEcaiAENgIAIAAg +BzYCICAAIAY2AgQgACABOgAACyACQdgBaiIAEL1JIAAQ5FEgACgCABCYBCACQYwCahCtGSACQegB +aigCAARAIAIoAuQBEJgECyACKAIMIgBBBU0gAEEER3FFBEAgAkEQahD6PgsgAigCAEECTwRAIAJB +BGoQ+j4LIANBoAFqJAAL1wcBAX8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgsBAgME +BQYHCAkKCwALIABBCGoQ0yQPCyAAQZgBahC3OSAAQShqEPMQIABBnAFqELg5IABBoAFqELg5IABB +pAFqELk5IABBqAFqIgAoAgAiASABKAIAIgFBAWs2AgAgAUEBRw0KIAAQ1C4PCyAAQZgBahC3OSAA +QShqEPMQIABBnAFqELg5IABBoAFqELg5IABBpAFqELk5IABBqAFqIgAoAgAiASABKAIAIgFBAWs2 +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 +QAJAIAVBAUYEQCACQZWAgIB4NgJADAELIAJByABqIARBCGopAwA3AwAgAkHQAGogBEEQaikDADcD +ACACQdgAaiAEQRhqKQMANwMAIAIgAUFAazYCFCACIAQpAwAiCTcDQCAJp0GVgICAeEcNAQsgAkFA +ayIEEJM+IAJByABqIAJBKGopAwA3AwAgAkHUAGogAikCNDcCACACQdwAaiACQTxqKAIANgIAIAIg +AikDIDcDQCACKAIwIQEgAkEQahDOIiACIAE2AlAgACAEEJIGIANBlICAgHhMDQIMBAsgAkFAayIB +EJM+IAJBCzoAQCABQYC/wwBBiL/DABChFSEBIABBAToAACAAIAE2AgQgAkEwahCLHiACQSBqEIse +CyACQRBqEM4iIANBlICAgHhKDQILIAIQix4MAQsgAkHIAGogAkEIaikDADcDACACIAIpAwA3A0Ag +AkGVgICAeDYCUCAAIAJBQGsQkgYLIAJB8ABqJAALzDQCIn8GfiMAQfAIayIKJAAgAb0hJgJAIAEg +AWIEQEECIQQMAQsgJkL/////////B4MiKkKAgICAgICACIQgJkIBhkL+////////D4MgJkI0iKdB +/w9xIg8bIidCAYMhKEEDIQQCQAJAAkBBAUECQQQgJkKAgICAgICA+P8AgyIrUCIHGyArQoCAgICA +gID4/wBRG0EDQQQgBxsgKlAbQQJrDgMAAQIDC0EEIQQMAgsgD0GzCGshBiAoUCEEQgEhKQwBC0KA +gICAgICAICAnQgGGICdCgICAgICAgAhRIgQbISdCAkIBIAQbISlBy3dBzHcgBBsgD2ohBiAoUCEE +CyAKIAY7AegIIAogKTcD4AggCkIBNwPYCCAKICc3A9AIIAogBDoA6ggCQAJ/AkACQAJAAkBBAyAE +QQJrQf8BcSIEIARBA08bIg8EQEHut9oAQe+32gBBmKDaACACGyAmQgBTGyEcQQEhBEEBICZCP4in +IAIbIQIgD0ECaw4CAgMBCyAKQQM2ApgIIApB8LfaADYClAggCkECOwGQCEEBIQRBACECQZig2gAh +HCAKQZAIagwECyAKQQM2ApgIIApB87faADYClAggCkECOwGQCCAKQZAIagwDC0ECIQQgCkECOwGQ +CCADRQ0BIApBoAhqIAM2AgAgCkEAOwGcCCAKQQI2ApgIIApBxbfaADYClAggCkGQCGoMAgtBdEEF +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 +JCIFQRh0IARBCHZyQf////8BcTYCZCACIAIoAkAiBEENdjYCiAEgAiACKAIoIgFBAnZB/////wFx +NgJsIAIgAUEbdCAFQQV2ckH/////AXE2AmggAiACKAIsIgVBAXQgAUEfdnJB/////wFxNgJwIAIg +AigCMCIBQQR0IAVBHHZyQf////8BcTYCdCACIAIoAjQiBUEHdCABQRl2ckH/////AXE2AnggAiAC +KAI4IgFBCnQgBUEWdnJB/////wFxNgJ8IAIgAigCPCIFQQ10IAFBE3ZyQf////8BcTYCgAEgAiAE +QRB0IAVBEHZyQf////8BcTYChAEgAkGMAWoiASACQcQAaiIEQdz00wAQwgIgBCABQSQQzU8aIAEg +AkHoAGoiBUG49NMAEMICIAUgAUEkEM1PGiAJIAUgBBClFiACQbABaiQADAELIAogBzYCACABQQRq +IQEgBUEBaiEFDAELCyAAIAkQpAcgCEEwaiQAIANB8AJqJAALCwvJCgIMfwF+IwBBoAFrIgMkACAB +An8CQAJAAkACQAJAAkACQAJAIAEtANgBQQFrDgMCAAQBCwALIAEgASgCACIENgIIIANBCGogASgC +BBDCMSADQcgAaiAEQThqQbixxwBBDSADKAIIIAMoAgwQlQ4gAy0ASCIEQQ1GDQEgA0GMAWogA0HY +AGopAgA3AgAgA0GUAWogA0HgAGopAgA3AgAgA0GcAWogA0HoAGooAgA2AgAgAyADLQBLOgB/IAMg +Ay8ASTsAfSADIAMpAlA3AoQBIAMgAygCTDYCgAEgAyAEOgB8DAULQYCjxwBBI0GQwccAEOYrAAsg +ASADKAJMNgIMIANByABqIAEoAghBuLHHAEENQQAQqiYgAUEMaiEEAkACQCADKAJIRQRAIAFBADYC +gAEgAUGEAWogAygCTCICNgIADAELIAFBgAFqIANByABqQTQQzU8iBSgCAA0BIAFBhAFqKAIAIQIL +IANB/ABqIAIQjSIgBBCWQQwECyADQTxqIAFBzABqIAVBNBDNT0G4sccAQQ0Q+yACQAJAIAMoAjxF +BEAgAUEANgJAIAFBxABqIAMoAkAiAjYCAAwBCyABQUBrIgUgAykCPCIPNwIAIAVBCGoiBiADQcQA +aigCADYCACAPpw0BIAFBxABqKAIAIQILIANB/ABqIAIQjSIMAwsgASAFKQIANwI0IAFBPGogBigC +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 +B2siCSQAIAkgARC3LToAFyAJQQhqIAFBKGoQzRcgCSAJLQAMOgCQBiAJIAkoAggiBjYCjAYgCUEY +aiIFIAZBCGoiExDAAiMAQYATayIGJAACQCAJQfgCaiILAn4CQCALAn4CQCALAn4CQCALAn4CQCAL +An4CQCALAn4CQCALAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQoAgBBAmsO +BgEABQIDBAALIAsgBUGwARDNT0GggICAeDYCsAEMHQsgBkGACGoiAiAEQQhqKAIAEKosIAZBkBBq +IgMgBUEAIAIQ/wUgBkHYAmogA0GwARDNTxoCQAJAAkAgBigCwBFB4f///wdqDgIBAgALIAZB4BJq +EPo+AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEQIAYoAsARQfX///8H +aiICIAJBFE8bDhMBAgMEBQYHCAkKCwwNDg8QERITAAsgBkHEEWoQ+j4MFAsgBkHQEWoQvEcgBkHo +EWoQ+j4gBkHwEWoQkEUgBkHEEWoQvz8MEwsgBkHgEWoQ+j4gBkHoEWoQkEUgBkHIEWoQvEcgBkGA +EmoQvz8gBkH4EWoiAigCAEUNEiACEPo+DBILIAZB3BFqEPo+IAZB5BFqEJBFIAZBxBFqEL8/IAZB +0BFqKAIAQQdHDREgBkHUEWoQ+j4MEQsgBkHcEWoQ+j4gBkHkEWoQkEUgBkHQEWoiAhCZLiACEKA9 +IAZBxBFqEL8/DBALIAZB4BFqEPo+IAZB6BFqEPo+IAZB+BFqEL8/IAZByBFqELxHDA8LIAZB0BFq +EPo+IAZB2BFqEPo+IAZBxBFqEL8/DA4LIAZB0BFqEPo+IAZB2BFqEPo+IAZB4BFqEPo+IAZBxBFq +EL8/DA0LIAZB0BFqEPo+IAZBxBFqEKpLIAZB2BFqEPo+DAwLIAZB9BFqEPo+IAZBxBFqEP4cIAZB +/BFqEPo+DAsLIAZB0BFqEIg/IAZBxBFqEM8/IAZB3BFqEPo+DAoLIAZBxBFqEOkbIAZB/BFqEPo+ +DAkLIAZBxBFqEIg/IAZB0BFqEPo+DAgLIAZB2BFqEMcZIAZBxBFqEIg/IAZB0BFqEPo+DAcLIAZB +xBFqEPo+DAYLIAZBxBFqEKlHDAULIAZB3BFqEMkpAkACQAJAAkACQAJAIAZBxBFqKAIADgcBAgME +BQAKAAsgBkHIEWoQzBkMCQsgBkHIEWoQ+j4MCAsgBkHIEWoQ+j4MBwsgBkHIEWoQ+j4MBgsgBkHI +EWoQqUcMBQsgBkHIEWoQukcMBAsgBkHAEWoQlQUgBkH8EWoQoR8gBkHQEmoQoEIMAwsgBkHQEWoi +AigCAARAIAIQ+j4LIAZBxBFqEPtADAILIAZBoBJqEIg/IAZByBFqEP89IAZBmBJqEPo+DAELAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQQMgBkHIEWoiAigCAEEDayIDIANBEE8bDg8PAQID +BAUGBwgJCgsMDQ4ACyAGQcwRahD6PgwOCyAGQcwRahC/PyAGQfARahD6PiAGQdgRahCIPyAGQeQR +ahCIPwwNCyAGQcwRaigCAEECTwRAIAZB0BFqEPo+CyAGQdgRaiICKAIAQQNHBEAgAhC/PyAGQfwR +ahD6PiAGQeQRahCIPyAGQfARahCIPwsgBkGEEmoQ+j4gBkGMEmoQ+j4MDAsgAhC/PyAGQZASahD6 +PiAGQdQRahCIPyAGQeARahCIPyAGQewRahCIPyAGQfgRahCIPyAGQYQSahCtSwwLCyAGQdARahD6 +PiAGQdgRahD6PiAGQegRahCqSwwKCyAGQdgRahD6PiAGQcwRahCqSyAGQeARahD6PgwJCyAGQfwR +ahD6PiAGQYQSahD6PiAGQcwRahD+HAwICyAGQeQRahD6PiAGQdgRahCIPyAGQcwRahDPPwwHCyAG +QYQSahD6PiAGQcwRahDpGwwGCyAGQdgRahD6PiAGQcwRahCIPwwFCyAGQdgRahD6PiAGQeARahDH +GSAGQcwRahCIPwwECyAGQcwRahD6PgwDCyAGQcwRahDJKQwCCwJAAkACQCAGQcwRaigCACICQQRr +QQAgAkEFa0ECSRsOAgACAQsgAkEESQ0BCyAGQdARahD6PgsgBkHYEWoQ+j4gBkHgEWoQ+j4MAQsg +BkHYEWoQ+j4gBkHMEWoQiD8LIAsgBkHYAmpBsAEQzU9BoICAgHg2ArABDBwLIAUoAgAOAgQFAwsg +BSgCAEECaw4EBgcFCAULIAUoAgBBBmsOAgkKCAsgBSkDAEIJUgRAIAsgBUGwARDNT0GggICAeDYC +sAEMGQsgBkHoDmoiByAFQQhqQagBEM1PGiAGQZAQaiEIIwBB0ANrIgUkACAEQQRqKAIEIgQoAgAh +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 +BEsEfyAJIAQ2AvwGIAkgAzYC+AYgCSAFNgL0BiAJIAA2AvAGIAYFQQALNgLsBiAJQdgGaiIAIAlB +7AZqIgFBmLLOABC1LSAJQaQDakGIss4ANgIAIAlBmANqQYiyzgA2AgAgCUGMA2pB+LHOADYCACAJ +QaADaiABNgIAIAlBlANqIAlB1AZqNgIAIAlBiANqIAlBuAZqNgIAIAlBxK7OADYCgAMgCSACQRxq +NgL0BSAJQQQ2AvAFIAkgADYCnAMgCSAJQcAGajYCkAMgCSAJQaQGajYChAMgCSAJQYwGajYC/AIg +CSAJQfgFajYC+AIgCSAJQfgCajYC7AUgCSAJQesFajYC7AZBiInbACgCACAJQewFahDENAsgCUGA +B2okAAvDBgIJfwF+IwBBoAFrIgMkACABAn8CQAJAAkACQAJAAkACQCABLQBMQQFrDgMDAAIBCwAL +IAEgASgCACIENgIIIAEgASgCBDYCDCAEKAJMIQQgAUHIAGpBADoAACABIARBCGo2AhALIAFBEGoi +BCACELoHIgJFDQEgAyACNgIUIAQQ2T8gA0EYaiICEPgLIANByABqIgQgA0EUahDVTBCDSyACQZTb +wgBBCiAEELYSENkiIAIgAygCFEEYaiABKAIMEKgKIAMoAhgiCUEFRwRAIAMpAyghDCADKAIkIQIg +AygCICEEIAMoAhwhBQwECyADIAMoAhw2AjwgAyADQSRqKAIAIgo2AkQgAyADQSBqKAIAIgs2AkBB +xJPbACgCAEEBSw0CQZyC2wAQ+z4iAkH/AXFFDQJBnILbACgCACACEPUuRQ0CQZyC2wAoAgAiAkEo +aigCACEFIAJBJGooAgAhBiACKAIcIQcgAyACQSBqKAIAIgQEfyADQQA2AiggAyAFNgIkIAMgBjYC +ICADIAQ2AhxBASEIIAcFQQALNgIYIANB4ABqIANBGGpBvP3CABDdLCADQSRqQgA3AgAgA0EBNgIc +IANB5P3CADYCGCADQaTJwgA2AiAgAyAEIAhLBH8gAyAINgKYASADIAU2ApQBIAMgBjYCkAEgAyAE +NgKMASAHBUEACzYCiAEgA0H0AGoiBSADQYgBaiIEQbz9wgAQ3SwgA0HcAGpBnP3CADYCACADQdgA +aiADQZwBajYCACADQZTJwgA2AlAgAyAFNgJUIAMgA0EYajYCTCADIANB4ABqNgJIIAMgA0EUajYC +nAEgBCACQRxqIANByABqEPJBQZyC2wAoAgAgBBDENAwCC0HgxsIAQSNBrP3CABDmKwALIABBBjYC +AEEDDAILIANBGGoiBiALIAoQjAUgA0EIaiAGEIlMIAMoAgghByADIAMoAgwiAhDuHyADKAIAIQUg +AygCBCIEIAcgAhDNTxogBhD7QBCGTyEMIAEoAgggDDcDQCADQTxqEIg/CyADQRRqEJpMIAAgDDcD +ECAAIAI2AgwgACAENgIIIAAgBTYCBCAAIAk2AgBBAQs6AEwgA0GgAWokAAvRBQEFfyMAQfABayIF +JAAgAUE0aiEIAkAgAUE8aigCACIJQYgnSQ0AIAVBADYCbCAFQQA2AlwgBSABKAI0IgY2AnAgBSAG +NgJgIAUgCUEAIAYbNgJ4IAUgAUE4aigCACIJNgJ0IAUgBkEARyIGNgJoIAUgCTYCZCAFIAY2Algg +BUEwaiAFQdgAahDKECAFKAIwIgZFDQAgBSAGKQMANwOAASAFQSBqIAggBUGAAWoQ1xcgBSgCKCIH +BH8gBSAHNgI4IAVBqAFqIgYgBxDwHCAFQRBqIAEgBhC9MCAFQZABaiAFQbABaikAADcDACAFQZgB +aiAFQbgBaikAADcDACAFQaABaiAFQcABaikAADcDACAFIAUpAKgBNwOIASAFQThqEO9CQQEFQQAL +IQcgBUGoAWogAUEoaiAFQYABahCkFiAFQUBrIAVBkAFqKQMANwMAIAVByABqIAVBmAFqKQMANwMA +IAVB0ABqIAVBoAFqKQMANwMAIAUgBSkDiAE3AzgLIAVB0AFqIAMQ8BwgBSAIIAIgAxCCFiIDNgJY +IAMEQCAFQdgAahDvQgsgBUHwAGogBUHoAWoiAykAADcDACAFQegAaiAFQeABaiIGKQAANwMAIAVB +4ABqIAVB2AFqIggpAAA3AwAgBSAFKQDQATcDWCAFIAEgBUHYAGogAhCjCSAERQRAIAVBwAFqIAMp +AAA3AwAgBUG4AWogBikAADcDACAFQbABaiAIKQAANwMAIAUgBSkA0AE3A6gBIAVB2ABqIAFBKGog +AiAFQagBahDRDAsgACAFKQDQATcAACAAIAc6ACAgAEEhaiAFKQM4NwAAIABBOWogBUHQAGopAwA3 +AAAgAEExaiAFQcgAaikDADcAACAAQSlqIAVBQGspAwA3AAAgAEEIaiAIKQAANwAAIABBEGogBikA +ADcAACAAQRhqIAMpAAA3AAAgBUHwAWokAAu0BgEFfyMAQaABayIHJAAgByAFNgIMIAcgBDYCCCAH +QfQAaiIEIAIQ8VEgB0GUAWoiAkGDEzYCACAHQYwBaiIFQYETNgIAIAdB3ABqIghCAzcCACAHQYIT +NgKEASAHQQM2AlQgB0HUj88ANgJQIAcgATYCgAEgByABQQhqNgKIASAHIAQ2ApABIAcgB0GAAWoi +CTYCWCAHQRBqIgogB0HQAGoiCxD8FSAEEIg/IAcgAUEoaigCACIBQSxqKQIANwJEIAcgAUE0aikC +ADcCaCAEIAMQ8VEgAkGDEzYCACAFQf0ANgIAIAhCAzcCACAHQf4ANgKEASAHQQM2AlQgB0HUj88A +NgJQIAcgBDYCkAEgByAHQegAajYCiAEgByAHQcQAaiIDNgKAASAHIAk2AlggB0EcaiIBIAsQ/BUg +BBCIPyAHQTBqIAogASAGGyIEQQhqKAIANgIAIAcgBCkCADcDKCAHQUBrIAEgCiAGGyIBQQhqKAIA +NgIAIAcgASkCADcDOCAIQgM3AgAgAkGuBTYCACAFQYMTNgIAIAdBAzYCVCAHQYiQzwA2AlAgB0GD +EzYChAEgByAJNgJYIAcgB0EIajYCkAEgByAHQThqNgKIASAHIAdBKGo2AoABIAMgCxD8FQJAQcST +2wAoAgANAEGEkdsAEPs+IgFB/wFxRQ0AQQAhBkGEkdsAKAIAIAEQ9S5FDQBBhJHbACgCACIBQRxq +IQIgAUEgaigCACIDBEAgAUEoaigCACEEIAFBJGooAgAhBSABKAIcIQYgB0EANgKQASAHIAQ2AowB +IAcgBTYCiAEgByADNgKEAQsgByAGNgKAASAHQdAAaiIBIAdBgAFqIgNBoJDPABC5LSAHQYwBakIB +NwIAIAdB6PzOADYCfCAHQQE2AoQBIAdBzJDPADYCgAEgB0GDEzYCnAEgByADNgJ4IAcgATYCdCAH +IAdBmAFqNgKIASAHIAdBxABqNgKYASAHQegAaiIBIAIgB0H0AGoQ4EFBhJHbACgCACABEMQ0CyAA +IAcpAkQ3AgAgAEEIaiAHQcwAaigCADYCACAHQThqEIg/IAdBKGoQiD8gB0GgAWokAAvJJwIOfwJ+ +IwBBkAFrIgUkACAFQSBqIAEgAhDKLSAFIAUoAiQiATYCMCAFIAUoAiAiAjYCLCAFQRhqIAMgBBDK +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 +KAIgKAAAIQMgAigCKCEOIAJCATcDkAEgAkJgNwOYASACQShqIQQgAkGAAWoiBgJ/AkACfgJAAkAC +QCACQZABaiIIKAIAQQFrDgICAAELIAQpAwAMAgsgBCAIKQMIIhM3AwAgBiATNwMIDAILIARBEGo1 +AgALIRMgCCkDCCIUQgBTIBMgEyAUfCIUVkcEQCAGQQI6AAQgBkEIakHgjtAANgIAQQEMAgsgBiAU +NwMIIAQgFDcDAAtBAAs2AgAgAigCgAFFBEAgAigCKCEPIAJBkAFqIAJBKGogAkHgAGpBIBCTEyAC +LQCQAUEERwRAIAIpA5ABIhNC/wGDQgRSDQILIAJBiAFqIAJBOGopAwA+AgAgAiACQTBqKQMANwOA +ASAJQQFGBEAgAkEYaiANIAogA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnIgAkFAaxCP +ISACIAIpAxg3ArgBIwBBEGsiAyQAIANBCGpBACAPIAJBgAFqIgQoAgQgBCgCCEGMx80AEJMsIAMo +AgwhBCACQRBqIgYgAygCCDYCACAGIAQ2AgQgA0EQaiQAIAIoAhAhCSACKAIUIQsgAkHgAGohCiMA +QdADayIDJAAgA0HAAmogAkG4AWooAgRBIBC9BUEAIQQDfyAEQcAARgR/QQAhBCADQZgDakHQws0A +KQMANwMAIANBkANqQcjCzQApAwA3AwAgA0GIA2pBwMLNACkDADcDACADQgA3A6ADIANBuMLNACkD +ADcDgAMgA0GAA2ogA0HAAmpBARCRPwNAIARBwABHBEAgA0HAAmogBGoiBiAGLQAAQeoAczoAACAE +QQFqIQQMAQsLIANBwANqIhBB0MLNACkDADcDACADQbgDaiIRQcjCzQApAwA3AwAgA0GwA2oiEkHA +ws0AKQMANwMAIANCADcDyAMgA0G4ws0AKQMANwOoAyADQagDaiINIANBwAJqIgZBARCRPyADQTBq +IA1BKBDNTxogA0EIaiIEIANBgANqQSgQzU8aIANBqAFqIgggBEHQABDNTxogA0H4AWoQ8UogA0EQ +aiAIQZgBEM1PGiADQgA3AwggCCAEQfDEzQAQsiogCCAJIAsQkQogBCAIQZgBEM1PGiAGEOA3IAQg +BhDMGiAQIANB2AJqKQAANwMAIBEgA0HQAmopAAA3AwAgEiADQcgCaikAADcDACADIAMpAMACNwOo +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 +DQAgASADai0AAEHFAEcNAEEBIQEgACADQQFqNgIIDAMLAkAgAkUNACAAKAIQIgNFDQBBAiEBQZ2X +2gBBAiADEMhPDQMLIAAQ3gYNASACQQFrIQIgACgCACIBDQALQQEhAQwBC0ECIQELIARBIGokACAB +C58KAgx/AX4jAEGAAWsiAyQAIwBBEGsiBSQAIAVBCGogASgCACIGIAYvAeYCIgkgASgCCCIIEJQx +IAUpAwghDyADQSBqIgRBGGogBiAIQRhsaiIHQegAaikDADcDACAEQRBqIAdB4ABqKQMANwMAIAQg +B0HYAGoiCikDADcDCCAKIAdB8ABqIAkgCEF/c2pBGGwQzk8aIAYgCUEBazsB5gIgBEEoaiAINgIA +IAQgBjYCICAEIA83AwAgBEEkaiABKAIENgIAIAVBEGokACADQRhqIgwgA0E4aikDADcDACADQRBq +Ig0gA0EwaikDADcDACADQQhqIg4gA0EoaikDADcDACADIAMpAyA3AwAgA0HEAGooAgAhASADQcgA +aigCACEIAkAgAygCQCIKLwHmAkEFTw0AIANBIGogCiABELgMAkACQAJAAkAgAygCIEEBaw4CAgAB +CyADIAg2AlwgAyADKQIkNwJUDAILIANBJGohASADQTxqKAIAIQQgA0E0aigCACEFIANBMGooAgAi +By8B5gIgA0E4aigCACIGLwHmAmpBC08EQCADQegAaiABQQhqKAIANgIAIAMgBDYCeCADIAY2AnQg +AyAFNgJwIAMgBzYCbCADIAEpAgA3A2AgA0HgAGpBARD1BCADIAQ2AlggAyAGNgJUIAMgCEEBajYC +XAwCCyADQegAaiABQQhqKAIANgIAIAMgBDYCeCADIAY2AnQgAyAFNgJwIAMgBzYCbCADIAEpAgA3 +A2AgA0HUAGogA0HgAGpBASAIEMocDAELIANBJGohASADQTxqKAIAIQUgA0E0aigCACEEIANBMGoo +AgAiBi8B5gIgA0E4aigCACIHLwHmAmpBC08EQCADQegAaiABQQhqKAIANgIAIAMgBTYCeCADIAc2 +AnQgAyAENgJwIAMgBjYCbCADIAEpAgA3A2AgA0HgAGpBARDKBCADIAg2AlwgAyAENgJYIAMgBjYC +VAwBCyADQegAaiABQQhqKAIANgIAIAMgBTYCeCADIAc2AnQgAyAENgJwIAMgBjYCbCADIAEpAgA3 +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 +RQ0AIABB1ABqEPtACyAAQQA7AfoCAkAgACgC1AJFDQAgAC0A+AJFDQAgAEHYAmoQiz4LIABBADoA ++AILIABBzAJqKAIARQ0AIAAtAPkCRQ0AIABBuAJqEPsfCyAAQQA6APkCCwvECAELfyMAQeAAayID +JAAgA0EgaiABEJMRIANBEGoiDCADQTBqKAIANgIAIANBCGoiDSADQShqKQIANwMAIAMgAykCIDcD +ACADQThqKAIAIQEgA0E8aigCACEIAkAgAygCNCIKLwHiAUEFTw0AIANBIGogCiABELoMAkACQAJA +AkAgAygCIEEBaw4CAgABCyADIAg2AhwgAyADKQIkNwIUDAILIANBJGohASADQTxqKAIAIQQgA0E0 +aigCACEFIANBMGooAgAiBi8B4gEgA0E4aigCACIHLwHiAWpBC08EQCADQcgAaiABQQhqKAIANgIA +IAMgBDYCWCADIAc2AlQgAyAFNgJQIAMgBjYCTCADIAEpAgA3A0AgA0FAa0EBEOcFIAMgBDYCGCAD +IAc2AhQgAyAIQQFqNgIcDAILIANByABqIAFBCGooAgA2AgAgAyAENgJYIAMgBzYCVCADIAU2AlAg +AyAGNgJMIAMgASkCADcDQCADQRRqIANBQGtBASAIEM0cDAELIANBJGohASADQTxqKAIAIQUgA0E0 +aigCACEEIANBMGooAgAiBy8B4gEgA0E4aigCACIGLwHiAWpBC08EQCADQcgAaiABQQhqKAIANgIA +IAMgBTYCWCADIAY2AlQgAyAENgJQIAMgBzYCTCADIAEpAgA3A0AgA0FAa0EBEMAFIAMgCDYCHCAD +IAQ2AhggAyAHNgIUDAELIANByABqIAFBCGooAgA2AgAgAyAFNgJYIAMgBjYCVCADIAQ2AlAgAyAH +NgJMIAMgASkCADcDQCADQRRqIANBQGtBACAIEM0cCyADKAIcIQggAygCGCEBIAMoAhQiCigCWCIE +RQ0AIAFBAWohByMAQRBrIgkkAANAAkAjAEEwayIFJAACQCAJQQRqIgYCfwJAAkAgBC8B4gEiC0EE +TQRAIAVBEGogBCAHELoMAkACQAJAIAUoAhBBAWsOAgECAAsgBUEUaiEEAkAgBUEgaigCAC8B4gEg +BUEoaigCAC8B4gFqQQtPBEAgBEEFIAtrEOcFQQAhBAwBCyAFIAQQpQYgBSgCACEEIAZBCGogBSgC +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 +QQFqOgAcIAMgCRCNEyIENgI4IAMgHDcCMCADIBY2AiwgAyARNgIoIAMgDDYCJCADIBc2AiAgAyAC +NgIcIAMgBTYCGAJAIAVBEEcEQCAEDQEgA0EQaiADQSBqIgxBEGopAgA3AwAgA0EIaiAMQQhqKQIA +NwMAIAMgDCkCADcDAAwICyAERQ0GIANBOGoQ3x0MBgsgA0EYahDKQEEQIQUgBCECDAYLIANBGDYC +GCAJIANBGGoQgDELIQIgD0EQNgIAIA8gAjYCBAwGCyADQdgAahDJQAtBECEFCyAJIAktABxBAWo6 +ABwgAyAJEJ8MIgQ2AjggAyAcNwIwIAMgFzYCLCADIBY2AiggAyAMNgIkIAMgETYCICADIAI2Ahwg +AyAFNgIYAkAgBUEQRgRAIAQNAQwCCyAERQRAIANBEGogA0EgaiIMQRBqKQIANwMAIANBCGogDEEI +aikCADcDACADIAwpAgA3AwAMAwsgA0EYahDKQEEQIQUgBCECDAILIANBOGoQ3x0LQRAhBQsgBUEQ +Rg0AIA8gAykDADcCCCAPIAI2AgQgDyAFNgIAIA9BGGogA0EQaikDADcCACAPQRBqIANBCGopAwA3 +AgAMAQsgCSACEP9QIQIgD0EQNgIAIA8gAjYCBAsgA0GAAWokACAYQQhqIA8QkRwgE0EIaiAYKQMI +NwMAIBhBMGokACATIBMoAgggEygCDBC+PiATKAIEIQIgCyATKAIANgIAIAsgAjYCBCATQRBqJAAg +CygCAEEARyEFIAsoAgQMAQtBASEFIAsoAhALNgIEIAggBTYCACALQSBqJAAgCCgCBCEFAkACQCAI +KAIABEAgBSECDAELIAVFBEBBACAIQS9qQbyCxwAQ3hchAgwBCyAIIAU2AiggCEEMaiAIQSBqEOQH +An8CQAJAAkAgCCgCDA4DAAECAQtBASAIQS9qQbyCxwAQ3hcMAgsgCCkCFCEdIAgoAhAhAgwDCyAI +KAIQCyECIAhBKGoQ8DkLQQAhBQsgDiAOLQAcQQFqOgAcIAggDhCfDCIJNgIcIAggHTcCFCAIIAI2 +AhAgCCAFNgIMIAUEQCAJRQ0CIAhBDGoQs0ggCSECDAELIAlFDQAgCEEcahDfHQsgDiACEP9QIQIg +EEEANgIAIBAgAjYCBAwCCyAQIB03AgggECACNgIEIBAgBTYCAAwBCyAIQRg2AgwgDiAIQQxqEIAx +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 +AHhFBEAgAi0AeSIDQQNHBEACQAJAAkAgAw4CAAECCyAaRQRAIAJBzIrHAEEKEPEfNgJwDAYLIAJB ++ABqIAJBqAFqENA4IAItAHhFDQggAiACKAJ8NgJwDAULIA4EQCACQYyUxwBBDRDxHzYCcAwFCyAC +QfgAaiACQagBahDcOCACKAJ4RQ0GIAIgAigCfDYCcAwECyACQagBahCsPyIDRQ0HIAIgAzYCcAwD +CwJAIBpFBEAgAkHuAWogAkHOAWotAAA6AAAgAkHYAWogAkG4AWopAwA3AwAgAkHgAWogAkHAAWop +AwA3AwAgAkHoAWogAkHIAWotAAA6AAAgAiACLwHMATsB7AEgAiACKQOwATcD0AEMAQsgAkH4AGpB +zIrHAEEKELpOIAItAHgEQCACIAIoAnw2AnAMBAsgAkHuAWogAi0AezoAACACQYACaiACQZABaikC +ACIkNwMAIAJB2AFqIAJBiAFqKQIANwMAIAJB4AFqICQ3AwAgAkHoAWogAkGYAWotAAA6AAAgAiAC +LwB5OwHsASACIAJBgAFqKQIANwPQASACQfwAaigCACETCyAORQRAIAJB+ABqQYyUxwBBDRDoTCAC +KAJ4DQIgAigCfCEXCyACQdgAaiACQdgBaikDADcDACACQeAAaiACQeABaikDADcDACACQegAaiAC +QegBai0AADoAACACIAIvAewBOwFwIAIgAikD0AE3A1AgAiATNgBzIAIgAkHuAWotAAA6AHJBASET +QQAMAwsgAiACKAJ8NgJwDAELIAIgAigCfDYCcAtBACETQQELIQNBASEKIAUgBS0AJEEBajoAJCAF +EI0TIQcgAkH/AGogAigAczYAACACQYsBaiACQdgAaikDADcAACACQZMBaiACQeAAaikDADcAACAC +QZsBaiACQegAai0AADoAACACIAM2AnggAiAHNgKgASACIBc2ApwBIAIgAigCcDYCfCACIAIpA1A3 +AIMBAkACQCADRQRAIAciA0UEQCACQRBqIAJBiAFqKQIANwMAIAJBGGogAkGQAWopAgA3AwAgAkEg +aiACQZgBaikCADcDACACIAJBgAFqKQIANwMIQQAhCiACKAJ8IQMLIAdFIQ4gE0UNAQwCC0EBIQ4g +AigCfCEDDAELIAJB/ABqEN8dCyAHRSAORXINByACQaABahDfHQwHCyACKAJ8IRdBASEODAELIAJB +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 +AnggAiACQcMAajYCcCACIAJBxABqNgJoIAIgAkE8ajYCYCACQcwCakEDOgAAIAJByAJqQQg2AgAg +AkHAAmpCoICAgNAANwIAIAJBuAJqQoCAgIAgNwIAIAJBrAJqQQM6AAAgAkGoAmpBCDYCACACQaAC +akKggICAwAA3AgAgAkGYAmpCgICAgCA3AgAgAkGMAmpBAzoAACACQYgCakEINgIAIAJBgAJqQqCA +gIAwNwIAIAJB+AFqQoCAgIAgNwIAIAJB7AFqQQM6AAAgAkHoAWpBCDYCACACQeABakKggICAIDcC +ACACQdgBakKAgICAIDcCACACQcwBakEDOgAAIAJByAFqQQg2AgAgAkHAAWpCoICAgBA3AgAgAkG4 +AWpCgICAgCA3AgAgAkECNgKwAiACQQI2ApACIAJBAjYC8AEgAkECNgLQASACQQI2ArABIAJBAzoA +rAEgAkEANgKoASACQiA3AqABIAJBAjYCmAEgAkECNgKQASACQdwAakEGNgIAIAJB1ABqQQY2AgAg +AkEGNgJMIAJBkM3XADYCSCACIAQ2AlggAiADNgJQIAEgAkHIAGoQj0UMAQsgAkGcAWpCATcCACAC +QQI2ApQBIAJB2M3XADYCkAEgAkGYGDYCZCACIAA2AmAgAiACQeAAajYCmAEgASACQZABahCPRQsg +AkHQAmokAAvpBQEIfyMAQcAFayIDJAACQAJAAkACQAJAAkAgAS0ArAFBAWsOAwMAAgELAAsgASAB +KQMINwMoIAFBgAFqQQA6AAAgAUH4AGogASgCqAE2AgAgASABKQMANwNIIAFBMGogAUEQaikDADcD +ACABQThqIAFBGGopAwA3AwAgAUFAayABQSBqKQMANwMACyADQZADaiABQcgAaiIEIAIQowJBAyEC +IAMoAvgDIgVBA0cNASAAQQQ2AmAMAgtB4MbCAEEjQbyIwwAQ5isACyADQShqIANBkANqQegAEM1P +GiADQSBqIgIgA0GUBGoiBigCADYCACADQRhqIgcgA0GMBGoiCCkCADcDACADQRBqIgkgA0GEBGoi +CikCADcDACADIAMpAvwDNwMIIAQQxykCQCAFQQJHBEAgA0GQA2oiBCADQShqQegAEM1PGiAKIAkp +AwA3AgAgCCAHKQMANwIAIAYgAigCADYCACADIAU2AvgDIAMgAykDCDcC/AMgA0GYBGoiAiAEEL1E +IANBwARqIAIgAUEoahCUCAJAIAMoAqAFIgJBAkcEQCADQbACaiADQcAEakHgABDNTxogA0GoAmog +A0G8BWooAgA2AgAgA0GgAmogA0G0BWopAgA3AwAgA0GYAmogA0GsBWopAgA3AwAgAyADKQKkBTcD +kAIMAQsgA0HABGoQ+EILIANBkANqENI7IANBsAFqIANBsAJqQeAAEM1PGiADQagBaiADQagCaigC +ADYCACADQaABaiADQaACaikDADcDACADQZgBaiADQZgCaikDADcDACADIAMpA5ACNwOQAQwBCyAD +QbABaiADQShqQSQQzU8aQQMhAgsgACADQbABakHgABDNTyIAIAI2AmAgACADKQOQATcCZCAAQewA +aiADQZgBaikDADcCACAAQfQAaiADQaABaikDADcCACAAQfwAaiADQagBaigCADYCAEEBIQILIAEg +AjoArAEgA0HABWokAAuNBQECfyMAQYABayICJAACQAJAAkAgASgCAEEDRgRAIAJBATYCNCACQeAA +aiIDIAFBBGoQok0gAkFAayADEPYkIAItAEAiAUEGRg0BIAJBEGogAkHQAGopAwA3AwAgAkEgaiAC +QTxqKAIANgIAIAIgAi0AQzoAAyACIAIvAEE7AAEgAiACKQNINwMIIAIgAikCNDcDGAwCCyACQShq +IAEQiiwgAkE0aiIDIAFBDGoQ4S8gAkHgAGoiASADENRKIAJBQGsgARD2JCACLQBAIgFBBkcEQCAC +QRBqIAJB0ABqKQMANwMAIAJBIGogAkEwaigCADYCACACIAItAEM6AAMgAiACLwBBOwABIAIgAikD +SDcDCCACIAIpAig3AxgMAgsgAigCRCEBIABBBjoAACAAIAE2AgQgAkEoahCeQAwCCyACKAJEIQEg +AEEGOgAAIAAgATYCBCACQTRqEJ5ADAELIAIgAigCRDYCBCACIAE6AAAgAkHgAGpBACACEPpJAkAC +QCACKAJgIgFBAkcEQCACQdAAaiACQfAAaikDADcDACACQdgAaiACQfgAaikDADcDACACIAIpA2g3 +A0ggAiACKAJkNgJEIAIgATYCQCACQUBrIAJBGGoQrw0iAQ0BIAIgAjYCYCACQeAAaiACQUBrEKEL +IgFFBEAgAkH4AGogAkHYAGopAwA3AwAgAkHwAGogAkHQAGopAwA3AwAgAkHoAGogAkHIAGopAwA3 +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 +ENEsIANBEGogBCAFQdABbGoiB0HQARDNTxogByAHQdABaiAGIAVBf3NqQdABbBDOTxogBCAGQQFr +OwH6EiABKAIEIQYgCEHgAWoiByADQeABEM1PIgFB6AFqIAU2AgAgAUHkAWogBjYCACABIAQ2AuAB +IANB4AFqJAAgCCAHQeABEM1PIgNByANqKAIAIQggA0HEA2ooAgAhAQJAAkAgAygCwAMiCS8B+hJB +BU8NACADQeABaiAJIAEQvAwCQAJAAkACQCADKALgAUEBaw4CAgABCyADIAg2AtwDIAMgAykC5AE3 +AtQDDAILIANB5AFqIQEgA0H8AWooAgAhBCADQfQBaigCACEGIANB8AFqKAIAIgcvAfoSIANB+AFq +KAIAIgUvAfoSakELTwRAIANB6ANqIAFBCGooAgA2AgAgAyAENgL4AyADIAU2AvQDIAMgBjYC8AMg +AyAHNgLsAyADIAEpAgA3A+ADIANB4ANqQQEQ/AQgAyAENgLYAyADIAU2AtQDIAMgCEEBajYC3AMM +AgsgA0HoA2ogAUEIaigCADYCACADIAQ2AvgDIAMgBTYC9AMgAyAGNgLwAyADIAc2AuwDIAMgASkC +ADcD4AMgA0HUA2ogA0HgA2pBASAIENEcDAELIANB5AFqIQEgA0H8AWooAgAhBiADQfQBaigCACEE +IANB8AFqKAIAIgUvAfoSIANB+AFqKAIAIgcvAfoSakELTwRAIANB6ANqIAFBCGooAgA2AgAgAyAG +NgL4AyADIAc2AvQDIAMgBDYC8AMgAyAFNgLsAyADIAEpAgA3A+ADIANB4ANqQQEQ2gQgAyAINgLc +AyADIAQ2AtgDIAMgBTYC1AMMAQsgA0HoA2ogAUEIaigCADYCACADIAY2AvgDIAMgBzYC9AMgAyAE +NgLwAyADIAU2AuwDIAMgASkCADcD4AMgA0HUA2ogA0HgA2pBACAIENEcCyADKALcAyEIIAMoAtgD +IQEgAygC1AMiCSgC8BEiBUUNACABQQFqIQsjAEEQayIHJAADQAJAIwBBMGsiBCQAAkAgB0EEaiIG +An8CQAJAIAUvAfoSIgpBBE0EQCAEQRBqIAUgCxC8DAJAAkACQCAEKAIQQQFrDgIBAgALIARBFGoh +BQJAIARBIGooAgAvAfoSIARBKGooAgAvAfoSakELTwRAIAVBBSAKaxD8BEEAIQUMAQsgBCAFEKQG +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 +aiAEQSBqKQMANwMAIABBJGogBEEQaigCADYCAAwBCyAAQQY2AhgLIARBMGokAAuVCgEJfyMAQaAC +ayIDJAAjAEHwAGsiBSQAIAEoAgAiBi8B1gkhByAFQRBqIAYgASgCCCIIQRhsaiIEQRBqKQIANwMA +IAVBCGogBEEIaikCADcDACAFIAQpAgA3AwAgBCAEQRhqIAcgCEF/c2oiBEEYbBDOTxogBUEYaiAG +IAhB2ABsaiIJQYgCaiIKQdgAEM1PGiAKIAlB4AJqIARB2ABsEM5PGiAGIAdBAWs7AdYJIAEoAgQh +BCADQfgAaiIHIAVB8AAQzU8iAUH4AGogCDYCACABQfQAaiAENgIAIAEgBjYCcCAFQfAAaiQAIANB +CGogB0HwABDNTxogA0HwAWooAgAhCCADQewBaigCACEBAkAgAygC6AEiCi8B1glBBU8NACADQfgA +aiAKIAEQvgwCQAJAAkACQCADKAJ4QQFrDgICAAELIAMgCDYC/AEgAyADKQJ8NwL0AQwCCyADQfwA +aiEBIANBlAFqKAIAIQUgA0GMAWooAgAhBCADQYgBaigCACIHLwHWCSADQZABaigCACIGLwHWCWpB +C08EQCADQYgCaiABQQhqKAIANgIAIAMgBTYCmAIgAyAGNgKUAiADIAQ2ApACIAMgBzYCjAIgAyAB +KQIANwOAAiADQYACakEBEJ8EIAMgBTYC+AEgAyAGNgL0ASADIAhBAWo2AvwBDAILIANBiAJqIAFB +CGooAgA2AgAgAyAFNgKYAiADIAY2ApQCIAMgBDYCkAIgAyAHNgKMAiADIAEpAgA3A4ACIANB9AFq +IANBgAJqQQEgCBDLHAwBCyADQfwAaiEBIANBlAFqKAIAIQQgA0GMAWooAgAhBSADQYgBaigCACIG +LwHWCSADQZABaigCACIHLwHWCWpBC08EQCADQYgCaiABQQhqKAIANgIAIAMgBDYCmAIgAyAHNgKU +AiADIAU2ApACIAMgBjYCjAIgAyABKQIANwOAAiADQYACakEBEIsEIAMgCDYC/AEgAyAFNgL4ASAD +IAY2AvQBDAELIANBiAJqIAFBCGooAgA2AgAgAyAENgKYAiADIAc2ApQCIAMgBTYCkAIgAyAGNgKM +AiADIAEpAgA3A4ACIANB9AFqIANBgAJqQQAgCBDLHAsgAygC/AEhCCADKAL4ASEBIAMoAvQBIgoo +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 +ECAIQQhrIQgMAAsACyAEIAMoAhw2AgQgBEEGOgAADAILIANBI2ogA0EQaigCADYAACAEQQQ6AAAg +AyADKQMINwAbIAQgAykAGDcAASAEQQhqIANBH2opAAA3AAAMAQsgAygCHCEFIARBBjoAACAEIAU2 +AgQgA0EIahDoSwsgA0EwaiQAIAEtALgBQQZHDQEgASgCvAEhAyABQawBahCIPwsgBkEGOgAAIAYg +AzYCBCABQThqEMo4DAQLIAwgAUHIAWopAwA3AwAgDSABQcABaikDADcDACABIAEpA7gBNwNYIAFB +kAFqIgMgDiABQawBaiABQdgAahDUDCADEJVDDAALAAsgBiABKAJcNgIEIAZBBjoAAAwBCyABQfAA +aiABQdAAaikDADcDACABQegAaiABQcgAaikDADcDACABQeAAaiABQUBrKQMANwMAIAEgASkDODcD +WCAGIAFB2ABqEKsaCyABQdABaiQADAELQaCuxgBBKEGYtcYAEOYrAAsgAi0AaEEGRg0BIAJB4ABq +IAJB+ABqKQMANwMAIAJB2ABqIAJB8ABqKQMANwMAIAIgAikDaDcDUCACQegAaiIBIAJBOGogAkHE +AGogAkHQAGoiAxDUDCABEONCIAJB9ABqIAJBQGsoAgA2AgAgAiACKQI4NwJsIAJBBToAaCADIAEQ +yRUgAigCUCIBQYCAgIB4RwRAIAIgAikCVDcCiAEgAiABNgKEASACQYQBahCvQSEBIAJB6ABqEM4w +IABBCGogATYCACAAIAs2AgQgAEEANgIADAMLIAIoAlQhASAAQQE2AgAgACABNgIEIAJB6ABqEM4w +IAJBNGoQlkEMAgsQ5xMhASAAQQE2AgAgACABNgIEIAJBOGoQzBkgAkE0ahCWQQwBCyACIAIoAmw2 +AlBB2PTDAEErIAJB0ABqQYT1wwBBzIDEABCJGAALIAJBkAFqJAAL+w8CEX8CfiMAQZABayIDJAAg +A0EwaiABQQhqKAIANgIAIAMgASkCADcDKCABKAIMIQEgAyADQShqEK9BIgw2AjQgA0EANgJAIANB +ADYCOCADQRBqIAFBACABKAIIQYCU69wDRxsQtRogAykDGCETAkACQCADNQIQUCICRSADQSBqKQMA +IhRCAFJxRQRAIAIgFFBFckUEQCADQQhqQQcQ7h8gAygCCCEEIAMoAgwiAkHcgMQAKAAANgAAIAJB +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 +3CIMCgsCQAJAAkAgAEG4CmotAAAOBQoLCwABCwsgAEHMCmoQ2SwMAQsCQAJAAkACQAJAIABB6Axq +LQAADgUABAQBAgQLIABBwApqENwiIABBuAxqEPtADAMLIABB8AxqEO4/DAELIABBgAtqEIw+CyAA +QdwMahCIPyAAQdAMahD7QCAAQegKahDcIgsgAEHYCWoQxCkLIABBuQpqQQA6AAAgAEG6CmotAABF +DQYgAEHACmoQ+0AMBgsgAEHgCGoiARDoKiABENkiDAcLIABB7AdqEPA/DAcLIABBqARqENo/CyAA +QeACaigCAEECRg0JIABBgAJqEMQ7DAkLIABBsARqEMQ7DAcLIABBqARqEPEmDAcLIABBADoAugog +AEG7CmotAABFDQELIABB4AhqENwiCyAAQdkIai0AAARAIABBsAhqENkiCyAAQQA6ANkICyAAQZwH +agsQ4RILIABBsAVqEMQ7IABBnQ5qQQA6AAALIABBoARqLQAABEAgAEGAA2oQxDsLIABBADoAoAQL +IABBtAFqEOESCyAAQeQAakEAOgAACyAALQBERQ0AIAAQ2SILIAAQmAQLhwUCCH8BfiMAQfAAayIC +JAAgAkEYaiABELwWAkACQAJ/IAItABhFBEAgAi0AGQ0CIAJBBTYCSCABIAJByABqEIAxDAELIAIo +AhwLIQMgAEEBNgIAIAAgAzYCBAwBCyAAAn8CQCACLQAaQfsARwRAIAEgAkHvAGpBlJrHABCGBSED +DAELIAEgAS0AJEEBayIDOgAkIANB/wFxBEAgARC+QSACIAE2AgQgAkEBOgAIIAJBADYCFCACQQA2 +AgwgAkHIAGpBAXIhAwJ/An8CQANAIAJBOGogAkEEahCMByACKQM4IgpCAlENASAKUEUEQCACKQNA +IQogAkHIAGogAkEEahDQOCACLQBIBEAgAigCTAwECyACQTBqIANBGGopAAA3AwAgAkEoaiADQRBq +KQAANwMAIAJBIGogA0EIaikAADcDACACIAMpAAA3AxggAkHIAGogAkEMaiAKIAJBGGoQ0QwMAQsL +IAIoAgwhAyACKQIQIQpBASEFQQAMAgsgAigCQAshAyACQQxqEMMZQQELIQdBASEIIAEgAS0AJEEB +ajoAJCACIAEQjRMiBDYCWCACIAo3AlAgAiADNgJMIAIgBzYCSCACQcwAaiEJAkACQAJAIAdFBEAC +QCAEBEBBASEGIAQhAyAFRQ0BDAMLIAUNBAsgBEUhCCAJEN8dDAILQQEhBiAFRQ0BCyAJEMMZIAIo +AlghBCAHIQgLIAhFIARFckUEQCACQdgAahDfHQsgBg0CCyAAIAM2AgQgAEEIaiAKNwIAQQAMAgsg +AkEYNgJIIAEgAkHIAGoQgDEhASAAQQE2AgAgACABNgIEDAILIAAgASADELxSNgIEQQELNgIACyAC +QfAAaiQAC6IFAQZ/IwBB8ABrIgMkACADQQRqIAEoAjhBCGoQgS4CQCADKAIERQRAIANBDGooAgAh +BgJAAkAgAygCCCACKAIIIgVBLGooAgAgBUEwaigCABCCISIERQ0AIAQgBUE0aigCACAFQThqKAIA +EIchIgRFDQACf0EAIAQoAgANABogA0HMAGoiASACEOpIIANBHWogBEEcaikAADcAACADQRVqIARB +FGopAAA3AAAgA0ENaiAEQQxqKQAANwAAIANBAToABCADIAQpAAQ3AAVBASABIANBBGoQ3yxFDQAa +IARBJGooAgAhBUECCyEBDAELIAYgBigCAEEBazYCACADQcwAaiABKAI8QQhqEIEuIAMoAkwNAkEA +IQEgA0EANgIYIANBADYCCCADQdQAaigCACEGIAMgAygCUCIHKAIEIgg2AiAgAyAHKAIAIgQ2Ahwg +AyAINgIQIAMgBDYCDCADIAcoAghBACAEGzYCJCADIARBAEciBDYCFCADIAQ2AgQCQANAIANBBGoQ +lzEiBEUNASAEQQRqIAUoAiwgBSgCMBCCISIERQ0AIAQgBSgCNCAFKAI4EIchIgRFDQALIAQoAgAN +ACADQStqIgcgAhDqSCADQeUAaiAEQRxqKQAANwAAIANB3QBqIARBFGopAAA3AAAgA0HVAGogBEEM +aikAADcAAEEBIQEgA0EBOgBMIAMgBCkABDcATSAHIANBzABqEN8sRQ0AIARBJGooAgAhBUECIQEL +CyAGIAYoAgBBAWs2AgAgACAFNgIEIAAgATYCACADQfAAaiQADwsgAyADKQIINwJMQdCkzABBKyAD +QcwAakGcpcwAQei8zAAQiRgACyADIAMpAlA3AgRB0KTMAEErIANBBGpBrKXMAEH4vMwAEIkYAAu2 +BQEBfwJAAkACQCAAKAIAQeH///8Hag4CAQIACyAAQaABahD6PgJAAkACQAJAAkACQAJAAkACQAJA +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 +QYABaikDADcDACAEIAQpA3g3A6gBIAVBAWsgD0cNBSADLwHmAiIGQQtPDQYgAyAGQQFqIgU7AeYC +IAMgBkEMbGoiAkEIaiAoNwIAIAJBBGogETYCACADIAZBFGxqIgZBiAFqIAQpA6gBNwIAIAZBkAFq +IARBsAFqKQMANwIAIAZBmAFqIARBuAFqKAIANgIAIAMgBUECdGpB6AJqIAc2AgAgByAFOwHkAiAH +IAM2AgALIBsgHzYCCCAbICE2AgQgGyAgNgIAIARBwAFqJAAMBgtBtIPAAEE1QeyDwAAQ5isACyAM +QQxBpIPAABDjGwALQcyCwABBKEH0gsAAEOYrAAtB4IDAABCjSwALQfyBwABBMEGsgsAAEOYrAAtB +8IDAAEEgQbyCwAAQ5isACyAOKAIMIgMgAygCCEEBajYCCCALKAI0IAsoAjxBFGxqGgsgC0HQAGok +ACATQYCAgIB4NgIADAILIA1BLGooAgAhAyANKQIkISggChCIPwsgE0EQaiAopyADQRRsaiIDQZgB +aiIGKAIANgIAIBNBCGogA0GQAWoiBykCADcCACATIANBiAFqIgMpAgA3AgAgAyAFKQIANwIAIAcg +BUEIaikCADcCACAGIAVBEGooAgA2AgALIA1BMGokACAIKAJYQYCAgIB4Rg0BIAhB2ABqEL1HDAEL +CyAIKAIQIQYgCCkCFCEpQQEhF0EACyEHQQEhBSAQIBAtABxBAWo6ABwgCCAQEI0TIgM2AmggCCAp +NwJgIAggBjYCXCAIIAc2AlggCEHcAGohAgJAAkACQCAHRQRAAkAgAwRAQQEhGiADIQYgF0UNAQwD +CyAXDQQLIANFIQUgAhDfHQwCC0EBIRogF0UNAQsgAhDvBiAIKAJoIQMgByEFCyAFRSADRXJFBEAg +CEHoAGoQ3x0LIBoNAgsgCSAGNgIEIAlBCGogKTcCAEEADAILIAhBGDYCWCAQIAhB2ABqEIAxIQMg +CUEBNgIAIAkgAzYCBAwCCyAJIBAgBhD/UDYCBEEBCzYCAAsgCEHwAGokACAJKAIARQ0CIAkoAgQh +AwsgCUHEAGoQ+j4LIAlBHGoQwQdBACECQQEMAwsgCUEwaiAZQQhqKAIANgIAIAkgGSkCADcDKCAJ +IAlBHGogFiAlIAlBKGoQ8wsgCSgCAEUNASAZEO8GDAELCyAJKAIcIQMgCSkCICErQQEhAkEACyEF +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 +IAFBMGoQ9iggAkHQAWogGTcDACACQcABaiAVNwMAIAIgAzYC8AEgAiAaNwPIASACIBg3A7gBIAIg +FzcDsAEgAiAWNwOoASAGIAJBqAFqQdAAEM1PGgsgAkGYAmogAkHIAGooAgA2AgAgAiACKQJANwOQ +AiACNQJQIAI1ArACQiCGhCEVIAIoAqQCIQwgAigCoAIhCyACKAKcAiEJIAIoAkwhCiACKAK0AiEB +IAIoArgCIQ0gAikDqAIhFkGDgICAeAwHCyACQbACaiAFQQRqEMUeIAJBQGsgBUEQahDFHiAFQRxq +KAIAIgMEQBCyPyEKIAJBqAFqIAMQ9iggA0EMahC6FCEDIAogAikCqAE3AgAgAiADNgK0ASAKQQhq +IAJBsAFqKQIANwIACyACQZgCaiACQcgAaigCADYCACACIAIpAkA3A5ACIAIoArgCIQwgAigCtAIh +CyACKAKwAiEJQYSAgIB4DAYLIAJBqAFqIAVBBGoQxR4gAkG0AWogBUEQahCqFiACQZgCaiACQbwB +aigCADYCACACIAIpArQBNwOQAiACKAKwASEMIAIoAqwBIQsgAigCqAEhCSACKALAASEKIAI1AsQB +IRVBhYCAgHgMBQsgAkFAayAFQRBqEMUeIAVBKGoiASgCAAR/IAJBEGogARD0HyACKAIUIQ0gAigC +EAVBAAshASACQagBaiAFQRxqEIw9AkAgBSgCBEUNAEEBIQkgBUEIaiIDKAIARQ0AIAJBCGogAxD0 +HyACKAIMIQwgAigCCCELCyACQZgCaiACQcgAaigCADYCACACIAIpAkA3A5ACIAIoAqgBIQogAikC +rAEhFUGGgICAeAwECyACQagBaiAFQQRqEMUeIAJBtAFqIAVBEGoQqhYgAkGYAmogAkG8AWooAgA2 +AgAgAiACKQK0ATcDkAIgAigCsAEhDCACKAKsASELIAIoAqgBIQkgAigCwAEhCiACNQLEASEVQYeA +gIB4DAMLIAJBnAJqIAVBBGoQxR4gAkFAayAFQRBqEKoWIAJBsAJqIAVBJGoQjD0gAkGoAmogBUEw +ahCRDAJAIAVBOGooAgAiAUUEQEEAIQYMAQsQsT8hBiABQRhqKQMAIRUgAUE4aigCACEDIAEpAwAh +FiABKQMIIRcgASkDECEYIAEpAzAhGSACQfQBaiABQcwAahCMPSABQShqKQMAIRogASkDICEbIAFB +2ABqELoUIQkgAkHoAWogAUFAaxD2KCACQeABaiADNgIAIAJB0AFqIBo3AwAgAkHAAWogFTcDACAC +IBk3A9gBIAIgCTYCgAIgAiAbNwPIASACIBg3A7gBIAIgFzcDsAEgAiAWNwOoASAGIAJBqAFqQeAA +EM1PGgsgAkGYAmogAkHIAGooAgA2AgAgAiACKQJANwOQAiACNQJQIAI1ArACQiCGhCEVIAIoAqQC +IQwgAigCoAIhCyACKAKcAiEJIAIoAkwhCiACKAK0AiEBIAIoArgCIQ0gAikDqAIhFkGIgICAeAwC +CyACQagBaiAFEMUeIAJBwAFqIgEgBUEYahCqFiACQbQBaiAFQQxqEJwQIAJBIGogBUEsahDxLiAC +KAIgIQ0gAigCJCEDIAJBGGogBUE0ahDxLiACQdgBaiIGIAM2AgAgAkGYAmogASgCADYCACACIAIo +Ahg2AtwBIAIgAikCuAE3A5ACIAYpAgAhFiACKAIcIQYgAigCrAEhCSACKAKwASELIAIoArQBIQwg +AigCxAEhCiACKQLIASEVIAIoAtABIQEgAigCqAEMAQsgAkGoAWogBUEEahDFHiACQbQBaiAFQRBq +EMUeIAJBwAFqIAVBHGoQ4S8gAkGYAmogAkG8AWooAgA2AgAgAiACKQK0ATcDkAIgAigCsAEhDCAC +KAKsASELIAIoAqgBIQkgAigCwAEhCiACKQLEASEVQYqAgIB4CyEDIAVByABqLQAAIg9BAkcEQCAC +QagBaiAFQTxqELJSIAJByABqIAJBsAFqKAIANgIAIAJBsgJqIAJBtwFqLQAAOgAAIAIgAikCqAE3 +A0AgAiACLwC1ATsBsAILIAJBwAFqIAJBmAJqKAIANgIAIAJB7AFqIAJByABqKAIANgIAIAJB8wFq +IAJBsgJqLQAAOgAAIAIgAikDkAI3ArgBIAIgAikDQDcC5AEgAiACLwGwAjsA8QEgAiAONgL0ASAC +IA86APABIAIgBjYC4AEgAiAWNwLYASACIA02AtQBIAIgATYC0AEgAiAVNwLIASACIAo2AsQBIAIg +DDYCtAEgAiALNgKwASACIAk2AqwBIAIgAzYCqAEgAiAQNgL4AQwDCyACQThqIAVBBGoQ8S4gAigC +PCEBIAIoAjghAyAFQQxqIgYoAgAEfyACQTBqIAYQ8S4gAigCNCEJIAIoAjAFQQALIQYgAkG4AWog +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 +IGoQ3h8gASgCDCEAIAEoAggFQQALIQQgAUHICmogAUGYDGopAwA3AwAgAUHACmogAUGQDGopAwA3 +AwAgAUG4CmogAUGIDGopAwA3AwAgASABKQOADDcDsAogAUHgCmogAUGgDGpBkAEQzU8aIAFB9Atq +IAI6AAAgAUHwC2ogAzYCACABQdwKaiAHNgIAIAFB2ApqIAg2AgAgAUHUCmogADYCACABQdAKaiAE +NgIAIAFBADoA+AsjAEHgC2siACQAIAAgAUEoakHYCxDNTyIAIAA2AtwLIABB3AtqQbS6xgAQw1Ig +ACgCqAtBA0cEQCAAEIcqCyAAQeALaiQAIAYgBigCAEEBazYCACABQbANaiQADwsAC4IFAQF/AkAC +QAJAIAAoAgAiAUHh////B2oOAgECAAsgAEGgAWoQ+j4CQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAQRAgAUH1////B2oiASABQRRPGw4TAQIDBAUGBwgJCgsMDQ4PEBESEwAL +IABBBGoQ+j4PCyAAQQRqELI7DwsgAEEIahD3MQ8LIABBBGoQuDUPCyAAQQRqELA4DwsgAEEIahC4 +Ow8LIABBBGoQzD8PCyAAQQRqEKo7DwsgAEEEahDNPw8LIABBBGoQuz8PCyAAQQRqEMs/DwsgAEEE +ahCzRw8LIABBBGoQskcPCyAAQQRqEMg/DwsgAEEEahD6Pg8LIABBBGoQqUcPCyAAQQRqEPMgDwsg +ABCpHQ8LIABBBGoQtUcPCyAAQQhqEPw/DwsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBB +AyAAKAIIQQNrIgEgAUEQTxsODw8BAgMEBQYHCAkKCwwNDgALIABBDGoQ+j4PCyAAQQxqEL8/IABB +MGoQ+j4gAEEYahCIPyAAQSRqEIg/DwsgAEEMahC/PyAAQRhqENQ1IABBxABqEPo+IABBzABqEPo+ +DwsgAEEIahC/PyAAQdAAahD6PiAAQRRqEIg/IABBIGoQiD8gAEEsahCIPyAAQThqEIg/IABBxABq +EK1LDwsgAEEQahDKPw8LIABBDGoQzT8PCyAAQQxqEM4/DwsgAEEMahDHPw8LIABBDGoQtEcPCyAA +QQxqEKlHDwsgAEEMahC+Pw8LIABBDGoQ+j4PCyAAQQxqEMkpDwsgAEEMahDYKg8LIABBGGoQ+j4g +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 +QQYhBgwBC0EAIQhBBSEGQQAhBAsgAiAGNgJ4IAIgASgCBDYCdCACIA42AnAQ90QiAyAOLwGSAyIB +IAZBf3NqIg87AZIDIAJB8ABqIhAgBhD5RCIGKQIEISggBigCACEOIAJB5AFqIBAgAigCeBDWSSIG +QRBqKQIANwIAIAJB3AFqIAZBCGopAgA3AgAgAiAGKQIANwLUASACKAJwIAIoAnggAkEwaiAPIANB +jAJqEIY4QQFqIhBBDGxqQYwCaiABIBBrIAIoAjAgAigCNBCkOSACKAJwIAIoAnggAkEoaiAPIAMQ +hThBAWoiD0EYbGogASAPayACKAIoIAIoAiwQjDggAigCcCIBIAIoAng7AZIDIAJBuAFqIhAgAkHY +AWoiISkDADcDACACQcABaiIUIAJB4AFqIiIpAwA3AwAgAkHIAWoiFSACQegBaiIjKAIANgIAIAIg +AikD0AE3A7ABIAIoAnQhBiACIAQ2AtgBQQAhBCACIAZBACAIGzYC1AEgAiABIAMgCBs2AtABIAJB +iAFqIAJB0AFqIAsgBRDfKCACQdAAaiIWIBApAwA3AwAgAkHYAGoiFyAUKQMANwMAIAJB4ABqIhgg +FSgCADYCACACIAIpA7ABNwNIIAIoAowBIR0gAigCiAEhHCACKAKQASEbIA5BgICAgHhGDQAgAkGg +AWoiJCAYKAIANgIAIAJBmAFqIiUgFykDADcDACACQZABaiImIBYpAwA3AwAgAiACKQNINwOIASAC +QdABakEEciEZIAJBiAFqQQRyIRoDQCABKAKIAiILBEAgAiALNgI8IAIgAS8BkAMiATYCRCACIAZB +AWoiCDYCQCACICg3AmggAiAONgJkIAJBgAFqIBpBEGopAgA3AwAgAkH4AGogGkEIaikCADcDACAC +IBopAgA3A3AgBCAGRw0DAkACQCALLwGSAyInQQtPBEBBASEPIAFBBU8NASABIQVBBCEBDAILIAJB +PGogAkHkAGogAkHwAGogAxD9DgwECyABIQUCQAJAIAFBBWsOAgIBAAsgAUEHayEFQQAhD0EGIQEM +AQtBACEPQQUhAUEAIQULIAIgATYCrAEgAiAINgKoASACIAs2AqQBEPhEIgggCy8BkgMiBCABQX9z +aiIGOwGSAyACQaQBaiILIAEQ+UQiASkCBCEoIAEoAgAhDiAZIAsgAigCrAEQ1kkiASkCADcCACAZ +QRBqIAFBEGopAgA3AgAgGUEIaiABQQhqKQIANwIAIAIoAqQBIAIoAqwBIAJBIGogBiAIQYwCahCG +OEEBaiILQQxsakGMAmogBCALayACKAIgIAIoAiQQpDkgAigCpAEgAigCrAEgAkEYaiAGIAgQhThB +AWoiBkEYbGogBCAGayACKAIYIAIoAhwQjDggAigCpAEiBiACKAKsASIBOwGSAyAILwGSAyILQQFq +IQQgC0EMTw0EIAQgJyABayILRw0FIAhBmANqIAFBAnQgBmpBnANqIAtBAnQQzU8aIAJBEGogCCAC +KAKoARCsIyAQICEpAwA3AwAgFCAiKQMANwMAIBUgIygCADYCACACIAIpA9ABNwOwASACKAIQIQgg +AigCpAEhASACKAIUIQQgAigCqAEhBiACIAU2AtgBIAIgBiAEIA8bNgLUASACIAEgCCAPGzYC0AEg +AkHQAWogAkHkAGogAkHwAGogAxD9DiAYIBUoAgA2AgAgFyAUKQMANwMAIBYgECkDADcDACACIAIp +A7ABNwNIIA5BgICAgHhGDQIgJCAYKAIANgIAICUgFykDADcDACAmIBYpAwA3AwAgAiACKQNINwOI +ASAIIQMMAQsLIAJB6AFqIAJBoAFqKAIANgIAIAJB4AFqIAJBmAFqKQMANwMAIAJB2AFqIAJBkAFq +KQMANwMAIAIgAikDiAE3A9ABICAoAgAiASgCAEUNBCACQQhqIAEQ1iggAiACKQMINwJwIAIgKDcC +TCACIA42AkggAkHAAWogAkHkAWopAgA3AwAgAkG4AWogAkHcAWopAgA3AwAgAiACKQLUATcDsAEg +AkHwAGogAkHIAGogAkGwAWogAyAEEPcQCyARIBs2AgggESAdNgIEIBEgHDYCACACQfABaiQADAQL +QbSDwABBNUHsg8AAEOYrAAsgBEEMQaSDwAAQ4xsAC0HMgsAAQShB9ILAABDmKwALQeCAwAAQo0sA +CyAREJJHIAwoAgwiASABKAIIQQFqNgIICyAKQdAAaiQAIA1BgICAgHg2AggMAgsgCUEsaigCACEE +IAkpAiQhKCAIEIg/CyANICinIARBGGxqIgEpAwA3AwAgASADKQMANwMAIA1BEGogAUEQaiIFKQMA +NwMAIA1BCGogAUEIaiIBKQMANwMAIAEgA0EIaikDADcDACAFIANBEGopAwA3AwALIAlBMGokACAH +KAK4AUGAgICAeEYNASAeEIg/DAELCyAHIAcpAjg3AiwgByAHKAI0NgIoIAdB4ABqIgEgB0EoEM1P +GiABEJYZIgFFBEAgACAHKQIoNwIEIABBADYCACAAQQxqIAdBMGooAgA2AgAMAwsgAEEBNgIAIAAg +ATYCBCAHQShqEMkZDAILIAcoAmQhASAHQTRqEMkZIABBATYCACAAIAE2AgQgBygCEARAIB8QziIL +IAcQgkMMAQsgB0HoAGogAUEIaikDADcDACAHIAEpAwA3A2AgB0HgAGogB0HPAWpByL7DABCLNiEB +IABBATYCACAAIAE2AgQLIAdB0AFqJAALtgQCBn8BfiMAQZABayICJAAgAkEQaiABQTBqEPEuIAIo +AhQhBiACKAIQIQcCfyABKAIAQQNGBEACQAJAAkACQAJAIAEoAgRBAWsOBAECAwQACyABQQhqEMUQ +IQNBAwwFC0EBIQUgAUEIahDFECEDQQMMBAtBAiEFIAFBCGoQxRAhA0EDDAMLQQMhBSABQQhqEMUQ +IQNBAwwCCxCZPyEDIAJBCGogAUEIaigCACIEQSBqEIcoIAIpAwghCCACQegAaiAEQShqEOEvIAJB +2ABqIARBGGopAgA3AwAgAkHQAGogBEEQaikCADcDACACQcgAaiAEQQhqKQIANwMAIAIgCDcDYCAC +IAQpAgA3A0AgAyACQUBrQTQQzU8aQQQhBUEDDAELIAJB+ABqIAEQiiwgAkGEAWogAUEMahCyLAJA +IAEoAhhBgICAgHhGBEAgAkGAgICAeDYCHAwBCyACQRxqIAFBGGoQxR4LIAJB5ABqIAFBJGoQ4S8g +AkHIAGogAkGAAWooAgAiAzYCACACQdQAaiACQYwBaigCADYCACACQeAAaiACQSRqKAIANgIAIAIg +AikCeCIINwNAIAIgAikChAE3AkwgAiACKQIcNwNYIAIoAkQhBSACQRxqIAJBzABqQSQQzU8aIAin +CyEEIABBOGogAUE4ahDhLyAAQTRqIAY2AgAgACAHNgIwIAAgAzYCCCAAIAU2AgQgACAENgIAIABB +DGogAkEcakEkEM1PGiACQZABaiQAC8kEAQZ/IwBBMGsiAyQAIAMgAjYCCCADIAE2AgQgA0EgaiAD +QQRqEM4FAkACQCADKAIgIgVFBEBBACEBQcyc2gAhBQwBCyADKAIkIQEgAygCLEUNAAJAAkACQCAC +RQRAQQEhBgwBCyACQQBIDQFB4ZPbAC0AABogAkEBEKtIIgZFDQILIANBADYCFCADIAY2AhAgAyAC +NgIMIAEgAksEQCADQQxqQQAgARCEECADKAIQIQYgAygCFCEECyAEIAZqIAUgARDNTxogAyABIARq +IgI2AhQgAygCDCACa0ECTQRAIANBDGogAkEDEIQQIAMoAhQhAgsgAygCECIEIAJqIgFB5J7aAC8A +ACIGOwAAIAFBAmpB5p7aAC0AACIHOgAAIAMgAkEDaiICNgIUIAMgAykCBDcCGCADQSBqIANBGGoQ +zgUgAygCICIFBEADQCADKAIsIAMoAiQiASADKAIMIAJrSwRAIANBDGogAiABEIQQIAMoAhAhBCAD +KAIUIQILIAIgBGogBSABEM1PGiADIAEgAmoiAjYCFARAIAMoAgwgAmtBAk0EQCADQQxqIAJBAxCE +ECADKAIUIQILIAMoAhAiBCACaiIBIAY7AAAgAUECaiAHOgAAIAMgAkEDaiICNgIUCyADQSBqIANB +GGoQzgUgAygCICIFDQALCyAAIAMpAgw3AgAgAEEIaiADQRRqKAIANgIADAMLEMowAAtBASACEMRP +AAsgACAFNgIEIABBgICAgHg2AgAgAEEIaiABNgIACyADQTBqJAAL7QQBA38jAEGgAmsiAiQAIAJB +CGogARDJLyACKAIMIQMgAigCCCEEIAJBADYC6AEgAkKAgICAEDcC4AEgAkHIAGpBvLPFADYCACAC +QQM6AFAgAkEgNgJAIAJBADYCTCACQQA2AjggAkEANgIwIAIgAkHgAWo2AkQCQAJAAkACQCAEIAMg +AkEwahCqH0UEQCACQRhqIgMgAkHoAWooAgA2AgAgAiACKQLgATcDECABKAIAQZ+AgIB4RgRAIAJB +yABqIAFBHGopAgA3AwAgAkFAayABQRRqKQIANwMAIAJBOGogAUEMaikCADcDACACIAEpAgQ3AzAg +AkGAAmogAygCADYCACACIAIpAxA3A/gBIAIgAkEwajYChAIgAkHgAWogAkH4AWoQzAUgAigC4AEN +AiACQSxqIAJB8AFqKAIANgIAIAIgAkHoAWopAgA3AiQgAiACKALkATYCICACQSBqEI1QIQEgAkEw +ahDVNwwECyACQTBqIgQgAUGwARDNTxogAkGAAmogAygCADYCACACIAIpAxA3A/gBIAIgBDYChAIg +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 +ACIBIAEoAgAiBEEBajYCACAEQQBIDQIgAkGoAWogATYCACACQaQBaiADNgIAIAJBoAFqIAU2AgAg +AiAGNgKcASACQQA2ApgBCyACQZABaiACQagBaikCADcDACACQYgBaiACQaABaikCADcDACACIAIp +ApgBNwOAAUEBBUEACyEBIAAgAikCEDcCKCAAQThqIAJBIGopAgA3AgAgAEEwaiACQRhqKQIANwIA +IAAgAkEoakEoEM1PIgAgATYCcCAAQdAAaiACQeAAaikDADcDACAAQcgAaiACQdgAaikDADcDACAA +IAIpA1A3A0AgACACKQJoNwJYIABB4ABqIAJB8ABqKQIANwIAIABB6ABqIAJB+ABqKQIANwIAIABB +9ABqIAIpA4ABNwIAIABB/ABqIAJBiAFqKQMANwIAIABBhAFqIAJBkAFqKQMANwIAIAJBsAFqJAAP +CwAL7wQCAn8BfCMAQdAAayICJAACQAJAAkACQAJAAkACQCAALQAAQQFrDgUAAQIDBQQLIAEoAgBB +9u/DAEHx78MAIAAtAAEiABtBBEEFIAAbEOFIIAJBBDoAICACQSBqEJ4uIQAMBQsCQAJAAkAgACgC +CEEBaw4CAQIACyACQQhqIAJBIGogAEEQaikDABC7CyABKAIAIAIoAgggAigCDBDhSCACQQQ6AEgg +AkHIAGoQni4hAAwGCyACQRBqIAJBIGogAEEQaikDABDhCSABKAIAIAIoAhAgAigCFBDhSCACQQQ6 +AEggAkHIAGoQni4hAAwFCyAAQRBqKwMAIgQgBGIgBL1C////////////AINCgICAgICAgPj/AFFy +RQRAIAQgAkEgaiIDELgCIQAgASgCACADIAAQ4UggAkEEOgBIIAJByABqEJ4uIQAMBQsgAkEgaiIA +IAEQnUogABCeLiEADAQLIAEgAEEIaigCACAAQQxqKAIAEPgvIQAMAwsgASAAQQRqEO0LIQAMAgsg +ARC8NSEADAELIAJBIGogASAAQQxqKAIAIgMQ1xQgAi0AIEECRwRAIAIgAikDIDcDSCAAQQhqKAIA +IQEgAiADQQAgACgCBCIAGzYCQCACIAE2AjwgAiAANgI4IAJBADYCNCACIABBAEciAzYCMCACIAE2 +AiwgAiAANgIoIAJBADYCJCACIAM2AiADQCACQRhqIAJBIGoQ0BAgAigCGCIARQRAIAIgAikDSDcD +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 +AwshASACQegCahCQRQwOCyACQZADahDNPCACKQOQAyEfIAIoApgDDAELIAJBpANqIAJB7AFqKQIA +NwIAIAJBrANqIAJB9AFqKQIANwIAIAJBtANqIAJB/AFqKAIANgIAIAIgAikC5AE3ApwDIAIoAuAB +CyEBIAJB+ABqIAJByANqKAIANgIAIAJB8ABqIAJBwANqKQIANwMAIAJBiAFqIAJBpANqKQIANwMA +IAJBkAFqIAJBrANqKQIANwMAIAJBmAFqIAJBtANqKAIANgIAIAIgAikCuAM3A2ggAiACKQKcAzcD +gAEMEAsgAigClAMhAQwKCyACQRg2AtgBIAcgAkHYAWoQgDEMBwsgByAHLQAkQQFrIgM6ACQgA0H/ +AXFFDQUgBxC+QSACQQE6AMwCIAIgBzYCyAIgAkGBgICAeDYC0AIgAkEANgLoAiACQQA2AvQCIAJB +ADYC/AIgAkEANgKEAyACQgI3A5ADIAJB2AJqIRsgAkHgAWohHCACQewCaiEdIAJBiANqIR4gAkGc +A2ohGCACQeQBaiERIAchBUICIR8DQCACQbgDaiAFELwWAkACQAJAAkACfgJ/AkACQAJ/An8CQAJA +AkACQCACLQC4Aw0AAn8gAi0AuQNFBEAgAkEDNgLYASAFIAJB2AFqEIAxDAELAkACQAJAAkAgAi0A +ugMiBkEsRwRAIAZB/QBHDQFBACEFQQghCwwICyACLQDMAg0BIAUQvkEgAkHYAWogBRC8FiACLQDY +AQRAIAIoAtwBDAULIAItANkBRQ0GIAItANoBIQYMAgsgAi0AzAJFDQILIAJBADoAzAILAkAgBkH/ +AXEiA0EiRwRAIANB/QBGDQEgAiAJNgKMAyACIAo2AogDIAIgCDYChAMgAkERNgLYASAFIAJB2AFq +EIAxIQEMBwsgBRC+QSAFQQA2AgggAkHYAWogBUEMaiAFELsIIAIoAtwBIQMgAigC2AFBAkYEQEEB +IQUgAyEBDAYLIAJBuANqIQUCQAJAAkACQAJAAkAgAyACKALgASIGQer4xQBBBxCAPEUEQCADIAZB +8fjFAEEHEIA8DQEgAyAGQfj4xQBBCBCAPA0CIAMgBkGA+cUAQQYQgDwNAyADIAZBhvnFAEEQEIA8 +DQQgAyAGQZb5xQBBBxCAPA0FIAMgBkGp9cUAQQgQgDxFBEAgBUEHOgABDAcLIAVBBjoAAQwGCyAF +QQA6AAEMBQsgBUEBOgABDAQLIAVBAjoAAQwDCyAFQQM6AAEMAgsgBUEEOgABDAELIAVBBToAAQsg +BUEAOgAAIAItALgDDQNBACEFIAItALkDIQsMBQsgAiAJNgKMAyACIAo2AogDIAIgCDYChAMgAkEV +NgLYASAFIAJB2AFqEIAxIQEMBQsgAkEINgLYASAFIAJB2AFqEIAxCyEBQQEhBQwCC0EBIQUgAigC +vAMhAQwBCyACIAk2AowDIAIgCjYCiAMgAiAINgKEAyACQQU2AtgBIAUgAkHYAWoQgDEhAQwBCwJA +AkACQAJAAkACQAJAAkACQAJAAkAgBUUEQCALQf8BcQ4JAgMEBQYICQEKAQsgAiAJNgKMAyACIAo2 +AogDIAIgCDYChAMMCwsgAkHIAmoQrD8iA0UNFCACIAk2AowDIAIgCjYCiAMgAiAINgKEA0EAIQUg +AyEBQQEMDAsgAigC0AJBgYCAgHhHBEAgAiAJNgKMAyACIAo2AogDIAIgCDYChANBACEFQZyMwABB +BxDxHyEBQQEMDAsgAkHYAWogAkHIAmoQmzggAigC2AEiBUGBgICAeEYNBCACQcADaiIGIBxBCGoo +AgA2AgAgAiAcKQIANwO4AyACKALcASEDIAJB0AJqEK5CIBsgAikDuAM3AgAgG0EIaiAGKAIANgIA +IAIgAzYC1AIgAiAFNgLQAgwTCyASBEAgAiAJNgKMAyACIAo2AogDIAIgCDYChANBASESQcCRwABB +BxDxHyEBQQAMCgsgAkHYAWogAkHIAmoQljggAigC2AFFDREgAiAJNgKMAyACIAo2AogDIAIgCDYC +hAMgAigC3AEhAUEAIRIMDAsgDQRAIAIgCTYCjAMgAiAKNgKIAyACIAg2AoQDQQAhBUHsicAAQQgQ +8R8hAUEBDAoLIAJB2AFqIAJByAJqEJ45IAIoAtgBIg0EQCACKALcASETIAJB9AJqEJBFIAIgEzYC ++AIgAiANNgL0AgwSCyACIAk2AowDIAIgCjYCiAMgAiAINgKEAyACKALcASEBQQAhDQwLCyAPBEAg +AiAJNgKMAyACIAo2AogDIAIgCDYChANBACEFQaOMwABBBhDxHyEBQQEMCQsgAkHYAWogAkHIAmoQ +mjkgAigC2AEiDwRAIAIoAtwBIRQgAkH8AmoQkEUgAiAUNgKAAyACIA82AvwCDBELIAIgCTYCjAMg +AiAKNgKIAyACIAg2AoQDIAIoAtwBIQFBACEPDAoLICBQRQRAIAIgCTYCjAMgAiAKNgKIAyACIAg2 +AoQDQQAhBUGpjMAAQRAQ8R8hAUEBDAgLIAJB2AFqIAJByAJqENg4IAIoAtgBRQ0NCyACIAk2AowD +IAIgCjYCiAMgAiAINgKEAyACKALcASEBDAQLIAhFDQYgAiAJNgKMAyACIAo2AogDQQEhCCACQQE2 +AoQDQeKUwABBBxDxHyEBQQAMBAsgH0ICUQ0BIAIgCTYCjAMgAiAKNgKIAyACIAg2AoQDQQAhBUHw +hsAAQQgQ8R8hAUEBDAQLIAIgCTYCjAMgAiAKNgKIAyACIAg2AoQDIAIoAtACQYGAgIB4RyIFRQRA +QZyMwABBBxDwHyEBQQEMBAsgAkHIA2ogAkHgAmooAgA2AgAgAkHAA2ogAkHYAmopAgA3AwAgAiAC +KQLQAjcDuAMgAiAXNgLYAyACIBpBACASGyIONgLUAwJ/AkAgDSILDQAgAkHYAWpB7InAAEEIEJFN +IAIoAtgBIgsEQCACKALcASETDAELIAIoAtwBIQFBAQwBCyACIBM2AuADIAIgCzYC3AMCQAJAAkAC +QAJAIA8iBkUEQCACQdgBakGjjMAAQQYQkU0gAigC2AEiBkUNASACKALcASEUCyACIBQ2AugDIAIg +BjYC5AMgIFAEQCACQdgBakGpjMAAQRAQkk0gAigC2AENAiACKQPgASEhCyAfQgJSDQIgAkHYAWoQ +zTwMAwsgAigC3AEhAQwDCyACKALcASEBIAJB5ANqEPo+DAILIAJB2AFqIAJBkANqQSgQzU8aCyAK +QQAgCBshESACQbABaiACQcgDaigCADYCACACQagBaiACQcADaikDADcDACACQcABaiACQewBaikC +ADcDACACQcgBaiACQfQBaikCADcDACACQdABaiACQfwBaigCADYCACACIAIpA7gDNwOgASACIAIp +AuQBNwO4ASACKALgASEBIAIpA9gBDAkLIAJB3ANqEPo+IA9FCyEOIBJFIQYgAkHUA2oQkEUgAkG4 +A2oQtUcgDUUMBgsgAigCyAIiBhDnFiIDBEAgAiAJNgKMAyACIAo2AogDIAIgCDYChAMgAyEBDAEL +IAJB2AFqIAYQtUUgAikD2AEiH0ICUgRAIAJBwANqIg4gEUEIaikCADcDACACQcgDaiIFIBFBEGop +AgA3AwAgAkHQA2oiBiARQRhqKAIANgIAIAIgESkCADcDuAMgAigC4AEhAyACQZADahCsQiAYIAIp +A7gDNwIAIBhBCGogDikDADcCACAYQRBqIAUpAwA3AgAgGEEYaiAGKAIANgIAIAIgAzYCmAMgAiAf +NwOQAwwLCyACIAk2AowDIAIgCjYCiAMgAiAINgKEAyACKALgASEBC0EACyEFQQELIQ5BASEGQQEM +AgsCfyACKALIAiIGEOcWIgMEQCACIAk2AowDIAIgCjYCiAMgAkEANgKEAyADDAELIAJB2AFqIAYQ +gBIgAigC2AFFDQQgAiAJNgKMAyACIAo2AogDIAJBADYChAMgAigC3AELIQFBACEIC0EBIQ5BASEG +QQAhBUEBCyELIAJBkANqEKxCIAgEQCAeEJBFCyAOIA9BAEdxBEAgAkH8AmoQ+j4LIAsgDUEAR3EE +QCACQfQCahD6PgsgBiASQQBHcQRAIB0QkEULIAUgAigC0AJBgYCAgHhGckUEQCACQdACahC1RwtC +AgshHyAHIActACRBAWo6ACQgBxCNEyEDIAJB7AFqIAJBwAFqKQMANwIAIAJB9AFqIAJByAFqKQMA +NwIAIAJB/AFqIAJB0AFqKAIANgIAIAIgATYC4AEgAiAJNgKkAiACIBE2AqACIAIgITcDmAIgAiAX +NgKUAiACIA42ApACIAIgFDYCjAIgAiAGNgKIAiACIBM2AoQCIAIgCzYCgAIgAiACKQO4ATcC5AEg +AiAfNwPYASACQbgCaiACQbABaigCADYCACACQbACaiACQagBaikDADcDACACIAM2AsACIAIgAikD +oAE3A6gCAkAgH0ICUgRAIAMNASACQQxqIAJB5AFqQdwAEM1PGgwWCyADRQ0UIAJBwAJqEN8dDBQL +IAJB2AFqEM4yQgIhHyADIQEMFAsgAigC4AEhCSACKALcASEKQQEhCAwCCyACKQPgASEhQgEhIAwB +CyACKALcASEaIAIoAuABIRcgAkHoAmoQi0EgAiAXNgLwAiACIBo2AuwCQQEhEiACQQE2AugCCyAC +KALIAiEFDAALAAtBBUG4oMAAQayGwAAQ3hchAQwHCyACKALgASEBDAYLIAIoAtwBIQEMBgsgAigC +3AEhAQwGCyACKALcASEBDAcLIAJBGDYC2AEgByACQdgBahCAMQshASAQQgI3AwAgECABNgIIDAoL +IAIoAtwBIQELIAJB5ANqEPo+CyACQdwDahD6PgsgAkHUA2oQkEULIAJBuANqELVHC0ICIR8LIAcg +By0AJEEBajoAJCAHEJ8MIQMgAkHsAWogAkGIAWopAwA3AgAgAkH0AWogAkGQAWopAwA3AgAgAkH8 +AWogAkGYAWooAgA2AgAgAiABNgLgASACIBI2AqQCIAIgCDYCoAIgAiATNgKcAiACIBQ2ApgCIAIg +BjYClAIgAiALNgKQAiACIA82AowCIAIgDTYCiAIgAiARNgKEAiACIA42AoACIAIgAikDgAE3AuQB +IAIgHzcD2AEgAkG4AmogAkH4AGooAgA2AgAgAkGwAmogAkHwAGopAwA3AwAgAiADNgLAAiACIAIp +A2g3A6gCAkAgH0ICUQRAIAMNAQwCCyADRQRAIAJBDGogAkHkAWpB3AAQzU8aDAMLIAJB2AFqEM4y +QgIhHyADIQEMAgsgAkHAAmoQ3x0LQgIhHwsgH0ICUQ0AIBBBDGogAkEMakHcABDNTxogECABNgII +IBAgHzcDAAwBCyAHIAEQvFIhASAQQgI3AwAgECABNgIICyACQfADaiQAAkAgDCkDqAFCAlIEQCAM +QUBrIAxBqAFqQegAEM1PGiAMQRhqENUjIgFFBEAgFiAMQUBrQegAEM1PGgwCCyAWQgI3AwAgFiAB +NgIIIAxBQGsQzjIMAQsgFiAMKAKwATYCCCAWQgI3AwALIAxBGGoQiD8gDEGQAmokAAJAIBUpAwhC +AlIEQCAZIBVBCGpB6AAQzU8aDAELIBUoAhAQ2gshASAZQgI3AwAgGSABNgIICyAVQfAAaiQAIAQp +A6gBIiBCAlENASAEKAKwASEBIARBzABqIARBtAFqQdwAEM1PGiAEIAE2AkggBCAgNwNAIARBIGog +BEGgAWooAgA2AgAgBEEYaiAEQZgBaikDADcDACAEIAQpA5ABNwMQIAQgBEH8AGooAgAiDTYCLCAE +IAQoAngiCzYCKCAEIARB7ABqKAIAIg82AjQgBCAEKAJoIgM2AjAgBCAEQfQAaigCACIHNgI8IAQg +BCgCcCIBNgI4IAQpA4ABISAgBEGoAWogBEFAa0EoEM1PGiAEKAKIAQRAIARBiAFqEPo+CyALIAQo +AhxyBEAgACAEKQMQNwJIIABB2ABqIARBIGooAgA2AgAgAEHQAGogBEEYaikDADcCACAAIARBqAFq +QSgQzU8iACAgNwNAIAAgDTYCPCAAIAs2AjggACAHNgI0IAAgATYCMCAAIA82AiwgACADNgIoIARB +CGoQ+j4MBAtBjsPFAEEHEPAfIQEgAEICNwMAIAAgATYCCCAEQagBahDpIiAEQThqEPo+IARBMGoQ ++j4gBEEoahCQRSAEQRBqELVHDAILIAQoAqwBIQEgAEICNwMAIAAgATYCCAwCCyAEKAKwASEBIABC +AjcDACAAIAE2AggLIARBCGoQ+j4LIARBkAJqJAALywQCAn8BfCMAQdAAayICJAACQAJAAkACQAJA +AkACQCAALQAAQQFrDgUAAQIDBQQLIAEgAC0AARCnLSEADAULAkACQAJAIAAoAghBAWsOAgECAAsg +AkEIaiACQSBqIABBEGopAwAQuwsgASgCACACKAIIIAIoAgwQ4UggAkEEOgBIIAJByABqEJ4uIQAM +BgsgAkEQaiACQSBqIABBEGopAwAQ4QkgASgCACACKAIQIAIoAhQQ4UggAkEEOgBIIAJByABqEJ4u +IQAMBQsgAEEQaisDACIEIARiIAS9Qv///////////wCDQoCAgICAgID4/wBRckUEQCAEIAJBIGoi +AxC4AiEAIAEoAgAgAyAAEOFIIAJBBDoASCACQcgAahCeLiEADAULIAJBIGoiACABEM9KIAAQni4h +AAwECyABIABBCGooAgAgAEEMaigCABD4LyEADAMLIAEgAEEEahDtCyEADAILIAEQ4jUhAAwBCyAC +QSBqIAFBASAAQQxqKAIAIgMQ9xQgAi0AIEECRwRAIAIgAikDIDcDSCAAQQhqKAIAIQEgAiADQQAg +ACgCBCIAGzYCQCACIAE2AjwgAiAANgI4IAJBADYCNCACIABBAEciAzYCMCACIAE2AiwgAiAANgIo +IAJBADYCJCACIAM2AiADQCACQRhqIAJBIGoQ0BAgAigCGCIARQRAIAIgAikDSDcDICACQSBqEMAk +IQAMAwsgAkHIAGogACACKAIcEMcTIgBFDQALDAELIAIoAiQhAAsgAkHQAGokACAAC8QEAQN/IwBB +8AFrIgQkACABAn8CQAJAAkACQAJAAkACQAJAIAEtAEBBAWsOBQUAAgMEAQsACyABIAEoAgAiAzYC +BCADKAIMIQMgAUH8AGpBADoAACABIANBCGo2AkQLIAFBxABqIgMgAhC4ByIFRQ0DIAQgBTYCRCAD +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 +AiQAAn8gCEE0aiIFKAIAIgZFBEBBACEFQQAMAQsgAiAGNgIsIAJBADYCKCACIAY2AhwgAkEANgIY +IAIgBSgCBCIGNgIwIAIgBjYCICAFKAIIIQVBAQshBiACIAU2AjQgAiAGNgIkIAIgBjYCFCACQdgA +akEBIAUQ+kkCQAJAIAIoAlhBAkcEQCACQdAAaiACQfAAaikDADcDACACQcgAaiACQegAaikDADcD +ACACQUBrIAJB4ABqKQMANwMAIAIgAikDWDcDOANAIAJBCGogAkEUahC+ECACKAIIIgVFDQIgAigC +DCEGIAIgBTYCfCACIAY2AlggAkE4aiIGIAJB/ABqEP0aIgVFBEAgBiACQdgAahD4DSEFCyAFRQ0A +CyAHQQY6AAAgByAFNgIEIAJBOGoQyjgMAgsgByACKAJcNgIEIAdBBjoAAAwBCyACQfAAaiACQdAA +aikDADcDACACQegAaiACQcgAaikDADcDACACQeAAaiACQUBrKQMANwMAIAIgAikDODcDWCAHIAJB +2ABqEKsaCyACQYABaiQAAkAgAy0AQEEGRwRAIANB6ABqIANB0ABqKQMANwMAIANB4ABqIANByABq +KQMANwMAIAMgAykDQDcDWCADQRhqIgIgAUEEaiADQTRqIANB2ABqENQMIAIQlUNBACEFDAELIAMo +AkQhBSADQTRqEIg/CyADQfAAaiQAIAUMAQsMBQshAgsgAg0BIAgtAFhBA0cEQCABQYKRzgBBChDd +FyICRQRAAn8gCEHYAGohBSMAQfAAayICJAAgASgCAEUEQCABKQIQIQwgAUGAgICAeDYCECACQRBq +IAFBGGooAgA2AgAgAiAMNwMIIAJBNGogAkEIahCPMiACQUBrIQMCQAJAAkACQCAFLQAAIgVBAmtB +/wFxIgdBAWpBACAHQQJJG0EBaw4CAQIACyADIAU6AAEgA0EBOgAADAILIANBADoAAAwBC0HxtMoA +QSIQ8xEhBSADQQY6AAAgAyAFNgIECwJAIAItAEBBBkcEQCACQegAaiACQdAAaikDADcDACACQeAA +aiACQcgAaikDADcDACACIAIpA0A3A1ggAkEYaiIDIAFBBGogAkE0aiACQdgAahDUDCADEJVDQQAh +AwwBCyACKAJEIQMgAkE0ahCIPwsgAkHwAGokACADDAELDAYLIQILIAINAgsgAUGMkc4AIAhBQGsQ +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 +QeQAaiAKIAkgA0HIAGogByAMEI4TIAMgCyADKAJAakEBajYCQCACQQFqIQIgBEEEaiEEIAVBCGoh +BSAGQRBqIQYMAAsAC0G++ccAQShB6PnHABDmKwALIAAgAykCODcCACAAQQhqIANBQGsoAgA2AgAM +AQtB+PnHABCjSwALIANB8ABqJAALoAQBCn8jAEGgAWsiAyQAAkACQAJAAkAgAkUEQCADQRBqEKVE +IAMoAhQNASADKAIQIQZBACECIANBADYCNCADIAY2AjAgAUHYAGohBCABIQUDQCABLwGWBCACSwRA +IANBCGogBRDxLiADKAIMIQggAygCCCEJIANBOGoiCiAEEOwQIANBlAFqIgcgA0EwaiAJIAggChDJ +HCACQQFqIQIgBUEIaiEFIARBKGohBCAHKAIAIAcoAghBKGxqGgwBCwsgACACNgIIIABBADYCBCAA +IAY2AgAMBAsgA0E4aiABKAKYBCACQQFrIggQ3wUgAygCOEUNAiADQShqIANBOGoQsyggAyADKQMo +NwKUASABQZwEaiEEIAFB2ABqIQVBACECIAEhBgNAIAIgAS8BlgRPDQIgA0EgaiAGEPEuIAMoAiQh +CSADKAIgIQogA0HgAGogBRDsECADQYgBaiAEKAIAIAgQ3wUgAygCkAEhCwJ/IAMoAogBIgdFBEAg +A0EYahClRCADKAIYIQcgAygCHAwBCyADKAKMAQshDCADQZQBaiAKIAkgA0HgAGogByAMEJMVIAMg +CyADKAJAakEBajYCQCACQQFqIQIgBEEEaiEEIAZBCGohBiAFQShqIQUMAAsAC0G++ccAQShB6PnH +ABDmKwALIAAgAykCODcCACAAQQhqIANBQGsoAgA2AgAMAQtB+PnHABCjSwALIANBoAFqJAALxgUC +Bn8CfiMAQfABayICJAAgAkEIaiABEMYvAkACQAJAIAIoAgggAigCDCAAKAIAIgMoAggiAEE4aigC +ACAAQTxqKAIAEIA8BEAgAiABEMcvIAIoAgAgAigCBCADKAIIIgBBQGsoAgAgAEHEAGooAgAQgDwN +AQsjAEEwayIAJAAgAEEoaiABEMYvIABBIGogACgCKCAAKAIsEMIwIAApAyAhCCAAQRhqIAEQxy8g +AEEQaiAAKAIYIAAoAhwQwjAgACkDECEJIABBCGogARDILyAAIAAoAgggACgCDBDCMCACQShqIgQg +ACkDADcCECAEIAk3AgggBCAINwIAIABBMGokACACQZgBaiADQcQAahCMSiACKAKYAQ0BIAIgAigC +nAEiADYCHCACIAJBoAFqLQAAOgAgIAJBmAFqIgMgAUHYABDNTxogAkFAayAAQQhqIAJBKGogAxDr +GSACKAJAQYOAgIB4RwRAIAJBQGsQyhMLIAJBHGoQnx8MAgsCQEHEk9sAKAIADQBBxP3aABD7PiIA +Qf8BcUUNAEEAIQNBxP3aACgCACAAEPUuRQ0AQcT92gAoAgAiAEEcaiEEIABBIGooAgAiBQRAIABB +KGooAgAhBiAAQSRqKAIAIQcgACgCHCEDIAJBADYCqAEgAiAGNgKkASACIAc2AqABIAIgBTYCnAEL +IAIgAzYCmAEgAkFAayIAIAJBmAFqIgNBoKHLABCvLSACQaQBakIANwIAIAJB8KHLADYCJCACQQE2 +ApwBIAJB6KHLADYCmAEgAkGcmssANgKgASACIAM2AiAgAiAANgIcIAJBEGoiACAEIAJBHGoQ4EFB +xP3aACgCACAAEMQ0CyABEMoTDAELIAIgAigCnAE2AkAgAiACQaABai0AADoAREGcmssAQSsgAkFA +a0Gom8sAQeygywAQiRgACyACQfABaiQAC5sEAgJ/AX4jAEEgayICJAACQAJAAkACQAJAAkACQAJA +AkACQAJAQRUgASgCAEGAgICAeHMiAyADQRVPG0EBaw4ICAABAgMEBQYHCyAAQQA2AgAgACABMwEE +NwMIDAgLIABBADYCACAAIAE1AgQ3AwgMBwsgAEEANgIAIAAgASkDCDcDCAwGCyAAAn8gASwABCID +QQBIBEAgAkECOgAIIAIgA6w3AxAgACACQQhqIAJBH2pB2JrSABChFTYCBEEBDAELIAAgA61C/wGD +NwMIQQALNgIADAULIAACfyABLgEEIgNBAEgEQCACQQI6AAggAiADrDcDECAAIAJBCGogAkEfakHY +mtIAEKEVNgIEQQEMAQsgACADrUL//wODNwMIQQALNgIADAQLIAACfyABKAIEIgNBAEgEQCACQQI6 +AAggAiADrDcDECAAIAJBCGogAkEfakHYmtIAEKEVNgIEQQEMAQsgACADrTcDCEEACzYCAAwDCyAA +An8gASkDCCIEQgBTBEAgAkECOgAIIAIgBDcDECAAIAJBCGogAkEfakHYmtIAEKEVNgIEQQEMAQsg +ACAENwMIQQALNgIADAILIAJBEGogAUEIaikDADcDACACIAEpAwA3AwggAkEIaiACQR9qQdia0gAQ +gzYhASAAQQE2AgAgACABNgIEDAILIABBADYCACAAIAExAAQ3AwgLIAEQ5R8LIAJBIGokAAvpBgIL +fwN+IwBB0AFrIgMkACADQQA2AhAgA0KAgICAgAE3AgggA0EANgIcIANCgICAgIABNwIUIANBIGog +AUEwEM1PGiADQfgAaiEHIAIoAgghCCACKAIEIQkgAigCACEKA0AgA0HQAGogA0EgahC2IiADKAJQ +BEAgA0GIAWogA0HoAGopAwA3AwAgA0GAAWogA0HgAGopAwA3AwAgByADQdgAaikDADcDACADIAMp +A1A3A3AgA0G4AWoiASAHQRBqKQMANwMAIANBsAFqIgIgB0EIaikDADcDACADIAcpAwA3A6gBQQAh +BAJAAkAgA0GoAWoQ60gNACAKLQAwBEBBASEEIANBqAFqIAkgCBDPPkUNAQsgA0GgAWogASkDADcD +ACADQZgBaiACKQMANwMAIAMgAykDqAE3A5ABIwBBMGsiASQAIANBCGoiBSADQZABaiICKAIUQQBH +EK08IAUoAgQgBSgCCCEEIAFBEGoiCyACQRBqKQMANwMAIAFBCGoiDCACQQhqKQMANwMAIAEgAikD +ADcDACAEQRhsaiECA0AgAUEoaiIGIAspAwA3AwAgAUEgaiINIAwpAwA3AwAgASABKQMANwMYIAFB +ADYCFCABKAIsBEAgDSkDACEOIAEpAxghDyACQRBqIAYpAwA3AwAgAkEIaiAONwMAIAIgDzcDACAC +QRhqIQIgBEEBaiEEDAELCyABQRhqEJVFIAUgBDYCCCABEJVFIAFBMGokAAwBCyADQaABaiABKQMA +Ig43AwAgA0GYAWogAikDACIPNwMAIAMgAykDqAEiEDcDkAEgASAONwMAIAIgDzcDACADIBA3A6gB +IAMgBDYCwAEjAEHQAGsiASQAIANBFGoiBCADQagBaiIFKAIYQQZHENY7IAQoAgQgBCgCCCECIAEg +BUEoEM1PIQEgAkEobGohBQNAIAFBKGogAUEoEM1PGiABQQY2AhggASgCQEEGRwRAIAUgAUEoakEo +EM5PQShqIQUgAkEBaiECDAELCyABQShqEIRDIAQgAjYCCCABEIRDIAFB0ABqJAALIANB0ABqEIE/ +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 +IANB2ABqIAU2AgAgA0HQAGoiDCAQNwMAIANBzABqIAg2AgAgA0HIAGoiDiAHNgIAIANBxABqIAQ2 +AgAgA0FAayIPIAk2AgAgA0GFAWpBADoAAEHEk9sAKAIAQQJLDQZB+I3bABD7PiIFQf8BcUUNBkEA +IQRB+I3bACgCACAFEPUuRQ0GQfiN2wAoAgAiBUEoaigCACEIIAVBJGooAgAhCSAFKAIcIQogAiAF +QSBqKAIAIgcEfyACQQA2AqgIIAIgCDYCpAggAiAJNgKgCCACIAc2ApwIQQEhBCAKBUEACzYCmAgg +AkGYCWogAkGYCGpBoJ3BABDYLCACIA82AvAEIAIgBCAHTwR/QQAFIAIgCDYCpAggAiAJNgKgCCAC +IAc2ApwIIAIgBDYCqAggBEEBaiEEIAoLNgKYCCACQfgHaiACQZgIakGgncEAENgsIAIgDjYC9AQg +AiAEIAdJBH8gAiAENgLECSACIAg2AsAJIAIgCTYCvAkgAiAHNgK4CSAKBUEACzYCtAkgAkHwCWoi +ByACQbQJaiIEQaCdwQAQ2CwgAkG4CGpBsJ3BADYCACACQawIakH8zcAANgIAIAJBtAhqIAJB+ARq +NgIAIAJBqAhqIAJB9ARqNgIAIAJB7M3AADYCoAggAiAMNgL4BCACIAc2ArAIIAIgAkH4B2o2AqQI +IAIgAkHwBGo2ApwIIAIgAkGYCWo2ApgIIAQgBUEcaiACQZgIahDhQSADQeAAaiAFIAQQxDIgA0EB +OgCFASADQegAaigCAEECRgwHCyADQawBaiIHLQAAQQFrDgQEAAoLCQsAC0GgxMAAQSNBoJ3BABDm +KwALQaDEwABBI0HwucEAEOYrAAtBjMLAAEE2QcTCwAAQnzcAC0GgxMAAQSNBoJ3BABDmKwALIANB +AToAhQEgA0H4AGpBADYCACADQegAakECNgIAQQELIAMoAkwhBCADKAJIIQUgAygCWCEIIAMpA1Ah +ECADKAJEIQkgAygCQCEKDQEgA0EAOgCFASADQcwBakEAOgAAIANByAFqIAs2AgAgA0HEAWogBDYC +ACADQcABaiAFNgIAIANBvAFqIAk2AgAgA0G4AWogCjYCACADQbABaiAINgIAIANBqAFqIBA3AwAg +A0GIAWogA0HgAGopAwA3AwAgA0GQAWogA0HoAGopAwA3AwAgA0GYAWogA0HwAGopAwA3AwAgA0Gg +AWogA0H4AGopAwA3AwAgA0HNAWogAkH8BGpBgwIQzU8aCyMAQbACayIEJAAgA0GIAWoiCyIFKAII +QQJHBEAgBUEIaiAFEPgnCyACQZgIaiEIIAQgBTYCCAJAAkACQAJAAkACQAJAAkACQAJAIAVBxABq +LQAAQQFrDgQHAAIDAQsACyAFQYABakEAOgAAIAVByABqIAUpAyA3AwAgBUH4AGogBUFAaygCADYC +ACAFQdgAaiAFQTBqKQMANwMAIAVB0ABqIAVBKGooAgA2AgALIARBMGogBUHIAGoiCSABEK8EIAQt +ADAiB0EMRg0FIARBDWogBEEwakEBckEjEM1PGiAJELQ4IAdBC0cNASAFQUBrKAIAEPhNIQcgBUGI +AWpBADoAACAFIAc2AkggBUHUAGogBUE4aikDADcCACAFQcwAaiAFQTBqKQMANwIACyAEQTBqIAVB +yABqIgogARCcAkEEIQEgBCgCkAEiCUEERg0CIAQtADAhByAEQY0CaiAEQTBqQQFyQSMQzU8aIARB +0AFqIARB1ABqQTwQzU8aIARByAFqIARBrAFqKAIANgIAIARBwAFqIARBpAFqKQIANwMAIARBuAFq +IARBnAFqKQIANwMAIAQgBCkClAE3A7ABIAoQ8SYMAQsgBEGNAmogBEENakEjEM1PGkEDIQkLIAgg +BzoAAEEBIQEgCEEBaiAEQY0CakEjEM1PGiAIQSRqIARB0AFqQTwQzU8aIAggCTYCYCAIIAQpA7AB +NwJkIAhB7ABqIARBuAFqKQMANwIAIAhB9ABqIARBwAFqKQMANwIAIAhB/ABqIARByAFqKAIANgIA +DAMLIAhBBDYCYAwCC0HgxsIAQSNBtIzDABDmKwALIAhBBDYCYEEDIQELIAUgAToARCAEQQhqEIo9 +IARBsAJqJAAgAigC+AgiBUEERg0IIAJB4AdqIAJBpAhqKQIANwMAIAJB6AdqIAJBrAhqKQIANwMA +IAJB8AdqIAJBtAhqKQIANwMAIAIgAikCnAg3A9gHIAItAJgIIQggAi8AmQggAi0AmwggAkGcB2og +AkG8CGpBPBDNTxogAkGYB2ogAkGUCWooAgA2AgAgAkGQB2ogAkGMCWopAgA3AwAgAkGIB2ogAkGE +CWopAgA3AwAgAiACKQL8CDcDgAcgCxDxHiALENkiQRB0ciEBDAoLIANBrAFqIgdBADoAACADQagB +aiALNgIAIANBpAFqIAQ2AgAgA0GgAWogBTYCACADQZwBaiAJNgIAIANBmAFqIAo2AgAgA0GQAWog +CDYCACADQYgBaiAQNwMAIANBrQFqIAJB/ARqQYMCEM1PGgsgA0HoAWpBADoAACADQeABaiADQagB +aigCADYCACADQcABaiADQZgBaikDADcDACADQbgBaiADQZABaigCADYCACADQbABaiADQYgBaikD +ADcDAAsgAkGYCGogA0GwAWoiBCABEJkCIAItAJgIIghBDEYNAyACQYAIaiIFIAJBpAhqKQIANwMA +IAJBiAhqIgkgAkGsCGopAgA3AwAgAkGQCGoiCyACQbQIaikCADcDACACIAIpApwINwP4ByACLwCZ +CCEKIAItAJsIIQwgBBCrOCAIQQtHDQEgA0GoAWooAgAQ+E0hBCADQfABakEAOgAAIAMgBDYCsAEg +A0G8AWogA0GgAWopAwA3AgAgA0G0AWogA0GYAWopAwA3AgALIAJBmAhqIANBsAFqIgQgARCaAkEE +IAIoAvgIIgVBBEYNAxogAkH4CWogAkGkCGopAgA3AwAgAkGACmogAkGsCGopAgA3AwAgAkGICmog +AkG0CGopAgA3AwAgAiACKQKcCDcD8AkgAi0AmAghCCACLwCZCCACLQCbCCACQbQJaiACQbwIakE8 +EM1PGiACQbAJaiACQZQJaigCADYCACACQagJaiACQYwJaikCADcDACACQaAJaiACQYQJaikCADcD +ACACIAIpAvwINwOYCSAEEPEmQRB0cgwBCyACQYgKaiALKQMANwMAIAJBgApqIAkpAwA3AwAgAkH4 +CWogBSkDADcDACACIAIpA/gHNwPwCUEDIQUgCiAMQRB0cgshASACQfAHaiACQYgKaikDADcDACAC +QegHaiACQYAKaikDADcDACACQeAHaiACQfgJaikDADcDACACIAIpA/AJNwPYByACQZwHaiACQbQJ +akE8EM1PGiACQZgHaiACQbAJaigCADYCACACQZAHaiACQagJaikDADcDACACQYgHaiACQaAJaikD +ADcDACACIAIpA5gJNwOAByAHQQE6AAAMBAtBAwshASAHIAE6AABBBAwBC0EDCzoAhAEgA0EDOgDU +AyANQQQ2AmAMAQsgA0GFAWotAAAEQCADQeAAahDZIgsgA0EAOgCFASACQeACaiIHIAJB4AdqKQMA +NwMAIAJB6AJqIgkgAkHoB2opAwA3AwAgAkHwAmoiCyACQfAHaikDADcDACACIAIpA9gHNwPYAiAC +QZwCaiIKIAJBnAdqQTwQzU8aIANBAToAhAEgAkGYAmoiDCACQZgHaigCADYCACACQZACaiIOIAJB +kAdqKQMANwMAIAJBiAJqIg8gAkGIB2opAwA3AwAgAkHYA2oiBCAHKQMANwMAIAJB4ANqIgcgCSkD +ADcDACACQegDaiIJIAspAwA3AwAgAiACKQOABzcDgAIgAiACKQPYAjcD0AMgAkGUA2ogCkE8EM1P +GiACQZADaiILIAwoAgA2AgAgAkGIA2oiCiAOKQMANwMAIAJBgANqIgwgDykDADcDACACIAIpA4AC +NwP4AgJ/AkACQAJAIAVBAmsOAgECAAsgAkH4AWogCSkDADcDACACQfABaiAHKQMANwMAIAJB6AFq +IAQpAwA3AwAgAiACKQPQAzcD4AEgAkGkAWogAkGUA2pBPBDNTxogAkGgAWogCygCADYCACACQZgB +aiAKKQMANwMAIAJBkAFqIAwpAwA3AwAgAiACKQP4AjcDiAELIAJBqARqIAJB+AFqKQMANwMAIAJB +oARqIAJB8AFqKQMANwMAIAJBmARqIAJB6AFqKQMANwMAIAIgAikD4AE3A5AEIAJBsARqIAJBpAFq +QTwQzU8aIAJBiARqIAJBoAFqKAIANgIAIAJBgARqIAJBmAFqKQMANwMAIAJB+ANqIAJBkAFqKQMA +NwMAIAIgAikDiAE3A/ADIAhB/wFxIAFBCHRyDAELIAJBmAVqIAkpAwA3AgAgAkGQBWogBykDADcC +ACACQYgFaiAEKQMANwIAIAIgAikD0AM3AoAFIAIgCDoA/AQgAiABOwD9BCACIAFBEHY6AP8EIAJB +/ARqEM4eCyEBIANB0ANqEKw5IANBEGoQ+j4gA0EYahD6PiACQQhqQQRyIAJBkARqQdwAEM1PGiAD +QQE6ANQDIAJBhAFqIAJBiARqKAIANgIAIAJB/ABqIAJBgARqKQMANwIAIAJB9ABqIAJB+ANqKQMA +NwIAIAIgAikD8AM3AmwgAiAFNgJoIAIgATYCCCADKAIIQYGU69wDRg0BIAIgAzYC/AQCQAJAAkAg +AkH8BGooAgAiAS0A1AMOBAECAgACCwJAAkACQCABQYQBai0AAEEDaw4CAAEDCyABQYgBaiIEEPEe +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 +IAdBATYC1AEMBQsgBygC5AEEQEGeksAAQREQ8R8hAQwDCyAHQegAaiAHQawBahCaOCAHKAJsIQEg +BygCaA0CIAcpAnAhJCAHQeQBahCSQSAHICQ3AuwBIAcgATYC6AEgB0EBNgLkAQwECyAHKAL0AQRA +Qa+SwABBERDxHyEBDAILIAdB6ABqIAdBrAFqEJo4IAcoAmwhASAHKAJoDQEgBykCcCEkIAdB9AFq +EJJBIAcgJDcC/AEgByABNgL4ASAHQQE2AvQBDAMLIAcoAqwBIgMQ5xYiAQ0AIAdB6ABqIAMQ4wQg +BygCbCEFIAcoAmgEQCAFIQEMAQsgBykCcCEkIAdBxAFqEJRBIAcgJDcCzAEgByAFNgLIAUEBIQMg +B0EBNgLEASAkQiCIpyEOICSnIREMAgsgB0H0AWoQkkEgB0HkAWoQkkEgB0HUAWoQkkEgB0HEAWoQ +lEEgB0G0AWoQikFBASECQQALIRJBASEDIAYgBi0AHEEBajoAHCAHIAYQjRMiBDYCqAEgByAaNgKk +ASAHIB02AqABIAcgCDYCnAEgByAbNgKYASAHIB42ApQBIAcgGDYCkAEgByAVNgKMASAHIB82AogB +IAcgGTYChAEgByAONgKAASAHIBE2AnwgByAFNgJ4IAcgHDYCdCAHICA2AnAgByABNgJsIAcgAjYC +aCAHQewAaiEFAkACQCACRQRAAkAgBARAQQEhCCAEIQEgEkUNAQwDCyAHIAdB8ABqQTgQzU8aQQAh +CCASDRALIARFIQMgBRDfHQwCC0EBIQggEkUNAQsgBRCnNyAHKAKoASEEIAIhAwsgA0UgBEVyDQwg +B0GoAWoQ3x0MDAsgBygCrAEhAQwACwALIAdBADYC3AEgB0EANgLUAQwECyAHKAL4ASEBDAULIAco +AmwhAQwFCyAHQRg2AmggBiAHQegAahCAMQshASAPQQE2AgAgDyABNgIEDAgLIAdB6ABqIAdBtAFq +EN8HAkACQAJAIAcoAmgiAkECRwRAAkAgAkUEQCAHQQA2AuwBDAELIAcoAmwhCCAHIAcpAnA3AugB +CyAHIAg2AuQBIAdB6ABqIAdBtAFqEN8HIAcoAmgiAkECRg0BAkAgAkUEQEEAIQggB0EANgL8AQwB +CyAHKAJsIQggByAHKQJwNwL4AQsgByAINgL0ASAHQegAaiAHQbQBahDfByAHKAJoIgJBAkcEQCAH +QeAAaiAHQdwBaigCADYCACAHQdAAaiAHQewBaigCADYCACAHQUBrIAdB/AFqKAIANgIAIAcgBykC +1AE3A1ggByAHKQLkATcDSCAHIAcpAvQBNwM4IAcoAmxBACACGyEDIAcpAnAiJUIgiKdBACACGyEF +IAcpAsgBISQgJachEUEBIQ5BAAwICyAHKAJsIQEgB0H0AWoQ4gcMAgsgBygCbCEBDAILIAcoAmwh +AQsgB0HkAWoQ4gcLIAdB1AFqEIUZDAELIAcoAmwhAQsgB0HEAWoQzBkLQQELIQRBASEIIAYgBi0A +HEEBajoAHCAGEJ8MIQIgB0GAAWogB0HgAGooAgA2AgAgB0GMAWogB0HQAGooAgA2AgAgB0GYAWog +B0FAaygCADYCACAHICQ3AnAgByABNgJsIAcgBDYCaCAHIAI2AqgBIAcgBTYCpAEgByARNgKgASAH +IAM2ApwBIAcgBykDWDcCeCAHIAcpA0g3AoQBIAcgBykDODcCkAEgB0HsAGohAwJ/AkACQAJAIARF +BEAgAkUNAiACIQEgDkUNAwwBC0EBIA5FDQMaCyADEKc3IAcoAqgBIQIgBAwCCyAHIAdB8ABqQTgQ +zU8aQQAhCCAODQILIAMQ3x0gAkULIQMgAkUgA0VyDQAgB0GoAWoQ3x0LIAgNACAPQQhqIAdBOBDN +TxogDyABNgIEQQAMAQsgDyAGIAEQ/1A2AgRBAQs2AgALIAdBkAJqJAACQCALKAJwRQRAIAtBNGog +C0H0AGpBPBDNTxogC0EUahDVIyIBRQRAIBBBBGogC0E0akE8EM1PGiAQQQA2AgAMAgsgEEEBNgIA +IBAgATYCBCALQTRqEKc3DAELIBAgCygCdDYCBCAQQQE2AgALIAtBFGoQiD8gC0GwAWokACAKKAIo +BEAgDEEQaiAKKAIsNgIAIAxCg4CAgKCAgICAfzcDCCAMQQE2AgAMAgsgDEEQaiAKQThqKQIANwIA +IAxBGGogCkFAaygCADYCACAKQTBqKQIAISQgCigCLCEBIApBIGogCkHMAGooAgAiAjYCACAMQShq +IApB0ABqKQIANwIAIAxBMGogCkHYAGooAgA2AgAgCiAKQcQAaikCACIlNwMYIApBEGogCkHkAGoo +AgAiAzYCACAKIApB3ABqKQIAIiY3AwggDEEIaiAkNwMAIAwgATYCBCAMQRxqICU3AgAgDEEkaiAC +NgIAIAxBNGogJjcCACAMQTxqIAM2AgAgDEEANgIADAELIApBKGoiASAWQdgAEM1PGiAMQQhqIAEQ +mgwgDEEBNgIADAELIBYQ70cLIApBgAFqJAAgCSgCkAFFBEAgCUGcAWooAgAhByAJQZgBaigCACEC +IAkoApQBIRQgCUHgAGogCUGgAWpBMBDNTxpBASEBDAcLIAlBnAFqKAIAIQcgCSgCmAEhAiAJQeAA +aiAJQaABakEoEM1PGgwFCyAJQZABaiEOIwBB4ABrIgwkAAJAAkAgCUEIaiIQLwFEQY8DTQRAIAxB +CGohDyAQQcwAaigCAEG11MUAIBBB0ABqKAIAIgEbIQIjAEHwAGsiCCQAIAhCADcCECAIIAFBAiAB +GzYCDCAIIAI2AgggCEEYaiIFIAhBCGoQsDVBACECIwBB8ABrIgYkACAGIAUQvBYCQCAIQdQAaiIL +An8CQAJAAn8CQAJ/AkACfwJAAkACQAJAAkACQAJ/IAYtAABFBEAgBi0AAUUEQCAGQQU2AhggBSAG +QRhqEIAxDAILIAYtAAIiAUHbAEYNAiABQfsARg0DIAUgBkHvAGpBhL3AABCEBSEBDA4LIAYoAgQL +IQEgC0EBNgIAIAsgATYCBAwOCyAFIAUtABxBAWsiAToAHCABQf8BcQRAIAUQvkEgBkEBOgBoIAYg +BTYCZCAGQRhqIAZB5ABqEN0HIAYoAhgiAUECRg0EAkAgAUUEQEEAIQEgBkEANgJcDAELIAYoAhwh +ASAGIAYpAiA3AlgLIAYgATYCVCAGQcQAaiAGKAJkIgcQvBYgBi0AREUEQCAGLQBFRQRAIAZBAjYC +GCAHIAZBGGoQgDEMCgsCQCAGLQBGIgNBLEcEQCADQd0ARg0FIAYtAGgNASAGQQc2AhggByAGQRhq +EIAxDAsLIAYtAGgNACAHEL5BIAZBGGogBxC8FiAGLQAYDQkgBi0AGUUNBSAGLQAaIQMLIANB/wFx +Qd0ARgRAIAZBFTYCGCAHIAZBGGoQgDEMCgsgBkEYaiAHENEEIAYoAhgNCCAGQSBqKQIAISQgBigC +HCEEIAYpAlghJUEBDAsLIAYoAkgMCAsgBkEYNgIYIAUgBkEYahCAMQwFCyAFIAUtABxBAWsiAToA +HCABQf8BcUUNAyAFEL5BIAZBAToAQCAGIAU2AjwgBkEANgJEIAZBADYCVCAGQcgAaiEEIAZB2ABq +IQogBSEBA0AgBkHkAGogARC8FgJAAn8CQAJ/AkAgBi0AZA0AAn8CQAJ/IAYtAGVFBEAgBkEDNgIY +IAEgBkEYahCAMQwBCwJAAkACQAJAIAYtAGYiA0EsRwRAIANB/QBHDQFBAyEHQQAMCQsgBi0AQA0B +IAEQvkEgBkEYaiABELwWIAYtABgEQCAGKAIcDAULIAYtABlFDQUgBi0AGiEDDAILIAYtAEBFDQIL +IAZBADoAQAsCQCADQf8BcSIDQSJHBEAgA0H9AEYNASAGQRE2AhggASAGQRhqEIAxDAULIAEQvkEg +AUEANgIIIAZBGGogAUEMaiABEPsFIAYoAhwhASAGKAIYQQJGBEAgASECQQEMBwsgBkHkAGohAwJA +IAEgBigCICIRQaDYxQBBCBCAPEUEQCABIBFBqNjFAEENEIA8RQRAIANBAjoAAQwCCyADQQE6AAEM +AQsgA0EAOgABCyADQQA6AAAgBi0AZA0FIAYtAGUhB0EADAYLIAZBFTYCGCABIAZBGGoQgDEMAwsg +BkEINgIYIAEgBkEYahCAMQshAkEBDAMLIAZBBTYCGCABIAZBGGoQgDELIQFBACEDDAILIAYoAmgh +AkEBC0EAIQMEQCACIQEMAQsCQAJAAkACQAJAIAdB/wFxDgQAAgEDAQsgBigCRARAQYCSwABBCBDx +HyEBDAULIAZBGGogBkE8ahCYOCAGKAIcIQEgBigCGA0EIAYpAiAhJCAGQcQAahCKQSAGICQ3Akwg +BiABNgJIIAZBATYCRAwGCyAGQTxqEJA/IgENAwwFCyAGKAJURQ0BQYSTwABBDRDxHyEBDAILAkAg +BigCRCIBRQRAIAZBADYCICAGQQA2AhgMAQsgBkEgaiAEQQhqKAIANgIAIAYgBCkCADcDGAsgBigC +VEUEQCABQQBHIQNBhJPAAEENEPAfIQEgBkEYahDMGQwCCyAGKQIcISUgBigCGCEBIAYpAlwhJCAG +KAJYIQdBASEKQQAMAgsgBigCPCIREOcWIgENACAGQRhqIBEQ0QQgBigCHCEBIAYoAhgNACAGKQIg +ISQgBigCVARAIAoQvQcLIAYgJDcCXCAGIAE2AlggBkEBNgJUDAILIAYoAlQEQCAKEL0HCyADIAYo +AkRFckUEQCAEEMwZC0EAIQpBAQshA0EBIQQgBSAFLQAcQQFqOgAcIAYgBRCNEyICNgI0IAYgJDcC +LCAGIAc2AiggBiAlNwIgIAYgATYCHCAGIAM2AhggBkEcaiERAkACQCADRQRAAkAgAgRAQQEhByAC +IQEgCkUNAQwDCyAGQRBqIAZBIGoiA0EQaigCADYCACAGQQhqIANBCGopAgA3AwAgBiADKQIANwMA +QQAhByAKDQ8LIAJFIQQgERDfHQwCC0EBIQcgCkUNAQsgERCmRyAGKAI0IQIgAyEECyAERSACRXIN +CyAGQTRqEN8dDAsLIAYoAjwhAQwACwALQQFBtJPAAEGshsAAEN4XDAULIAZBBTYCGCAHIAZBGGoQ +gDEMBAsgBigCHCEBDAQLIAZBGDYCGCAFIAZBGGoQgDELIQEgC0EBNgIAIAsgATYCBAwHCyAGKAIc +CyEBIAZB1ABqEMwZC0EBIQJBAAshCkEBIQcgBSAFLQAcQQFqOgAcIAYgBRCfDCIDNgI0IAYgJDcC +LCAGIAQ2AiggBiAlNwIgIAYgATYCHCAGIAI2AhggBkEcaiEEAn8CQAJAAkAgAkUEQCADRQ0CIAMh +ASAKRQ0DDAELQQEgCkUNAxoLIAQQpkcgBigCNCEDIAIMAgsgBkEQaiAGQSBqIgJBEGooAgA2AgAg +BkEIaiACQQhqKQIANwMAIAYgAikCADcDAEEAIQcgCg0CCyAEEN8dIANFCyECIANFIAJFcg0AIAZB +NGoQ3x0LIAcNACALIAE2AgQgC0EIaiAGKQMANwIAIAtBGGogBkEQaigCADYCACALQRBqIAZBCGop +AwA3AgBBAAwBCyALIAUgARD/UDYCBEEBCzYCAAsgBkHwAGokAAJAIAgoAlRFBEAgCEHIAGoiASAI +QegAaikCADcDACAIQUBrIgIgCEHgAGopAgA3AwAgCCAIKQJYNwM4IAhBGGoQ1SMiA0UEQCAPIAgp +Azg3AgQgD0EANgIAIA9BFGogASkDADcCACAPQQxqIAIpAwA3AgAMAgsgD0EBNgIAIA8gAzYCBCAI +QThqEKZHDAELIA8gCCgCWDYCBCAPQQE2AgALIAhBGGoQiD8gCEHwAGokACAMKAIIBEAgDkEIaiAM +KAIMNgIAIA5Cg4CAgKCAgICAfzcDAAwCCyAOQRBqIAxBGGopAgA3AgAgDkEYaiAMQSBqKAIANgIA +IAwoAgwhASAOQQhqIAxBEGopAgA3AwAgDiABNgIEIA5BBDYCAAwBCyAMQQhqIgEgEEHYABDNTxog +DiABEJoMDAELIBAQ70cLIAxB4ABqJAAgCSgCkAEiAkEERgRAIAlB6ABqIAlBqAFqKAIANgIAIAkg +CUGgAWopAwA3A2AgCUGcAWooAgAhByAJQZgBaigCACECQQIhASAJKAKUASEUDAYLIAkoApQBIQcg +CUHgAGogCUGYAWpBKBDNTxoMBAsgCUGQAWohASMAQeAAayICJAACQCAJQQhqIgMvAURBkANPBEAg +AkEIaiIEIANB2AAQzU8aIAEgBBCaDAwBCyABQQQ2AgAgAxDvRwsgAkHgAGokACAJKAKQASICQQRG +BEBBAyEBDAULIAkoApQBIQcgCUHgAGogCUGYAWpBKBDNTxoMAwsgCUGQAWohECMAQeAAayIKJAAC +QAJAIAlBCGoiES8BREGPA00EQCAKQQhqIQsgEUHMAGooAgBBtdTFACARQdAAaigCACIBGyECIwBB +0ABrIgckACAHQgA3AgggByABQQIgARs2AgQgByACNgIAIAdBEGoiBCAHELA1IwBBQGoiBSQAIAVB +JGogBBC8FgJAIAdBQGsiDgJ/AkACQAJ/AkACfwJAAn8CQAJAAkACQAJ/IAUtACRFBEAgBS0AJUUE +QCAFQQU2AgggBCAFQQhqEIAxDAILIAUtACYiAUHbAEYNAiABQfsARg0DIAQgBUE/akGktcAAEIQF +IQEMDAsgBSgCKAshASAOQQE2AgAgDiABNgIEDAwLIAQgBC0AHEEBayIBOgAcIAFB/wFxBEAgBBC+ +QSAFQSRqIAQQvBYgBS0AJA0CIAUtACVFBEAgBUECNgIIIAQgBUEIahCAMSEBDAgLQQEhCCAFLQAm +Qd0ARgR/QQAFIAVBCGogBBDSBCAFKAIIBEAgBSgCDCEBDAkLIAVBEGopAgAiJEIgiKchDCAkpyEP +IAUoAgwLIQFBAAwICyAFQRg2AgggBCAFQQhqEIAxDAULIAQgBC0AHEEBayIBOgAcIAFB/wFxRQ0D +IAQQvkEgBUEBOgAgIAUgBDYCHCAFQQA2AiQgBCEBAkADQCAFQTRqIAEQvBYCfwJAIAUtADQNAAJA +An8gBS0ANUUEQCAFQQM2AgggASAFQQhqEIAxDAELAkACQAJAAkAgBS0ANiICQSxHBEAgAkH9AEcN +AUECIQZBAAwICyAFLQAgDQEgARC+QSAFQQhqIAEQvBYgBS0ACARAIAUoAgwMBQsgBS0ACUUNBSAF +LQAKIQIMAgsgBS0AIEUNAgsgBUEAOgAgCwJAIAJB/wFxIgJBIkcEQCACQf0ARg0BIAVBETYCCCAB +IAVBCGoQgDEhAQwKCyABEL5BIAFBADYCCCAFQQhqIAFBDGogARD7BSAFKAIMIQEgBSgCCEECRgRA +IAEhA0EBDAYLIAEgBSgCEEGg2MUAQQgQgDwhASAFQTRqIgJBADoAACACIAFBAXM6AAEgBS0ANA0E +IAUtADUhBkEADAULIAVBFTYCCCABIAVBCGoQgDEhAQwICyAFQQg2AgggASAFQQhqEIAxCyEDQQEM +AgsgBUEFNgIIIAEgBUEIahCAMSEBDAULIAUoAjghA0EBCwRAIAMhAQwECyAGQQJHBEACQCAGQQFx +RQRAIAUoAiQNBCAFKAIcIgIQ5xYiAQ0GIAVBCGogAhDSBCAFKAIMIQEgBSgCCA0GIAUpAhAhJCAF +QSRqEJNBIAUgJDcCLCAFIAE2AiggBUEBNgIkDAELIAVBHGoQkD8iAQ0FCyAFKAIcIQEMAQsLIAUo +AihBACAFKAIkIgIbIQEgBUEwaigCAEEAIAIbIQwgBSgCLCEIQQEhD0EADAMLQYCSwABBCBDxHyEB +DAELIAUoAighAQwECyAFQSRqEJNBQQELIQNBASEGIAQgBC0AHEEBajoAHCAFIAQQjRMiAjYCGCAF +IAw2AhQgBSAINgIQIAUgATYCDCAFIAM2AgggBUEMaiEIAkACQAJAAkACQCADRQRAIAJFDQIgD0UN +ASACIQEMBAsgDw0DQQEhAwwECyACIQEMAQtBACEGIAUpAhAhJCAPDQcLIAJFIQMgCBDfHQwBCyAI +EMEHIAUoAhghAgsgA0UgAkVyDQQgBUEYahDfHQwECyAFQRg2AgggBCAFQQhqEIAxCyEBIA5BATYC +ACAOIAE2AgQMBQtBACEIQQELIQNBASEGIAQgBC0AHEEBajoAHCAFIAQQnwwiAjYCGCAFIAw2AhQg +BSAPNgIQIAUgATYCDCAFIAM2AgggBUEMaiEMAkACQAJAAkACQCADRQRAIAJFDQIgCEUNASACIQEM +BAsgCA0DQQEhAwwECyACIQEMAQtBACEGIAUpAhAhJCAIDQMLIAJFIQMgDBDfHQwBCyAMEMEHIAUo +AhghAgsgAkUgA0VyDQAgBUEYahDfHQsgBg0AIA4gATYCBCAOQQhqICQ3AgBBAAwBCyAOIAQgARD/ +UDYCBEEBCzYCAAsgBUFAayQAAkAgBygCQEUEQCAHQThqIgEgB0HMAGooAgA2AgAgByAHKQJENwMw +IAdBEGoQ1SMiAkUEQCALIAcpAzA3AgQgC0EANgIAIAtBDGogASgCADYCAAwCCyALQQE2AgAgCyAC +NgIEIAdBMGoQwQcMAQsgCyAHKAJENgIEIAtBATYCAAsgB0EQahCIPyAHQdAAaiQAIAooAggEQCAQ +QQhqIAooAgw2AgAgEEKDgICAoICAgIB/NwMADAILIAooAgwhASAQQQhqIApBEGopAgA3AwAgECAB +NgIEIBBBBDYCAAwBCyAKQQhqIgEgEUHYABDNTxogECABEJoMDAELIBEQ70cLIApB4ABqJABBBCEB +IAkoApABIgJBBEYEQCAJQZwBaigCACEHIAlBmAFqKAIAIQIgCSgClAEhFAwECyAJKAKUASEHIAlB +4ABqIAlBmAFqQSgQzU8aDAILIAlBkAFqIQ4jAEHgAGsiDyQAAkACQCAJQQhqIhEvAURBjwNNBEAg +D0EIaiEQIBFBzABqKAIAQbXUxQAgEUHQAGooAgAiARshBCMAQUBqIggkACAIQgA3AgggCCABQQIg +ARs2AgQgCCAENgIAIAhBEGoiBCAIELA1IAhBOGohCyMAQTBrIgYkACAGQRhqIAQQvBYCQAJAAkAC +QAJAAkACfyAGLQAYRQRAIAYtABlFBEAgBkEFNgIgIAQgBkEgahCAMQwCCyAGLQAaIgFB2wBGDQIg +AUH7AEYNAyAEIAZBL2pBpLTAABCEBSEBDAYLIAYoAhwLIQEgC0EANgIAIAsgATYCBAwFCyAEIAQt +ABxBAWsiAToAHAJAIAFB/wFxBEAgBBC+QSAGQRhqIAQQvBYCQAJAAkACfyAGLQAYRQRAIAYtABlF +BEAgBkECNgIgIAQgBkEgahCAMQwCCyAGLQAaQd0ARg0CIAZBIGogBBCxFSAGKAIgIgUNAyAGKAIk +DAELIAYoAhwLIQFBACEFDAILQQBB/JPAAEGshsAAEN4XIQEMAQsgBigCJCEBCyAEIAQtABxBAWo6 +ABwgBiAEEJ8MIgI2AiggBiABNgIkIAYgBTYCICAFRQ0BIAJFDQMgBkEgahD6PkEAIQUgAiEBDAML +DAMLQQAhBSACRQ0BIAZBKGoQ3x0MAQsgBCAELQAcQQFrIgE6ABwgAUH/AXEEQCAEEL5BIAZBAToA +DCAGIAQ2AgggBkEANgIQIAQhAQNAIAZBGGogARC8FgJAAkACQAJAAkACQAJAAkACQAJ/AkAgBi0A +GA0AAkACfyAGLQAZRQRAIAZBAzYCICABIAZBIGoQgDEMAQsCQAJAAkACQCAGLQAaIgxBLEcEQCAM +Qf0ARw0BQQIhCkEADAgLIAYtAAwNASABEL5BIAZBIGogARC8FiAGLQAgBEAgBigCJAwFCyAGLQAh +RQ0FIAYtACIhDAwCCyAGLQAMRQ0CCyAGQQA6AAwLAkAgDEEiRwRAIAxB/QBGDQEgBkERNgIgIAEg +BkEgahCAMSEBDAcLIAEQvkEgAUEANgIIIAZBIGogAUEMaiABEPsFIAYoAiQhASAGKAIgQQJGBEAg +ASECQQEMBgsgASAGKAIoQZzaxQBBCBCAPCEBIAZBGGoiDEEAOgAAIAwgAUEBczoAASAGLQAYDQQg +Bi0AGSEKQQAMBQsgBkEVNgIgIAEgBkEgahCAMSEBDAULIAZBCDYCICABIAZBIGoQgDELIQJBAQwC +CyAGQQU2AiAgASAGQSBqEIAxIQEMAgsgBigCHCECQQELBEAgAiEBDAELIApBAkcEQCAKQQFxRQRA +IAUNAyAGKAIIIgMQ5xYiAQ0IIAZBIGogAxCxFSAGKAIgIgVFDQYgBigCJCEDIAZBEGoQkEUgBiAD +NgIUIAYgBTYCEAwKCyAGQQhqEJA/IgFFDQkMAQsgBUUNAwwFCyAFDQEMBQtB7InAAEEIEPEfIQEL +IAZBEGoQ+j4MAwsgBkEgakHsicAAQQgQkU0gBigCICIFRQ0AIAYoAiQhAwwBCyAGKAIkIQEMAQsg +AyEBDAELQQAhBQsgBCAELQAcQQFqOgAcIAYgBBCNEyICNgIoIAYgATYCJCAGIAU2AiAgBQRAIAJF +DQQgBkEgahD6PkEAIQUgAiEBDAQLQQAhBSACRQ0DIAZBKGoQ3x0MAwsgBigCCCEBDAALAAsMAQsg +BUUNASALIAE2AgQgCyAFNgIADAILIAZBGDYCICAEIAZBIGoQgDEhASALQQA2AgAgCyABNgIEDAEL +IAQgARD/UCEBIAtBADYCACALIAE2AgQLIAZBMGokAAJAIAgoAjgiAQRAIAggCCgCPCICNgI0IAgg +ATYCMCAIQRBqENUjIgNFBEAgECACNgIEIBAgATYCAAwCCyAQQQA2AgAgECADNgIEIAhBMGoQ+j4M +AQsgECAIKAI8NgIEIBBBADYCAAsgCEEQahCIPyAIQUBrJAAgDygCCCIBRQRAIA5BCGogDygCDDYC +ACAOQoOAgICggICAgH83AwAMAgsgDkEIaiAPKAIMNgIAIA4gATYCBCAOQQQ2AgAMAQsgD0EIaiIB +IBFB2AAQzU8aIA4gARCaDAwBCyAREO9HCyAPQeAAaiQAIAkoApABIgJBBEYEQCAJQZgBaigCACEC +QQUhASAJKAKUASEUDAMLIAkoApQBIQcgCUHgAGogCUGYAWpBKBDNTxoMAQsgCUGQAWohCiMAQeAA +ayIMJAACQAJAIAlBCGoiDi8BREGPA00EQCAMQQhqIQsgDkHMAGooAgBBtdTFACAOQdAAaigCACIB +GyEDIwBB4ABrIgckACAHQgA3AgggByABQQIgARs2AgQgByADNgIAIAdBEGoiAyAHELA1IAdByABq +IQgjAEHgAGsiBCQAIARB0ABqIAMQvBYCQAJAAkACQAJAAkACfwJAAn8CQAJAAkACQAJ/IAQtAFBF +BEAgBC0AUUUEQCAEQQU2AhggAyAEQRhqEIAxDAILIAQtAFIiAUHbAEYNAiABQfsARg0DIAMgBEHf +AGpBlLTAABCEBSEBDA0LIAQoAlQLIQEgCEGAgICAeDYCCCAIIAE2AgAMDAsgAyADLQAcQQFrIgE6 +ABwgAUH/AXEEQCADEL5BIARBAToAQCAEIAM2AjwgBEEYaiAEQTxqEPQHIAQoAhgiBkGBgICAeEYE +QCAEKAIcIQEMCAsgBkGAgICAeEYEQEEAQbSTwABBrIbAABDeFyEBDAgLIAQoAhwhASAEIAQoAiA2 +AlggBCABNgJUIAQgBjYCUCAEQcQAaiAEKAI8IgEQvBYgBC0AREUEQCAELQBFRQRAIARBAjYCGCAB +IARBGGoQgDEMCAsCQAJAIAQtAEYiBUEsRwRAIAVB3QBGDQYgBC0AQA0BIARBBzYCGCABIARBGGoQ +gDEMCgsgBC0AQA0AIAEQvkEgBEEYaiABELwWIAQtABgNCCAELQAZBEAgBC0AGiEFDAILIARBBTYC +GCABIARBGGoQgDEMCQsgBEEAOgBACyAFQf8BcUHdAEYEQCAEQRU2AhggASAEQRhqEIAxDAgLIARB +GGogARD0GiAEKAIYDQYgBCgCJCEFIAQoAiAhASAEKQJUISQMCQsgBCgCSAwGCyAEQRg2AhggAyAE +QRhqEIAxDAMLIAMgAy0AHEEBayIBOgAcIAFB/wFxRQ0BIAMQvkEgBEEBOgBAIAQgAzYCPCAEQYCA +gIB4NgJEIAMhAQNAIARB0ABqIAEQvBYCQAJAAn8CQAJ/AkAgBC0AUA0AAn8CQAJ/IAQtAFFFBEAg +BEEDNgIYIAEgBEEYahCAMQwBCwJAAkACQAJAIAQtAFIiBUEsRwRAIAVB/QBHDQFBAyEGQQAMCQsg +BC0AQA0BIAEQvkEgBEEYaiABELwWIAQtABgEQCAEKAIcDAULIAQtABlFDQUgBC0AGiEFDAILIAQt +AEBFDQILIARBADoAQAsCQCAFQf8BcSIFQSJHBEAgBUH9AEYNASAEQRE2AhggASAEQRhqEIAxDAUL +IAEQvkEgAUEANgIIIARBGGogAUEMaiABEPsFIAQoAhwhASAEKAIYQQJGBEAgASECQQEMBwsgBEHQ +AGohBQJAIAEgBCgCICIPQYDaxQBBBBCAPEUEQCABIA9BhNrFAEEFEIA8RQRAIAVBAjoAAQwCCyAF +QQE6AAEMAQsgBUEAOgABCyAFQQA6AAAgBC0AUA0FIAQtAFEhBkEADAYLIARBFTYCGCABIARBGGoQ +gDEMAwsgBEEINgIYIAEgBEEYahCAMQshAkEBDAMLIARBBTYCGCABIARBGGoQgDELIQFBACEFDAIL +IAQoAlQhAkEBC0EAIQUEQCACIQEMAQsCQAJAAkACQAJAIAZB/wFxDgQAAgEDAQsgBCgCREGAgICA +eEcEQEGwmMAAQQQQ8R8hAQwFCyAEQRhqIARBPGoQ/jggBCgCHCEBIAQoAhgiD0GAgICAeEYNBCAE +KAIgIQUgBEHEAGoQ+0AgBCAFNgJMIAQgATYCSCAEIA82AkQMBwsgBEE8ahCQPyIBDQMMBgsgJFBF +BEBB7IjAAEEFEPEfIQEMAwsgBEEYaiAEQTxqEKY4IAQoAhhFDQQMAQsCQCAEKAJEQYCAgIB4RyIF +RQRAIARBGGpBsJjAAEEEEI9NIAQoAhgiAUGAgICAeEYNAiAEIAQpAhw3AlQgBCABNgJQDAELIARB +2ABqIARBzABqKAIANgIAIAQgBCkCRDcDUAsCQCAkUARAIARBGGpB7IjAAEEFEMFMIAQoAhgNASAE +KQMgISULICVCIIinIQUgBCkCVCEkICWnIQEgBCgCUAwDCyAEKAIcIQEgBEHQAGoQiD8MAQsgBCgC +HCEBCwJAIAUNACAEKAJEQYCAgIB4Rg0AIARBxABqEIg/C0GAgICAeAshBiADIAMtABxBAWo6ABwg +BCADEI0TIgI2AjAgBCAkNwIkIAQgBTYCHCAEIAE2AhggBCAGNgIgAkAgBkGAgICAeEcEQCACDQEg +BEEQaiAEQSRqIgJBCGooAgA2AgAgBCACKQIANwMIDA0LIAJFDQsgBEEwahDfHQwLCyAEQSBqEIg/ +QYCAgIB4IQYgAiEBDAsLIAQpAyAhJUIBISQLIAQoAjwhAQwACwALQQFBtJPAAEGshsAAEN4XDAML +IARBGDYCGCADIARBGGoQgDELIQEgCEGAgICAeDYCCCAIIAE2AgAMBwsgBCgCHAshASAEQdAAahCI +PwtBgICAgHghBgsgAyADLQAcQQFqOgAcIAQgAxCfDCICNgIwIAQgJDcCJCAEIAU2AhwgBCABNgIY +IAQgBjYCIAJAIAZBgICAgHhGBEAgAg0BDAILIAJFBEAgBEEQaiAEQSRqIgJBCGooAgA2AgAgBCAC +KQIANwMIDAMLIARBIGoQiD9BgICAgHghBiACIQEMAgsgBEEwahDfHQtBgICAgHghBgsgBkGAgICA +eEYNACAIIAQpAwg3AgwgCCAGNgIIIAggBTYCBCAIIAE2AgAgCEEUaiAEQRBqKAIANgIADAELIAMg +ARD/UCEBIAhBgICAgHg2AgggCCABNgIACyAEQeAAaiQAAkAgBygCUEGAgICAeEcEQCAHQUBrIgIg +B0HYAGopAwA3AwAgB0E4aiIBIAdB0ABqKQMANwMAIAcgBykDSDcDMCAHQRBqENUjIgNFBEAgCyAH +KQMwNwMAIAtBEGogAikDADcDACALQQhqIAEpAwA3AwAMAgsgC0GAgICAeDYCCCALIAM2AgAgARCI +PwwBCyALQYCAgIB4NgIIIAsgBygCSDYCAAsgB0EQahCIPyAHQeAAaiQAIAwoAhAiAUGAgICAeEYE +QCAKQQhqIAwoAgg2AgAgCkKDgICAoICAgIB/NwMADAILIAwpAwghJCAKQRRqIAwpAhQ3AgAgCkEQ +aiABNgIAIAogJDcDCCAKQQQ2AgAMAQsgDEEIaiIBIA5B2AAQzU8aIAogARCaDAwBCyAOEO9HCyAM +QeAAaiQAIAkoApABIgJBBEYEQCAJQegAaiAJQagBaikDADcDACAJIAkpA6ABNwNgQQYhASAJKAKc +ASEHIAkoApgBIQIMAgsgCSgClAEhByAJQeAAaiAJQZgBakEoEM1PGgtBByEBCwJAIAFBB0cEQCAT +IAc2AgwgEyACNgIIIBMgFDYCBCATQRBqIAlB4ABqQTAQzU8aDAELIAkgBzYClAEgCSACNgKQASAJ +QZgBaiAJQeAAakEoEM1PGiATAn8jAEFAaiIEJAAgBEEANgIYIARCgICAgBA3AhAgBEE0akG8s8UA +NgIAIARBAzoAPCAEQSA2AiwgBEEANgI4IARBADYCJCAEQQA2AhwgBCAEQRBqNgIwIARBHGohBSMA +QTBrIgMkAAJ/IAlBkAFqIgIoAgBBA0YEQCADIAJBBGo2AgwgA0EcakIBNwIAIANBATYCFCADQbyD +xQA2AhAgA0GxBTYCLCADIANBKGo2AhggAyADQQxqNgIoIAUgA0EQahCPRQwBCyADIAI2AgwgA0Ec +akIBNwIAIANBATYCFCADQeSDxQA2AhAgA0GyBTYCLCADIANBKGo2AhggAyADQQxqNgIoIAUgA0EQ +ahCPRQsgA0EwaiQARQRAIARBCGogBEEYaigCACIDNgIAIAQgBCkCEDcDACAEKAIEIAMQDiAEEIg/ +AkAgAigCACIFQQNGBEACQAJAAkBBBCACKAIEIgVB/////wdqIgYgBkEETxsOBAQBAgQACyAFQYCA +gIB4Rg0DIAJBBGoQiD8MAwsgAkEIahDmNAwCCyACQQhqEIE/DAELAkACQAJAIAUOAgECAAsgAkEQ +aiACQQhqKAIAIAJBDGooAgAgAigCBCgCDBEDACACKAIUIgUgBSgCACIFQQFrNgIAIAVBAUcNAiAC +QRRqKAIAIgJBCGoQ2jQCQCACQX9GDQAgAiACKAIEIgVBAWs2AgQgBUEBRw0AIAIQmAQLDAILAkAC +QAJAAkACQAJAIAItABAOLAUFBQUFBQUFBQUFBQUFBQUFBQUFBQEFBQUFBQUFBQIFBQUFBQUFBQUD +BQUEAAsgAkEgahCBPyACQRRqEMwZDAQLIAJBFGooAgBBC0kNAyACQRhqEIE/DAMLIAJBFGoQiD8M +AgsgAkEUahD7QAwBCyACQRRqEPtACyACQQRqEIg/DAELIAJBCGoQzjALIARBQGskAAwBC0HUs8UA +QTcgBEGMtMUAQei0xQAQiRgACzYCBAsgEyABNgIAIAlB0AFqJAAgDSgCOCICQQdHBEAgDSgCPCED +IA1BkAFqIA1BQGtBOBDNTxogISgCACIBIAEoAgAiBEEBajYCACAEQQBIDQMgDUGMAmogIjYCACAN +ICM2AogCIA0gATYCqAIgDSADNgLMASANIAI2AsgBIA1B0AFqIA1BkAFqQTgQzU8aIA1BADoArAIj +AEHwAGsiASQAIAEgDUHIAWpB6AAQzU8iASABNgJsIAFB7ABqQbC9xgAQw1IhAyABKAIAQQhHBEAg +ARClAgsgAUHwAGokAEEADAULIA0oAjwhAwwDC0GZgcQAQRkQtk8ACyANLQBAIQIgDUHBAGotAAAh +AyMAQdAAayIBJAAgASADOgAPIAEgAjoADiABQQA2AiggAUKAgICAEDcCICABQcQAakG8s8UANgIA +IAFBAzoATCABQSA2AjwgAUEANgJIIAFBADYCNCABQQA2AiwgASABQSBqNgJAIwBBEGsiAiQAIAJB +CGoiAyABQQ5qIgRBAWo2AgAgAyAELQAAQQJ0QbTI2ABqKAIANgIEIAIoAgggAUEsaiACKAIMKAIQ +EQIAIAJBEGokAARAQdSzxQBBNyABQRBqQYy0xQBB6LTFABCJGAALIAFBGGogAUEoaigCACICNgIA +IAEgASkCIDcDECABKAIUIAIQDiEDIAFBEGoQiD8gAUHQAGokAAwBCwALIA1BMGoQ+j5BAQshASAN +QShqEPo+IA1BIGoQ+j4gFyAXKAIAQQFrNgIAIAAgATYCCCAAIANBACABGzYCBCAAQQAgAyABGzYC +ACANQbACaiQAC8IKAQh/IwBBsANrIgMkAAJAAkACQAJAIAAtAPgGQQFrDgMDAAIBCwALIABBuANq +IABBuAMQzU8aCyADQRhqIQUjAEGQBGsiAiQAAkACQAJAAkACQAJAIABBuANqIgQoAggiBkGBlOvc +A0cEQAJAAkACQCAELQC0A0EBaw4DCAACAQsACyAEQewAakEAOgAAIARB6ABqIARBsANqNgIAIARB +KGogBCkDEDcDACAEQSBqIAY2AgAgBCAEKQMANwMYCyACQYgBaiAEQRhqIgcgARD1ASACKALwASIG +QQNGDQMgAigCiAEhASACQawCaiACQYgBakEEckHkABDNTxogAkGoAmogAkGMAmooAgA2AgAgAkGg +AmoiCCACQYQCaikCADcDACACQZgCaiIJIAJB/AFqKQIANwMAIAIgAikC9AE3A5ACIAcQ6SsgBkEC +Rg0BIAJBqANqIAJBqAJqKAIANgIAIAJBoANqIAgpAwA3AwAgAkGYA2ogCSkDADcDACACIAIpA5AC +NwOQAyACQawDaiACQawCakHkABDNTxoMAgtBjMLAAEE2QcTCwAAQnzcACyACQaQBaiACQcQCaikC +ADcCACACQZwBaiACQbwCaikCADcCACACQZQBaiACQbQCaikCADcCACACIAIpAqwCNwKMASACIAE2 +AogBIAJBiAFqEM4eIQELIARBsANqEKw5IARBEGoQ+j4gAkEEciACQawDakHkABDNTxogBEEBOgC0 +AyACQYQBaiACQagDaigCADYCACACQfwAaiACQaADaikDADcCACACQfQAaiACQZgDaikDADcCACAC +IAIpA5ADNwJsIAIgBjYCaCACIAE2AgAgBCgCCEGBlOvcA0cEQCACIAQ2AogBAkACQAJAIAJBiAFq +KAIAIgEtALQDDgQBAgIAAgsgAUEYahDPHgsgAUGwA2oQrDkgAUEQahD6PgsgBEGBlOvcAzYCCAJA +IAIoAmhBAkcEQCAFIAJBiAEQzU8aDAELIAIoAgAQmywhASAFQQI2AmggBSABNgIACwwCCyAEQYGU +69wDNgIIQeTAwABBKEH8wcAAEOYrAAsgBEEDOgC0AyAFQQM2AmgLIAJBkARqJAAMAQtBoMTAAEEj +QeC5wQAQ5isACyAAIAMoAoABIgFBA0cEfyADKAIYIQIgA0G8AWogA0EYakEEckHkABDNTxogA0G4 +AWoiBSADQZwBaigCADYCACADQbABaiIGIANBlAFqKQIANwMAIANBqAFqIgcgA0GMAWopAgA3AwAg +AyADKQKEATcDoAEgBBD5MQJ/IAFBAkcEQCADIAI2AqACIANBoAJqIgRBBHIgA0G8AWpB5AAQzU8a +IANBlANqIAcpAwA3AgAgA0GcA2ogBikDADcCACADQaQDaiAFKAIANgIAIAMgATYCiAMgAyADKQOg +ATcCjAMgA0GAATYCrAMjAEGQAWsiAiQAIAJBCGogBEGIARDNTxpBkAFBCBDuLSIEQQA2AgAgBEEE +aiACQQRqQYwBEM1PGiACQZABaiQAIAMgBBAYNgIYIANBCGogAEHwBmogA0GsA2oiAiADQRhqIgQQ ++ycgAygCCCADKAIMEORBDAELIANBgAE2AqwDIAMgAjYCGCADIABB9AZqIANBrANqIgIgA0EYaiIE +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 +BjYCLCADIAIoAgAiADYCKCADIAY2AhwgAyAANgIYIAMgAigCCEEAIAAbNgIwIAMgAEEARyIANgIg +IAMgADYCEANAIANBEGoQlzEiAARAIABBBGogASgCLCABKAIwEIIhIgJFDQEgAiABKAI0IAEoAjgQ +hyEiAkUNASACKAIARQ0BIAMgAkEEajYCNCADQTRqIANBDGoQ1CdFDQELCyAFIAUoAgBBAWs2AgAg +AEEARwsgBCAEKAIAQQFrNgIAIANBQGskAA8LIAMgAykCFDcCNEHQpMwAQSsgA0E0akGcpcwAQYi9 +zAAQiRgACyADIAMpAjg3AhBB0KTMAEErIANBEGpBrKXMAEGYvcwAEIkYAAuyBAIEfwJ+IwBBQGoi +BCQAAkAgAadFBEBBgJTr3AMhAwwBCwJAAn4CQAJAIAQCfyACRAAAAAAAAAAAYwRAQejywwAhA0E8 +DAELQgAhASACvSIHQjSIIginIgZB/w9xIgVB4AdJDQUgB0L/////////B4NCgICAgICAgAiEIQEg +BUH/B0kNAiAFQbMISQ0BIAVBvwhJDQRBpPPDACEDQckACzYCPCAEIAM2AjgjAEEgayIAJAAgAEEM +akIBNwIAIABBATYCBCAAQcjyxAA2AgAgAEGuBTYCHCAAIARBOGo2AhggACAAQRhqNgIIIABBuPTD +ABDLMAALIARBKGogByAIQgF8hkL/////////B4NCAEKAlOvcAxDAGEEAIAQpAygiB0KAgICAgICA +BINCM4inIARBMGopAwBCDIYgB0I0iISnIgMgB0KA/P//////B4NCgICAgICAgARScnEgA2oiAyAD +QYCU69wDRiIFGyEDIAWtIAFCMyAIfYh8DAELIARBGGogAUIAIAZBLWpB/wBxEK8fIARBCGogBCkD +GCAEQSBqKQMAQoCU69wDEMAYQQAgBEEQaikDACIBQoCAgIAIg0IfiKcgAUIgiKciAyAEKQMIQoB8 +gyABQv////8Pg0KAgICACIWEQgBScnEgA2oiAyADQYCU69wDRiIFGyEDIAWtCyEBIANBgJTr3ANw +IQMMAQsgASAIQg18hiEBCyAAIAM2AgggACABNwMAIARBQGskAAuOBAICfwJ+IwBB0AFrIgQkACAE +IAI2AhwgBCADNgIgIARBEGogAiADKAIYEQEAAkAgBCgCECICBEAgBCgCFCEDIARBJGogABDgJCAE +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 +BSABKAIMIQQMAQsgA0HuAGogBy0AADoAACADQdgAaiAIKQMANwMAIANB4ABqIANBQGspAwA3AwAg +AyADLwFMOwFsIAMgAykDMDcDUAsgACACOgAAIAAgAy8BbDsAASAAIAU2AgggACAENgIEIAAgAykD +UDcCDCAAQQNqIANB7gBqLQAAOgAAIABBFGogA0HYAGopAwA3AgAgAEEcaiADQeAAaikDADcCAEEB +DAILQaDEwABBI0GQh8EAEOYrAAsgAEEMOgAAQQMLOgCAASADQfAAaiQAC78DAQZ/IwBB8ABrIgMk +ACABAn8CQAJAAkACQAJAIAEtAIABQQFrDgMDAAIBCwALIAEgASgCACIENgIIIAFBNWpBADoAACAB +QTBqIAEoAgQiBTYCACABQSxqIAQ2AgAgASAFNgIMCyADQQxqIAFBEGoiBiACEKkCIAMtAAwiAkEM +Rg0BIANBzgBqIgcgAy0ADzoAACADQThqIgggA0EgaikCADcDACADQUBrIANBKGopAgA3AwAgAyAD +LwANOwFMIAMgAykCGDcDMCADKAIQIQQgAygCFCEFIAYQuR8CQCACQQtGBEAgASgCCCEFIAEoAgwh +BAwBCyADQe4AaiAHLQAAOgAAIANB2ABqIAgpAwA3AwAgA0HgAGogA0FAaykDADcDACADIAMvAUw7 +AWwgAyADKQMwNwNQCyAAIAI6AAAgACADLwFsOwABIAAgBTYCCCAAIAQ2AgQgACADKQNQNwIMIABB +A2ogA0HuAGotAAA6AAAgAEEUaiADQdgAaikDADcCACAAQRxqIANB4ABqKQMANwIAQQEMAgtB4MbC +AEEjQdyDwwAQ5isACyAAQQw6AABBAws6AIABIANB8ABqJAALpwMCC38BfiMAQTBrIgIkACABKQMg +IQ0gAS0AVSEDIAJBDGogAUEoahC/SSABQTxqLQAAIQQgAUE7ai0AACEFIAFBOmotAAAhBiABQTlq +LQAAIQcgAUE4ai0AACEIIAFBN2otAAAhCSABQTZqLQAAIQogAUE1ai0AACELIAEtADQEfyACQShq +IAFBzQBqKQAANwMAIAJBIGogAUHFAGopAAA3AwAgAiABQT1qKQAANwMYQQEFQQALIQwgACADOgBV +IAAgDTcDICAAIAIpAgw3AiggACAMOgA0IABBNmogCjoAACAAQTVqIAs6AAAgACABKQMANwMAIABB +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 +fwF+IwBBwAVrIgIkAAJAAkAgASgCAEEBRgRAAkAgAUGUAmpBxN7JABDTISIDBEAgAygCAEUNAQsg +AEKEgICAMDcCACABEL8/DAILIAJBEGogAUEUaigCADYCACACIAEpAgw3AwggASkCJCEMIAJBKGog +AUEsakHIARDNTxogAkH4A2oiBiABQYwCaikAADcDACACQfADaiIHIAFBhAJqKQAANwMAIAJB6ANq +IgggAUH8AWopAAA3AwAgAiABKQD0ATcD4AMgAkGABGoiCSADQQRqQcABEM1PGiMAQRBrIgMkACAB +QRhqIgQoAgQhBSADQQhqIAQoAggiBBDGFiADKAIIIQogAygCDCAFIARBBXQQzU8hCyACQRRqIgUg +BDYCCCAFIAs2AgQgBSAKNgIAIANBEGokACACQfgBaiAIKQMANwMAIAJBgAJqIAcpAwA3AwAgAkGI +AmogBikDADcDACACIAw3AyAgAiACKQPgAzcD8AEgAkGQAmogCUHAARDNTxogAkHYA2pBADYCACAC +QQA2AtADIAAgAkEIahD5SDYCBCAAQQM2AgAgARC/PwwCCyAAQQQ2AgAgACABKQIANwIEIABBDGog +AUEIaigCADYCAAsgAUEkahD6PiABQQxqEIg/IAFBLGoQhUcgASgCLBCYBAsgAUGUAmoQrRkgAUEY +ahDePSACQcAFaiQAC7EDAQN/IwBBIGsiAiQAIAIgASgCACIDELwWAkAgAi0AAEUEQCACLQABRQRA +IAJBAjYCCCADIAJBCGoQgDEhASAAQQc6AAAgACABNgIEDAILAkACQCACLQACIgRBLEcEQCAEQd0A +RwRAIAEtAAQNAiACQQc2AgggAyACQQhqEIAxIQEgAEEHOgAAIAAgATYCBAwFCyAAQQY6AAAMBAsg +AS0ABA0AIANBFGoiASABKAIAQQFqNgIAIAJBCGogAxC8FiACLQAIBEAgACACKAIMNgIEIABBBzoA +AAwECyACLQAJBEAgAi0ACiEEDAILIAJBBTYCCCADIAJBCGoQgDEhASAAQQc6AAAgACABNgIEDAML +IAFBADoABAsgBEHdAEYEQCACQRU2AgggAyACQQhqEIAxIQEgAEEHOgAAIAAgATYCBAwCCyACQQhq +IAMQ0gIgAi0ACEEGRwRAIAAgAikDCDcDACAAQRBqIAJBGGopAwA3AwAgAEEIaiACQRBqKQMANwMA +DAILIAAgAigCDDYCBCAAQQc6AAAMAQsgACACKAIENgIEIABBBzoAAAsgAkEgaiQAC5kEAQN/IwBB +gAFrIgIkAAJ/IAEoAgAiA0UEQEEAIQFBAAwBCyACIAM2AiwgAkEANgIoIAIgAzYCHCACQQA2Ahgg +AiABKAIEIgM2AjAgAiADNgIgIAEoAgghAUEBCyEDIAIgATYCNCACIAM2AiQgAiADNgIUIAJB2ABq +QQEgARD6SQJAAkAgAigCWEECRwRAIAJB0ABqIAJB8ABqKQMANwMAIAJByABqIAJB6ABqKQMANwMA +IAJBQGsgAkHgAGopAwA3AwAgAiACKQNYNwM4A0AgAkEIaiACQRRqEJEQIAIoAggiAUUNAiACKAIM +IQMgAiABNgJ8IAIgAzYCWAJ/IAJB/ABqIQQjAEEQayIBJAAgAkE4aiIDKAIARQRAIAFBBGogBCgC +ABCNTQJ/IAEoAgRBgICAgHhHBEAgA0EQahD7QCADQRhqIAFBDGooAgA2AgAgAyABKQIENwIQQQAM +AQsgASgCCAsgAUEQaiQADAELQefZyQBBKEH02skAEOYrAAsiAUUEQCADIAJB2ABqEPgNIQELIAFF +DQALIABBBjoAACAAIAE2AgQgAkE4ahDKOAwCCyAAIAIoAlw2AgQgAEEGOgAADAELIAJB8ABqIAJB +0ABqKQMANwMAIAJB6ABqIAJByABqKQMANwMAIAJB4ABqIAJBQGspAwA3AwAgAiACKQM4NwNYIAAg +AkHYAGoQqxoLIAJBgAFqJAALlQMBAn8jAEGAAWsiAiQAAn8gASgCACIDRQRAQQAhA0EADAELIAIg +AzYCLCACQQA2AiggAiADNgIcIAJBADYCGCACIAEoAgQiAzYCMCACIAM2AiAgASgCCCEDQQELIQEg +AiADNgI0IAIgATYCJCACIAE2AhQgAkHYAGpBASADEPpJAkACQCACKAJYQQJHBEAgAkHQAGogAkHw +AGopAwA3AwAgAkHIAGogAkHoAGopAwA3AwAgAkFAayACQeAAaikDADcDACACIAIpA1g3AzgDQCAC +QQhqIAJBFGoQ0BAgAigCCCIBRQ0CIAIoAgwhAyACIAE2AnwgAiADNgJYIAJBOGogAkH8AGogAkHY +AGoQlD8iAUUNAAsgAEEGOgAAIAAgATYCBCACQThqEMo4DAILIAAgAigCXDYCBCAAQQY6AAAMAQsg +AkHwAGogAkHQAGopAwA3AwAgAkHoAGogAkHIAGopAwA3AwAgAkHgAGogAkFAaykDADcDACACIAIp +Azg3A1ggACACQdgAahCrGgsgAkGAAWokAAvIBQEEfyMAQTBrIgIkAAJ/AkACQAJAAkACQAJAAkBB +BiAAKAIAQQRrIgMgA0EGTxtBAWsOBgECAwQFBgALIAIgAEEEajYCKCACIABBBmo2AiwgAkEMakIC +NwIAIAJBJGpB6ws2AgAgAkECNgIEIAJBsNvNADYCACACQesLNgIcIAIgAkEYajYCCCACIAJBLGo2 +AiAgAiACQShqNgIYIAEgAhCPRQwGCyACIABBBGo2AiggAiAAQQVqNgIsIAJBDGpCAjcCACACQSRq +QasDNgIAIAJBAjYCBCACQfzbzQA2AgAgAkGrAzYCHCACIAJBGGo2AgggAiACQSxqNgIgIAIgAkEo +ajYCGCABIAIQj0UMBQsgAkEkakH5ETYCACACQQxqQgI3AgAgAiAAQQRqNgIoIAJBAjYCBCACQcTc +zQA2AgAgAkH5ETYCHCACIABBCGo2AiwgAiACQRhqNgIIIAIgAkEsajYCICACIAJBKGo2AhggASAC +EI9FDAQLIwBBMGsiAyQAAn8CQAJAAkBBASAAQQRqIgAoAgAiBEGAgMQAayIFIAVBA08bQQFrDgIB +AgALIANBJGpCADcCACADQQE2AhwgA0HM0dAANgIYIANBiNHQADYCICABIANBGGoQj0UMAgsgAyAE +NgIAIAMgACgCBDYCFCADQSRqQgI3AgAgA0EQakGsBTYCACADQQI2AhwgA0GM0tAANgIYIANBpQY2 +AgggAyADQQRqNgIgIAMgA0EUajYCDCADIAM2AgQgASADQRhqEI9FDAELIAMgACgCBDYCFCADQSRq +QgE3AgAgA0EBNgIcIANB3NLQADYCGCADQawFNgIIIAMgA0EEajYCICADIANBFGo2AgQgASADQRhq +EI9FCyADQTBqJAAMAwsgAEEEaiABEIoJDAILIABBBGogARCoCAwBCyAAIAEQoQYLIAJBMGokAAuz +DQIXfwJ+IwBB4AZrIgMkACADQSBqIgQgASgCGEEIakHgARDNTxogA0EBNgKYBSADQRhqIANBmAVq +IgwgASgCCCIQIAFBDGooAgAiERDFDCADQZECaiADQegBaikCADcAACADQZkCaiADQfABaikCADcA +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 +ByAINgLIAyAHIA42AsQDQQEhCyACBUEACzYCwAMgB0GoAmogB0HAA2pBkK7OABC1LSAHQdwEakIA +NwIAIAdBATYC1AQgB0G8rs4ANgLQBCAHQcSVzgA2AtgEIAcgCyAOTwR/QQAFIAcgDDYCzAMgByAI +NgLIAyAHIA42AsQDIAcgCzYC0AMgC0EBaiELIAILNgLAAyAHQbwCaiAHQcADakGQrs4AELUtIAdB +0AJqIAdB8ABqEPFRIAcgCyAOSQR/IAcgDDYCzAMgByAINgLIAyAHIA42AsQDIAcgCzYC0AMgC0EB +aiELIAIFQQALNgLAAyAHQdwCaiAHQcADakGQrs4AELUtIAcgB0GQAmo2AvACIAcgCyAOSQR/IAcg +CzYCmAMgByAMNgKUAyAHIAg2ApADIAcgDjYCjAMgAgVBAAs2AogDIAdB9AJqIgggB0GIA2oiAkGQ +rs4AELUtIAdB7ANqQfSuzgA2AgAgB0HgA2pB5K7OADYCACAHQdQDakHUrs4ANgIAIAdB6ANqIAI2 +AgAgB0HcA2ogB0HwAmo2AgAgB0HQA2ogB0HQAmoiAjYCACAHQcSuzgA2AsgDIAcgEkEcajYCpAIg +B0EENgKgAiAHIAg2AuQDIAcgB0HcAmo2AtgDIAcgB0G8Amo2AswDIAcgB0HQBGo2AsQDIAcgB0Go +Amo2AsADIAcgB0HAA2o2ApwCIAcgB0EkajYCiANB5IjbACgCACAHQZwCahDENCACEIg/CyAHQcAD +aiEWIwBBMGsiCiQAAkACQEHcq84AIBQoAgQgFCgCCBDZH0UNAEG8k84AIBRBEGooAgAgFEEUaigC +ABDaH0UNAEG8rc4AIBRBKGooAgAiDiAUQSxqKAIAIhIQ2R9FBEBB3KvOACAOIBIQ2R9FDQELIApB +DGohGSAUQRxqKAIAIgIhCCACIBRBIGooAgBBDGxqIQIjAEEgayINJAAgDSACNgIQIA0gCDYCDAJA +IA1BDGoQuyoiDEH/AXFBA0YEQCAZQQA2AgggGUKAgICAEDcCAAwBCyANQQhBABDdGCANKAIAIQgg +DSgCBCICIAw6AAAgDUEcaiIMQQE2AgAgDSACNgIYIA0gCDYCFCANQRRqIRggDSgCDCEIIA0oAhAh +AiMAQRBrIgskACALIAI2AgwgCyAINgIIA0AgC0EIahC7KiICQf8BcUEDRwRAIBgoAggiCCAYKAIA +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 +ADcCZCACQQA2AjAgAkEANgIgIAIgACgCBCIDNgI4IAIgACgCACIANgI0IAIgAzYCKCACIAA2AiQg +AiABNgJAIAIgBEEAIAAbNgI8IAIgAEEARyIANgIsIAIgADYCHCACQUBrIQQDQAJAIAJBEGogAkEc +ahC8ECACKAIQIgVFDQAgAigCFCEAIAJBCGogBBC8ECACKAIIIgZFDQAgAigCDCEBQQAhAyAFIAYQ +xDFFDQIgAC0AACIFIAEtAABHDQICQAJAAkAgBUEBaw4CAgABCyAAQQRqIAFBBGoQpkENAwwECyAA +QQFqIAFBAWoQkEcNAgwDCyAAQQRqIAFBBGoQgVINAQwCCwtBASEDCyACQfAAaiQAIAMLqAMBBH8j +AEFAaiIBJAACfyAAKAIAIgJFBEBBACECQQAMAQsgASACNgIcIAFBADYCGCABIAI2AgwgAUEANgII +IAEgACgCBCICNgIgIAEgAjYCEEEBIQIgACgCCAshACABIAI2AhQgASACNgIEIAFBDGohAyABQQhq +IQQDQAJAIABFBEAgASgCBEUNASABKAIQIQAgASgCDCECAkAgASgCCCIERQRAA0AgAARAIABBAWsh +ACACKALkASECDAEFQQAhAEEAIQMMAwsACwALIAIhAyAEIQILIAEgADYCPCABIAM2AjggASACNgI0 +IAFBNGoQuCkMAQsgASAAQQFrNgIkAkACQCABKAIEIgAEQCABKAIIRQ0BCyAADQFB+PXDABCjSwAL +IAEoAhAhACADIQIDQCACKAIAIQIgAARAIABBAWshACACQeQBaiECDAELCyABQgA3AgwgASACNgII +IAFBATYCBAsgAUEoaiAEEL4PIAEoAigiAEUNACAAIAEoAjAiAkEDdGoQ+j4gACACQQxsakHcAGoQ +vgcgASgCJCEADAELCyABQUBrJAALqAMBBH8jAEFAaiIBJAACfyAAKAIAIgJFBEBBACECQQAMAQsg +ASACNgIcIAFBADYCGCABIAI2AgwgAUEANgIIIAEgACgCBCICNgIgIAEgAjYCEEEBIQIgACgCCAsh +ACABIAI2AhQgASACNgIEIAFBDGohAyABQQhqIQQDQAJAIABFBEAgASgCBEUNASABKAIQIQAgASgC +DCECAkAgASgCCCIERQRAA0AgAARAIABBAWshACACKALkASECDAEFQQAhAEEAIQMMAwsACwALIAIh +AyAEIQILIAEgADYCPCABIAM2AjggASACNgI0IAFBNGoQuCkMAQsgASAAQQFrNgIkAkACQCABKAIE +IgAEQCABKAIIRQ0BCyAADQFB+PXDABCjSwALIAEoAhAhACADIQIDQCACKAIAIQIgAARAIABBAWsh +ACACQeQBaiECDAELCyABQgA3AgwgASACNgIIIAFBATYCBAsgAUEoaiAEEL4PIAEoAigiAEUNACAA +IAEoAjAiAkEDdGoQ+j4gACACQQxsakHcAGoQnRkgASgCJCEADAELCyABQUBrJAALuQUBCn8jAEFA +aiIBJAACfyAAKAIAIgJFBEBBACECQQAMAQsgASACNgIcIAFBADYCGCABIAI2AgwgAUEANgIIIAEg +ACgCBCICNgIgIAEgAjYCEEEBIQIgACgCCAshACABIAI2AhQgASACNgIEIAFBDGohCCABQQhqIQMD +QAJAIABFBEAgASgCBEUNASABKAIQIQAgASgCDCECAkAgASgCCCIDRQRAA0AgAARAIABBAWshACAC +KAKgBiECDAEFQQAhAEEAIQgMAwsACwALIAIhCCADIQILIAEgADYCPCABIAg2AjggASACNgI0IwBB +EGsiAyQAIAFBNGoiACgCACECIAAoAgQhAANAIANBBGogAiAAEK4lIAMoAgQiAgRAIAMoAgghAAwB +CwsgA0EQaiQADAELIAEgAEEBazYCJAJAAkAgASgCBCIABEAgASgCCEUNAQsgAA0BQfj1wwAQo0sA +CyABKAIQIQAgCCECA0AgAigCACECIAAEQCAAQQFrIQAgAkGgBmohAgwBCwsgAUIANwIMIAEgAjYC +CCABQQE2AgQLIAFBKGohCiMAQRBrIgYkACADKAIIIQkgAygCBCEHIAMoAgAhBAJAA0AgBC8BngYg +CUsEQCAJQQFqIQUCQCAHRQRAIAQhAgwBCyAEIAVBAnRqQaAGaiEFIAchAANAIAUoAgAiAkGgBmoh +BSAAQQFrIgANAAtBACEFCyAKIAk2AgggCiAHNgIEIAogBDYCACADIAU2AgggA0EANgIEIAMgAjYC +ACAGQRBqJAAMAgsgBkEEaiAEIAcQriUgBigCBCIEBEAgBigCDCEJIAYoAgghBwwBCwtBwIXAABCj +SwALIAEoAigiAkUNACACIAEoAjAiAEEDdGpBwAVqEPo+IAIgAEEGdGoQhQ4gASgCJCEADAELCyAB +QUBrJAAL6QUCB38BfiMAQUBqIgIkAAJ/IAAoAgAiAUUEQEEAIQFBAAwBCyACIAE2AhwgAkEANgIY +IAIgATYCDCACQQA2AgggAiAAKAIEIgE2AiAgAiABNgIQQQEhASAAKAIICyEAIAIgATYCFCACIAE2 +AgQgAkEMaiEGIAJBCGohBwNAAkAgAEUEQCACKAIERQ0BIAIoAhAhACACKAIMIQECQCACKAIIIgVF +BEADQCAABEAgAEEBayEAIAEoAsADIQEMAQVBACEAQQAhBgwDCwALAAsgASEGIAUhAQsgAiAANgI8 +IAIgBjYCOCACIAE2AjQgAkE0ahC+KQwBCyACIABBAWs2AiQCQAJAIAIoAgQiAARAIAIoAghFDQEL +IAANAUH49cMAEKNLAAsgAigCECEAIAYhAQNAIAEoAgAhASAABEAgAEEBayEAIAFBwANqIQEMAQsL +IAJCADcCDCACIAE2AgggAkEBNgIECyACQShqIAcQwA8gAigCKCIBRQ0AIAEgAigCMCIFQQN0akHg +AmoQ+j4jAEEgayIAJAAgASAFQQV0aiIFKAIEIgQEQAJAIAUoAgwiA0UNACAFKAIAIgEpAwAhCCAA +IAM2AhggACABNgIQIAAgASAEakEBajYCDCAAIAFBCGo2AgggACAIQn+FQoCBgoSIkKDAgH+DNwMA +A0AgABCAOiIBRQ0BIAFB2ABrIgQQiD8gBEEMaiIEKAIAIgMgAygCACIDQQFrNgIAIANBAUYEQCAE +EL8rCyABQcgAaxC/OSABQUBqIgQoAgAiAyADKAIAIgNBAWs2AgAgA0EBRgRAIAQQ2C4LIAFBHGsQ +gT8gAUEUayIEKAIAIgMgAygCACIDQQFrNgIAIANBAUYEQCAEENcuCyABQRBrIgQoAgAiAyADKAIA +IgNBAWs2AgAgA0EBRgRAIAQQlykLIAFBDGsQszkMAAsACyAFQdgAEO8sCyAAQSBqJAAgAigCJCEA +DAELCyACQUBrJAALqAMBBH8jAEFAaiIBJAACfyAAKAIAIgJFBEBBACECQQAMAQsgASACNgIcIAFB +ADYCGCABIAI2AgwgAUEANgIIIAEgACgCBCICNgIgIAEgAjYCEEEBIQIgACgCCAshACABIAI2AhQg +ASACNgIEIAFBDGohAyABQQhqIQQDQAJAIABFBEAgASgCBEUNASABKAIQIQAgASgCDCECAkAgASgC +CCIERQRAA0AgAARAIABBAWshACACKALkASECDAEFQQAhAEEAIQMMAwsACwALIAIhAyAEIQILIAEg +ADYCPCABIAM2AjggASACNgI0IAFBNGoQuCkMAQsgASAAQQFrNgIkAkACQCABKAIEIgAEQCABKAII +RQ0BCyAADQFB+PXDABCjSwALIAEoAhAhACADIQIDQCACKAIAIQIgAARAIABBAWshACACQeQBaiEC +DAELCyABQgA3AgwgASACNgIIIAFBATYCBAsgAUEoaiAEEL4PIAEoAigiAEUNACAAIAEoAjAiAkED +dGoQ+j4gACACQQxsakHcAGoQ7wYgASgCJCEADAELCyABQUBrJAALqAMBBH8jAEFAaiIBJAACfyAA +KAIAIgJFBEBBACECQQAMAQsgASACNgIcIAFBADYCGCABIAI2AgwgAUEANgIIIAEgACgCBCICNgIg +IAEgAjYCEEEBIQIgACgCCAshACABIAI2AhQgASACNgIEIAFBDGohAyABQQhqIQQDQAJAIABFBEAg +ASgCBEUNASABKAIQIQAgASgCDCECAkAgASgCCCIERQRAA0AgAARAIABBAWshACACKALkASECDAEF +QQAhAEEAIQMMAwsACwALIAIhAyAEIQILIAEgADYCPCABIAM2AjggASACNgI0IAFBNGoQuCkMAQsg +ASAAQQFrNgIkAkACQCABKAIEIgAEQCABKAIIRQ0BCyAADQFB+PXDABCjSwALIAEoAhAhACADIQID +QCACKAIAIQIgAARAIABBAWshACACQeQBaiECDAELCyABQgA3AgwgASACNgIIIAFBATYCBAsgAUEo +aiAEEL4PIAEoAigiAEUNACAAIAEoAjAiAkEDdGoQ+j4gACACQQxsakHcAGoQohkgASgCJCEADAEL +CyABQUBrJAALJwAgACABQYSrxABBoIfEAEHkqsQAQfSqxABBvKvEAEGUq8QAENNVC80DAQV/IwBB +8ABrIgMkAAJAAkACQAJAAkACQCABLQAUQQFrDgMEAAECCwALIAFBEGooAgAhBSABKAIMIQQMAQsg +A0EMOgAQIANBEGoQ2zogASgCACEFIAEoAgQhBiABQQhqKAIAIQdBEEEEEKs5IgRBADoADCAEIAc2 +AgggBCAGNgIEIAQgBTYCACADQQhqIgVB8LbQADYCBCAFIAQ2AgAgAygCCCEEIAFBEGogAygCDCIF +NgIAIAEgBDYCDAsgA0E0aiAEIAIgBSgCDBEDACADKAI0QQJHBEAgA0HoAGoiAiADQcwAaigCADYC +ACADQeAAaiIFIANBxABqKQIANwMAIANB2ABqIgYgA0E8aikCADcDACADIAMpAjQ3A1AgAUEMahCZ +NkELIQQgA0EbaiAGKQMANwAAIANBI2ogBSkDADcAACADQStqIAIoAgA2AAAgAyADKQNQNwATIAAg +AykAEDcAASAAQQlqIANBGGopAAA3AAAgAEERaiADQSBqKQAANwAAIABBGGogA0EnaikAADcAAEEB +IQIMAgtBAyECQQwhBAwBC0Ggh8QAQSNB6I3EABDmKwALIAEgAjoAFCAAIAQ6AAAgA0HwAGokAAsn +ACAAIAFB0PfEAEGww8QAQbD3xABBwPfEAEGI+MQAQeD3xAAQ01ULnwMCAn8BfiMAQYABayIEJAAg +BEEYaiABKAKUBSACIAMQ7hYCQAJAAn8gBC0AGEEERgRAIAQoAhwMAQsgBCkDGCIGQv8Bg0IEUg0B +IAZCIIinCyIFRQRAIARBGGogARCWFCAEQQYQ7h8gBCgCACEDIAQoAgQiAkGswMUAKAAANgAAIAJB +BGpBsMDFAC8AADsAACAEQQY2AmAgBCACNgJcIAQgAzYCWCAEQTxqIAFBiAVqIARB2ABqEOoPIAQo +AjxBgICAgHhHBEAgBEHwAGogBEHUAGooAgA2AgAgBEHoAGogBEHMAGopAgA3AwAgBEHgAGogBEHE +AGopAgA3AwAgBCAEKQI8NwNYIARB9ABqIgEgBEEYakEgELIpIARB2ABqIAEQhwsLIABBBDoAACAA +QQA2AgQMAgsgBEEQaiAFIAIgA0G0wMUAEMY4IAFB8ABqIAQoAhAgBCgCFBC3BSAEQQhqIAUgAiAD +QcTAxQAQxjggASAEKAIIIAQoAgwQjQsgAEEEOgAAIAAgBTYCBAwBCyAAIAY3AgALIARBgAFqJAAL +JwAgACABQZCuxgBB0JfGAEHwrcYAQYCuxgBByK7GAEGgrsYAENNVC7xzAhR/An4jAEHABGsiCSQA +IAACfwJAAkACQAJAAkAgAC0A+A1BAWsOAwMAAgELAAsgACAAQfgGakH4BhDNTxoLIAlBGGohFSMA +QfACayIMJAACQCAALQDoBkECRwRAIwBBoClrIgIkACAAIgMCfwJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/An8CQAJ/AkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQCADLQDwBkEBaw4DPyAAAQsg +A0GgBmohBgJAIAMtAKAGQQFrDgM8IAMACyADKAKYBiEFDAELIANBADoAoAYgAyADQagGaiIFNgKY +BiADQaAGaiEGCyADIAU2ApwGIAMgBUEIahDCGiADKAKcBiIALQBAIQQgAkE4aiAAQQhqENInIAJB +MGogAigCOCACKAI8EK0sIAIoAjAhBSACKAI0IQcgA0G2AmogBDoAACADQbUCaiIAQQA6AAAgA0Gw +AmogAzYCACADQawCaiAHNgIAIAMgBTYCqAIgA0GoAmohEiADDAELIANBqAJqIRICQCADQbUCaiIA +LQAAQQFrDgQzHQIZAAsgA0GsAmooAgAhByADQbYCai0AACEEIAMoAqgCIQUgA0GwAmooAgALIQgg +A0G0AmpBAToAACACIAc2AogTIAIgBTYChBNCAiEWQQFBAyAIKQMAQgJ9IhenIBdCB1obIgp0QfMA +cQ1QIApBAkcNGCADQQA6ALQCIANBlQZqIAQ6AAAgA0GUBmoiEUEAOgAAIANBkAZqIAhBCGoiCDYC +ACADQYwGaiAHNgIAIANBiAZqIAU2AgAgA0G4AmohCwwBCyADQbgCaiELAkAgA0GUBmoiES0AAEEB +aw4DFhsCAAsgA0GMBmooAgAhByADQYgGaigCACEFIANBlQZqLQAAIQQgA0GQBmooAgAhCAsgA0Hw +A2ogBDoAACADQe8DaiINQQA6AAAgA0HoA2ogCDYCACADQeQDaiAINgIAIANB1ANqIAc2AgAgA0HQ +A2ogBTYCACAIDAELAkAgA0HvA2oiDS0AAEEBaw4GNhkCAwkMAAsgA0HUA2ooAgAhByADQdADaigC +ACEFIANB8ANqLQAAIQQgA0HoA2ooAgAhCCADQeQDaigCAAshCiADQewDaiAEOgAAIANB3ANqIAg2 +AgAgA0HYA2ogCjYCACADQe0DakGAAjsAACADQcwDaiAHNgIAIANByANqIAU2AgBCAiEWQcDgwAAg +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 +CyACIAA2AsgeIAJByCFqIgYgAkHIHmoiBEHg4sAAENgsIAJB+CdqQeDhwAA2AgAgAkHsJ2pB0OHA +ADYCACACQfQnaiACQdgiajYCACACQegnaiACQZAmajYCACACQcDHwAA2AuAnIAIgA0HcA2ooAgBB +GGo2AtgiIAIgBjYC8CcgAiACQZQmajYC5CcgAiACQYggajYC3CcgAiACQfwlajYC2CcgBCAIQRxq +IAJB2CdqEOFBQaj82gAoAgAgBBDENAw2C0G0/NoAKAIAIghBKGooAgAhBCAIQSRqKAIAIQEgCCgC +HCEGIAIgCEEgaigCACIHBH8gAkEANgLoJyACIAQ2AuQnIAIgATYC4CcgAiAHNgLcJ0EBIQUgBgVB +AAs2AtgnIAJBlCZqIAJB2CdqQcTjwAAQ2CwgAkH8ImpCADcCACACQQE2AvQiIAJBpOTAADYC8CIg +AkHgx8AANgL4IkEAIQAgAiAFIAdPBH9BAAUgAiAENgLkJyACIAE2AuAnIAIgBzYC3CcgAiAFNgLo +JyAFQQFqIQUgBgsiCjYC2CcgAkHIIWogAkHYJ2pBxOPAABDYLCACIANB2ANqKAIAQcgAajYC2CIg +BSAHSQRAIAIgBTYCmCAgAiAENgKUICACIAE2ApAgIAIgBzYCjCAgBiEACyACIAA2AoggIAJByB5q +IgYgAkGIIGoiBEHE48AAENgsIAJB+CdqQeDhwAA2AgAgAkHsJ2pB0OHAADYCACACQfQnaiACQfwl +ajYCACACQegnaiACQdgiajYCACACQcDHwAA2AuAnIAIgA0HcA2ooAgBBGGo2AvwlIAIgBjYC8Ccg +AiACQcghajYC5CcgAiACQfAiajYC3CcgAiACQZQmajYC2CcgBCAIQRxqIAJB2CdqEOFBQbT82gAo +AgAgBBDENAw5C0EFDCELIAJB2CdqIANB+AJqEOlIIAIoAtgnBEAgAkGIIGoiByACQdwnakHAARDN +TxogAkGUJmoiCCADQdgDaigCACgCVEEIahC2USACQcgeaiIEIANBxARqQcABEM1PGiADQe0DakEA +OgAAIAJByCFqIgYgC0GQARDNTxogA0HuA2pBADoAACACQZAdaiAIIAQgByAGIANB7ANqLQAAIANB +yANqKAIAIANBzANqKAIAENgQDDkLQcST2wAoAgBBA0sNMkGE/NoAEPs+IgZB/wFxRQ0yQQAhBUGE +/NoAKAIAIAYQ9S5FDTJBhPzaACgCACIIQShqKAIAIQQgCEEkaigCACEBIAgoAhwhBiACIAhBIGoo +AgAiBwR/IAJBADYCmCAgAiAENgKUICACIAE2ApAgIAIgBzYCjCBBASEFIAYFQQALNgKIICACQdgi +aiACQYggakGs5MAAENgsIAJB1B5qQgA3AgAgAkEBNgLMHiACQYTlwAA2AsgeIAJB4MfAADYC0B5B +ACEAIAIgBSAHTwR/QQAFIAIgBDYClCAgAiABNgKQICACIAc2AowgIAIgBTYCmCAgBUEBaiEFIAYL +Igo2AoggIAJB/CVqIAJBiCBqQazkwAAQ2CwgAiADQdgDaigCAEHIAGo2AuwiIAUgB0kEQCACIAU2 +AtghIAIgBDYC1CEgAiABNgLQISACIAc2AswhIAYhAAsgAiAANgLIISACQZQmaiIGIAJByCFqIgRB +rOTAABDYLCACQaggakHg4cAANgIAIAJBnCBqQdDhwAA2AgAgAkGkIGogAkGQJmo2AgAgAkGYIGog +AkHsImo2AgAgAkHAx8AANgKQICACIANB3ANqKAIAQRhqNgKQJiACIAY2AqAgIAIgAkH8JWo2ApQg +IAIgAkHIHmo2AowgIAIgAkHYImo2AoggIAQgCEEcaiACQYggahDhQUGE/NoAKAIAIAQQxDQMMgtB +BgwfCyACQYggahCtOQtBxJPbACgCAEEDSw0uQZz82gAQ+z4iBkH/AXFFDS5BACEFQZz82gAoAgAg +BhD1LkUNLkGc/NoAKAIAIghBKGooAgAhBCAIQSRqKAIAIQEgCCgCHCEGIAIgCEEgaigCACIHBH8g +AkEANgLoJyACIAQ2AuQnIAIgATYC4CcgAiAHNgLcJ0EBIQUgBgVBAAs2AtgnIAJB/CVqIAJB2Cdq +QYzlwAAQ2CwgAkGUIGpCADcCACACQQE2AowgIAJB2OXAADYCiCAgAkHgx8AANgKQIEEAIQAgAiAF +IAdPBH9BAAUgAiAENgLkJyACIAE2AuAnIAIgBzYC3CcgAiAFNgLoJyAFQQFqIQUgBgsiCjYC2Ccg +AkGUJmogAkHYJ2pBjOXAABDYLCACIANB2ANqKAIAQcgAajYCkCYgBSAHSQRAIAIgBTYC2B4gAiAE +NgLUHiACIAE2AtAeIAIgBzYCzB4gBiEACyACIAA2AsgeIAJByCFqIgYgAkHIHmoiBEGM5cAAENgs +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 +AvAiIAJB4MfAADYC+CJBACEAIAIgBSAHTwR/QQAFIAIgBDYC5CcgAiABNgLgJyACIAc2AtwnIAIg +BTYC6CcgBUEBaiEFIAYLIgo2AtgnIAJByCFqIAJB2CdqQcTjwAAQ2CwgAiADQdgDaigCAEGYAmo2 +AtgiIAUgB0kEQCACIAU2ApggIAIgBDYClCAgAiABNgKQICACIAc2AowgIAYhAAsgAiAANgKIICAC +QcgeaiIGIAJBiCBqIgRBxOPAABDYLCACQfgnakHg4cAANgIAIAJB7CdqQdDhwAA2AgAgAkH0J2og +AkH8JWo2AgAgAkHoJ2ogAkHYImo2AgAgAkHAx8AANgLgJyACIANB3ANqKAIAQRhqNgL8JSACIAY2 +AvAnIAIgAkHIIWo2AuQnIAIgAkHwImo2AtwnIAIgAkGUJmo2AtgnIAQgCEEcaiACQdgnahDhQUG0 +/NoAKAIAIAQQxDQMFgtBBQwJCyACQdgnaiADQfgCahDpSCACKALYJwRAIAJBiCBqIgcgAkHcJ2pB +wAEQzU8aIAJBlCZqIgggA0HYA2ooAgAoAqQCQQhqELZRIAJByB5qIgQgA0HEBGpBwAEQzU8aIANB +7QNqQQA6AAAgAkHIIWoiBiALQZABEM1PGiADQe4DakEAOgAAIAJBkB1qIAggBCAHIAYgA0HsA2ot +AAAgA0HIA2ooAgAgA0HMA2ooAgAQ2BAMFgtBxJPbACgCAEEDSw0PQYT82gAQ+z4iBkH/AXFFDQ9B +ACEFQYT82gAoAgAgBhD1LkUND0GE/NoAKAIAIghBKGooAgAhBCAIQSRqKAIAIQEgCCgCHCEGIAIg +CEEgaigCACIHBH8gAkEANgKYICACIAQ2ApQgIAIgATYCkCAgAiAHNgKMIEEBIQUgBgVBAAs2Aogg +IAJB2CJqIAJBiCBqQazkwAAQ2CwgAkHUHmpCADcCACACQQE2AsweIAJBhOXAADYCyB4gAkHgx8AA +NgLQHkEAIQAgAiAFIAdPBH9BAAUgAiAENgKUICACIAE2ApAgIAIgBzYCjCAgAiAFNgKYICAFQQFq +IQUgBgsiCjYCiCAgAkH8JWogAkGIIGpBrOTAABDYLCACIANB2ANqKAIAQZgCajYC7CIgBSAHSQRA +IAIgBTYC2CEgAiAENgLUISACIAE2AtAhIAIgBzYCzCEgBiEACyACIAA2AsghIAJBlCZqIgYgAkHI +IWoiBEGs5MAAENgsIAJBqCBqQeDhwAA2AgAgAkGcIGpB0OHAADYCACACQaQgaiACQZAmajYCACAC +QZggaiACQewiajYCACACQcDHwAA2ApAgIAIgA0HcA2ooAgBBGGo2ApAmIAIgBjYCoCAgAiACQfwl +ajYClCAgAiACQcgeajYCjCAgAiACQdgiajYCiCAgBCAIQRxqIAJBiCBqEOFBQYT82gAoAgAgBBDE +NAwPC0EGDAcLIAJBiCBqEK05C0HEk9sAKAIAQQNLDQtBnPzaABD7PiIGQf8BcUUNC0EAIQVBnPza +ACgCACAGEPUuRQ0LQZz82gAoAgAiCEEoaigCACEEIAhBJGooAgAhASAIKAIcIQYgAiAIQSBqKAIA +IgcEfyACQQA2AugnIAIgBDYC5CcgAiABNgLgJyACIAc2AtwnQQEhBSAGBUEACzYC2CcgAkH8JWog +AkHYJ2pBjOXAABDYLCACQZQgakIANwIAIAJBATYCjCAgAkHY5cAANgKIICACQeDHwAA2ApAgQQAh +ACACIAUgB08Ef0EABSACIAQ2AuQnIAIgATYC4CcgAiAHNgLcJyACIAU2AugnIAVBAWohBSAGCyIK +NgLYJyACQZQmaiACQdgnakGM5cAAENgsIAIgA0HYA2ooAgBBmAJqNgKQJiAFIAdJBEAgAiAFNgLY +HiACIAQ2AtQeIAIgATYC0B4gAiAHNgLMHiAGIQALIAIgADYCyB4gAkHIIWoiBiACQcgeaiIEQYzl +wAAQ2CwgAkH4J2pB4OHAADYCACACQewnakHQ4cAANgIAIAJB9CdqIAJB2CJqNgIAIAJB6CdqIAJB +kCZqNgIAIAJBwMfAADYC4CcgAiADQdwDaigCAEEYajYC2CIgAiAGNgLwJyACIAJBlCZqNgLkJyAC +IAJBiCBqNgLcJyACIAJB/CVqNgLYJyAEIAhBHGogAkHYJ2oQ4UFBnPzaACgCACAEEMQ0DAsLQaDE +wABBI0Gk58AAEOYrAAtBoMTAAEEjQaDgwAAQ5isAC0EDCyEBIA0gAToAACARQQM6AABBAwwCC0ED +CyEBIA0gAToAACARQQM6AABBBAshASAAIAE6AAAgBkEDOgAADBoLQaDEwABBI0Hk5sAAEOYrAAtB +oMTAAEEjQdjgwAAQ5isAC0GgxMAAQSNB2ODAABDmKwALQaDEwABBI0HgvcEAEOYrAAsgAkECNgKg +HgwGCyACQQI2AqAeDAULIAJBAjYCoB4MBAsgAkECNgKgHgwDC0IDIRYLIANByANqEL9HIANB7gNq +IQcMAgsgAkECNgKgHgsgAigCoB5BAkYEfkICBSACQfAiaiACQZAdakG4ARDNTxogA0HYA2ooAgAo +AqACIgAgACgCACIBQQFqNgIAIAFBAEgNCiACQYggaiADKALYA0HwAWoQ+Q4gAygC2AMoAqQCIgog +CigCACIBQQFqNgIAIAFBAEgNCiACQSBqIAMoAtgDQZgCahCdMSACKAIkIRMgAigCICEQIAJByB5q +IANB3ANqKAIAEO4rIAJBqA9qIAJB8CJqIgQQ6wsgAygC2AMgAkHYJ2oiASAEEOsLQaACaiABEIID +IAIoAvAiIQEgAkHMJmogBEEEckGMARDNTxogAigCgCQhBSACQagmaiACQYQkakEkEM1PGiACQYgR +aiACQeAeaikDADcDACACQYARaiACQdgeaikDADcDACACQfgQaiACQdAeaikDADcDACACIAIpA8ge +NwPwECACQZARaiACQYggakEoEM1PGkIBCyEWIANB7QNqLQAABEAgCxC1NwsgA0EAOgDtAyADQe4D +aiIHLQAARQ0AIANByANqEL9HCyAHQQA6AAAgAkHAG2oiDiACQbQPaikCADcDACACQcgbaiIPIAJB +vA9qKQIANwMAIAJB0BtqIgcgAkHED2opAgA3AwAgAiACKQKsDzcDuBsgAigCqA8hBiACQYANaiII +IAJBzA9qQewBEM1PGiACQawaaiIEIAJBzCZqQYwBEM1PGiACQYgaaiIUIAJBqCZqQSQQzU8aIA1B +AToAACACQbAWaiINIA4pAwA3AwAgAkG4FmoiDiAPKQMANwMAIAJBwBZqIg8gBykDADcDACACIAIp +A7gbNwOoFiACQbwUaiIHIAhB7AEQzU8aIAJBsBNqIgggBEGMARDNTxogAkGME2oiBCAUQSQQzU8a +IAsQiR4gEUEBOgAAIAJBgBpqIA8pAwA3AwAgAkH4GWogDikDADcDACACQfAZaiANKQMANwMAIAIg +AikDqBY3A+gZIAJB/BdqIAdB7AEQzU8aIAJB8BZqIAhBjAEQzU8aIAJBzBZqIARBJBDNTxogCxCA +PQwMCyACQQI2AqAeDAYLIAJBAjYCoB4MBQsgAkECNgKgHgwECyACQQI2AqAeDAMLQgMhFgsgA0HI +A2oQv0cgA0HuA2ohBwwFCyACQQI2AqAeCyACKAKgHkECRgR+QgIFIAJB8CJqIAJBkB1qQbgBEM1P +GiADQdgDaigCACgCUCIAIAAoAgAiAUEBajYCACABQQBIDQEgAkGIIGogAygC2ANBIGoQ+Q4gAygC +2AMoAlQiCiAKKAIAIgFBAWo2AgAgAUEASA0BIAJBEGogAygC2ANByABqEJ0xIAIoAhQhEyACKAIQ +IRAgAkHIHmogA0HcA2ooAgAQ7isgAkGoD2ogAkHwImoiBBDrCyADKALYAyACQdgnaiIBIAQQ6wtB +0ABqIAEQggMgAigC8CIhASACQcwmaiAEQQRyQYwBEM1PGiACKAKAJCEFIAJBqCZqIAJBhCRqQSQQ +zU8aIAJBiBFqIAJB4B5qKQMANwMAIAJBgBFqIAJB2B5qKQMANwMAIAJB+BBqIAJB0B5qKQMANwMA +IAIgAikDyB43A/AQIAJBkBFqIAJBiCBqQSgQzU8aQgELIRYgA0HtA2otAAANAQwCCwALIAsQtTcL +IANBADoA7QMgA0HuA2oiBy0AAEUNACADQcgDahC/RwsgB0EAOgAAIAJBwBtqIg4gAkG0D2opAgA3 +AwAgAkHIG2oiDyACQbwPaikCADcDACACQdAbaiIHIAJBxA9qKQIANwMAIAIgAikCrA83A7gbIAIo +AqgPIQYgAkGADWoiCCACQcwPakHsARDNTxogAkGsGmoiBCACQcwmakGMARDNTxogAkGIGmoiFCAC +QagmakEkEM1PGiANQQE6AAAgAkGwFmoiDSAOKQMANwMAIAJBuBZqIg4gDykDADcDACACQcAWaiIP +IAcpAwA3AwAgAiACKQO4GzcDqBYgAkG8FGoiByAIQewBEM1PGiACQbATaiIIIARBjAEQzU8aIAJB +jBNqIgQgFEEkEM1PGiALEIkeIBFBAToAACACQYAaaiAPKQMANwMAIAJB+BlqIA4pAwA3AwAgAkHw +GWogDSkDADcDACACIAIpA6gWNwPoGSACQfwXaiAHQewBEM1PGiACQfAWaiAIQYwBEM1PGiACQcwW +aiAEQSQQzU8aIAsQgD0LIANBtAJqLQAABEAgAkGEE2oQv0cLIANBADoAtAIgAkGoCWoiDSACQfAZ +aikDADcDACACQbAJaiIOIAJB+BlqKQMANwMAIAJBuAlqIg8gAkGAGmopAwA3AwAgAiACKQPoGTcD +oAkgAkG0B2oiByACQfwXakHsARDNTxogAkGoBmoiCCACQfAWakGMARDNTxogAkGEBmoiBCACQcwW +akEkEM1PGiADQQE6ALUCIAJB6AxqIA0pAwA3AwAgAkHwDGogDikDADcDACACQfgMaiAPKQMANwMA +IAIgAikDoAk3A+AMIAJB9ApqIAdB7AEQzU8aIAJB6AlqIAhBjAEQzU8aIAJBxAlqIARBJBDNTxoC +QAJAAkAgEi0ADQ4FAAICAQECCyASEL9HDAELIBJBEGoQgD0gEkEAOgAMCwJAAkAgFkICfSIXQgFY +BEBBAiEFIBenQQFrDQEgAkGQEmogAkH4DGopAwA3AwAgAkGIEmogAkHwDGopAwA3AwAgAkGAEmog +AkHoDGopAwA3AwAgAiACKQPgDDcD+BFBAyEFIAYhAQwCCyACQbwPaiACQegMaikDADcCACACQcQP +aiACQfAMaikDADcCACACQcwPaiACQfgMaikDADcCACACIAY2ArAPIAIgFjcDqA8gAiACKQPgDDcC +tA8gAkHUD2ogAkH0CmpB7AEQzU8aIAIgCjYCzBEgAiAANgLIESACIBM2AsQRIAIgEDYCwBEgAkH4 +BGogAkHoCWpBjAEQzU8aIAJB1ARqIAJBxAlqQSQQzU8aIAJBCGogAygCnAZBCGoQzBcgAiACLQAM +OgCAGCACIAIoAgg2AvwXIAJBgA1qIgYgAkH8F2oiACACQagPahCRPCAGEIkMIAAQnx8LIAJB+BFq +IAJB+ARqQYwBEM1PGiACQdQRaiACQdQEakEkEM1PGgsgAxCJDCACQegAaiACQfgRakGMARDNTxog +AkHEAGogAkHUEWpBJBDNTxogA0EBOgCgBiAFQQRGDQAgAkGYAmogAkHoAGpBjAEQzU8aIAJB9AFq +IAJBxABqQSQQzU8aAkAgBUEDRwRAIAVBAkcEQCACQagPaiACQZgCakGMARDNTxogAkGADWogAkH0 +AWpBJBDNTxoLIAJByANqIAJBqA9qQYwBEM1PGiACQaQDaiACQYANakEkEM1PGgwBCyACQcQPaiAC +QbACaikCADcCACACQbwPaiACQagCaikCADcCACACQbQPaiACQaACaikCADcCACACIAIpApgCNwKs +DyACIAE2AqgPIAJBqA9qEM4eIQELIANBqAZqEN8XIAwgATYCACAMQQRqIAJByANqQYwBEM1PGiAM +IAU2ApABIAxBlAFqIAJBpANqQSQQzU8aQQEMAQsgDEEENgKQAUEDCzoA8AYgAkGgKWokAAJAIAwo +ApABQQRHBEAgDEG4AWogDEG4ARDNTxogAy0A6AZBAkcEQCAMIAM2AgACQAJAAkAgDCgCACIALQDw +Bg4EAQICAAILIAAtAKAGQQNHDQACQAJAAkACQAJAAkACQAJAAkACQCAAQbUCai0AAA4FAAkJAQIJ +CyAAQagCahC/RwwICwJAIABBlAZqLQAADgQCBwcABwsCQAJAAkACQAJAAkAgAEHvA2otAAAOBwAM +DAIDBAEMCyAAQdADahC/RwwLCyAAQfgDahC+QAwDCyAAQfgDahDmPwwICyAAQfgDahC+FwwGCyAA +QfgDahDAQAsgAEG4AmoQtTcMBAsCQAJAIABBlAZqLQAADgQABwcBBwsgAEGIBmoQv0cMBgsCQAJA +AkACQAJAAkAgAEHvA2otAAAOBwALCwIDBAELCyAAQdADahC/RwwKCyAAQfgDahC+QAwDCyAAQfgD +ahDmPwwFCyAAQfgDahC+FwwDCyAAQfgDahDAQAsgAEG4AmoQtTcMAQsgAEGIBmoQv0cMBAsgAEHt +A2pBADoAAAsgAEHIA2oQv0cgAEHuA2pBADoAAAwCCyAAQe0DakEAOgAACyAAQcgDahC/RyAAQe4D +akEAOgAACyAAQbQCakEAOgAACyAAEIkMCyAAQagGahDfFwsgA0ECOgDoBiAVIAxBuAFqEJMzDAIL +IANBAjoA6AZB5MDAAEEoQfzBwAAQ5isACyAVQQQ2ApABCyAMQfACaiQADAELQYzCwABBNkHEwsAA +EJ83AAsgCSgCqAEiDEEERg0BIAkoAhghACAJQfQBaiAJQRhqQQRyQYwBEM1PGiAJQdABaiAJQawB +akEkEM1PGiADEOYIAn8gDEEDRwRAIAkgADYCgAMgCUGAA2oiAEEEciAJQfQBakGMARDNTxogCSAM +NgKQBCAJQZQEaiAJQdABakEkEM1PGiAJQYABNgK8BCAJIAAQmiw2AhggCUEIaiADQfANaiAJQbwE +aiIGIAlBGGoiARD7JyAJKAIIIAkoAgwQ5EEMAQsgCUGAATYCvAQgCSAANgIYIAkgA0H0DWogCUG8 +BGoiBiAJQRhqIgEQ+ycgCSgCACAJKAIEEORBCyEAIAEQlkEgBhCWQSAJIAA2AhQgCUEUahCWQSAD +QfANahCWQSADQfQNahCWQUEBDAILQdCXxgBBI0G0wcYAEOYrAAtBAws6APgNIAlBwARqJAAgDEEE +RgugNAITfwJ+IwBBwARrIgUkACAAAn8CQAJAAkACQAJAIAAtAJgxQQFrDgMDAAIBCwALIAAgAEHI +GGpByBgQzU8aCyAFQRhqIRMjAEGgwwBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQCAAKAKoFUEDRwRAIABBqBVqIRQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJ/AkACQCAALQDEGEEBaw4DEggAAQsgAEHIAGohDgJAIABBlAZqIg8tAABBAWsOBAwIAwcACyAA +QYwGaigCAAwBCyACQYApaiAUQZwDEM1PGiACQfgDaiIDIAJB2CZqQcQFEM1PGiAAQcgAaiIOIANB +xAUQzU8aIABBlAZqIg9BADoAACAAQYwGaiAANgIAIAALIQMgAEGVBmoiBEEAOwAAIABBkAZqIAM2 +AgAgAEGXBmpBAToAACACQdANaiAAQfACakGcAxDNTxogAkGIAWogA0EIahDkIyACIAIpA4gBNwLY +JiAOIAJB2CZqKAIAEM8CIARBgQI7AAAgAigC3CYiAyADKAIAQQFrNgIAQQIhA0EDIAApA0hCAn0i +FacgFUIHWhtBAmsOAgEGGAsgAEHwBmohAwJAIABB1BNqIgctAABBAWsOAxEFAwALIABBpBBqKAIA +IQggAEGgEGooAgAhCiAAQdUTai0AACELIABBtBBqKAIAIQYgAEGwEGooAgAhBAwBCyAAQQA6AJYG +IABBmAZqIgYgAEHQAGpB2AAQzU8hBCAAQQA6AJcGIAJB2CZqIgMgAkHQDWpBnAMQzU8aIAAoApAG +IggtAEAhCyACQdgAaiAIQQhqENInIAJB0ABqIAIoAlggAigCXBCtLCACKAJQIQogAigCVCEIIAJB +iBpqIgwgA0GcAxDNTxogAkGoHWoiByADQbAJEM1PGiAAQfAGaiIDIAdBsAkQzU8aIABBtBBqIAQ2 +AgAgAEGwEGogBDYCACAAQaQQaiAINgIAIABBoBBqIAo2AgAgAEG4EGogDEGcAxDNTxogAEHVE2og +CzoAACAAQdQTaiIHQQA6AAALIAJBqCdqIABBuBBqQZwDEM1PGiAAQawQaiIMIAY2AgAgAEGoEGoi +BiAENgIAIAJBiD5qIgkgBEEgahD5DiACQcgAaiAGKAIAQcgAahCdMSACKQNIIRUgAkFAayAMKAIA +QRhqEJ0xIAIpA0AhFiACQfg9aiAGKAIAKAJUQQhqELZRIAJBiDpqIgQgAkHYJmpB7AMQzU8aIAMg +CUEoEM1PGiAAQaAHaiAWNwMAIABBmAdqIBU3AwAgAEG8B2ogCDYCACAAQbgHaiAKNgIAIABBqAdq +IAIpA/g9NwMAIABBsAdqIAJBgD5qKQMANwMAIABBwAdqIARB7AMQzU8aIABByQ5qQQA6AAAgAEHI +DmogCzoAAAsgAkHYJmogAyABEIQCQQMhBCACKALoJyIBQQNGDQogAkHYPmogAkHYJmpBkAEQzU8a +IAJBtD5qIAJB7CdqQSQQzU8aIAMQ/xYgAUECRg0GIAJB5DlqIAJBtD5qQSQQzU8aIAJB0DhqIAJB +2D5qQZABEM1PGiACIAE2AuA5IABBqBBqKAIAKAJQIgggCCgCACIEQQFqNgIAIARBAEgNDiACQaDB +AGogACgCqBBBIGoQ+Q4gACgCqBAoAlQiCiAKKAIAIgRBAWo2AgAgBEEASA0OIAJBOGogACgCqBBB +yABqEJ0xIAIoAjwhCyACKAI4IQwgAkHIwQBqIABBrBBqKAIAEO4rIAJB6MEAaiACQdA4aiIEEOsL +IAJB6D9qIARBuAEQzU8aDAcLIABBwAhqIQMCQCAAQaQVaiIHLQAAQQFrDgMPAQQACyAAQfQRaigC +ACEIIABB8BFqKAIAIQogAEGlFWotAAAhCyAAQYQSaigCACEGIABBgBJqKAIAIQQMAgsACyAAQQA6 +AJUGIABBmAZqIgQgDkGoAhDNTyEMIABBADoAlwYgAkHYJmoiAyACQdANakGcAxDNTxogACgCkAYi +CC0AQCELIAJBgAFqIAhBCGoQ0icgAkH4AGogAigCgAEgAigChAEQrSwgAigCeCEKIAIoAnwhCCAC +QYgaaiIHIANBnAMQzU8aIAJBqB1qIgYgA0GwCRDNTxogAEHACGoiAyAGQbAJEM1PGiAAQYQSaiAA +QegHaiIGNgIAIABBgBJqIAw2AgAgAEH0EWogCDYCACAAQfARaiAKNgIAIABBiBJqIAdBnAMQzU8a +IABBpRVqIAs6AAAgAEGkFWoiB0EAOgAACyACQagnaiAAQYgSakGcAxDNTxogAEH8EWoiDCAGNgIA +IABB+BFqIgYgBDYCACACQYg+aiIJIARB8AFqEPkOIAJB8ABqIAYoAgBBmAJqEJ0xIAIpA3AhFSAC +QegAaiAMKAIAQRhqEJ0xIAIpA2ghFiACQfg9aiAGKAIAKAKkAkEIahC2USACQYg6aiIEIAJB2CZq +QewDEM1PGiADIAlBKBDNTxogAEHwCGogFjcDACAAQegIaiAVNwMAIABBjAlqIAg2AgAgAEGICWog +CjYCACAAQfgIaiACKQP4PTcDACAAQYAJaiACQYA+aikDADcDACAAQZAJaiAEQewDEM1PGiAAQZkQ +akEAOgAAIABBmBBqIAs6AAALIAJB2CZqIAMgARCEAiACKALoJyIBQQNGDQwgAkHYPmogAkHYJmpB +kAEQzU8aIAJBtD5qIAJB7CdqQSQQzU8aIAMQ/xYgAUECRg0DIAJB5DlqIAJBtD5qQSQQzU8aIAJB +0DhqIAJB2D5qQZABEM1PGiACIAE2AuA5IABB+BFqKAIAKAKgAiIIIAgoAgAiBEEBajYCACAEQQBI +DQkgAkGgwQBqIAAoAvgRQfABahD5DiAAKAL4ESgCpAIiCiAKKAIAIgRBAWo2AgAgBEEASA0JIAJB +4ABqIAAoAvgRQZgCahCdMSACKAJkIQsgAigCYCEMIAJByMEAaiAAQfwRaigCABDuKyACQejBAGog +AkHQOGoiBBDrCyACQeg/aiAEQbgBEM1PGgwEC0GgxMAAQSNB4OXAABDmKwALIAJB6MEAaiACQdg+ +akEkEM1PGgsgAkG4M2oiBiACQfTBAGopAgA3AwAgAkHAM2oiCSACQfzBAGopAgA3AwAgAkHIM2oi +DSACQYTCAGopAgA3AwAgAiACKQLsQTcDsDMgAigC6EEhBCACQZwyaiIQIAJBjMIAakGUARDNTxog +AkGQMmogAkHgwQBqKQMANwMAIAJBiDJqIAJB2MEAaikDADcDACACQYAyaiACQdDBAGopAwA3AwAg +AiACKQPIQTcD+DEgAkHAMWoiESACQaDBAGpBKBDNTxogAkGIMGoiEiACQeg/akG4ARDNTxogB0EB +OgAAIAJB8BlqIAYpAwA3AwAgAkH4GWogCSkDADcDACACQYAaaiANKQMANwMAIAIgAikDsDM3A+gZ +IAJB/BdqIBBBlAEQzU8aIAJBkBlqIAJB6DFqQTAQzU8aIAJBwBlqIBFBKBDNTxogAkHAFmogEkG4 +ARDNTxoCQAJAAkAgAy0A5AwOBAACAgECCyADQcgJahDoQiADQbAJahC/RwwBCyADEP8WCyABQQJG +DQggAkG0FGogAkH8F2pB7AEQzU8aIAJB+BJqIAJBwBZqQbgBEM1PGiACQbgWaiACQYAaaikDADcD +ACACQbAWaiACQfgZaikDADcDACACQagWaiACQfAZaikDADcDACACIAIpA+gZNwOgFiAAQZgGahCz +NwwNCyACQejBAGogAkHYPmpBJBDNTxoLIAJBuDNqIgYgAkH0wQBqKQIANwMAIAJBwDNqIgkgAkH8 +wQBqKQIANwMAIAJByDNqIg0gAkGEwgBqKQIANwMAIAIgAikC7EE3A7AzIAIoAuhBIQQgAkGcMmoi +ECACQYzCAGpBlAEQzU8aIAJBkDJqIAJB4MEAaikDADcDACACQYgyaiACQdjBAGopAwA3AwAgAkGA +MmogAkHQwQBqKQMANwMAIAIgAikDyEE3A/gxIAJBwDFqIhEgAkGgwQBqQSgQzU8aIAJBiDBqIhIg +AkHoP2pBuAEQzU8aIAdBAToAACACQYA3aiAGKQMANwMAIAJBiDdqIAkpAwA3AwAgAkGQN2ogDSkD +ADcDACACIAIpA7AzNwP4NiACQYw1aiAQQZQBEM1PGiACQaA2aiACQegxakEwEM1PGiACQdA2aiAR +QSgQzU8aIAJB0DNqIBJBuAEQzU8aAkACQAJAIAMtAOQMDgQAAgIBAgsgA0HICWoQ6EIgA0GwCWoQ +v0cMAQsgAxD/FgsgAUECRwRAIAJBtBRqIAJBjDVqQewBEM1PGiACQfgSaiACQdAzakG4ARDNTxog +AkG4FmogAkGQN2opAwA3AwAgAkGwFmogAkGIN2opAwA3AwAgAkGoFmogAkGAN2opAwA3AwAgAiAC +KQP4NjcDoBYgAEGYBmoQ8CYMDAsgAkHYN2ogAkGQN2opAwA3AwAgAkHQN2ogAkGIN2opAwA3AwAg +AkHIN2ogAkGAN2opAwA3AwAgAiACKQP4NjcDwDcgAEGYBmoQ8CYMCQsgB0EDOgAADAcLQaDEwABB +I0HwvcEAEOYrAAtBjMLAAEE2QcTCwAAQnzcAC0GgxMAAQSNBsODAABDmKwALAAtBoMTAAEEjQbDg +wAAQ5isACyACQdg3aiACQYAaaikDADcDACACQdA3aiACQfgZaikDADcDACACQcg3aiACQfAZaikD +ADcDACACIAIpA+gZNwPANyAAQZgGahCzNwwCCyAHQQM6AABBBCEECyAPIAQ6AAAMBAtBAyEDCwJA +AkACQAJAAkBBAyAOKQMAQgJ9IhWnIBVCB1obQQJrDgICAQALIA4QiQwMAwsgAEGVBmotAAANAQwC +CyAAQZYGai0AAEUNASAAQdAAahCzNwwBCyAOEPAmCyAAQZUGakEAOwAAIABBlwZqLQAABEAgAkHQ +DWoQ6EILIABBADoAlwYMAQsgAkHwEmogAkG4FmopAwA3AwAgAkHoEmogAkGwFmopAwA3AwAgAkHg +EmogAkGoFmopAwA3AwAgAiACKQOgFjcD2BIgAkHsEGogAkG0FGpB7AEQzU8aIAJBiDpqIgEgAkH4 +EmpBuAEQzU8aIABBkAZqKAIAIQMgAkEwaiABEMxBIAIoAjQhByACKAIwIQYgAkEoaiABEPQ1IAJB +2CZqIANBMGogBiAHIAIoAiggAigCLBD/GgJAAkAgAigC6CdBAkYEQEHEk9sAKAIAQQFLDQFBpPva +ABD7PiIBQf8BcUUNAUEAIQNBpPvaACgCACABEPUuRQ0BQaT72gAoAgAiB0EoaigCACEGIAdBJGoo +AgAhCSAHKAIcIQ0gAiAHQSBqKAIAIgEEfyACQQA2AugmIAIgBjYC5CYgAiAJNgLgJiACIAE2Atwm +QQEhAyANBUEACzYC2CYgAkHowQBqIAJB2CZqQfDlwAAQ2CwgAkG0HWpCADcCACACQQE2AqwdIAJB +oObAADYCqB0gAkHgx8AANgKwHSACIAEgA00Ef0EABSACIAY2AuQmIAIgCTYC4CYgAiABNgLcJiAC +IAM2AugmIANBAWohAyANCzYC2CYgAkG0FGogAkHYJmpB8OXAABDYLCACQRBqIAAoApAGEKtNIAIg +AikDEDcCiDAgAiACQYgwajYC+BIgAiABIANLBH8gAiADNgLoJiACIAY2AuQmIAIgCTYC4CYgAiAB +NgLcJiANBUEACzYC2CYgAkGIGmoiASACQdgmaiIDQfDlwAAQ2CwgAkEIaiAAKAKQBhCsTRD0NSAC +QfgmakGA28AANgIAIAJB7CZqQezNwAA2AgAgAkH0JmogAkHQOGo2AgAgAkHoJmogAkH4Emo2AgAg +AkHAx8AANgLgJiACIAIpAwg3AtA4IAIgATYC8CYgAiACQbQUajYC5CYgAiACQagdajYC3CYgAiAC +QejBAGo2AtgmIAJB6D9qIgEgB0EcaiADEOFBQaT72gAoAgAgARDENAwBCyACQdgmahCdGwJAQcST +2wAoAgBBAUsNAEGY+9oAEPs+IgFB/wFxRQ0AQQAhA0GY+9oAKAIAIAEQ9S5FDQBBmPvaACgCACIH +QShqKAIAIQYgB0EkaigCACEJIAcoAhwhDSACIAdBIGooAgAiAQR/IAJBADYC6CYgAiAGNgLkJiAC +IAk2AuAmIAIgATYC3CZBASEDIA0FQQALNgLYJiACQejBAGogAkHYJmpBqObAABDYLCACQbQdakIA +NwIAIAJBATYCrB0gAkHc5sAANgKoHSACQeDHwAA2ArAdIAIgASADTQR/QQAFIAIgBjYC5CYgAiAJ +NgLgJiACIAE2AtwmIAIgAzYC6CYgA0EBaiEDIA0LNgLYJiACQbQUaiACQdgmakGo5sAAENgsIAJB +IGogACgCkAYQq00gAiACKQMgNwKIMCACIAJBiDBqNgL4EiACIAEgA0sEfyACIAM2AugmIAIgBjYC +5CYgAiAJNgLgJiACIAE2AtwmIA0FQQALNgLYJiACQYgaaiIBIAJB2CZqIgNBqObAABDYLCACQRhq +IAAoApAGEKxNEPQ1IAJB+CZqQYDbwAA2AgAgAkHsJmpB7M3AADYCACACQfQmaiACQdA4ajYCACAC +QegmaiACQfgSajYCACACQcDHwAA2AuAmIAIgAikDGDcC0DggAiABNgLwJiACIAJBtBRqNgLkJiAC +IAJBqB1qNgLcJiACIAJB6MEAajYC2CYgAkHoP2oiASAHQRxqIAMQ4UFBmPvaACgCACABEMQ0CyAA +KAKQBiACQdgmaiIHIAJBiDpqEL4IIwBB0AFrIgEkACABQQhqIAdBuAEQzU8aIAFCATcDAEEwaiAB +EIQLIAFB0AFqJAAMAQsgACgCkAYgAkHYJmoiAyACQYg6ahC+CEEwaiADEIIDCyACIAAoApAGQQhq +EMwXIAIgAi0ABDoAjBogAiACKAIANgKIGiACQewmaiACQeASaikDADcCACACQfQmaiACQegSaikD +ADcCACACQfwmaiACQfASaikDADcCACACIAQ2AuAmIAJCATcD2CYgAiACKQPYEjcC5CYgAkGEJ2og +AkHsEGpB7AEQzU8aIAIgCjYC/CggAiAINgL4KCACIAs2AvQoIAIgDDYC8CggAkGoHWoiASACQYga +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 +IANBxAJqIQcgA0HBAmogBjoAACADQZwDaiIBQQA6AAAgAyADQZQCaiIONgLIAiADIANBuAJqKAIA +Ig82AtACIAMgA0G0AmooAgAiDDYCzAIgAyADQawCaigCACIGNgLEAgwBCyACQdgFaiACQYgEakEk +EM1PGkEAIQ9BxJPbACgCAEEDSw0JQYyH2wAQ+z4iAUH/AXFFDQlBjIfbACgCACABEPUuRQ0JQYyH +2wAoAgAiAUEoaigCACEMIAFBJGooAgAhBCABKAIcIQUgAUEcaiEQIAIgAUEgaigCACIBBH8gAkEA +NgKcBSACIAw2ApgFIAIgBDYClAUgAiABNgKQBUEBIQ4gBQVBAAsiGjYCjAUgAkHYBmogAkGMBWpB +iJfBABDYLCACQZgFakIANwIAIAJBATYCkAUgAkHUl8EANgKMBSACQeDHwAA2ApQFIAIgASAOSwR/ +IAIgDjYC2AIgAiAMNgLUAiACIAQ2AtACIAIgATYCzAIgBQVBAAs2AsgCIAJBoANqIgQgAkHIAmoi +AUGIl8EAENgsIAJB0ANqQdyXwQA2AgAgAkHMA2ogAkGYB2o2AgAgAkHAx8AANgLEAyACIAQ2AsgD +IAIgAkGMBWo2AsADIAIgAkHYBmo2ArwDIAIgAkHYBWo2ApgHIAEgECACQbwDahDyQUGMh9sAKAIA +IAEQxDQMCQsgA0HcAmogDzYCACADQdgCaiAMNgIAIANB1AJqIA42AgAgBhCQTikDACEzIANB+AJq +QQA6AAAgA0HkAmogMzcCACADQeACaiAGNgIACyACQdgFaiADQeACaiIFICwQ1gICQAJAAkACQAJA +IAIpA9gFIjNCBFIEQCACQeAGaiIIIAJB/AVqKQIANwMAIAIgAikC9AU3A9gGIAIvAfIFIQwgAi0A +8QUhDiACLQDwBSEWIAIoAuwFIR0gAigC6AUhGiACKALkBSEPIAIvAeIFIRcgAi0A4QUhBCACLQDg +BSEGIAJBjAVqIAJBhAZqQTQQzU8aIAUQ1jQgM0IDUQ0BQQAhEAJAIDNCAlENACACQfwFaiACQeAG +aikDADcCACACIAw7AfIFIAIgDjoA8QUgAiAWOgDwBSACIB02AuwFIAIgGjYC6AUgAiAPNgLkBSAC +IBc7AeIFIAIgBDoA4QUgAiAGOgDgBSACIDM3A9gFIAIgAikD2AY3AvQFIAJBhAZqIAJBjAVqQTQQ +zU8aIAJBiARqIAJB2AVqEIU3IAItALwEQQJGDQAgAkHYBWogAkGIBGpB0AAQzU8aIAJByAJqIQUg +A0HUAmooAgAhESADQdgCaigCACETIANB3AJqKAIAIQYjAEHQAWsiBCQAIARBCGogAkHgBWooAgAi +CEEIahD8DQJAIAQoAggiCgRAIAUgBEEQaiAIQRRqKAIAIAhBGGooAgAgCiAEKAIMIBEgEyAGEJoj +DAELIAVBCzoAAAsgBEHQAWokAAJAIAItAMgCQRZGBEBBA0ECIAJB2AVqEItJGyEQDAELIAJBvANq +IgQgAkHIAmpBJBDNTxpBCyACLQC8A0ELa0H/AXEiBSAFQQtPG0EFRyEQIAQQgB0LIAJB2AVqEN0/ +C0ELIQYMAgsgAUEDOgAADAILIAJBqANqIAgpAwA3AwAgAiACKQPYBjcDoAMgBCEQCyACQaAHaiIE +IAJBqANqKQMANwMAIAIgAikDoAM3A5gHIAFBAToAACAGQf8BcSIFQQxGDQAgAkGQAmogBCkDADcD +ACACIAIpA5gHNwOIAiAHEOQ/IAJBiAJqIQEgBUELRw0IIAMgEDoAxAIgA0HBAmotAAAQ10oNASAH +LQAAENdKDQEgA0HAAmotAAAhDwwCC0EEIQYMBAtBASEPIANBwAJqLQAADQBBACEdQQAhDwwHCyAD +QboEaiAPOgAAIANBuQRqIipBADoAACADQbQEaiADQZQCaiIGNgIAIANBsARqIANBrAJqKAIAIg42 +AgAgA0HUAmogA0G4AmooAgAiDDYCACADQdACaiADQbQCaigCACIWNgIAIANByAJqIS0LIAMgFjYC +yAIgA0HcAmogBjYCACADQdgCaiAONgIAIANBuARqIA86AAAgA0HMAmogDDYCACADQegCakEANgIA +IANB4AJqQQA2AgAgBiAOEJBOIgEoAgAgASgCBBCWTSIORQ0CIA4oAgghDyAOKAIAIQEgA0GIA2og +DigCBCIONgIAIANBhANqIAE2AgAgA0GAA2pBADYCACADQfgCaiAONgIAIANB9AJqIAE2AgAgA0Hw +AmpBADYCACADQYwDaiAPQQAgARs2AgAgA0H8AmogAUEARyIBNgIAIANB7AJqIAE2AgBBAgshBgNA +AkACQAJAAkACQAJAAkACQCAGDgIAAQILIANBwANqICc2AgAgA0G8A2ogKDYCACADQbgDaiApNgIA +IANBtANqICM2AgAgA0GwA2oiASAkNgIAIANBrANqIB42AgAgAkEYaiAeENxGIAIpAxghMyADQYQE +akEAOgAAIANB0ANqIAEpAgA3AgAgA0HIA2ogMzcCACADQcQDaiAeNgIADAYLIAJBiARqIANBxANq +IhQgLBCaAiACKALoBCIYQQRGDQIgAkHQBWoiCiACQaQEaikCADcDACACIAIpApwENwPIBSACLwGa +BCEBIAItAJkEIQQgAi0AmAQhBSACKAKUBCEIIAIoApAEIQcgAigCjAQhESACLwGKBCETIAItAIkE +IRAgAi0AiAQhBiACQYwFaiACQawEakE8EM1PGiACQeACaiIZIAJBhAVqKAIANgIAIAJB2AJqIhIg +AkH8BGopAgA3AwAgAkHQAmoiCSACQfQEaikCADcDACACIAIpAuwENwPIAiAUEPEmAkAgGEEDRgRA +IAJBuAdqIAopAwA3AwAgAiACKQPIBTcDsAcgEyEXIBEhDyAHIRogCCEdIAUhFiAEIQ4gASEMDAEL +IAJBvANqIAJBjAVqQTwQzU8aIAJBuANqIBkoAgA2AgAgAkGwA2ogEikDADcDACACQagDaiAJKQMA +NwMAIAJBgARqIAopAwA3AwAgAiACKQPIAjcDoAMgAiACKQPIBTcD+AMCQEHEk9sAKAIADQBB9Ibb +ABD7PiIKQf8BcUUNAEEAIRRB9IbbACgCACAKEPUuRQ0AQfSG2wAoAgAiCkEcaiENIApBKGooAgAh +GSAKQSRqKAIAIRIgCigCHCEJIAIgCkEgaigCACIKBH8gAkEANgKYBCACIBk2ApQEIAIgEjYCkAQg +AiAKNgKMBEEBIRQgCQVBAAs2AogEIAJB8AZqIAJBiARqQcyYwQAQ2CwgAkGUBGpCADcCACACQQE2 +AowEIAJBgJnBADYCiAQgAkHgx8AANgKQBCACIAogFEsEfyACIBQ2AqgHIAIgGTYCpAcgAiASNgKg +ByACIAo2ApwHIAkFQQALNgKYByACQYQHaiIUIAJBmAdqIgpBzJjBABDYLCACQewGakH8zcAANgIA +IAJB6AZqIAJBrAdqNgIAIAJBwMfAADYC4AYgAiADQbADajYCrAcgAiAUNgLkBiACIAJBiARqNgLc +BiACIAJB8AZqNgLYBiAKIA0gAkHYBmoQ8kFB9IbbACgCACAKEMQ0CwJAIBhBAkcEQCACQfQFaiAC +QYAEaikDADcCACACIAE7AeoFIAIgBDoA6QUgAiAFOgDoBSACIAg2AuQFIAIgBzYC4AUgAiARNgLc +BSACIBM7AdoFIAIgEDoA2QUgAiAGOgDYBSACIAIpA/gDNwLsBSACQfwFaiACQbwDakE8EM1PGiAC +QcQGaiACQagDaikDADcCACACQcwGaiACQbADaikDADcCACACQdQGaiACQbgDaigCADYCACACIBg2 +ArgGIAIgAikDoAM3ArwGIANBrANqKAIAGiADQbgDaigCACETIANBvANqKAIAIQYgA0HAA2ooAgAh +CiMAQTBrIgUkACAFQQxqIQcjAEHABmsiASQAIAFB2ARqIgggAkHYBWoiBEEwaiIREOlIIAFBDToA +nAYgAUGUA2ogCCABQZwGahC3KwJAIAEoApQDRQRAIAFB0AFqIgggAUGYA2pBwAEQzU8aIAFBEGoi +GCAIQcABEM1PGiARKAIIIghBMGooAgAhFCAIQSxqKAIAIRkgAUEANgLYBCABQQhqIAFB2ARqIAhB +NGooAgAgCEE4aigCABDFDCABIAEoAgwiCDYCmAMgASABKAIIIhA2ApQDIAcgGCAZIBQgECAIIBMg +BiAKEJojIAFBlANqEPo+DAELIAFB0AFqIgggAUGYA2pBJBDNTxogByAIQSQQzU8aCyABQcAGaiQA +An8gBS0ADCIBQRZHBEACQAJAAkACQAJAAkBBCyABQQtrQf8BcSIBIAFBC08bDgsFBQUFBQUBAgUD +BAALIAVBDGoQqhEMBAsgBUEQahCNPQwDCyAFQRBqEJ1ADAILIAVBEGoQ2EAgBUEUahDYQAwBCyAF +KAIQRQ0AIAVBEGoQ5jQLQQEMAQtBA0ECIAQQ20AbCyEQIBEQ+x8gBBDpMCAEKAIgIgEgASgCACIB +QQFrNgIAIAFBAUYEQCAEQSBqENEuCyAEKAIkIgEgASgCACIBQQFrNgIAIAFBAUYEQCAEQSRqEKUO +CyAEQShqEL45IAQoAiwiASABKAIAIgFBAWs2AgAgAUEBRgRAIARBLGoQ0i4LIAQoAkgEQCAEQcgA +ahDXNwsCQCAEKAJgRQ0AIARB5ABqIgEoAgAEQCABENc3DAELIARB6ABqEIE/IARB8ABqEK05IARB +9ABqEK05CyAFQTBqJAAMAQtBACEQQcST2wAoAgANAEGAh9sAEPs+IgFB/wFxRQ0AQYCH2wAoAgAg +ARD1LkUNAEGAh9sAKAIAIgFBHGohByABQShqKAIAIQQgAUEkaigCACEFIAEoAhwhCCACIAFBIGoo +AgAiAQR/IAJBADYCmAQgAiAENgKUBCACIAU2ApAEIAIgATYCjARBASEQIAgFQQALNgKIBCACQfAG +aiACQYgEakGImcEAENgsIAJBlARqQgA3AgAgAkEBNgKMBCACQcCZwQA2AogEIAJB4MfAADYCkAQg +AiABIBBLBH8gAiAQNgKoByACIAQ2AqQHIAIgBTYCoAcgAiABNgKcByAIBUEACzYCmAcgAkGEB2oi +BCACQZgHaiIBQYiZwQAQ2CwgAkHsBmpB/M3AADYCACACQegGaiACQawHajYCACACQcDHwAA2AuAG +IAIgA0GwA2o2AqwHIAIgBDYC5AYgAiACQYgEajYC3AYgAiACQfAGajYC2AYgASAHIAJB2AZqEPJB +QQAhEEGAh9sAKAIAIAEQxDQLQQshBgsgAkH4AmoiASACQbgHaikDADcDACACIAIpA7AHNwPwAiAi +QQE6AAAgBkH/AXEiBEEMRg0DIAJBiANqIAEpAwA3AwAgAiACKQPwAjcDgAMgJhDlPyAEQQtHDQEg +AkEQaiADQZADaigCACIBKAIAIAEoAgQQ6R4gAkEIaiACKAIQIAIoAhQQwjAgAigCCCEBIAIoAgwh +B0EAIQVBACEIIwBBMGsiDSQAIA0gBzYCHCANIAE2AhgCQAJAIANB4AJqIhMoAgAiBAR/IA1BIGoh +ByATKAIEIQggDUEYaiEGA0ACQCAELwFeIgVBA3QhCkEAIRFBfyEBAkACfwJAA0AgCiARRgRAIAUh +AQwCCyAEIBFqIRggEUEIaiERIAFBAWohAQJAIAYgGBCIQUH/AXEOAgABAgsLQQAMAQsgCA0BQQEL +IQUgByAENgIEIAcgBTYCACAHQQxqIAE2AgAgB0EIaiAINgIADAELIAhBAWshCCAEIAFBAnRqQewA +aigCACEEDAELCyANKAIgRQ0BIA1BLGooAgAhBSANQShqKAIAIQggDSgCHCEHIA0oAhghASANKAIk +BUEACyEEIA0gBTYCFCANIAg2AhAgDSAENgIMIA0gEzYCCCANIAc2AgQgDSABNgIAIwBBQGoiFSQA +AkAgDSgCDEUEQCANKAIIIQUQiUIhASAVQQhqIgRBADYCBCAEIAE2AgAgFSgCDCEIIBUgFSgCCCIR +NgIQIBUgCDYCFCANKAIAIQcgDSgCBCETIBVBEGoiBigCACIBLwFeIgRBC08EQEHwgMAAQSBB7IHA +ABDmKwALIAEgBEEBajsBXiABIARBA3RqIgogEzYCBCAKIAc2AgAgFUE0aiIHIAQ2AgggByABNgIA +IAcgBigCBDYCBCABIARqQeAAaiAQOgAAIBUoAjwaIBUoAjQaIAVBATYCCCAFIAg2AgQgBSARNgIA +DAELIBVBIGogDUEMaiIBQQhqKAIANgIAIBUgASkCADcDGCAVQShqISsgDSgCACEKIA0oAgQhGCAN +QQhqITAjAEHgAGsiCSQAAkACQAJAAkACQAJAAkAgFUEYaiIBKAIAIgQvAV5BC08EQEEEIQcCQCAB +KAIIIhJBBUkEQEEBIQYMAQtBASEGAkACQCASIgdBBWsOAgIBAAsgEkEHayESQQAhBkEGIQcMAQtB +ACEGQQUhB0EAIRILIAEoAgQhARCJQiIFIAQvAV4iHCAHQX9zaiIUOwFeIAQgB0EDdGoiESgCACEI +IBEoAgQhESAEQeAAaiIlIAdqLQAAIRMgCUEwaiAUIAUQhjggBCAHQQFqIhlBA3RqIBwgGWsiHCAJ +KAIwIAkoAjQQ8TggCUEoaiAUIAVB4ABqEIU4IBkgJWogHCAJKAIoIAkoAiwQrDogBCAHOwFeIAkg +EjYCXEEAIRIgCSABQQAgBhs2AlggCSAEIAUgBhs2AlQgCUHIAGogCUHUAGogCiAYIBAQ/RkgCSgC +TCElIAkoAkghLiAJKAJQIS8DQAJAAkAgBCgCWCIHBEAgCSAHNgI8IAkgBC8BXCIENgJEIAkgAUEB +aiIGNgJAIAEgEkcNBiAHLwFeIjFBC0kNAUEBIRwCQCAEQQVJBEAgBCEBQQQhBAwBCwJAAkAgBCIB +QQVrDgICAQALIARBB2shAUEAIRxBBiEEDAELQQAhHEEFIQRBACEBCxCRQiIKIAcvAV4iICAEQX9z +aiIhOwFeIAcgBEEDdGoiFCgCACEYIBQoAgQhFCAHQeAAaiIyIARqLQAAIRkgCUEgaiAhIAoQhjgg +ByAEQQFqIhJBA3RqICAgEmsiICAJKAIgIAkoAiQQ8TggCUEYaiAhIApB4ABqEIU4IBIgMmogICAJ +KAIYIAkoAhwQrDogByAEOwFeIAovAV4iIEEBaiEhICBBDE8NByAxIARrIgQgIUYNAkHMgsAAQShB +9ILAABDmKwALIDAoAgAiBCgCACIBRQ0HIAQoAgQhBxCRQiIGIAE2AmwgCUEIaiAGIAdBAWoQyxgg +CSgCCCEBIAQgCSgCDCIHNgIEIAQgATYCACAHQQFrIBJHDQggAS8BXiIEQQtPDQkgASAEQQFqIgc7 +AV4gASAEQQN0aiIGIBE2AgQgBiAINgIAIAEgBGpB4ABqIBM6AAAgASAHQQJ0akHsAGogBTYCACAF +IAc7AVwgBSABNgJYDAQLIAlBPGogCCARIBMgBRD8DAwDCyAKQewAaiAHIBJBAnRqQewAaiAEQQJ0 +EM1PGiAJQRBqIAogBhDLGCAJKAIQIQogCSgCFCESIAkgATYCXCAJIAYgEiAcGzYCWCAJIAcgCiAc +GzYCVCAJQdQAaiAIIBEgEyAFEPwMIAchBCAGIQEgGCEIIBQhESAZIRMgCiEFDAALAAsgCUHUAGog +ASAKIBggEBD9GSAJKAJcIS8gCSgCVCEuIAkoAlghJQsgKyAvNgIIICsgJTYCBCArIC42AgAgCUHg +AGokAAwFC0G0g8AAQTVB7IPAABDmKwALICFBDEGkg8AAEOMbAAtB4IDAABCjSwALQfyBwABBMEGs +gsAAEOYrAAtB8IDAAEEgQbyCwAAQ5isACyANKAIIIgEgASgCCEEBajYCCCAVKAIoIBUoAjBqGgsg +FUFAayQADAELIA1BLGooAgAgDSgCJCANQRhqEPo+akHgAGoiAS0AABogASAQOgAACyANQTBqJAAg +EBDXSgRAIANBuARqLQAARQ0JC0ECIQYMBgsgA0HsAmohBANAIAJBMGogBBDAECACKAIwIgFFDQgg +AyABNgKQAyACQdgFaiIFIAEoAgAgASgCBBDfJiACKALYBSAFENU/DQAgAkEoaiADKAKQAyIBKAIA +IAEoAgQQ6R4gAiACKQMoNwLYBSACQdgFaiADKALYAhCQTkEIahCNNg0ACyADKALYAiEeIAJBIGog +AygCkAMiASgCACABKAIEEOkeIAIoAiAhJCACKAIkISMgA0GsBGoiIkEAOgAAIANBqANqIANBzAJq +KAIAIic2AgAgA0GkA2ogAygCyAIiKDYCACADQaADaiADQdwCaigCACIpNgIAIANBnANqICM2AgAg +A0GYA2ogJDYCACADQZQDaiImIB42AgAMAwsgAkGYA2ogAkGIA2opAwA3AwAgAiACKQOAAzcDkAMg +A0HgAmoQlggMBwsgIkEDOgAACyAqQQM6AABBBSEGDAMLQQAhBgwBC0EBIQYMAAsACyADIAY6AMIC +IANBAzoAvQQgA0EDOgDABAwICyADQegCaigCACEdIANB5AJqKAIAIRogA0HgAmooAgAhD0ELIQYL +IAJBoAJqIgEgAkGYA2opAwA3AwAgAiACKQOQAzcDmAIgKkEBOgAAIAJBsAJqIAEpAwA3AwAgAiAC +KQOYAjcDqAIgLRDHOyACQagCaiEBIAZB/wFxQQtGDQELIAJBwAJqIAFBCGopAQA3AwAgAiABKQEA +NwO4AiADQbACahCIPwwCCyADQcQCai0AACEOIANBwQJqLQAAIRYgA0GwAmoQiD9BCyEGDAELIAJB +2AVqEIAdQQshBkEAIRZBACEOCyADQfQBahDpQiADQQE6AMICIAJB8AFqIAJBwAJqKQMAIjM3AwAg +AkGAAmogMzcDACACIAIpA7gCIjM3A+gBIAIgMzcD+AECQAJAAkACQAJAIBstAIYBDgYDBAQCAAEE +CyAbQYgBahDkPwwBCyAbQYwBahDHOwsgG0H0AGoQiD8gG0E4aiEbCyAbEOlCCyADQYABaigCAA0A +IANBvgRqLQAARQ0BIANBhAFqEOlCDAELIANBkAFqEIg/IANBhAFqEMwZCyADQQE7AL0EIAJB4ABq +IgEgAkGAAmopAwA3AwAgAiACKQP4ATcDWCAGQf8BcUELRwRAIAJB9AVqIAEpAwA3AgAgAiACKQNY +NwLsBSACIAw7AeoFIAIgDjoA6QUgAiAWOgDoBSACIB02AuQFIAIgGjYC4AUgAiAPNgLcBSACIBc7 +AdoFIAIgEDoA2QUgAiAGOgDYBSACQdgFahDOHiEPQQQhDgsgA0E8ahCsOSADQQE6AMAEIA5B/wFx +QQVGDQAgAiAMOwFGIAIgDjoARSACIBY6AEQgAiAdNgJAIAIgGjYCPCACIA82AjggAygCAEECRwRA +IAIgAzYC2AUCQAJAAkAgAkHYBWooAgAiAS0AwAQOBAACAgECCyABQTxqEKw5IAEQzDgMAQsCQAJA +AkAgAUG9BGotAAAOBAACAgECCyABQUBrEMw4DAELIAFBvAFqIQwCQAJAAkACQAJAIAFBwgJqLQAA +DgYDBAQCAAEECyABQZwDai0AAEEDRw0BIAFB4AJqENY0DAELIAFBuQRqLQAAQQNHDQAgAUGsBGot +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 +QCAABEAgAEEBayEAIAIoArgBIQIMAQVBACEAQQAhAwwDCwALAAsgAiEDIAQhAgsgASAANgI8IAEg +AzYCOCABIAI2AjQgAUE0ahC8KQwBCyABIABBAWs2AiQCQAJAIAEoAgQiAARAIAEoAghFDQELIAAN +AUH49cMAEKNLAAsgASgCECEAIAMhAgNAIAIoAgAhAiAABEAgAEEBayEAIAJBuAFqIQIMAQsLIAFC +ADcCDCABIAI2AgggAUEBNgIECyABQShqIAQQwQ8gASgCKCIARQ0AIAAgASgCMEEMbGpBMGoQ0Agg +ASgCJCEADAELCyABQUBrJAALmgMBBH8jAEFAaiIBJAACfyAAKAIAIgJFBEBBACECQQAMAQsgASAC +NgIcIAFBADYCGCABIAI2AgwgAUEANgIIIAEgACgCBCICNgIgIAEgAjYCEEEBIQIgACgCCAshACAB +IAI2AhQgASACNgIEIAFBDGohAyABQQhqIQQDQAJAIABFBEAgASgCBEUNASABKAIQIQAgASgCDCEC +AkAgASgCCCIERQRAA0AgAARAIABBAWshACACKAK4ASECDAEFQQAhAEEAIQMMAwsACwALIAIhAyAE +IQILIAEgADYCPCABIAM2AjggASACNgI0IAFBNGoQvCkMAQsgASAAQQFrNgIkAkACQCABKAIEIgAE +QCABKAIIRQ0BCyAADQFB+PXDABCjSwALIAEoAhAhACADIQIDQCACKAIAIQIgAARAIABBAWshACAC +QbgBaiECDAELCyABQgA3AgwgASACNgIIIAFBATYCBAsgAUEoaiAEEMEPIAEoAigiAEUNACAAIAEo +AjBBDGxqQTBqEP4HIAEoAiQhAAwBCwsgAUFAayQAC6wFAQp/IwBBQGoiASQAAn8gACgCACICRQRA +QQAhAkEADAELIAEgAjYCHCABQQA2AhggASACNgIMIAFBADYCCCABIAAoAgQiAjYCICABIAI2AhBB +ASECIAAoAggLIQAgASACNgIUIAEgAjYCBCABQQxqIQggAUEIaiEDA0ACQCAARQRAIAEoAgRFDQEg +ASgCECEAIAEoAgwhAgJAIAEoAggiA0UEQANAIAAEQCAAQQFrIQAgAigC6AEhAgwBBUEAIQBBACEI +DAMLAAsACyACIQggAyECCyABIAA2AjwgASAINgI4IAEgAjYCNCMAQRBrIgMkACABQTRqIgAoAgAh +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 +AwA3AwAgA0GIAWogA0HoAGooAgA2AgAgA0GAAWogA0HgAGopAwA3AwALIAJByAZqIANBgAFqIgcg +ARCZAiACLQDIBiIFQQxGDQMgAkGwBmoiCCACQdQGaikCADcDACACQbgGaiIJIAJB3AZqKQIANwMA +IAJBwAZqIgogAkHkBmopAgA3AwAgAiACKQLMBjcDqAYgAi8AyQYhDCACLQDLBiENIAcQqzggBUEL +Rw0BIANB+ABqKAIAEPhNIQUgA0GYAWpBADoAACADIAU2AoABIANBhAFqIANB8ABqKQMANwIACyAC +QcgGaiADQYABaiIHIAEQ1gIgAikDyAYiD0IEUgRAIAJB6AdqIAJB3AZqKQIANwMAIAJB8AdqIAJB +5AZqKQIANwMAIAJB+AdqIAJB7AZqKQIANwMAIAIgAikC1AY3A+AHIAJB0wZqLQAAIQEgAi0A0AYh +BSACLwDRBiACQawHaiACQfQGakE0EM1PGiAHENY0IAFBEHRyDAILQQQMAwsgAkH4B2ogCikDADcD +ACACQfAHaiAJKQMANwMAIAJB6AdqIAgpAwA3AwAgAiACKQOoBjcD4AdCAyEPIAwgDUEQdHILIQEg +AkGgBmogAkH4B2opAwA3AwAgAkGYBmogAkHwB2opAwA3AwAgAkGQBmogAkHoB2opAwA3AwAgAiAC +KQPgBzcDiAYgAkHUBWogAkGsB2pBNBDNTxogBEEBOgAADAQLQQMLIQEgBCABOgAAQQQMAQtBAws6 +AFwgA0EDOgCkAyALQgQ3AwAMAQsgA0HdAGotAAAEQCADQThqENkiCyADQQA6AF0gAkGAAmoiBCAC +QZAGaikDADcDACACQYgCaiIHIAJBmAZqKQMANwMAIAJBkAJqIgggAkGgBmopAwA3AwAgAiACKQOI +BjcD+AEgAkHEAWoiCSACQdQFakE0EM1PGiADQQE6AFwgAkHYAmoiCiAEKQMANwMAIAJB4AJqIgQg +BykDADcDACACQegCaiIHIAgpAwA3AwAgAiACKQP4ATcD0AIgAkGcAmogCUE0EM1PGgJ/AkACQCAP +QgJ9IhBCAVgEQCAQp0EBaw0BDAILIAJBuAFqIAcpAwA3AwAgAkGwAWogBCkDADcDACACQagBaiAK +KQMANwMAIAIgAikD0AI3A6ABIAJB7ABqIAJBnAJqQTQQzU8aCyACQYgDaiACQbgBaikDADcDACAC +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 +QQE2AgAMBAsgAi0AFQRAIAItABYhBAwCCyACQQU2AhQgAyACQRRqEIAxIQEgAEEBNgIAIAAgATYC +BAwDCyABQQA6AAQLIARB3QBGBEAgAkEVNgIUIAMgAkEUahCAMSEBIABBATYCACAAIAE2AgQMAgsg +AkEUaiADEMIVIAIoAhQiAQRAIAAgATYCBCAAQQA2AgAgAEEIaiACKAIYNgIADAILIAAgAigCGDYC +BCAAQQE2AgAMAQsgACACKAIQNgIEIABBATYCAAsgAkEgaiQAC4kDAQF/IwBB8ABrIgckACAHIAI2 +AgwgByABNgIIIAcgBDYCFCAHIAM2AhAgBwJ/AkACQAJAIABB/wFxQQFrDgIBAgALIAdB7L3aADYC +GEECDAILIAdB7r3aADYCGEECDAELIAdB8L3aADYCGEEHCzYCHAJAIAUoAgBFBEAgB0HMAGpB6Ro2 +AgAgB0HEAGpB6Ro2AgAgB0HkAGpCAzcCACAHQQM2AlwgB0GovtoANgJYIAdB6ho2AjwgByAHQThq +NgJgIAcgB0EQajYCSCAHIAdBCGo2AkAMAQsgB0EwaiAFQRBqKQIANwMAIAdBKGogBUEIaikCADcD +ACAHIAUpAgA3AyAgB0HkAGpCBDcCACAHQdQAakHpGjYCACAHQcwAakHpGjYCACAHQcQAakHrGjYC +ACAHQQQ2AlwgB0HcvtoANgJYIAdB6ho2AjwgByAHQThqNgJgIAcgB0EQajYCUCAHIAdBCGo2Akgg +ByAHQSBqNgJACyAHIAdBGGo2AjggB0HYAGogBhDLMAALgAMBB38jAEHQA2siAyQAIAFBIGohByAD +QewBaiEFIANBsANqIQYgA0G4AWohCAJAA0ACQCABENcwIgQEQCADQYgCaiIJIAcgBBD8AyADQYgB +aiAJQYABEM1PGiADQY4DaiIEIAgQ6kggBkEYaiACQRhqKQAANwAAIAZBEGogAkEQaikAADcAACAG +QQhqIAJBCGopAAA3AAAgBiACKQAANwAAIANBAToArwMgBCADQa8DahDfLA0BIANBiAFqELsNDAIL +IABBAjYCYAwCCyADQShqIANBiAFqQeAAEM1PGiADQRBqIAVBCGopAgA3AwAgA0EYaiAFQRBqKQIA +NwMAIANBIGogBUEYaigCADYCACADIAUpAgA3AwggAygC6AEiBEECRg0ACyAAIANBKGpB4AAQzU8i +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 +QRxqIAk2AgAgA0EYaiIMIAU2AgAgA0EgaiAHQfgBEM1PGkGAgICAeCEKIAVBgICAgHhHBEAgA0G0 +AmoiGkEAOgAAIANBqAJqIANB4AZqIgo2AgAgA0GkAmogDDYCACADQaACaiAINgIAIANBnAJqIAQ2 +AgAgA0GYAmoiFyAGNgIAIAogDDYCAAwCCyAMELQ3QQshCEEAIQYMIgsgA0GYAmohFwJAIANBtAJq +IhotAABBAWsOBAcPAgsACyADQagCaigCACEKIANBpAJqKAIAIQwgA0GgAmooAgAhCCADQZwCaigC +ACEEIAMoApgCIQYLIANBsAJqIAw2AgAgA0GsAmogBjYCACACQThqIAoQrkYgAigCOCEFIAIoAjwh +DCADQeACaiIVQQA6AAAgA0HIAmogDDYCACADQcQCaiAFNgIAIANBwAJqIAg2AgAgA0G8AmogBDYC +ACADQbgCaiIKIAY2AgAMAQsgA0G4AmohCgJAAkAgA0HgAmoiFS0AAEEBaw4EGQ4ABAELIANB6AJq +KAIAIQggA0HkAmooAgAhBgwCCyADQcgCaigCACEMIANBxAJqKAIAIQUgA0HAAmooAgAhCCADQbwC +aigCACEEIAMoArgCIQYLIANB3AJqIg4gDDYCACADQdgCaiIJIAU2AgAgA0HUAmoiByAINgIAIANB +0AJqIgUgBDYCACADQcwCaiAGNgIAIAJBMGogBhD4TRC/LCACQShqIAIoAjAgBSgCACAHKAIAIAko +AgAgDigCACACKAI0KAIsEQoAIAIoAighBiADQegCaiACKAIsIgg2AgAgA0HkAmogBjYCAAsgAkHw +AGogBiABIAgoAgwRAwAgAi0AuAEiCUEERg0FIAJB8AJqIAJB8ABqQcgAEM1PGkECIRYgAkGWBWoi +ByACQbsBai0AADoAACACIAIvALkBOwGUBSADQeQCaiIEEJk2IANBsANqIQUgCUEDRg0DIAUgAkHw +AmpByAAQzU8hBSADQfgDaiAJOgAAIANB+wNqIActAAA6AAAgAyACLwGUBTsA+QMgBCAFQcwAEM1P +GiADQawDai0AACIWQQJGBEAgAkEgaiADQcwCaigCACgCAEGMAWoQvywgAkEYaiACKAIgIANB0AJq +KAIAIANB1AJqKAIAIANB2AJqKAIAIANB3AJqKAIAIAIoAiQoAjARCgAgAigCGCEGIANBgARqIAIo +AhwiCDYCACADQfwDaiAGNgIADAILIANBhANqKAIAIQ4gA0GAA2ooAgAhDyADQfwCaigCACEQIANB ++AJqKAIAIREgA0H0AmooAgAhDCADQfACaigCACEFIANB7AJqKAIAIQQgA0HrAmotAAAhCSADLQDo +AiENIAMvAeYCIRMgAy0A5QIhEiADLQDkAiEIIAMvAOkCIAJBuAVqIANBiANqQSQQzU8aIAJBmgVq +IANBrwNqLQAAOgAAIAIgAy8ArQM7AZgFIAlBEHRyDAQLIANBgARqKAIAIQggA0H8A2ooAgAhBgsg +AkHwAGogBiABIAgoAgwRAwAgAigCcCIUQQZGDRQgAkGgBmogAkGgAWopAgA3AwAgAkGoBmogAkGo +AWopAgA3AwAgAkGwBmogAkGwAWooAgA2AgAgAiACKQKYATcDmAYgAkH7AGotAAAhCSACKAKUASEO +IAIoApABIQ8gAigCjAEhECACKAKIASERIAIoAoQBIQwgAigCgAEhBSACKAJ8IQQgAi0AeCENIAIv +AXYhEyACLQB1IRIgAi0AdCEIIAIvAHkgA0H8A2oQmTZBAiEWIAlBEHRyIgcgFEEFRg0CGiAUQQRG +BEBBBiENIAJBBjYCwAZBDSEIQQAMAwsgAiAHOwB5IAJB+wBqIAdBEHY6AAAgAkGgAWogAkGgBmop +AwA3AgAgAkGoAWogAkGoBmopAwA3AgAgAkGwAWogAkGwBmooAgA2AgAgAiAONgKUASACIA82ApAB +IAIgEDYCjAEgAiARNgKIASACIAw2AoQBIAIgBTYCgAEgAiAENgJ8IAIgDToAeCACIBM7AXYgAiAS +OgB1IAIgCDoAdCACIBQ2AnAgAiACKQOYBjcCmAEgAkHABmogAkHwAGoiBRD8OSAFEK0UQQ0hCCAC +KALIBiEFIAIoAsQGIQQgAi0AwAYhDSACLwDBBiACLQDDBkEQdHIMAgtBoMTAAEEjQeyiwQAQ5isA +CyAFIAJB8AJqQSQQzU8aIANB+ANqQQM6AAAgA0HQA2ooAgAhDiADQcwDaigCACEPIANByANqKAIA +IRAgA0HEA2ooAgAhESADQcADaigCACEMIANBvANqKAIAIQUgA0G4A2ooAgAhBCADQbQDai0AACEN +IAMvAbIDIRMgAy0AsQMhEiADLQCwAyEIIAMvALUDIANBtwNqLQAAQRB0cgshBiACQdwGaiIJIAJB +uAVqQSQQzU8aIAJB6gRqIgcgAkGaBWotAAA6AAAgAiACLwGYBTsB6AQgFUEBOgAAIAJB8ARqIAlB +JBDNTxogAkHuBGoiFCAHLQAAOgAAIAIgAi8B6AQ7AewEIAoQrDggFkECRw0CQYCAgIB4IQoMFwtB +AyEKDBgLIANBiANqIRsCQCADQdQGaiIVLQAAQQFrDgMIBAMACyADQYwDaigCACEGIANBzAZqKAIA +IQogA0HIBmooAgAhBCADKAKIAyEIDAELIAJB8ABqIgkgAkHwBGpBJBDNTxogA0G/AmogBkEQdjoA +ACADIAY7AL0CIAJB8gJqIgcgFC0AADoAACADQdgCaiAONgIAIANB1AJqIA82AgAgA0HQAmogEDYC +ACADQcwCaiARNgIAIANByAJqIAw2AgAgA0HEAmogBTYCACADQcACaiAENgIAIANBvAJqIA06AAAg +AyATOwG6AiADIBI6ALkCIAMgCDoAuAIgAiACLwHsBDsB8AIgA0HcAmogCUEkEM1PGiADQYADaiAW +OgAAIAMgAi8B8AI7AIEDIANBgwNqIActAAA6AAAgA0GwAmooAgAiBSgC0AEhCCAFQdQBaigCACEG +IANB1AZqIhVBADoAACADQcwGaiAKNgIAIANByAZqIANBrAJqKAIAIgQ2AgAgA0GMA2ogBjYCACAD +QYgDaiIbIAg2AgALIANBxAZqIg1BADoAACADQbwGaiAKNgIAIANBuAZqIAQ2AgAgA0GcA2ogBjYC +ACADQZgDaiIWIAg2AgAgA0GUA2ogBjYCACADQZADaiAINgIAIANB0AZqIAo2AgAMAwsgA0GYA2oh +FiADQcQGaiINLQAAQQFrDgMNAAMBCwALIANBnANqKAIAIQYgA0G8BmooAgAhCiADQbgGaigCACEE +IAMoApgDIQgLIANBwAZqIAo2AgAgA0H0A2pBADoAACADQfADaiAENgIAIANBtANqIAY2AgAgA0Gw +A2ogCDYCACADQagDakGAlOvcAzYCAAsgAkHwAGogA0GgA2oiHSABEPUBIAIoAtgBIhxBA0YNAiAC +KAKQASEOIAIoAowBIQ8gAigCiAEhECACKAKEASERIAIoAoABIQwgAigCfCEFIAIoAnghBCACLQB0 +IQEgAi8BciETIAItAHEhEiACLQBwIQggAi8AdSACLQB3IAJB3AZqIAJBlAFqQcQAEM1PGiACQdgG +aiIUIAJB9AFqKAIANgIAIAJB0AZqIgkgAkHsAWopAgA3AwAgAkHIBmoiByACQeQBaikCADcDACAC +IAIpAtwBNwPABiAdEOkrQRB0ciEGIBxBAkcEQCACQZQDaiACQdwGakHEABDNTxogAkH0A2ogFCgC +ADYCACACQewDaiAJKQMANwIAIAJB5ANqIAcpAwA3AgAgAiAONgKQAyACIA82AowDIAIgEDYCiAMg +AiARNgKEAyACIAw2AoADIAIgHDYC2AMgAiAFNgL8AiACIAQ2AvgCIAIgAToA9AIgAiATOwHyAiAC +IBI6APECIAIgCDoA8AIgAiACKQPABjcC3AMgAiAGOwD1AiACIAZBEHY6APcCIAJBmAZqIgEgAkHw +AmoQvUQgAkHwAGogASADQcAGaigCABDhByACQdgDaiEKAkAgAigC0AEiBkECRwRAIAJBuAVqIgkg +AkHwAGoiFEHgABDNTxogAkGwBWoiByACQewBaiIEKAIANgIAIAJBqAVqIgUgAkHkAWoiDCkCADcD +ACACQaAFaiIRIAJB3AFqIhApAgA3AwAgAiACKQLUATcDmAUgAkGgA2oQnT8gAkHwAmoiARDPMCAC +QcADahCXRSAKEJhBIBQgCUHgABDNTxogECARKQMANwIAIAwgBSkDADcCACAEIAcoAgA2AgAgAiAG +NgLQASACIAIpA5gFNwLUASACQRBqIAJBoAFqELJGIAJBCGogAigCECACKAIUEMIwIAIgAigCDCIF +NgKcBiACIAIoAggiBDYCmAYgASAUIAMoAsAGEK0FIAItAPACIghBEUcNBCACLQDxAg0BQQEhAQwO +CyACQaADahCdPyACQfACahDPMCACQcADahCXRSAKEJhBIAMoAsAGLQBIIQFBACEEDA4LQQMhASAC +QfAAahC+FkUNDEEEQQIgAkHwAGoQtBkbIQEMDAsgDUEBOgAAIAhB/wFxQRJHDQ0MAwtBoMTAAEEj +QcCewQAQ5isACyACQfcCai0AACEJIAIoApADIQ4gAigCjAMhDyACKAKIAyEQIAIoAoQDIREgAigC +gAMhDCACKAL8AiEFIAIoAvgCIQQgAi0A9AIhASACLwHyAiETIAItAPECIRIgAi8A9QIgAkGYBmoQ ++j4gAkHwAGoQxDsgDUEBOgAAIAlBEHRyIQYMCwsgDUEDOgAACyAVQQM6AABBBAwNC0GgxMAAQSNB +wLjBABDmKwALIAIoAnQiDUEIdiEGQQwhCEGAgICAeCEKDAkLQYzCwABBNkHEwsAAEJ83AAtBoMTA +AEEjQZyjwQAQ5isAC0EEIQoMBwtBoMTAAEEjQdCfwQAQ5isAC0GgxMAAQSNBjKPBABDmKwALIAJB +8ABqEMQ7CyANQQE6AABBESEICyAWEOc/AkAgCEH/AXFBEUcEQCAVQQE6AABBgICAgHghCiABIQ0M +AQsgAiADQZADaigCACADQZQDaigCABDCMCACKAIEIRAgAigCACERIAJB+AJqIANB0AZqIgcoAgAi +CUEYaikAADcDACACQYADaiAJQSBqKQAANwMAIAJBiANqIAlBKGopAAA3AwAgAiAJQRBqKQAANwPw +AiACQdwGaiACQfACahDxUQJ/IAcoAgAQ2k0iCSgCACIHRQRAQQAhBkEADAELIAIgBzYCiAEgAkEA +NgKEASACIAc2AnggAkEANgJ0IAIgCSgCBCIHNgKMASACIAc2AnwgCSgCCCEGQQELIQcgAiAGNgKQ +ASACIAc2AoABIAIgBzYCcCACQbgFaiACQfAAahD0DSACQecGai0AACEPIAItAOAGIQggAi0A4QYh +EiACLwHiBiETIAItAOQGIQ0gAigCuAUgAigCvAUgAigCwAUhDCACKALcBiEKIAIvAOUGIBVBAToA +AEEEIApBgYCAgHhGDQQaIA9BEHRyIQYgBSEOIAQhDyEFIQQLIBsQ6D8gA0G4AmoQ4RILIBpBAToA +AAJAAkACQCAXLQAcQQNrDgIAAQILIBdBIGoQrDgMAQsgF0HwAGoQ6D8gF0EgahDhEgsgA0EYahC0 +NwsgGUEBOgAAIA1B/wFxIAZBCHRyIQcCQCAKQYCAgIB4RwRAIAhB/wFxIBJBCHRyIBNBEHRyIQgg +AUH/AXEhEgwBCyACIA42ApABIAIgDzYCjAEgAiAQNgKIASACIBE2AoQBIAIgDDYCgAEgAiAFNgJ8 +IAIgBDYCeCACIAc2AnQgAiATOwFyIAIgEjoAcSACIAg6AHAgAkHwAGoQyx4hCAsgA0HoBmoQrDkg +AxD6PiADQQhqEPo+IANBAToA7AYgAiASNgJsIAIgDjYCaCACIA82AmQgAiAQNgJgIAIgETYCXCAC +IAw2AlggAiAFNgJUIAIgBDYCUCACIAc2AkwgAiAINgJIIAIgCjYCRCACIAM2AnACQAJAAkAgAkHw +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 +AWoiAjYCCCAEIAlCAEI+EMAYIAQpAwhCAFINBCAEKQMAIgogA61C/wGDfCIJIApaDQALDAMLQQEh +AyABIAJBAWo2AgggCUIBfCIJUA0BIAAgCTcDCEEAIQMMAwsgAEIANwMIIAEgAkEBajYCCAwCCyAA +QQA6AAEMAQsgAEEAOgABQQEhAwsgACADOgAAIARBEGokAAuRAwEBfyMAQRBrIgEkACAAKAIIQQJH +BEAgAEEIaiAAEPgnCyABIAA2AgwCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHsBGotAAAOCQcL +CwIDBAUAAQsLIABB+ARqEMJHDAULIABBiAVqEIk9IABB+ARqEMNLDAQLIABB+ARqEOAXDAcLIABB ++ARqEM0tDAULIABBiAVqEKAuDAMLIABB+ARqENsqCyAAQdADahCFDgwBCyAAQSBqEO1CDAMLIABB +7wRqLQAABEAgAEHgBGoQwksLIABBADoA7wQgAEHwBGotAAAEQCAAQfgEahCIGQsgAEEAOgDwBAsC +QCAAQdwEai0AAEECRg0AIABB7QRqLQAARQ0AIABBlARqEOESCyAAQe0EakEAOgAAIABB8QRqLQAA +BEAgAEGQA2oQhQ4LIABBADoA8QQLIABB7gRqLQAABEAgAEGgAWoQ2hoLIABBADoA7gQgAEHyBGot +AAAEQCAAQegAahDtQgsgAEEAOgDyBAsgAUEMahCKPSABQRBqJAAL7lUCFH8CfiMAQdAAayIKJAAC +QAJAAkACQCAALQDYGkEBaw4DAwACAQsACyAAIABBqA1qQagNEM1PGgsgCkEUaiERIAEhByMAQfAa +ayICJAACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +An8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAIAAtAKUNIgNBAkcEQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkAgAC0ApA1BAWsOAxAOAAELIABBrQRqIRICQCAALQCtBEEBaw4OBA4DBhgZDA02Ozw+P0AA +CyAALQCuBCEDIAAoAqgEIQYMAQsgACADOgCuBCAAQQA6AK0EIAAgAEGgDWoiBjYCqAQgAEGtBGoh +EgsgACADOgCsBCAAIAY2AogEIAYoAgBBiAFqKAIAIQEgAEHoBGpBADoAACAAIAFBCGo2ArAECyAA +QbAEaiIDIAcQuAciAQ0BQQMMSQtBoMTAAEEjQeCfwQAQ5isACyAAIAE2AowEIAMQ2T8gAC0ArAQN +BSAAQbkEaiIBQQA6AAAgAEG0BGogACgCjARBFGoiBjYCAAwBCyAAQbAEaiEDAkAgAEG5BGoiAS0A +AEEBaw4FDAgCAwQACyAAQbQEaigCACEGCyAAIAY2ArAEIAYoAgwhBCAAQfQEakEAOgAAIABBvARq +IARBCGo2AgALIABBvARqIgQgBxC4ByIGRQ0KIAIgBjYCqA8gBBDZPyAAQbgEaiACQagPaiIEENRM +KAIAQQBHOgAAIAQQmkwgACgCsAQoAhAhBCAAQfQEakEAOgAAIAAgBEEIajYCvAQLIABBvARqIgQg +BxC4ByIGRQ0KIAIgBjYCqA8gBBDZPyAAIAJBqA9qIgQQ1EwoAgBBAEc6ALwEIAQQmkwgACgCsAQo +AhQhBCAAQfgEakEAOgAAIABBwARqIARBCGo2AgALAkACQAJAAkAgAEHABGoiBCAHELgHIgYEQCAC +IAY2AqgPIAQQ2T8gAkGoD2oiBBDUTCgCACEFIAQQmkxBASEGIABBuARqLQAABEAgBUUgAEG8BGot +AABFciEGCyABQQE6AAAgAy0ACUEDaw4DAQIDBAtBBSEHDEULIANBDGoQ2T8MAgsgA0EMahDZPwwB +CyADQRBqENk/CyAGDQBBxJPbACgCAEECSw0vQcCL2wAQ+z4iAUH/AXFFDS9BACEGQcCL2wAoAgAg +ARD1LkUNL0HAi9sAKAIAIgFBHGohBCABQSBqKAIAIgMEQCABQShqKAIAIQUgAUEkaigCACEJIAEo +AhwhBiACQQA2ArgPIAIgBTYCtA8gAiAJNgKwDyACIAM2AqwPCyACIAY2AqgPIAJBkApqIgEgAkGo +D2oiA0Hwn8EAENgsIAJBtA9qQgA3AgAgAkHAx8AANgLoGCACQQE2AqwPIAJBtKDBADYCqA8gAkHg +x8AANgKwDyACIAM2AuQYIAIgATYC4BggAkGYF2oiASAEIAJB4BhqEOBBQcCL2wAoAgAgARDENAwv +C0HEk9sAKAIAQQJLDQtBtIvbABD7PiIBQf8BcUUNC0EAIQZBtIvbACgCACABEPUuRQ0LQbSL2wAo +AgAiAUEcaiEEIAFBIGooAgAiAwRAIAFBKGooAgAhBSABQSRqKAIAIQkgASgCHCEGIAJBADYCuA8g +AiAFNgK0DyACIAk2ArAPIAIgAzYCrA8LIAIgBjYCqA8gAkGQCmoiASACQagPaiIDQbygwQAQ2Cwg +AkG0D2pCADcCACACQcDHwAA2AugYIAJBATYCrA8gAkHwoMEANgKoDyACQeDHwAA2ArAPIAIgAzYC +5BggAiABNgLgGCACQZgXaiAEIAJB4BhqEOBBIAJB8AZqIAJBoBdqKAIANgIAIAIgAikCmBc3A+gG +QbSL2wAoAgAgAkHoBmoQxDQMCwsgAEGwBGohCQJAAkACQCAAQZgIaiIELQAAQQFrDgMCBAEACyAJ +KAIAIQMMEgsgAEG0BGohAQJAIABB0AZqIgYtAABBAWsOBAoDFBUACyABKAIAIQMMEgtBoMTAAEEj +QYT/wAAQ5isACyAAQbAEaiEDIABBvgRqIgYtAABBAWsOBQgAFhcbAQsACyAAQbgEaigCACEBDBML +QaDEwABBI0GAucEAEOYrAAtBjMLAAEE2QcTCwAAQnzcAC0GgxMAAQSNBoITBABDmKwALQQMhBww4 +C0EEIQcMNwtBoMTAAEEjQcyBwQAQ5isAC0GgxMAAQSNBsIPBABDmKwALIAAoAogEKAIAIQEgAEHk +BGpBADoAACAAIAFBjAFqNgKwBAsgAkGoD2ogAEGwBGoiBCAHEKkGIAItAKgPIgZBDEYNEiACQcYG +aiIFIAItAKsPOgAAIAJBsAZqIgkgAkG8D2opAgA3AwAgAkG4BmoiCCACQcQPaikCADcDACACIAIv +AKkPOwHEBiACIAIpArQPNwOoBiACKAKsDyEBIAIoArAPIQMgBBDXPyAGQQtHDQEgACABNgLQAiAA +QYAFakEAOgAAIAAgAEHQAmo2ArAEIABB1AJqIAM2AgALIAJBqA9qIABBsARqIgkgBxDSFCACLQCo +DyIGQQxGDQEgAkHmBmoiBCACLQCrDzoAACACQdAGaiIFIAJBvA9qKQIANwMAIAJB2AZqIgggAkHE +D2opAgA3AwAgAiACLwCpDzsB5AYgAiACKQK0DzcDyAYgAigCrA8hASACKAKwDyEDIAkQ2D8gBkEL +Rw0CIAAgATYCnAggACADNgKwBCAAQaAIaiADNgIAIABBmAhqIgRBADoAAAwDCyACQZYXaiAFLQAA +OgAAIAJBgBdqIAkpAwA3AwAgAkGIF2ogCCkDADcDACACIAIvAcQGOwGUFyACIAIpA6gGNwP4Fgwv +C0EGDDELIAJBlhdqIAQtAAA6AAAgAkGAF2ogBSkDADcDACACQYgXaiAIKQMANwMAIAIgAi8B5AY7 +AZQXIAIgAikDyAY3A/gWIABB0AJqELFLDC0LIABB0AZqIgZBADoAACAAQbQEaiIBIAM2AgALIAJB +GGogA0EQaiITEKtNIAJBEGogAigCGCACKAIcEMIwIAIoAhAhDCACKAIUIQ4jAEGQBGsiBSQAIAVB +FGoiCxCcUSAFQQA2AtgDIAVB2AFqIgggCyAMIA4gBUHYA2oiDBCpDSAFQQhqIAgQrw8gBSgCCCAF +KAIMQdH5yQBBwQBBlPvJABDELyEOIAggC0HEARDNTxogBSAONgKcAyAFQaADaiILIA5BCGoQ7R4g +CCALEPYIIAwgC0E4EM1PGiAFIAwQrw8gBSgCACAFKAIEQaT7yQBBwABB5PvJABDELyELIAVBnANq +EK05IAUgCzYCnAMgAEG4BGoiECAIQcgBEM1PGiAFQZAEaiQAIABBgAZqIgUgAEH8BWoiCBCyTRDt +HiACQagaaiADIAUQtQkgAi0AqBpBFkcNDSACQZAKaiIDIAVBOBDNTxogAkEIaiADEK8PIAIoAgwh +AyACKAIIDQ4gCBCtOSAAIAM2AvwFIAIgExCrTSACKAIEIQsgAigCACEMIAJBkApqIg4gEEHIARDN +TxogAEG4BmohBSMAQZAJayIDJAAgA0E0aiIIEJxRIANBKGogDCALEMIwIAMoAiwhDSADKAIoIQ8g +A0ECNgK0ByADQfgBaiIQIAggDyANIANBtAdqIg0QqQ0gDiAQEPYIIA0gCEHEARDNTxogA0HwBWoi +CCAQQTgQzU8aIANBIGogCBCyDyADKAIkIRACQAJAIAMoAiBFBEAgA0GwAmogA0G0B2oiCEHEARDN +TxogA0H0A2oiDRCcUSADQRhqIAwgCxDCMCADKAIcIRQgAygCGCEVIANBATYCtAcgA0G4BWoiDyAN +IBUgFCAIEKkNIA4gDxD2CCAIIA1BxAEQzU8aIANB8AVqIgggD0E4EM1PGiADQRBqIAgQsA8gAygC +FCENIAMoAhANASADQfAFaiIPIANBtAdqIghBxAEQzU8aIANBCGogDCALEMIwIAMpAwghFxDqQCEL +IAhBARCnGiADQcgHaiAOQcgBEM1PIAgQlTwhDiAIQQEQpxogD0HEARDNTyADQYwJaiIPIA02AgAg +CBCVPCENIAhBARCnGiADQbACakHEARDNTxogDyAQNgIAIAgQlTwhCCAFIA02AhQgBSAINgIQIAUg +DjYCDCAFIAs2AgggBSAXNwIAIANBkAlqJAAMAgsgAyAQNgLwBUHEwMwAQTMgA0HwBWpBwKTMAEH4 +wMwAEIkYAAsgAyANNgLwBUGIwcwAQTMgA0HwBWpBwKTMAEG8wcwAEIkYAAsgAEGICGpBADoAACAA +QdgGaiATNgIAIABB1AZqIAU2AgALIAJBkApqIABB1AZqIgMgBxChEiACLQCQCkEXRg0BIAJBzBpq +IgUgAkGQCmpBJBDNTxogAxDIOyADIAVB3IHBAEExQZCCwQAQ/B8gAEGgB2pBADoAACAAQeAGaiAA +QbgGajYCAAsgAkGQCmogAEHgBmoiAyAHENIFQQQgAigCkAoiBUGBgICAeEYNARogAkGoD2oiBCAC +QZQKakGkARDNTxogAxDFKSACQdwQaiAAQcgGaikCADcCACACQdQQaiAAQcAGaikCADcCACACQewQ +aiAAQdwGaigCADYCACACIABBuAZqKQIANwLMECACIABB1AZqKQIANwLkECACQZgXaiIDIARByAEQ +zU8aIABBAToA0AYgAkHgGGoiBCADQcgBEM1PGiABEP8uIAJB6AZqIgEgBEHIARDNTxogAEEBOgCY +CCACQbAIaiABQcgBEM1PGiAJLQDoA0EDRgRAIAlBBGoQ/y4LIABBnAhqEJpMIABB0AJqELFLIAAg +BTYCqAEgAEGsAWogAkGwCGpBpAEQzU8aIABBpARqIAJB9AlqKAIANgIAIAAgAikC7Ak3ApwEIAAo +AowEIgFBFGoQixggAUEkaiACQeQJaikCADcCACABQRxqIAJB3AlqKQIANwIAIAEgAikC1Ak3AhQg +AEG+BGoiBkEAOgAAIABBuARqIAAoAowEQRRqIgE2AgAgAEGwBGohAwwCC0EDCyEBIAYgAToAACAE +QQM6AABBBwwqCyAAIAE2ArAEIABBvARqQQA7AQAgASgCDCEBIABB+ARqQQA6AAAgAEHABGogAUEI +ajYCAAsgAEHABGoiASAHELgHIgRFDQUgAiAENgKYFyABENk/IAJBmBdqENRMIgEoAgAhBCACQQ06 +AKgPIAJBkApqIAFBACAEGyACQagPahCqOCACLQCQCiIBQRZHDQEgAigClAooAsQBIgEgASgCACIE +QQFqNgIAIARBAEgNCSAAQb0EakEBOgAAIABBtARqIAE2AgAgAkGYF2oQmkwgACgCsAQoAhQhASAA +QfgEakEAOgAAIAAgAUEIajYCwAQLIABBwARqIgEgBxC4ByIERQ0BIAIgBDYCmBcgARDZPyACQZgX +ahDUTCIBKAIAIQQgAkENOgCoDyACQZAKaiABQQAgBBsgAkGoD2oQqjggAi0AkAoiBEEWRg0CIAJB +zhpqIAItAJMKOgAAIAJB6BhqIAJBoApqKQIANwMAIAJB8BhqIAJBqApqKAIANgIAIAIgAi8AkQo7 +AcwaIAIgAikCmAo3A+AYIAIoApQKIQkgAikCrAohFiACQZgXahCaTAwNCyACQc4aaiACLQCTCjoA +ACACQegYaiACQaAKaikCADcDACACQfAYaiACQagKaigCADYCACACIAIvAJEKOwHMGiACIAIpApgK +NwPgGCACKAKUCiEJIAIpAqwKIRYgAkGYF2oQmkwMDQtBBCEHDAkLIAIoApQKKALEASIBIAEoAgAi +BEEBajYCACAEQQBIDQUgACABNgLABCAAQbwEakEBOgAAIAJBmBdqEJpMIAAoArAEKAIQIQEgAEH8 +BGpBADoAACAAQcQEaiABQQhqNgIACyAAQcQEaiIBIAcQuAciBEUNBSACIAQ2ApgXIAEQ2T8gAkGY +F2oQ1EwiASgCACEEIAJBDToAqA8gAkGQCmogAUEAIAQbIAJBqA9qEKo4IAItAJAKIgRBFkcNBiAC +KAKUCigCxAEiASABKAIAIgRBAWo2AgAgBEEASA0EIAJBmBdqEJpMIABBvARqQQA7AQAgAkGoD2og +AEG0BGooAgAgAEHABGooAgAgARDPCkEWIQEgAi0AqA8iBEEWRgRAIAJBnApqIgQgAkG4D2opAgA3 +AgAgAkGkCmoiBSACQcAPaigCADYCACACIAIoAqwPNgKQCiACIAJBsA9qKQIANwKUCiACQZAKahCe +TSACQegYaiAEKQIANwMAIAJB8BhqIAUoAgA2AgAgAiACKQKUCjcD4BggAigCkAohCSAAQQA6ALwE +IABBvQRqDAwLIAJBzhpqIAItAKsPOgAAIAJBoBdqIAJBuA9qKQIAIhY3AwAgAkHoGGogFjcDACAC +QfAYaiACQcAPaigCADYCACACIAIvAKkPOwHMGiACIAIpArAPIhY3A5gXIAIgFjcD4BggAigCrA8h +CSACKQLEDyEWDAgLQQMhBwwGC0EFDCELIAJBkApqIgAgAkGoGmpBJBDNTxpBsIDBAEE6IABBqKnB +AEHsgMEAEIkYAAsgAiADNgKQCkH8gMEAQcAAIAJBkApqQYipwQBBvIHBABCJGAALAAtBBSEHDAEL +IAJBzhpqIAItAJMKOgAAIAJB6BhqIAJBoApqKQIANwMAIAJB8BhqIAJBqApqKAIANgIAIAIgAi8A +kQo7AcwaIAIgAikCmAo3A+AYIAIoApQKIQkgAikCrAohFiACQZgXahCaTAwBCyAGIAc6AABBCAwb +CyAAQbwEai0AAEUNACAAQcAEahCtOQsgAEG8BGpBADoAACAAQb0Eai0AAARAIABBtARqEK05CyAE +IQELIABBvQRqC0EAOgAAIAJBqhpqIgQgAkHOGmotAAA6AAAgAkHwBmoiBSACQegYaikDADcDACAC +QfgGaiIIIAJB8BhqKAIANgIAIAIgAi8BzBo7AagaIAIgAikD4Bg3A+gGIAZBAToAACACQY4KaiAE +LQAAOgAAIAJBgApqIAUpAwA3AwAgAkGICmogCCgCADYCACACIAIvAagaOwGMCiACIAIpA+gGNwP4 +CQJAAkACQAJAAkACQCADLQAOQQNrDgMBAgAFCyADQRRqENk/IANBEGoQrTkMAgsgA0EQahDZPwwC +CyADQRBqENk/CyADQQA6AAwgA0EEahCtOQsgA0EAOgANCyABQRZHDQEgACgCiAQQ+E0hBEEYQQQQ +qzkhASAAQcAEakEENgIAIABBuARqQgA3AwAgAEHMBGpCBDcCACAAQcQEakIANwIAIAEgCTYCACAA +QoCAgIDAADcDsAQgAkGgF2oiA0EANgIAIAJB8AZqIgZBADYCACABIAIpA/gJNwIEIAFBDGogAkGA +CmopAwA3AgAgAUEUaiACQYgKaigCADYCACACIABBvARqKQIANwOYFyACIABByARqKQMANwPoBiAC +QYAZaiAAKAKMBEEUahDgECAAQbALahDLCyACQegYaiAAQbgLaikDADcDACACQfAYaiAAQcALaikD +ADcDACACQfgYaiAAQcgLaikDADcDACACIAApA7ALNwPgGCAAQegLaigCACEFIAJBiBRqIAJB4Bhq +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 +A4AVNwP4FgwFC0ENDAgLIAJBlhdqIActAAA6AAAgAkGAF2ogBSkDADcDACACQYgXaiAJKQMANwMA +IAIgAi8BvBU7AZQXIAIgAikDoBU3A/gWIABBgARqELFLDAMLIAJBADYCkAoMAQsgAkHYFWoiByAC +QcQPaikCADcDACACQdAVaiIEIAJBvA9qKQIANwMAIAJByBVqIgMgAkG0D2opAgA3AwAgAiACKQKs +DzcDwBUgAUUEQCACQQA2ApAKDAELIAJBwA9qIAcpAwA3AwAgAkG4D2ogBCkDADcDACACQbAPaiAD +KQMANwMAIAIgAikDwBU3A6gPIwBBwAFrIgEkACABQQhqEOkkIAEpAwghFiABQSxqIAJBqA9qIgdB +GGopAgA3AgAgAUEkaiAHQRBqKQIANwIAIAFBHGogB0EIaikCADcCACABQZ+AgIB4NgIQIAEgBykC +ADcCFCACQZAKaiIHIAFBEGoQoDE2AgggByAWNwIAIAFBwAFqJAALIABBvARqEJpMIABBgARqELFL +IAJBlhdqIABBB2otAAA6AAAgAkGAF2ogAEEYaikCADcDACACQYgXaiAAQSBqKQIANwMAIAIgAC8A +BTsBlBcgAiAAKQIQNwP4FiAALQAEIQYgACgCACEHIAAoAgghASAAKAIMIQMgAkGoD2oiBCAAQShq +QYABEM1PGiACQbAQaiACQZgKaigCADYCACACQbwQaiAAQZgEaigCADYCACACIAIpApAKNwKoECAC +IAApApAENwK0ECACQeAVaiAEQZgBEM1PGgwCCyAAQZAEahCxGSAAEPM/C0GBgICAeCEHCyAAQYwE +ahCaTCACQe4BaiIEIAJBlhdqLQAAOgAAIAJB2AFqIgUgAkGAF2opAwA3AwAgAkHgAWoiCSACQYgX +aikDADcDACACIAIvAZQXOwHsASACIAIpA/gWNwPQASACQThqIAJB4BVqQZgBEM1PGiAAQQE6AK0E +IAdBgoCAgHhGDQIgAkGmA2ogBC0AADoAACACQZADaiAFKQMANwMAIAJBmANqIAkpAwA3AwAgAiAC +LwHsATsBpAMgAiACKQPQATcDiAMgAkHwAWogAkE4akGYARDNTxoCfyAHQYGAgIB4RwRAIAJB0ANq +IAJB8AFqQZgBEM1PGiACQa8DaiACQaYDai0AADoAACACQcADaiACQZADaikDADcCACACQcgDaiAC +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 +RSABQZAMahDpPyABQbAEahC8SwwFCyABQbAEahCFKQwCCyABQbAEahC9QAsgAUGABGoQsUsLIAFB +kARqELEZIAEQoUAMAgsgAUG9BGpBADoAAAsgAUGcBGoQsRkgAUGoAWoQoUALIAFBjARqEJpMCyAB +QaANahCsOQsgAEECOgClDQJAIAJBJGoiASgCAEECRwRAIBEgASkCADcCACARQRBqIAFBEGooAgA2 +AgAgEUEIaiABQQhqKQIANwIADAELIAEoAgQQmywhASARQQI2AgAgESABNgIECwwECyAAQQI6AKUN +QeTAwABBKEH8wcAAEOYrAAsgASAHOgAAQQQLIQEgEiABOgAACyAAQQM6AKQNIBFBAzYCAAsgAkHw +GmokACAAIAooAhQiAUEDRwR/IApBMGoiBCAKQSRqKAIANgIAIAogCikCHDcDKCAKKAIYIQcgABCa +BgJ/IAFBAkcEQCAKQcgAaiAEKAIANgIAIAogBzYCPCAKIAE2AjggCiAKKQMoNwJAIApBgAE2Akwg +CiAKQThqEKYuECg2AhQgCkEIaiAAQdAaaiAKQcwAaiIHIApBFGoiBBD7JyAKKAIIIAooAgwQ5EEM +AQsgCkGAATYCTCAKIAc2AhQgCiAAQdQaaiAKQcwAaiIHIApBFGoiBBD7JyAKKAIAIAooAgQQ5EEL +IQIgBBCWQSAHEJZBIAogAjYCECAKQRBqEJZBIABB0BpqEJZBIABB1BpqEJZBQQEFQQMLOgDYGiAK +QdAAaiQAIAFBA0YPC0HQl8YAQSNBtMHGABDmKwALgwMCAn8BfiMAQdAAayIDJAAgA0EwahDWEQJA +IAMtADBFBEAgA0EKaiADLQAzOgAAIAMgA0HBAGopAAA3ACUgAyADQTxqKQIANwMgIANBGGoiBCAD +KQAlNwAAIAMgAy8AMTsBCCADIANBNGopAgA3AAsgAyADKQMgNwATIANBOGogASgCACIBQQhqKQAA +NwMAIANBQGsgAUEQaikAADcDACADQcgAaiABQRhqKQAANwMAIAMgASkAADcDMCADQSBqIANBMGog +A0EIaiACKAIEIAIoAggQihcgAygCICIBQYCAgIB4RwRAIAMpAiQhBSACENorIABBAToAJCAAIAU3 +AgQgACABNgIAIABBHGogBCkBADcAACAAQRRqIANBEGopAQA3AAAgACADKQEINwAMIANBMGoQilEM +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 +ACEsIANB0ABqIAJByABqQSQQzU8aIANByABqICw3AwAgA0HEAGogHDYCACADQUBrIB02AgAgA0E4 +aiArNwMAIANBMGogKjcDACADQgI3AwAMAQsgAyACQdgAEM1PIgMgHDYCbCADIB02AmggAyACKQNo +NwNwIAMgAikDYDcDYCADIAIpA1g3A1gLIAFCCTcDAAwNCyABQQhqIAJBCGogHSAcEOsOIAFCCjcD +AAwMCyABQQhqIAJBCGogHSAcEJoOIAFCCzcDAAwLCyABQQhqIAJBCGogHSAcELoLIAFCDDcDAAwK +CyABQQhqIAJBCGogHSAcEJoOIAFCDTcDAAwJCyABQQhqIAJBCGogHSAcEOsPIAFCDjcDAAwICyAB +QQhqIAJBCGogHSAcELoLIAFCDzcDAAwHCyABQQhqIQMCQCACQQhqIgIpAwBCAlEEQCADQQhqIAJB +CGpBKBDNTxogA0HMAGogHDYCACADQcgAaiAdNgIAIANCAjcDACADQdAAaiACQcgAaikDADcDACAD +QUBrIAJBQGspAwA3AwAgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDAAwBCyADIAJB2AAQ +zU8iAyAcNgJsIAMgHTYCaCADIAIpA2g3A3AgAyACKQNgNwNgIAMgAikDWDcDWAsgAUIQNwMADAYL +IAFBCGogAkEIaiAdIBwQ6w8gAUIRNwMADAULIAFBCGohAwJAIAJBCGoiAikDAEICUgRAIAMgAkEo +EM1PIQMgAikDKCEqIAIpAzAhKyACKQM4ISwgA0HIAGogAkFAa0HEABDNTxogAyAsNwNAIAMgHDYC +PCADIB02AjggAyArNwMwIAMgKjcDKAwBCyADQQhqIAJBCGpB2AAQzU8aIANB9ABqIBw2AgAgA0Hw +AGogHTYCACADQgI3AwAgA0H4AGogAkHwAGopAwA3AwAgA0HoAGogAkHoAGopAwA3AwAgA0HgAGog +AkHgAGopAwA3AwALIAFCEjcDAAwECyMAQdABayIDJAACQCACKQMAQgJSBEAgAikDyAEhKiACKQPQ +ASErIAIpA9gBISwgA0EwaiACQShqQaABEM1PGiADQQhqIgQgAkEoEM1PGiABIARByAEQzU8iASAs +NwPgASABIBw2AtwBIAEgHTYC2AEgASArNwPQASABICo3A8gBDAELIAFBCGogAkEIakHYABDNTxog +AUH0AGogHDYCACABQfAAaiAdNgIAIAFCAjcDACABQfgAaiACQfAAaikDADcDACABQegAaiACQegA +aikDADcDACABQeAAaiACQeAAaikDADcDAAsgA0HQAWokAAwDCyABQQhqIQMCQCACQQhqIgIpAwBC +AlEEQCADQQhqIAJBCGpBKBDNTxogA0HEAGogHDYCACADQUBrIB02AgAgA0ICNwMAIANB2ABqIAJB +0ABqKQMANwMAIANB4ABqIAJB2ABqKQMANwMAIANB6ABqIAJB4ABqKAIANgIAIANB0ABqIAJByABq +KQMANwMAIANByABqIAJBQGspAwA3AwAgA0E4aiACQThqKQMANwMAIANBMGogAkEwaikDADcDAAwB +CyACKQNYISogAikDYCErIAIpA2ghLCACKQNwIS0gAyACQdgAEM1PIgIgLTcDeCACICw3A3AgAiAc +NgJsIAIgHTYCaCACICs3A2AgAiAqNwNYCyABQhQ3AwAMAgsgAUEIaiEDIwBBkAFrIgQkAAJAIAJB +CGoiAikDAEICUgRAIAIpA5ABISogAikDmAEhKyACKQOgASEsIAQgAkHoABDNTyIFQegAaiACQegA +akEoEM1PGiADIAVBkAEQzU8iAiAsNwOoASACIBw2AqQBIAIgHTYCoAEgAiArNwOYASACICo3A5AB +DAELIANBCGogAkEIakHYABDNTxogA0H0AGogHDYCACADQfAAaiAdNgIAIANCAjcDACADQfgAaiAC +QfAAaikDADcDACADQegAaiACQegAaikDADcDACADQeAAaiACQeAAaikDADcDAAsgBEGQAWokACAB +QhU3AwAMAQsgAUEIaiEDAkAgAkEIaiICKQMAQgJRBEAgA0EIaiACQQhqQSgQzU8aIANBzABqIBw2 +AgAgA0HIAGogHTYCACADQgI3AwAgA0HQAGogAkHIAGopAwA3AwAgA0FAayACQUBrKQMANwMAIANB +OGogAkE4aikDADcDACADQTBqIAJBMGopAwA3AwAMAQsgAyACQdgAEM1PIgMgHDYCdCADIB02AnAg +AyACKQNwNwN4IAMgAikDaDcDaCADIAIpA2A3A2AgAyACKQNYNwNYCyABQhY3AwALICcoAgAiASAB +KAIAIgJBAWo2AgAgAkEASA0CIBogATYCqAsgGkH4A2oiASAaQZACakHoARDNTxpBACECIBpBADoA +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 +QbwNaiADKQLcDTcCACADQcQNaiADQeQNaigCADYCACADIAM2AgggAwshDSADQdANakEANgIAIANB +yA1qIg9CgICAgMAANwMAIANBwA1qKAIAIQUgAiADQcQNaigCAEEAIANBvA1qKAIAIgEbNgLQBSAC +IAU2AswFIAIgATYCyAUgAkEANgLEBSACIAFBAEciDjYCwAUgAiAFNgK8BSACIAE2ArgFIAJBADYC +tAUgAiAONgKwBSACQdwDaiETIAJB6ANqIRQgAkHQAWohFSACQcQDaiEZIAJB3AFqIRogAkGcDGoh +DiACQaQDaiIQQRBqIRsDQCACQdAGaiACQbAFahDSGCACKALQBiIBRQRAIAJBsAVqELASIANB0AZq +QQE7AQAgA0EkaiAHNgIAIANBIGogDTYCACADQRxqIAs2AgAgA0EYaiAPQQhqKAIANgIAIANBEGoi +ASAPKQMANwMAIANB0QZqIQ9BAQwICyACIAIoAtQGNgKsBiACIAE2AqgGIAICfyACKALYBiIBBEBB +ASEFIAIoAtwGIQggASEGIAIoAuAGDAELQQAhBSAEIQFBAAs2ApgHIAIgCDYClAcgAiAGNgKQByAC +QQA2AowHIAIgBTYCiAcgAiAINgKEByACIAE2AoAHIAJBADYC/AYgAiAFNgL4BgNAIAJBkAxqIQQj +AEEQayIFJAAgBUEEaiACQfgGahDTCwJAIAUoAgQiEUUEQCAEQQM2AgwMAQsgBEEMaiARIAUoAgwi +FkGMAmxqQYgBakGMAhDNTxogBEEIaiARIBZBDGxqIhFBDGooAgA2AgAgBCARQQRqKQIANwIACyAF +QRBqJAAgAigCnAxBA0YEQCACQfgGahDiIiACQagGahD6PiABIQQMAgUgAkHEAWogDkGMAhDNTxog +AkHYAGogAkGoBmoQnTEgAigCXCERIAIoAlghFiAUQQhqIBVBCGooAgA2AgAgFCAVKQIANwIAIAJB +2ANqIA5BCGooAgA2AgAgEyACKQKQDDcCACATQQhqIAJBmAxqKAIANgIAIAIgDikCADcD0AMgAygC +0A0iBSADKALIDUYEQCAPIAUQnA8gAygC0A0hBQsgAygCzA0gBUGgAmxqIAJB0ANqQSQQzU8iBCAR +NgIoIAQgFjYCJCAEQSxqIBpByAEQzU8aIAQgGSkCADcClAIgBEGMAmogEEEYaikCADcCACAEQYQC +aiAbKQIANwIAIARB/AFqIBBBCGopAgA3AgAgBCAQKQIANwL0ASAEQZwCaiAZQQhqKAIANgIAIAMg +AygC0A1BAWo2AtANDAELAAsACwALQaDEwABBI0GcmMEAEOYrAAtBoMTAAEEjQey6wQAQ5isAC0GM +wsAAQTZBxMLAABCfNwALIANBEGohASADQdEGaiEPIAMtANEGQQFrDgUDAAQFBwELAAsgA0EkaigC +ACEHIANBIGooAgAhDSADQRxqKAIAIQsgA0HQBmotAAALIQQgA0EsaiABKQIAIhw3AgAgA0GAAjsA +0wYgAyAEOgDSBiADQShqIAs2AgAgA0HIAGpBADYCACADQUBrQoCAgIDAADcDACADQTxqIAc2AgAg +A0E4aiANNgIAIANB2ABqQQA2AgAgA0HQAGpBADYCACADQeQAaiAcPgIAIANB7ABqQQA2AgAgA0E0 +aiABQQhqKAIAIgQ2AgAgA0HMAGogBDYCACADQdwAaiADQTBqKAIAIgY2AgAgA0HgAGogBjYCACAD +QegAaiAGIARBoAJsajYCAEEADAMLQaDEwABBI0Gci8EAEOYrAAsgA0HcBmooAgAhEiADQdgGaigC +ACEMQQEMAQtBAgshBQNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAUOAgABAgsgA0HwAGogA0Hc +AGoiBBC4HyADQfQAaiIGKAIAQQNHDQIgBBDOFSADQdQGakEAOgAAIANB2AZqIANByABqIgQoAgA2 +AgAgAkGgBmoiBiAEKAIANgIAIAIgA0FAaykDADcDmAYgAhDRMiACQfANaiIEQQA2AgAgAkHgDWpC +CDcDACACQdgNakIANwMAIAJByA1qQgQ3AwAgAkHADWoiBUIANwMAIAJB+AxqQgA3AwAgAkGADWpC +BDcDACACQYgNakKAgICAwAA3AwAgAkGQDWpCADcDACACQZgNakIINwMAIAJBoA1qQoCAgICAATcD +ACACQagNakIANwMAIAJBsA1qQgg3AwAgAkGAgICAeDYC2AwgAkEANgKwDCACQoCAgIDAADcD6A0g +AkKAgICAwAA3A9ANIAJCgICAgIABNwO4DSACQQA2AsgMIAJCgICAgMAANwPwDCACKQMAIRwgAikD +CCEdIAJB1AxqIghBADYCACACQagMaiIHIB03AwAgAkH8DWoiDEEANgIAIAJBoAxqIgsgHDcDACAC +QZgMaiISQfDCwAApAwA3AwAgAkHgBWogAkHADGopAwA3AwAgAkHYBWogAkG4DGopAwA3AwAgAkEA +NgLMDCACQoCAgIDAADcC9A0gAkGAgICAeDYC5AwgAkHowsAAKQMANwOQDCACIAIpA7AMNwPQBSAC +QegRaiINIAJB4AxqKAIANgIAIAIgAikD2Aw3A+ARIAJBoAVqIg4gBSgCADYCACACIAIpA7gNNwOY +BSACQYgFaiIFIAJBzA1qKAIANgIAIAIgAikCxA03A4AFIAJBkAZqIhAgAkHkDWooAgA2AgAgAiAC +KQLcDTcDiAYgAkGABmoiEyAEKAIANgIAIAIgAikD6A03A/gFIAJB0AZqIgQgAkHwDGpBJBDNTxog +AkGoBmoiFCACQZQNakEkEM1PGiACQYASaiIVIAgoAgA2AgAgAkG4BWogEikDADcDACACQcAFaiAL +KQMANwMAIAJByAVqIAcpAwA3AwAgAiACKQLMDDcD+BEgAiACKQOQDDcDsAUgAkHwBWoiCCAMKAIA +NgIAIAIgAikC9A03A+gFIAJB0BFqIgcgAkHsDGooAgA2AgAgAiACKQLkDDcDyBEgAkHQDWoQu0sg +A0EoaigCACEMIAJB8BBqIAJBsAVqQTgQzU8aIAJB+AZqIgsgAkGQDGpBmAUQzU8aIANB4AZqIAtB +mAUQzU8aIANB+AtqQQA2AgAgA0H8C2ogAikD+BE3AgAgA0GEDGogFSgCADYCACADQYgMaiACKQPg +ETcDACADQZAMaiANKAIANgIAIANBlAxqIAIpA8gRNwIAIANBnAxqIAcoAgA2AgAgA0GgDGogBEEk +EM1PGiADQcQMaiAUQSQQzU8aIANB8AxqIA4oAgA2AgAgA0HoDGogAikDmAU3AwAgA0H0DGogAikD +gAU3AgAgA0H8DGogBSgCADYCACADQYANaiACKQOYBjcDACADQYgNaiAGKAIANgIAIANBjA1qIAIp +A4gGNwIAIANBlA1qIBAoAgA2AgAgA0GgDWogEygCADYCACADQZgNaiACKQP4BTcDACADQbANaiAM +NgIAIANBtA1qQQA6AAAgA0GsDWogCCgCADYCACADQaQNaiACKQPoBTcCAAwMCyACQZAMaiAMIAog +EigCDBEDACACLQDYDCIFQQRGDQQgAkH+BGoiByACLQCTDDoAACACQfgEaiILIAJBpAxqKAIANgIA +IAJB6ARqIg0gAkGwDGooAgA2AgAgAiACLwCRDDsB/AQgAiACKQKcDDcD8AQgAiACKQKoDDcD4AQg +Ai0AkAwhCCACKAKUDCEEIAIoApgMIQYgAkG8BGogAkG0DGpBJBDNTxogAkG6BGoiDiACQdsMai0A +ADoAACACIAIvANkMOwG4BCADQdgGahCZNiAFQQNGDQIgAyACLwH8BDsA+QcgA0H4B2ogCDoAACAD +QfQHaiADQYQGajYCACADQYAIaiAGNgIAIANB/AdqIAQ2AgAgA0GECGogAikD8AQ3AgAgA0GQCGog +AikD4AQ3AgAgA0H7B2ogBy0AADoAACADQYwIaiALKAIANgIAIANBmAhqIA0oAgA2AgAgA0GcCGog +AkG8BGpBJBDNTxogA0HACGogBToAACADQcQIakEAOgAAIAMgAi8BuAQ7AMEIIANBwwhqIA4tAAA6 +AABBAiEFDAoLIANB2AZqIgQgChC2BEH/AXEiBkECRgRAQQQhBQwPCyAEELY1IAZFDQYgAy0A0gYN +BAwFCyADQZQDaiADKAJwNgIAIANBuAVqIgQgA0GYA2ogBkGgAhDNTxCrUSADQYAGai0AAEECRg0B +IANBAToA0wYgA0GEBmogBEHMABDNTyEEIAJB0ABqIANBKGooAgAoAgBB3ABqKAIAQQhqEOU1IAIo +AlAhBiACKAJUIQUgAkHIAGogBBDbTSACKAJMIQggAigCSCEHIAJBQGsgBBDUPiACQThqIAYgByAI +IAIoAkAgAigCRCAFKAIsEQoAIAIoAjghDCADQdwGaiACKAI8IhI2AgAgA0HYBmogDDYCAAwHCyAC +Qa4SaiAHLQAAOgAAIAJBqBJqIAsoAgA2AgAgAkGYEmogDSgCADYCACACIAIvAfwEOwGsEiACIAIp +A/AENwOgEiACIAIpA+AENwOQEiADQYQGahDhEiADQQA6ANMGIANBmANqENIyIANB3ABqEM4VDAkL +IAJBkAVqIARBEGooAgA2AgAgAkGIBWogBEEIaikCADcDACACIAQpAgA3A4AFAkBBxJPbACgCAEED +Sw0AQdiR2wAQ+z4iBEH/AXFFDQBBACEFQdiR2wAoAgAgBBD1LkUNAEHYkdsAKAIAIgRBHGohCyAE +QShqKAIAIQYgBEEkaigCACEIIAQoAhwhByACIARBIGooAgAiBAR/IAJBADYCoAwgAiAGNgKcDCAC +IAg2ApgMIAIgBDYClAxBASEFIAcFQQALNgKQDCACQZgFaiACQZAMakGsi8EAENgsIAJBhAdqQgA3 +AgAgAkEBNgL8BiACQeyLwQA2AvgGIAJB4MfAADYCgAcgAiAEIAVNBH9BAAUgAiAGNgKcDCACIAg2 +ApgMIAIgBDYClAwgAiAFNgKgDCAFQQFqIQUgBws2ApAMIAJByBFqIAJBkAxqQayLwQAQ2CwgAkGY +BmogA0GMBWoQ8VEgAiAEIAVLBH8gAiAGNgKcDCACIAg2ApgMIAIgBDYClAwgAiAFNgKgDCAFQQFq +IQUgBwVBAAs2ApAMIAJB4BFqIAJBkAxqQayLwQAQ2CwgAiADQbwDajYC6AUgAiAEIAVNBH9BAAUg +AiAGNgKcDCACIAg2ApgMIAIgBDYClAwgAiAFNgKgDCAFQQFqIQUgBws2ApAMIAJB+BFqIAJBkAxq +QayLwQAQ2CwgAiAEIAVLBH8gAiAFNgLgBiACIAY2AtwGIAIgCDYC2AYgAiAENgLUBiAHBUEACzYC +0AYgAkGoBmoiBCACQdAGaiIGQayLwQAQ2CwgAkHIDGpBlIzBADYCACACQbwMakH0i8EANgIAIAJB +uAxqIANBpANqNgIAIAJBsAxqQYSMwQA2AgAgAkGkDGpB9IvBADYCACACQcQMaiACQfgFajYCACAC +QawMaiACQegFajYCACACQaAMaiACQZgGaiIFNgIAIAJBwMfAADYCmAwgAiAENgLADCACIAJB+BFq +NgK0DCACIAJB4BFqNgKoDCACIAJByBFqNgKcDCACIAJB+AZqNgKUDCACIAJBmAVqNgKQDCACIAJB +gAVqNgL4BSAGIAsgAkGQDGoQ1UEgAkGQBmogAkHYBmooAgA2AgAgAiACKQLQBjcDiAZB2JHbACgC +ACACQYgGahDENCAFEIg/CyACQYAFahD9IwwEC0EDIQUMCgsgA0GEBmoQ2U0LIAJBMGogA0GEBmoi +BhDbTSACQShqIAIoAjAgAigCNBDCMCACQZAMaiIEIANB0ABqIAIoAiggAigCLBCHECAEEI0WIQgg +AkGoDGogA0GsBmopAAA3AwAgAkGgDGogA0GkBmopAAA3AwAgAkGYDGogA0GcBmopAAA3AwAgAiAD +QZQGaikAADcDkAwgAkHQBmoiByAEEPFRIAJB+AZqIgUgCCAHENgPIAUQ1RMgAkEgaiAGENQ+IAIo +AiAhCyACQRhqIAIoAiQiCBDuHyACKAIYIQ0gAigCHCALIAgQzU8hCyACIAg2AoAHIAIgCzYC/AYg +AiANNgL4BiAFEKtKIANBADoA0wYgBCAGQcwAEM1PGiADQUBrIAQQ7CsLIAMtANMGBEAgA0GEBmoQ +4RILIANBADoA0wYLIANBOGooAgAiBigCAARAIANBzABqKAIAIQQgA0GUA2ooAgAhBSACQYEBNgKo +BiACIAUQz082AtAGIAIgBCADQTxqKAIAKAIAIgVqEM9PNgL4BiACIAUQz082ApAMIwBBEGsiBCQA +IAZBBGooAgAgAkGoBmoiBigCACACQdAGaiIFKAIAIAJB+AZqIggoAgAgAkGQDGoiBygCABCuASEL +IARBCGoQgzggBCgCDCENIAJBEGoiDiAEKAIIIhA2AgAgDiANIAsgEBs2AgQgBEEQaiQAIAIgAigC +ECACKAIUQfy6wQBBuLvBABCALzYC+BEgAkH4EWoQlkEgBxCWQSAIEJZBIAUQlkEgBhCWQQsgA0GY +A2oQ0jJBACEFDAELQQEhBQwACwALIAJBkAxqIANB4AZqIgUgChD7ECACLQCQDCIIQQxGDQEgAkHG +EWoiCiACLQCTDDoAACACQcARaiIHIAJBpAxqKAIANgIAIAJBsBFqIgwgAkGwDGooAgA2AgAgAiAC +LwCRDDsBxBEgAiACKQKcDDcDuBEgAiACKQKoDDcDqBEgAigClAwhBCACKAKYDCEGIAUQ+TwgCEEL +Rg0CIAJBrhJqIAotAAA6AAAgAkGoEmogBygCADYCACACQZgSaiAMKAIANgIAIAIgAi8BxBE7AawS +IAIgAikDuBE3A6ASIAIgAikDqBE3A5ASCyADQdAAahD9AiADQdQGaiIFLQAARQ0EIANBQGsQu0sM +BAtBBSEFDAELQcST2wAoAgBBAksNAUHkkdsAEPs+IgRB/wFxRQ0BQQAhBUHkkdsAKAIAIAQQ9S5F +DQFB5JHbACgCACIGQShqKAIAIQogBkEkaigCACEIIAYoAhwhByACIAZBIGooAgAiBAR/IAJBADYC +oAwgAiAKNgKcDCACIAg2ApgMIAIgBDYClAxBASEFIAcFQQALNgKQDCACQcgRaiACQZAMakGkjMEA +ENgsIAJBhAdqQgA3AgAgAkEBNgL8BiACQdSMwQA2AvgGIAJB4MfAADYCgAcgAiAEIAVNBH9BAAUg +AiAKNgKcDCACIAg2ApgMIAIgBDYClAwgAiAFNgKgDCAFQQFqIQUgBws2ApAMIAJB4BFqIAJBkAxq +QaSMwQAQ2CwgAiAEIAVLBH8gAiAKNgKcDCACIAg2ApgMIAIgBDYClAwgAiAFNgKgDCAFQQFqIQUg +BwVBAAs2ApAMIAJB+BFqIAJBkAxqQaSMwQAQ2CwgAiAEIAVLBH8gAiAFNgLgBiACIAo2AtwGIAIg +CDYC2AYgAiAENgLUBiAHBUEACzYC0AYgAkGoBmoiCiACQdAGaiIEQaSMwQAQ2CwgAkG8DGpB3IzB +ADYCACACQbAMakGY7cAANgIAIAJBrAxqIANB2AZqNgIAIAJBpAxqQZjtwAA2AgAgAkGgDGogA0HM +AGo2AgAgAkG4DGogAkGYBWo2AgAgAkHAx8AANgKYDCACIANB0ABqNgKYBSACIAo2ArQMIAIgAkH4 +EWo2AqgMIAIgAkHgEWo2ApwMIAIgAkH4Bmo2ApQMIAIgAkHIEWo2ApAMIAQgBkEcaiACQZAMahDW +QUHkkdsAKAIAIAQQxDQMAQsgDyAFOgAADAILIAJBqBJqIANB2ABqKAIANgIAIAIgA0HQAGopAwA3 +A6ASIANB1AZqIQUgA0HMAGooAgAhBiADQdgGaigCACEEQQshCAsgBUEAOgAAIAJBlgRqIgogAkGu +EmotAAA6AAAgAkGQBGoiBSACQagSaigCADYCACACQYAEaiIHIAJBmBJqKAIANgIAIAIgAi8BrBI7 +AZQEIAIgAikDoBI3A4gEIAIgAikDkBI3A/gDIA9BAToAACAIQQxGDQAgAkG2BGogCi0AADoAACAC +QbAEaiAFKAIANgIAIAJBoARqIAcoAgA2AgAgAiACLwGUBDsBtAQgAiACKQOIBDcDqAQgAiACKQP4 +AzcDmAQgAS0AwQYOBgYICAMBAggLIANBAzoA1A0gA0EDOgDsDSAXQQI2AgAMCAsgAUHIBmoQtjUM +AgsgAUHQBmoQ+TwMAgsgAUHIBmoQmTYLIAFB9AVqEOESIAFBADoAwwYgAUGIA2oQ0jIgAUHMAGoQ +zhULIAFBQGsQ/QIgAS0AxAZFDQEgAUEwahC7SwwBCyABEKhLDAELIAFBADoAxAYLIAJBlgFqIgEg +AkG2BGotAAA6AAAgAkGQAWoiCiACQbAEaigCADYCACACQYABaiIHIAJBoARqKAIANgIAIAIgAi8B +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 +AhggBUEANgLYASAFQewBaiIDIAVBFGoiBCABIAIgBUHYAWoQqQ0gBSADEK8PIAUoAgAgBSgCBEH0 ++8kAQT9BtPzJABDELyEBIAAgBEHEARDNTyABNgLEAQwBCyAFQegBaiAFQYACaigCACIBNgIAIAVB +4AFqIAVB+AFqKQIAIgc3AwAgBSAFKQLwASIINwPYASAAQRRqIAE2AgAgAEEMaiAHNwIAIAAgCDcC +BCAAQQA2AgAgBUEMahD6PgsgBUGwA2okAAvVAgEEfyMAQfAAayICJAAgAkEoakIANwMAIAJBIGpC +ADcDACACQRhqQgA3AwAgAkIANwMQIAJByABqIgNCADcDACACQUBrIgRCADcDACACQThqIgVCADcD +ACACQgA3AzAgAkEIaiABQQBBIEHQ4dMAEPktIAJBEGpBICACKAIIIAIoAgxB4OHTABCSOiACIAFB +IEHAAEHw4dMAEPktIAJBMGpBICACKAIAIAIoAgRBgOLTABCSOiACQdkAaiACQRlqKQAANwAAIAJB +4QBqIAJBIWopAAA3AAAgAkHnAGogAkEnaikAADcAACACIAIpABE3AFEgAiACLQAQQfgBcToAUCAC +IAItAC9BP3FBwAByOgBvIAAgAkHQAGoQ0AIgAEE4aiADKQMANwAAIABBMGogBCkDADcAACAAQShq +IAUpAwA3AAAgACACKQMwNwAgIAJB8ABqJAALzwcBC38jAEHgAGsiAyQAIAACfwJAAkACQAJAAkAg +AC0A6BtBAWsOAwMAAgELAAsgACAAQfANakHwDRDNTxoLIANBIGohBSMAQfAAayICJAACQAJAAkAC +QAJ/AkAgACgC4A1BgICAgHhHBEAgAEHgDWohBAJAAkACQCAALQDsDUEBaw4DCAACAQsACyAAQQA6 +ANANIAAgAEHcDWo2AsANIAAgACgC2A02ArgNIAAgBCkCADcCxA0gAEHMDWogBEEIaigCADYCAAsg +AkHMAGogACABEPABIAItAEwiBkEMRg0DIAJBPmoiCSACLQBPOgAAIAJBOGoiByACQeAAaiIKKAIA +NgIAIAJBKGoiCyACQewAaiIMKAIANgIAIAIgAi8ATTsBPCACIAIpAlg3AzAgAiACKQJkNwMgIAIo +AlAhASACKAJUIQggABDRMCAGQQtHDQEgAkHIAGogBygCADYCACACIAIpAzA3A0BBAAwCC0GMwsAA +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 +AiACIAk2AtwCIAJByBBqIgYgFiACQdwCahDgQUG0iNsAKAIAIAYQxDQLDA0LIBwQmkxBgICAgHgh +EEHEk9sAKAIAQQNLDQ1BqIjbABD7PiIDQf8BcUUNDUGoiNsAKAIAIAMQ9S5FDQ1BqIjbACgCACID +QRxqIRYgA0EgaigCACIKBEAgA0EoaigCACEGIANBJGooAgAhFyADKAIcIRQgAkEANgKACSACIAY2 +AvwIIAIgFzYC+AggAiAKNgL0CAsgAiAUNgLwCCACQegEaiIJIAJB8AhqIgZB4JHBABDYLCACQfwI +akIANwIAIAJBwMfAADYC5AIgAkEBNgL0CCACQaiSwQA2AvAIIAJB4MfAADYC+AggAiAGNgLgAiAC +IAk2AtwCIAJByBBqIgYgFiACQdwCahDgQUGoiNsAKAIAIAYQxDQMDQsgBUHQA2pBADYCACAFQcQD +akIANwIAIAVBvANqQQA2AgAgBUG4A2ogAzYCACAFQfgAaiAFQfwEaigCADYCACAFQfQAaiAFQYAF +aigCACIKNgIAIAVB8ABqIAo2AgAgBUH8AGogCiAFQYQFaigCAEHMAGxqIgE2AgBBACEDDAMLQcST +2wAoAgANA0HAiNsAEPs+IgZB/wFxRQ0DQcCI2wAoAgAgBhD1LkUNA0HAiNsAKAIAIiBBKGooAgAh +FyAgQSRqKAIAIQkgICgCHCEGIAIgIEEgaigCACIHBH8gAkEANgKACSACIBc2AvwIIAIgCTYC+Agg +AiAHNgL0CEEBIRYgBgVBAAs2AvAIIAJBgA9qIAJB8AhqQbCSwQAQ2CwgAkH8CGpCADcCACACQQE2 +AvQIIAJB5JLBADYC8AggAkHgx8AANgL4CCACIAcgFksEfyACIBY2AuwCIAIgFzYC6AIgAiAJNgLk +AiACIAc2AuACIAYFQQALNgLcAiACQcgQaiIGIAJB3AJqIglBsJLBABDYLCACQfwEakHsksEANgIA +IAJB+ARqIAJBuA1qNgIAIAJBwMfAADYC8AQgAiAFQSBqNgK4DSACIAY2AvQEIAIgAkHwCGo2AuwE +IAIgAkGAD2o2AugEIAkgIEEcaiACQegEahDyQUHAiNsAKAIAIAkQxDQMAwsgAkH+AWogBi0AADoA +ACACIAIvAdwBOwH8AUGBgICAeAwDC0EEDAcLA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkAgAw4FAAECAwQFCyABIApHDQUgBUGcBGpBAjoAAAwGCyAFQZACaiIUIAVB4AJqQcwAEM1PIQMg +DigCACIGQRBqKQIAITQgBkEYaikCACEzIAYpAgghMiAWQRhqIAZBIGopAgA3AgAgFkEQaiAzNwIA +IBZBCGogNDcCACAWIDI3AgAgBUGAAmogBUHYAmoxAABC/wGDNwMAIAVBiAJqIAVB1AJqNQIANwMA +IAVB/AFqIjBBADoAACAFQaABaiIvIAM2AgAMCQsgBUH4AWoiC0EAOgAAIAVBpAFqIjEgFDYCAAwJ +CyAUKAJEIRcgBUH0AWoiFUEAOgAAIAVBrAFqIBc2AgAgBUGoAWoiESAUNgIADAkLIAVBsAFqIBQ2 +AgAgBUG0AWogFCgCRCIDIBcgAyAXSxs2AgAgFCgCACEDIAVB8AFqQQA6AAAgBUG4AWogA0EIajYC +AEEFIQMMCgsCQCAFQbgBaiIDICAQuAciAQRAIAIgATYClBIgAxDZPyACQcgQaiACKAKUEkEUaiAF +QbQBaigCABDBLSACKALIEA0BQcj4wABBFEHc+MAAENciAAsgFUEDOgAADA4LIAJBgA9qIhAgAkHI +EGpByAEQzU8aIAJBlBJqIgEQmkwgASAFQbABaiIHKAIAENxNEJRRIAJBQGsgBygCABDbTSACQThq +IAIoAkAgAigCRBDCMCACKAI8IQQgAigCOCEPIAJB0BBqIgkgBygCACIBQRhqKQAANwMAIAJB2BBq +IgYgAUEgaikAADcDACACQeAQaiIDIAFBKGopAAA3AwAgAiABQRBqKQAANwPIECACQTBqIAEQ1D4g +AigCMCEBIAJBKGogAigCNCIqEO4fIAIoAighGCACKAIsIAEgKhDNTyESIAJBkAtqIAcoAgAoAgxB +CGoQvy8gAkGoC2oiCCAJKQMANwMAIAJBsAtqIgcgBikDADcDACACQbgLaiIBIAMpAwA3AwAgAiAC +KQPIEDcDoAsgAikCmBIhMiACKAKUEiEKIAJBwAtqIBBByAEQzU8aIAVBAToA9AEgCkEDRg0NIAJB +uA1qIgkgAkHAC2pByAEQzU8aIAJBsA1qIgYgASkDADcDACACQagNaiIDIAcpAwA3AwAgAkGgDWoi +ASAIKQMANwMAIAJBkA1qIgggAkGYC2ooAgA2AgAgAiACKQOgCzcDmA0gAiACKQOQCzcDiA0gERDw +PyACQagHaiIHIAlByAEQzU8aIAJBoAdqIgkgBikDADcDACACQZgHaiIGIAMpAwA3AwAgAkGQB2oi +AyABKQMANwMAIAJBgAdqIgEgCCgCADYCACACIAIpA5gNNwOIByACIAIpA4gNNwP4BiALQQE6AAAg +AiAENgKYCSACIA82ApQJIAJBADYCkAkgAkKAgICAEDcCiAkgAiAqNgKECSACIBI2AoAJIAIgGDYC +/AggAiAyNwL0CCACIAo2AvAIIAJBnAlqIAdByAEQzU8aIAJB/ApqIAkpAwA3AgAgAkH0CmogBikD +ADcCACACQewKaiADKQMANwIAIAJBjAtqIAEoAgA2AgAgAiACKQOIBzcC5AogAiACKQP4BjcChAsg +MRDtPyACQegEaiIBIAJB8AhqIgMpAgA3AgAgASADKQL0ATcC4AEgAUEIaiADQQhqKAIANgIAIAFB +6AFqIANB/AFqKQIANwIAIAFB8AFqIANBhAJqKQIANwIAIAFB+AFqIANBjAJqKQIANwIAIAFBGGog +A0EsakHIARDNTxogAUEUaiADQSBqKAIANgIAIAEgAykCGDcCDCABIAMpApQCNwKAAiABQYgCaiAD +QZwCaigCADYCACADQSRqEPo+IANBDGoQiD8gAigC6AQgMEEBOgAAQQNGDQ4gAkHcAmoiByACQegE +aiIBQYwCEM1PGiAvEPE/IAJBIGpBgAEQ7h8gAkEANgL4CCACIAIpAyA3AvAIIAIgAkHwCGo2AugE +IwBBIGsiCCQAIAhBGGogAUGA/cUAQQ9BBRDENgJAIAgtABhBAkYEQCAIKAIcIQEMAQsgCCgCHCEB +IAgoAhgiBkH/AXEiA0ECRg0AIAggATYCDCAIIAY2AgggCEEJNgIcIAhBj/3FADYCGAJAAn8gA0UE +QCAIQQhqQY/9xQAgBxDDGwwBCyAIQRhqEO9FRQ0BIAcgARDiMwsiAQ0BIAggB0HgAWoiATYCFCAI +QQo2AhwgCEGY/cUANgIYAn8gCC0ACEUEQAJ/IAhBFGohBiMAQRBrIgkkAAJAAkAgCEEIaiIBQZj9 +xQBBChC2GiIQDQAgAS0AAA0BIAlBCGoiAyABKAIEIgEQnkogAxCeLiIQDQAgBiABEKZMIhANACAJ +QQQ6AAggCUEIahCeLiEQCyAJQRBqJAAgEAwBCwwlCwwBCyAIQRhqEO9FRQ0BIAEgCCgCDBC2Lwsi +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 +gAkgAiAGNgL8CCACIAE2AvgIIAIgBzYC9AhBASEDIBcFQQALNgLwCCACQcALaiACQfAIakH8ksEA +ENgsIAJB9ARqQgA3AgAgAkEBNgLsBCACQbyTwQA2AugEIAJB4MfAADYC8AQgAiADIAdPBH9BAAUg +AiAGNgL8CCACIAE2AvgIIAIgBzYC9AggAiADNgKACSADQQFqIQMgFws2AvAIIAJBuA1qIAJB8Ahq +QfySwQAQ2CwgAiADIAdJBH8gAiAGNgL8CCACIAE2AvgIIAIgBzYC9AggAiADNgKACSADQQFqIQMg +FwVBAAs2AvAIIAJBgA9qIAJB8AhqQfySwQAQ2CwgAiACQagHajYCmA0gAiADIAdJBH8gAiADNgLs +AiACIAY2AugCIAIgATYC5AIgAiAHNgLgAiAXBUEACzYC3AIgAkHIEGoiASACQdwCaiIDQfySwQAQ +2CwgAkGcCWpB7JLBADYCACACQZAJakHcjMEANgIAIAJBhAlqQZjtwAA2AgAgAkGACWogBUHIAGo2 +AgAgAkGYCWogAkGAAmo2AgAgAkGMCWogAkGYDWo2AgAgAkHAx8AANgL4CCACIAVBIGo2AoACIAIg +ATYClAkgAiACQYAPajYCiAkgAiACQbgNajYC/AggAiACQegEajYC9AggAiACQcALajYC8AggAyAJ +QRxqIAJB8AhqENZBQcyI2wAoAgAgAxDENAwGCyACIAIoAvQINgLoBEHEkMEAQSQgAkHoBGpBiKnB +AEHokMEAEIkYAAtBACEDDAULQQEhAwwEC0ECIQMMAwtBAyEDDAILQQQhAwwBCwsgAkEIahDpJCAC +Qf4BaiAFQTNqLQAAOgAAIAIgBUExai8AADsB/AEgBUEsaigCACEQIAVBMGotAAAhAyAFQTRqKAIA +IQogAigCDCEBIAIoAgghHCACKQOoByEzIAIoArAHIRYgBUEkahCaTAwICyAIELtLQYCAgIB4CyEQ +IAVBLGoQiD8MBQsgAiADNgLwCEH4m8EAQSEgAkHwCGpBiKnBAEGcnMEAEIkYAAsgC0EDOgAAIDBB +AzoAAAsgDEEDOgAACyAdQQM6AABBBQshASAbIAE6AAAMAgsgBUEkahCaTAsgAkHSAWoiBiACQf4B +ai0AADoAACACIAIvAfwBOwHQASAbQQE6AAAgEEGCgICAeEYNACACQdYBaiAGLQAAOgAAIAIgAi8B +0AE7AdQBICMtACBBA2sOAwECAwULQQQhAwwFCyAjQSRqEOo/DAMLICNBJGoQmTYMAQsgI0E4ahDy +JgsgI0EUahCIPyAjQQxqEJpMCyAQQYGAgIB4Rg0BIAJBqwFqIAJB1gFqLQAAOgAAIAIgAi8B1AE7 +AKkBIAIgFjYCzAEgAiAzNwLEASACIAE2AsABIAIgHDYCvAEgAiAdNgK4ASACIDI3ArABIAIgCjYC +rAEgAiADOgCoASACIBA2AqQBIAJBvAFqIQlBgICAgHghFiAQQYCAgIB4RwRAIAIgCRDxLiACKQMA +ITIgAkHwCGogAkGkAWoQ8j8gAkGQCWohBgJAIAJBxAFqIgMoAghFBEAgBkEANgIIIAZBADYCAAwB +CyADKAIAIgEEQCAGIAEgAygCBBDyBQwBC0Gs+cMAEKNLAAsgAiAyNwKICSACKALwCCEWIAJB6ARq +IAJB9AhqQSgQzU8aCyAFQRBqKAIAIgEQtTkgASAWNgIAIAFBBGogAkHoBGpBKBDNTxogAikCtAEh +MyACKAKwASEBIAIoAqwBIRwgAigCqAEhHSACKAKkASIUQYCAgIB4Rg0DIAJBkAlqIgMgCUEIaikC +ADcCACACQZgJaiAJQRBqKAIANgIAIAIgCSkCACIyNwKICSACIDM3AoAJIAIgATYC/AggAiAcNgL4 +CCACIB02AvQIIAIgFDYC8AggAkGMCWooAgAhFyADEP0CIDKnIQoMAwsgIiADOgAADAQLIAJB2gFq +IAJB1gFqLQAAOgAAIAIgAi8B1AE7AdgBIDJCIIinIRQgMqchFwwCCyACQYABaiAHQRhqEPEuIAIo +AoQBIRcgAigCgAEhCiACQfAIaiAHEPI/IAIpAoAJITMgAigC/AghASACKAL4CCEcIAIoAvQIIR0g +AigC8AghFAtBCyEDCyAFQQhqEKlKIAVBAToAFCACQZ4BaiIJIAJB2gFqLQAAOgAAIAIgAi8B2AE7 +AZwBIANB/wFxIgZBDEYNACACQaIBaiAJLQAAOgAAIAIgAi8BnAE7AaABAn8gBkELRgRAQQAgFEGA +gICAeEYNARogAiAXNgLMECACIAo2AsgQIAIgMzcCgAkgAiABNgL8CCACIBw2AvgIIAIgHTYC9Agg +AiAUNgLwCCACQegEaiIBIAJByBBqEIMVIAIgAkHwCGo2AvQEIAJB3AJqISUjAEGAAWsiDiQAIA5B +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 +IANB6ABqEJI4IAMoAjwhCCADKAI4RQ0IQQAhCiAIIQYMBgsgAkECRg0EQYmQwABBCxDxHyEGDAUL +QgAgF60gDK1CIIaEIB1CAlEiBhshHiAOQQFxIQogAkECRg0BIANBQGsgA0GEAWopAgA3AwAgAyAD +KQJ8NwM4DAILIAMoAjwhBgwDCyADQgA3AD0gA0IANwM4C0EAIAggChshDkIAIB0gBhshHSADQTBq +IANBQGspAwA3AwAgAyADKQM4NwMoIB5CIIinIQggHqchBgwCCyADKAJoIgIQ5xYiBg0AIANBOGog +AhDhDCADKAI4IQYgAy0ARCICQQJGDQAgA0GOAWoiHCAaQQJqLQAAOgAAIAMgGi8AADsBjAEgAykC +PCEeIANB/ABqEN9CIBkgAy8BjAE7AAAgGUECaiAcLQAAOgAAIAMgAjoAiAEgAyAeNwKAASADIAY2 +AnwMAwsgA0H8AGoQ30IgCgRAIBsQkEULQgIhHQsgCSAJLQAkQQFqOgAkIAkQjRMhCiADQdAAaiAD +QTBqKQMANwMAIAMgCDYCRCADIAY2AkAgAyAKNgJgIAMgEDYCXCADIA42AlggAyADKQMoNwNIIAMg +HTcDOAJAIB1CAlIEQCAKDQEgA0EgaiADQcQAaiIIQRhqKAIANgIAIANBGGogCEEQaikCADcDACAD +QRBqIAhBCGopAgA3AwAgAyAIKQIANwMIDAsLIApFDQkgA0HgAGoQ3x0MCQsgA0E4ahDJQkICIR0g +CiEGDAkLIAMoAkAhECADQfAAahCLQSADIBA2AnggAyAINgJ0QQEhCiADQQE2AnBBACEODAALAAsg +A0EFNgI4IAIgA0E4ahCAMSEGDAILIANBGDYCOCAJIANBOGoQgDELIQYgC0ICNwMAIAsgBjYCCAwG +CyADQfAAahCQRQtCAiEdCyAJIAktACRBAWo6ACQgCRCfDCECIANB1wBqIANBJmotAAA6AAAgAyAM +OgBUIAMgHjcCTCADIAo2AkggAyAQNgJEIAMgBjYCQCADIAI2AmAgAyAONgJcIAMgCDYCWCADIAMv +ASQ7AFUgAyAdNwM4AkAgHUICUQRAIAINAQwCCyACRQRAIANBIGogA0HEAGoiCEEYaigCADYCACAD +QRhqIAhBEGopAgA3AwAgA0EQaiAIQQhqKQIANwMAIAMgCCkCADcDCAwDCyADQThqEMlCQgIhHSAC +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 +IAMgCCkCADcDCAwLCyALRQ0JIANB4ABqEN8dDAkLIANBOGoQxkJCAiEdIAshBAwJCyADKAJAIQwg +A0HwAGoQi0EgAyAMNgJ4IAMgCDYCdEEBIQsgA0EBNgJwQQAhDgwACwALIANBBTYCOCAJIANBOGoQ +gDEhBAwCCyADQRg2AjggAiADQThqEIAxCyEEIApCAjcDACAKIAQ2AggMBgsgA0HwAGoQkEULQgIh +HQsgAiACLQAkQQFqOgAkIAIQnwwhCSADQdcAaiADQSZqLQAAOgAAIAMgEDoAVCADIB43AkwgAyAL +NgJIIAMgDDYCRCADIAQ2AkAgAyAJNgJgIAMgDjYCXCADIAg2AlggAyADLwEkOwBVIAMgHTcDOAJA +IB1CAlEEQCAJDQEMAgsgCUUEQCADQSBqIANBxABqIghBGGooAgA2AgAgA0EYaiAIQRBqKQIANwMA +IANBEGogCEEIaikCADcDACADIAgpAgA3AwgMAwsgA0E4ahDGQkICIR0gCSEEDAILIANB4ABqEN8d +C0ICIR0LIB1CAlENACAKIAMpAwg3AgwgCiAENgIIIAogHTcDACAKQSRqIANBIGooAgA2AgAgCkEc +aiADQRhqKQMANwIAIApBFGogA0EQaikDADcCAAwBCyACIAQQvFIhBCAKQgI3AwAgCiAENgIICyAD +QZABaiQADAELIApCAjcDACAKIAQ2AggLIAUoAmAhBCAFKQNYIh1CAlIEQCAFQagBaiIIIBFBGGoo +AgA2AgAgBUGgAWoiCyARQRBqKQIANwMAIAVBmAFqIgkgEUEIaikCADcDACAFIBEpAgA3A5ABIAVB +MGoQuUMgDSAFKQOQATcCACANQQhqIAkpAwA3AgAgDUEQaiALKQMANwIAIA1BGGogCCgCADYCACAF +IAQ2AjggBSAdNwMwDAoLDAgLIAVBBGoQrD8iBEUNCAwHCyAFKAIMIgRBgICAgHhGIgsNASAFIAUp +AhA3AogBIAUgBDYChAECQAJAAkACQAJAAkAgBgRAIAUgEjYCtAEgBSAGNgKwASAFQdgAaiERIwBB +gAFrIgokACAKQQhqIgQgBiASEKc5IApBIGoiCCAEEMktIApB5ABqIQ5BACEMQQAhBEEAIQ1BACEJ +QQAhEEEAIRJBACEWIwBB8ABrIgIkACACIAgQvBYCQAJAAkACQAJAAkACfwJAAn8CQAJAAkACQAJA +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 +WCACIAc2ApgBIAIgHzcCjAEgAiARNgKEASACIBg2AoABIAIgEjYCfCACIBA2AnggAiAENgJ0IAIg +CzYCcCACIAIpAzg3A2AgAiAKNgKIAQJAIApBA0YEQCAHDQEMAgsgB0UEQCACQQxqIAJB2ABqQQRy +QSwQzU8aIAJBCGogAkGMAWoiBEEIaigCADYCACACIAQpAgA3AwAMAwsgAkHYAGoQuDtBAyEKIAch +BgwCCyACQZgBahDfHQtBAyEKCyAKQQNGDQAgCUEEaiACQQxqQSwQzU8aIAkgCjYCMCAJIAY2AgAg +CUE8aiACQQhqKAIANgIAIAkgAikDADcCNAwBCyAMIAYQvFIhBCAJQQM2AjAgCSAENgIACyACQYAC +aiQAAkAgAygCsAFBA0cEQCADQUBrIANBgAFqQcAAEM1PGiADQRhqENUjIgRFBEAgFyADQUBrQcAA +EM1PGgwCCyAXQQM2AjAgFyAENgIAIANBQGsQuDsMAQsgF0EDNgIwIBcgAygCgAE2AgALIANBGGoQ +iD8gA0HAAWokACAFKAKwASEGIAUoAuABIgRBA0YNASAFQfAAakEEciAFQbABakEEckEsEM1PGiAF +QawBaiAFQewBaigCADYCACAFIAUpAuQBNwKkASAFIAQ2AqABIAUgBjYCcCAFQfABahD6PiAVRQ0C +IAUgGzYC9AEgBSAVNgLwASAaRQ0EIAUgHDYCtAEgBSAaNgKwASAhUEUNA0HNx8UAQRAQ8B8hBCAI +QgI3AwAgCCAENgIIIAVBsAFqEPo+DAULQbjHxQBBBxDwHyEEIAhCAjcDACAIIAQ2AggMCAsgBhDa +CyEEIAhCAjcDACAIIAQ2AgggBUHwAWoQ+j4MBwtBxcfFAEEIEPAfIQQgCEICNwMAIAggBDYCCAwD +CwJ/IB5CAlEEQEIAIR4gBUGFAmpCADcAACAFQgA3A4ACQQAMAQsgBUGIAmogHUEQaikDADcDACAF +QYACaiAdQQhqKQMANwMAIAUgHSkDADcD+AEgBSgCXCEGIAUoAlgLIQQgCEEoaiAFQfAAakHAABDN +TxogCCAjNwN4IAggHDYCdCAIIBo2AnAgCCAbNgJsIAggFTYCaCAIIAY2AiQgCCAENgIgIAggHjcD +ACAIQRhqIAVBiAJqKQMANwMAIAhBEGogBUGAAmopAwA3AwAgCCAFKQP4ATcDCCAFQeQAahCIPwwM +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 +CGopAgA3AwAgAiAGKQIANwMIDAoLIAlFDQggAkHwAGoQ3x0MCAsgAkHIAGoQtDtBAyEKIAkhBAwI +CyACQRg2AkggCCACQcgAahCAMQshBCAPQQM2AgAgDyAENgIEDAgLIAIoAkwhBAsgAkGIAWoQkEUL +IAJBtAFqEPo+C0EDIQoLIAggCC0AJEEBajoAJCAIEJ8MIQkgAkHcAGogAkEwaigCADYCACACIBE2 +AlAgAiAENgJMIAIgCTYCcCACIAM2AmwgAiAGNgJoIAIgFDYCZCACIAw2AmAgAiACKQMoNwJUIAIg +CjYCSAJAIApBA0YEQCAJDQEMAgsgCUUEQCACQSBqIAJB0ABqIgZBGGopAgA3AwAgAkEYaiAGQRBq +KQIANwMAIAJBEGogBkEIaikCADcDACACIAYpAgA3AwgMAwsgAkHIAGoQtDtBAyEKIAkhBAwCCyAC +QfAAahDfHQtBAyEKCyAKQQNGDQAgDyACKQMINwIIIA8gBDYCBCAPIAo2AgAgD0EgaiACQSBqKQMA +NwIAIA9BGGogAkEYaikDADcCACAPQRBqIAJBEGopAwA3AgAMAQsgCCAEELxSIQQgD0EDNgIAIA8g +BDYCBAsgAkHAAWokAAJAIA4oAmhBA0cEQCAOQUBrIA5B6ABqQSgQzU8aIA5BGGoQ1SMiBEUEQCAY +IA5BQGtBKBDNTxoMAgsgGEEDNgIAIBggBDYCBCAOQUBrELQ7DAELIBggDigCbDYCBCAYQQM2AgAL +IA5BGGoQiD8gDkGQAWokACAFKAKYASIEQQNGDQEgBUGAAWogBUGoAWopAgA3AgAgBUGIAWogBUGw +AWopAgA3AgAgBUGQAWogBUG4AWopAgA3AgAgBSAFKQKgATcCeCAFIAUoApwBNgJ0IAUgBDYCcCAF +QcABahD6PiATRQ0CIAUgGjYCxAEgBSATNgLAASAZRQ0EIAUgGzYCnAEgBSAZNgKYASAhUEUNA0HN +x8UAQRAQ8B8hBCAHQgI3AwAgByAENgIIIAVBmAFqEPo+DAULQbjHxQBBBxDwHyEEIAdCAjcDACAH +IAQ2AggMCAsgBSgCnAEQ2gshBCAHQgI3AwAgByAENgIIIAVBwAFqEPo+DAcLQcXHxQBBCBDwHyEE +IAdCAjcDACAHIAQ2AggMAwsCfyAfQgJRBEBCACEfIAVB1QFqQgA3AAAgBUIANwPQAUEADAELIAVB +2AFqIBxBEGopAwA3AwAgBUHQAWogHEEIaikDADcDACAFIBwpAwA3A8gBIAUoAlwhBCAFKAJYCyEG +IAdBKGogBUHwAGpBKBDNTxogByAiNwNgIAcgGzYCXCAHIBk2AlggByAaNgJUIAcgEzYCUCAHIAQ2 +AiQgByAGNgIgIAcgHzcDACAHQRhqIAVB2AFqKQMANwMAIAdBEGogBUHQAWopAwA3AwAgByAFKQPI +ATcDCCAFQeQAahCIPwwMC0G/x8UAQQYQ8B8hBCAHQgI3AwAgByAENgIICyAFQcABahD6PgsgE0Uh +EyAFQfAAahCwOEEADAMLIAUoApwBIQQgB0ICNwMAIAcgBDYCCAwFC0HRwcUAQQQQ8B8hBCAHQgI3 +AwAgByAENgIIQQEhE0EBIQQMAgtBASETQQELIQQgBUHkAGoQiD8LQQAMAwsgBSkDoAEhIkIBISEM +AQsLQQEhE0EBIQRBASEQQQELIAVBOGoQq0MgEwRAIAVBMGoQkEULIAQEQCAFQShqEJBFCyAQBEAg +BUEgahCQRQtFDQAgBUEUahD7QAsgBUHgAWokACABIAEtACRBAWo6ACQgDSABEI0TIgY2AnAgDSkD +CCIfQgJSBEAgBkUNAiANQQhqEKk7IAYhBAwBCyANKAIQIQQgBkUNACANQfAAahDfHQsgASAEELxS +IQEgAEICNwMAIAAgATYCCAwCCyANKAIQIQEgAEEMaiANQRRqQdwAEM1PGiAAIAE2AgggACAfNwMA +DAELIA1BGDYCCCABIA1BCGoQgDEhASAAQgI3AwAgACABNgIICyANQYABaiQAC+8pAht/BH4jAEHg +AGsiCyQAIAsgARC8FgJAAkACfyALLQAARQRAIAstAAENAiALQQU2AgggASALQQhqEIAxDAELIAso +AgQLIQEgAEICNwMAIAAgATYCCAwBCwJAAkACQCALLQACQfsARwRAIAEgC0HfAGpBpLDAABCGBSED +DAELIAEgAS0AJEEBayIDOgAkIANB/wFxRQ0CIAEQvkEgC0EIaiEHIwBB0AFrIgQkACAEQQE6ABAg +BCABNgIMIARBgICAgHg2AhQgBEEANgIgIARBADYCKCAEQQA2AjAgBEICNwM4IARBxABqIRAgBEFA +ayEXIARBjAFqIRZCAiEdAkACfwNAIARBgAFqIARBDGoQiAcCQAJAAkACfwJAAkAgBC0AgAFFBEAg +BC0AgQEiA0EHRwRAAkACQAJAAkACQAJAAkAgA0EBaw4GAQIDBAUGAAsgBCgCFEGAgICAeEcEQEHR +wcUAQQQQ8R8hAwwOCyAEQYABaiAEQQxqEJ05IAQoAoQBIQMgBCgCgAEiCEGAgICAeEcEQCAEKAKI +ASEGIARBFGoQ+0AgBCAGNgIcIAQgAzYCGCAEIAg2AhQMDwsMDQsgEgRAQbjHxQBBBxDxHyEDDA0L +IARBgAFqIARBDGoQqDggBCgCgAEiEgRAIAQoAoQBIREgBEEgahCQRSAEIBE2AiQgBCASNgIgDA4L +IAQoAoQBIQMMDAsgDgRAQcXHxQBBCBDxHyEDDAwLIARBgAFqIARBDGoQnjkgBCgCgAEiDgRAIAQo +AoQBIRQgBEEoahCQRSAEIBQ2AiwgBCAONgIoDA0LIAQoAoQBIQMMCwsgEwRAQb/HxQBBBhDxHyED +DAsLIARBgAFqIARBDGoQmjkgBCgCgAEiEwRAIAQoAoQBIRUgBEEwahCQRSAEIBU2AjQgBCATNgIw +DAwLIAQoAoQBIQMMCgsgH1BFBEBBzcfFAEEQEPEfIQMMCgsgBEGAAWogBEEMahDYOCAEKAKAAUUN +CCAEKAKEASEDDAkLIB1CAlIEQEHdx8UAQQgQ8R8hAwwJCyAEQYABaiEJAkAgBEEMaigCACIFEOcW +IgNFBEBBACEMQQAhCEEAIQ1CACEeQQAhD0EAIQpBACEYIwBBkAFrIgIkACACQQhqIAUQvBYCQAJA +AkACQAJAAkACQAJ/AkACQAJAAkACfyACLQAIRQRAIAItAAlFBEAgAkEFNgI4IAUgAkE4ahCAMQwC +CyACLQAKIgNB2wBGDQIgA0H7AEYNAyAFIAJBjwFqQdS0wAAQhgUhAwwMCyACKAIMCyEDIAlCAjcD +ACAJIAM2AggMCwsgBSAFLQAkQQFrIgM6ACQgA0H/AXEEQCAFEL5BIAJBAToAbCACIAU2AmggAkE4 +aiACQegAahCfCCACKQM4Ih1CA1IEQCAdQgJRBEBBAEH0kMAAQayGwAAQ3hchA0ICIR0MCQsgAigC +RCEPIAIoAkAhAyACQThqIAJB6ABqEK4IIAIoAjgiBkECRgRAIAIoAjwhAwwICyAGQQFHBEBBAUH0 +kMAAQayGwAAQ3hchAwwICyACKAI8IQggAiACKAJAIg02AnQgAiAINgJwIAJB/ABqIAIoAmgiBhC8 +FgJ+AkACQCACLQB8RQRAIAItAH1FBEAgAkECNgI4IAYgAkE4ahCAMSEDDAsLAkAgAi0AfiIMQSxH +BEAgDEHdAEYNAyACLQBsDQEgAkEHNgI4IAYgAkE4ahCAMSEDDAwLIAItAGwNACAGEL5BIAJBOGog +BhC8FiACLQA4BEAgAigCPCEDDAwLIAItADlFDQggAi0AOiEMCyAMQf8BcUHdAEYEQCACQRU2Ajgg +BiACQThqEIAxIQMMCwsgAkE4aiAGEOcMIAIoAjghDCACLQBEIgpBAkcNAiAMIQMMCgsgAigCgAEh +AwwJC0EAIQxCAAwBCyACQY4BaiACQccAai0AADoAACACIAIvAEU7AYwBIAIpAjwLIR4gAkEmaiAC +QY4Bai0AADoAACACIAIvAYwBOwEkDAgLIAIoAkAhAwwGCyACQRg2AjggBSACQThqEIAxDAMLIAUg +BS0AJEEBayIDOgAkIANB/wFxRQ0BIAUQvkEgAkEBOgBsIAIgBTYCaCACQQA2AnAgAkECOgCIASAC +QfQAaiEbIAJBiQFqIRkgAkHFAGohGkECIQZBASENQgIhHQNAIAJBOGogAkHoAGoQkQYCQAJ+AkAC +QAJAAkAgAi0AOEUEQCACLQA5IgNBBEcEQAJAAkACQAJAIAMOAwECAwALIAJB6ABqEKw/IgNFDQsM +CAsgHUICUgRAQfiPwABBAxDxHyEDDAgLIAJBOGogAkHoAGoQnDggAikDOCIdQgJSBEAgAigCRCEK +IAIoAkAhGAwLCyACKAJAIQMMBwsgDUEBcUUEQEEBIQxB+4/AAEEOEPEfIQMMBwsgAkE4aiACQegA +ahCSOCACKAI8IQggAigCOEUNCEEAIQwgCCEDDAYLIAZBAkYNBEGJkMAAQQsQ8R8hAwwFC0IAIBit +IAqtQiCGhCAdQgJRIgwbIR4gDUEBcSEDIAZBAkYNASACQUBrIAJBhAFqKQIANwMAIAIgAikCfDcD +OAwCCyACKAI8IQMMAwsgAkIANwA9IAJCADcDOAtBACAIIAMbIQ0gAkEwaiACQUBrKQMANwMAIAIg +AikDODcDKCAeQiCIpyEIIB6nIQNCACAdIAwbDAILIAIoAmgiBhDnFiIDDQAgAkE4aiAGEOcMIAIo +AjghAyACLQBEIgZBAkYNACACQY4BaiIcIBpBAmotAAA6AAAgAiAaLwAAOwGMASACKQI8IR4gAkH8 +AGoQ20IgGSACLwGMATsAACAZQQJqIBwtAAA6AAAgAiAGOgCIASACIB43AoABIAIgAzYCfAwDCyAC +QfwAahDbQiAMBEAgGxCQRQtCAgshHSAFIAUtACRBAWo6ACQgBRCNEyEGIAJB0ABqIAJBMGopAwA3 +AwAgAiAINgJEIAIgAzYCQCACIAY2AmAgAiAPNgJcIAIgDTYCWCACIAIpAyg3A0ggAiAdNwM4AkAg +HUICUgRAIAYNASACQSBqIAJBxABqIghBGGooAgA2AgAgAkEYaiAIQRBqKQIANwMAIAJBEGogCEEI +aikCADcDACACIAgpAgA3AwgMCwsgBkUNCSACQeAAahDfHQwJCyACQThqEMVCQgIhHSAGIQMMCQsg +AigCQCEPIAJB8ABqEItBIAIgDzYCeCACIAg2AnRBASEMIAJBATYCcEEAIQ0MAAsACyACQQU2Ajgg +BiACQThqEIAxIQMMAgsgAkEYNgI4IAUgAkE4ahCAMQshAyAJQgI3AwAgCSADNgIIDAYLIAJB8ABq +EJBFC0ICIR0LIAUgBS0AJEEBajoAJCAFEJ8MIQYgAkHXAGogAkEmai0AADoAACACIAo6AFQgAiAe +NwJMIAIgDDYCSCACIA82AkQgAiADNgJAIAIgBjYCYCACIA02AlwgAiAINgJYIAIgAi8BJDsAVSAC +IB03AzgCQCAdQgJRBEAgBg0BDAILIAZFBEAgAkEgaiACQcQAaiIIQRhqKAIANgIAIAJBGGogCEEQ +aikCADcDACACQRBqIAhBCGopAgA3AwAgAiAIKQIANwMIDAMLIAJBOGoQxUJCAiEdIAYhAwwCCyAC +QeAAahDfHQtCAiEdCyAdQgJRDQAgCSACKQMINwIMIAkgAzYCCCAJIB03AwAgCUEkaiACQSBqKAIA +NgIAIAlBHGogAkEYaikDADcCACAJQRRqIAJBEGopAwA3AgAMAQsgBSADELxSIQMgCUICNwMAIAkg +AzYCCAsgAkGQAWokAAwBCyAJQgI3AwAgCSADNgIICyAEKAKIASEDIAQpA4ABIh1CAlIEQCAEQfgA +aiIIIBZBGGooAgA2AgAgBEHwAGoiBiAWQRBqKQIANwMAIARB6ABqIgwgFkEIaikCADcDACAEIBYp +AgA3A2AgBEE4ahC2QyAQIAQpA2A3AgAgEEEIaiAMKQMANwIAIBBBEGogBikDADcCACAQQRhqIAgo +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 +QQhqIAcpAwA3AgAgEUEQaiALKQMANwIAIBFBGGogCCgCADYCACAEIAU2AjggBCAdNwMwDAoLIAZC +AjcDACAGIAU2AggMCAsgBEEEahCsPyIFRQ0IIAZCAjcDACAGIAU2AggMBwsgBCgCDCIFQYCAgIB4 +RiILDQEgBCAEKQIQNwKoASAEIAU2AqQBAkACQAJAAkACQAJAIAMEQCAEIA82ArQBIAQgAzYCsAEg +BEH4AGohESMAQfAAayIKJAAgCkEIaiIIIAMgDxCnOSAKQSBqIgUgCBDJLSAKQdwAaiEOQQAhCUEA +IQxBACEIQQAhD0EAIRIjAEHQAGsiAiQAIAJBQGsgBRC8FgJAAkACQAJAAn8CQAJAAkACQAJ/IAIt +AEBFBEAgAi0AQUUEQCACQQU2AgwgBSACQQxqEIAxDAILIAItAEIiA0HbAEYNAiADQfsARg0DIAUg +AkHPAGpBxLzAABCGBSEDDAkLIAIoAkQLIQMgDkGAgICAeDYCACAOIAM2AgQMCAsgBSAFLQAkQQFr +IgM6ACQCQCADQf8BcQRAIAUQvkEgAkEBOgAwIAIgBTYCLCACQQxqIAJBLGoQ6wcCQAJAIAIoAgwi +CUGBgICAeEYEQCACKAIQIQMMAQsgCUGAgICAeEYEQEEAQeyYwABBrIbAABDeFyEDDAELIAIoAhAh +AyACIAIoAhQiDDYCSCACIAM2AkQgAiAJNgJAIAJBDGogAkEsahD6BwJ/IAIoAgxFBEAgAigCECII +RQRAQQFB7JjAAEGshsAAEN4XDAILIAJBFGooAgAhEgwDCyACKAIQCyEDIAJBQGsQiD8LQYCAgIB4 +IQkLIAUgBS0AJEEBajoAJCACIAUQnwwiBzYCICACIBI2AhwgAiAINgIYIAIgDDYCFCACIAM2AhAg +AiAJNgIMIAlBgICAgHhHDQEgBw0DDAYLIAJBGDYCDCAFIAJBDGoQgDEMBAsgB0UEQCACQQhqIAJB +FGoiCEEIaigCADYCACACIAgpAgA3AwAMBgsgAkEMahCyR0GAgICAeCEJIAchAwwFCyAFIAUtACRB +AWsiAzoAJCADQf8BcUUNASAFEL5BIAJBAToAKCACIAU2AiQgAkGAgICAeDYCLCACQQA2AjggBSED +A0AgAkFAayADELwWAkACfwJAAkACQAJAAn8CQCACLQBADQACfwJAAn8gAi0AQUUEQCACQQM2Agwg +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 +AgA2AgAgAiAGNgJwIAIgAzYCuAEgAiAjNwKsASACIBQ2AqQBIAIgETYCoAEgAiALNgKcASACIBY2 +ApgBIAIgFzYClAEgAiAKNgKQASACIAc2AowBIAIgBDYCiAEgAiACKQNANwJ0IAIgDDYCqAECQCAM +QQNGBEAgAw0BDAILIANFBEAgAkEMaiACQfAAakEEckE0EM1PGiACQQhqIAJBrAFqIgRBCGooAgA2 +AgAgAiAEKQIANwMADAMLIAJB8ABqEK43QQMhDCADIQYMAgsgAkG4AWoQ3x0LQQMhDAsgDEEDRg0A +IBNBBGogAkEMakE0EM1PGiATIAw2AjggEyAGNgIAIBNBxABqIAJBCGooAgA2AgAgEyACKQMANwI8 +DAELIAkgBhC8UiEEIBNBAzYCOCATIAQ2AgALIAJBsAJqJAACQCAQKALAAUEDRwRAIBBBQGsgEEGI +AWpByAAQzU8aIBBBGGoQ1SMiBEUEQCAYIBBBQGtByAAQzU8aDAILIBhBAzYCOCAYIAQ2AgAgEEFA +axCuNwwBCyAYQQM2AjggGCAQKAKIATYCAAsgEEEYahCIPyAQQdABaiQAIAUoArgBIQYgBSgC8AEi +BEEDRg0BIAVB8ABqQQRyIAVBuAFqQQRyQTQQzU8aIAVBtAFqIAVB/AFqKAIANgIAIAUgBSkC9AE3 +AqwBIAUgBDYCqAEgBSAGNgJwIAVBgAJqEPo+IBVFDQIgBSAbNgKEAiAFIBU2AoACIBpFDQQgBSAc +NgK8ASAFIBo2ArgBICVQRQ0DQc3HxQBBEBDwHyEEIAhCAjcDACAIIAQ2AgggBUG4AWoQ+j4MBQtB +uMfFAEEHEPAfIQQgCEICNwMAIAggBDYCCAwICyAGENoLIQQgCEICNwMAIAggBDYCCCAFQYACahD6 +PgwHC0HFx8UAQQgQ8B8hBCAIQgI3AwAgCCAENgIIDAMLAn8gIkICUQRAQgAhIiAFQZUCakIANwAA +IAVCADcDkAJBAAwBCyAFQZgCaiAdQRBqKQMANwMAIAVBkAJqIB1BCGopAwA3AwAgBSAdKQMANwOI +AiAFKAJcIQYgBSgCWAshBCAIQShqIAVB8ABqQcgAEM1PGiAIICY3A4ABIAggHDYCfCAIIBo2Angg +CCAbNgJ0IAggFTYCcCAIIAY2AiQgCCAENgIgIAggIjcDACAIQRhqIAVBmAJqKQMANwMAIAhBEGog +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 +QQAhBEEAIQNBACEKQQAhC0EAIQ1BACESQQAhFkEAIRdBACEYIwBBkAFrIgIkACACIAkQvBYCQAJA +AkACQAJAAkACQAJAAn8CQAJAAkACQAJ/AkACfwJAAkACQAJAAkACQAJAAkACQAJAAn8gAi0AAEUE +QCACLQABRQRAIAJBBTYCICAJIAJBIGoQgDEMAgsgAi0AAiIGQdsARg0CIAZB+wBGDQMgCSACQY8B +akHUuMAAEIYFIQgMGgsgAigCBAshBCATQQM2AgAgEyAENgIEDBkLIAkgCS0AJEEBayIGOgAkIAZB +/wFxBEAgCRC+QSACQQE6AHggAiAJNgJ0IAJBIGogAkH0AGoQ+wcgAigCIA0FIAIoAiQiBkUEQEEA +QayWwABBrIbAABDeFyEIDBULIAIgAkEoaigCACILNgKAASACIAY2AnwgAkEgaiACQfQAahD7ByAC +KAIgDQQgAigCJCIDRQRAQQFBrJbAAEGshsAAEN4XIQgMFAsgAiACQShqKAIAIgQ2AogBIAIgAzYC +hAEgAkEgaiACQfQAahD7ByACKAIgDQMgAigCJCIKRQRAQQJBrJbAAEGshsAAEN4XIQgMEwsgAiAC +QShqKAIAIg02AmwgAiAKNgJoIAJBIGogAkH0AGoQ7QcCfyACKAIgIgxBBEYEQCACKAIkDAELIAxB +A0cNA0EDQayWwABBrIbAABDeFwshCCACQegAahD6PgwSCyACQRg2AiAgCSACQSBqEIAxDBALIAkg +CS0AJEEBayIGOgAkIAZB/wFxRQ0OIAkQvkEgAkEBOgBMIAIgCTYCSCACQQA2AlAgAkEANgJYIAJB +ADYCYCACQQM2AmggCSEGQQMhDAJAA0AgAkGEAWogBhC8FgJ/AkAgAi0AhAENAAJ/IAItAIUBRQRA +IAJBAzYCICAGIAJBIGoQgDEMAQsCQAJAAkACQAJAAkACQCACLQCGASIOQSxHBEAgDkH9AEcNAUEF +IQtBAAwKCyACLQBMDQEgBhC+QSACQSBqIAYQvBYgAi0AIARAIAIoAiQMCAsgAi0AIUUNAyACLQAi +IQ4MAgsgAi0ATEUNBQsgAkEAOgBMCyAOQSJGDQEgDkH9AEYNAiACQRE2AiAMEAsgAkEFNgIgDA8L +IAYQvkEgBkEANgIIIAJBIGogBkEMaiAGELsIIAIoAiQhBiACKAIgQQJGBEAgBiEEQQEMBQsgAkGE +AWohAwJAAkACQCAGIAIoAigiDkHY9cUAQQcQgDxFBEAgBiAOQd/1xQBBCBCAPA0BIAYgDkHn9cUA +QREQgDwNAiAGIA5B+PXFAEEHEIA8RQRAIANBBDoAAQwECyADQQM6AAEMAwsgA0EAOgABDAILIANB +AToAAQwBCyADQQI6AAELIANBADoAACACLQCEAQ0DIAItAIUBIQtBAAwECyACQRU2AiAMDQsgAkEI +NgIgIAYgAkEgahCAMQshBEEBDAELIAIoAogBIQRBAQtBACEOQQEhAwRAIAQhCAwMCwJAAkACQAJA +AkACQAJAIAtB/wFxDgYBAgMEAAgACyACQcgAahCsPyIGRQ0EIAYhCAwRCyAKBEBBgY3AAEEHEPEf +IQgMEQsgAkEgaiACQcgAahCgOCACKAIgIgoEQCACKAIkIRYgAkHQAGoQkEUgAiAWNgJUIAIgCjYC +UAwECyACKAIkIQhBACEKDA0LIA0EQEGIjcAAQQgQ8R8hCAwQCyACQSBqIAJByABqEKA4IAIoAiAi +DQRAIAIoAiQhFyACQdgAahCQRSACIBc2AlwgAiANNgJYDAMLIAIoAiQhCEEAIQ0MDAsgEgRAQeiV +wABBERDxHyEIDA8LIAJBIGogAkHIAGoQoDggAigCICISBEAgAigCJCEYIAJB4ABqEJBFIAIgGDYC +ZCACIBI2AmAMAgsgAigCJCEIQQAhEgwLCyAMQQNHBEBBASEGQZCNwABBBxDxHyEIDBALIAJBIGog +AkHIAGoQoTggAigCJCEIIAIoAiAiDEEDRg0BIAIoAighHCACQegAahCvQiACIBw2AnAgAiAINgJs +IAIgDDYCaAsgAigCSCEGDAELC0EBIQYMDQsgCkEARyEOIAohCyAKRQ0EDAULIAIoAighEiACKAIk +IQgMEgsgAigCJCEIDA4LIAIoAiQhCAwOCyACKAIkIQgMDgsgAkEgakGBjcAAQQcQ8DEgAigCICIL +BEAgAigCJCEWDAELIAIoAiQMAwsgAiAWNgJ4IAIgCzYCdAJ/AkACQAJAIA0iA0UEQCACQSBqQYiN +wABBCBDwMSACKAIgIgNFDQEgAigCJCEXCyACIBc2AoABIAIgAzYCfCASIgRFBEAgAkEgakHolcAA +QREQ8DEgAigCICIERQ0CIAIoAiQhGAsgAiAYNgKIASACIAQ2AoQBIAxBA0cNC0GQjcAAQQcQ8B8h +CCACQYQBahD6PgwCCyACKAIkIQhBAQwCCyACKAIkIQgLIAJB/ABqEPo+IBJFCyEDIAJB9ABqEPo+ +IA1FDAQLQQEMAwtBACEOIAYgAkEgahCAMQshCEEBIQMLQQELIQYgDEEDRg0BCyACQegAahC/Pwsg +EkUgA0VyRQRAIAJB4ABqEPo+CyAGIA1BAEdxBEAgAkHYAGoQ+j4LIApFIA5yRQRAIAJB0ABqEPo+ +C0EDIQwLIAkgCS0AJEEBajoAJCACIAkQjRMiBjYCRCACIBg2AkAgAiAENgI8IAIgFzYCOCACIAM2 +AjQgAiAWNgIwIAIgCzYCLCACIBw2AiggAiAINgIkIAIgDDYCIAJAIAxBA0cEQCAGDQEgAkEYaiAC +QShqIgRBGGooAgA2AgAgAkEQaiAEQRBqKQIANwMAIAJBCGogBEEIaikCADcDACACIAQpAgA3AwAM +CQsgBkUNByACQcQAahDfHQwHCyACQSBqEKo7QQMhDCAGIQgMBwsgAkEYNgIgIAkgAkEgahCAMQsh +BCATQQM2AgAgEyAENgIEDAcLIAJBhAFqEPo+CyACQfwAahD6PgtBAyEMCyAJIAktACRBAWo6ACQg +AiAJEJ8MIg42AkQgAiANNgJAIAIgCjYCPCACIAQ2AjggAiADNgI0IAIgCzYCMCACIAY2AiwgAiAS +NgIoIAIgCDYCJCACIAw2AiACQCAMQQNGBEAgDg0BDAILIA5FBEAgAkEYaiACQShqIgRBGGooAgA2 +AgAgAkEQaiAEQRBqKQIANwMAIAJBCGogBEEIaikCADcDACACIAQpAgA3AwAMAwsgAkEgahCqO0ED +IQwgDiEIDAILIAJBxABqEN8dC0EDIQwLIAxBA0YNACATIAIpAwA3AgggEyAINgIEIBMgDDYCACAT +QSBqIAJBGGooAgA2AgAgE0EYaiACQRBqKQMANwIAIBNBEGogAkEIaikDADcCAAwBCyAJIAgQvFIh +BCATQQM2AgAgEyAENgIECyACQZABaiQAAkAgECgCbEEDRwRAIBBByABqIBBB7ABqQSQQzU8aIBBB +IGoQ1SMiBEUEQCAVIBBByABqQSQQzU8aDAILIBVBAzYCACAVIAQ2AgQgEEHIAGoQqjsMAQsgFSAQ +KAJwNgIEIBVBAzYCAAsgEEEgahCIPyAQQZABaiQAIAUoAmAiCEEDRg0BIAVBqAFqIAVB8ABqKQIA +NwIAIAVBsAFqIAVB+ABqKQIANwIAIAVBuAFqIAVBgAFqKAIANgIAIAUgBSkCaDcCoAEgBSAFKAJk +NgKcASAFIAg2ApgBIAVBwAFqEPo+IBRFDQIgBSAaNgLEASAFIBQ2AsABIBlFDQQgBSAbNgJkIAUg +GTYCYCAgUEUNA0HNx8UAQRAQ8B8hBCAHQgI3AwAgByAENgIIIAVB4ABqEPo+DAULQbjHxQBBBxDw +HyEEIAdCAjcDACAHIAQ2AggMCAsgBSgCZBDaCyEEIAdCAjcDACAHIAQ2AgggBUHAAWoQ+j4MBwtB +xcfFAEEIEPAfIQQgB0ICNwMAIAcgBDYCCAwDCwJ/IB5CAlEEQEIAIR4gBUHVAWpCADcAACAFQgA3 +A9ABQQAMAQsgBUHYAWogHUEQaikDADcDACAFQdABaiAdQQhqKQMANwMAIAUgHSkDADcDyAEgBSgC +XCEIIAUoAlgLIQQgB0FAayAFQZgBakEkEM1PGiAHIB43AwAgByAhNwM4IAcgGzYCNCAHIBk2AjAg +ByAaNgIsIAcgFDYCKCAHIAg2AiQgByAENgIgIAcgBSkDyAE3AwggB0EQaiAFQdABaikDADcDACAH +QRhqIAVB2AFqKQMANwMAIAVBjAFqEIg/DAwLQb/HxQBBBhDwHyEEIAdCAjcDACAHIAQ2AggLIAVB +wAFqEPo+CyAURSEUIAVBmAFqEKo7QQAMAwsgBSgCZCEEDAULQdHBxQBBBBDwHyEEIAdCAjcDACAH +IAQ2AghBASEUQQEhBAwCC0EBIRRBAQshBCAFQYwBahCIPwtBAAwDCyAFKQNoISFCASEgDAELCyAH +QgI3AwAgByAENgIIQQEhFEEBIQRBASERQQELIAVBOGoQrUMgFARAIAVBMGoQkEULIAQEQCAFQShq +EJBFCyARBEAgBUEgahCQRQtFDQAgBUEUahD7QAsgBUHgAWokACABIAEtACRBAWo6ACQgDyABEI0T +Igg2AnAgDykDCCIeQgJSBEAgCEUNAiAPQQhqELY7IAghBAwBCyAPKAIQIQQgCEUNACAPQfAAahDf +HQsgASAEELxSIQEgAEICNwMAIAAgATYCCAwCCyAPKAIQIQEgAEEMaiAPQRRqQdwAEM1PGiAAIAE2 +AgggACAeNwMADAELIA9BGDYCCCABIA9BCGoQgDEhASAAQgI3AwAgACABNgIICyAPQYABaiQAC7U4 +Ah9/BH4jAEGQAWsiDSQAIA0gARC8FgJAAkACfyANLQAARQRAIA0tAAENAiANQQU2AgggASANQQhq +EIAxDAELIA0oAgQLIQEgAEICNwMAIAAgATYCCAwBCwJAAkACQCANLQACQfsARwRAIAEgDUGPAWpB +hK/AABCGBSEEDAELIAEgAS0AJEEBayIEOgAkIARB/wFxRQ0CIAEQvkEgDUEIaiEHIwBBgAJrIgUk +ACAFQQE6ABAgBSABNgIMIAVBgICAgHg2AhRBACEEIAVBADYCICAFQQA2AiggBUEANgIwIAVCAjcD +OCAFQcQAaiEMIAVBQGshHCAFQbQBaiEQQgIhIQJAAn8DQAJAIAVBqAFqIAVBDGoQiAcCQAJAAn8C +QAJAIAUtAKgBRQRAIAUtAKkBIgZBB0cEQAJAAkACQAJAAkACQAJAIAZBAWsOBgECAwQFBgALIAUo +AhRBgICAgHhHBEBB0cHFAEEEEPEfIQQgB0ICNwMAIAcgBDYCCAwOCyAFQagBaiAFQQxqEJ05IAUo +AqwBIQYgBSgCqAEiCUGAgICAeEcEQCAFKAKwASEIIAVBFGoQ+0AgBSAINgIcIAUgBjYCGCAFIAk2 +AhQMDwsgB0ICNwMAIAcgBjYCCAwNCyAEBEBBuMfFAEEHEPEfIQQgB0ICNwMAIAcgBDYCCAwNCyAF +QagBaiAFQQxqEKg4IAUoAqgBIgQEQCAFKAKsASERIAVBIGoQkEUgBSARNgIkIAUgBDYCIAwOCyAF +KAKsASEEIAdCAjcDACAHIAQ2AggMDAsgEgRAQcXHxQBBCBDxHyEEIAdCAjcDACAHIAQ2AggMDAsg +BUGoAWogBUEMahCeOSAFKAKoASISBEAgBSgCrAEhGiAFQShqEJBFIAUgGjYCLCAFIBI2AigMDQsg +BSgCrAEhBCAHQgI3AwAgByAENgIIDAsLIBcEQEG/x8UAQQYQ8R8hBCAHQgI3AwAgByAENgIIDAsL +IAVBqAFqIAVBDGoQmjkgBSgCqAEiFwRAIAUoAqwBIRsgBUEwahCQRSAFIBs2AjQgBSAXNgIwDAwL +IAUoAqwBIQQgB0ICNwMAIAcgBDYCCAwKCyAjUEUEQEHNx8UAQRAQ8R8hBCAHQgI3AwAgByAENgII +DAoLIAVBqAFqIAVBDGoQ2DggBSgCqAFFDQggBSgCrAEhBCAHQgI3AwAgByAENgIIDAkLICFCAlIE +QEHdx8UAQQgQ8R8hBCAHQgI3AwAgByAENgIIDAkLIAVBqAFqIQICQCAFQQxqKAIAIgoQ5xYiBkUE +QEEAIQ5BACEJQQAhC0IAISJBACEPQQAhE0EAIRQjAEGQAWsiAyQAIANBCGogChC8FgJAAkACQAJA +AkACQAJAAn8CQAJAAkACQAJ/IAMtAAhFBEAgAy0ACUUEQCADQQU2AjggCiADQThqEIAxDAILIAMt +AAoiBkHbAEYNAiAGQfsARg0DIAogA0GPAWpB5LTAABCGBSEGDAwLIAMoAgwLIQYgAkICNwMAIAIg +BjYCCAwLCyAKIAotACRBAWsiBjoAJCAGQf8BcQRAIAoQvkEgA0EBOgBsIAMgCjYCaCADQThqIANB +6ABqEJ8IIAMpAzgiIUIDUgRAICFCAlEEQEEAQfSQwABBrIbAABDeFyEGQgIhIQwJCyADKAJEIQ8g +AygCQCEGIANBOGogA0HoAGoQrgggAygCOCIIQQJGBEAgAygCPCEGDAgLIAhBAUcEQEEBQfSQwABB +rIbAABDeFyEGDAgLIAMoAjwhCSADIAMoAkAiCzYCdCADIAk2AnAgA0H8AGogAygCaCIIELwWAn4C +QAJAIAMtAHxFBEAgAy0AfUUEQCADQQI2AjggCCADQThqEIAxIQYMCwsCQCADLQB+Ig5BLEcEQCAO +Qd0ARg0DIAMtAGwNASADQQc2AjggCCADQThqEIAxIQYMDAsgAy0AbA0AIAgQvkEgA0E4aiAIELwW +IAMtADgEQCADKAI8IQYMDAsgAy0AOUUNCCADLQA6IQ4LIA5B/wFxQd0ARgRAIANBFTYCOCAIIANB +OGoQgDEhBgwLCyADQThqIAgQ7QwgAygCOCEOIAMtAEQiE0ECRw0CIA4hBgwKCyADKAKAASEGDAkL +QQAhDkIADAELIANBjgFqIANBxwBqLQAAOgAAIAMgAy8ARTsBjAEgAykCPAshIiADQSZqIANBjgFq +LQAAOgAAIAMgAy8BjAE7ASQMCAsgAygCQCEGDAYLIANBGDYCOCAKIANBOGoQgDEMAwsgCiAKLQAk +QQFrIgY6ACQgBkH/AXFFDQEgChC+QSADQQE6AGwgAyAKNgJoIANBADYCcCADQQI6AIgBIANB9ABq +IRggA0GJAWohFSADQcUAaiEWQQIhCEEBIQtCAiEhA0AgA0E4aiADQegAahCRBgJAAkACQAJAAkAC +QCADLQA4RQRAIAMtADkiBkEERwRAAkACQAJAAkAgBg4DAQIDAAsgA0HoAGoQrD8iBkUNCwwICyAh +QgJSBEBB+I/AAEEDEPEfIQYMCAsgA0E4aiADQegAahCcOCADKQM4IiFCAlIEQCADKAJEIRMgAygC +QCEUDAsLIAMoAkAhBgwHCyALQQFxRQRAQQEhDkH7j8AAQQ4Q8R8hBgwHCyADQThqIANB6ABqEJI4 +IAMoAjwhCSADKAI4RQ0IQQAhDiAJIQYMBgsgCEECRg0EQYmQwABBCxDxHyEGDAULQgAgFK0gE61C +IIaEICFCAlEiBhshIiALQQFxIQ4gCEECRg0BIANBQGsgA0GEAWopAgA3AwAgAyADKQJ8NwM4DAIL +IAMoAjwhBgwDCyADQgA3AD0gA0IANwM4C0EAIAkgDhshC0IAICEgBhshISADQTBqIANBQGspAwA3 +AwAgAyADKQM4NwMoICJCIIinIQkgIqchBgwCCyADKAJoIggQ5xYiBg0AIANBOGogCBDtDCADKAI4 +IQYgAy0ARCIIQQJGDQAgA0GOAWoiGSAWQQJqLQAAOgAAIAMgFi8AADsBjAEgAykCPCEiIANB/ABq +EM5CIBUgAy8BjAE7AAAgFUECaiAZLQAAOgAAIAMgCDoAiAEgAyAiNwKAASADIAY2AnwMAwsgA0H8 +AGoQzkIgDgRAIBgQkEULQgIhIQsgCiAKLQAkQQFqOgAkIAoQjRMhCCADQdAAaiADQTBqKQMANwMA +IAMgCTYCRCADIAY2AkAgAyAINgJgIAMgDzYCXCADIAs2AlggAyADKQMoNwNIIAMgITcDOAJAICFC +AlIEQCAIDQEgA0EgaiADQcQAaiIJQRhqKAIANgIAIANBGGogCUEQaikCADcDACADQRBqIAlBCGop +AgA3AwAgAyAJKQIANwMIDAsLIAhFDQkgA0HgAGoQ3x0MCQsgA0E4ahC0QkICISEgCCEGDAkLIAMo +AkAhDyADQfAAahCLQSADIA82AnggAyAJNgJ0QQEhDiADQQE2AnBBACELDAALAAsgA0EFNgI4IAgg +A0E4ahCAMSEGDAILIANBGDYCOCAKIANBOGoQgDELIQYgAkICNwMAIAIgBjYCCAwGCyADQfAAahCQ +RQtCAiEhCyAKIAotACRBAWo6ACQgChCfDCEIIANB1wBqIANBJmotAAA6AAAgAyATOgBUIAMgIjcC +TCADIA42AkggAyAPNgJEIAMgBjYCQCADIAg2AmAgAyALNgJcIAMgCTYCWCADIAMvASQ7AFUgAyAh +NwM4AkAgIUICUQRAIAgNAQwCCyAIRQRAIANBIGogA0HEAGoiCUEYaigCADYCACADQRhqIAlBEGop +AgA3AwAgA0EQaiAJQQhqKQIANwMAIAMgCSkCADcDCAwDCyADQThqELRCQgIhISAIIQYMAgsgA0Hg +AGoQ3x0LQgIhIQsgIUICUQ0AIAIgAykDCDcCDCACIAY2AgggAiAhNwMAIAJBJGogA0EgaigCADYC +ACACQRxqIANBGGopAwA3AgAgAkEUaiADQRBqKQMANwIADAELIAogBhC8UiEGIAJCAjcDACACIAY2 +AggLIANBkAFqJAAMAQsgAkICNwMAIAIgBjYCCAsgBSgCsAEhBiAFKQOoASIhQgJSBEAgBUGIAWoi +CSAQQRhqKAIANgIAIAVBgAFqIgggEEEQaikCADcDACAFQfgAaiIOIBBBCGopAgA3AwAgBSAQKQIA +NwNwIAVBOGoQt0MgDCAFKQNwNwIAIAxBCGogDikDADcCACAMQRBqIAgpAwA3AgAgDEEYaiAJKAIA +NgIAIAUgBjYCQCAFICE3AzgMCgsgB0ICNwMAIAcgBjYCCAwICyAFQQxqEKw/IgZFDQggB0ICNwMA +IAcgBjYCCAwHCyAFKAIUIgZBgICAgHhGIg4NASAFIAUpAhg3AmggBSAGNgJkAkACQAJAAkACQAJA +IAQEQCAFIBE2AuQBIAUgBDYC4AEgBUGoAWohFSMAQbABayIPJAAgD0EIaiIJIAQgERCnOSAPQSBq +IgYgCRDJLSAPQfwAaiEQQQAhA0EAIQhBACEMQQAhCUEAIQpBACETQQAhEUEAIRRBACEWQQAhGEEA +IRkjAEGAAmsiAiQAIAJBDGogBhC8FgJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJ/AkACfwJAAkAC +QAJAAkACQAJ/IAItAAxFBEAgAi0ADUUEQCACQQU2AmggBiACQegAahCAMQwCCyACLQAOIgRB2wBG +DQIgBEH7AEYNAyAGIAJB/wFqQfS9wAAQhgUhBAwVCyACKAIQCyEEIBBBAzYCACAQIAQ2AgQMFAsg +BiAGLQAkQQFrIgQ6ACQgBEH/AXEEQCAGEL5BIAJBAToA+AEgAiAGNgL0ASACQegAaiACQfQBahCn +ByACKAJoIgRBgYCAgHhGDQQgAkHoAWoiCCACQfgAaikCADcDACACIAIpAnA3A+ABIARBgICAgHhG +BEBBAEHEjcAAQayGwAAQ3hchBAwQCyACKAJsIQsgAkG4AWogCCkDADcCACACIAIpA+ABNwKwASAC +IAs2AqwBIAIgBDYCqAEgAkHoAGogAkH0AWoQ+wcgAigCaA0DIAIoAmwiDEUEQEEBQcSNwABBrIbA +ABDeFyEEDA8LIAIgAkHwAGooAgAiAzYCzAEgAiAMNgLIASACQegAaiACQfQBahCuCAJAIAIoAmgi +BEECRgRAIAIoAmwhBAwBCyAEQQFHBEBBAkHEjcAAQayGwAAQ3hchBAwBCyACKAJsIQkgAiACKAJw +Igo2AtgBIAIgCTYC1AEgAkHoAGogAkH0AWoQ7QcCfyACKAJoIgtBBEYEQCACKAJsDAELIAtBA0cN +BEEDQcSNwABBrIbAABDeFwshBCACQdQBahCQRQsgAkHIAWoQ+j4MDgsgAkEYNgJoIAYgAkHoAGoQ +gDEMDAsgBiAGLQAkQQFrIgQ6ACQgBEH/AXFFDQogBhC+QSACQQE6AKQBIAIgBjYCoAEgAkGAgICA +eDYCqAEgAkEANgLAASACQQA2AsgBIAJBAzYC1AEgAkGwAWohHSACQfAAaiEeIAJBzAFqIR8gBiEE +QQMhCwNAIAJB4AFqIAQQvBYCfwJAIAItAOABDQACfyACLQDhAUUEQCACQQM2AmggBCACQegAahCA +MQwBCwJAAkACQAJAAkACQAJAIAItAOIBIgxBLEcEQCAMQf0ARw0BQQUhE0EADAoLIAItAKQBDQEg +BBC+QSACQegAaiAEELwWIAItAGgEQCACKAJsDAgLIAItAGlFDQMgAi0AaiEMDAILIAItAKQBRQ0F +CyACQQA6AKQBCyAMQf8BcSIDQSJGDQEgA0H9AEYNAiACQRE2AmgMCwsgAkEFNgJoDAoLIAQQvkEg +BEEANgIIIAJB6ABqIARBDGogBBC7CCACKAJsIQQgAigCaEECRgRAIAQhCUEBDAULIAJB4AFqIQMC +QAJAAkAgBCACKAJwIgxB2vbFAEEGEIA8RQRAIAQgDEHY9cUAQQcQgDwNASAEIAxB3/XFAEEIEIA8 +DQIgBCAMQfj1xQBBBxCAPEUEQCADQQQ6AAEMBAsgA0EDOgABDAMLIANBADoAAQwCCyADQQE6AAEM +AQsgA0ECOgABCyADQQA6AAAgAi0A4AENAyACLQDhASETQQAMBAsgAkEVNgJoDAgLIAJBCDYCaCAE +IAJB6ABqEIAxCyEJQQEMAQsgAigC5AEhCUEBC0EAIQxBASEDBEAgCSEEDAcLAkACQAJAAkACfwJA +AkACQAJAIBMOBgECAwUABgALIAJBoAFqEKw/IgQNDgwHCyACKAKoAUGAgICAeEcEQEH7jMAAQQYQ +8R8hBAwOCyACQegAaiACQaABahCeOCACKAJsIQQgAigCaCIgQYCAgIB4Rg0NIAJB6AFqIgMgHkEI +aikCADcDACACIB4pAgA3A+ABIAJBqAFqEOVCIB0gAikD4AE3AgAgHUEIaiADKQMANwIAIAIgBDYC +rAEgAiAgNgKoAQwGCyAKBEBBgY3AAEEHEPEfIQQMDQsgAkHoAGogAkGgAWoQoDggAigCaCIKBEAg +AigCbCERIAJBwAFqEJBFIAIgETYCxAEgAiAKNgLAAQwGC0EAIQogAigCbAwBCyAUBEBBASEUQYiN +wABBCBDxHwwLCyACQegAaiACQaABahCSOCACKAJsIRYgAigCaEUNA0EAIRQgFgshBEEBDAsLIAtB +A0cEQEEBIRNBkI3AAEEHEPEfIQQMDAsgAkHoAGogAkGgAWoQoTggAigCbCEIIAIoAmgiC0EDRwRA +IAIoAnAhGSACQdQBahCvQiACIBk2AtwBIAIgCDYC2AEgAiALNgLUAQwDC0EBIRMgCCEEDAwLIAIo +AqgBQYCAgIB4RyIMRQRAQfuMwABBBhDwHyEEDAkLIAJB+ABqIAJBuAFqKQIANwMAIAJB8ABqIAJB +sAFqKQIANwMAIAIgAikCqAE3A2gCQAJ/AkAgCiIDRQRAIAJB4AFqQYGNwABBBxDwMSACKALgASID +RQ0BIAIoAuQBIRELIAIgETYC+AEgAiADNgL0ASACIBg2AuQBIAIgFkEAIBQbIgk2AuABIAtBA0cN +AkGQjcAAQQcQ8B8hBCACQeABahCQRSACQfQBahD6PiAURQwBCyACKALkASEEQQELIQMgAkHoAGoQ +vEcgCkUMCgsgAkHgAGogAkH4AGopAwA3AwAgAkHYAGogAkHwAGopAwA3AwAgAiACKQNoNwNQIAgh +BAwMCyACKAJwIRggAkHIAWoQi0EgAiAYNgLQASACIBY2AswBQQEhFCACQQE2AsgBCyACKAKgASEE +DAALAAsgAigCcCERIAIoAmwhBCACQcgAaiACQbgBaikCADcDACACQUBrIAJBsAFqKQIANwMAIAIg +AikCqAE3AzgMDQsgAigCbCEEDAoLIAIoAmwhBAwKC0EAIQwgBCACQegAahCAMQshBEEBIQMLQQEL +IRMgC0EDRg0BCyACQdQBahC/PwsgFEUgA0VyRQRAIB8QkEULIBMgCkEAR3EEQCACQcABahD6Pgsg +DCACKAKoAUGAgICAeEZyRQRAIAJBqAFqELxHC0EDIQsLIAYgBi0AJEEBajoAJCAGEI0TIQggAkH8 +AGogAkHYAGopAwA3AgAgAkGEAWogAkHgAGopAwA3AgAgAiAZNgJwIAIgBDYCbCACIAg2ApwBIAIg +GDYCmAEgAiAJNgKUASACIBE2ApABIAIgAzYCjAEgAiACKQNQNwJ0IAIgCzYCaAJAIAtBA0cEQCAI +DQEgAkEMaiACQfAAakEsEM1PGgwICyAIRQ0GIAJBnAFqEN8dDAYLIAJB6ABqELI7QQMhCyAIIQQM +BgsgAkEYNgJoIAYgAkHoAGoQgDELIQQgEEEDNgIAIBAgBDYCBAwGCyACQagBahC8RwtBAyELCyAG +IAYtACRBAWo6ACQgBhCfDCEIIAJB/ABqIAJBQGspAwA3AgAgAkGEAWogAkHIAGopAwA3AgAgAiAR +NgJwIAIgBDYCbCACIAg2ApwBIAIgCjYCmAEgAiAJNgKUASACIAM2ApABIAIgDDYCjAEgAiACKQM4 +NwJ0IAIgCzYCaAJAIAtBA0YEQCAIDQEMAgsgCEUEQCACQQxqIAJB8ABqQSwQzU8aDAMLIAJB6ABq +ELI7QQMhCyAIIQQMAgsgAkGcAWoQ3x0LQQMhCwsgC0EDRg0AIBBBCGogAkEMakEsEM1PGiAQIAQ2 +AgQgECALNgIADAELIAYgBBC8UiEEIBBBAzYCACAQIAQ2AgQLIAJBgAJqJAACQCAPKAJ8QQNHBEAg +D0HIAGogD0H8AGpBNBDNTxogD0EgahDVIyIERQRAIBUgD0HIAGpBNBDNTxoMAgsgFUEDNgIAIBUg +BDYCBCAPQcgAahCyOwwBCyAVIA8oAoABNgIEIBVBAzYCAAsgD0EgahCIPyAPQbABaiQAIAUoAqgB +IgRBA0YNASAFKAKsASEGIAVB+ABqIAVBsAFqQSwQzU8aIAUgBjYCdCAFIAQ2AnAgBUHgAWoQ+j4g +EkUNAiAFIBo2AuQBIAUgEjYC4AEgF0UNBCAFIBs2AqwBIAUgFzYCqAEgI1BFDQNBzcfFAEEQEPAf +IQQgB0ICNwMAIAcgBDYCCCAFQagBahD6PgwFC0G4x8UAQQcQ8B8hBCAHQgI3AwAgByAENgIIDAgL +IAUoAqwBENoLIQQgB0ICNwMAIAcgBDYCCCAFQeABahD6PgwHC0HFx8UAQQgQ8B8hBCAHQgI3AwAg +ByAENgIIDAMLAn8gIUICUQRAQgAhISAFQfUBakIANwAAIAVCADcD8AFBAAwBCyAFQfgBaiAcQRBq +KQMANwMAIAVB8AFqIBxBCGopAwA3AwAgBSAcKQMANwPoASAFKAJcIQQgBSgCWAshBiAHQUBrIAVB +8ABqQTQQzU8aIAcgITcDACAHICQ3AzggByAbNgI0IAcgFzYCMCAHIBo2AiwgByASNgIoIAcgBDYC +JCAHIAY2AiAgByAFKQPoATcDCCAHQRBqIAVB8AFqKQMANwMAIAdBGGogBUH4AWopAwA3AwAgBUHk +AGoQiD8MDAtBv8fFAEEGEPAfIQQgB0ICNwMAIAcgBDYCCAsgBUHgAWoQ+j4LIBJFIRIgBUHwAGoQ +sjtBAAwDCyAFKAKsASEEIAdCAjcDACAHIAQ2AggMBQtB0cHFAEEEEPAfIQQgB0ICNwMAIAcgBDYC +CEEBIRJBASEEDAILQQEhEkEBCyEEIAVB5ABqEIg/C0EADAMLIAUpA7ABISRCASEjDAELC0EBIRJB +ASEEQQEhDkEBCyAFQThqELdDIBIEQCAFQTBqEJBFCyAEBEAgBUEoahCQRQsgDgRAIAVBIGoQkEUL +RQ0AIAVBFGoQ+0ALIAVBgAJqJAAgASABLQAkQQFqOgAkIA0gARCNEyIGNgKAASANKQMIIiFCAlIE +QCAGRQ0CIA1BCGoQujsgBiEEDAELIA0oAhAhBCAGRQ0AIA1BgAFqEN8dCyABIAQQvFIhASAAQgI3 +AwAgACABNgIIDAILIA0oAhAhASAAQQxqIA1BFGpB7AAQzU8aIAAgATYCCCAAICE3AwAMAQsgDUEY +NgIIIAEgDUEIahCAMSEBIABCAjcDACAAIAE2AggLIA1BkAFqJAAL4wICA38BfiMAQaABayICJAAg +AiABELwWAkACQAJ/IAItAABFBEAgAi0AAQ0CIAJBBTYCCCABIAJBCGoQgDEMAQsgAigCBAshASAA +QgI3AwAgACABNgIIDAELAkACQAJAIAItAAJB+wBHBEAgASACQZ8BakHkpcAAEIYFIQMMAQsgASAB +LQAkQQFrIgM6ACQgA0H/AXFFDQIgARC+QSACQQhqIAEQswIgASABLQAkQQFqOgAkIAIgARCNEyIE +NgKQASACKQMIIgVCAlIEQCAERQ0CIAJBCGoQvDsgBCEDDAELIAIoAhAhAyAERQ0AIAJBkAFqEN8d +CyABIAMQvFIhASAAQgI3AwAgACABNgIIDAILIAIoAhAhASAAQQxqIAJBFGpB/AAQzU8aIAAgATYC +CCAAIAU3AwAMAQsgAkEYNgIIIAEgAkEIahCAMSEBIABCAjcDACAAIAE2AggLIAJBoAFqJAALqDYC +HX8EfiMAQYABayIMJAAgDCABELwWAkACQAJ/IAwtAABFBEAgDC0AAQ0CIAxBBTYCCCABIAxBCGoQ +gDEMAQsgDCgCBAshASAAQgI3AwAgACABNgIIDAELAkACQAJAIAwtAAJB+wBHBEAgASAMQf8AakGE +qsAAEIYFIQQMAQsgASABLQAkQQFrIgQ6ACQgBEH/AXFFDQIgARC+QSAMQQhqIQcjAEHgAWsiBSQA +IAVBAToAECAFIAE2AgwgBUGAgICAeDYCFCAFQQA2AiAgBUEANgIoIAVBADYCMCAFQgI3AzggBUHE +AGohDiAFQUBrIR0gBUGkAWohD0ICIR8CQAJ/A0AgBUGYAWogBUEMahCIBwJAAkACQAJ/AkACQCAF +LQCYAUUEQCAFLQCZASIEQQdHBEACQAJAAkACQAJAAkACQCAEQQFrDgYBAgMEBQYACyAFKAIUQYCA +gIB4RwRAQdHBxQBBBBDxHyEEDA4LIAVBmAFqIAVBDGoQnTkgBSgCnAEhBCAFKAKYASIKQYCAgIB4 +RwRAIAUoAqABIQggBUEUahD7QCAFIAg2AhwgBSAENgIYIAUgCjYCFAwPCwwNCyAGBEBBuMfFAEEH +EPEfIQQMDQsgBUGYAWogBUEMahCoOCAFKAKYASIGBEAgBSgCnAEhFiAFQSBqEJBFIAUgFjYCJCAF +IAY2AiAMDgsgBSgCnAEhBAwMCyAUBEBBxcfFAEEIEPEfIQQMDAsgBUGYAWogBUEMahCeOSAFKAKY +ASIUBEAgBSgCnAEhGyAFQShqEJBFIAUgGzYCLCAFIBQ2AigMDQsgBSgCnAEhBAwLCyAYBEBBv8fF +AEEGEPEfIQQMCwsgBUGYAWogBUEMahCaOSAFKAKYASIYBEAgBSgCnAEhHCAFQTBqEJBFIAUgHDYC +NCAFIBg2AjAMDAsgBSgCnAEhBAwKCyAhUEUEQEHNx8UAQRAQ8R8hBAwKCyAFQZgBaiAFQQxqENg4 +IAUoApgBRQ0IIAUoApwBIQQMCQsgH0ICUgRAQd3HxQBBCBDxHyEEDAkLIAVBmAFqIQkCQCAFQQxq +KAIAIgIQ5xYiBEUEQEEAIRBBACEKQQAhDUIAISBBACETQQAhC0EAIRkjAEGQAWsiAyQAIANBCGog +AhC8FgJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJ/IAMtAAhFBEAgAy0ACUUEQCADQQU2AjggAiAD +QThqEIAxDAILIAMtAAoiBEHbAEYNAiAEQfsARg0DIAIgA0GPAWpBlLzAABCGBSEEDAwLIAMoAgwL +IQQgCUICNwMAIAkgBDYCCAwLCyACIAItACRBAWsiBDoAJCAEQf8BcQRAIAIQvkEgA0EBOgBsIAMg +AjYCaCADQThqIANB6ABqEJ8IIAMpAzgiH0IDUgRAIB9CAlEEQEEAQfSQwABBrIbAABDeFyEEQgIh +HwwJCyADKAJEIRMgAygCQCEEIANBOGogA0HoAGoQrgggAygCOCIIQQJGBEAgAygCPCEEDAgLIAhB +AUcEQEEBQfSQwABBrIbAABDeFyEEDAgLIAMoAjwhCiADIAMoAkAiDTYCdCADIAo2AnAgA0H8AGog +AygCaCIIELwWAn4CQAJAIAMtAHxFBEAgAy0AfUUEQCADQQI2AjggCCADQThqEIAxIQQMCwsCQCAD +LQB+IhBBLEcEQCAQQd0ARg0DIAMtAGwNASADQQc2AjggCCADQThqEIAxIQQMDAsgAy0AbA0AIAgQ +vkEgA0E4aiAIELwWIAMtADgEQCADKAI8IQQMDAsgAy0AOUUNCCADLQA6IRALIBBB/wFxQd0ARgRA +IANBFTYCOCAIIANBOGoQgDEhBAwLCyADQThqIAgQ4wwgAygCOCEQIAMtAEQiC0ECRw0CIBAhBAwK +CyADKAKAASEEDAkLQQAhEEIADAELIANBjgFqIANBxwBqLQAAOgAAIAMgAy8ARTsBjAEgAykCPAsh +ICADQSZqIANBjgFqLQAAOgAAIAMgAy8BjAE7ASQMCAsgAygCQCEEDAYLIANBGDYCOCACIANBOGoQ +gDEMAwsgAiACLQAkQQFrIgQ6ACQgBEH/AXFFDQEgAhC+QSADQQE6AGwgAyACNgJoIANBADYCcCAD +QQI6AIgBIANB9ABqIREgA0GJAWohCCADQcUAaiESQQIhFUEBIQ1CAiEfA0AgA0E4aiADQegAahCR +BgJAAn4CQAJAAkACQCADLQA4RQRAIAMtADkiBEEERwRAAkACQAJAAkAgBA4DAQIDAAsgA0HoAGoQ +rD8iBEUNCwwICyAfQgJSBEBB+I/AAEEDEPEfIQQMCAsgA0E4aiADQegAahCcOCADKQM4Ih9CAlIE +QCADKAJEIQsgAygCQCEZDAsLIAMoAkAhBAwHCyANQQFxRQRAQQEhEEH7j8AAQQ4Q8R8hBAwHCyAD +QThqIANB6ABqEJI4IAMoAjwhCiADKAI4RQ0IQQAhECAKIQQMBgsgFUECRg0EQYmQwABBCxDxHyEE +DAULQgAgGa0gC61CIIaEIB9CAlEiCBshICANQQFxIQQgFUECRg0BIANBQGsgA0GEAWopAgA3AwAg +AyADKQJ8NwM4DAILIAMoAjwhBAwDCyADQgA3AD0gA0IANwM4C0EAIAogBBshDSADQTBqIANBQGsp +AwA3AwAgAyADKQM4NwMoICBCIIinIQogIKchBEIAIB8gCBsMAgsgAygCaCIVEOcWIgQNACADQThq +IBUQ4wwgAygCOCEEIAMtAEQiFUECRg0AIANBjgFqIhcgEkECai0AADoAACADIBIvAAA7AYwBIAMp +AjwhICADQfwAahDPQiAIIAMvAYwBOwAAIAhBAmogFy0AADoAACADIBU6AIgBIAMgIDcCgAEgAyAE +NgJ8DAMLIANB/ABqEM9CIBAEQCAREJBFC0ICCyEfIAIgAi0AJEEBajoAJCACEI0TIQggA0HQAGog +A0EwaikDADcDACADIAo2AkQgAyAENgJAIAMgCDYCYCADIBM2AlwgAyANNgJYIAMgAykDKDcDSCAD +IB83AzgCQCAfQgJSBEAgCA0BIANBIGogA0HEAGoiCkEYaigCADYCACADQRhqIApBEGopAgA3AwAg +A0EQaiAKQQhqKQIANwMAIAMgCikCADcDCAwLCyAIRQ0JIANB4ABqEN8dDAkLIANBOGoQtUJCAiEf +IAghBAwJCyADKAJAIRMgA0HwAGoQi0EgAyATNgJ4IAMgCjYCdEEBIRAgA0EBNgJwQQAhDQwACwAL +IANBBTYCOCAIIANBOGoQgDEhBAwCCyADQRg2AjggAiADQThqEIAxCyEEIAlCAjcDACAJIAQ2AggM +BgsgA0HwAGoQkEULQgIhHwsgAiACLQAkQQFqOgAkIAIQnwwhCCADQdcAaiADQSZqLQAAOgAAIAMg +CzoAVCADICA3AkwgAyAQNgJIIAMgEzYCRCADIAQ2AkAgAyAINgJgIAMgDTYCXCADIAo2AlggAyAD +LwEkOwBVIAMgHzcDOAJAIB9CAlEEQCAIDQEMAgsgCEUEQCADQSBqIANBxABqIgpBGGooAgA2AgAg +A0EYaiAKQRBqKQIANwMAIANBEGogCkEIaikCADcDACADIAopAgA3AwgMAwsgA0E4ahC1QkICIR8g +CCEEDAILIANB4ABqEN8dC0ICIR8LIB9CAlENACAJIAMpAwg3AgwgCSAENgIIIAkgHzcDACAJQSRq +IANBIGooAgA2AgAgCUEcaiADQRhqKQMANwIAIAlBFGogA0EQaikDADcCAAwBCyACIAQQvFIhBCAJ +QgI3AwAgCSAENgIICyADQZABaiQADAELIAlCAjcDACAJIAQ2AggLIAUoAqABIQQgBSkDmAEiH0IC +UgRAIAVBiAFqIgogD0EYaigCADYCACAFQYABaiIIIA9BEGopAgA3AwAgBUH4AGoiECAPQQhqKQIA +NwMAIAUgDykCADcDcCAFQThqELRDIA4gBSkDcDcCACAOQQhqIBApAwA3AgAgDkEQaiAIKQMANwIA +IA5BGGogCigCADYCACAFIAQ2AkAgBSAfNwM4DAoLDAgLIAVBDGoQrD8iBEUNCAwHCyAFKAIUIgRB +gICAgHhGIhANASAFIAUpAhg3AmggBSAENgJkAkACQAJAAkACQAJAIAYEQCAFIBY2AsQBIAUgBjYC +wAEgBUGYAWohGiMAQZABayIOJAAgDiAGIBYQpzkgDkEYaiIIIA4QyS0gDkHoAGohD0EAIQRBACEL +QQAhEUEAIRJBACENQQAhA0EAIQpBACETQQAhF0IAISBBACEVQQAhFkEAIRkjAEGQAWsiAiQAIAIg +CBC8FgJAAkACQAJAAkACQAJAAkACfwJAAn8CQAJAAkACQAJAAkACQAJAAn8gAi0AAEUEQCACLQAB +RQRAIAJBBTYCJCAIIAJBJGoQgDEMAgsgAi0AAiIGQdsARg0CIAZB+wBGDQMgCCACQY8BakGktsAA +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 +DAULQgAgF60gE61CIIaEIB1CAlEiAxshHiAMQQFxIQggB0ECRg0BIAJBQGsgAkGEAWopAgA3AwAg +AiACKQJ8NwM4DAILIAIoAjwhAwwDCyACQgA3AD0gAkIANwM4C0EAIAYgCBshDEIAIB0gAxshHSAC +QTBqIAJBQGspAwA3AwAgAiACKQM4NwMoIB5CIIinIQYgHqchAwwCCyACKAJoIgcQ5xYiAw0AIAJB +OGogBxDwDCACKAI4IQMgAi0ARCIHQQJGDQAgAkGOAWoiHCAaQQJqLQAAOgAAIAIgGi8AADsBjAEg +AikCPCEeIAJB/ABqEMxCIBggAi8BjAE7AAAgGEECaiAcLQAAOgAAIAIgBzoAiAEgAiAeNwKAASAC +IAM2AnwMAwsgAkH8AGoQzEIgCARAIBsQkEULQgIhHQsgCiAKLQAkQQFqOgAkIAoQjRMhCCACQdAA +aiACQTBqKQMANwMAIAIgBjYCRCACIAM2AkAgAiAINgJgIAIgDjYCXCACIAw2AlggAiACKQMoNwNI +IAIgHTcDOAJAIB1CAlIEQCAIDQEgAkEgaiACQcQAaiIGQRhqKAIANgIAIAJBGGogBkEQaikCADcD +ACACQRBqIAZBCGopAgA3AwAgAiAGKQIANwMIDAsLIAhFDQkgAkHgAGoQ3x0MCQsgAkE4ahCyQkIC +IR0gCCEDDAkLIAIoAkAhDiACQfAAahCLQSACIA42AnggAiAGNgJ0QQEhCCACQQE2AnBBACEMDAAL +AAsgAkEFNgI4IAcgAkE4ahCAMSEDDAILIAJBGDYCOCAKIAJBOGoQgDELIQMgC0ICNwMAIAsgAzYC +CAwGCyACQfAAahCQRQtCAiEdCyAKIAotACRBAWo6ACQgChCfDCEHIAJB1wBqIAJBJmotAAA6AAAg +AiATOgBUIAIgHjcCTCACIAg2AkggAiAONgJEIAIgAzYCQCACIAc2AmAgAiAMNgJcIAIgBjYCWCAC +IAIvASQ7AFUgAiAdNwM4AkAgHUICUQRAIAcNAQwCCyAHRQRAIAJBIGogAkHEAGoiBkEYaigCADYC +ACACQRhqIAZBEGopAgA3AwAgAkEQaiAGQQhqKQIANwMAIAIgBikCADcDCAwDCyACQThqELJCQgIh +HSAHIQMMAgsgAkHgAGoQ3x0LQgIhHQsgHUICUQ0AIAsgAikDCDcCDCALIAM2AgggCyAdNwMAIAtB +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 +IARBxAFqLQAADgQBAgIAAgsgBEEgahDtPwsgBEH4AGoQ4RILIAQQrDkgBEEEahCWQQsgBEEBOgAI +IAIgDjYCICACIAY2AhwgAiABNgIYIAIgBDYCoAUCQAJAAkACQCACQaAFaigCACIBLQAIDgUCAwMA +AQMLIAFBIGotAABBA0cNASABQRhqEJk2DAELIAFBqANqLQAAQQNGBEAgAUGMA2oQiD8LIAFBDGoQ +xS8gAUEgahDNOAsgARCsOSABQQRqEJZBCyAEQQU6AAggGyACQRhqEPksCyACQcAHaiQAIAooAhQi +DkGBgICAeEYNASAKKAIcIQkgCigCGCEBIAQQ7hUCfyAOQYCAgIB4RwRAIAogCTYCKCAKIAE2AiQg +CiAONgIgIApBgAE2AiwgCiAKQSBqEK9BNgIUIApBCGogAEGsA2ogCkEsaiIJIApBFGoiBhD7JyAK +KAIIIAooAgwQ5EEMAQsgCkGAATYCLCAKIAE2AhQgCiAAQbADaiAKQSxqIgkgCkEUaiIGEPsnIAoo +AgAgCigCBBDkQQshASAGEJZBIAkQlkEgCiABNgIQIApBEGoQlkEgAEGsA2oQlkEgAEGwA2oQlkFB +AQwCC0HQl8YAQSNBtMHGABDmKwALQQMLOgDgBiAKQTBqJAAgDkGBgICAeEYL4n8CEn8BfiMAQTBr +Ig0kACAAAn8CQAJAAkACQAJAIAAtALgWQQFrDgMDAAIBCwALIABBmAtqIABBmAsQzU8aCyANQRRq +IRMjAEGQJWsiAiQAAkACQAJAIABBmAtqIgMCfwJAAkACQAJAAkACQAJ/AkACfwJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJA +An8CQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAIAMoAgBBgICAgHhHBEACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAy0AkAtBAWsO +AwkHAAELAkAgA0HkAGotAABBAWsOBAgHAwYACyADQeAAaigCACEEDAELIAMgAykD6Ao3AxggA0Hk +AGpBADoAACADQeAAaiADQYALaiIENgIAIANBNGogA0GEC2o2AgAgA0EwaiADNgIAIANBJGpBgICA +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 +EGoiCiACQZgXaiIGQTgQzU8aIAgQ6y8gA0HtA2pBAToAACADQQE6APwEIANBkAFqIgUgFDcDACAD +QZgBaiAKQTgQzU8aIANB3AFqIARBIGo2AgAgA0HYAWogCTYCACADQdQBaiAENgIAIANB0AFqIAc2 +AgAgCBDrQiADQe4DakEAOgAAIANB0ANqKAIAIQQgBiAOQSgQzU8aIAggBkHAAhDNTxogA0HMBmoi +EUEAOgAAIANBtAZqIAU2AgAgA0GwBmogBDYCACADQfADaiEKDAILIAlBAzoAACALQQM6AAAgDEED +OgAACyAGQQM6AABBAww5CyADQc0GakEBOgAAIANBvAZqIgYgBTYCACADQbgGaiAENgIAIANBmARq +IApBKBDNTxogA0HABmogBCgCAEEIahDuASADQcAEahDLCyADQdgGaiIEQQA6AAAgA0HQBmoiByAG +KAIAIgU2AgALIANB1AZqIAU2AgAgBSkDAEICUg0HIAVBzABqKAIAIQUgA0HpBmpBADoAACADQeQG +aiAFNgIACyACQagfaiADQdwGaiIJIAEQwgMgAi0AqB8iBkEMRg0CIAJBviBqIgsgAi0Aqx86AAAg +AkG4ImoiDCACQbwfaikCADcDACACQcAiaiIOIAJBxB9qKQIANwMAIAIgAi8AqR87AbwgIAIgAikC +tB83A7AiIAIoAqwfIQUgAigCsB8hCCAJEOwvIAZBC0cNASACIAg2AowkIAIgBTYCiCQgAkGIJGoQ +mkwgA0HUBmooAgBBzABqKAIAIQUgA0GUB2pBADoAACADIAU2AtwGCyADQdwGaiIGIAEQuAciBQ0E +QQQMAgsgAkHiIGogCy0AADoAACACQZgjaiAMKQMANwMAIAJBoCNqIA4pAwA3AwAgAiACLwG8IDsB +4CAgAiACKQOwIjcDkCMMBQtBAwshASAEIAE6AABBAyEEDBcLAAsgAiAFNgKIJCAGENk/IAJBqB9q +IgYgBUEYakHAABDNTxogBUICNwMYIANB1AZqIgUoAgAQ7EIgBSgCACAGQcAAEM1PGiACQYgkahCa +TCAFKAIAIgUpAwBCAlINAEHgh8EAEKNLAAtBCyEGCyACQYYfaiILIAJB4iBqLQAAOgAAIAJB0CRq +IgwgAkGYI2opAwA3AwAgAkHYJGoiCSACQaAjaikDADcDACACIAIvAeAgOwGEHyACIAIpA5AjNwPI +JCAEQQE6AAAgAkGCH2oiBCALLQAAOgAAIAJB8B5qIgsgDCkDADcDACACQfgeaiIMIAkpAwA3AwAg +AiACLwGEHzsBgB8gAiACKQPIJDcD6B4gBxCtOCAGQQtHDQQgBSADQbQEaigCACADQbgEaigCACAD +QbwEaigCABCkCCADQbgGaigCACgCACEGIANBvAZqKAIAEI5OIQQgA0GwBGooAgAiBSgCCCEHIAMg +BSgCBCIFNgLYBiADQdwGaiAFIAdBA3RqIgU2AgAgA0HgBmogAkGIJGpBJBDNTxogA0GNB2oiCUEA +OgAAIANBiAdqIAQ2AgAgA0GEB2ogBkH4AGoiBjYCACADQY4HaiACQagfakGGARDNTxogA0HQBmoh +CwsgA0GMB2pBAToAACADQZgIaiAFNgIAIANBlAhqIANB2AZqKAIANgIAIAYoAgghBSADQZAIakEA +OgAAIANBlAdqIAQ2AgAgA0GQB2ogBUEIajYCAAsgAkHIJGogA0GQB2oiDiABEPQGIAItAMgkIgRB +DEYNBCACQY4laiIHIAItAMskOgAAIAJB+CNqIgggAkHcJGopAgA3AwAgAkGAJGoiDCACQeQkaikC +ADcDACACIAIvAMkkOwGMJSACIAIpAtQkNwPwIyACKALMJCEFIAIoAtAkIQYgDhDaPyAEQQtHDQMg +A0ELOgDgBiADIAU2AtAGIANB6AZqIAY2AgAgA0HkBmogBTYCACADQYwHakEAOgAAIANB1AZqIAY2 +AgAgAkGAI2oiBCACQeAjaikCADcDACACQYgjaiIHIAJB6CNqKAIANgIAIAIgAikC2CM3A/giIANB +lAhqKAIAIQUgA0GYCGooAgAhBiACQbAiaiIIIAJBkCNqQcYAEM1PGiADQZQHaiAGNgIAIAMgBTYC +kAcgA0GYB2ogAikD+CI3AgAgA0GgB2ogBCkDADcCACADQagHaiAHKAIANgIAIANBsQdqIg9BADoA +ACADQawHaiALNgIAIANBsgdqIAhBPhDNTxogCwshBCADQfQHaiAGNgIAIANB8AdqIAU2AgAgA0Gw +B2pBAToAACADQZgHaiAENgIAIANBpAdqQQA2AgAgA0GcB2pCgICAgMAANwIAIAQoAgQhBCADQewH +akEAOgAAIANBtAdqIAQ2AgALQQMgA0G0B2oiBCABELgHIgVFDQUaIANBqAdqIAU2AgAgBBDZPyAD +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 +BCACQYAlaiEEIAJBhCVqIQsgAkGEH2ohCSAMQQNGDQELIAJBxiRqIAtBAmotAAA6AAAgAkHCJGog +BEECai0AADoAACACIAkoAAA2AvAjIAIgCy8AADsBxCQgAiAELwAAOwHAJCACIAlBA2ooAAA2APMj +IAJBiCRqIA5BOBDNTxogDEECRg0GIANB6AZqKAIAIgQgA0HgBmoiCygCAEYEQCALIAQQojUgAygC +6AYhBAsgA0HkBmooAgAgBEHYAGxqIgQgBzoAACAEIAIvAcQkOwABIAQgBjoABCAEIAIvAcAkOwAF +IAQgCDYADCAEIAU2AAggBEEDaiACQcYkai0AADoAACAEQQdqIAJBwiRqLQAAOgAAIARBEGogAkGI +JGpBOBDNTxogBCAMOgBQIAQgFDcDSCAEIAIoAvAjNgBRIARB1ABqIAIoAPMjNgAAIAMgAygC6AZB +AWo2AugGDAYLIAJB2iNqIAtBAmotAAA6AAAgAkH6ImogBEECai0AADoAACACIAsvAAA7AdgjIAIg +BC8AADsB+CIgAkGQI2ogDkE4EM1PGiADQewGahCCBSADQeAGahC4SwsgAkGeIWoiBCACQdojai0A +ADoAACACQZohaiILIAJB+iJqLQAAOgAAIAIgAi8B2CM7AZwhIAIgAi8B+CI7AZghIAJB4CBqIAJB +kCNqQTgQzU8aIBJBAToAACAHQf8BcSIMQRNGDQIgAkHiIWogBC0AADoAACACQd4haiALLQAAOgAA +IAIgAi8BnCE7AeAhIAIgAi8BmCE7AdwhIAJBoCFqIAJB4CBqQTgQzU8aIA8Q/i4gDEESRw0DIAIg +BjoA5CEgAiACLwHcITsA5SEgAiAINgLsISACIAU2AughIAIgAkHeIWotAAA6AOchIANB6AVqIAJB +5CFqEMIpIAJBsB9qIgQgA0GsBGooAgA2AgAgAiADQaQEaikCADcDqB8gA0GUBWoiBRD7QCADQZwF +aiAEKAIANgIAIAUgAikDqB83AgAgAkGuImogA0HLBmotAAA6AAAgAiADQckGai8AADsBrCIgA0HI +BmotAAAhByADQcQGaigCACEJIANBwAZqKAIAIQQgA0HABGooAgAhBSADQcQEaigCACEIIAJB8CFq +IANByARqQTgQzU8aIAJByBBqIANBgAVqQbABEM1PGiADQc0GaiEMDAgLQQMLOgAAC0EGIQQMAwsg +AkGuImogAkHiIWotAAA6AAAgAiACLwHgITsBrCIgAkHwIWogAkGgIWpBOBDNTxogAkGqImogAkHe +IWotAAA6AAAgAiACLwHcITsBqCIMAwtBACEEDAALAAsgESAEOgAADAILIANBwARqENgaIANBwAZq +EKlLIANBzQZqIgwtAAAEQCADQZgEahCpSwsgA0GkBGoQ+0BBgICAgHghBAsgDEEAOgAAIAJB1g5q +IgsgAkGuImotAAA6AAAgAkHSDmoiDCACQaoiai0AADoAACACIAIvAawiOwHUDiACIAIvAagiOwHQ +DiACQZgOaiACQfAhakE4EM1PGiACQegMaiACQcgQakGwARDNTxogEUEBOgAAIARBgYCAgHhGDQAg +AkHGEGogCy0AADoAACACQcIQaiAMLQAAOgAAIAIgAi8B1A47AcQQIAIgAi8B0A47AcAQIAJBiBBq +IAJBmA5qQTgQzU8aIAJB2A5qIAJB6AxqQbABEM1PGiAKLQDcAg4HBggIAQIDBAgLQQQMFwsgCkHg +AmoQrTgMAwsgCkHgAmoQ1zQMAgsgCkHgAmoQnwIgCkHsAmoQhB8MAQsgCkHgAmoQ/i4LIApB0ABq +ENgaIApB0AJqEKlLIAotAN0CRQ0BIApBKGoQqUsMAQsgChCpSyAKQQxqEPtADAELIApBNGoQ+0Ag +CkEAOgDdAgsgBEGAgICAeEYNAiADQdwDaiAHOgAAIANB2ANqIAk2AgAgA0HUA2ogBDYCACADQd0D +aiACLwHEEDsAACADQeQBaiAINgIAIANB4AFqIgQgBTYCACADQd8DaiACQcYQai0AADoAACADQegB +aiACQYgQakE4EM1PGiADQaACaiACQdgOakGwARDNTxogA0HgA2ogA0GkA2ooAgAiBSAFIANBqANq +KAIAQcwAbGoQlxggA0HQA2ooAgAQ+E0hBSACQfgbaiAEQfABEM1PGiACQcgQaiIEIAJBmBdqQdAG +EM1PGiAKIARB0AYQzU8aIANBxApqQQA6AAAgA0HACmogBTYCAAsgAkGYF2ogA0HwA2oiBCABEPsQ +IAItAJgXIgZBDEYNDSACQYYeaiIHIAItAJsXOgAAIAJB8B1qIgkgAkGsF2opAgA3AwAgAkH4HWoi +CiACQbQXaikCADcDACACIAIvAJkXOwGEHiACIAIpAqQXNwPoHSACKAKcFyEFIAIoAqAXIQggBBD5 +PCAGQQtHDQogA0HtA2pBADoAACACQZgXaiIFIANBkAFqQdAAEM1PGiAEIAVB4AEQzU8aIANB0AVq +IgdBADoAAAsgA0HRBWpBgAI7AAAgA0HABGogBEHQABDNTyIFEI9ORQ0BQQshBgwFCyACQeYeaiAC +QcYQai0AADoAACACQeIeaiACQcIQai0AADoAACACIAIvAcQQOwHkHiACIAIvAcAQOwHgHiACQage +aiACQYgQakE4EM1PGgwQCyADQZAFaiEGAkAgAykDwARCAlEEQCAGQgI3AwAMAQsgBiAFEJMhCyAD +QQE6ANEFIAJBGGogA0GABWoQvywgAigCGCEGIAIoAhwhCCADQQA6ANIFIAJByBBqIgkgBUHAABDN +TxogAkEQaiAGIAkgCCgCJBEDACACKAIQIQUgA0HcBWogAigCFCIGNgIAIANB2AVqIAU2AgALIAJB +yBBqIAUgASAGKAIMEQMAIAItAMgQIgZBDEYNByACQcokaiIJIAItAMsQOgAAIAJBsB9qIgogAkHc +EGopAgA3AwAgAkG4H2oiCyACQeQQaikCADcDACACIAIvAMkQOwHIJCACIAIpAtQQNwOoHyACKALM +ECEFIAIoAtAQIQggA0HYBWoQmTYgBkELRw0BIANBkAVqIgUpAwBCAlENBCADQdEFakEAOgAAIANB +mAZqIAVBwAAQzU8aIANBkAZqQQA6AAAgAyADQYwFaigCADYC2AULIANB2AVqIgUgARC4ByIBDQJB +BAwHCyACQbIiaiAJLQAAOgAAIAJB8AxqIAopAwA3AwAgAkH4DGogCykDADcDACACIAIvAcgkOwGw +IiACIAIpA6gfNwPoDCADQZAFahDsQiADQdEFakEAOgAACyADQYAFahCuOSADQdIFaiIBLQAADQIM +CAsgAiABNgLIECAFENk/IAFBGGoiARDsQiABIANBmAZqQcAAEM1PGiACQcgQahCaTCADQZAFaiIB +KQMAQgJRDQAgA0HRBWotAABFDQAgARDVFgsgA0HRBWpBADoAACADQYAFahCuOSADQYQFahC5SyAD +QdIFaiEBQQshBgwHCyADQcAEahDsQgwFCyACQeIeaiAHLQAAOgAAIAJBsB5qIAkpAwA3AwAgAkG4 +HmogCikDADcDACACIAIvAYQeOwHgHiACIAIpA+gdNwOoHgwGC0EDCyEBIAcgAToAAEEGDAELQQUL +IQEgECABOgAADAULIANBhAVqELlLCyABQQA6AAAgAkGKJGoiASACQbIiai0AADoAACACQZgjaiIJ +IAJB8AxqKQMANwMAIAJBoCNqIgogAkH4DGopAwA3AwAgAiACLwGwIjsBiCQgAiACKQPoDDcDkCMg +B0EBOgAAIAJBph5qIgcgAS0AADoAACACQZAeaiIBIAkpAwA3AwAgAkGYHmoiCSAKKQMANwMAIAIg +Ai8BiCQ7AaQeIAIgAikDkCM3A4geIAQQ6hsgBkELRgRAIAJB4h5qIANB1wNqLQAAOgAAIAJBsB5q +IANB6ANqKAIANgIAIAIgA0HVA2ovAAA7AeAeIAIgA0HgA2opAwA3A6geIANB7QNqIQQgA0HcA2oo +AgAhCCADQdgDaigCACEFIANB1ANqLQAAIQZBEiEHDAMLIAJB4h5qIActAAA6AAAgAkGwHmogASkD +ADcDACACQbgeaiAJKQMANwMAIAIgAi8BpB47AeAeIAIgAikDiB43A6geCyADQeADahC6SyADQdQD +ahCpS0EOIQcLIANB7QNqIgQtAABFDQAgA0GQAWoQ6z8LIARBADoAACACQaYMaiIBIAJB5h5qLQAA +OgAAIAJBogxqIgQgAkHiHmotAAA6AAAgAiACLwHkHjsBpAwgAiACLwHgHjsBoAwgAkHoC2ogAkGo +HmpBOBDNTxogEEEBOgAAIAdB/wFxQRNGDQAgAkHmDGogAS0AADoAACACQeIMaiAELQAAOgAAIAIg +Ai8BpAw7AeQMIAIgAi8BoAw7AeAMIAJBqAxqIAJB6AtqQTgQzU8aDAILQQQLOgBkIANBAzoAkAsM +AQsgA0HlAGotAAAEQCADQUBrENkiCyADQQA6AGUgAkGeAWoiASACQeYMai0AADoAACACQZoBaiIE +IAJB4gxqLQAAOgAAIAIgAi8B5Aw7AZwBIAIgAi8B4Aw7AZgBIAJB4ABqIgkgAkGoDGpBOBDNTxog +A0EBOgBkIAJB3gFqIgogAS0AADoAACACQdoBaiIBIAQtAAA6AAAgAiACLwGcATsB3AEgAiACLwGY +ATsB2AEgAkGgAWogCUE4EM1PGgJAAkAgB0H/AXFBEkcEQCACIAIvAdwBOwCJAiACIAotAAA6AIsC +IAJBpAJqIAJBrAFqQSwQzU8aIAJBoAJqIAJBqAFqKAIANgIAIAIgCDYClAIgAiAFNgKQAiACIAY6 +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 +HwsCQAJAAkAgAUHIBmotAABBA2sOAwABAiALAkACQCABQZkHai0AAEEDaw4CAQAhCyABQfgLai0A +AEEDRw0fAkACQAJAIAFBjQhqLQAAQQNrDgIAASILIAFBkAhqIgQQ3yogBBDZIgwBCyABQc0Lai0A +AEEDRw0AIAFBsAhqEO4vIAFB9ApqEOESIAFBzAtqQQA6AAALIAFBjAhqLQAARQ0eIAFB4AdqENki +DB4LIAFBoAdqIgQQ4SogBBDZIgweCyABQbAMai0AAEEDRw0eAkACQAJAIAFBvAhqLQAAQQNrDgMC +AAEhCyABQZwKai0AAEEDRw0cIAFB4AhqEMJADBwLAkACQAJAIAFBrQpqLQAAQQNrDgIAAR4LIAFB +sApqEO4vDAELIAFBsApqEK84CyABQdQJahDhEiABQawKakEAOgAADBsLIAFB9AhqEJk2IAFBwAhq +EP88DBsLAkACQCABQaEHai0AAEEDaw4CAAEfCyABQagHaiIEEOYqIAQQ2SIMGQsCQAJAIAFB2gdq +LQAAQQNrDgIAARoLIAFB3AdqEJk2DBgLAkACQAJAAkACQCABQZgUai0AAA4HBBsbAgADARsLAkAC +QAJAIAFB8BxqLQAADgUAGhoBAhoLIAFBoBRqEOM/DBkLAkACQAJAAkACQAJAIAFBvh5qLQAAQQNr +DgQCAwABHQsCQCABQcgnai0AAA4EBAUFAAULIAFBwB5qEJARDAQLIAFBwB5qEPk8DAMLIAFBwB5q +ENY0DBkLIAFBwB5qENQwDBcLIAFB8CZqEN0/CyABQbAeahCaTAwVCyABQfQcahCvOAwWCyABQcwU +ahDOOAwXCyABQaAUahDCQAwXCyABQaAUahDBQAwVCyABQcAJahDjPwwWCyABQbgGaiIEEOUqIAQQ +2SIMHAsCQAJAAkACQCABQeoHai0AAEEDaw4DAQACEQsgAUG4CGotAABBA0cNAiABQbQIai0AAEED +RgRAIAFBrAhqEJk2CyABQZQIahCIPwwCCyABQfAHahDCQAwOCyABQfgHahDUMCABQfQHahCvOQsg +AUHoB2pBADoAACABQZgGahDEOwwMCyABQfgEahC5CiABQaAEahD6BiABQZAMai0AAEECRg0KIAFB +wgNqLQAARQ0KIAFByAtqEOESDAoLIAFBoARqELkKIAFByANqEPoGDCQLIAFBOGoiBBDdKiAEENki +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 +zABqKAIANgIAIAMgAykCRDcDUCABQQxqEJk2QQshBCADQUBrIAIoAgA2AAAgACADKQIQNwIQIABB +GGogA0EYaikCADcCACAAQSBqIANBIGooAgA2AgAgAyADKQNQNwA4IAAgAykANTcAASAAQQhqIANB +PGopAAA3AABBASECDAILQQMhAkEMIQQMAQtBoIfEAEEjQZiLxAAQ5isACyABIAI6ABQgACAEOgAA +IANB4ABqJAALJAAgACABIAJBiLjFAEGQocUAQai4xQBB3K/FAEGYuMUAENRVC4cMAQl/IwBBMGsi +BCQAAkACQAJAAkAgAC0A+AJBAWsOAwMAAgELAAsgAEG4AWogAEG4ARDNTxoLIARBFGohCiMAQeAC +ayICJAACQAJAAkACQAJAAkAgAEG4AWoiAy0AREECRwRAAkACQAJAAkACQAJAAkACQAJAAn8CQAJA +AkAgAy0AtAFBAWsOAwYBAAILAkAgA0HkAGoiCC0AAEEBaw4ECgEEBQALIAMoAlgMAgsACyADIAM2 +AlggA0HkAGoiCEEAOgAAIAMLIQUgA0HcAGoiBiAFNgIAIAJBEGogBRDETSACKAIUIQcgAigCECAC +QQhqIAYoAgBBKGoQq01BDiEFIAcgAigCCCACKAIMEIA8DQQgAygCXEHIAGooAgAhBSADQaABakEA +OgAAIANB6ABqIAVBCGo2AgALIANB6ABqIgUgARC4ByIGRQ0EIANB4ABqIgcgBjYCACAFENk/IAco +AgAhBSADQdwAaigCACEGIAJBjAFqIgcgAkHQAWpBwAAQzU8aIAJBigFqIgkgAkHPAWotAAA6AAAg +AiACLwDNATsBiAEgA0HsAGogBjYCACADIAVBFGo2AmggA0HwAGogB0HAABDNTxogA0GwAWpBADoA +ACADQbEBaiACLwGIATsAACADQbMBaiAJLQAAOgAACyACQdABaiADQegAaiIFIAEQ4AIgAi0A0AEi +AUEXRg0FIAJBmAJqIgcgAkHoAWopAgA3AwAgAkGgAmoiCSACQfABaigCADYCACACIAIpANEBNwOo +AiACIAIpAuABNwOQAiACIAJB2AFqKQAANwCvAiAFEOw/IANB4ABqIQZBFiEFIAFBFkcNASACQcMC +aiACQbMCaigAADYAACACIAIpAKsCNwC7AiAGEJpMDAILQaDEwABBI0Ggt8EAEOYrAAsgAkHPAmog +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 +oBAhAgwCCwJAIA4EQCADKAKYFiIQRSEOIBBFBEBBk5bSAEEMEOwfIQIMBgsgAyAQNgKgECADIAMp +A5AWIhs3A5gQIAMpA6AWUEUNAUGfltIAQRQQ7B8hAiADQZgQahC0SAwFC0EBIQ5BiJbSAEELEOwf +IQIMBAsgA0HoCmogCkGIBRDNTxogA0G2G2ogA0GOFmotAAA6AAAgA0H4D2ogA0HwFWopAwA3AwAg +A0GAEGogA0H4FWopAwA3AwAgA0GIEGogA0GAFmotAAA6AAAgAyADLwGMFjsBtBsgAyADKQPoFTcD +8A8gAyADKAKwGzYCkBAgAyADKACzGzYAkxAgCyECQgEgGiAaQgJRGwwECyADQbAbaiAGQYgFEM1P +GiADKQOgFlBFBEAgChDpJwsgA0IBNwOgFiAKIANBsBtqQYgFEM1PGgwBCwtBASEOCyADKQOgFlBF +BEAgChDpJwsgAygCmBZBAEcgDnEEQCADQZAWahC0SAtCAgshGiAIIAgtABxBAWo6ABwgCBCNEyEL +IANBtxBqIAMoAJMQNgAAIANBxxBqIANB+A9qKQMANwAAIANBzxBqIANBgBBqKQMANwAAIANB1xBq +IANBiBBqLQAAOgAAIAMgEDYCsBAgAyAbNwOoECADIBM2AqQQIAMgAjYCoBAgAyAWNgC7ECADIAMo +ApAQNgK0ECADIAMpA/APNwC/ECADIBo3A5gQIANB2BBqIANB6ApqQYgFEM1PGiADIAs2AuAVAkAg +GkICUgRAIAsNASADQQRqIANBpBBqQbwFEM1PGgwICyALRQ0GIANB4BVqEOUZDAYLIANBmBBqEN1E +QgIhGiALIQIMBgsgA0EYNgKYECAIIANBmBBqEIAxCyECIA9CAjcDACAPIAI2AggMBgtBAUGAltIA +QfyL0gAQ2BchAgtCAgshGiAIIAgtABxBAWo6ABwgCBCfDCEEIANBxhBqIANB0ApqKQMANwEAIANB +zhBqIANB2ApqKQMANwEAIANB1hBqIANB4ApqLwEAOwEAIAMgEDYBuhAgAyAOOwG4ECADIAs2ArAQ +IAMgGzcDqBAgAyATNgKkECADIAI2AqAQIAMgAykDyAo3Ab4QIAMgGjcDmBAgA0HYEGogA0HABWpB +iAUQzU8aIAMgBDYC4BUCQCAaQgJRBEAgBA0BDAILIARFBEAgA0EEaiADQaQQakG8BRDNTxoMAwsg +A0GYEGoQ3URCAiEaIAQhAgwCCyADQeAVahDlGQtCAiEaCyAaQgJRDQAgD0EMaiADQQRqQbwFEM1P +GiAPIAI2AgggDyAaNwMADAELIAIgCBDYIyECIA9CAjcDACAPIAI2AggLIANBwCBqJAAgCSkDCEIC +UgRAIA0gCUEIakHIBRDNTxoMAgsgDSAJKAIQNgIIIA1CAzcDAAwBCyANIAkoAgQ2AgggDUIDNwMA +CyAJQdAFaiQAIAcoAsghIQIgBykDwCEiGkIDUQ0AIBggGUG8BRDNTxogByACNgKAHCAHIBo3A/gb +AkACQCAaQgJSBEAgFUEESw0BIAdBCGogFUHIBWxqIAdB+BtqQcgFEM1PGiAHQgI3A8AhIAcgFUEB +aiIVNgLwGwwCCyAHQfgbahDiRCASQQhqIAdBCGpB8BsQzU8aIBJBADYCAAwGCyAHQcAhaiAHQfgb +akHIBRDNTxogBykDwCFCAlINAwsgB0HAIWoQ4kQMAQsLIBJBATYCACASIAI2AgQMAQtBBiAHQY8n +akGUxtIAENgXIQIgEkEBNgIAIBIgAjYCBCAHQcAhahDiRAsgB0EIahDdUQsgB0GQJ2okACABIAEt +ABxBAWo6ABwgDCABEJ8MIgc2AoAcIAwoAghFBEAgDEEQaiECIAdFDQIgAhDoJyAHIQIMAQsgDCgC +DCECIAdFDQAgDEGAHGoQ5RkLIAAgAiABENgjNgIEQQEMAQsgAEEIaiACQfAbEM1PGkEACzYCAAwB +CyAMQRg2AgggASAMQQhqEIAxIQEgAEEBNgIAIAAgATYCBAsgDEGQHGokAAu9AgEDfyMAQYABayIE +JAACQAJAAn8CQCABKAIcIgJBEHFFBEAgAkEgcQ0BIAA1AgBBASABEMcJDAILIAAoAgAhAEEAIQID +QCACIARqQf8AakEwQdcAIABBD3EiA0EKSRsgA2o6AAAgAkEBayECIABBEEkgAEEEdiEARQ0ACyAC +QYABaiIAQYABSw0CIAFBAUGOwtoAQQIgAiAEakGAAWpBACACaxDwAwwBCyAAKAIAIQBBACECA0Ag +AiAEakH/AGpBMEE3IABBD3EiA0EKSRsgA2o6AAAgAkEBayECIABBEEkgAEEEdiEARQ0ACyACQYAB +aiIAQYABSw0CIAFBAUGOwtoAQQIgAiAEakGAAWpBACACaxDwAwsgBEGAAWokAA8LIABBgAFB/MHa +ABDhGwALIABBgAFB/MHaABDhGwALvwsCDX8BfiMAQeAAayIDJAAgASgCBCICIAEoAggiB0EMbGoh +BSABKAIAIQECfyAHQR9PBEAgAyAFNgJcIAMgATYCWCADIAI2AlQgAyACNgJQIANBKGojAEGwAWsi +ASQAIAFBEGoQpBUgAUEkakEANgIAIAFBCGpCADcDACABQoCAgICAATcCHCABQgA3AwAgAUEwaiAD +QdAAaiICQQhqKQIANwMAIAEgAikCADcDKCABQThqIAFBKBDNTxogAUHwAGohCCABQaABaiEHIAFB +iAFqIQQgASgCLCECIAEoAjQhBQJAA0AgAiAFRg0BIAIoAgAiCQRAIAIpAgQhDyABQeAAaiIKIAFB +OGoiC0EoEM1PGiABIA83AowBIAEgCTYCiAEgByAEKQMANwMAIAdBCGogBEEIaigCADYCACABIAEp +A2AiD0IBfDcDYCABIA83A5gBIAggAUGYAWoQ/hIgCyAKQSgQzU8aIAJBDGohAgwBCwsgAkEMaiEF +CyABIAU2AiwgAUE4akEoEM1PGiABQShqEIArIAFBsAFqJAAgA0EQaiADQThqKQMANwMAIANBGGog +A0FAaykDADcDACADQSBqIANByABqKQMANwMAIAMgAykDMDcDCCADKAIsIQFBACECIAMoAigMAQsg +AyAFNgI0IAMgATYCMCADIAI2AiwgAyACNgIoIwBBMGsiByQAIAdBKGogA0EoaiIBQQhqKQIANwMA +IAcgASkCADcDICMAQTBrIgEkACAHQSBqIgIoAgghBCACKAIAIQYgASACKAIMIgggAigCBCIJa0EM +biIFELkWIAFBADYCECABIAEoAgQiAjYCDCABIAEoAgAiCjYCCCAFIApLBEAgAUEIakEAIAUQiw8g +ASgCECELIAEoAgwhAgsgB0EUaiEFIAEgCDYCICABIAQ2AhwgASAJNgIYIAEgBjYCFCABIAI2Aiwg +ASALNgIoIAEgAUEQaiILNgIkIwBBMGsiAiQAIAJBCGogAUEUaiIEQQhqKQIANwMAIAIgBCkCADcD +ACABQSRqIgQoAgggBCgCBCIIQcgAbGohBiACQSRqIQkgBCgCACACKAIEIQQgAigCDCEKIAJBKGoh +DQJAA0AgBCAKRgRAIAJBADYCECACIAo2AgQMAgsgAkEYaiAEQQhqIg4oAgA2AgAgAiAEKQIAIg83 +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 +CwALIAogAygCXDYCBCAKQQY6AAAMAQsgA0HwAGogA0HQAGopAwA3AwAgA0HoAGogA0HIAGopAwA3 +AwAgA0HgAGogA0FAaykDADcDACADIAMpAzg3A1ggCiADQdgAahCrGgsgA0HQAWokAAwBC0GgrsYA +QShBmLXGABDmKwALIAEtALgBQQZHDQEgASgCvAEhAyABQawBahCIPwsgCUEGOgAAIAkgAzYCBCAB +QThqEMo4DAQLIBAgAUHIAWopAwA3AwAgESABQcABaikDADcDACABIAEpA7gBNwNYIAFBkAFqIgMg +EiABQawBaiABQdgAahDUDCADEJVDDAALAAsgCSABKAJcNgIEIAlBBjoAAAwBCyABQfAAaiABQdAA +aikDADcDACABQegAaiABQcgAaikDADcDACABQeAAaiABQUBrKQMANwMAIAEgASkDODcDWCAJIAFB +2ABqEKsaCyABQdABaiQADAELQaCuxgBBKEGYtcYAEOYrAAsgAi0AyAFBBkYNByACQcABaiACQdgB +aikDADcDACACQbgBaiIEIAJB0AFqKQMANwMAIAIgAikDyAE3A7ABIAJByAFqIgEgAkGUAWogAkGg +AWogAkGwAWoiAxDUDCABEONCIAQgAkGcAWooAgAiBDYCACACQYQBaiIGIAQ2AgAgAkEFOgB4IAIg +AikClAE3AnwgAkEQakGAARDuHyACQQA2ArgBIAIgAikDEDcCsAEgAiADNgKUASAGKAIAIQYgA0HW +wsAAQQEQ4UggAkEEOgDIAQJAAkAgARCeLiIEDQBBgAIhByAGRQRAIAJByAFqIgEgAkGUAWoQ6kJB +ACEHIAEQni4iBA0BCyACIAc2AqABIAIoAnwhASACIAJBlAFqNgKkASACQYABaigCACEHIAIgBkEA +IAEbNgLoASACIAc2AuQBIAIgATYC4AEgAkEANgLcASACIAFBAEciAzYC2AEgAiAHNgLUASACIAE2 +AtABIAJBADYCzAEgAiADNgLIAQNAIAJBCGogAkHIAWoQ0BAgAigCCCIBRQRAIAIoAqABIgFB/wFx +RQRAIAFBgP4DcQRAIAJByAFqIgEgAigCpAEQ6kIgARCeLiIEDQQLIAIoArQBIQQgAigCsAEiAUGA +gICAeEYNBCACKAK4ASEHIAJByABqEP0CIAJB+ABqEM4wDAcLQeTAwABBKEGYssEAEOYrAAsgAkGg +AWogASACKAIMEMcTIgRFDQALCyACQbABahCIPwsgBBDvICEEIAJByABqEP0CIAJB+ABqEM4wDAEL +IAggCigCADYCACAJIAMoAgA2AgAgAiACLwF0OwDJASACIAIpA1g3AuABIAIgAikDaDcC1AEgAiAE +NgLQASACIAc2AswBIAIgAToAyAEgAiAGLQAAOgDLASACQcgBahDOHiEEC0GAgICAeCEBCyAAQdwN +ahCsOSAAQQE6AOwNIAFBgYCAgHhGDQEgAiAHNgI8IAIgBDYCOCACIAE2AjQgDCgCAEGAgICAeEYN +BiACIAA2AsgBIAJByAFqEL0uIABBgICAgHg2AuANIA0gAkE0ahD5LAwCCyAAQQM6AOwNCyANQYGA +gIB4NgIACyACQfABaiQADAULQaDEwABBI0GgusEAEOYrAAsMAgtBjMLAAEE2QcTCwAAQnzcACyAM +QYCAgIB4NgIAQeTAwABBKEH8wcAAEOYrAAsgAiACKALMATYCsAFBuKnBAEErIAJBsAFqQYipwQBB +wLrBABCJGAALIAUoAhQiAkGBgICAeEYNASAFKAIcIQMgBSgCGCEBIAAQmCwCfyACQYCAgIB4RwRA +IAUgAzYCKCAFIAE2AiQgBSACNgIgIAVBgAE2AiwgBSAFQSBqEK9BNgIUIAVBCGogAEHgG2ogBUEs +aiIDIAVBFGoiBBD7JyAFKAIIIAUoAgwQ5EEMAQsgBUGAATYCLCAFIAE2AhQgBSAAQeQbaiAFQSxq +IgMgBUEUaiIEEPsnIAUoAgAgBSgCBBDkQQshASAEEJZBIAMQlkEgBSABNgIQIAVBEGoQlkEgAEHg +G2oQlkEgAEHkG2oQlkFBAQwCC0HQl8YAQSNBtMHGABDmKwALQQMLOgDoGyAFQTBqJAAgAkGBgICA +eEYL/SYCF38CfiMAQUBqIgkkACAAAn8CQAJAAkACQAJAIAAtAPgCQQFrDgMDAAIBCwALIABBwAFq +IABBuAEQzU8aCyAJQSBqIRMjAEHgB2siAiQAAkACQAJAAkACQAJAIABBwAFqIgMCfwJAAkACQAJA +AkACQAJAIAMoAgBBgICAgHhHBEACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQCADLQC0AUEBaw4DGBEAAQsCQCADQTRqIhctAABBAWsOBRsRAwQIAAsgA0EY +aigCACEFIANBFGooAgAhBCADKAIQIQcMAQsgA0E0aiIXQQA6AAAgA0EYaiADKAIIIgU2AgAgA0EU +aiADKAIEIgQ2AgAgAyADQQxqIgc2AhALIANBJGogBTYCACADQSBqIAQ2AgAgA0EcaiIEIAc2AgAg +A0EoahDoSCAEKAIAKAIAIQQgA0HsAGpBADoAACADQThqIARBjAFqNgIACyACQbAFaiADQThqIggg +ARCpBiACLQCwBSIFQQxGDRYgAkGeAWoiDCACLQCzBToAACACQZABaiIKIAJByAVqKQIANwMAIAJB +mAFqIgsgAkHQBWooAgA2AgAgAiACLwCxBTsBnAEgAiACKQLABTcDiAEgAigCtAUhByACKAK4BSEE +IAIoArwFIQYgCBDXPyAFQQtHDQEgA0GQAWogBDYCACADQYwBaiIEIAc2AgAgA0GIAWpBADoAACAD +IAQ2AjgLIAJBsAVqIANBOGoiECABENIUIAItALAFIgVBDEYNASACQbYBaiIIIAItALMFOgAAIAJB +qAFqIgogAkHIBWopAgA3AwAgAkGwAWoiDCACQdAFaigCADYCACACIAIvALEFOwG0ASACIAIpAsAF +NwOgASACKAK0BSEHIAIoArgFIQQgAigCvAUhBiAQENg/IAVBC0cNAiACIAQ2AvQDIAIgBzYC8AMj +AEEgayIFJAAgBUEANgIUIAVBCGogBUEUaiAEQRBqIgYoAgggBkEMaigCABDFDCACQUBrIAUpAwg3 +AwAgBUEgaiQAIAIoAkQhBSACKAJAIQYgAkG4AWoiCiAEKAI4IANBIGoiCygCACADQSRqIgQoAgAQ +/0ogAkE4aiADQRxqIggoAgAQ3EYgAkEwaiACKAI4IAIoAjwQwjAgAkGwBWoiByADQShqIAIoAjAg +AigCNCAGIAUgChCtIiAHELI3IAJB8ANqEJpMIANBjAFqELFLIANB1ABqIgVBADoAACADQUBrIAQo +AgAiBDYCACADQTxqIAsoAgAiBzYCACADIAgoAgAiBjYCOAwECyACQY4DaiAMLQAAOgAAIAJBgANq +IAopAwA3AwAgAkGIA2ogCygCADYCACACIAIvAZwBOwGMAyACIAIpA4gBNwP4AgwdC0EEDBoLIAJB +jgNqIAgtAAA6AAAgAkGAA2ogCikDADcDACACQYgDaiAMKAIANgIAIAIgAi8BtAE7AYwDIAIgAikD +oAE3A/gCIANBjAFqELFLDBsLIANBOGohEAJAIANB1ABqIgUtAABBAWsOBQMJAgQIAAsgA0FAaygC +ACEEIANBPGooAgAhByADKAI4IQYLIANByABqIAQ2AgAgA0HEAGogBzYCACAGKAIAQYgBaigCACEE +IANBkAFqQQA6AAAgA0HYAGogBEEIajYCAAsgA0HYAGoiBCABELgHIgYNAkEDIQEMFQtBoMTAAEEj +QZCfwQAQ5isACyADQdgAaiEEAkAgA0GgAWoiBi0AAEEBaw4DEAUDAAsgBCgCACEHDAELIANB0ABq +IgogBjYCACAEENk/IANBoAFqIgZBADoAACADIAooAgBBFGoiBzYCWCADQcwAaiAHNgIACyADQZwB +akEAOgAAIANB3ABqIAc2AgALIAJBKGogA0HcAGoiCyABEPAPIAIoAigNBiACKAIsIQogCxDbPyAK +BEACQCACIAo2AvQGIAJBsAVqIAJB9AZqEMoaIAIoArAFBEAgAkHwA2oiCiACQbQFakHAARDNTxog +AkGcB2oiCCAKEPFRIAJB9AZqEK05IAJBIGogCBDDMCACIAIoAiQiCDYC9AMgAiACKAIgIgs2AvAD +IAJBADYCsAUgAkEYaiACQbAFaiALIAgQxQwgAigCHCEIIAIoAhghDiAKEPo+DAELIAJB9AZqEK05 +CwsgBkEBOgAAIAQQ3j9BDSEHIAJBDToAsAUgDgRAIAJBsAVqIgYQgB0gA0GwAWogCDYCACADQawB +aiAONgIAIANB4ABqIANByABqKAIAIgQ2AgAgAyADQcQAaigCACIHNgJcIANB2ABqIhEgA0HMAGoo +AgA2AgAgA0HkAGogBkHEABDNTxogA0GoAWoiBkEAOgAADAQLQQAhCEEADAULIANB2ABqIREgA0Go +AWoiBi0AAEEBaw4DDAADAQsACyADQeAAaigCACEEIANB3ABqKAIAIQcLIANB6ABqIAQ2AgAgA0Hk +AGogBzYCACADKAJYKAIMIQQgA0GkAWpBADoAACADQewAaiAEQQhqNgIACyADQewAaiIEIAEQuAci +AUUNCSACIAE2ApgHIAQQ2T8gAkGYB2oQ1EwiASgCACEEIAJBDToAnAcgAkH0BmogAUEAIAQbIAJB +nAdqEKo4AkAgAi0A9AYiDUEWRgRAIAJB8ANqIAIoAvgGIANB5ABqKAIAIANB6ABqKAIAEMlJIAJB +yAdqIAJBnwRqKQAANwMAIAJB0AdqIAJBpwRqKQAANwMAIAJB2AdqIAJBrwRqLQAAOgAAIAIgAikA +lwQ3A8AHIAIvAfADIAItAPIDQRB0ciESIAIvAZAEIAJBkgRqLQAAQRB0ciEOIAIvAIkEIAJBiwRq +LQAAQRB0ciEBIAIvAYIEIAJBhARqLQAAQRB0ciEFIAIvAPsDIAJB/QNqLQAAQRB0ciEEIAIvAfQD +IAJB9gNqLQAAQRB0ciEKIAIoAJMEIRQgAigCjAQhDCACKACFBCEPIAIoAf4DIQggAigA9wMhCyAC +LQDzAyEHIAJBmAdqEJpMDAELIAIvAPUGIAItAPcGQRB0ciEKIAIvAJEHIAJBkwdqLQAAQRB0ciEO +IAIvAYoHIAJBjAdqLQAAQRB0ciEBIAIvAIMHIAJBhQdqLQAAQRB0ciEFIAIvAfwGIAJB/gZqLQAA +QRB0ciEEIAIoApQHIRQgAigAjQchDCACKAGGByEPIAIoAP8GIQggAigC+AYhCyACQZgHahCaTCAN +IQcLIAJBqANqIhggAkHYB2ooAgA2AgAgAkGgA2oiFSACQdAHaikDADcDACACQZgDaiIWIAJByAdq +KQMANwMAIAIgAikDwAc3A5ADIAZBAToAACACQbgDaiIGIBYpAwA3AwAgAkHAA2oiFiAVKQMANwMA +IAJByANqIhUgGCgCADYCACACIAIpA5ADNwOwAyAREN8/IA1BFkYEQCACQegDaiAVLQAAOgAAIAJB +4ANqIBYpAwA3AwAgAkHYA2ogBikDADcDACACIAIpA7ADNwPQAyAHQRh0IBJyIRIgA0GwAWooAgAi +B0EIdiERIA8hDSAFIQYgCCEPIAQhBSALIQggCiEEIANBrAFqKAIADAELIANBrAFqEPo+IAwhDSAB +IQYgDiEBIBQhDCALIRIgCiERQQALIQogA0HQAGoQmkwgA0EBOgBUIAJBkAJqIAJB6ANqLQAAIgs6 +AAAgAkGIAmogAkHgA2opAwAiGTcDACACQYACaiACQdgDaikDACIaNwMAIAJBoAJqIBo3AwAgAkGo +AmogGTcDACACQbACaiALOgAAIAIgAikD0AMiGTcD+AEgAiAZNwOYAiAHQf8BcSELIBFBCHQCQAJA +AkACQAJAIBAtABxBA2sOAwABAgQLIBBBIGoQ2T8MAwsgEEEgahDePwwBCyAQQSBqEN8/IBBB9ABq +EPo+CyAQQRhqEJpMCyALciELIApFDQEgAiAOOwHYAiACQdoCaiAOQRB2OgAAIAIgATsA0QIgAkHT +AmogAUEQdjoAACACIAY7AcoCIAJBzAJqIAZBEHY6AAAgAiAFOwDDAiACQcUCaiAFQRB2OgAAIAIg +BDsBvAIgAkG+AmogBEEQdjoAACACQecCaiACQaACaikDADcAACACQe8CaiACQagCaikDADcAACAC +QfcCaiACQbACai0AADoAACACIBQ2ANsCIAIgDDYC1AIgAiANNgDNAiACIA82AcYCIAIgCDYAvwIg +AiASNgK4AiACIAIpA5gCNwDfAiACQRBqIANBHGooAgAQ3EYgAkEIaiACKAIQIAIoAhQQwjAgAkGw +BWoiASADQShqIAIoAgggAigCDCAKIAsgAkG4AmoQrSIgARCyNwwMCyAGQQM6AABBBCEBDAkLIAIg +ATsAzQUgAkHPBWogAUEQdjoAACACIAY7AcYFIAJByAVqIAZBEHY6AAAgAiAFOwC/BSACQcEFaiAF +QRB2OgAAIAIgBDsBuAUgAkG6BWogBEEQdjoAACACIAw2AtAFIAIgDTYAyQUgAiAPNgHCBSACIAg2 +ALsFIAIgEjYCtAUgAiALNgKwBUHEk9sAKAIAQQNLDQdBnI7bABD7PiIBQf8BcUUNB0EAIQVBnI7b +ACgCACABEPUuRQ0HQZyO2wAoAgAiAUEoaigCACEGIAFBJGooAgAhCCABKAIcIQwgAiABQSBqKAIA +IgQEfyACQQA2AoAEIAIgBjYC/AMgAiAINgL4AyACIAQ2AvQDQQEhBSAMBUEACzYC8AMgAkGwA2og +AkHwA2pB/KTBABDYLCACQfwDakIANwIAIAJBATYC9AMgAkHIpcEANgLwAyACQeDHwAA2AvgDIAIg +BCAFSwR/IAIgBTYChAcgAiAGNgKAByACIAg2AvwGIAIgBDYC+AYgDAVBAAs2AvQGIAJBwAdqIgUg +AkH0BmoiBEH8pMEAENgsIAJBsAdqQdyXwQA2AgAgAkGsB2ogAkGQA2o2AgAgAkHAx8AANgKkByAC +IAU2AqgHIAIgAkHwA2o2AqAHIAIgAkGwA2o2ApwHIAIgAkGwBWo2ApADIAQgAUEcaiACQZwHahDy +QUGcjtsAKAIAIAQQxDQMBwtBoMTAAEEjQaC5wQAQ5isAC0GMwsAAQTZBxMLAABCfNwALQQMMBgtB +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 +OgAIIAAgAEHoBmoiAzYCACAAQQhqIQoLIAAgAzYCBCADEJ5NQRhBBBCrOSEDIAJBuAhqIgkgACgC +BBDgECADQRBqIAJByAhqIgYpAgA3AgAgA0EIaiACQcAIaiIEKQIANwIAIAMgAikCuAg3AgAgAkEI +ahDRMiACQZgKaiIHQQA2AgAgAkGICmpCCDcDACACQYAKaiIIQgA3AwAgAkHwCWpCBDcDACACQegJ +aiILQgA3AwAgAkGgCWpCADcDACACQagJakIENwMAIAJBsAlqQoCAgIDAADcDACACQbgJakIANwMA +IAJBwAlqQgg3AwAgAkHICWpCgICAgIABNwMAIAJB0AlqQgA3AwAgAkHYCWpCCDcDACACQYCAgIB4 +NgKACSACQQA2AtgIIAJCgICAgMAANwOQCiACQoCAgIDAADcD+AkgAkKAgICAgAE3A+AJIAJBADYC +8AggAkKAgICAwAA3A5gJIAIpAwghFSACKQMQIRYgAkH8CGoiDEEANgIAIAJB0AhqIg0gFjcDACAC +QaQKaiIPQQA2AgAgBiAVNwMAIARB8MLAACkDADcDACACQbgBaiACQegIaikDADcDACACQbABaiAC +QeAIaikDADcDACACQQA2AvQIIAJCgICAgMAANwKcCiACQYCAgIB4NgKMCSACQejCwAApAwA3A7gI +IAIgAikD2Ag3A6gBIAJBiANqIhAgAkGICWooAgA2AgAgAiACKQOACTcDgAMgAkHAAmoiESALKAIA +NgIAIAIgAikD4Ak3A7gCIAJBsAJqIgsgAkH0CWooAgA2AgAgAiACKQLsCTcDqAIgAkGgAmoiEiAI +KAIANgIAIAIgAikD+Ak3A5gCIAJBkAJqIgggAkGMCmooAgA2AgAgAiACKQKECjcDiAIgAkGAAmoi +EyAHKAIANgIAIAIgAikDkAo3A/gBIAJByAJqIgcgAkG8CWpBJBDNTxogAkGYA2oiFCAMKAIANgIA +IAJBkAFqIAQpAwA3AwAgAkGYAWogBikDADcDACACQaABaiANKQMANwMAIAIgAikC9Ag3A5ADIAIg +AikDuAg3A4gBIAJB8AFqIgYgDygCADYCACACIAIpApwKNwPoASACQfgCaiIEIAJBlAlqKAIANgIA +IAIgAikCjAk3A/ACIAJBmAlqEOk/IAAoAgQhDCACQZgNaiACQYgBakE4EM1PGiACQaADaiINIAlB +mAUQzU8aIABBEGogDUGYBRDNTxogAEGoBWpBADYCACAAQewFakIENwIAIABB5AVqQgE3AgAgAEHg +BWogAzYCACAAQdgFakKAgICAEDcDACAAQdAFakKAgICAwAA3AwAgAEGsBWogAikDkAM3AgAgAEG0 +BWogFCgCADYCACAAQbgFaiACKQOAAzcDACAAQcAFaiAQKAIANgIAIABBxAVqIAIpA/ACNwIAIABB +zAVqIAQoAgA2AgAgAEH0BWogB0EkEM1PGiAAQaAGaiARKAIANgIAIABBmAZqIAIpA7gCNwMAIABB +pAZqIAIpA6gCNwIAIABBrAZqIAsoAgA2AgAgAEGwBmogAikDmAI3AwAgAEG4BmogEigCADYCACAA +QbwGaiACKQOIAjcCACAAQcQGaiAIKAIANgIAIABB0AZqIBMoAgA2AgAgAEHIBmogAikD+AE3AwAg +AEHgBmogDEEYajYCACAAQeQGakEAOgAAIABB3AZqIAYoAgA2AgAgAEHUBmogAikD6AE3AgALIAJB +uAhqIABBEGoiBiABEL4RIAItALgIIgNBDEcEQCACQcUBaiACQbgIakEBciIEQSMQzU8aIAYQ+Twg +A0ELRg0FIAIgAzoAuAggBCACQcUBakEjEM1PGkHEk9sAKAIAQQRLDQRB2IjbABD7PiIDQf8BcUUN +BEEAIQZB2IjbACgCACADEPUuRQ0EQdiI2wAoAgAiA0EoaigCACEJIANBJGooAgAhByADKAIcIQgg +AiADQSBqKAIAIgQEfyACQQA2AowOIAIgCTYCiA4gAiAHNgKEDiACIAQ2AoAOQQEhBiAIBUEACzYC +/A0gAkHoDWogAkH8DWpB5MbAABDYLCACQYgOakIANwIAIAJBATYCgA4gAkG4x8AANgL8DSACQeDH +wAA2AoQOIAIgBCAGSwR/IAIgBjYCuA4gAiAJNgK0DiACIAc2ArAOIAIgBDYCrA4gCAVBAAs2AqgO +IAJBlA5qIgQgAkGoDmoiBkHkxsAAENgsIAJB5A1qQdDHwAA2AgAgAkHgDWogAkG8Dmo2AgAgAkHA +x8AANgLYDSACIAQ2AtwNIAIgAkH8DWo2AtQNIAIgAkHoDWo2AtANIAIgAkG4CGo2ArwOIAYgA0Ec +aiACQdANahDyQUHYiNsAKAIAIAYQxDQMBAtBAyEDDA8LQaDEwABBI0GwxsAAEOYrAAtBoMTAAEEj +QfC2wQAQ5isAC0GMwsAAQTZBxMLAABCfNwALIAJBuAhqELAaCyAAKAIEIQMgAEFAa0EAOgAAIAAg +A0HIAGo2AgwLIAJBuAhqIABBDGoiCSABEKkGIAItALgIIgNBDEYNAyACQd4OaiIHIAItALsIOgAA +IAJByA5qIgggAkHMCGopAgA3AwAgAkHQDmoiCyACQdQIaikCADcDACACIAIvALkIOwHcDiACIAIp +AsQINwPADiACKAK8CCEGIAIoAsAIIQQgCRDXPyADQQtHDQEgACAGNgJgIABB5ABqIAQ2AgAgAEHc +AGpBADoAACAAIABB4ABqNgIMCyACQbgIaiAAQQxqIgQgARDSFCACLQC4CCIDQQxGDQMgAkH6Dmoi +CSACLQC7CDoAACACQegOaiIHIAJBzAhqKQIANwMAIAJB8A5qIgggAkHUCGopAgA3AwAgAiACLwC5 +CDsB+A4gAiACKQLECDcD4A4gAigCvAghASACKALACCEGIAQQ2D8gA0ELRgRAIAAoAgQoAggiBCAE +KAIAIgNBAWo2AgAgAiAGNgKkAyACIAE2AqADIANBAEgNBSACQfwOaiEDIwBB4AZrIgEkACABIAQ2 +AiAgAUH4BGogAUEgahDKGiABQQ06ALwGAkAgASgC+AQEQCABQbgDaiIJIAFB/ARqQcABEM1PGiAB +QbwGahDlDiABQfgBaiIHIAlBwAEQzU8aIAFBOGoiCCAHQcABEM1PGiABQSxqIgcgCBDxUSABQRhq +IAcQnyEgASABKAIcIgc2AiggASABKAIYIgg2AiQgAUH4BGoiCyAEQQhqEO0eIAFBmAVqELMrIAkg +BiALELUJIAEtALgDIgRBFkYEQCABQThqIgQQ6EggAUEQaiABQfgEaiIJEKEpIAQgCCAHIAEoAhAg +ASgCFBDAMSABQQhqIAYoAhAgBkEUaigCABDCMCABQcgDaiABQUBrKAIANgIAIAEgASkDCDcCuAMg +ASABKQI4NwLAAyABQfgBaiABQbgDahD0HSADQQxqIAFBgAJqKAIANgIAIAMgASkD+AE3AgQgA0EW +OgAAIAkQ8DcMAgsgA0EBaiABQbgDakEBckEjEM1PGiADIAQ6AAAgAUH4BGoQ8DcgAUEkahD6PgwB +CyABQbgDaiIGIAFBvAZqQSQQzU8aIAFB+AFqIgQgBkEkEM1PGiADIARBJBDNTxoLIAFBIGoQrTkg +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 +BQALIAIoAgggAkEANgIIEMtBGgwICyAKQQNHBEAgAiADNgKcASACIAk2ApgBIAIgCzYCkAEgAiAN +NgKMASACIAQ2AoQBIAIgBTYCgAEgAiAMNgKUASACIAc2AogBIAIgCjYCfEEAIQRBnOjOAEEWEPEf +IQhBAQwMCyACKAIIIQogAkEANgIIIAJB6ABqIAoQy0EQuCAgAigCaCIKQQNHBEAgAigCcCEEIAIo +AmwhBQwICyACIAM2ApwBIAIgCTYCmAEgAiALNgKQASACIA02AowBIAIgBDYChAEgAiAFNgKAASAC +IAw2ApQBIAIgBzYCiAFBAyEKDAkLIAcEQCACIAM2ApwBIAIgCTYCmAEgAiALNgKQASACIA02AowB +IAIgBDYChAEgAiAFNgKAASACIAw2ApQBQQEhByACQQE2AogBIAIgCjYCfEEAIQRBsujOAEEEEPEf +DAoLIAIoAgghByACQQA2AgggAkHoAGogBxDLQRC2HSACKAJoRQ0EIAIgAzYCnAEgAiAJNgKYASAC +IAs2ApABIAIgDTYCjAEgAiAENgKEASACIAU2AoABIAIgDDYClAFBACEHIAJBADYCiAEgAiAKNgJ8 +IAIoAmwhCEEBIQNBASEFQQAhBEEBDAsLIAxBBEcEQCACIAM2ApwBIAIgCTYCmAEgAiALNgKQASAC +IA02AowBIAIgBDYChAEgAiAFNgKAASACIAw2ApQBIAIgBzYCiAEgAiAKNgJ8QQAhBEG26M4AQRsQ +8R8hCEEBDAoLIAIoAgghDCACQQA2AgggAkHoAGogDBDLQRC2ICACKAJoIgxBBEcEQCACKAJwIQMg +AigCbCEJDAYLIAIgAzYCnAEgAiAJNgKYASACIAs2ApABIAIgDTYCjAEgAiAENgKEASACIAU2AoAB +QQQhDAwGCyACKAKgAUGAgICAeEcEQCACIAM2ApwBIAIgCTYCmAEgAiALNgKQASACIA02AowBIAIg +BDYChAEgAiAFNgKAASACIAw2ApQBIAIgBzYCiAEgAiAKNgJ8QQAhBEHF584AQRsQ8R8hCEEBDAkL +IAJB6ABqIAIQ30AgAigCaCIIQYCAgIB4Rg0DIAIpAmwhFSACQaABahDKRCACIBU3AqQBIAIgCDYC +oAEMBAsgAigCrAFBgICAgHhHBEAgAiADNgKcASACIAk2ApgBIAIgCzYCkAEgAiANNgKMASACIAQ2 +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 +BCADQRdqIAIpAwA3AAAgACADKQIwNwIUIABBHGogA0E4aikCADcCACADIAMpA1A3AA8gACADKQAM +NwABIABBCWogA0EUaikAADcAACAAQRBqIANBG2ooAAA2AABBASECDAILQQMhAkEMIQQMAQtBoIfE +AEEjQaiMxAAQ5isACyABIAI6AAwgACAEOgAAIANB4ABqJAAL/AIBA38jAEHgAGsiAyQAAkACQAJA +AkACQAJAIAEtAAxBAWsOAwQAAQILAAsgAUEIaigCACEFIAEoAgQhBAwBCyADQQw6ABAgA0EQahDa +OiABKAIAIQVBOEEEEKs5IgRBADoANCAEIAU2AgAgA0EIaiIFQZCx0AA2AgQgBSAENgIAIAMoAggh +BCABQQhqIAMoAgwiBTYCACABIAQ2AgQLIANBxABqIAQgAiAFKAIMEQMAIAMoAkRBgYCAgHhHBEAg +A0HYAGoiAiADQcwAaigCADYCACADIAMpAkQ3A1AgAUEEahCZNkELIQQgA0FAayACKAIANgAAIAAg +AykCEDcCECAAQRhqIANBGGopAgA3AgAgAEEgaiADQSBqKAIANgIAIAMgAykDUDcAOCAAIAMpADU3 +AAEgAEEIaiADQTxqKQAANwAAQQEhAgwCC0EDIQJBDCEEDAELQaCHxABBI0HYjMQAEOYrAAsgASAC +OgAMIAAgBDoAACADQeAAaiQAC/wCAQN/IwBB4ABrIgMkAAJAAkACQAJAAkACQCABLQAMQQFrDgME +AAECCwALIAFBCGooAgAhBSABKAIEIQQMAQsgA0EMOgAQIANBEGoQ3jogASgCACEFQQhBBBCrOSIE +QQA6AAQgBCAFNgIAIANBCGoiBUHQtdAANgIEIAUgBDYCACADKAIIIQQgAUEIaiADKAIMIgU2AgAg +ASAENgIECyADQcQAaiAEIAIgBSgCDBEDACADKAJEQYCAgIB4RwRAIANB2ABqIgIgA0HMAGooAgA2 +AgAgAyADKQJENwNQIAFBBGoQmTZBCyEEIANBQGsgAigCADYAACAAIAMpAhA3AhAgAEEYaiADQRhq +KQIANwIAIABBIGogA0EgaigCADYCACADIAMpA1A3ADggACADKQA1NwABIABBCGogA0E8aikAADcA +AEEBIQIMAgtBAyECQQwhBAwBC0Ggh8QAQSNByI7EABDmKwALIAEgAjoADCAAIAQ6AAAgA0HgAGok +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 +qLrNABCSOiACIARqIQQMAgsgA0EwaiABIAIgBhC/HSADQTxqKAIAIQIgAygCOCEBIAMoAjQhBiAD +KAIwIQcgA0EgaiAFQcAAIARByLnNABDGNSADKAIgIAMoAiQgByAGQdi5zQAQkjogA0EsaiAFQQEQ +zEgLIAJBP3EhBCACQcAATwRAIANBLGogASACQQZ2EMxICyADQRhqIAVBwAAgBEHouc0AEPotIAMo +AhggAygCHCABIAJBQHFqIARB+LnNABCSOgsgACAEOgCQASADQUBrJAAL3QIBBX8jAEFAaiIDJAAg +AyAANgIoIABBoAFqIQUgAEGgAmotAAAhBCADIANBKGo2AiwCQAJAAkAgAkGAASAEayIGTwRAIAQN +AQwCCyADQRBqIAVBgAEgBEGIus0AEMY1IANBCGogAygCECADKAIUIAJBmLrNABD6LSADKAIIIAMo +AgwgASACQai6zQAQkjogAiAEaiEEDAILIANBMGogASACIAYQvx0gA0E8aigCACECIAMoAjghASAD +KAI0IQYgAygCMCEHIANBIGogBUGAASAEQci5zQAQxjUgAygCICADKAIkIAcgBkHYuc0AEJI6IANB +LGogBUEBEINJCyACQf8AcSEEIAJBgAFPBEAgA0EsaiABIAJBB3YQg0kLIANBGGogBUGAASAEQei5 +zQAQ+i0gAygCGCADKAIcIAEgAkGAf3FqIARB+LnNABCSOgsgACAEOgCgAiADQUBrJAALxwMBAn8j +AEEwayICJAACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQEELIAAtAABBC2tB/wFxIgMgA0ELTxtB +AWsOCwECAwQFBgcICQoLAAsgAUHEg84AQSsQh0EMCwsgAUHvg84AQSQQh0EMCgsgAUGThM4AQcIA +EIdBDAkLIAFB1YTOAEHKABCHQQwICyABQZ3/zQBBJxCHQQwHCyABQZ+FzgBBOxCHQQwGCyAAQQRq +IAEQnBIMBQsgAEEEaiABEKEGDAQLIAFB2oXOAEE1EIdBDAMLIAIgAEEEajYCACACIABBCGo2AgQg +AkEUakICNwIAIAJBLGpBvQE2AgAgAkECNgIMIAJB2IbOADYCCCACQb0BNgIkIAIgAkEgajYCECAC +IAJBBGo2AiggAiACNgIgIAEgAkEIahCPRQwCCyMAQTBrIgMkAAJ/IABBBGoiACgCAEUEQCABQa3R +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 +thZqLQAAOgAAIAJB+BVqIAJBoBZqKQMANwMAIAJBgBZqIAJBqBZqKQMANwMAIAJBiBZqIAJBsBZq +LQAAOgAAIAIgAi8BtBY7AdwbIAIgAikDmBY3A/AVDAMLIAJBoBBqQaCQxwBBCxC6TiACLQCgEEUN +AQsgAigCpBAMAwsgAkHeG2ogAi0AoxA6AAAgAkGAHGogAkG4EGopAgAiGjcDACACQfgVaiACQbAQ +aikCADcDACACQYAWaiAaNwMAIAJBiBZqIAJBwBBqLQAAOgAAIAIgAi8AoRA7AdwbIAIgAkGoEGop +AgA3A/AVIAJBpBBqKAIAIRILIAIoAsAWIg9FIQsCQCAPRQRAQauQxwBBDBDsHyEEIAJBoBBqIgVB +ADYCCCAFIAQ2AgAgAigCqBAiDwRAIAIgAikDoBA3A+AbDAILIAIoAqAQIQMMBAsgAiACKQO4FjcD +4BsLIAIgDzYC6BsCQCACKQPIFlAEQCACQaAQakG3kMcAQRQQuU4gAigCoBBFBEAgAkHwG2ogAkGo +EGpBiAUQzU8aDAILIAIoAqQQIQMgAkHgG2oQtEgMBAsgAkHwG2ogEEGIBRDNTxoLIAJBphBqIAJB +3htqLQAAOgAAIAJBgBBqIAJB+BVqKQMANwMAIAJBiBBqIAJBgBZqKQMANwMAIAJBkBBqIAJBiBZq +LQAAOgAAIAIgAi8B3Bs7AaQQIAIgAikD8BU3A/gPIAIpA+AbIRogAkHwCmogAkHwG2pBiAUQzU8a +IAIgAigAoxA2AJsQIAIgAigCoBA2ApgQQgEgGSAZQgJRGwwDCyACKAKgEAshA0EBIQsLIAIpA8gW +UEUEQCAQEN5RCyACKALAFkEARyALcQRAIAJBuBZqELRIC0ICCyEZIAcgBy0AJEEBajoAJCAHEI0T +IQQgAkG/EGogAigAmxA2AAAgAkHPEGogAkGAEGopAwA3AAAgAkHXEGogAkGIEGopAwA3AAAgAkHf +EGogAkGQEGotAAA6AAAgAiAPNgK4ECACIBo3A7AQIAIgFTYCrBAgAiADNgKoECACIBI2AMMQIAIg +AigCmBA2ArwQIAIgAikD+A83AMcQIAIgGTcDoBAgAkHgEGogAkHwCmpBiAUQzU8aIAIgBDYC6BUC +QCAZQgJSBEAgBA0BIAJBDGogAkGsEGpBvAUQzU8aDAgLIARFDQYgAkHoFWoQ3x0MBgsgAkGgEGoQ +70NCAiEZIAQhAwwGCyACQRg2AqAQIAcgAkGgEGoQgDELIQMgDkICNwMAIA4gAzYCCAwGC0EBQfyQ +xwBB/ILHABDeFyEDC0ICCyEZIAcgBy0AJEEBajoAJCAHEJ8MIQQgAkHOEGogAkHYCmopAwA3AQAg +AkHWEGogAkHgCmopAwA3AQAgAkHeEGogAkHoCmovAQA7AQAgAiAQNgHCECACIA87AcAQIAIgCzYC +uBAgAiAaNwOwECACIBI2AqwQIAIgAzYCqBAgAiACKQPQCjcBxhAgAiAZNwOgECACQeAQaiACQcgF +akGIBRDNTxogAiAENgLoFQJAIBlCAlEEQCAEDQEMAgsgBEUEQCACQQxqIAJBrBBqQbwFEM1PGgwD +CyACQaAQahDvQ0ICIRkgBCEDDAILIAJB6BVqEN8dC0ICIRkLIBlCAlENACAOQQxqIAJBDGpBvAUQ +zU8aIA4gAzYCCCAOIBk3AwAMAQsgByADELxSIQMgDkICNwMAIA4gAzYCCAsgAkGAIWokACAJKQMI +QgJSBEAgDSAJQQhqQcgFEM1PGgwCCyANIAkoAhA2AgggDUIDNwMADAELIA0gCSgCBDYCCCANQgM3 +AwALIAlB0AVqJAAgCCgCiCchAyAIKQOAJyIZQgNRDQAgCEH8G2ogGEG8BRDNTxogGUICUQ0DIAgg +AzYCwCEgCCAZNwO4ISAXIAhB/BtqQbwFEM1PGiAIQYAnaiEDIAhBuCFqIQcCQCAIQQhqIgQoAugb +IgJBBU8EQCADIAdByAUQzU8aDAELIAQgAkHIBWxqIAdByAUQzU8aIANCAjcDACAEIAJBAWo2Augb +CyAIKQOAJ0ICUgRAQQYgCEHPLGpB/KTIABDeFyEDIBFBATYCACARIAM2AgQgCEGAJ2oQ/kMMAwUg +CEGAJ2oQ/kMMAgsACwsgEUEBNgIAIBEgAzYCBAsgCEEIahDrUgwBCyARQQhqIAhBCGpB8BsQzU8a +IBFBADYCAAsgCEHQLGokACABIAEtACRBAWo6ACQgDCABEJ8MIgc2AoAcIAwoAghFBEAgDEEQaiED +IAdFDQIgAxDdUSAHIQMMAQsgDCgCDCEDIAdFDQAgDEGAHGoQ3x0LIAAgASADELxSNgIEQQEMAQsg +AEEIaiADQfAbEM1PGkEACzYCAAwBCyAMQRg2AgggASAMQQhqEIAxIQEgAEEBNgIAIAAgATYCBAsg +DEGQHGokAAv5AwEGfyMAQTBrIgMkACAAQQA2AiAgAEEoakICNwMAIABBJGpBADoAABD+NiEEIABB +lARqQQA2AgAgAEGABGpBADYCACAAQfwDakEAOgAAIABBADYC+AMgAEGoBGpBADYCACAAQQA2Aggg +AEEAOgAEIABBADYCACAAQYgEakIANwMAIABBkARqQQA6AAAgAEGcBGpCADcCACAAQaQEakEAOgAA +IABBrARqQgQ3AgAgAEHoAGoQiSEgAEHEBGpBADYCACAAQbwEakEANgIAIABBuARqQQA6AAAgAEEA +NgK0BCAAQZABahCJISAAQbgBahCJISAAQeABahCJISAAQYgCahCJISAAQbACahCJISAAQdgCahCJ +ISMAQRBrIgEkACABQYCAgIB4NgIAIAFBADYCDCADQQhqIgUiAkEEakH/////ARCnGiACQf////8B +NgIAIAIgASkCADcCGCACQSBqIAFBCGopAgA3AgAgAUEQaiQAIABBgANqEIkhIwBBEGsiASQAIAFB +gICAgHg2AgQgAEHIBGoiAkEEakH/////ARCnGiACQf////8BNgIAIAIgAUEEaiIGKQIANwIYIAJB +IGogBkEIaigCADYCACABQRBqJAAgAEHQA2oQiSEgACAENgLsBCAAQagDaiAFQSgQzU8aIANBMGok +AAvjAgEBfyMAQUBqIgIkAAJ/AkACQAJAAkACQCAAKAIAQQFrDgQBAgMEAAsgAkE0akIANwIAIAJB +ATYCLCACQYje0wA2AiggAkGQ3NMANgIwIAEgAkEoahCPRQwECyACQTRqQgA3AgAgAkEBNgIsIAJB +tN7TADYCKCACQZDc0wA2AjAgASACQShqEI9FDAMLIAIgACkCCDcCDCACIAAoAgQ2AhQgAkE0akIC +NwIAIAJBJGpBrAU2AgAgAkEDNgIsIAJB2N7TADYCKCACQcsNNgIcIAIgAkEYajYCMCACIAJBFGo2 +AiAgAiACQQxqNgIYIAEgAkEoahCPRQwCCyACQTRqQgA3AgAgAkEBNgIsIAJBmN/TADYCKCACQZDc +0wA2AjAgASACQShqEI9FDAELIAJBNGpCADcCACACQQE2AiwgAkG839MANgIoIAJBkNzTADYCMCAB +IAJBKGoQj0ULIAJBQGskAAuADQIWfwF+IwBB4ABrIgIkAAJAIAAoAgAEQCACQRhqIABBEGopAgA3 +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 +zU8aIAAoAvgIKAIMIQMgAEHACWpBADoAACAAQYgJaiADQQhqNgIACyAAQYgJaiIDIAEQuAciBEUN +CCACIAQ2AvAJIAMQ2T8gAigC8AlBFGoiAxCTRSADIABBxAlqQcgBEM1PGiACQfAJahCaTCAAQeAG +aigCACEGCyAGRQ0BIABBgAlqQQA6AAAgAEHECWogAEHgBmpByAEQzU8aIABB+AhqKAIAKAIUIQMg +AEHACWpBADoAACAAQYgJaiADQQhqNgIACyAAQYgJaiIDIAEQuAciBEUNCiACIAQ2AvAJIAMQ2T8g +AigC8AlBFGoiAxCTRSADIABBxAlqQcgBEM1PGiACQfAJahCaTAsgAEGYBWoiAygCAEUNASAAQYEJ +akEAOgAAIABBxAlqIANByAEQzU8aIABB+AhqKAIAKAIQIQMgAEHACWpBADoAACAAQYgJaiADQQhq +NgIACyAAQYgJaiIDIAEQuAciBEUNBiACIAQ2AvAJIAMQ2T8gAigC8AlBFGoiAxCTRSADIABBxAlq +QcgBEM1PGiACQfAJahCaTAsgAEHgBmoiAygCAEUNCyAAQYAJai0AAA0GDAsLIAJB+BVqIAJB/Alq +KQIANwMAIAJBgBZqIAJBhApqKAIANgIAIAIgAikC9Ak3A/AVQQshAwwICyACQZAUahC+RyACQZgR +aiACQeASaikCACITNwMAIAJBkBFqIAJB2BJqKQIAIhQ3AwAgAkGIEWogAkHQEmopAgAiFTcDACAC +QfgVaiAVNwMAIAJBgBZqIBQ3AwAgAkGIFmogEzcDACACIAIpAsgSIhM3A4ARIAIgEzcD8BUMBwsg +AkH4FWogAkH8CWopAgA3AwAgAkGAFmogAkGECmooAgA2AgAgAiACKQL0CTcD8BVBCyEDDAcLQQMM +BAsgAkGQFGoQvkcgAkGYEWogAkHgEmopAgAiEzcDACACQZARaiACQdgSaikCACIUNwMAIAJBiBFq +IAJB0BJqKQIAIhU3AwAgAkH4FWogFTcDACACQYAWaiAUNwMAIAJBiBZqIBM3AwAgAiACKQLIEiIT +NwOAESACIBM3A/AVDAULQQUMAgsgAxC+RwwEC0EECyEEQQ4hAwwECyAAQQA6AIAJIAsQk0ULIABB +ADoAgQkgAEHQA2oQk0UMAQsgAEGACWpBADoAAAJAIABBmAVqIgMoAgBFDQAgAEGBCWotAABFDQAg +AxC+RwsgAEGBCWpBADoAAAJAIABB0ANqIgMoAgBFDQAgAEGCCWotAABFDQAgAxC+RwsgAEGCCWoh +CkENIQMLIApBADoAACAJEN0/IAJB+AJqIAJBiBZqKQMANwMAIAJB8AJqIAJBgBZqKQMANwMAIAJB +6AJqIAJB+BVqKQMANwMAIAIgAikD8BU3A+ACQQEhBAsgBSAEOgAAIANB/wFxIgRBDkYNCCACQZgD +aiIFIAJB+AJqKQMANwMAIAJBkANqIgYgAkHwAmopAwA3AwAgAkGIA2oiByACQegCaikDADcDACAC +IAIpA+ACNwOAAyAJEI0RIARBDUcNASAAQfICakEAOgAAIABB7AJqIAAoAqgCQRRqNgIAC0EGIABB +6AJqIgkgARDGDCIDQf8BcUECRg0UGiAAIAM6ANgCIABB2QJqIANBCHY7AAAgCRDTMSAAQfkCaiID +QQA6AAAgAEH0AmogAEGwAWoiBTYCACAAQfACaiAAKAKoAkEUaiIENgIADAELIAJB+BBqIAUpAwA3 +AwAgAkHwEGogBikDADcDACACQegQaiAHKQMANwMAIAIgAikDgAM3A+AQIANBEHYhCSADQQh2IQEM +CwsgACAENgLoAiAAQbwDakEAOgAAIABB/AJqIAQ2AgAgAEHsAmogBTYCAAsgAkEYaiAAQfwCaiIE +IAEQ8A8gAigCGEUEQCACKAIcIQUgBBDbP0EAIQYgBQRAIABB7AJqKAIAIQYgAiAFNgLwCSACQfAJ +aiIFIAZBCGoQgBtBAXMhBiAFEK05CyAAIAY6APgCIABBvANqIgdBADoAACAAIAAoAugCIgU2AvwC +DAELIANBAzoAAEEHDBELIAUoAhAhBSAAQbgDakEAOgAAIABBgANqIAVBCGo2AgALAkAgAEGAA2oi +BiABELgHIgUEQCACIAU2AvAJIAYQ2T9BACEKQQAhBSACQfAJahDUTCILKAIABEAgCygCxAEiBSAF +KAIAIgtBAWo2AgAgC0EASA0GCyACQfAJahCaTCAHQQE6AAAMAQsgB0EDOgAAQQEhCgsgCkUEQCAE +ENs/QQAhBCAFBEAgAEHsAmooAgAhBCACIAU2AvAJIAJB8AlqIgUgBEEQahCAG0EBcyEEIAUQrTkL +IAAgBDoA/AIgAEHAA2oiBUEAOgAAIAAgACgC6AIiBDYCgAMMAQsgA0EEOgAAQQcMDwsgBCgCFCEE +IABBvANqQQA6AAAgAEGEA2ogBEEIajYCAAsCQCAAQYQDaiIEIAEQuAciBwRAIAIgBzYC8AkgBBDZ +P0EAIQdBACEEIAJB8AlqENRMIgooAgAEQCAKKALEASIEIAQoAgAiCkEBajYCACAKQQBIDQQLIAJB +8AlqEJpMIAVBAToAAAwBCyAFQQM6AABBASEHCyAHDQIgBhDbP0EAIQMgBARAIABB7AJqKAIAIQMg +AiAENgLwCSACQfAJaiIEIANBDGoQgBtBAXMhAyAEEK05CyAAQQE6APkCIAAgAEH4AmotAAA6ANsC +IABB3AJqIgQgAEH8AmotAABBCHQgA3I7AQAgCRDUMSACQaADaiAAKAKoAkEUahDgECACQQhqENEy +IAJB0AtqIgNBADYCACACQcALakIINwMAIAJBuAtqIgVCADcDACACQagLakIENwMAIAJBoAtqIgZC +ADcDACACQdgKakIANwMAIAJB4ApqQgQ3AwAgAkHoCmpCgICAgMAANwMAIAJB8ApqQgA3AwAgAkH4 +CmpCCDcDACACQYALakKAgICAgAE3AwAgAkGIC2pCADcDACACQZALakIINwMAIAJBgICAgHg2ArgK +IAJBADYCkAogAkKAgICAwAA3A8gLIAJCgICAgMAANwOwCyACQoCAgICAATcDmAsgAkEANgKoCiAC +QoCAgIDAADcD0AogAikDCCETIAIpAxAhFCACQbQKaiIHQQA2AgAgAkGICmoiCiAUNwMAIAJB3Atq +IgtBADYCACACQYAKaiIOIBM3AwAgAkH4CWoiDEHwwsAAKQMANwMAIABB8AlqIAJBsANqKQIANwIA +IABB6AlqIAJBqANqKQIANwIAIABB4AlqIAIpAqADNwIAIAJBADYCrAogAkKAgICAwAA3AtQLIAJB +gICAgHg2AsQKIAJB6MLAACkDADcD8AkgAEH4CWpBADYCACAAQZAKaiACQcAKaigCADYCACAAQYgK +aiACKQO4CjcDACAAQegKaiACKQOYCzcDACAAQfAKaiAGKAIANgIAIABB9ApqIAIpAqQLNwIAIABB +/ApqIAJBrAtqKAIANgIAIABBgAtqIAIpA7ALNwMAIABBiAtqIAUoAgA2AgAgAEGUC2ogAkHEC2oo +AgA2AgAgAEGMC2ogAikCvAs3AgAgAEGgC2ogAygCADYCACAAQZgLaiACKQPICzcDACAAQaAKaiAC +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 +QAJAAkACQAJAIAAtANgBQQFrDgMDAAIBCwALIABB6ABqIABB6AAQzU8aCyA3QRRqIUUgASEhIwBB +wAVrIhokAAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQCAAQegAaiIqKAIAIgpBB0cEQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgKi0A +ZEEBaw4DKwEAAgsCQCAqQdgAaiJELQAAQQFrDggNAQQGCggiDAALICpB0ABqKAIAIQ0gKkHMAGoo +AgAhCCAqQdQAaigCACIcKAIAIQogKigCSCEZDAILAAsgKkHYAGoiREEAOgAAICpB1ABqICo2AgAg +KkHMAGogKigCQCIINgIAICogKkHgAGoiGTYCSCAqQdAAaiAqQcQAaigCACINNgIAICohHAsCQAJA +AkAgCkEBaw4GBAgGAAEKAgsgGSgCAEEIaiAIIA0QgUkMQgsgGSgCAEEIaiAIIA0QgUkMQQtBiANB +CBCrOSIBQQA6AIADIAEgHEEEajYC/AIgASAZNgL4AiAqQdwAaiABNgIACyAaQbACaiEWIwBB4AVr +IhIkAAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAICpB3ABqIiIo +AgAiHi0AgANBAWsOAwkFAAELIB5BCWohFQJAIB4tAAlBAWsOBQgFAwQMAAsgHigCBCEGIB4oAgAh +CgwBCyAeKAL4AigCACEBIB5BADoACSAeIB4oAvwCIgY2AgQgHiABQYwBaiIKNgIAIB5BCWohFQsg +HiAGNgIMIB5BAToACCAeQZwBakEAOgAAIB5BmAFqIAo2AgALIBJB4AJqIB5BEGoiBiAhEKMEIBIp +A+ACQgNRDQMgEkHIAGoiBSASQeACakHQABDNTxogBhDrQiAeQQA6AAggHigCDCEBIAYgBUGoARDN +TxogHkG8AWoiHEEAOgAAIB5BuAFqIAE2AgAMBgsgHkEQaiEGIB5BvAFqIhwtAABBAWsOAwEABgUL +AAtBwMDBAEEjQeCWwgAQ5isAC0EDDAsLQcDAwQBBI0GEisIAEOYrAAtBwMDBAEEjQdCWwgAQ5isA +CyAeQegAakEAOgAAIB5B4ABqIAY2AgALIBJB4AJqIB5B4ABqIh0gIRDHAiASLQDgAiIKQQxGDQEg +EkG2BWoiDSASLQDjAjoAACASQaAFaiIIIBJB8AJqKQIANwMAIBJBqAVqIgcgEkH4AmopAgA3AwAg +EkGwBWoiBSASQYADaigCADYCACASIBIvAOECOwG0BSASIBIpAugCNwOYBSASKALkAiEBIB0QrTgC +QAJAAkAgCkELRgRAIB5BuAFqKAIAIQ0jAEHQAGsiEyQAAkAgAS0APA0AQcST2wAoAgBBAUsNAEHo +j9sAEPs+IgVB/wFxRQ0AQeiP2wAoAgAgBRD1LkUNAEHoj9sAKAIAIgtBHGohCCALQSBqKAIAIgcE +QCALQShqKAIAIQogC0EkaigCACEFIAsoAhwhDyATQQA2AkggEyAKNgJEIBMgBTYCQCATIAc2AjwL +IBMgDzYCOCATQSRqIgogE0E4aiIFQaSCzwAQuS0gE0HEAGpCADcCACATQej8zgA2AiAgE0EBNgI8 +IBNB0ILPADYCOCATQYTrzgA2AkAgEyAFNgIcIBMgCjYCGCATQQxqIgUgCCATQRhqEOBBQeiP2wAo +AgAgBRDENAsgAUEBOgA8AkBBxJPbACgCAEEBSw0AQfSP2wAQ+z4iBUH/AXFFDQBBACEPQfSP2wAo +AgAgBRD1LkUNAEH0j9sAKAIAIgtBHGohCCALQSBqKAIAIgcEQCALQShqKAIAIQogC0EkaigCACEF +IAsoAhwhDyATQQA2AkggEyAKNgJEIBMgBTYCQCATIAc2AjwLIBMgDzYCOCATQSRqIgogE0E4aiIF +QdiCzwAQuS0gE0HEAGpCADcCACATQej8zgA2AiAgE0EBNgI8IBNBjIPPADYCOCATQYTrzgA2AkAg +EyAFNgIcIBMgCjYCGCATQQxqIgUgCCATQRhqEOBBQfSP2wAoAgAgBRDENAsgASgCOCEHIwBBEGsi +CCQAIAdBmAJqIgopAgAhRiAKQQA2AgAgCigCCCEFIApBADYCCCAIIAU2AgwgCCBGNwIEIAhBBGoQ +wxkgCEEQaiQAIAdB3AFqLQAAQQJHBEAgB0EBOgDcAQsgASANQQAgExCkCCASQeACakESOgAAIBNB +0ABqJAAgEi0A4AIiD0ESRw0BIBJB3gVqIB5BG2otAAA6AAAgEkHaBWogHkEfai0AADoAACASQcAF +aiAeQSxqKQIANwMAIBJByAVqIB5BNGopAgA3AwAgEkHQBWogHkE8aigCADYCACASIB4vABk7AdwF +IBIgHi8AHTsB2AUgEiAeKQIkNwO4BSAeQRhqLQAAIQ8gHkEgaigCACEBIB4pAxAhRyAeLQAcIQog +EkGgBGogHkHYAGopAAA3AwAgEkGYBGogHkHQAGopAAA3AwAgEkGQBGogHkHIAGopAAA3AwAgEiAe +QUBrKQAANwOIBAwDCyASQdoFaiANLQAAOgAAIBJBwAVqIAgpAwA3AwAgEkHIBWogBykDADcDACAS +QdAFaiAFKAIANgIAIBIgEi8BtAU7AdgFIBIgEikDmAU3A7gFQQ4hDwwBCyASQd4FaiASLQDjAjoA +ACASQdoFaiASLQDnAjoAACASQcAFaiASQfQCaikCADcDACASQcgFaiASQfwCaikCADcDACASQdAF +aiASQYQDaigCADYCACASIBIvAOECOwHcBSASIBIvAOUCOwHYBSASIBIpAuwCNwO4BSASLQDkAiEK +IBIoAugCIQEgEkGgBGogEkGgA2opAwA3AwAgEkGYBGogEkGYA2opAwA3AwAgEkGQBGogEkGQA2op +AwA3AwAgEiASKQOIAzcDiAQLIAYQ6z9CAyFHCyASQZYCaiIJIBJB3gVqLQAAOgAAIBJBkgJqIhQg +EkHaBWotAAA6AAAgEkH4AWoiEyASQcAFaikDADcDACASQYACaiILIBJByAVqKQMANwMAIBJBiAJq +Ig0gEkHQBWooAgA2AgAgEkGABGoiCCASQaAEaikDADcDACASQfgDaiIHIBJBmARqKQMANwMAIBJB +8ANqIgUgEkGQBGopAwA3AwAgEiASLwHcBTsBlAIgEiASLwHYBTsBkAIgEiASKQO4BTcD8AEgEiAS +KQOIBDcD6AMgHEEBOgAAIEdCBFENAiASQd4CaiAJLQAAOgAAIBJB2gJqIBQtAAA6AAAgEkHAAmog +EykDADcDACASQcgCaiALKQMANwMAIBJB0AJqIA0oAgA2AgAgEkGwAmogCCkDADcDACASQagCaiAH +KQMANwMAIBJBoAJqIAUpAwA3AwAgEiASLwGUAjsB3AIgEiASLwGQAjsB2AIgEiASKQPwATcDuAIg +EiASKQPoAzcDmAICQAJAAkAgBi0ArAEOBAECAgACCyAGQdAAahCtOAsgBhDrPwsgR0IDUQ0EIBJB +0AVqIgsgEkHQAmooAgA2AgAgEkHIBWoiDSASQcgCaikDADcDACASQcAFaiIGIBJBwAJqKQMANwMA +IBIgEikDuAI3A7gFIBJBgARqIgggEkGwAmopAwA3AwAgEkH4A2oiByASQagCaikDADcDACASQfAD +aiIFIBJBoAJqKQMANwMAIBIgEikDmAI3A+gDIB5BGGogDzoAACAeIEc3AxAgHiAKOgAcIB4gEi8B +3AI7ABkgHkEbaiASQd4Cai0AADoAACAeQSBqIAE2AgAgHiASLwHYAjsAHSAeQR9qIBJB2gJqLQAA +OgAAIB4gEikDuAU3AiQgHkEsaiAGKQMANwIAIB5BNGogDSkDADcCACAeQTxqIAsoAgA2AgAgHkHY +AGogCCkDADcDACAeQdAAaiAHKQMANwMAIB5ByABqIAUpAwA3AwAgHkFAayASKQPoAzcDACAdIBJB +yABqQZABEM1PGiAeQfABakEAOgAAIB5B8QFqIBJB4AJqQYcBEM1PGgsgEkGIBGogHkEQaiIGICEQ +xwQgEi0AiAQiCkEMRg0FIBJBzgRqIgggEi0AiwQ6AAAgEkG4BGoiByASQZgEaikCADcDACASQcAE +aiASQaAEaikCADcDACASQcgEaiIFIBJBqARqKAIANgIAIBIgEi8AiQQ7AcwEIBIgEikCkAQ3A7AE +IBIoAowEIQEgBhDqGyAKQQtHDQJBEiEPDAQLIBxBAzoAAAtBBAwECyASQZIFaiAILQAAOgAAIBJB ++ARqIAcpAwA3AwAgEkGABWogEkHABGopAwA3AwAgEkGIBWogBSgCADYCACASIBIvAcwEOwGQBSAS +IBIpA7AENwPwBEEOIQ8MAQsgEkGWBWogEkHeAmotAAA6AAAgEkGSBWogEkHaAmotAAA6AAAgEkH4 +BGogEkHAAmopAwA3AwAgEkGABWogEkHIAmopAwA3AwAgEkGIBWogEkHQAmooAgA2AgAgEkHoBGog +EkGwAmopAwA3AwAgEkHgBGogEkGoAmopAwA3AwAgEkHYBGogEkGgAmopAwA3AwAgEiASLwHcAjsB +lAUgEiASLwHYAjsBkAUgEiASKQO4AjcD8AQgEiASKQOYAjcD0AQLIB5BADoACCASQcYAaiITIBJB +lgVqLQAAOgAAIBJBwgBqIgsgEkGSBWotAAA6AAAgEkEoaiIVIBJB+ARqKQMANwMAIBJBMGoiISAS +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 +uMbBADYCACAEQfgSaiAEQegRajYCACAEQaDAwQA2AvASIAQgCjYC9BIgBCAEQfgDajYC7BIgBCAE +QYASajYC6BIgBCAEQdASajYC6BEgCCAGIARB6BJqEPJBQbCE2wAoAgAgCBDENAsgDEG8AmooAgAg +BEGIBGogBEHgEmopAgA3AwAgBEGABGogBEHYEmopAgA3AwAgBCAEKQLQEjcD+AMgBEH4A2oQ7B4M +BgsgBCAGOgD4AyAEIAQvAfwROwD5AyAEIEk3ApQEIAQgIzYCkAQgBCAKNgKMBCAEIAg2AogEIAQg +RzcCgAQgBCAfNgL8AyAEIA0tAAA6APsDAkBBxJPbACgCAEEDSw0AQbyE2wAQ+z4iCkH/AXFFDQBB +ACEIQbyE2wAoAgAgChD1LkUNAEG8hNsAKAIAIgtBHGohBiALQShqKAIAIQ8gC0EkaigCACENIAso +AhwhCiAEIAtBIGooAgAiCwR/IARBADYC+BIgBCAPNgL0EiAEIA02AvASIAQgCzYC7BJBASEIIAoF +QQALNgLoEiAEQYASaiAEQegSakGMyMEAENosIARB9BJqQgA3AgAgBEEBNgLsEiAEQcDIwQA2AugS +IARBsMDBADYC8BIgBCAIIAtJBH8gBCAINgLgESAEIA82AtwRIAQgDTYC2BEgBCALNgLUESAKBUEA +CzYC0BEgBEGYEmoiCiAEQdARaiIIQYzIwQAQ2iwgBEHkEmpByMfBADYCACAEQeASaiAEQegRajYC +ACAEQaDAwQA2AtgSIAQgCjYC3BIgBCAEQegSajYC1BIgBCAEQYASajYC0BIgBCAEQfgDajYC6BEg +CCAGIARB0BJqEPJBQbyE2wAoAgAgCBDENAsgBEH4A2oQgB0MBQtBCCEGDBcLIARB6BJqIAxBkANq +IgogIRCAAiAEKALoEkUEQCAEQeASaiIGIARB/BJqKQIANwMAIARB2BJqIgggBEH0EmopAgA3AwAg +BCAEKQLsEjcD0BIgChDkKCAMQYwDaiIKKAIAEJRFIAooAgAiCiAEKQPQEjcCACAKQRBqIAYpAwA3 +AgAgCkEIaiAIKQMANwIAIARB2BFqIAxBgANqKQIANwMAIAQgDEH4AmopAgA3A9ARIAxBiANqKAIA +ISMgDEH0AmooAgAhHyAMQdAFai0AAAwCCyBBQQM6AABBBAwGCyAEIEA2AswSIAxBjANqIC02AgAg +DEHcAmogOCkCACJGNwIAIAxB5AJqIDhBCGoiDykCADcCACAMQewCaiA4QRBqIgYpAgA3AgAgBCA7 +NgLoESBGpwRAIAxB9AJqIgsgOCkCADcCACAMQYQDaiAGKQIANwIAIAxB/AJqIA8pAgA3AgAgBEHo +EmogQyBCELkDAn8gBC0A6BIiD0EWRgRAIARB6BJqIAsgQCA7IAQoAuwSEOwKIAQtAOgSIgZBFkYE +QCAELQDpEiEGIAxBADoApwMgDEGgA2ogCzYCACAMQZwDaiBDNgIAIAxB0AVqIAY6AAAMBwsgBEHY +EWogBEH8EmopAgA3AwAgBCAEKQL0EjcD0BEgBCgC8BIhHyAELwHqEiEQIAQtAOkSIQ0gBCgChBMh +IyAEKAKIEyEvIAQoAuwSDAELIARB2BFqIARB/BJqKQIANwMAIAQgBCkC9BI3A9ARIAQoAvASIR8g +BC8B6hIhECAELQDpEiENIAQoAoQTISMgBCgCiBMhLyAPIQYgBCgC7BILIQggCxCxNyAPQRZGDQIg +BEHoEWoQrTkgBEHMEmoQrTkMAgsgBEGgEmogDEHoAmopAgA3AwAgBCAMQeACaikCADcDmBIgBEHo +EmogBEGYEmogQCA7ELYIIAQtAOgSIgZBFkcEQCAEQdgRaiAEQfwSaikCADcDACAEIAQpAvQSNwPQ +ESAEKALwEiEfIAQoAuwSIQggBC8B6hIhECAELQDpEiENIAQoAoQTISMgBCgCiBMhLyAEQZgSahCB +QAwCCyAEQdgRaiAEQaASaikDADcDACAEIAQpA5gSNwPQEUEAIR8gBC0A6RILQf8BcUUhCEEWIQYL +IARBiBJqIg8gBEHYEWopAwA3AwAgBCAEKQPQETcDgBIgQUEBOgAAIARByBFqIgogDykDADcDACAE +IAQpA4ASNwPAESA4EPAvAkACQCAGQRZHBEAgBEH8EmogCikDADcCACAEIB82AvASIAQgCDYC7BIg +BCAQOwHqEiAEIA06AOkSIAQgBjoA6BIgBCAEKQPAETcC9BIgBCAvNgKIEyAEICM2AoQTQcST2wAo +AgBBA0sNAkGkhNsAEPs+IgpB/wFxRQ0CQQAhCEGkhNsAKAIAIAoQ9S4NAQwCCyAIRQRAIARB3BFq +IARByBFqKQMANwIAIAQgHzYC0BEgBCAEKQPAETcC1BEgBCAjNgLkEQJAQcST2wAoAgANAEGMhNsA +EPs+IgpB/wFxRQ0AQQAhCEGMhNsAKAIAIAoQ9S5FDQBBjITbACgCACILQRxqIQYgC0EoaigCACEP +IAtBJGooAgAhDSALKAIcIQogBCALQSBqKAIAIgsEfyAEQQA2AvgSIAQgDzYC9BIgBCANNgLwEiAE +IAs2AuwSQQEhCCAKBUEACzYC6BIgBEHoEWogBEHoEmpBiMbBABDaLCAEQfQSakIANwIAIARBATYC +7BIgBEGwxsEANgLoEiAEQbDAwQA2AvASIAQgCCALSQR/IAQgCDYCqBIgBCAPNgKkEiAEIA02AqAS +IAQgCzYCnBIgCgVBAAs2ApgSIARBgBJqIgogBEGYEmoiCEGIxsEAENosIARB5BJqQbjGwQA2AgAg +BEHgEmogBEHMEmo2AgAgBEGgwMEANgLYEiAEIAo2AtwSIAQgBEHoEmo2AtQSIAQgBEHoEWo2AtAS +IAQgBEHQEWo2AswSIAggBiAEQdASahDyQUGMhNsAKAIAIAgQxDQLIAxBvAJqKAIAIARB+BJqIARB +4BFqKQIANwMAIARB8BJqIARB2BFqKQIANwMAIAQgBCkC0BE3A+gSQQxqIARB6BJqEOweDAMLIARB +3BFqIARByBFqKQMANwIAIAQgHzYC0BEgBCAEKQPAETcC1BEgBCAjNgLkEQJAQcST2wAoAgANAEGY +hNsAEPs+IgpB/wFxRQ0AQQAhCEGYhNsAKAIAIAoQ9S5FDQBBmITbACgCACILQRxqIQYgC0EoaigC +ACEPIAtBJGooAgAhDSALKAIcIQogBCALQSBqKAIAIgsEfyAEQQA2AvgSIAQgDzYC9BIgBCANNgLw +EiAEIAs2AuwSQQEhCCAKBUEACzYC6BIgBEHoEWogBEHoEmpByMbBABDaLCAEQfQSakIANwIAIARB +ATYC7BIgBEH8xsEANgLoEiAEQbDAwQA2AvASIAQgCCALSQR/IAQgCDYCqBIgBCAPNgKkEiAEIA02 +AqASIAQgCzYCnBIgCgVBAAs2ApgSIARBgBJqIgogBEGYEmoiCEHIxsEAENosIARB5BJqQbjGwQA2 +AgAgBEHgEmogBEHMEmo2AgAgBEGgwMEANgLYEiAEIAo2AtwSIAQgBEHoEmo2AtQSIAQgBEHoEWo2 +AtASIAQgBEHQEWo2AswSIAggBiAEQdASahDyQUGYhNsAKAIAIAgQxDQLIAxBvAJqKAIAIARB+BJq +IARB4BFqKQIANwMAIARB8BJqIARB2BFqKQIANwMAIAQgBCkC0BE3A+gSQRhqIARB6BJqEOweDAIL +QaSE2wAoAgAiC0EcaiEGIAtBKGooAgAhDyALQSRqKAIAIQ0gCygCHCEKIAQgC0EgaigCACILBH8g +BEEANgLgEiAEIA82AtwSIAQgDTYC2BIgBCALNgLUEkEBIQggCgVBAAs2AtASIARB6BFqIARB0BJq +QYTHwQAQ2iwgBEHcEmpCADcCACAEQQE2AtQSIARBwMfBADYC0BIgBEGwwMEANgLYEiAEIAggC0kE +fyAEIAg2AqgSIAQgDzYCpBIgBCANNgKgEiAEIAs2ApwSIAoFQQALNgKYEiAEQYASaiIKIARBmBJq +IghBhMfBABDaLCAEQeQRakHIx8EANgIAIARB4BFqIARBzBJqNgIAIARBoMDBADYC2BEgBCAKNgLc +ESAEIARB0BJqNgLUESAEIARB6BFqNgLQESAEIARB6BJqNgLMEiAIIAYgBEHQEWoQ8kFBpITbACgC +ACAIEMQ0CyAEQegSahCAHQsCQCAMQegBaigCAEUNACAMQcACai0AAEUNACAMQewBahCLPgsgDEHA +AmpBADoAAAwFC0EGIQYMEQsgBEH4A2ogPyAhICAoAgwRAwAgBC0A+AMiBkEMRwRAIARB5wNqIg8g +BEGQBGopAAA3AAAgBEHgA2oiIyAEQYkEaikAADcDACAEQdgDaiIQIARBgQRqKQAANwMAIAQgBCkA ++QM3A9ADIAQoApgEIQ0gDEHEAmoiOBCZNiAGQQtGBEAgDEELOgCEAiAMQYgCaiAEKQDTAyJINwAA +IAxBwAJqQQE6AAAgDEHoAWogSDcAACAMQaACaiAEQesDaigAACIGNgAAIAxBmAJqIARB4wNqKQAA +Ikk3AAAgDEGQAmogBEHbA2opAAAiRjcAACAMQfABaiBGNwAAIAxB+AFqIEk3AAAgDEGAAmogBjYA +ACBIpwRAIAxBADoAwAIgDEEAOwDBAiAEQYgEaiAMQfwBaikCADcDACAEQYAEaiAMQfQBaikCADcD +ACAEIAxB7AFqKQIANwP4AyAMQbACaigCACFDIAxBtAJqKAIAIUIgDEGoAmooAgAhQCAMQawCaigC +ACE7IAxBuAJqKAIAIS0gOCAEQfgDakH4AhDNTxogDEEAOgDRBSAMQcwFaiAtNgIAIAxByAVqIDs2 +AgAgDEHEBWogQDYCACAMQcAFaiBCNgIAIAxBvAVqIEM2AgAgDEHRBWohQQwECyAMQQA7AMECIAxB +pAVqIjVBADoAACAMQdQCaiAMQbgCaigCACI2NgIAIAxB0AJqIAxBrAJqKAIAIik2AgAgDEHMAmog +DEGoAmooAgAiLjYCACAMIAxBtAJqKAIAIjA2AsgCIAwgDEGwAmooAgAiETYCxAJBByEGDBILIAxB +nAJqIA8pAAA3AAAgDEGVAmogIykDADcAACAMQaQCaiANNgIAIAxBjQJqIBApAwA3AAAgDCAEKQPQ +AzcAhQIgDCAGOgCEAiAEQaYPaiAELQDSAzoAACAEQbgSaiAMQZgCaikAADcDACAEQcASaiAMQaAC +aikAADcDACAEIAQvAdADOwGkDyAEIAwpAJACNwOwEiAMKAKIAiEFIAwoAowCIQEgDEHAAmpBADoA +ACAMQagCahCtOQwFC0EDCzoAAEEEDAkLQQUhBgwOCyAMQQE6AMICIAxBwAJqQYACOwEAIARB8ABq +IAxBqAJqELhGIAQgBCkDcDcC+AMCQCAEQfgDaiA+EP8+DQAgBEHoAGogDEGsAmoQuEYgBCAEKQNo +NwL4AyAEQfgDaiA+EP8+DQAgBEHgAGogDEGwAmooAgBBBGoQvywgBEHYAGogBCgCYCAMKALgASAM +QeQBaigCACAEKAJkKAJgEQUAIAQoAlghPyAMQcgCaiAEKAJcIiA2AgAgDEHEAmogPzYCAAwEC0HE +k9sAKAIAQQNLDQBBgITbABD7PiIKQf8BcUUNAEEAIQhBgITbACgCACAKEPUuRQ0AQYCE2wAoAgAi +C0EcaiEGIAtBKGooAgAhDyALQSRqKAIAIQ0gCygCHCEKIAQgC0EgaigCACILBH8gBEEANgKIBCAE +IA82AoQEIAQgDTYCgAQgBCALNgL8A0EBIQggCgVBAAs2AvgDIARBmBJqIARB+ANqQbzFwQAQ2iwg +BEGEBGpCADcCACAEQQE2AvwDIARBgMbBADYC+AMgBEGwwMEANgKABCAEIAggC0kEfyAEIAg2AuAS +IAQgDzYC3BIgBCANNgLYEiAEIAs2AtQSIAoFQQALNgLQEiAEQdARaiIKIARB0BJqIghBvMXBABDa +LCAEQfwSakH0wMEANgIAIARB+BJqIARBgBJqNgIAIARBoMDBADYC8BIgBCA+NgKAEiAEIAo2AvQS +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 +IAQgBCkDyAI3A8gPDBwLQQAhBgwCCyAzQQI2AgBBBAwcCyAMQdgBakEAOgAAAkACQEHEk9sAKAIA +QQJLDQBB9IPbABD7PiIGQf8BcUUNAEEAIR9B9IPbACgCACAGEPUuRQ0AQfSD2wAoAgAiC0EcaiEj +IAtBIGooAgAiEARAIAtBKGooAgAhDSALQSRqKAIAIS8gCygCHCEfIARBADYCiAQgBCANNgKEBCAE +IC82AoAEIAQgEDYC/AMLIAQgHzYC+AMgBEHoEmoiBiAEQfgDaiIPQazFwQAQ2iwgBEGkwcEANgLY +AyAEQbDAwQA2AtQDIAQgBjYC0AMgDyAjIARB0ANqEOBBICwgCyAPEMQyIAxBAToA2AEgDEGgAWoo +AgBBAkYNASAMQQA6ANgBIAxB4AFqICwpAwA3AwAgDEGEAmogGzYCACAMQYACaiA0NgIAIAxB6AFq +ICxBCGopAwA3AwAgDEHwAWogLEEQaikDADcDACAMQfgBaiAsQRhqKQMANwMAIAxBiAJqIARB4BBq +QcAAEM1PGiAMQdwCaiACNgIAIAxB2AJqIBU2AgAgDEHUAmogMjYCACAMQdACaiA9NgIAIAxBzAJq +IBc2AgAgDEHIAmogKzYCACAMQQA6AOMCIAxB4AJqIAQvAdwQOwEAIAxB4gJqIAQtAN4QOgAAIAxB +5AJqIARBkAlqQZADEM1PGiAFIQogASEIQQIhBgwCCyAMQQE6ANgBIAxBsAFqQQA2AgAgDEGgAWpB +AjYCAAsgDEHkAWogGzYCACAMQeABaiI+IDQ2AgAgDEHoAWogBEHgEGpBwAAQzU8aIAxBADoAwwIg +DEG8AmogAjYCACAMQbgCaiAVNgIAIAxBtAJqIDI2AgAgDEGwAmogPTYCACAMQawCaiAXNgIAIAxB +qAJqICs2AgAgDEHEAmogBEGQCWpBkAMQzU8aIAxBwwJqITxBAyEGDAALAAsgBEGQCWogDEGAAWoi +KyAhEPwQIAQtAJAJIgZBDEcEQCAEQcYOaiIsIAQtAJMJOgAAIARBsA5qIgcgBEGkCWopAgA3AwAg +BEG4DmoiCiAEQawJaikCADcDACAEIAQvAJEJOwHEDiAEIAQpApwJNwOoDiAEKAKUCSEFIAQoApgJ +IQEgKxD5PCAGQQtHDQYgDCgCKCgCDCEBIAxBuAFqIgZBADoAACAMIAFBCGoiBTYCgAEMAQsgM0EC +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 +IAUgIU8Ef0EABSAEIA02ApwJIAQgBjYCmAkgBCAhNgKUCSAEIAU2AqAJIAVBAWohBSABCzYCkAkg +BEHQA2ogBEGQCWpBxMnBABDaLCAEIARB6A9qNgKoECAEIAUgIUkEfyAEIAU2AvAQIAQgDTYC7BAg +BCAGNgLoECAEICE2AuQQIAEFQQALNgLgECAEQegSaiIFIARB4BBqIgFBxMnBABDaLCAEQeAJakGc +ysEANgIAIARB1AlqQZzKwQA2AgAgBEHICWpBjMrBADYCACAEQbwJakGMysEANgIAIARBsAlqQYzK +wQA2AgAgBEGkCWpBhMnBADYCACAEQdwJaiAEQegRajYCACAEQdAJaiAEQagQajYCACAEQcQJaiAE +QfgBajYCACAEQbgJaiAEQcARajYCACAEQawJaiAEQcwSajYCACAEQaAJaiAEQaQPajYCACAEQaDA +wQA2ApgJIAQgBTYC2AkgBCAEQdADajYCzAkgBCAEQdASajYCwAkgBCAEQbASajYCtAkgBCAEQdAR +ajYCqAkgBCAEQaARajYCnAkgBCAEQfgDajYClAkgBCAEQcAQajYCkAkgBCAEQYgQajYC6BEgBCAK +QRxqNgLoECAEQQc2AuQQIAQgBEGQCWo2AuAQQcyC2wAoAgAgARDENAsgBEHmD2ogDEE3ai0AADoA +ACAEQeIPaiAMQTtqLQAAOgAAIARBmAlqIgogCEEIaikAADcDACAEIAwvADU7AeQPIAQgDC8AOTsB +4A8gBCAIKQAANwOQCSAMLQA0ISsgDCgCMCEsIAwtADghBiAMKAI8IQUgDCgCQCEBIARB2A9qIARB +oAlqIAdBJBDNTykDADcDACAEQdAPaiAKKQMANwMAIARBsA9qIARBsAlqKQMANwMAIARBuA9qIARB +uAlqKQMANwMAIARBwA9qIARBwAlqKAIANgIAIAQgBCkDkAk3A8gPIAQgBCkDqAk3A6gPIARBiBBq +EIQZIARB6A9qEIQZIARBkAJqELIZIARBmBJqELIZIARBgBJqELIZDAILIAxB1ABqEOk/CyAMQTBq +ENY/QQ4hK0EBIR8LIDMgKzoACCAzICw2AgQgMyAfNgIAIDMgBC8B5A87AAkgMyAGOgAMIDMgBC8B +4A87AA0gMyABNgIUIDMgBTYCECAzIAQpA8gPNwIYIDNBC2ogBEHmD2otAAA6AAAgM0EPaiAEQeIP +ai0AADoAACAzQSBqIARB0A9qKQMANwIAIDNBKGogBEHYD2opAwA3AgAgM0HIAGogBEHAD2opAwA3 +AwAgM0FAayAEQbgPaikDADcDACAzQThqIARBsA9qKQMANwMAIDMgBCkDqA83AzBBAQs6AHggBEGQ +E2okACAzKAIAQQJHBEAgM0HQAGogM0HQABDNTxoCQAJAAkACQAJAAkACQAJAIDlBgAFqLQAAQQNr +DgcHAwQAAQUCDAsgOUGIAWoQ2T8MCQsgOUGIAWoQ1z8MCAsgOUG4AWoQ2ywMAwsgOUGIAWoQwDkM +BwsgOUGIAWoQ+TwMBQsgOUGIAWoQ2j8LIDlBIGoQsUsMAwsgOUGIAWoQsjgMBAsgEkECNgIAQQMM +BAtBwMDBAEEjQcCWwgAQ5isACyA5QdwAahDpPwsgOUE4ahDWPwsgEiAzQdAAakHQABDNTxpBAQsh +ASA5IAE6AOgHIDNBoAFqJAAgGigCsAIiIUECRg0hIBotALwCIQogGi8BugIhHCAaLQC5AiEmIBot +ALgCIQUgGigCtAIhBiAaQaUDaiAaQb0CakEjEM1PGiAaQZgDaiAaQfgCaikDADcDACAaQZADaiAa +QfACaikDADcDACAaQYgDaiAaQegCaikDADcDACAaIBopA+ACNwOAAyAeKAIAIhktAOgHQQNHDTwg +GUGAAWotAABBA2sOBwsMEA0OEQ88C0HoCkEIEKs5IgFBADoAGCABIA02AgggASAINgIEIAEgGTYC +ACAqQdwAaiABNgIACyAaQbACaiFCIwBBgBtrIhckAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgKkHcAGoiDigCACIbLQAYQQFrDgQKBgAF +AQsCQCAbQTlqIhUtAABBAWsOBAkGAw0ACyAbQSxqKAIAIQsgG0EoaigCACEZIBtBNGooAgAhAQwB +CyAbIBsoAgAiBzYCDCAbIBsoAgQiCjYCECAbQRRqIgUgG0EIaigCACIBNgIAIAcoAgBBCGogCiAB +EIFJIBsoAgwoAgAhASAbQTlqIhVBADoAACAbQSxqIAUoAgAiCzYCACAbQShqIBsoAhAiGTYCACAb +QTRqIAFBkAFqIgE2AgALIBsgGTYCICAbQTBqIAE2AgAgG0E4akEAOgAAIBtBJGoiBSALNgIAIBdB +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 +IBEgASAGTwR/QQAFIBEgBzYC3AEgESAKNgLYASARIAY2AtQBIBEgATYC4AEgAUEBaiEBIAULNgLQ +ASARQegAaiARQdABakHku8wAELItIBEgEUHMAGo2AjQgESABIAZJBH8gESABNgKQAiARIAc2AowC +IBEgCjYCiAIgESAGNgKEAiAFBUEACzYCgAIgEUGsAWoiASARQYACaiIFQeS7zAAQsi0gEUHwAWpB +hLrMADYCACARQeQBakHYvMwANgIAIBFB7AFqIBFBQGs2AgAgEUHgAWogEUE0ajYCACARQfS5zAA2 +AtgBIBEgATYC6AEgESARQegAajYC3AEgESARQagCajYC1AEgESARQZgBajYC0AEgESARQQxqNgJA +IAUgCEEcaiARQdABahDhQUGQgtsAKAIAIAUQxDQMAQsgESARKALUATYCqAIgESARQdgBai0AADoA +rAJB0KTMAEErIBFBqAJqQfykzABB5LjMABCJGAALIBFBzABqEK1LDAELIBEgEjYCiAEgESA1NgKE +ASARIEE2AoABIBFBADYCfCARICU2AnggESA1NgJ0IBEgQTYCcCARQQA2AmwgESAlNgJoID8oAjhB +CGohEiARQbACaiEdIBFB2AFqISIgEUHUAWohCQNAIBFBmAFqIBFB6ABqENMYAkACQAJAAkACQAJA +IBEoApgBIgFFBEAgEUHoAGoQvCQgEUHQAWogIBCBLiARKALQAQ0CIBEoAtQBKAIIIBFB2AFqKAIA +IgEgASgCAEEBazYCAEUNAQwFCyARIBEoApwBNgJEIBEgATYCQEEBIRAgESgCoAEiEyEHIBEoAqQB +IgUhCiAFIQEgESgCqAEiFCEnIBMiCEUEQCAGIQcgDSEKIBUhCEEAISdBACEQIA8hAQsgESAnNgLw +ASARIAE2AuwBIBEgCDYC6AEgEUEANgLkASARIBA2AuABIBEgCjYC3AEgESAHNgLYASARQQA2AtQB +IBEgEDYC0AEgEUGMAWohJSMAQUBqIjEkACAxQRhqIh4gEUHQAWoiEEEkEM1PGiAxQQxqIR8jAEFA +aiI1JAAgNUEIaiAeEMUdAkAgNSgCCCIVRQRAIB9BADYCCCAfQoCAgIDAADcCAAwBCyA1KAIMIQ0g +NUEEELAWIDUoAgAhBiA1KAIEIhYgDTYCBCAWIBU2AgAgNUEYaiIPQQE2AgAgNSAWNgIUIDUgBjYC +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 +QSRqKAIAIQggDygCHCEKIA5BIGohByACIA9BIGooAgAiEwR/IAJBADYCyAogAiANNgLECiACIAg2 +AsAKIAIgEzYCvApBASEBIAoFQQALNgK4CiACQcgRaiACQbgKakHw68IAEN0sIAJB9ANqQgA3AgAg +AkEBNgLsAyACQaTswgA2AugDIAJBpMnCADYC8AMgAiABIBNPBH9BAAUgAiANNgLECiACIAg2AsAK +IAIgEzYCvAogAiABNgLICiABQQFqIQEgCgs2ArgKIAJB4BJqIAJBuApqQfDrwgAQ3SwgAiAHNgLw +FSAPQRxqITggASATSQRAIAIgDTYCxAogAiAINgLACiACIBM2ArwKIAIgATYCyAogCiEFIAFBAWoh +AQsgAiAFNgK4CiACQcATaiACQbgKakHw68IAEN0sIAIgBjYCyBYgAiABIBNJBH8gAiABNgL4GCAC +IA02AvQYIAIgCDYC8BggAiATNgLsGCAKBUEACzYC6BggAkGYGmoiCiACQegYaiIBQfDrwgAQ3Swg +AkHkCmpBzOzCADYCACACQdgKakG87MIANgIAIAJBzApqQazswgA2AgAgAkHgCmogAkGgF2o2AgAg +AkHUCmogAkHIFmo2AgAgAkHICmogAkHwFWo2AgAgAkGUycIANgLACiACIA4oAsgNNgKgFyACIAo2 +AtwKIAIgAkHAE2o2AtAKIAIgAkHgEmo2AsQKIAIgAkHoA2o2ArwKIAIgAkHIEWo2ArgKIAEgOCAC +QbgKahDWQSACQbAbaiACQfAYaigCADYCACACIAIpAugYNwOoG0HAhdsAKAIAIAJBqBtqEMQ0DA0L +IA5BKGohHyAOQZsFaiEXAkACQAJAAkAgDi0AmwVBAWsODAkEEgECAw4UFRscHQALIA5BlAVqKAIA +IQogDkGQBWooAgAhAQwQCyAOQaAFaiFAAkACQAJAIA5BvAVqIhstAABBAWsOAwIFAAELIA5BuAVq +KAIAIUMgDkG0BWooAgAhNgwMCyAOQbAFaigCACEoIA5BrAVqKAIAITogDkGoBWooAgAhPSAOQaQF +aigCACE+IA4oAqAFISlBASEBDBILQeDGwgBBI0GciMMAEOYrAAtBAyEBDBALIA5BoAVqIRUgDkG5 +BWohMAJAAkAgDi0AuQVBAWsOBAgCCwEACyAOQawFaigCACErIA5BqAVqKAIAIRkgDkGkBWooAgAh +JSAOQbQFaigCACEmIA4oAqAFITRBBCEBDBALIA5BwAVqIRECQAJAIA5BxApqIiQtAABBAWsOAwUC +AQALIA5BxAVqKAIAIRAgDkHACmooAgAhOyAOKALABSEUQQchAQwQCyAOQcgFaiELIA5B+QVqITEg +Di0A+QVBAWsOBAcAAgsBCwALIA5B7AVqKAIAIRAgDkHoBWooAgAhFCAOQfQFaigCACEjIA5B8AVq +KAIAIRxBCCEBDA0LQQohAQwMC0HgxsIAQSNBkMvCABDmKwALQeDGwgBBI0Hc7MIAEOYrAAtB4MbC +AEEjQdjjwgAQ5isAC0HgxsIAQSNBrOjCABDmKwALQeDGwgBBI0G0ycIAEOYrAAtBAiEBDAYLQQUh +AQwFC0EGIQEMBAtBCSEBDAMLIAJBADYCzAogAkEANgK8CiACIA5BzA1qIg8oAgA2AtwKIAIgDigC +yA0iCigCBCIBNgLUCiACIAooAgAiBzYC0AogAiABNgLECiACIAc2AsAKIAIgCigCCEEAIAcbNgLY +CiACIAdBAEciATYCyAogAiABNgK4CiAOQdwNaiIIIAJBuApqIgoQ+RMgAkEANgKQASACQQA2AoAB +IAIgDigCyA0iBygCDCINNgKUASACIA02AoQBIAIgB0EQaigCACIBNgKYASACIA1BAEciLDYCjAEg +AiABNgKIASACICw2AnwgAiAHQRRqKAIAQQAgDRs2ApwBIA8oAgAgDigCICAOQSRqKAIAIAggBhCh +AiAPKAIAIAJBwApqIA5B5A1qKAIANgIAIAIgCCkCADcDuApBGGogChDuByAPKAIAQRhqIAJB/ABq +ELsOIA5BADoAmwUgDkGUBWogDigCyA0iCjYCACAOQZAFaiAPKAIAIgE2AgAgDkEoaiEfIA5BmwVq +IRcLIA5BADoAmgUgDkGYBWpBADsBACAOQawEaiAKNgIAIA5BqARqIgogATYCACAfEL4LIA5BuARq +QQA2AgAgDkGwBGpBADYCACAOQYECOwCZBSAOQawGakEAOgAAIA5BqAZqIAooAgA2AgALIAJBuApq +IA5BoAVqIgogIRCkBCACKQO4CkIDUgRAQQEhASAOQZgFakEBOgAAIA5BmAJqIAJBuApqQdAAEM1P +GiAKEOtCAkAgDkGsBGooAgAiBygCDCIKRQRAQQAhAUEAIScMAQsgB0EUaigCACEnIAdBEGooAgAh +BwsgDkHcBGogJzYCACAOQdgEaiAHNgIAIA5B1ARqIAo2AgAgDkHQBGpBADYCACAOQcwEaiABNgIA +IA5ByARqIAc2AgAgDkHEBGogCjYCACAOQcAEakEANgIAIA5BvARqIAE2AgBBACEBDAELQQMMDwsD +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJA +AkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEOCgABAgMEBQYHCAkKCyACQfAA +aiAOQbwEahCfCyACKAJwIgENFyAOQZgFakEAOgAAIAJBuApqIgEgDkGYAmpB0AAQzU8aIA5BoAVq +IAFB4AEQzU8aIA5BgAdqQQA6AAAMLgsgAkHgAGogKSgCAEHcAGooAgBBCGoQ5TUgAkHYAGogAigC +YCA+ID0gOiAoIAIoAmQoAlgRCgAgAigCWCE2IA5BuAVqIAIoAlwiQzYCACAOQbQFaiA2NgIAQQIh +AQwsCyACQbgKaiA2ICEgQygCDBEDACACKAK4CiIHQQJGDRYgAkH4A2oiBiACQcwKaikCADcDACAC +QfADaiIIIAJBxApqKQIANwMAIAIgAikCvAo3A+gDIAIoAtQKIQ0gAikD2AohRiAOQbQFahCZNiAO +QQE6ALwFIAJB6AFqIgogCCkDADcDACACQfABaiIBIAYpAwA3AwAgAiACKQPoAzcD4AEgQBCCQCAH +RQ0XIAYgASkDADcDACAIIAopAwA3AwAgAiACKQPgATcD6AMgAiBGNwKEBCACIA02AoAEQcST2wAo +AgBBA0sNH0HYhdsAEPs+IgpB/wFxRQ0fQQAhAUHYhdsAKAIAIAoQ9S4NHgwfCyACQegDaiAOQaAF +aiIVICEQyAIgAi0A6AMiAUEMRg0XIAJBlgJqIg0gAi0A6wM6AAAgAkGAAmoiBiACQfwDaikCADcD +ACACQYgCaiIIIAJBhARqKQIANwMAIAIgAi8A6QM7AZQCIAIgAikC9AM3A/gBIAIoAuwDIQogAigC +8AMhByAVEK04IAFBC0cNHCACQbgKaiAKIA5B6AJqIgggDkGMBWooAgAQiQIgAi0AiAtBAkYNGyAO +QYADaiACQbgKakHYABDNTxogDkGoBGoiCCgCAEEQaiAOQeAEaiIHKAIAIgEoAgAgASgCBCAOQYgF +aiIKKAIAIgEoAgAgASgCBBDNBCAHKAIAIgEoAgAhNCABKAIEISUgCigCACIBKAIAIRkgASgCBCEr +IA5BADoAuQUgDkG0BWogCCgCACImNgIAIA5BrAVqICs2AgAgDkGoBWogGTYCACAOQaQFaiAlNgIA +IA4gNDYCoAUgDkG5BWohMAwmCyAOQbAFaiAmNgIAIA5BuAVqQQA6AAAgAkG4CmogJigCDEEIahCM +SiACKAK4Cg0fIAIgAigCvAoiATYC6BggAiACQcAKai0AADoA7BgCQCABQQhqIDQgJRDVJSIBBEAg +ASAZICsQwk0NAQsgAkHoGGoQnx8MDgsgAkHoGGoQnx8gDkH8BWpBADoAACAOQcwFaiArNgIAIA5B +yAVqIBk2AgAgDkHEBWogJTYCACAOQcAFaiA0NgIAIA5BvAVqIA4oArAFNgIAQQUhAQwpCyACQbgK +aiAOQbwFaiIIICEQnAIgAigCmAsiBkEERg0PIAJB4BJqIAJBuApqQeAAEM1PGiACQdgSaiIHIAJB +tAtqKAIANgIAIAJB0BJqIgogAkGsC2opAgA3AwAgAkHIEmoiASACQaQLaikCADcDACACIAIpApwL +NwPAEiAIEPEmIA5ByAtqIQggBkEDRg0GIAggAkHgEmpB4AAQzU8hCCAOQagMaiAGNgIAIA5BxAxq +IAcoAgA2AgAgDkG8DGogCikDADcCACAOQbQMaiABKQMANwIAIA5BrAxqIAIpA8ASNwIAIA5ByApq +IAhBgAEQzU8aIA5BqAtqKAIAQQJGDQsgDkG4BWpBADoAACAOQcgMaiI7IAhBgAEQzU8hASAOQcQK +aiIkQQA6AAAgDkHACmogATYCAEEHIRAgDkHEBWpBBzYCAEG86MIAIRQgDkHABWoiEUG86MIANgIA +DCULIAJBuApqIA5BrAVqEMY5IAIoArgKQQNGDR4gAkGwA2ogAkHACmooAgA2AgAgAiACKQK4CjcD +qAMgAkG8A2ogDkGoBWooAgA2AgAgAiAOQaAFaikCADcCtAMgAiAOQdADai0AADoAwAMgAkG4Cmoi +CiAOQYADakHYABDNTxogDkHQAWogChDvKyAKIA5BsARqIA5B4ARqKAIAIgEoAgAgASgCBBCsESAK +IAoQkgkgDkGIBWooAgAiASgCACABKAIEIAJBqANqEIoLIAIoArgKQQNHBEAgAkHECmoQiD8gAkG4 +CmoQvz8LIA5B6AJqEPsfDBwLIDsQ8U0hIyAOQQA6APkFIA5B9AVqICM2AgAgDkHwBWogO0EwaiIc +NgIAIA5B7AVqIBA2AgAgDkHoBWogFDYCACAOQcgFaiELIA5B+QVqITEMJAsgDkH4BWpBADoAAAJA +AkBBxJPbACgCAEECSw0AQez42gAQ+z4iCkH/AXFFDQBBACEBQez42gAoAgAgChD1LkUNAEHs+NoA +KAIAIg9BHGohCCAPQShqKAIAIQ0gD0EkaigCACEGIA8oAhwhByACIA9BIGooAgAiEwR/IAJBADYC ++AMgAiANNgL0AyACIAY2AvADIAIgEzYC7ANBASEBIAcFQQALNgLoAyACQcwXaiACQegDakG0ycIA +EN0sIAJB0ABqIBwQsUYgAiACKQNQNwLkFyACIAJB5BdqNgLgFyACIAEgE08Ef0EABSACIA02AvQD +IAIgBjYC8AMgAiATNgLsAyACIAE2AvgDIAFBAWohASAHCzYC6AMgAkHsF2ogAkHoA2pBtMnCABDd +LCACQcgAaiAcELJGIAIgAikDSDcChBggAiACQYQYajYCgBggAiABIBNJBH8gAiANNgL0AyACIAY2 +AvADIAIgEzYC7AMgAiABNgL4AyABQQFqIQEgBwVBAAs2AugDIAJBjBhqIAJB6ANqQbTJwgAQ3Swg +AkGYGmoiCiAcEOpIIAIgCjYCoBggAiABIBNPBH9BAAUgAiANNgL0AyACIAY2AvADIAIgEzYC7AMg +AiABNgL4AyABQQFqIQEgBws2AugDIAJBpBhqIAJB6ANqQbTJwgAQ3SwgAiABIBNJBH8gAiABNgLc +GCACIA02AtgYIAIgBjYC1BggAiATNgLQGCAHBUEACzYCzBggAkG4GGoiByACQcwYaiIGQbTJwgAQ +3SwgAkGgBGpB9MnCADYCACACQZwEakGkycIANgIAIAJBlARqQfTJwgA2AgAgAkGQBGpBpMnCADYC +ACACQYgEaiIKQeTJwgA2AgAgAkH8A2pB1MnCADYCACACQYQEaiACQaAYajYCACACQfgDaiIBIAJB +gBhqNgIAIAJBxMnCADYC8AMgAiAHNgKYBCACIAJBpBhqNgKMBCACIAJBjBhqNgKABCACIAJB7Bdq +NgL0AyACIAJB4BdqNgLsAyACIAJBzBdqNgLoAyAGIAggAkHoA2oQ1UEgCyAPIAYQxDIgDkEBOgD4 +BSAOQdAFaigCAEECRg0BIA5BADoA+AUgAkHwA2ogC0EIaikDADcDACABIAtBEGopAwA3AwAgAkGA +BGogC0EYaikDADcDACACIAspAwA3A+gDIAogAkHoGGpBsAEQzU8aIA5BgAZqIAJB6ANqQdABEM1P +GiAOQdwHaiAjNgIAIA5B2AdqIBw2AgAgDkHUB2ogEDYCACAOQdAHaiAUNgIAIA5BADoA4wcgDkHg +B2ogAi8B4Bg7AQAgDkHiB2ogAi0A4hg6AAAgDkHkB2ogAkG4CmpB3AIQzU8aDCYLIA5BAToA+AUg +DkHgBWpBADYCACAOQdAFakECNgIACyAOQYAGaiACQegYakGwARDNTxogDkG8B2ogIzYCACAOQbgH +aiAcNgIAIA5BtAdqIBA2AgAgDkGwB2ogFDYCACAOQQA6AMMHIA5BwAdqIAIvAeAYOwEAIA5Bwgdq +IAItAOIYOgAAIA5BxAdqIAJBuApqQdwCEM1PGkEJIQEMJQsgAkHoA2ogDkGABmoiByAhEPYBIAIt +ALgEIgpBA0YNBCACLQDoAyEBIAJBqBtqIAJB6ANqQQFyQScQzU8aIAJBoBtqIAJBqARqKQMANwMA +IAJBmBtqIAJBoARqKQMANwMAIAJBkBtqIAJBmARqKQMANwMAIAIgAikDkAQ3A4gbIAIgAikAuQQ3 +A/gaIAIgAkHABGopAAA3AP8aIAIpA7AEIUcgBxDtJAwBCyACQZgaaiAOQYAGaiIHICEQ8ihBAyAC +LQDoGiIKQQNGDQQaIAItAJgaIQEgAkGoG2ogAkGYGmpBAXJBJxDNTxogAkGgG2ogAkHYGmopAwA3 +AwAgAkGYG2ogAkHQGmopAwA3AwAgAkGQG2ogAkHIGmopAwA3AwAgAiACKQPAGjcDiBsgAiACKQDp +GjcD+BogAiACQfAaaikAADcA/xogAikD4BohRyAHEMpLCyAOQfgFai0AAARAIAsQ2SILIA5BADoA ++AUgAkHIFmoiCCACQagbakEnEM1PGiAOQQE6APkFIAJBwBZqIgcgAkGgG2opAwA3AwAgAkG4Fmoi +DyACQZgbaikDADcDACACQbAWaiINIAJBkBtqKQMANwMAIAIgAikDiBs3A6gWIAIgAikD+Bo3A5gW +IAIgAikA/xo3AJ8WIAJBoBdqIgYgCEEnEM1PGiACQZgXaiIIIAcpAwA3AwAgAkGQF2oiByAPKQMA +NwMAIAJBiBdqIg8gDSkDADcDACACIAIpA6gWNwOAFyACIAIpA5gWNwPwFiACIAIpAJ8WNwD3FiAL +EM4tIAJB0BRqIg0gBkEnEM1PGiAOQQE6AMQKIAJByBRqIgYgCCkDADcDACACQcAUaiIIIAcpAwA3 +AwAgAkG4FGoiByAPKQMANwMAIAIgAikDgBc3A7AUIAIgAikD8BY3A6AUIAIgAikA9xY3AKcUIAJB +qBVqIA1BJxDNTxogAkGgFWoiDyAGKQMANwMAIAJBmBVqIg0gCCkDADcDACACQZAVaiIGIAcpAwA3 +AwAgAiACKQOwFDcDiBUgAiACKQOgFDcD+BQgAiACKQCnFDcA/xQgERCEQCAKQQJHDQQgAkHwFWog +AkGoFWpBJxDNTxogAkHoFWogDykDADcDACACQeAVaiANKQMANwMAIAJB2BVqIAYpAwA3AwAgAiAC +KQOIFTcD0BUgDkHIDGoQxDsMAQsgCCACQeASaiIBQSQQzU8aIA5BqAxqQQM2AgAgAkG7CmogAUEk +EM1PGiACQfAVaiACQbgKakEnEM1PGkEOIQELIA5BuAVqQQA6AAAMBQtBBAshASAxIAE6AAAgJEED +OgAAQQQMBgsgAkGYFGoiCCACKQD/FDcAACACIAIpA/gUNwCRFCACQcATaiIHQQFyIAJBqBVqQScQ +zU8aIAJBgBRqIA8pAwA3AwAgAkH4E2ogDSkDADcDACACQfATaiAGKQMANwMAIAIgCjoAkBQgAiBH +NwOIFCACIAE6AMATIAIgAikDiBU3A+gTIAgoAgAhBiACQZwUaigCACEIIAcQxCkgAkFAayAOQfgM +aiIHELFGIAIoAkQhCiACKAJAIQEgAkE4aiAHELJGIAJBMGogAigCOCACKAI8EMIwIAJB6ANqIAEg +CiACKAIwIAIoAjRBjInDAEEQIAYgCBDIFSACQShqIAJB9ANqEPEuIAIpAyghRiACQdQKaiACQYAE +aikCADcCACACQcwKaiACQfgDaikCADcCACACQcQKaiACQfADaikCADcCACACIAIpAugDNwK8CiAC +QaKAgIB4NgK4CiACIAJBuApqIgEQxTs2AqAaIAIgRjcCmBogASAOQbAFaigCACgCFEEIahCMSiAC +KAK4Cg0DIAIgAigCvAoiCDYCwBMgAiACQcAKaiIBLQAAOgDEEyACQSBqIAJBmBpqEPEuIAIoAiQh +ByACKAIgIQogASACQaAaaigCADYCACACIAIpApgaNwO4CiACQegYaiIBIAhBCGogCiAHIAJBuApq +EO4QIAEQoUUgAkHAE2oQnx8gDkHIDGoQxDsgDkGoC2ooAgBBAkYNACAOQbgFai0AAEUNACAOQcgK +ahDEOwsgDkG4BWpBADoAAAtBEiEBCyACQYADaiACQfAVakEnEM1PGiACQfgCaiIGIAJB6BVqKQMA +NwMAIAJB8AJqIgggAkHgFWopAwA3AwAgAkHoAmoiByACQdgVaikDADcDACACIAIpA9AVNwPgAiAw +QQE6AAAgAUH/AXEiCkETRg0DIAJBuQJqIAJBgANqQScQzU8aIAJBsAJqIAYpAwA3AwAgAkGoAmog +CCkDADcDACACQaACaiAHKQMANwMAIAIgAikD4AI3A5gCIBUQ8S8gCkESRg0KIAIgAToAuAogAkG4 +CmpBAXIgAkG5AmpBJxDNTxogAkH4CmogAkGwAmopAwA3AwAgAkHwCmogAkGoAmopAwA3AwAgAkHo +CmogAkGgAmopAwA3AwAgAiACKQOYAjcD4ApBxJPbACgCAEEESw0JQfCF2wAQ+z4iCkH/AXFFDQlB +ACEBQfCF2wAoAgAgChD1Lg0IDAkLIAIgAigCvAo2AugYIAIgAkHACmotAAA6AOwYQbivwwBBKyAC +QegYakHksMMAQcTowgAQiRgAC0EDCyEBIDAgAToAAAtBBgwlCyACKAJ0IQcgDkHgBGogATYCAEEA +IQEgDkGEBWogBygCACIKBH8gBygCBCEsQQEhASAKIgUhOCAHKAIIBUEACzYCACAOQYAFaiAsNgIA +IA5B/ARqIAU2AgAgDkH4BGpBADYCACAOQfQEaiABNgIAIA5B8ARqICw2AgAgDkHsBGogODYCACAO +QegEakEANgIAIA5B5ARqIAE2AgAMCgsgG0EDOgAAQQQMIwsgDQRAIA5B6AJqIAIpAuQBNwIAIA5B +/AJqIA02AgAgDkH4AmogAkH0AWooAgA2AgAgDkHwAmogAkHsAWopAgA3AgAgDkGoBWpBADoAACAO +IA5BmAJqNgKgBSAOQakFaiACQbgKakHPABDNTxoMDwtBxJPbACgCAEEDSw0IQcyF2wAQ+z4iCkH/ +AXFFDQhBACEBQcyF2wAoAgAgChD1LkUNCEHMhdsAKAIAIg1BHGohByANQShqKAIAIQYgDUEkaigC +ACEIIA0oAhwhCiACIA1BIGooAgAiDQR/IAJBADYCyAogAiAGNgLECiACIAg2AsAKIAIgDTYCvApB +ASEBIAoFQQALNgK4CiACQeASaiACQbgKakHo48IAEN0sIAJB9ANqQgA3AgAgAkEBNgLsAyACQbDk +wgA2AugDIAJBpMnCADYC8AMgAiABIA1PBH9BAAUgAiAGNgLECiACIAg2AsAKIAIgDTYCvAogAiAB +NgLICiABQQFqIQEgCgs2ArgKIAJBwBNqIAJBuApqQejjwgAQ3SwgAiAOQeAEajYCyBYgAiABIA1J +BH8gAiABNgL4GCACIAY2AvQYIAIgCDYC8BggAiANNgLsGCAKBUEACzYC6BggAkGYGmoiCiACQegY +aiIBQejjwgAQ3SwgAkHYCmpByOTCADYCACACQcwKakG45MIANgIAIAJB1ApqIAJBoBdqNgIAIAJB +yApqIAJByBZqNgIAIAJBlMnCADYCwAogAiAOQYgFajYCoBcgAiAKNgLQCiACIAJBwBNqNgLECiAC +IAJB6ANqNgK8CiACIAJB4BJqNgK4CiABIAcgAkG4CmoQ4UEgAkGwG2ogAkHwGGooAgA2AgAgAiAC +KQLoGDcDqBtBzIXbACgCACACQagbahDENAwIC0EFDCELQfCF2wAoAgAiDUEcaiEHIA1BKGooAgAh +BiANQSRqKAIAIQggDSgCHCEKIAIgDUEgaigCACINBH8gAkEANgL4AyACIAY2AvQDIAIgCDYC8AMg +AiANNgLsA0EBIQEgCgVBAAs2AugDIAJBqBtqIAJB6ANqQdjkwgAQ3SwgAkH0GGpCATcCACACQQE2 +AuwYIAJBlOXCADYC6BggAkGTAjYCzBYgAiACQcgWajYC8BggAiACQbgKajYCyBYgAiABIA1PBH9B +AAUgAiAGNgL0AyACIAg2AvADIAIgDTYC7AMgAiABNgL4AyABQQFqIQEgCgs2AugDIAJB4BJqIAJB +6ANqQdjkwgAQ3SwgAiAOQeAEajYCqBUgAiABIA1JBH8gAiABNgKoGiACIAY2AqQaIAIgCDYCoBog +AiANNgKcGiAKBUEACzYCmBogAkHAE2oiCiACQZgaaiIBQdjkwgAQ3SwgAkGIBGpByOTCADYCACAC +QfwDakG45MIANgIAIAJBhARqIAJB8BVqNgIAIAJB+ANqIAJBqBVqNgIAIAJBlMnCADYC8AMgAiAO +QYgFajYC8BUgAiAKNgKABCACIAJB4BJqNgL0AyACIAJB6BhqNgLsAyACIAJBqBtqNgLoAyABIAcg +AkHoA2oQ4UEgAkGoF2ogAkGgGmooAgA2AgAgAiACKQKYGjcDoBdB8IXbACgCACACQaAXahDENAsg +AkG4CmoQshoLIAJBGGogDkGAA2oiBxDWPiACKAIYIQEgAkEQaiACKAIcIggQ7h8gAigCECEKIAIo +AhQgASAIEM1PIQEgDiAKNgKgBSAVIAg2AgggFSABNgIEIA5BrAVqIAetNwIAQQYhAQwPCyACQegD +aiACQbgKakHIABDNTxoCQEHEk9sAKAIAQQNLDQBB5IXbABD7PiIBQf8BcUUNAEEAIQpB5IXbACgC +ACABEPUuRQ0AQeSF2wAoAgAiD0EcaiEHIA9BKGooAgAhDSAPQSRqKAIAIQYgDygCHCEBIAIgD0Eg +aigCACIPBH8gAkEANgL4GCACIA02AvQYIAIgBjYC8BggAiAPNgLsGEEBIQogAQVBAAs2AugYIAJB +yBZqIAJB6BhqQZzlwgAQ3SwgAkGkGmpCADcCACACQQE2ApwaIAJByOXCADYCmBogAkGkycIANgKg +GiACIAogD08Ef0EABSACIA02AvQYIAIgBjYC8BggAiAPNgLsGCACIAo2AvgYIApBAWohCiABCzYC +6BggAkGgF2ogAkHoGGpBnOXCABDdLCACIA5B4ARqNgKAAyACIAogD0kEfyACIA02AvQYIAIgBjYC +8BggAiAPNgLsGCACIAo2AvgYIApBAWohCiABBUEACzYC6BggAkGoG2ogAkHoGGpBnOXCABDdLCAC +IA5BiAVqNgLQFCACIAogD0kEfyACIAo2AtATIAIgDTYCzBMgAiAGNgLIEyACIA82AsQTIAEFQQAL +NgLAEyACQeASaiIKIAJBwBNqIgFBnOXCABDdLCACQZQZakHQ5cIANgIAIAJBiBlqQcjkwgA2AgAg +AkH8GGpBuOTCADYCACACQZAZaiACQagVajYCACACQYQZaiACQdAUajYCACACQfgYaiACQYADajYC +ACACQZTJwgA2AvAYIAIgCjYCjBkgAiACQagbajYCgBkgAiACQaAXajYC9BggAiACQZgaajYC7Bgg +AiACQcgWajYC6BggAiACQegDajYCqBUgASAHIAJB6BhqENZBIAJB+BVqIAJByBNqKAIANgIAIAIg +AikCwBM3A/AVQeSF2wAoAgAgAkHwFWoQxDQLIA5BqARqKAIAKAIcQQhqIgEQiT4gAkHoGGogARDo +ICACKALoGA0GIAIgAigC7BgiCjYCmBogAiACQfAYai0AADoAnBogAkEIaiAOQeAEaigCABCdMSAC +QegYaiIBIApBCGogAigCCCACKAIMEJUQIAEQ8xggAiAOQYgFaigCABCdMSACKAIAIAIoAgQQswUg +AkGYGmoQnx8gAkHoA2oQyBIgCBD7HwwDCyACQb4SaiANLQAAOgAAIAJBqBJqIAYpAwA3AwAgAkGw +EmogCCkDADcDACACIAIvAZQCOwG8EiACIAIpA/gBNwOgEiAOQegCahD7HwwfC0HYhdsAKAIAIg1B +HGohByANQShqKAIAIQYgDUEkaigCACEIIA0oAhwhCiACIA1BIGooAgAiDQR/IAJBADYCyAogAiAG +NgLECiACIAg2AsAKIAIgDTYCvApBASEBIAoFQQALNgK4CiACQaAXaiACQbgKakHw5cIAEN0sIAJB +9BhqQgA3AgAgAkEBNgLsGCACQczmwgA2AugYIAJBpMnCADYC8BggAiABIA1PBH9BAAUgAiAGNgLE +CiACIAg2AsAKIAIgDTYCvAogAiABNgLICiABQQFqIQEgCgs2ArgKIAJBqBtqIAJBuApqQfDlwgAQ +3SwgAiAOQeAEajYC0BQgAiABIA1JBH8gAiAGNgLECiACIAg2AsAKIAIgDTYCvAogAiABNgLICiAB +QQFqIQEgCgVBAAs2ArgKIAJB4BJqIAJBuApqQfDlwgAQ3SwgAiAOQYgFajYCqBUgAiABIA1JBH8g +AiABNgKoGiACIAY2AqQaIAIgCDYCoBogAiANNgKcGiAKBUEACzYCmBogAkHAE2oiCiACQZgaaiIB +QfDlwgAQ3SwgAkHkCmpB1ObCADYCACACQdgKakHI5MIANgIAIAJBzApqQbjkwgA2AgAgAkHgCmog +AkHwFWo2AgAgAkHUCmogAkGoFWo2AgAgAkHICmogAkHQFGo2AgAgAkGUycIANgLACiACIAo2AtwK +IAIgAkHgEmo2AtAKIAIgAkGoG2o2AsQKIAIgAkHoGGo2ArwKIAIgAkGgF2o2ArgKIAIgAkHoA2o2 +AvAVIAEgByACQbgKahDWQSACQdAWaiACQaAaaigCADYCACACIAIpApgaNwPIFkHYhdsAKAIAIAJB +yBZqEMQ0CyACQegDahCwGgsgAkHoAGogDkHkBGoQnwsgAigCaCIKRQ0DIA5BjAVqIAIoAmw2AgAg +DkGIBWogCjYCACAOQeAEaigCACIBKAIAIT4gASgCBCE9IAooAgAhOiAKKAIEISggDkG8BWoiG0EA +OgAAIA5BsAVqICg2AgAgDkGsBWogOjYCACAOQagFaiA9NgIAIA5BpAVqID42AgAgDkGgBWoiQCAO +QagEaigCACIpNgIADAQLIAIgAigCvAo2AugDIAIgAkHACmotAAA6AOwDQbivwwBBKyACQegDakHU +sMMAQZzowgAQiRgAC0EHDBcLIAIgAigC7Bg2ApgaIAIgAkHwGGotAAA6AJwaQbivwwBBKyACQZga +akHEsMMAQeDlwgAQiRgAC0EAIQEMBgtBASEBDAULQQMhAQwEC0EEIQEMAwtBByEBDAILQQghAQwB +C0EKIQEMAAsACyACQegDaiAOQaAFaiINICEQyAQgAi0A6AMiAUEMRg0BIAJB5gNqIgYgAi0A6wM6 +AAAgAkHQA2oiCCACQfwDaikCADcDACACQdgDaiIFIAJBhARqKQIANwMAIAIgAi8A6QM7AeQDIAIg +AikC9AM3A8gDIAIoAuwDIQogAigC8AMhByANEOobIAFBC0cNAiAOQQA6AJoFIA5BqARqKAIAIQUg +AkGYD2ogH0HwARDNTxogAkHoA2oiASACQbgKakHQBhDNTxogDSABQdAGEM1PGiAOQfQLakEAOgAA +IA5B8AtqIAU2AgALIAJBuApqIA5BoAVqIg0gIRCqAiACLQC4CiIBQQxGDQMgAkGmEWoiBiACLQC7 +CjoAACACQZARaiIIIAJBzApqKQIANwMAIAJBmBFqIgUgAkHUCmopAgA3AwAgAiACLwC5CjsBpBEg +AiACKQLECjcDiBEgAigCvAohCiACKALACiEHIA0QiT0gAUELRg0CIAJBvhJqIAYtAAA6AAAgAkGo +EmogCCkDADcDACACQbASaiAFKQMANwMAIAIgAi8BpBE7AbwSIAIgAikDiBE3A6ASDA8LQQgMCwsg +AkG+EmogBi0AADoAACACQagSaiAIKQMANwMAIAJBsBJqIAUpAwA3AwAgAiACLwHkAzsBvBIgAiAC +KQPIAzcDoBIMDQtBxJPbACgCAEECSw0BQfyF2wAQ+z4iAUH/AXFFDQFBACEVQfyF2wAoAgAgARD1 +LkUNAUH8hdsAKAIAIghBKGooAgAhCiAIQSRqKAIAIQUgCCgCHCEBIAIgCEEgaigCACIHBH8gAkEA +NgLICiACIAo2AsQKIAIgBTYCwAogAiAHNgK8CkEBIRUgAQVBAAs2ArgKIAJBwBNqIAJBuApqQeTm +wgAQ3SwgAkHECmpCADcCACACQQE2ArwKIAJBkOfCADYCuAogAkGkycIANgLACiACIAcgFUsEfyAC +IBU2AvgYIAIgCjYC9BggAiAFNgLwGCACIAc2AuwYIAEFQQALNgLoGCACQZgaaiIFIAJB6BhqIgFB +5ObCABDdLCACQfwDakGY58IANgIAIAJB+ANqIAJBqBtqNgIAIAJBlMnCADYC8AMgAiAOQbAEajYC +qBsgAiAFNgL0AyACIAJBuApqNgLsAyACIAJBwBNqNgLoAyABIAhBHGogAkHoA2oQ8kEgAkHoEmog +AkHwGGooAgA2AgAgAiACKQLoGDcD4BJB/IXbACgCACACQeASahDENAwBC0EJDAgLIA5BADoAmQUg +DkG0BGooAgAhBSACIA5BuARqKAIAQQAgDkGwBGooAgAiChs2AogEIAIgBTYChAQgAiAKNgKABCAC +QQA2AvwDIAIgCkEARyIBNgL4AyACIAU2AvQDIAIgCjYC8AMgAkEANgLsAyACIAE2AugDIAJB8Bhq +IQgDQCACQegYaiACQegDahDSGCACKALoGCIHRQRAIAJB6ANqEPQqIA5B1AVqQQA6AAAgDiAOKAKo +BDYCoAUMAgsgAigC+BghCiACKAL0GCEGIAIoAvAYIRUgAigC7BghBSAOKAKoBCgCHEEIaiIBEMI6 +IAJBuApqIAEQwy8gAigCuApFBEAgAigCwAohDSACKAK8CiAHIAUQhSEiBUUEQCANIA0oAgBBAWs2 +AgAgCBCKGQwCCyACIAY2AtQKIAIgFTYC0AogAkEANgLMCiACIAY2AsQKIAIgFTYCwAogAkEANgK8 +CiACIApBACAVGzYC2AogAiAVQQBHIgE2AsgKIAIgATYCuAogBSACQbgKahDoECANIA0oAgBBAWs2 +AgAMAQsLIAIgAikCvAo3ApgaQbivwwBBKyACQZgaakGEsMMAQajnwgAQiRgACyACQbgKaiAOQaAF +aiINICEQqwYgAi0AuAoiAUEMRg0CIAJBxhFqIgYgAi0Auwo6AAAgAkGwEWoiCCACQcwKaikCADcD +ACACQbgRaiIFIAJB1ApqKQIANwMAIAIgAi8AuQo7AcQRIAIgAikCxAo3A6gRIAIoArwKIQogAigC +wAohByANENc/IAFBC0cNAyAOQdwDaiAHNgIAIA5B2ANqIgEgCjYCACAOQagEaigCACEFIAEoAgQh +ASAOQewFakEAOgAAIA5BpAVqIAE2AgAgDiAFQRBqNgKgBQsgAkG4CmogDkGgBWoiASAhEJIDIAIt +ALgKQRNGDQQgDkHgA2ogAkG4CmpByAAQzU8hBSABEIMvIAUtAABBEkcNAyACQagXaiIdIA5B7ANq +KAIANgIAIAIgDkHkA2opAgA3A6AXIAJBuApqIiIQvgsgAkH4EWogAkHoCmopAwA3AwAgAkHwEWog +AkHgCmopAwA3AwAgAiACKQPYCjcD6BEgAkHoEmoiCSACQYgLaigCADYCACACIAIpA4ALNwPgEiAC +KALwCiEUIAJB0BZqIhwgAkH0C2ooAgA2AgAgAiACKQLsCzcDyBYgAkH4FWoiEyACQYAMaigCADYC +ACACIAIpA/gLNwPwFSACQbAVaiILIAJBjAxqKAIANgIAIAIgAikChAw3A6gVIAJB2BRqIg8gAkGY +DGooAgA2AgAgAiACKQOQDDcD0BQgAkHoGGoiFSACQZgLakEkEM1PGiACQZgaaiINIAJBvAtqQSQQ +zU8aIAJByBNqIgYgAkH8CmooAgA2AgAgAkHQEWogAkHACmopAwA3AwAgAkHYEWogAkHICmopAwA3 +AwAgAkHgEWogAkHQCmopAwA3AwAgAiACKQL0CjcDwBMgAiACKQO4CjcDyBEgAkGIA2oiCCACQaQM +aigCADYCACACIAIpApwMNwOAAyACQbAbaiIHIAJBlAtqKAIANgIAIAIgAikCjAs3A6gbIAJB4Atq +ELhLIA5BqARqKAIAIQogAkGYD2ogAkHIEWpBOBDNTxogAkHoA2oiBSAiQZgFEM1PGiABIAVBmAUQ +zU8aIA5BuApqIBQ2AgAgDkG8CmogAikDwBM3AgAgDkHECmogBigCADYCACAOQcgKaiACKQPgEjcD +ACAOQdAKaiAJKAIANgIAIA5B1ApqIAIpA6gbNwIAIA5B3ApqIAcoAgA2AgAgDkHgCmogFUEkEM1P +GiAOQYQLaiANQSQQzU8aIA5BsAtqIB0oAgA2AgAgDkGoC2ogAikDoBc3AwAgDkG0C2ogAikDyBY3 +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 +KAIAIRlBAQshASAYIA02AsgPIBggGTYCxA8gGCAFNgLADyAYQQA2ArwPIBggATYCuA8gGCAZNgK0 +DyAYIAU2ArAPIBhBADYCrA8gGCABNgKoDyAgQfANaiINIBhBqA9qENYNAkBBxJPbACgCAEEBSw0A +QcCF2wAQ+z4iAUH/AXFFDQBBACEZQcCF2wAoAgAgARD1LkUNAEHAhdsAKAIAIgZBKGooAgAhCCAG +QSRqKAIAIQcgBigCHCEFICBBQGshASAYIAZBIGooAgAiFQR/IBhBADYCuA8gGCAINgK0DyAYIAc2 +ArAPIBggFTYCrA9BASEZIAUFQQALNgKoDyAYQZQOaiAYQagPakHk8sEAENosIBhB2A1qQgA3AgAg +GEEBNgLQDSAYQZjzwQA2AswNIBhBsMDBADYC1A0gGCAVIBlNBH9BAAUgGCAINgK0DyAYIAc2ArAP +IBggFTYCrA8gGCAZNgK4DyAZQQFqIRkgBQs2AqgPIBhBqA5qIBhBqA9qQeTywQAQ2iwgGCABNgK8 +DiAYIBUgGUsEfyAYIAg2ArQPIBggBzYCsA8gGCAVNgKsDyAYIBk2ArgPIBlBAWohGSAFBUEACzYC +qA8gGEHADmogGEGoD2pB5PLBABDaLCAYIA02AtQOIBggFSAZSwR/IBggGTYC/A4gGCAINgL4DiAY +IAc2AvQOIBggFTYC8A4gBQVBAAs2AuwOIBhB2A5qIgEgGEHsDmoiBUHk8sEAENosIBhB1A9qQaTJ +wQA2AgAgGEHID2pBoPPBADYCACAYQbwPakGEycEANgIAIBhB0A9qIBhBgA9qNgIAIBhBxA9qIBhB +1A5qNgIAIBhBuA9qIBhBvA5qNgIAIBhBoMDBADYCsA8gGCAgKALoDTYCgA8gGCABNgLMDyAYIBhB +wA5qNgLADyAYIBhBqA5qNgK0DyAYIBhBzA1qNgKsDyAYIBhBlA5qNgKoDyAFIAZBHGogGEGoD2oQ +1kFBwIXbACgCACAFEMQ0CyAYQQA2ArwPIBhBADYCrA8gGCAgQewNaiIPKAIANgLMDyAYICAoAugN +IgUoAgQiATYCxA8gGCAFKAIAIgc2AsAPIBggATYCtA8gGCAHNgKwDyAYIAUoAghBACAHGzYCyA8g +GCAHQQBHIgE2ArgPIBggATYCqA8gIEH8DWoiBiAYQagPaiIHEPkTIBhBADYCmA8gGEEANgKIDyAY +ICAoAugNIggoAgwiFTYCnA8gGCAVNgKMDyAYIAhBEGooAgAiBTYCoA8gGCAVQQBHIgE2ApQPIBgg +BTYCkA8gGCABNgKEDyAYIAhBFGooAgBBACAVGzYCpA8gDygCACAgKAJAICBBxABqKAIAIAYgDRCh +AiAPKAIAIBhBsA9qICBBhA5qKAIANgIAIBggBikCADcDqA9BGGogBxDuByAPKAIAQRhqIBhBhA9q +ELsOICBBADoAuwUgIEGwBWogICkD6A1CIIk3AwALIBhBqA9qIQ5BACEBQQAhCEEAIQ1BACEPQQAh +GSMAQeAfayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAgQcgAaiICLQDzBEEBaw4MCQYBAgME +EhYXHQUgAAsgAkEAOgDyBCACQQA7AfAEIAIgAikD6AQ3A4AEIAIQvAsgAkGQBGpBADYCACACQQA2 +AogEIAJBgQI7APEEIAJBhAZqQQA6AAAgAkGABmogAigCgAQ2AgALIANBmApqIAJB+ARqIgEgIRCj +BCADKQOYCkIDUQ0IQQEhBSACQQE6APAEIAJB8AFqIANBmApqQdAAEM1PGiABEOtCAkAgAigChAQi +CCgCDCIBRQRAQQAhBQwBCyAIQRRqKAIAIRAgCEEQaigCACEICyACIAU2ApQEIAJBtARqIBA2AgAg +AkGwBGogCDYCACACQawEaiABNgIAIAJBqARqQQA2AgAgAkGkBGogBTYCACACQaAEaiAINgIAIAJB +nARqIAE2AgAgAkGYBGpBADYCAEEAIQUMEwsgAkH4BGohGwJAAkACQCACQZQFaiJDLQAAQQFrDgMC +BgABCyACQZAFaigCACEpIAJBjAVqKAIAITIMDAsgAkGIBWooAgAhJiACQYQFaigCACE7IAJBgAVq +KAIAITggAkH8BGooAgAhNiACKAL4BCERQQEhBQwTC0HAwMEAQSNBlIrCABDmKwALQQMhBQwRCyAC +QfgEaiEoAkACQCACQZEFaiI6LQAAQQFrDgQIAwsBAAsgAkGEBWooAgAhGSACQYAFaigCACElIAJB +/ARqKAIAITQgAkGMBWooAgAhPSACKAL4BCEjQQQhBQwRCyACQZgFaiEkAkACQAJAIAJBnApqIhct +AABBAWsOAwIEAQALIAJBnAVqKAIAISwgAkGYCmooAgAhPiACKAKYBSErQQYhBQwSCyACQaAFaiEU +AkACQAJAAkAgAkHRBWoiPC0AAEEBaw4EAwYBAgALIAJBxAVqKAIAISwgAkHABWooAgAhKyACQcwF +aigCACEfIAJByAVqKAIAISdBByEFDBQLQQohBQwTCyACQdgFaiEvAkACQCACQZsHaiIwLQAAQQFr +DgQABQ8BDgtBwMDBAEEjQeTAwQAQ5isACyACQaAHaiExAkACQCACQZgJaiI/LQAAQQFrDgQLBRAB +AAsgAkHkCGooAgAhQSACQeAIaigCACEtIAJBiAlqKAIAIUAgAkGECWooAgAhQkELIQUMEwtBDSEF +DBILQcDAwQBBI0HkwMEAEOYrAAtBwMDBAEEjQcDCwQAQ5isACyACQfgEaiEGIAJBxAVqIhQtAABB +AWsOBAIADQ4BCwALIAJB/ARqKAIAIQEgAigC+AQhBQwWC0HAwMEAQSNBoLLCABDmKwALQcDAwQBB +I0Hg7MEAEOYrAAsgDkETOgAAQQMhAQwaC0HAwMEAQSNBtPHBABDmKwALQcDAwQBBI0Ho/8EAEOYr +AAtBAiEFDAcLQQUhBQwGC0EIIQUMBQtBCSEFDAQLQQwhBQwDC0EOIQUMAgtBAiEFDAsLQQEhBQwK +CwJAAn8CfwJAAn8DQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFDg4AAQIDBAUGBwgJCgsMDRULIANByAFqIAJBlARq +EJ8LIAMoAsgBIgUNFyACQQA6APAEIANBmApqIgEgAkHwAWpB0AAQzU8aIAJB+ARqIAFB4AEQzU8a +IAJB2AZqQQA6AAAMRAsgA0G4AWogESgCAEHcAGooAgBBCGoQ5TUgA0GwAWogAygCuAEgNiA4IDsg +JiADKAK8ASgCWBEKACADKAKwASEyIAJBkAVqIAMoArQBIik2AgAgAkGMBWogMjYCAEECIQUMPQsg +A0GYCmogMiAhICkoAgwRAwAgAygCmAoiB0ECRg0WIANB2ANqIgYgA0GsCmopAgA3AwAgA0HQA2oi +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 +CDYCACACQdwFaiABNgIAIAJB2wVqIAYtAAA6AAAgAkHkBWogA0GwGWpBPBDNTxogAkGoBmogBzoA +ACACQaAGaiBHNwMAIAJBqQZqIAMoAqgZNgAAIAJBrAZqIAMoAKsZNgAAIAdBAkYNBSACQQA6AJgH +IAJBhAlqIAJBsAZqIkIgL0HYABDNTzYCACACQZkHakEAOwAAIAJBmAlqIj9BADoAACACQYgJaiAC +QZAHaigCACJANgIAIAJB5AhqIAJBjAdqKAIAIkE2AgAgAkHgCGogAkGIB2ooAgAiLTYCACACQYwJ +aiACQaAHaiIxKQIANwIAIAJBlAlqIAJBqAdqKAIANgIADDILIANB+BxqIAJB2AVqIgcgIRDyKEED +IAMtAMgdIhBBA0YNNxogA0GmGWogAy0A+xw6AAAgAyADLwD5HDsBpBkgAy0A+BwhBSADKAL8HCEB +IAMoAoAdIQggA0HoGGogA0GEHWpBPBDNTxogAyADKADJHTYC4BggAyADQcwdaigAADYA4xggAykD +wB0hRyADKALQHSEGIAMoAtQdIQ0gBxDKSwwhCyACIC02AqAHIAJBpAdqIEE2AgAgAkHoCGogQjYC +ACACQewIaiILIAJBjAlqKQIANwIAIAJB9AhqIAJBlAlqKAIANgIAIANByANqIgEgQBDpSCADQQM2 +AsAeIANB+BxqIAEgA0HAHmoQ/x8gAygC+BwNAiADQZgfaiIHIANBjB1qKAIANgIAIAMgA0GEHWop +AgA3A5AfIANBgB1qIgUoAgAhDSADKAL8HCEBIANBzBtqIANBkB1qQawBEM1PGiADQcgbaiAHKAIA +NgIAIAMgDTYCvBsgAyABNgK4GyADIAMpA5AfNwLAGyADQQA2AuQeIANBADYC3B4gA0GQAWpBBhDu +HyADKAKQASEBIAMoApQBIgdBnP/BACgAADYAACAHQQRqQaD/wQAvAAA7AAAgA0EGNgKYHyADIAc2 +ApQfIAMgATYCkB8gA0HIA2ogAigC6AgQ2UkgAy0AyANBBkYNSSADQYgdaiADQdgDaikDADcDACAF +IANB0ANqKQMANwMAIAMgAykDyAM3A/gcIANByANqIgcgA0HcHmogA0GQH2ogA0H4HGoQ1AwgBxDj +QiADQYgBakENEO4fIAMoAogBIQEgAygCjAEiBUG0/8EAKQAANwAAIAVBBWpBuf/BACkAADcAACAD +QQ02ApgfIAMgBTYClB8gAyABNgKQHyAHIAIoAugIQQhqENlJIAMtAMgDQQZGDUkgA0GIHWoiFSAD +QdgDaiIGKQMANwMAIANBgB1qIgggA0HQA2oiBykDADcDACADIAMpA8gDNwP4HCADQcgDaiIcIANB +3B5qIANBkB9qIhMgA0H4HGoQ1AwgHBDjQiADQYABakEEEO4fIAMoAoABIQUgAygChAEiAUHryuWb +BzYAACADQQQ2AvAeIAMgATYC7B4gAyAFNgLoHiADQQA2AvweIANBADYC9B4gA0H4AGpBBxDuHyAD +KAJ4IQEgAygCfCIFQcH/wQAoAAA2AAAgBUEDakHE/8EAKAAANgAAIANBBzYCiB8gAyAFNgKEHyAD +IAE2AoAfIBMgAigC6AgoAkhBCGoQ8VEgHCATEJdSIAMtAMgDQQZGDUkgFSAGKQMANwMAIAggBykD +ADcDACADIAMpA8gDNwP4HCADQcgDaiIIIANB9B5qIANBgB9qIgcgA0H4HGoiBRDUDCAIEONCIANB +kB9qEIg/IANBiB9qIANB/B5qKAIAIgE2AgAgA0GEHWogATYCACADQQU6APgcIAMgAykC9B43Avwc +IAggA0HcHmogA0HoHmogBRDUDCAIEONCIANB8ABqQQkQ7h8gAygCcCEBIAMoAnQiBUHI/8EAKQAA +NwAAIAVBCGpB0P/BAC0AADoAACADQQk2ApgfIAMgBTYClB8gAyABNgKQHyADQegAaiBAELFGIAMg +AykDaDcCgB8gCCAHEP1HIAMtAMgDQQZGDUkgA0GIHWoiBiADQdgDaiIIKQMANwMAIANBgB1qIgcg +A0HQA2oiBSkDADcDACADIAMpA8gDNwP4HCADQcgDaiIcIANB3B5qIANBkB9qIhMgA0H4HGoQ1Awg +HBDjQiADQeAAakEOEO4fIAMoAmAhASADKAJkIhVB0f/BACkAADcAACAVQQZqQdf/wQApAAA3AAAg +A0EONgLwHiADIBU2AuweIAMgATYC6B4gA0EANgL8HiADQQA2AvQeIANB2ABqQQcQ7h8gAygCWCEB +IAMoAlwiFUHB/8EAKAAANgAAIBVBA2pBxP/BACgAADYAACADQQc2AogfIAMgFTYChB8gAyABNgKA +HyATIANBuBtqEPFRIBwgExCXUiADLQDIA0EGRg1JIAYgCCkDADcDACAHIAUpAwA3AwAgAyADKQPI +AzcD+BwgA0HIA2oiByADQfQeaiADQYAfaiADQfgcaiIFENQMIAcQ40IgA0GQH2oQiD8gA0GIH2og +A0H8HmooAgAiATYCACADQYQdaiABNgIAIANBBToA+BwgAyADKQL0HjcC/BwgByADQdweaiADQege +aiAFENQMIAcQ40IgA0HQAGpBBBDuHyADKAJQIQUgAygCVCIBQfTywasGNgAAIANBBDYCmB8gAyAB +NgKUHyADIAU2ApAfIAcgMRCYUiADLQDIA0EGRg1JIANBiB1qIgYgA0HYA2oiBykDADcDACADQYAd +aiIIIANB0ANqIgUpAwA3AwAgAyADKQPIAzcD+BwgA0HIA2oiEyADQdweaiADQZAfaiADQfgcahDU +DCATEONCIANByABqQQcQ7h8gAygCSCEBIAMoAkwiFUHf/8EAKAAANgAAIBVBA2pB4v/BACgAADYA +ACADQQc2ApgfIAMgFTYClB8gAyABNgKQHyATEOkVIAMtAMgDQQZGDUkgBiAHKQMANwMAIAggBSkD +ADcDACADIAMpA8gDNwP4HCADQcgDaiIFIANB3B5qIANBkB9qIANB+BxqENQMIAUQ40IgCCADQeQe +aigCACIBNgIAIANBzB5qIAE2AgAgA0EFOgDAHiADIAMpAtweNwLEHiAFIANBwB5qENQDIAMoAsgD +IgVBgICAgHhGDRYgAkH8CGoiASADKQLMAzcCACACQfgIaiAFNgIAIANBwB5qEM4wIAJB9AlqQQA6 +AAAgAkGoCWogAkGACWooAgA2AgAgAkGkCWogASgCADYCACACQaAJaiACKALoCDYCAEEMIQUMMwsg +A0HIA2ogAkGgCWoiBSAhEKkFIAMoAvADQYGAgIB4Rg0FIAJBqAdqIANByANqQbgBEM1PGiAFEINA +IAIgAkHoCGo1AgA3A6AJDDALIANByANqIAJBoAlqEME5IAMoAsgDQQNGDSQgA0HAG2ogA0HQA2oi +ASgCADYCACADIAMpAsgDIkc3A7gbIEenDSUgA0GIBGogAkGoB2pBuAEQzU8aIAEgAkHoCGooAgAi +BUEgaikDADcDACADQdgDaiAFQShqKQMANwMAIANB4ANqIAVBMGopAwA3AwAgA0HwA2ogBSgCSCIB +QdABaikCADcDACADQfgDaiABQdgBaikCADcDACADQYAEaiABQeABaikCADcDACADIAUpAxg3A8gD +IAMgAUHIAWopAgA3A+gDIANByAVqIAJB9AhqKAIANgIAIAMgAkHsCGopAgA3A8AFIAJB+AhqIQcg +A0H4HGoiBSADQcgDaiIBEMlBIANBuBtqEL8/IAEgBRCBKSADKALIAyIGRQ0DIAMoAswDIQ0gA0H4 +HGoQoS4gBxCIP0ESIQUMFgsgA0GoH2ogA0GMHWooAgA2AgAgAyADQYQdaikCADcDoB8gA0GAHWoo +AgAhDSADKAL8HCEGQQoMFAtBAiEQQREhBQJAQcST2wAoAgANAEH4+NoAEPs+IgFB/wFxRQ0AQQAh +CEH4+NoAKAIAIAEQ9S5FDQBB+PjaACgCACIBQRxqIQ0gAUEgaigCACIGBEAgAUEoaigCACEVIAFB +JGooAgAhByABKAIcIQggA0EANgLYAyADIBU2AtQDIAMgBzYC0AMgAyAGNgLMAwsgAyAINgLIAyAD +QfgcaiIVIANByANqIgdBwMHBABDaLCADQdQDakIANwIAIANBoMDBADYCwBsgA0EBNgLMAyADQZjC +wQA2AsgDIANBsMDBADYC0AMgAyAHNgK8GyADIBU2ArgbIANBoB9qIgcgDSADQbgbahDgQUH4+NoA +KAIAIAcQxDQLDBULIANBthtqIAYtAAA6AAAgAyADLwHsGTsBtBsgA0H4GmogA0GwGWpBPBDNTxoM +FgsgAygCzAMhBiADQfgcahChLiAHEIg/QQshBQwSC0EDIQUMKwtBAwwsCyABIANBwBJqQSQQzU8a +IAJBgAxqQQM2AgAgA0GYFWogAkGwC2opAgA3AwAgA0GgFWogAkG4C2opAgA3AwAgA0GoFWogAkHA +C2ooAgA2AgAgAyACQagLaikCADcDkBUgAkGkC2ooAgAhCCACKAKgCyEBQQ4hBQwYCyADQZgKaiAC +QYQFahDBOSADKAKYCkEDRg0BIANBkANqIANBoApqKAIANgIAIAMgAykCmAo3A4gDIANBnANqIAJB +gAVqKAIANgIAIAMgAikC+AQ3ApQDIAMgAkGoA2otAAA6AKADIANBmApqIgcgAkHYAmpB2AAQzU8a +IAJBqAFqIAcQ7ysgByACQYgEaiACKAK4BCIFKAIAIAUoAgQQrBEgByAHEJIJIAIoAuAEIgUoAgAg +BSgCBCADQYgDahCKCyADKAKYCkEDRwRAIANBpApqEIg/IANBmApqEL8/CyACQcACahD7HwwKC0ED +DCwLIA5BEzoAAEEHIQEMPAsgAygCzAEhASACIAU2ArgEQQAhBUEAIQggASgCACIHBEAgASgCCCEI +IAEoAgQhNSAHIQ9BASEFCyACIAU2ArwEIAJB3ARqIAg2AgAgAkHYBGogNTYCACACQdQEaiAPNgIA +IAJB0ARqQQA2AgAgAkHMBGogBTYCACACQcgEaiA1NgIAIAJBxARqIA82AgAgAkHABGpBADYCAAwH +CyBDQQM6AAAgDkETOgAAQQQhAQw6CyAIBEAgAiADKQLUATcCwAIgAkHUAmogCDYCACACQdACaiAD +QeQBaigCADYCACACQcgCaiADQdwBaikCADcCACACQYAFakEAOgAAIAIgAkHwAWo2AvgEIAJBgQVq +IANBmApqQc8AEM1PGgwdC0HEk9sAKAIAQQNLDQVBzIXbABD7PiIBQf8BcUUNBUEAIQVBzIXbACgC +ACABEPUuRQ0FQcyF2wAoAgAiAUEcaiEGIAFBKGooAgAhCCABQSRqKAIAIQcgASgCHCENIAMgAUEg +aigCACIBBH8gA0EANgKoCiADIAg2AqQKIAMgBzYCoAogAyABNgKcCkEBIQUgDQVBAAs2ApgKIANB +oBNqIANBmApqQfDswQAQ2iwgA0HUA2pCADcCACADQQE2AswDIANBuO3BADYCyAMgA0GwwMEANgLQ +AyADIAEgBU0Ef0EABSADIAg2AqQKIAMgBzYCoAogAyABNgKcCiADIAU2AqgKIAVBAWohBSANCzYC +mAogA0HoFmogA0GYCmpB8OzBABDaLCADIAJBuARqNgL4GiADIAEgBUsEfyADIAU2AogdIAMgCDYC +hB0gAyAHNgKAHSADIAE2AvwcIA0FQQALNgL4HCADQbgbaiIHIANB+BxqIgVB8OzBABDaLCADQbgK +akHQ7cEANgIAIANBrApqQcDtwQA2AgAgA0G0CmogA0GgH2o2AgAgA0GoCmogA0H4Gmo2AgAgA0Gg +wMEANgKgCiADIAJB4ARqNgKgHyADIAc2ArAKIAMgA0HoFmo2AqQKIAMgA0HIA2o2ApwKIAMgA0Gg +E2o2ApgKIAUgBiADQZgKahDhQSADQcgSaiADQYAdaigCADYCACADIAMpAvgcNwPAEkHMhdsAKAIA +IANBwBJqEMQ0DAULIA5BEzoAAEEFIQEMOAsgA0HIA2ogA0GYCmpByAAQzU8aAkBBxJPbACgCAEED +Sw0AQeSF2wAQ+z4iCEH/AXFFDQBBACEBQeSF2wAoAgAgCBD1LkUNAEHkhdsAKAIAIghBHGohByAI +QShqKAIAIRUgCEEkaigCACENIAgoAhwhBSADIAhBIGooAgAiCAR/IANBADYCiB0gAyAVNgKEHSAD +IA02AoAdIAMgCDYC/BxBASEBIAUFQQALNgL4HCADQfgaaiADQfgcakGk7sEAENosIANBxBtqQgA3 +AgAgA0EBNgK8GyADQdDuwQA2ArgbIANBsMDBADYCwBsgAyABIAhPBH9BAAUgAyAVNgKEHSADIA02 +AoAdIAMgCDYC/BwgAyABNgKIHSABQQFqIQEgBQs2AvgcIANBoB9qIANB+BxqQaTuwQAQ2iwgAyAC +QbgEajYC6BggAyABIAhJBH8gAyAVNgKEHSADIA02AoAdIAMgCDYC/BwgAyABNgKIHSABQQFqIQEg +BQVBAAs2AvgcIANBwBJqIANB+BxqQaTuwQAQ2iwgAyACQeAEajYCsBkgAyABIAhJBH8gAyABNgL4 +FiADIBU2AvQWIAMgDTYC8BYgAyAINgLsFiAFBUEACzYC6BYgA0GgE2oiBSADQegWaiIBQaTuwQAQ +2iwgA0GkHWpB2O7BADYCACADQZgdakHQ7cEANgIAIANBjB1qQcDtwQA2AgAgA0GgHWogA0HwGWo2 +AgAgA0GUHWogA0GwGWo2AgAgA0GIHWogA0HoGGo2AgAgA0GgwMEANgKAHSADIAU2ApwdIAMgA0HA +Emo2ApAdIAMgA0GgH2o2AoQdIAMgA0G4G2o2AvwcIAMgA0H4Gmo2AvgcIAMgA0HIA2o2AvAZIAEg +ByADQfgcahDWQSADQbgaaiADQfAWaigCADYCACADIAMpAugWNwOwGkHkhdsAKAIAIANBsBpqEMQ0 +CyACKAKABCgCHEEIaiIBEIk+IANB+BxqIAEQ6CAgAygC+BwNFyADIAMoAvwcIgU2ArgbIAMgA0GA +HWotAAA6ALwbIANBCGogAigCuAQQnTEgA0H4HGoiASAFQQhqIAMoAgggAygCDBCVECABEPMYIQEg +AyACKALgBBCdMSABIAMoAgAgAygCBBCzBSADQbgbahCfHyADQcgDahDIEiAGEPsfDAMLIANBnhJq +IAYtAAA6AAAgA0GIEmogDSkDADcDACADQZASaiAHKQMANwMAIAMgAy8BhAI7AZwSIAMgAykD6AE3 +A4ASIAJBwAJqEPsfDDQLQdiF2wAoAgAiAUEcaiEGIAFBKGooAgAhCCABQSRqKAIAIQcgASgCHCEN +IAMgAUEgaigCACIBBH8gA0EANgKoCiADIAg2AqQKIAMgBzYCoAogAyABNgKcCkEBIQUgDQVBAAs2 +ApgKIANBoB9qIANBmApqQfjuwQAQ2iwgA0GEHWpCADcCACADQQE2AvwcIANB1O/BADYC+BwgA0Gw +wMEANgKAHSADIAEgBU0Ef0EABSADIAg2AqQKIAMgBzYCoAogAyABNgKcCiADIAU2AqgKIAVBAWoh +BSANCzYCmAogA0HAEmogA0GYCmpB+O7BABDaLCADIAJBuARqNgKwGSADIAEgBUsEfyADIAg2AqQK +IAMgBzYCoAogAyABNgKcCiADIAU2AqgKIAVBAWohBSANBUEACzYCmAogA0GgE2ogA0GYCmpB+O7B +ABDaLCADIAJB4ARqNgLwGSADIAEgBUsEfyADIAU2AsgbIAMgCDYCxBsgAyAHNgLAGyADIAE2Arwb +IA0FQQALNgK4GyADQegWaiIHIANBuBtqIgVB+O7BABDaLCADQcQKakHc78EANgIAIANBuApqQdDt +wQA2AgAgA0GsCmpBwO3BADYCACADQcAKaiADQbAaajYCACADQbQKaiADQfAZajYCACADQagKaiAD +QbAZajYCACADQaDAwQA2AqAKIAMgBzYCvAogAyADQaATajYCsAogAyADQcASajYCpAogAyADQfgc +ajYCnAogAyADQaAfajYCmAogAyADQcgDajYCsBogBSAGIANBmApqENZBIANBgBtqIANBwBtqKAIA +NgIAIAMgAykCuBs3A/gaQdiF2wAoAgAgA0H4GmoQxDQLIANByANqELAaCyADQcABaiACQbwEahCf +CyADKALAASIFRQ0UIAMoAsQBIQEgAiAFNgLgBCACIAE2AuQEIAIoArgEIgEoAgAhNiABKAIEITgg +BSgCACE7IAUoAgQhJiACQZQFaiJDQQA6AAAgAkGIBWogJjYCACACQYQFaiA7NgIAIAJBgAVqIDg2 +AgAgAkH8BGogNjYCACACIAIoAoAEIhE2AvgEIAJB+ARqIRsMFQsgAyADKAKcCjYCyAMgAyADQaAK +ai0AADoAzANB6LbCAEErIANByANqQfS3wgBBpPHBABCJGAALIAMoAswDIQYgA0HAHmoQzjBBCwsh +BSALEPtACyADQfAZaiIHIANBoB9qQTwQzU8aIAJBAToAmAkgA0HuGmoiASADQa8aai0AADoAACAD +IAMvAK0aOwHsGiADQbAaaiAHQTwQzU8aIDEQ5iggBUESRw0BIANBthtqIAJBswZqLQAAOgAAIAMg +AkGxBmovAAA7AbQbIAJBtAZqKAIAIQEgAkG4BmooAgAhCCACLQCwBiEFIANB+BpqIAJBvAZqQTwQ +zU8aIAMgAkGBB2ooAAA2AvAaIAMgAkGEB2ooAAA2APMaIAJBgAdqLQAAIRAgAkH4BmopAwAhRwsg +AkGoBmotAABBAkYNAyACQZgHai0AAA0CDAMLIANBthtqIAEtAAA6AAAgAyADLwHsGjsBtBsgA0H4 +GmogA0GwGmpBPBDNTxogAkGwBmoQxCkgBiEBIA0hCAsgAkGYB2pBADoAAEECIRAgAkGZB2oiLi0A +AA0CDAMLIC8QxCkLIAJBmAdqQQA6AAAgAkGZB2oiLi0AAEUNAQsgAkGgB2oQ+0ALIC5BADoAACAD +Qd4YaiIHIANBthtqLQAAOgAAIAMgAy8BtBs7AdwYIANBoBhqIANB+BpqQTwQzU8aIAMgAygA8xo2 +AJsYIAMgAygC8Bo2ApgYIDBBAToAACAQQf8BcUEDRg0VIANBphlqIActAAA6AAAgAyADLwHcGDsB +pBkgA0HoGGogA0GgGGpBPBDNTxogAyADKACbGDYA4xggAyADKAKYGDYC4BggLxDtJAsgAkHQBWot +AAAEQCAUENkiCyACQQA6ANAFIANBlhZqIgsgA0GmGWotAAA6AAAgAyADLwGkGTsBlBYgA0HYFWoi +FSADQegYakE8EM1PGiACQQE6ANEFIANB3hZqIgcgCy0AADoAACADIAMoAOMYNgDTFSADIAMoAuAY +NgLQFSADIAMvAZQWOwHcFiADQaAWaiILIBVBPBDNTxogAyADKADTFTYAmxYgAyADKALQFTYCmBYg +FBDOLSADQcYUaiIVIActAAA6AAAgAyADLwHcFjsBxBQgA0GIFGoiByALQTwQzU8aIAJBAToAnAog +A0GOFWoiCyAVLQAAOgAAIAMgAygAmxY2AIMUIAMgAygCmBY2AoAUIAMgAy8BxBQ7AYwVIANB0BRq +IAdBPBDNTxogAyADKACDFDYAyxQgAyADKAKAFDYCyBQgJBCEQCAQQf8BcUECRw0BIANBzhVqIAst +AAA6AAAgAyADLwGMFTsBzBUgA0GQFWogA0HQFGpBPBDNTxogAkGgDGoQxDsLIAJBkAVqQQA6AAAM +AwsgA0H0E2ogAygAyxQ2AAAgAyADKALIFDYA8RMgAyADLwGMFTsAoRMgAyALLQAAOgCjEyADQawT +aiADQdAUakE8EM1PGiADIA02AvwTIAMgBjYC+BMgAyAQOgDwEyADIEc3A+gTIAMgCDYCqBMgAyAB +NgKkEyADIAU6AKATIANBoBNqEMQpIANBQGsgAkHQDGoiBxCxRiADKAJEIQUgAygCQCEBIANBOGog +BxCyRiADQTBqIAMoAjggAygCPBDCMCADQcgDaiABIAUgAygCMCADKAI0QfSKwgBBECAGIA0QyBUg +A0EoaiADQdQDahDxLiADKQMoIUcgA0G0CmogA0HgA2opAgA3AgAgA0GsCmogA0HYA2opAgA3AgAg +A0GkCmogA0HQA2opAgA3AgAgAyADKQLIAzcCnAogA0GigICAeDYCmAogAyADQZgKaiIBEIM9NgLA +GyADIEc3ArgbIAEgAkGIBWooAgAoAhRBCGoQjEoCQCADKAKYCkUEQCADIAMoApwKIgY2AugWIAMg +A0GgCmoiAS0AADoA7BYgA0EgaiADQbgbahDxLiADKAIkIQggAygCICEHIAEgA0HAG2ooAgA2AgAg +AyADKQK4GzcDmAogA0H4HGoiBSAGQQhqIAcgCCADQZgKahDuECAFEKFFIANB6BZqEJ8fIAJBoAxq +EMQ7IAJBgAtqKAIAQQJGDQIgAkGQBWotAAANAQwCCyADIAMoApwKNgL4HCADIANBoApqLQAAOgD8 +HEHotsIAQSsgA0H4HGpBhLjCAEHM8cEAEIkYAAsgAkGgCmoQxDsLIAJBkAVqQQA6AAALQRIhBQsg +A0GGA2oiByADQc4Vai0AADoAACADIAMvAcwVOwGEAyADQcgCaiADQZAVakE8EM1PGiA6QQE6AAAg +BUH/AXEiDUETRg0SIANBxgJqIActAAA6AAAgAyADLwGEAzsBxAIgA0GIAmogA0HIAmpBPBDNTxog +KBDxLyANQRJHBEAgAyAFOgCYCiADIAMvAcQCOwCZCiADIAg2AqAKIAMgATYCnAogAyADQcYCai0A +ADoAmwogA0GkCmogA0GIAmpBPBDNTxoCQEHEk9sAKAIAQQRLDQBB8IXbABD7PiIBQf8BcUUNAEEA +IQVB8IXbACgCACABEPUuRQ0AQfCF2wAoAgAiBkEcaiEHIAZBKGooAgAhCCAGQSRqKAIAIQEgBigC +HCENIAMgBkEgaigCACIGBH8gA0EANgLYAyADIAg2AtQDIAMgATYC0AMgAyAGNgLMA0EBIQUgDQVB +AAs2AsgDIANBwBJqIANByANqQeDtwQAQ2iwgA0GEHWpCATcCACADQQE2AvwcIANBnO7BADYC+Bwg +A0HMATYC/BogAyADQfgaajYCgB0gAyADQZgKajYC+BogAyAFIAZPBH9BAAUgAyAINgLUAyADIAE2 +AtADIAMgBjYCzAMgAyAFNgLYAyAFQQFqIQUgDQs2AsgDIANBoBNqIANByANqQeDtwQAQ2iwgAyAC +QbgEajYC8BkgAyAFIAZJBH8gAyAFNgLIGyADIAg2AsQbIAMgATYCwBsgAyAGNgK8GyANBUEACzYC +uBsgA0HoFmoiBSADQbgbaiIBQeDtwQAQ2iwgA0HoA2pB0O3BADYCACADQdwDakHA7cEANgIAIANB +5ANqIANBsBpqNgIAIANB2ANqIANB8BlqNgIAIANBoMDBADYC0AMgAyACQeAEajYCsBogAyAFNgLg +AyADIANBoBNqNgLUAyADIANB+BxqNgLMAyADIANBwBJqNgLIAyABIAcgA0HIA2oQ4UEgA0GoH2og +A0HAG2ooAgA2AgAgAyADKQK4GzcDoB9B8IXbACgCACADQaAfahDENAsgA0GYCmoQsRoLIANBGGog +AkHYAmoiARDWPiADKAIYIQcgA0EQaiADKAIcIgYQ7h8gAygCECEFIAMoAhQgByAGEM1PIQggAiAB +rTcChAUgAkGABWogBjYCACACQfwEaiAINgIAIAIgBTYC+ARBDiEFDA0LQQQhBQwLC0H4/8EAQShB +oIDCABDmKwALIAMgAygC/Bw2ArgbIAMgA0GAHWotAAA6ALwbQei2wgBBKyADQbgbakHkt8IAQeju +wQAQiRgAC0EAIQUMCQtBASEFDAgLQQMhBQwHC0EEIQUMBgtBBiEFDAULQQchBQwEC0EKIQUMAwtB +CyEFDAILQQ0hBQwBCwsgPyAFOgAAQQQLIQEgMCABOgAAC0EECyEBIDwgAToAACAXQQM6AABBBAsh +ASA6IAE6AAALIA5BEzoAAEEGIQEMDwsgA0HIA2ogAkH4BGoiFSAhEMcEIAMtAMgDIgVBDEYNASAD +QcYDaiINIAMtAMsDOgAAIANBsANqIgYgA0HcA2opAgA3AwAgA0G4A2oiByADQeQDaikCADcDACAD +IAMvAMkDOwHEAyADIAMpAtQDNwOoAyADKALMAyEBIAMoAtADIQggFRDqGyAFQQtHDQIgAkEAOgDy +BCACKAKABCEFIANB+A5qIAJB8AEQzU8aIANByANqIgEgA0GYCmpB0AYQzU8aIBUgAUHQBhDNTxog +AkHMC2pBADoAACACQcgLaiAFNgIACyADQZgKaiACQfgEaiIVICEQ/BAgAy0AmAoiBUEMRg0DIANB +hhFqIg0gAy0Amwo6AAAgA0HwEGoiBiADQawKaikCADcDACADQfgQaiIHIANBtApqKQIANwMAIAMg +Ay8AmQo7AYQRIAMgAykCpAo3A+gQIAMoApwKIQEgAygCoAohCCAVEPk8IAVBC0YNAiADQZ4SaiAN +LQAAOgAAIANBiBJqIAYpAwA3AwAgA0GQEmogBykDADcDACADIAMvAYQROwGcEiADIAMpA+gQNwOA +EgwLCyAOQRM6AABBCCEBDAwLIANBnhJqIA0tAAA6AAAgA0GIEmogBikDADcDACADQZASaiAHKQMA +NwMAIAMgAy8BxAM7AZwSIAMgAykDqAM3A4ASDAkLQcST2wAoAgBBAksNAUH8hdsAEPs+IgVB/wFx +RQ0BQQAhAUH8hdsAKAIAIAUQ9S5FDQFB/IXbACgCACINQShqKAIAIQggDUEkaigCACEHIA0oAhwh +BSADIA1BIGooAgAiBgR/IANBADYCqAogAyAINgKkCiADIAc2AqAKIAMgBjYCnApBASEBIAUFQQAL +NgKYCiADQegWaiADQZgKakHs78EAENosIANBpApqQgA3AgAgA0EBNgKcCiADQZjwwQA2ApgKIANB +sMDBADYCoAogAyABIAZJBH8gAyABNgKIHSADIAg2AoQdIAMgBzYCgB0gAyAGNgL8HCAFBUEACzYC ++BwgA0G4G2oiBSADQfgcaiIBQezvwQAQ2iwgA0HcA2pBoPDBADYCACADQdgDaiADQcASajYCACAD +QaDAwQA2AtADIAMgAkGIBGo2AsASIAMgBTYC1AMgAyADQZgKajYCzAMgAyADQegWajYCyAMgASAN +QRxqIANByANqEPJBIANBqBNqIANBgB1qKAIANgIAIAMgAykC+Bw3A6ATQfyF2wAoAgAgA0GgE2oQ +xDQMAQsgDkETOgAAQQkhAQwJCyACQQA6APEEIAJBjARqKAIAIQUgAyACQZAEaigCAEEAIAIoAogE +IgcbNgLoAyADIAU2AuQDIAMgBzYC4AMgA0EANgLcAyADIAdBAEciATYC2AMgAyAFNgLUAyADIAc2 +AtADIANBADYCzAMgAyABNgLIAyADQYAdaiEGA0AgA0H4HGogA0HIA2oQ0hggAygC+BwiCEUEQCAD +QcgDahD0KiACQawFakEAOgAAIAIgAigCgAQ2AvgEDAILIAMoAogdIQcgAygChB0hDSADKAKAHSEP +IAMoAvwcIQUgAigCgAQoAhxBCGoiARDCOiADQZgKaiABEMMvIAMoApgKRQRAIAMoAqAKIRUgAygC +nAogCCAFEIUhIgVFBEAgFSAVKAIAQQFrNgIAIAYQihkMAgsgAyANNgK0CiADIA82ArAKIANBADYC +rAogAyANNgKkCiADIA82AqAKIANBADYCnAogAyAHQQAgDxs2ArgKIAMgD0EARyIBNgKoCiADIAE2 +ApgKIAUgA0GYCmoQ6BAgFSAVKAIAQQFrNgIADAELCyADIAMpApwKNwK4G0HotsIAQSsgA0G4G2pB +tLfCAEGw8MEAEIkYAAsgA0GYCmogAkH4BGoiBiAhEKoGAkAgAy0AmAoiBUEMRwRAIANBphFqIhUg +Ay0Amwo6AAAgA0GQEWoiDSADQawKaikCADcDACADQZgRaiIHIANBtApqKQIANwMAIAMgAy8AmQo7 +AaQRIAMgAykCpAo3A4gRIAMoApwKIQEgAygCoAohCCAGENc/IAVBC0cNASACIAE2ArADIAJBtANq +IAg2AgAgAigCgAQhBSACQbADaigCBCEBIAJBxAVqIhRBADoAACACQfwEaiABNgIAIAIgBUEQaiIF +NgL4BAwCCyAOQRM6AABBCiEBDAgLIANBnhJqIBUtAAA6AAAgA0GIEmogDSkDADcDACADQZASaiAH +KQMANwMAIAMgAy8BpBE7AZwSIAMgAykDiBE3A4ASDAULIAJBkAVqQQA2AgAgAkGIBWpCgICAgIAB +NwMAIAJBhAVqIAE2AgAgAkGABWogBTYCACAFKAIAQcQAaiIBEIk+IANBmApqIAEQ6CAgAygCmApF +BEAgAyADKAKcCiIINgLIAyADIANBoApqLQAAOgDMAyACQZwFaiIBIAhBEGoiBygCADYCACACQZQF +aiIFIAgpAgg3AgAgB0EANgIAIAhBADYCCCADQcgDahCfHyACQbQFakEANgIAIAJBpAVqQQA2AgAg +AkG8BWogAkGYBWooAgAiCDYCACACQbgFaiAFKAIAIgU2AgAgAkGsBWogCDYCACACQagFaiAFNgIA +IAJBwAVqIAEoAgBBACAFGzYCACACQbAFaiAFQQBHIgU2AgAgAkGgBWogBTYCAEEAIQUMAQsgAyAD +KAKcCjYCyAMgAyADQaAKai0AADoAzANB6LbCAEErIANByANqQcS3wgBBkLLCABCJGAALA0ACQAJA +AkACQCAUAn8CQAJAAkACQAJAAkACQAJAIAUOAgABAwsgAkGgBWoQmQwiBQ0BIANByxJqIAJBkAVq +KAAANgAAIAMgAkGIBWopAAA3AMMSIAJBlAVqEIIFQRIhEAwFCyADQZgKaiACQcgFaiIBICEQkkpB +BCIIIAMtAOgKIgVBBEYNBhogAyADKQCZCjcDoB8gAyADQaAKaikAADcApx8gAy0AmAohECADQbgb +aiINIANBqApqQTgQzU8aIAMgAygA6Qo2AvAZIAMgA0HsCmooAAA2APMZIAMpA+AKIUcgARDTFCAD +QaAfaiEBIAVBA0YNAyADQfAZaiEIDAILIAJBhAVqKAIAIQcgAkGABWooAgAhCCAFKAIAQYKAgIB4 +RgRAQaAKEMI5IgFBADoAywEgASAFQQRqNgLEASABIAc2AsABIAEgCDYCvAEgAkHIBWogATYCAEEB +IQUMCwtB0A4QwjkiAUEAOgDMDiABIAU2AsgOIAEgBzYCxA4gASAINgLADiACQcgFaiABNgIAQQIh +BQwKCyADQZgKaiACQcgFaiIBICEQ+wEgAy0A6AoiBUEERg0DIAMgAykAmQo3A/gaIAMgA0GgCmop +AAA3AP8aIAMtAJgKIRAgA0HoFmoiDSADQagKakE4EM1PGiADIAMoAOkKNgKwGSADIANB7ApqKAAA +NgCzGSADKQPgCiFHIAEQzzsgA0H4GmohASADQbAZaiEIIAVBA0YNAQsgA0GcBGogCEEDaigAADYA +ACADQdADaiABQQdqKQAANwAAIAMgCCgAADYAmQQgAyABKQAANwDJAyADQdgDaiANQTgQzU8aIAMg +RzcDkAQgAyAQOgDIAyADIAU6AJgEIAVBAkYNBiACQYgFaiADQcgDahDvKwwGCyADIAEpAAA3A8AS +IAMgAUEHaikAADcAxxIgA0H4HGogDUE4EM1PGiACQZQFahCCBSACQYgFahC4SwsgAyADKQDHEjcA +txogAyADKQPAEjcDsBogA0GgE2ogA0H4HGpBOBDNTxogFEEBOgAAIBBB/wFxQRNGDQIgAiAQOgC4 +AyACQbkDaiADKQOwGjcAACACQcADaiADKQC3GjcAACACQcgDaiADQaATakE4EM1PGiAGEIEvIAIt +ALgDQRJHDQMgA0GoH2oiFiACQcQDaigCADYCACADIAJBvANqKQIANwOgHyADQZgKaiIdELwLIANB +2BFqIANByApqKQMANwMAIANB0BFqIANBwApqKQMANwMAIAMgAykDuAo3A8gRIANBqBNqIiIgA0Ho +CmooAgA2AgAgAyADKQPgCjcDoBMgAygC0AohCSADQYAbaiIUIANB1AtqKAIANgIAIAMgAykCzAs3 +A/gaIANBuBpqIhwgA0HgC2ooAgA2AgAgAyADKQPYCzcDsBogA0H4GWoiEyADQewLaigCADYCACAD +IAMpAuQLNwPwGSADQbgZaiILIANB+AtqKAIANgIAIAMgAykD8As3A7AZIANB+BxqIg8gA0H4CmpB +JBDNTxogA0G4G2oiFSADQZwLakEkEM1PGiADQfAWaiINIANB3ApqKAIANgIAIANBsBFqIANBoApq +KQMANwMAIANBuBFqIANBqApqKQMANwMAIANBwBFqIANBsApqKQMANwMAIAMgAykC1Ao3A+gWIAMg +AykDmAo3A6gRIANB8BhqIgggA0GEDGooAgA2AgAgAyADKQL8CzcD6BggA0HIEmoiByADQfQKaigC +ADYCACADIAMpAuwKNwPAEiADQcALahC4SyACKAKABCEFIANB+A5qIANBqBFqQTgQzU8aIANByANq +IgEgHUGYBRDNTxogBiABQZgFEM1PGiACQZAKaiAJNgIAIAJBlApqIAMpA+gWNwIAIAJBnApqIA0o +AgA2AgAgAkGgCmogAykDoBM3AwAgAkGoCmogIigCADYCACACQawKaiADKQPAEjcCACACQbQKaiAH +KAIANgIAIAJBuApqIA9BJBDNTxogAkHcCmogFUEkEM1PGiACQYgLaiAWKAIANgIAIAJBgAtqIAMp +A6AfNwMAIAJBjAtqIAMpA/gaNwIAIAJBlAtqIBQoAgA2AgAgAkGYC2ogAykDsBo3AwAgAkGgC2og +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 +GSABBUEACzYCpAEgC0E0aiALQaQBakHEjsIAENosIAtB1ABqQgA3AgAgC0EBNgJMIAtB9I7CADYC +SCALQbDAwQA2AlAgCyAGIBlNBH9BAAUgCyAKNgKwASALIAU2AqwBIAsgBjYCqAEgCyAZNgK0ASAZ +QQFqIRkgAQs2AqQBIAtB5ABqIAtBpAFqQcSOwgAQ2iwgCyAPKAIoQRhqNgJgIAsgBiAZSwR/IAsg +GTYCoAEgCyAKNgKcASALIAU2ApgBIAsgBjYClAEgAQVBAAs2ApABIAtB/ABqIgEgC0GQAWoiBUHE +jsIAENosIAtBxAFqQdSNwgA2AgAgC0G4AWpBjI3CADYCACALQcABaiALQfgAajYCACALQbQBaiAL +QeAAajYCACALQaDAwQA2AqwBIAsgDygCKEEgajYCeCALIAE2ArwBIAsgC0HkAGo2ArABIAsgC0HI +AGo2AqgBIAsgC0E0ajYCpAEgBSAIQRxqIAtBpAFqEOFBQYSI2wAoAgAgBRDENAsgD0EgaigCACIB +KAIAQYCAgIB4RwRAIAFBGGoQ+j4gARCIPyABQQxqEN4DIAFBIGoQ/QILIAFBgICAgHg2AgAgD0Es +ahCfPUELIRkLIA9BGGoQqUogFSAZOgAAIBVBAWogC0GkAWpBIxDNTxpBAQshASAPIAE6ACQgC0HA +A2okACAaLQCwAiIKQQxGDR0gGkHVBGogGkGwAmpBAXJBIxDNTxogBygCACIBLQAkQQNrDgIWFxgL +QaDEwABBI0HwnsEAEOYrAAsgBUEQahDrQgwCCwJAAkAgBUG8AWotAAAOBAEDAwADCyAFQeAAahCt +OAsgBUEQahDrPwwBCyAFQRBqEOobCyAFEJgEQRIhBSABQRJHDRUMMwsCQCAZQfQBai0AAA4ECDEx +ADELAkAgGUGwAWoiCCgCAEGAgICAeEYEQCAZQYwBaigCACEIIBkoAogBIQ0DQCAIBEACQAJAAkBB +ASANKAIAIgdBA2siASABQQNPGw4CAAECCyANQQRqIgcQpBEgBygCACIBIAEoAgAiAUEBazYCACAB +QQFGBEAgBxC8FAsgDUEIahCzOSANQQxqELQ5DAELAkACQCAHDgMAAQIBCyANQQRqENY/DAELIA1B +BGoQsBoLIAhBAWshCCANQShqIQ0MAQsLIBkoAowBRQ0BIBkoAogBEJgEDAELIBlBmAFqIgcQmT4g +BygCACIBIAEoAgAiAUEBazYCACABQQFGBEAgBxCRGQsgGUGkAWoiARD1MiABEKQ9IAgQ6TIgCBCu +PQsgGUHQAWoQ1j8gHigCACEZDDALIBlB2AZqLQAAQQNHDS4gGUGIAWohBwJAAkACQCAZQeEBai0A +AA4FAi8vAQAvCwJAAkACQAJAAkACQCAZQcsCai0AAA4GADMzAwECMwsgGUGwAmoQrTkMMQsCQCAZ +QdkFai0AAA4EAwQEAAQLIBlBmANqEIQVIBlB/AJqELE3DAMLAkACQCAZQawFai0AAA4EAAQEAQQL +IBlB1AJqEK05IBlB2AJqEK05DAMLIBlBgANqEIQVIBlB6AJqELE3DAILIBlBzAJqEJk2DC0LIBlB +zAVqEK05IBlB0AVqEK05IBlBzAJqEIs+CyAZQfABaigCAEUNKyAZQcgCai0AAEUNKyAZQfQBahCL +PgwrCyAZQegBaiIBEMUPIAEQ2SIMLAsgGUHYAWoQrTkgGUHcAWoQrTkMLAsgGUGIAWoQ2T8MJwsg +GUGIAWoQ1z8MJgsCQAJAAkAgGUGEAmotAABBA2sOAgABBQsgGUGsAmoQ2T8MAQsgGUGIAmoQmTYg +GUGAAmoQmkwLIBlB9AFqEKE9IBlBhQJqQQA6AAAMAgsgGUGIAWoQ+TwMJAsgGUGIAWoQ2j8LIBlB +IGoQsUsMIgsgGUHEAWoQhRkMKAsgB0FAayIFEOIgIAUQ2SIMHgsgB0GIDmotAABBA0cNHQJAAkAC +QAJAAkACQAJAAkACQAJAAkAgBy0AuwVBA2sOCgUABgEHCAIDCQQnCyAHQdwFai0AAEEDRw0kIAdB +1AVqEJk2DCQLAkACQCAHLQDZBUEDaw4CAAEjCyAHQdwFahDxJgwhCyAHQeQKai0AAEEDRw0fAkAC +QCAHLQCZBkEDaw4CAQAhCwJAAkACQCAHLQDjB0EDaw4CAAEiCyAHQfQHahDZLAwBCwJAAn8CQAJA +AkACQCAHQeAJai0AAA4FAAUFAQIFCyAHQdQJagwDCyAHQegJahDuPwwBCyAHQfAHahCMPgsgB0HA +CWoQiD8gB0G0CWoLEPtACyAHQfgGahDEKQsgB0HgB2pBADoAACAHLQDhB0UNHiAHQegHahD7QAwe +CyAHQaAGaiIFEOcqIAUQ2SIMHgsgB0HABWoQ+TwMIgsgB0HABWoQ1z8MIQsgB0HABWoQ+TwMBQsg +B0HABWoQ60IMIAsgB0HABWoQrTgMHQsgB0HABWoQiD8MGwsgB0HABWoQ6hsMHAsgB0HABWoQ/i4L +IAdB+ANqELFLDBoLQQUhBQwPCwJAIAFBOWotAABBA2sOAgIAEQsCQAJAIAFB5ApqLQAADgQAEhIB +EgsgAUHQAWoQ7z8MEQsgAUGIBGoQ+TwMEAsCQAJAIAFB9AJqLQAAQQNrDgIAARELIAFBxANqEPEm +IAFB8ABqENgaDA8LIAFB+AJqEPk8DA4LIAFBPGoQmTYMDgtBBiEFDAsLIBpBsAJqIRIjAEHQDGsi +ECQAAn8CQAJAAkACQAJAAkAgKkHcAGoiFigCACIOLQAMQQFrDgQEAAIDAQsACyAOIA4oAgAiATYC +BCABKAIAQYgBaigCACEBIA5ByABqQQA6AAAgDiABQQhqNgIQCyAOQRBqIh4gIRC5ByIBRQ0CIA4g +ATYCCCAeENk/IA4oAghBFGooAghBAToACCAQQShqIA4oAghBFGoQ4BAgEEG4B2oiHRC8CyAQQYgC +aiIiIBBBiAhqKAIANgIAIBAgECkDgAg3A4ACIBAoAvAHIQkgEEGYAWoiFCAQQegIaigCADYCACAQ +IBApA+AINwOQASAQQYgBaiITIBBB9AhqKAIANgIAIBAgECkC7Ag3A4ABIBBB+ABqIgsgEEGACWoo +AgA2AgAgECAQKQP4CDcDcCAQQegAaiIPIBBBjAlqKAIANgIAIBAgECkChAk3A2AgEEHYAGoiFSAQ +QZgJaigCADYCACAQIBApA5AJNwNQIBBByAFqIg0gEEGYCGpBJBDNTxogEEGgAWoiBiAQQbwIakEk +EM1PGiAQQZgCaiIIIBBB/AdqKAIANgIAIBBBEGogEEHAB2opAwA3AwAgEEEYaiAQQcgHaikDADcD +ACAQQSBqIBBB0AdqKQMANwMAIBAgECkC9Ac3A5ACIBAgECkDuAc3AwggEEHIAGoiByAQQaQJaigC +ADYCACAQIBApApwJNwNAIBBB+AFqIgogEEGUCGooAgA2AgAgECAQKQKMCDcD8AEgEEHYB2oQlEUg +DigCBBD4TSEFIBBBmAxqIBBBCGpBOBDNTxogEEGgAmoiASAdQZgFEM1PGiAeIAFBmAUQzU8aIA5B +qAVqIAk2AgAgDkGsBWogECkDkAI3AgAgDkG0BWogCCgCADYCACAOQbgFaiAQKQOAAjcDACAOQcAF +aiAiKAIANgIAIA5BxAVqIBApA/ABNwIAIA5BzAVqIAooAgA2AgAgDkHQBWogDUEkEM1PGiAOQfQF +aiAGQSQQzU8aIA5BoAZqIBQoAgA2AgAgDkGYBmogECkDkAE3AwAgDkGkBmogECkDgAE3AgAgDkGs +BmogEygCADYCACAOQbAGaiAQKQNwNwMAIA5BuAZqIAsoAgA2AgAgDkG8BmogECkDYDcCACAOQcQG +aiAPKAIANgIAIA5B0AZqIBUoAgA2AgAgDkHIBmogECkDUDcDACAOQeAGaiAFNgIAIA5B5AZqQQA6 +AAAgDkHcBmogBygCADYCACAOQdQGaiAQKQNANwIACyAQQbgHaiAOQRBqIgEgIRD8ECAQLQC4B0EM +RwRAIBIgEEG4B2pBJBDNTxogARD5PCAOQQhqEJpMQQEMAwsgEkEMOgAAQQQMAgtBwMDBAEEjQciY +wgAQ5isACyASQQw6AABBAwshASAOIAE6AAwgEEHQDGokACAaLQCwAiIKQQxGDQYgGkGyBGogGkGw +AmpBAXJBIxDNTxoCQAJAAkAgFigCACIBLQAMQQNrDgIAAQILIAFBEGoQ2T8MAQsgAUEQahD5PCAB +QQhqEJpMCyABEJgEIApBC0YNISAaQZ0FaiAaQbIEakEjEM1PGgwNCyABQShqEOo/DAELIAFBOGoQ +mTYgAUEsahCfPSABQRhqEKlKCyABEJgEIApBC0YNHiAaQZ0FaiAaQdUEakEjEM1PGgwKC0EDIQUM +BgsgGkGdBWogGkHFAWpBIxDNTxogGkGQBWogGkG4AWopAwA3AwAgGkGIBWogGkGwAWopAwA3AwAg +GkGABWogGkGoAWopAwA3AwAgGiAaKQOgATcD+AQgASEFDB0LQQQhBQwEC0EHIQUMAwtBCCEFDAIL +QaDEwABBI0GguMEAEOYrAAtBjMLAAEE2QcTCwAAQnzcACyBEIAU6AAAMGAsgAUHoAmoQwgcgAUEw +ahCFDgsgARCYBCAKQQtGDRQgGkGdBWogGkGPBGpBIxDNTxoLQQ4hBQwUCyAHQQA6AOEHCyAHQZgG +ai0AAARAIAdB6AVqENkiCyAHQQA6AJgGCyAHQegMahDEOwsgB0HYBWpBADoAAAsgB0GgA2oQxCkL +IAdBiANqEPsfCyAHQbgFai0AAEUNACAHQbgCahDrPwsgB0G4BWpBADoAACAHLQC5BQRAIAdB0ARq +EIsZCyAHQQA6ALkFIActALoFBEAgB0HIAGoQ2BoLIAdBADoAugULIAdB8A1qEP8HCyAHLQA4RQ0A +IAcQ2SILIAcQmARBEiEFIAFBEkYNCSAaQZ0FaiAaQewDakEjEM1PGiAaQZAFaiAaQeADaikDADcD +ACAaQYgFaiAaQdgDaikDADcDACAaQYAFaiAaQdADaikDADcDACAaIBopA8gDNwP4BCABIQUMCQsg +GUHcAGoMBAsgGUHIAmpBADoAACAZQcoCai0AAARAIBlBsAJqEK05CyAZQckCai0AAEUNAQsgGUG0 +AmoQrTkLIBlB4AFqLQAABEAgGUGgAWoQ2SILIBlBADoA4AELIAcQlEUgGUGQBmoLEOk/CyAZQThq +ENY/CyAZEJgEICFFBEAgGiAcOwHuASAaICY6AO0BIBpB8QFqIBpBpQNqQSMQzU8aIBpBrAJqIBpB +mANqKAIANgIAIBpBpAJqIBpBkANqKQMANwIAIBpBnAJqIBpBiANqKQMANwIAIBogCjoA8AEgGiAF +OgDsASAaIAY2AugBIBogGikDgAM3ApQCIBpB6AFqENY/IBpBjAJqEOk/DAELIBpBnQVqIBpBpQNq +QSMQzU8aIBpBkAVqIBpBmANqKQMANwMAIBpBiAVqIBpBkANqKQMANwMAIBpBgAVqIBpBiANqKQMA +NwMAIBogGikDgAM3A/gEDAELQRIhBQsgGkE1aiAaQZ0FakEjEM1PGiAaQShqIgYgGkGQBWopAwA3 +AwAgGkEgaiIIIBpBiAVqKQMANwMAIBpBGGoiByAaQYAFaikDADcDACAaIBopA/gENwMQIERBAToA +ACAFQf8BcSIBQRNGDQAgGkH9AGogGkE1akEjEM1PGiAaQfAAaiAGKQMANwMAIBpB6ABqIAgpAwA3 +AwAgGkHgAGogBykDADcDACAaIBopAxA3A1gCfiABQRJGBEBCgAIhR0IADAELIBpBsAJqIgFBBXIg +GkH9AGpBIxDNTxogGkHwAmogGkHwAGopAwA3AwAgGkHoAmogGkHoAGopAwA3AwAgGkHgAmogGkHg +AGopAwA3AwAgGiAKOgC0AiAaIBw7AbICIBogJjoAsQIgGiAFOgCwAiAaIBopA1g3A9gCQgEhRyAB +EKUYrUIghgshRiAqQeAAahCsOSAqQUBrEPo+AkACQAJAAkACQAJAAkAgKigCAA4GAQIDBgQFAAsg +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 +IgogAkG4A2opAgA3AwAgAiACLwCdAzsB3AMgAiACKQKoAzcDwAMgAigCoAMhByACKAKkAyEFIAgQ +1z8gBEELRw0BIANBCzoAnAEgA0GkAWogBTYCACADQaABaiAHNgIAIANBmAJqIAU2AgAgA0GUAmoi +BCAHNgIAIAJByAFqIgUgAkGYAmpBzAAQzU8aIAJBxgFqIgcgAkGXAmotAAA6AAAgAiACLwCVAjsB +xAEgA0HAAWogBDYCACADQcQBaiAFQcwAEM1PGiADQZACakEAOgAAIANBkQJqIAIvAcQBOwAAIANB +kwJqIActAAA6AAALIAJBmAJqIANBwAFqIgkgARDSFCACLQCYAiIEQQxGDQEgAkHoA2oiDCACQawC +aikCADcDACACQfADaiIKIAJBtAJqKQIANwMAIAIgAikCpAI3A+ADIAIoAqACIQUgAigCnAIhByAC +LwGaAiEIIAItAJkCIQEgCRDYPyAEQQtHDQMgAiAFNgLAASACIAc2ArwBIAJB4ABqIgEgBRCmDiAC +QbwBahCaTCADQZQCahCxSyACQaACaiIEIANBkAFqKAIANgIAIAIgA0GIAWopAwA3A5gCIAJBoAFq +EJoZIAJBqAFqIAQoAgA2AgAgAiACKQOYAjcCoAEgAkGYAmogA0HgAGooAgBBDGogARCyHiACLQCY +AiABEOgrQRZGIgFFDQIMDAsgA0GdAWoiASACLwHcAzsAACADQZ8BaiAJLQAAOgAAIAMgBDoAnAEg +A0GkAWogBTYCACADQaABaiAHNgIAIANBqAFqIAIpA8ADIhA3AgAgA0GwAWogDCkDACIRNwIAIANB +uAFqIAopAwAiEjcCACACQYAEaiARNwMAIAJBiARqIBI3AwAgAiAQNwP4AyABLQAAIQEgA0GeAWov +AQAhCAwKC0EFDAULIAJBmAJqEIAdDAkLIAJBiARqIAopAwA3AwAgAkGABGogDCkDADcDACACIAIp +A+ADNwP4AyADQZQCahCxSwwHC0GgxMAAQSNBkLfBABDmKwALIANB/ABqIAk2AgAgA0H4AGoiASAM +NgIAIANB9ABqIAJB1wBqKAAANgAAIANB7QBqIAJB0ABqKQMANwAAIAMgAikDSCIRNwBlIAMgBDoA +ZCADQYABaiAQNwMAIAJBiARqIBA3AwAgAkGABGogASkCADcDACACIANB8ABqKQIANwP4AyADQegA +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 +aiIIIAIpAxA3AwAgAkHQAGoiCSACKQMINwMAIAJBkJrQACkDADcDQCMAQTBrIgUkACAFQQhqIgYg +AkEcakEkEM1PGiACQUBrIgQgBigCICIDQQFqQQF2IAMgBCgCDBsgBEEQahCdMiMAQTBrIgMkACAD +QQhqIAZBJBDNTxoDQCADQQhqEP03IgYEQCADIAYQ8S4gBCADKAIAIAMoAgQQwQ0MAQsLIANBMGok +ACAFQTBqJAAgAEEYaiAIKQMANwMAIABBEGogCSkDADcDACAAQQhqIAcpAwA3AwAgACACKQNANwMA +IAEgASgCWEEBazYCWCACQeAAaiQAC6wCAQN/IwBB8AFrIgMkAAJAIAJBIEYEQCADQTBqIgIgAUEY +aikAADcDACADQShqIgQgAUEQaikAADcDACADQSBqIgUgAUEIaikAADcDACADIAEpAAA3AxggA0E8 +aiADQRhqEP8UIAMoAjwEQCAAQShqIANBxABqKQIANwIAIABBMGogA0HMAGooAgA2AgAgAygCQCEB +IABBNGogA0HQAGpBkAEQzU8aIABBHGogAikDADcAACAAQRRqIAQpAwA3AAAgAEEMaiAFKQMANwAA +IAAgAykDGDcABCAAQSRqIAE2AgAgAEEANgIADAILIANBADYC4AEgACADQeABahCaJQwBCyADQoKA +gICABDcCCCADQobA0oDAATcCECAAIANBCGoQmiULIANB8AFqJAALswIBEn8gAigCACENIAEoAgAh +BCACKAIEIQ4gASgCBCEFIAIoAgghDyABKAIIIQYgAigCDCEQIAEoAgwhByACKAIQIREgASgCECEI +IAIoAhQhEiABKAIUIQkgAigCGCETIAEoAhghCiACKAIcIRQgASgCHCELIAIoAiAhFSABKAIgIQwg +AEEAIANB/wFxayIDIAEoAiQiASACKAIkc3EgAXM2AiQgACAMIAwgFXMgA3FzNgIgIAAgCyALIBRz +IANxczYCHCAAIAogCiATcyADcXM2AhggACAJIAkgEnMgA3FzNgIUIAAgCCAIIBFzIANxczYCECAA +IAcgByAQcyADcXM2AgwgACAGIAYgD3MgA3FzNgIIIAAgBSAFIA5zIANxczYCBCAAIAQgBCANcyAD +cXM2AgALtgIBBH8gAEIANwIQIAACf0EAIAFBgAJJDQAaQR8gAUH///8HSw0AGiABQQYgAUEIdmci +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 +AAIBCwALIABBgA5qIABBgA4QzU8aCyAdQRhqISYjAEGQD2siDCQAAkACQAJ/AkAgAEGADmoiJyIP +An8CQAJAAkACQAJ/AkAgDygCJEEDRwRAAkACQAJAAkACQAJAAkACQAJAAkAgDy0A+A1BAWsOAwkE +AAELIA9BQGshGwJAIA9B5A1qIhYtAABBAWsOAwgEAwALIA9BpA1qKAIAIQcgD0GgDWooAgAhBSAP +QZwNaigCACELIA9BmA1qKAIAIQogD0HgDWooAgAhEQwBCyAPQZgNaiAPKAI4Igo2AgAgD0GgDWog +D0HsDWooAgAiBTYCACAPQZwNaiAPQTxqKAIAIgs2AgAgD0GkDWogBSAPQfANaigCAEEDdGoiBzYC +ACAPQagNaiAPQTgQzU8aIA9B5A1qIhZBADoAACAPQeANaiAPQfQNaiIRNgIAIA9BQGshGwsgESgC +ACESIA9B9ABqIAc2AgAgD0HwAGogBTYCACAPQewAaiALNgIAIA9B6ABqIAo2AgAgD0H4AGogD0Go +DWpBOBDNTxogD0EAOgC1ASAPQbABaiASQegAaiIRNgIADAMLIA8tALUBQQFrDgQDAAkLAQsACyAP +QfQAaigCACEHIA9B8ABqKAIAIQUgD0HsAGooAgAhCyAPQegAaigCACEKIA9BsAFqKAIAIRELIA9B +5ABqIAs2AgAgD0HgAGoiCCAKNgIAIA9BtAFqQQA6AAAgDEHQAWogD0H4AGpBOBDNTxpBxJPbACgC +AEECSw0EQbj62gAQ+z4iEkH/AXFFDQRBuPraACgCACASEPUuRQ0EQbj62gAoAgAiFEEoaigCACEK +IBRBJGooAgAhCyAUKAIcIRIgDCAUQSBqKAIAIhMEfyAMQQA2AsANIAwgCjYCvA0gDCALNgK4DSAM +IBM2ArQNQQEhECASBUEACzYCsA0gDEGMAmogDEGwDWpB6OrAABDYLCAMIAg2AqACIAwgECATSQR/ +IAwgEDYCmA4gDCAKNgKUDiAMIAs2ApAOIAwgEzYCjA4gEgVBAAs2AogOIAxBpAJqIhIgDEGIDmoi +CEHo6sAAENgsIAxBxA1qQYjrwAA2AgAgDEHADWpB4MfAADYCACAMQfjqwAA2ArgNIAwgEjYCvA0g +DCAMQaACajYCtA0gDCAMQYwCajYCsA0gCCAUQRxqIAxBsA1qEPJBIBsgFCAIEMQyIA9BAToAtAEg +D0HIAGooAgBBAkYMBQtBoMTAAEEjQejqwAAQ5isAC0GgxMAAQSNB8J3BABDmKwALQaDEwABBI0HA +ucEAEOYrAAtBjMLAAEE2QcTCwAAQnzcACyAPQQE6ALQBIA9B2ABqQQA2AgAgD0HIAGpBAjYCAEEB +CyAPKAJkIRMgDygCYCEKDQEgD0EAOgC0ASAMQZAOaiILIBtBCGopAwA3AwAgDEGYDmoiCCAbQRBq +KQMANwMAIAxBoA5qIhIgG0EYaikDADcDACAMIBspAwA3A4gOIAxB0A1qIAxB0AFqQTgQzU8aIAxB +yA1qIBIpAwA3AwAgDEHADWogCCkDADcDACAMQbgNaiALKQMANwMAIAwgDCkDiA43A7ANIA9BuAFq +IAxBsA1qQdgAEM1PGiAPQZwCaiAHNgIAIA9BmAJqIAU2AgAgD0GUAmogEzYCACAPQZACaiAKNgIA +IA9BoAJqIAxBiApqQagDEM1PGiAPQcgFaiARNgIAIA9BzAVqIAxBsAlqQdgAEM1PGiAPQaQGakEA +OgAAIA9BpQZqIAxBuAJqQfMGEM1PGgtBACERIwBB4BdrIgMkACAPQbgBaiIGKAIIQQJHBEAgBkEI +aiAGEPgnCyAMQYgOaiEgIAEhEiADIAY2AlggBgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +fwJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJA +An8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQewEai0AAEEB +aw4IAgYBAwQFCDYACyAGQSBqIQggBkHxBGpBADsAACAGQe0EakEANgAAIAZB8wRqQQE6AABBxJPb +ACgCAA0MQcT62gAQ+z4iAUH/AXFFDQxBxPraACgCACABEPUuRQ0MQcT62gAoAgAiBUEcaiEHIAVB +IGooAgAiDgRAIAVBKGooAgAhDSAFQSRqKAIAIQEgBSgCHCERIANBADYC6AsgAyANNgLkCyADIAE2 +AuALIAMgDjYC3AsLIAMgETYC2AsgA0GIBWoiBSADQdgLaiIBQcDawgAQ3SwgA0HkC2pCADcCACAD +QZTJwgA2ApgVIANBATYC3AsgA0H82sIANgLYCyADQaTJwgA2AuALIAMgATYClBUgAyAFNgKQFSAD +QfABaiAHIANBkBVqEOBBIANBwBNqIANB+AFqKAIANgIAIAMgAykC8AE3A7gTQcT62gAoAgAgA0G4 +E2oQxDQMDAsgBkH4BGohCQJAIAZBywZqIg4tAABBAWsOBQgFDg8RAAsgBkGEBmooAgAhASAGQYAG +aigCACEFIAZBxAZqKAIAIREMDAtB4MbCAEEjQYTbwgAQ5isACyAGQfgEaiEJAkACQCAGQa0FaiIF +LQAAQQFrDgQBBBodAAsgBkGoBWooAgAhDiAGQaQFaigCACEBIAZBnAVqKAIAIQ0gBkGYBWooAgAh +ECAGQaAFaigCACERDBgLQeDGwgBBI0GM3sIAEOYrAAsgBkGIBWohCQJAIAZBrgtqIg4tAABBAWsO +AwYCIQALIAZBqAtqKAIAIQcgBkHkCmooAgAhECAGQeAKaigCACENIAZBrwtqLQAAIREgBkGkC2oo +AgAhBQwfCyAGQfgEaiEQAkACQCAGQagFaiINLQAAQQFrDgQIAgEuAAsgBkGMBWooAgAhAQwnCyAG +QbgFaiEOIAZB7AVqIgEtAABBAWsOAwUAKAELAAsgDigCACEFDCULIAZBjAVqLQAARQRAIAZBiAVq +KAIAIRAgBkGEBWooAgAhBQwsC0HgxsIAQSNB/N3CABDmKwALQeDGwgBBI0HE4sIAEOYrAAtB4MbC +AEEjQYzhwgAQ5isAC0HgxsIAQSNBgPTCABDmKwALQeDGwgBBI0Hg3MIAEOYrAAsgBkHoAGogCEE4 +EM1PGiAGQQE6APIEIAZBoAFqEL4LIAZBAToA7gQgBkHcAGooAgAhASAGQdgAaigCACEFIAZBkARq +KAIAIREgBkGMAWooAgAiCEECTwRAIANB0ABqIAZBkAFqEPQfIAMoAlQhDSADKAJQIQ4LIAZB8ABq +KAIAIQcgBkH4AGopAwAhKSAGKQNoISggA0HwC2ogBkGAAWoQ7SsgA0GEDGogDTYCACADQYAMaiAO +NgIAIAMgCDYC/AsgAyApNwPoCyADIAc2AuALIAMgKDcD2AsgAyAGQZgBai0AADoAiAwgA0GIFGoi +ByADQdgLakE4EM1PGiAGQYQGaiABNgIAIAZBgAZqIAU2AgAgBkGIBmogB0E4EM1PGiAGQcsGaiIO +QQA6AAAgBkHEBmogETYCACAGQfgEaiEJCyAGQcAGaiARNgIAIAZByAZqQQA7AQAgBkHKBmpBAToA +ACAGQfwFaiABNgIAIAZB+AVqIAU2AgAgBkH4BmogBkGIBmpBOBDNTxogBkHwBmpBADoAACAGQdgG +aiABNgIAIAZB1AZqIAU2AgAgBkHQBmogEUEEajYCAAsgA0HYC2ogBkHQBmoiBSASEOoCIAMpA9gL +UEUNBSAGQckGakEBOgAAIAkgA0HgC2pBwAAQzU8hASAFEOY/IAYoAvgERQ0BIAZByAZqQQE7AQAC +QCAGQbgFaiABQcAAEM1PIgEQygsNACABEP1IDQBBAiENIANB+hRqIAZBuwVqLQAAOgAAIANB0BRq +IAZBxQVqKQAANwMAIANB1xRqIAZBzAVqKQAANwAAIAMgBkG5BWovAAA7AfgUIAMgBkG9BWopAAA3 +A8gUIAZBvAVqLQAAIQUgBkHUBWotAAAhESAGLQC4BSEBIANB+BJqIAZB1QVqQSMQzU8aDAoLIAZB +ygZqQQA6AAAgBkHQCmogBkH4BWopAwA3AwAgBkHABmooAgAhASAGQdgKaiAGQfgGakE4EM1PGiAG +QZgLakEAOgAAIAZBlAtqIAE2AgALIANB2AtqIAZB0AZqIgcgEhCQAiADLQDgDCINQQNHDQJBBAwF +CyAGQcoGakEAOgAAIAZB0ApqIAZB+AVqKQMANwMAIAZBwAZqKAIAIQEgBkHYCmogBkH4BmpBOBDN +TxogBkGYC2pBADoAACAGQZQLaiABNgIACyADQdgLaiAGQdAGaiIHIBIQkAIgAy0A4AwiDUEDRw0B +QQUMAwsgA0HiA2oiEyADLQDbCzoAACADQbgDaiIKIANB5QtqKQAANwMAIANBvwNqIgsgA0HsC2op +AAA3AAAgAyADLwDZCzsB4AMgAyADKQDdCzcDsAMgAy0A2AshASADLQDcCyEFIAMtAPQLIREgA0Go +EmogA0H1C2pBKxDNTxogA0G4E2ogA0GgDGpBwAAQzU8aIAMgA0HkDGooAAA2AJsXIAMgAygA4Qw2 +ApgXIAcQ/TwgDUECRg0DIANB2AtqIANBqBJqIghBKxDNTxogA0GDDGogA0G4E2pBwAAQzU8aIANB ++hRqIBMtAAA6AAAgA0HQFGogCikDADcDACADQdcUaiALKQAANwAAIAMgAy8B4AM7AfgUIAMgAykD +sAM3A8gUIANBiAVqIgcgCEEjEM1PGiADQasFaiADQfsLakHIABDNTxogA0HKBGogAy0Amhc6AAAg +AyADLwGYFzsByAQgA0H4EmogB0ErEM1PGiADQZAVaiADQbMFakHAABDNTxoMBAsgA0GCBGoiEyAD +LQDbCzoAACADQaAEaiIKIANB5QtqKQAANwMAIANBpwRqIgsgA0HsC2opAAA3AAAgAyADLwDZCzsB +gAQgAyADKQDdCzcDmAQgAy0A2AshASADLQDcCyEFIAMtAPQLIREgA0HgAGogA0H1C2pBKxDNTxog +A0HwAWogA0GgDGpBwAAQzU8aIAMgA0HkDGooAAA2AKcBIAMgAygA4Qw2AqQBIAcQ/TwgDUECRwRA +IANB2AtqIANB4ABqIghBKxDNTxogA0GDDGogA0HwAWpBwAAQzU8aIANB+hRqIBMtAAA6AAAgA0HQ +FGogCikDADcDACADQdcUaiALKQAANwAAIAMgAy8BgAQ7AfgUIAMgAykDmAQ3A8gUIANBiAVqIgcg +CEEjEM1PGiADQasFaiADQfsLakHIABDNTxogA0HKBGogAy0ApgE6AAAgAyADLwGkATsByAQgA0H4 +EmogB0ErEM1PGiADQZAVaiADQbMFakHAABDNTxoMBgsgA0H6FGogEy0AADoAACADQdAUaiAKKQMA +NwMAIANB1xRqIAspAAA3AAAgAyADLwGABDsB+BQgAyADKQOYBDcDyBQgA0H4EmogA0HgAGpBKxDN +TxpBAyENDAULQQMLIQEgDiABOgAAICBBEzoAAEEDDCoLIANB+hRqIBMtAAA6AAAgA0HQFGogCikD +ADcDACADQdcUaiALKQAANwAAIAMgAy8B4AM7AfgUIAMgAykDsAM3A8gUIANB+BJqIANBqBJqQSsQ +zU8aQQMhDQsgBkHIBmotAABFDQAgBkG4BWoQhQ4LIAZByAZqQQA6AAALAkAgCSgCAEUNACAGQckG +ai0AAEUNACAJEIUOCyAGQckGakEAOgAAIAZBygZqLQAABEAgBkH4BmoQ7UILIAZBADoAygYgA0HS +FmoiFCADQfoUai0AADoAACADQagWaiITIANB0BRqKQMANwMAIANBrxZqIgogA0HXFGopAAA3AAAg +AyADLwH4FDsB0BYgAyADKQPIFDcDoBYgA0HoFmoiCyADQfgSakErEM1PGiADQeACaiIIIANBkBVq +QcAAEM1PGiAGQQE6AMsGIANBuhZqIgcgA0HKBGotAAA6AAAgAyADLwHIBDsBuBYgA0HuAWoiGSAU +LQAAOgAAIAMgAy8B0BY7AewBIANB3wFqIhQgCikAADcAACADQdgBaiIKIBMpAwA3AwAgAyADKQOg +FjcD0AEgA0GkAWogC0ErEM1PGiADQeAAaiAIQcAAEM1PGiADQd4AaiIIIActAAA6AAAgAyADLwG4 +FjsBXCAJEOAXIA1BA0YNBSADQfABaiADQaQBaiIHQSsQzU8aIANBmwJqIANB4ABqQcAAEM1PGiAG +QZADaiIOIAE6AAAgBkHxBGpBAToAACAGQZQDaiAFOgAAIAZBrANqIBE6AAAgBiADLwHsATsAkQMg +BkGTA2ogGS0AADoAACAGIAMpA9ABNwCVAyAGQZ0DaiAKKQMANwAAIAZBpANqIBQpAAA3AAAgBkGt +A2ogB0EjEM1PGiAGQe0EakEBOgAAIAZBlARqIANBkwJqQcgAEM1PIQcgBkHcBGoiASANOgAAIAZB +3QRqIAMvAVw7AAAgBkHfBGogCC0AADoAACADQdgLaiIFEPgLIANByABqIA4Q1T4gBUGU28IAQQog +AygCSCADKAJMELERGiAFENkiIAEtAABBAkcEQCAGQQA6AO0EIANB4AJqIgUgB0HMABDNTxogA0HY +C2oiASAOEJcHIAZB7AJqIAEQ6isgBkHgAmogBRDsKwsgBkHzBGpBADoAACAGQa0FaiIFQQA6AAAg +BkGoBWogDjYCACAGQaQFaiAGQegAaiIBNgIAIAZBoAVqIAZBkARqKAIAIhE2AgAgBkGcBWogBkHk +AGooAgAiDTYCACAGQZgFaiAGQeAAaigCACIQNgIAIAZB+ARqIQkLIAZBrAVqQQA6AABBxJPbACgC +AEECSw0BQcz52gAQ+z4iB0H/AXFFDQFBzPnaACgCACAHEPUuRQ0BIANBiAVqIghBzPnaACgCACIH +QRxqQaTJwgAQ1EEgCSAHIAgQxDIgBkEBOgCsBSAGQYAFaigCAEECRg0CIAZBADoArAUgA0GYFWog +CUEIaikDADcDACADQaAVaiAJQRBqKQMANwMAIANBqBVqIAlBGGopAwA3AwAgA0G4FWogA0GwEmop +AwA3AwAgA0HAFWogA0G4EmopAwA3AwAgA0HIFWogA0HAEmopAwA3AwAgAyADKQOoEjcDsBUgAyAJ +KQMANwOQFSAGQbAFaiADQZAVakHAABDNTxogBkH0BWogDTYCACAGQfAFaiAQNgIAIAZB+AVqIANB +2AtqQeAAEM1PGiAGQeAGaiARNgIAIAZB3AZqIA42AgAgBkHYBmogATYCACAGQekGakEAOgAAIAZB +5AZqIAMoApgENgIAIAZB6AZqIANBnARqLQAAOgAAIAZB6gZqIANBuBNqQS4QzU8aCyADQYgFaiAG +QbAFaiIHIBIQ8yggAy0AiAUiAUETRg0EIANBsgNqIAMtAIsFOgAAIANB8BZqIANBlQVqKQAANwMA +IANB9xZqIANBnAVqKQAANwAAIAMgAy8AiQU7AbADIAMgAykAjQU3A+gWIAMtAIwFIQUgAy0ApAUh +ESADQYgUaiADQaUFakErEM1PGiAHEMFLDAYLIAZBAToArAUgBkGQBWpBADYCACAGQYAFakECNgIA +CyAGQbAFaiADKQOoEjcDACAGQdQFaiANNgIAIAZB0AVqIBA2AgAgBkHIBWogA0HAEmopAwA3AwAg +BkHABWogA0G4EmopAwA3AwAgBkG4BWogA0GwEmopAwA3AwAgBkHYBWogA0HYC2pB4AAQzU8aIAZB +wAZqIBE2AgAgBkG8BmogDjYCACAGQbgGaiABNgIAIAZByQZqQQA6AAAgBkHEBmogAygCmAQ2AgAg +BkHIBmogA0GcBGotAAA6AAAgBkHKBmogA0G4E2pBLhDNTxoLIANBiAVqIAZBsAVqIgcgEhDvASAD +LQCIBSIBQRNHBEAgA0GyA2ogAy0AiwU6AAAgA0HwFmogA0GVBWopAAA3AwAgA0H3FmogA0GcBWop +AAA3AAAgAyADLwCJBTsBsAMgAyADKQCNBTcD6BYgAy0AjAUhBSADLQCkBSERIANBiBRqIANBpQVq +QSsQzU8aIAcQnRcMBAtBBAwCCyADQaoSaiAZLQAAOgAAIANBwBNqIAopAwA3AwAgA0HHE2ogFCkA +ADcAACADIAMvAewBOwGoEiADIAMpA9ABNwO4EyADQdgLaiADQaQBakErEM1PGgweC0EDCyEBIAUg +AToAACAgQRM6AABBBAweCyAGQawFai0AAARAIAkQ2SILIAZBADoArAUgA0GiFmoiEyADQbIDai0A +ADoAACADQdAUaiIKIANB8BZqKQMANwMAIANB1xRqIgsgA0H3FmopAAA3AAAgAyADLwGwAzsBoBYg +AyADKQPoFjcDyBQgA0H4EmoiCCADQYgUakErEM1PGiAGQQE6AK0FIANB/gNqIgcgEy0AADoAACAD +QegDaiITIAopAwA3AwAgA0HvA2oiCiALKQAANwAAIAMgAy8BoBY7AfwDIAMgAykDyBQ3A+ADIANB +sANqIAhBKxDNTxogCRDNLSABQRJHDQIgA0GPBGogCikAADcAACAGQfAEakEBOgAAIANBiARqIBMp +AwA3AwAgAyADKQPgAzcDgAQgCUEIaiADQZMEaigAADYAACAJIAMpAIsENwAAIAZB7wRqQQE6AAAg +BkHgBGogBToAACAGQeEEaiADKQOABDcAACAGQegEaiADKACHBDYAACAGQfEEakEAOgAAIAZBkARq +KAIAIQUgBkHYAGooAgAhDSAGQdwAaigCACEQIANBmAxqIAZBkANqQcAAEM1PGiAGQfIEakEAOgAA +IANBiAVqIgEgA0HYC2pB2AUQzU8aIAZBiAVqIgkgAUHYBRDNTxogBkHkCmogEDYCACAGQeAKaiAN +NgIAIAZB6ApqIAZB6ABqQTgQzU8aIAZBrwtqIBFBAXEiEToAACAGQa4LaiIOQQA6AAAgBkGoC2og +BkGgAWoiBzYCACAGQaQLaiAFNgIACyAGQa0LakEBOgAAIAkgBkHIBWoiCEHAABDNTyEBIAZBrAtq +QQE6AAAgA0GoEmogBkHoCmpBOBDNTxogBkGgC2ogBzYCACARQf8BcUUEQCAGQQA6AK0LIANBoxdq +IAhBCGopAAA3AAAgA0GrF2ogCEEQaigAADYAACADIAgpAAA3AJsXIAZB3AVqLQAAIREgA0HoFmog +BkHdBWpBKxDNTxoMBAsgA0FAayABENU+IAMoAkAhByADKAJEIQEgBkEAOgCsCyAGQdwKaiABNgIA +IAZB2ApqIAc2AgAgBkGMCmogEDYCACAGQYgKaiANNgIAIAZBkApqIANBqBJqQTgQzU8aIAZB0Apq +QQA6AAAgBkHMCmogBTYCAAsgA0HYC2ogBkGIBmoiByASEJACIAMtAOAMIhNBA0YNASADQcoXaiIK +IAMtANsLOgAAIANBgBVqIgsgA0HlC2opAAA3AwAgA0GHFWoiCCADQewLaikAADcAACADIAMvANkL +OwHIFyADIAMpAN0LNwP4FCADLQDYCyEBIAMtANwLIQUgAy0A9AshESADQcgUaiADQfULakErEM1P +GiADQYgUaiADQaAMakHAABDNTxogAyADQeQMaigAADYA0xcgAyADKADhDDYC0BcgBxD9PCATQQJG +BEAgA0H6BGogCi0AADoAACADQaAXaiALKQMANwMAIANBpxdqIAgpAAA3AAAgAyADLwHIFzsB+AQg +AyADKQP4FDcDmBcgA0HoFmogA0HIFGpBKxDNTxogBkGsC2pBADoAACAJEIUOIAZBrQtqIQ0MBQsg +A0GQFWogA0HIFGoiB0ErEM1PGiADQbsVaiADQYgUakHAABDNTxogA0GFE2ogCykDADcAACADQYwT +aiAIKQAANwAAIAMgAToA+BIgAyADLwHIFzsA+RIgAyAKLQAAOgD7EiADIAU6APwSIAMgAykD+BQ3 +AP0SIAMgEToAlBMgA0GVE2ogB0EjEM1PGiADQbgTaiIIIANBsxVqQcgAEM1PGiADQYMUaiADLQDS +FzoAACADIBM6AIAUIAMgAy8B0Bc7AIEUIAZBoAtqIgcoAgAgA0HYC2oiASADQfgSahCXB0HMAWog +ARDqKyAHKAIAQcABaiAIEOwrAkBBxJPbACgCAEEBSw0AQZT62gAQ+z4iBUH/AXFFDQBBACEBQZT6 +2gAoAgAgBRD1LkUNAEGU+toAKAIAIgtBKGooAgAhCCALQSRqKAIAIQcgCygCHCEFIAMgC0EgaigC +ACIKBH8gA0EANgLoCyADIAg2AuQLIAMgBzYC4AsgAyAKNgLcC0EBIQEgBQVBAAs2AtgLIANBjBZq +IANB2AtqQZzhwgAQ3SwgA0GsFmpCADcCACADQQE2AqQWIANBrOLCADYCoBYgA0GkycIANgKoFiAD +IAEgCk8Ef0EABSADIAg2AuQLIAMgBzYC4AsgAyAKNgLcCyADIAE2AugLIAFBAWohASAFCzYC2Asg +A0G4FmogA0HYC2pBnOHCABDdLCADIAEgCkkEfyADIAE2AugLIAMgCDYC5AsgAyAHNgLgCyADIAo2 +AtwLIAUFQQALNgLYCyADQdAWaiIBIANB2AtqIgVBnOHCABDdLCADQThqIANB+BJqENU+IANB+Atq +QbDUwgA2AgAgA0HsC2pBsNTCADYCACADQegLaiAGQdgKajYCACADQfQLaiADQegEajYCACADQZTJ +wgA2AuALIAMgAykDODcC6AQgAyABNgLwCyADIANBuBZqNgLkCyADIANBoBZqNgLcCyADIANBjBZq +NgLYCyADQYAWaiIBIAtBHGogBRDhQUGU+toAKAIAIAEQxDQLIANB8BJqIgEgA0GIE2ooAgA2AgAg +A0HoEmoiBSADQYATaikDADcDACADIAMpA/gSNwPgEiADLQCMEyERIANB6BZqIANBjRNqQSsQzU8a +IANBoxdqIAUpAwA3AAAgA0GrF2ogASgCADYAACADIAMpA+ASNwCbFyAGQawLai0AAA0CDAMLIANB +qhJqIActAAA6AAAgA0HAE2ogEykDADcDACADQccTaiAKKQAANwAAIAMgAy8B/AM7AagSIAMgAykD +4AM3A7gTIANB2AtqIANBsANqQSsQzU8aDBcLIA5BAzoAAAwDCyADQagSahDtQgsgBkEAOgCsC0ES +IQEgBkGtC2oiDS0AAARAIAkQhQ4LCyANQQA6AAAgA0HCF2oiCiADQfoEai0AADoAACADQdAEaiIL +IANBoBdqKQMANwMAIANB1wRqIgggA0GnF2opAAA3AAAgAyADLwH4BDsBwBcgAyADKQOYFzcDyAQg +A0GYBGogA0HoFmpBKxDNTxogDkEBOgAAIAFB/wFxIgdBE0YNACADQeYEaiAKLQAAOgAAIANB0BRq +IAspAwA3AwAgA0HXFGogCCkAADcAACADIAMvAcAXOwHkBCADIAMpA8gENwPIFCADQfgSaiADQZgE +akErEM1PGiAJEKAuIAdBEkcNBCAGQdADaiIHIAMpAMsUNwAAIAZB5ANqIBE6AAAgBkHgA2ogA0Hb +FGooAAA2AAAgBkHYA2ogA0HTFGopAAA3AAAgBkHlA2ogA0H4EmpBKxDNTxogBkHwBGpBADoAACAG +QfwEaigCACEFIAZB+ARqIhAoAgAhCCAGQYAFaiIJKAIAIQEgA0EANgKUDCADQQA2AoAMIAMgBzYC +/AsgAyABQQAgCBs2AvgLIAMgBTYC9AsgAyAINgLwCyADQQA2AuwLIAMgCEEARyIBNgLoCyADIAU2 +AuQLIAMgCDYC4AsgA0EANgLcCyADIAE2AtgLIANB6ARqIANB2AtqEKgHIBAgAykD6AQ3AwAgCSAD +QfAEaigCADYCACAGQagFaiINQQA6AAAgBkGMBWogBkGgAWoiATYCACAGIAc2AogFIAZBhAVqIAZB +kARqKAIANgIAIAZBqQVqIANBiAVqQccAEM1PGgwBCyAgQRM6AABBBQwVCyAGQZQFaiAQKQIANwIA +IAZBpAVqIAE2AgAgBkGQBWogBkGEBWooAgAiATYCACAGQZwFaiAQQQhqKAIAIgU2AgAgBkGgBWog +BkGIBWooAgAiETYCAEEAIAVFDQQaIAZBmAVqKAIAIQFBACERQQAhDgNAIAMgATYC9BYgAyAONgLw +FiADIAk2AuwWIAMgETYC6BYgA0EwaiABELFGIANBkBVqIgcgA0HoFmogAygCMCADKAI0EKwRIAcQ +mgogA0EoaiABELJGIAMoAiggAygCLBDwRyABQRhqIQEgAygC8BYhDiADKALsFiEJIAMoAugWIREg +BUEBayIFDQALIAZBtAVqIA42AgAgBkGwBWogCTYCACAGQawFaiARNgIAQcAAQQgQqzkgA0GQFWoi +ASAGKAKgBRCXByABQcAAEM1PIQEgBigCpAVBzAFqEL9LIAYoAqQFIgVBATYCzAEgBUHUAWpBATYC +ACAFQdABaiABNgIAIAZB7AVqIgFBADoAACAGQbgFaiIOIAYoAqAFIgU2AgALIAUoAiAhBSAGQegF +akEAOgAAIAZBvAVqIAVBCGo2AgALIANBIGogBkG8BWoiBSASENYJAn8gAygCICIJBEAgAygCJCEH +IAMgCTYCkBUgAyAHNgKUFSAFEOo/IAcQ204hCSADQZAVahCaTEEBIRFBAAwBC0EDIRFBAQshBSAB +IBE6AABBAyAFDQQaIAMgCTYCtBcgDhD4P0HEk9sAKAIAQQJLDQFBoPraABD7PiIFQf8BcUUNAUEA +IQFBoPraACgCACAFEPUuRQ0BQaD62gAoAgAiB0EoaigCACELIAdBJGooAgAhCCAHKAIcIQUgAyAH +QSBqKAIAIgoEfyADQQA2AqAVIAMgCzYCnBUgAyAINgKYFSADIAo2ApQVQQEhASAFBUEACzYCkBUg +A0HIBGogA0GQFWpB8NzCABDdLCADQfQWakIANwIAIANBATYC7BYgA0Gc3cIANgLoFiADQaTJwgA2 +AvAWIAMgASAKTwR/QQAFIAMgCzYCnBUgAyAINgKYFSADIAo2ApQVIAMgATYCoBUgAUEBaiEBIAUL +NgKQFSADQfgUaiADQZAVakHw3MIAEN0sIAMgBkGsBWo2ArgXIAMgASAKSQR/IAMgCzYCnBUgAyAI +NgKYFSADIAo2ApQVIAMgATYCoBUgAUEBaiEBIAUFQQALNgKQFSADQZgXaiADQZAVakHw3MIAEN0s +IAMgASAKTwR/QQAFIAMgCzYCnBUgAyAINgKYFSADIAo2ApQVIAMgATYCoBUgAUEBaiEBIAULNgKQ +FSADQaAWaiADQZAVakHw3MIAEN0sIANBGGogBkGgBWooAgAQqk0gAyADKQMYNwLAFyADIANBwBdq +NgK8FyADIAEgCkkEfyADIAE2AqAVIAMgCzYCnBUgAyAINgKYFSADIAo2ApQVIAUFQQALNgKQFSAD +QZgEaiIBIANBkBVqIgVB8NzCABDdLCADQRBqIAYoAqAFENU+IANByBVqQbDUwgA2AgAgA0G8FWpB +xN3CADYCACADQbAVakG03cIANgIAIANBpBVqQaTdwgA2AgAgA0HEFWogA0HIF2o2AgAgA0G4FWog +A0G8F2o2AgAgA0GsFWogA0G0F2o2AgAgA0GgFWogA0G4F2o2AgAgA0GUycIANgKYFSADIAMpAxA3 +AsgXIAMgATYCwBUgAyADQaAWajYCtBUgAyADQZgXajYCqBUgAyADQfgUajYCnBUgAyADQegWajYC +lBUgAyADQcgEajYCkBUgA0HgEmoiASAHQRxqIAUQ1UFBoPraACgCACABEMQ0DAELIANBqhJqIANB +5gRqLQAAOgAAIANBwBNqIANB0BRqKQMANwMAIANBxxNqIANB1xRqKQAANwAAIAMgAy8B5AQ7AagS +IAMgAykDyBQ3A7gTIANB2AtqIANB+BJqQSsQzU8aDA0LIAZBrAVqELIZIAZBoAVqKAIAIREgBkGQ +BWooAgAhASAGQZwFaigCAAshByAGQZgFaigCACEFIAMgETYCoBUgAyABNgKcFSADQfoBNgKYFSAD +IAc2ApQVIAMgBTYCkBUgA0GMFmoiASADQZAVaiIFEOwIIAZBtAVqQQA2AgAgBkGsBWpCgICAgIAB +NwIAIAUgARDeCSAGQbgFaiAFQTgQzU8aCyADQegWaiAGQbgFaiIHIBIQqwogAygC6BYiBUGAgICA +eEcEQCADKALsFiETIAMoAvAWIQEgBxD9CSADIBMgAUHIAGwiC2oiCDYC9BYgAyAFNgLwFiADIBM2 +AugWIAZBrAVqIQogA0G0EmohByADQdsLaiERQQAhBQJAA0ACQCADIAUgC0cEfyAFIBNqIhQtAAAi +AUEURw0BIBRByABqBSAICzYC7BYgA0HoFmoQoxcgAyAGQa0FaikAADcD0BcgAyAGQbQFaigAADYA +1xcgBi0ArAUhBUESIQEMAgsgAUETRg0FIANB2AtqIBRBAWpBxwAQzU8aIAFBEkYEQCADQbgSaiAR +QRBqKQAANwMAIANBsBJqIBFBCGoiASkAADcDACADQcAWaiABKAAANgIAIAMgESkAACIoNwOoEiAD +ICg3A7gWIAYoAqQFQagBaiADQbgWahDCKSAKIAcQxikgBUHIAGohBQwBCwsgA0HeF2ogFEEDai0A +ADoAACADQdgWaiAUQRhqKAAANgIAIAMgFEHIAGo2AuwWIAMgFEEBai8AADsB3BcgAyAUQQVqKQAA +NwPQFyADIBRBDGooAAA2ANcXIAMgFEEQaikAADcD0BYgFEEEai0AACEFIBRBHGotAAAhESADQbgT +aiAUQR1qQSsQzU8aIANB6BZqEKMXIAoQwksLIAZBlAVqELBLIANBhgVqIgcgA0HeF2otAAA6AAAg +A0GIFmoiCiADQdgWaigCADYCACADIAMvAdwXOwGEBSADIAMpA9AXNwP4BCADIAMoANcXNgD/BCAD +IAMpA9AWNwOAFiADQYgUaiILIANBuBNqQSsQzU8aIAZBAToAqAUgA0HiEmoiCCAHLQAAOgAAIANB +qBZqIgcgCigCADYCACADIAMvAYQFOwHgEiADIAMpA/gENwP4FCADIAMoAP8ENgD/FCADIAMpA4AW +NwOgFiADQZAVaiALQSsQzU8aIBAQ2yogAUESRw0JIANBoARqIAMoAP8UNgAAIAMgBToAmAQgAyAD +KQP4FDcAmQQgBkHgBGoiASADQZgEahDGKSAGQe8EakEAOgAAIAZBkARqKAIAIQUgASkDACEoIBBB +CGogBkHoBGooAgA2AgAgECAoNwMAIAZBjAVqQQA6AAAgBkGIBWogBkHQA2oiEDYCACAGQYQFaiAF +NgIADAILQQQLIQEgDSABOgAAICBBEzoAAEEGDA0LIAZB+ARqIhooAgAhByAGQfwEaigCACEIIAZB +gAVqKAIAIQEgAyAQNgLIBCADQcAMakIANwMAIANByAxqQoCAgIBwNwMAIAMgEDYCpAwgAyAFNgKg +DCADIAggAUEobGo2ApwMIAMgBzYCmAwgAyAINgKUDCADIAg2ApAMIANCADcDuAwgA0KAgICAoB83 +A7AMIANCgICAgMAANwOoDCADQQA2AuALIANBADYC2AsgA0EANgLYDCADQQA6ANAMIANBBjYCgAwg +A0HoFmogA0HYC2ogA0HIBGoQ3gwgA0GQDGoQlx0gAygCgAxBBkcEQCADQegLahD7HyADQYAMahD5 +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 +AARAIAZBoAFqENoaCyAGQQA6AO4EIAZB8gRqIQlBEiEBDAULIANBqhJqIAgtAAA6AAAgAyADLwHg +EjsBqBIgA0HYC2ogA0GQFWpBKxDNTxogA0HLE2ogBygCADYAACADIAMoAP8UNgC/EyADIAMpA/gU +NwO4EyADIAMpA6AWNwDDEwsgBkHQA2oQhQ4LIAZB7wRqLQAABEAgBkHgBGoQwksLIAZBADoA7wQg +BkHwBGotAAAEQCAGQfgEahCIGQsgBkEAOgDwBAsCQCAGQdwEai0AAEECRg0AIAZB7QRqLQAARQ0A +IAZBlARqEOESCyAGQe0EakEAOgAAIAZB8QRqLQAABEAgBkGQA2oQhQ4LIAZBADoA8QQLIAZB7gRq +LQAABEAgBkGgAWoQ2hoLIAZBADoA7gQgBkHyBGoiCS0AAEUNACAGQegAahDtQgsgICABOgAAIAlB +ADoAACAgIAMvAagSOwABICAgBToABCAgIAMpA7gTNwAFICAgEToAHCAgQQNqIANBqhJqLQAAOgAA +ICBBDWogA0HAE2opAwA3AAAgIEEUaiADQccTaikAADcAACAgQR1qIANB2AtqQSsQzU8aQQELOgDs +BCADQdgAahCKPSADQeAXaiQAIAwtAIgOIgdBE0YNAiAMQY4PaiAMLQCLDjoAACAMIAwvAIkOOwGM +DyAMKAKMDiELIAwoApAOIQUgDCgClA4hCiAMQdQOaiAMQZgOakE4EM1PGiAGEL1LDAQLIA9BuAFq +IAxB0AFqQTgQzU8aIA9B/AFqIAc2AgAgD0H4AWogBTYCACAPQfQBaiATNgIAIA9B8AFqIAo2AgAg +D0GAAmogDEGICmpBqAMQzU8aIA9BqAVqIBE2AgAgD0GsBWogDEGwCWpB2AAQzU8aIA9BhAZqQQA6 +AAAgD0GFBmogDEG4AmpB8wYQzU8aCyAMQbANaiEcIAEhEkEAIQFBACEHQQAhECMAQaAZayICJAAg +D0G4AWoiBAJ/AkACQAJAAkACQAJAAkACQAJAAkACfwJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQtAMwEQQFrDggCBgEDBAUI +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 +KAIAIRUgBEG4BWooAgAhCQwKCyAEQaoGakEAOgAAIARBsApqIARB2AVqKQMANwMAIARBoAZqKAIA +IQEgBEG4CmogBEHYBmpBOBDNTxogBEH4CmpBADoAACAEQfQKaiABNgIACyACQbgMaiAEQbAGaiIB +IBIQjwIgAi0AwA0iH0EDRw0CQQQMBQsgBEGqBmpBADoAACAEQbAKaiAEQdgFaikDADcDACAEQaAG +aigCACEBIARBuApqIARB2AZqQTgQzU8aIARB+ApqQQA6AAAgBEH0CmogATYCAAsgAkG4DGogBEGw +BmoiASASEI8CIAItAMANIh9BA0cNAUEFDAMLIAJBhhRqIhkgAi0Auww6AAAgAkGeGWoiFCACLQC/ +DDoAACACQaAYaiITIAJB0AxqIgooAgA2AgAgAkH+FGoiCyACQdcMai0AADoAACACIAIvALkMOwGE +FCACIAIvAL0MOwGcGSACIAIpA8gMNwOYGCACIAIvANUMOwH8FCACLQC4DCEFIAItALwMIQcgAigC +wAwhDSACKALEDCEOIAItANQMIRAgAkHoE2oiGCACQegMaikDADcDACACQfATaiIXIAJB8AxqKQMA +NwMAIAJB+BNqIgggAkH4DGopAwA3AwAgAiACKQPgDDcD4BMgAigC3AwhFSACKALYDCEJIAJByBZq +IAJBgA1qQcAAEM1PGiACIAJBxA1qKAAANgCrFyACIAIoAMENNgKoFyABEP08IB9BAkYNAyAKIAgp +AwA3AwAgAkHIDGogFykDADcDACACQcAMaiAYKQMANwMAIAIgAikD4BM3A7gMIAJB2AxqIAJByBZq +QcAAEM1PGiACQeoUaiAZLQAAOgAAIAJB2hRqIBQtAAA6AAAgAkGAGWogEygCADYCACACQcIUaiAL +LQAAOgAAIAJB+AVqIgsgFykDADcDACACQfAFaiIIIBgpAwA3AwAgAiACLwGEFDsB6BQgAiACLwGc +GTsB2BQgAiACKQOYGDcD+BggAiACLwH8FDsBwBQgAiACKQPgEzcD6AUgAkGABmogCkHIABDNTyEB +IAJBqhRqIAItAKoXOgAAIAJB0BhqIAgpAwA3AwAgAkHYGGogCykDADcDACACQeAYaiABKQMANwMA +IAIgAi8BqBc7AagUIAIgAikD6AU3A8gYIAJBuBdqIAJBiAZqQcAAEM1PGgwECyACQZIUaiIZIAIt +ALsMOgAAIAJBigRqIhQgAi0Avww6AAAgAkG4GGoiEyACQdAMaiIKKAIANgIAIAJB9hRqIgsgAkHX +DGotAAA6AAAgAiACLwC5DDsBkBQgAiACLwC9DDsBiAQgAiACKQPIDDcDsBggAiACLwDVDDsB9BQg +Ai0AuAwhBSACLQC8DCEHIAIoAsAMIQ0gAigCxAwhDiACLQDUDCEQIAJBkBdqIhggAkHoDGopAwA3 +AwAgAkGYF2oiFyACQfAMaikDADcDACACQaAXaiIIIAJB+AxqKQMANwMAIAIgAikD4Aw3A4gXIAIo +AtwMIRUgAigC2AwhCSACQfgVaiACQYANakHAABDNTxogAiACQcQNaigAADYA7xggAiACKADBDTYC +7BggARD9PCAfQQJHBEAgCiAIKQMANwMAIAJByAxqIBcpAwA3AwAgAkHADGogGCkDADcDACACIAIp +A4gXNwO4DCACQdgMaiACQfgVakHAABDNTxogAkHqFGogGS0AADoAACACQdoUaiAULQAAOgAAIAJB +gBlqIBMoAgA2AgAgAkHCFGogCy0AADoAACACQfgFaiILIBcpAwA3AwAgAkHwBWoiCCAYKQMANwMA +IAIgAi8BkBQ7AegUIAIgAi8BiAQ7AdgUIAIgAikDsBg3A/gYIAIgAi8B9BQ7AcAUIAIgAikDiBc3 +A+gFIAJBgAZqIApByAAQzU8hASACQaoUaiACLQDuGDoAACACQdAYaiAIKQMANwMAIAJB2BhqIAsp +AwA3AwAgAkHgGGogASkDADcDACACIAIvAewYOwGoFCACIAIpA+gFNwPIGCACQbgXaiACQYgGakHA +ABDNTxoMBgsgAkHqFGogGS0AADoAACACQdoUaiAULQAAOgAAIAJBgBlqIBMoAgA2AgAgAkHCFGog +Cy0AADoAACACQeAYaiAIKQMANwMAIAJB2BhqIBcpAwA3AwAgAkHQGGogGCkDADcDACACIAIvAZAU +OwHoFCACIAIvAYgEOwHYFCACIAIpA7AYNwP4GCACIAIvAfQUOwHAFCACIAIpA4gXNwPIGEEDIR8M +BQtBAwshASAQIAE6AAAgHEETOgAAQQMMLwsgAkHqFGogGS0AADoAACACQdoUaiAULQAAOgAAIAJB +gBlqIBMoAgA2AgAgAkHCFGogCy0AADoAACACQeAYaiAIKQMANwMAIAJB2BhqIBcpAwA3AwAgAkHQ +GGogGCkDADcDACACIAIvAYQUOwHoFCACIAIvAZwZOwHYFCACIAIpA5gYNwP4GCACIAIvAfwUOwHA +FCACIAIpA+ATNwPIGEEDIR8LIARBqAZqLQAARQ0AIARBmAVqEIUOCyAEQagGakEAOgAACwJAIBEo +AgBFDQAgBEGpBmotAABFDQAgERCFDgsgBEGpBmpBADoAACAEQaoGai0AAARAIARB2AZqEO1CCyAE +QQA6AKoGIAJB5hRqIhggAkHqFGotAAA6AAAgAkHWFGoiFyACQdoUai0AADoAACACQZgZaiIZIAJB +gBlqKAIANgIAIAJBzhRqIhQgAkHCFGotAAA6AAAgAkHIAWoiEyACQeAYaikDADcDACACQcABaiIB +IAJB2BhqKQMANwMAIAJBuAFqIgogAkHQGGopAwA3AwAgAiACLwHoFDsB5BQgAiACLwHYFDsB1BQg +AiACKQP4GDcDkBkgAiACLwHAFDsBzBQgAiACKQPIGDcDsAEgAkG4FWoiCCACQbgXakHAABDNTxog +BEEBOgCrBiACQb4UaiILIAJBqhRqLQAAOgAAIAIgAi8BqBQ7AbwUIAJB1gJqIhogGC0AADoAACAC +IAIvAeQUOwHUAiACQdICaiIYIBctAAA6AAAgAiACLwHUFDsB0AIgAkHIAmoiFyAZKAIANgIAIAIg +AikDkBk3A8ACIAJBvgJqIhkgFC0AADoAACACIAIvAcwUOwG8AiACQbACaiIUIBMpAwA3AwAgAkGo +AmoiIiABKQMANwMAIAJBoAJqIhMgCikDADcDACACIAIpA7ABNwOYAiACQdgBaiAIQcAAEM1PGiAC +QdYBaiIIIAstAAA6AAAgAiACLwG8FDsB1AEgERDgFyAfQQNGDQUgAkH4AmogAkHYAWpBwAAQzU8a +IARBAToA0QQgBCAFOgDwAiAEQfQCaiAHOgAAIAJB8AJqIgUgFCkDADcDACACQegCaiAiKQMANwMA +IAJB4AJqIBMpAwA3AwAgBCACLwHUAjsA8QIgBEHzAmogGi0AADoAACAEIAIvAdACOwD1AiAEQfcC +aiAYLQAAOgAAIAIgAikDmAI3A9gCIARB/AJqIA42AgAgBEH4AmogDTYCACAEIBA6AIwDIARBkANq +IAk2AgAgBEGUA2ogFTYCACAEQYADaiACKQPAAjcDACAEQYgDaiAXKAIANgIAIAQgAi8BvAI7AI0D +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 +Ai0A6AUiB0EMRwRAIAJBuhRqIgsgAi0A6wU6AAAgAkGwFGoiCCACQfwFaigCADYCACACQaYUaiIF +IAJBgwZqLQAAOgAAIAIgAi8A6QU7AbgUIAIgAikC9AU3A6gUIAIgAi8AgQY7AaQUIAIoAuwFIQ0g +AigC8AUhDiACLQCABiEQIAIoAoQGIQkgAigCiAYhFSAEQawGahCZNiAHQQtHBEAgAkGeGWogCy0A +ADoAACACQZgZaiAIKAIANgIAIAJB/hRqIAUtAAA6AAAgAiACLwG4FDsBnBkgAiACKQOoFDcDkBkg +AiACLwGkFDsB/BQMBwsCQCANRQRAIBFBADYCAAwBCyACQfQFaiACQbAUaigCADYCACACQfsFaiAC +QaYUai0AADoAACACIA42AugFIAIgAikDqBQ3AuwFIAIgEDoA+AUgAiACLwGkFDsA+QUgAiAJNgL8 +BSARIAJB6AVqEMQrCyAEQagGakEAOgAAIARBiAZqQQA2AgAgBEH4BWpBADYCACAEQZAGaiAEQbwF +aigCACIFNgIAIARBjAZqIARBuAVqKAIAIgc2AgAgBEGABmogBTYCACAEQfwFaiAHNgIAIARBlAZq +IARBwAVqKAIAQQAgBxs2AgAgBEGEBmogB0EARyIFNgIAIARB9AVqIAU2AgBBACEFDAELQQMhBQwB +CwNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAIAUOAwABAgMLIAJB +gAFqIARB9AVqIgUQgCIgAigCgAEiHg0DIAUQwjcgBEGnBmoiBy0AAEUNBkHEk9sAKAIAQQFLDQZB +8PnaABD7PiIBQf8BcUUNBkEAIQ1B8PnaACgCACABEPUuRQ0GQfD52gAoAgAiCEEoaigCACEJIAhB +JGooAgAhASAIKAIcIRUgCEEgaigCACIFDQRBAAwFCyAEQcAGaiIHICU2AgAgBEG8BmoiBSAeNgIA +IARBuAZqICE2AgAgAkH4AGogISgCAEHcAGooAgBBCGoQ5TUgAkHwAGogAigCeCAFKAIAIAcoAgAg +AigCfCgCXBEFACACKAJwISQgBEHIBmogAigCdCIjNgIAIARBxAZqICQ2AgBBAiEFDBILIAJB6AVq +ICQgEiAjKAIMEQMAIAIoAugFIgpBAkYNDCACQZoYaiACLQDvBToAACACQegTaiIHIAJBgAZqKAIA +NgIAIAJB7hhqIAJBhwZqLQAAOgAAIAIgAi8A7QU7AZgYIAIgAikD+AU3A+ATIAIgAi8AhQY7AewY +IAItAOwFIQUgAigC8AUhDSACKAL0BSEOIAItAIQGIRAgAigCiAYhCSACKAKMBiEVIARBxAZqEJk2 +IAoNBSAEQbgGaigCACEFIAJB+AVqIAcoAgA2AgAgAkH/BWogAkHuGGotAAA6AAAgAiAONgLsBSAC +IA02AugFIAIgAikD4BM3A/AFIAIgEDoA/AUgAiACLwHsGDsA/QUgAiAVNgKEBiACIAk2AoAGIAJB +6ABqIAUQ3EYgAiACKQNoNwK4FyAEQbwGaiACQbgXahCXQQRAIAJB4ABqIAUQ4UYgAkG4F2oiBSAC +QegFaiACKAJgIAIoAmQQthwgBRCVRQsgAkGQF2ogAkHwBWoiB0EIaigCADYCACACQbIYaiACQf0F +aiIFQQJqLQAAOgAAIAIgBykCADcDiBcgAiAFLwAAOwGwGCACKALsBSEOIAIoAugFIQ0gAi0A/AUh +ECACKAKABiEJIAIoAoQGIRUMBgsgAkHoBWogBEGsBmoiCCgCACASIAYoAgwRAwAgAi0A6AUiB0EM +Rg0JIAJB5hRqIgUgAi0A6wU6AAAgAkHgFGoiCiACQfwFaigCADYCACACQdYUaiILIAJBgwZqLQAA +OgAAIAIgAi8A6QU7AeQUIAIgAikC9AU3A9gUIAIgAi8AgQY7AdQUIAIoAuwFIQ0gAigC8AUhDiAC +LQCABiEQIAIoAoQGIQkgAigCiAYhFSAIEJk2IAdBC0cNCCACQZgXaiAKKAIANgIAIAJBnxdqIAst +AAA6AAAgAiACKQPYFDcCkBcgAiACLwHUFDsAnRcgAiAJNgKgFyACIBA6AJwXIAIgDjYCjBcgAiAN +NgKIFwwGCyAEQawFaiACKAKEASIlNgIAIARBqAVqIB42AgAgBEHMBmoiA0EAOgAAIARBtAZqICU2 +AgAgBEGwBmogHjYCACAEQawGaiIgIARBoAZqKAIAIiE2AgAMDQsgAkEANgL4BSACIAk2AvQFIAIg +ATYC8AUgAiAFNgLsBUEBIQ0gFQs2AugFIAJBmBhqIAJB6AVqQbzwwAAQ2CwgAkHEF2pCADcCACAC +QQE2ArwXIAJB+PDAADYCuBcgAkHgx8AANgLAFyACIAUgDU0Ef0EABSACIAk2AvQFIAIgATYC8AUg +AiAFNgLsBSACIA02AvgFIA1BAWohDSAVCzYC6AUgAkGwGGogAkHoBWpBvPDAABDYLCACIAUgDUsE +fyACIAk2AvQFIAIgATYC8AUgAiAFNgLsBSACIA02AvgFIA1BAWohDSAVBUEACzYC6AUgAkH4GGog +AkHoBWpBvPDAABDYLCACIAUgDU0Ef0EABSACIAk2AvQFIAIgATYC8AUgAiAFNgLsBSACIA02AvgF +IA1BAWohDSAVCzYC6AUgAkGwAWogAkHoBWpBvPDAABDYLCACIAUgDUsEfyACIA02ApgXIAIgCTYC +lBcgAiABNgKQFyACIAU2AowXIBUFQQALNgKIFyACQeATaiIBIAJBiBdqIgVBvPDAABDYLCACQaAG +akGA8cAANgIAIAJBnAZqIARBpgZqNgIAIAJBlAZqQYDxwAA2AgAgAkGQBmogBEGlBmo2AgAgAkGI +BmpBgPHAADYCACACQYQGaiAEQaQGajYCACACQfwFakGA8cAANgIAIAJB+AVqIAc2AgAgAkHAx8AA +NgLwBSACIAE2ApgGIAIgAkGwAWo2AowGIAIgAkH4GGo2AoAGIAIgAkGwGGo2AvQFIAIgAkG4F2o2 +AuwFIAIgAkGYGGo2AugFIAUgCEEcaiACQegFahDVQUHw+doAKAIAIAUQxDQLQcST2wAoAgANEEH8 ++doAEPs+IgFB/wFxRQ0QQQAhDkH8+doAKAIAIAEQ9S5FDRBB/PnaACgCACIIQShqKAIAIQkgCEEk +aigCACEBIAgoAhwhFSACIAhBIGooAgAiBQR/IAJBADYC+AUgAiAJNgL0BSACIAE2AvAFIAIgBTYC +7AVBASEOIBUFQQALNgLoBSACQbABaiACQegFakGQ8cAAENgsIAJB9AVqQgA3AgAgAkEBNgLsBSAC +QczxwAA2AugFIAJB4MfAADYC8AUgAiAFIA5LBH8gAiAONgKYFyACIAk2ApQXIAIgATYCkBcgAiAF +NgKMFyAVBUEACzYCiBcgAkHgE2oiASACQYgXaiIFQZDxwAAQ2CwgAkHMF2pBgPHAADYCACACQcgX +aiAHNgIAIAJBwMfAADYCwBcgAiABNgLEFyACIAJB6AVqNgK8FyACIAJBsAFqNgK4FyAFIAhBHGog +AkG4F2oQ8kFB/PnaACgCACAFEMQ0DBALIAJB+hhqIAJBmhhqLQAAOgAAIAJBkBdqIAcoAgA2AgAg +AkGyGGogAkHuGGotAAA6AAAgAiACLwGYGDsB+BggAiACKQPgEzcDiBcgAiACLwHsGDsBsBggBSEB +CyACQaoXaiILIAJB+hhqLQAAOgAAIAJBuAFqIgggAkGQF2ooAgA2AgAgAkH2FGoiByACQbIYai0A +ADoAACACIAIvAfgYOwGoFyACIAIpA4gXNwOwASACIAIvAbAYOwH0FCADQQE6AAAgAkHOFGoiBSAL +LQAAOgAAIAJByBRqIgsgCCgCADYCACACQb4UaiIIIActAAA6AAAgAiACLwGoFzsBzBQgAiACKQOw +ATcDwBQgAiACLwH0FDsBvBQgIBDmPyAKDQYgBCANNgK4BiAEIBA6AMwGIARBvAZqIA42AgAgBEHA +BmogAikDwBQ3AgAgBEHNBmogAi8BvBQ7AAAgBEHUBmogFTYCACAEQdAGaiAJNgIAIARByAZqIAso +AgA2AgAgBEHPBmogCC0AADoAACAEQZgGaigCAC0AMA0BIAJBADYCiBcLIAJB0BdqIARB0AZqKQMA +NwMAIAJByBdqIARByAZqKQMANwMAIAJBwBdqIARBwAZqKQMANwMAIAIgBEG4BmopAwA3A7gXIAJB +6AVqIgcgAkG4F2oiBRCvUSACIBE2AuQTIAIgBEGYBmooAgA2AuATIAIgAkGIF2o2AugTIAUgByAC +QeATahDiBSACQfAUaiACQcwXaigCADYCACACIAIpAsQXNwPoFCACKAK4FyEKIAIoArwXIRggAigC +wBchFCAEQacGai0AAEUEQCACQagXaiAYIBggFEEYbGoQoxggAkHoBWogBEGcBmooAgAoAjhBCGoQ +jUogAigC6AUNBCACQfAFaigCACETIAIoAuwFIARBqAVqKAIAIARBrAVqKAIAEIIhIgkEQCACQQA2 +AvwFIAJBADYC7AUgAiAJKAIEIgU2AoQGIAIgCSgCACIHNgKABiACIAU2AvQFIAIgBzYC8AUgAiAJ +KAIIQQAgBxs2AogGIAIgB0EARyIFNgL4BSACIAU2AugFIAJB7BhqIAJB6AVqIggQ+hMgAiACKAL0 +GEEAIAIoAuwYIgcbNgKIBiACIAIoAvAYIhU2AoQGIAIgBzYCgAYgAkEANgL8BSACIAdBAEciBTYC ++AUgAiAVNgL0BSACIAc2AvAFIAJBADYC7AUgAiAFNgLoBSACQZgYaiIFIAgQ7hQgCCAFIAJBqBdq +EL0DIAJBsBhqIAgQ6hQgBCACKAK4GCIJQQBHOgCnBgJAIAlFDQBBxJPbACgCAEEBSw0AQeT52gAQ ++z4iCUH/AXFFDQBBACEVQeT52gAoAgAgCRD1LkUNAEHk+doAKAIAIglBHGohCyAJQSBqKAIAIggE +QCAJQShqKAIAIQcgCUEkaigCACEFIAkoAhwhFSACQQA2AvgFIAIgBzYC9AUgAiAFNgLwBSACIAg2 +AuwFCyACIBU2AugFIAJBuBdqIgcgAkHoBWoiBUHg78AAENgsIAJB9AVqQgE3AgAgAkHAx8AANgLo +EyACQQE2AuwFIAJBtPDAADYC6AUgAkGAATYC+BQgAiAFNgLkEyACIAc2AuATIAIgAkH0FGo2AvAF +IAIgAkGwGGo2AvQUIAJBsAFqIAsgAkHgE2oQ4EEgAkGAGWogAkG4AWooAgA2AgAgAiACKQKwATcD ++BhB5PnaACgCACACQfgYahDENAsgAkGwGGoQ0AggAkGYGGoQsxkgAkHsGGoQohkLIBMgEygCAEEB +azYCACACQagXahCzGQsgAkHIAGogBEGoBWooAgAgBEGsBWooAgAQwjAgAkHoBWoiByAEQcQFaiAC +KAJIIAIoAkwQhxAgBxCRCSACIAo2AvAFIAIgGDYC6AUgAiAYIBRBGGxqNgL0BSACIBg2AuwFIAcQ +4ScgBEHQBWogAkHoFGoQxikgAkGIF2oQmEEMBgsgAkHYAGogBEGgBmooAgAQvywgAkHQAGogAigC +WCAEQagFaigCACAEQawFaigCACACKAJcKAJgEQUAIAIoAlAhBSAEQbAGaiACKAJUIgY2AgAgBCAF +NgKsBgwHCyACQZ4ZaiAFLQAAOgAAIAJBmBlqIAooAgA2AgAgAkH+FGogCy0AADoAACACIAIvAeQU +OwGcGSACIAIpA9gUNwOQGSACIAIvAdQUOwH8FCAEQbgGahCdPwwKC0EFIQUMBwsgAiACKQLsBTcC +uBdBuKnBAEErIAJBuBdqQeSqwQBB0O/AABCJGAALIANBAzoAAEEEIQUMBQsgAkGeGWogBS0AADoA +ACACQZgZaiALKAIANgIAIAJB/hRqIAgtAAA6AAAgAiACLwHMFDsBnBkgAiACKQPAFDcDkBkgAiAC +LwG8FDsB/BQgASEHDAYLQQAhBQwCC0EBIQUMAQtBAyEFDAALAAsgFyAFOgAAQQQLIQEgGSABOgAA +IBxBEzoAAEEEDB8LIARB9AVqEMI3IBEQl0UMAQsgAkGYGWogBEHMBWooAgA2AgAgAkGeGWogBEHT +BWotAAA6AAAgAiAEQcQFaikCADcDkBkgAiAEQdEFai8AADsBnBkgBEHQBWotAAAhByAEQdQFaigC +ACENIARB2AVqKAIAIQ4gBC0ApwYhECAREJdFIARB6AVqEIQZIARB3AVqEMgZIARBqAZqIR5BEiEF +DAELIARB6AVqEIQZIARB3AVqEMgZIARB0AVqEMJLIARBxAVqEIgZQQ4hBSAEQagGaiIeLQAARQ0A +IARBuAVqEIQZCyAeQQA6AAAgAkGeFGogAkGeGWotAAA6AAAgAkGYFGogAkGYGWooAgA2AgAgAkGO +FGogAkH+FGotAAA6AAAgAiACLwGcGTsBnBQgAiACKQOQGTcDkBQgAiACLwH8FDsBjBQgF0EBOgAA +IAJBohRqIAJBixRqLQAAOgAAIAJB0BZqIAJBwBVqKQMANwMAIAJB2BZqIAJByBVqKQMANwMAIAJB +4BZqIAJB0BVqKQMANwMAIAIgAi8AiRQ7AaAUIAIgAikDuBU3A8gWIBEQnRcLIARBjAVqLQAABEAg +HxDZIgsgBEEAOgCMBSACQZ4EaiIXIAJBohRqLQAAOgAAIAJBmgRqIhkgAkGeFGotAAA6AAAgAkGQ +BGoiCiACQZgUaigCADYCACACQYYEaiILIAJBjhRqLQAAOgAAIAJB4BhqIgggAkHgFmopAwA3AwAg +AkHYGGoiASACQdgWaikDADcDACACQdAYaiIUIAJB0BZqKQMANwMAIAIgAi8BoBQ7AZwEIAIgAi8B +nBQ7AZgEIAIgAikDkBQ3A4gEIAIgAi8BjBQ7AYQEIAIgAikDyBY3A8gYIARBAToAjQUgAkHeBGoi +EyAXLQAAOgAAIAJB2gRqIhcgGS0AADoAACACQdAEaiIZIAooAgA2AgAgAiACLwGcBDsB3AQgAiAC +LwGYBDsB2AQgAiACKQOIBDcDyAQgAkHGBGoiCiALLQAAOgAAIAIgAi8BhAQ7AcQEIAJBuARqIgsg +CCkDADcDACACQbAEaiIIIAEpAwA3AwAgAkGoBGoiASAUKQMANwMAIAIgAikDyBg3A6AEIB8QzS0g +BUESRw0CIARBAToA0AQgAikDyAQhKCAfQQhqIBkoAgA2AgAgHyAoNwMAIAQgBzoAwAQgBEEBOgDP +BCAEIAIvAdgEOwDBBCAEQcMEaiAXLQAAOgAAIARByARqIA42AgAgBEHEBGogDTYCACAEQQA6ANEE +IARBPGooAgAhDiAEKALwAyEJIAQoAjghFSACQfgMaiAEQfACakHAABDNTxogBEEAOgDSBCACQegF +aiIBIAJBuAxqQdgFEM1PGiAEQegEaiIeIAFB2AUQzU8aIARBxApqIA42AgAgBEHACmogFTYCACAE +QcgKaiAEQcgAakE4EM1PGiAEQY8LaiAQQQFxIgU6AAAgBEGOC2oiJEEAOgAAIARBiAtqIARBgAFq +Ig02AgAgBEGEC2ogCTYCAAsgBEGNC2pBAToAACAeIARBqAVqQcAAEM1PIQEgBEGMC2pBAToAACAC +QYAVaiAEQcgKakE4EM1PGiAEQYALaiANNgIAIAVB/wFxRQRAIARBADoAjQsgAkGYGWogBEG4BWoo +AgA2AgAgAkGKBGogBEG/BWotAAA6AAAgAkHQGGogBEHQBWopAwA3AwAgAkHYGGogBEHYBWopAwA3 +AwAgAkHgGGogBEHgBWopAwA3AwAgAiAELwC9BTsBiAQgAiAEQbAFaikDADcDkBkgAiAEQcgFaikD +ADcDyBggBEHABWooAgAhCSAEQbwFai0AACEQIARBrAVqKAIAIQ4gBCgCxAUhFSAEKAKoBSENDAQL +IAJBQGsgARDVPiACKAJAIQUgAigCRCEBIARBADoAjAsgBEG8CmogATYCACAEQbgKaiAFNgIAIARB +7AlqIA42AgAgBEHoCWogFTYCACAEQfAJaiACQYAVakE4EM1PGiAEQbAKakEAOgAAIARBrApqIAk2 +AgALIAJBuAxqIARB6AVqIgEgEhCPAiACLQDADSIZQQNGDQEgAkH2FGoiFCACLQC7DDoAACACQYYU +aiITIAItAL8MOgAAIAJBsBdqIgogAkHQDGooAgA2AgAgAkGeGWoiCyACQdcMai0AADoAACACIAIv +ALkMOwH0FCACIAIvAL0MOwGEFCACIAIpA8gMNwOoFyACIAIvANUMOwGcGSACLQC4DCEFIAItALwM +IQcgAigCwAwhDSACKALEDCEOIAItANQMIRAgAkGQF2oiGCACQegMaikDADcDACACQZgXaiIXIAJB +8AxqKQMANwMAIAJBoBdqIgggAkH4DGopAwA3AwAgAiACKQPgDDcDiBcgAigC3AwhFSACKALYDCEJ +IAJByBZqIAJBgA1qQcAAEM1PGiACIAJBxA1qKAAANgDDFCACIAIoAMENNgLAFCABEP08IBlBAkYE +QCACQaoUaiAULQAAOgAAIAJBkhRqIBMtAAA6AAAgAkGYGWogCigCADYCACACQYoEaiALLQAAOgAA +IAJB4BhqIAgpAwA3AwAgAkHYGGogFykDADcDACACQdAYaiAYKQMANwMAIAIgAi8B9BQ7AagUIAIg +Ai8BhBQ7AZAUIAIgAikDqBc3A5AZIAIgAi8BnBk7AYgEIAIgAikDiBc3A8gYIARBjAtqQQA6AAAg +HhCFDiAEQY0LaiEhDAULIAJB0BdqIgEgCCkDADcDACACQcgXaiAXKQMANwMAIAJBwBdqIBgpAwA3 +AwAgAiACKQOIFzcDuBcgAkHYF2ogAkHIFmpBwAAQzU8aIAJB0BVqIAooAgA2AgAgAkHXFWogCy0A +ADoAACACIAU6ALgVIAIgAi8B9BQ7ALkVIAIgFC0AADoAuxUgAiAHOgC8FSACIAIvAYQUOwC9FSAC +IBMtAAA6AL8VIAIgDjYCxBUgAiANNgLAFSACIAIpA6gXNwPIFSACIBA6ANQVIAIgAi8BnBk7ANUV +IAJB6BVqIBgpAwA3AwAgAkHwFWogFykDADcDACACIBU2AtwVIAIgCTYC2BUgAiACKQOIFzcD4BUg +AkH4FWoiCyABQcgAEM1PGiACQcMWaiACLQDCFDoAACACIBk6AMAWIAIgAi8BwBQ7AMEWIARBgAtq +IggoAgAgAkG4DGoiASACQbgVahCKB0HMAWogARDqKyAIKAIAQcABaiALEOwrIAJB2BVqIQogAkHA +FWohCAJAQcST2wAoAgBBAUsNAEGU+toAEPs+IgFB/wFxRQ0AQQAhDkGU+toAKAIAIAEQ9S5FDQBB +lPraACgCACILQShqKAIAIQUgC0EkaigCACEHIAsoAhwhASACIAtBIGooAgAiEwR/IAJBADYCyAwg +AiAFNgLEDCACIAc2AsAMIAIgEzYCvAxBASEOIAEFQQALNgK4DCACQZgYaiACQbgMakHk8cAAENgs +IAJBvAFqQgA3AgAgAkEBNgK0ASACQfTywAA2ArABIAJB4MfAADYCuAEgAiAOIBNPBH9BAAUgAiAF +NgLEDCACIAc2AsAMIAIgEzYCvAwgAiAONgLIDCAOQQFqIQ4gAQs2ArgMIAJBsBhqIAJBuAxqQeTx +wAAQ2CwgAiAOIBNJBH8gAiAONgLIDCACIAU2AsQMIAIgBzYCwAwgAiATNgK8DCABBUEACzYCuAwg +AkH4GGoiASACQbgMaiIFQeTxwAAQ2CwgAkE4aiACQbgVahDVPiACQdgMakGA28AANgIAIAJBzAxq +QYDbwAA2AgAgAkHIDGogBEG4Cmo2AgAgAkHUDGogAkHYFGo2AgAgAkHAx8AANgLADCACIAIpAzg3 +AtgUIAIgATYC0AwgAiACQbAYajYCxAwgAiACQbABajYCvAwgAiACQZgYajYCuAwgAkHsGGoiASAL +QRxqIAUQ4UFBlPraACgCACABEMQ0CyACQZgZaiAIQQhqKAIANgIAIAJBigRqIAJBzxVqLQAAOgAA +IAJB0BhqIApBCGopAwA3AwAgAkHYGGogCkEQaikDADcDACACQeAYaiAKQRhqKQMANwMAIAIgAi8A +zRU7AYgEIAIgCCkDADcDkBkgAiAKKQMANwPIGCACKAK8FSEOIAIoArgVIQ0gAi0AzBUhECACKALQ +FSEJIAIoAtQVIRUgBEGMC2otAAANAgwDCyACQd4TaiATLQAAOgAAIAJBqBNqIAEpAwA3AwAgAkGw +E2ogCCkDADcDACACQbgTaiALKQMANwMAIAJB2hNqIBctAAA6AAAgAkHQE2ogGSgCADYCACACIAIv +AdwEOwHcEyACIAIpA6AENwOgEyACIAIvAdgEOwHYEyACIAIpA8gENwPIEyACQcYTaiAKLQAAOgAA +IAIgAi8BxAQ7AcQTDBQLICRBAzoAAAwDCyACQYAVahDtQgsgBEEAOgCMC0ESIQUgBEGNC2oiIS0A +AARAIB4QhQ4LCyAhQQA6AAAgAkH+FGoiFyACQaoUai0AADoAACACQeYUaiIZIAJBkhRqLQAAOgAA +IAJB8BRqIhQgAkGYGWooAgA2AgAgAkHWFGoiEyACQYoEai0AADoAACACQfgTaiIKIAJB4BhqKQMA +NwMAIAJB8BNqIgsgAkHYGGopAwA3AwAgAkHoE2oiCCACQdAYaikDADcDACACIAIvAagUOwH8FCAC +IAIvAZAUOwHkFCACIAIpA5AZNwPoFCACIAIvAYgEOwHUFCACIAIpA8gYNwPgEyAkQQE6AAAgBUH/ +AXEiAUETRg0AIAJBngVqIBctAAA6AAAgAkGaBWogGS0AADoAACACQZAFaiAUKAIANgIAIAJBhgVq +IBMtAAA6AAAgAkH4BGogCikDADcDACACQfAEaiALKQMANwMAIAJB6ARqIAgpAwA3AwAgAiACLwH8 +FDsBnAUgAiACLwHkFDsBmAUgAiACKQPoFDcDiAUgAiACLwHUFDsBhAUgAiACKQPgEzcD4AQgHhCg +LiABQRJHDQQgBCANNgKwAyAEIAIvAYQFOwDFAyAEIBU2AswDIARBtANqIA42AgAgBEG4A2ogAikD +iAU3AAAgBEHEA2ogEDoAACAEQcgDaiAJNgIAIARB0ANqIAIpA+AENwAAIARBwANqIAJBkAVqKAIA +NgAAIARBxwNqIAJBhgVqLQAAOgAAIARB2ANqIAJB6ARqKQMANwAAIARB4ANqIAJB8ARqKQMANwAA +IARB6ANqIAJB+ARqKQMANwAAIARBADoA0AQgBEHcBGooAgAhByAEQeAEaiIFKAIAIQEgBCgC2AQh +CCACQQA2AvQMIAJBADYC4AwgAiAEQbADaiIJNgLcDCACIAFBACAIGzYC2AwgAiAHNgLUDCACIAg2 +AtAMIAJBADYCzAwgAiAIQQBHIhA2AsgMIAIgBzYCxAwgAiAINgLADCACQQA2ArwMIAIgEDYCuAwg +AkHoFGogAkG4DGoQqAcgBCACKQPoFDcD2AQgBSACQfAUaigCADYCACAEQYgFaiIeQQA6AAAgBEHs +BGogBEGAAWoiBTYCACAEIAk2AugEIARB5ARqIAQoAvADNgIAIARBiQVqIAJB6AVqQccAEM1PGiAE +QdgEaiEhDAELIBxBEzoAAEEFDBILIARB9ARqICEpAgA3AgAgBEGEBWogBTYCACAEQfAEaiAEQeQE +aigCACIFNgIAIARB/ARqICFBCGooAgAiDTYCACAEQYAFaiAEQegEaigCACIONgIAQQAgDUUNBBog +BEH4BGooAgAhBUEAIQ5BACEJA0AgAiAFNgKMFSACIAk2AogVIAIgEDYChBUgAiAONgKAFSACQTBq +IAUQsUYgAkG4F2oiASACQYAVaiACKAIwIAIoAjQQrBEgARCaCiACQShqIAUQskYgAigCKCACKAIs +EPBHIAVBGGohBSACKAKIFSEJIAIoAoQVIRAgAigCgBUhDiANQQFrIg0NAAsgBEGUBWogCTYCACAE +QZAFaiAQNgIAIARBjAVqIA42AgBBwABBCBCrOSACQbgXaiIBIAQoAoAFEIoHIAFBwAAQzU8hASAE +KAKEBUHMAWoQv0sgBCgChAUiBUEBNgLMASAFQdQBakEBNgIAIAVB0AFqIAE2AgAgBEHMBWoiBUEA +OgAAIARBmAVqIhAgBCgCgAUiDTYCAAsgDSgCICEBIARByAVqQQA6AAAgBEGcBWogAUEIajYCAAsg +AkEgaiAEQZwFaiIBIBIQ1QkCfyACKAIgIgkEQCACKAIkIQcgAiAJNgK4FyACIAc2ArwXIAEQ6j8g +BxDbTiEJIAJBuBdqEJpMQQEhDkEADAELQQMhDkEBCyEBIAUgDjoAAEEDIAENBBogAiAJNgKIBCAQ +EPg/QcST2wAoAgBBAksNAUGg+toAEPs+IgFB/wFxRQ0BQQAhBUGg+toAKAIAIAEQ9S5FDQFBoPra +ACgCACIHQShqKAIAIQggB0EkaigCACEJIAcoAhwhASACIAdBIGooAgAiCwR/IAJBADYCyBcgAiAI +NgLEFyACIAk2AsAXIAIgCzYCvBdBASEFIAEFQQALNgK4FyACQfgYaiACQbgXakG47cAAENgsIAJB +jBVqQgA3AgAgAkEBNgKEFSACQeTtwAA2AoAVIAJB4MfAADYCiBUgAiAFIAtPBH9BAAUgAiAINgLE +FyACIAk2AsAXIAIgCzYCvBcgAiAFNgLIFyAFQQFqIQUgAQs2ArgXIAJBsAFqIAJBuBdqQbjtwAAQ +2CwgAiAEQYwFajYCkBQgAiAFIAtJBH8gAiAINgLEFyACIAk2AsAXIAIgCzYCvBcgAiAFNgLIFyAF +QQFqIQUgAQVBAAs2ArgXIAJB4BNqIAJBuBdqQbjtwAAQ2CwgAiAFIAtPBH9BAAUgAiAINgLEFyAC +IAk2AsAXIAIgCzYCvBcgAiAFNgLIFyAFQQFqIQUgAQs2ArgXIAJBiBdqIAJBuBdqQbjtwAAQ2Cwg +AkEYaiAEQYAFaigCABCqTSACIAIpAxg3AsAUIAIgAkHAFGo2AqgUIAIgBSALSQR/IAIgBTYCyBcg +AiAINgLEFyACIAk2AsAXIAIgCzYCvBcgAQVBAAs2ArgXIAJByBhqIgEgAkG4F2oiBUG47cAAENgs +IAJBEGogBCgCgAUQ1T4gAkHwF2pBgNvAADYCACACQeQXakH46sAANgIAIAJB2BdqQfztwAA2AgAg +AkHMF2pB7O3AADYCACACQewXaiACQdgUajYCACACQeAXaiACQagUajYCACACQdQXaiACQYgEajYC +ACACQcgXaiACQZAUajYCACACQcDHwAA2AsAXIAIgAikDEDcC2BQgAiABNgLoFyACIAJBiBdqNgLc +FyACIAJB4BNqNgLQFyACIAJBsAFqNgLEFyACIAJBgBVqNgK8FyACIAJB+BhqNgK4FyACQewYaiIB +IAdBHGogBRDVQUGg+toAKAIAIAEQxDQMAQsgAkHeE2ogAkGeBWotAAA6AAAgAkHaE2ogAkGaBWot +AAA6AAAgAkHQE2ogAkGQBWooAgA2AgAgAkHGE2ogAkGGBWotAAA6AAAgAkG4E2ogAkH4BGopAwA3 +AwAgAkGwE2ogAkHwBGopAwA3AwAgAkGoE2ogAkHoBGopAwA3AwAgAiACLwGcBTsB3BMgAiACLwGY +BTsB2BMgAiACKQOIBTcDyBMgAiACLwGEBTsBxBMgAiACKQPgBDcDoBMMCgsgBEGMBWoQshkgBEGA +BWooAgAhDiAEQfAEaigCACEFIARB/ARqKAIACyEHIARB+ARqKAIAIQEgAiAONgLIFyACIAU2AsQX +IAJB+gE2AsAXIAIgBzYCvBcgAiABNgK4FyACQZAZaiIBIAJBuBdqIgUQ7AggBEGUBWpBADYCACAE +QYwFakKAgICAgAE3AgAgBSABEN4JIARBmAVqIAVBOBDNTxoLIAJBgBVqIARBmAVqIgcgEhCrCiAC +KAKAFSIFQYCAgIB4RwRAIAIoAoQVIRAgAigCiBUhASAHEJULIAIgECABQcgAbCIIaiIHNgKMFSAC +IAU2AogVIAIgEDYCgBUgBEGMBWohCyACQcQVaiEVIAJBuwxqIQpBACENAkADQAJAIAIgCCANRwR/ +IA0gEGoiCS0AACIFQRRHDQEgCUHIAGoFIAcLNgKEFSACQYAVahCjFyACQYYUaiAEQY8Fai0AADoA +ACACIARBjQVqLwAAOwGEFCAEQZQFaigCACEOIARBkAVqKAIAIQ0gBC0AjAUhB0ESIQUMAgsgBUET +Rg0FIAJBuAxqIAlBAWpBxwAQzU8aIAVBEkYEQCACQcgVaiAKQRBqKQAANwMAIAJBwBVqIApBCGoi +ASkAADcDACACQaAYaiABKAAANgIAIAIgCikAACIoNwO4FSACICg3A5gYIAQoAoQFQagBaiACQZgY +ahDCKSALIBUQxikgDUHIAGohDQwBCwsgAkH2FGogCUEDai0AADoAACACQYYUaiAJQQdqLQAAOgAA +IAJBuBhqIAlBGGooAAA2AgAgAkGeGWogCUEfai0AADoAACACIAlByABqNgKEFSACIAlBAWovAAA7 +AfQUIAIgCUEFai8AADsBhBQgAiAJQRBqKQAANwOwGCACIAlBHWovAAA7AZwZIAlBBGotAAAhByAJ +QQhqKAAAIQ0gCUEMaigAACEOIAlBHGotAAAhECACQZAWaiAJQUBrKQAANwMAIAJBiBZqIAlBOGop +AAA3AwAgAkGAFmogCUEwaikAADcDACACIAlBKGopAAA3A/gVIAlBJGooAAAhFSAJQSBqKAAAIQkg +AkGAFWoQoxcgCxDCSwsgBEH0BGoQsEsgAkH+FGoiFyACQfYUai0AADoAACACQeYUaiITIAJBhhRq +LQAAOgAAIAJBsBdqIgogAkG4GGooAgA2AgAgAkHWFGoiCyACQZ4Zai0AADoAACACQeAWaiIIIAJB +kBZqKQMANwMAIAJB2BZqIgEgAkGIFmopAwA3AwAgAkHQFmoiGSACQYAWaikDADcDACACIAIvAfQU +OwH8FCACIAIvAYQUOwHkFCACIAIpA7AYNwOoFyACIAIvAZwZOwHUFCACIAIpA/gVNwPIFiAEQQE6 +AIgFIAJB2gVqIhQgFy0AADoAACACQdYFaiIXIBMtAAA6AAAgAkHQBWoiEyAKKAIANgIAIAIgAi8B +/BQ7AdgFIAIgAi8B5BQ7AdQFIAIgAikDqBc3A8gFIAJBxgVqIgogCy0AADoAACACIAIvAdQUOwHE +BSACQbgFaiILIAgpAwA3AwAgAkGwBWoiCCABKQMANwMAIAJBqAVqIgEgGSkDADcDACACIAIpA8gW +NwOgBSAhENoqIAVBEkcNBiACIAc6ANwFIAIgAi8B1AU7AN0FIAIgDjYC5AUgAiANNgLgBSACIBct +AAA6AN8FIARBwARqIAJB3AVqEMYpIARBADoAzwQgBCgC8AMhDSAEKQPABCEoICFBCGogBEHIBGoo +AgA2AgAgISAoNwMAIARB7ARqQQA6AAAgBEHoBGogBEGwA2oiFTYCACAEQeQEaiANNgIADAILQQQL +IQEgHiABOgAAIBxBEzoAAEEGDAoLIARB3ARqKAIAIQUgBEHgBGooAgAhASAEKALYBCEQIAIgFTYC +yBggAkGgDWpCADcDACACQagNakKAgICAcDcDACACIBU2AoQNIAIgDTYCgA0gAiAFIAFBKGxqNgL8 +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 +BiACQagDahDgQUHIjdsAKAIAIAQQxDQMBwsgBEEBSw0IQbyN2wAQ+z4iAUH/AXFFDQhBvI3bACgC +ACABEPUuRQ0IQbyN2wAoAgAiAUEcaiEEQQAhBSABQSBqKAIAIgYEQCABQShqKAIAIQkgAUEkaigC +ACEKIAEoAhwhBSACQQA2AqgJIAIgCTYCpAkgAiAKNgKgCSACIAY2ApwJCyACIAU2ApgJIAJBgARq +IgEgAkGYCWoiBUGkpMEAENgsIAJBpAlqQgA3AgAgAkHAx8AANgKwAyACQQE2ApwJIAJB5KTBADYC +mAkgAkHgx8AANgKgCSACIAU2AqwDIAIgATYCqAMgAkGAA2oiASAEIAJBqANqEOBBQbyN2wAoAgAg +ARDENAwICyACQe4OaiAEKQMANwEAIAJB9g5qIAYoAgA2AQAgAiACKQHeATcB3g4gAiACKQPYATcD +2A4gAiACKQPAATcB5g4MDAtBoMTAAEEjQei8wQAQ5isAC0GMwsAAQTZBxMLAABCfNwALQQQhAQwI +C0EFIQEMBwsgAkHoDmogBi8BADsBACACQeAOaiAEKQMANwMAIAJB8g5qIAkpAwA3AQAgAiACKQOo +ATcD2A4gAiACKQOYATcB6g4MCQsgA0EAOgAkIAJBuAJqIgQgC0EIaigCADYCACACIAspAwA3A7AC +IAJBEGoQ0TIgAkH4CmpBADYCACACQegKakIINwMAIAJB4ApqIgZCADcDACACQdAKakIENwMAIAJB +yApqIgdCADcDACACQYAKakIANwMAIAJBiApqQgQ3AwAgAkGQCmpCgICAgMAANwMAIAJBmApqQgA3 +AwAgAkGgCmpCCDcDACACQagKakKAgICAgAE3AwAgAkGwCmpCADcDACACQbgKakIINwMAIAJBgICA +gHg2AuAJIAJBADYCuAkgAkKAgICAwAA3A/AKIAJCgICAgMAANwPYCiACQoCAgICAATcDwAogAkEA +NgLQCSACQoCAgIDAADcD+AkgAikDECEiIAIpAxghIyACQdwJaiIJQQA2AgAgAkGwCWoiCiAjNwMA +IAJBhAtqIgtBADYCACACQagJaiIMICI3AwAgAkGgCWoiDUHwwsAAKQMANwMAIAJBmAJqIAJByAlq +KQMANwMAIAJBkAJqIAJBwAlqKQMANwMAIAJBADYC1AkgAkKAgICAwAA3AvwKIAJBgICAgHg2AuwJ +IAJB6MLAACkDADcDmAkgAiACKQO4CTcDiAIgAkHoA2oiDiACQegJaigCADYCACACIAIpA+AJNwPg +AyACQfgCaiIPIAcoAgA2AgAgAiACKQPACjcD8AIgAkHoAmoiByACQdQKaigCADYCACACIAIpAswK +NwPgAiACQdgCaiIQIAYoAgA2AgAgAiACKQPYCjcD0AIgAkHIAmoiBiACQewKaigCADYCACACIAIp +AuQKNwPAAiACQagDaiIRIAJB+AlqQSQQzU8aIAJBgANqIhIgAkGcCmpBJBDNTxogAkH4A2oiEyAJ +KAIANgIAIAJB8AFqIA0pAwA3AwAgAkH4AWogDCkDADcDACACQYACaiAKKQMANwMAIAIgAikC1Ak3 +A/ADIAIgAikDmAk3A+gBIAJBqAJqIgkgCygCADYCACACIAIpAvwKNwOgAiACQdgDaiIKIAJB9Alq +KAIANgIAIAIgAikC7Ak3A9ADIAJB8ApqELZLIAMoAgAQ+E0hCyACQfgNaiACQegBakE4EM1PGiAC +QYAEaiIMIAJBmAlqQZgFEM1PGiAFIAxBmAUQzU8aIANB0AVqQQA2AgAgA0HUBWogAikD8AM3AgAg +A0HcBWogEygCADYCACADQeAFaiACKQPgAzcDACADQegFaiAOKAIANgIAIANB7AVqIAIpA9ADNwIA +IANB9AVqIAooAgA2AgAgA0H4BWogEUEkEM1PGiADQZwGaiASQSQQzU8aIANByAZqIA8oAgA2AgAg +A0HABmogAikD8AI3AwAgA0HMBmogAikD4AI3AgAgA0HUBmogBygCADYCACADQdgGaiACKQPQAjcD +ACADQeAGaiAQKAIANgIAIANB5AZqIAIpA8ACNwIAIANB7AZqIAYoAgA2AgAgA0H4BmogBCgCADYC +ACADQfAGaiACKQOwAjcDACADQYgHaiALNgIAIANBjAdqQQA6AAAgA0GEB2ogCSgCADYCACADQfwG +aiACKQOgAjcCAAsgAkGYCWogA0E4aiIEIAEQ+xAgAi0AmAkiBUEMRg0BIAItAJkJIQcgAkG2Dmog +AkGYCWpBAnJBIhDNTxogBBD5PCAFQQtHDQJBASEHCyADLQAkDQIMBQtBByEBDAILIAJB2A5qIAJB +tg5qQSIQzU8aIANBADoAJCADQRRqELZLDAILIANBKGoQtksMAgsgAyABOgAnIANBAzoAlAdBAgwE +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 +QfQCakHEqsEAQciJwQAQiRgACyADQZQBaigCACEFIANBkAFqKAIAIQQLIAJBrAJqIAQgASAFKAIM +EQMAIAItAKwCIgRBDEcNAUEECyEBIAggAToAAEEFIQQMAgsgAkHOA2oiASACLQCvAjoAACACQZAD +aiIIIAJBwAJqKQIANwMAIAJBmANqIgogAkHIAmopAgA3AwAgAiACLwCtAjsBzAMgAiACKQK4AjcD +iAMgAigCsAIhByACKAK0AiEFIANBkAFqEJk2IANBhAFqEJpMIANB+ABqEKE9IANBjAFqQYACOwEA +IAJB7gNqIAEtAAA6AAAgAkHYA2ogCCkDADcDACACQeADaiAKKQMANwMAIAIgAi8BzAM7AewDIAIg +AikDiAM3A9ADIAkQ1ywgA0EkahCxSwsgA0E8akGAAjsBACACQY4BaiACQe4Dai0AACIBOgAAIAJB ++ABqIgkgAkHYA2opAwA3AwAgAkGAAWoiCCACQeADaikDADcDACACQa4BaiIKIAE6AAAgAiACLwHs +AyIBOwGMASACIAIpA9ADNwNwIAIgATsBrAEgAkGgAWoiASAIKQMANwMAIAJBmAFqIgggCSkDADcD +ACACIAIpA3A3A5ABAkACQAJAAkACQCALLQAhQQNrDgMAAQIECyALQSRqENc/DAILIAtBJGoQ2j8g +C0EIahCxSwwBCyALQdAAahDXLCALQQhqELFLCyALQQA6ACALIAJBzgBqIgsgCi0AADoAACACQThq +IgkgCCkDADcDACACQUBrIgggASkDADcDACACIAIvAawBOwFMIAIgAikDkAE3AzAgDkEBOgAAIAJB +7gBqIAstAAA6AAAgAkHYAGogCSkDADcDACACQeAAaiAIKQMANwMAIAIgAi8BTDsBbCACIAIpAzA3 +A1ACfiAEQQtGBEBCACERQoCAgICAEAwBCyACQcACaiACQdgAaikDADcCACACQcgCaiACQeAAaikD +ADcCACACIAIvAWw7AK0CIAIgAikDUDcCuAIgAiAFNgK0AiACIAc2ArACIAIgBDoArAIgAiACQe4A +ai0AADoArwJCASERIAJBrAJqEM4erUIghgshEiADQQxqEKw5IAMQs0sgA0EBOgDYASACIBEgEoQ3 +AyggAygCAEGAgICAeEYNAiACIAM2AqwCAkACQAJAIAJBrAJqKAIAIgEtANgBDgQBAgIAAgsgAUHU +AWotAABBA0cNAAJAAkACQAJAIAFBPWotAABBA2sOAwABAgQLIAFBQGsQhSkMAgsgAUFAaxDBQCAB +QSRqELFLDAELAkACQAJAAkAgAUGNAWotAABBA2sOAgABAwsgAUGQAWoQ1DAMAQsgAUGQAWoQmTYg +AUGEAWoQmkwLIAFB+ABqEKE9IAFBjAFqQQA6AAALIAFBJGoQsUsLIAFBPGpBADoAAAsgAUEMahCs +OSABELNLCyADQYCAgIB4NgIAIAJBCGogAkEoahD0MSACKAIMIQMgAigCCAwBCyADIAQ6AD0gA0ED +OgDUASADQQM6ANgBQQILIQEgDSADNgIEIA0gATYCACACQfADaiQADAELIANBgICAgHg2AgBB5MDA +AEEoQfzBwAAQ5isACyAGKAIYIgJBAkYNASAGKAIcIQEgDxCREQJ/IAJFBEAgBkGAATYCKCAGIAE2 +AiwgBkEIaiAAQdwBaiAGQShqIgMgBkEsaiIEEPsnIAYoAgggBigCDBDkQQwBCyAGQYABNgIoIAYg +ATYCLCAGQRBqIABB4AFqIAZBKGoiAyAGQSxqIgQQ+ycgBigCECAGKAIUEORBCyEBIAQQlkEgAxCW +QSAGIAE2AiQgBkEkahCWQSAAQdwBahCWQSAAQeABahCWQUEBDAILQdCXxgBBI0G0wcYAEOYrAAtB +Aws6AMADIAZBMGokACACQQJGC/sNAgx/AX4jAEEwayIFJAAgAAJ/AkACQAJAAkACQCAALQDQAkEB +aw4DAwACAQsACyAAQawBaiAAQaQBEM1PGgsgBUEYaiENIwBBsAJrIgIkAAJ/IABBrAFqIgMCfwJA +AkACQAJ+AkAgAy0AoAEiBEEERwRAAn8CQAJAAkACQAJAIANBDGoCfwJAAkACQCAEQQFrDgMGAQAC +CwJAIANBEGoiBy0AAEEBaw4EDgEEBQALIAMoAggMAgsACyADIAM2AgggA0EQaiIHQQA6AAAgAwsi +BDYCACAEEPhNIQQgA0HIAGpBADoAACADQRRqIAQ2AgALIAJB+ABqIANBFGoiCCABEKkGIAItAHgi +C0EMRg0IIAJBxgFqIgkgAi0AezoAACACQbABaiIKIAJBjAFqKQIANwMAIAJBuAFqIgwgAkGUAWop +AgA3AwAgAiACLwB5OwHEASACIAIpAoQBNwOoASACKAJ8IQQgAigCgAEhBiAIENc/IAtBC0cNAiAD +QZwBaiAGNgIAIANBmAFqIgYgBDYCACADQQxqKAIAKAIAQYABaigCACEEIAYoAgQhBiADQZQBakEA +OgAAIANBGGogBjYCACADIARBCGo2AhQLIAJB+ABqIANBFGoiCCABEPQGIAItAHgiC0EMRg0JIAJB +jgJqIgEgAi0AezoAACACQfgBaiIJIAJBjAFqKQIANwMAIAJBgAJqIgogAkGUAWopAgA3AwAgAiAC +LwB5OwGMAiACIAIpAoQBNwPwASACKAJ8IQQgAigCgAEhBiAIENo/IAtBC0YEQCACIAY2AuwBIAIg +BDYC6AEgAkHIAWogAkHoAWoQrgogAkGYAmogAkHYAWopAwA3AwAgAkGgAmogAkHgAWopAwA3AwAg +AiACKQPQATcDkAIgAigCzAEhBiACKALIASEEIANBmAFqELFLQQEMBAsgAkGuAmogAS0AADoAACAC +QZgCaiAJKQMANwMAIAJBoAJqIAopAwA3AwAgAiACLwGMAjsBrAIgAiACKQPwATcDkAIgA0GYAWoQ +sUsMAgtBoMTAAEEjQeC3wQAQ5isACyACQa4CaiAJLQAAOgAAIAJBmAJqIAopAwA3AwAgAkGgAmog +DCkDADcDACACIAIvAcQBOwGsAiACIAIpA6gBNwOQAgtBAAsgAkE2aiIBIAJBrgJqLQAAOgAAIAJB +IGoiCSACQZgCaikDADcDACACQShqIgogAkGgAmopAwA3AwAgAiACLwGsAjsBNCACIAIpA5ACNwMY +IAdBAToAACACQdYAaiIMIAEtAAA6AAAgAkFAayIBIAkpAwA3AwAgAkHIAGoiByAKKQMANwMAIAIg +Ai8BNDsBVCACIAIpAxg3AzhFDQEgAkHoAGogASkDADcDACACQfAAaiAHKQMANwMAIAIgBjYCXCAC +IAQ2AlggAiACKQM4NwNgIANBBGohASACQfgAaiACQdgAahCCEQNAIAJBCGogAkH4AGoQny8gAigC +CCIEBEAgAiAEIAIoAgwQm0w2AsgBIAIgASACQcgBaiIEEJxLNgKQAiACQZACahCWQSAEEJZBDAEF +IAJB+ABqEOcpIAMoAgQhASADEKw5QgAMBAsACwALQYzCwABBNkHEwsAAEJ83AAsgAkGMAWogASkD +ADcCACACQZQBaiAHKQMANwIAIAIgAi8BVDsAeSACIAIpAzg3AoQBIAIgBjYCgAEgAiAENgJ8IAIg +CzoAeCACIAwtAAA6AHsgAkH4AGoQzh4hASADEKw5IANBBGoQlkFCAQshDiADQQE6AKABIAIgAa1C +IIYgDoQ3AxAgAiADNgJ4AkACQAJAIAJB+ABqKAIAIgEtAKABDgQBAgIAAgsCQAJAIAFBEGotAABB +A2sOAgABAgsgAUEUahCFKQwBCyABQRRqEMFAIAFBmAFqELFLCyABEKw5IAFBBGoQlkELIANBBDoA +oAEgAiACQRBqEPQxIAIoAgQhASACKAIADAQLQQMMAgtBoMTAAEEjQeCdwQAQ5isAC0EECyIBOgAQ +IANBAzoAoAFBAgshBCANIAE2AgQgDSAENgIAIAJBsAJqJAAgBSgCGCICQQJGDQEgBSgCHCEBIAMQ +zSMCfyACRQRAIAVBgAE2AiggBSABNgIsIAVBCGogAEGkAWogBUEoaiIDIAVBLGoiBBD7JyAFKAII +IAUoAgwQ5EEMAQsgBUGAATYCKCAFIAE2AiwgBUEQaiAAQagBaiAFQShqIgMgBUEsaiIEEPsnIAUo +AhAgBSgCFBDkQQshASAEEJZBIAMQlkEgBSABNgIkIAVBJGoQlkEgAEGkAWoQlkEgAEGoAWoQlkFB +AQwCC0HQl8YAQSNBtMHGABDmKwALQQMLOgDQAiAFQTBqJAAgAkECRguKpAECF38CfiMAQTBrIg8k +ACAAAn8CQAJAAkACQAJAIAAtAPgOQQFrDgMDAAIBCwALIABBuAdqIABBuAcQzU8aCyAPQRhqIRYj +AEEgayITJAACQCAAQbgHaiIYIgQpAwBCF1IEQCATQRBqIRQjAEGwGmsiAiQAIAQCfwJAAn8CQAJA +AkACQAJAAkACQCACAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJ/AkACQCAELQC0B0EBaw4DDQkAAQsgBEHoAWohEQJAIARBqAdqIhUt +AABBAWsOAwwJAwALIARBoAdqKAIAIQsgBEGkB2ooAgAMAQsgBEGoB2oiFUEAOgAAIARBpAdqIAQ2 +AgAgBEGgB2ogBEGwB2oiCzYCACAEQegBaiERIAQLIQwgCygCACEFIARBADoAkQIgBEGMAmogDDYC +ACAEQYgCaiAFQQhqIgY2AgAgBEGRAmohFwwBCyAEQZECaiEXAkAgBC0AkQJBAWsOBAgGAgUACyAE +QYwCaigCACEMIARBiAJqKAIAIQYLIARBkAJqQQA6AABBxJPbACgCAEECSw0BQayG2wAQ+z4iBUH/ +AXFFDQFBrIbbACgCACAFEPUuRQ0BIAJB8AdqIgdBrIbbACgCACIFQRxqQeDHwAAQ1EEgESAFIAcQ +xDIgBEEBOgCQAiAEQfABaigCAEECRg0CIARBADoAkAIgAkHIE2oiCCARQQhqKQMANwMAIAJB0BNq +IgcgEUEQaikDADcDACACQdgTaiIFIBFBGGopAwA3AwAgAiARKQMANwPAEyACQZAIaiACQbAFakHA +AhDNTxogAkGICGogBSkDADcDACACQYAIaiAHKQMANwMAIAJB+AdqIAgpAwA3AwAgAiACKQPAEzcD +8AcgBEGYAmogAkHwB2pB4AIQzU8aIARBiAVqQQA6AAAgBEH8BGogBjYCACAEQfgEaiAMNgIAIARB +iQVqIAJBmANqQZcCEM1PGgsjAEGgCWsiAyQAIARBmAJqIgYoAghBAkcEQCAGQQhqIAYQ+CcLIAJB +wBNqIRIgBkEgaiEOIAMgBjYC1AICQAJAIAYCfwJAAkACQCADAn8CQCADAn8CQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQCAGQfACai0AAEEBaw4IDAACBAUKIQcBCwALIAZB6AJqQgA3 +AwAgBkGAAmoiDUEANgIAIAZBhAJqIAZB4AJqKAIANgIAIANB4AVqIA0QqTwgAygC4AUEQCAGQe0C +aiELIANB4AVqEPtCQQshCgwyCyAGQQE6AO0CIA4gAykC5AU3AgAgDkEIaiADQewFaikCADcCACAD +IA42AtgCIAZB5AJqKAIAIQggA0HgBWogDRC6BSADKALgBUEIRg0vIAZB0AJqIgogAykC4AU3AgAg +BkHYAmogA0HoBWooAgA2AgACQAJAAkACQCAKKAIAQQFrDgcBAgMICgoLAAtBxJPbACgCAEECSw0s +QcSG2wAQ+z4iAUH/AXFFDSxBxIbbACgCACABEPUuRQ0sQcSG2wAoAgAiCkEoaigCACEHIApBJGoo +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 +aikCADcDACADIAMpAtQGNwPIBCAIELIXIAlBAkYNCiADQYQDaiADQegEakHMABDNTxogA0HsA2og +BygCADYCACADQeQDaiAFKQMANwIAIANB3ANqIAEpAwA3AgAgAyAKOgDgAiADIAMpA8gENwLUAyAD +QeACaiIBQQFyIANBuAVqQSMQzU8aIAMgCTYC0AMgBkHtAmpBADoAACADQbgHaiAOQQhqKQIANwMA +IAMgDikCADcDsAcgA0HgBWogA0GwB2ogBkHcAmooAgAgAUEAIANBABCuByADKQPgBVBFDQsgA0Gw +B2oiASADQegFakHIARDNTxogBigC5AJBKGogARCBAwwMCyAGKALkAiEIIANB+AFqIA0QzyAgAygC +/AEhByADKAL4ASEFIANB8AFqIA4Q9DUgA0GwB2ogCCAFIAcgAygC8AEgAygC9AEQywcgAy0A8AdB +AkcEQCADQeAFaiIFIANBsAdqQcgAEM1PGiADQegBaiANEM8gIAUgAygC6AEgAygC7AEQnAMgBRCQ +FAsgBigC5AIhCSADQeABaiANEM8gIAMoAuQBIQggAygC4AEhByADQdgBaiAOEPQ1IAZBMGoiBSAJ +IAcgCCADKALYASADKALcARDQQSAGQQE6AOwCAkAgBSkDACIZQgJWDQACQCAZp0EBaw4CASIACyAG +QYADaiAGQThqQcgBEM1PIQkgA0HQAWogDRDPICADQbAHaiAJIAMoAtABIAMoAtQBIAoQ5AMgBkEB +OgDrAiAJEMYrDRoMHQsgBkGAA2ogBkE4akG4ARDNTyEFQagMQQgQqzkiB0EAOgAlIAcgBkHUAmo2 +AiAgByAFNgIcIAZB+AJqIAc2AgALIANB4AVqIAZB+AJqIgcgARC6AiADKAKQByIIQQNGDQwgAy0A +4AUhCiADQeACaiADQeAFakEBciIFQSMQzU8aIANBsAdqIANBhAZqIgFBjAEQzU8aIANBwAVqIANB +nAdqKAIANgIAIAMgAykClAc3A7gFIAcQ7RsgCEECRg0NIAEgA0GwB2pBjAEQzU8aIAUgA0HgAmpB +IxDNTxogAyAKOgDgBSADKALgBUGggICAeEcEQCAGQeQCaigCACADQegEaiIBIANB4AVqEIUNQShq +IAEQ7gYLIAgEQCADQagEaiADQcAFaigCADYCACADIAMpA7gFNwOgBCAGQeQCaigCACADQegEaiIB +IANBoARqEJYjQShqIAEQ7gYLIAZBgANqEJ0bDB8LIAYoAuQCIQcgA0GgAmogDRDPICADKAKkAiEF +IAMoAqACIQEgA0GYAmogDhD0NSADQeAFaiAHIAEgBSADKAKYAiADKAKcAhDRQSADKAKAB0ECRg0P +IANBsAdqIgUgA0HgBWoiAUHIARDNTxogAyAFEPBNNgLgAiADIA42AuAFIANB4AJqIAEQnkUNECAD +QZACaiANEM8gIANB4AVqIANBsAdqIAMoApACIAMoApQCIAoQ5AMgAygC4AVBoICAgHhHBEAgA0Hg +AmoiCCADQeAFakGoARDNTxogA0H4BGogA0GYB2opAwA3AwAgA0HwBGogA0GQB2opAwA3AwAgAyAD +KQOIBzcD6AQgBigC5AIgA0GIAmogA0GwB2oiCRDYQSADKAKMAiEFIAMoAogCIANBgAJqIAkQ2UEg +BSADKAKAAiADKAKEAiAIIANB6ARqEOxAIAkQtyMMJAsgA0HgBWoQkT4MFgsgBigC5AIhCCADQcgC +aiANEM8gIAMoAswCIQcgAygCyAIhBSADQcACaiAOEPQ1IANB4AVqIAggBSAHIAMoAsACIAMoAsQC +ENFBAkAgAygCgAdBAkcEQCADIAZBgANqIANB4AVqIgVByAEQzU8iCRDwTTYCsAcgAyAONgLgBSAD +QbAHaiAFEJ5FDQMgA0G4AmogDRDPICADQbAHaiAJIAMoArgCIAMoArwCIAoQ5AMgBkGBAjsB7gIg +BkEBOgDqAiAJEMYrDQFBoICAgHghEEELIQogAygCsAdBoICAgHhGDRQgBkEAOgDvAiADQeAFaiII +IANBsAdqQagBEM1PGiAGQQA6AO4CIANB6AJqIANB4AhqKQMANwMAIANB8AJqIANB6AhqKQMANwMA +IAMgAykD2Ag3A+ACIAYoAuQCIANBsAJqIAkQ2EEgAygCtAIhBSADKAKwAiADQagCaiAJENlBIAUg +AygCqAIgAygCrAIgCCADQeACahDsQAwWCyADQeAFahD0QgwoCyAGKALkAiEHIAZBADsB7gIgBkEA +OgDqAiADKAKwByIQQaCAgIB4RwRAIAMgEDYC4AUgA0HgBWpBBHIgA0GwB2pBBHIiBUGkARDNTxog +A0GYB2ogA0HoCGopAwA3AwAgA0GQB2ogA0HgCGopAwA3AwAgAyADKQPYCDcDiAcgA0HgAmogBUGk +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 +7AUgAyAFNgLoBSADIAk2AuQFIAMgCjYC8AUgCkEBaiEKIAELNgLgBSADQaAEaiADQeAFakHA1MIA +EN0sIANBIGogBkHUAmoQizQgAyADKQMgNwK4BSADIAkgCksEfyADIAo2AvACIAMgBzYC7AIgAyAF +NgLoAiADIAk2AuQCIAEFQQALNgLgAiADQegEaiIBIANB4AJqIgVBwNTCABDdLCADQYAGakGg1cIA +NgIAIANB9AVqQbDUwgA2AgAgA0H8BWogA0HcAmo2AgAgA0HwBWogA0G4BWo2AgAgA0GUycIANgLo +BSADIAE2AvgFIAMgA0GgBGo2AuwFIAMgA0GwB2o2AuQFIAMgA0H4CGo2AuAFIAMgA0HIBGo2AtwC +IAUgCEEcaiADQeAFahDhQUHchtsAKAIAIAUQxDQMBgsgBigC5AIoAigiCSAJKAIAIgFBAWo2AgAg +AUEASA0JIANBsAdqIgggBigC5AIQixQgA0EIaiANEM8gIAMoAgwhByADKAIIIQUgBkEAOgDtAiAD +QegCaiAOQQhqKQIANwMAIAMgDikCADcD4AIgA0HgBWoiASAJIAggBSAHIANB4AJqIAoQrAcgBigC +5AIgARDeAgtBCyEKIAZB7QJqIgstAABFDQYgDhD8PAwGCyADQQA2AvAFIAMgBzYC7AUgAyAFNgLo +BSADIAg2AuQFQQEhCyABCzYC4AUgA0HoBGogA0HgBWpBsNXCABDdLCADQewFakIANwIAIANBATYC +5AUgA0GA1sIANgLgBSADQaTJwgA2AugFIAMgCCALSwR/IAMgCzYCwAcgAyAHNgK8ByADIAU2ArgH +IAMgCDYCtAcgAQVBAAs2ArAHIANB4AJqIgEgA0GwB2oiBUGw1cIAEN0sIAMgChCLNCADQcQHakGw +1MIANgIAIANBwAdqIANB+AhqNgIAIANBlMnCADYCuAcgAyADKQMANwL4CCADIAE2ArwHIAMgA0Hg +BWo2ArQHIAMgA0HoBGo2ArAHIANBoARqIgEgCUEcaiAFEPJBQeiG2wAoAgAgARDENAwCCyADQQA2 +AvAFIAMgBzYC7AUgAyAFNgLoBSADIAg2AuQFQQEhECABCzYC4AUgA0HoBGogA0HgBWpBiNbCABDd +LCADQewFakIANwIAIANBATYC5AUgA0HY1sIANgLgBSADQaTJwgA2AugFIAMgCCAQSwR/IAMgEDYC +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 +ajYCACAEKALcBCEIIAJB0AFqIAYQzyAgAigC1AEhByACKALQASEFIAJByAFqIAsQ9DUgBEGABGoi +AyAIIAUgByACKALIASACKALMARDLByAEQQE6AOEEIARBwARqLQAAQQJHBEAgBEEAOgDhBCAEQfgE +aiADQcgAEM1PIgcQrE0gCxDzJg0DIAJBlAtqEKEIDCkLIARBoAJqKAIADSkgBCgC3AQhCSACQbgB +aiAGEM8gIAIoArgBIQggAigCvAEhByACQbABaiAEKALUBBDfSiACKAKwASEFIAIoArQBIQMgBEGQ +BWpBADoAACAEQYAFaiADNgIAIARB/ARqIAU2AgAgBEH4BGogBzYCACAEQfQEaiAINgIAIARB8ARq +IAk2AgALIAJB8AdqIARB8ARqIgcgARCbBCACKALwByIFQQJGDQwgAkGUDmogAkHwB2pBBHJBJBDN +TxogBxDmPyAFDRAgB0EQaiACQagOaikCACIaNwIAIARBADYCiAUgByACKQKYDiIZNwIAIARBkAVq +IBk3AgAgBEHgBGpBAToAACAEQaAFaiAaNwIAIARBmAVqIAJBoA5qKQIAIhk3AgAgB0EIaiAZNwIA +IARBhAVqKAIARQ0PIARBADoA4AQgAkGYCGogAkGYDmoiBUEQaikCADcDACACQZAIaiAFQQhqKQIA +NwMAIAIgBSkCADcDiAggBEHcBGooAgAhByACQcATaiIFIAJB8AdqQdQAEM1PGiAEQbAFaiAFQdQA +EM1PGiAEQQA6AIkGIARBhAZqIAc2AgALIAJB8AdqIARBsAVqIgggARC0AiACKALgCCIQQQNGDRAg +AkG+D2oiEiACLQDzBzoAACACQagPaiIGIAJBgAhqKQMANwMAIAJBsA9qIgogAkGICGopAwA3AwAg +AkG4D2oiCSACQZAIaigCADYCACACIAIvAPEHOwG8DyACIAIpA/gHNwOgDyACLQDwByEMIAIoAvQH +IQMgAkHUDmogAkGUCGpBzAAQzU8aIAJB0A5qIgcgAkH8CGooAgA2AgAgAkHIDmoiBSACQfQIaikC +ADcDACACQcAOaiIBIAJB7AhqKQIANwMAIAIgAikC5Ag3A7gOIAgQshcgEEECRg0RIAJB5A9qIAJB +1A5qQcwAEM1PGiACQcwQaiAHKAIANgIAIAJBxBBqIAUpAwA3AgAgAkG8EGogASkDADcCACACQdAP +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 +FiACKAL0ByEDIAkQ1TAgDEELRg0KIAJBrhpqIAgtAAA6AAAgAkGYGmogBykDADcDACACQaAaaiAF +KQMANwMAIAJBqBpqIAEoAgA2AgAgAiACLwHkFjsBrBogAiACKQPIFjcDkBoMFgsgAkGUC2oQoQhB +CyEMDBYLQQQMDwsgAkGYEmoiCiACQfgHakGoARDNTxogBCgC3AQgAkGoAWogBEH4A2oQzyAgAigC +rAEhCCACKAKoASACQaABaiAEKALUBBDfSiACKAKkASEFIAIoAqABIQEgAkEANgLAEyAIIAEgBSAK +IAJBwBNqEOxACyAEQYQFaigCAEUNACAEQeAEai0AAEUNACAEQfAEahD7HwsgBEHgBGpBADoAAAwY +CyAEQYwFaiACQZQOakEkEM1PIARBATYCiAUgAkGuGmogBEGPBWotAAA6AAAgAkGYGmogBEGcBWop +AAA3AwAgAkGgGmogBEGkBWopAAA3AwAgAkGoGmogBEGsBWooAAA2AgAgAiAELwCNBTsBrBogAiAE +KQCUBTcDkBotAAAhDCAEKAKQBSEDDA8LQQUMCgsgAkGuGmogEi0AADoAACACQZgaaiAGKQMANwMA +IAJBoBpqIAopAwA3AwAgAkGoGmogCSgCADYCACACIAIvAbwPOwGsGiACIAIpA6APNwOQGgwNC0EG +DAgLIARBADoA5wQgAkHoFmoiCCACQcATakGoARDNTxogBEEAOgDmBCACQZgYaiACQfAUaikDADcD +ACACQaAYaiACQfgUaikDADcDACACIAIpA+gUNwOQGCAEKALcBCACQbgCaiAJENhBIAIoArwCIQUg +AigCuAIgAkGwAmogCRDZQSAFIAIoArACIAIoArQCIAggAkGQGGoQ7EALIARBADsB5gQgBEEAOgDi +BCAEQfgEahC3IwwUC0EHDAULIAJBwBNqEI8+DAwLIARBADoA4wQgAkGuGmogCC0AADoAACACQZga +aiAHKQMANwMAIAJBoBpqIAUpAwA3AwAgAkGoGmogASgCADYCACACIAIvAcQYOwGsGiACIAIpA6gY +NwOQGiAEQfgEahC3IwwGC0EIDAILIAJBrhpqIBAtAAA6AAAgAkGYGmogEikDADcDACACQaAaaiAG +KQMANwMAIAJBqBpqIAooAgA2AgAgAiACLwH8GTsBrBogAiACKQPgGTcDkBogBEH4BGoQnRsMBAtB +AwshASANIAE6AAAMFgsgAkHwB2oQ9EIMEAsgAkGUC2oQoQgMBAsgBEHkBGpBADoAAAwRCyAEQeAE +akEAOgAADAULAkAgBkGggICAeEYNACAELQDiBEUNACAELQDnBARAIAJBwBNqEMMECyAELQDmBEUN +ACACQegUahD8PgsgBEEAOwHmBCAEQQA6AOIECyAEQfgEahC3IwwOCyACQcATahC3IwwKCyAEQQA6 +AOMEIARB+ARqELcjCyAEQeQEakEAOgAADAQLAkAgBEHABGotAABBAkYNACAELQDhBEUNACAEQYAE +ahDfFwsgBEEAOgDhBAwKCyAEQfgEahDfFwsCQCAEQcAEai0AAEECRg0AIAQtAOEERQ0AIARBgARq +EN8XCyAEQQA6AOEEDAELIAJBOGogBhDLJiACKQM4p0EBRwRAQQshDEHEk9sAKAIAQQNLDQhB0Ibb +ABD7PiIBQf8BcQ0EDAgLIAIgAikDQCIZNwOYCwJAIBkQmCMEQCACQSBqIARBzARqIgoQizQgAiAC +KQMgNwLAEyACQRhqIAYQzyAgAiACKQMYNwLwByACQfAHaiAHEI02RQ0BIAJBwBNqIAdBCGoQjTZF +BEAgBigCAA0CC0HEk9sAKAIADQZB6IbbABD7PiIBQf8BcUUNBkEAIQZB6IbbACgCACABEPUuRQ0G +QeiG2wAoAgAiCEEoaigCACEFIAhBJGooAgAhAyAIKAIcIQEgCEEgaigCACIHDQNBAAwEC0HEk9sA +KAIADQVB3IbbABD7PiIBQf8BcUUNBUEAIQxB3IbbACgCACABEPUuRQ0FQdyG2wAoAgAiB0EoaigC +ACEFIAdBJGooAgAhASAHKAIcIQMgAiAHQSBqKAIAIggEfyACQQA2AoAIIAIgBTYC/AcgAiABNgL4 +ByACIAg2AvQHQQEhDCADBUEACzYC8AcgAkGgC2ogAkHwB2pBkNvAABDYLCACQcwTakIANwIAIAJB +ATYCxBMgAkHo28AANgLAEyACQeDHwAA2AsgTIAIgCCAMTQR/QQAFIAIgBTYC/AcgAiABNgL4ByAC +IAg2AvQHIAIgDDYCgAggDEEBaiEMIAMLNgLwByACQbQLaiACQfAHakGQ28AAENgsIAJBKGogBEHM +BGoQizQgAiACKQMoNwLICyACIAggDEsEfyACIAw2AsAMIAIgBTYCvAwgAiABNgK4DCACIAg2ArQM +IAMFQQALNgKwDCACQdQLaiIBIAJBsAxqIgVBkNvAABDYLCACQZAIakHw28AANgIAIAJBhAhqQYDb +wAA2AgAgAkGMCGogAkHQC2o2AgAgAkGACGogAkHIC2o2AgAgAkHAx8AANgL4ByACIAE2AogIIAIg +AkG0C2o2AvwHIAIgAkHAE2o2AvQHIAIgAkGgC2o2AvAHIAIgAkGYC2o2AtALIAUgB0EcaiACQfAH +ahDhQUHchtsAKAIAIAUQxDQMBQsgBCgC3AQoAigiCSAJKAIAIgFBAWo2AgAgAUEASA0GIAJB8Adq +IgggBCgC3AQQixQgAkEQaiAGEM8gIAIoAhQhByACKAIQIQUgBEEAOgDlBCACQcgTaiALQQhqKQIA +NwMAIAIgCykCADcDwBMgAkHoC2oiASAJIAggBSAHIAJBwBNqIAoQrAcgBCgC3AQgARDeAgsgBEHl +BGohBkELIQwgBC0A5QQNBAwHCyACQQA2AoAIIAIgBTYC/AcgAiADNgL4ByACIAc2AvQHQQEhBiAB +CzYC8AcgAkHUC2ogAkHwB2pBgNzAABDYLCACQfwHakIANwIAIAJBATYC9AcgAkHQ3MAANgLwByAC +QeDHwAA2AvgHIAIgBiAHSQR/IAIgBjYC0BMgAiAFNgLMEyACIAM2AsgTIAIgBzYCxBMgAQVBAAs2 +AsATIAJBsAxqIgEgAkHAE2oiBUGA3MAAENgsIAJBCGogChCLNCACQdQTakGA28AANgIAIAJB0BNq +IAJBoAtqNgIAIAJBwMfAADYCyBMgAiACKQMINwKgCyACIAE2AswTIAIgAkHwB2o2AsQTIAIgAkHU +C2o2AsATIAJBtAtqIgEgCEEcaiAFEPJBQeiG2wAoAgAgARDENAwBC0EAIQpB0IbbACgCACABEPUu +RQ0DQdCG2wAoAgAiCEEoaigCACEFIAhBJGooAgAhAyAIKAIcIQEgAiAIQSBqKAIAIgcEfyACQQA2 +AoAIIAIgBTYC/AcgAiADNgL4ByACIAc2AvQHQQEhCiABBUEACzYC8AcgAkHUC2ogAkHwB2pB2NzA +ABDYLCACQfwHakIANwIAIAJBATYC9AcgAkGo3cAANgLwByACQeDHwAA2AvgHIAIgByAKSwR/IAIg +CjYC0BMgAiAFNgLMEyACIAM2AsgTIAIgBzYCxBMgAQVBAAs2AsATIAJBsAxqIgEgAkHAE2oiBUHY +3MAAENgsIAJBMGogBEHMBGoQizQgAkHUE2pBgNvAADYCACACQdATaiACQaALajYCACACQcDHwAA2 +AsgTIAIgAikDMDcCoAsgAiABNgLMEyACIAJB8AdqNgLEEyACIAJB1AtqNgLAEyACQbQLaiIBIAhB +HGogBRDyQUHQhtsAKAIAIAEQxDQMAwtBCyEMDAILIAsQ/DwMAgsACyALEPw8IARB5QRqIQYLIAZB +ADoAACACQe4KaiIIIAJBrhpqLQAAOgAAIAJB2ApqIgcgAkGYGmopAwA3AwAgAkHgCmoiBSACQaAa +aikDADcDACACQegKaiIBIAJBqBpqKAIANgIAIAIgAi8BrBo7AewKIAIgAikDkBo3A9AKIA1BAToA +ACAMQf8BcUEMRg0AIAJBkgtqIAgtAAA6AAAgAkH4CmogBykDADcDACACQYALaiAFKQMANwMAIAJB +iAtqIAEoAgA2AgAgAiACLwHsCjsBkAsgAiACKQPQCjcD8AogCxDCDwwCC0EECyEBIBcgAToAACAV +QQM6AAAgFEECNgIAQQMMAQsgBEGQAmotAAAEQCARENkiCyAEQYACOwGQAiACQZYDaiACQZILai0A +ACIBOgAAIAJBgANqIgogAkH4CmopAwA3AwAgAkGIA2oiCSACQYALaikDADcDACACQZADaiIFIAJB +iAtqKAIANgIAIAJB9gJqIgggAToAACACIAIvAZALIgE7AZQDIAIgAikD8Ao3A/gCIAIgATsB9AIg +AkHwAmoiByAFKAIANgIAIAJB6AJqIgUgCSkDADcDACACQeACaiIBIAopAwA3AwAgAiACKQP4AjcD +2AICQAJAAkACQCARLQApQQNrDgIAAQMLIBFBMGoQxksMAQsgEUEwahDCDwsgES0AKARAIBEQ2SIL +IBFBADoAKAtBASERIBVBAToAACACQZoDaiAILQAAOgAAIAJBuAVqIAEpAwA3AwAgAkHABWogBSkD +ADcDACACQcgFaiAHKAIANgIAIAIgAi8B9AI7AZgDIAIgAikD2AI3A7AFAn8gDEH/AXFBC0YEQEEA +IRFBgAEMAQsgAkGACGogAkG4BWopAwA3AgAgAkGICGogAkHABWopAwA3AgAgAkGQCGogAkHIBWoo +AgA2AgAgAiACLwGYAzsA8QcgAiACKQOwBTcC+AcgAiADNgL0ByACIAw6APAHIAIgAkGaA2otAAA6 +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 +AiN/Bn4jAEEwayIZJAAgAAJ/AkACQAJAAkACQCAALQD4A0EBaw4DAwACAQsACyAAQfgBaiAAQfgB +EM1PGgsgGUEYaiEiIAEhFiMAQfAGayICJAACfwJAAkACQCAAQfgBaiIkIgUCfwJAAkACQAJAAkAC +QAJ/AkACQAJAAkAgBS0A9AEiAUEERwRAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAB +QQFrDgMiHgABCyAFQRxqISMCQCAFLQAcQQFrDgckHgMEBQkdAAsgBSgCACEDDAELIAVBADoAHCAF +IAVB8AFqIgM2AgAgBUEcaiEjCyAFQoCAgIDAADcDCCAFIAM2AgQgBUEQakEANgIAIAMoAgAhASAF +QdQAakEAOgAAIAUgAUGMAWo2AiALIAJB+ARqIAVBIGoiCCAWEKkGIAItAPgEIgZBDEYNHyACQdYB +aiIKIAItAPsEOgAAIAJByAFqIgQgAkGQBWopAgA3AwAgAkHQAWoiASACQZgFaigCADYCACACIAIv +APkEOwHUASACIAIpAogFNwPAASACKAL8BCEHIAIoAoAFIQMgAigChAUhCSAIENc/IAZBC0cNAiAF +IAc2AhQgBUHwAGpBADoAACAFIAVBFGo2AiAgBUEYaiADNgIACyACQfgEaiAFQSBqIgggFhDSFCAC +LQD4BCIGQQxGDQIgAkHuAWoiCiACLQD7BDoAACACQeABaiIEIAJBkAVqKQIANwMAIAJB6AFqIgEg +AkGYBWooAgA2AgAgAiACLwD5BDsB7AEgAiACKQKIBTcD2AEgAigC/AQhByACKAKABSEDIAIoAoQF +IQkgCBDYPyAGQQtHDQMgBSAHNgIsIAVBMGogAzYCACAFQShqQQA6AAAgBUEkaiADNgIAIAUgBSgC +BDYCIAsgAkH4BGogBUEgaiIXELIFIAIoAvgEIgFBAkYNHyACQYgCaiIKIAJBlAVqIgcpAgA3AwAg +AkGAAmoiCSACQYwFaiIEKQIANwMAIAJB+AFqIgYgAkGEBWoiAykCADcDACACIAIpAvwENwPwAQJA +IAFFDQAgAkHgAGoQ6SQgAigCYCEIIAIoAmQhASAHIAopAwA3AgAgBCAJKQMANwIAIAMgBikDADcC +ACACIAIpA/ABNwL8BCACQZ+AgIB4NgL4BCACIAJB+ARqEMU7NgK4BiACIAE2ArQGIAIgCDYCsAYg +CEUNACAFQQhqIAJBsAZqEPsjCyAFQSxqEJpMIAVBFGoQsUsgBSgCBCgCACEBIAVB2gBqIhxBADoA +ACAFQdQAaiABQfgAaiIDNgIADAQLIAJB7gJqIAotAAA6AAAgAkHgAmogBCkDADcDACACQegCaiAB +KAIANgIAIAIgAi8B1AE7AewCIAIgAikDwAE3A9gCDDMLQQQMMAsgAkHuAmogCi0AADoAACACQeAC +aiAEKQMANwMAIAJB6AJqIAEoAgA2AgAgAiACLwHsATsB7AIgAiACKQPYATcD2AIgBUEUahCxSwwx +CyAFQSBqIRcCQCAFQdoAaiIcLQAAQQFrDgkdFQIDBAUIEScACyAFQdQAaigCACEDCyAFQdgAakEA +OwEAIAVBoAFqQQA2AgAgBUHQAGogAzYCACADKAIMIQEgBUGYAWpBADoAACAFQeAAaiABQQhqNgIA +CyAFQeAAaiIBIBYQuAciA0UNECACIAM2AvgEIAEQ2T8gA0EYaiIBEJFFIAEgBUGgAWpBKBDNTxog +AkH4BGoQmkwgBUGUAWpBADoAACAFIAVB0ABqKAIAQQRqNgJgCyACQfgEaiAFQeAAaiIIIBYQqQYg +Ai0A+AQiBkEMRg0aIAJBpgNqIgogAi0A+wQ6AAAgAkGYA2oiBCACQZAFaikCADcDACACQaADaiIB +IAJBmAVqKAIANgIAIAIgAi8A+QQ7AaQDIAIgAikCiAU3A5ADIAIoAvwEIQcgAigCgAUhAyACKAKE +BSEJIAgQ1z8gBkELRw0OIAVBxABqIAM2AgAgBUFAayIBIAc2AgAgBUHQAGooAgAoAgghAyABKAIE +IQEgBUHgAWpBADoAACAFQeQAaiABNgIAIAUgA0EIajYCYAsgAkH4BGogBUHgAGoiCCAWEPQGIAIt +APgEIgZBDEYNGiACQfIEaiIKIAItAPsEOgAAIAJBsANqIgQgAkGQBWopAgA3AwAgAkG4A2oiASAC +QZgFaigCADYCACACIAIvAPkEOwHwBCACIAIpAogFNwOoAyACKAL8BCEHIAIoAoAFIQMgAigChAUh +CSAIENo/IAZBC0cNASAFQaABakEAOgAAIAUgBUHIAGoiATYCYCAFQcwAaiADNgIAIAEgBzYCAAsg +AkH4BGogBUHgAGoiCCAWEKMVIAIoAvgERQ0BIAJB2ANqIgYgAkGQBWopAwA3AwAgAkHQA2oiAyAC +QYgFaikDADcDACACQcgDaiIBIAJBgAVqKQMANwMAIAIgAikD+AQ3A8ADIAIpA5gFISkgCBDbPyAF +QdgAakEBOgAAIBdBGGoiEyAGKQMANwMAIBdBEGoiCiADKQMANwMAIBdBCGoiByABKQMANwMAIBcg +AikDwAM3AwAgBUEsaigCAEUEQCACQfgEaiIQIAVByABqIgMQrgogAkHYAGogBUHQAGooAgAQuUYg +AigCWCEGIAIoAlwhASMAQSBrIgskACAQKAIMBH8gEEEQaiAGIAEQzxohJSALIAE2AgwgCyAGNgII +IAsgEDYCFCAlQhmIQv8Ag0KBgoSIkKDAgAF+ISYgECgCBCIMICWncSEJIAsgC0EIajYCECAQKAIA +IQZBACEEA0AgCyAGIAlqKQAAIicgJoUiJUJ/hSAlQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DNwMY +A0ACQCALIAtBGGoQiSwgCygCACIBRQRAICcgJ0IBhoNCgIGChIiQoMCAf4NQRQ0BIAkgBEEIaiIE +aiAMcSEJDAMLIAtBEGogCygCBCAJaiAMcRDlOUUNAQsLCyABQQBHBUEACyALQSBqJAAgEBCrFkUN +BAsgAkGIA2ogEykDADcDACACQYADaiAKKQMANwMAIAJB+AJqIAcpAwA3AwAgAiAXKQMANwPwAgwg +CyACQa4GaiAKLQAAOgAAIAJB2ARqIAQpAwA3AwAgAkHgBGogASgCADYCACACIAIvAfAEOwGsBiAC +IAIpA6gDNwPQBAweC0EGDCALIAVB4ABqIQgCQCAFQfgAaiIHLQAAQQFrDgQYDQMEAAsgBUHoAGoo +AgAhBiAFQeQAaigCACEJIAUoAmAhAwwBCyACQdAAaiAFKAJQELlGIAIoAlAhCSACKAJUIQYgBUH4 +AGoiB0EAOgAAIAVB6ABqIAY2AgAgBUHkAGogCTYCACAFIAM2AmALIAVB9ABqIAY2AgAgBUHwAGog +CTYCACAFQewAaiADNgIAIAMoAgQhASAFQbQBakEAOgAAIAVB/ABqIAE2AgALIAVB/ABqIgYgFhC4 +ByIBRQ0CIAIgATYC+AQgBhDZPyABQRhqIAVB8ABqKAIAIAVB9ABqKAIAEJ0FIAJB+ARqIgEQmkwg +ASAFQewAaigCACgCAEHYAGoQjEogAigC+AQNFSACIAIoAvwEIgE2AugEIAIgAkGABWotAAA6AOwE +IAJByABqIAUoAnAgBSgCdBDCMCABQQhqIAIoAkggAigCTBDdSRogAkHoBGoQ8h4gAkFAayAFKAJs +KAIAKAKIAUEIahDlNSACKAJAIQMgAigCRCEBIAVBhAFqQQE6AAAgBUGAAWogBSgCdDYCACAFIAUo +AnA2AnwgAkE4aiADIAZBASABKAJUEQUAIAIoAjghAyAFQYwBaiACKAI8IgY2AgAgBUGIAWogAzYC +AAwBCyAFQYwBaigCACEGIAVBiAFqKAIAIQMLIAJB+ARqIAMgFiAGKAIMEQMAIAItAPgEIgZBDEcN +AkEEDAELQQMLIQEgByABOgAAQQcMGAsgAkH2BGoiBCACLQD7BDoAACACQbgGaiIBIAJBkAVqKQIA +NwMAIAJBwAZqIhMgAkGYBWooAgA2AgAgAiACLwD5BDsB9AQgAiACKQKIBTcDsAYgAigC/AQhByAC +KAKABSEDIAIoAoQFIQkgBUGIAWoQmTYgBUEBOgB4IAJBqgZqIgogBC0AADoAACACQegDaiIEIAEp +AwA3AwAgAkHwA2oiASATKAIANgIAIAIgAi8B9AQ7AagGIAIgAikDsAY3A+ADIAgQqTggBkELRwRA +IAJBrgZqIAotAAA6AAAgAkHYBGogBCkDADcDACACQeAEaiABKAIANgIAIAIgAi8BqAY7AawGIAIg +AikD4AM3A9AEIBcQqxYgBUHYAGpBADoAAAwVCyAFIAVByABqNgJgIAVB5ABqIAJB+ARqQTwQzU8a +IAVBoAFqQQA6AAALIAJBsAZqIAVB4ABqIgEgFhCjFSACKAKwBg0SQQgMFgsgAkGuBmogCi0AADoA +ACACQdgEaiAEKQMANwMAIAJB4ARqIAEoAgA2AgAgAiACLwGkAzsBrAYgAiACKQOQAzcD0AQMGAtB +AwwUCyAFQSRqIQYCQAJAIAVBQGsiFy0AAEEBaw4DBQIBAAsgBigCACEDDBgLIAVBLGohCCAFQTxq +IhwtAABBAWsOAw0AAgELAAsgCCgCACEDDBYLIAVBOGooAgAhByAFQTRqKAIAIQMMFgtBoMTAAEEj +QdymwQAQ5isAC0GgxMAAQSNBkLjBABDmKwALQQMMFAtBoMTAAEEjQbCewQAQ5isAC0EFDBILQaDE +wABBI0GsysAAEOYrAAtBBAwJC0EFDAgLQaDEwABBI0GYicEAEOYrAAsgAiACKAL8BDYC6AQgAiAC +QYAFai0AADoA7ARBuKnBAEErIAJB6ARqQcSqwQBBqInBABCJGAALQaDEwABBI0HMpsEAEOYrAAtB +jMLAAEE2QcTCwAAQnzcACyACQYgDaiACQcgGaikDADcDACACQYADaiACQcAGaikDADcDACACQfgC +aiACQbgGaikDADcDACACIAIpA7AGNwPwAiACKQPQBiEpIAEQ2z8gBUHYAGotAABFDQEgFxCrFgwB +CyAFQUBrELFLDAULQQAhCSAFQdgAakEAOgAAIAVBQGsQsUsgBUHZAGoiBkEBOgAAIAVB0AFqIgMg +AikD8AI3AwAgBUHYAWogAkH4AmopAwA3AwAgBUHgAWogAkGAA2opAwA3AwAgBUHoAWogAkGIA2op +AwA3AwAgBUHcAWooAgBFBEBBACEHDAMLIAVBADoAWSACQfgDaiIBIAMQghEgAiAFQdAAaiIgKAIA +NgKoBCACQbQGaiABQTgQzU8aIAJBhAVqIAJBsAZqIhNBPBDNTxogAkHgBWpCADcDACACQegFakKA +gICAcDcDACACQgA3A9gFIAJCgICAgKAfNwPQBSACQoCAgIDAADcDyAUgAkEANgLABSACQQA2AoAF +IAJBADYC+AQgAkEANgL4BSACQQA6APAFIAVB4ABqISEjAEHgAGsiGCQAIBhBCGohBiMAQdAAayIE +JAAgBCACQfgEaiIdNgIUIARBKGogBEEUahD+BAJAIAQoAjhBgZTr3ANGBEAgBkEANgIIIAZCgICA +gIABNwIADAELIARBCGpBBBC2FiAEKAIIIQMgBCgCDCAEQShqQSgQzk8hASAEQQE2AiAgBCABNgIc +IAQgAzYCGCAEIAQoAhQ2AiQDQAJAIARBKGogBEEkahD+BCAEKAI4QYGU69wDRg0AIAQoAiAiASAE +KAIYRgRAIARBGGogAUEBEIkPCyAEKAIcIAFBKGxqIARBKGpBKBDNTxogBCABQQFqNgIgDAELCyAG +IAQpAhg3AgAgBkEIaiAEQSBqKAIANgIACyAEQdAAaiQAAn8gGCgCECIaRQRAIBhBCGoiASgCCCED +IAEoAgQhBgNAIAMEQCADQQFrIQMgBhDSRyAGQShqIQYMAQsLIAEQoD1BACEDQQAMAQsgGCgCDCEO +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 +DQUgAkEYahDyHiACQRBqENs5CyABQQBHEMERIQEgAkEIahCqPgwBCyACKAIYIAJBHGotAAAQrg4h +AQtBAQwBCyACQRxqLQAAIQEgAigCGCIDQQU2AgggAyABEKM2EKI5IAJBEGoQ2zkgAkEIahCqPkEA +IQFBAAshAyAEIAQoAgBBAWs2AgAgACADNgIEIAAgATYCACACQSBqJAAPC0GygcQAQQ1BiKXEABCf +NwAL7TUCDH8CfiMAQSBrIgkkAAJAAkACQAJAIAAtALgKQQFrDgMDAAIBCwALIAAgAEGYBWpBmAUQ +zU8aCyAJQRRqIQ0jAEGgNWsiAiQAAkACQAJAAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAIAAtAIgFQQJHBEACQAJ/An8CQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAAtAJAFQQFrDgMoFQAB +CyAAQbkCaiEMAkAgAC0AuQJBAWsOBCIVAxEACyAAKAK0AiEDDAELIABBADoAuQIgACAAQcgEaiID +NgK0AiAAQbkCaiEMCyAAIAM2ArACIABBADoAuAIgACADQQhqEMIaIAJB6ABqIAAQtRQgAigCaCED +IAIoAmwhBCAAQQE6ALgCIABBrAJqIAQ2AgAgACADNgKoAkEDIAApAwBCAn0iDqcgDkIHWhtBAmsO +AgEPHgsgAEHAAmohBwJAIABBxARqIggtAABBAWsOAw0SAwALIABBvARqKAIAIQQgAEG4BGooAgAh +BiAAQcUEai0AACEFIABBwARqKAIAIQMMAQsgACgCsAIiAy0AQCEFIAJBMGogA0EIahDSJyACQShq +IAIoAjAgAigCNBCtLCACKAIoIQYgAigCLCEEIABBxQRqIAU6AAAgAEHEBGoiCEEAOgAAIABBwARq +IABBCGoiAzYCACAAQbwEaiAENgIAIABBuARqIAY2AgAgAEHAAmohBwsgACAFOgDiAiAAQQA6AOEC +IABB3AJqIAM2AgAgAEHYAmogAzYCACAAQcwCaiAENgIAIABByAJqIAY2AgAgAEHhAmohCyADDAEL +IABB4QJqIQsCQCAALQDhAkEBaw4EJA8CAwALIABBzAJqKAIAIQQgAEHIAmooAgAhBiAAQdwCaigC +ACEDIAAtAOICIQUgAEHYAmooAgALIQogACAGNgLAAiAAQeACaiAFOgAAIABB1AJqIAM2AgAgAEHQ +AmogCjYCACAAQcQCaiAENgIAQgIhDkHE58AAIAMoAgQgAygCCBC9GkUNKSAAKALQAiIDKQNIIQ4g +ACgC1AIpAhghDyAAQYQDakEAOgAAIABB8AJqIA83AwAgAEHoAmogDjcDACAAQeQCaiADQSBqNgIA +CyACQbAtaiAAQeQCaiIDIAEQmwQgAigCsC0iBEECRg0aIAJBlCZqIAJBsC1qQQRyQSQQzU8aIAMQ +5j8gBA0BIAJB+CtqIAJBqCZqKQIANwMAIAJB8CtqIAJBoCZqKQIANwMAIAIgAikCmCY3A+grIAIo +AvwrRQ0CIAJB2C1qIAJBmCZqIgNBEGopAgA3AwAgAkHQLWogA0EIaikCADcDACACIAMpAgA3A8gt +IABB0AJqKAIAIQMgAkHoK2oiBCACQbAtakHUABDNTxogAEHoAmogBEHUABDNTxogAEEAOgDBAyAA +QbwDaiADQSBqNgIACyACQbAtaiAAQegCaiIEIAEQtAIgAigCoC4iA0EDRg0CIAJB2CZqIAJBsC1q +QfAAEM1PGiACQdAmaiIBIAJBvC5qKAIANgIAIAJByCZqIgYgAkG0LmopAgA3AwAgAkHAJmoiBSAC +QawuaikCADcDACACIAIpAqQuNwO4JiAEELIXIANBAkYNAyACQdQoaiABKAIANgIAIAJBzChqIAYp +AwA3AgAgAkHEKGogBSkDADcCACACIAIpA7gmNwK8KCACQcgnaiACQdgmakHwABDNTxogAiADNgK4 +KCAAQdACaigCACgCVCIDQQhqIQEgA0EQaiIDKAIADQQgAkEQaiABEJ0xIABBxAJqKAIAIQEgAEHg +AmotAAAhBCAAKALAAiEGIAIoAhQhBSACKAIQIQogAkGAgICAeDYC6CsgAkGwLWoiAyACQcgnaiAK +IAUgBCAGIAEgAkHoK2oiARDKLyABIANByAEQzU8aDAULIAJBkDNqIAJBlCZqQSQQzU8aDCULIAJB +6CtqEJVFQgIhDkHEk9sAKAIAQQNLDSVBuP3aABD7PiIBQf8BcUUNJUEAIQNBuP3aACgCACABEPUu +RQ0lQbj92gAoAgAiAUEoaigCACEGIAFBJGooAgAhBSABKAIcIQogAiABQSBqKAIAIgQEfyACQQA2 +AsAtIAIgBjYCvC0gAiAFNgK4LSACIAQ2ArQtQQEhAyAKBUEACzYCsC0gAkH4JWogAkGwLWpB4OfA +ABDYLCACQfQrakIANwIAIAJBATYC7CsgAkHQ6MAANgLoKyACQeDHwAA2AvArIAFBHGohASACIAMg +BE8Ef0EABSACIAY2ArwtIAIgBTYCuC0gAiAENgK0LSACIAM2AsAtIANBAWohAyAKCzYCsC0gAkHI +K2ogAkGwLWpB4OfAABDYLCACIABB0AJqKAIAQcgAajYCjCYgAiADIARJBH8gAiADNgKQKiACIAY2 +AowqIAIgBTYCiCogAiAENgKEKiAKBUEACzYCgCogAkHYKGoiCiACQYAqaiIFQeDnwAAQ2CwgAkHQ +LWpB4OHAADYCACACQcQtakHQ4cAANgIAIAJBzC1qIAJBkCZqNgIAIAJBwC1qIAJBjCZqNgIAIAJB +wMfAADYCuC0gAiAAQdQCaigCAEEYajYCkCYgAiAKNgLILSACIAJByCtqNgK8LSACIAJB6CtqNgK0 +LSACIAJB+CVqNgKwLSAFIAEgAkGwLWoQ4UFBuP3aACgCACAFEMQ0DCULQQQMFwsgAkGQM2ogAkHY +JmpBJBDNTxoMIgsgAkEgaiADEJ0xIAIoAiQhBCACKAIgIQYgAkEYaiABEJ0xIAJBsC1qIgMgBiAE +IAIoAhggAigCHCACQcgnaiAAQeACai0AACAAKALAAiAAQcQCaigCABDbJCACQegraiIBIANByAEQ +zU8aCyACQdgoaiACQfguakGoARDNTxogAkHIK2ogACgC1AIQ7isgAyABEKcNIAJBgCpqIgMgAUHI +ARDNTxogAkGQM2ogAkGwLWpByAEQzU8aIAJB8DRqIAJB4CtqKQMANwMAIAJB6DRqIAJB2CtqKQMA +NwMAIAJB4DRqIAJB0CtqKQMANwMAIAIgAikDyCs3A9g0IAJByDFqIANByAEQzU8aIAJBoDBqIAJB +2ChqQagBEM1PGiAAKALQAigCUCIDIAMoAgAiAUEBajYCACABQQBIDRsgAkH4NGogACgC0AJBIGoQ ++Q4gACgC0AIoAlQiASABKAIAIgRBAWo2AgAgBEEASA0bIAJBCGogACgC0AJByABqEJ0xQgAhDiAC +KAIMIQYgAigCCCEEDCILQaDEwABBI0GU58AAEOYrAAsgAEHAAmohAwJAIABBxARqIgstAABBAWsO +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 +TxogAkHIK2ogACgC1AIQ7isgBCABEKcNIAJBgCpqIgQgAUHIARDNTxogAkGQM2ogAkGwLWpByAEQ +zU8aIAJB8DRqIAJB4CtqKQMANwMAIAJB6DRqIAJB2CtqKQMANwMAIAJB4DRqIAJB0CtqKQMANwMA +IAIgAikDyCs3A9g0IAJByDFqIARByAEQzU8aIAJBoDBqIAJB2ChqQagBEM1PGiAAKALQAigCoAIi +ASABKAIAIgRBAWo2AgAgBEEASA0LIAJB+DRqIAAoAtACQfABahD5DiAAKALQAigCpAIiByAHKAIA +IgRBAWo2AgAgBEEASA0LIAJBOGogACgC0AJBmAJqEJ0xQgAhDiACKAI8IQYgAigCOCEEDA8LQaDE +wABBI0G058AAEOYrAAsgAkECNgKQCAwSC0GgxMAAQSNB9ObAABDmKwALQQMLIQEgCyABOgAAIAhB +AzoAAEEDDAILQQMLIQEgCiABOgAAIAtBAzoAAEEECyEBIAwgAToAAAwOC0GgxMAAQSNBnL3BABDm +KwALQYzCwABBNkHEwsAAEJ83AAtBoMTAAEEjQdDnwAAQ5isACwALQaDEwABBI0HQ58AAEOYrAAtC +AyEOCyADEL9HCyACQegjaiIFIAJBkDNqQZACEM1PGiACQaAiaiIIIAJByDFqQcgBEM1PGiACQfgg +aiIMIAJBoDBqQagBEM1PGiAKQQE6AAAgAkHwFmoiCiAFQZACEM1PGiACQagVaiIFIAhByAEQzU8a +IAJBgBRqIgggDEGoARDNTxogAxDQMCALQQE6AAAgAkHwG2ogCkGQAhDNTxogAkGoGmogBUHIARDN +TxogAkGAGWogCEGoARDNTxoCQAJAAkAgAy0AhAIOBAACAgECCyADQfgBahC/RwwBCyADENAwCwJA +IA5CA1IEQCACQZQPaiACQZQcakHsARDNTxogAkGQEWogAkGoGmpByAEQzU8aIAJB2BJqIAJBgBlq +QagBEM1PGiACQfAOaiACQfAbakEkEM1PGiACIAc2AowRIAIgATYCiBEgAiAGNgKEESACIAQ2AoAR +IAIgDjcD6A4gDkICUQ0BIABBADoAuAIgAkHwBmogACgCsAIgAkHoDmogAkGoGmogAkGAGWogACgC +qAIgAEGsAmooAgAQjgMMBgsgAkHYH2ogAkHwG2pBJBDNTxoMBAsgAkECNgKQCAwEC0IDIQ4LIAcQ +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 +BAALIAAtANwGIQMgACgC2AYhBwwCCwALIABBADoA3QYgACAALQDgByIDOgDcBiAAIABB4AZqIgc2 +AtgGCyAHQTBqIgYgAxC/FkEYQQgQqzkhBSACQZgIaiINIAYQghUgBUEQaiACQagIaiIDKQMANwMA +IAVBCGogAkGgCGoiBikDADcDACAFIAIpA5gINwMAIAJBkANqQgg3AgAgAkGIA2pCADcCACACQaAD +akEANgIAIAJCgICAgIABNwKYAyACQoCAgICAATcCgAMgAkGgAmoiDkEANgIAIAJCgICAgIABNwOY +AiACQZACaiIPQQA2AgAgAkKAgICAgAE3A4gCIAJBEGoQ0TIgAkH4CWoiCEEANgIAIAJB6AlqQgg3 +AwAgAkHgCWoiCUIANwMAIAJB0AlqQgQ3AwAgAkHICWoiCkIANwMAIAJBgAlqQgA3AwAgAkGICWpC +BDcDACACQZAJakKAgICAwAA3AwAgAkGYCWpCADcDACACQaAJakIINwMAIAJBqAlqQoCAgICAATcD +ACACQbAJakIANwMAIAJBuAlqQgg3AwAgAkGAgICAeDYC4AggAkEANgK4CCACQoCAgIDAADcD8Akg +AkKAgICAwAA3A9gJIAJCgICAgIABNwPACSACQQA2AtAIIAJCgICAgMAANwP4CCACKQMQIRcgAikD +GCEYIAJB3AhqIgtBADYCACACQbAIaiIQIBg3AwAgAkGECmoiEUEANgIAIAMgFzcDACAGQfDCwAAp +AwA3AwAgAkGgAWogAkHICGopAwA3AwAgAkGYAWogAkHACGopAwA3AwAgAkEANgLUCCACQoCAgIDA +ADcC/AkgAkGAgICAeDYC7AggAkHowsAAKQMANwOYCCACIAIpA7gINwOQASACQegCaiISIAJB6Ahq +KAIANgIAIAIgAikD4Ag3A+ACIAJBgAJqIhMgCigCADYCACACIAIpA8AJNwP4ASACQfABaiIKIAJB +1AlqKAIANgIAIAIgAikCzAk3A+gBIAJB4AFqIhQgCSgCADYCACACIAIpA9gJNwPYASACQdABaiIJ +IAJB7AlqKAIANgIAIAIgAikC5Ak3A8gBIAJBwAFqIhUgCCgCADYCACACIAIpA/AJNwO4ASACQagC +aiIIIAJB+AhqQSQQzU8aIAJB+AJqIhYgCygCADYCACACQfgAaiAGKQMANwMAIAJBgAFqIAMpAwA3 +AwAgAkGIAWogECkDADcDACACIAIpAtQINwPwAiACIAIpA5gINwNwIAJBsAFqIgYgESgCADYCACAC +IAIpAvwJNwOoASACQdgCaiILIAJB9AhqKAIANgIAIAIgAikC7Ag3A9ACIAJBnAlqENY/IAJBjANq +ELBLIAJB+AxqIAJB8ABqQTgQzU8aIAJBgANqIgMgDUGYBRDNTxogACADQZgFEM1PIgNBADYCmAUg +AyACKQPwAjcCnAUgA0GkBWogFigCADYCACADIAIpA+ACNwOoBSADQbAFaiASKAIANgIAIAMgAikD +0AI3ArQFIANBvAVqIAsoAgA2AgAgA0HABWogCEEkEM1PGiADQQE2AvgFIAMgBTYC9AUgA0EBNgLw +BSADQewFaiAOKAIANgIAIAMgAikDmAI3AuQFIAMgAikDiAI3AvwFIANBhAZqIA8oAgA2AgAgAyAC +KQP4ATcDiAYgA0GQBmogEygCADYCACADIAIpA+gBNwKUBiADQZwGaiAKKAIANgIAIANBADoA1AYg +AyAHNgLQBiADQagGaiAUKAIANgIAIAMgAikD2AE3A6AGIAMgAikDyAE3AqwGIANBtAZqIAkoAgA2 +AgAgAyACKQO4ATcDuAYgA0HABmogFSgCADYCACADIAIpA6gBNwLEBiADQcwGaiAGKAIANgIACyAC +QZgIaiAAIAEQvhEgAi0AmAgiA0EMRg0FIAJBKmoiASACQZgIakEBciIFQSMQzU8aIAAQ+TwgAEEB +OgDdBiACQc0AaiABQSMQzU8aIANBC0cNA0IAIRdCgICAgJAQDAQLQaDEwABBI0HcyMAAEOYrAAtB +oMTAAEEjQby2wQAQ5isAC0GMwsAAQTZBxMLAABCfNwALIAUgAkHNAGpBIxDNTxogAiADOgCYCEIB +IRcgAkGYCGoQzh6tQiCGCyEYIABB4AZqEMQ7IABBAToA4QcgAiAXIBiENwMgIAAoAsAHQQJHBEAg +AiAANgKYCAJAAkACQCACQZgIaigCACIBLQDhBw4EAQICAAILIAEtAN0GQQNHDQAgARD5PAsgAUHg +BmoQxDsLIABBAjYCwAcgAkEIaiACQSBqEPQxIAIoAgwhAyACKAIIDAILIABBAjYCwAdB5MDAAEEo +QfzBwAAQ5isACyAAQQM6AN0GIABBAzoA4QdBAgshASAMIAM2AgQgDCABNgIAIAJBsA1qJAAgBCgC +GCICQQJGDQEgBCgCHCEBIAAQljMCfyACRQRAIARBgAE2AiggBCABNgIsIARBCGogAEHQD2ogBEEo +aiIDIARBLGoiBRD7JyAEKAIIIAQoAgwQ5EEMAQsgBEGAATYCKCAEIAE2AiwgBEEQaiAAQdQPaiAE +QShqIgMgBEEsaiIFEPsnIAQoAhAgBCgCFBDkQQshASAFEJZBIAMQlkEgBCABNgIkIARBJGoQlkEg +AEHQD2oQlkEgAEHUD2oQlkFBAQwCC0HQl8YAQSNBtMHGABDmKwALQQMLOgDYDyAEQTBqJAAgAkEC +RgukYwIZfwN+IwBBMGsiECQAIAACfwJAAkACQAJAAkAgAC0A2AdBAWsOAwMAAgELAAsgACAAQegD +akHoAxDNTxoLIBBBGGohGiMAQcAGayICJAACQAJAAn8CQAJAAkACQAJAIAAiBAJ/AkACQAJAAkAC +QAJAIAQoAtQDQYCAgIB4RwRAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAQt +AOADQQFrDgMOBwABCwJAIAQtAC1BAWsOBA0HAwYACyAEQSRqKAIAIQ4gBCgCICELIAQoAighCAwB +CyAEQQA6AC0gBCAEQdADaiIINgIoIAQgBEHYA2ooAgAiCzYCICAEIAsgBEHcA2ooAgBBA3RqIg42 +AiQLIARBADoALEHEk9sAKAIAQQJLDQFBzIvbABD7PiIFQf8BcUUNAUHMi9sAKAIAIAUQ9S5FDQEg +AkHoBGoiB0HMi9sAKAIAIgVBHGpB4MfAABDUQSAEIAUgBxDEMiAEQQE6ACwgBCgCCEECRg0CIARB +ADoALCAEIAQpAwA3AzAgBEHUAGogDjYCACAEQdAAaiALNgIAIARBOGogBEEIaikDADcDACAEQUBr +IARBEGopAwA3AwAgBEHIAGogBEEYaikDADcDACAEQdgAaiACQYgBakHwAhDNTxogBEHMA2pBADoA +ACAEQcgDaiAINgIAIARBzQNqIAIvAIUBOwAAIARBzwNqIAJBhwFqLQAAOgAACyMAQdADayIDJAAg +BEEwaiIGKAIIQQJHBEAgBkEIaiAGEPgnCyACQegEaiERIAMgBjYCXCAGAn8CQAJAAkACQAJAAn8C +QAJAAkACQAJAAkACQAJAAkACQCAGQZwDai0AAEEBaw4DBgEAAgsgBkEoaiEXIAZB0wJqIRgCQCAG +LQDTAkEBaw4FCAEEBQkACyAGQZwCaigCACEWIAZBmAJqKAIAIQggBkHMAmooAgAhDAwCCwALIAZB +mANqKAIAKAIAIQUgBkEAOgDTAiAGQZwCaiAGQSRqKAIAIhY2AgAgBkGYAmogBigCICIINgIAIAZB +zAJqIAVByABqIgw2AgAgBkEoaiEXIAZB0wJqIRgLIAZBgAI7ANECIAZB0AJqQQA6AAAgBkGkAmpB +ADYCACAGQaACaiAMNgIAIAZBuAJqQQA2AgAgBkGsAmpCADcCACAMQRBqELNNIQVBiAFBCBCrOSIH +QQA6AE0gByAFNgJIIAcgDDYCRCAHIBY2AkAgByAINgI8IAZB2AJqIAc2AgALIANB0AFqIAZB2AJq +IgogARD8ASADKALQASIJQQJGDQIgA0GeAWogAy0A1wE6AAAgA0GIAWoiGSADQeQBaiIHKQIANwMA +IANBkAFqIhIgA0HsAWoiBSkCADcDACADQZgBaiIPIANB9AFqKAIANgIAIAMgAy8A1QE7AZwBIAMg +AykC3AE3A4ABIAMtANQBIQggAygC2AEhDCAKENcHIAlFBEAgBkHEAmpBADYCACAGQbwCakEANgIA +IAUgDygCADYCACAHIBIpAwA3AgAgA0HcAWogGSkDADcCACADIAMpA4ABNwLUASADIAw2AtABIANB +oAFqIgUgA0HQAWoQpBAgBkHoAGogBUEwEM1PGkEADAYLIANBzgNqIANBngFqLQAAOgAAIANBuANq +IBkpAwA3AwAgA0HAA2ogEikDADcDACADQcgDaiAPKAIANgIAIAMgAy8BnAE7AcwDIAMgAykDgAE3 +A7ADDAkLIAZB6AJqKAIAIRQgBkHkAmooAgAhDUEBDAQLQeDGwgBBI0H0k8MAEOYrAAtBAyEIDAML +QeDGwgBBI0HU6MIAEOYrAAtBAgshCANAAn8CQAJAAkACQAJAAkACQAJAAn8CQAJAAkAgCA4CAAEC +CyAGQcgBaiIFIAZB6ABqIgcQxTggBSgCACIFRQ0DIAZB8AFqIAU2AgAgBkH0AWogBkHMAWooAgA2 +AgAgA0HAAmogBkHoAWopAwA3AwAgA0G4AmogBkHgAWopAwA3AwAgA0GwAmogBkHYAWopAwA3AwAg +AyAGQdABaikDADcDqAIgA0HQAWoiBSADQagCahCvUSAGQZgBaiAFQTAQzU8aDAoLIANBqAJqIA0g +ASAUKAIMEQMAIAMtAKgCIghBDEYNAyADQfICaiIKIAMtAKsCOgAAIANB2AJqIgkgA0G4AmopAgA3 +AwAgA0HgAmoiByADQcACaikCADcDACADQegCaiIFIANByAJqKAIANgIAIAMgAy8AqQI7AfACIAMg +AykCsAI3A9ACIAMoAqwCIQwgBkHkAmoQmTYgCEELRw0EIAZByAJqIgUgDDYCACAGQdACakEBOgAA +IAZB2AJqEIg/QQEgBSgCACIFRQ0BGiAGIAU2AtgCIAZBADoA0AIgBkGUA2pBADoAACAGQdwCaiAF +QQhqNgIAQQIhCAwLCyAGQdwCaiIHIAEQugciBUUNBCADIAU2AqgCIAcQ2T8gA0GoAmoiBxDUTCgC +CCAHEJpMIAZB2AJqEK85RQsiB0EAIAZBoAJqKAIAIAZB8AFqIgkoAgAgBkH0AWooAgAgBkH4AWoo +AgAgBkH8AWooAgAQ7BYiBRsNBCAFIAdBAXNyDQUgA0EwaiAJEJ0xIANBqAJqIgogBkGkAmogAygC +MCADKAI0EIcQIAoQkwkhCSAGQQA6ANECIAYoAvgBIQcgBigC/AEhBSADQQI2AqgCIANBnANqIAkg +ByAFIAoQkgwgAygCnANBA0cNBSADQaADahD6PgwFCyAHEOgpIAZBoAJqKAIAKAIIQQhqIgEQwjog +A0HQAWogARDDLyADKALQAQ0FIANB2AFqAn8gAygC1AEiDCgCACIFRQRAQQAhCEEADAELIAwoAggh +CCAMKAIEIQxBAQshDSgCACEJIAMgCDYCwAEgAyAMNgK8ASADIAU2ArgBIANBADYCtAEgAyANNgKw +ASADIAw2AqwBIAMgBTYCqAEgA0EANgKkASADIA02AqABIAZBpAJqIRIDQCADQRhqIANBoAFqEK8L +IAMoAhgiAQRAIAMoAhwhCiADQRBqIAEQnTEgA0HQAWoiByASIAMoAhAgAygCFBCHECAHEJMJIQ0g +CigCBCEFIAMgCigCCEEAIAooAgAiChs2AvABIAMgBTYC7AEgAyAKNgLoASADQQA2AuQBIAMgCkEA +RyIBNgLgASADIAU2AtwBIAMgCjYC2AEgA0EANgLUASADIAE2AtABIAcgDRDOGAwBCwsgCSAJKAIA +QQFrNgIAQQAhCEHEk9sAKAIAQQFLDQsgAyASKAIAIgEEfyAGQagCaigCACENQQEhCCAGQawCaigC +AAVBAAs2AvABIAMgDTYC7AEgAyABNgLoASADQQA2AuQBIAMgCDYC4AEgAyANNgLcASADIAE2AtgB +IANBADYC1AEgAyAINgLQASADQfQCaiADQdABahDXDUHEk9sAKAIAQQFLDQpBhIXbABD7PiIBQf8B +cUUNCkEAIQhBhIXbACgCACABEPUuRQ0KQYSF2wAoAgAiCUEoaigCACEHIAlBJGooAgAhBSAJKAIc +IQEgAyAJQSBqKAIAIgoEfyADQQA2AuABIAMgBzYC3AEgAyAFNgLYASADIAo2AtQBQQEhCCABBUEA +CzYC0AEgA0GAA2ogA0HQAWpB9OjCABDdLCADQawBakIANwIAIANBATYCpAEgA0HA6cIANgKgASAD +QaTJwgA2AqgBIAMgCCAKTwR/QQAFIAMgBzYC3AEgAyAFNgLYASADIAo2AtQBIAMgCDYC4AEgCEEB +aiEIIAELNgLQASADQZwDaiADQdABakH06MIAEN0sIAMgA0H0Amo2ApQDIAMgCCAKSQR/IAMgCDYC +uAIgAyAHNgK0AiADIAU2ArACIAMgCjYCrAIgAQVBAAs2AqgCIANBgAJqIgEgA0GoAmoiBUH06MIA +EN0sIANB8AFqQdjpwgA2AgAgA0HkAWpByOnCADYCACADQewBaiADQZgDajYCACADQeABaiADQZQD +ajYCACADQZTJwgA2AtgBIAMgBkGwAmo2ApgDIAMgATYC6AEgAyADQZwDajYC3AEgAyADQaABajYC +1AEgAyADQYADajYC0AEgBSAJQRxqIANB0AFqEOFBQYSF2wAoAgAgBRDENAwKC0EEIQgMCAsgA0HO +A2ogCi0AADoAACADQbgDaiAJKQMANwMAIANBwANqIAcpAwA3AwAgA0HIA2ogBSgCADYCACADIAMv +AfACOwHMAyADIAMpA9ACNwOwAyAGQdgCahCIPyAGQdACakEAOgAAIAZBgAJqEPsfIAZB+AFqEPo+ +IAZBADoA0QIgBkGYAWoQ7DcgBkHwAWoQ+j4gBkHoAGoQ6CkgBkG8AmoQngcMCgtBBSEIDAYLIANB +KGogCRCdMSADQagCaiIFIAZBsAJqIAMoAiggAygCLBCOECAFEKEWIAZBADoA0QIgBigC+AEgBigC +/AEQ9kgLAkAgBkHIAmoiBSgCAEUNACAGQdACai0AAEUNACAFEK85CyAGQdACakEAOgAAQQAMAgsg +AyADKQLUATcCoAFBuK/DAEErIANBoAFqQaSxwwBB5OjCABCJGAALQQELIQgDQAJAAkACQAJAAkAg +CEUEQCAGQYACahD7HyAGLQDRAg0BDAILIBcgBkGYAWoiBxC2IiAGKAIoIgVFBEAgBxDsNyAGQfAB +ahD6PgwDCyAGQQE6ANECIAZB+AFqIAU2AgAgBkH8AWogBkEsaigCADYCACAGQYACaiIPIAZBMGop +AwA3AwAgBkGIAmogBkE4aikDADcDACAGQZACaiAGQUBrKQMANwMAIA8Q0D5FBEAgA0HQAGogBkHw +AWoQ8S4gA0GoAmoiCiAGQbwCaiADKAJQIAMoAlQQiBAgChD8CCEJIAZBADoA0QIgBigC+AEhByAG +KAL8ASEFIANByABqIA8Qs0YgCiADKAJIIAMoAkwQ/xAgA0GAAmogCSAHIAUgChCTDCADKAKAAkGA +gICAeEYNBSADQYACahC0SwwFCyADQYACaiAPEOpIIAMtAIACBEAgBkHIAGoiCSADKQCBAjcAACAG +QeAAaiADQZkCaikAADcAACAGQdgAaiADQZECaikAADcAACAGQdAAaiADQYkCaikAADcAACADQUBr +IAZBoAJqKAIAEL8sIAMoAkAhByADKAJEIQUgBkHYAmogCRDxUSADQThqIAcgBkHcAmooAgAgBkHg +AmooAgAgBSgCKBEFACADKAI4IQ0gBkHoAmogAygCPCIUNgIAIAZB5AJqIA02AgAMBAsgA0EgaiAG +QfABahDxLiADQagCaiIFIAZBvAJqIAMoAiAgAygCJBCIECAFEPwIIAZBADoA0QJBDGogBigC+AEg +BigC/AEQ9kgMBAsgBkH4AWoQ+j4LIAZBADoA0QJBASEIDAMLQQAhCAwDC0EBIQgMAgtBACEIDAAL +AAsACyAYIAg6AAAgEUECNgIAQQMMBAsgA0H0AmoQ/gcLIAZBvAJqIQoCQCAGQcQCaigCAEUNAEHE +k9sAKAIAQQNLDQBBkIXbABD7PiIBQf8BcUUNAEEAIQxBkIXbACgCACABEPUuRQ0AQZCF2wAoAgAi +D0EoaigCACEHIA9BJGooAgAhBSAPKAIcIQEgAyAPQSBqKAIAIgkEfyADQQA2AuABIAMgBzYC3AEg +AyAFNgLYASADIAk2AtQBQQEhDCABBUEACzYC0AEgA0GcA2ogA0HQAWpB6OnCABDdLCADQdwBakIA +NwIAIANBATYC1AEgA0HQ6sIANgLQASADQaTJwgA2AtgBIAMgCSAMSwR/IAMgDDYCuAIgAyAHNgK0 +AiADIAU2ArACIAMgCTYCrAIgAQVBAAs2AqgCIANBgAJqIgEgA0GoAmoiBUHo6cIAEN0sIANBtAFq +QdjqwgA2AgAgA0GwAWogA0GAA2o2AgAgA0GUycIANgKoASADIAo2AoADIAMgATYCrAEgAyADQdAB +ajYCpAEgAyADQZwDajYCoAEgBSAPQRxqIANBoAFqEPJBQZCF2wAoAgAgBRDENAsCfyAGQawCaigC +AEUEQCADQYGU69wDNgKwAUGBlOvcAwwBCyADQQhqEOkkIAMpAwghGyAGQQA6ANICIANBsAJqIgkg +EkEIaigCADYCACADIBIpAgA3A6gCIANB0AFqIANBqAJqEPw3IANB2AFqIgFBADYCACADQbgBaiIH +IANB4AFqKQMANwMAIANBwAFqIANB6AFqIgUpAwA3AwAgA0GwAWogASkDACIcNwMAIANCCjcDqAEg +AyAbNwOgAUGBlOvcAyAcpyIBQYGU69wDRg0AGiADIANBoAFqEPEuIAMgAykDADcD0AEgAykDqAEh +HCAFIAcQlC8gA0GIAmogHDcDACAJIANB7AFqKQIANwMAIANBuAJqIANB9AFqKAIANgIAIAMgAykD +0AE3A4ACIAMgAykC5AE3A6gCIAELIQUgBigCoAIoAgRBCGoiARCJPiADQdABaiABEOggIAMoAtAB +RQRAIAMgAygC1AEiCDYCnAMgAyADQdgBai0AADoAoAMgCEEIaiEBIAhBGGooAgBBgZTr3ANHBEAg +ARD6PiAIQSBqEKMZCyABIAMpA4ACNwMAIAggBTYCGCAIQRxqIAMpA6gCNwIAIAFBCGogA0GIAmop +AwA3AwAgCEEkaiADQbACaikDADcCACAIQSxqIANBuAJqKAIANgIAIANBnANqEJ8fIANBuANqIANB +rAFqKQIANwMAIANBwANqIANBtAFqKQIANwMAIANByANqIANBvAFqKAIANgIAIAMgAykCpAE3A7AD +IAMoAqABIQwgAykDwAEhGyAKEJ4HIAZBsAJqEMIHIAZB0gJqIQ0gBi0A0gJFDQIgEhCjGQwCCyAD +IAMoAtQBNgKcAyADIANB2AFqLQAAOgCgA0G4r8MAQSsgA0GcA2pBlLDDAEHo6sIAEIkYAAsgBkGw +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 +AgQhBSACIAkoAghBACAJKAIAIgkbNgKIBSACIAU2AoQFIAIgCTYCgAUgAkEANgL8BCACIAlBAEci +ATYC+AQgAiAFNgL0BCACIAk2AvAEIAJBADYC7AQgAiABNgLoBCAHIAwQzhgMAQsLIA0gDSgCAEEB +azYCAEEAIQtBxJPbACgCAEEBSw0PIAIgDygCACIBBH8gBEG4AmooAgAhDEEBIQsgBEG8AmooAgAF +QQALNgKIBSACIAw2AoQFIAIgATYCgAUgAkEANgL8BCACIAs2AvgEIAIgDDYC9AQgAiABNgLwBCAC +QQA2AuwEIAIgCzYC6AQgAkH0BWogAkHoBGoQ1w1BxJPbACgCAEEBSw0OQYSF2wAQ+z4iAUH/AXFF +DQ5BACELQYSF2wAoAgAgARD1LkUNDkGEhdsAKAIAIgdBKGooAgAhBSAHQSRqKAIAIQ0gBygCHCEB +IAIgB0EgaigCACIJBH8gAkEANgL4BCACIAU2AvQEIAIgDTYC8AQgAiAJNgLsBEEBIQsgAQVBAAs2 +AugEIAJBgAZqIAJB6ARqQaz1wAAQ2CwgAkHEBGpCADcCACACQQE2ArwEIAJB+PXAADYCuAQgAkHg +x8AANgLABCACIAkgC00Ef0EABSACIAU2AvQEIAIgDTYC8AQgAiAJNgLsBCACIAs2AvgEIAtBAWoh +CyABCzYC6AQgAkGcBmogAkHoBGpBrPXAABDYLCACIAJB9AVqNgKUBiACIAkgC0sEfyACIAs2AtAF +IAIgBTYCzAUgAiANNgLIBSACIAk2AsQFIAEFQQALNgLABSACQZgFaiIBIAJBwAVqIgVBrPXAABDY +LCACQYgFakGQ9sAANgIAIAJB/ARqQYD2wAA2AgAgAkGEBWogAkGYBmo2AgAgAkH4BGogAkGUBmo2 +AgAgAkHAx8AANgLwBCACIARBwAJqNgKYBiACIAE2AoAFIAIgAkGcBmo2AvQEIAIgAkG4BGo2AuwE +IAIgAkGABmo2AugEIAUgB0EcaiACQegEahDhQUGEhdsAKAIAIAUQxDQMDgtBBCELDAsLIAcgBUEQ +dHIhDSACQbgGaiAJKAIANgIAIAIgAikD6AU3A7AGIARB6AJqEIg/IARB4AJqQQA6AAAgBEGQAmoQ ++x8gBEGIAmoQ+j4gBEEAOgDhAiAEQagBahDsNyAEQYACahD6PiAEQfgAahDoKSAEQcwCahCeBwwO +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 +QbADaiAJNgIAIAJBrANqIAg2AgAgAkGoA2ogBjYCACACQaQDaiAHNgIAIAJBoANqIAU2AgAgAkIA +NwOIAgwLCyABQZgBaigCACIFIAUoAgAiA0EBajYCACADQQBIDRwgAkGgBmogAUEoahDTMCABQZwB +aigCACIHIAcoAgAiA0EBajYCACADQQBIDRwgAUGgAWooAgAiBiAGKAIAIgNBAWo2AgAgA0EASA0c +IAFBpAFqKAIAIgggCCgCACIDQQFqNgIAIANBAEgNHCABQagBaigCACIJIAkoAgAiA0EBajYCACAD +QQBIDRwgAkH4DGogAUEIaiIDQQhqKQMANwMAIAJBgA1qIANBEGopAwA3AwAgAkGIDWogA0EYaikD +ADcDACACIAMpAwA3A/AMIAFBrAFqLQAAIQEgAkGQDWogAkGgBmpB8AAQzU8aIAJBkAJqIAJB8Axq +QZABEM1PGiACQbQDaiABOgAAIAJBsANqIAk2AgAgAkGsA2ogCDYCACACQagDaiAGNgIAIAJBpANq +IAc2AgAgAkGgA2ogBTYCACACQgE3A4gCDAoLIAFBmAFqKAIAIgUgBSgCACIDQQFqNgIAIANBAEgN +GyACQaAGaiABQShqENMwIAFBnAFqKAIAIgcgBygCACIDQQFqNgIAIANBAEgNGyABQaABaigCACIG +IAYoAgAiA0EBajYCACADQQBIDRsgAUGkAWooAgAiCCAIKAIAIgNBAWo2AgAgA0EASA0bIAFBqAFq +KAIAIgkgCSgCACIDQQFqNgIAIANBAEgNGyACQfgMaiABQQhqIgNBCGopAwA3AwAgAkGADWogA0EQ +aikDADcDACACQYgNaiADQRhqKQMANwMAIAIgAykDADcD8AwgAUGsAWotAAAhASACQZANaiACQaAG +akHwABDNTxogAkGQAmogAkHwDGpBkAEQzU8aIAJBtANqIAE6AAAgAkGwA2ogCTYCACACQawDaiAI +NgIAIAJBqANqIAY2AgAgAkGkA2ogBzYCACACQaADaiAFNgIAIAJCAjcDiAIMCQsgAUGYAWooAgAi +BSAFKAIAIgNBAWo2AgAgA0EASA0aIAJBoAZqIAFBKGoQ0zAgAUGcAWooAgAiByAHKAIAIgNBAWo2 +AgAgA0EASA0aIAFBoAFqKAIAIgYgBigCACIDQQFqNgIAIANBAEgNGiABQaQBaigCACIIIAgoAgAi +A0EBajYCACADQQBIDRogAUGoAWooAgAiCSAJKAIAIgNBAWo2AgAgA0EASA0aIAJB+AxqIAFBCGoi +A0EIaikDADcDACACQYANaiADQRBqKQMANwMAIAJBiA1qIANBGGopAwA3AwAgAiADKQMANwPwDCAB +QawBai0AACEBIAJBkA1qIAJBoAZqQfAAEM1PGiACQZACaiACQfAMakGQARDNTxogAkG0A2ogAToA +ACACQbADaiAJNgIAIAJBrANqIAg2AgAgAkGoA2ogBjYCACACQaQDaiAHNgIAIAJBoANqIAU2AgAg +AkIDNwOIAgwICyABQZgBaigCACIFIAUoAgAiA0EBajYCACADQQBIDRkgAkGgBmogAUEoahDTMCAB +QZwBaigCACIHIAcoAgAiA0EBajYCACADQQBIDRkgAUGgAWooAgAiBiAGKAIAIgNBAWo2AgAgA0EA +SA0ZIAFBpAFqKAIAIgggCCgCACIDQQFqNgIAIANBAEgNGSABQagBaigCACIJIAkoAgAiA0EBajYC +ACADQQBIDRkgAkH4DGogAUEIaiIDQQhqKQMANwMAIAJBgA1qIANBEGopAwA3AwAgAkGIDWogA0EY +aikDADcDACACIAMpAwA3A/AMIAFBrAFqLQAAIQEgAkGQDWogAkGgBmpB8AAQzU8aIAJBkAJqIAJB +8AxqQZABEM1PGiACQbQDaiABOgAAIAJBsANqIAk2AgAgAkGsA2ogCDYCACACQagDaiAGNgIAIAJB +pANqIAc2AgAgAkGgA2ogBTYCACACQgQ3A4gCDAcLIAFBmAFqKAIAIgUgBSgCACIDQQFqNgIAIANB +AEgNGCACQaAGaiABQShqENMwIAFBnAFqKAIAIgcgBygCACIDQQFqNgIAIANBAEgNGCABQaABaigC +ACIGIAYoAgAiA0EBajYCACADQQBIDRggAUGkAWooAgAiCCAIKAIAIgNBAWo2AgAgA0EASA0YIAFB +qAFqKAIAIgkgCSgCACIDQQFqNgIAIANBAEgNGCACQfgMaiABQQhqIgNBCGopAwA3AwAgAkGADWog +A0EQaikDADcDACACQYgNaiADQRhqKQMANwMAIAIgAykDADcD8AwgAUGsAWotAAAhASACQZANaiAC +QaAGakHwABDNTxogAkGQAmogAkHwDGpBkAEQzU8aIAJBtANqIAE6AAAgAkGwA2ogCTYCACACQawD +aiAINgIAIAJBqANqIAY2AgAgAkGkA2ogBzYCACACQaADaiAFNgIAIAJCBTcDiAIMBgsgAUGYAWoo +AgAiBSAFKAIAIgNBAWo2AgAgA0EASA0XIAJBoAZqIAFBKGoQ0zAgAUGcAWooAgAiByAHKAIAIgNB +AWo2AgAgA0EASA0XIAFBoAFqKAIAIgYgBigCACIDQQFqNgIAIANBAEgNFyABQaQBaigCACIIIAgo +AgAiA0EBajYCACADQQBIDRcgAUGoAWooAgAiCSAJKAIAIgNBAWo2AgAgA0EASA0XIAJB+AxqIAFB +CGoiA0EIaikDADcDACACQYANaiADQRBqKQMANwMAIAJBiA1qIANBGGopAwA3AwAgAiADKQMANwPw +DCABQawBai0AACEBIAJBkA1qIAJBoAZqQfAAEM1PGiACQZACaiACQfAMakGQARDNTxogAkG0A2og +AToAACACQbADaiAJNgIAIAJBrANqIAg2AgAgAkGoA2ogBjYCACACQaQDaiAHNgIAIAJBoANqIAU2 +AgAgAkIGNwOIAgwFCyABQZgBaigCACIFIAUoAgAiA0EBajYCACADQQBIDRYgAkGgBmogAUEoahDT +MCABQZwBaigCACIHIAcoAgAiA0EBajYCACADQQBIDRYgAUGgAWooAgAiBiAGKAIAIgNBAWo2AgAg +A0EASA0WIAFBpAFqKAIAIgggCCgCACIDQQFqNgIAIANBAEgNFiABQagBaigCACIJIAkoAgAiA0EB +ajYCACADQQBIDRYgAkH4DGogAUEIaiIDQQhqKQMANwMAIAJBgA1qIANBEGopAwA3AwAgAkGIDWog +A0EYaikDADcDACACIAMpAwA3A/AMIAFBrAFqLQAAIQEgAkGQDWogAkGgBmpB8AAQzU8aIAJBkAJq +IAJB8AxqQZABEM1PGiACQbQDaiABOgAAIAJBsANqIAk2AgAgAkGsA2ogCDYCACACQagDaiAGNgIA +IAJBpANqIAc2AgAgAkGgA2ogBTYCACACQgc3A4gCDAQLIAFBmAFqKAIAIgUgBSgCACIDQQFqNgIA +IANBAEgNFSACQaAGaiABQShqENMwIAFBnAFqKAIAIgcgBygCACIDQQFqNgIAIANBAEgNFSABQaAB +aigCACIGIAYoAgAiA0EBajYCACADQQBIDRUgAUGkAWooAgAiCCAIKAIAIgNBAWo2AgAgA0EASA0V +IAFBqAFqKAIAIgkgCSgCACIDQQFqNgIAIANBAEgNFSACQfgMaiABQQhqIgNBCGopAwA3AwAgAkGA +DWogA0EQaikDADcDACACQYgNaiADQRhqKQMANwMAIAIgAykDADcD8AwgAUGsAWotAAAhASACQZAN +aiACQaAGakHwABDNTxogAkGQAmogAkHwDGpBkAEQzU8aIAJBtANqIAE6AAAgAkGwA2ogCTYCACAC +QawDaiAINgIAIAJBqANqIAY2AgAgAkGkA2ogBzYCACACQaADaiAFNgIAIAJCCDcDiAIMAwsgAUGY +AWooAgAiBSAFKAIAIgNBAWo2AgAgA0EASA0UIAJBoAZqIAFBKGoQ0zAgAUGcAWooAgAiByAHKAIA +IgNBAWo2AgAgA0EASA0UIAFBoAFqKAIAIgYgBigCACIDQQFqNgIAIANBAEgNFCABQaQBaigCACII +IAgoAgAiA0EBajYCACADQQBIDRQgAUGoAWooAgAiCSAJKAIAIgNBAWo2AgAgA0EASA0UIAJB+Axq +IAFBCGoiA0EIaikDADcDACACQYANaiADQRBqKQMANwMAIAJBiA1qIANBGGopAwA3AwAgAiADKQMA +NwPwDCABQawBai0AACEBIAJBkA1qIAJBoAZqQfAAEM1PGiACQZACaiACQfAMakGQARDNTxogAkG0 +A2ogAToAACACQbADaiAJNgIAIAJBrANqIAg2AgAgAkGoA2ogBjYCACACQaQDaiAHNgIAIAJBoANq +IAU2AgAgAkIJNwOIAgwCCyABQZgBaigCACIFIAUoAgAiA0EBajYCACADQQBIDRMgAkGgBmogAUEo +ahDTMCABQZwBaigCACIHIAcoAgAiA0EBajYCACADQQBIDRMgAUGgAWooAgAiBiAGKAIAIgNBAWo2 +AgAgA0EASA0TIAFBpAFqKAIAIgggCCgCACIDQQFqNgIAIANBAEgNEyABQagBaigCACIJIAkoAgAi +A0EBajYCACADQQBIDRMgAkH4DGogAUEIaiIDQQhqKQMANwMAIAJBgA1qIANBEGopAwA3AwAgAkGI +DWogA0EYaikDADcDACACIAMpAwA3A/AMIAFBrAFqLQAAIQEgAkGQDWogAkGgBmpB8AAQzU8aIAJB +kAJqIAJB8AxqQZABEM1PGiACQbQDaiABOgAAIAJBsANqIAk2AgAgAkGsA2ogCDYCACACQagDaiAG +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 +AEEDRwRAIAkQnkAgBkEUaxCBPyAGQSxrEIg/IAZBIGsQiD8LIAZBDGsQgT8gBkEEaxCBPwwMCyAJ +EJ5AIAYQgT8gBkE8axCIPyAGQTBrEIg/IAZBJGsQiD8gBkEYaxCIPyAGQQxrEK1LDAsLIAZBQGoQ +gT8gBkE4axCBPyAGQShrEKpLDAoLIAZBOGsQgT8gBkHEAGsQqksgBkEwaxCBPwwJCyAGQRRrEIE/ +IAZBDGsQgT8gBkHEAGsQ/hwMCAsgBkEsaxCBPyAGQThrEIg/IAZBxABrELZADAcLIAZBDGsQgT8g +BkHEAGsQhBwMBgsgBkE4axCBPyAGQcQAaxCIPwwFCyAGQThrEIE/IAZBMGsQxxkgBkHEAGsQiD8M +BAsgBkHEAGsQgT8MAwsgBkHEAGsQ5ikMAgsCQAJAAkAgBkHEAGsiCSgCACILQQRrQQAgC0EFa0EC +SRsOAgECAAsgBkFAahCBPwwBCyAJELVACyAGQThrEIE/IAZBMGsQgT8MAQsgBkE4axCBPyAGQcQA +axCIPwsgCEEBayEIIAZBqAFqIQYMAQsLIAMgBSgCADYCDCADIAUoAgg2AgggA0EIahCjPSADQRBq +JAAgBUGgBGokACAEQfQJaiIDQQhqIBEoAgA2AgAgAyANKQIUNwIAIA1BQGskACAEQQE6AIQKAkAg +BEH8CWooAgBFDQBBxJPbACgCAA0AQfyI2wAQ+z4iBUH/AXFFDQBBACEDQfyI2wAoAgAgBRD1LkUN +AEH8iNsAKAIAIgVBKGooAgAhASAFQSRqKAIAIQYgBSgCHCEIIAIgBUEgaigCACIHBH8gAkEANgKA +DSACIAE2AvwMIAIgBjYC+AwgAiAHNgL0DEEBIQMgCAVBAAs2AvAMIAJB+BNqIAJB8AxqQeDXwAAQ +2CwgAkGsBmpCADcCACACQQE2AqQGIAJBjNjAADYCoAYgAkHgx8AANgKoBiACIAMgB08Ef0EABSAC +IAE2AvwMIAIgBjYC+AwgAiAHNgL0DCACIAM2AoANIANBAWohAyAICzYC8AwgAkHIE2ogAkHwDGpB +4NfAABDYLCACQfgBaiAEKALwCRDYQSACIAIpA/gBNwL4BSACIAJB+AVqNgKUBiACIAMgB0kEfyAC +IAM2AoANIAIgATYC/AwgAiAGNgL4DCACIAc2AvQMIAgFQQALNgLwDCACQaAFaiIDIAJB8AxqIgZB +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 +QaSK2wAoAgAiB0EoaigCACEJIAdBJGooAgAhCyAHKAIcIQwgAiAHQSBqKAIAIgEEfyACQQA2AoAN +IAIgCTYC/AwgAiALNgL4DCACIAE2AvQMQQEhAyAMBUEACzYC8AwgAkHkE2ogAkHwDGpBsNDAABDY +LCACQawGakIANwIAIAJBATYCpAYgAkHc0MAANgKgBiACQeDHwAA2AqgGIAIgASADTQR/QQAFIAIg +CTYC/AwgAiALNgL4DCACIAE2AvQMIAIgAzYCgA0gA0EBaiEDIAwLNgLwDCACQfgTaiACQfAMakGw +0MAAENgsIAJBuAFqIAJBoAVqELFGIAIgAikDuAE3AvgFIAIgAkH4BWo2ApQGIAIgASADSwR/IAIg +AzYCgA0gAiAJNgL8DCACIAs2AvgMIAIgATYC9AwgDAVBAAs2AvAMIAJByBNqIgEgAkHwDGoiA0Gw +0MAAENgsIAJBsAFqIAJBoAVqELJGIAJBkA1qQfzNwAA2AgAgAkGEDWpB7M3AADYCACACQYwNaiAC +QZAFajYCACACQYANaiACQZQGajYCACACQcDHwAA2AvgMIAIgAikDsAE3AogGIAIgAkGIBmo2ApAF +IAIgATYCiA0gAiACQfgTajYC/AwgAiACQaAGajYC9AwgAiACQeQTajYC8AwgAkHIBWoiASAHQRxq +IAMQ4UFBpIrbACgCACABEMQ0DBALQQAhCUHEk9sAKAIAQQNLDQ5BmIrbABD7PiIMQf8BcUUNDkGY +itsAKAIAIAwQ9S5FDQ5BmIrbACgCACIMQShqKAIAIQ8gDEEkaigCACERIAwoAhwhEyACIAxBIGoo +AgAiCwR/IAJBADYCgA0gAiAPNgL8DCACIBE2AvgMIAIgCzYC9AxBASEOIBMFQQALNgLwDCACQeQT +aiACQfAMakHk0MAAENgsIAJBrAZqQgA3AgAgAkEBNgKkBiACQeTRwAA2AqAGIAJB4MfAADYCqAYg +DEEcaiEMIAIgCyAOTQR/QQAFIAIgDzYC/AwgAiARNgL4DCACIAs2AvQMIAIgDjYCgA0gDkEBaiEO +IBMLNgLwDCACQfgTaiACQfAMakHk0MAAENgsIAJByAFqIAJBoAVqELFGIAIgAikDyAE3AvgFIAIg +AkH4BWo2ApQGIAIgCyAOSwR/IAIgDjYCgA0gAiAPNgL8DCACIBE2AvgMIAIgCzYC9AwgEwVBAAs2 +AvAMIAJByBNqIgsgAkHwDGoiD0Hk0MAAENgsIAJBwAFqIAJBoAVqELJGIAJBkA1qQfzNwAA2AgAg +AkGEDWpB7M3AADYCACACQYwNaiACQZAFajYCACACQYANaiACQZQGajYCACACQcDHwAA2AvgMIAIg +AikDwAE3AogGIAIgAkGIBmo2ApAFIAIgCzYCiA0gAiACQfgTajYC/AwgAiACQaAGajYC9AwgAiAC +QeQTajYC8AwgAkHIBWoiCyAMIA8Q4UFBmIrbACgCACALEMQ0DA4LQQAhCUHEk9sAKAIAQQJLDQ8g +BEGcA2ooAgAhGUGMitsAEPs+IgtB/wFxRQ0PQYyK2wAoAgAgCxD1LkUND0GMitsAKAIAIhFBKGoo +AgAhEyARQSRqKAIAIRUgESgCHCELIBFBIGooAgAiDAR/IAJBADYCgA0gAiATNgL8DCACIBU2AvgM +IAIgDDYC9AwgCyEPQQEFQQALIQ4gAiAPNgLwDCACQfgTaiACQfAMakHs0cAAENgsIAJBrAZqQgA3 +AgAgAkEBNgKkBiACQcTSwAA2AqAGIAJB4MfAADYCqAYgAiAMIA5LBH8gAiATNgL8DCACIBU2AvgM +IAIgDDYC9AwgAiAONgKADSAOQQFqIQ4gCwVBAAs2AvAMIAJByBNqIAJB8AxqQezRwAAQ2CwgAkGY +AWogGUFAayIPELFGIAIgAikDmAE3AogGIAIgAkGIBmo2ApAFIAIgDCAOSwR/IAIgDjYCgA0gAiAT +NgL8DCACIBU2AvgMIAIgDDYC9AwgCwVBAAs2AvAMIAJBoAVqIgsgAkHwDGoiDkHs0cAAENgsIAJB +kAFqIA8QskYgAkGQDWpB/M3AADYCACACQYQNakHszcAANgIAIAJBjA1qIAJB+AVqNgIAIAJBgA1q +IAJBkAVqNgIAIAJBwMfAADYC+AwgAiACKQOQATcCyAUgAiACQcgFajYC+AUgAiALNgKIDSACIAJB +yBNqNgL8DCACIAJBoAZqNgL0DCACIAJB+BNqNgLwDCACQeQTaiILIBFBHGogDhDhQUGMitsAKAIA +IAsQxDQMDwtBoMTAAEEjQbjMwAAQ5isACyACQe4FaiACQeIFai0AADoAACACIAIvAeAFOwHsBQwN +CyAEQZADaiELAkAgBEHAA2oiCC0AAEEBaw4DCQIPAAsgBEGYA2ooAgAhAyAEQZQDaigCACEHDA0L +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 +1BNqQgE3AgAgAkEBNgLMEyACQeTNwAA2AsgTIAJB/AA2AuQFIAIgAkHgBWo2AtATIAIgAkGgBmo2 +AuAFIAIgASAITQR/QQAFIAIgBzYC/AwgAiAGNgL4DCACIAE2AvQMIAIgCDYCgA0gCEEBaiEIIAkL +NgLwDCACQeQTaiACQfAMakG4zcAAENgsIAJBQGsgBEGQA2oiDBCxRiACIAIpA0A3AuwFIAIgAkHs +BWo2AugFIAIgASAISwR/IAIgCDYCgA0gAiAHNgL8DCACIAY2AvgMIAIgATYC9AwgCQVBAAs2AvAM +IAJB+BNqIgEgAkHwDGoiB0G4zcAAENgsIAJBOGogDBCyRiACQZANakH8zcAANgIAIAJBhA1qQezN +wAA2AgAgAkGMDWogAkH0BWo2AgAgAkGADWogAkHoBWo2AgAgAkHAx8AANgL4DCACIAIpAzg3ApQG +IAIgAkGUBmo2AvQFIAIgATYCiA0gAiACQeQTajYC/AwgAiACQcgTajYC9AwgAiACQcgFajYC8Awg +AkGIBmogBUEcaiAHEOFBIAJBgAZqIAJBkAZqKAIANgIAIAIgAikCiAY3A/gFQbiJ2wAoAgAgAkH4 +BWoQxDQLIAJBoAZqEIAdDAELAkBBxJPbACgCAEEDSw0AQayJ2wAQ+z4iAUH/AXFFDQBBACEHQayJ +2wAoAgAgARD1LkUNAEGsidsAKAIAIgFBHGohBSABQSBqKAIAIgYEQCABQShqKAIAIQggAUEkaigC +ACEJIAEoAhwhByACQQA2AoANIAIgCDYC/AwgAiAJNgL4DCACIAY2AvQMCyACIAc2AvAMIAJBoAZq +IgEgAkHwDGoiB0HIzMAAENgsIAJBMGogBEGQA2oiBhCxRiACIAIpAzA3AvgFIAJBKGogBhCyRiAC +QdQTakH9ADYCACACQfwMakICNwIAIAJB/gA2AswTIAJBAzYC9AwgAkGgzcAANgLwDCACQcDHwAA2 +AoAUIAIgAikDKDcCiAYgAiACQYgGajYC0BMgAiACQfgFajYCyBMgAiACQcgTajYC+AwgAiAHNgL8 +EyACIAE2AvgTIAJB5BNqIAUgAkH4E2oQ4EEgAkHQBWogAkHsE2ooAgA2AgAgAiACKQLkEzcDyAVB +rInbACgCACACQcgFahDENAsgAi0AoAVBFkYNACACQaAFahCAHQsgAkGADWoiBSAEQaADaikDADcD +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 +NwMAIAJBmAlqQgA3AwAgAkGgCWpCCDcDACACQagJakKAgICAgAE3AwAgAkGwCWpCADcDACACQbgJ +akIINwMAIAJBgICAgHg2AuAIIAJBADYCuAggAkKAgICAwAA3A/AJIAJCgICAgMAANwPYCSACQoCA +gICAATcDwAkgAkEANgLQCCACQoCAgIDAADcD+AggAikDCCEWIAIpAxAhFyACQdwIaiIPQQA2AgAg +AkGwCGoiBiAXNwMAIAJBhApqIhBBADYCACACQagIaiIFIBY3AwAgAkGgCGoiA0HwwsAAKQMANwMA +IAJBmAFqIAJByAhqKQMANwMAIAJBkAFqIAJBwAhqKQMANwMAIAJBADYC1AggAkKAgICAwAA3AvwJ +IAJBgICAgHg2AuwIIAJB6MLAACkDADcDmAggAiACKQO4CDcDiAEgAkH4AWoiESAKKAIANgIAIAIg +AikDwAk3A/ABIAJB6AFqIhIgAkHUCWooAgA2AgAgAiACKQLMCTcD4AEgAkHYAWoiEyAJKAIANgIA +IAIgAikD2Ak3A9ABIAJByAFqIhQgAkHsCWooAgA2AgAgAiACKQLkCTcDwAEgAkG4AWoiFSAIKAIA +NgIAIAIgAikD8Ak3A7ABIAJBqAJqIgggAkH4CGpBJBDNTxogAkGAAmoiCSACQZwJakEkEM1PGiAC +QfgCaiIKIA8oAgA2AgAgAkHwAGogAykDADcDACACQfgAaiAFKQMANwMAIAJBgAFqIAYpAwA3AwAg +AiACKQLUCDcD8AIgAiACKQOYCDcDaCACQagBaiIGIBAoAgA2AgAgAiACKQL8CTcDoAEgAkHYAmoi +BSACQfQIaigCADYCACACIAIpAuwINwPQAiACQeAIahD7QCACQdAIahCWRSACQfgMaiACQegAakE4 +EM1PGiACQYADaiIDIAJBmAhqQZgFEM1PGiAAIANBmAUQzU8iAyAMNgKYBSADIAIpA/ACNwKcBSAD +QaQFaiAKKAIANgIAIAMgAikD4AI3A6gFIANBsAVqIA4oAgA2AgAgAyACKQPQAjcCtAUgA0G8BWog +BSgCADYCACADQcAFaiAIQSQQzU8aIANB5AVqIAlBJBDNTxogA0GQBmogESgCADYCACADIAIpA/AB +NwOIBiADIAIpA+ABNwKUBiADQZwGaiASKAIANgIAIAMgAikD0AE3A6AGIANBqAZqIBMoAgA2AgAg +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 +A0EIaiAOQRhqKQIANwIAIAMgGDcCGCAOQSBqJAAgCiAENgI8IAogCkEoaiAKQTBqIA0bKAIANgI4 +IAogCkEkaiIDIApBLGoiASANGygCADYCNCAKQTRqIBUgDyAIEPwgIBBBGGogASkCADcCACAQQRBq +IAMpAgA3AgAgEEEIaiAKQRxqKQIANwIAIBAgCikCFDcCAAwCC0GEvskAQTVBvL7JABDmKwALIAQg +FSAPIAgQ/CAgEEGAgICAeDYCAAsgCkFAayQAIAIoAghBgICAgHhGDQIgFCALKAIANgIAIAIgAikC +CDcDUCACKAIYIQQgAigCHCEDIAIoAhQhDyACKAIkIQEgAigCICEIDAELCyACQRBqIAJB2ABqKAIA +NgIAIAIgAikDUDcDCCACIAE2AiQgAiAINgIgIAIgAzYCHCACIAQ2AhggAiAPNgIUIBcoAgAiAygC +AEUNASACIAMQqyggAiACKQMANwJAIAJBCGohBAJAAkAgASACQUBrIgMoAgRBAWtGBEAgAygCACIL +LwG2ASIGQQtPDQEgCyAGQQFqIgM7AbYBIAsgBkEMbGoiAUEEaiAEKQIANwIAIAFBDGogBEEIaigC +ADYCACALIAZBAnRqQYgBaiAPNgIAIAsgA0ECdGpBuAFqIAg2AgAgCCADOwG0ASAIIAs2AgAMAgtB +wLvJAEEwQfC7yQAQ5isAC0G0uskAQSBBgLzJABDmKwALCyARIAU2AgggESAJNgIEIBEgDDYCACAC +QeAAaiQADAELQaS6yQAQo0sACyAAKAIMIgAgACgCCEEBajYCCCAHKAI0IAcoAjxBAnRqQYgBagsg +B0HQAGokAAvRAgEBfyMAQRBrIgMkACAAAn9BACABIAJBkefWAEEHEIA8DQAaQQEgASACQZjn1gBB +ChCAPA0AGkECIAEgAkGi59YAQRIQgDwNABpBAyABIAJBtOfWAEEUEIA8DQAaQQQgASACQcjn1gBB +GhCAPA0AGkEFIAEgAkGr5dYAQRgQgDwNABpBBiABIAJBw+XWAEEYEIA8DQAaQQcgASACQdvl1gBB +GRCAPA0AGkEIIAEgAkH05dYAQRkQgDwNABpBCSABIAJBjebWAEEWEIA8DQAaQQogASACQaPm1gBB +FhCAPA0AGkELIAEgAkG55tYAQRcQgDwNABpBDCABIAJB2ubWAEEQEIA8DQAaQQ0gASACQeLn1gBB +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 +kM4AIAAoAjQiBUEYaikDACIBIAFCkM4AWhsgAVAbVARAIANBIGogACkDGBCaMiADKAIoIQAgAykD +ICEBIANBEGoQhk8QmjICf0ECIAMpAxAiAiABVA0AGiACIAF9IQEgAyAAIAMoAhgiBEsEfkECIAFQ +DQEaIARBgJTr3ANqIQQgAUIBfQUgAQsgBCAAaxDgHCADKQMAIQICQCAFKQMIIgFCkBxaBEAgBUEQ +aigCACIEIAFCkBxScg0BC0EAIQRCkBwhAQtBACABIAJWDQAaIAQgAygCCE0gASACUnILIgAgAEEC +RnIhBAsgA0EwaiQAIARBAXEL7gICAX8CfiMAQRBrIgEkACABENEyIAEpAwAhAiABKQMIIQMgAEGA +gICAeDYCSCAAQQA2AiAgAEHgAWpBADYCACAAQoCAgIDAADcD2AEgAEHQAWpCCDcDACAAQcgBakIA +NwMAIABCgICAgMAANwPAASAAQbgBakIENwMAIABBsAFqQgA3AwAgAEKAgICAgAE3A6gBIABBADYC +OCAAQoCAgIDAADcDYCAAQegAakIANwMAIABB8ABqQgQ3AwAgAEH4AGpCgICAgMAANwMAIABBgAFq +QgA3AwAgAEGIAWpCCDcDACAAQZABakKAgICAgAE3AwAgAEGYAWpCADcDACAAQaABakIINwMAIABB +xABqQQA2AgAgAEEANgI8IAAgAzcDGCAAQewBakEANgIAIABCgICAgMAANwLkASAAIAI3AxAgAEGA +gICAeDYCVCAAQQhqQfDCwAApAwA3AwAgAEHowsAAKQMANwMAIAFBEGokAAveAgEEfyMAQeAAayID +JAACQAJAAkACQAJAIAEtABBBAWsOAwMAAgELAAsgA0EMOgAQIANBEGoQ5DogASgCACEFIAEoAgQh +BkEYQQQQqzkiBEEAOgAUIAQgBjYCBCAEIAU2AgAgA0EIaiIFQaC00AA2AgQgBSAENgIAIAEgAykD +CDcCCAsgA0HEAGogAUEIaiIEIAIQyEQgAygCREGAgICAeEcEQCADQdgAaiIFIANBzABqKAIANgIA +IAMgAykCRDcDUCAEEJk2QQshAiADQUBrIAUoAgA2AAAgACADKQIQNwIQIABBGGogA0EYaikCADcC +ACAAQSBqIANBIGooAgA2AgAgAyADKQNQNwA4IAAgAykANTcAASAAQQhqIANBPGopAAA3AABBASEE +DAILQQMhBEEMIQIMAQtBoIfEAEEjQciUxAAQ5isACyABIAQ6ABAgACACOgAAIANB4ABqJAALtQIC +BH8BfiMAQTBrIgIkACACQRhqIAEQiUwCQAJAIAIoAhgiBCACKAIcIgVB1PbHAEENEIA8DQBBASED +IAQgBUHh9scAQQwQgDwNAEECIQMgBCAFQe32xwBBDhCAPA0AQQMhAyAEIAVB+/bHAEENEIA8DQBB +BCEDIAQgBUGI98cAQQgQgDwNACACQShqIAFBCGooAgA2AgAgAiABKQIAIgY3AyACQCAGp0GAgICA +eEYEQCACKAIkIQQgAkEIaiACQShqKAIAIgEQ7h8gAigCDCIDIAQgARDNTxoMAQsgAkEQaiACQSBq +EJ8hIAIoAhQhASACKAIQIQMLIAAgAzYCBCAAQQU2AgAgAEEIaiABNgIADAELIAAgAzYCACABKAIA +QYCAgIB4Rg0AIAEQiD8LIAJBMGokAAuxAgEHfyMAQfAAayIGJAAgASgCkAEiByAHKAIAIgJBAWo2 +AgACQCACQQBIDQAgBiABQSBqEKsxIAEoApQBIgIgAigCACIDQQFqNgIAIANBAEgNACABKAKYASID +IAMoAgAiBEEBajYCACAEQQBIDQAgASgCnAEiBCAEKAIAIgVBAWo2AgAgBUEASA0AIAEoAqABIgUg +BSgCACIIQQFqNgIAIAhBAEgNACAAIAc2ApABIAAgASkDADcDACAAQQhqIAFBCGopAwA3AwAgAEEQ +aiABQRBqKQMANwMAIABBGGogAUEYaikDADcDACABLQCkASEBIABBIGogBkHwABDNTxogACABOgCk +ASAAIAU2AqABIAAgBDYCnAEgACADNgKYASAAIAI2ApQBIAZB8ABqJAAPCwALkQIBA38jAEEQayIC +JAACQAJ/AkAgAUGAAU8EQCACQQA2AgwgAUGAEEkNASABQYCABEkEQCACIAFBDHZB4AFyOgAMIAIg +AUEGdkE/cUGAAXI6AA1BAiEDQQMMAwsgAiABQQZ2QT9xQYABcjoADiACIAFBDHZBP3FBgAFyOgAN +IAIgAUESdkEHcUHwAXI6AAxBAyEDQQQMAgsgACgCCCIEIAAoAgBGBH8gACAEEKc1IAAoAggFIAQL +IAAoAgRqIAE6AAAgACAAKAIIQQFqNgIIDAILIAIgAUEGdkHAAXI6AAxBASEDQQILIQQgAyACQQxq +IgNyIAFBP3FBgAFyOgAAIAAgAyAEEO5JCyACQRBqJABBAAugAgEEfyMAQRBrIgQkAAJAIAEoAiAi +AkUEQCABKAIAIAFBADYCAARAIAEoAgwhAyABKAIIIQICQCABKAIEIgVFBEADQCADBEAgA0EBayED +IAIoAuQBIQIMAQVBACEDQQAhAQwDCwALAAsgAiEBIAUhAgsgBCADNgIMIAQgATYCCCAEIAI2AgQg +BEEEahC4KQsgAEEANgIADAELIAEgAkEBazYCIAJAAkAgASgCACICBEAgASgCBEUNAQsgAg0BQfj1 +wwAQo0sACyABQQhqIQIgAUEMaigCACEDA0AgAigCACECIAMEQCADQQFrIQMgAkHkAWohAgwBCwsg +AUIANwIIIAEgAjYCBCABQQE2AgALIAAgAUEEahC+DwsgBEEQaiQAC6ACAQR/IwBBEGsiBCQAAkAg +ASgCICICRQRAIAEoAgAgAUEANgIABEAgASgCDCEDIAEoAgghAgJAIAEoAgQiBUUEQANAIAMEQCAD +QQFrIQMgAigCuAEhAgwBBUEAIQNBACEBDAMLAAsACyACIQEgBSECCyAEIAM2AgwgBCABNgIIIAQg +AjYCBCAEQQRqEL0pCyAAQQA2AgAMAQsgASACQQFrNgIgAkACQCABKAIAIgIEQCABKAIERQ0BCyAC +DQFB+PXDABCjSwALIAFBCGohAiABQQxqKAIAIQMDQCACKAIAIQIgAwRAIANBAWshAyACQbgBaiEC +DAELCyABQgA3AgggASACNgIEIAFBATYCAAsgACABQQRqEL8PCyAEQRBqJAAL9AMBCH8jAEEQayIG +JAACQCABKAIgIgJFBEAgASgCACABQQA2AgAEQCABKAIMIQMgASgCCCECAkAgASgCBCIERQRAA0Ag +AwRAIANBAWshAyACKAJgIQIMAQVBACEDQQAhAQwDCwALAAsgAiEBIAQhAgsgBiADNgIMIAYgATYC +CCAGIAI2AgQgBkEEahC5KQsgAEEANgIADAELIAEgAkEBazYCIAJAAkAgASgCACICBEAgASgCBEUN +AQsgAg0BQfj1wwAQo0sACyABQQhqIQIgAUEMaigCACEDA0AgAigCACECIAMEQCADQQFrIQMgAkHg +AGohAgwBCwsgAUIANwIIIAEgAjYCBCABQQE2AgALIAAhAiMAQRBrIgckACABQQRqIggoAgghCSAI +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 +AgwgAkHAm8wANgIIAn8gAi0AAEUEQCACQcCbzABBBCAAELsbDAELIAJBCGpBsLPMABCXQUUNAiAA +IAIoAgQQzi8LIgENAiACIAIpAwA3AwggAkEIahDpQCEBDAILIAIoAgQgARCcFiEBDAELEJI2IQEL +IAJBEGokACABC+YCAQN/IwBBwAJrIgQkACACIAIoAgAiBUEBajYCACAFQQBIBEAACyAEQZgCakEA +NgIAIARBkAJqQQA2AgAgBEGMAmpBADoAACAEQQA2AogCIARBnAJqIgVBBGpB/////wEQpxogBUEA +OgAYIAVB/////wE2AgAgBEGwAWoiBiIFQQEQpxogBUICNwMYIAQgAjYCuAIgBEEIaiIFQQRqQf// +//8BEKcaIAVBGGogBkGQARDNTxogBUH/////ATYCAEGwAUEIEKs5IgZCgYCAgBA3AwAgBkEIaiAF +QagBEM1PGiAFIANBMBDNTxogBEHQAGogAEEYaikDADcDACAEQcgAaiAAQRBqKQMANwMAIARBQGsg +AEEIaikDADcDACAEIAApAwA3AzhB6ABBCBCrOSIAQoGAgIAQNwMAIABBCGogBUHQABDNTxogACAG +NgJgIAAgAjYCXCAAIAE2AlggBEHAAmokACAAC50CAgJ+A38jAEEwayIDJAAgA0EIahD/FRD7DgJA +AkAgAykDCCIBIAApAwAiAlggAygCECIEIAAoAggiBUkgASACUnJxRQRAIAEgAlQNAiABIAJ9IQEg +BCAFSQRAIAFQDQMgAUIBfSEBIARBgJTr3ANqIQQLIAEgASAEIAVrIgVBgJTr3ANuIgStfCIBVg0B +An9BACABIAApAxAiAlQNABpBASABIAJSDQAaIABBGGooAgAgBSAEQYCU69wDbGtNCyADQTBqJAAP +C0Hsx9EAQSZB8MjRABCfNwALIANBJGpCADcCACADQQE2AhwgA0HYxtEANgIYIANBvMbRADYCICAD +QRhqQajH0QAQyzAAC0G4x9EAQSNB3MfRABDXIgALiwIBBX8jAEHwAmsiAiQAIAJBKGoQ8UogAkEY +akGQtNIAKQMANwMAIAJBEGpBiLTSACkDADcDACACQQhqQYC00gApAwA3AwAgAkIANwMgIAJB+LPS +ACkDADcDACACQYACaiIDIAIgARCVCiACQZABaiIEIAMgAUEgahCVCiADIAQgAUFAaxCVCiACQagB +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 +KQIANwIAIABBCGogAkEIaikCADcCAAwBCyAEIAcgAygCBCACENMSIARBBGohByAEKAIABEAgACAD +NgIQIAAgAikCADcCACAAIAcpAgA3AhQgAEEIaiACQQhqKQIANwIAIABBHGogB0EIaigCADYCAAwB +CyAAQQA2AgAgACAHKQIANwIEIABBEGogAzYCACAAQQxqIAdBCGooAgA2AgAgAhCtRwsgBEEQaiQA +IwBBMGsiCiQAAn8gACgCAARAIApBGGogAEEYaikCADcDACAKQRBqIABBEGopAgA3AwAgCkEIaiAA +QQhqKQIANwMAIAogACkCADcDACAKQQA2AiwgCkEANgIkIApBJGohBiMAQdAAayIHJAACfyAKKAIU +RQRAIAooAhAhBBCKRCEAIAdBCGoiAkEANgIEIAIgADYCACAHKAIMIQMgByAHKAIIIgw2AhAgByAD +NgIUIAdBOGogCkEIaikCADcDACAHIAopAgA3AzAgB0EQaiIIKAIAIgAvAboCIgJBC08EQEG0uskA +QSBBsLvJABDmKwALIAAgAkEBajsBugIgACACQQR0aiILIAdBMGoiDykCADcCACALQQhqIA9BCGop +AgA3AgAgB0HEAGoiCyACNgIIIAsgADYCACALIAgoAgQ2AgQgACACQQxsaiIAQbQBaiAGKQIANwIA +IABBvAFqIAZBCGooAgA2AgAgBygCRCAHKAJMIARBATYCCCAEIAM2AgQgBCAMNgIAQQxsakG0AWoM +AQsgB0EgaiAKQRRqIgBBCGooAgA2AgAgByAAKQIANwMYIAdBOGogCkEIaikCADcDACAHIAopAgA3 +AzAgB0EkaiEPIAdBMGohDiAKQRBqIRUjAEGAAWsiAyQAIANBFGohCyMAQdAAayIEJAACQAJAAkAg +B0EYaiIIKAIAIg0vAboCQQtPBEBBASEMIAgoAggiAkEFTw0BQQQhAAwCCyAEQQxqIAggDiAGEIwp +IAtBADYCACALQTRqIAQoAhQ2AgAgCyAEKQIMNwIsDAILAkACQCACIgBBBWsOAgIBAAsgAkEHayEC +QQAhDEEGIQAMAQtBACEMQQUhAEEAIQILIAQgADYCCCAEIA02AgAgBCAIKAIENgIEIARBDGoiAEEI +aiAEEIpEIggQyQwgAEEoakEANgIAIAAgCDYCJCAAIAQpAgA3AgAgBEEQaiAEQTRqIAwbKAIAIQgg +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 +DAMLIAAgAi0ACToAAUEADAELIAAgAyABENgjNgIEQQELOgAACyACQSBqJAALkgIBAn8jAEEgayIC +JAAgAkEIaiABELwWAkACQAJ/IAItAAhFBEAgAi0ACQ0CIAJBBTYCECABIAJBEGoQgDEMAQsgAigC +DAshASAAQQE6AAAgACABNgIEDAELIAACfwJAIAItAApBIkcEQCABIAJBH2pBzI3SABCFBSEDDAEL +IAFBADYCCCABQRRqIgMgAygCAEEBajYCACACQRBqIAFBDGogARD7BQJAIAIoAhBBAkcEQCACQQhq +IAIoAhQgAigCGBDxIyACLQAIRQ0BIAIoAgwhAwwCCyAAIAIoAhQ2AgQgAEEBOgAADAMLIAAgAi0A +CToAAUEADAELIAAgAyABENgjNgIEQQELOgAACyACQSBqJAALkgIBAn8jAEEgayICJAAgAkEIaiAB +ELwWAkACQAJ/IAItAAhFBEAgAi0ACQ0CIAJBBTYCECABIAJBEGoQgDEMAQsgAigCDAshASAAQQE6 +AAAgACABNgIEDAELIAACfwJAIAItAApBIkcEQCABIAJBH2pBvI3SABCFBSEDDAELIAFBADYCCCAB +QRRqIgMgAygCAEEBajYCACACQRBqIAFBDGogARD7BQJAIAIoAhBBAkcEQCACQQhqIAIoAhQgAigC +GBDyIyACLQAIRQ0BIAIoAgwhAwwCCyAAIAIoAhQ2AgQgAEEBOgAADAMLIAAgAi0ACToAAUEADAEL +IAAgAyABENgjNgIEQQELOgAACyACQSBqJAALkgIBAn8jAEEgayICJAAgAkEIaiABELwWAkACQAJ/ +IAItAAhFBEAgAi0ACQ0CIAJBBTYCECABIAJBEGoQgDEMAQsgAigCDAshASAAQQE6AAAgACABNgIE +DAELIAACfwJAIAItAApBIkcEQCABIAJBH2pBrI3SABCFBSEDDAELIAFBADYCCCABQRRqIgMgAygC +AEEBajYCACACQRBqIAFBDGogARD7BQJAIAIoAhBBAkcEQCACQQhqIAIoAhQgAigCGBDzIyACLQAI +RQ0BIAIoAgwhAwwCCyAAIAIoAhQ2AgQgAEEBOgAADAMLIAAgAi0ACToAAUEADAELIAAgAyABENgj +NgIEQQELOgAACyACQSBqJAALkgIBAn8jAEEgayICJAAgAkEIaiABELwWAkACQAJ/IAItAAhFBEAg +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 +ACAEQeQAaigCADYCGAwCCyADQRBqQgA3AgAgA0EBNgIIIANB0LzJADYCBCADIANBHGo2AgwgA0EE +akHYvMkAEMswAAsgACABNgIEIABBAjYCACAAQQhqIAI2AgALIANBIGokAAuUAgEEfyMAQSBrIgMk +AAJAIAEoAlgiBARAIAJBAWohBSABLwHgASIGBEAgACACNgIcIAAgATYCGCAAIAI2AhQgACAFNgII +IAAgBDYCBCAAQQA2AgAgACAGQQFrIgE2AgwgACAEIAFBAnRqQeQBaigCADYCEAwCCyAELwHiAQRA +IAAgAjYCHCAAIAI2AhQgACABNgIQIABBADYCDCAAIAU2AgggACAENgIEIABBATYCACAAIARB6AFq +KAIANgIYDAILIANBEGpCADcCACADQQE2AgggA0HQvMkANgIEIAMgA0EcajYCDCADQQRqQdi8yQAQ +yzAACyAAIAE2AgQgAEECNgIAIABBCGogAjYCAAsgA0EgaiQAC5UCAQR/IwBBIGsiAyQAAkAgASgC +mAYiBARAIAJBAWohBSABLwGcBiIGBEAgACACNgIcIAAgATYCGCAAIAI2AhQgACAFNgIIIAAgBDYC +BCAAQQA2AgAgACAGQQFrIgE2AgwgACAEIAFBAnRqQaAGaigCADYCEAwCCyAELwGeBgRAIAAgAjYC +HCAAIAI2AhQgACABNgIQIABBADYCDCAAIAU2AgggACAENgIEIABBATYCACAAIARBpAZqKAIANgIY +DAILIANBEGpCADcCACADQQE2AgggA0HQvMkANgIEIAMgA0EcajYCDCADQQRqQdi8yQAQyzAACyAA +IAE2AgQgAEECNgIAIABBCGogAjYCAAsgA0EgaiQAC5UCAQR/IwBBIGsiAyQAAkAgASgC8BEiBARA +IAJBAWohBSABLwH4EiIGBEAgACACNgIcIAAgATYCGCAAIAI2AhQgACAFNgIIIAAgBDYCBCAAQQA2 +AgAgACAGQQFrIgE2AgwgACAEIAFBAnRqQYATaigCADYCEAwCCyAELwH6EgRAIAAgAjYCHCAAIAI2 +AhQgACABNgIQIABBADYCDCAAIAU2AgggACAENgIEIABBATYCACAAIARBhBNqKAIANgIYDAILIANB +EGpCADcCACADQQE2AgggA0HQvMkANgIEIAMgA0EcajYCDCADQQRqQdi8yQAQyzAACyAAIAE2AgQg +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 +IwBBwAFrIgMkACADQbQBaiAFKAKgASIJQSxqEL9JIANBGGogCUEgahDBKCADKAIcIQwgAygCGCEO +IANBgAFqIAlBCGoQiiwgA0GMAWogCUEoai0AAMBBAnQiEUHY5ckAaigCACARQczlyQBqKAIAEPYd +IANBmAFqIAlBFGoQmxAgA0GsAWogA0G8AWooAgAiCTYCACADQeQAaiADQZQBaigCADYCACADQfAA +aiADQaABaigCADYCACADQdgAaiADQYgBaigCADYCACADQfwAaiAJNgIAIAMgAykCtAEiGTcCpAEg +AyADKQKMATcCXCADIAMpA5gBNwNoIAMgAykDgAE3A1AgAyAZNwJ0IANBIGogA0HQAGpBMBDNTxog +BSgCnAEiCUEIaiEFAkAgCUEQaiIJKAIARQRAIAMgBRDxLiADKQMAIRkgBkEEaiADQSBqQTAQzU8a +IAZBPGogGTcCACAGQThqIAw2AgAgBkE0aiAONgIAIAZBBDYCAAwBCyADQRBqIAUQ8S4gAykDECEZ +IANBCGogCRDxLiADKQMIIRogBiADQSBqQTAQzU8iBSAZNwJAIAUgGjcCOCAFIAw2AjQgBSAONgIw +CyADQcABaiQAAkBBxJPbACgCAA0AQbSC2wAQ+z4iBUH/AXFFDQBBACEDQbSC2wAoAgAgBRD1LkUN +AEG0gtsAKAIAIgZBKGooAgAhCSAGQSRqKAIAIQwgBigCHCEOIAQgBkEgaigCACIFBH8gBEEANgK4 +AyAEIAk2ArQDIAQgDDYCsAMgBCAFNgKsA0EBIQMgDgVBAAs2AqgDIARBzANqIARBqANqQbDFzAAQ +si0gBEHsA2pCADcCACAEQQE2AuQDIARB3MXMADYC4AMgBEHoocwANgLoAyAEIAMgBU8Ef0EABSAE +IAk2ArQDIAQgDDYCsAMgBCAFNgKsAyAEIAM2ArgDIANBAWohAyAOCzYCqAMgBEH4A2ogBEGoA2pB +sMXMABCyLSAEQQhqIAQoAtQCQQhqEPQ1IAQgBCkDCDcCjAQgBCADIAVJBH8gBCADNgK4BCAEIAk2 +ArQEIAQgDDYCsAQgBCAFNgKsBCAOBUEACzYCqAQgBEGUBGoiBSAEQagEaiIDQbDFzAAQsi0gBEHI +A2pB5MXMADYCACAEQbwDakGYr8wANgIAIARBxANqIARBvARqNgIAIARBuANqIARBjARqNgIAIARB +9LnMADYCsAMgBCAEKALYAkEIajYCvAQgBCAFNgLAAyAEIARB+ANqNgK0AyAEIARB4ANqNgKsAyAE +IARBzANqNgKoAyADIAZBHGogBEGoA2oQ4UFBtILbACgCACADEMQ0CyANQQhqIARBuAFqQagBEM1P +GiANQbABaiAEQeACakHIABDNTxogDUIDNwMACyAEQcAEaiQAAkAgAikD4AFCDFEEQEGggICAeCEJ +DAELIAJB1ANqKAIAIRMgAkHQA2ooAgAhECACKAKQAyEPIAJB2ANqIgQgFkGwARDNTxogFiACQeAB +akGwARDOTxDfHiAEEMMGIAJBlANqIQQCfyAPQQRGBEAgAkHYA2oiA0EEciAEQTwQzU8aIAJBmARq +IBA2AgAgAkELNgLYAyACQcQFaiAKIAMQhhsgAkGQBWogAkHQBWopAgA3AwAgAkGYBWogAkHYBWop +AgA3AwAgAkGgBWogAkHgBWooAgA2AgAgAiACKQLIBTcDiAUgAigCxAUhDyADENgEQZ+AgIB4DAEL +IAJBiAVqIARBPBDNTxogAkEIahDpJCACKAIMIRQgAigCCCEVQZWAgIB4CyEJIAJB2ANqIAJBiAVq +QTwQzU8aCyACQbwGahCfHyACIAoQty06AOcFAkBBxJPbACgCAA0AQfCI2wAQ+z4iBEH/AXFFDQBB +8IjbACgCACAEEPUuRQ0AQfCI2wAoAgAiA0EoaigCACEFIANBJGooAgAhBiADKAIcIQ0gAiADQSBq +KAIAIgQEfyACQQA2AvABIAIgBTYC7AEgAiAGNgLoASACIAQ2AuQBQQEhCyANBUEACzYC4AEgAkH0 +BWogAkHgAWpBxLHOABC1LSACQZQFakIANwIAIAJBATYCjAUgAkHwsc4ANgKIBSACQcSVzgA2ApAF +IAIgBCALTQR/QQAFIAIgBTYC7AEgAiAGNgLoASACIAQ2AuQBIAIgCzYC8AEgC0EBaiELIA0LNgLg +ASACQYgGaiACQeABakHEsc4AELUtIAIgCigCwAFBCGoQ9DUgAiACKQMANwKcBiACIAQgC0sEfyAC +IAU2AuwBIAIgBjYC6AEgAiAENgLkASACIAs2AvABIAtBAWohCyANBUEACzYC4AEgAkGkBmogAkHg +AWpBxLHOABC1LSACIAJBH2o2ArgGIAIgBCALSwR/IAIgCzYC1AUgAiAFNgLQBSACIAY2AswFIAIg +BDYCyAUgDQVBAAs2AsQFIAJBvAZqIgogAkHEBWoiBEHEsc4AELUtIAJBjAJqQYiyzgA2AgAgAkGA +AmpBiLLOADYCACACQfQBakH4sc4ANgIAIAJBiAJqIAQ2AgAgAkH8AWogAkG4Bmo2AgAgAkHwAWog +AkGcBmo2AgAgAkHErs4ANgLoASACIANBHGo2AvAFIAJBBDYC7AUgAiAKNgKEAiACIAJBpAZqNgL4 +ASACIAJBiAZqNgLsASACIAJBiAVqNgLkASACIAJB9AVqNgLgASACIAJB4AFqNgLoBSACIAJB5wVq +NgLEBUHwiNsAKAIAIAJB6AVqEMQ0CyABIA82AgQgASAJNgIAIAFBCGogAkHYA2pBPBDNTxogAUHE +AGogAkHgAWpB3AAQzU8aIAEgFDYCrAEgASAVNgKoASABIBM2AqQBIAEgEDYCoAEgAkHQBmokACAI +EKtLIAhBDGoQwE0gCEEYahC/TQwCCyABQaCAgIB4NgIADAELIAFBoICAgHg2AgACQAJAAkAgAkEB +aw4EAQMDAgALIAhBNGoQzz8MAgsgCEE0ahC/PyAIQcwAahCQRSAIQUBrEKtLDAELIAhBNGoQsEsg +CEFAaxC8SwsgCEHAAWokAAJAIAcoAtABQaCAgIB4RgRAIAdBoICAgHg2AiAMAQsgB0EgaiAHQdAB +akGwARDNTxoLIAdBGGogB0EgahD0LCAHAn8CQCAHAn8CQAJAIAcoAhhBAWsOAgMBAAsgBygCHAwB +C0GAAQs2AtQBQQAMAQsgByAHKAIcNgLUAUEBCzYC0AEgB0EIaiAHQdABahDyMSAHKAIMIQogBygC +CCEBIBIgEigCAEEBazYCACAAIAFBAEc2AgggACAKQQAgARs2AgQgAEEAIAogARs2AgAgB0GAA2ok +AAuCAgEDfyMAQYADayICJAAgAkEQaiABEKAvIAIoAhQhAyACQdABaiACKAIQEO83AkAgAigC0AFB +oICAgHhGBEAgAkGggICAeDYCIAwBCyACQSBqIAJB0AFqQbABEM1PGgsgAkEYaiACQSBqEPQsIAIC +fwJAIAICfwJAAkAgAigCGEEBaw4CAwEACyACKAIcDAELQYABCzYC1AFBAAwBCyACIAIoAhw2AtQB +QQELNgLQASACQQhqIAJB0AFqEPIxIAIoAgwhBCACKAIIIQEgAyADKAIAQQFrNgIAIAAgAUEARzYC +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 +ABsgBEEcTQ0dIAMgEUIiiKdBP3FBwZ/SAGotAAA6ABwgBEEdRg0eIAMgEUIciKdBP3FBwZ/SAGot +AAA6AB0gBEEeTQ0fIAMgEaciBkEWdkE/cUHBn9IAai0AADoAHiAEQR9GDSAgAyAGQRB2QT9xQcGf +0gBqLQAAOgAfIAchAyAPQQJrIgYgDE0NAAsgAUEYaiEDDCALQQBBAEHksdYAEOIbAAtBAUEBQfSx +1gAQ4hsAC0ECQQJBhLLWABDiGwALQQNBA0GUstYAEOIbAAtBBEEEQaSy1gAQ4hsAC0EFQQVBtLLW +ABDiGwALQQZBBkHEstYAEOIbAAtBB0EHQdSy1gAQ4hsAC0EIQQhB9LLWABDiGwALQQlBCUGEs9YA +EOIbAAtBCkEKQZSz1gAQ4hsAC0ELQQtBpLPWABDiGwALQQxBDEG0s9YAEOIbAAtBDUENQcSz1gAQ +4hsAC0EOQQ5B1LPWABDiGwALQQ9BD0Hks9YAEOIbAAtBEEEQQYS01gAQ4hsAC0ERQRFBlLTWABDi +GwALQRJBEkGktNYAEOIbAAtBE0ETQbS01gAQ4hsAC0EUQRRBxLTWABDiGwALQRVBFUHUtNYAEOIb +AAtBFkEWQeS01gAQ4hsAC0EXQRdB9LTWABDiGwALQRhBGEGUtdYAEOIbAAtBGUEZQaS11gAQ4hsA +C0EaQRpBtLXWABDiGwALQRtBG0HEtdYAEOIbAAtBHEEcQdS11gAQ4hsAC0EdQR1B5LXWABDiGwAL +QR5BHkH0tdYAEOIbAAtBH0EfQYS21gAQ4hsACyAJIAlBA3AiBmshBAJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAA0AgAyAETwRAAkACQCAGQQFrDgIBABALIAIgB00NAyAHIApqIg8gBCALai0AACID +QfwBcUECdkHBn9IAai0AADoAACAEQQFqIgwgCU8NBCAHQQFqIgEgAk8NBUEDIQYgD0EBaiADQQR0 +IAsgDGotAAAiAUEEdnJBP3FBwZ/SAGotAAA6AAAgB0ECaiIDIAJPDQYgAUECdEE8cSEBDA4LIAIg +B00NBkECIQYgByAKaiAEIAtqLQAAIgFB/AFxQQJ2QcGf0gBqLQAAOgAAIAIgB0EBaiIDSwRAIAFB +BHRBMHEhAQwOCyADIAJBlLDWABDiGwALIAVBCGogAyADQQNqIgMgCyAJQaSw1gAQkywgBSgCDCEN +IAUoAgghDiAFIAcgB0EEaiIHIAogAkG0sNYAEJMsIA1FDQYgBSgCBCIMRQ0HIAUoAgAiDyAOLQAA +IgFB/AFxQQJ2QcGf0gBqLQAAOgAAIA1BAU0NCCAMQQFNDQkgDyABQQR0IA4tAAEiAUEEdnJBP3FB +wZ/SAGotAAA6AAEgDUECTQ0KIAxBAk0NCyAPIAFBAnQgDi0AAiIBQQZ2ckE/cUHBn9IAai0AADoA +AiAMQQNHBEAgDyABQT9xQcGf0gBqLQAAOgADDAELC0EDQQNBpLHWABDiGwALIAcgAkHEr9YAEOIb +AAsgDCAJQdSv1gAQ4hsACyABIAJB5K/WABDiGwALIAMgAkH0r9YAEOIbAAsgByACQYSw1gAQ4hsA +C0EAQQBBxLDWABDiGwALQQBBAEHUsNYAEOIbAAtBAUEBQeSw1gAQ4hsAC0EBQQFB9LDWABDiGwAL +QQJBAkGEsdYAEOIbAAtBAkECQZSx1gAQ4hsACyADIApqIAFBwZ/SAGotAAA6AAAgBiAHaiEHCyAF +QUBrJAAgByEGIAZBvp/SAC0AAAR/IBBBCGogCiACIAZBjNTSABDGNSAQKAIIIQEgECgCDCELQQAh +A0EAIAZrQQNxIQkCQANAIAMgCUYNASADIAtHBEAgASADakE9OgAAIANBAWohAwwBCwsgCyALQeSp +1gAQ4hsACyAJBUEACyAGaksEQEGc1NIAQSpByNTSABDXIgALIBBBEGokACAIKAIQIQEgCEEcaiAK +IAIQjwQCQCAIKAIcRQRAIAKtIREgCiECDAELIAgpAiAhESABQYCAgIB4Rw0CIAohAQsgACARPgII +IAAgAa0gAq1CIIaENwIAIAhBMGokAA8LQaT70gBBLUHU+9IAENciAAsgCCARNwIoIAggATYCHCAI +IAqtIAKtQiCGhDcCIEHk+9IAQQwgCEEcakGE99IAQfD70gAQiRgAC1QAIAAgAUHy59YAQeLn1gBB +2ubWAEG55tYAQaPm1gBBjebWAEH05dYAQdvl1gBBw+XWAEGr5dYAQcjn1gBBtOfWAEGi59YAQZjn +1gBBkefWABCrVQvAAgEFfyMAQaABayIEJAACQAJAAkACQAJAAkAgAS0AFEEBaw4DBAACAQsACyAE +QYOAgIB4NgIQIARBEGoQ5TogASgCACEFIAEoAgQhBiABQQhqKAIAIQdBEEEEEKs5IgNBADoADCAD +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 +BEAgAygC7AEhASADQdgBahCaGSAEDAYLIANB8AFqIgEpAgAhKSADKALsASECIANBjAJqIANB4AFq +KAIANgIAIAEgA0GoAWopAwA3AwAgA0H4AWogA0GwAWopAwA3AwAgA0GAAmogA0G4AWooAgA2AgAg +AyADKQPYATcChAIgAyADKQOgATcD6AEgA0H4AGoiASADQegBakEoEM1PGiADQcwBahCsSyADICE2 +AkAgA0HEAGogAUEoEM1PGiADICk3AnAgAyACNgJsIA0CfyADQThqKAIABEAgDSAkQZT7ywBB7PrL +ABDeFzYCBCADQeAAahCaGSADQewAahDMGUEBDAELIA1BBGogA0FAa0E4EM1PGkEACzYCAAwGC0HI +lswAQQoQ8B8hAUEADAQLIAMpAvABISlBASEEQQAhDyABIQIMAgsgA0GoAWogGkEIaikAADcDACAD +QbABaiAaQRBqKQAANwMAIANBuAFqIBpBGGooAAA2AgAgAyAaKQAANwOgASADKADpASEhQQEhHAwB +CwsgAyAENgK8AUEACyECIANBzAFqEKxLIARFIAJBAXFyRQRAIB0QmhkLIA1BATYCACANIAE2AgQL +IAMQ9EggA0GQAmokAAwBCyABIBVBD2pB5JjKABCBOCECIA1BATYCACANIAI2AgQgAS0AAEEFRwRA +IAEQ5zQMAQsgAUEEahDMGQsgFUEQaiQAIAYoAjgEQCAGKAI8IQEgC0ECNgIAIAsgATYCBAwCCyAG +QTBqIAZB0ABqKAIANgIAIAZBEGogBkHcAGopAgA3AwAgBkEYaiAGQeQAaikCADcDACAGQSBqIAZB +7ABqKQIANwMAIAYgBkHIAGopAgA3AyggBiAGQdQAaikCADcDCCAGQUBrKQIAISkgBigCPAshASAL +ICk3AgggCyABNgIEIAsgIDYCACALIAYpAyg3AhAgCyAGKQMINwIcIAtBGGogBkEwaigCADYCACAL +QSRqIAZBEGopAwA3AgAgC0EsaiAGQRhqKQMANwIAIAtBNGogBkEgaikDADcCACAjRQ0BCyAbEIg/ +CyAGQaABaiQAIAkoAlRBAkcEQCAUIAlB1ABqQTwQzU8aDAILIAkoAlgQ5xAhASAUQQI2AgAgFCAB +NgIEDAELIBQgCSgCADYCBCAUQQI2AgALIAlBkAFqJAACQAJ/IA4oAjwiDUECRwRAIA4oAkAhAiAO +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 +BiACKAIENgIAIAJBCGoQ30QLIAJBMGokACAEKAIIIQECQCAEKAIQIgJBloCAgHhHBEAgBEEsaiAE +QRxqKAIANgIAIAQgBCkCFDcCJCAEIAI2AiAgAUH/AXFFBEAgBEEIaiECIwBBEGsiASQAAkAgBEEg +aiIDKAIAQZWAgIB4RgRAIAFBDToAACABQcCa0gBByJjSABCgFSEDIAJBATYCACACIAM2AgQMAQsg +AUEIaiADQQhqKQMANwMAIAEgAykDADcDACACIAEQ4QULIAFBEGokACAAAn4gBCgCCEUEQCAAIAQp +AxA3AwhCAAwBCyAAIAQoAgw2AghCAgs3AwAMAgsjAEEQayICJAACfyAEQSBqIgEoAgBBlYCAgHhG +BEAgAkENOgAAIAJBwJrSAEHImNIAEKAVDAELIAJBCGogAUEIaikDADcDACACIAEpAwA3AwAgAhD2 +GAshASACQRBqJAAgACABBH4gACABNgIIQgIFQgELNwMADAELIABCAjcDACAAIAE2AggLIARBMGok +AAuEAQEBfyMAQUBqIgMkACADIAE2AgwgAyAANgIIIANBNGpBiQ02AgAgA0EcakICNwIAIANBAjYC +FCADQfDD0wA2AhAgA0HLDTYCLCADQQI2AjwgAyACNgI4IAMgA0EoajYCGCADIANBOGo2AjAgAyAD +QQhqNgIoIANBEGoQhxQgA0FAayQACxoAIAAgASACIANBrgVB2KLXAEGwotcAELZVC4EDAQh/IwBB +EGsiAyQAAkAgASgCACIERQRAIABBADYCECAAIAE2AgwgACACKQIANwIAIABBCGogAkEIaigCADYC +AAwBCyABKAIEIQUgAiEGA0ACQCAELwGOAiIIQQxsIQlBACEHQX8hAgJAAn8CQANAIAcgCUYEQCAI +IQIMAgsgBCAHaiEKIAdBDGohByACQQFqIQICQCAGIApBBGoQiUFB/wFxDgIAAQILC0EADAELIAUN +AUEBCyEIIAMgBDYCBCADIAg2AgAgA0EMaiACNgIAIANBCGogBTYCAAwBCyAFQQFrIQUgBCACQQJ0 +akGQAmooAgAhBAwBCwsgA0EEaiECIAMoAgAEQCAAIAE2AgwgACAGKQIANwIAIAAgAikCADcCECAA +QQhqIAZBCGooAgA2AgAgAEEYaiACQQhqKAIANgIADAELIABBgICAgHg2AgAgACACKQIANwIEIABB +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 +OgABDAILIARBBDoAAQwBCyAEQQU6AAELIARBADoAACADLQCoCw0DIAMtAKkLIQlBAAwECyADQRU2 +AqgGDAoLIANBCDYCqAYgASADQagGahCAMQshAkEBDAELIAMoAqwLIQJBAQtBACEEQQEhDARAIAIh +AQwJCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCUH/AXEOCQABAgME +BQYIBwgLIA9BA0cEQEGMj8AAQQkQ8R8hAQwcCyADQagGaiADQcwIahDZOCADKAKsBiEBIAMoAqgG +Ig9BA0YNCiADKAKwBiEEIANB1AhqEK9CIAMgBDYC3AggAyABNgLYCCADIA82AtQIDBILIA0EQEHi +lMAAQQcQ8R8hAQwbCyADQagGaiADQcwIahDTOCADKAKoBiINBEAgAygCrAYhCiADQeAIahCQRSAD +IAo2AuQIIAMgDTYC4AgMEgsgAygCrAYhAUEAIQ1BASERDBsLIBNB/wFxRQ0OQemUwABBChDxHyEB +DBkLIAMoAowJQYCAgIB4RwRAQfOUwABBChDxHyEBDBkLIANBqAZqIANBzAhqEJ05IAMoAqwGIQEg +AygCqAYiEUGAgICAeEYNGCADKAKwBiEEIANBjAlqEPtAIAMgBDYClAkgAyABNgKQCSADIBE2AowJ +DA8LIAMoApgJRQ0LQf2UwABBCxDxHyEBDBcLIAMoAuAKBEBBiJXAAEETEPEfIQEMFwsgA0GoBmog +A0HMCGoQlTggAygCrAYhASADKAKoBg0WIAMpArAGIRsgA0HgCmoQkUEgAyAbNwLoCiADIAE2AuQK +IANBATYC4AoMDQsgAygC8ApBgICAgHhGDQhBm5XAAEEfEPEfIQEMFQsCQCAPQQNHIgRFBEAgA0Go +BmpBjI/AABCOTSADKAKoBiIBQQNHBEAgAyADKQKsBjcChAsgAyABNgKACwwCCyADKAKsBgwVCyAD +QYgLaiADQdwIaigCADYCACADIAMpAtQINwOACwsCQAJAIA0iAkUEQCADQagGakHilMAAEJBNIAMo +AqgGIgJFDQEgAygCrAYhCgsgAyAKNgKUCyADIAI2ApALIBNB/wFxDQFB6ZTAAEEKEPAfIQEMBwsg +AygCrAYhAQwHCwJAIAMoAowJQYCAgIB4RiIMRQRAIANBoAtqIANBlAlqKAIANgIAIAMgAykCjAk3 +A5gLDAELIANBqAZqQfOUwABBChCPTSADKAKoBiIBQYCAgIB4Rg0FIAMgAykCrAY3ApwLIAMgATYC +mAsLAkAgAygCmAkiFEUEQCADQagGakH9lMAAEO0WIAMoAqgGIhQEQCADKAKsBiEMIANBqAtqIANB +sAZqQcABEM1PGgwCCyADKAKsBiEBIANBmAtqEIg/DAcLIAMoApwJIQwgA0GoC2ogGEHAARDNTxoL +IAMoAuAKDQEgA0GoBmoQ6EgMAgtBASERIANBzAhqEKw/IgFFDQoMFAsgA0GwBmogGUEIaigCADYC +ACADIBkpAgA3A6gGCyADQcAEaiADQfAIaikDADcDACADQcgEaiADQfgIaikDADcDACADQdAEaiAD +QYAJaikDADcDACADQaAGaiADQaALaigCADYCACADIAMpA+gINwO4BCADIAMpA5gLNwOYBiADKAKI +CyENIAMoAoQLIQEgAygCgAshCSADKAL0CiETIAMoAvgKIQ8gAygC8AohBCADQdgEaiADQagLakHA +ARDNTxogA0GwBGogA0GwBmooAgA2AgAgAyADKQOoBjcDqARBACAPIARBgICAgHhGIhIbIQ9BASAT +IBIbIRNBACAEIBIbIRIMEwtBAyEPDBALIAMoAqwGIQELIANBkAtqEPo+CyANRSERIANBgAtqEL8/ +DA4LIAMoAswIIhEQ5xYiAQ0MIANBqAZqIBEQkyggAygCqAZBgICAgHhGDQIgA0HwCmoQuEIgA0H4 +CmogEigCADYCACADIAMpAqgGNwPwCgwDCyADKALMCCIREOcWIgENCyADQagGaiAREK4NIAMoAqwG +IQEgAygCqAYiEUUNCyADQagLaiASQcABEM1PGiADKAKYCQRAIANBmAlqEK5LCyADIAE2ApwJIAMg +ETYCmAkgGCADQagLakHAARDNTxoMAgsgAygCzAgiExDnFiIBDQogA0GoBmogExDZDSADLQCoBg0A +IANBgAlqIBRBGGopAAA3AwAgA0H4CGogFEEQaikAADcDACADQfAIaiAUQQhqKQAANwMAIAMgFCkA +ADcD6AhBASETDAELIAMoAqwGIQEMCQsgAygCzAghAQwACwALQQRB4JXAAEGshsAAEN4XIQEMDwsg +AygC7AghAQwOC0ECQeCVwABBrIbAABDeFyEBDA8LIAMoAqwLIQEMDgsgAygCrAYhAQwOC0EAIQQg +ASADQagGahCAMQshAUEBIQwLQQEhEQsgA0HwCmoQuEIgA0HgCmoQkUEgAygCmAkEQCADQZgJahCu +SwsgAygCjAlBgICAgHhHIAxxBEAgA0GMCWoQiD8LIBEgDUEAR3EEQCADQeAIahD6PgtBAyEJIA9B +A0YgBHINACADQdQIahC/PwsgBSAFLQAkQQFqOgAkIAUQjRMhBCADQbwGaiADQaAGaigCADYCACAD +IA02ArAGIAMgATYCrAYgAyAMNgLYBiADIBQ2AtQGIAMgCjYC0AYgAyACNgLMBiADIA82AsgGIAMg +EzYCxAYgAyASNgLABiADIAMpA5gGNwK0BiADIAk2AqgGIANB3AZqIANB2ARqQcABEM1PGiADQbQI +aiADQdAEaikDADcCACADQawIaiADQcgEaikDADcCACADQaQIaiADQcAEaikDADcCACADQcQIaiAD +QbAEaigCADYCACADIAQ2AsgIIAMgAykDuAQ3ApwIIAMgAykDqAQ3ArwIAkAgCUEDRwRAIAQNASAD +QQhqIANBsAZqQZgCEM1PGgwPCyAERQ0NIANByAhqEN8dDA0LIANBqAZqENAyQQMhCSAEIQEMDQsg +A0EYNgKoBiAFIANBqAZqEIAxCyEBIBVBAzYCACAVIAE2AgQMDQsgAygCrAYLIQEgA0HoCGoQrRkL +IANBmAlqEK5LDAELIAMoAqwGIQELIANB4ApqEIg/DAELIAMoAqwGIQELIANB8ApqEPo+CyADQZgL +ahC/PwtBAyEJCyAFIAUtACRBAWo6ACQgBRCfDCEEIANBvAZqIANBoARqKAIANgIAIAMgDDYCsAYg +AyABNgKsBiADIBQ2AtAGIAMgAjYCzAYgAyATNgLIBiADIBI2AsQGIAMgCjYCwAYgAyADKQOYBDcC +tAYgAyAJNgKoBiADQdQGaiADQdACakHIARDNTxogA0GqCGogA0G4AmopAwA3AQAgA0GyCGogA0HA +AmopAwA3AQAgA0G6CGogA0HIAmovAQA7AQAgA0HECGogA0GoAmooAgA2AgAgAyANNgGeCCADIA87 +AZwIIAMgBDYCyAggAyADKQOwAjcBogggAyADKQOgAjcCvAgCQCAJQQNGBEAgBA0BDAILIARFBEAg +A0EIaiADQbAGakGYAhDNTxoMAwsgA0GoBmoQ0DJBAyEJIAQhAQwCCyADQcgIahDfHQtBAyEJCyAJ +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 +AQN/IwBBEGsiBCQAAkACQAJAAkACQAJAAkAgAS0AQEEBaw4DAwACAQsACyABKAIAKAIMIQMgAUE8 +akEAOgAAIAEgA0EIajYCBAsgAUEEaiIDIAIQuAciAkUNAiAEIAI2AgwgAxDZP0EAIQNBACECIARB +DGoQ1EwiBSgCAEUNASAFKALEASICIAIoAgAiBUEBajYCACAFQQBODQEAC0GgxMAAQSNBoIPBABDm +KwALIARBDGoQmkwgAUEBOgBADAELIAFBAzoAQEEBIQMLIAAgAzYCACAAIAI2AgQgBEEQaiQAC+IB +AQN/IwBBEGsiBCQAAkACQAJAAkACQAJAAkAgAS0AQEEBaw4DAwACAQsACyABKAIAKAIMIQMgAUE8 +akEAOgAAIAEgA0EIajYCBAsgAUEEaiIDIAIQugciAkUNAiAEIAI2AgwgAxDZP0EAIQNBACECIARB +DGoQ1EwiBSgCAEUNASAFKALEASICIAIoAgAiBUEBajYCACAFQQBODQEAC0HgxsIAQSNBzIDDABDm +KwALIARBDGoQmkwgAUEBOgBADAELIAFBAzoAQEEBIQMLIAAgAzYCACAAIAI2AgQgBEEQaiQAC/UB +AQZ/AkAgASgCAEEDRiICDQBBACABIAIbIQQgAUEkaiEHIAEoAmwhBgNAIAcQwDciAg0BAkAgBCgC +AEECRg0AIwBBEGsiAiQAIAJBCGogBBC/CyACKAIIIQMgAigCDCACQRBqJABBACADGyICRQ0AIAFB +ADYCOCABQQA2AiggASACKAIEIgU2AkAgASACKAIAIgM2AjwgASAFNgIwIAEgAzYCLCABIAIoAghB +ACADGzYCRCABIANBAEciAjYCNCABIAI2AiQMAQsLIARByABqEMA3IgINACABQQM2AgBBACECQQAh +BgsgACACNgIEIAAgBjYCAAvFAQICfwF+IwBBQGoiAyQAAkACQAJAIAEoAgAiBEUNACADQTBqIAQg +ASgCBCACEM8SIAMoAjANACADQSBqIgIgA0E8aigCADYCACADIAMpAjQ3AxggAyABNgIkIANBBGog +A0EYahD6FSADKAIEDQELIABBADYCAAwBCyADQShqIANBFGooAgAiATYCACACIANBDGopAgAiBTcD +ACAAIAU3AgAgAEEIaiABNgIAIAMgAykCBDcDGCADQQRqEPo+CyADQUBrJAALEAAgACABIAJBhOzE +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 +ACABQQZrIAUgBkHkAGxrQf//A3FBAXRBqNfZAGovAAA7AAAgAUECayADIARB5ABsa0H//wNxQQF0 +QajX2QBqLwAAOwAACyAApyEBIAJBAmshAgJAA0AgAUGPzgBNBEAgAUHjAE0EQCACQQJqIQIMAwsF +IAJBAmsgASABQZDOAG4iAUHwsX9saiIDQeQAbiIEQQF0QajX2QBqLwAAOwAAIAIgAyAEQeQAbGtB +AXRBqNfZAGovAAA7AAAgAkEEayECDAELCyACIAEgAUH//wNxQeQAbiIBQeQAbGtB//8DcUEBdEGo +19kAai8AADsAAAsCQCABQQlNBEAgAkEBayABQTBqOgAADAELIAJBAmsgAUEBdEGo19kAai8AADsA +AAsLywEBAn8jAEEgayIDJAACQAJAIAEgASACaiIBSw0AQQggACgCACICQQF0IgQgASABIARJGyIB +IAFBCE0bIgRBf3NBH3YhAQJAIAJFBEAgA0EANgIYDAELIAMgAjYCHCADQQE2AhggAyAAKAIENgIU +CyADQQhqIAEgBCADQRRqENEQIAMoAgwhASADKAIIRQRAIAAgBDYCACAAIAE2AgQMAgsgAUGBgICA +eEYNASABRQ0AIAEgA0EQaigCABDETwALEMowAAsgA0EgaiQAC9MBAgF/AX4jAEEgayIFJAACQCAA +QQACf0GAlOvcAyABIANUDQAaIAEgA30hAyACIARJBEBBgJTr3AMgA1ANARogA0IBfSEDIAJBgJTr +3ANqIQILIAMgAiAEayICQYCU69wDbiIErXwiBiADVA0BIAIgBEGAlOvcA2xrCyICIAJBgJTr3ANG +IgIbNgIIIABCACAGIAIbNwMAIAVBIGokAA8LIAVBFGpCADcCACAFQQE2AgwgBUHk69kANgIIIAVB +0OrZADYCECAFQQhqQbTs2QAQyzAAC8sBAQJ/IwBBIGsiAyQAAkACQCABIAEgAmoiAUsNAEEIIAAo +AgAiAkEBdCIEIAEgASAESRsiASABQQhNGyIEQX9zQR92IQECQCACRQRAIANBADYCGAwBCyADIAI2 +AhwgA0EBNgIYIAMgACgCBDYCFAsgA0EIaiABIAQgA0EUahCkDyADKAIMIQEgAygCCEUEQCAAIAQ2 +AgAgACABNgIEDAILIAFBgYCAgHhGDQEgAUUNACABIANBEGooAgAQxE8ACxDKMAALIANBIGokAAvF +AQEFfyMAQRBrIgUkACAAKAIAIgYgBi8B4gEiB0EBaiIGIAAoAgggASACEPojIAAoAgBB3ABqIAYg +ACgCCCADEPofIAVBCGogACAHQQJqIgcQxUEgACgCCCICQQFqIQMgBSgCCCEBIAJBAmoiCCAFKAIM +IglJBEAgASAIQQJ0aiABIANBAnRqIAkgAmtBAnRBCGsQzk8aCyABIANBAnRqIAQ2AgAgACgCACAG +OwHiASAAIAAoAghBAWogBxD7ISAFQRBqJAALuQEBBH8jAEHQAGsiAiQAIAJBLmogASABKAIIEI0J +IAACfwJAIAItAC4iAUECRg0AIAJBIGoiAyACQccAaikAADcDACACQRhqIgQgAkE/aikAADcDACAC +QRBqIgUgAkE3aikAADcDACACIAIpAC83AwggAUUNACAAIAIpAwg3AAEgAEEZaiADKQMANwAAIABB +EWogBCkDADcAACAAQQlqIAUpAwA3AABBAQwBC0EACzoAACACQdAAaiQAC9EBAQJ/IwBBIGsiBCQA +IAQgAzYCDCAEIAI2AggCQCABKAIAIgVFBEAgAEEANgIMIAAgATYCCCAAIAM2AgQgACACNgIADAEL +IARBEGogBSABKAIEIARBCGoQoBMgBEEUaiECIAQoAhAEQCAAIAE2AgggACAEKQIINwIAIAAgAikC +ADcCDCAAQRRqIAJBCGooAgA2AgAMAQsgAEEANgIAIAAgAikCADcCBCAAQRBqIAE2AgAgAEEMaiAC +QQhqKAIANgIAIARBCGoQ+j4LIARBIGokAAv5AgEIfyMAQSBrIgQkACAEIAM2AgwgBCACNgIIAkAg +ASgCACIFRQRAIABBADYCDCAAIAE2AgggACADNgIEIAAgAjYCAAwBCyAEQRBqIQYgASgCBCEHIARB +CGohCQNAAkAgBS8B5gIiAkEDdCEKQQAhCEF/IQMCQAJ/AkADQCAIIApGBEAgAiEDDAILIAUgCGoh +CyAIQQhqIQggA0EBaiEDAkAgCSALEIhBQf8BcQ4CAAECCwtBAAwBCyAHDQFBAQshAiAGIAU2AgQg +BiACNgIAIAZBDGogAzYCACAGQQhqIAc2AgAMAQsgB0EBayEHIAUgA0ECdGpB6AJqKAIAIQUMAQsL +IARBFGohAiAEKAIQBEAgACABNgIIIAAgBCkCCDcCACAAIAIpAgA3AgwgAEEUaiACQQhqKAIANgIA +DAELIABBADYCACAAIAIpAgA3AgQgAEEQaiABNgIAIABBDGogAkEIaigCADYCACAEQQhqEPo+CyAE +QSBqJAAL5wEAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQCdAkEDaw4HAAUBBgIDBAoLIABBoAJq +EKpADwsgAEGgAmoQ40cMBgsgAEHIAmoQwTUgAEGgAmoQlkEMBAsgAEGgAmoQwTUMBQsgAEGgAmoQ +4zAgAEH0AGoQlkEgAEHoAGoQlkEgAEEcahCFTA8LIABBxAJqEME1DAMLIABBpAJqEKtACyAAQcwB +ahDhEiAAQcgBahCWQSAAQbgBahCfQwsgAEEAOgCcAgsgAEH0AGoQlkEgAEHoAGoQlkEgAEEwahDj +MCAAQRxqEIVMCwvnAQACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAK4CQQNrDgcAAgMHBAUGAQsg +AEGwAmoQqkALDwsgAEHUAmoQwTUMBwsgAEGwAmoQ40cMBQsgAEH4AmoQwTUgAEGwAmoQwjUMAwsg +AEGwAmoQwTUMBAsgAEGwAmoQ4zAMAwsgAEG0AmoQq0ALIABBpAJqEJZBIABB2AFqEOESIABBEGoQ +iD8gAEHIAWoQn0MLIABBADoArAILIABBhAFqEJZBIABB+ABqEJZBIAAtAK0CBEAgAEFAaxDjMAsg +AEEAOgCtAiAAQSxqEIVMCwsAIAAgAUEIEKdVCwsAIAAgAUEMEKdVCwsAIAAgAUEQEKdVC9EBAQJ/ +IwBBIGsiBCQAIAQgAzYCDCAEIAI2AggCQCABKAIAIgVFBEAgAEEANgIMIAAgATYCCCAAIAM2AgQg +ACACNgIADAELIARBEGogBSABKAIEIARBCGoQzxIgBEEUaiECIAQoAhAEQCAAIAE2AgggACAEKQII +NwIAIAAgAikCADcCDCAAQRRqIAJBCGooAgA2AgAMAQsgAEEANgIAIAAgAikCADcCBCAAQRBqIAE2 +AgAgAEEMaiACQQhqKAIANgIAIARBCGoQ+j4LIARBIGokAAu/AQIBfwF+IwBBMGsiBSQAIAUgASAC +IAMQjhAgAAJ/IAUoAgAEQCAFQShqIAVBEGopAgA3AwAgBUEgaiAFQQhqKQIANwMAIAUgBSkCADcD +GCAFQRhqIAQQjw8aQQAMAQsgBSgCBCAFQQxqKAIAQQxsaiIBQdwAaiICKQIAIQYgAiAEKQIANwIA +IAAgBjcCBCABQeQAaiIBKAIAIQIgASAEQQhqKAIANgIAIABBDGogAjYCAEEBCzYCACAFQTBqJAAL +vwECAX8BfiMAQTBrIgUkACAFIAEgAiADEI4QIAACfyAFKAIABEAgBUEoaiAFQRBqKQIANwMAIAVB +IGogBUEIaikCADcDACAFIAUpAgA3AxggBUEYaiAEELUNGkEADAELIAUoAgQgBUEMaigCAEEMbGoi +AUHcAGoiAikCACEGIAIgBCkCADcCACAAIAY3AgQgAUHkAGoiASgCACECIAEgBEEIaigCADYCACAA +QQxqIAI2AgBBAQs2AgAgBUEwaiQAC8gBAgN/AX4jAEEgayICJAACQAJAIAEoAiAiAwR/IAEgA0EB +azYCICABEJUaIgFFDQEgAiABEJcbIAIoAgAiA0UNAiACKQIEIQUgAiADNgIUIAIgBTcCGCACIAJB +FGoQsR8gAUEIaiACQQhqKAIANgIAIAEgAikCADcCACADIAVCIIinIgFBDGxqQTBqIQQgAyABQQJ0 +akEEagVBAAshASAAIAQ2AgQgACABNgIAIAJBIGokAA8LQejNyQAQo0sAC0HIzckAEKNLAAu4AgIF +fwF+IwBBIGsiAiQAAkACQCABKAIgIgQEfyABIARBAWs2AiAgARCaGiIDRQ0BIAMoAgghBiADKAIA +IQEgAygCBCEFAkADQCABLwH2ESAGSwRAIAIgBjYCCCACIAU2AgQgAiABNgIADAILIAEoAgAiBARA +IAVBAWohBSABLwH0ESEGIAQhAQwBCwsgAiABNgIEIAJBADYCACACQQhqIAU2AgALIAIoAgAiAUUN +AiACKQIEIQcgAiABNgIUIAIgBzcCGCACIAJBFGoQ1B8gA0EIaiACQQhqKAIANgIAIAMgAikCADcC +ACABIAdCIIinIgRBxAFsakGIAWohAyABIARBDGxqQQRqBUEACyEBIAAgAzYCBCAAIAE2AgAgAkEg +aiQADwtB6M3JABCjSwALQcjNyQAQo0sAC6EEAQx/IwBBIGsiBCQAIAQgAzYCDCAEIAI2AggCQCAB +KAIAIgZFBEAgAEEANgIMIAAgATYCCCAAIAM2AgQgACACNgIADAELIAEoAgQhAiAEQQhqIQ0jAEEQ +ayIDJAAgA0EEaiELIARBEGoiBwJ/A0AjAEEQayIFJAAgBSACIgg2AgwgBSAGNgIIIAVBCGooAgAi +CS8B5gIiDkEDdCEKQX8hAkEBIQwCQANAIApFBEAgDiECDAILIApBCGshCiACQQFqIQIgDSAJEIhB +IQ8gCUEIaiEJAkAgD0H/AXEOAgABAgsLQQAhDAsgBSACNgIEIAUgDDYCACAFKAIAIQIgA0EMaiAF +KAIENgIAIANBCGogCDYCACADIAY2AgQgAyACNgIAIAVBEGokACADKAIARQRAIAcgCykCADcCBCAH +QQxqIAtBCGooAgA2AgBBAAwCCyADKAIMIQYgAygCBCEIIAMoAggiAgRAIAJBAWshAiAIIAZBAnRq +QegCaigCACEGDAELCyAHIAg2AgQgB0EMaiAGNgIAIAdBCGpBADYCAEEBCzYCACADQRBqJAAgBEEU +aiECIAQoAhAEQCAAIAE2AgggACAEKQIINwIAIAAgAikCADcCDCAAQRRqIAJBCGooAgA2AgAMAQsg +AEEANgIAIAAgAikCADcCBCAAQRBqIAE2AgAgAEEMaiACQQhqKAIANgIAIARBCGoQ+j4LIARBIGok +AAugBAEMfyMAQSBrIgQkACAEIAM2AgwgBCACNgIIAkAgASgCACIGRQRAIABBADYCDCAAIAE2Aggg +ACADNgIEIAAgAjYCAAwBCyABKAIEIQIgBEEIaiENIwBBEGsiAyQAIANBBGohCyAEQRBqIgcCfwNA +IwBBEGsiBSQAIAUgAiIINgIMIAUgBjYCCCAFQQhqKAIAIgkvAV4iDkEDdCEKQX8hAkEBIQwCQANA +IApFBEAgDiECDAILIApBCGshCiACQQFqIQIgDSAJEIhBIQ8gCUEIaiEJAkAgD0H/AXEOAgABAgsL +QQAhDAsgBSACNgIEIAUgDDYCACAFKAIAIQIgA0EMaiAFKAIENgIAIANBCGogCDYCACADIAY2AgQg +AyACNgIAIAVBEGokACADKAIARQRAIAcgCykCADcCBCAHQQxqIAtBCGooAgA2AgBBAAwCCyADKAIM +IQYgAygCBCEIIAMoAggiAgRAIAJBAWshAiAIIAZBAnRqQeAAaigCACEGDAELCyAHIAg2AgQgB0EM +aiAGNgIAIAdBCGpBADYCAEEBCzYCACADQRBqJAAgBEEUaiECIAQoAhAEQCAAIAE2AgggACAEKQII +NwIAIAAgAikCADcCDCAAQRRqIAJBCGooAgA2AgAMAQsgAEEANgIAIAAgAikCADcCBCAAQRBqIAE2 +AgAgAEEMaiACQQhqKAIANgIAIARBCGoQ+j4LIARBIGokAAuhBAEMfyMAQSBrIgQkACAEIAM2Agwg +BCACNgIIAkAgASgCACIGRQRAIABBADYCDCAAIAE2AgggACADNgIEIAAgAjYCAAwBCyABKAIEIQIg +BEEIaiENIwBBEGsiAyQAIANBBGohCyAEQRBqIgcCfwNAIwBBEGsiBSQAIAUgAiIINgIMIAUgBjYC +CCAFQQhqKAIAIgkvAYoBIg5BA3QhCkF/IQJBASEMAkADQCAKRQRAIA4hAgwCCyAKQQhrIQogAkEB +aiECIA0gCRCIQSEPIAlBCGohCQJAIA9B/wFxDgIAAQILC0EAIQwLIAUgAjYCBCAFIAw2AgAgBSgC +ACECIANBDGogBSgCBDYCACADQQhqIAg2AgAgAyAGNgIEIAMgAjYCACAFQRBqJAAgAygCAEUEQCAH +IAspAgA3AgQgB0EMaiALQQhqKAIANgIAQQAMAgsgAygCDCEGIAMoAgQhCCADKAIIIgIEQCACQQFr +IQIgCCAGQQJ0akGMAWooAgAhBgwBCwsgByAINgIEIAdBDGogBjYCACAHQQhqQQA2AgBBAQs2AgAg +A0EQaiQAIARBFGohAiAEKAIQBEAgACABNgIIIAAgBCkCCDcCACAAIAIpAgA3AgwgAEEUaiACQQhq +KAIANgIADAELIABBADYCACAAIAIpAgA3AgQgAEEQaiABNgIAIABBDGogAkEIaigCADYCACAEQQhq +EPo+CyAEQSBqJAALwAEBC38jAEEQayICJAAgASgCBCEIIAJBCGogASgCCCIFELUWIAVBDGwhCSAC +KAIMIQYgAigCCCIKIQEDQCABRSADIAlGckUEQCADIAhqIgQoAgAiC0EDRgRAIAIgBEEEahD0HyAC +KAIAIQwgAigCBCEHCyADIAZqIgQgCzYCACAEQQhqIAc2AgAgBEEEaiAMNgIAIAFBAWshASADQQxq +IQMMAQsLIAAgBTYCCCAAIAY2AgQgACAKNgIAIAJBEGokAAvVAwIGfwN+IwBBQGoiASQAAkAgAC0A +CEUEQCABQQhqIAAoAgBB6ABqEIxKIAEoAggNASABIAEoAgwiAjYCLCABIAFBEGotAAA6ADAgAUE0 +aiIDIAAoAgQQxR4gAUEIaiIEIAJBCGogAxDPFiAEEMcUIQMgACgCBEEMaiEEIwBBIGsiAiQAIAMo +AgwEfyADQRBqIAQQ7hkhCCACIAQ2AgwgAiADNgIUIAhCGYhC/wCDQoGChIiQoMCAAX4hCSADKAIE +IgUgCKdxIQQgAiACQQxqNgIQIAMoAgAhBkEAIQMDQCACIAQgBmopAAAiCCAJhSIKQn+FIApCgYKE +iJCgwIABfYNCgIGChIiQoMCAf4M3AxgDQAJAIAIgAkEYahCJLCACKAIAIgdFBEAgCCAIQgGGg0KA +gYKEiJCgwIB/g1BFDQEgBCADQQhqIgNqIAVxIQQMAwsgAkEQaiACKAIEIARqIAVxEJk8RQ0BCwsL +IAdBAEcFQQALIAJBIGokACABQSxqEJ8fIABBAToACCABQUBrJAAPC0Ggm9AAQSNBwLfQABDmKwAL +IAEgASgCDDYCNCABIAFBEGotAAA6ADhBlJ7QAEErIAFBNGpBkJ/QAEGwt9AAEIkYAAuzAQEBfyAC +QQFrIQQgAAJ/AkACQAJAAkAgAUH//wNxRQRAIARB//8DcUEoTw0DIARB//8DcSIBQSxPDQEgACAB +QQR0IANqKAIANgIEDAQLIARB//8DcUEETw0CIAJBJ2pB//8DcSIBQSxPDQEgAUEEdCADaigCACIB +RQ0CIAAgATYCBAwDCyABQSxBrKzRABDiGwALIAFBLEG8rNEAEOIbAAsgAEEBOgABQQEMAQtBAAs6 +AAALjAYCCH8FfiMAQdABayIGJAAgBkEIaiIEIAEQ/A8gBikCCCELIAFBsAJqEMMqIQkgAUGQAmop +AwAhCiAGQTBqIQMCQCABQZgCaiICKAIIRQRAIANBADYCCCADQQA2AgAMAQsgAigCACIFBEAgAyAF +IAIoAgQQiAUMAQtBwP3SABCjSwALIAZBPGohAwJAIAFBpAJqIgIoAghFBEAgA0EANgIIIANBADYC +AAwBCyACKAIAIgUEQCADIAUgAigCBBCABwwBC0HA/dIAEKNLAAsgAUHwAWoiA0EYaikDACEMIAMp +AxAhDSMAQSBrIgIkAAJAIAMoAgQiCEUEQCAEQQhqQdDT0wApAwA3AgAgBEHI09MAKQMANwIADAEL +IAJBEGohByMAQRBrIgUkACAFIAhBAWoQ9hACQCAFKAIAIggEQCAFKQIEIQ4gByAFKAIMNgIMIAcg +DjcCBAwBCyAHIAUpAgQ3AgQLIAcgCDYCACAFQRBqJAAgAkEIaiIHIAJBGGopAgA3AwAgAiACKQIQ +NwMAIAIoAgAgAygCACIIIAIoAgQiBUEJahDNTyAFQX9zQShsaiAIIAMoAgRBf3NBKGxqIAVBKGxB +KGoQzU8aIAIgAykCCDcCCCAEQQhqIAcpAwA3AgAgBCACKQMANwIACyACQSBqJAAgBEEYaiAMNwMA +IAQgDTcDECAGIAo3AygjAEEwayIDJAAgBCkDICEKIANBADYCICADQQA2AhAgAyAEQSxqKAIAIgU2 +AiggAyAEKAIoIgI2AiQgAyAFNgIYIAMgAjYCFCADIARBMGooAgBBACACGzYCLCADIAJBAEciAjYC +HCADIAI2AgwgAEEwaiICQQhqIANBDGoQoxwgAiAKNwMAIAJBHGogBEE8aigCADYCACACIAQpAjQ3 +AhQgBEEoahDDGSAEENVKIANBMGokACABKQPIASEKIAZBEGogAUHQAWoQjS4gBkEgaiABQeABahCN +LiAAIAk2AlAgACALNwMAIAYgCjcDCCAAQQhqIARBKBDNTxogBkHQAWokAAvaAQEFfyMAQeAAayIC +JAAgASgCDCEDIAJBBGoiBCABEL9JIAIgAzYCECABLQBxIQEgAkEUaiIFIAMQr04gAkEgaiIDIAIo +AgwiBhCvTiACQdgAaiAGNgIAIAJByABqQQE2AgAgAkE4akEBNgIAIAIgAigCCDYCVCACIAIpAiQ3 +AkwgAkH+vNMANgJEIAIgAikCGDcCPCACQf280wA2AjQgAkEBNgIwIAIgAToAXyACIAJB3wBqNgIs +IAAgAkEsakEGEJsRIAMQiD8gBRCIPyAEEIg/IAJB4ABqJAALCwAgACABQQIQtlMLCwAgACABQQQQ +tlML5AIBBH8jAEEQayIDJAACQANAAkAgACgCCCIBIAAoAgQiAk8EQCABIAJHDQMgA0EENgIEIAAg +A0EEahDPNCEBDAELIAAoAgAgAWotAAAiAkGs+dgAai0AAEUEQCAAIAFBAWo2AggMAgsgAkHcAEcE +QCACQSJHBEAgA0EQNgIEIAAgA0EEahDPNCEBDAILIAAgAUEBajYCCEEAIQEMAQsgACABQQFqNgII +QQAhBCMAQRBrIgEkACABQQRqIAAQniECQCABLQAERQRAAkACQAJAIAEtAAUiAkHuAGsOCAQBAQEE +AQQCAAsCQCACQeIAaw4FBAEBAQQACyACQSJGIAJBL0ZyIAJB3ABGcg0DCyABQQw2AgQgACABQQRq +EM80IQQMAgsgAUEEaiAAEMoNIAEvAQRFDQELIAEoAgghBAsgAUEQaiQAIAQiAUUNAQsLIANBEGok +ACABDwsgASACQfz42AAQ4hsAC8oBAQF/IwBBEGsiDyQAIAAoAhQgASACIABBGGooAgAoAgwRBgAh +ASAPQQA6AA0gDyABOgAMIA8gADYCCCAPQQhqIAMgBCAFIAYQzgggByAIIAkgChDOCCALIAwgDSAO +EM4IIQIgDy0ADCEBAn8gAUEARyAPLQANRQ0AGkEBIAENABogAigCACIALQAcQQRxRQRAIAAoAhRB +x7/aAEECIAAoAhgoAgwRBgAMAQsgACgCFEHGv9oAQQEgACgCGCgCDBEGAAsgD0EQaiQAC8EBAQV/ +IwBBEGsiBSQAIAAoAgAiBiAGLwHiASIHQQFqIgkgACgCCCIIIAEgAhD6IyAGQdwAaiAJIAggAxD6 +HyAFQQhqIAAgB0ECaiIGEMVBIAAoAggiAkEBaiEDIAUoAgghASACQQJqIgcgBSgCDCIISQRAIAEg +B0ECdGogASADQQJ0aiAIIAJrQQJ0QQhrEM5PGgsgASADQQJ0aiAENgIAIAAoAgAgCTsB4gEgACAA +KAIIQQFqIAYQ+yEgBUEQaiQAC8gBAQZ/IwBBEGsiBSQAIAAoAgAiBCAELwFeIgRBAWoiBiAAKAII +IAEgAhD6IyAAKAIAGiAAKAIIGiAFQQhqIgEgBEECaiIHNgIEIAEgACgCAEHgAGo2AgAgACgCCCIC +QQFqIQQgBSgCCCEBIAJBAmoiCCAFKAIMIglJBEAgASAIQQJ0aiABIARBAnRqIAkgAmtBAnRBCGsQ +zk8aCyABIARBAnRqIAM2AgAgACgCACAGOwFeIAAgACgCCEEBaiAHEJoiIAVBEGokAAu3AQECfyMA +QUBqIgMkACADQQxqIAEgAhDkNCADQRhqIAMoAhAgAygCFBD6DwJ/IAMoAhgiAkEKRgRAIAMoAhwM +AQsgAygCHCEBIANBPGogA0EoaigCADYCACADIAMpAiA3AjQgAyABNgIwIAMgAjYCLCADQSxqEN4P +CyEEIANBDGoQiD9BACEBIAAgAkEKRyICBH8gBAUgBBCfQCEBQQALNgIEIAAgATYCACAAIAI2Aggg +A0FAayQAC64BAQN/IwBBQGoiASQAIAAQqUUgAUEIaiAAELw3IAEoAgxBADYCACABQThqIABBEGop +AgA3AwAgAUEwaiAAQQhqKQIANwMAIAFBGGoiAiABQTRqKQIANwMAIAFBIGoiAyABQTxqKAIANgIA +IAEgACkCADcDKCABIAEpAiw3AxAgABCYBCABQRBqIgAQlkEgAEEEchCWQSACEJZBIAFBHGoQlkEg +AxCWQSABQUBrJAALhAIBA38jAEHQAGsiAyQAAkACQAJAAkACQAJAIAEtAAxBAWsOAwQAAgELAAsg +A0IENwMQIANBEGoQ7DQgASgCACEFQQhBBBCrOSIEQQA6AAQgBCAFNgIAIANBCGoiBUGwsNAANgIE +IAUgBDYCACADKAIIIQQgAUEIaiADKAIMIgU2AgAgASAENgIEDAELIAFBCGooAgAhBSABKAIEIQQL +IANBEGogBCACIAUoAgwRAwAgAykDEEIDUgRAIAAgA0EQakHAABDNTxogAUEEahCZNkEBIQQMAgsg +AEIENwMAQQMhBAwBC0Ggh8QAQSNBiIrEABDmKwALIAEgBDoADCADQdAAaiQAC8UBAgV/An4gASgC +DCEGIAEoAgAiAykDACEIAn4gASgCBCICRQRAQQAhAUEBIQRCAAwBC0EAIQECQCACQQFqIgStQih+ +IgdCIIinDQAgAiAHpyIFakEJaiICIAVJIAJB+f///wdPcg0AQQghAQsgAq0gAyAFa61CIIaECyEH +IAAgATYCICAAIAY2AhggACADNgIQIABBJGogBzcCACAAIAMgBGo2AgwgACADQQhqNgIIIAAgCEJ/ +hUKAgYKEiJCgwIB/gzcDAAuaAgECfyMAQZADayIEJAAgBCABEKAvIAQoAgQhBSAEKAIAIQEgBEEM +aiACIAMQtz4gBEEYaiABEOwwAkAgBCgCDEGAgICAeEYEQCAEQYCAgIB4NgKcAQwBCyAEQZwBaiAE +KAIQIgEgASAEKAIUahC9EyAEQQxqEIg/CyAEQbACaiAEQaQBaigCADYCACAEIAQpApwBNwOoAiAE +QagBaiIBIARBGGpBgAEQzU8aIARBADoAuAIjAEHwAWsiAiQAIAIgAUHoARDNTyIBIAE2AuwBIAFB +7AFqQfzAxgAQw1IhAiABKAJgQQNHBEAgARCqGwsgAUHwAWokACAFIAUoAgBBAWs2AgAgAEIANwIE +IAAgAjYCACAEQZADaiQAC6UCAQJ/IwBBgAJrIgQkACAEIAEQoC8gBCgCBCEFIAQoAgAhASAEQQxq +IAIgAxC3PiAEQRhqIAEQxzgCQCAEKAIMQYCAgIB4RgRAIARBgICAgHg2AnQMAQsgBEH0AGogBCgC +ECIBIAEgBCgCFGoQvRMgBEEMahCIPwsgBEGAAWoiAiAEQRhqQdgAEM1PGiAEQfQBaiAEQfwAaigC +ADYCACAEQQA6APgBIAQgBCkCdDcC7AEjAEGQAWsiASQAIAFBCGoiAyACQYABEM1PGiABIAM2AowB +IAFBjAFqQaC/xgAQw1IhAiABKAJ0QYKAgIB4RwRAIAFBCGoQmSwLIAFBkAFqJAAgBSAFKAIAQQFr +NgIAIABCADcCBCAAIAI2AgAgBEGAAmokAAvmXAIbfwJ+IwBBIGsiEyQAIBMgARC8FgJAAkAgEy0A +AEUEQAJAIBMtAAEEQCATLQACQe4ARg0BCyATQQhqIRYjAEHwAGsiBiQAIAZB2ABqIAEQvBYCQAJA +An8gBi0AWEUEQCAGLQBZDQIgBkEFNgIoIAEgBkEoahCAMQwBCyAGKAJcCyEBIBZBBDYCACAWIAE2 +AgQMAQsCQAJAIAYtAFpB+wBHBEAgASAGQe8AakHkrsAAEIYFIQIMAQsgASABLQAkQQFrIgc6ACQg +B0H/AXFFDQEgARC+QSAGQQE6AAwgBiABNgIIIAZBADYCECAGQQA2AiQgBkKAgICAgAE3AhwgBkEU +aiEcIAEhBwNAIAZB2ABqIAcQvBYCQAJAAkACQAJAIAYtAFhFBEAgBi0AWUUEQCAGQQM2AiggByAG +QShqEIAxIQIMAgsCQAJAIAYtAFoiA0EsRwRAQZaAgIB4IRAgA0H9AEYNBSAGLQAMDQEgBkEINgIo +IAcgBkEoahCAMSECDAQLIAYtAAwNACAHEL5BIAZBKGogBxC8FiAGLQAoBEAgBigCLCECDAQLIAYt +ACkEQCAGLQAqIQMMAgsgBiAUNgIYIAYgFTYCFCAGIBE2AhAgBkEFNgIoIAcgBkEoahCAMSECQQEh +EAwFCyAGQQA6AAwLAkAgA0EiRwRAIANB/QBGDQEgBiAUNgIYIAYgFTYCFCAGIBE2AhAgBkERNgIo +IAcgBkEoahCAMSECQQEhEAwFCyAHEL5BIAdBADYCCCAGQdgAaiAHQQxqIAcQuwggBigCXCECIAYo +AlgiA0ECRg0CIAYoAmAhBwJAIANFBEAgBkEoaiIDIAIgB0GUzMYAQQ0QgDwEf0GVgICAeAUgAyAH +NgIIIAMgAjYCBEGNgICAeAs2AgAMAQsjAEEQayIDJAAgBkEoaiIFIAIgB0GUzMYAQQ0QgDwEf0GV +gICAeAUgA0EIaiAHEO4fIAMoAgghBCADKAIMIAIgBxDNTyECIAUgBzYCDCAFIAI2AgggBSAENgIE +QYyAgIB4CzYCACADQRBqJAALQZeAgIB4IAYoAigiAiACQZaAgIB4RiICGyEQIB4gBikDMCACGyEe +IAYoAiwhAgwDCyAGIBQ2AhggBiAVNgIUIAYgETYCECAGQRU2AiggByAGQShqEIAxIQJBASEQDAML +QZeAgIB4IRAgBigCXCECDAELQZeAgIB4IRALAkACQAJAAkAgEEHr////B2oOAwEDAAILIAYgFDYC +GCAGIBU2AhQgBiARNgIQQQEhEAwDCyARBEAgBiAUNgIYIAYgFTYCFEEBIREgBkEBNgIQQeiZwABB +DRDxHyECQQEhEAwDCyAGQShqIAZBCGoQmzkgBigCKARAIAYgFDYCGCAGIBU2AhRBACERIAZBADYC +ECAGKAIsIQJBASEQDAMLIAYoAjAhFCAGKAIsIRVBASERDAQLIAYgHjcDUCAGIAI2AkwgBiAQNgJI +IAZB2ABqIAZBCGoQmTkgBigCWCIHQZWAgIB4RwRAIAZBMGogBkHQAGopAwA3AwAgBiAGKQNINwMo +IAYgBikDYDcDQCAGIAYoAlw2AjwgBiAHNgI4IAZBHGogBkEoahDXGgwECyAGIBQ2AhggBiAVNgIU +IAYgETYCECAGKAJcIQIgBkHIAGoQ/xxBASEQDAELIAYgFDYCGCAGIBU2AhQgBiARNgIQIBFFIRAC +QCARDQAgBkEoakIANwIAIAYoAihFBEAgBkEwaigCACEUIAYoAiwhFQwBCyAGKAIsIQIMAQsgBiAU +NgJcIAYgFTYCWCAGQShqIRkjAEHgAGsiByQAIAdBKGogBkEcahC1UgJAAkAgBygCKCICQZWAgIB4 +RwRAIAcgBykDMDcDECAHIAcoAiw2AgwgByACNgIIIAdBzABqQSw2AgAgB0G4zcYANgJIIAdBCDYC +RCAHQf3MxgA2AkAgB0EoaiEDIAdBQGshBCMAQbABayICJAACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkBBFSAHQQhqIgUoAgBBgICAgHhzIgkgCUEVTxtBAWsO +FQECAwQFBgcICQoLDA0ODxAREhMUFQALIAUtAAQhBSACQQA6AJABIAIgBToAkQEgAkGQAWogBEGg +2cMAEKAVIQUgA0GVgICAeDYCCCADIAU2AgAMFgsgAyAEIAUxAAQQhi8MFQsgAyAEIAUzAQQQhi8M +FAsgAyAEIAU1AgQQhi8MEwsgAyAEIAUpAwgQhi8MEgsgAyAEIAUwAAQQhy8MEQsgAyAEIAUyAQQQ +hy8MEAsgAyAEIAU0AgQQhy8MDwsgAyAEIAUpAwgQhy8MDgsgAyAEIAUqAgS7EIgvDA0LIAMgBCAF +KwMIEIgvDAwLIAUoAgQhBSACQQA2ApABIAJBCGogBSACQZABahDbDiADIAQgAigCCCACKAIMEOwq +DAsLIAMgBCAFQQhqKAIAIAVBDGooAgAQ7CoMCgsgAyAEIAUoAgQgBUEIaigCABDsKgwJCyADIAQg +BUEIaigCACAFQQxqKAIAEO0qDAgLIAMgBCAFKAIEIAVBCGooAgAQ7SoMBwsgAkEIOgCQASACQZAB +aiAEQaDZwwAQoBUhBSADQZWAgIB4NgIIIAMgBTYCAAwGCyACQQg6AJABIAJBkAFqIARBoNnDABCg +FSEFIANBlYCAgHg2AgggAyAFNgIADAULIAJBBzoAkAEgAkGQAWogBEGg2cMAEKAVIQUgA0GVgICA +eDYCCCADIAU2AgAMBAsgAkEJOgCQASACQZABaiAEQaDZwwAQoBUhBSADQZWAgIB4NgIIIAMgBTYC +AAwDCyACQYABaiIJIAVBCGooAgAiCCAIIAVBDGooAgBBBHRqEO5BIAJBKGohDCMAQRBrIggkAAJA +AkAgCSgCACIKBEAgCiAJKAIERw0BCyAMQYAGOwEADAELIAkgCkEQajYCAEEBIQUgCSAJKAIIQQFq +NgIIIAhBCGogChDiEAJAIAgtAAhFBEAgDCAILQAJOgABQQAhBQwBCyAMIAgoAgw2AgQLIAwgBToA +AAsgCEEQaiQAAkACfyACLQAoRQRAIAItACkiBUEDRgRAIAQoAgAgBCgCBBDwHwwCCyACQShqIAJB +gAFqEIQOIAIoAigiBEGVgICAeEcNAgsgAigCLAshBSADQZWAgIB4NgIIIAMgBTYCAAwDCyACQaQB +aiACQTRqKAIANgIAIAIgAikCLDcCnAEgAiAENgKYASACIAU2ApABIAJBMGogAkGIAWooAgA2AgAg +AiACKQKAATcDKCACQZgBaiEFIAJBKGoQ7CEiBEUNASADQZWAgIB4NgIIIAMgBDYCACAFEIseDAIL +IAUoAgghCSAFKAIEIQUgAkIANwIgIAIgBTYCGCACIAUgCUEFdGo2AhwgAkEQakEBIAkQ8EEQsRYg +AkEANgJMIAIgAikDEDcCRCACQaABaiENIAJB8ABqQQRyIQ4gAkHQAGpBBHIhFyAEKAIEIQogBCgC +ACELQQMhBQNAIAJB4ABqIQkjAEEQayIEJAACQAJAIAJBGGoiCCgCACIMBEAgDCAIKAIERw0BCyAJ +QZaAgIB4NgIADAELIAggDEEgajYCACAIIAxBEGo2AgggCCAIKAIMQQFqNgIMIAQgCyAKIAwQi0sg +BCgCAEGWgICAeEcEQCAJIAQpAwA3AwAgCUEIaiAEQQhqKQMANwMADAELIAkgBCgCBDYCBCAJQZeA +gIB4NgIACyAEQRBqJAACQAJAAkACQAJAAkACQCACKAJgQZeAgIB4RwRAIAJB2ABqIAJB6ABqKQMA +NwMAIAIgAikDYCIdNwNQIB2nIgRB6////wdqDgIBBAILIAIoAmQhBQwCCyAFQf8BcUEDRwRAIAsg +ChDxHyEFDAILIAJBGGoiBSgCCCEEIAVBADYCCCACQZABaiAEELFBEOIQIAItAJABRQ0FIAIoApQB +IQUMAQsgDiAXKQIANwIAIA5BCGogF0EIaigCADYCACACIAQ2AnAgAkEYaiIEKAIIIQkgBEEANgII +IAJBgAFqIAkQsUEQs1IgAigCgAFBlYCAgHhHBEAgDSACKQOAATcDACANQQhqIAJBiAFqKQMANwMA +IAJBmAFqIAJB+ABqKQMANwMAIAIgAikDcDcDkAEgAkHEAGogAkGQAWoQ1xoMBgsgAigChAEhBSAC +QfAAahCLHgsgAkHEAGoQ3EsMAQsgAkHQAGoQmEAgBUH/AXEiBUEDRwRAIAIoAkQiBEGVgICAeEYN +ASACIAIpAkg3AjQgAiAENgIwIAIgBTYCKCACQZgBaiACQSBqKQIANwMAIAIgAikCGDcDkAEgAkEw +aiEFIAJBkAFqELshIgQNAiADIAIpAyg3AwAgA0EQaiACQThqKQMANwMAIANBCGogBSkDADcDAAwG +CyALIAoQ8B8hBSACQcQAahDcSwsgA0GVgICAeDYCCCADIAU2AgAMBAsgA0GVgICAeDYCCCADIAQ2 +AgAgBRCLHgwDCyACLQCRASEFDAALAAsgAyACKQOQATcDACADQRBqIAJBoAFqKQMANwMAIANBCGog +BSkDADcDAAsgAkGwAWokAAJAAkACQAJ/IAcoAigiAiAHKAIwIgNBlYCAgHhGDQAaIAdB3ABqIAdB +PGooAgA2AgAgByAHKQI0NwJUIAcgAzYCUAJAAkACQAJAIAJB/wFxQQFrDgIBAgALIAdBKGohBSMA +QfAAayICJAACQAJAAkACQEEVIAdB0ABqIgMoAgAiDEGAgICAeHMiBCAEQRVPG0EUaw4CAQIACyAC +QcgAaiADQQhqKQMANwMAIAIgAykDADcDQCACQUBrIAJB7wBqQcC/wwAQizYhAyAFQQA2AgAgBSAD +NgIEDAILIANBDGooAgAhCSADQQhqKAIAIQQgAiADKAIENgIIIAIgBDYCBCACIAQ2AgAgAiAEIAlB +BHRqNgIMIAJBEGoiAyACEJQ7IAJBQGsgAxDoEgJ/IAIoAkBFBEAgAigCRCIDRQRAQQBByNLDAEGI +v8MAEN4XDAILIAIgAkHIAGoiBCgCACIJNgI8IAIgAzYCOCACQdAAaiACQSBqKAIANgIAIAQgAkEY +aikCADcDACACIAIpAhA3A0AgAkFAaxCtIyIERQRAIAUgCTYCBCAFIAM2AgAMBAsgBUEANgIAIAUg +BDYCBCACQThqEPo+DAMLIAIoAkQLIQMgBUEANgIAIAUgAzYCBCACQRBqEKVFDAELIAMoAgghBCAD +KAIEIQMgAkEoaiAMNgIAIAJBJGogAzYCACACQSxqIAMgBEEFdGo2AgAgAiADNgIgQQAhCiACQQA2 +AjAgAkGVgICAeDYCECACQQA2AgAgAkEgaiEXAkACQAJAAkACQANAAkAgAkFAayEOIwBB0ABrIgMk +AAJAAkACQCACQRBqIgQoAhBFDQAgBEEUaigCACIJIARBHGooAgBGDQAgBCAJQSBqNgIUIAkoAgAi +C0GVgICAeEcNAQsgDkGABDsBAAwBCyADQcgAaiISIAlBHGooAgA2AgAgA0FAayINIAlBFGopAgA3 +AwAgA0E4aiIIIAlBDGoiGCkCADcDACADQRhqIhsgGCgCADYCACADQSRqIANBxABqIhgpAgA3AgAg +AyAJKQIEIh03AxAgAyADKQI8NwIcIBIgA0EoaigCADYCACANIANBIGopAwA3AwAgCCAbKQMANwMA +QQEhEiAEIAQoAiBBAWo2AiAgAyAdNwMwIANBHGogCCgCADYCACADIAMpAzA3AhQgBBDIQyAEQQhq +IBgpAgA3AgAgBCADKQI8NwIAIAMgCzYCECADQQhqIQkjAEFAaiIIJAACQAJAAkACQAJAAkACQAJA +AkBBFSADQRBqIgQoAgBBgICAgHhzIgsgC0EVTxtBAWsODwYFBQAFBQUFBQUFAQIDBAULIAlBADoA +ACAJIAQpAwhCAFI6AAEMBgsgCEEQaiAEQQxqKAIAIgs2AgAgCCAEKQIENwMIIAkgCCgCDCALEPM7 +IAhBCGoQiD8MBgsgCSAEKAIEIARBCGooAgAQ8zsMBAsgCEEgaiAEQQxqKAIANgIAIAggBCkCBDcD +GEEBIQsCQCAIQRhqIg0oAghBCEcNACANKAIEIgQtAABB5QBHDQAgBC0AAUH2AEcNACAELQACQeUA +Rw0AIAQtAANB7gBHDQAgBC0ABEH0AEcNACAELQAFQd8ARw0AIAQtAAZB6QBHDQAgBC0AB0HkAEch +CwsgCUEAOgAAIAkgCzoAASANEIg/DAQLQQEhDQJAIARBCGooAgBBCEcNACAEKAIEIgstAABB5QBH +DQAgCy0AAUH2AEcNACALLQACQeUARw0AIAstAANB7gBHDQAgCy0ABEH0AEcNACALLQAFQd8ARw0A +IAstAAZB6QBHDQAgCy0AB0HkAEchDQsgCUEAOgAAIAkgDToAAQwCCyAIQTBqIARBCGopAwA3AwAg +CCAEKQMANwMoIAhBKGogCEE/akGgwcMAEIs2IQQgCUEBOgAAIAkgBDYCBAwCCyAJQQA6AAAgCSAE +LQAEQQBHOgABCyAEEIseCyAIQUBrJAACQCADLQAIRQRAIA4gAy0ACToAAUEAIRIMAQsgDiADKAIM +NgIECyAOIBI6AAALIANB0ABqJAAgAi0AQA0AAkACQCACLQBBDgMBAAYACyACQRBqEIMlIgNFDQIM +AwsgCgRAQdjRwwBBCBDxHyEDDAQLIAJBQGsgAkEQahCkJiACKAJAIgpFDQUgAigCRCEMIAIQkEUg +AiAMNgIEIAIgCjYCAAwBCwsgAigCRCEDCyAKRQ0DCyACEPo+DAILIApFBEAgAkFAa0HY0cMAQQgQ +kU0gAigCQCIKRQ0BIAIoAkQhDAsgAiAMNgI8IAIgCjYCOCACQUBrIgMgAkEQakEoEM1PGiADEJYZ +IgNFBEAgBSAMNgIEIAUgCjYCAAwDCyAFQQA2AgAgBSADNgIEIAJBOGoQ+j4MAgsgAigCRCEDCyAF +QQA2AgAgBSADNgIEIAIoAiAEQCAXEM4iCyACQRBqEIJDCyACQfAAaiQAIAcoAiwiAiAHKAIoIgNF +DQMaDAULIAdBKGohCSMAQYABayICJAACQAJAAkACQAJAAkACQAJAQRUgB0HQAGoiAygCACIFQYCA +gIB4cyIEIARBFU8bQRRrDgIBAgALIAJB2ABqIANBCGopAwA3AwAgAiADKQMANwNQIAJB0ABqIAJB +/wBqQfC/wwAQizYhAyAJQQI6AAggCSADNgIADAYLIANBDGooAgAhBCADQQhqKAIAIQUgAiADKAIE +NgIMIAIgBTYCCCACIAU2AgQgAiAFIARBBHRqNgIQIAJBKGoiAyACQQRqEJQ7IAJB0ABqIAMQ6BIg +AigCUA0BIAIoAlQiA0UEQEEAQZTSwwBBiL/DABDeFyEDDAULIAIgAkHYAGooAgAiBTYCJCACIAM2 +AiAgAkHQAGogAkEoahClFCACLQBQBEAgAigCVCEDIAJBIGoQ+j4MBQsgAiAFNgIYIAIgAzYCFCAC +IAItAFFBAXE6ABwgAkHgAGogAkE4aigCADYCACACQdgAaiACQTBqKQIANwMAIAIgAikCKDcDUCAC +QdAAahCtIyIDRQRAIAkgAikCFDcCACAJQQhqIAJBHGooAgA2AgAMBgsgCUECOgAIIAkgAzYCACAC +QRRqEPo+DAULIAMoAgghBCADKAIEIQMgAkFAayAFNgIAIAJBPGogAzYCACACQcQAaiADIARBBXRq +NgIAIAIgAzYCOEEAIQUgAkEANgJIIAJBlYCAgHg2AiggAkEANgIUIAJBOGohD0ECIRoDQCACQdAA +aiEOIwBB0ABrIgMkAAJAAkACQCACQShqIgQoAhBFDQAgBEEUaigCACIIIARBHGooAgBGDQAgBCAI +QSBqNgIUIAgoAgAiC0GVgICAeEcNAQsgDkGABjsBAAwBCyADQcgAaiIMIAhBHGooAgA2AgAgA0FA +ayINIAhBFGopAgA3AwAgA0E4aiIKIAhBDGoiFykCADcDACADQRhqIhggFygCADYCACADQSRqIANB +xABqIhcpAgA3AgAgAyAIKQIEIh03AxAgAyADKQI8NwIcIAwgA0EoaigCADYCACANIANBIGopAwA3 +AwAgCiAYKQMANwMAQQEhDCAEIAQoAiBBAWo2AiAgAyAdNwMwIANBHGogCigCADYCACADIAMpAzA3 +AhQgBBDIQyAEQQhqIBcpAgA3AgAgBCADKQI8NwIAIAMgCzYCECADQQhqIQojAEFAaiILJAACQAJA +AkACQAJAAkACQAJAAkACQAJAQRUgA0EQaiIIKAIAQYCAgIB4cyIEIARBFU8bQQFrDg8GBQUABQUF +BQUFBQECAwQFCyAKQQA6AAAgCkEAQQFBAiAIKQMIIh1CAVEbIB1QGzoAAQwICyALQRBqIAhBDGoo +AgAiBDYCACALIAgpAgQ3AwggCiALKAIMIAQQ/iwgC0EIahCIPwwICyAKIAgoAgQgCEEIaigCABD+ +LAwGCyALQSBqIAhBDGooAgA2AgAgCyAIKQIENwMYIAtBGGoiDSgCBCEEAkACQCANKAIIIghBD0cE +QCAIQQhHDQEgBC0AAEHlAEcNASAELQABQfYARw0BIAQtAAJB5QBHDQEgBC0AA0HuAEcNASAELQAE +QfQARw0BIAQtAAVB3wBHDQEgBC0ABkHpAEcNAUEAIQggBC0AB0HkAEcNAQwCCyAELQAAQekARw0A +IAQtAAFB8wBHDQAgBC0AAkHfAEcNACAELQADQeYARw0AIAQtAARB4QBHDQAgBC0ABUHsAEcNACAE +LQAGQewARw0AIAQtAAdB6QBHDQAgBC0ACEHuAEcNACAELQAJQecARw0AIAQtAApB3wBHDQAgBC0A +C0HiAEcNACAELQAMQeEARw0AIAQtAA1B4wBHDQBBASEIIAQtAA5B6wBGDQELQQIhCAsgCkEAOgAA +IAogCDoAASANEIg/DAYLIAgoAgQhBCAIQQhqKAIAIg1BD0cEQCANQQhHDQMgBC0AAEHlAEcNAyAE +LQABQfYARw0DIAQtAAJB5QBHDQMgBC0AA0HuAEcNAyAELQAEQfQARw0DIAQtAAVB3wBHDQMgBC0A +BkHpAEcNA0EAIQ0gBC0AB0HkAEcNAwwECyAELQAAQekARw0CIAQtAAFB8wBHDQIgBC0AAkHfAEcN +AiAELQADQeYARw0CIAQtAARB4QBHDQIgBC0ABUHsAEcNAiAELQAGQewARw0CIAQtAAdB6QBHDQIg +BC0ACEHuAEcNAiAELQAJQecARw0CIAQtAApB3wBHDQIgBC0AC0HiAEcNAiAELQAMQeEARw0CIAQt +AA1B4wBHDQJBASENIAQtAA5B6wBHDQIMAwsgC0EwaiAIQQhqKQMANwMAIAsgCCkDADcDKCALQShq +IAtBP2pBoMDDABCLNiEEIApBAToAACAKIAQ2AgQMBAsgCkEAOgAAIApBAUECIAgtAAQiBEEBRhtB +ACAEGzoAAQwCC0ECIQ0LIApBADoAACAKIA06AAELIAgQix4LIAtBQGskAAJAIAMtAAhFBEAgDiAD +LQAJOgABQQAhDAwBCyAOIAMoAgw2AgQLIA4gDDoAAAsgA0HQAGokAAJAAkACQAJAAkACQCACLQBQ +RQRAIAItAFEiA0EDRg0DAkACQCADDgIAAQMLIAUEQEHY0cMAQQgQ8R8hAwwLCyACQdAAaiACQShq +EKQmIAIoAlAiBUUNBSACKAJUIRIgAkEUahCQRSACIBI2AhggAiAFNgIUDAgLIBpBAkcEQEHg0cMA +QQ8Q8R8hAwwDCyACQdAAaiACQShqEKUmIAItAFBFDQYLIAIoAlQhAwwBCyACQShqEIMlIgNFDQUL +IAUNBgwHCyAFDQEgAkHQAGpB2NHDAEEIEJFNIAIoAlAiBUUNACACKAJUIRIMAQsgAigCVCEDDAUL +IAIgEjYCCCACIAU2AgQgAiAaQQFxOgAMIAJB0ABqIgMgAkEoakEoEM1PGiADEJYZIgNFBEAgCSAC +KQIENwIAIAlBCGogAkEMaigCADYCAAwHCyAJQQI6AAggCSADNgIAIAJBBGoQ+j4MBgsgAi0AUSEa +DAALAAsgAigCVCEDDAILIAJBFGoQ+j4LIAlBAjoACCAJIAM2AgAgAigCOARAIA8QziILIAJBKGoQ +gkMMAQsgCUECOgAIIAkgAzYCACACQShqEKVFCyACQYABaiQAIAcoAighAyAHLQAwQQJGDQEgBygC +MCEPIAcoAiwhAkEBIRoMBAtBAiEaIAdBKGohCSMAQYABayICJAACQAJAAkACQAJAAkACQAJAQRUg +B0HQAGoiAygCACIFQYCAgIB4cyIEIARBFU8bQRRrDgIBAgALIAJB2ABqIANBCGopAwA3AwAgAiAD +KQMANwNQIAJB0ABqIAJB/wBqQeC/wwAQizYhAyAJQQI6AAggCSADNgIADAYLIANBDGooAgAhBCAD +QQhqKAIAIQUgAiADKAIENgIMIAIgBTYCCCACIAU2AgQgAiAFIARBBHRqNgIQIAJBKGoiAyACQQRq +EJQ7IAJB0ABqIAMQ6BIgAigCUA0BIAIoAlQiA0UEQEEAQdTTwwBBiL/DABDeFyEDDAULIAIgAkHY +AGooAgAiBTYCJCACIAM2AiAgAkHQAGogAkEoahClFCACLQBQBEAgAigCVCEDIAJBIGoQ+j4MBQsg +AiAFNgIYIAIgAzYCFCACIAItAFFBAXE6ABwgAkHgAGogAkE4aigCADYCACACQdgAaiACQTBqKQIA +NwMAIAIgAikCKDcDUCACQdAAahCtIyIDRQRAIAkgAikCFDcCACAJQQhqIAJBHGooAgA2AgAMBgsg +CUECOgAIIAkgAzYCACACQRRqEPo+DAULIAMoAgghBCADKAIEIQMgAkFAayAFNgIAIAJBPGogAzYC +ACACQcQAaiADIARBBXRqNgIAIAIgAzYCOEEAIQUgAkEANgJIIAJBlYCAgHg2AiggAkEANgIUIAJB +OGohF0ECIQ0DQCACQdAAaiEOIwBB0ABrIgQkAAJAAkACQCACQShqIgMoAhBFDQAgA0EUaigCACII +IANBHGooAgBGDQAgAyAIQSBqNgIUIAgoAgAiC0GVgICAeEcNAQsgDkGABjsBAAwBCyAEQcgAaiIM +IAhBHGooAgA2AgAgBEFAayIPIAhBFGopAgA3AwAgBEE4aiIKIAhBDGoiGCkCADcDACAEQRhqIhsg +GCgCADYCACAEQSRqIARBxABqIhgpAgA3AgAgBCAIKQIEIh03AxAgBCAEKQI8NwIcIAwgBEEoaigC +ADYCACAPIARBIGopAwA3AwAgCiAbKQMANwMAQQEhDCADIAMoAiBBAWo2AiAgBCAdNwMwIARBHGog +CigCADYCACAEIAQpAzA3AhQgAxDIQyADQQhqIBgpAgA3AgAgAyAEKQI8NwIAIAQgCzYCECAEQQhq +IQojAEFAaiILJAACQAJAAkACQAJAAkACQAJAAkACQAJAQRUgBEEQaiIIKAIAQYCAgIB4cyIDIANB +FU8bQQFrDg8GBQUABQUFBQUFBQECAwQFCyAKQQA6AAAgCkEAQQFBAiAIKQMIIh1CAVEbIB1QGzoA +AQwICyALQRBqIAhBDGooAgAiAzYCACALIAgpAgQ3AwggCiALKAIMIAMQ/ywgC0EIahCIPwwICyAK +IAgoAgQgCEEIaigCABD/LAwGCyALQSBqIAhBDGooAgA2AgAgCyAIKQIENwMYIAtBGGoiDygCBCED +AkACQCAPKAIIIghBFUcEQCAIQQhHDQEgAy0AAEHlAEcNASADLQABQfYARw0BIAMtAAJB5QBHDQEg +Ay0AA0HuAEcNASADLQAEQfQARw0BIAMtAAVB3wBHDQEgAy0ABkHpAEcNAUEAIQggAy0AB0HkAEcN +AQwCCyADLQAAQekARw0AIAMtAAFB7wBHDQAgAy0AAkEuRw0AIAMtAANB5QBHDQAgAy0ABEHsAEcN +ACADLQAFQeUARw0AIAMtAAZB7QBHDQAgAy0AB0HlAEcNACADLQAIQe4ARw0AIAMtAAlB9ABHDQAg +Ay0ACkEuRw0AIAMtAAtB8wBHDQAgAy0ADEHoAEcNACADLQANQe8ARw0AIAMtAA5B9wBHDQAgAy0A +D0HfAEcNACADLQAQQfIARw0AIAMtABFB5QBHDQAgAy0AEkHwAEcNACADLQATQewARw0AQQEhCCAD +LQAUQfkARg0BC0ECIQgLIApBADoAACAKIAg6AAEgDxCIPwwGCyAIKAIEIQMgCEEIaigCACIPQRVH +BEAgD0EIRw0DIAMtAABB5QBHDQMgAy0AAUH2AEcNAyADLQACQeUARw0DIAMtAANB7gBHDQMgAy0A +BEH0AEcNAyADLQAFQd8ARw0DIAMtAAZB6QBHDQNBACEPIAMtAAdB5ABHDQMMBAsgAy0AAEHpAEcN +AiADLQABQe8ARw0CIAMtAAJBLkcNAiADLQADQeUARw0CIAMtAARB7ABHDQIgAy0ABUHlAEcNAiAD +LQAGQe0ARw0CIAMtAAdB5QBHDQIgAy0ACEHuAEcNAiADLQAJQfQARw0CIAMtAApBLkcNAiADLQAL +QfMARw0CIAMtAAxB6ABHDQIgAy0ADUHvAEcNAiADLQAOQfcARw0CIAMtAA9B3wBHDQIgAy0AEEHy +AEcNAiADLQARQeUARw0CIAMtABJB8ABHDQIgAy0AE0HsAEcNAkEBIQ8gAy0AFEH5AEcNAgwDCyAL +QTBqIAhBCGopAwA3AwAgCyAIKQMANwMoIAtBKGogC0E/akGQwMMAEIs2IQMgCkEBOgAAIAogAzYC +BAwECyAKQQA6AAAgCkEBQQIgCC0ABCIDQQFGG0EAIAMbOgABDAILQQIhDwsgCkEAOgAAIAogDzoA +AQsgCBCLHgsgC0FAayQAAkAgBC0ACEUEQCAOIAQtAAk6AAFBACEMDAELIA4gBCgCDDYCBAsgDiAM +OgAACyAEQdAAaiQAAkACQAJAAkACQAJAIAItAFBFBEAgAi0AUSIDQQNGDQMCQAJAIAMOAgABAwsg +BQRAQdjRwwBBCBDxHyEDDAsLIAJB0ABqIAJBKGoQpCYgAigCUCIFRQ0FIAIoAlQhEiACQRRqEJBF +IAIgEjYCGCACIAU2AhQMCAsgDUECRwRAQZDTwwBBFRDxHyEDDAMLIAJB0ABqIAJBKGoQpSYgAi0A +UEUNBgsgAigCVCEDDAELIAJBKGoQgyUiA0UNBQsgBQ0GDAcLIAUNASACQdAAakHY0cMAQQgQkU0g +AigCUCIFRQ0AIAIoAlQhEgwBCyACKAJUIQMMBQsgAiASNgIIIAIgBTYCBCACIA1BAXE6AAwgAkHQ +AGoiAyACQShqQSgQzU8aIAMQlhkiA0UEQCAJIAIpAgQ3AgAgCUEIaiACQQxqKAIANgIADAcLIAlB +AjoACCAJIAM2AgAgAkEEahD6PgwGCyACLQBRIQ0MAAsACyACKAJUIQMMAgsgAkEUahD6PgsgCUEC +OgAIIAkgAzYCACACKAI4BEAgFxDOIgsgAkEoahCCQwwBCyAJQQI6AAggCSADNgIAIAJBKGoQpUUL +IAJBgAFqJAAgBygCKCEDIActADBBAkcNAgsgAwshAiAHQQQ2AhggByACNgIcIAdBGGoQnicjAEEQ +ayIFJAAjAEHAAWsiAiQAAkACQCAHQQhqIgMoAgBBlYCAgHhOBEAgAygCCCEEIAMoAgQhAyACQgA3 +AhAgAiADNgIIIAIgAyAEQQV0ajYCDCACQQA2AiwgAkEANgIkIAJBMGpBBHIhCiACQdwAaiEJAkAD +QAJAIAJB0ABqIQQjAEHQAGsiAyQAAkACQCACQQhqIggoAgAiDARAIAwgCCgCBEcNAQsgBEGAgICA +eDYCAAwBCyAIIAxBIGo2AgAgCCAIKAIMQQFqNgIMIANBKGogDBCMUiADKAIoQYCAgIB4RwRAIANB +CGoiCCADQTBqIgsoAgA2AgAgAyADKQIoNwMAIANBEGogDEEQahCYBSADLQAQQQZHBEAgA0HIAGog +A0EgaikDADcDACADQUBrIANBGGopAwA3AwAgCyAIKAIANgIAIAMgAykDEDcDOCADIAMpAwA3Aygg +BCADQShqQSgQzU8aDAILIAQgAygCFDYCBCAEQYGAgIB4NgIAIAMQiD8MAQsgBCADKAIsNgIEIARB +gYCAgHg2AgALIANB0ABqJAAgAigCUCIDQYGAgIB4Rg0AIAJBOGogCUEIaikCADcDACACQUBrIAlB +EGopAgA3AwAgAkHIAGogCUEYaigCADYCACACIAkpAgA3AzAgA0GAgICAeEYNAiACKQJUIR0gAkGQ +AWogCkEIaikCADcDACACQZgBaiAKQRBqKQIANwMAIAIgHTcCgAEgAiADNgJ8IAIgCikCADcDiAEg +AkGgAWogAkEkaiACQfwAaiACQYgBahDUDCACLQCgAUEGRg0BIAJBoAFqEM4wDAELCyACKAJUIQMg +AkEkahDMGSAFQQE2AgAgBSADNgIEDAMLIAIgAikCKDcCHCACIAIoAiQ2AhggAkHYAGogAkEQaikC +ADcDACACIAIpAgg3A1AgAkHQAGoQuyEiA0UNASAFQQE2AgAgBSADNgIEIAJBGGoQzBkMAgsgAyAC +Qb8BakG0wsMAEP43IQMgBUEBNgIAIAUgAzYCBAwBCyAFIAIpAhg3AgQgBUEANgIAIAVBDGogAkEg +aigCADYCAAsgAkHAAWokACAHQShqIgICfyAFKAIARQRAIAIgBSkCBDcCBCACQQxqIAVBDGooAgA2 +AgBBAAwBCyACIAUoAgQ2AgRBAQs2AgAgBUEQaiQAIAcoAihFDQIgByAHKAIsNgJUIAdBBDYCUCAH +QdAAahCeJ0GhzMYAQcAAEPgRIQIgGUEENgIAIBkgAjYCBCAHQQhqEKodDAULIAcoAjAhDyAHKAIs +IQILIAdBIGoiBSACNgIAIAcgAzYCHCAHIBo2AhggGSAHKQIYNwIAIAcgDzYCJCAZQQhqIAUpAgA3 +AgAMAgsgB0HcAGogB0E0aigCADYCACAHIAcpAiw3AlQgB0EDNgJQIBlBCGogB0HYAGopAgA3AgAg +GSAHKQJQNwIADAELIAcoAiwhAiAZQQQ2AgAgGSACNgIEDAELIAdBCGoQqh0LIAdB4ABqJAAgBigC +KCIHQQRHBEAgBikCMCEeIAYoAiwhAiAGQRxqEKxLDAILIAYoAiwhAiAGQdgAahCQRQsgBkEcahCs +SyAQRSARRXJFBEAgHBCQRQtBBCEHCyABIAEtACRBAWo6ACQgBiABEI0TIgM2AkAgBiAUNgI8IAYg +FTYCOCAGIB43AjAgBiACNgIsIAYgBzYCKAJAIAdBBEcEQCADRQ0BIAZBKGoQ4CggAyECDAQLIANF +DQMgBkFAaxDfHQwDCyAWIAZBMGoiASkCADcCCCAWQRBqIAFBCGopAgA3AgAgFiACNgIEIBYgBzYC +AAwECyAGKAIIIQcMAAsACyABIAIQvFIhASAWQQQ2AgAgFiABNgIEDAELIAZBGDYCKCABIAZBKGoQ +gDEhASAWQQQ2AgAgFiABNgIECyAGQfAAaiQAIBMoAghBBEcEQCAAIBMpAgg3AgAgAEEQaiATQRhq +KQIANwIAIABBCGogE0EQaikCADcCAAwECyAAIBMoAgw2AgQgAEEFNgIADAMLIAEQvkEgAUGU/MYA +QQMQ9RQiAQ0BIABBBDYCAAwCCyATKAIEIQELIABBBTYCACAAIAE2AgQLIBNBIGokAAvpAQEEfyMA +QSBrIgEkACABQQhqIAAQvBYCQCABLQAIRQRAIAEtAAlFBEAgAUEFNgIQIAAgAUEQahCAMSEDDAIL +AkAgAS0ACkEiRgRAIABBADYCCCAAQRRqIgIgAigCAEEBajYCACABQRBqIABBDGogABD7BSABKAIQ +QQJHBEAgASgCFCICIAEoAhgiBEHO5sgAQRAQgDwEf0EABSACIARB8ObIAEEBENEPCyICDQIMBAsg +ASgCFCEDDAMLIAAgAUEfakHUv8gAEIQFIQILIAIgABDYIyEDDAELIAEoAgwhAwsgAUEgaiQAIAML +sAEBBH8jAEEwayIDJAACQCABKAIAIgVFDQAgAigCACIGRQ0AIAFBACAFGyIBEItJRQ0AIAJBBGpB +ACAGGyICKAIABEAgA0EMaiICIAEgABDXJCADLQAMQRZGIQQgAhC7RAwBCyADQQxqIgUgAUEQaiAC +QQxqEOIcIAMtAAwgBRC7REEWRw0AIANBDGoiASACQQRqIAAQ1yQgAy0ADEEWRiEEIAEQu0QLIANB +MGokACAEC8EBAQh/IwBBEGsiAiQAIAAoAgAiBSgCCCEGIAVBDGooAgAiByEEA0AgBARAIAMgBmoi +AUEIaiIIKAIAQYCAgIB4RwRAIAFBLGoQt0UgCBC8SyABQRRqELxLIAFBIGoQvEsgAUHEAGoQsEsg +AUHQAGoQsEsgAUHcAGoQsEsLIARBAWshBCADQfgAaiEDDAELCyAHBEAgBkEIIAdB+ABsEI5DCyAC +IAU2AgggAiAAQQRqNgIMIAJBCGoQ+TIgAkEQaiQAC8sBAQJ/IwBBMGsiAiQAAkACQCABKAIEIgMg +ASgCDEcEQCABIANBGGo2AgQgAy0AACIBQQZHDQELIABBgICAgHg2AgAMAQsgAkERaiADQQlqKQAA +NwAAIAJBGGogA0EQaikAADcAACACIAE6AAggAiADKQABNwAJIAJBJGogAkEIahDKGSACKAIkQYCA +gIB4RwRAIAAgAikCJDcCACAAQQhqIAJBLGooAgA2AgAMAQsgACACKAIoNgIEIABBgYCAgHg2AgAL +IAJBMGokAAvLAQECfyMAQTBrIgIkAAJAAkAgASgCBCIDIAEoAgxHBEAgASADQRhqNgIEIAMtAAAi +AUEGRw0BCyAAQYCAgIB4NgIADAELIAJBEWogA0EJaikAADcAACACQRhqIANBEGopAAA3AAAgAiAB +OgAIIAIgAykAATcACSACQSRqIAJBCGoQ/hcgAigCJEGAgICAeEcEQCAAIAIpAiQ3AgAgAEEIaiAC +QSxqKAIANgIADAELIAAgAigCKDYCBCAAQYGAgIB4NgIACyACQTBqJAALvgEBBn8jAEEgayICJAAg +AkEUaiABEIosIAJBCGogAUEwahDBKCACKAIMIQQgAigCCCEFIAEoAgwiBkEDRgRAIAIgAUEQahD0 +HyACKAIAIQcgAigCBCEDCyAAQRhqIAFBGGoQmxAgAEEkaiABQSRqEL9JIABBNGogBDYCACAAIAU2 +AjAgAEEUaiADNgIAIABBEGogBzYCACAAIAY2AgwgAEEIaiACQRxqKAIANgIAIAAgAikCFDcCACAC +QSBqJAALwQIBCH8jAEFAaiICJAAgAkEIaiABEOAnAkAgAigCCCIHRQRAIABBADYCCCAAQoCAgIDA +ADcCAAwBCyACKAIMIQggAkEEIAEoAiBBAWoiA0F/IAMbIgMgA0EETRsQriMgAigCACEDIAIoAgQi +BCAINgIEIAQgBzYCACACQRhqIglBATYCACACIAQ2AhQgAiADNgIQIAJBHGoiAyABQSQQzU8aIAJB +EGohBSMAQRBrIgYkAANAAkAgBkEIaiADEOAnIAYoAggiB0UNACAGKAIMIQggBSgCCCIEIAUoAgBG +BEAgBSADKAIgQQFqIgFBfyABGxDbOwsgBSgCBCAEQQN0aiIBIAg2AgQgASAHNgIAIAUgBEEBajYC +CAwBCwsgBkEQaiQAIABBCGogCSgCADYCACAAIAIpAhA3AgALIAJBQGskAAvcAQEBfyMAQSBrIgEk +AAJAIAAtAAhFBEAgAUEMaiAAKAIAQYADahCMSiABKAIMDQEgASABKAIQIgI2AhggASABQRRqLQAA +OgAcIAEgACgCBBDCMSABQQxqIAJBCGogASgCACABKAIEEJAhIAEoAgxBgICAgHhHBEAgAUEMahDA +SwsgAUEYahCfHyAAQQE6AAggAUEgaiQAQQAPC0Ggm9AAQSNBgLrQABDmKwALIAEgASgCEDYCGCAB +IAFBFGotAAA6ABxBlJ7QAEErIAFBGGpBgJ/QAEHwudAAEIkYAAvUAQEGfyMAQSBrIgMkACADQRBq +IAEoAgBBCGpBpM3RABCSNyADKAIUIQUgAygCECIBKAIAIQQgAUECNgIAIAMgBDYCGCADIAEoAgQi +BjYCHCAEQQJGBEAgA0EYahCaQCADQQhqIAIoAgAiAigCBCACKAIAKAIAEQEAIAMoAgwhAiADKAII +IQcgASgCCCIIBEAgAUEMaigCACAIKAIMEQAACyABIAc2AgggAUEMaiACNgIACyAFIAUoAgBBAWo2 +AgAgACAGNgIEIAAgBDYCACADQSBqJAALywEBAn8jAEEwayICJAACQAJAIAEoAgQiAyABKAIMRwRA +IAEgA0EYajYCBCADLQAAIgFBBkcNAQsgAEGAgICAeDYCAAwBCyACQRFqIANBCWopAAA3AAAgAkEY +aiADQRBqKQAANwAAIAIgAToACCACIAMpAAE3AAkgAkEkaiACQQhqENQaIAIoAiRBgICAgHhHBEAg +ACACKQIkNwIAIABBCGogAkEsaigCADYCAAwBCyAAIAIoAig2AgQgAEGBgICAeDYCAAsgAkEwaiQA +C/sBAQR/IwBBIGsiASQAIAAoAgAiAygCACECIANBADYCACACKAIcIQMgAkEANgIcIAMEQCABQQhq +IAMRAAAgACgCBCIDKAIAIgAoAgAEQCAAQQxqIgQiAigCCCEAIAIoAgQhAgNAIAAEQCAAQQFrIQAg +AhD1QSACQQxqIQIMAQsLIAQQoT0gAygCACEACyAAQQE2AgAgACABKQIINwIEIABBDGogAUEQaikC +ADcCACAAQRRqIAFBGGooAgA2AgAgAUEgaiQAQQEPCyABQRRqQgA3AgAgAUEBNgIMIAFBwLrYADYC +CCABQZy42AA2AhAgAUEIakGou9gAEMswAAvDAQEDfyMAQTBrIgQkACAEQRBqEKhJAkAgBCkDECAC +hSAEQRhqKQMAIAOFhFBFBEBBACEBDAELIARBJGogASgCAEEIahCCIgJ/AkAgBCgCJARAEN9PDQFB +soHEAEENQbiCxAAQnzcACyAEQSxqKAIAIQUgBEEIaiAEKAIoIAIgAxDdKSAEKAIMIQYgBCgCCAwB +CyAEQSxqKAIAIQVBAAshASAFIAUoAgBBAWs2AgALIAAgBjYCBCAAIAE2AgAgBEEwaiQAC4kCAQR/ +IwBBMGsiBCQAAkACQAJAAkACQAJAIAEtABBBAWsOAwQAAQILAAsgAUEMaigCACEFIAEoAgghAwwB +CyAEQQw6AAwgBEEMahCoPiABKAIAIQUgASgCBCEGQQxBBBCrOSIDQQA6AAggAyAGNgIEIAMgBTYC +ACAEQeC50AA2AgQgBCADNgIAIAQoAgAhAyABQQxqIAQoAgQiBTYCACABIAM2AggLIAMgAiAFKAIM +EQIARQRAIAFBCGoQmTZBASEDIABBAWogBEEMakEjEM1PGkELIQIMAgtBAyEDQQwhAgwBC0Ggh8QA +QSNBmJHEABDmKwALIAEgAzoAECAAIAI6AAAgBEEwaiQAC9kBAQF/IwBBMGsiAiQAIAJBHGogARCb +UgJAIAIoAhwiAUGBgICAeEcEQCACIAIpAiA3AhQgAiABNgIQIAJBCGogAkEQahCJTCACQRxqIAIo +AgggAigCDBDbJgJAIAIoAhxBgICAgHhHBEAgACACKQIcNwIAIABBCGogAkEkaigCADYCAAwBCyAC +IAIpAiA3AyggAkEoahC+NiEBIABBgICAgHg2AgAgACABNgIECyACQRBqEPtADAELIAIoAiAhASAA +QYCAgIB4NgIAIAAgATYCBAsgAkEwaiQAC9kBAQF/IwBBMGsiAiQAIAJBHGogARCbUgJAIAIoAhwi +AUGBgICAeEcEQCACIAIpAiA3AhQgAiABNgIQIAJBCGogAkEQahCJTCACQRxqIAIoAgggAigCDBDa +JgJAIAIoAhxBgICAgHhHBEAgACACKQIcNwIAIABBCGogAkEkaigCADYCAAwBCyACIAIpAiA3Aygg +AkEoahC+NiEBIABBgICAgHg2AgAgACABNgIECyACQRBqEPtADAELIAIoAiAhASAAQYCAgIB4NgIA +IAAgATYCBAsgAkEwaiQAC5YCAQV/IwBBIGsiAyQAIANBCGogASACEMotIAMgAygCDCICNgIUIAMg +AygCCCIBNgIQIANBGGohBCMAQRBrIgUkACAFQQhqIAEgAhCfEgJAIAUtAAgiB0EMRgRAIAQgAjYC +BAwBCyAFLQAJIQEgBCAHOgAEIARBBWogAToAAEEAIQELIAQgATYCACAFQRBqJAACfyADKAIYIgEE +QCADIAEgAygCHBDCMCADKAIAIQIgAygCBAwBC0EAIQIgAy0AHCADQR1qLQAAEIERCyEBIANBEGoQ ++j4gACACBH9BDEEEEKs5IgYgATYCCCAGIAI2AgQgBkEANgIAQQAFIAELNgIEIAAgBjYCACAAIAJF +NgIIIANBIGokAAviAQEBfyMAQRBrIgIkAAJ/AkACQAJAAkACQCAAKAIAIgAoAgBBAWsOBAECAwQA +CyACIABBBGo2AgwgAUGc18UAQQsgAkEMakGo18UAEKUPDAQLIAIgAEEEajYCDCABQbjXxQBBCiAC +QQxqQajXxQAQpQ8MAwsgAiAAQQRqNgIMIAFBwtfFAEEMIAJBDGpBqNfFABClDwwCCyACIABBBGo2 +AgwgAUHO18UAQQsgAkEMakGo18UAEKUPDAELIAIgAEEEajYCDCABQdnXxQBBBSACQQxqQeDXxQAQ +pQ8LIAJBEGokAAtDACAAIAEgAkEJQYfMxwBBEkH1y8cAQQlB7MvHAEEIQeTLxwBBB0Hdy8cAQQtB +0svHAEEKQcjLxwBBBkHCy8cAENlTCxMAIAAgAUHE+McAQdT4xwAQq1MLQwAgACABIAJBH0GGs8gA +QRNB87LIAEEZQdqyyABBCkHQssgAQQZBwbDIAEEGQcqyyABBCUHBssgAQQdBurLIABDZUwu8AgIF +fwF+IwBBIGsiAiQAAkACQAJAIAEoAiAiA0UEQEEAIQEMAQsgASADQQFrNgIgIAEQmRoiBEUNASAE +KAIIIQYgBCgCACEBIAQoAgQhBQJAA0AgAS8ByhEgBksEQCACIAY2AgggAiAFNgIEIAIgATYCAAwC +CyABKAJYIgMEQCAFQQFqIQUgAS8ByBEhBiADIQEMAQsLIAIgATYCBCACQQA2AgAgAkEIaiAFNgIA +CyACKAIAIgNFDQIgAikCBCEHIAIgAzYCFCACIAc3AhggAiACQRRqENIfIARBCGogAkEIaigCADYC +ACAEIAIpAgA3AgAgAyAHQiCIpyIEQQN0aiEBIAMgBEHEAWxqQdwAaiEDCyAAIAM2AgQgACABNgIA +IAJBIGokAA8LQejNyQAQo0sAC0HIzckAEKNLAAuxAgIEfwF+IwBBIGsiAyQAAkACQCABKAIgIgIE +fyABIAJBAWs2AiACfyABQQRqIQUCQCABKAIAIgIEQCABKAIERQ0BCyAFQQAgAhsMAQsgAUEIaiEE +IAFBDGooAgAhAgNAIAQoAgAhBCACBEAgAkEBayECIARBoAZqIQQMAQsLIAFCADcCCCABIAQ2AgQg +AUEBNgIAIAULIgFFDQEgAyABELUbIAMoAgAiAkUNAiADKQIEIQYgAyACNgIUIAMgBjcCGCADIANB +FGoQ0B8gAUEIaiADQQhqKAIANgIAIAEgAykCADcCACACIAZCIIinIgFBBnRqIQUgAiABQQN0akHA +BWoFQQALIQEgACAFNgIEIAAgATYCACADQSBqJAAPC0HozckAEKNLAAtByM3JABCjSwALEwAgACAB +QcjNyQBB6M3JABCrUwu8AgIFfwF+IwBBIGsiAiQAAkACQAJAIAEoAiAiA0UEQEEAIQEMAQsgASAD +QQFrNgIgIAEQlxoiBEUNASAEKAIIIQYgBCgCACEBIAQoAgQhBQJAA0AgAS8BlgQgBksEQCACIAY2 +AgggAiAFNgIEIAIgATYCAAwCCyABKAKQBCIDBEAgBUEBaiEFIAEvAZQEIQYgAyEBDAELCyACIAE2 +AgQgAkEANgIAIAJBCGogBTYCAAsgAigCACIDRQ0CIAIpAgQhByACIAM2AhQgAiAHNwIYIAIgAkEU +ahDWHyAEQQhqIAJBCGooAgA2AgAgBCACKQIANwIAIAMgB0IgiKciBEEDdGohASADIARBKGxqQdgA +aiEDCyAAIAM2AgQgACABNgIAIAJBIGokAA8LQejNyQAQo0sAC0HIzckAEKNLAAu8AgIFfwF+IwBB +IGsiAiQAAkACQAJAIAEoAiAiA0UEQEEAIQEMAQsgASADQQFrNgIgIAEQlhoiBEUNASAEKAIIIQYg +BCgCACEBIAQoAgQhBQJAA0AgAS8BygYgBksEQCACIAY2AgggAiAFNgIEIAIgATYCAAwCCyABKAJY +IgMEQCAFQQFqIQUgAS8ByAYhBiADIQEMAQsLIAIgATYCBCACQQA2AgAgAkEIaiAFNgIACyACKAIA +IgNFDQIgAikCBCEHIAIgAzYCFCACIAc3AhggAiACQRRqENMfIARBCGogAkEIaigCADYCACAEIAIp +AgA3AgAgAyAHQiCIpyIEQQN0aiEBIAMgBEHEAGxqQdwAaiEDCyAAIAM2AgQgACABNgIAIAJBIGok +AA8LQejNyQAQo0sAC0HIzckAEKNLAAvGAQIDfwF+IwBBIGsiAiQAAkACQCABKAIgIgMEfyABIANB +AWs2AiAgARCfGiIBRQ0BIAIgARC2GyACKAIAIgNFDQIgAikCBCEFIAIgAzYCFCACIAU3AhggAiAC +QRRqELYfIAFBCGogAkEIaigCADYCACABIAIpAgA3AgAgAyAFQiCIpyIBQQR0aiEEIAMgAUEDdGpB +sAFqBUEACyEBIAAgBDYCBCAAIAE2AgAgAkEgaiQADwtB6M3JABCjSwALQcjNyQAQo0sACxMAIAAg +AUHIzckAQejNyQAQrVMLzQECA38BfiMAQSBrIgIkAAJAAkACQCABKAIgIgNFBEBBACEBDAELIAEg +A0EBazYCICABEJ4aIgFFDQEgAiABEJkbIAIoAgAiA0UNAiACKQIEIQUgAiADNgIUIAIgBTcCGCAC +IAJBFGoQsx8gAUEIaiACQQhqKAIANgIAIAEgAikCADcCACADIAVCIIinIgRBA3RqIQEgAyAEQRhs +akHYAGohAwsgACADNgIEIAAgATYCACACQSBqJAAPC0HozckAEKNLAAtByM3JABCjSwALEwAgACAB +QcjNyQBB6M3JABCuUwvnAQIDfwJ+IwBB4ABrIgEkAAJ/IwBBEGsiAiQAIAJBCGpBBEHIABCOPSAC +KAIIIAJBEGokACICBEAgAgwBC0EEQcgAEMRPAAsgAUEQaiAAKAIAIgBBDGoQ8S4gASkDECEEIAFB +GGoiAyAAEMUeIAFBxABqIABBLGopAgA3AgAgAUE8aiAAQSRqKQIANwIAIAFBNGogAEEcaikCADcC +ACABIAApAhQ3AiwgAUEIaiAAQTRqEIcoIAEpAwghBSABQdQAaiAAQTxqEOEvIAEgBTcCTCABIAQ3 +AiQgA0HIABDNTyABQeAAaiQAC7cEAgV/AX4jAEEgayICJAAgAiABNgIcAkAgAEEMahCWOiIARQ0A +IAJBEGogAEHo3NEAEJI3IAIoAhAiBSgCCCIDQQR0IQAgBSgCBEEQayEEIAEpAwAhByACKAIUIQEC +QAJAA0AgAEUNASADQQFrIQMgACAEaiAAQRBrIQApAwAgB1INAAsCQCADIAUoAggiBEkEQCAFKAIE +IANBBHRqIgApAwAhByAALQAIIQYgACAAQRBqIAQgA0F/c2pBBHQQzk8aIAUgBEEBazYCCCACIAZB +AEc6AAggAiAHNwMADAELIwBBMGsiACQAIAAgBDYCBCAAIAM2AgAgAEEUakICNwIAIABBLGpBrAU2 +AgAgAEEDNgIMIABB0J/aADYCCCAAQawFNgIkIAAgAEEgajYCECAAIABBBGo2AiggACAANgIgIABB +CGpBmOXRABDLMAALIAItAAhFDQELIAEgASgCAEEBajYCAAwBCyABIAEoAgBBAWo2AgAjAEEQayIA +JAAgACACQRxqNgIIAkBB1JXbACgCAEUEQCAAQQhqQciT2wBB0LTYAEHQldsAKAIAQQJGGxCkSQwB +CxDxPiIBRQRAIABBCGpB0LTYABCkSQwBCyABLQAQIAFBADoAEARAIAAgATYCDCAAIABBDGoQ0CAg +ACgCBCEBIABBCGogACgCABCkSSABIAEoAgBBAWs2AgAgACgCDEEBOgAQDAELIABBCGpB0LTYABCk +SQsgAEEQaiQACyACQSBqJAAL0AEBA38jAEEwayICJAAgAiABNgIMIAAoAgQhAQJ/IAAoAgAiAC0A +AARAIAEoAgAhAyABKAIEIQQgAkEcakIANwIAIAJBATYCFCACQYTz0QA2AhAgAkH08tEANgIYQQEg +AyACQRBqIAQoAhQRAgANARoLIABBAToAACABKAIAIAEoAgQhASACQRxqQgE3AgAgAkEBNgIUIAJB +mPPRADYCECACQd0VNgIsIAIgAkEoajYCGCACIAJBDGo2AiggAkEQaiABKAIUEQIACyACQTBqJAAL +oxMCDH8CfiMAQSBrIgkkACAJQQhqIAEQvBYCQAJAIAktAAhFBEACQCAJLQAJBEAgCS0ACkHuAEYN +AQsgCUEQaiEKIwBB0ABrIgIkACACQUBrIAEiBxC8FgJAAkACQAJAAkACQAJAAkACQAJ/AkACfwJ/ +An8CQAJAAkACQAJ/IAItAEBFBEAgAi0AQUUEQCACQQU2AiggByACQShqEIAxDAILIAItAEIiAUHb +AEYNAiABQfsARg0DIAcgAkHPAGpBzI/SABCFBSEBDBILIAIoAkQLIQEgCkECOgAMIAogATYCAAwR +CyAHIActABxBAWsiAToAHCABQf8BcQRAIAdBFGoiASABKAIAQQFqNgIAIAJBAToARCACIAc2AkAg +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 +AQIDfwF+IwBBEGsiBCQAAkAgACgCECIDRQRADAELQQEhAkGWl9oAQQEgAxDITw0AIAFQBEBBlpba +AEEBIAMQyE8hAgwBCwJAIAEgADUCFCIFWARAIAUgAX0iAUIaVA0BQZaW2gBBASADEMhPDQIgBCAB +NwMIIARBCGogAxCkSyECDAILQeyW2gBBECADEMhPDQFBACECIABBADoABCAAQQA2AgAMAQsgBCAB +p0HhAGo2AgQgBEEEaiADEJ4LIQILIARBEGokACACC6kBAgF/AX4jAEFAaiIBJAAgABCpRSABIAAQ +vDcgASgCBEEANgIAIAFBMGogAEEQaikCADcDACABQShqIABBCGopAgA3AwAgAUE4aiAAQRhqKAIA +NgIAIAApAgAhAiABQRBqIAFBLGopAgA3AwAgAUEYaiABQTRqKQIANwMAIAEgAjcDICABIAEpAiQ3 +AwggABCYBCABQQhqELNLIAFBFGoQs0sgAUFAayQACxEAIAAgASACQcwAQZgBEIJVCxEAIAAgASAC +QcwBQZgDEIJVCw8AIAAgASACQRRBKBCCVQvPAQECfyMAQTBrIgMkAAJAIAItACQiBEEBRgRAIANB +CGogASgCACIBQQhqKQAANwMAIANBEGogAUEQaikAADcDACADQRhqIAFBGGopAAA3AwAgAyABKQAA +NwMAIANBJGogAyACQQxqIAIoAgQgAigCCBCYFgJAIAMoAiQiAUGAgICAeEcEQCAAQQhqIAMpAig3 +AgAgACABNgIEIABBCDoAAAwBCyAAQQM6AAALIAMQilEMAQsgACAEOgACIABBhQI7AQALIAIQiD8g +A0EwaiQACxcAIAAgASACIAMgBCAFIAYgB0EBEJxVCxcAIAAgASACIAMgBCAFIAYgB0EAEJxVC8QD +AQh/IwBBMGsiAiQAIAJBDGogASgCPEEIahCBLiACKAIMBEAgAiACKQIQNwIEQdCkzABBKyACQQRq +QaylzABBqL3MABCJGAALIAJBFGooAgAhByACKAIQIgEoAgQhAyACIAEoAghBACABKAIAIgEbNgIs +IAIgAzYCKCACIAE2AiQgAkEANgIgIAIgAUEARyIENgIcIAIgAzYCGCACIAE2AhQgAkEANgIQIAIg +BDYCDCMAQUBqIgMkAAJAIAJBDGoiBBCtMSIBRQRAIABBADYCCCAAQoCAgIDAADcCAAwBCyADQQhq +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 +AiABOgAPIAIgADoADiACQQA2AiggAkKAgICAEDcCICACQcQAakG8s8UANgIAIAJBAzoATCACQSA2 +AjwgAkEANgJIIAJBADYCNCACQQA2AiwgAiACQSBqNgJAIAJBDmogAkEsahDsBQRAQdSzxQBBNyAC +QRBqQYy0xQBB6LTFABCJGAALIAJBGGogAkEoaigCACIANgIAIAIgAikCIDcDECACKAIUIAAQDiAC +QRBqEIg/IAJB0ABqJAALvAECBX8CfiABKAIMIQYgASgCACIDKQMAIQcCfiABKAIEIgJFBEBBASEB +QgAMAQsCQCACQQFqIgFB/////wFLDQAgAiABQQN0IgVqQQlqIgIgBUkgAkH5////B09yDQBBCCEE +CyACrSADIAVrrUIghoQLIQggACAENgIgIAAgBjYCGCAAIAM2AhAgAEEkaiAINwIAIAAgASADajYC +DCAAIANBCGo2AgggACAHQn+FQoCBgoSIkKDAgH+DNwMAC9MBAgF/AX4jAEEgayICJAACQAJAAkAC +QCABKAIAQQFrDgIBAgALIAAgASsDCBC3LAwCCyAAAn8gASkDCCIDQoCAgIAQWgRAIAJBAToACCAC +IAM3AxAgACACQQhqIAJBH2pBjILHABChFTYCBEEBDAELIAAgAz4CBEEACzYCAAwBCyAAAn8gASkD +CCIDQoCAgIAQWgRAIAJBAjoACCACIAM3AxAgACACQQhqIAJBH2pBjILHABChFTYCBEEBDAELIAAg +Az4CBEEACzYCAAsgAkEgaiQAC8QEAQl/IwBBoAFrIgMkACADIAFBEGo2AkggA0GdAWohBiABKAIE +IQIgASgCDCEIAkACQANAIAIgCEYNASABIAJBBGoiCTYCBCADQdQAaiEHIAIoAgAhBCMAQeABayIC +JAAgAkEMaiADQcgAaigCACgCACAEELYGAkAgAi0AVEECRwRAIAcgAkEMakHMABDNTxoMAQsgAkHY +AGogAkEMakEkEM1PGgJAQcST2wAoAgBBA0sNAEGs99oAEPs+IgRB/wFxRQ0AQaz32gAoAgAgBBD1 +LkUNACACQQA2ApgBIAJBnAFqQaz32gAoAgAiBEEgaigCACIFNgIAIAIgBCgCHDYCiAEgAiAEQSRq +KQIANwKQASACIAU2AowBIAJBwAFqIgUgAkGIAWoQpiAgAkGsAWoiCiAFQfy9xwAQgC0gAkHMAWpC +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 +mtsAQQA2AgAgA0UNACADLQAIIQJBASEGIANBAToACCABIAI6AAcgAg0BQeiW2wAoAgBB/////wdx +BEAQyFIhBgsgAUEEOgAIIAEgA0EMajYCECABQQhqQYTt2QAgABCwBCEFIAEtAAghAgJAIAUEQCAC +QQRGDQEgASgCDCECIAEtAAgiBUEETSAFQQNHcQ0BIAIoAgAiByACQQRqKAIAIgUoAgARAAAgBSgC +BARAIAUoAggaIAcQmAQLIAIQmAQMAQsgASgCDCEFIAJBA0cgAkEETXENACAFKAIAIgcgBUEEaigC +ACICKAIAEQAAIAIoAgQEQCACKAIIGiAHEJgECyAFEJgECwJAIAZFDQBB6JbbACgCAEH/////B3FF +DQAQyFINACADQQE6AAkLIANBADoACEHQmtsAKAIAIQJB0JrbACADNgIAIAEgAjYCCAJAIAJFDQAg +AiACKAIAIgNBAWs2AgAgA0EBRw0AIAFBCGooAgAiA0EMaigCAARAIANBEGooAgAQmAQLAkAgA0F/ +Rg0AIAMgAygCBCICQQFrNgIEIAJBAUcNACADEJgECwtBASECCyABQSBqJAAgAgwBCyABQgA3AhQg +AUHQ6tkANgIQIAFBATYCDCABQeCD2gA2AgggAUEHaiABQQhqENAxAAtFBEAgBEHAltsANgIcIAQg +BEEcajYCKCAEQRBqIQIjAEEgayIBJAACQAJAAkACQCAEQShqKAIAKAIAIgMoAgBByJrbAEcEQCAD +LQAMIQUgA0EBOgAMIAEgBToABCAFDQIgA0EBNgIEIANByJrbADYCAAwBCyADKAIEQQFqIgVFDQIg +AyAFNgIECyABIAM2AgQgAUEEOgAIIAEgAUEEajYCEAJAIAFBCGpB1OzZACAAELAEBEAgAS0ACEEE +RgRAIAJB9PfZADYCBCACQQI6AAAMAgsgAiABKQMINwIADAELIAJBBDoAACABKAIMIQAgAS0ACCID +QQRNIANBA0dxDQAgACgCACICIABBBGooAgAiAygCABEAACADKAIEBEAgAygCCBogAhCYBAsgABCY +BAsgASgCBCIAIAAoAgRBAWsiAzYCBCADRQRAIABBADoADCAAQQA2AgALIAFBIGokAAwCCyABQgA3 +AhQgAUHQ6tkANgIQIAFBATYCDCABQeCD2gA2AgggAUEEaiABQQhqENAxAAtBzPjZAEEmQZT52QAQ +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 +IgIgCUGsA2pBpAMQzU8aIABBgICAgHg2AnAgAEH0AGogAkGkAxDNTxogAEGYBGogAEGgBGo2AgAL +IwBBkAJrIgIkACAAQfAAaiIEQfQAaiEMIARBsAFqIQ0gBEH4AWohDiAEQZACaiEPIARBlAJqIRAg +BEGYAmohESAEQbwBaiESIARBmAFqIRMgBEHQAGohFCAEQbgCaiEVIAJBwAFqIRYgAkH4AGohCwJ/ +A0ACQAJ/AkACQCAEKAIAQYCAgIB4RiIDRQRAQQAgBCADGyEDAkACQCAELQC0AkEBaw4DAwAEAQsA +CyAEIAQoAkg2AkwgFCAEQcgAEM1PGiATIARBJBDNTxogBCAEKAKkATYC1AEgBCAEKAKoASIFNgLQ +ASAEIAU2AswBIAQgBCgCmAE2AsQBIAQgBCgCnAEiBzYCwAEgBCAHNgK8ASAEIAUgBCgCrAFBGGxq +NgLYASAEIAcgBCgCoAFBGGxqNgLIAUEADAMLIAJB9ABqIBUgARCxFCACKAJ0QYGAgIB4Rg0DIAJB +LGogAkH0AGpByAAQzU8aIAIoAixBgICAgHhHBEAgBCgCqAMhAwJAIAQoAgBBgICAgHhGDQACQAJA +IAQtALQCDgQAAgIBAgsgBBDdRwwBCyAREMw6IBAQlkEgDxCWQSAOEL01IBIQ3kcgDRC8SyAMENY/ +CyAEIAJB9ABqQcgAEM1PIgVBADoAtAIgBSADNgJIDAULIAJBLGoQl0NBAAwFC0Ggh8QAQSNB7LzE +ABDmKwALQQELIQUDQAJAAkACQCAFRQRAIANB3AFqIQUgA0G8AWohCCAHBEAgA0HAAWooAgAiBiAD +QcgBaigCAEcNAiAIEKtFIAhBADYCAAtBACEKIAJBADYCdAJAIANBzAFqKAIARQ0AIANB0AFqKAIA +IgYgA0HYAWooAgBGDQAgAyAGQRhqNgLQASADQeABaiAGKQIANwIAIANB6AFqIAZBCGopAgA3AgAg +A0HwAWogBkEQaikCADcCAEEBIQoLIAUgCjYCACACQfQAahCnQQwCCyACQQhqIANBmAJqIgYgARD5 +CCACKAIIIgdBAkcEQCACKAIMIQUgAiAHNgK8ASACIAU2AsABIAYQzDoCQCAHBEAgAiAFNgLcAQJA +QcST2wAoAgBBA0sNAEHM9toAEPs+IgdB/wFxRQ0AQcz22gAoAgAgBxD1LkUNAEEAIQdBzPbaACgC +ACIFQRxqIQYgBUEgaigCACIIBEAgBUEoaigCACEKIAVBJGooAgAhFyAFKAIcIQcgAkEANgKEASAC +IAo2AoABIAIgFzYCfCACIAg2AngLIAIgBzYCdCACQSxqIgcgAkH0AGoiBUH8vMQAEOYsIAJB1JrE +ADYChAIgAkEBNgJ4IAJBvL3EADYCdCACQgE3AoABIAJBqAE2AowCIAIgBTYCgAIgAiAHNgL8ASAC +IAJBiAJqNgJ8IAIgAkHcAWo2AogCIAJB8AFqIAYgAkH8AWoQ4EEgAkHoAWogAkH4AWooAgA2AgAg +AiACKQLwATcD4AFBzPbaACgCACACQeABahDENAsgAkHcAWoQlkEMAQsgFhCWQQsgA0GUAmoQlkEg +A0GQAmoQlkEgA0H4AWoQvTUgAygCvAEhBwwDCyAEQQM6ALQCDAQLIAJBATYCdCAGQRBqKQIAIRgg +BkEIaikCACEZIAsgBikCADcCACALQQhqIBk3AgAgC0EQaiAYNwIAIAMgBkEYajYCwAEgBUEYaiAC +QYwBaigCADYCACAFQRBqIAJBhAFqKQIANwIAIAVBCGogAkH8AGopAgA3AgAgBSACKQJ0NwIACyAF +KAIABEAgA0GIAmogA0HwAWopAwA3AwAgA0GAAmogA0HoAWopAwA3AwAgAyADQeABaikDADcD+AEg +AkEgaiADQfgBahDuNyACQRhqIAIoAiAgAigCJBDCMCACKAIcIQUgAigCGCEGIANBgQE2ApACIAMo +AkwhCCADIAYgBRCbTDYClAIgAkEQaiAIIANBkAJqIANBlAJqEPsnIAJB0AFqIAJB/ABqKQIAIhg3 +AwAgAkHGAWogAkEuai0AACIFOgAAIAIgAikCdCIZNwPIASACIAIvACwiBjsBxAEgAyACKQMQNwOY +AiADQaACaiAZNwIAIANBqAJqIBg3AgAgA0GwAmpBADoAACADQbECaiAGOwAAIANBswJqIAU6AABB +ASEFDAILIAgQ3kcgA0GwAWoQvEsgA0H0AGoQ1j8gBEGAgICAeDYCACAEQQE6ALQCDAMLQQAhBQwA +CwALC0EBCyEBIAJBkAJqJAAgAQ0BIAQQjh0gAEGgBGoQlkFBAQwCC0Gww8QAQSNB8InFABDmKwAL +QQMLOgCkBCAJQdAGaiQAIAELsBkCGn8DfiMAQbAFayIOJAAgAAJ/AkACQAJAAkACQCAALQDUA0EB +aw4DAwACAQsACyAOQcAEaiAAQfAAEM1PGiAOQQhqIgQgDkHcAmpB1AIQzU8aIABBgICAgHg2AnAg +AEH0AGogBEHUAhDNTxogAEHIA2ogAEHQA2o2AgALAn8gASEVIwBBkANrIgMkACAAQfAAaiIFQcgB +aiEQIAVBxAFqIREgBUHAAWohEiAFQbQBaiEJIAVBkAFqIQogBUHIAGohEyAFQegBaiEWIANB9AJq +IRcDQAJAAkACQAJAAn8CQAJAAkACQAJAAkAgBSgCAEGAgICAeEcEQAJAAkACQCAFLQDkAUEBaw4D +DAACAQsACyAFKAKwASEYIBMgBUHIABDNTxogBSgCdCEIIAUoAoABIQcgBSgCjAEhBiAFKAJwIQEg +BSgCbCENIAUoAnwhBCAFKAJ4IQ8gBSgCiAEhAiADIAUoAoQBNgLsASADIAI2AugBIAMgAjYC5AEg +AyAPNgLcASADIAQ2AtgBIAMgBDYC1AEgAyANNgLMASADIAE2AsgBIAMgATYCxAEgAyACIAZBGGxq +NgLwASADIAQgB0EYbGo2AuABIAMgASAIQRhsajYC0AEgA0EBNgLAASADQSBqQaCxxAAQ0SIgA0GA +AWoiGUGQhsQAKQMANwMAIANBkAFqIhogAykDKDcDACADQYgBaiIbIAMpAyA3AwAgA0GIhsQAKQMA +NwN4IwBBQGoiDSQAIA1BCGoiASADQcABaiIIQTQQzU8aIwBBEGsiByQAIANB+ABqIgYCfyAGKAIM +RQRAIAdBBGogARClDSAHKAIEDAELIAdBBGogARClDSAHKAIEQQFqQQF2CyAGQRBqEKQyIwBBQGoi +DyQAIA9BCGoiBCABQTQQzU8aIwBBsAFrIgIkACACIAY2AgwCQCAEKAIARQ0AIARBFGooAgAhBiAE +KAIEIQEgAiACQQxqNgJsIAEEQCACQSxqIARBEGooAgAiCzYCACACIAE2AiAgAiAEQQhqKQIAIhw3 +AiQgHKchAQJAA0AgASALRgRAIAJBADYCZCACIAs2AiQMAgsgAkHgAGogAUEQaiIMKQMANwMAIAJB +2ABqIAFBCGoiFCkDADcDACACIAEpAwA3A1AgAigCZARAIAJBiAFqIAwpAwA3AwAgAkGAAWogFCkD +ADcDACACIAEpAwA3A3ggAkHsAGogAkH4AGoQ/QwgAUEYaiEBDAELCyACIAFBGGo2AiQLIAJB0ABq +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 +IAAgASgCBBEAAAsgA0EgaiQAC6sBAQJ/IwBBIGsiAiQAAkACQAJAAkBBFSABKAIAQYCAgIB4cyID +IANBFU8bQRBrDgMCAQIACyACQRhqIAFBCGopAwA3AwAgAiABKQMANwMQIAAgAkEQahCTFwwCCyAC +IAEoAgQiATYCDCACQRhqIAFBCGopAwA3AwAgAiABKQMANwMQIAAgAkEQahCTFyACQQxqEItKDAEL +IABBADsBACABEOUfCyACQSBqJAAL3QYCBX8BfiMAQTBrIgUkACAFQQhqIAEQ0SACQCAFKAIIQZWA +gIB4RgRAIABBADsBAAwBCyAFQShqIAVBEGopAwA3AwBBASEGIAEgASgCEEEBajYCECAFIAUpAwg3 +AyAgBUEYaiECIwBBIGsiASQAAkACQAJAAkACQAJAAkACQAJAAkACQEEVIAVBIGoiBCgCAEGAgICA +eHMiAyADQRVPG0EBaw4ICAABAgMEBQYHCyACAn8gBC8BBCIDQYACTwRAIAFBAToACCABIAOtNwMQ +IAIgAUEIaiABQR9qQcia0gAQoRU2AgRBAQwBCyACIAM6AAFBAAs6AAAMCAsgAgJ/IAQoAgQiA0GA +Ak8EQCABQQE6AAggASADrTcDECACIAFBCGogAUEfakHImtIAEKEVNgIEQQEMAQsgAiADOgABQQAL +OgAADAcLIAICfyAEKQMIIgdCgAJaBEAgAUEBOgAIIAEgBzcDECACIAFBCGogAUEfakHImtIAEKEV +NgIEQQEMAQsgAiAHPAABQQALOgAADAYLIAICfyAELAAEIgNBAEgEQCABQQI6AAggASADrDcDECAC +IAFBCGogAUEfakHImtIAEKEVNgIEQQEMAQsgAiADOgABQQALOgAADAULIAICfyAELwEEIgNBgAJP +BEAgAUECOgAIIAEgA63DNwMQIAIgAUEIaiABQR9qQcia0gAQoRU2AgRBAQwBCyACIAM6AAFBAAs6 +AAAMBAsgAgJ/IAQoAgQiA0GAAk8EQCABQQI6AAggASADrDcDECACIAFBCGogAUEfakHImtIAEKEV +NgIEQQEMAQsgAiADOgABQQALOgAADAMLIAICfyAEKQMIIgdCgAJaBEAgAUECOgAIIAEgBzcDECAC +IAFBCGogAUEfakHImtIAEKEVNgIEQQEMAQsgAiAHPAABQQALOgAADAILIAFBEGogBEEIaikDADcD +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 +JAALiwEBA38jAEEgayICJAACQCABKAIAQYCAgIB4RgRAIABBgICAgHg2AgAMAQsgASgCDAR/IAIg +AUEMahD0HyACKAIEIQMgAigCAAVBAAshBCACQQxqIAEQxR4gAEEQaiADNgIAIAAgAikCDDcCACAC +IAQ2AhggAEEIaiACQRRqKQIANwIACyACQSBqJAALkwECBH8BfiMAQSBrIgEkACAAKAIEIgMEQAJA +IAAoAgwiBEUNACAAKAIAIgIpAwAhBSABIAQ2AhggASACNgIQIAEgAiADakEBajYCDCABIAJBCGo2 +AgggASAFQn+FQoCBgoSIkKDAgH+DNwMAA0AgARDnFSICRQ0BIAJBCGsQgT8MAAsACyAAQQgQ7ywL +IAFBIGokAAuTAQIEfwF+IwBBIGsiASQAIAAoAgQiAwRAAkAgACgCDCIERQ0AIAAoAgAiAikDACEF +IAEgBDYCGCABIAI2AhAgASACIANqQQFqNgIMIAEgAkEIajYCCCABIAVCf4VCgIGChIiQoMCAf4M3 +AwADQCABEKcVIgJFDQEgAkEoaxDsRwwACwALIABBKBDvLAsgAUEgaiQAC4EBAgF/AX4jAEEwayIB +JAAgABCpRSABIAAQvDcgASgCBEEANgIAIAFBKGogAEEQaigCADYCACABQSBqIABBCGopAgA3AwAg +ACkCACECIAFBEGogAUEkaikCADcDACABIAI3AxggASABKQIcNwMIIAAQmAQgAUEIahD7QCABQTBq +JAALEwAgACABQQRBAkH/////ARDYVAsSACAAIAFBBEEUQebMmTMQ2VQLEwAgACABQQRBA0H///// +ABDYVAsSACAAIAFBCEEFQf///x8Q2FQLEgAgACABQQRBBEH///8/ENhUCxIAIAAgAUEEQShBs+bM +GRDZVAsSACAAIAFBBEEsQa70ohcQ2VQLEwAgACABQQRBDEGq1arVABDZVAsSACAAIAFBCEEoQbPm +zBkQ2VQLEwAgACABQQhBoAFBzJmzBhDZVAsSACAAIAFBBEEYQdWq1SoQ2VQLEwAgACABQQhByABB +8bicDhDZVAsSACAAIAFBCEEYQdWq1SoQ2VQLgQECAX8BfiMAQTBrIgEkACAAEKlFIAEgABC8NyAB +KAIEQQA2AgAgAUEoaiAAQRBqKAIANgIAIAFBIGogAEEIaikCADcDACAAKQIAIQIgAUEQaiABQSRq +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 +IAJBLGogARCBAiADAn8gAi0ALEUEQCADIAIvAC07AAEgA0EDaiACLQAvOgAAIAJBGGogAkE8aikC +ACIHNwMAIAJBIGogAkHEAGopAgAiCDcDACACQShqIAJBzABqLQAAIgE6AAAgAiACQTRqKQIAIgk3 +AxAgAkEwaigCACEFIANBIGogAToAACADQRhqIAg3AgAgA0EQaiAHNwIAIANBCGogCTcCACADQQRq +IAU2AgBBAAwBCyADIAIoAjA2AgRBAQs6AAAMAQsjAEEQayIFJAAgBUEIaiABELwWAkAgBS0ACEUE +QCABQQxqIgYQrk8gARCsAyIBRQRAIwBBEGsiASQAIAFBCGogBigCECAGQRRqKAIAIAYoAgwgBigC +CBCJFyADIAEoAgggASgCDBDoLiABQRBqJAAMAgsgA0EBOgAAIAMgATYCBAwBCyADIAUoAgw2AgQg +A0EBOgAACyAFQRBqJAALIAJB0ABqJAACfyAELQAMRQRAQSBBARClLiIBQRhqIARBJWopAAA3AAAg +AUEQaiAEQR1qKQAANwAAIAFBCGogBEEVaikAADcAACABIAQpAA03AABBAAwBCyAEKAIQIQFBAQsh +AiAAIAE2AgQgACACNgIAIARBMGokAAt+AAJAAkAgAyAESw0AAkAgA0UNACACIANNBEAgAiADRg0B +DAILIAEgA2osAABBQEgNAQsgBEUNASACIARNBEAgAiAERw0BDAILIAEgBGosAABBv39KDQELIAEg +AiADIARBjI3IABClRwALIAAgBCADazYCBCAAIAEgA2o2AgAL9gIBBX8jAEEgayIFJAAgBUEIaiAE +QRBqQQAQ3RggBUEANgIcIAUgBSkDCDcCFCAFQRRqIgcgAyAEEOFIIwBBMGsiAyQAIAMgB0HY+8gA +KAIAEQEAIAMoAgAhCCADKAIEIQYjAEHAAmsiBCQAIARBvAFqIgkgASACEJI/IAQgCRDYHiMAQUBq +IgEkACAEQYD8yABBABD7GiAEQThqIAggBhC8BSAEIAggBhD7GiAEIAYQ5xkgAUEIaiICIARBOBDN +TxogA0EfaiIGQQFqIAIQi1EgBkEAOgAAIAQQpEYgAUFAayQAIARBwAJqJAACfwJAIAMtAB8NACAD +QRBqIANBKGopAAA3AwAgAyADKQAgNwMIIAcgA0EIakEQQej7yAAoAgARBgANAEEADAELQQELIQEg +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 +aiABQdgBahDRTiACIAo3AxgjAEEwayIBJAAgARCjNCABQRhqIgZB0PbSACkDADcDACABQShqIgcg +ASkDCDcDACABQSBqIgggASkDADcDACABQcj20gApAwA3AxAjAEHgAGsiAyQAIANBCGogAkEYakEo +EM1PGiABQRBqIgVBASAFQRBqELsyIANCgICAgBA3AzAgA0EQaiEJIAMpAwghCgNAIARFBEAgA0E/ +aiAFIAogCRCRCEEBIQQMAQsLIANB4ABqJAAgAEEYaiAHKQMANwMAIABBEGogCCkDADcDACAAQQhq +IAYpAwA3AwAgACABKQMQNwMAIAFBMGokAAwBCyACQQhqQdj20gAQyCIgAikDCCEKIAIpAxAhCyAA +QQhqQdD20gApAwA3AwAgAEHI9tIAKQMANwMAIAAgCzcDGCAAIAo3AxALIAJBQGskAAuXAQECfyMA +QSBrIgIkACACIAA2AgggAkEMaiIDIAFB2MjTAEEHEJY2IAJBFGoiASAAQdAAahDjCyADQd/I0wBB +CiABQezI0wAQzghB/MjTAEEPIAJBCGpBjMnTABDOCEGcydMAQRAgAEGwAWpBrMnTABDOCEG8ydMA +QQYgAEGgHWpBxMnTABDOCBDHEiABEIg/IAJBIGokAAuIAQECfyMAQSBrIgIkACABLQAAIQMgAUEG +OgAAAkAgA0EGRgRAQezz1gBBEBD4ESEBIABBgICAgHg2AgAgACABNgIEDAELIAJBEWogAUEJaikA +ADcAACACQRhqIAFBEGopAAA3AAAgAiADOgAIIAIgASkAATcACSAAIAJBCGoQ1BoLIAJBIGokAAuI +AQECfyMAQSBrIgIkACABLQAAIQMgAUEGOgAAAkAgA0EGRgRAQezz1gBBEBD4ESEBIABBlYCAgHg2 +AgAgACABNgIEDAELIAJBEWogAUEJaikAADcAACACQRhqIAFBEGopAAA3AAAgAiADOgAIIAIgASkA +ATcACSAAIAJBCGoQuBMLIAJBIGokAAuIAQECfyMAQSBrIgIkACABLQAAIQMgAUEGOgAAAkAgA0EG +RgRAQezz1gBBEBD4ESEBIABBgICAgHg2AgAgACABNgIEDAELIAJBEWogAUEJaikAADcAACACQRhq +IAFBEGopAAA3AAAgAiADOgAIIAIgASkAATcACSAAIAJBCGoQyhkLIAJBIGokAAsOACAAIAFB7PPW +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 +iAVFBEAgAkGwA2oiCyACQYgFaiIJQQRyQdQBEM1PGiACQdgBaiIBIAtB1AEQzU8aIAJBDGogARDC +LSACQZgDahC7RyACQaADahC7RyAJIAhBEGooAgAgCEEUaigCABDdESACLQCIBSIJDQEgAkGAB2og +AkGRBWopAAA3AwAgAkGIB2ogAkGZBWopAAA3AwAgAkGQB2ogAkGhBWopAAA3AwAgAiACKQCJBTcD ++AYgCEEYaiEHIAJBnAdqEOhIAkACQCAIKAIYIhFBgICAgHhGIgtFBEAgAkGwB2ogB0EIaigCACIB +NgIAIAIgBykCADcDqAcgAkEANgK0ByACQYgFaiACKAKsByABEI8NIAIoAogFDQEgAkHAB2oiASAC +QYwFakHAARDNTxogAkG0A2ogAUHAARDNTxogAkEANgKwAyACQdgBaiACQZwHaiACQbQHaiACQbAD +ahDtECACKALYAUECRwRAIAJB2AFqEKNBCyACQagHahCIPwsgAkGIBWogAkEMakHMARDNTxogAkHg +AWogAkGkB2ooAgA2AgAgAiACKQKcBzcD2AEgAiAIQSRqIgwQhyggAigCACISRQ0BIAIoAgQhDiAI +LwEsIQsgAkGwA2oiCSACQYgFakHMARDNTxogCkGEAmogAkGQB2opAwA3AAAgCkH8AWogAkGIB2op +AwA3AAAgCkH0AWogAkGAB2opAwA3AAAgCiACKQP4BjcA7AEgAkHIB2oiASACQeABaigCADYCACAC +IAIpA9gBNwPAByAKQQU2AgwgCkEBNgIAIApBGGogCUHMARDNTxogCiAONgLoASAKIBI2AuQBIAog +CzsBmAIgCiACKQPABzcCjAIgCkGUAmogASgCADYCACAIEIg/IAhBDGoQiD8gEUGAgICAeEcNBiAI +KAIYQYCAgIB4Rg0GIAcQiD8MBgsgAkHQB2ogAkGcBWooAgA2AgAgAkHIB2ogAkGUBWopAgA3AwAg +AiACKQKMBTcDwAcgCiACQcAHahCEICACQbQHahCbQCACQagHahCIPyACQZwHahCtGQwDC0GB78MA +QSgQDiEBIApBAzYCACAKIAE2AgQgAkHYAWoQrRkgAkHIBmoQu0cMAwsgAkHEA2ogAkGgBWopAwAi +IDcCACACQbwDaiACQZgFaiIBKQMAIh83AgAgAiACKQOQBSIeNwK0AyABICA3AwAgAkGQBWogHzcD +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 +IGsiAyQAIAMgAjYCBCADIAE2AgAgA0EIaiADENUsAkAgAy0ACEUEQCADLQAJBEAgAygCACEBIANB +ADYCACABRQRAQcC91wAQo0sACyAAIAEgAygCBBD0IQwCCyADQQs6AAggA0EIaiADQR9qQdC81wAQ +oBUhASAAQQA2AgAgACABNgIEDAELIAAgAygCDDYCBCAAQQA2AgALIANBIGokAAu5AQIBfwJ+IwBB +MGsiAyQAIANBEGogASkDAEIAIAAQwBggA0EgaiABKQMIQgAgABDAGCADQShqKQMAIANBGGopAwAi +ACADKQMgfCIEIABUrXwhAAJAIAJBQGtB/wBxIgFBwABxRQRAIAFFDQEgAEEAIAFrQT9xrYYgBCAB +QT9xrSIFiIQhBCAAIAWIIQAMAQsgACABQT9xrYghBEIAIQALIAMgBDcDACADIAA3AwggAykDACAD +QTBqJAALiQEBAn8jAEEwayICJAAgAkEAOgAMIAIgATYCCCACQRxqQgE3AgBBASEDIAJBATYCFCAC +Qbzc2QA2AhAgAkHzETYCLCACIAA2AiggAiACQShqNgIYAkAgAkEIaiACQRBqELFPDQAgAi0ADEUE +QCABQcTc2QBBAhCHQQ0BC0EAIQMLIAJBMGokACADC2gBBX4gACADQv////8PgyIEIAFC/////w+D +IgV+IgYgBSADQiCIIgd+IgUgBCABQiCIIgh+fCIBQiCGfCIENwMAIAAgBCAGVK0gByAIfiABIAVU +rUIghiABQiCIhHx8IAIgA358NwMICxkAIAAgASACIAMgBEHsgcAAQfCAwAAQzFQLhwEBAn8gASgC +ACIFLwHiASIGQQtPBEBB8IDAAEEgQeyBwAAQ5isACyAFIAZBAWo7AeIBIAAgBjYCCCAAIAU2AgAg +ACABKAIENgIEIAUgBkEDdGoiACAENgIEIAAgAzYCACAFIAZBDGxqIgBB5ABqIAJBCGooAgA2AgAg +AEHcAGogAikCADcCAAsOACAAIAEgAkHkARDRVAuAAQEEfyMAQSBrIgMkACABLwGOAiEEIANBADoA +HCADIAQ2AhggA0EANgIUIAFBkAJqIQQDQCADQQhqIANBFGoQ+SEgAygCCARAIAQgAygCDCIFQQJ0 +aigCACIGIAU7AYwCIAYgATYCAAwBCwsgACACNgIEIAAgATYCACADQSBqJAALgAEBBH8jAEEgayID +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 +AWotAAAhAiAFQSBqIAVBkAFqQfAAEM1PGiAEQQhqIAVBkAEQzU8aIARBrAFqIAI6AAAgBEGoAWog +CjYCACAEQaQBaiAJNgIAIARBoAFqIAg2AgAgBEGcAWogBzYCACAEQZgBaiAGNgIAIARCBDcDAAwH +CyACQZgBaigCACIGIAYoAgAiA0EBajYCACADQQBIDQcgBUGQAWogAkEoahDoMCACQZwBaigCACIH +IAcoAgAiA0EBajYCACADQQBIDQcgAkGgAWooAgAiCCAIKAIAIgNBAWo2AgAgA0EASA0HIAJBpAFq +KAIAIgkgCSgCACIDQQFqNgIAIANBAEgNByACQagBaigCACIKIAooAgAiA0EBajYCACADQQBIDQcg +BUEIaiACQQhqIgNBCGopAwA3AwAgBUEQaiADQRBqKQMANwMAIAVBGGogA0EYaikDADcDACAFIAMp +AwA3AwAgAkGsAWotAAAhAiAFQSBqIAVBkAFqQfAAEM1PGiAEQQhqIAVBkAEQzU8aIARBrAFqIAI6 +AAAgBEGoAWogCjYCACAEQaQBaiAJNgIAIARBoAFqIAg2AgAgBEGcAWogBzYCACAEQZgBaiAGNgIA +IARCBTcDAAwGCyACQZgBaigCACIGIAYoAgAiA0EBajYCACADQQBIDQYgBUGQAWogAkEoahDoMCAC +QZwBaigCACIHIAcoAgAiA0EBajYCACADQQBIDQYgAkGgAWooAgAiCCAIKAIAIgNBAWo2AgAgA0EA +SA0GIAJBpAFqKAIAIgkgCSgCACIDQQFqNgIAIANBAEgNBiACQagBaigCACIKIAooAgAiA0EBajYC +ACADQQBIDQYgBUEIaiACQQhqIgNBCGopAwA3AwAgBUEQaiADQRBqKQMANwMAIAVBGGogA0EYaikD +ADcDACAFIAMpAwA3AwAgAkGsAWotAAAhAiAFQSBqIAVBkAFqQfAAEM1PGiAEQQhqIAVBkAEQzU8a +IARBrAFqIAI6AAAgBEGoAWogCjYCACAEQaQBaiAJNgIAIARBoAFqIAg2AgAgBEGcAWogBzYCACAE +QZgBaiAGNgIAIARCBjcDAAwFCyACQZgBaigCACIGIAYoAgAiA0EBajYCACADQQBIDQUgBUGQAWog +AkEoahDoMCACQZwBaigCACIHIAcoAgAiA0EBajYCACADQQBIDQUgAkGgAWooAgAiCCAIKAIAIgNB +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 +AEEwayIBJAACfyAAKAIAIgJFBEBBACECQQAMAQsgASACNgIkIAFBADYCICABIAI2AhQgAUEANgIQ +IAEgACgCBCICNgIoIAEgAjYCGCAAKAIIIQJBAQshACABIAI2AiwgASAANgIcIAEgADYCDCABQQxq +EIwkIAFBMGokAAuBAQECfyMAQTBrIgEkAAJ/IAAoAgAiAkUEQEEAIQJBAAwBCyABIAI2AiQgAUEA +NgIgIAEgAjYCFCABQQA2AhAgASAAKAIEIgI2AiggASACNgIYIAAoAgghAkEBCyEAIAEgAjYCLCAB +IAA2AhwgASAANgIMIAFBDGoQsBIgAUEwaiQAC4EBAQJ/IwBBMGsiASQAAn8gACgCACICRQRAQQAh +AkEADAELIAEgAjYCJCABQQA2AiAgASACNgIUIAFBADYCECABIAAoAgQiAjYCKCABIAI2AhggACgC +CCECQQELIQAgASACNgIsIAEgADYCHCABIAA2AgwgAUEMahDzKiABQTBqJAALgQEBAn8jAEEwayIB +JAACfyAAKAIAIgJFBEBBACECQQAMAQsgASACNgIkIAFBADYCICABIAI2AhQgAUEANgIQIAEgACgC +BCICNgIoIAEgAjYCGCAAKAIIIQJBAQshACABIAI2AiwgASAANgIcIAEgADYCDCABQQxqEPQqIAFB +MGokAAuEAQECfyMAQRBrIgQkAAJ/QQEgAkKM5rmDhYv6wE6FIANCyebc1oCLhrJQhYRQDQAaIARB +CGogAUGoAWogAiADELMQIAQoAggEQCAEKAIMIQFBAQwBCyAEIAEgAiADEO8iIAQoAgQhASAEKAIA +CyEFIAAgATYCBCAAIAU2AgAgBEEQaiQAC8MBAQJ/IAAoAgAiAEEIaiECIwBBEGsiASQAAkACQANA +AkAgAUEIaiACENETAkAgASgCCEEBaw4CAQMACyABKAIMQQhrEM05DAELCyABQRBqJAAMAQtBgMbD +AEEUEJ06AAsgAEEMaigCACIBBEAgAEEQaigCACABKAIMEQAACyACKAIAIgEgASgCACIBQQFrNgIA +IAFBAUYEQCACEOUXCwJAIABBf0YNACAAIAAoAgQiAUEBazYCBCABQQFHDQAgABCYBAsLwwEBAn8g +ACgCACIAQQhqIQIjAEEQayIBJAACQAJAA0ACQCABQQhqIAIQ0RMCQCABKAIIQQFrDgIBAwALIAEo +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 +AkEQajYCNCACQRxqIgYgAkFAaxCBFiAGEKE0IQYMAQsgAkHMAGpCATcCACACQQE2AkQgAkGM9NIA +NgJAIAJBuQM2AlwgAiACQdgAajYCSCACIAJBKGo2AlggAkE0aiIGIAJBQGsQgRYgBhChNCEGCyAC +QeAAaiQAIARBQGsgCkEwEM1PGgJAIAZFBEAgDSAEQRBqQTAQzU8aDAELIA1BgICAgHg2AgAgDSAG +NgIEIARBQGsQwjwLIARB8ABqJAAgACgCyAEiBkGAgICAeEYNAiAAKALMASECIABBGGogAEHQAWpB +KBDNTxogACACNgIUIAAgBjYCECAAQcgBaiACIAAoAhgQuxEgAC0AyAFFBEAgAEHIAGogAEHRAWoi +AikAADcDACAAQdAAaiAAQdkBaiIGKQAANwMAIABB2ABqIABB4QFqIgQpAAA3AwAgACAAKQDJATcD +QCAAQcgBaiAAQSBqKAIAIABBJGooAgAQuxEgAC0AyAENBCAAQegAaiACKQAANwMAIABB8ABqIAYp +AAA3AwAgAEH4AGogBCkAADcDACAAIAApAMkBNwNgIABByAFqIABBLGooAgAgAEEwaigCABC7ESAA +LQDIAQ0EIABBHGogAEEoaiEEIABBiAFqIABB0QFqKQAANwMAIABBkAFqIgcgAEHZAWopAAA3AwAg +AEGYAWoiCiAAQeEBaikAADcDACAAIAApAMkBNwOAASAAQagCaiAAQTxqKAIANgIAIAAgACkCNDcD +oAIgAEHIAWogAEGgAmoQ8EQCQCAAKALwASILQYCAgIB4RwRAIABBoAFqIgIgAEHIAWpBKBDNTxog +AUEsaiAAQfQBakEsEM1PGiABIAJBKBDNTyECIABBuAJqIABBiAFqKQMANwMAIABBwAJqIAcpAwA3 +AwAgAEHIAmogCikDADcDACAAQdgCaiAAQegAaikDADcDACAAQeACaiAAQfAAaikDADcDACAAQegC +aiAAQfgAaikDADcDACAAQfgCaiAAQcgAaikDADcDACAAQYADaiAAQdAAaikDADcDACAAQYgDaiAA +QdgAaikDADcDACAAIAApA4ABNwOwAiAAIAApA2A3A9ACIAAgACkDQDcD8AIgAkHYAGogAEGwAmpB +4AAQzU8aIAIgCzYCKAwBCyAAQbABaiAAQdgBaigCACICNgIAIABBqAFqIABB0AFqKQMAIh43AwAg +ACAAKQPIASIfNwOgASABQRBqIAI2AgAgAUEIaiAeNwMAIAEgHzcDACABQYCAgIB4NgIoCyAAQRBq +EIg/EIg/IAQQiD8MBQsMAwsgAUGAgICAeDYCKCABQQU2AgAMAwsgAUGAgICAeDYCKCABIAQ6AAUg +AUEDOgAEIAFBBzYCAAwCCyAAKALMASECIAFBgICAgHg2AiggASACNgIEIAFBCzYCAAwBCyAAQbMB +aiAAQdwBaigCACICNgAAIABBqwFqIABB1AFqKQIAIh43AAAgACAAKQLMASIfNwCjASABQRBqIAI2 +AAAgAUEIaiAeNwAAIAEgHzcAACABQYCAgIB4NgIoIABBEGoQiD8gAEEcahCIPyAAQShqEIg/IABB +NGoQiD8LIABBkANqJAAgERCIPwwBCyAIKQIMIR4gAUGAgICAeDYCKCABIB43AgQgAUEMNgIACyAI +QSBqJAAgASgCKCIAQYCAgIB4RwRAIAFBuAFqIgIgAUEoEM1PGiAFQSxqIAFBLGpBjAEQzU8aIAUg +AkEoEM1PIAA2AigMAgsgAUHIAWogAUEQaigCACIANgIAIAFBwAFqIAFBCGopAwAiHjcDACABIAEp +AwAiHzcDuAEgBUEQaiAANgIAIAVBCGogHjcDACAFIB83AwAgBUGBgICAeDYCKAwBCyMAQSBrIgAk +ACAAQQhqIAIgBhDuSgJAIAAoAggiAkGAgICAeEcEQCAAIAApAgw3AhggACACNgIUIAEgAEEUahDw +RAwBCyAAKQIMIR4gAUGAgICAeDYCKCABIB43AgQgAUEMNgIACyAAQSBqJAAgASgCKCIAQYCAgIB4 +RwRAIAFB6AFqIgIgAUEoEM1PGiAFQdwAaiABQSxqQSwQzU8aIAFBvAFqIAJBKBDNTxogBUGAgICA +eDYCKCAFQSxqIAFBuAFqQSwQzU8aIAUgADYCWAwBCyABQfgBaiABQRBqKAIAIgA2AgAgAUHwAWog +AUEIaikDACIeNwMAIAEgASkDACIfNwPoASAFQRBqIAA2AgAgBUEIaiAeNwMAIAUgHzcDACAFQYGA +gIB4NgIoCyABQZACaiQAAkAgAygCQEGBgICAeEcEQCAOIANBGGpBuAEQzU8aDAELIANBGGoQ6CMh +ACAOQYGAgIB4NgIoIA4gADYCAAsgA0EIahCIPwwBCyADKAIcIQAgDkGBgICAeDYCKCAOIAA2AgAL +IANB0AFqJAALIAxBIGokACAJKAKgBEGBgICAeEYEQCAJKAL4AyECIAlB7ANqEIg/DAMLIBggCUH4 +A2pBuAEQzU8aIAlB4ABqIAlBsAVqIhFBvAEQzU8aIAkgEDYCnAIgCSAgPgKgAiAJICBCIIg+AqQC +IAlBqAJqIgwgF0G4ARDNTxojAEFAaiIHJAAgB0EEaiEFIAlBnAJqIQ4jAEEQayIEJAACQCAJQdQA +aiILKAIAIgBFBEAgBUEANgIQIAUgCzYCDCAFIA4pAgA3AgAgBUEIaiAOQQhqKAIANgIADAELIAso +AgQhBiMAQRBrIgMkACADQQRqIRAgBAJ/A0AjAEEQayIIJAAgCCAGNgIMIAggACIBNgIIIAhBCGoo +AgAiDS8B8hAiAkEMbCEKQX8hACANQewPaiENQQEhDwJAA0AgCkUEQCACIQAMAgsgCkEMayEKIABB +AWohACAOIA0QiUEhFCANQQxqIQ0CQCAUQf8BcQ4CAAECCwtBACEPCyAIIAA2AgQgCCAPNgIAIAgo +AgAhACADQQxqIAgoAgQ2AgAgA0EIaiAGNgIAIAMgATYCBCADIAA2AgAgCEEQaiQAIAMoAgBFBEAg +BCAQKQIANwIEIARBDGogEEEIaigCADYCAEEADAILIAMoAgwhACADKAIEIQEgAygCCCICBEAgAkEB +ayEGIAEgAEECdGpB+BBqKAIAIQAMAQsLIAQgATYCBCAEQQxqIAA2AgAgBEEIakEANgIAQQELNgIA +IANBEGokACAEQQRqIQAgBCgCAARAIAUgCzYCDCAFIA4pAgA3AgAgBSAAKQIANwIQIAVBCGogDkEI +aigCADYCACAFQRhqIABBCGooAgA2AgAMAQsgBUGAgICAeDYCACAFIAApAgA3AgQgBUEQaiALNgIA +IAVBDGogAEEIaigCADYCACAOEIg/CyAEQRBqJAACQCAHKAIEQYCAgIB4RwRAIAdBOGogB0EcaigC +ADYCACAHQTBqIAdBFGopAgA3AwAgB0EoaiAHQQxqKQIANwMAIAcgBykCBDcDICMAQdAAayIEJAAC +QCAHQSBqIggoAhBFBEAgCCgCDCEAIARBCGoQokQgBCgCDCEBIAQgBCgCCCICNgIQIAQgATYCFCAE +QSBqIAhBCGooAgA2AgAgBCAIKQIANwMYIARBQGsgBEEQaiAEQRhqIAwQ6hkgBCgCQBogBCgCSBog +AEEBNgIIIAAgATYCBCAAIAI2AgAMAQsgBEEwaiAIQRBqIgBBCGooAgA2AgAgBCAAKQIANwMoIARB +yABqIAhBCGooAgA2AgAgBCAIKQIANwNAIARBNGohDiAEQUBrIQsgCEEMaiEZIwBB4ANrIgMkACAD +QRBqIQUjAEGAAmsiAiQAAkAgBEEoaiIKKAIAIg0vAfIQQQtPBEBBASEGQQQhAAJAIAooAggiAUEF +SQ0AAkACQCABIgBBBWsOAgIBAAsgAUEHayEBQQAhBkEGIQAMAQtBACEGQQUhAEEAIQELIAIgADYC +DCACIA02AgQgAiAKKAIENgIIIAJBEGoiACACQQRqIgoQo0QiDRCWDiAAQdQBakEANgIAIAAgDTYC +0AEgACAKKQIANwPIASACQdgBaiACQeABaiAGGygCACEKIAJB3AFqIAJB5AFqIAYbKAIAIQYgAiAB +NgL8ASACIAY2AvgBIAIgCjYC9AEgAkHoAWogAkH0AWogCyAMEI8pIAIpAugBIR4gAigC8AEhASAF +IABB2AEQzU8iAEHgAWogATYCACAAIB43A9gBDAELIAJBEGogCiALIAwQjykgBUGAgICAeDYCACAF +QeABaiACKAIYNgIAIAUgAikCEDcD2AELIAJBgAJqJAAgA0HwAWooAgAhGiADQewBaigCACEbIAMo +AugBIRwCQAJAAkAgAygCEEGAgICAeEYNACADQdwBaigCACEBIAMoAtgBIQIgA0GYAmogA0EQakHI +ARDNTxogA0HkAWooAgAhBSADKALgASEGIANBqAJqIQsDQCACKALoDyIABEAgAyAANgL8ASADIAIv +AfAQNgKEAiADIAFBAWo2AoACIANBkAJqIANBoAJqKAIANgIAIAMgAykDmAI3A4gCIANBEGohDSAD +QYgCaiEQIwBBgAJrIgEkAAJAAkAgBSADQfwBaiICKAIEIgxBAWtGBEAgAigCACIKLwHyEEELSQ0B +QQEhAEEEIQUCQCACKAIIIgJBBUkNACACIQUCQAJAIAJBBWsOAgIBAAsgAkEHayECQQAhAEEGIQUM +AQtBACEAQQUhBUEAIQILIAEgBTYCFCABIAw2AhAgASAKNgIMIwBB0AFrIgUkACABQQxqIgwoAgAi +Dy8B8hAhHSAFQQhqIAwQsEQiChCWDiAKLwHyECIVQQFqIRQgFUEMTwRAIBRBDEH0vckAEOMbAAsg +DCgCCCIVQQJ0IA9qQfwQaiAdIBVrIApB+BBqIBQQ7zggBSAKIAwoAgQiChCHIyAFKQMAIR4gAUEY +aiIMQcwBaiAKNgIAIAwgDzYCyAEgDCAFQQhqQcgBEM1PIB43A9ABIAVB0AFqJAAgASACNgL8ASAB +IAFB5AFqIAFB7AFqIAAbKAIANgL4ASABIAFB4AFqIAFB6AFqIAAbKAIANgL0ASABQfQBaiAQIAsg +BhCpIiANIAxB2AEQzU8aDAILQYS+yQBBNUG8vskAEOYrAAsgAiAQIAsgBhCpIiANQYCAgIB4NgIA +CyABQYACaiQAIAMoAhBBgICAgHhGDQIgAygC2AEhAiADKALcASEBIANBmAJqIANBEGpByAEQzU8a +IAMoAuABIQYgAygC5AEhBQwBCwsgA0EQaiADQZgCakHIARDNTxogAyAFNgLkASADIAY2AuABIAMg +ATYC3AEgAyACNgLYASAZKAIAIgAoAgBFDQEgA0EIaiAAEK4oIAMgAykDCDcCiAIgA0GIAmogA0EQ +aiADQSBqIAYgBRDvEwsgDiAaNgIIIA4gGzYCBCAOIBw2AgAgA0HgA2okAAwBC0GkuskAEKNLAAsg +CCgCDCIAIAAoAghBAWo2AgggBCgCNCAEKAI8QbgBbGoaCyAEQdAAaiQAIBFBgYCAgHg2AigMAQsg +ESAHKAIIIAdBEGooAgBBuAFsaiIAQbgBEM1PGiAAIAxBuAEQzU8aCyAHQUBrJAAgCSgC2AVBgYCA +gHhGDQEgCUGwBWoQjD4MAQsLIAkoAuQDIQILIAlB1ABqEK8ZIBJBATYCACASIAI2AgQMAQsgCSAJ +KQJYNwJMIAkgCSgCVDYCSCASAn8gCUFAaygCAARAIBIgFkGU+8sAQez6ywAQ3hc2AgQgCUHIAGoQ +rxlBAQwBCyASIAkpAkg3AgQgEkEMaiAJQdAAaigCADYCAEEACzYCAAsgCUEIahD0SCAJQfAGaiQA +DAELIAEgE0EPakGkmMoAEIE4IQIgAEEBNgIAIAAgAjYCBCABLQAAQQVHBEAgARDnNAwBCyABQQRq +EMwZCyATQRBqJAALnAQCBH8BfiMAQRBrIgMkAAJAIAEtAABBBUYEQCADQQhqIgIgAUEMaigCADYC +ACADIAEpAgQ3AwAjAEGgAWsiASQAIAIoAgAhBCABQZgBaiIFIAIoAgA2AgAgASADKQIANwOQASAB +IAFBkAFqEPwZIAFBADYCWCABQQA2AlACQAJAAkADQAJAIAFB+ABqIAEQkhICQCABKAJ4IgJBgICA +gHhrDgIEAQALIAEgASkCfCIGNwKIASABIAI2AoQBIAFBkAFqIAEQkBcgASgCkAFBgICAgHhGBEAg +ASgClAEhAiABQYQBahCIPwwDBSABQfAAaiAFKAIANgIAIAEgASkCkAE3A2ggASACNgJcIAEgBj4C +YCABIAZCIIg+AmQgAUGQAWoiAiABQdAAaiABQdwAaiABQegAahCDDiACEPtADAILAAsLIAEoAnwh +AgsgAUHQAGoQxxkgAEEBNgIAIAAgAjYCBAwBCyABIAEpAlQ3AkggASABKAJQNgJEIAACfyABQThq +KAIABEAgACAEQZT7ywBB7PrLABDeFzYCBCABQcQAahDHGUEBDAELIAAgASkCRDcCBCAAQQxqIAFB +zABqKAIANgIAQQALNgIACyABEPRIIAFBoAFqJAAMAQsgASADQQ9qQYSZygAQgTghAiAAQQE2AgAg +ACACNgIEIAEtAABBBUcEQCABEOc0DAELIAFBBGoQzBkLIANBEGokAAt6AQJ/IwBBEGsiAiQAAkAg +ARCfMCIDRQRAIABBAzYCAAwBCyABIAEoAghBAWo2AgggAkEEaiADELggIAIoAgRBA0cEQCAAIAIp +AgQ3AgAgAEEIaiACQQxqKAIANgIADAELIAAgAigCCDYCBCAAQQQ2AgALIAJBEGokAAt6AQJ/IwBB +EGsiAiQAAkAgARCfMCIDRQRAIABBBDYCAAwBCyABIAEoAghBAWo2AgggAkEEaiADELYgIAIoAgRB +BEcEQCAAIAIpAgQ3AgAgAEEIaiACQQxqKAIANgIADAELIAAgAigCCDYCBCAAQQU2AgALIAJBEGok +AAuGAQECfyMAQRBrIgIkAAJAIAEQnzAiA0UEQCAAQYCAgIB4NgIADAELIAEgASgCCEEBajYCCCAC +QQRqIAMQth4gAigCBEGAgICAeEcEQCAAIAIpAgQ3AgAgAEEIaiACQQxqKAIANgIADAELIAAgAigC +CDYCBCAAQYGAgIB4NgIACyACQRBqJAALhgEBAn8jAEEQayICJAACQCABEJ8wIgNFBEAgAEGAgICA +eDYCAAwBCyABIAEoAghBAWo2AgggAkEEaiADEP8XIAIoAgRBgICAgHhHBEAgACACKQIENwIAIABB +CGogAkEMaigCADYCAAwBCyAAIAIoAgg2AgQgAEGBgICAeDYCAAsgAkEQaiQAC6ABAQN/IwBBEGsi +AiQAIAAoAgAiAUEsahCBPyABQTRqEIE/IAFBCGoiAxD/MyADEKE9IAFBPGoQoBkgAUHIAGoQmhkg +AUEUahD7QCABQSBqEMwZIAFB1ABqEMwZIAIgAEEEajYCDCACIAE2AggCQCACQQhqKAIAIgBBf0YN +ACAAIAAoAgQiAUEBazYCBCABQQFHDQAgABCYBAsgAkEQaiQAC5YBAQN/IwBBMGsiBCQAQQIgAkH/ +AXEiAwR/IANB9gVqIANBnANqcUEIdkEBagVBAQtB/wFxayIDQQAgA0ECTRsiBSEDA0AgAwRAIAFB ++LzNAEEBEOFIIANBAWshAwwBBSAEIARBCGogAhDRFiABIAQoAgAgBCgCBCIBEOFIIABBBDoAACAA +IAEgBWo2AgQgBEEwaiQACwsLiAEBA38jAEGAAWsiAiQAIAJBDGogARCLUgJAIAIoAgwiAUGAgICA +eEcEQCACIAIoAhQiAzYCCCACIAIoAhAiBDYCBCACIAE2AgAgAkEMaiIBIAQgAxDSTiAAIAEQoTIg +AhCIPwwBCyACKAIQIQEgAEGAgICAeDYCACAAIAE2AgQLIAJBgAFqJAALewICfwF+IwBBIGsiASQA +IAFBEGogACgClAFBCGoQwg0CQCABKQMQIgNCrAJaBEBBASECIANCrAJSDQEgASgCGA0BCyABIAAo +ApgBQQhqEMINQQAhAiABKQMAIgNCPFQNACABKAIIQQBHIANCPFJyIQILIAFBIGokACACC4QBAQJ/ +IwBBEGsiBCQAAn9BASACQvXysqOMuPeWsH+FIANC79yDn/m9yKpLhYRQDQAaIARBCGogASACIAMQ +/BQgBCgCCARAIAQoAgwhAUEBDAELIAQgAUEMaiACIAMQ7j0gBCgCBCEBIAQoAgALIQUgACABNgIE +IAAgBTYCACAEQRBqJAALgQEBAn8jAEEwayIBJAACfyAAKAIAIgJFBEBBACECQQAMAQsgASACNgIk +IAFBADYCICABIAI2AhQgAUEANgIQIAEgACgCBCICNgIoIAEgAjYCGCAAKAIIIQJBAQshACABIAI2 +AiwgASAANgIcIAEgADYCDCABQQxqENMbIAFBMGokAAuIBQELfyMAQTBrIgMkAAJ/IAAoAgAiAUUE +QEEAIQBBAAwBCyADIAE2AiQgA0EANgIgIAMgATYCFCADQQA2AhAgAyAAKAIEIgE2AiggAyABNgIY +IAAoAgghAEEBCyEBIAMgADYCLCADIAE2AhwgAyABNgIMIANBDGohASMAQRBrIgokAANAIApBBGoh +CyMAQRBrIgckAAJAIAEoAiAiAEUEQCAHQQRqIQAgASgCACECIAFBADYCAAJAIAIEQCABKAIMIQIg +ASgCCCEEIAEoAgQiBUUEQANAIAIEQCACQQFrIQIgBCgCwAMhBAwBCwsgAEIANwIEIAAgBDYCAAwC +CyAAIAI2AgggACAENgIEIAAgBTYCAAwBCyAAQQA2AgALIAcoAgQEQCAHQQRqEL4pCyALQQA2AgAM +AQsgASAAQQFrNgIgIAEQnRoiBQRAIwBBIGsiAiQAIAJBCGohBCMAQSBrIgAkACAFKAIIIQggBSgC +ACEGIAUoAgQhCQJAA0AgBi8BvgMgCEsEQCAAIAg2AhwgACAJNgIYIAAgBjYCFCAAQQhqIABBFGoQ +tR8gBEEIaiAAQRBqKAIANgIAIAQgACkDCDcCACAEIAg2AhQgBCAJNgIQIAQgBjYCDAwCCyAAQRRq +IAYgCRCqJSAAKAIUIgYEQCAAKAIcIQggACgCGCEJDAELCyAEQQA2AgALIABBIGokACACKAIIRQRA +Qdzt0gAQo0sACyAFIAIpAgg3AgAgCyACKQIUNwIAIAVBCGogAkEQaigCADYCACALQQhqIAJBHGoo +AgA2AgAgAkEgaiQADAELQeT40gAQo0sACyAHQRBqJAAgCigCBA0ACyAKQRBqJAAgA0EwaiQAC9wF +AQt/IwBBMGsiBCQAAn8gACgCACICRQRAQQAhAEEADAELIAQgAjYCJCAEQQA2AiAgBCACNgIUIARB +ADYCECAEIAAoAgQiAjYCKCAEIAI2AhggACgCCCEAQQELIQIgBCAANgIsIAQgAjYCHCAEIAI2Agwg +BEEMaiECIwBBEGsiByQAA0AgB0EEaiELIwBBEGsiCCQAAkAgAigCICIARQRAIAhBBGohASACKAIA +IQAgAkEANgIAAkAgAARAIAIoAgwhACACKAIIIQMgAigCBCIFRQRAA0AgAARAIABBAWshACADKAKQ +ASEDDAELCyABQgA3AgQgASADNgIADAILIAEgADYCCCABIAM2AgQgASAFNgIADAELIAFBADYCAAsg +CCgCBARAIwBBEGsiASQAIAhBBGoiACgCACEDIAAoAgQhAANAIAFBBGogAyAAELElIAEoAgQiAwRA +IAEoAgghAAwBCwsgAUEQaiQACyALQQA2AgAMAQsgAiAAQQFrNgIgIAIQpBoiBQRAIwBBIGsiAyQA +IANBCGohASMAQSBrIgAkACAFKAIIIQkgBSgCACEGIAUoAgQhCgJAA0AgBi8BigEgCUsEQCAAIAk2 +AhwgACAKNgIYIAAgBjYCFCAAQQhqIABBFGoQ6h8gAUEIaiAAQRBqKAIANgIAIAEgACkDCDcCACAB +IAk2AhQgASAKNgIQIAEgBjYCDAwCCyAAQRRqIAYgChCxJSAAKAIUIgYEQCAAKAIcIQkgACgCGCEK +DAELCyABQQA2AgALIABBIGokACADKAIIRQRAQdzt0gAQo0sACyAFIAMpAgg3AgAgCyADKQIUNwIA +IAVBCGogA0EQaigCADYCACALQQhqIANBHGooAgA2AgAgA0EgaiQADAELQeT40gAQo0sACyAIQRBq +JAAgBygCBCIABEAgACAHKAIMQQJ0akHcAGoQ70IMAQsLIAdBEGokACAEQTBqJAALewEBfyMAQTBr +IgIkAAJ/QQEgAUGK7dMAQQ8Qh0ENABpBACAAKAIARQ0AGiACIAA2AgwgAkEcakIBNwIAIAJBATYC +FCACQZzt0wA2AhAgAkHMFzYCLCACIAJBKGo2AhggAiACQQxqNgIoIAEgAkEQahCPRQsgAkEwaiQA +C2YBAn8gAUEDbiEEAn9BACABQf////97Sw0AGiAEQQJ0IQNBASABIARBA2xrIgRFDQAaIAJFBEBB +AkEDIARBAUYbIANyIQNBAQwBCyADIANBBGoiA00LIQEgACADNgIEIAAgATYCAAuCAwEGfyMAQTBr +IgIkAAJ/IAAoAgAiAUUEQEEAIQBBAAwBCyACIAE2AiQgAkEANgIgIAIgATYCFCACQQA2AhAgAiAA +KAIEIgE2AiggAiABNgIYIAAoAgghAEEBCyEBIAIgADYCLCACIAE2AhwgAiABNgIMIAJBDGohACMA +QRBrIgMkAANAIANBBGohBSMAQRBrIgQkAAJAIAAoAiAiAUUEQCAEQQRqIAAQgxsgBCgCBARAIARB +BGoQvykLIAVBADYCAAwBCyAAIAFBAWs2AiAgABCfGiIGBEAjAEEgayIBJAAgAUEIaiAGENwRIAEo +AghFBEBB7PLWABCjSwALIAYgASkCCDcCACAFIAEpAhQ3AgAgBkEIaiABQRBqKAIANgIAIAVBCGog +AUEcaigCADYCACABQSBqJAAMAQtBvPnWABCjSwALIARBEGokACADKAIEIgEEQCABIAMoAgxBDGxq +IgFBBGoQiD8gAUGIAWoQiD8MAQsLIANBEGokACACQTBqJAAL9AIBBn8jAEEwayICJAACfyAAKAIA +IgFFBEBBACEAQQAMAQsgAiABNgIkIAJBADYCICACIAE2AhQgAkEANgIQIAIgACgCBCIBNgIoIAIg +ATYCGCAAKAIIIQBBAQshASACIAA2AiwgAiABNgIcIAIgATYCDCACQQxqIQAjAEEQayIDJAADQCAD +QQRqIQUjAEEQayIEJAACQCAAKAIgIgFFBEAgBEEEaiAAEIIbIAQoAgQEQCAEQQRqELkpCyAFQQA2 +AgAMAQsgACABQQFrNgIgIAAQmBoiBgRAIwBBIGsiASQAIAFBCGogBhDXESABKAIIRQRAQezy1gAQ +o0sACyAGIAEpAgg3AgAgBSABKQIUNwIAIAZBCGogAUEQaigCADYCACAFQQhqIAFBHGooAgA2AgAg +AUEgaiQADAELQbz51gAQo0sACyAEQRBqJAAgAygCBCIBBEAgASADKAIMQQN0ahD6PgwBCwsgA0EQ +aiQAIAJBMGokAAuIAwEGfyMAQTBrIgIkAAJ/IAAoAgAiAUUEQEEAIQBBAAwBCyACIAE2AiQgAkEA +NgIgIAIgATYCFCACQQA2AhAgAiAAKAIEIgE2AiggAiABNgIYIAAoAgghAEEBCyEBIAIgADYCLCAC +IAE2AhwgAiABNgIMIAJBDGohACMAQRBrIgQkAANAIARBBGohBSMAQRBrIgMkAAJAIAAoAiAiAUUE +QCADQQRqIAAQjRsgAygCBARAIANBBGoQySoLIAVBADYCAAwBCyAAIAFBAWs2AiAgABCgGiIGBEAj +AEEgayIBJAAgAUEIaiAGEN4RIAEoAghFBEBB7PLWABCjSwALIAYgASkCCDcCACAFIAEpAhQ3AgAg +BkEIaiABQRBqKAIANgIAIAVBCGogAUEcaigCADYCACABQSBqJAAMAQtBvPnWABCjSwALIANBEGok +ACAEKAIEIgEEQCABIAQoAgwiA0EMbGpBjAJqEIg/IAEgA0EYbGpBCGoQiD8MAQsLIARBEGokACAC +QTBqJAAL6gYCCn8BfiMAQRBrIgYkAAJAIAEtAABBBEYEQCAGQQhqIgUgAUEMaigCADYCACAGIAEp +AgQ3AwAjAEEwayIBJAAgBSgCACEKIAFBKGoiCyAFKAIANgIAIAEgBikCADcDICABIAFBIGoiBRCT +NiMAQTBrIgIkACACQRBqIAEQ8z4gAkEIakHVqgUgAigCFCIDIANB1aoFTxtBACACKAIQGxC1FiAC +QQA2AiAgAiACKQMINwIYAkACQANAIAJBJGohByMAQTBrIgMkAAJAAkAgASgCBCIEIAEoAgxHBEAg +ASAEQRhqNgIEIAQtAAAiCEEGRw0BCyAHQQU2AgAMAQsgA0ERaiAEQQlqKQAANwAAIANBGGogBEEQ +aikAADcAACADIAg6AAggAyAEKQABNwAJIANBJGohCCMAQSBrIgQkACAEQQhqIANBCGoQ0xoCQCAE +KAIIIglBgYCAgHhHBEAgBCAEKQIMNwIYIAQgCTYCFCAIIARBFGoQxBIMAQsgBCgCDCEJIAhBBTYC +ACAIIAk2AgQLIARBIGokACADKAIkQQVHBEAgByADKQIkNwIAIAdBCGogA0EsaigCADYCAAwBCyAH +IAMoAig2AgQgB0EGNgIACyADQTBqJAAgAigCJCIEQQZGDQEgBEEFRwRAIAIpAighDCACKAIgIgMg +AigCGEYEQCACQRhqIAMQiDUgAigCICEDCyACKAIcIANBDGxqIgMgDDcCBCADIAQ2AgAgAiACKAIg +QQFqNgIgDAELCyAFIAIpAhg3AgAgBUEIaiACQSBqKAIANgIADAELIAUgAigCKDYCBCAFQYCAgIB4 +NgIAIAJBGGoQqksLIAJBMGokAAJAAkAgASgCIEGAgICAeEcEQCABQRhqIAsoAgA2AgAgASABKQIg +NwMQIAEoAgwgASgCBEcNASAAIAEpAxA3AgAgAEEIaiABQRhqKAIANgIADAILIAAgASgCJDYCBCAA +QYCAgIB4NgIADAELIApBlPPWAEGc89YAEN4XIQUgAEGAgICAeDYCACAAIAU2AgQgAUEQahCqSwsg +ARDiLyABQTBqJAAMAQsgASAGQQ9qQZSa1wAQgTghBSAAQYCAgIB4NgIAIAAgBTYCBCABLQAAQQRH +BEAgARDnNAwBCyABQQRqEOhLCyAGQRBqJAALogYBC38jAEEwayIDJAACfyAAKAIAIgFFBEBBACEA +QQAMAQsgAyABNgIkIANBADYCICADIAE2AhQgA0EANgIQIAMgACgCBCIBNgIoIAMgATYCGCAAKAII +IQBBAQshASADIAA2AiwgAyABNgIcIAMgATYCDCADQQxqIQUjAEEQayIJJAADQAJAIAlBBGohCyMA +QRBrIgokAAJAIAUoAiAiAEUEQCAKQQRqIQEgBSgCACEAIAVBADYCAAJAIAAEQCAFKAIMIQIgBSgC +CCEAIAUoAgQiBEUEQANAIAIEQCACQQFrIQIgACgCwAIhAAwBCwsgAUIANwIEIAEgADYCAAwCCyAB +IAI2AgggASAANgIEIAEgBDYCAAwBCyABQQA2AgALIAooAgQEQCMAQRBrIgEkACAKQQRqIgIoAgAh +ACACKAIEIQIDQCABQQRqIAAgAhCvJSABKAIEIgAEQCABKAIIIQIMAQsLIAFBEGokAAsgC0EANgIA +DAELIAUgAEEBazYCICAFEKkaIgcEQCMAQSBrIgQkACAEQQhqIQYjAEEgayIBJAAgBygCCCECIAco +AgAhCCAHKAIEIQACQANAIAgvAboCIAJLBEAgASACNgIcIAEgADYCGCABIAg2AhQgAUEIaiABQRRq +EPMfIAZBCGogAUEQaigCADYCACAGIAEpAwg3AgAgBiACNgIUIAYgADYCECAGIAg2AgwMAgsgAUEU +aiAIIAAQryUgASgCFCIIBEAgASgCHCECIAEoAhghAAwBCwsgBkEANgIACyABQSBqJAAgBCgCCEUE +QEGMxNcAEKNLAAsgByAEKQIINwIAIAsgBCkCFDcCACAHQQhqIARBEGooAgA2AgAgC0EIaiAEQRxq +KAIANgIAIARBIGokAAwBC0H8xNcAEKNLAAsgCkEQaiQAIAkoAgQiAEUNACAAIAkoAgwiAUEMbGpB +tAFqEIg/AkACQAJAIAAgAUEEdGoiAC0AAA4FBAQEAQIACyAAQQRqEMsZDAMLIABBBGoQiD8MAgsg +AEEEaiIAELg0IAAQ7T0MAQsLIAlBEGokACADQTBqJAALgQEBAn8jAEEwayIBJAACfyAAKAIAIgJF +BEBBACECQQAMAQsgASACNgIkIAFBADYCICABIAI2AhQgAUEANgIQIAEgACgCBCICNgIoIAEgAjYC +GCAAKAIIIQJBAQshACABIAI2AiwgASAANgIcIAEgADYCDCABQQxqEOskIAFBMGokAAuOAQEDfyMA +QSBrIgAkAAJAAkBBxJrbACgCACIBRQRAEMYSIQFBxJrbACgCAA0BQcSa2wAgATYCAAsgASABKAIA +IgJBAWo2AgAgAkEASA0BIABBIGokACABDwsgAEEUakIANwIAIABBATYCDCAAQeDq2QA2AgggAEHQ +6tkANgIQIABBCGpBuOvZABDLMAALAAvxLAIefwV+IwBBwDtrIhEkACARQdgdaiETIAEoAhQhFCMA +QYA8ayIMJAAgASIZQRBqIRogDEGEHmohGyABKAIEIQIgASgCDCEcAkADQAJAIAIgHEYEQCAMQYCA +gIB4NgIADAELIBkgAkEkaiIdNgIEIAwgAkEkEM1PIhAoAgBBgICAgHhGDQAgEEHYO2oiDSACQSQQ +zU8aIBBB+B1qIQ4gGigCACICKAIEIQEgAigCCCECIwBBgNkAayIFJAAgBUHIHWohCCANKAIEIQQg +DSgCCCEDIwBB8ANrIgYkACAGQdABaiAEIAMQ7koCQAJAAkACQAJAAkAgBigC0AEiBEGAgICAeEcE +QCAGIAYpAtQBIiA3AhAgBiAENgIMIAZBGGoiBCABIAIQgEcgBkHQAWogBCAgpyAgQiCIpxDOEyAG +KALQASICQYCAgIB4Rg0DIAZBLGoiASAGQdgBaigAADYAACAGIAYoANUBNgApIAYgBi0A1AE6ACgg +BiACNgIkIAEoAgBBBEkEf0EABSAGKAIoKAAAIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEY +dnJyIQFBAQshAiAGQQQ2AtABIAZBQGsgAiABIAZB0AFqENkSIAYoAkAiAUEMRw0BIAYoAkQiAUEB +RwRAIAhBBTYCCCAIQgM3AwAgCEEQaiABNgIAIAhBDGpBATYCAAwGCyAGQgA3AzAgBiAGQSRqNgI4 +IAZB0AFqIQQjAEHQAmsiAiQAIAJBkAFqIAZBMGoiCRDAFQJAAkACQAJAAkACQCACLQCQASIBQQRG +BEAgAigClAEhFSACQZABaiAJEKcfIAItAJABIgFBBEcNASACLQCRASEWIAJBkAFqIQMjAEHwAWsi +ASQAIAFByAFqIAkQ6Q4CQAJAIAEtAMgBRQRAIAFBgAFqIAFB4QFqIgcpAAA3AwAgAUH4AGogAUHZ +AWoiCikAADcDACABQfAAaiABQdEBaiILKQAANwMAIAEgASkAyQE3A2ggAUHIAWogCRDpDiABLQDI +AQ0BIAFBoAFqIAcpAAA3AwAgAUGYAWogCikAADcDACABQZABaiALKQAANwMAIAEgASkAyQE3A4gB +IAFByAFqIAkQ6Q4gAS0AyAFFBEAgAUHAAWogAUHhAWopAAAiIDcDACABQbgBaiABQdkBaikAACIh +NwMAIAFBsAFqIAFB0QFqKQAAIiI3AwAgAUHQAGogIjcDACABQdgAaiAhNwMAIAFB4ABqICA3AwAg +AUEQaiABQfAAaikDADcDACABQRhqIAFB+ABqKQMANwMAIAFBIGogAUGAAWopAwA3AwAgASABKQDJ +ASIgNwOoASABICA3A0ggASABKQNoNwMIIAFBQGsgAUGgAWopAwA3AwAgAUE4aiABQZgBaikDADcD +ACABQTBqIAFBkAFqKQMANwMAIAEgASkDiAE3AyggA0EBaiABQQhqQeAAEM1PGiADQQA6AAAMAwsg +AUG3AWogAUHYAWopAwAiIDcAACABIAEpA9ABIiE3AK8BIANBEGogIDcAACADICE3AAggA0EBOgAA +DAILIAFB9wBqIAFB2AFqKQMAIiA3AAAgASABKQPQASIhNwBvIANBEGogIDcAACADICE3AAggA0EB +OgAADAELIAFBlwFqIAFB2AFqKQMAIiA3AAAgASABKQPQASIhNwCPASADQRBqICA3AAAgAyAhNwAI +IANBAToAAAsgAUHwAWokACACLQCQAQ0CIAJBMGogAkGQAWoiAUEBckHgABDNTxogASAJEMoUIAIt +AJABIgFBBEcNAyACIAIoApQBIh42AvwBIAJBkAFqIQojAEGgAWsiAyQAIANBQGsgCRC9HgJAAkAg +Ay0AQCIBQQRGBEAgAygCRCILQf//A0sNAUEAIQEgAyALELQWIAMgAykDADcCCCADQUBrQQRyIR8D +QCADIAE2AhAgC0UEQCAKIAMpAgg3AgQgCkEEOgAAIApBDGogA0EQaigCADYCAAwECyADQUBrIQcj +AEHQAGsiASQAIAFBIGogCRDLEAJAAkACQCABLQAgRQRAIAFBGGogAUE5aikAADcDACABQRBqIAFB +MWopAAA3AwAgAUEIaiABQSlqKQAANwMAIAEgASkAITcDACABQSBqIAkQyhQgAS0AICIPQQRHDQEg +ASABKAIkIg82AkggAUEgaiAJEMoUIAEtACAiEkEERw0CIAEgASgCJCISNgJMIAFBIGogCRDAFSAB +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 +aiIAIAEQzTIgAyACKAIMNgIoIAMgAigCACIBNgIgIAMgAUEIajYCGCADIAEgAigCBGpBAWo2Ahwg +AyABKQMAQn+FQoCBgoSIkKDAgH+DNwMQIwBBMGsiASQAIAFBIGogA0EQaiICQRhqKQMANwMAIAFB +GGogAkEQaikDADcDACABQRBqIAJBCGopAwA3AwAgASACKQMANwMIA38gASABQQhqEIU6IAEoAgAi +AgR/IAEoAgQhBCABIAI2AiggASAENgIsIAAgAUEoakG018YAIAFBLGpBhNnGABCkRwwBBSABQTBq +JAAgAAsLEKwaIANBMGokAAsOACAAIAFBtNnGABCUUwuMAgEDfyMAQTBrIgMkACAAKAIAIQIgA0EI +aiIAIAEQzTIgAyACKAIMNgIoIAMgAigCACIBNgIgIAMgAUEIajYCGCADIAEgAigCBGpBAWo2Ahwg +AyABKQMAQn+FQoCBgoSIkKDAgH+DNwMQIwBBMGsiASQAIAFBIGogA0EQaiICQRhqKQMANwMAIAFB +GGogAkEQaikDADcDACABQRBqIAJBCGopAwA3AwAgASACKQMANwMIA38gASABQQhqEPE5IAEoAgAi +AgR/IAEoAgQhBCABIAI2AiggASAENgIsIAAgAUEoakGE2MYAIAFBLGpB9NnGABCkRwwBBSABQTBq +JAAgAAsLEKwaIANBMGokAAsOACAAIAFBtNrGABCOUwulAgEDfyMAQTBrIgMkACAAKAIAIQIgA0EI +aiIAIAEQzTIgAyACKAIMNgIoIAMgAigCACIBNgIgIAMgAUEIajYCGCADIAEgAigCBGpBAWo2Ahwg +AyABKQMAQn+FQoCBgoSIkKDAgH+DNwMQIwBBMGsiASQAIAFBIGogA0EQaiICQRhqKQMANwMAIAFB +GGogAkEQaikDADcDACABQRBqIAJBCGopAwA3AwAgASACKQMANwMIA38gASABQQhqEKcVIgJBKGsi +BEEIajYCBCABIARBACACGzYCACABKAIAIgIEfyABKAIEIQQgASACNgIoIAEgBDYCLCAAIAFBKGpB +hNjGACABQSxqQcTZxgAQpEcMAQUgAUEwaiQAIAALCxCsGiADQTBqJAALnwECAX8CfiMAQUBqIgIk +ACACQThqQgA3AwAgAkIANwMwIAIgACkDCCIDNwMoIAIgACkDACIENwMgIAIgA0LzytHLp4zZsvQA +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 +ASADIAg2AtABIAMgCTYCzAFBASEGIAcFQQALNgLIASADQewBaiADQcgBakHQvcoAEKwtIANBjAJq +QgA3AgAgA0EBNgKEAiADQYS+ygA2AoACIANBvKHKADYCiAIgAyAGIAlPBH9BAAUgAyALNgLUASAD +IAg2AtABIAMgCTYCzAEgAyAGNgLYASAGQQFqIQYgBws2AsgBIANBmAJqIANByAFqQdC9ygAQrC0g +AyABKQMANwKsAiADIAYgCUkEfyADIAY2AtgBIAMgCzYC1AEgAyAINgLQASADIAk2AswBIAcFQQAL +NgLIASADQbQCaiIIIANByAFqIgdB0L3KABCsLSADIAEoAjRBCGoQ9DUgA0HoAWpB3LrKADYCACAD +QdwBakHcusoANgIAIANB5AFqIANByAJqNgIAIANB2AFqIANBrAJqNgIAIANBzKrKADYC0AEgAyAD +KQMANwLIAiADIAg2AuABIAMgA0GYAmo2AtQBIAMgA0GAAmo2AswBIAMgA0HsAWo2AsgBIANBvAFq +IgEgCkEcaiAHEOFBQbD72gAoAgAgARDENAsgBSADQQhqQbABEM1PGgwBCyAFQaCAgIB4NgIAIANB +CGoQvkQLIANB0AJqJAACQCAFKAIAQaCAgIB4RgRAIAxBoICAgHg2AgAMAQsgDCAFQbABEM1PGgsg +BUGwAWokACAEKAIQIgFBoICAgHhGDQALIABBBGogBEEQakEEckGsARDNTxoLIAAgATYCACAEQcAB +aiQAC9oCAgV/AX4jAEEgayIBJAACfyAAKAIARQRAIAFBGGogAEEUaigCADYCACABQRBqIABBDGop +AgA3AwAgASAAKQIENwMIIAFBCGoiACgCDCAAEPtAQQxrDAELIAFBADYCECABQoCAgIDAADcCCCMA +QSBrIgIkACAAQQhqIgMpAwAhBiADKAIUIQAgAkEQaiADQRBqKAIANgIAIAJBHGogAUEIaiIEQQhq +KAIANgIAIAIgAykDCDcDCCACIAQpAgA3AhQjAEEQayIDJAAgA0EIaiAAIAYQxyYgAygCCCEEIAMt +AAwhBSAAIAAoAgxBAWo2AgwgACAAKAIIIAVBAXFrNgIIIAAoAgAgBEFobGoiBUEYayIAIAJBCGoi +BCkCADcCACAAQQhqIARBCGopAgA3AgAgAEEQaiAEQRBqKQIANwIAIANBEGokACACQSBqJAAgBUEM +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 +KAIEIAIoAgAiAEHIAGoQp0UgAEHMAGogATYCACAAIAM2AkhBADYCACACQRBqJAALagEDfyMAQRBr +IgIkACAAEKlFIAEEfyACQQhqIAEQiywgAigCDCEBIAIoAggFQQALIQMgAiAAELw3IAIoAgQgAigC +ACIAQdAAahCnRSAAQdQAaiABNgIAIAAgAzYCUEEANgIAIAJBEGokAAthAQN/IwBBEGsiASQAIAAQ +qUUgAUEIaiAAEOExIAEoAgwhACABIAEoAghBJGoQhyggASgCBCEDIAEoAgAhAiAAIAAoAgBBAWs2 +AgAgAgR/IAIgAxCbPQVBAAsgAUEQaiQAC2gBA38jAEEQayICJAAgABCpRSABBH8gAkEIaiABEIss +IAIoAgwhASACKAIIBUEACyEDIAIgABC8NyACKAIEIAIoAgAiAEEkahCnRSAAQShqIAE2AgAgACAD +NgIkQQA2AgAgAkEQaiQAC3ABAn8jAEEQayICJAACQAJAIAEoAghFBEAgAkEANgIMIAJBADYCBAwB +CyABKAIAIgNFDQEgAkEEaiADIAEoAgQQhQYLIAAgAikCBDcCACAAQQhqIAJBDGooAgA2AgAgAkEQ +aiQADwtBrPnDABCjSwALcwECfyMAQSBrIgIkACACQQA2AgAgAkEIaiABEIwGAkAgAigCCCIBQYCA +gIB4RwRAIAIgAikCDDcCGCACIAE2AhQgACACQRRqEK9BNgIIDAELIAAgAigCDDYCBCACEJtBQQIh +AwsgACADNgIAIAJBIGokAAunAQEDfyMAQYACayIBJAAgASAAEI4vIAEoAgQhAyABKAIAKAIAIgAg +ACgCACICQQFqNgIAIAJBAEgEQAALIAFBADoA/AEgASAANgL4ASMAQYACayIAJAAgACABQQhqQfgB +EM1PIgAgADYC/AEgAEH8AWpBmLvGABDDUiAALQD0AUEFRwRAIAAQhAoLIABBgAJqJAAgAyADKAIA +QQFrNgIAIAFBgAJqJAALrAEBA38jAEHwAGsiASQAIAEgABCOLyABKAIEIQMgASgCACgCACIAIAAo +AgAiAkEBajYCACACQQBIBEAACyABQQA6AGwgASAANgIMIwBB8ABrIgAkACAAQQhqIgIgAUEMakHk +ABDNTxogACACNgJsIABB7ABqQfC6xgAQw1IgAC0AaEEFRwRAIABBCGoQnScLIABB8ABqJAAgAyAD +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 +CQRAIAJBiA1qQeySzABBChCPTSACKAKIDSIEQYCAgIB4Rg0CIAIgAikCjA03ArQLIAIgBDYCsAsM +AQsgAkG4C2ogAkHcB2ooAgA2AgAgAiACKQLUBzcDsAsLIAIoAuAHIgsNASACQYgNakHSlswAEO0W +IAIoAogNIgRFDQMgAigCjA0hBiACQdAOaiINIAJBkA1qQcABEM1PGiACIAY2AsQLIAIgBDYCwAsg +AkHIC2ogDUHAARDNTxoMAgsgAigCjA0hBEEBIQZBAQwGCyACQcALaiACQeAHakHIARDNTxoLIAIo +AqgJQYCAgIB4RiIGRQ0BQd2WzABBHxDwHyEEDAILIAIoAowNIQRBASEGDAILAkACQCAZBEAgGg0B +QfyWzABBGhDwHyEEDAILQfaSzABBChDwHyEEDAELIAJBiA1qIAJBnAtqEJsGIAIoAogNBEAgAigC +jA0hBAwBCyACQcgHaiIFIAJBsAlqKAIANgIAIAJB4AVqIgYgAkHACWopAwA3AwAgAkHoBWoiCSAC +QcgJaikDADcDACACQfAFaiILIAJB0AlqKQMANwMAIAIgAikDqAk3A8AHIAIgAikDuAk3A9gFIAJB +kA1qKQIAISQgAigCjA0hDSACKAK0CyEEIAIoArgLIQ8gAigCsAshASACQfgFaiACQcALakHIARDN +TxogAkGYBGogAkHYCWpBwAEQzU8aIAJBnAtqEKxLIAFBgICAgHhGDQsgAkHUAGogBSgCADYCACAC +QbACaiAGKQMANwIAIAJBuAJqIAkpAwA3AgAgAkHAAmogCykDADcCACACIAIpA8AHNwJMIAIgAikD +2AU3AqgCIAIgFzYCXCACIAM2AlggAiAPNgJIIAIgBDYCRCACIAE2AkAgAkHgAGogAkH4BWpByAEQ +zU8aIAJByAJqIAJBmARqQcABEM1PGiACICQ3AowEIAIgDTYCiAQgAkE4aigCAEUEQCAHIAJBQGtB +1AMQzU8aDA0LIB5BlPvLAEHs+ssAEN4XIQEgB0GAgICAeDYCACAHIAE2AgQgAkFAaxDrNwwMCyAC +QagJahDePQsgAkHAC2oQmUULIAJBsAtqEIg/IAtFCyEDIAJBqAtqEPo+DAYLIAJB2AlqICBBwAEQ +zU8aQQEhGgwBCwsgAkHQDmoQvB0LQQAhBQtBAQshBkEBIQNBASEJCyACQZwLahCsSwJAIAZFDQAg +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 +ADYCGCADQoKAgICABDcCECADQQhqIANBEGoQ2CsgBSADKQMINwIEQQELNgIAIANB0AJqJAAgAAJ/ +IAQoAgxFBEAgAEEEaiAEQRBqQeABEM1PGkEADAELIAAgBCgCECAEQRRqKAIAEJwRNgIEQQELNgIA +IARB8AFqJAALaQEEfyAAIAFBxABqIgIoAgAgASgCQGsQ9TsgAigCACEEIAEoAkAhAiAAKAIIIQMg +ACgCBCEFA0AgAiAERkUEQCADIAVqIAEgAmotAAA6AAAgA0EBaiEDIAJBAWohAgwBCwsgACADNgII +C20BAn8jAEEQayICJAAgAiABEMAVAkAgAi0AACIBQQRGBEAgACACKAIENgIEDAELIAAgAi8AATsA +ASAAQQNqIAItAAM6AAAgAigCBCEDIAAgAikDCDcDCCAAIAM2AgQLIAAgAToAACACQRBqJAALcQED +fyMAQRBrIgMkACADIAEQgksiBDYCCCADIAEoAgQiBTYCDCADIANBCGoQgUEgACADKQMANwLIASAA +QcQBaiAFNgIAIAAgBDYCwAEgACABQQhqQcABEM1PIgAgAjoA0QEgAEEAOgDQASADQRBqJAALeAAC +QAJAIAEgAkGr1NMAQQYQgDxFBEAgASACQdTV0wBBCxCAPEUNAQsgAEEAOgABDAELIAEgAkHf1dMA +QQsQgDxFBEAgASACQerV0wBBDBCAPEUEQCAAQQM6AAEMAgsgAEECOgABDAELIABBAToAAQsgAEEA +OgAAC14BAX8jAEHQAGsiAyQAIAMgARCSO0EBIAIgAkEBTRtBAWshAgNAIAIEQCADQShqIgEgAxCS +OyADIAFBKBDNTxogAkEBayECDAEFIAAgA0EoEM1PGiADQdAAaiQACwsLcgEBfyMAQSBrIgIkACAB +Qf8BcUEBRgRAIAJBFGpCADcCACACQQE2AgwgAkGcz9YANgIIIAJB9M7WADYCECACQQhqQfTP1gAQ +yzAACyAAKAIAIgBBA08EQEGE0NYAQShBkNHWABDmKwALIAJBIGokACAAC2wBAn8jAEEQayICJAAC +fyABKAIAQYCAgIB4RgRAIAIgASgCBCABQQhqKAIAEO8uIAIoAgAhAyACKAIEDAELIAJBCGogARCf +ISACKAIIIQMgAigCDAshASAAIAM2AgAgACABNgIEIAJBEGokAAthAQF/IAEoAgghBCABKAIEIQEg +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 +NgLMBCACIAc2AsgEIAIgAzYCxAQgAiAANgLQBCAAQQFqIQAgCAVBAAs2AsAEIAJBrAVqIAJBwARq +QeylxQAQ7SwgAiACQaACajYCwAUgAiAAIANPBH9BAAUgAiAFNgLMBCACIAc2AsgEIAIgAzYCxAQg +AiAANgLQBCAAQQFqIQAgCAs2AsAEIAJBxAVqIAJBwARqQeylxQAQ7SwgAiAKNgLYBSACIAAgA0kE +fyACIAU2AswEIAIgBzYCyAQgAiADNgLEBCACIAA2AtAEIABBAWohACAIBUEACzYCwAQgAkHcBWog +AkHABGpB7KXFABDtLCACIBE2AvAFIAIgACADSQR/IAIgADYCmAYgAiAFNgKUBiACIAc2ApAGIAIg +AzYCjAYgCAVBAAs2AogGIAJB9AVqIgAgAkGIBmoiA0HspcUAEO0sIAJBzKbFADYC+AQgAkG8psUA +NgLsBCACQaymxQA2AuAEIAJB+KLFADYC1AQgAkHIosUANgLIBCACIAJBnAZqNgL0BCACIAA2AvAE +IAIgAkHwBWo2AugEIAIgAkHcBWo2AuQEIAIgAkHYBWo2AtwEIAIgAkHEBWo2AtgEIAIgAkHABWo2 +AtAEIAIgAkGsBWo2AswEIAIgAkGUBWo2AsQEIAIgAkGABWo2AsAEIAIgAkHQAmo2ApwGIAMgCUEc +aiACQcAEahDVQSACQbgEaiACQZAGaigCADYCACACIAIpAogGNwOwBEGgg9sAKAIAIAJBsARqEMQ0 +DAELCwALIAJB2AJqIAZB7ABqKQIANwMAIAJB4AJqIAZB9ABqKQIANwMAIAIgBkHkAGopAgA3A9AC +IAZB3ABqKQIAISEgBigCWCEAIAJBgAJqEKpBIAJByAFqEJ0/IA4QqkEgBkEYahDGDSAKEIE/IAsQ +gT9BAAwDCyACQeACaiACQfgBaikDADcDACACQdgCaiACQfABaikDADcDACACIAIpA+gBNwPQAiAG +QZgBahCqQQwBCyAFQQM6AAAgFEECNgIAQQQMAgsgBkEYahDGDSAGQdgAahDWPyAGQRBqEIE/IAZB +CGoQgT8gBkHIAGohBEEBCyEDIAQQrjkgFCAhNwIIIBQgADYCBCAUIAM2AgAgFCACKQPQAjcCECAU +QRhqIAJB2AJqKQMANwIAIBRBIGogAkHgAmopAwA3AgBBAQs6AHwgAkGgBmokAAwBC0GQocUAQSNB +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 +AkHIAWpB7KbFABDtLCACQcgAaiACQbABahCyRiACIAIpA0g3AugCIAIgAkHoAmo2AvACIAIgAyAE +SQR/IAIgAzYC3AMgAiAGNgLYAyACIAg2AtQDIAIgBDYC0AMgBwVBAAs2AswDIAJBuANqIgYgAkHM +A2oiA0HspsUAEO0sIAJB9AFqQaCnxQA2AgAgAkHoAWpBiKPFADYCACACQdwBakH4osUANgIAIAJB +8AFqIAJB9AJqNgIAIAJB5AFqIAJB8AJqNgIAIAJB2AFqIAJB5AJqNgIAIAJByKLFADYC0AEgAiAG +NgLsASACIAJBpANqNgLgASACIAJB+AJqNgLUASACIAJBjANqNgLMASACIAJB9ABqNgLIASACIAJB +qAJqNgL0AiADIAVBHGogAkHIAWoQ1kFB2ILbACgCACADEMQ0CyACQagCahCPHSACQbABahD7HwwB +CyACQYgBaiAAQeQAahDnDSACKAKIAUUNASACQagCaiACQYgBakEEckEkEM1PGgJAQcST2wAoAgBB +A0sNAEH8gtsAEPs+IgRB/wFxRQ0AQQAhA0H8gtsAKAIAIAQQ9S5FDQBB/ILbACgCACIFQShqKAIA +IQYgBUEkaigCACEIIAUoAhwhByACIAVBIGooAgAiBAR/IAJBADYC2AEgAiAGNgLUASACIAg2AtAB +IAIgBDYCzAFBASEDIAcFQQALNgLIASACQfgCaiACQcgBakHkqMUAEO0sIAJBmANqQgA3AgAgAkEB +NgKQAyACQZSpxQA2AowDIAJB9JDFADYClAMgAiADIARPBH9BAAUgAiAGNgLUASACIAg2AtABIAIg +BDYCzAEgAiADNgLYASADQQFqIQMgBws2AsgBIAJBpANqIAJByAFqQeSoxQAQ7SwgAiAAQYgBajYC +3AIgAiADIARJBH8gAiAGNgLUASACIAg2AtABIAIgBDYCzAEgAiADNgLYASADQQFqIQMgBwVBAAs2 +AsgBIAJBuANqIAJByAFqQeSoxQAQ7SwgAiAAQZABajYC6AIgAiADIARJBH8gAiADNgLAASACIAY2 +ArwBIAIgCDYCuAEgAiAENgK0ASAHBUEACzYCsAEgAkHMA2oiBiACQbABaiIDQeSoxQAQ7SwgAkH0 +AWpBoKfFADYCACACQegBakGspsUANgIAIAJB3AFqQZypxQA2AgAgAkHwAWogAkH0AGo2AgAgAkHk +AWogAkHoAmo2AgAgAkHYAWogAkHcAmo2AgAgAkHIosUANgLQASACIAY2AuwBIAIgAkG4A2o2AuAB +IAIgAkGkA2o2AtQBIAIgAkGMA2o2AswBIAIgAkH4Amo2AsgBIAIgAkGoAmo2AnQgAyAFQRxqIAJB +yAFqENZBQfyC2wAoAgAgAxDENAsgAkGoAmoQjx0LQgIhEQwBCyACQcABaiACQaABaikDADcDACAC +QbgBaiACQZgBaikDADcDACACIAIpA5ABNwOwASACQUBrIAJBsAFqELFGIAIoAkQhBCACKAJAIQUg +AkE4aiAAQeAAaiIDENxGAkACQAJAAkAgBSAEIAIoAjggAigCPBCAPEUNACACQTBqIAJBsAFqELJG +IAIoAjQhBSACKAIwIQQgAkEoaiADEOFGIAQgBSACKAIoIAIoAiwQgDxFDQAgAkHIAWogAxCQThCS +ByACQbABahCcTSACQfwBahC8ByIODQFCAiERDAMLQcST2wAoAgANAUHwgtsAEPs+IgRB/wFxRQ0B +QQAhA0HwgtsAKAIAIAQQ9S5FDQFB8ILbACgCACIFQShqKAIAIQYgBUEkaigCACEIIAUoAhwhByAC +IAVBIGooAgAiBAR/IAJBADYC2AEgAiAGNgLUASACIAg2AtABIAIgBDYCzAFBASEDIAcFQQALNgLI +ASACQaQDaiACQcgBakGwp8UAEO0sIAJBtAJqQgA3AgAgAkEBNgKsAiACQeinxQA2AqgCIAJB9JDF +ADYCsAIgAiADIARPBH9BAAUgAiAGNgLUASACIAg2AtABIAIgBDYCzAEgAiADNgLYASADQQFqIQMg +Bws2AsgBIAJBuANqIAJByAFqQbCnxQAQ7SwgAkEgaiACQbABahCxRiACIAIpAyA3AugCIAIgAkHo +Amo2AuQCIAIgAyAESQR/IAIgBjYC1AEgAiAINgLQASACIAQ2AswBIAIgAzYC2AEgA0EBaiEDIAcF +QQALNgLIASACQcwDaiACQcgBakGwp8UAEO0sIAJBGGogAkGwAWoQskYgAiACKQMYNwJ0IAIgAkH0 +AGo2AvACIAIgAyAESQR/IAIgAzYC2AEgAiAGNgLUASACIAg2AtABIAIgBDYCzAEgBwVBAAs2AsgB +IAJBjANqIgQgAkHIAWoiA0Gwp8UAEO0sIAJBsAFqEJxNIQYgAkH0AWpB8KfFADYCACACQegBakGI +o8UANgIAIAJB3AFqQfiixQA2AgAgAiAGNgLcAiACQfABaiACQfQCajYCACACQeQBaiACQfACajYC +ACACQdgBaiACQeQCajYCACACQciixQA2AtABIAIgAkHcAmo2AvQCIAIgBDYC7AEgAiACQcwDajYC +4AEgAiACQbgDajYC1AEgAiACQagCajYCzAEgAiACQaQDajYCyAEgAkH4AmoiBCAFQRxqIAMQ1kFB +8ILbACgCACAEEMQ0DAELIAJBsAFqQQAQvxYCQEHEk9sAKAIADQBB5ILbABD7PiIDQf8BcUUNAEEA +IQRB5ILbACgCACADEPUuRQ0AQeSC2wAoAgAiBUEoaigCACEGIAVBJGooAgAhCCAFKAIcIQcgAiAF +QSBqKAIAIgMEfyACQQA2ArgCIAIgBjYCtAIgAiAINgKwAiACIAM2AqwCQQEhBCAHBUEACzYCqAIg +AkH4AmogAkGoAmpBgKjFABDtLCACQZgDakIANwIAIAJBATYCkAMgAkHcqMUANgKMAyACQfSQxQA2 +ApQDIAIgAyAETQR/QQAFIAIgBjYCtAIgAiAINgKwAiACIAM2AqwCIAIgBDYCuAIgBEEBaiEEIAcL +NgKoAiACQaQDaiACQagCakGAqMUAEO0sIAJBEGogAkGwAWoQsUYgAiACKQMQNwLcAiACIAJB3AJq +NgLYAiACIAMgBEsEfyACIAY2ArQCIAIgCDYCsAIgAiADNgKsAiACIAQ2ArgCIARBAWohBCAHBUEA +CzYCqAIgAkG4A2ogAkGoAmpBgKjFABDtLCACQQhqIAJBsAFqELJGIAIgAikDCDcC6AIgAiACQegC +ajYC5AIgAiADIARLBH8gAiAENgK4AiACIAY2ArQCIAIgCDYCsAIgAiADNgKsAiAHBUEACzYCqAIg +AkHMA2oiBCACQagCaiIDQYCoxQAQ7SwgAkGwAWoQnE0hBiACQdQCakHwp8UANgIAIAJByAJqQYij +xQA2AgAgAkG8AmpB+KLFADYCACACIAY2AvQCIAJB0AJqIAJB8AJqNgIAIAJBxAJqIAJB5AJqNgIA +IAJBuAJqIAJB2AJqNgIAIAJByKLFADYCsAIgAiACQfQCajYC8AIgAiAENgLMAiACIAJBuANqNgLA +AiACIAJBpANqNgK0AiACIAJBjANqNgKsAiACIAJB+AJqNgKoAiACQfQAaiIEIAVBHGogAxDWQUHk +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 +QCAFQbACaiIKEIhLIAVB4AFqIgJB6MLNAEHAABDNTxogBUGoAmpCADcDACAFQgA3A6ACIAUgAjYC +oAEgBSAFQaABajYCkAUgBUGwA2otAAAiDw0BDAILIAVBGGogBUEgakGAASAHQdC8zQAQ+i0gBSgC +GCAFKAIcIAggB0HgvM0AEJI6DAILIAVBuANqIAggB0GAASAPaxC/HSAFQcQDaigCACEHIAUoAsAD +IQggBSgCvAMhESAFKAK4AyECIAVBEGogCkGAASAPQci5zQAQxjUgBSgCECAFKAIUIAIgEUHYuc0A +EJI6IAVBkAVqIApBARCDSQsgB0GAAU8EQCAFQZAFaiAIIAdBB3YQg0kLIAVBCGogCkGAASAHQf8A +cSICQei5zQAQ+i0gBSgCCCAFKAIMIAggB0GAf3FqIAJB+LnNABCSOiAFIAI6ALADIAVBuANqIgIg +BUHgAWpB2AEQzU8aIAVBkAVqIggQhksgAiAFQYgEaiAIEOMDIAVBoAFqIgIgCEHAABDNTxogBSAF +QSBqQYABQcAAQbC8zQAQ+i0gBSgCACAFKAIEIAJBwABBwLzNABCSOgsgBUEgakGAARDNTxogBUHQ +BWokAEEAIQcDQCAHQYABRgRAIAZBgAdqIgJB6MLNAEHAABDNTxogBkHIB2pCADcDACAGQgA3A8AH +IAIgBkEIakEBEK0wQQAhBwNAIAdBgAFHBEAgBkEIaiAHaiICIAItAABB6gBzOgAAIAdBAWohBwwB +CwsgBkHQB2oiAkHows0AQcAAEM1PGiAGQZgIakIANwMAIAZCADcDkAggAiAGQQhqIgdBARCtMCAG +QYADaiACQdAAEM1PGiAGQbACaiIIIAZBgAdqQdAAEM1PGiAGQdgEaiICIAhBoAEQzU8aIAZB+AVq +EIhLIAcgAkGoAhDNTxpBASADIANBAU0bIQ8gBkHAB2ohECAGQZAIaiERA0AgDARAIAFBwAAgDCAM +QcAATxsiCmohAkEAIQcDQCAHIApGBEACQCAGQbACaiIDIAZBCGoQoRogAyAEQRAQkgogBiALQQFq +IgtBGHQgC0GA/gNxQQh0ciALQQh2QYD+A3EgC0EYdnJyNgLYBCADIAZB2ARqIghBBBCSCiAIIANB +qAIQzU8aIAZB0AdqIgMgCBD7FSAIIAEgAiADIBEQ7RwgBigC6AQiAyAGKALYBGohByAGKALgBCAD +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 +BEYNBSAPQQNGDQIgHSACQagFakHQABDNTxogGEEIaiAhKAIANgIAIBggAikDmAY3AgAgGiACKQOI +BjcCACAaQQhqICMoAgA2AgAgFyACKQP4BTcCACAXQQhqICQoAgA2AgAgAiAGNgKMAyACIAU2AogD +IAIgDDYChAMgAiANNgKUAyACIBA2ApADIAIgCTYC9AIgAiARNgLwAiACICY3A+gCIAIgIDYC5AIg +AiAPNgLgAgJAIA9BAkcEQCACQagGaiAcQdgAEM1PGiACQYAHaiACQeACakEoEM1PGiACKALkAyEF +IAIoAuADIQYgACgC3AIiBCAAKALUAkYEQCASIAQQojUgACgC3AIhBAsgACgC2AIgBEHYAGxqIAJB +qAZqQdgAEM1PGiAAIAAoAtwCQQFqNgLcAiACQdAAaiAIELFGIAJByABqIAIoAlAgAigCVBDCMCAC +IAIpA0g3AqgHIAJBQGsgCBCyRiACQThqIAIoAkAgAigCRBDCMCACIAIpAzg3ArAHIAJBMGogAkGo +B2oQnTEgAkG4B2oiCSAOIAIoAjAgAigCNBCOECAJEI4WIQkgAkEoaiACQbAHahCdMSACQSBqIAkg +AigCKCACKAIsIAYgBRDqESACIAIoAiQ2ArwHIAIgAigCICIFNgK4ByAFBEAgAkG4B2oQgT8LIAJB +uAdqIgUgCyACKAKoByACKAKsBxCOECAFIAUQnhggAigCsAcgAigCtAcgAkGAB2oQnBQgAigCuAdB +AkcEQCACQbgHahCpQQsgCBD7HwwBCyAVIBYpAgA3AgAgFUEIaiAWQQhqKAIANgIAIAJBwAdqIAhB +CGopAwA3AwAgAkHIB2ogCEEQaikDADcDACACIAgpAwA3A7gHIAAoAvQCIgQgACgC7AJGBEAgCiAE +EIk1IAAoAvQCIQQLIAAoAvACIARBKGxqIAJBuAdqQSgQzU8aIAAgACgC9AJBAWo2AvQCCyADQaAB +ayEDIAchBAwACwALQZChxQBBI0G4qsUAEOYrAAsgAkGICGogAkGgBmooAgA2AgAgAkH4B2ogAkGQ +BmooAgA2AgAgAkHoB2ogAkGABmooAgA2AgAgAiACKQOYBjcDgAggAiACKQOIBjcD8AcgAiACKQP4 +BTcD4AcgAkGIBWoQgB8gChDCSyALEKQZIBIQuEsgDhCuGUEACyAAQbwCahCwSyAfEIcOIABBuAJq +ENo5IABBAToAiAMgAkGABWoiCiACQYgIaiIDKAIANgIAIAJB8ARqIgsgAkH4B2oiBCgCADYCACAC +QeAEaiIOIAJB6AdqIgcoAgA2AgAgAiACKQOACDcD+AQgAiACKQPwBzcD6AQgAiACKQPgBzcD2AQg +AyAKKAIANgIAIAIgAikD+AQ3A4AIIAQgCygCADYCACACIAIpA+gENwPwByAHIA4oAgA2AgAgAiAC +KQPYBDcD4AcEQCACQZAGaiAEKAIANgIAIAJBoAZqIAcoAgA2AgAgAiACKQPwBzcDiAYgAiACKQPg +BzcDmAYgAiANNgL8BSACIBA2AvgFIAIgCTYCuAYgAiARNgK0BiACICY3AqwGIAJBDDYCqAYgAkHE +BmogAygCACIDNgIAIAIgAikDgAg3ArwGIAMEQAJAQcST2wAoAgANAEGI+toAEPs+IgNB/wFxRQ0A +QQAhBEGI+toAKAIAIAMQ9S5FDQBBiPraACgCACIHQShqKAIAIREgB0EkaigCACEIIAcoAhwhCiAC +IAdBIGooAgAiCQR/IAJBADYC8AIgAiARNgLsAiACIAg2AugCIAIgCTYC5AJBASEEIAoFQQALNgLg +AiACQYgFaiACQeACakHIqsUAEO0sIAJB9ABqQgA3AgAgAkEBNgJsIAJBiKvFADYCaCACQfSQxQA2 +AnAgAiAEIAlPBH9BAAUgAiARNgLsAiACIAg2AugCIAIgCTYC5AIgAiAENgLwAiAEQQFqIQQgCgs2 +AuACIAJBgAdqIAJB4AJqQciqxQAQ7SwjAEEwayIDJAAgA0EANgIgIANBADYCECADIAJBqAZqIg4o +AhQiCzYCJCADIAs2AhQgAyAOQRhqKAIAIg82AiggAyALQQBHIhI2AhwgAyAPNgIYIAMgEjYCDCAD +IA5BHGooAgBBACALGzYCLCADQQxqEJ0qIQsgA0EwaiQAIAIgCzYC+AQgAiAEIAlJBH8gAiAENgK4 +BSACIBE2ArQFIAIgCDYCsAUgAiAJNgKsBSAKBUEACzYCqAUgAkG4B2oiCSACQagFaiIDQciqxQAQ +7SwgAkGAA2pBoKvFADYCACACQfQCakGQq8UANgIAIAJB/AJqIAJBnAVqNgIAIAJB8AJqIAJB+ARq +NgIAIAJByKLFADYC6AIgAiAJNgL4AiACIAJBgAdqNgLsAiACIAJB6ABqNgLkAiACIAJBiAVqNgLg +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 +6KLFABDtLCACQfgAaiABELJGIAIgAikDeDcCmBEgAiACQZgRajYCwBogAiAFIAtLBH8gAiAENgK8 +GCACIAk2ArgYIAIgBTYCtBggAiALNgLAGCALQQFqIQsgCAVBAAs2ArAYIAJBgBRqIAJBsBhqQeii +xQAQ7SwgAkHYEWoiDCABEOpIIAIgDDYCoBsgAiAFIAtNBH9BAAUgAiAENgK8GCACIAk2ArgYIAIg +BTYCtBggAiALNgLAGCALQQFqIQsgCAs2ArAYIAJByBRqIAJBsBhqQeiixQAQ7SwgAiAFIAtLBH8g +AiALNgKgFSACIAQ2ApwVIAIgCTYCmBUgAiAFNgKUFSAIBUEACzYCkBUgAkHQFmoiBSACQZAVaiIE +QeiixQAQ7SwgAkHoGGpBqKPFADYCACACQeQYakH0kMUANgIAIAJB3BhqQaijxQA2AgAgAkHYGGpB +9JDFADYCACACQdAYakGYo8UANgIAIAJBxBhqQYijxQA2AgAgAkHMGGogAkGgG2o2AgAgAkHAGGog +AkHAGmo2AgAgAkH4osUANgK4GCACIAU2AuAYIAIgAkHIFGo2AtQYIAIgAkGAFGo2AsgYIAIgAkHA +E2o2ArwYIAIgAkGIG2o2ArQYIAIgAkGEEGo2ArAYIAQgA0EcaiACQbAYahDVQSAAQagCaiIFIAMg +BBDEMiAAQQE6ANECIAJB6A9qIAJBkAtqIgMpAwA3AwAgAkHwD2ogAkGYC2oiBCkDADcDACACIAIp +A4gLNwPgDyAAQbACaigCAEECRg0CIABBADoA0QIgAkHgEWogBUEIaikDADcDACACQegRaiAFQRBq +KQMANwMAIAJB8BFqIAVBGGopAwA3AwAgAkGAEmogAykDADcDACACQYgSaiAEKQMANwMAIAIgAikD +iAs3A/gRIAIgBSkDADcD2BEgAEHYAmogAkHYEWpBOBDNTxogAEGUA2ogCjYCACAAQZADaiAONgIA +IABBmANqIAJBsA5qQbABEM1PGiAAQdAEakEAOgAAIABBzARqIAY2AgAgAEHIBGogATYCACAAQdEE +aiACQaALakGPAxDNTxoLQQAhAUIAISAjAEGACmsiAyQAIABB2AJqIhQiBCgCCEECRwRAIARBCGog +BBD4JwsgAkGwGGohCSAEQSBqIQ4gAyAENgJcAkACQCAEAn8CQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIARB+AFqLQAAQQFrDgQOAwECAAsgBEH7AWpB +AToAACAEQfkBakEAOwAAIANB0ABqEOkkIAMgAykDUDcCuAcgA0GoAWoiBiADQbgHaiIBEIYVIAEQ ++j4gARDuUiABQYTKwgAgBhDnERDZIiAEQfoBakEBOgAAIARBgAJqIAMpAqgBNwIAIARBiAJqIANB +sAFqKAIANgIAIARBwQJqQQA6AAAgBEG4AmogBEHwAWopAwA3AwALIANBuAdqIARBjAJqIgggBxDl +AiADLQCICCIBQQRGDQsgA0GmAWoiCiADLQC7BzoAACADIAMvALkHOwGkASADLQC4ByELIAMoArwH +IQYgAygCwAchBSADQegAaiADQcQHakE8EM1PGiADIAMoAIkINgJgIAMgA0GMCGooAAA2AGMgAykD +gAghICAIENksIAFBA0YNCCAEIAMvAaQBOwBBIARBQGsiDCALOgAAIARB+QFqQQE6AAAgBEHIAGog +BTYCACAEQcQAaiAGNgIAIARBwwBqIAotAAA6AAAgBEHMAGogA0HoAGpBPBDNTxogBEGQAWogAToA +ACAEQYgBaiAgNwMAIAQgAygCYDYAkQEgBEGUAWogAygAYzYAACABQQJGDQcgBEEAOgD5ASAEQZgB +aiIIIAxB2AAQzU8hDCAEQfoBakEAOwEAIANBmAlqIARBiAJqIgsoAgA2AgAgAyAEQYACaiIGKQMA +NwOQCSAEQfABaigCACEFIARBOGooAgAhASAEQTxqKAIAIQogA0GoAWoiECADQbgHakHkARDNTxog +BEGcAmogCjYCACAEQZgCaiABNgIAIARBkAJqIA5BEGopAwA3AwAgCyAOQQhqKQMANwMAIAYgDikD +ADcDACAEQaACaiAQQeQBEM1PGiAEQagEaiILQQA6AAAgBEGIBGogBTYCACAEQYQEaiAMNgIADAML +IARBgAJqIQYgBEGoBGoiCy0AAEEBaw4EDQADBAELAAsgBEGcAmooAgAhCiAEQZgCaigCACEBIARB +iARqKAIAIQUgBEGEBGooAgAhCAsgBEGkAmogCjYCACAEQaACaiIQIAE2AgAgBEGMBGogCDYCACAE +QagCaiIVIAYpAwA3AwAgBEGwAmogBkEIaikDADcDACAEQbgCaiAGQRBqKQMANwMAIARBkARqIhYg +BEH4A2opAwA3AwAgBEGYBGogBEGABGooAgA2AgAgA0G4B2oiASAFEOlIIANBAzYC2AYgA0GQBWog +ASADQdgGahCBICADKAKQBQ0CIANBsAdqIgogA0GkBWooAgA2AgAgAyADQZwFaikCADcDqAcgA0GY +BWooAgAhASADKAKUBSEIIANB5ANqIANBqAVqQawBEM1PGiADQeADaiAKKAIANgIAIAMgATYC1AMg +AyAINgLQAyADIAMpA6gHNwLYAyADQQA2AvwGIANBADYC9AYgA0HIAGpBBhDuHyADKAJIIQggAygC +TCIKQbDywgAoAAA2AAAgCkEEakG08sIALwAAOwAAIANBBjYCsAcgAyAKNgKsByADIAg2AqgHIANB +uAdqIAQoAowEENlJIAMtALgHQQZGDRUgA0GgBWoiDCADQcgHaiIRKQMANwMAIANBmAVqIhMgA0HA +B2oiFykDADcDACADIAMpA7gHNwOQBSADQbgHaiIKIANB9AZqIANBqAdqIANBkAVqENQMIAoQ40Ig +A0FAa0ENEO4fIAMoAkAhHSADKAJEIghB/P3CACkAADcAACAIQQVqQYH+wgApAAA3AAAgA0ENNgKw +ByADIAg2AqwHIAMgHTYCqAcgCiAEKAKMBEEIahDZSSADLQC4B0EGRg0VIAwgESkDADcDACATIBcp +AwA3AwAgAyADKQO4BzcDkAUgA0G4B2oiCiADQfQGaiADQagHaiIIIANBkAVqENQMIAoQ40IgA0E4 +akEEEO4fIAMoAjghDCADKAI8IhFB68rlmwc2AAAgA0EENgKIByADIBE2AoQHIAMgDDYCgAcgA0EA +NgKUByADQQA2AowHIANBMGpBBxDuHyADKAIwIREgAygCNCIMQYn+wgAoAAA2AAAgDEEDakGM/sIA +KAAANgAAIANBBzYCoAcgAyAMNgKcByADIBE2ApgHIAggBCgCjAQoAkhBCGoQ8VEgCiAIEJdSIAMt +ALgHQQZGDRUgA0GgBWoiDCADQcgHaiIRKQMANwMAIANBmAVqIhMgA0HAB2oiFykDADcDACADIAMp +A7gHNwOQBSADQbgHaiIKIANBjAdqIANBmAdqIh0gA0GQBWoiCBDUDCAKEONCIANBqAdqEIg/IANB +oAdqIANBlAdqKAIAIh42AgAgA0GcBWogHjYCACADQQU6AJAFIAMgAykCjAc3ApQFIAogA0H0Bmog +A0GAB2ogCBDUDCAKEONCIANBKGpBCRDuHyADKAIoIR4gAygCLCIIQZD+wgApAAA3AAAgCEEIakGY +/sIALQAAOgAAIANBCTYCsAcgAyAINgKsByADIB42AqgHIANBIGogBRCxRiADIAMpAyA3ApgHIAog +HRD9RyADLQC4B0EGRg0VIAwgESkDADcDACATIBcpAwA3AwAgAyADKQO4BzcDkAUgA0G4B2oiBSAD +QfQGaiADQagHaiIKIANBkAVqENQMIAUQ40IgA0EYakEOEO4fIAMoAhghDCADKAIcIghBmf7CACkA +ADcAACAIQQZqQZ/+wgApAAA3AAAgA0EONgKIByADIAg2AoQHIAMgDDYCgAcgA0EANgKUByADQQA2 +AowHIANBEGpBBxDuHyADKAIQIQwgAygCFCIIQYn+wgAoAAA2AAAgCEEDakGM/sIAKAAANgAAIANB +BzYCoAcgAyAINgKcByADIAw2ApgHIAogA0HQA2oQ8VEgBSAKEJdSIAMtALgHQQZGDRUgA0GgBWoi +CiADQcgHaiIIKQMANwMAIANBmAVqIgwgA0HAB2oiESkDADcDACADIAMpA7gHNwOQBSADQbgHaiIF +IANBjAdqIANBmAdqIANBkAVqIhMQ1AwgBRDjQiADQagHahCIPyADQaAHaiADQZQHaigCACIXNgIA +IANBnAVqIBc2AgAgA0EFOgCQBSADIAMpAowHNwKUBSAFIANB9AZqIANBgAdqIBMQ1AwgBRDjQiAD +QQhqQQQQ7h8gAygCCCETIAMoAgwiF0H08sGrBjYAACADQQQ2ArAHIAMgFzYCrAcgAyATNgKoByAF +IBAQmFIgAy0AuAdBBkYNFSAKIAgpAwA3AwAgDCARKQMANwMAIAMgAykDuAc3A5AFIANBuAdqIgUg +A0H0BmogA0GoB2ogA0GQBWoQ1AwgBRDjQiADQQcQ7h8gAygCACEIIAMoAgQiCkHV8sIAKAAANgAA +IApBA2pB2PLCACgAADYAACADQQc2ArAHIAMgCjYCrAcgAyAINgKoByAFIBUQlgQgAy0AuAdBBkYN +FSADQaAFaiADQcgHaikDADcDACADQZgFaiIKIANBwAdqKQMANwMAIAMgAykDuAc3A5AFIANBuAdq +IgUgA0H0BmogA0GoB2ogA0GQBWoQ1AwgBRDjQiAKIANB/AZqKAIAIgo2AgAgA0HkBmogCjYCACAD +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 ++BghICACKAKIGSEBIAIoAowZIQUgFBCOTAwwCyAAQQE6ANECIABBwAJqQQA2AgAgAEGwAmpBAjYC +ACACQegPaiADKQMANwMAIAJB8A9qIAUpAwA3AwAgAiACKQOICzcD4A8LIABB2AJqIgsgAikD4A83 +AwAgAEH0AmogCjYCACAAQfACaiAONgIAIABB6AJqIAJB8A9qKQMANwMAIABB4AJqIAJB6A9qKQMA +NwMAIABB+AJqIAJBsA5qQbABEM1PGiAAQbAEaiIKQQA6AAAgAEGsBGogBjYCACAAQagEaiABNgIA +IABBsQRqIAJBoAtqQY8DEM1PGgsgAEGzBGpBAToAACAAQbEEakEAOwAAIAJB8ABqEOkkIAIgAikD +cDcC0BYgAkEANgLgESACQoCAgIAQNwLYESACQcgYakG8s8UANgIAIAJBAzoA0BggAkEgNgLAGCAC +QQA2AswYIAJBADYCuBggAkEANgKwGCACIAJB2BFqNgLEGCACQdAWaiACQbAYahDaIA0MIAJBmBVq +IgEgAkHgEWooAgA2AgAgAiACKQLYETcDkBUgAkHQFmoQgT8gAkGwGGoiBhD4CyAGQbijxQAgAkGQ +FWoQ5xEQ2SIgAEEBOgCyBCAAQbgEaiACKQOQFTcCACAAQcAEaiABKAIANgIAIABB+QRqIglBADoA +ACAAQfQEaiAAQawEaigCACIFNgIAIABB8ARqIABBqARqKAIAIgY2AgAgAEHEBGohAQsgAEH4BGpB +ADoAACACQdAWaiAGEOpIIAItANAWRQ0BIAEgAikA0RY3AAAgAUEYaiACQekWaikAADcAACABQRBq +IAJB4RZqKQAANwAAIAFBCGogAkHZFmopAAA3AAAgAkHoAGogBRDlNSACKAJoIQYgAigCbCEFIABB +5ARqIAEQ8VEgAkHgAGogBiAAQegEaigCACAAQewEaigCACAFKAIoEQUAIAIoAmAhBiAAQYAFaiAC +KAJkIgU2AgAgAEH8BGogBjYCAAsgAkGwGGogBiAHIAUoAgwRAwAgAi0AsBgiBEEMRg0HQQIhBSAC +QY4VaiIIIAItALMYOgAAIAJByBNqIgMgAkHAGGopAgA3AwAgAkHQE2oiDiACQcgYaikCADcDACAC +QdgTaiIMIAJB0BhqKAIANgIAIAIgAi8AsRg7AYwVIAIgAikCuBg3A8ATIAIoArQYIQYgAEH8BGoQ +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 +AgAgAEHQBGogATYCACAAQdgEaiAOQeQBEM1PGiAAQeAGaiIIQQA6AAAgAEHABmogCTYCACAAQbwG +aiADNgIACyAAQdwEaiAFNgIAIABB2ARqIg4gATYCACAAQcQGaiAENgIAIABB4ARqIgwgBikDADcD +ACAAQegEaiAGQQhqKQMANwMAIABB8ARqIAZBEGopAwA3AwAgAEHIBmoiFCAAQbAGaikDADcDACAA +QdAGaiAAQbgGaigCADYCACACQbAYaiAJEOlIQQMhASACQQM2AogYIAIoArAYRQ0HIAJBqBtqIgEg +AkHEGGooAgA2AgAgAiACQbwYaikCADcDoBsgAkG4GGooAgAhBSACKAK0GCEDIAJB0BZqIgQgAkHI +GGpBrAEQzU8aIAJBiBhqEPUkIAJBoBVqIAEoAgA2AgAgAiAFNgKUFSACIAM2ApAVIAIgAikDoBs3 +ApgVIAJBpBVqIARBrAEQzU8aIAJBADYChBggAkEANgL8FyACQdgAakEGEO4fIAIoAlghAyACKAJc +IgFBgK/FACgAADYAACABQQRqQYSvxQAvAAA7AAAgAkEGNgLIGiACIAE2AsQaIAIgAzYCwBogAkGw +GGogACgCxAYQ2UkgAi0AsBhBBkYNHSACQZgYaiIEIAJBwBhqIhApAwA3AwAgAkGQGGoiFSACQbgY +aiIWKQMANwMAIAIgAikDsBg3A4gYIAJBsBhqIgEgAkH8F2ogAkHAGmogAkGIGGoQ1AwgARDjQiAC +QdAAakENEO4fIAIoAlAhESACKAJUIgNBmK/FACkAADcAACADQQVqQZ2vxQApAAA3AAAgAkENNgLI +GiACIAM2AsQaIAIgETYCwBogASAAKALEBkEIahDZSSACLQCwGEEGRg0dIAQgECkDADcDACAVIBYp +AwA3AwAgAiACKQOwGDcDiBggAkGwGGoiASACQfwXaiACQcAaaiIDIAJBiBhqENQMIAEQ40IgAkHI +AGpBBBDuHyACKAJIIQQgAigCTCIQQevK5ZsHNgAAIAJBBDYC5BogAiAQNgLgGiACIAQ2AtwaIAJB +ADYC+BogAkEANgLwGiACQUBrQQcQ7h8gAigCQCEQIAIoAkQiBEGlr8UAKAAANgAAIARBA2pBqK/F +ACgAADYAACACQQc2ApAbIAIgBDYCjBsgAiAQNgKIGyADIAAoAsQGKAJIQQhqEPFRIAEgAxCXUiAC +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 +LwGIFTsBwBAgAkGEEGogAkHIFGpBPBDNTxogAiACKADDFDYA/w8gAiACKALAFDYC/A8gCkEBOgAA +IAlB/wFxQQNGDQIgAkGKEWogBy0AADoAACACIAIvAcAQOwGIESACQcwQaiACQYQQakE8EM1PGiAC +IAIoAP8PNgDHECACIAIoAvwPNgLEECALEKwhDAULQQMLIQEgCiABOgAAC0EECyEBIBsgAToAAEEF +CyEBIBkgAToAACAPQQQ2AgBBAwwBCyAAQdECai0AAARAIABBqAJqENkiCyAAQQA6ANECIAJBlgpq +IgcgAkGKEWotAAA6AAAgAiACLwGIETsBlAogAkHYCWoiCyACQcwQakE8EM1PGiAAQQE6ANACIAIg +AigAxxA2ANMJIAIgAigCxBA2AtAJIAIgAi8BlAo7AMEDIAIgBy0AADoAwwMgAkHMA2ogC0E8EM1P +GiACQZQEaiACKADTCTYAACACIAU2ApwEIAIgATYCmAQgAiAJOgCQBCACICA3A4gEIAIgBjYCyAMg +AiADNgLEAyACIAQ6AMADIAIgAigC0Ak2AJEEAkACQAJAAkACQAJAIA0tAEgOBQMFBQABBQsgDUHQ +AGoQjkwMAQsgDUHQAGoQrCELIA0tAElFDQEgDUEgahDZIgwBCyANEOAlDAELIA1BADoASQsCfyAJ +Qf8BcUECRwRAIAJBoAtqIgYgAkHAA2pB2AAQzU8aIAJByBhqIAJB0AtqKQMANwMAIAJBwBhqIAJB +yAtqKQMANwMAIAJBuBhqIAJBwAtqKQMANwMAIAIgAikDuAs3A7AYIAJB2BFqIAJBsBhqEP4tIAJB ++ApqIAJB7BFqKQIANwMAIAJBgAtqIAJB9BFqKAIANgIAIAIgAikC5BE3A/AKIABBgAJqKAIAIQ0g +AikC3BEhICACKALYESEHIAJBmApqIAZB2AAQzU8aQQAhGUEADAELAkACQEECIARBCmsiBiAGQf8B +cUEITxtB/wFxIg0EQCANQQdHDQEMAgsgA0EERg0BCyACQfgKaiACQcgDaiIGQQhqKQMANwMAIAJB +gAtqIAZBEGooAgA2AgAgAiAGKQMANwPwCiACKQPAAyEgIAIoAtwDIQ0gAkGYCmogAkHgA2pBKBDN +TxpBASEZQQMMAQsgAkHAA2oQxQpBACEZQQQhB0ECCyEEIABBmAFqEIcOIAJBuANqIgsgAkGAC2oo +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 +ATYCAAwBCyAAQQA2AgAgACACNgIECyAGQRBqJAALUwECfyACIAEgASACSRshAyAAKAIAIgAgAUEC +dGpBgBNqIQIDQCABIANHBEAgAigCACIEIAE7AfgSIAQgADYC8BEgAkEEaiECIAFBAWohAQwBCwsL +UwECfyACIAEgASACSRshAyAAKAIAIgAgAUECdGpB2AlqIQIDQCABIANHBEAgAigCACIEIAE7AdQJ +IAQgADYC0AkgAkEEaiECIAFBAWohAQwBCwsLUQECfyACIAEgASACSRshAyAAKAIAIgAgAUECdGpB +4ABqIQIDQCABIANHBEAgAigCACIEIAE7AVwgBCAANgJYIAJBBGohAiABQQFqIQEMAQsLC1MBAn8g +AiABIAEgAkkbIQMgACgCACIAIAFBAnRqQbgBaiECA0AgASADRwRAIAIoAgAiBCABOwG0ASAEIAA2 +ArABIAJBBGohAiABQQFqIQEMAQsLC1IBAn8gAiABIAEgAkkbIQMgACgCACIAIAFBAnRqQcwGaiEC +A0AgASADRwRAIAIoAgAiBCABOwHIBiAEIAA2AlggAkEEaiECIAFBAWohAQwBCwsLUwECfyACIAEg +ASACSRshAyAAKAIAIgAgAUECdGpB+BBqIQIDQCABIANHBEAgAigCACIEIAE7AfAQIAQgADYC6A8g +AkEEaiECIAFBAWohAQwBCwsLUgECfyACIAEgASACSRshAyAAKAIAIgAgAUECdGpBuAFqIQIDQCAB +IANHBEAgAigCACIEIAE7AbQBIAQgADYCACACQQRqIQIgAUEBaiEBDAELCwtTAQJ/IAIgASABIAJJ +GyEDIAAoAgAiACABQQJ0akHoAmohAgNAIAEgA0cEQCACKAIAIgQgATsB5AIgBCAANgLgAiACQQRq +IQIgAUEBaiEBDAELCwtTAQJ/IAIgASABIAJJGyEDIAAoAgAiACABQQJ0akGgBmohAgNAIAEgA0cE +QCACKAIAIgQgATsBnAYgBCAANgKYBiACQQRqIQIgAUEBaiEBDAELCwtTAQJ/IAIgASABIAJJGyED +IAAoAgAiACABQQJ0akGQAmohAgNAIAEgA0cEQCACKAIAIgQgATsBjAIgBCAANgKIAiACQQRqIQIg +AUEBaiEBDAELCwtEAQN/IAEhAyAAKAIAIgBBzBFqIQEDQCACIANHBEAgASgCACIEIAI7AcgRIAQg +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 +EPtAIAIgFTcCtAIgAiAENgKwAgwICyACIBQ3AqgCIAIgAzYCpAIgAiAHNgKgAiACIAg2AtwBIAIg +ATYC2AEgAigCjAMhBAwBCyACQQhqEN0mIgRFDQYgAiAUNwKoAiACIAM2AqQCIAIgBzYCoAIgAiAI +NgLcASACIAE2AtgBC0EAIQUMAQsgAiAUNwKoAiACIAM2AqQCIAIgBzYCoAIgAiAINgLcASACIAE2 +AtgBIAFBAEchBQJAIAEiAw0AIAJBiANqQYy+1wBBAxDwMSACKAKIAyIDBEAgAigCjAMhCAwBCyAC +KAKMAyEEDAELIAIgCDYCwAIgAiADNgK8AgJAIAIoAuABQYCAgIB4RiIJBEBBASENQY++1wBBAxDw +HyEEQQEhBgwBCyACQcQCaiACQeABakE0EM1PGgJAAkACQCACKAKUAkGAgICAeEYiBkUEQCACQYAD +aiACQZwCaigCADYCACACIAIpApQCNwP4AiANRQ0BQZS+1wBBBhDwHyEEDAILQQEhDUGSvtcAQQIQ +8B8hBAwCCyACKAKwAiIKQYCAgIB4RwRAIAIoArgCIQUgAigCtAIhByACKALIAiEEIAIoAsQCIQEg +AkGIA2oiBiACQcwCakEsEM1PGiACQbwDaiACQZwCaigCADYCACACIAIpApQCNwK0AyACQaABaiAG +QTgQzU8aIAJBmAFqIgYgD0EIaigCADYCACACIA8pAgA3A5ABIAFBgICAgHhGDQogAkE4aiACQaAB +akE4EM1PGiACQYwBaiAGKAIANgIAIAIgCDYCgAEgAiADNgJ8IAIgBTYCeCACIAc2AnQgAiAKNgJw +IAIgBDYCNCACIAE2AjAgAiACKQOQATcChAEgAkGIA2oiASACQQhqQSgQzU8aIAEQ3hsiAUUEQCAL +IAJBMGpB4AAQzU8aDAwLIAtBgICAgHg2AgAgCyABNgIEIAJBMGoQ/zcMCwtBmr7XAEEBEPAfIQQg +DxDHGQsgAkH4AmoQiD8LIAJBxAJqEMM7CyACQbwCahD6PgwFC0EBCyENQQEhBkEBIQkMAwsgAikC +kAMhFCACKAKMAyEDQQEhB0EAIQ0MAQsLIAIgATYC2AEgAigCjAMhBEEBIQ1BASEGQQEhCUEAIQUL +IAIoArACQYCAgIB4RwRAIAJBsAJqEIg/CyAHIA1xBEAgDxDHGQsgAigClAJBgICAgHhHIAZxBEAg +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 +QAJAIActAMgBRQRAIActAMkBRQRAIAdBAzYCKCABIAdBKGoQgDEhCQwCCwJAAkAgBy0AygEiCkEs +RwRAQZuAgIB4IQwgCkH9AEYNBSAHLQCUAQ0BIAdBCDYCKCABIAdBKGoQgDEhCQwECyAHLQCUAQ0A +IAEQvkEgB0EoaiABELwWIActACgEQCAHKAIsIQkMBAsgBy0AKQRAIActACohCgwCCyAHQQU2Aigg +ASAHQShqEIAxIQEMBQsgB0EAOgCUAQsCQCAKQf8BcSIGQSJHBEAgBkH9AEYNASAHQRE2AiggASAH +QShqEIAxIQEMBQsgARC+QSABQQA2AgggB0HIAWogAUEMaiABELsIIAcoAswBIQkgBygCyAEiBkEC +Rg0CIAcoAtABIQECQCAGRQRAIAdBKGohBgJAAkACQAJAIAkgAUGIltcAQQgQgDxFBEAgCSABQZCW +1wBBARCAPA0BIAkgAUGRltcAQQEQgDwNAiAJIAFBkpbXAEEIEIA8DQMgCSABQZqW1wBBBBCAPA0E +IAkgAUGeltcAQQ4QgDxFBEAgBiABNgIIIAYgCTYCBCAGQY2AgIB4NgIADAcLIAZBmoCAgHg2AgAM +BgsgBkGVgICAeDYCAAwFCyAGQZaAgIB4NgIADAQLIAZBl4CAgHg2AgAMAwsgBkGYgICAeDYCAAwC +CyAGQZmAgIB4NgIADAELIAdBKGohBiMAQRBrIgokAAJAAkACQAJAAkAgCSABQYiW1wBBCBCAPEUE +QCAJIAFBkJbXAEEBEIA8DQEgCSABQZGW1wBBARCAPA0CIAkgAUGSltcAQQgQgDwNAyAJIAFBmpbX +AEEEEIA8DQQgCSABQZ6W1wBBDhCAPEUEQCAKQQhqIAFBABDdGCAKKAIIIQwgCigCDCAJIAEQzU8h +CSAGIAE2AgwgBiAJNgIIIAYgDDYCBCAGQYyAgIB4NgIADAYLIAZBmoCAgHg2AgAMBQsgBkGVgICA +eDYCAAwECyAGQZaAgIB4NgIADAMLIAZBl4CAgHg2AgAMAgsgBkGYgICAeDYCAAwBCyAGQZmAgIB4 +NgIACyAKQRBqJAALQZyAgIB4IAcoAigiASABQZuAgIB4RiIBGyEMICMgBykDMCABGyEjIAcoAiwh +CQwDCyAHQRU2AiggASAHQShqEIAxIQEMAwtBnICAgHghDCAHKALMASEJDAELQZyAgIB4IQwLAkAC +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 +tAFBACEGIAghAUEBDA8LIAMoAqgBQYCAgIB4RwRAIAMgCjYC1AEgAyANNgLQASADIAc2ArwBIAMg +DzYCuAEgAyALNgLMASADIAQ2ArQBQQAhBkHUisAAQQQQ8R8hAUEBDA8LIANB8ABqIANBoAFqEJ05 +IAMoAnAiCEGAgICAeEYNAiADKQJ0ISEgA0GoAWoQ+0AgAyAhNwKsASADIAg2AqgBDAcLIARFDQUg +AyAKNgLUASADIA02AtABIAMgBzYCvAEgAyAPNgK4ASADIAs2AswBQQEhBCADQQE2ArQBQQAhBkHM +nsAAQRIQ8R8hAQwMCyADKALAAUGBgICAeEcEQCADIAo2AtQBIAMgDTYC0AEgAyAHNgK8ASADIA82 +ArgBIAMgCzYCzAEgAyAENgK0AUEAIQZB3p7AAEENEPEfIQFBAQwNCyADQfAAaiADQaABahCYOSAD +KAJwIghBgYCAgHhGDQAgAykCdCEhIANBwAFqEOZCIAMgITcCxAEgAyAINgLAAQwFCyADIAo2AtQB +IAMgDTYC0AEgAyAHNgK8ASADIA82ArgBIAMgCzYCzAEgAyAENgK0ASADKAJ0IQEMCQsgC0ECRg0B +IAMgCjYC1AEgAyANNgLQASADIAc2ArwBIAMgDzYCuAEgAyALNgLMASADIAQ2ArQBQQEhCEEAIQZB +657AAEEKEPEfIQFBASEMDAwLIAMgCjYC1AEgAyANNgLQASADIAc2ArwBIAMgDzYCuAEgAyALNgLM +ASADIAQ2ArQBAkAgAygCqAFBgICAgHhHIgZFBEAgA0HwAGpB1IrAAEEEEI9NIAMoAnAiAUGAgICA +eEcEQCADIAMpAnQ3AtwBIAMgATYC2AEMAgsgAygCdCEBDAoLIANB4AFqIANBsAFqKAIANgIAIAMg +AykCqAE3A9gBCwJAAkACQAJ/AkACQAJAAkACQCAERQRAIANB8ABqQcyewABBEhDBTCADKAJwDQEg +AygCdCEPIANB+ABqKAIAIQcLIAMgBzYC7AEgAyAPNgLoASADKALAAUGBgICAeEYiDEUNASADQfAA +ahCNUiADKAJwIgFBgYCAgHhGDQMgAyADKQJ0NwL0ASADIAE2AvABDAILIAMoAnQhAUEBIQwMBwsg +A0H4AWogA0HIAWooAgA2AgAgAyADKQLAATcD8AELIAtBAkYNASALIQggDQwCCyADKAJ0IQEMAwsg +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 +CkH/AXEiAUEiRwRAIAFB/QBGDQEgA0ERNgIQIAggA0EQahCAMSEBDAYLIAgQvkEgCEEANgIIIANB +6ABqIAhBDGogCBC7CCADKAJsIQEgAygCaCIIQQJGDQMgAygCcCECAkAgCEUEQCADQRBqIgggASAC +Qfau1wBBBBCAPAR/QZWAgIB4BSAIIAI2AgggCCABNgIEQY2AgIB4CzYCAAwBCyMAQRBrIggkACAD +QRBqIg0gASACQfau1wBBBBCAPAR/QZWAgIB4BSAIQQhqIAJBABDdGCAIKAIIIQwgCCgCDCABIAIQ +zU8hASANIAI2AgwgDSABNgIIIA0gDDYCBEGMgICAeAs2AgAgCEEQaiQAC0GXgICAeCADKAIQIgEg +AUGWgICAeEYiARshAiAhIAMpAxggARshISADKAIUIQEMBAsgA0EVNgIQIAggA0EQahCAMSEBDAQL +IANBBTYCECAIIANBEGoQgDEhAQwDC0GXgICAeCECIAMoAmwhAQwBC0GXgICAeCECCyACQev///8H +ag4DAQMAAgtBACECDAQLIAMoAkBBgICAgHhHBEBBACECQdSKwABBBBDxHyEBDAQLIANBEGogA0E4 +ahCdOSADKAIUIQggAygCECICQYCAgIB4Rg0CIAMoAhghCiADQUBrEPtAIAMgCjYCSCADIAg2AkQg +AyACNgJADAULIAMgITcDYCADIAE2AlwgAyACNgJYIANB6ABqIANBOGoQmTkgAygCbCEIIAMoAmgi +AkGVgICAeEcEQCADQRhqIANB4ABqKQMANwMAIAMgAykDWDcDECADIAMpA3A3AyggAyAINgIkIAMg +AjYCICADQcwAaiADQRBqENcaDAULIANB2ABqEP8cQQAhAiAIIQEMAgsCQCADKAJAQYCAgIB4RyIC +RQRAIANBEGpB1IrAAEEEEI9NIAMoAhAiAUGAgICAeEcEQCADIAMpAhQ3AmwgAyABNgJoDAILIAMo +AhQhAQwDCyADQfAAaiADQcgAaigCADYCACADIAMpAkA3A2gLIANBEGogA0HMAGoQllIgAygCECIK +QYGAgIB4RwRAIANBCGogA0EgaigCADYCACADIAMpAhg3AwAgAygCFCEJIAMoAmghCCADKAJsIQEg +AygCcCELIANBzABqEKxLDAMLIAMoAhQhASADQegAahCIPwwBC0EAIQIgCCEBCyADQcwAahCsSwJA +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 +QcwAaiAKQSBqKAIANgIAIAogCzYCQCAKIBQ2AjwgCiADNgI4IAogDTYCNCAKIAI2AjAgCiAENgJY +IAogATYCUCAKIAopAxg3AkQgCiAhNwMoAkAgIUICUgRAIARFDQEgCkEoahCEPiAEIQIMBAsgBEUN +AyAKQdgAahDfHQwDCyAPQQxqIApBNGpBJBDNTxogDyACNgIIIA8gITcDAAwECyAKKAJgIQIMAAsA +CyAJIAIQvFIhASAPQgI3AwAgDyABNgIIDAELIApBGDYCKCAJIApBKGoQgDEhASAPQgI3AwAgDyAB +NgIICyAKQbABaiQAAn8gDykDAEICUgRAQTBBCBCnLiIBIA9BMBDNTxpBAAwBCyAPKAIIIQFBAQsh +AiAQIAE2AgQgECACNgIAIA9BMGokACAQKAIEIQEgECgCAAwDCyAJEL5BIAlBlPzGAEEDEPUUIgEN +AUEAIQFBAAwCCyAQKAIMIQELQQELIQIgByABNgIEIAcgAjYCACAQQRBqJABBASEDIAcoAgQhASAH +KAIARQ0BCyAHIAg2ApgBQQAhAyAHQQA2ApQBQQEhBkEBIQJBACELDAYLIAcoAnQhAgwBCwsgByAI +NgKYASAHIAM2ApQBIAcoAjwhAQtBACELC0EBCyEGQQEhAgsgB0GcAWoQrEsgBkUgA0VyRQRAIBcQ +gz4LIAcoAogBQYGAgIB4RyACcQRAIAdBiAFqEPtAC0GAgICAeCECIAsgBygCfEGAgICAeEZyRQRA +IAdB/ABqEIg/CwsgBSAFLQAkQQFqOgAkIAUQjRMhCyAHQcwAaiAHQShqKQMANwIAIAdB1ABqIAdB +MGooAgA2AgAgB0HgAGogB0EYaigCADYCACAHIAM2AkAgByABNgI8IAcgCzYCcCAHIAg2AmwgByAi +NwJkIAcgBykDIDcCRCAHIAcpAxA3AlggByACNgI4IAJBgICAgHhHBEAgC0UNAiAHQThqEKs3IAsh +AQwBCyALRQ0AIAdB8ABqEN8dCyAFIAEQvFIhASARQYCAgIB4NgIAIBEgATYCBAwCCyARQQhqIAdB +QGtBMBDNTxogESABNgIEIBEgAjYCAAwBCyAHQRg2AjggBSAHQThqEIAxIQEgEUGAgICAeDYCACAR +IAE2AgQLIAdB4AFqJAACQCAMKAJ4QYCAgIB4RwRAIAxBQGsgDEH4AGpBOBDNTxogDEEYahDVIyIB +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 +AgAgACACNgIECyAEQRBqJAALHgAgACABIAJB4MzHAEEIQdbMxwBBBkHQzMcAEOpTC84BACAAAn8g +ASACQbCbyABBBBCAPEUEQCABIAJBtJvIAEEFEIA8RQRAIAAjAEFAaiIAJAAgACACNgIMIAAgATYC +CCAAQTRqQYkNNgIAIABBHGpCAjcCACAAQQI2AhQgAEG40scANgIQIABBrgU2AiwgAEECNgI8IABB +0J7IADYCOCAAIABBKGo2AhggACAAQThqNgIwIAAgAEEIajYCKCAAQRBqEIcUIABBQGskADYCBEEB +DAILIABBAToAAUEADAELIABBADoAAUEACzoAAAseACAAIAEgAkHEqMgAQQVBv6jIAEEDQbyoyAAQ +6lMLHgAgACABIAJBsLXIAEENQaK1yABBCkGYtcgAEOpTC00BAX8jAEEgayIBJAAgAUEMaiAAELwW +An8gAS0ADEUEQEEAIAEtAA1FDQEaIAFBFjYCFCAAIAFBFGoQgDEMAQsgASgCEAsgAUEgaiQAC1EB +AX8jAEEQayICJAAgAkEIaiABEIklIAACfyACLQAIRQRAIAAgAi0ACkEAIAItAAkbOgABQQAMAQsg +ACACKAIMNgIEQQELOgAAIAJBEGokAAthAQF/IwBBEGsiAiQAAkACQAJAIAFCAVgEQCABp0EBaw0B +DAILIAJBAToAACACIAE3AwggACACQejlyABB8OXIABD5GgwCCyAAQQk7AQAMAQsgAEGJAjsBAAsg +AkEQaiQAC08BAX8jAEEQayICJAACQCAAKAIMBEAgACEBDAELIAJBCGogAEEIaigCADYCACACIAAp +AgA3AwAgASACEIExIQEgABCYBAsgAkEQaiQAIAELSgEBfyMAQRBrIgQkACAEQQRqIAEgAiADELId +IAAgBCgCBCIBQQJGBH9BBQUgACAEKQIINwIIIAAgATYCBEEACzYCACAEQRBqJAALRgEBfyMAQSBr +IgEkACABQRhqIABBEGooAgA2AgAgAUEQaiAAQQhqKQIANwMAIAEgACkCADcDCCABQQhqEKEUIAFB +IGokAAtTAQF/IwBBEGsiAiQAAn8gACgCACIAKQMAUARAIAFB3O7JAEEEEIdBDAELIAIgAEEIajYC +DCABQeDuyQBBBCACQQxqQfTuyQAQpQ8LIAJBEGokAAtVAQJ/IABBKGoiAhC9JiAAKAIoIgEgASgC +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 +aiQACyAEQdABaiQAC00BAX8jAEEQayICJAAgAkEIaiABELwQAkAgAigCCCIBRQRAIABBgICAgHg2 +AgQMAQsgAEEEaiACKAIMEIg7IAAgATYCAAsgAkEQaiQAC0MBAn8jAEEQayICJAAgAkEIaiABEL4Q +IAIoAggiAwR/IAEoAiQoAgAFQQALIQEgACADNgIEIAAgATYCACACQRBqJAALHAAgACABQZyO0ABB +BEGIjtAAQQRBhI7QABDIUwtQAQF/AkACQAJAIAAtAEAOBAECAgACCyAAQSBqEKRAIABBEGohAAsg +ABCVESAAKAIIIgEgASgCACIBQQFrNgIAIAFBAUcNACAAQQhqEI0MCwtQAQF/AkACQAJAIAAtAEAO +BAECAgACCyAAQSBqEKRAIABBEGohAAsgABCWESAAKAIIIgEgASgCACIBQQFrNgIAIAFBAUcNACAA +QQhqENkVCwtQAQF/AkACQAJAIAAtAEAOBAECAgACCyAAQSBqEKRAIABBEGohAAsgABCXESAAKAII +IgEgASgCACIBQQFrNgIAIAFBAUcNACAAQQhqEKoQCwscACAAIAFBmKbQAEEFQZKm0ABBCkGIptAA +EMhTC1EBA38gASgCACIEQeACaiAELwG+A0EBaiIFIAEoAggiBiACEP8nIAQgBSAGIAMQtxggBCAF +OwG+AyAAIAY2AgggACAENgIAIAAgASgCBDYCBAtRAQN/IAEoAgAiBCAELwGKAUEBaiIFIAEoAggi +BiACEP8nIARB3ABqIAUgBiADEJkoIAQgBTsBigEgACAGNgIIIAAgBDYCACAAIAEoAgQ2AgQLNQAg +ASgCCCAAQQN0QQFyZ0Efc0EJbEHJAGpBBnZqIAEoAghBAXJnQR9zQQlsQckAakEGdmoLPgECfyMA +QSBrIgIkACACQRRqIgMgABCQDiACQQhqIAMQiUwgAigCCCACKAIMIAEQugMgAxD7QCACQSBqJAAL +SgECfyMAQRBrIgMkACADQQhqIAJBABDdGCADKAIIIQQgAygCDCABIAIQzU8hASAAIAI2AgggACAB +NgIEIAAgBDYCACADQRBqJAALPwEBfyMAQSBrIgIkACACQQhqIAEQgE8CfyACLQAIQQZHBEAgACAC +QQhqEPMeQQAMAQsgAigCDAsgAkEgaiQAC0kBAX8gACgCBCEDAn8gACgCACIALQAABEBBASADKAIA +QZOz2ABBAxCHQQ0BGgtBASADKAIAIAEgAhCHQQ0AGiAAQQE6AABBAAsLSgECfyMAQRBrIgMkACAD +QQhqIAJBABCqGCADKAIIIQQgAygCDCABIAIQzU8hASAAIAI2AgggACABNgIEIAAgBDYCACADQRBq +JAALSgEBfyMAQRBrIgEkACABQQhqIANBABCqGCABKAIIIQQgASgCDCACIAMQzU8hAiAAIAM2Aggg +ACACNgIEIAAgBDYCACABQRBqJAALSgECfyMAQRBrIgMkACABKAIAIAIoAgAQqwEhASADQQhqEIM4 +IAMoAgwhAiAAIAMoAggiBDYCACAAIAIgASAEGzYCBCADQRBqJAALSgECfyMAQRBrIgMkACABKAIA +IAIoAgAQzwEhASADQQhqEIM4IAMoAgwhAiAAIAMoAggiBDYCACAAIAIgASAEGzYCBCADQRBqJAAL +SAEBfyACIAAoAggiACgCACAAKAIIIgNrSwRAIAAgAyACEIIQIAAoAgghAwsgACgCBCADaiABIAIQ +zU8aIAAgAiADajYCCEEAC08BAn8gACgCBCECIAAoAgAhAwJAIAAoAggiAC0AAEUNACADQai/2gBB +BCACKAIMEQYARQ0AQQEPCyAAIAFBCkY6AAAgAyABIAIoAhARAgALRAECfyMAQRBrIgEkACAAKAIA +IQIgACgCBCEAA0AgAUEEaiACIAAQpSUgASgCBCICBEAgASgCCCEADAELCyABQRBqJAALRAECfyMA +QRBrIgEkACAAKAIAIQIgACgCBCEAA0AgAUEEaiACIAAQqSUgASgCBCICBEAgASgCCCEADAELCyAB +QRBqJAALRAECfyMAQRBrIgEkACAAKAIAIQIgACgCBCEAA0AgAUEEaiACIAAQpCUgASgCBCICBEAg +ASgCCCEADAELCyABQRBqJAALRAECfyMAQRBrIgEkACAAKAIAIQIgACgCBCEAA0AgAUEEaiACIAAQ +qyUgASgCBCICBEAgASgCCCEADAELCyABQRBqJAALRAECfyMAQRBrIgEkACAAKAIAIQIgACgCBCEA +A0AgAUEEaiACIAAQqCUgASgCBCICBEAgASgCCCEADAELCyABQRBqJAALRAECfyMAQRBrIgEkACAA +KAIAIQIgACgCBCEAA0AgAUEEaiACIAAQsCUgASgCBCICBEAgASgCCCEADAELCyABQRBqJAALRAEC +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 +AQUgACADNgIIIABBADYCBCAAIAE2AgALCwtHAQF/IwBBEGsiAyQAIANBCGogASACIAEgAhDjL0EB +akGk2tcAEO4hIAMoAgwhASAAIAMoAgg2AgAgACABNgIEIANBEGokAAtLAQF/AkAgAUGAgICAeHMi +AUEOSwRAQQAhAQwBCyABQQJ0IgJB9JPYAGooAgAhASACQbiT2ABqKAIAIQILIAAgAjYCBCAAIAE2 +AgALzgECBH8BfiMAQSBrIgMkACABKAIAKAIAIQUgAyABKAIEKAIANgIcIAMgBTYCGCADQgE3Awgg +A0EIaiEGIwBBIGsiASQAAn8gAigCAEUEQCACQQhqKAIAIQQgAigCBAwBCyACKAIEIAJBCGooAgAi +BCgCCEEBa0F4cWpBCGoLIAYgBCgCHBEPACEHIAFBEGoiBCACEO4jIAAgBzcDACAAQQhqIAQpAwA3 +AwAgAEEQaiABQRhqKQMANwMAIAAgBTYCGCABQSBqJAAgA0EgaiQACw4AIAAgAUHUudgAEPlUC8kC +AQF/IwBBIGsiAyQAIANBHGogAjYCACADIAE2AhggA0IANwIQIAMgAjYCDCADIAE2AggjAEHgAGsi +ASQAIAFBJGogA0EIaiICQRBqKQIANwIAIAFBHGogAkEIaikCADcCACABQYABOgAsIAFBADYCECAB +QoCAgIAQNwIIIAEgAikCADcCFCABQcgAaiABQQhqENICAkACQCABLQBIQQZHBEAgAUFAayABQdgA +aikDADcDACABQThqIAFB0ABqKQMANwMAIAEgASkDSDcDMCABQQhqENUjIgINASAAIAEpAzA3AwAg +AEEQaiABQUBrKQMANwMAIABBCGogAUE4aikDADcDAAwCCyAAIAEoAkw2AgQgAEEGOgAADAELIABB +BjoAACAAIAI2AgQgAUEwahDnNAsgAUEIahCIPyABQeAAaiQAIANBIGokAAtEAQJ/IwBBEGsiAyQA +IAEgAhDNASEBIANBCGoQgzggAygCDCECIAAgAygCCCIENgIAIAAgAiABIAQbNgIEIANBEGokAAtF +AQN/IwBBEGsiAiQAIAEoAgAQzgEhASACQQhqEIM4IAIoAgwhAyAAIAIoAggiBDYCACAAIAMgASAE +GzYCBCACQRBqJAALQwEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhCCECAAKAIIIQMLIAAoAgQg +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 +QaqVxwBBEhDxHyEEDA4LIAJBQGshBgJAIAJBgAFqKAIAIgoQ5xYiA0UEQCAGIAoQriAMAQsgBkEF +NgIAIAYgAzYCBAsgAigCRCEKIAIoAkAiBkEFRwRAIAIoAkghECACQZQBahD3QiACIBA2ApwBIAIg +CjYCmAEgAiAGNgKUAQwLCyAKIQQMDgsgDUH/AXFBAkcEQEGJhccAQRoQ8R8hBAwICyACQUBrIAJB +gAFqEIo5IAItAEBFDQgLIAIoAkQhBAwGCwJAIAtBA0ciFEUEQCACQUBrQYCFxwAQjk0gAigCQCID +QQNHBEAgAiACKQJENwKkASACIAM2AqABDAILIAIoAkQhBAwHCyACQagBaiACQZABaigCADYCACAC +IAIpAogBNwOgAQsgDEGAlOvcA0YEQEGHlccAQQ8Q8B8MBQsgFlANAQwCC0EDIQsgAyEEDAQLIAJB +QGtBlpXHAEEUELlOIAIoAkANASACKQNIIRULAkAgBkEFRwRAIAYhBQwBCyACQUBrEMwfIAIoAkAi +BUEFRg0BIAIoAkghECACKAJEIQoLIA1BAXEhBiACKQKkASEWIAIoAqABIQgMCQsgAigCRAshBCAC +QaABahC/PwsgBkEFRw0EDAULIAItAEEhDQwACwALIAIoAkghBAwGCyACKAJAIQQMBQsgAkGUAWoQ +1D8LQQMhCCALQQNGIBRyRQRAIAJBiAFqEL8/CwsgASABLQAcQQFqOgAcIAIgARCNEyIDNgJ4IAIg +BjoAcCACIBY3A2ggAiAQNgJgIAIgCjYCXCACIAU2AlggAiAVNwNQIAIgDDYCSCACIBM2AkQgAiAE +NgJAIAIgCDYCZAJAIAhBA0cEQCADDQEgAkEoaiACQUBrQQRyIgZBGGopAgA3AwAgAkEgaiAGQRBq +KQIANwMAIAJBGGogBkEIaikCADcDACACQQhqIAJB6ABqIgpBCGopAwA3AwAgAiAGKQIANwMQIAIg +CikDADcDAAwICyADRQ0GIAJB+ABqEN8dDAYLIAJBQGsQ7UJBAyEIIAMhBAwGCyACQRg2AkAgASAC +QUBrEIAxCyEBIAlBAzYCJCAJIAE2AgAMBgsgAkGUAWoQvz8LQQMhCAsgASABLQAcQQFqOgAcIAEQ +nwwhBSACQeAAaiACQThqKAIANgIAIAIgEDYCVCACIAw2AlAgAiAGNgJIIAIgCjYCRCACIAQ2AkAg +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 +AkEYaikDADcCACAJQTBqIAJBCGopAwA3AwAMAQsgASAEELxSIQEgCUEDNgIkIAkgATYCAAsgAkGw +AWokACARIAkQgy0gD0EIaiARKQMANwMAIBFBQGskACAPIA8oAgggDygCDBDBPiAPKAIEIQEgACAP +KAIANgIAIAAgATYCBCAPQRBqJAALKgAgACABQZDJyABBCUGEycgAQfTIyABBC0HpyMgAQQlB4MjI +AEEEELBTC0UBAX8jAEEQayICJAACQCABUARAIABBCToAAAwBCyACQQE6AAAgAiABNwMIIAAgAkGQ +58gAQfDlyAAQ+RoLIAJBEGokAAsqACAAIAFBlNnIAEEJQYjZyABB+NjIAEELQezYyABBCUG61sgA +QQQQsFMLKgAgACABQYj+yABBBUGA/sgAQfD9yABBBUHp/cgAQQ1B3P3IAEEMELBTCwsAIAAgAUEL +EIVUCzQBAn8jAEEQayIDJAAgA0EEaiIEIAAgACABQQV0ahDjHiACIAQQvicgBBCtSyADQRBqJAAL +KgAgACABQdCPygBBB0GA9MkAQcCPygBBCkGD6MkAQQ9Br4/KAEEIELBTC1cCAX8BfiMAQRBrIgMk +ACADIAI2AgwgAyABNgIIIANBCGoiARCKISECIAMgAUEEahCKITYCBCADIAI2AgAgAykDACEEIAEQ +7TMgACAENwMAIANBEGokAAtLAQF/AkACQAJAIAAoAgAiAUH/////B2tBACABQYKAgIB4SBsOAgEC +AAsgAEEEahCIPyAAQRBqEMwZDwsgABDwMw8LIABBBGoQiD8LQQEDfyMAQRBrIgEkACAAKAIAIgJB +HGoiAxCHGyADENw9IAEgAEEEajYCDCABIAI2AgggAUEIahD5MiABQRBqJAALQQEDfyMAQRBrIgEk +ACAAKAIAIgJBCGoiAxDoMiADEJ09IAEgAEEEajYCDCABIAI2AgggAUEIahD5MiABQRBqJAAL+wMC +Bn8BfiMAQdABayIDJAAjAEHgAWsiBSQAIAVBDGohBCABKAIkIQYjAEHgA2siAiQAIAIgARCZGQJA +AkACQCACKAIAQQRHBEAgAkEoaiACQRBqKQIANwMAIAJBIGogAkEIaiIBKQIANwMAIAIgAikCACII +NwMYIAJByABqIAJBLGooAgA2AgAgAkE4aiABKAIANgIAIAIgAikCJDcDQCACIAg3AzAgAkHUA2oi +ASACQTBqEPsrIAJBkAJqIgcgASACQUBrENoRIAJBzABqIAcQzhsgAigCTCIHQQJHDQEgAigCUCEB +IAJB1ANqENU/IAJBMGoQ1T8gBhCkRSAGIAE2AgAMAgsgAhCUPiAEQQM2AgwMAgsgAigCUCEGIAJB +kAJqIAJB1ABqQbwBEM1PGiACQdQDahDVPyACKAIwIQEgAikCNCEICyAEQRRqIAJBkAJqQbwBEM1P +GiAEIAY2AhAgBCAHNgIMIAQgCDcCBCAEIAE2AgALIAJB4ANqJAACQCAFKAIYQQNGBEAgA0ECNgIM +DAELIAMgBUEMakHQARDNTxoLIAVB4AFqJAACQCADKAIMQQJHBEAgACADQdABEM1PGgwBCyAAQQI2 +AgwgAygCDEECRwRAIAMoAgBBA0YEQCADQQRqEPo+CyADQQxqEKNBCwsgA0HQAWokAAsLACAAIAFB +BRCFVAtAAQF/IABBGGoQ+j4CQCAAKAIAQQNGBEAgACgCBCIBEJM8IAEQmAQMAQsgABC/PyAAQQxq +EMwZCyAAQSBqEMwZCzYBAX8jAEEQayICJAAgAiAAEN8fIAJBCGoiACABIAIoAgAgAigCBBC6HiAA +EJ4uIAJBEGokAAtNAQF/IAAgASgCDDYCGCAAIAEoAgAiAjYCECAAIAJBCGo2AgggACACIAEoAgRq +QQFqNgIMIAAgAikDAEJ/hUKAgYKEiJCgwIB/gzcDAAvBAQEBfyMAQbABayIDJAAgASgCABoCQCAC +KQMAUARAIwBBEGsiASQAAkACQCACQQhqIgIQxStFBEAgAhDGK0UNAQsgA0GggICAeDYCAAwBCyAC +ELgsRQRAIANBoICAgHg2AgAMAQsgAUEBNgIEIAMgAiABQQRqELsGCyABQRBqJAAMAQsgA0GggICA +eDYCAAsCQCADKAIAQaCAgIB4RgRAIABBoICAgHg2AgAMAQsgACADQbABEM1PGgsgA0GwAWokAAsO +ACAAIAFBkJvOABC+VQtaAQJ/IwBBEGsiASQAIAFBCGogAEEoahDlIyABKAIMIQACfyABKAIIIgIo +AgBBC0YEQCACQQhqEMAZDAELIAJBCGoQwBkLIAAgACgCAEEBazYCACABQRBqJAALKwAgACABQfjx +zgBBCkHs8c4AQdzxzgBBB0HU8c4AQQxByPHOAEHAARCwUwvWAQECfyMAQRBrIgIkACACQQhqIAEQ +wRACQCACKAIIIgNFBEAgAEGAgICAeDYCAAwBCyMAQUBqIgEkACABQQA2AhQgAUKAgICAEDcCDCAB +QTBqQaygzAA2AgAgAUEDOgA4IAFBIDYCKCABQQA2AjQgAUEANgIgIAFBADYCGCABIAFBDGo2Aiwg +AyABQRhqENogBEBBxKDMAEE3IAFBP2pB/KDMAEHYocwAEIkYAAsgACABKQIMNwIAIABBCGogAUEU +aigCADYCACABQUBrJAALIAJBEGokAAsqACAAIAFBjI7QAEEDQdKP0ABB/IvQAEEMQcaP0ABBEkG0 +j9AAQQwQsFMLPQEBfyAAKAIIIQEgACgCBCEAA0AgAQRAIAAoAgBBA0YEQCAAQQRqEIE/CyABQQFr +IQEgAEEMaiEADAELCws/AQF/IAAoAgghASAAKAIEIQADQCABBEAgABCeQCAAQRhqEIE/IABBDGoQ +iD8gAUEBayEBIABBQGshAAwBCwsLOQECfyMAQRBrIgIkACACQQRqIgMgABDqLiABIAIoAgggAigC +DBCyMiADENorIAMQiD8gAkEQaiQAC0MBAX8jAEEQayICJAAgAkEIaiABKAIAQdwAaigCAEEIahDl +NSACKAIMIQEgACACKAIINgIAIAAgATYCBCACQRBqJAALSwEBfwJAAkACQEECIAAtAABBC2tB/wFx +IgIgAkECTxtBAWsOAgECAAsgAEEEaiABEKEGDwsgAUGMvtAAQeoAEIdBDwsgACABELcGCz0BAX8j +AEEQayICJAAgAkEIaiAAKAIAIAEgACgCBC8BABCzMCACLQAIIQAgAi0ACSACQRBqJAAgAEEAR3EL +PQEBfyMAQRBrIgIkACACQQhqIAAoAgAgACgCBC8BACABELMwIAItAAghACACLQAJIAJBEGokACAA +QQBHcQsqACAAIAFBwLPRAEEJQbSz0QBBpLPRAEELQZmz0QBBCUGQs9EAQQQQsFMLgQEBAn8jAEEg +ayICJAAgAiABNgIcIAIgADYCGCACQQhqIgFBADYCCCABQgA3AwACfyACQRhqIQEgAkEcaiEDAkAC +QCAALQCdAUUEQCABIAMQ40YiAUH/AXENAiAALQCeAUUNAUEBDAMLIAEgAxDjRgwCC0EAIQELIAEL +IAJBIGokAAtJAQF/IwBBEGsiAiQAIAIgADYCDCABQajE0QBBBEGsxNEAQQQgAEEQakGwxNEAQcDE +0QBBBiACQQxqQcjE0QAQjBEgAkEQaiQACz4BAn8gASEDIAAhAgNAIAMEQCADQQFrIQMgAi0AEARA +IAJBBGoQ7T0LIAJBFGohAgwBCwsgAQRAIAAQmAQLCzwAAkAgASACTQRAIAIgBE0NASACIAQgBRDj +GwALIAFBACAFEOQbAAsgACACIAFrNgIEIAAgASADajYCAAsqACAAIAFBvPLSAEEJQbDy0gBBoPLS +AEEIQZby0gBBC0GL8tIAQQQQsFMLKgAgACABQYD60gBBBUH4+dIAQej50gBBBUHh+dIAQQ1B1PnS +AEEMELBTC0QBAX8gACABQShqIgIgARCRLiAAQShqIAIgARCSLiAAQdAAaiABQdAAakEoEM1PGiAA +QfgAaiABQfgAakG48dMAEIoDC5IBAQR/IwBBEGsiAyQAIANBCGohAiAAQQRqIgQoAgQiASAEKAIA +TQR/QQAFIAQgAUEBayIBNgIEQQELIQQgAiABNgIEIAIgBDYCACADKAIIBH8gAygCDCIBQQN2IQIg +AUGAAk8EQCACQSBB8O7TABDiGwALIAAoAgAgAmotAAAgAUEHcXZBAXEFQQILIANBEGokAAtFAQF/ +IAAoAoACIgNBH00EQCAAIANBA3RqIgMgATYCACADIAI2AgQgACAAKAKAAkEBajYCgAIPCyADQSBB +nMzWABDiGwALPQEBfyAAKAIIIQEgACgCBCEAA0AgAQRAIAAoAgBBAk8EQCAAQQRqEPo+CyABQQFr +IQEgAEEMaiEADAELCws9AQF/IAAoAgghASAAKAIEIQADQCABBEAgACgCAEEDRgRAIABBBGoQ+j4L +IAFBAWshASAAQQxqIQAMAQsLCw4AIAAgAUHootcAEL5VCyoAIAAgAUGko9cAQQVBnKPXAEGMo9cA +QQVBhaPXAEENQfii1wBBDBCwUws6ACAAIAEgA0EMbGoiASkCADcCACAAQQhqIAFBCGooAgA2AgAg +ASABQQxqIANBf3MgAmpBDGwQzk8aC0UAIABBDGogASgCDCACKAIMajYCACAAIAEoAgggAigCCGo2 +AgggACABKAIEIAIoAgRqNgIEIAAgAigCACABKAIAajYCAAt2AQN/IwBBEGsiAyQAIANBCGoiBCAB +EJg2IAAoAgAiASECIAEgACgCBEEDdGohACMAQRBrIgEkAAN/IAAgAkYEfyABQRBqJAAgBAUgASAC +NgIMIAQgAUEMakHAvNgAEIgLIAJBCGohAgwBCwsQlDYgA0EQaiQAC0MBAX8jAEEgayIBJAAgAUEU +akIANwIAIAFBATYCDCABQcSA2QA2AgggAUGw/9gANgIQIAAgAUEIahCPRSABQSBqJAALOgAgAAJ/ +IAEoAgAEQBCbLiIBRQRAIABBAToAAUEADAILIAAgATYCBEEBDAELIABBADoAAUEACzoAAAt3AQJ/ +IwBBEGsiAiQAIAAgACgCCCIBQQFrNgIIIAFBAUYEQCACIAA2AgwjAEEQayIBJAAgACgCBEEASARA +Qezg2QBBKyABQQ9qQZjh2QBB0OLZABCJGAALIAAoAgAQmAQgAUEQaiQAIAJBDGoQi0oLIAJBEGok +AAtEAAJAAkACQAJAIAAtACFBA2sOAgABAwsgAEEkahDZPwwBCyAAQSRqEJk2IABBGGoQmkwLIABB +DGoQoT0gAEEAOgAgCwsQACAAIAEgAkHAxsAAEPdUC0YAAkACQAJAAkAgAC0ANUEDaw4CAAEDCyAA +QThqEJk2DAELIABB5ABqENk/IABB4ABqEK85CyAAQSBqEIg/IABBADoANAsLEAAgACABIAJBj77B +ABD3VAtHAAJAAkACQAJAIAAtAExBA2sOAgABAwsgAEH0AGoQ2T8MAQsgAEHQAGoQmTYgAEHIAGoQ +mkwLIABBPGoQoT0gAEEAOgBNCwtMAAJAAkACQCAALQCmAg4EAAICAQILIABBmAJqEIg/DwsgAEFA +axD7PyAAQYwCahD8EiAAQQA6AKQCIABBgAJqEIg/IABBADoApQILCxAAIAAgASACQYPHwgAQ91QL +TAACQAJAAkAgAC0ApgIOBAACAgECCyAAQZgCahCIPw8LIABBQGsQ+z8gAEGMAmoQ/RIgAEEAOgCk +AiAAQYACahCIPyAAQQA6AKUCCwswAQN/IAEtAAAiAiAALQAAIgNyRSEEIANFIAJFcgR/IAQFIABB +AWogAUEBahCQRwsLEAAgACABIAJB88rDABD3VAs9AQJ/IAEoAgQiAiABKAIMRgR/QQAFIAEgAkEI +ajYCBCACKAIEIQMgAigCAAshASAAIAM2AgQgACABNgIACz8CAX8BfCMAQRBrIgEkACAAEKlFIAFB +CGogABDiMSABKAIIKwMAIAEoAgwiACAAKAIAQQFrNgIAIAFBEGokAAs/AgF/AXwjAEEQayIBJAAg +ABCpRSABQQhqIAAQ4jEgASgCCCsDCCABKAIMIgAgACgCAEEBazYCACABQRBqJAALigEBAX8jAEGg +A2siBCQAIARBADoAmAMgBCADNgKUAyAEIAI2ApADIAQgATYCjAMgBCAANgKIAyMAQbADayIAJAAg +AEEIaiIBIARBoAMQzU8aIAAgATYCrAMgAEGsA2pBuO/EABDDUiAALQCgA0EERwRAIABBCGoQ0TcL +IABBsANqJAAgBEGgA2okAAtJAgF/AX4jAEEQayIBJAAgAUEIaiAAEI4vIAEoAggoAgBBjAFqKAIA +QcgAaikDACABKAIMIgAgACgCAEEBazYCACABQRBqJAC6CxAAIAAgASACQfiYxAAQ91QLNQECfyMA +QRBrIgEkACABQQhqIAAQji8gASgCDCEAEJgBIAAgACgCAEEBazYCACABQRBqJAALQgEBfyMAQRBr +IgMkACADIAE2AgwgAyADQQxqKAIAIAIQqB4gAygCBCEBIAAgAygCADYCACAAIAE2AgQgA0EQaiQA +CxAAIAAgASACQdPDxAAQ91QLRQACQAJAAkACQCAALQAkDgUAAwMBAgMLIABBEGoQ+j4PCyAAQShq +EKFDDwsgAEEsahCZNiAAQShqENo5IABBOGoQgEALC0YAAkACQAJAIAAtAPAEDgQAAgIBAgsgABD6 +PiAAQQhqEPo+IABBEGoQyDkPCyAAQShqEOApIABBIGoQ+j4gAEEYahD6PgsLRgACQAJAAkACQCAA +LQA1QQNrDgIAAQMLIABBOGoQmTYMAQsgAEHkAGoQ1DAgAEHgAGoQrzkLIABBIGoQiD8gAEEAOgA0 +CwsQACAAIAEgAkGzocUAEPdUC0YAAkACQAJAAkAgAC0ANUEDaw4CAAEDCyAAQThqEJ42DAELIABB +5ABqENk/IABB4ABqEK85CyAAQSBqEIg/IABBADoANAsLPgEBfyMAQRBrIgIkACACQQRqIAEgACgC +BEEBahDcFiAAKAIAIAIoAgxrIAIoAgQgAigCCBCOQyACQRBqJAALVAAgAEEoakEAQcEAEMtPGiAA +QgA3AyAgAEEYakGw08UAKQMANwMAIABBEGpBqNPFACkDADcDACAAQQhqQaDTxQApAwA3AwAgAEGY +08UAKQMANwMACz8CAX8BfiMAQRBrIgEkACAAEKlFIAFBCGogABDiMSABKAIIKQMAIAEoAgwiACAA +KAIAQQFrNgIAIAFBEGokAAs/AgF/AX4jAEEQayIBJAAgABCpRSABQQhqIAAQ4jEgASgCCCkDCCAB +KAIMIgAgACgCAEEBazYCACABQRBqJAALGwAgACABIAJBAEEEQYfXxQBBBkHY1MUAEIhUC0MBAX8j +AEEQayICJAACQCABKAIAQaCAgIB4RgRAIABBAjYCAAwBCyACQQhqIAEQjQUgACACKQMINwIACyAC +QRBqJAALNwAgAAJ/IAEtAABFBEAgAEEBaiABQQFqQcAAEM1PGkEADAELIABBBGogAUEEahDFHkEB +CzoAAAuGAQEBfyMAQbAGayIEJAAgBEEAOgCsBiAEIAM2AgwgBCACNgIIIAQgATYCBCAEIAA2AgAj +AEHABmsiACQAIABBDGoiASAEQbAGEM1PGiAAIAE2ArwGIABBvAZqQbzxxAAQw1IgAC0AuAZBBEcE +QCAAQQxqEKxACyAAQcAGaiQAIARBsAZqJAALRwEBfwJAIAAtAAAiAUEGRg0AAkACQAJAIAEOBQMD +AwECAAsgAEEEahDMGQ8LIABBBGoQiD8PCyAAQQRqIgAQzjQgABClPQsLCwAgACABQQIQ0FMLDwAg +ACABQYCAgIB4ENBTC0gAIAEoAgBBgYCAgHhHBEAgACABKQIANwIAIABBCGogAUEIaigCADYCAA8L +IAEoAgQQ2gshASAAQYGAgIB4NgIAIAAgATYCBAsQACAAIAEgAkHwmsYAEPdUCxsAIAAgASACQQBB +BEHYxMYAQQRBnMXGABCIVAsbACAAIAEgAkEAQQpBzM/GAEEKQcLPxgAQiFQLGwAgACABIAJBAEEP +QfXLxgBBCEHty8YAEIhUCxsAIAAgASACQQBBFUH6zcYAQQhB7cvGABCIVAsQACAAIAEgAkHYsccA +EPdUCxsAIAAgASACQQBBDUGrx8cAQQZBpcfHABCIVAsbACAAIAEgAkEAQQ1B+szHAEEKQcjLxwAQ +iFQLQAEBfwJ/IAEoAiRBA0cEQEE4QQgQpS4iAiABQTgQzU8aQQAMAQsgASgCACECQQELIQEgACAC +NgIEIAAgATYCAAtGAQF/An8gASgCAEGAgICAeEcEQEHcAEEEEKUuIgIgAUHcABDNTxpBAAwBCyAB +KAIEIQJBAQshASAAIAI2AgQgACABNgIACxsAIAAgASACQQBBCkH8qcgAQQZB9qnIABCIVAs8AAJA +AkACQCAAKAIAIgAoAgAOAgABAgsgAEEIaigCAEUNASAAKAIEEJgEDAELIABBBGoQzDsLIAAQmAQL +EgAgACABQQJBvNTIAEECEMJVCxIAIAAgAUECQfzUyABBAhDCVQsWACAAIAFBgICAgHhBzNTIAEEC +EMJVCxIAIAAgAUECQfzUyABBARDCVQsWACAAIAFBgICAgHhBzNTIAEEBEMJVCxIAIAAgAUECQbzU +yABBARDCVQsQACAAIAFBAkH81MgAELxVCxQAIAAgAUGAgICAeEHM1MgAELxVCxAAIAAgAUECQbzU +yAAQvFULGwAgACABIAJBCUEIQaHlyABBBkGb5cgAEIhUCxsAIAAgASACQQlBCkHj5sgAQQVB3ubI +ABCIVAsbACAAIAEgAkEJQQ9B8+fIAEEIQevnyAAQiFQLEgAgACABIAJBoPHIAEEGELlVCxIAIAAg +ASACQfDwyABBBhC5VQsSACAAIAEgAkGA8cgAQQYQuVULEAAgACABQeDwyABBAhDAVQsQACAAIAFB +kPHIAEECEMBVCxAAIAAgAUGQ8cgAQQEQwFULEAAgACABQeDwyABBARDAVQsOACAAIAFBkPHIABC9 +VQsOACAAIAFB4PDIABC9VQsSACAAIAEgAkGg8cgAQQUQuVULEgAgACABIAJB8PDIAEEFELlVCxIA +IAAgASACQYDxyABBBRC5VQs/AQF/IAAoAgAiACAAKAIAQQFrIgE2AgACQCABDQAgAEEIahCWQSAA +IAAoAgRBAWsiATYCBCABDQAgABCYBAsLQQEBfyABEMRBIgEgASgCBEEBaiICNgIEIAJFBEAACyAA +IAE2AgQgACABNgIAIABBFGpBADYCACAAQQhqQQA2AgALQwEBfyMAQRBrIgIkACACQQhqIAEoAgAi +ASABKAIAKAIEEQEAIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAtHAQF/IAAoAgQiAUUE +QEHovMkAQSFBjL3JABDmKwALIAAgAUEBazYCBCAAIAAoAgAiACgC5AEiATYCACABQQA2AlggABCY +BAs3ACAAAn8gASgCAEUEQCAAQQRqIAFBBGpBwAEQzU8aQQAMAQsgAEEEaiABQQRqEMUeQQELNgIA +CzsBAn8jAEEQayIBJAADQCABQQRqIAAQ2BwgASgCBCICBEAgAiABKAIMQQN0ahD6PgwBCwsgAUEQ +aiQACxcAIAAgAUEWQcbPyQBBCkG8z8kAEPxTCxcAIAAgAUEFQfLRyQBBB0Hr0ckAEPxTCz8BAX8j +AEEQayICJAAgACgCAEH90ckAQfjRyQAgARtBBEEFIAEbEOFIIAJBBDoACCACQQhqEJ4uIAJBEGok +AAsXACAAIAFBFEH408kAQRxB3NPJABD8UwsbACAAIAEgAkEAQQNBgubJAEEOQefoyQAQiFQLEAAg +ACABIAJB6P/JABD3VAsXACAAIAFBFEGH9MkAQQdBgPTJABD8UwsQACAAIAEgAkGEqsoAEPdUCz8B +AX8jAEEQayICJAAgAkEIaiABQRhqEOMjIAIoAgwhASAAIAIoAggQgwUgASABKAIAQQFrNgIAIAJB +EGokAAs/AQF/IwBBEGsiAiQAIAJBCGogAUEIahDkIyACKAIMIQEgACACKAIIEOgHIAEgASgCAEEB +azYCACACQRBqJAALEAAgACABIAJB/KDLABD3VAvcFwIJfwF+AkACQAJAAkAgACgCACIHQf////8H +a0EAIAdBgoCAgHhIG0EBaw4CAQIACyMAQRBrIgokACAKIAE2AgwCQCAKQQxqQa/8ywBBCBCYRyIB +DQAgCigCDCIHQbf8ywBBFxDdFyIBRQRAAn8jAEHwAGsiAyQAIAcoAgBFBEAgBykCECELIAdBgICA +gHg2AhAgA0EQaiAHQRhqKAIANgIAIAMgCzcDCCADQTRqIANBCGoQjzIgA0FAayEEIwBBIGsiAiQA +IAAoAgQhBSACQRBqQQEgACgCCCIBEPYuAkACQCACKAIQQYCAgIB4RwRAIAJBCGogAkEYaigCADYC +ACACIAIpAhA3AwAgAUEMbCEJA0AgCUUNAiAJQQxrIQkgAiAFNgIQIAVBDGohBSMAQSBrIggkACAC +QRBqKAIAIQEjAEEQayIGJAAgBkEIaiABEKUtIAhBCGogBigCCCAGKAIMEN8lIAZBEGokAAJ/IAgt +AAhBBkcEQCACIAhBCGoQ8x5BAAwBCyAIKAIMCyEBIAhBIGokACABRQ0ACyAEQQY6AAAgBCABNgIE +IAIQ6EsMAgsgBCACKAIUNgIEIARBBjoAAAwBCyACQRtqIAJBCGooAgA2AAAgBEEEOgAAIAIgAikD +ADcAEyAEIAIpABA3AAEgBEEIaiACQRdqKQAANwAACyACQSBqJAACQCADLQBAQQZHBEAgA0HoAGog +A0HQAGopAwA3AwAgA0HgAGogA0HIAGopAwA3AwAgAyADKQNANwNYIANBGGoiASAHQQRqIANBNGog +A0HYAGoQ1AwgARCVQ0EAIQEMAQsgAygCRCEBIANBNGoQiD8LIANB8ABqJAAgAQwBCwwFCyEBCyAB +DQAgCigCDCIHQc78ywBBBhDdFyIBRQRAAn8gAEEMaiEBIwBB8ABrIgMkACAHKAIARQRAIAcpAhAh +CyAHQYCAgIB4NgIQIANBEGogB0EYaigCADYCACADIAs3AwggA0E0aiADQQhqEI8yIANBQGshBCMA +QSBrIgIkACABKAIEIQYgAkEQakEBIAEoAggiARD2LgJAAkAgAigCEEGAgICAeEcEQCACQQhqIAJB +GGooAgA2AgAgAiACKQIQNwMAIAFBA3QhBQNAIAVFDQIgBUEIayEFIAIgBjYCECAGQQhqIQYjAEEg +ayIIJAAgCEEIaiACQRBqKAIAIgEoAgAiCUHt3ckAIAkbIAEoAgRBBiAJGxDfJQJ/IAgtAAhBBkcE +QCACIAhBCGoQ8x5BAAwBCyAIKAIMCyEBIAhBIGokACABRQ0ACyAEQQY6AAAgBCABNgIEIAIQ6EsM +AgsgBCACKAIUNgIEIARBBjoAAAwBCyACQRtqIAJBCGooAgA2AAAgBEEEOgAAIAIgAikDADcAEyAE +IAIpABA3AAEgBEEIaiACQRdqKQAANwAACyACQSBqJAACQCADLQBAQQZHBEAgA0HoAGogA0HQAGop +AwA3AwAgA0HgAGogA0HIAGopAwA3AwAgAyADKQNANwNYIANBGGoiASAHQQRqIANBNGogA0HYAGoQ +1AwgARCVQ0EAIQEMAQsgAygCRCEBIANBNGoQiD8LIANB8ABqJAAgAQwBCwwFCyEBCyABDQAgCigC +DCIHQdT8ywBBHBDdFyIBRQRAAn8gAEEYaiEBIwBB8ABrIgMkACAHKAIARQRAIAcpAhAhCyAHQYCA +gIB4NgIQIANBEGogB0EYaigCADYCACADIAs3AwggA0E0aiADQQhqEI8yIANBQGshBCMAQSBrIgIk +ACABKAIEIQUgAkEQakEBIAEoAggiARD2LgJAAkAgAigCEEGAgICAeEcEQCACQQhqIAJBGGooAgA2 +AgAgAiACKQIQNwMAIAFBDGwhCQNAIAlFDQIgCUEMayEJIAIgBTYCECAFQQxqIQUjAEEgayIIJAAg +AkEQaigCACEBIwBBEGsiBiQAIAZBCGogARC9JyAIQQhqIAYoAgggBigCDBDfJSAGQRBqJAACfyAI +LQAIQQZHBEAgAiAIQQhqEPMeQQAMAQsgCCgCDAshASAIQSBqJAAgAUUNAAsgBEEGOgAAIAQgATYC +BCACEOhLDAILIAQgAigCFDYCBCAEQQY6AAAMAQsgAkEbaiACQQhqKAIANgAAIARBBDoAACACIAIp +AwA3ABMgBCACKQAQNwABIARBCGogAkEXaikAADcAAAsgAkEgaiQAAkAgAy0AQEEGRwRAIANB6ABq +IANB0ABqKQMANwMAIANB4ABqIANByABqKQMANwMAIAMgAykDQDcDWCADQRhqIgEgB0EEaiADQTRq +IANB2ABqENQMIAEQlUNBACEBDAELIAMoAkQhASADQTRqEIg/CyADQfAAaiQAIAEMAQsMBQshAQsg +AQ0AIAooAgwiB0Hw/MsAQRsQ3RciAUUEQAJ/IABBJGohACMAQfAAayICJAAgBygCAEUEQCAHKQIQ +IQsgB0GAgICAeDYCECACQRBqIAdBGGooAgA2AgAgAiALNwMIIAJBNGogAkEIahCPMiACQUBrIQgj +AEEgayIEJAAgACgCBCEJIARBEGpBASAAKAIIIgAQ9i4CQAJAIAQoAhBBgICAgHhHBEAgBEEIaiAE +QRhqKAIANgIAIAQgBCkCEDcDACAAQQxsIQEDQCABRQ0CIAFBDGshASAEIAk2AhAgCUEMaiEJIwBB +IGsiBiQAIARBEGooAgAhACMAQRBrIgUkACAFQQhqIAAQpi0gBkEIaiAFKAIIIAUoAgwQ3yUgBUEQ +aiQAAn8gBi0ACEEGRwRAIAQgBkEIahDzHkEADAELIAYoAgwLIQAgBkEgaiQAIABFDQALIAhBBjoA +ACAIIAA2AgQgBBDoSwwCCyAIIAQoAhQ2AgQgCEEGOgAADAELIARBG2ogBEEIaigCADYAACAIQQQ6 +AAAgBCAEKQMANwATIAggBCkAEDcAASAIQQhqIARBF2opAAA3AAALIARBIGokAAJAIAItAEBBBkcE +QCACQegAaiACQdAAaikDADcDACACQeAAaiACQcgAaikDADcDACACIAIpA0A3A1ggAkEYaiIAIAdB +BGogAkE0aiACQdgAahDUDCAAEJVDQQAhAAwBCyACKAJEIQAgAkE0ahCIPwsgAkHwAGokACAADAEL +DAULIQELIAENAEEAIQELIApBEGokACABDwsgAEEEaiEHIwBBEGsiBSQAIAUgATYCDAJAIAVBDGpB +rP3LAEEQEJhHIgANACAFKAIMIgFBvP3LAEEGEN0XIgBFBEACfyMAQfAAayIGJAAgASgCAEUEQCAB +KQIQIQsgAUGAgICAeDYCECAGQRBqIAFBGGooAgA2AgAgBiALNwMIIAZBNGogBkEIahC+MiMAQRBr +IgkkACAJQQRqIgAgBxCTRyAGQUBrIAkoAgggCSgCDBDcJiAAEIg/IAlBEGokAAJAIAYtAEBBBkcE +QCAGQegAaiAGQdAAaikDADcDACAGQeAAaiAGQcgAaikDADcDACAGIAYpA0A3A1ggBkEYaiIAIAFB +BGogBkE0aiAGQdgAahDUDCAAEJVDQQAhAAwBCyAGKAJEIQAgBkE0ahCIPwsgBkHwAGokACAADAEL +QfWb1wBBKEHsnNcAEOYrAAshAAsgAA0AQQAhAAsgBUEQaiQAIAAPCyMAQRBrIgkkACAJIAE2AgwC +QCABQZT6ywBBBiAAQQRqIgEQ7T4iAA0AIAlBDGohByMAQUBqIgUkAAJ/IAFBDGoiASgCACIARQRA +QQAhAUEADAELIAUgADYCLCAFQQA2AiggBSAANgIcIAVBADYCGCAFIAEoAgQiADYCMCAFIAA2AiAg +ASgCCCEBQQELIQAgBSABNgI0IAUgADYCJCAFIAA2AhQCQANAAkAgBUEIaiAFQRRqENAQIAUoAggi +AUUNACAFKAIMIQAgBSABNgI4IAUgADYCPCAHKAIAIAVBOGogBUE8ahCUPyIBRQ0BDAILC0EAIQEL +IAVBQGskACABIgANAEEAIQALIAlBEGokACAADwtB59nJAEEoQcDbyQAQ5isAC7EKAQl/AkACQAJA +AkACQCAAKAIAIgJB/////wdrQQAgAkGCgICAeEgbQQFrDgIBAgALAkAgAUGU+ssAQQZBr/zLAEEI +EIobIgINAAJ/IwBBEGsiBiQAAkACQCABQbf8ywBBFxDJGiIDDQAgAS0AAA0BIAZBCGoiAiABKAIE +IgQQ0EogAhCeLiIDDQACfyMAQRBrIgIkACAAKAIEIQcgAkEIaiAEQQEgACgCCCIDEPgUAkACQAJA +IAItAAhBAkcEQCADQQxsIQUgAigCCCIDQQh2IQkgA0H/AXEhCiACKAIMIQgDQCAFRQ0CIAoNBCAC +QQhqIgQgCCAJQf8BcUEBRhDKPiAEEJ4uIgQNAyAHIAgQ5jMiBA0DIAdBDGohByACQQQ6AAggBUEM +ayEFIANB/4F8cUGABHIhA0ECIQkgAkEIahCeLiIERQ0ACwwCCyACKAIMIQQMAQsgAiAINgIMIAIg +AzYCCCACQQhqEMIkIQQLIAJBEGokACAEDAELDAcLIgMNACAGQQQ6AAggBkEIahCeLiEDCyAGQRBq +JAAgAwwBCwwFCyICDQACfyAAQQxqIQQjAEEQayIGJAACQAJAIAFBzvzLAEEGEMkaIgMNACABLQAA +DQEgBkEIaiICIAEoAgQiBRDQSiACEJ4uIgMNAAJ/IwBBEGsiAiQAIAQoAgQhByACQQhqIAVBASAE +KAIIIgMQ+BQCQAJAAkAgAi0ACEECRwRAIANBA3QhBSACKAIIIgNBCHYhCSADQf8BcSEKIAIoAgwh +CANAIAVFDQIgCg0EIAJBCGoiBCAIIAlB/wFxQQFGEMo+IAQQni4iBA0DIAcgCBDNPSIEDQMgB0EI +aiEHIAJBBDoACCAFQQhrIQUgA0H/gXxxQYAEciEDQQIhCSACQQhqEJ4uIgRFDQALDAILIAIoAgwh +BAwBCyACIAg2AgwgAiADNgIIIAJBCGoQwiQhBAsgAkEQaiQAIAQMAQsMBwsiAw0AIAZBBDoACCAG +QQhqEJ4uIQMLIAZBEGokACADDAELDAULIgINAAJ/IABBGGohBCMAQRBrIgYkAAJAAkAgAUHU/MsA +QRwQyRoiAw0AIAEtAAANASAGQQhqIgIgASgCBCIFENBKIAIQni4iAw0AAn8jAEEQayICJAAgBCgC +BCEHIAJBCGogBUEBIAQoAggiAxD4FAJAAkACQCACLQAIQQJHBEAgA0EMbCEFIAIoAggiA0EIdiEJ +IANB/wFxIQogAigCDCEIA0AgBUUNAiAKDQQgAkEIaiIEIAggCUH/AXFBAUYQyj4gBBCeLiIEDQMg +ByAIEOczIgQNAyAHQQxqIQcgAkEEOgAIIAVBDGshBSADQf+BfHFBgARyIQNBAiEJIAJBCGoQni4i +BEUNAAsMAgsgAigCDCEEDAELIAIgCDYCDCACIAM2AgggAkEIahDCJCEECyACQRBqJAAgBAwBCwwH +CyIDDQAgBkEEOgAIIAZBCGoQni4hAwsgBkEQaiQAIAMMAQsMBQsiAg0AIAFB8PzLACAAQSRqEL0b +IgINAEEAIQILIAIPCyAAQQRqIQICQCABQZT6ywBBBkGs/csAQRAQihsiAA0AIAFBvP3LAEEGIAIQ +uxsiAA0AQQAhAAsgAA8LIwBBEGsiAiQAIAIgATYCDAJAIAFBlPrLAEEGIABBBGoiARC+GyIADQAg +AkEMaiABQQxqEPAQIgANAEEAIQALIAJBEGokACAADwtB59nJAEEoQYDdyQAQ5isAC0Hn2ckAQShB +4NzJABDmKwALEAAgACABIAJB9LjMABD3VAsQACAAIAEgAkGF28wAEPdUCxsAIAAgASACQQBBBEHo +ys0AQQRB5MrNABCIVAsQACAAIAEgAkHurc4AEPdUCzYBAn8gAC0AACEDA0AgAiIABEAgAEEBayEC +IAEtAAAhBCABQQFqIQEgAyAERw0BCwsgAEEARws7AQJ/IwBBEGsiASQAIAFBCGogAEEoahDlIyAB +KAIILQAAIAEoAgwiAiACKAIAQQFrNgIAIAFBEGokAAtOACAAQShqEPFKIABCADcDICAAQRhqQaj0 +zgApAwA3AwAgAEEQakGg9M4AKQMANwMAIABBCGpBmPTOACkDADcDACAAQZD0zgApAwA3AwALEAAg +ACABIAJB8PvOABD3VAsQACAAIAEgAkGUlNAAEPdUC0IAIAEoAhRFBEBB4LXRAEEdIAIQ1yIACyAA +IAEpAwA3AwAgAEEQaiABQRBqKQMANwMAIABBCGogAUEIaikDADcDAAs3AQJ/IwBBEGsiASQAIAAo +AgAgAEEANgIABEAgASAAKAIEEFI2AgwgAUEMahCWQQsgAUEQaiQACxsAIAAgASACQQBBC0HwttIA +QQhB6LbSABCIVAsbACAAIAEgAkEAQQdBzM3SAEEFQcfN0gAQiFQLGwAgACABIAJBAEEFQYSV0wBB +A0GImdMAEIhUC4ADAQx/IwBBEGsiBCQAIARBDGoiAiABQQhqKAIANgIAIAQgAEHgA2o2AgAgBCAB +KQIANwIEIwBB0ABrIgEkACAEKAIAIgdBEGohCCACKAIAIQkgBEEIaigCACEKIAFBEGohCyAEKAIE +IQwDQCAGIAlHBEAgASAMIAZBBHQiDWoQtkkgAUEwaiABIAsgByAIEO0cIAEoAkQiAyABKAJAIgJr +IgVBACADIAVPGyEDIAEoAjggAmohBSABKAIwIAJqIQIDQCADBEAgAiACLQAAIAUtAABzOgAAIANB +AWshAyAFQQFqIQUgAkEBaiECDAELCyABQRBqIgIQ4DcgAiABELZJIAFBMGoiAyAAIAIQmQcgAUEI +aiICIAFBOGoiBSkAADcDACABIAEpADA3AwAgAyABELZJIAdBCGogBSkAADcAACAHIAEpADA3AAAg +CiANaiIDQQhqIAIpAwA3AAAgAyABKQMANwAAIAZBAWohBgwBCwsgAUHQAGokACAEQRBqJAALRAEB +fyMAQcABayIDJAAgAyABQcABEM1PIQMCQCABIAIQ3RUiAUUEQCAAQQA2AgAMAQsgACABIAMQji4L +IANBwAFqJAALRQECfyMAQRBrIgIkACACQQhqIAFBwAFqEIFBIAAgAikDCDcCwAEgAS8B0AEhAyAA +IAFBwAEQzU8gAzsByAEgAkEQaiQAC4AHARJ/IwBBEGsiBiQAIAZBDGoiAiABQQhqKAIANgIAIAYg +AEHgA2o2AgAgBiABKQIANwIEIwBB8ABrIgEkACAGKAIAIgdBEGohDiACKAIAIglBAXYhDSAGQQhq +KAIAIQogAUHQAGohDyABQSBqIQsgAUFAayEIIAYoAgQhDANAIAUgDUYEQAJAIAlBAXEhCCAKIAlB +BHRBYHEiAmohCSACIAxqIQogAUEgaiELQQAhBQNAIAUgCEYNASABIAogBUEEdCIMaiIDELZJIAFB +EGoiAiADELZJIAFBMGoiAxDgNyADIAIQtkkgAUHQAGoiBCAAIAMQzQcgAUEYaiINIAFB2ABqKQAA +NwMAIAEgASkAUDcDECAEIAIgCyAHIA4Q7RwgASgCZCIDIAEoAmAiAmsiBEEAIAMgBE8bIQMgASgC +WCACaiEEIAEoAlAgAmohAgNAIAMEQCACIAItAAAgBC0AAHM6AAAgA0EBayEDIARBAWohBCACQQFq +IQIMAQsLIAkgDGoiAiABKQMQNwAAIAJBCGogDSkDADcAACAHQQhqIAFBCGopAAA3AAAgByABKQAA +NwAAIAVBAWohBQwACwALBSABQRBqIAwgBUEFdCIQaiIDELdJIAFBMGoiAiADELdJIAFB0ABqIgMg +ACACEM0HIAFByABqIhEgAUHoAGopAAA3AwAgCCABQeAAaikAADcDACABQThqIhIgAUHYAGoiEykA +ADcDACABIAEpAFA3AzAgAyACIAggByAOEO0cIAEoAmQiAyABKAJgIgJrIgRBACADIARPGyEDIAEo +AlggAmohBCABKAJQIAJqIQIDQCADBEAgAiACLQAAIAQtAABzOgAAIANBAWshAyAEQQFqIQQgAkEB +aiECDAELCyABQdAAaiAIIA8gAUEQaiALEO0cIAEoAmQiAyABKAJgIgJrIgRBACADIARPGyEDIAEo +AlggAmohBCABKAJQIAJqIQIDQCADBEAgAiACLQAAIAQtAABzOgAAIANBAWshAyAEQQFqIQQgAkEB +aiECDAELCyAKIBBqIgIgASkDMDcAACACQRhqIBEpAwA3AAAgAkEQaiAIKQMANwAAIAJBCGogEikD +ADcAACABQdAAaiALELZJIAdBCGogEykAADcAACAHIAEpAFA3AAAgBUEBaiEFDAELCyABQfAAaiQA +IAZBEGokAAsbACAAIAEgAkEAQQ5B7JHXAEEGQeaR1wAQiFQLGwAgACABIAJBAEEOQZmU1wBBDUGM +lNcAEIhUCxsAIAAgASACQQBBBEHgltcAQQNBp5TXABCIVAs8AQF/QX8gACgCBCABKAIEIAAoAggi +ACABKAIIIgEgACABSRsQzE8iAiAAIAFrIAIbIgBBAEcgAEEASBsLRAEBfyMAQRBrIgMkACADQQhq +IAEgAiABIAIQ4y9BlNrXABDWGiADKAIMIQEgACADKAIINgIAIAAgATYCBCADQRBqJAALRgAgAEGA +AToAJCAAQQA2AgggAEKAgICAEDcCACAAIAEpAgA3AgwgAEEcaiABQRBqKQIANwIAIABBFGogAUEI +aikCADcCAAtAAQF/IwBBIGsiAyQAIAMgAjYCHCADIAE2AhggAyACNgIUIANBCGogA0EUahCESiAA +IAMpAwg3AwAgA0EgaiQACzgAAkAgAWlBAUdBgICAgHggAWsgAElyDQAgAARAQeGT2wAtAAAaIAAg +ARCrSCIBRQ0BCyABDwsACyYAAkACQCAALQAUQQNrDgMAAAABCyAAQRhqENs/IABBCGoQt0sLC0EA +AkACQAJAAkAgAC0ANUEDaw4CAAEDCyAAQThqEMFLDAELIABBOGoQnRcLIAAtADQEQCAAENkiCyAA +QQA6ADQLC0EAAkACQAJAAkAgAC0AMUEDaw4CAAEDCyAAQThqEMpLDAELIABBOGoQ7SQLIAAtADAE +QCAAENkiCyAAQQA6ADALC0EAAkACQAJAAkAgAC0AKUEDaw4CAAEDCyAAQTBqEMtLDAELIABBMGoQ +ww8LIAAtACgEQCAAENkiCyAAQQA6ACgLC0QAAkACQAJAAkAgAC0AMkEDaw4CAAEDCyAAQTRqEJk2 +DAELIABBmAJqEIgWIABBNGoQ1D8gAEEAOgAwCyAAQQA6ADELC0EAAkACQAJAAkAgAC0ANUEDaw4C +AAEDCyAAQThqENFLDAELIABBOGoQjEALIAAtADQEQCAAENkiCyAAQQA6ADQLC0EAAkACQAJAAkAg +AC0ALUEDaw4CAAEDCyAAQTBqENNLDAELIABBMGoQ+kILIAAtACwEQCAAENkiCyAAQQA6ACwLC0EA +AkACQAJAAkAgAC0AMUEDaw4CAAEDCyAAQThqENVLDAELIABBOGoQ2jELIAAtADAEQCAAENkiCyAA +QQA6ADALC0MAAkACQAJAAkAgAC0ARUEDaw4CAAEDCyAAQcgAahDWSwwBCyAAQcgAahD0LwsgAC0A +RARAIAAQ2SILIABBADoARAsLQQACQAJAAkACQCAALQA1QQNrDgIAAQMLIABBOGoQ0UsMAQsgAEE4 +ahCRQAsgAC0ANARAIAAQ2SILIABBADoANAsLQQACQAJAAkACQCAALQApQQNrDgIAAQMLIABBMGoQ +y0sMAQsgAEEwahDEDwsgAC0AKARAIAAQ2SILIABBADoAKAsLRAACQAJAAkACQCAALQAyQQNrDgIA +AQMLIABBNGoQmTYMAQsgAEGYAmoQiRYgAEE0ahDUPyAAQQA6ADALIABBADoAMQsLQQACQAJAAkAC +QCAALQAtQQNrDgIAAQMLIABBMGoQ00sMAQsgAEEwahCAQwsgAC0ALARAIAAQ2SILIABBADoALAsL +QQACQAJAAkACQCAALQAxQQNrDgIAAQMLIABBOGoQ1UsMAQsgAEE4ahDcMQsgAC0AMARAIAAQ2SIL +IABBADoAMAsLfAEBfyMAQeAGayIDJAAgA0EAOgDcBiADIAI2AtgGIAMgATYC1AYgAyAANgLQBiMA +QeAGayIAJAAgACADQQhqQdgGEM1PIgAgADYC3AYgAEHcBmpBgPHEABDDUiAALQDUBkEERwRAIAAQ +7C0LIABB4AZqJAAgA0HgBmokAAs6AQF/IwBBEGsiAiQAIAAQqUUgAkEIaiAAELw3IAIoAgwgAigC +CCABQQBHOgAgQQA2AgAgAkEQaiQACzoBAX8jAEEQayICJAAgABCpRSACQQhqIAAQvDcgAigCDCAC +KAIIIAFBAEc6ACxBADYCACACQRBqJAALOgEBfyMAQRBrIgIkACAAEKlFIAJBCGogABC8NyACKAIM +IAIoAgggAUEARzoALUEANgIAIAJBEGokAAteAQF/IwBBEGsiAiQAIAJBBGogARDRCwJAIAIoAgRF +BEAgAEEANgIADAELIAAgAkEEaiIBKAIAIAEoAghBA3RqIgEpAgA3AgAgACABQdgAaikCADcCCAsg +AkEQaiQACzcBAn8jAEEQayIBJAAgABCpRSABQQhqIAAQvDcgASgCDEEANgIAIAAoAgQgABCYBCAB +QRBqJAALEAAgACABIAJBiPDEABCiVQsQACAAIAEgAkGk78QAEKJVC3wBAX8jAEHQCmsiAyQAIANB +ADoAzAogAyACNgLICiADIAE2AsQKIAMgADYCwAojAEHQCmsiACQAIAAgA0EIakHIChDNTyIAIAA2 +AswKIABBzApqQcTwxAAQw1IgAC0AxApBBEcEQCAAEJMkCyAAQdAKaiQAIANB0ApqJAALCQAgAEEA +EJBVCwkAIABBARCQVQsJACAAQQIQkFULCQAgAEEDEJBVCwkAIABBBBCQVQsJACAAQQUQkFULCQAg +AEEGEJBVCzwBAX8jAEEQayICJAAgAkEEaiABENhKIAIoAgghASAAIAJBDGotAABBAEc6AAQgACAB +NgIAIAJBEGokAAs/AQF/IAAtAOAGQQNGBEAgAEEQahD7KiAAQQxqKAIAIgEgASgCAEEBazYCACAA +KAIEIgAgACgCAEEBazYCAAsLPwEBfyAALQDUBkEDRgRAIABBEGoQ5TAgAEEMaigCACIBIAEoAgBB +AWs2AgAgACgCBCIAIAAoAgBBAWs2AgALCzoBAX8jAEEQayICJAAgABCpRSACQQhqIAAQvTcgAigC +DCACKAIIIAFBAEc6ABJBADYCACACQRBqJAALNwECfyMAQRBrIgIkACACQQhqIAEgAEEAEIgwIAIo +AggiAwRAIAJBEGokACADDwsgASAAEMRPAAuYAQEFfyACQRhsIQIDQCACIgUEQCAFQRhrIQIjAEEQ +ayIDJAAgAyABKAIIIgZBLGopAgA3AgAgAyAAKAIIIgdBLGopAgA3AghBACEEIAMgA0EIahCXQQRA +IAMgBkE0aikCADcCACADIAdBNGopAgA3AgggAyADQQhqEJdBIQQLIANBEGokACABQRhqIQEgBEUN +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 +QTBrIgMkACADQQhqIgIgAUEoEM1PGiMAQdAAayIBJAAgAUHw////ASACKAIka603A0ggAUHw//// +AyACKAIga603A0AgAUHw////ASACKAIca603AzggAUHw////AyACKAIYa603AzAgAUHw////ASAC +KAIUa603AyggAUHw////AyACKAIQa603AyAgAUHw////ASACKAIMa603AxggAUHw////AyACKAII +a603AxAgAUHw////ASACKAIEa603AwggAUHQ/f//AyACKAIAa603AwAgAiABELAJIAFB0ABqJAAg +ACACQSgQzU8aIANBMGokAAs8AQF/IwBBEGsiAyQAIANBCGogAkEAEN0YIAMoAgwgASACEM1PIQEg +ACACNgIEIAAgATYCACADQRBqJAALNwEBfyAAKAIIIQEgACgCBCEAA0AgAQRAIAAoAgAEQCAAEPo+ +CyABQQFrIQEgAEEIaiEADAELCws+AQF/IwBBEGsiAiQAIAJBCGogASgCACABKAIEEO8uIAIoAgwh +ASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAvbAwEIfyMAQTBrIgYkACMAQRBrIgUkACAFQQA2Agwg +BSADIAVBDGoQ2w4gBSgCBCEHIAZBFGoiBCACNgIQIARBADYCDCAEQQhqIAI2AgAgBCABNgIEIAQg +BSgCDDYCGCAEIAc2AhQgBCADNgIAIAVBEGokACAGQQhqIQkjAEEQayIIJAAgBEEYaiELAkACQAJA +A0AgBCgCECIFIAQoAgwiAUkgBSAEKAIIS3IiAg0DIAQoAgQgAWohAyAEKAIUIAtqQQFrLQAAIQcC +QCAFIAFrIgFBB00EQEEAIAMgAhshA0EAIQVBACECA0AgASACRgRAIAEhAgwDCyAHIAIgA2otAABG +BEBBASEFDAMFIAJBAWohAgwBCwALAAsgCEEIaiAHIAMgARDuCiAIKAIMIQIgCCgCCCEFCyAFQQFH +DQEgBCACIAQoAgxqQQFqIgE2AgwgASAEKAIUIgJJDQAgASAEKAIISw0AIAJBBU8NAiABIAJrIgEg +BCgCBGogAiALIAIQgDxFDQALIAkgATYCBCAJQQhqIAQoAgw2AgBBASEKDAILIAQgBCgCEDYCDAwB +CyACQQRBqN3XABDjGwALIAkgCjYCACAIQRBqJAAgACAGKQIINwMAIAZBMGokAAt1AQR/IwBBEGsi +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 +IANBqIvEABDfUwsSACAAIAEgAiADQbiLxAAQ31MLEgAgACABIAIgA0GYjcQAEN9TCxIAIAAgASAC +IANBqI3EABDfUwsSACAAIAEgAiADQciNxAAQ31MLEgAgACABIAIgA0HYjcQAEN9TCxIAIAAgASAC +IANBiI/EABDfUwsSACAAIAEgAiADQZiPxAAQ31MLEgAgACABIAIgA0G4j8QAEN9TCxIAIAAgASAC +IANByI/EABDfUwsSACAAIAEgAiADQYiSxAAQ31MLEgAgACABIAIgA0GYksQAEN9TCxIAIAAgASAC +IANBmJPEABDfUwsSACAAIAEgAiADQaiTxAAQ31MLEgAgACABIAIgA0H4k8QAEN9TCxIAIAAgASAC +IANBiJTEABDfUwsSACAAIAEgAiADQdiUxAAQ31MLEgAgACABIAIgA0HolMQAEN9TCzkAAkACQAJA +IAAtANQDDgQAAgIBAgsgAEHQA2oQlkEgABDAIw8LIABB8ABqEKshIABB0ANqEJZBCws4AAJAAkAC +QCAALQCEAQ4EAAICAQILIABBgAFqEJZBIAAQwyMPCyAAQSBqEOEpIABBgAFqEJZBCws5AAJAAkAC +QCAALQCkBA4EAAICAQILIABBoARqEJZBIAAQwCMPCyAAQfAAahCOHSAAQaAEahCWQQsLMAEBfyMA +QRBrIgEkACABIAAoAgA2AgwgASAAKAIINgIIIAFBCGoQnD0gAUEQaiQACzABAX8jAEEQayIBJAAg +ASAAKAIANgIMIAEgACgCCDYCCCABQQhqEJ09IAFBEGokAAsvAQF/IwBBEGsiAiQAIAJBCGogACAB +QQEQuQ4gAigCCCACKAIMENk5IAJBEGokAAsvAQF/IwBBEGsiAiQAIAJBCGogACABQQEQtw8gAigC +CCACKAIMENk5IAJBEGokAAsvAQF/IwBBEGsiAiQAIAJBCGogACABQQEQvw4gAigCCCACKAIMENk5 +IAJBEGokAAsvAQF/IwBBEGsiAiQAIAJBCGogACABQQEQug4gAigCCCACKAIMENk5IAJBEGokAAsv +AQF/IwBBEGsiAyQAIANBCGogACABIAIQvw4gAygCCCADKAIMENk5IANBEGokAAsvAQF/IwBBEGsi +AyQAIANBCGogACABIAIQtw8gAygCCCADKAIMENk5IANBEGokAAsxAAJAAkACQCAAKAIAIgAoAgAO +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 +AvQKIQAMBAsgB0EBcQshByADQcAEaiADQagKaikDADcDACADQcgEaiADQbAKaikDADcDACADQdAE +aiADQbgKaikDADcDACADIAMpA6AKNwO4BCADKQLoCiEZIANB3ARqIANBqAZqQcwBEM1PGiADQbAE +aiADQcAMaigCADYCACADIAMpA7gMNwOoBEEBIAwgDEEDRhshBEEFIAYgBkEGRhshBiAUQQFxIQwg +GUIgiKchCCAZpyEADBELIAMoAvQKIQAgA0HEDGoQ+j4MAQsgAyAJNgLgCiADIAs2AtwKIAMgBjYC +2AogAygCrAYhAEEAIQJBASEBQQEhCEEAIQQMBwsgA0G4DGoQrRkgAkULIQEgA0HoB2oQvEwMBQsg +A0GoBmohAAJAIANBzAhqKAIAIgEQ5xYiBEUEQCAAIAEQtg4MAQsgAEEBNgIAIAAgBDYCBAsgAygC +qAZFDQMLIAMgCTYC4AogAyALNgLcCgsgAyAGNgLYCiADKAKsBiEAC0EAIQRBASEBQQEhCAwBCyAD +KQKwBiEZIAMoAqwGIQAgAygCwAoEQCAQEK0ZCyADIBk3AsgKIAMgADYCxAogA0EBNgLACgwBCwsg +A0HkCmoQr0IgBkEGRg0FIANB2ApqEPdCDAULIBBBAXEhCyADQbgCaiADQbAGaikDADcDACADQcAC +aiADQbgGaikDADcDACADQcgCaiADQcAGai8BADsBACADQaAEaiADQcgKaigCADYCACADIAMpA6gG +NwOwAiADIAMpAsAKNwOYBCADKAKoCiEIIAMoAqQKIQAgA0HMAmogA0HUCGpBzAEQzU8aIANBqAJq +IANBwAxqKAIANgIAIAMgAykCuAw3A6ACQQEgAiACQQNGGwwMCyADKAKkCiEADAcLIAMoAqQKIQAM +BwsgAygCpAohAAwHCyADKAKsBiEADAYLIAEgAkEAR3EEQCADQdAKahD6PgsgAygCwApBAEcgCHEE +QCAQEK0ZCyAEIAMtAJ0KRXJFBEAgFhC8TAtBAyEECyAKIAotABxBAWo6ABwgChCNEyECIAMgCTYC +vAYgAyALNgK4BiADIAY2ArQGIAMgCDYCsAYgAyAANgKsBiADIAQ2AqgGIANBwAZqIANB3ARqQcwB +EM1PGiADQZwIaiADQcAEaikDADcCACADQaQIaiADQcgEaikDADcCACADQawIaiADQdAEaikDADcC +ACADQbwIaiADQbAEaigCADYCACADIA42ApAIIAMgATYCjAggAyACNgLECCADIAw6AMEIIAMgBzoA +wAggAyADKQO4BDcClAggAyADKQOoBDcCtAgCQCAEQQNHBEAgAg0BIANBDGogA0GwBmpBlAIQzU8a +DAoLIAJFDQggA0HECGoQ3x0MCAsgA0GoBmoQ2jdBAyEEIAIhAAwICyADQRg2AqgGIAogA0GoBmoQ +gDELIQAgD0EDNgIAIA8gADYCBAwICyADQeQKahD6PgsgA0G4DGoQrRkLIANBlApqELxMC0EDCyEE +IAogCi0AHEEBajoAHCAKEJ8MIQIgA0G8BmogA0GgBGooAgA2AgAgAyAINgKwBiADIAA2AqwGIAMg +AykDmAQ3ArQGIAMgBDYCqAYgA0HABmogA0HMAmpBzAEQzU8aIANBoghqIANBuAJqKQMANwEAIANB +qghqIANBwAJqKQMANwEAIANBsghqIANByAJqLwEAOwEAIANBvAhqIANBqAJqKAIANgIAIAMgBjYB +lgggAyABOwGUCCADIAw2ApAIIAMgDjYCjAggAyACNgLECCADIAs6AMEIIAMgCToAwAggAyADKQOw +AjcBmgggAyADKQOgAjcCtAgCQCAEQQNGBEAgAg0BDAILIAJFBEAgA0EMaiADQbAGakGUAhDNTxoM +AwsgA0GoBmoQ2jdBAyEEIAIhAAwCCyADQcQIahDfHQtBAyEECyAEQQNGDQAgD0EIaiADQQxqQZQC +EM1PGiAPIAA2AgQgDyAENgIADAELIAogABD/UCEAIA9BAzYCACAPIAA2AgQLIANB0AxqJAACQAJA +IA0oAsQCQQNHBEAgDUEoaiANQcQCakGcAhDNTxogDUEIahDVIyIADQEgEiANQShqQZwCEM1PGgwC +CyASIA0oAsgCNgIEIBJBAzYCAAwBCyASQQM2AgAgEiAANgIEIA1BKGoQ2jcLIA1BCGoQiD8gDUHg +BGokACARQRBqJAALEQAgAEH8gscAQayYxwAQjFQLLwEBfyMAQRBrIgIkACACQQhqIAAgAUEBEMoO +IAIoAgggAigCDBDZOSACQRBqJAAL0gECBH8BfiMAQRBrIgIkACACIAE2AgwjAEEwayIBJAAgAUEI +aiACQQxqIgMQkxwCQAJAIAEoAghBAUYEQCABKQMQIgZCAFkNAQsjAEEQayIEJAAgAyAEQQ9qQZCb +yAAQtQUhBSAAQQE6AAAgACAFNgIEIARBEGokAAwBCyAAAn8gBkKAAloEQCABQQE6ABggASAGNwMg +IAAgAUEYaiABQS9qQZCbyAAQxRo2AgRBAQwBCyAAIAY8AAFBAAs6AAALIAFBMGokACADEJZBIAJB +EGokAAstAQF/IwBBEGsiASQAIAEgADYCCCABIABBQGs2AgwgAUEIahCaNyABQRBqJAALCQAgAEEg +EKlTC4EEAg1+B38gAkEEdCECA0AgAgRAIABBLGoiECAAQShqIhEoAgAgASgAA0ECdkH///8fcWqt +IgMgAEEUaigCACISrSILfiAAKAIkIAEoAABB////H3FqrSIFIABBGGooAgAiE60iDX58IBAoAgAg +ASgABkEEdkH///8fcWqtIgYgADUCECIHfnwgAEEwaiIQKAIAIAEoAAlBBnZqrSIIIABBIGooAgAi +FEEFbK0iBH58IABBNGoiFSgCAEGAgIAIaiABKAAMQQh2aq0iCSAAQRxqKAIAIhZBBWytIgp+fCAD +IAd+IAUgC358IAQgBn58IAggCn58IAkgE0EFbK0iDH58IAMgBH4gBSAHfnwgBiAKfnwgCCAMfnwg +CSASQQVsrX58IgpCGohC/////w+DfCIMQhqIQv////8Pg3wiDqdB////H3E2AgAgECADIA1+IAUg +Fq0iD358IAYgC358IAcgCH58IAQgCX58IA5CGohC/////w+DfCIEp0H///8fcTYCACAVIAMgD34g +BSAUrX58IAYgDX58IAggC358IAcgCX58IARCGohC/////w+DfCIDp0H///8fcTYCACAAIANCGoin +QQVsIAqnQf///x9xaiIQQf///x9xNgIkIBEgDKdB////H3EgEEEadmo2AgAgAkEQayECIAFBEGoh +AQwBCwsLZwEDfyMAQSBrIgQkACAEQQhqIgMQuw9BJBD2OSICQZy1yQA2AgAgAiABNgIgIAIgADYC +HCACIAMpAgA3AgQgAkEMaiADQQhqKQIANwIAIAJBFGogA0EQaikCADcCACAEQSBqJAAgAgsvAQF/ +IAAgAiABayICEPU7IAAoAggiAyAAKAIEaiABIAIQzU8aIAAgAiADajYCCAs4AQF/IAEvAeIBIgNF +BEBBpMPJAEEZQcDDyQAQ5isACyAAIAI2AgQgACABNgIAIAAgA0EBazYCCAs4AQF/IAEvAcoRIgNF +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 +ADYCDCADQQxqIAEgAhCPHiADQRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQ +kB4gA0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACEJEeIANBEGokAAsqAQF/ +IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhCSHiADQRBqJAALKgEBfyMAQRBrIgMkACADIAAo +AgA2AgwgA0EMaiABIAIQnh0gA0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASAC +EJMeIANBEGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhCfHSADQRBqJAALKgEB +fyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQlB4gA0EQaiQACyoBAX8jAEEQayIDJAAgAyAA +KAIANgIMIANBDGogASACEJkgIANBEGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEg +AhCaICADQRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQlR4gA0EQaiQACyoB +AX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACEK0TIANBEGokAAsqAQF/IwBBEGsiAyQAIAMg +ACgCADYCDCADQQxqIAEgAhCbICADQRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiAB +IAIQoB0gA0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACEIYfIANBEGokAAsq +AQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhCWHiADQRBqJAALKgEBfyMAQRBrIgMkACAD +IAAoAgA2AgwgA0EMaiABIAIQnCAgA0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGog +ASACEJ0gIANBEGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhCXHiADQRBqJAAL +KgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQoR0gA0EQaiQACyoBAX8jAEEQayIDJAAg +AyAAKAIANgIMIANBDGogASACEIcfIANBEGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxq +IAEgAhCYHiADQRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQmR4gA0EQaiQA +CyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACEJoeIANBEGokAAsqAQF/IwBBEGsiAyQA +IAMgACgCADYCDCADQQxqIAEgAhCbHiADQRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EM +aiABIAIQnB4gA0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACEJ0eIANBEGok +AAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhCiHSADQRBqJAALKgEBfyMAQRBrIgMk +ACADIAAoAgA2AgwgA0EMaiABIAIQniAgA0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANB +DGogASACEJ8gIANBEGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhCIHyADQRBq +JAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQox0gA0EQaiQACyoBAX8jAEEQayID +JAAgAyAAKAIANgIMIANBDGogASACEKAgIANBEGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCAD +QQxqIAEgAhCkHSADQRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQiR8gA0EQ +aiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACEKUdIANBEGokAAsqAQF/IwBBEGsi +AyQAIAMgACgCADYCDCADQQxqIAEgAhChICADQRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2Agwg +A0EMaiABIAIQph0gA0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACEK4TIANB +EGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhCeHiADQRBqJAALKgEBfyMAQRBr +IgMkACADIAAoAgA2AgwgA0EMaiABIAIQnx4gA0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIM +IANBDGogASACEIofIANBEGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhCiICAD +QRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQpx0gA0EQaiQACyoBAX8jAEEQ +ayIDJAAgAyAAKAIANgIMIANBDGogASACEIsfIANBEGokAAsqAQF/IwBBEGsiAyQAIAMgACgCADYC +DCADQQxqIAEgAhCoHSADQRBqJAALKgEBfyMAQRBrIgMkACADIAAoAgA2AgwgA0EMaiABIAIQoB4g +A0EQaiQACyoBAX8jAEEQayIDJAAgAyAAKAIANgIMIANBDGogASACEPgPIANBEGokAAsqAQF/IwBB +EGsiAyQAIAMgACgCADYCDCADQQxqIAEgAhChHiADQRBqJAALLgAgAiADQan5xgBBHhCAPEUEQCAA +IAFBASAEEPIUDwsgACABNgIEIABBAToAAAsJACAAQQQQqlMLJwECfyMAQRBrIgIkACACQQRqIgMg +ARCJUiAAIAMQ9hogAkEQaiQACxoAIAEEf0Hhk9sALQAAGiABIAAQq0gFIAALCy4AIAIgA0HXq8gA +QR4QgDxFBEAgACABQQEgBBDTFQ8LIAAgATYCBCAAQQE6AAALLQAgASgCAEUEQCABQQA2AgAgACAB +KQIENwIAIAEgAikCADcCBA8LIAMQ/ScACy4AIAIgA0G+3ckAQR4QgDxFBEAgACABQQFBAxD3FA8L +IAAgATYCBCAAQQE6AAALJQAgAEHQAWoQ/T8gACkDAFAEQCAAQQhqENwjDwsgAEEIahDnNws0AQF/ +QRxBBBCnLiIAQQA2AhggAEEANgIQIABBADoADCAAQQA2AgggAEKBgICAEDcCACAACzIBAX9BGEEE +EKcuIgFCgYCAgBA3AgAgASAAKQIANwIIIAFBEGogAEEIaikCADcCACABCzIBAX9BFEEEEKcuIgFC +gYCAgBA3AgAgASAAKQIANwIIIAFBEGogAEEIaigCADYCACABCykBAn8jAEHgAGsiAiQAIAJBCGoi +AyABEOQKIAAgAxDgBSACQeAAaiQACy4AIAIgA0GAqswAQR4QgDxFBEAgACABQQEgBBD5FA8LIAAg +ATYCBCAAQQE6AAALKgEBfyMAQRBrIgIkACACIAE6AAwgAiAANgIIIAJBCGoQqj4gAkEQaiQAC2cB +A38gACgCAEE0aiIBIAEoAgAiAUEBazYCACABQQFGBEAjAEEQayIBJAAgAUEIaiAAKAIAIgBBEGoQ +6i0gAS0ADCECIAEoAggiA0EcakEBOgAAIABBCGogAyACEPgJIAFBEGokAAsLYAAgASkDAFAEQCAA +IAFBCGpB0AAQzU8aDwsgAEECOgA0AkAgASkDAFAEQCABQQhqELE3IAFBIGoQ2SQgAUHQAGoQrjkM +AQsgAUEIahCBQCABQRhqEJdFIAFBMGoQ2SQLCysAIAAoAiggAEEsaigCACAAQcgAaigCACIAQSxq +KAIAIABBMGooAgAQgDwLKgEBfyAAKAIAQdgAaigCACIAIAAoAgAiAUEBajYCACABQQBIBEAACyAA +CyoBAX8jAEEQayICJAAgAiABOgAMIAIgADYCCCACQQhqEP0dIAJBEGokAAsfACAAEOYOIAAoAgQE +QCAAKAIAEJgECyAAQQxqEIYuCywBAX8jAEEQayIDJAAgAyACOQMIIAAgASADQQhqQbC50QAQ7Qog +A0EQaiQACywBAX8jAEEQayIDJAAgAyACOQMIIAAgASADQQhqQbC50QAQghQgA0EQaiQACywBAX8j +AEEQayIDJAAgAyACNwMIIAAgASADQQhqQcC50QAQghQgA0EQaiQACywBAX8jAEEQayIDJAAgAyAC +NwMIIAAgASADQQhqQcC50QAQ7QogA0EQaiQACywBAX8jAEEQayIDJAAgAyACNwMIIAAgASADQQhq +QeC50QAQghQgA0EQaiQACywBAX8jAEEQayIDJAAgAyACNwMIIAAgASADQQhqQeC50QAQ7QogA0EQ +aiQACywBAX8jAEEQayIDJAAgAyACOgAPIAAgASADQQ9qQfC50QAQghQgA0EQaiQACywBAX8jAEEQ +ayIDJAAgAyACOgAPIAAgASADQQ9qQfC50QAQ7QogA0EQaiQACw0AIAAgASACQQQQ6VQLLAEBfyMA +QRBrIgMkACADIAI5AwggACABIANBCGpBzNHRABCABCADQRBqJAALLAEBfyMAQRBrIgMkACADIAI3 +AwggACABIANBCGpB3NHRABCABCADQRBqJAALLAEBfyMAQRBrIgMkACADIAI3AwggACABIANBCGpB +7NHRABCABCADQRBqJAALLAEBfyMAQRBrIgMkACADIAI6AA8gACABIANBD2pB/NHRABCABCADQRBq +JAALjwEBBH8jAEEQayIDJAAjAEHgAGsiAiQAIAJBDGoiBCABEJoQIAQgAUHRAGpBIEEIIAEtAFAb +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 +AgwEQCAAQQxqEPo+CyAAEIg/CwsqAQF/IAEoAgAiARDnFiICRQRAIAAgARCUHQ8LIABBBDYCACAA +IAI2AgQLKgEBfyABKAIAIgEQ5xYiAkUEQCAAIAEQ/xEPCyAAQQE2AgAgACACNgIEC+QHAgh/AX4g +ASgCACIDEOcWIgFFBEAgACEBIwBB4AFrIgIkACACQcABaiADIgAQvBYCQAJAAn8gAi0AwAFFBEAg +Ai0AwQENAiACQQU2AiAgACACQSBqEIAxDAELIAIoAsQBCyEAIAFBATYCACABIAA2AgQMAQsgAQJ/ +AkAgAi0AwgFB+wBHBEAgACACQd8BakGUqcAAEIYFIQMMAQsgACAALQAkQQFrIgM6ACQgA0H/AXEE +QCAAEL5BIAJBAToAECACIAA2AgwgAkEANgIcIAJBADYCFCACQSxqIQMgAkHEAWohBSACQTBqIQYC +fwJAAkADQAJAIAJBkAFqIAJBDGoQywYCQAJAIAIoApABIgRBgICAgHhrDgIBAgALIAIgAikClAEi +CjcCoAEgAiAENgKcASACQagBaiACQQxqEKY5IAItAKgBQQZGBEAgAigCrAEhAyACQZwBahCIPwwE +CyAFIAIpA6gBNwIAIAVBEGogAkG4AWopAwA3AgAgBUEIaiACQbABaikDADcCACACQdAAaiACQcgB +aikCADcDACACQdgAaiACQdABaikCADcDACACQeAAaiACQdgBaigCADYCACACIAIpAsABNwNIIApC +IIinIQcgCqchCAsgAyACKQNINwIAIANBGGogAkHgAGooAgA2AgAgA0EQaiACQdgAaikDADcCACAD +QQhqIAJB0ABqKQMANwIAIAIgBzYCKCACIAg2AiQgAiAENgIgIARBgICAgHhGDQMgAkHwAGogAkEo +aigCADYCACACQYABaiAGQQhqKQMANwMAIAJBiAFqIAZBEGopAwA3AwAgAiACKQMgNwNoIAIgBikD +ADcDeCACQcABaiIEIAJBFGogAkHoAGogAkH4AGoQ1AwgBBDjQgwBCwsgAigClAEhAwsgAkEUahDM +GUEAIQRBAQwBCyACQSBqEIA+IAIoAhQhAyACKQIYIQpBASEEQQALIQZBASEHIAAgAC0AJEEBajoA +JCACIAAQjRMiBTYCMCACIAo3AiggAiADNgIkIAIgBjYCICACQSRqIQkCQAJAAkAgBkUEQAJAIAUE +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 +idoAEPBTCwoAIAAgARDETwALVQECfwJ/IwBBEGsiASQAIAFBCGpBBEE0EME4IAEoAggiAgRAIAFB +EGokACACDAELQQRBNBDETwALIgFBADsBMiABQQA2AgAgAEEANgIEIAAgATYCAAtZAQJ/An8jAEEQ +ayIBJAAgAUEIakEIQcADEME4IAEoAggiAgRAIAFBEGokACACDAELQQhBwAMQxE8ACyIBQQA7Ab4D +IAFBADYCuAMgAEEANgIEIAAgATYCAAtXAQJ/An8jAEEQayIBJAAgAUEIakEEQeAAEME4IAEoAggi +AgRAIAFBEGokACACDAELQQRB4AAQxE8ACyIBQQA7AV4gAUEANgJYIABBADYCBCAAIAE2AgALJAEB +fxCxLiIBQQA7AeIBIAFBADYCWCAAQQA2AgQgACABNgIACyQBAX8Qsi4iAUEAOwG2ASABQQA2AgAg +AEEANgIEIAAgATYCAAsbACAAKQMAQgJRBEAgAEEIahClOw8LIAAQsDsLGwAgACkDAEICUgRAIAAQ +ujsPCyAAQQhqELk/CxsAIAApAwBCAlIEQCAAELU7DwsgAEEIahC5PwsbACAAKQMAQgJRBEAgAEEI +ahC9Ow8LIAAQuT8LGwAgACkDAEICUQRAIABBCGoQqTsPCyAAELk/CxsAIAApAwBCAlIEQCAAELs7 +DwsgAEEIahC5PwsbACAAKQMAQgJRBEAgAEEIahCoOw8LIAAQuT8LGwAgACkDAEICUQRAIABBCGoQ +tjsPCyAAELk/CxsAIAApAwBCAlEEQCAAQQhqEK87DwsgABC5PwsbACAAKQMAQgJSBEAgABCrOw8L +IABBCGoQuT8LGwAgACkDAEICUQRAIABBCGoQpDsPCyAAELk/CxsAIAApAwBCAlIEQCAAELM7Dwsg +AEEIahC5PwsbACAAKQMAQgJRBEAgAEEIahCuOw8LIAAQuT8LGwAgACkDAEICUQRAIABBCGoQtzsP +CyAAELk/CxsAIAApAwBCAlEEQCAAQQhqEKw7DwsgABC5PwsbACAAKQMAQgJRBEAgAEEIahCxOw8L +IAAQuT8LGwAgACkDAEICUgRAIAAQvDsPCyAAQQhqELk/CxsAIAApAwBCAlIEQCAAEL47DwsgAEEI +ahC5PwsbACAAKQMAQgJRBEAgAEEIahCwNw8LIAAQuTsLGwAgACkDAEICUgRAIAAQvzsPCyAAQQhq +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 +KAIAKAIQEQIACxcBAX8Q+0EhASAAQQA2AgQgACABNgIACxgBAX8QsS4iAEEAOwHiASAAQQA2Algg +AAsXAQF/EP1BIQEgAEEANgIEIAAgATYCAAsIAEHoARDDVAsZAQF/ELQuIgBBADsB5gIgAEEANgLg +AiAACxcBAX8QgEIhASAAQQA2AgQgACABNgIACwgAQZACELxUCwgAQfgGEMFUCxcBAX8Qg0IhASAA +QQA2AgQgACABNgIACwgAQYwBELJUCxcBAX8QhUIhASAAQQA2AgQgACABNgIACxkBAX8Qsi4iAEEA +OwG2ASAAQQA2ArABIAALCABBlAMQxFQLCABBkBgQvlQLGAEBfxC0LiIAQQA7AeYCIABBADYCACAA +CwgAQewAELhUCxgBAX8QsC4iAEEAOwHiASAAQQA2AlggAAsZAQF/EK8uIgBBADsBtgEgAEEANgKw +ASAACwgAQbwBELJUCwgAQcACELxUCwgAQZgCEMNUCwgAQagHEMFUCxkBAX8Qsy4iAEEAOwHmAiAA +QQA2AuACIAALCABBnAEQuFQLCABBwBgQvlQLCABBxAMQxFQLGAEBfxCzLiIAQQA7AeYCIABBADYC +ACAACxEAIAAoAgAiABC/OyAAEJgECxEAIAAoAgAiABC+OyAAEJgECxEAIAAoAgAiABCsOyAAEJgE +CxEAIAAoAgAiABDCOyAAEJgECxEAIAAoAgAiABC8OyAAEJgECxEAIAAoAgAiABCwNyAAEJgECxEA +IAAoAgAiABC2OyAAEJgECxEAIAAoAgAiABDQPyAAEJgECxEAIAAoAgAiABCxOyAAEJgECxEAIAAo +AgAiABC9OyAAEJgECxEAIAAoAgAiABCuOyAAEJgECxIAIAAtAAxBAkcEQCAAEMgZCwsRACAAKAIA +IgAQpTsgABCYBAsRACAAKAIAIgAQtzsgABCYBAsRACAAKAIAIgAQtTsgABCYBAsRACAAKAIAIgAQ +qTsgABCYBAsRACAAKAIAIgAQqzsgABCYBAsRACAAKAIAIgAQpDsgABCYBAsRACAAKAIAIgAQuzsg +ABCYBAsRACAAKAIAIgAQujsgABCYBAsRACAAKAIAIgAQqDsgABCYBAsRACAAKAIAIgAQszsgABCY +BAsRACAAKAIAIgAQrzsgABCYBAsSACAAKQMAQgJSBEAgABCtQgsLEgAgAEEgahCQRSAAQRBqELw6 +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 +eEYEQEEAQfiHwABBrIbAABDeFyEADBMLIAIoApQBIQAgAiACKAKYASIINgKIAiACIAA2AoQCIAIg +BDYCgAIgAkGwAmogAigC6AEiAxC8FiACLQCwAg0FIAItALECRQRAIAJBAjYCkAEgAyACQZABahCA +MSEADBILAkACQCACLQCyAiIFQSxHBEAgBUHdAEYNByACLQDsAQ0BIAJBBzYCkAEgAyACQZABahCA +MSEADBQLIAItAOwBDQAgAxC+QSACQZABaiADELwWIAItAJABDRIgAi0AkQEEQCACLQCSASEFDAIL +IAJBBTYCkAEgAyACQZABahCAMSEADBMLIAJBADoA7AELIAVB/wFxQd0ARgRAIAJBFTYCkAEgAyAC +QZABahCAMSEADBILIAJBkAFqIAMQowogAigCkAEiA0GAgICAeEYNECACIAIpApQBNwKUAiACIAM2 +ApACIAJBkAFqIAJB6AFqEPYHIAIoApABIgNBgYCAgHhGBEAgAigClAEhAAwQCyADQYCAgIB4RgRA +QQJB+IfAAEGshsAAEN4XIQAMEAsgAigClAEhBSACIAIoApgBNgKoAiACIAU2AqQCIAIgAzYCoAIg +AkH0AWogAigC6AEiAxC8FiACLQD0AQ0DIAItAPUBRQRAIAJBAjYCkAEgAyACQZABahCAMSEADA8L +AkACQCACLQD2ASIFQSxHBEAgBUHdAEYNBSACLQDsAQ0BIAJBBzYCkAEgAyACQZABahCAMSEADBEL +IAItAOwBDQAgAxC+QSACQZABaiADELwWIAItAJABDQ8gAi0AkQEEQCACLQCSASEFDAILIAJBBTYC +kAEgAyACQZABahCAMSEADBALIAJBADoA7AELIAVB/wFxQd0ARgRAIAJBFTYCkAEgAyACQZABahCA +MSEADA8LIAJBkAFqIAMQtRAgAigCkAEiA0GAgICAeEYNDSACIAIpApQBNwK0AiACIAM2ArACIAJB +kAFqIAJB6AFqELkIAn8gAi0AkAFFBEAgAi0AkQEiBUECRgRAQQRB+IfAAEGshsAAEN4XDAILIAJB +2ABqIAJBmAJqKAIANgIAIAJByABqIAJBqAJqKAIANgIAIAJBOGogAkG4AmooAgA2AgAgAiACKQKQ +AjcDUCACIAIpAqACNwNAIAIgAikCsAI3AzAMFQsgAigClAELIQAgAkGwAmoQiD8MDgsgAkEYNgKQ +ASABIAJBkAFqEIAxDAsLIAEgAS0AJEEBayIAOgAkIABB/wFxRQ0JIAEQvkEgAkEBOgDMASACIAE2 +AsgBIAJBgICAgHg2AtABIAJBgICAgHg2AtwBIAJBgICAgHg2AugBIAJBgICAgHg2AvQBIAEhAEEC +IQkDQCACQbACaiAAELwWAn8CQCACLQCwAg0AAn8gAi0AsQJFBEAgAkEDNgKQASAAIAJBkAFqEIAx +DAELAkACQAJAAkACQAJAAkAgAi0AsgIiA0EsRwRAIANB/QBHDQFBBiEEQQAMCgsgAi0AzAENASAA +EL5BIAJBkAFqIAAQvBYgAi0AkAEEQCACKAKUAQwICyACLQCRAUUNAyACLQCSASEDDAILIAItAMwB +RQ0FCyACQQA6AMwBCyADQSJGDQEgA0H9AEYNAiACQRE2ApABDAwLIAJBBTYCkAEMCwsgABC+QSAA +QQA2AgggAkGQAWogAEEMaiAAELsIIAIoApQBIQAgAigCkAFBAkYEQCAAIQVBAQwFCyACQbACaiAA +IAIoApgBENwXIAItALACDQMgAi0AsQIhBEEADAQLIAJBFTYCkAEMCQsgAkEINgKQASAAIAJBkAFq +EIAxCyEFQQEMAQsgAigCtAIhBUEBC0EBIQMEQCAFIQAMCAsCQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAIARB/wFxDgcAAQIDBAYFBgsgAigC0AFBgICAgHhHBEBBxIfAAEEDEPEfIQAMFQsgAkGQ +AWogAkHIAWoQnTkgAigClAEhACACKAKQASIGQYCAgIB4Rg0UIAIoApgBIQMgAkHQAWoQ+0AgAiAD +NgLYASACIAA2AtQBIAIgBjYC0AEMDAsgAigC3AFBgICAgHhGDQpBx4fAAEEHEPEfIQAMEwsgAigC +6AFBgICAgHhHBEBBzofAAEEDEPEfIQAMEwsgAkGQAWogAkHIAWoQnTkgAigClAEhACACKAKQASIG +QYCAgIB4Rg0SIAIoApgBIQMgAkHoAWoQ+0AgAiADNgLwASACIAA2AuwBIAIgBjYC6AEMCgsgAigC +9AFBgICAgHhGDQdB0YfAAEEBEPEfIQAMEQsgCUECRwRAQdKHwABBAxDxHyEADBELIAJBkAFqIAJB +yAFqEJw5IAItAJABRQ0FIAIoApQBIQAMEAsCQCACKALQAUGAgICAeEciCEUEQCACQZABakHEh8AA +QQMQj00gAigCkAEiAEGAgICAeEcEQCACIAIpApQBNwKEAiACIAA2AoACDAILIAIoApQBDBALIAJB +iAJqIAJB2AFqKAIANgIAIAIgAikC0AE3A4ACCwJ/AkACQAJAAkACQAJAAkACQAJAAkAgAigC3AFB +gICAgHhGIgoEQCACQZABakHHh8AAQQcQj00gAigCkAEiAEGAgICAeEYNAiACIAIpApQBNwKUAiAC +IAA2ApACDAELIAJBmAJqIAJB5AFqKAIANgIAIAIgAikC3AE3A5ACCyACKALoAUGAgICAeEYiBkUN +ASACQZABakHOh8AAQQMQj00gAigCkAEiAEGAgICAeEYNAyACIAIpApQBNwKkAiACIAA2AqACDAIL +IAIoApQBIQBBASEGDAwLIAJBqAJqIAJB8AFqKAIANgIAIAIgAikC6AE3A6ACCyACKAL0AUGAgICA +eEYiA0UNASACQZABakHRh8AAQQEQj00gAigCkAEiAEGAgICAeEYNAyACIAIpApQBNwK0AiACIAA2 +ArACDAILIAIoApQBIQAMCAsgAkG4AmogAkH8AWooAgA2AgAgAiACKQL0ATcDsAILIAlBAkcNAiAC +QZABakHSh8AAQQMQ/k4gAi0AkAENASACLQCRAQwDCyACKAKUASEADAQLIAIoApQBIQAgAkGwAmoQ +iD8MAwsgCUEBcQshBSACQYgBaiACQZgCaigCADYCACACQfgAaiACQagCaigCADYCACACQegAaiAC +QbgCaigCADYCACACIAIpA5ACNwOAASACIAIpA6ACNwNwIAIgAikDsAI3A2AgAigCiAIhCCACKAKE +AiEAIAIoAoACIQQMEQtBASEGQQEhCiACQcgBahCsPyIARQ0GDA8LIAJBoAJqEIg/CyACQZACahCt +SwsgAkGAAmoQiD8MDAsgAi0AkQEhCQwCCyACKALIASIGEOcWIgANCSACQZABaiAGELUQIAIoApQB +IQAgAigCkAEiBkGAgICAeEYNCSACKAKYASEDIAIoAvQBQYCAgIB4RwRAIAJB9AFqEIg/CyACIAM2 +AvwBIAIgADYC+AEgAiAGNgL0AQwBCyACKALIASIGEOcWIgANCCACQZABaiAGEKMKIAIoApQBIQAg +AigCkAEiBkGAgICAeEYNCCACKAKYASEDIAIoAtwBQYCAgIB4RwRAIAJB3AFqEK1LCyACIAM2AuQB +IAIgADYC4AEgAiAGNgLcAQsgAigCyAEhAAwACwALQQNB+IfAAEGshsAAEN4XIQAMCwsgAigC+AEh +AAwKC0EBQfiHwABBrIbAABDeFyEADAwLIAIoArQCIQAMCwsgACACQZABahCAMQshAEEBIQMLQQEh +BkEBIQoLAkAgA0UNACACKAL0AUGAgICAeEYNACACQfQBahCIPwsgAigC6AFBgICAgHhHIAZxBEAg +AkHoAWoQiD8LIAIoAtwBQYCAgIB4RyAKcQRAIAJB3AFqEK1LC0GAgICAeCEEIAggAigC0AFBgICA +gHhGckUEQCACQdABahCIPwsLIAEgAS0AJEEBajoAJCABEI0TIQMgAkGkAWogAkGIAWooAgA2AgAg +AkGwAWogAkH4AGooAgA2AgAgAkG8AWogAkHoAGooAgA2AgAgAiAINgKYASACIAA2ApQBIAIgAzYC +xAEgAiAFOgDAASACIAIpA4ABNwKcASACIAIpA3A3AqgBIAIgAikDYDcCtAEgAiAENgKQAQJAIARB +gICAgHhHBEAgAw0BIAJBBGogAkGYAWpBLBDNTxoMDAsgA0UNCiACQcQBahDfHQwKCyACQZABahDD +O0GAgICAeCEEIAMhAAwKCyACQRg2ApABIAEgAkGQAWoQgDELIQAgB0GAgICAeDYCACAHIAA2AgQM +CgsgAigClAEhAAsgAkGgAmoQiD8LIAJBkAJqEK1LDAELIAIoApQBIQALIAJBgAJqEIg/C0GAgICA +eCEECyABIAEtACRBAWo6ACQgARCfDCEDIAJBpAFqIAJB2ABqKAIANgIAIAJBsAFqIAJByABqKAIA +NgIAIAJBvAFqIAJBOGooAgA2AgAgAiAINgKYASACIAA2ApQBIAIgAzYCxAEgAiAFOgDAASACIAIp +A1A3ApwBIAIgAikDQDcCqAEgAiACKQMwNwK0ASACIAQ2ApABAkAgBEGAgICAeEYEQCADDQEMAgsg +A0UEQCACQQRqIAJBmAFqQSwQzU8aDAMLIAJBkAFqEMM7QYCAgIB4IQQgAyEADAILIAJBxAFqEN8d +C0GAgICAeCEECyAEQYCAgIB4Rg0AIAdBCGogAkEEakEsEM1PGiAHIAA2AgQgByAENgIADAELIAEg +ABC8UiEAIAdBgICAgHg2AgAgByAANgIECyACQcACaiQAC7gOAQl/IAAhBiMAQeAAayICJAAgAkEI +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 +xQAgAygCLBEFAAsVACACIAEgAEG86cUAIAMoAiwRBQALFQAgAiABIABBzOnFACADKAIsEQUACxUA +IAIgASAAQdzpxQAgAygCLBEFAAsVACACIAEgAEHs6cUAIAMoAiwRBQALFQAgAiABIABB/OnFACAD +KAIsEQUACxUAIAIgASAAQYzqxQAgAygCLBEFAAsVACACIAEgAEGc6sUAIAMoAiwRBQALFQAgAiAB +IABBrOrFACADKAIsEQUACxUAIAIgASAAQbzqxQAgAygCLBEFAAsVACACIAEgAEHM6sUAIAMoAiwR +BQALFQAgAiABIABB3OrFACADKAIsEQUACxUAIAIgASAAQezqxQAgAygCLBEFAAsVACACIAEgAEH8 +6sUAIAMoAiwRBQALFQAgAiABIABBgOjFACADKAIsEQUACxUAIAIgASAAQYzrxQAgAygCLBEFAAsV +ACACIAEgAEGc68UAIAMoAiwRBQALFQAgAiABIABBrOvFACADKAIsEQUACxUAIAIgASAAQbzrxQAg +AygCLBEFAAsVACACIAEgAEHM68UAIAMoAiwRBQALFQAgAiABIABB3OvFACADKAIsEQUACxUAIAIg +ASAAQezrxQAgAygCLBEFAAsVACACIAEgAEH868UAIAMoAiwRBQALFQAgAiABIABBjOzFACADKAIs +EQUACxUAIAIgASAAQZzsxQAgAygCLBEFAAsVACACIAEgAEGs7MUAIAMoAiwRBQALFQAgAiABIABB +vOzFACADKAIsEQUACxUAIAIgASAAQczsxQAgAygCLBEFAAsVACACIAEgAEHc7MUAIAMoAiwRBQAL +FQAgAiABIABB7OzFACADKAIsEQUACxUAIAIgASAAQfzsxQAgAygCLBEFAAsVACACIAEgAEGM7cUA +IAMoAiwRBQALFQAgAiABIABB/NXFACADKAIsEQUACxUAIAIgASAAQZztxQAgAygCLBEFAAsVACAC +IAEgAEGs7cUAIAMoAiwRBQALFQAgAiABIABBvO3FACADKAIsEQUACxUAIAIgASAAQcztxQAgAygC +LBEFAAsVACACIAEgAEHc7cUAIAMoAiwRBQALFQAgAiABIABB7O3FACADKAIsEQUACxUAIAIgASAA +QfztxQAgAygCLBEFAAsVACACIAEgAEGM7sUAIAMoAiwRBQALFQAgAiABIABBnO7FACADKAIsEQUA +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 +EJFNIAIoArgBIgRFDQIgAigCvAEhDgsgAiAONgKYAyACIAQ2ApQDIBRQBEAgAkG4AWpBqYzAAEEQ +EJJNIAIoArgBDQYgAikDwAEhEwsgEkICUg0DQgAhEiACQcEBakIANwAAIAJCADcCvAFBAAwECyAC +KAK8ASEDQQEMBgsgAigCvAEhAwwEC0EBIQ0gAkGYAmoQrD8iA0UNBwwOCyACQcgBaiAHQRBqKAIA +NgIAIAJBwAFqIAdBCGopAgA3AwAgAiAHKQIANwO4ASACKALsAiELIAIoAugCCyEFIAJBmAFqIAJB +gANqKAIANgIAIAJBkAFqIAJB+AJqKQMANwMAIAJBqAFqIAJBwAFqKQMANwMAIAJBsAFqIAJByAFq +KAIANgIAIAIgAikD8AI3A4gBIAIgAikDuAE3A6ABDA0LIAIoArwBIQMgAkGUA2oQ+j4LIAJBjANq +EPo+IApFCyEEIAhFIQ0gAkHwAmoQtUcMCQsgAikDwAEhE0IBIRQMAQtBASENDAcLIAIoApgCIQMM +AAsACyACKAK8ASEADAgLIAIoArwBIQAMCAsgAigCvAEhAAwIC0EAIQVBASEEIAMgAkG4AWoQgDEL +IQNBASENCyACQcgCahDKQiAKRSAERXJFBEAgAkHAAmoQ+j4LIA0gCEEAR3EEQCACQbgCahD6Pgsg +BSACKAKgAkGBgICAeEZyRQRAIAJBoAJqELVHC0ICIRIgAyEACyABIAEtACRBAWo6ACQgARCNEyED +IAJBzAFqIAJBqAFqKQMANwIAIAJB1AFqIAJBsAFqKAIANgIAIAJBgAJqIAJBkAFqKQMANwMAIAJB +iAJqIAJBmAFqKAIANgIAIAIgADYCwAEgAiATNwPwASACIA42AuwBIAIgBDYC6AEgAiAMNgLkASAC +IAY2AuABIAIgCzYC3AEgAiAFNgLYASACIAIpA6ABNwLEASACIAIpA4gBNwP4ASACIBI3A7gBIAIg +AzYCkAICQCASQgJSBEAgAw0BIAJBDGogAkHEAWpBzAAQzU8aDAkLIANFDQcgAkGQAmoQ3x0MBwsg +AkG4AWoQwjtCAiESIAMhAAwHCyACQRg2ArgBIAEgAkG4AWoQgDELIQAgCUICNwMAIAkgADYCCAwH +CyACQcACahD6PgsgAkHwAmoQtUcLQgIhEgsgASABLQAkQQFqOgAkIAEQnwwhAyACQcwBaiACQfgA +aikDADcCACACQdQBaiACQYABaigCADYCACACQYACaiACQeAAaikDADcDACACQYgCaiACQegAaigC +ADYCACACIAA2AsABIAIgBzYC9AEgAiAMNgLwASACIAs2AuwBIAIgBDYC6AEgAiAFNgLkASACIAY2 +AuABIAIgCjYC3AEgAiAINgLYASACIAIpA3A3AsQBIAIgAikDWDcD+AEgAiASNwO4ASACIAM2ApAC +AkAgEkICUQRAIAMNAQwCCyADRQRAIAJBDGogAkHEAWpBzAAQzU8aDAMLIAJBuAFqEMI7QgIhEiAD +IQAMAgsgAkGQAmoQ3x0LQgIhEgsgEkICUQ0AIAlBDGogAkEMakHMABDNTxogCSAANgIIIAkgEjcD +AAwBCyABIAAQvFIhACAJQgI3AwAgCSAANgIICyACQaADaiQAC/wPAg1/An4gACEFIwBBkAFrIgIk +ACACQQhqIAEQvBYCQAJAAkACQAJAAkACQAJ/AkACQAJAAkACfyACLQAIRQRAIAItAAlFBEAgAkEF +NgI4IAEgAkE4ahCAMQwCCyACLQAKIgBB2wBGDQIgAEH7AEYNAyABIAJBjwFqQfS+wAAQhgUhAAwM +CyACKAIMCyEAIAVCAjcDACAFIAA2AggMCwsgASABLQAkQQFrIgA6ACQgAEH/AXEEQCABEL5BIAJB +AToAbCACIAE2AmggAkE4aiACQegAahCfCCACKQM4Ig9CA1IEQCAPQgJRBEBBAEH0kMAAQayGwAAQ +3hchAEICIQ8MCQsgAigCRCEIIAIoAkAhACACQThqIAJB6ABqEK4IIAIoAjgiBEECRgRAIAIoAjwh +AAwICyAEQQFHBEBBAUH0kMAAQayGwAAQ3hchAAwICyACKAI8IQYgAiACKAJAIgc2AnQgAiAGNgJw +IAJB/ABqIAIoAmgiBBC8FgJ+AkACQCACLQB8RQRAIAItAH1FBEAgAkECNgI4IAQgAkE4ahCAMSEA +DAsLAkAgAi0AfiIDQSxHBEAgA0HdAEYNAyACLQBsDQEgAkEHNgI4IAQgAkE4ahCAMSEADAwLIAIt +AGwNACAEEL5BIAJBOGogBBC8FiACLQA4BEAgAigCPCEADAwLIAItADlFDQggAi0AOiEDCyADQf8B +cUHdAEYEQCACQRU2AjggBCACQThqEIAxIQAMCwsgAkE4aiAEEPEMIAIoAjghAyACLQBEIglBAkcN +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 +IAEhAAwBCyACKAI0BEAgAkE0ahD/RQsgAiABNgI0DAELCyAGDQEgAigCNEUNASACQTRqEP9FDAEL +IAIoAiQhAAwEC0EAIQELIAUgBS0AJEEBajoAJCACIAUQjRMiAzYCKCACIAA2AiQgAiABNgIgIAEE +QCADRQ0EIAJBIGoQvExBACEBIAMhAAwEC0EAIQEgA0UNAyACQShqEN8dDAMLIAJBGDYCICAFIAJB +IGoQgDELIQAgCEEANgIAIAggADYCBAwDCyAFIAUtACRBAWo6ACQgAiAFEJ8MIgM2AiggAiAANgIk +IAIgATYCICABBEAgA0UNASACQSBqELxMQQAhASADIQAMAQtBACEBIANFDQAgAkEoahDfHQsgAUUN +ACAIIAA2AgQgCCABNgIADAELIAUgABC8UiEAIAhBADYCACAIIAA2AgQLIAJBQGskAAvEIQIOfwF+ +IwBBgAVrIgIkACACIAEQvBYCQAJAIAAiCAJ/AkACQAJAAkACfyACLQAARQRAIAItAAFFBEAgAkEF +NgKoAiABIAJBqAJqEIAxDAILIAItAAIiAEHbAEYNAiAAQfsARg0DIAEgAkH/BGpBqJ3HABCGBSED +DAULIAIoAgQLIQAgCEEBOgAAIAggADYCBAwGCyABIAEtACRBAWsiADoAJAJAAkAgAEH/AXEEQCAB +EL5BIAJBAToAnAQgAiABNgKYBCACQagCaiACQZgEahD7BgJ/AkACQCACAn8gAi0AqAJFBEAgAkHo +BGoiACACQbkCaikAADcDACACQfAEaiIEIAJBwQJqKQAANwMAIAJB+ARqIgUgAkHJAmotAAA6AAAg +AiACQbECaikAADcD4AQgAi0AqQJBAXENAkEAQcyGxwBB/ILHABDeFwwBCyACKAKsAgs2AMEBDAEL +IAJBsAJqLQAAIQYgAkGsAmooAgAhCiACLwGqAiEDIAJB0ARqIAUtAAA6AAAgAkHIBGogBCkDADcD +ACACQcAEaiAAKQMANwMAIAIgAikD4AQ3A7gEIAJBqAJqIAJBmARqEPsGIAICfwJAAkAgAgJ/IAIt +AKgCBEAgAigCrAIMAQsgAkHoBGoiACACQbgCaikCADcDACACQfAEaiIEIAJBwAJqKQIANwMAIAJB ++ARqIgUgAkHIAmovAQA7AQAgAiACQbACaikCADcD4AQgAi0AqQJBAXEEQCACQawCaigCACEHIAIv +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 +AwAgAkGABGogBEEIaikCADcDACACQYgEaiAQNwMAIAJBkARqIARBGGotAAA6AAAgAiAKLwAAOwGU +BCACIAQpAgA3A/gDIAIoAqwCIQ1BASEJDAYLAn8gBgRAIAJBtgRqIAJB1gNqLQAAOgAAIAJBoARq +IAJBwANqKQMANwMAIAJBqARqIAJByANqKQMANwMAIAJBsARqIAJB0ANqLQAAOgAAIAIgAi8B1AM7 +AbQEIAIgAikDuAM3A5gEIAsMAQsgAkGoAmpBiIbHAEEMELpOIAItAKgCDQIgAkG2BGogAi0AqwI6 +AAAgAkHwBGogAkHAAmopAgAiEDcDACACQaAEaiACQbgCaikCADcDACACQagEaiAQNwMAIAJBsARq +IAJByAJqLQAAOgAAIAIgAi8AqQI7AbQEIAIgAkGwAmopAgA3A5gEIAJBrAJqKAIACyEAAkAgB0EB +cQRAIAJBqAJqQZSGxwBBCBC6TiACLQCoAg0DIAJB2gRqIAItAKsCOgAAIAJB8ARqIAJBwAJqKQIA +IhA3AwAgAkHABGogAkG4AmopAgA3AwAgAkHIBGogEDcDACACQdAEaiACQcgCai0AADoAACACIAIv +AKkCOwHYBCACIAJBsAJqKQIANwO4BCACQawCaigCACEMDAELIAJB2gRqIAJB9gNqLQAAOgAAIAJB +wARqIAJB4ANqKQMANwMAIAJByARqIAJB6ANqKQMANwMAIAJB0ARqIAJB8ANqLQAAOgAAIAIgAi8B +9AM7AdgEIAIgAikD2AM3A7gECwJAIAlB/wFxRQRAIAJBqAJqQZyGxwBBDBC6TiACLQCoAg0DIAJB +3gRqIAItAKsCOgAAIAJB8ARqIAJBwAJqKQIAIhA3AwAgAkGYA2ogAkG4AmopAgA3AwAgAkGgA2og +EDcDACACQagDaiACQcgCai0AADoAACACIAIvAKkCOwHcBCACIAJBsAJqKQIANwOQAyACQawCaigC +ACENDAELIAJB3gRqIAJBlgRqLQAAOgAAIAJBmANqIAJBgARqKQMANwMAIAJBoANqIAJBiARqKQMA +NwMAIAJBqANqIAJBkARqLQAAOgAAIAIgAi8BlAQ7AdwEIAIgAikD+AM3A5ADCyACQaYCaiACQbYE +ai0AADoAACACQZACaiACQaAEaikDADcDACACQZgCaiACQagEaikDADcDACACQaACaiACQbAEai0A +ADoAACACQYYCaiACQdoEai0AADoAACACQYACaiACQdAEai0AADoAACACQfgBaiACQcgEaikDADcD +ACACQfABaiACQcAEaikDADcDACACIAIvAbQEOwGkAiACIAIpA5gENwOIAiACIAIvAdgEOwGEAiAC +IAIpA7gENwPoASACQeYBaiACQd4Eai0AADoAACACQeABaiACQagDai0AADoAACACQdgBaiACQaAD +aikDADcDACACQdABaiACQZgDaikDADcDACACIAIvAdwEOwHkASACIAIpA5ADNwPIAUEBIQlBAAwD +CyACQbADahCsPyIARQ0EDAELIAIoAqwCIQALQQAhCUEBCyEDQQEhBiABIAEtACRBAWo6ACQgARCN +EyEEIAJBuAJqIAJBkAJqKQMANwIAIAJBwAJqIAJBmAJqKQMANwIAIAJByAJqIAJBoAJqLQAAOgAA +IAJBywJqIAJBhgJqLQAAOgAAIAIgAzoAqAIgAiAANgKsAiACIAIvAaQCOwCpAiACIAJBpgJqLQAA +OgCrAiACIAIpA4gCNwKwAiACIAIvAYQCOwDJAiACQdgCaiACQfABaikDADcCACACQeACaiACQfgB +aikDADcCACACQegCaiACQYACai0AADoAACACQesCaiACQeYBai0AADoAACACQfgCaiACQdABaikD +ADcCACACQYADaiACQdgBaikDADcCACACQYgDaiACQeABai0AADoAACACIAw2AswCIAIgDTYC7AIg +AiACKQPoATcC0AIgAiACLwHkATsA6QIgAiACKQPIATcC8AIgAiAENgKMAwJAIAMEQEEBIQcgACED +DAELIAQiA0UEQCACQd4AaiACQaYCai0AADoAACACIAIvAaQCOwFcIAIgAkGwAmpB2QAQzU8aIAAh +AwsgBEEARyEHIARFIQYgCQ0AIAJBrAJqEN8dCyAERSAGRXJFBEAgAkGMA2oQ3x0LIAcNAwwCCyAC +QdYDaiAKQQJqLQAAOgAAIAJB8ARqIARBEGopAgAiEDcDACACQcADaiAEQQhqKQIANwMAIAJByANq +IBA3AwAgAkHQA2ogBEEYai0AADoAACACIAovAAA7AdQDIAIgBCkCADcDuAMgAigCrAIhC0EBIQYM +AAsACyAIIAIvAVw7AAEgCEEDaiACQd4Aai0AADoAACAIQQhqIAJB2QAQzU8aIAhBBGogAzYCAEEA +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 +QCAJLQAEDQIgAEEHNgIIIAggAEEIahCAMSEEIAVCAjcDACAFIAQ2AggMBQsgBUIANwMADAQLIAkt +AAQNACAIEL5BIABBCGogCBC8FiAALQAIBEAgBSAAKAIMNgIIIAVCAjcDAAwECyAALQAJBEAgAC0A +CiEEDAILIABBBTYCCCAIIABBCGoQgDEhBCAFQgI3AwAgBSAENgIIDAMLIAlBADoABAsgBEHdAEYE +QCAAQRU2AgggCCAAQQhqEIAxIQQgBUICNwMAIAUgBDYCCAwCCyAAQQhqIAgQnkYgACgCCEUEQCAF +IAApAxA3AwggBUIBNwMAIAVBIGogAEEoaikDADcDACAFQRhqIABBIGopAwA3AwAgBUEQaiAAQRhq +KQMANwMADAILIAUgACgCDDYCCCAFQgI3AwAMAQsgBSAAKAIENgIIIAVCAjcDAAsgAEEwaiQAIAIp +A/gBIhNCAlENAyACQYAEaiILIAJBjAJqKQIANwMAIAJBiARqIgcgAkGUAmopAgA3AwAgAkGQBGoi +ACACQZwCaigCADYCACACIAIpAoQCNwP4AyATUARAQQJBmITHAEH8gscAEN4XIQAMCQsgAigCgAIh +BCACQYwDaiAAKAIANgIAIAJBhANqIAcpAwA3AgAgAkH8AmogCykDADcCACACIAIpA/gDNwL0AiAC +IAQ2AvACIAJB+AFqIQUjAEEwayIAJAAgACACQcQDaiIJKAIAIggQvBYCQCAALQAARQRAIAAtAAFF +BEAgAEECNgIIIAggAEEIahCAMSEEIAVBBDoAJCAFIAQ2AgAMAgsCQAJAIAAtAAIiBEEsRwRAIARB +3QBHBEAgCS0ABA0CIABBBzYCCCAIIABBCGoQgDEhBCAFQQQ6ACQgBSAENgIADAULIAVBAzoAJAwE +CyAJLQAEDQAgCBC+QSAAQQhqIAgQvBYgAC0ACARAIAVBBDoAJCAFIAAoAgw2AgAMBAsgAC0ACQRA +IAAtAAohBAwCCyAAQQU2AgggCCAAQQhqEIAxIQQgBUEEOgAkIAUgBDYCAAwDCyAJQQA6AAQLIARB +3QBGBEAgAEEVNgIIIAggAEEIahCAMSEEIAVBBDoAJCAFIAQ2AgAMAgsgAEEIaiAIEIpGIAAtACxB +A0cEQCAFIABBCGpBKBDNTxoMAgsgBUEEOgAkIAUgACgCCDYCAAwBCyAFQQQ6ACQgBSAAKAIENgIA +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 +g8cAQQ0QuU4gAigC+AENAiACQegDaiACQZgCaikDADcDACACQeADaiACQZACaikDADcDACACQdgD +aiACQYgCaikDADcDACACIAIpA4ACNwPQAwwBCyACQegDaiAMQRhqKQMANwMAIAJB4ANqIAxBEGop +AwA3AwAgAkHYA2ogDEEIaikDADcDACACIAwpAwA3A9ADCyAIQf8BcUEDRw0CQeaDxwBBDRDsHyEE +IAJB+AFqIglBAzoAJCAJIAQ2AgAgAigC+AEhBCACLQCcAiIJQQNGDQEgAkGQBGogAkGUAmopAgA3 +AwAgAkGIBGogAkGMAmopAgA3AwAgAkGABGogAkGEAmopAgA3AwAgAkH2A2ogAkGfAmotAAA6AAAg +AiACKQL8ATcD+AMgAiACLwCdAjsB9AMgCSEIDAMLIAIoAvwBIQMMAwsgAkHQA2oQ7UMgBCEDDAIL +IAJBkARqIAlBGGopAgA3AwAgAkGIBGogCUEQaikCADcDACACQYAEaiAJQQhqKQIANwMAIAJB9gNq +IA5BAmotAAA6AAAgAiAJKQIANwP4AyACIA4vAAA7AfQDCyACQcgBaiACQegDaikDADcDACACQcAB +aiACQeADaikDADcDACACQbgBaiACQdgDaikDADcDACACQeABaiACQYAEaikDADcDACACQegBaiAC +QYgEaikDADcDACACQfABaiACQZAEaikDADcDACACQdYBaiACQfYDai0AADoAACACIAIpA9ADNwOw +ASACIAIpA/gDNwPYASACIAIvAfQDOwHUAQwQCyACQcwDahDvQgsgAkHEA2oQniwgAUUMBgsgAkH4 +AWohAwJAIAJB3AJqKAIAIgYQ5xYiB0UEQCADIAYQnkYMAQsgA0EBNgIAIAMgBzYCBAsgAigC+AFF +DQYLIAIgBDYCmAMgAiAIOgC8AyACIAE2AuwCIAIgADYC6AILIAIgBTYC5AIgAigC/AEhAwtBACEH +C0EBCyELQQELIQYgCEH/AXFBA0cNAQwDCyACQZAEaiIDIAtBGGopAwA3AwAgAkGIBGoiBiALQRBq +KQMANwMAIAJBgARqIgcgC0EIaikDADcDACACIAspAwA3A/gDIAIpA/ACUEUEQCAMEO1DCyAMIAIp +A/gDNwMAIAxBCGogBykDADcDACAMQRBqIAYpAwA3AwAgDEEYaiADKQMANwMAIAJCATcD8AIMAQsL +IAJBmANqEO5DCyALRQ0CIAIpA/ACUA0CIAwQ7UMMAgsgAkGoAWogBykDADcDACACQaABaiAEKQMA +NwMAIAJBmAFqIAUpAwA3AwAgAkGOAWogCC0AADoAACACQfAAaiACQfgCaikDADcDACACQfgAaiAC +QYADaikDADcDACACQYABaiACQYgDaikDADcDACACIAIpA5gDNwOQASACIAIvAdwCOwGMASACIAIp +A/ACNwNoIAAhByABIQAMCAsgAigCgAIhAAwECyABQQBHIAZxBEAgAkHsAmoQ70ILQQIhBiAHIAVB +AkZyRQRAIAJB5AJqEJ4sCyADIQALIAogCi0AJEEBajoAJCAKEI0TIQEgAkGMAmogAkHgAWopAwA3 +AgAgAkGUAmogAkHoAWopAwA3AgAgAkGcAmogAkHwAWopAwA3AgAgAkGnAmogAkHWAWotAAA6AAAg +AkGwAmogAkG4AWopAwA3AwAgAkG4AmogAkHAAWopAwA3AwAgAkHAAmogAkHIAWopAwA3AwAgAiAE +NgKAAiACIAA2AvwBIAIgCDoApAIgAiACKQPYATcChAIgAiACLwHUATsApQIgAiACKQOwATcDqAIg +AiAGNgL4ASACIAE2AtACIAIgAzYCyAICQCAGQQJHBEAgAQ0BIAJBGGogAkGAAmpB0AAQzU8aDAkL +IAFFDQcgAkHQAmoQ3x0MBwsgAkH4AWoQ9ztBAiEGIAEhAAwHCyACQRg2AvgBIAogAkH4AWoQgDEL +IQAgDUECNgIAIA0gADYCBAwHCyACQeQCahDvQgsgAkHQA2oQniwLQQIhBgsgCiAKLQAkQQFqOgAk +IAoQnwwhASACQYwCaiACQZgBaikDADcCACACQZQCaiACQaABaikDADcCACACQZwCaiACQagBaikD +ADcCACACQacCaiACQY4Bai0AADoAACACQbACaiACQfAAaikDADcDACACQbgCaiACQfgAaikDADcD +ACACQcACaiACQYABaikDADcDACACIAc2AoACIAIgADYC/AEgAiALOgCkAiACIAIpA5ABNwKEAiAC +IAIvAYwBOwClAiACIAIpA2g3A6gCIAIgBjYC+AEgAiABNgLQAiACIAM2AsgCAkAgBkECRgRAIAEN +AQwCCyABRQRAIAJBGGogAkGAAmpB0AAQzU8aDAMLIAJB+AFqEPc7QQIhBiABIQAMAgsgAkHQAmoQ +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 +NgKkCiACIA02AqAKIAJBtApqIAJBlAhqQbwBEM1PGiACIA42AvALIAJB9AtqIAJB2AZqQbwBEM1P +GiACIAg2ArANAkAgBkEGRwRAIAgNASACQQhqIAlBtAMQzU8aDAgLIAhFDQYgAkGwDWoQ3x0MBgsg +AkH0CWoQjUBBBiEGIAghAAwGCyACQRg2AvQJIAEgAkH0CWoQgDELIQAgCkEGNgIAIAogADYCBAwG +CyACQZQRahD6PgtBBiEGCyABIAEtABxBAWo6ABwgARCfDCEFIAIgADYC+AkgAiAGNgL0CSACQfwJ +aiACQbQGakEkEM1PIQcgAiAJNgKwCiACIAg2AqwKIAIgCzYCqAogAiAMNgKkCiACIA42AqAKIAJB +tApqIAJB+ARqQbwBEM1PGiACIA02AvALIAJB9AtqIAJBvANqQbwBEM1PGiACIAU2ArANAkAgBkEG +RgRAIAUNAQwCCyAFRQRAIAJBCGogB0G0AxDNTxoMAwsgAkH0CWoQjUBBBiEGIAUhAAwCCyACQbAN +ahDfHQtBBiEGCyAGQQZGDQAgCkEIaiACQQhqQbQDEM1PGiAKIAA2AgQgCiAGNgIADAELIAEgABD/ +UCEAIApBBjYCACAKIAA2AgQLIAJBoBFqJAAL1BgBDn8gACEJIwBB8AJrIgIkACACIAEQvBYCQAJA +AkACQAJAAkACQAJAAn8CQAJAAn8CfwJAAkACQAJAAkACQAJAAkACfyACLQAARQRAIAItAAFFBEAg +AkEFNgKYASABIAJBmAFqEIAxDAILIAItAAIiAEHbAEYNAiAAQfsARg0DIAEgAkHvAmpBiKDHABCE +BSEADBULIAIoAgQLIQAgCUGBgICAeDYCACAJIAA2AgQMFAsgASABLQAcQQFrIgA6ABwgAEH/AXEE +QCABEL5BIAJBAToA+AEgAiABNgL0ASACQZgBaiACQfQBahCKCCACKAKYAQ0EIAIoApwBIgRFBEBB +AEHkh8cAQfyCxwAQ3hchAAwQCyACIAJBoAFqKAIAIgw2AuACIAIgBDYC3AIgAkGYAWogAkH0AWoQ +hAggAigCmAENAyACKAKcASIKRQRAQQFB5IfHAEH8gscAEN4XIQAMDwsgAiACQaABaigCACIINgLo +AiACIAo2AuQCIAJBmAFqIQUjAEFAaiIAJAAgAEEEaiACQfQBaiILKAIAIgMQvBYCQCAALQAERQRA +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 +DQMgAEEHaiACLQBLOgAAIABBBWogAi8ASTsAACACKAJMIQEgAEEMaiACKQJQNwIAIABBCGogATYC +ACAAIAM6AAQgAEECNgIADBMLIAJByABqIAEgB0EIdCADchCdCSACLQBIIgNBCUcEQCAAQQdqIAIt +AEs6AAAgAEEFaiACLwBJOwAAIAIoAkwhASAAQQxqIAIpAlA3AgAgAEEIaiABNgIAIAAgAzoABCAA +QQI2AgAMEwsgASABKAIQQQFrIgM2AhAgA0UNASMAQSBrIgMkACADQQk6AAggAkHIAGoiB0EEaiAD +QQhqIANBH2pB/NTIABD6GiAHQQI2AgAgA0EgaiQAIAEgASgCEEEBajYCECAAIAdBKBDNTxoMEgsg +AEEFaiACLwHcATsAACAAQQdqIAJB3gFqLQAAOgAAIABBDGogDzcCACAAQQhqIAc2AgAgACADOgAE +IABBAjYCAAwRCyAAQQI2AgAgAEEIOgAEDBALIAIoAkwMAQsgAi8BSgshCiABIAEoAhBBAWsiAzYC +ECADRQRAIABBAjYCACAAQQg6AAQMDgsgAiAKNgIkIAIgATYCICACIAJBIGo2AnQgAkHcAWpBAXIh +DiAKIQNBACEHA0ACQAJAAn8CQAJAIAMEQCACIANBAWs2AiQgAkHcAWohBCACKAIgIQVCACEPIwBB +MGsiAyQAIANBEGogBRCLMgJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkAC +QAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACfyADLQAQQQRGBEAgAy8AESIIQQh2DAELIAMpAxAiD0L/AYNC +BFINASAPQgiIpyEIIA9CEIinCyEGIAhB/wFxIghBAWsOJAIDBAQICQoLDA0ODxARBQUFBQYGBiEi +IyQlJicnJycnJycnBwELIAQgDzcCBCAEQQA6AAAMOQsgBEEJOgAAIARBAUECIAZB/wFxIgRBAUYb +QQAgBBs6AAEMOAsgBCAGEMRKDDcLIwBBIGsiBSQAIAVBBzoACCAEIAVBCGogBUEfakGs1MgAEPoa +IAVBIGokAAw2CyMAQSBrIgUkACAFQQA6AAggBSAIQQNGOgAJIAQgBUEIaiAFQR9qQazUyAAQ+hog +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 +aiACLQDfAToAACACQc0AaiACLwDdATsAACACQdQAaiACKQLkATcCACACQdAAaiACKALgATYCACAC +IAM6AEwLIAJBxgBqIAJBzwBqLQAAIgE6AAAgAiACQc0Aai8AACIDOwFEIAJB0ABqKAIAIQcgAkHU +AGopAgAhDyACLQBMIQogAEEHaiABOgAAIABBBWogAzsAACAAQQxqIA83AgAgAEEIaiAHNgIAIAAg +CjoABCAAQQI2AgAMEgtBBCEMIAogB2sLIQcgACAMOgAEIAAgAzYCACAAIAIvARw7AAUgAEEHaiAC +QR5qLQAAOgAAIAAgEDcCDCAAIAc2AgggACACKQMINwIUIABBHGogAkEQaikDADcCACAAQSRqIAJB +GGooAgA2AgAgASABKAIQQQFqNgIQDBALIAJB0AFqIA5BGGopAAAiDzcDACACQYABaiAOQQhqKQAA +NwMAIAJBiAFqIA5BEGopAAA3AwAgAkGQAWogDzcDACACIA4pAAA3A3hBASENCyACKAIkIQMMAAsA +CyACKAJMDAELIAIvAUoLIQUgASABKAIQQQFrIgM2AhAgA0UEQCAAQQI2AgAgAEEIOgAEDAsLAkAC +QCAFBEAgAkHcAWogARCGAiACLQDcASIDQQlHBEAgAkHPAGogAi0A3wE6AAAgAkHNAGogAi8A3QE7 +AAAgAkHYAGogAikC5AEiD0IgiD4CACACQdQAaiAPPgIAIAJB0ABqIAIoAuABNgIAIAIgAzoATAwC +CyAFQQFHBEAgAigC4AEhAyACQdwBaiABEOcBIAItANwBRQ0DIAJBggFqIAJB6AFqKQIAIg83AQAg +AkHUAGogDzcCACACIAIpAuABIg83AXogAiAPNwJMDAILIAJBzABqQQFBuMrIAEHoycgAEPMXDAEL +IAJBzABqQQBBuMrIAEHoycgAEPMXCyACQSJqIAJBzwBqLQAAIgE6AAAgAiACQc0Aai8AACIDOwEg +IAJB0ABqKAIAIQcgAkHUAGopAgAhDyACLQBMIQogAEEHaiABOgAAIABBBWogAzsAACAAQQxqIA83 +AgAgAEEIaiAHNgIAIAAgCjoABCAAQQI2AgAMCwsgAkGAAWogAkHlAWopAAAiDzcDACACQegAaiAC +QfUBaikAADcCACACQeAAaiACQe0BaikAADcCACACQdgAaiAPNwIAIAIgAikA3QEiDzcDeCACIA83 +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 +B0EIdCADchCdCSACLQD4ASIDQQlHBEAgAEEHaiACLQD7AToAACAAQQVqIAIvAPkBOwAAIAIoAvwB +IQEgAEEMaiACKQKAAjcCACAAQQhqIAE2AgAgACADOgAEIABBgICAgHg2AgAMEwsgASABKAIQQQFr +IgM2AhAgA0UNASMAQSBrIgMkACADQQk6AAggAkH4AWoiB0EEaiADQQhqIANBH2pBzNTIABD6GiAH +QYCAgIB4NgIAIANBIGokACABIAEoAhBBAWo2AhAgACAHQSQQzU8aDBILIABBBWogAi8BXDsAACAA +QQdqIAJB3gBqLQAAOgAAIABBDGogDzcCACAAQQhqIAc2AgAgACADOgAEIABBgICAgHg2AgAMEQsg +AEGAgICAeDYCACAAQQg6AAQMEAsgAigC/AEMAQsgAi8B+gELIQcgASABKAIQQQFrIgM2AhAgA0UE +QCAAQYCAgIB4NgIAIABBCDoABAwOCyACIAc2AjQgAiABNgIwIAIgAkEwajYCnAEgAkGAgICAeDYC +uAEgAkH4AWpBAXIhDCACQeMBaiENIAJB/AFqIQ4gByEDA0ACQAJAAkACQAJAAkAgAwRAIAIgA0EB +azYCNCACQfgBaiEEIAIoAjAhBUIAIRAjAEEwayIDJAAgA0EQaiAFEIsyAkACQAJAAkACQAJAAkAC +QAJAAkACQAJ/AkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACfwJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/IAMtABBBBEYE +QCADLwARIghBCHYMAQsgAykDECIQQv8Bg0IEUg0BIBBCCIinIQggEEIQiKcLIQYgCEH/AXEiCEEB +aw4kAgMEBAgJCgsMDQ4PEBEFBQUFBgYGISIjJCUmJycnJycnJycHAQsgBCAQNwIEIARBADoAAAw5 +CyAEQQk6AAAgBEEBQQIgBkH/AXEiBEEBRhtBACAEGzoAAQw4CyAEIAYQwkoMNwsjAEEgayIFJAAg +BUEHOgAIIAQgBUEIaiAFQR9qQezUyAAQ+hogBUEgaiQADDYLIwBBIGsiBSQAIAVBADoACCAFIAhB +A0Y6AAkgBCAFQQhqIAVBH2pB7NTIABD6GiAFQSBqJAAMNQsgCEEPaw4EDQ4PEAwLIAhBE2sOAxUW +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 +QeIAaiACKQH6ATcBACACQegAaiACQYACaikBADcBACACQeEAaiADOgAAIAIgBDoAYAwCCwJAAkAC +QCADDgIAAQILIAsEQCACQeAAakGYy8gAQQUQsCAMBAsgAkH4AWogAigCMBDsASACLQD4AQRAIAJB +6ABqIAJBhAJqKQIANwIAIAIgAikC/AE3AmAMBAsgAkGoAWogDEEIaikAADcDACACQbABaiAMQRBq +KQAANwMAIAIgDCkAADcDoAFBASELDAgLIAIoArgBQYCAgIB4RwRAIAJB4ABqQZ3LyABBChCwIAwD +CyACQfgBaiACKAIwEIgCIAItAPgBIgNBCUYNBiACIAIpAPkBNwPgASACIAJBgAJqKQAANwDnASAC +QeEAaiACKQPgATcAACACQegAaiACKQDnATcAACACIAM6AGAMAgsgAkH4AWogAkGcAWoQvkogAi0A ++AEiA0EJRg0GIAJB4QBqIAIpAPkBNwAAIAJB6ABqIAJBgAJqKQAANwAAIAIgAzoAYAwBCwJAIAsE +QCACQdgBaiACQbABaikDADcDACACQdABaiACQagBaikDADcDACACIAIpA6ABNwPIAQwBCyACQfgB +akGYy8gAQQUQwkEgAi0A+AEEQCACQegAaiACQYQCaikCADcCACACIAIpAvwBNwJgDAILIAJB0AFq +IAJBgQJqKQAANwMAIAJB2AFqIAJBiQJqKQAANwMAIAIgAikA+QE3A8gBCyACKAK4AUGAgICAeEcN +ASACQfgBakGdy8gAQQoQsSAgAi0A+AEiA0EJRgRAIAJBEGogAkGEAmooAgA2AgAgAiACKQL8ATcD +CAwDCyACIAIpAPkBNwPgASACIAJBgAJqKQAANwDnASACQeEAaiACKQPgATcAACACQegAaiACKQDn +ATcAACACIAM6AGALIAIoArgBQYCAgIB4Rg0CIAJBuAFqEIg/DAILIAJBEGogAkHAAWooAgA2AgAg +AiACKQO4ATcDCAsgAkGUAmogAkHYAWopAwA3AgAgAkGMAmogAkHQAWopAwA3AgAgAkGAAmogAkEQ +aigCADYCACACIAIpA8gBNwKEAiACIAIpAwg3A/gBIAJB3ABqIAJB+AFqQSQQzU8aIAIoAlwiA0GA +gICAeEYNACACQdQAaiACQfgAaikCADcCACACQcQAaiACQegAaikCADcCACACIAIpAnA3AkwgAiAC +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 +QRBqJAALEwAgAEUEQEGsq8kAEKNLAAsgAQsPACAAKAIABEAgABD3OQsLFAAgACgCACIAIAAoAgAo +AgARAAALFAAgACgCACABIAAoAgQoAhARAgALEQAgACABELZSQf8BcUH/AUYLEgAgACgCACABIAIg +AyAEEIobCxYAIAAoAgAgACgCBEG+3ckAQR4QgDwLEwAgACABKAIAQfgAaikCADcDAAsWACAAKAIA +IAAoAgRB4PLJAEEeEIA8CyIAIAAgAUHU7MkAQYjryQBBzOzJAEGI7MkAQbDryQAQiFULEgAgACAB +KAIIQSxqKQIANwMACxIAIAAgASgCCEE0aikCADcDAAsSACAAIAEoAghBDGopAgA3AwALEAAgACAB +ELgrQf8BcUEBRgtJAQJ/IABBCGoiAiIAKAIIIQEgACgCBCEAA0AgAQRAIABBBGooAgAgACgCACgC +DBEAACABQQFrIQEgAEEIaiEADAELCyACEJ09CxYAIAAoAgAgACgCBEHIhcwAQR4QgDwLIgAgACAB +QbSjzABB6KHMAEGso8wAQeiizABBkKLMABCIVQsSACAAIAEoAgBBFGopAgA3AwALEgAgACABKAIE +QThqKQMANwMACxAAIAAgASACIAMQgDxBAXMLIgAgACABQYyYzgBBxJXOAEGEmM4AQcCXzgBB6JbO +ABCIVQsTACAAIAEgAigCBCACKAIIEIA8CxUAIAIgASAAQeyjzgAgAygCLBEFAAsVACACIAEgAEH8 +o84AIAMoAiwRBQALFQAgAiABIABBjKTOACADKAIsEQUACxUAIAIgASAAQZykzgAgAygCLBEFAAsV +ACACIAEgAEGspM4AIAMoAiwRBQALFQAgAiABIABBvKTOACADKAIsEQUACxUAIAIgASAAQcykzgAg +AygCLBEFAAsVACACIAEgAEHcpM4AIAMoAiwRBQALFQAgAiABIABB7KTOACADKAIsEQUACxUAIAIg +ASAAQfykzgAgAygCLBEFAAsVACACIAEgAEGkoM4AIAMoAiwRBQALFQAgAiABIABBjKXOACADKAIs +EQUACxUAIAIgASAAQZylzgAgAygCLBEFAAsVACACIAEgAEGspc4AIAMoAiwRBQALFQAgAiABIABB +vKXOACADKAIsEQUACxUAIAIgASAAQcylzgAgAygCLBEFAAsVACACIAEgAEHcpc4AIAMoAiwRBQAL +FQAgAiABIABB7KXOACADKAIsEQUACxUAIAIgASAAQfylzgAgAygCLBEFAAsVACACIAEgAEGMps4A +IAMoAiwRBQALFQAgAiABIABBnKbOACADKAIsEQUACxUAIAIgASAAQaymzgAgAygCLBEFAAsVACAC +IAEgAEH8lM4AIAMoAiwRBQALFQAgAiABIABBvKbOACADKAIsEQUACxUAIAIgASAAQcymzgAgAygC +LBEFAAsVACACIAEgAEHcps4AIAMoAiwRBQALFQAgAiABIABB7KbOACADKAIsEQUACxUAIAIgASAA +QZiUzgAgAygCLBEFAAsVACACIAEgAEH4p84AIAMoAiwRBQALFQAgAiABIABBiKjOACADKAIsEQUA +C8wKAQp/IwBBIGsiAiQAIAJBFGogARC8FgJAAkAgACIHAn8CQAJAAkACQAJAAkACfyACLQAURQRA +IAItABVFBEAgAkEFNgIEIAEgAkEEahCAMQwCCyACLQAWIgBB2wBGDQIgAEH7AEYNAyABIAJBH2pB +0PXOABCGBSEADAYLIAIoAhgLIQAgB0EBNgIAIAcgADYCBAwICyABIAEtACRBAWsiADoAJAJAIABB +/wFxBEAgARC+QUEBIQggAkEBOgAYIAIgATYCFCACQQRqIAJBFGoQtwgCfyACKAIEIgBBAkYEQEEB +IQVBACEIIAIoAggMAQsgAEEBRgRAIAIoAgwhCiACKAIIDAELQQEhBUEAIQhBAEG4t88AQYzozgAQ +3hcLIQBBASEGIAEgAS0AJEEBajoAJCACIAEQnwwiAzYCECACIAo2AgwgAiAANgIIIAIgBTYCBCAF +RQ0BQQEhBQwECwwHCyADQQBHIQYgAyAAIAMbIQAgA0UhBSAIRQ0BDAILIAEgAS0AJEEBayIAOgAk +IABB/wFxRQ0FIAEQvkEgAkEBOgAYIAIgATYCFEEBIQUDQCMAQSBrIgAkACAAQQxqIAJBFGoiCygC +ACIEELwWAkAgAkEEaiIDAn8CQCAALQAMRQRAIAAtAA1FBEAgAEEDNgIUIAQgAEEUahCAMSEEIANB +AToAACADIAQ2AgQMBAsCQAJAIAAtAA4iCUEsRwRAIAlB/QBHBEAgCy0ABA0CIABBCDYCFCAEIABB +FGoQgDEhBCADQQE6AAAgAyAENgIEDAcLIANBgAQ7AQAMBgsgCy0ABA0AIAQQvkEgAEEUaiAEELwW +IAAtABQEQCADIAAoAhg2AgQgA0EBOgAADAYLIAAtABUEQCAALQAWIQkMAgsgAEEFNgIUIAQgAEEU +ahCAMSEEIANBAToAACADIAQ2AgQMBQsgC0EAOgAECwJAIAlBIkcEQCAJQf0ARg0BIABBETYCFCAE +IABBFGoQgDEhBCADQQE6AAAgAyAENgIEDAULIAQQvkEgBEEANgIIIABBFGogBEEMaiAEELsIIAMC +fyAAKAIUQQJGBEAgACgCGAwBCyAAKAIYIAAoAhxB9LbPAEEQEIA8IQQgAEEMaiIJQQA6AAAgCSAE +QQFzOgABIAAtAAxFDQMgACgCEAs2AgRBAQwDCyAAQRU2AhQgBCAAQRRqEIAxIQQgA0EBOgAAIAMg +BDYCBAwDCyADIAAoAhA2AgQgA0EBOgAADAILIAMgAC0ADToAAUEACzoAAAsgAEEgaiQAAkACfwJA +AkACQAJAIAItAARFBEAgAi0ABQ4DBAIBAgsgAigCCCEADAILQQEhCEEAIAYgBRshAEEADAMLIAJB +FGoQrD8iAEUNBAtBAQwBCyAFRQRAQfS2zwBBEBDxHyEAQQEMAQsgAkEEaiACQRRqEIA5IAIoAggh +BiACKAIERQ0BIAYhAEEBCyEFQQEhBiABIAEtACRBAWo6ACQgAiABEI0TIgM2AhAgAiAKNgIMIAIg +ADYCCCACIAU2AgQCQCAFBEBBASEFDAELIANBAEchBSADIAAgAxshACADRSEGIAgNACACQQhqENo0 +CyADRSAGRXJFBEAgAkEQahDaNAsgBQ0EDAULIAIoAgwhCkEAIQUMAAsACyACQQhqENo0CyADRSAF +RXJFBEAgAkEQahDaNAsgBkUNAQsgByABIAAQvFI2AgRBAQwBCyAHIAA2AgQgB0EIaiAKNgIAQQAL +NgIADAELIAJBGDYCBCABIAJBBGoQgDEhACAHQQE2AgAgByAANgIECyACQSBqJAALEgAgACABKAIA +QThqKQIANwMACxIAIAAgASgCAEFAaykCADcDAAsPACAAKAIIBEAgABD3NQsLDwAgACgCAARAIAAQ +j0kLCw8AIAAoAgAEQCAAEN8dCwsSACAAIAEoAgBBEGopAwA3AwALDAAgACABasFBA29FCxIAIAAo +AgBBDGogASgCABCLOwsWACAAKAIAIAAoAgRB1L7RAEEHEIA8Cw8AIAAoAgAEQCAAEMUoCwsPACAA +KAIABEAgABC4HgsLFAAgACgCACABIAAoAgQoAhQRAgALFQAgAiABIABBvNrRACADKAIsEQUACxoA +IAAtAIwBRQRAQQEPC0EAEMVRKQMAQn9SCxQAIAAoAgAgASAAKAIEKAIMEQIACxAAIAAoAgBBFGot +AABBAEcLDwAgACgCAARAIAAQvEwLCw8AIAAoAgAEQCAAENcvCwsWACAAKAIAIAAoAgRB+J3SAEEe +EIA8CxEAIABBMGoiABC9USAAEItKC8cGAgh/AX4jAEGAAWsiAiQAAkBBFSABKAIAIgZBgICAgHhz +IgMgA0EVTxsiA0EMa0ECTwRAIANBFUcEQCACQThqIAFBCGopAwA3AwAgAiABKQMANwMwIAJBQGsi +ASACQTBqIgMQtwkgAUHomNIAQciY0gAQoBUhASAAQgI3AwAgACABNgIIIAMQ5R8MAgsgASgCCCEF +IAEoAgQhAyACIAY2AhggAiADNgIQIAIgAzYCFCACIAMgBUEFdGo2AhwCQAJAAkAgBQRAIAJByABq +IANBDGopAgA3AwAgAkHQAGogA0EUaikCADcDACACQdgAaiADQRxqKAIANgIAIAIgA0EgaiIENgIU +IAIgAykCBDcDQCADKAIAIgdBlYCAgHhHDQELIAJBCzoAMCACQTBqQcCY0gBByJjSABChFSEDIABC +AjcDACAAIAM2AggMAQsgAkH4AGogA0EEaiIIQQhqKAIAIgk2AgAgAiAIKQIAIgo3A3AgAkE4aiAC +QdQAaikCADcDACACIAIpAkw3AzAgAkEsaiAJNgIAIAIgBzYCICACIAo3AiQCQAJAIAVBAUYEQCAC +QZWAgIB4NgJADAELIAJByABqIARBCGopAwA3AwAgAkHQAGogBEEQaikDADcDACACQdgAaiAEQRhq +KQMANwMAIAIgA0FAazYCFCACIAQpAwAiCjcDQCAKp0GVgICAeEcNAQsgAkFAayIDEOU+IAJB6ABq +IgQgAkEoaikDADcDACACIAIpAyA3A2AgAigCMCEFIAJB3ABqIAJBPGooAgA2AgAgAkHUAGogAikC +NDcCACACQRBqENgvIAJBCGogBCkDACIKNwMAIAJByABqIAo3AwAgAiACKQNgIgo3AwAgAiAFNgJQ +IAIgCjcDQCAAIAMQ1Q8gBkGUgICAeEwNAgwECyACQUBrIgMQ5T4gAkELOgBAIANBwJjSAEHImNIA +EKEVIQMgAEICNwMAIAAgAzYCCCACQTBqEOUfIAJBIGoQ5R8LIAJBEGoQ2C8gBkGUgICAeEoNAgsg +ARDlHwwBCyACQcgAaiABQQhqKQMANwMAIAJBlYCAgHg2AlAgAiABKQMANwNAIAAgAkFAaxDVDwsg +AkGAAWokAAsRACAAIAEoAgQgASgCCBCPDgvyJgIRfwN+IwBBIGsiECQAAkACQAJAAkBBFSABKAIA +QYCAgIB4cyIIIAhBFU8bQRRrDgIBAgALIBBBEGogAUEIaikDADcDACAQIAEpAwA3AwggEEEIaiAQ +QR9qQaCZ0gAQgzYhASAAQgI3AwAgACABNgIIDAILIAAhCCMAQdABayIEJAAgAUEEaiIAKAIIIQUg +ACgCBCEGIAAoAgAhAUEAIQAgBEEANgIUIAQgATYCDCAEIAY2AgggBCAGNgIEIAQgBiAFQQR0ajYC +ECAEQagBaiEFIwBB0ABrIgckACAHQQhqIARBBGoiARDRIAJAIAcoAghBlYCAgHhGBEAgBUGABDsB +AAwBCyAHQcgAaiAHQRBqKQMANwMAQQEhBiABIAEoAhBBAWo2AhAgByAHKQMINwNAIAdBHGogB0FA +axC1EwJAIActABxFBEAgBUEBaiAHQRxqQQFyQSEQzU8aQQAhBgwBCyAFIAcoAiA2AgQLIAUgBjoA +AAsgB0HQAGokAAJAAkACfwJAAkAgBC0AqAENACAEQZABaiIHIARBuAFqKQIANwMAIARBmAFqIgYg +BEHAAWopAgA3AwAgBEGgAWoiBSAEQcgBai8BADsBACAEIARBsAFqKQIANwOIASAELQCpASIBQQJH +BEAgBEGAAWogBS8BADsBACAEQfgAaiAGKQMANwMAIARB8ABqIAcpAwA3AwAgBCAEKQOIATcDaCAB +IQALIARBrAFqKAIAIRIgBC8BqgEhByAEQagBaiAEQQRqEP0UIAQpA6gBIhVCA1EEQCAEKAKwASEA +DAQLIAQpA7ABIRQgBEGoAWohBSMAQTBrIgkkACAJQQhqIARBBGoiARDRIAJAIAkoAghBlYCAgHhG +BEAgBUIANwIADAELIAlBKGogCUEQaikDADcDAEEBIQYgASABKAIQQQFqNgIQIAkgCSkDCDcDICAJ +QRhqIAlBIGoQ9UYCQCAJKAIYIgEEQCAFIAE2AgQgBUEIaiAJKAIcNgIAQQAhBgwBCyAFIAkoAhw2 +AgQLIAUgBjYCAAsgCUEwaiQAIAQoAqgBDQAgBCgCrAEiCUUEQEECQaic0gBByJjSABDYFyEADAQL +IAQgBEGwAWooAgAiBjYCjAEgBCAJNgKIASAEQagBaiEPIwBBMGsiCyQAIAsgBEEEaiIBENEgAkAg +CygCAEGVgICAeEYEQCAPQQA2AgAgD0EQakEANgIADAELIAtBKGogC0EIaikDADcDAEEBIQUgASAB +KAIQQQFqNgIQIAsgCykDADcDICALQRBqIAtBIGoQhkcCQCALKAIYIgEEQCAPIAspAxA3AwggD0EQ +aiABNgIAQQAhBQwBCyAPIAsoAhA2AgQLIA8gBTYCAAsgC0EwaiQAIAQoAqgBDQEgBEG4AWoiBSgC +ACIBRQRAQQNBqJzSAEHImNIAENgXDAMLIAQpA7ABIRMgBEHfAGogBEGAAWovAQA7AAAgBEHXAGog +BEH4AGopAwA3AAAgBEHPAGogBEHwAGopAwA3AAAgBCAEKQNoNwBHIAQgEjYAQyAEIAc7AEEgBCAA +OgBAIAQgATYCOCAEIBM3AzAgBCAGNgIsIAQgCTYCKCAEQgEgFSAVQgJRGzcDGCAEIBQ+AiAgBCAU +QiCIPgIkIAUgBEEUaigCADYCACAEQbABaiAEQQxqKQIANwMAIAQgBCkCBDcDqAEgBEGoAWoQniMi +AEUEQCAIIARBGGpB0AAQzU8aDAULIAhCAjcDACAIIAA2AgggBEEYahDeRAwECyAEKAKsASEADAIL +IAQoAqwBCyEAIARBiAFqELVJCyAIQgI3AwAgCCAANgIIIARBBGoQ7UYLIARB0AFqJAAMAQsjAEGA +AmsiAiQAIAEoAgghCCABKAIEIQUgAkEgaiABKAIANgIAIAJBHGogBTYCACACQSRqIAUgCEEFdGo2 +AgAgAiAFNgIYIAJBADYCKCACQZWAgIB4NgIIIAJBADYC2AEgAkGIAWohESACQRhqIRJCAiEUQQIh +BQNAAkAgASEIA0AgAkGAAWohBiMAQUBqIgwkACAMQQhqIAJBCGoiARDBDAJAIAwoAghBlYCAgHhG +BEAgBkGACjsBAAwBCyAMQThqIAxBEGopAwA3AwAgDCAMKQMINwMwIAEQ4EQgAUEIaiAMQSBqKQMA +NwMAIAEgDCkDGDcDACAMQShqIQ5BACEHIwBBQGoiDSQAAkACQAJAAkACQAJAAkACQAJAAkACQEEV +IAxBMGoiAygCAEGAgICAeHMiASABQRVPG0EBaw4PBgUFAAUFBQUFBQUBAgMEBQsgDkEAOgAAIA5C +BCADKQMIIhMgE0IEWhs8AAEMCAsgDUEQaiADQQxqKAIAIgE2AgAgDSADKQIENwMIIA4gDSgCDCAB +EOYcIA1BCGoQiD8MCAsgDiADKAIEIANBCGooAgAQ5hwMBgsgDUEgaiADQQxqKAIANgIAIA0gAykC +BDcDGCANQRhqIgEoAgQhAwJAAkACQAJAAkACQCABKAIIQQ1rDgkBAgQEBAAEBAMECyADLQAAQfAA +Rw0DIAMtAAFB4QBHDQMgAy0AAkHyAEcNAyADLQADQeUARw0DIAMtAARB7gBHDQMgAy0ABUH0AEcN +AyADLQAGQd8ARw0DIAMtAAdB8gBHDQMgAy0ACEHhAEcNAyADLQAJQfQARw0DIAMtAApB4wBHDQMg +Ay0AC0HoAEcNAyADLQAMQeUARw0DIAMtAA1B9ABHDQMgAy0ADkHfAEcNAyADLQAPQesARw0DIAMt +ABBB5QBHDQMgAy0AEUH5AEcNAwwECyADLQAAQfIARw0CIAMtAAFB4QBHDQIgAy0AAkH0AEcNAiAD +LQADQeMARw0CIAMtAARB6ABHDQIgAy0ABUHlAEcNAiADLQAGQfQARw0CIAMtAAdB3wBHDQIgAy0A +CEHjAEcNAiADLQAJQe8ARw0CIAMtAApB9QBHDQIgAy0AC0HuAEcNAkEBIQcgAy0ADEH0AEcNAgwD +CyADLQAAQeEARw0BIAMtAAFB4wBHDQEgAy0AAkH0AEcNASADLQADQekARw0BIAMtAARB9gBHDQEg +Ay0ABUHlAEcNASADLQAGQd8ARw0BIAMtAAdB8gBHDQEgAy0ACEHhAEcNASADLQAJQfQARw0BIAMt +AApB4wBHDQEgAy0AC0HoAEcNASADLQAMQeUARw0BQQIhByADLQANQfQARw0BDAILIAMtAABB8wBH +DQAgAy0AAUH5AEcNACADLQACQe0ARw0AIAMtAANB7QBHDQAgAy0ABEHlAEcNACADLQAFQfQARw0A +IAMtAAZB8gBHDQAgAy0AB0HpAEcNACADLQAIQeMARw0AIAMtAAlB3wBHDQAgAy0ACkHrAEcNACAD +LQALQeUARw0AIAMtAAxB+QBHDQAgAy0ADUHfAEcNACADLQAOQfIARw0AIAMtAA9B4QBHDQAgAy0A +EEH0AEcNACADLQARQeMARw0AIAMtABJB6ABHDQAgAy0AE0HlAEcNAEEDIQcgAy0AFEH0AEYNAQtB +BCEHCyAOQQA6AAAgDiAHOgABIAEQiD8MBgsgAygCBCEBAkACQAJAAkAgA0EIaigCAEENaw4JAQIG +BgYABgYDBgsgAS0AAEHwAEcNBSABLQABQeEARw0FIAEtAAJB8gBHDQUgAS0AA0HlAEcNBSABLQAE +Qe4ARw0FIAEtAAVB9ABHDQUgAS0ABkHfAEcNBSABLQAHQfIARw0FIAEtAAhB4QBHDQUgAS0ACUH0 +AEcNBSABLQAKQeMARw0FIAEtAAtB6ABHDQUgAS0ADEHlAEcNBSABLQANQfQARw0FIAEtAA5B3wBH +DQUgAS0AD0HrAEcNBSABLQAQQeUARw0FIAEtABFB+QBHDQUMBgsgAS0AAEHyAEcNBCABLQABQeEA +Rw0EIAEtAAJB9ABHDQQgAS0AA0HjAEcNBCABLQAEQegARw0EIAEtAAVB5QBHDQQgAS0ABkH0AEcN +BCABLQAHQd8ARw0EIAEtAAhB4wBHDQQgAS0ACUHvAEcNBCABLQAKQfUARw0EIAEtAAtB7gBHDQRB +ASEHIAEtAAxB9ABHDQQMBQsgAS0AAEHhAEcNAyABLQABQeMARw0DIAEtAAJB9ABHDQMgAS0AA0Hp +AEcNAyABLQAEQfYARw0DIAEtAAVB5QBHDQMgAS0ABkHfAEcNAyABLQAHQfIARw0DIAEtAAhB4QBH +DQMgAS0ACUH0AEcNAyABLQAKQeMARw0DIAEtAAtB6ABHDQMgAS0ADEHlAEcNA0ECIQcgAS0ADUH0 +AEcNAwwECyABLQAAQfMARw0CIAEtAAFB+QBHDQIgAS0AAkHtAEcNAiABLQADQe0ARw0CIAEtAARB +5QBHDQIgAS0ABUH0AEcNAiABLQAGQfIARw0CIAEtAAdB6QBHDQIgAS0ACEHjAEcNAiABLQAJQd8A +Rw0CIAEtAApB6wBHDQIgAS0AC0HlAEcNAiABLQAMQfkARw0CIAEtAA1B3wBHDQIgAS0ADkHyAEcN +AiABLQAPQeEARw0CIAEtABBB9ABHDQIgAS0AEUHjAEcNAiABLQASQegARw0CIAEtABNB5QBHDQJB +AyEHIAEtABRB9ABHDQIMAwsgDUEwaiADQQhqKQMANwMAIA0gAykDADcDKCANQShqIA1BP2pB4JnS +ABCDNiEBIA5BAToAACAOIAE2AgQMBAsgDiADLQAEEPQ7DAILQQQhBwsgDkEAOgAAIA4gBzoAAQsg +AxDlHwsgDUFAayQAIAYCfyAMLQAoRQRAIAYgDC0AKToAAUEADAELIAYgDCgCLDYCBEEBCzoAAAsg +DEFAayQAAkACQAJAAkACQAJAAkACQAJAAkAgAi0AgAFFBEAgAi0AgQEiAUEFRg0EAkACQCABDgQB +AwQFAAsgAkEIahDSJiIBRQ0MDAcLIAVBAkcEQCACIAg2AswBIAIgCjYCyAFBACEFQbCc0gBBEhDt +HyEBDAkLIwBBIGsiBSQAIAJBCGoiASkDACETIAFBlYCAgHg2AgAgBUEIaiABQQhqKQMANwMAIAUg +EzcDACAFQRBqIgEgBRCwMiACQYABaiABELUTIAVBIGokACACLQCAAUUNCgsgAiAINgLMASACIAo2 +AsgBIAIoAoQBIQEMBgsgFEICUgRAIAIgCDYCzAEgAiAKNgLIAUEAIQVB75vSAEENEO0fIQEMBwsg +AkGAAWogAkEIahDTJiACKQOAASIUQgJSBEAgAigCjAEhBCACKAKIASELDAoLIAIgCDYCzAEgAiAK +NgLIASACKAKIASEBDAULIApFDQIgAiAINgLMASACIAo2AsgBQQAhBUHCnNIAQQ4Q7R8hAQwFCyAC +KALYAQRAIAIgCDYCzAEgAiAKNgLIAUEAIQVB0JzSAEEVEO0fIQEMBQsjAEEgayIGJAAgAkEIaiIB +KQMAIRMgAUGVgICAeDYCACAGQQhqIAFBCGopAwA3AwAgBiATNwMAIAZBEGoiASAGELAyIAJBgAFq +IAEQhkcgBkEgaiQAIAIoAogBIgcEQCACKAKEASEGIAIoAoABIQEgAigC2AEEQCACQdABahC0SAsg +AiAHNgLYASACIAY2AtQBIAIgATYC0AEMCAsgAiAINgLMASACIAo2AsgBIAIoAoABIQEMAwsgAiAI +NgLMASACIAo2AsgBQQAhASAFQQJHBEAgAkGYAWogAkHAAWovAQA7AQAgAkGQAWogAkG4AWopAwA3 +AwAgAkGIAWogAkGwAWopAwA3AwAgAiACKQOoATcDgAEgBSEBCyAKQQBHIQUgCkUEQEHCnNIAQQ4Q +7B8hAQwECyACIAg2AuQBIAIgCjYC4AEgAigC2AEiBkUEQEHQnNIAQRUQ7B8hASACQeABahC1SQwE +CyACQecAaiACQYgBaikDADcAACACQe8AaiACQZABaikDADcAACACQfcAaiACQZgBai8BADsAACAC +IAIpA4ABNwBfIAIgDzYAWyACIAk7AFkgAiABOgBYIAIgBjYCUCACIAIpA9ABNwNIIAIgCDYCRCAC +IAo2AkAgAkIBIBQgFEICURs3AzAgAiALrSAErUIghoQiEz4COCACIBNCIIg+AjwgAkGAAWoiASAC +QQhqQSgQzU8aIAEQ1BsiAUUEQCAAIAJBMGpB0AAQzU8aDAULIABCAjcDACAAIAE2AgggAkEwahDe +RAwECyMAQSBrIgYkACACQQhqIgEpAwAhEyABQZWAgIB4NgIAIAZBCGogAUEIaikDADcDACAGIBM3 +AwAgBkEQaiIBIAYQsDIgAkGAAWogARD1RiAGQSBqJAAgAigChAEhASACKAKAASIKDQdBACEKCyAC +IAg2AswBIAIgCjYCyAELQQAhBQsgAigC2AEEQCACQdABahC0SAsgBSAKRXJFBEAgAkHIAWoQtUkL +IABCAjcDACAAIAE2AgggAigCGARAIBIQ2C8LIAJBCGoQ30QLIAJBgAJqJAAMAgsgAkHwAWogEUEQ +aikCACITNwMAIAJBsAFqIBFBCGopAgA3AwAgAkG4AWogEzcDACACQcABaiARQRhqLwEAOwEAIAIg +ESkCADcDqAEgAigChAEhDyACLwGCASEJIAItAIEBIQUMAAsACwsLIBBBIGokAAvCGwIQfwJ+IwBB +IGsiCSQAAkACQAJAAkBBFSABKAIAQYCAgIB4cyIDIANBFU8bQRRrDgIBAgALIAlBEGogAUEIaikD +ADcDACAJIAEpAwA3AwggCUEIaiAJQR9qQbCZ0gAQgzYhASAAQgI3AwAgACABNgIIDAILIwBB0AFr +IgMkACABQQRqIgIoAgghBCACKAIEIQEgAigCACECIANBADYCJCADIAI2AhwgAyABNgIYIAMgATYC +FCADIAEgBEEEdGo2AiBBACECIwBBMGsiASQAIAFBEGogA0EUaiIEENEgIANBCGoiBSABKAIQQZWA +gIB4RwR/IAFBKGogAUEYaikDADcDACAEIAQoAhBBAWo2AhAgASABKQMQNwMgIAFBCGogAUEgahCM +LiABKAIIIQIgASgCDAVBAAs2AgQgBSACNgIAIAFBMGokACADKAIMIQQCQAJAAkAgAygCCA0AIARF +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 +AWogAkHoA2opAwA3AwAgAkG4AWogAkHwA2otAAA6AAAgAiACKQOABDcDYCACIAU6AMQBIAIgAikD +2AM3A6ABIAJBmAFqIAJBqANqLwEAOwEAIAJBkAFqIAJBoANqKQMANwMAIAJBiAFqIAJBmANqKQMA +NwMAIAIgAikDkAM3A4ABIAIgBzYCwAFBAAwDCyACKAKsAgs2AMEBC0EAIQZBAQshAEEBIQcgASAB +LQAcQQFqOgAcIAEQnwwhBCACQa8CaiACQcQBai0AADoAACACQbgCaiACQagBaikDADcCACACQcAC +aiACQbABaikDADcCACACQcgCaiACQbgBai0AADoAACACQdcCaiACQYgBaikDADcAACACQd8CaiAC +QZABaikDADcAACACQecCaiACQZgBai8BADsAACACIAM7AKkCIAIgADoAqAIgAiAINgDLAiACIAo7 +AMkCIAIgAigCwAE2AKsCIAIgAikDoAE3ArACIAIgAikDgAE3AM8CIAJB9wJqIAJB6ABqKQMANwAA +IAJB/wJqIAJB8ABqKQMANwAAIAJBhwNqIAJB+ABqLwEAOwAAIAIgDTYA6wIgAiAOOwDpAiACIAQ2 +AowDIAIgAikDYDcA7wIgAA0BIAQiA0UEQCACQd4AaiACQagCakEBciIAQQJqLQAAOgAAIAIgAC8A +ADsBXCACQawCaigCACEDIAIgAkGwAmpB2QAQzU8aCyAERSEAIARBAEchByAGDQIgAkGsAmoQ5RkM +AgsMBgsgAigCrAIhA0EBIQALIARFIABFckUEQCACQYwDahDlGQsgB0UNAQwCCyABIAEtABxBAWsi +ADoAHCAAQf8BcUUNAyABQRRqIgAgACgCAEEBajYCACACQQE6ALQDIAIgATYCsAMgAkGwAmohBCAC +QagCakEBciELQQEhCANAIwBBIGsiACQAIABBDGogAkGwA2oiDygCACIFELwWAkAgAkGoAmoiAwJ/ +AkAgAC0ADEUEQCAALQANRQRAIABBAzYCFCAFIABBFGoQgDEhBSADQQE6AAAgAyAFNgIEDAQLAkAC +QCAALQAOIgxBLEcEQCAMQf0ARwRAIA8tAAQNAiAAQQg2AhQgBSAAQRRqEIAxIQUgA0EBOgAAIAMg +BTYCBAwHCyADQYAIOwEADAYLIA8tAAQNACAFQRRqIgwgDCgCAEEBajYCACAAQRRqIAUQvBYgAC0A +FARAIAMgACgCGDYCBCADQQE6AAAMBgsgAC0AFQRAIAAtABYhDAwCCyAAQQU2AhQgBSAAQRRqEIAx +IQUgA0EBOgAAIAMgBTYCBAwFCyAPQQA6AAQLAkAgDEEiRwRAIAxB/QBGDQEgAEERNgIUIAUgAEEU +ahCAMSEFIANBAToAACADIAU2AgQMBQsgBUEANgIIIAVBFGoiDCAMKAIAQQFqNgIAIABBFGogBUEM +aiAFEPsFIAMCfyAAKAIUQQJGBEAgACgCGAwBCyAAQQxqIAAoAhggACgCHBCgIyAALQAMRQ0DIAAo +AhALNgIEQQEMAwsgAEEVNgIUIAUgAEEUahCAMSEFIANBAToAACADIAU2AgQMAwsgAyAAKAIQNgIE +IANBAToAAAwCCyADIAAtAA06AAFBAAs6AAALIABBIGokAAJAAn8CQAJAAkACQAJAIAItAKgCDQAg +Ai0AqQIiAEEERg0BAkACQAJAIAAOAwABAgULIAcEQEHsl9IAQQwQ7R8hAAwHCyACQagCaiACQbAD +ahCHOSACLQCoAg0CIAJB1gNqIAtBAmotAAA6AAAgAkGQBGogBEEQaikCACIQNwMAIAJBwANqIARB +CGopAgA3AwAgAkHIA2ogEDcDACACQdADaiAEQRhqLQAAOgAAIAIgCy8AADsB1AMgAiAEKQIANwO4 +AyACKAKsAiEGQQEhBwwJCyAIQQFxRQRAQfiX0gBBCBDtHyEADAYLIAJBqAJqIAJBsANqEIc5IAIt +AKgCDQEgAkH6A2ogC0ECai0AADoAACACQZAEaiAEQRBqKQIAIhA3AwAgAkHgA2ogBEEIaikCADcD +ACACQegDaiAQNwMAIAJB8ANqIARBGGotAAA6AAAgAiALLwAAOwH4AyACIAQpAgA3A9gDIAIoAqwC +IQ1BACEIDAgLIApB/wFxBEBBgJjSAEEMEO0fIQAMBQsgAkGoAmogAkGwA2oQhzkgAi0AqAJFDQYL +IAIoAqwCIQAMAwsgB0UNASAIQQFxBEBB+JfSAEEIEOwfIQAMAwsgCkH/AXFFBEBBgJjSAEEMEOwf +IQAMAwsgAkHmAWogAkH+A2otAAA6AAAgAkHQAWogAkGYA2opAwA3AwAgAkHYAWogAkGgA2opAwA3 +AwAgAkHgAWogAkGoA2otAAA6AAAgAkGmAmogAkHWA2otAAA6AAAgAkGgAmogAkHQA2otAAA6AAAg +AkGYAmogAkHIA2opAwA3AwAgAkGQAmogAkHAA2opAwA3AwAgAiACLwH8AzsB5AEgAiACKQOQAzcD +yAEgAiACLwHUAzsBpAIgAiACKQO4AzcDiAIgAkGGAmogAkH6A2otAAA6AAAgAkGAAmogAkHwA2ot +AAA6AAAgAkH4AWogAkHoA2opAwA3AwAgAkHwAWogAkHgA2opAwA3AwAgAiACLwH4AzsBhAIgAiAC +KQPYAzcD6AFBASEKIAYhAEEADAMLIAJBsANqEKY/IgBFDQQMAQtB7JfSAEEMEOwfIQALQQAhCkEB +CyEDQQEhByABIAEtABxBAWo6ABwgARCNEyEGIAJBuAJqIAJBkAJqKQMANwIAIAJBwAJqIAJBmAJq +KQMANwIAIAJByAJqIAJBoAJqLQAAOgAAIAJBywJqIAJBhgJqLQAAOgAAIAIgAzoAqAIgAiAANgKs +AiACIAIvAaQCOwCpAiACIAJBpgJqLQAAOgCrAiACIAIpA4gCNwKwAiACIAIvAYQCOwDJAiACQdgC +aiACQfABaikDADcCACACQeACaiACQfgBaikDADcCACACQegCaiACQYACai0AADoAACACQesCaiAC +QeYBai0AADoAACACQfgCaiACQdABaikDADcCACACQYADaiACQdgBaikDADcCACACQYgDaiACQeAB +ai0AADoAACACIA02AswCIAIgDjYC7AIgAiACKQPoATcC0AIgAiACLwHkATsA6QIgAiACKQPIATcC +8AIgAiAGNgKMAwJAIAMEQEEBIQggACEDDAELIAYiA0UEQCACQd4AaiACQaYCai0AADoAACACIAIv +AaQCOwFcIAIgAkGwAmpB2QAQzU8aIAAhAwsgBkEARyEIIAZFIQcgCg0AIAJBrAJqEOUZCyAGRSAH +RXJFBEAgAkGMA2oQ5RkLIAgNAwwCCyACQf4DaiALQQJqLQAAOgAAIAJBkARqIARBEGopAgAiEDcD +ACACQZgDaiAEQQhqKQIANwMAIAJBoANqIBA3AwAgAkGoA2ogBEEYai0AADoAACACIAsvAAA7AfwD +IAIgBCkCADcDkAMgAigCrAIhDkEBIQoMAAsACyAJIAIvAVw7AAEgCUEDaiACQd4Aai0AADoAACAJ +QQhqIAJB2QAQzU8aIAlBBGogAzYCAEEADAELIAkgAyABENgjNgIEQQELOgAADAELIAJBGDYCqAIg +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 +xgFqIAJBN2otAAA6AAAgAiACLwA1OwHEASACLQA0IQcgAkH4AWogAkHoAGpBKBDNTxogAkH2AWog +AkHmAGotAAA6AAAgAiACLwFkOwH0AQsgBCACQcgBakEoEM1PIgRBK2ogAkHGAWotAAA6AAAgBCAC +LwHEATsAKSAEQSxqIAJB+AFqQSgQzU8aIARB1wBqIAJB9gFqLQAAOgAAIAQgAi8B9AE7AFUgBCAG +OgBUIAQgBzoAKAwDCyACQcQAaiACQaABaikDACIONwIAIAIgAikDmAEiDzcCPCAEQQhqIA43AgAg +BCAPNwIAIARBAzoAVCACQQxqEMBODAILIAQgAikBkgE3AQIgBEEIaiACQZgBaikBADcBACACLQCR +ASEHIARBAzoAVCAEIAc6AAEgBCAGOgAADAELIAJBxABqIAJBoAFqKQMAIg43AgAgAiACKQOYASIP +NwI8IARBCGogDjcCACAEIA83AgAgBEEDOgBUCyACQaACaiQAIAEtAJwEIgJBA0YNBSABQfACaiIE +IAFByANqIgZB1AAQzU8aIAFB7wJqIAFBnwRqLQAAOgAAIAEgAS8AnQQ7AO0CIAFBmAJqIARB1AAQ +zU8aIAEgAjoA7AIgBiAIEMAVIAEtAMgDIgJBBEYEQCABKALMAyECIAFB5ABqIAFBiAFqQSQQzU8a +IANBrAFqIAFB6AFqKQMANwAAIANBpAFqIAFB4AFqKQMANwAAIANBnAFqIAFB2AFqKQMANwAAIANB +lAFqIAEpA9ABNwAAIAFBCGogAUGIAmpBA3IiBEEIaigAADYCACABIAQpAAA3AwAgAUEMaiABQZgC +akHYABDNTxogA0EEaiABQYgBEM1PGiADQbQBaiACNgIAIANBkAFqIAs2AgAgA0GMAWogCTYCACAD +QQA2AgAMBwsgA0ELaiABLQDLAzoAACADQQlqIAEvAMkDOwAAIAEoAswDIQQgA0EQaiABKQPQAzcD +ACADQQxqIAQ2AgAgAyACOgAIIANBATYCACABQZgCahDrRCABQfgBahDCTiABQfQBahCLSiABQYgB +ahDBTgwGCyADQQtqIAEtAMsDOgAAIANBCWogAS8AyQM7AAAgASgCzAMhBCADQRBqIAEpA9ADNwMA +IANBDGogBDYCACADIAI6AAggA0EBNgIADAULIAFBuAFqIAFB2ANqKQMAIg43AgAgASABKQPQAyIP +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 +AkEAIQRBnJTSAEESEO0fIQFBAQwMCyACQRhqIAJBjANqEOQnIAIoAhwhByACKAIYRQ0FIAIgAzoA +5AMgAiAUNwOYAyACIAk2AsADQQAhBCACQQA2ApQDIAIgADYC7AIgAiAINgLoAiAHIQFBACEHQQEM +CwsgBkUEQCACIAM6AOQDIAIgFDcDmAMgAiAJNgLAAyACIAc2ApQDIAIgADYC7AIgAiAINgLoAkEA +IQRBrpTSAEENEO0fIQFBAQwLCyACQYACaiEBAkAgAkGMA2ooAgAiBRDnFiIGRQRAIAEgBRCPRwwB +CyABQQE2AgAgASAGNgIECyACKAKAAkUNAyACIAM6AOQDQgAhFAwHCyADQQNHBEAgAiADOgDkAyAC +IBQ3A5gDIAIgCTYCwAMgAiAHNgKUAyACIAA2AuwCIAIgCDYC6AJBASEAQQAhBEG7lNIAQQ0Q7R8h +AUEBIQUMDAsgAkGAAmohAQJAIAJBjANqKAIAIgUQ5xYiA0UEQCABIAUQjkcMAQsgAUEDOgAkIAEg +AzYCAAsgAi0ApAIiA0EDRwRAIA4gESkCADcCACAQIBMvAAA7AAAgDkEIaiARQQhqKQIANwIAIA5B +EGogEUEQaikCADcCACAOQRhqIBFBGGopAgA3AgAgEEECaiATQQJqLQAAOgAAIAIoAoACIQkMBAsg +AiAHNgKUAyACIBQ3A5gDIAIgADYC7AIgAiAINgLoAiACKAKAAiEBQQEhAEEAIQRBASEFQQMMDAsg +AkGMA2oQpj8iAUUNAiACIAM6AOQDIAIgFDcDmAMgAiAJNgLAAyACIAc2ApQDIAIgADYC7AIgAiAI +NgLoAgwHCyACIAM6AOQDIAIgFDcDmAMgAiAJNgLAAyACIAc2ApQDIAIgADYC7AIgAiAINgLoAiAI +QQJHIgRFBEBBt5DSAEELEOwfIQFBAQwICyACIAA2AoQCIAIgCDYCgAICfyAHIgFFBEAgAkEQakGc +lNIAQRIQiS4gAigCFCEBQQEgAigCEA0BGgsgAiABNgLgAgJAIAYEQEGulNIAQQ0Q7B8hAQwBCyAD +QQNHBEAgAkH4AWogDkEYaikCADcDACACQfABaiAOQRBqKQIANwMAIAJB6AFqIA5BCGopAgA3AwAg +AkHeAWogEEECai0AADoAACACQcABaiAMQQhqKQMANwMAIAJByAFqIAxBEGopAwA3AwAgAkHQAWog +DEEYaikDADcDACACIA4pAgA3A+ABIAIgEC8AADsB3AEgAiAMKQMANwO4ASADIQYgCCEFDA4LQbuU +0gBBDRDsHyEBIAwQ7UMLIAJB4AJqEO9CIAYLIQUgAkGAAmoQjiogB0UMCAsgDCAPKQMANwMAIAxB +GGogD0EYaikDADcDACAMQRBqIA9BEGopAwA3AwAgDEEIaiAPQQhqKQMANwMAQgEhFEEAIQYMAAsA +CyACQbABaiAIKQMANwMAIAJBqAFqIAMpAwA3AwAgAkGgAWogBCkDADcDACACQZYBaiAJLQAAOgAA +IAJB+ABqIAJBoANqKQMANwMAIAJBgAFqIAJBqANqKQMANwMAIAJBiAFqIAJBsANqKQMANwMAIAIg +AikDwAM3A5gBIAIgAi8BiAM7AZQBIAIgAikDmAM3A3AgACEIIAEhAAwOCyACKAKIAiEADAoLIAIg +FDcDmAMgAiAJNgLAAyACIAc2ApQDIAIgADYC7AILIAIgCDYC6AIgAigChAIhAQtBACEEQQELIQVB +AQshAEEDIANBA0YNARoLIAJBwANqEO5DIAMLIQYgBUEBcUUgFFByRQRAIAwQ7UMLIAdBAEcgAHEE +QCACQZQDahDvQgtBAiEFIAQgCEECRnJFBEAgAkHoAmoQjioLIAEhAAsgCiAKLQAcQQFqOgAcIAoQ +jRMhByACQZQCaiACQegBaikDADcCACACQZwCaiACQfABaikDADcCACACQaQCaiACQfgBaikDADcC +ACACQa8CaiACQd4Bai0AADoAACACQbgCaiACQcABaikDADcDACACQcACaiACQcgBaikDADcDACAC +QcgCaiACQdABaikDADcDACACIAk2AogCIAIgADYChAIgAiAGOgCsAiACIAIpA+ABNwKMAiACIAIv +AdwBOwCtAiACIAIpA7gBNwOwAiACIAU2AoACIAIgBzYC2AIgAiABNgLQAgJAIAVBAkcEQCAHDQEg +AkEgaiACQYgCakHQABDNTxoMCQsgB0UNByACQdgCahDlGQwHCyACQYACahC8PEECIQUgByEADAcL +IAJBGDYCgAIgCiACQYACahCAMQshACANQQI2AgAgDSAANgIEDAcLIAJBlANqEO9CCyACQYwDahCO +KgtBAiEFCyAKIAotABxBAWo6ABwgChCfDCEBIAJBlAJqIAJBoAFqKQMANwIAIAJBnAJqIAJBqAFq +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 +CyACIA83ApQBIAIgBzYCkAEgAiAENgKMASACIBA3AoQBIAIgBjYCgAEgAiAJNgJ8IBFQDQQgAwRA +QdeT0gBBCxDsHyEADAYLIAQNA0Hik9IAQQwQ7B8hACAMEMMZDAULIAJB9ABqEKY/IgBFDQsgAiAP +NwKUASACIAc2ApABIAIgBDYCjAEgAiAQNwKEASACIAY2AoABCyACIAk2AnwLQQEhAwwCCyACQThq +IAxBCGooAgA2AgAgAiAMKQIANwMwQQAhBkEBDAULQQEhA0HMk9IAQQsQ7B8hAAsgBA0BDAILIAIp +AkghD0EBIQQgACEHDAULIA4QxBkLQQEhBiADRSAJRXJFBEAgDBDDGQtBAAshA0EBIQkgCCAILQAc +QQFqOgAcIAgQjRMhASACQdgAaiACQThqKAIANgIAIAIgEjcDSCACIAA2AkQgAiAGNgJAIAIgATYC +aCACIA83A2AgAiAHNgJcIAIgAikDMDcDUCACQcgAaiEHAkACQAJAAkAgBkUEQCABRQ0CQQEhBCAB +IQAgAw0BDAMLQQEhBCADRQ0DCyAHEO1DIAYhCQwCCyACQRhqIAdBGGopAwA3AwAgAkEQaiAHQRBq +KQMANwMAIAJBCGogB0EIaikDADcDACACIAcpAwA3AwBBACEEIAMNCwsgAUUhCSACQUBrQQRyEOUZ +IAEhAAsgAUUgCUVyDQkgAkHoAGoQ5RkMCQsgAikCSCEQQQEhCUEAIQMgACEGDAELIAIpA0ghEkIB +IREMAAsACyACKAJEIQAMAwsgAigCSCEADAILIAJBGDYCQCAIIAJBQGsQgDELIQAgCkEBNgIAIAog +ADYCBAwFC0EACyEDQQEhBCAIIAgtABxBAWo6ABwgCBCfDCEBIAJB2ABqIAJBKGooAgA2AgAgAiAJ +NgJMIAIgBjYCSCACIAA2AkQgAiAHNgJAIAIgATYCaCACIBE3A2AgAiAMNgJcIAIgAikDIDcDUCAC +QcgAaiEGIAFFAn8CQAJAAkAgB0UEQCABRQ0CIAEhACADDQEMAwtBASADRQ0DGgsgBhDtQyAHDAIL +IAJBGGogBkEYaikDADcDACACQRBqIAZBEGopAwA3AwAgAkEIaiAGQQhqKQMANwMAIAIgBikDADcD +AEEAIQQgAw0CCyACQUBrQQRyEOUZIAEiAEULRXINACACQegAahDlGQsgBA0AIAogAikDADcDCCAK +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 +AyAINgKABCAnIANB8AVqQcgBEM1PGgwDC0EAIQgLQQELIRRBASECQQEMAwsgAygC6AMhAQwBCwtB +ASEUQQEhAkEAIQhBAQshHiADQeQFahCsSwJAIBRFDQAgAygC1AVFDQAgIxDMGQsgAygCgARBgYCA +gHhHIAJxBEAgA0GABGoQ0T8LIB4gF0EAR3EEQCADQfgDahD6PgsgHUUgCHJFBEAgA0HwA2oQ+j4L +QYGAgIB4IQgLIBIgEi0AJEEBajoAJCASEI0TIQIgAyABNgLkASADIAg2AuABIANB6AFqIANBGGpB +yAEQzU8hDyADQdADaiADQRBqKAIANgIAIAMgLTcDwAMgAyAUNgK8AyADIBo2ArgDIAMgHjYCtAMg +AyALNgKwAyADIAI2AuADIAMgKzcD2AMgAyAXNgLUAyADIAMpAwg3A8gDIAhBgYCAgHhHBEAgAkUN +AiADQeABahCsNyACIQEMAQsgAkUNACADQeADahDfHQsgEiABELxSIQEgGEGBgICAeDYCACAYIAE2 +AgQMAgsgGEEIaiAPQfgBEM1PGiAYIAE2AgQgGCAINgIADAELIANBGDYC4AEgEiADQeABahCAMSEB +IBhBgYCAgHg2AgAgGCABNgIECyADQeAHaiQAAkAgESgCwAJBgYCAgHhHBEAgEUFAayARQcACakGA +AhDNTxogEUEYahDVIyIBRQRAIAAgEUFAa0GAAhDNTxoMAgsgAEGBgICAeDYCACAAIAE2AgQgEUFA +axCsNwwBCyAAIBEoAsQCNgIEIABBgYCAgHg2AgALIBFBGGoQiD8gEUHABGokAAugBQECfyABKAIA +IQIgASgCBCEDIwBB8AFrIgEkACABIAIgAxCnOSABQRhqIgIgARDJLSABQZgBaiACEKQCAkAgASgC +mAFBk4CAgHhHBEAgAUFAayABQZgBakHYABDNTxogAUEYahDVIyICRQRAIAAgAUFAa0HYABDNTxoM +AgsgAEGTgICAeDYCACAAIAI2AgQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAQQwg +ASgCQEH+////B2oiACAAQRFPGw4QAQIDBAUGBwgJCgsMDQ4PEAALIAFB9ABqEPo+AkAgASgCREED +RgRAAkACQAJAAkACQCABQcgAaigCAA4EAQIDBAALIAFBzABqKAIAIgBBIGoQkEUgAEEoahDMGSAA +EJgEDAULIAFBzABqELU1DAQLIAFBzABqELU1DAMLIAFBzABqELU1DAILIAFBzABqELU1DAELIAFB +QGtBBHIQvz8gAUHQAGooAgBBBU8EQCABQdQAahD6PgsgAUHcAGoQ+0AgAUHoAGoQzBkLIAFB/ABq +EMwZDBELIAFBQGtBBHIQozsMEAsgAUFAa0EEchC6PwwPCyABQUBrQQRyEKpHDA4LIAFBQGtBBHIQ +q0cMDQsgAUFAa0EEchCsRwwMCyABQUBrQQRyEKdHDAsLIAFBQGtBBHIQrUcMCgsgAUFAa0EEchCu +RwwJCyABQUBrQQRyEK9HDAgLIAFByABqELBHDAcLIAFBQGtBBHIQwD8MBgsgAUFAa0EEchDBPwwF +CyABQUBrELg/DAQLIAFBQGtBBHIQqTkMAwsgAUFAa0EEchDCPwwCCyABQUBrQQRyELFHDAELIAAg +ASgCnAE2AgQgAEGTgICAeDYCAAsgAUEYahCIPyABQfABaiQACyEAIABCjp/9rra/re55NwMIIABC +1qWFjoOWkOOKfzcDAAv3AQEIfyABKAIAIQIgASgCBCEDIwBBQGoiASQAIAFBIGpBuLjFAEEeQQEQ +xzACQCABKAIgQQJHBEAgAUEYaiIEIAFBOGoiBSkDADcDACABQRBqIgYgAUEwaiIHKQMANwMAIAFB +CGoiCCABQShqIgkpAwA3AwAgASABKQMgNwMAIAFBuLjFAEEeIAIgAxD4EiICRQRAIAUgBCkDADcD +ACAHIAYpAwA3AwAgCSAIKQMANwMAIAEgASkDADcDICAAIAFBIGoQrh8MAgsgAEEGOgAAIAAgAjYC +BCABEMQ4DAELIAAgASgCJDYCBCAAQQY6AAALIAFBQGskAAsRACAAKAIAIAAoAgQgARCoEgsTACAA +KAIAGiAAKAIEGiABENlRCxAAIAAoAsABQRRqQQAQ8kULEAAgACgC8AdBFGpBABDyRQsQACAAKALI +A0EUakEAEPJFCxAAIAAoAuwBQRRqQQAQ8kULDwAgABCGEyAAQQRqEPo+CxEAIAAgASgCACABKAIE +EN8lCw8AIAAQkQUgAEE8ahCgQgsTACAAQSg2AgQgAEGE3MYANgIACyEAIABCwLjN4ZC4js+MfzcD +CCAAQrOuztr15LLBBzcDAAshACAAQui97K7b2pu+vn83AwggAELw3I7+8NWgkXs3AwALIQAgAEKq +saDjr9K7uP0ANwMIIABC7qCL+N7rhex7NwMACyAAIABCs52G/8Tp5dQXNwMIIABCl9rTivzVnpEl +NwMACyAAIABC9aOkncqOkaAvNwMIIABCkfnntISu4Lg+NwMACyAAIABC7/KngrP4uaNoNwMIIABC +7f3R36L09P9vNwMACyAAIABC3uGvz6339PN4NwMIIABCnJGEg4bxkpJNNwMACyIAIABCvIXTxsaG +g4D9ADcDCCAAQrmFkpOBhNPbiH83AwALIgAgAEL/rMb1voXM5Z5/NwMIIABCgKX1oIfmsMPMADcD +AAsgACAAQsumq6Lh2PvsPTcDCCAAQoH4ko3j1IafQjcDAAshACAAQoafgoixmtPJ7AA3AwggAEKZ +3ZH3oP3J3nA3AwALIAAgAEKd8uXZpcetpxk3AwggAELZuMewvOC61gs3AwALIQAgAELy9dXr4LDp +2U43AwggAELHssbJgcjWrfYANwMACyEAIABCwanu2OSeos7kADcDCCAAQpLnlJz9ncGBfDcDAAsh +ACAAQoGmjdH5tOCbJzcDCCAAQs/pmZqT5KP23QA3AwALIQAgAELxyPj/3vOpq4t/NwMIIABC3KXE +ifPjsehjNwMACyAAIABChtat/7fZr+ZPNwMIIABC7aS1lLX50dw3NwMACxMAIABBDTYCBCAAQaji +xgA2AgALDAAgABDRQyAAEJgECwwAIAAQxkMgABCYBAsMACAAEMpDIAAQmAQLDAAgABDOQyAAEJgE +CwwAIAAQy0MgABCYBAsMACAAEMxDIAAQmAQLDAAgABDEQyAAEJgECwwAIAAQ0EMgABCYBAsMACAA +EM9DIAAQmAQLDAAgABDNQyAAEJgECwwAIAAQxUMgABCYBAsMACAAEMdDIAAQmAQLEwAgAEHU6MYA +NgIEIAAgATYCAAsTACAAQZDpxgA2AgQgACABNgIACxMAIABBzOnGADYCBCAAIAE2AgALEwAgAEGI +6sYANgIEIAAgATYCAAsTACAAQcTqxgA2AgQgACABNgIACxMAIABBgOvGADYCBCAAIAE2AgALEwAg +AEG868YANgIEIAAgATYCAAsTACAAQfjrxgA2AgQgACABNgIACxMAIABBtOzGADYCBCAAIAE2AgAL +EwAgAEHw7MYANgIEIAAgATYCAAsTACAAQaztxgA2AgQgACABNgIACxMAIABB6O3GADYCBCAAIAE2 +AgALEwAgAEGk7sYANgIEIAAgATYCAAsbAAJ/IAFBCU8EQCABIAAQ1gcMAQsgABD3AQsLEAAgACAC +NgIEIAAgATYCAAsOACAAIAEgASACahCONQsQACAAEJUoIABBsAFqEN1RCw8AIAAQ+j4gAEEIahDH +QAsQACAAQcgBahC8TCAAEJ4sCw8AIAAQ+0AgAEEMahDMGQsPACAAEPNCIABBBGoQrTkLDwAgABDw +OSAAQQRqEKQZCw8AIAAQxUkgAEEIahCLSgsSACAAKAIIEJY1IABBCGoQi0oLDwAgAEEYahC/PyAA +EM4wCxAAIAAtACRFBEAgABD5OwsLEAAgAC0AGEUEQCAAEIg/CwsiACAAQtT64OSD/5rzn383Awgg +AEKLmPT9npnn7c4ANwMACyAAIABCmsfxxbH80MmVfzcDCCAAQrbOh96OiLQeNwMACxMAIABBKDYC +BCAAQfT9xwA2AgALIAAgAEKdnbmu0Z73sXE3AwggAEKXhMup2q3Zwx43AwALEwAgAEEoNgIEIABB +lITIADYCAAuyAQECfyABKAIAIAEoAgQjAEFAaiIBJAAgAUEANgIYIAFCgICAgBA3AhAgAUE0akHM +iMgANgIAIAFBAzoAPCABQSA2AiwgAUEANgI4IAFBADYCJCABQQA2AhwgASABQRBqNgIwIAFBHGoQ +qh8EQEHkiMgAQTcgAUGcicgAQfiJyAAQiRgACyABQQhqIAFBGGooAgA2AgAgASABKQIQNwMAIAAg +ARDASCABEIg/IAFBQGskAAsRACAAIAEoAgAgASgCBBChAwsRACAAIAEoAgQgASgCCBChAwsQACAA +IAI2AgQgAEEANgIACw4AIAAoAgAgASgCABBDCyEAIABCu77qu9bpi9PZADcDCCAAQozx0b7M7t2w +XzcDAAsTACAAQR82AgQgAEGgycgANgIACxMAIABBKDYCBCAAQbjRyAA2AgALDgAgACABrUL/AYMQ +ii0LDgAgACABrUL/AYMQ1yMLDgAgACABrUL/AYMQiy0LDgAgACABrUL/AYMQpywLDgAgACABrUL/ +AYMQjC0LEwAgAEEfNgIEIABBpNnIADYCAAsRACAAKAIAKAIAIAEgAhCRPwsSACAAKAIAEJY1IAAo +AgQQljULEQAgACABKAIAIAItAAAQpUYLIgAgAELJ7f6tz9DIh/AANwMIIABC7bLMt/KJ8KuafzcD +AAsOACAAIAGtQv8BgxCYLQsOACAAIAGtQv8BgxCOMQsOACAAIAGtQv8BgxCZLQsgACAAQqTyrpGP +jtrBdzcDCCAAQobMycvhpcnjZTcDAAsgACAAQuzVwejAmtzGIjcDCCAAQpnm0tL2tbeJYDcDAAsO +ACAAIAFBsOjIABC4UwsTACAAQSg2AgQgAEHsgskANgIACyEAIABCrPfQ9P/m9f6afzcDCCAAQuab +qIuL5ID+AjcDAAshACAAQtKImqjujfPKHDcDCCAAQvqhpu/b0Jmx/QA3AwALEAAgAEHAACABIAIg +AxCSMQsPACAAEIslIABBBGoQ/CILxQIBBX8jAEFAaiICJABBASEEAkAgASgCACIDKAIAQQFGBEBB +ACEEIANBADYCACACIAMoAgg2AgggAiADNgIoIAJBKGoQ3DUMAQsgAiADNgIICyACIAQ2AgQgAkEE +aiIDIwBBEGsiBCQAIAMoAgAEQCAEIAMoAgQ2AgxBgJnJAEErIARBDGpBrJnJAEHknckAEIkYAAsg +AygCBCAEQRBqJAAQxEFBARDBBiACQThqIgQgAUEYaikCADcDACACQTBqIgUgAUEQaikCADcDACAC +KAIEIgMgAygCBEEBaiIGNgIEIAIgAUEIaikCADcDKCAGRQRAAAsgAUEEahDcNSAAIAJBBGpBJBDN +TyIBIAM2AiQgAUEoaiACKQMoNwIAIAFBMGogBSkDADcCACABQThqIAQpAwA3AgAgAkFAayQAIABB +yg42AkALDgAgACgCACABKAIAEEoLEwAgAEEoNgIEIABBqLHJADYCAAsgACAAQpvc7PbGx/L9CjcD +CCAAQomj7aCaw+CjHjcDAAsTACAAQeSyyQA2AgQgACABNgIACyAAIABCsoGGhJLi3f0nNwMIIABC +++ngyPfXpIolNwMACw4AIAAgASABIAJqEJk1CxEAIAAoAgAgACgCBCABELoDCxEAIAAoAgAgACgC +BCABEMhPCw0AIAAoAgAgAUEDdGoLEAAgACgCACABIAIgAxC+GwsPACAAQRhqEL8/IAAQ5zQLEQAg +ASAAKAIEIAAoAggQ+C8LEAAgAEEANgIIIABBADYCAAsPACAAIAEoAghBCGoQ4iELgwEBAn8gASgC +CEEIaiEBIwBBEGsiAiQAIAJBATYCBAJAIAEgAkEEahDhISIBRQ0AIAEtAAANACAAIAEpAAE3AAEg +AEEZaiABQRlqKQAANwAAIABBEWogAUERaikAADcAACAAQQlqIAFBCWopAAA3AABBASEDCyAAIAM6 +AAAgAkEQaiQACw4AIAAQmhxB/wFxQQFGCw8AIAAQqksgAEEMahD6PgsPACAAEIE/IABBCGoQo0EL +DwAgACgCAEEIaiABEP09Cw8AIAAoAgBBCGogARDJTwsQACAAIAFB9PHJAEEIELRTCxAAIAAgAUG8 +8skAQQUQtFMLJAEBf0EIQQQQpy4iAkKBgICAEDcCACAAIAI2AgQgACABNgIACw8AIABBLGoQrxkg +ABD7QAsPACAAQRhqEOskIAAQlUMLEAAgACgCACABIAIgAxD0QQuZCwIVfwF+IwBBMGsiCCQAIAgg +ACABIAIQlBAgCCgCAARAIAhBKGogCEEQaikCADcDACAIQSBqIAhBCGopAgA3AwAgCCAIKQIANwMY +IwBBMGsiByQAAkAgCEEYaiIJKAIMRQRAIAkoAgghACAHQQhqEJNEIAcoAgwhASAHIAcoAggiAjYC +ECAHIAE2AhQgB0EkaiAHQRBqIAkoAgAgCSgCBBD9IiAHKAIkGiAAQQE2AgggACABNgIEIAAgAjYC +AAwBCyAHQRhqIQ8gCSgCACELIAkoAgQhDCAJQQhqIREjAEFAaiIEJAAgBEEQaiEDIwBBQGoiAiQA +AkACQAJAIAlBDGoiBigCACIKLwFeQQtPBEBBASEFIAYoAggiAEEFTw0BQQQhAQwCCyACQRBqIAYg +CyAMEN0oIANBADYCACADQSBqIAIoAhg2AgAgAyACKQIQNwIYDAILAkACQCAAIgFBBWsOAgIBAAsg +AEEHayEAQQAhBUEGIQEMAQtBACEFQQUhAUEAIQALIAIgATYCDCACIAo2AgQgAiAGKAIENgIIIwBB +EGsiBiQAIAZBCGogAkEEaiIKEJREIg0QwhQgBikDCCEYIAJBEGoiAUEUakEANgIAIAEgDTYCECAB +IBg3AgggASAKKQIANwIAIAZBEGokACACQRRqIAJBJGogBRsoAgAhBiABIAJBIGoiASAFGygCACEF +IAIgADYCPCACIAY2AjggAiAFNgI0IAJBKGogAkE0aiALIAwQ3SggAikCKCEYIAIoAjAhACADQRBq +IAEpAgA3AgAgA0EIaiACQRhqKQIANwIAIAMgAikCEDcCACADQSBqIAA2AgAgAyAYNwIYCyACQUBr +JAAgBEEwaigCACESIARBLGooAgAhEyAEKAIoIRQCQAJAAkAgBCgCECIARQ0AIARBJGooAgAhBSAE +QRxqKAIAIQYgBCgCICELIAQoAhghASAEKAIUIQIDQCAAKAJYIgMEQCAEIAM2AjQgBCAALwFcNgI8 +IAQgAkEBajYCOCAEQRBqIQwjAEEwayIDJAACQCAFIARBNGoiACgCBCINQQFrRgRAAkACQAJAIAAo +AgAiBS8BXkELTwRAQQEhCiAAKAIIIgJBBU8NAUEEIQAMAgsgACABIAYgCxCPIyAMQQA2AgAMAgsC +QAJAIAIiAEEFaw4CAgEACyACQQdrIQJBACEKQQYhAAwBC0EAIQpBBSEAQQAhAgsgAyAANgIIIAMg +DTYCBCADIAU2AgAjAEEQayIAJAAgAygCACINLwFeIRUgAEEIaiADELFEIgUQwhQgBS8BXiIQQQFq +IQ4gEEEMTwRAIA5BDEH0vckAEOMbAAsgACgCDCEQIAAoAgghFiADKAIIIhdBAnQgDWpB5ABqIBUg +F2sgBUHgAGogDhDvOCAAIAUgAygCBCIOEIgjIANBDGoiBSAAKQMANwIQIAVBDGogEDYCACAFIBY2 +AgggBSAONgIEIAUgDTYCACAAQRBqJAAgAyACNgIsIAMgA0EQaiADQSBqIAobKAIANgIoIAMgBSAD +QRxqIgAgChsoAgA2AiQgA0EkaiABIAYgCxCPIyAMQRBqIAApAgA3AgAgDEEIaiADQRRqKQIANwIA +IAwgAykCDDcCAAsgA0EwaiQADAELQYS+yQBBNUG8vskAEOYrAAsgBCgCECIARQ0CIAQoAiAhCyAE +KAIkIQUgBCgCHCEGIAQoAhghASAEKAIUIQIMAQsLIBEoAgAiACgCAEUNASAEQQhqIAAQryggBCAE +KQMINwIQIARBEGogASAGIAsgBRCrGAsgDyASNgIIIA8gEzYCBCAPIBQ2AgAgBEFAayQADAELQaS6 +yQAQo0sACyAJKAIIIgAgACgCCEEBajYCCCAHKAIYGgsgB0EwaiQACyAIQTBqJAALEABBNEEEEKUu +IABBNBDNTwsSAEHAAUEEEKUuIABBwAEQzU8LEgBB1ANBBBClLiAAQdQDEM1PCxIAQYgCQQgQpS4g +AEGIAhDNTwsSAEGoAkEEEKUuIABBqAIQzU8LDwAgACgCQEEIakEEELdGCw8AIAAoAjBBCGpBABC3 +RgsPACAAKAIsQQhqQQAQt0YLEQAgACgCACAAKAIEIAEQiE8LEQAgACABKAIAIAEoAgQQ3yYL/hwB +FH8CQCMAQcAFayIFJAAgBUGoAmogAEEoaiIKKAIAIgNBHGoQjEoCQAJAIAUoAqgCRQRAIAUgBSgC +rAIiADYCGCAFIAVBsAJqLQAAOgAcIAVBDGogAEEIaiABIAIQmhYgBSgCDEUNAiAFQShqIAVBFGoo +AgA2AgAgBSAFKQIMNwMgQcST2wAoAgANAUGo+doAEPs+IgBB/wFxRQ0BQaj52gAoAgAgABD1LkUN +AUGo+doAKAIAIgBBKGooAgAhBiAAQSRqKAIAIQcgACgCHCEIIAUgAEEgaigCACIEBH8gBUEANgK4 +AiAFIAY2ArQCIAUgBzYCsAIgBSAENgKsAkEBIQsgCAVBAAs2AqgCIAVBLGogBUGoAmpB9IPKABCq +LSAFQbQCakIANwIAIAVBATYCrAIgBUGwhMoANgKoAiAFQYjryQA2ArACIAUgBCALSwR/IAUgCzYC +iAQgBSAGNgKEBCAFIAc2AoAEIAUgBDYC/AMgCAVBAAs2AvgDIAVBQGsiBiAFQfgDaiIEQfSDygAQ +qi0gBUHsAGpBuITKADYCACAFQegAaiAFQdQAajYCACAFQZCBygA2AmAgBSAGNgJkIAUgBUGoAmo2 +AlwgBSAFQSxqNgJYIAUgBUEgajYCVCAEIABBHGogBUHYAGoQ8kFBqPnaACgCACAEEMQ0DAELIAUg +BSgCrAI2AlggBSAFQbACai0AADoAXEGE7ckAQSsgBUHYAGpBgO7JAEHkg8oAEIkYAAsgBUEgahC5 +NQsgBUEYahCfHyADQTBqIgsQwjogA0E4aiEAIANBNGotAABFBEACQCAAIAEgAhCGISIARQ0AIAUg +AEEIahD0NSAFQdgAaiAKIAAoAgAgACgCBCAFKAIAIAUoAgQQnRYgBSkDWEICUQ0AIAVBqAJqIAVB +2ABqQdABEM1PGiAFKQOoAlAEQCAFQfgDaiIAIAVBsAJqQcgBEM1PGiMAQeAFayIDJAAgAyACNgIo +IAMgATYCJCADIAAQty06AC8gA0EYaiAAQShqEM0XIAMgAy0AHDoA5AQgAyADKAIYIgY2AuAEIANB +MGoiBCAGQQhqIhUQwAIgA0HgAWohCCMAQYAEayIHJAACQEEBIAQoAgAiBnRB6x9xRQRAIAZBAkYE +QCAHQQhqIgYgBEEIakGoARDNTxogB0HYAmohCSMAQfADayIEJAAgBCACNgIUIAQgATYCECAGKAKg +AUE8aiAEQRBqEIw2IQEgBCAGNgKMASAEIAYoApABIgw2AogBIARBGGogBkEgaiICQfAAEM1PGiAE +IAZBpAFqNgKcASAEIAZBoAFqIgo2ApgBIAQgBigClAEiDTYCkAEgBCAGKAKcASIONgKUAQJAAkAC +QCABBEAgBEGwAmogAkHwABDNTxogBEG4A2oiDyAGQRhqKQAANwMAIARBsANqIhAgBkEQaikAADcD +ACAEQagDaiIRIAZBCGopAAA3AwAgBCAGKQAANwOgAyAEEJQzIAQpAwAgBCgCCBDTPSESIAYtAKQB +IRMgBigCoAFBOGooAgAiASABKAIAIgJBAWo2AgAgAkEASA0CIARB5ANqIAooAgBBLGoQv0kgBEHA +A2oiFCAKKAIAQQhqENYkQcAAQQQQqzkiAkKBgICAEDcCACACQQhqIBRBMBDNTxogAkEBOgA8IAIg +ATYCOCAEQagBaiARKQMANwMAIARBsAFqIBApAwA3AwAgBEG4AWogDykDADcDACAEIAQpA6ADNwOg +ASAEQcABaiAEQbACakHwABDNTxogCSAEQaABakGQARDNTyIBIBM6AKQBIAEgAjYCoAEgASAONgKc +ASABIBI2ApgBIAEgDTYClAEgASAMNgKQAQwBCyAJQQI2AnAgBEGIAWoQtzkgBEEYahCiPCAEQZAB +ahC4OSAEQZQBahC5OQsgBkGYAWoQuDkgChCKOiAEQfADaiQADAELAAsgCCAHKALIA0ECRwR+IAhB +CGogB0HYAmpBqAEQzU8aQgUFQgwLNwMADAILIAdBsAFqIgYgBEEIakGoARDNTxogB0HYAmohCiMA +QfADayIEJAAgBCACNgIUIAQgATYCECAGKAKgAUEwaiAEQRBqEIw2IQEgBCAGNgKMASAEIAYoApAB +Igw2AogBIARBGGogBkEgaiIJQfAAEM1PGiAEIAZBpAFqNgKcASAEIAZBoAFqIgI2ApgBIAQgBigC +lAEiDTYCkAEgBCAGKAKcASIONgKUAQJAAkACQCABBEAgBEGwAmogCUHwABDNTxogBEG4A2oiDyAG +QRhqKQAANwMAIARBsANqIhAgBkEQaikAADcDACAEQagDaiIRIAZBCGopAAA3AwAgBCAGKQAANwOg +AyAEEJQzIAQpAwAgBCgCCBDTPSESIAYtAKQBIRMgBigCoAFBLGooAgAiASABKAIAIglBAWo2AgAg +CUEASA0CIAIoAgAiCUE4ai0AACEUIARBxANqIhYgCUEIahDWJCAEIBQ6AOwDIAQgATYC6ANBNEEE +EKcuIglCgYCAgBA3AgAgCUEIaiAWQSwQzU8aIARBqAFqIBEpAwA3AwAgBEGwAWogECkDADcDACAE +QbgBaiAPKQMANwMAIAQgBCkDoAM3A6ABIARBwAFqIARBsAJqQfAAEM1PGiAKIARBoAFqQZABEM1P +IgEgEzoApAEgASAJNgKgASABIA42ApwBIAEgEjYCmAEgASANNgKUASABIAw2ApABDAELIApBAjYC +cCAEQYgBahC3OSAEQRhqEKI8IARBkAFqELg5IARBlAFqELk5CyAGQZgBahC4OSACEI06IARB8ANq +JAAMAQsACyAIIAcoAsgDQQJHBH4gCEEIaiAHQdgCakGoARDNTxpCBgVCDAs3AwAMAQsgCCAEQbAB +EM1PGgsgB0GABGokAAJAIAMpA+ABQgxSBEAgA0GQA2oiASAVQbABEM1PGiAVIANB4AFqQbABEM5P +EN8eIAEQwwYMAQtBxJPbACgCAEEESw0AQZSJ2wAQ+z4iAkH/AXFFDQBBACEBQZSJ2wAoAgAgAhD1 +LkUNAEGUidsAKAIAIgRBKGooAgAhBiAEQSRqKAIAIQcgBCgCHCEIIAMgBEEgaigCACICBH8gA0EA +NgKgAyADIAY2ApwDIAMgBzYCmAMgAyACNgKUA0EBIQEgCAVBAAs2ApADIANBgAVqIANBkANqQdyy +zgAQtS0gA0HQBGpCADcCACADQQE2AsgEIANBrLPOADYCxAQgA0HElc4ANgLMBCADIAEgAk8Ef0EA +BSADIAY2ApwDIAMgBzYCmAMgAyACNgKUAyADIAE2AqADIAFBAWohASAICzYCkAMgA0GcBWogA0GQ +A2pB3LLOABC1LSADQRBqIAAoAsABQQhqEPQ1IAMgAykDEDcC7AQgAyABIAJJBH8gAyABNgLcBSAD +IAY2AtgFIAMgBzYC1AUgAyACNgLQBSAIBUEACzYCzAUgA0G0BWoiAiADQcwFaiIBQdyyzgAQtS0g +A0GwA2pBtLPOADYCACADQaQDakH4sc4ANgIAIANBrANqIANBlAVqNgIAIANBoANqIANB7ARqNgIA +IANBxK7OADYCmAMgAyACNgKoAyADIANBnAVqNgKcAyADIANBxARqNgKUAyADIANBgAVqNgKQAyAD +IANBJGo2ApQFIAEgBEEcaiADQZADahDhQUGUidsAKAIAIAEQxDQLIANB4ARqEJ8fIAMgABC3LToA +3wQCQEHEk9sAKAIAQQFLDQBBoInbABD7PiICQf8BcUUNAEEAIQFBoInbACgCACACEPUuRQ0AQaCJ +2wAoAgAiCEEoaigCACEEIAhBJGooAgAhBiAIKAIcIQcgAyAIQSBqKAIAIgIEfyADQQA2AqADIAMg +BDYCnAMgAyAGNgKYAyADIAI2ApQDQQEhASAHBUEACzYCkAMgA0HsBGogA0GQA2pBxLPOABC1LSAD +QewBakIANwIAIANBATYC5AEgA0GEtM4ANgLgASADQcSVzgA2AugBIAMgASACTwR/QQAFIAMgBDYC +nAMgAyAGNgKYAyADIAI2ApQDIAMgATYCoAMgAUEBaiEBIAcLNgKQAyADQYAFaiADQZADakHEs84A +ELUtIANBCGogACgCwAFBCGoQ9DUgAyADKQMINwKUBSADIAEgAkkEfyADIAQ2ApwDIAMgBjYCmAMg +AyACNgKUAyADIAE2AqADIAFBAWohASAHBUEACzYCkAMgA0GcBWogA0GQA2pBxLPOABC1LSADIANB +L2o2ArAFIAMgASACTwR/QQAFIAMgBDYCnAMgAyAGNgKYAyADIAI2ApQDIAMgATYCoAMgAUEBaiEB +IAcLNgKQAyADQbQFaiADQZADakHEs84AELUtIAMgA0HfBGo2AsgFIAMgASACSQR/IAMgATYC1AQg +AyAENgLQBCADIAY2AswEIAMgAjYCyAQgBwVBAAs2AsQEIANBzAVqIgEgA0HEBGoiAkHEs84AELUt +IANByANqQbSzzgA2AgAgA0G8A2pBiLLOADYCACADQbADakGIss4ANgIAIANBpANqQfixzgA2AgAg +A0HEA2ogAjYCACADQbgDaiADQcgFajYCACADQawDaiADQbAFajYCACADQaADaiADQZQFajYCACAD +QcSuzgA2ApgDIAMgCEEcajYC6AQgA0EFNgLkBCADIAE2AsADIAMgA0G0BWo2ArQDIAMgA0GcBWo2 +AqgDIAMgA0GABWo2ApwDIAMgA0HgAWo2ApQDIAMgA0HsBGo2ApADIAMgA0GQA2o2AuAEIAMgA0Ek +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 +AWoQvEwgABCOKgsPACAAENlLIABBBGoQ70ILvwEBBH8CQCMAQTBrIgIkACACQQA2AhAgAkEUaiAB +IAFBEGogAiACQRBqEOYeIAIoAiQiASACKAIUaiEDIAIoAhwgAWohBCACKAIoIAFrIQUgAigCECEB +A0AgBQRAIAQgAy0AADoAACACIAFBAWoiATYCECAFQQFrIQUgA0EBaiEDIARBAWohBAwBCwsgAUEQ +TwRAIAAgAikCADcAACAAQQhqIAJBCGopAgA3AAAgAkEwaiQADAELIAFBEBDdGwALC9oBAQR/AkAj +AEFAaiICJAAgAkEANgIsQQIgAUEgaiABa0EEdiIDIANBAk8bQQR0IQVBACEDA0AgBCAFRwRAIAJB +MGogASAEahC2SSACQQxqIARqIgNBCGogAkE4aikCADcCACADIAIpAjA3AgAgAiACKAIsQQFqIgM2 +AiwgBEEQaiEEDAELCyADQQJPBEAgACACKQIMNwAAIABBGGogAkEkaikCADcAACAAQRBqIAJBHGop +AgA3AAAgAEEIaiACQRRqKQIANwAAIAJBQGskAAwBCyADQQIQ3RsACwsTACAAQSg2AgQgAEHcrNIA +NgIACyEAIABCweOvnPGLvq3xADcDCCAAQpmplvicg4yndzcDAAshACAAQtSelaG3huqQ1gA3Awgg +AEK6pKm1+8es9B83AwALIQAgAELP74m30PeUu1M3AwggAEKbosnM5aX2ocMANwMACxIAQcAAQQEQ +7i0gAEHAABDNTwsPACAAEORRIABBBGoQglILDwAgAEEAIAEgAUEgEKQ0CxEAIAAgASgCBCABKAII +EPsoCw8AIAAQrBIgAEEsahCsEgsTACAAQSg2AgQgAEHc9tIANgIAC8wCAQN/IAFB8AFqIQMjAEGg +AWsiASQAIAFBADYCCCABQoCAgIAQNwIAIAFBADYCFCABQoCAgIAQNwIMIAFBgAFqIQQDQCACBEAg +AUHfAGogAyADKQMgENQgQQAQ5gMgAUEwaiABQfcAaikAADcDACABQShqIAFB7wBqKQAANwMAIAFB +IGogAUHnAGopAAA3AwAgASABKQBfNwMYIAFBQGsgBEEIaikAADcDACABQcgAaiAEQRBqKQAANwMA +IAFB0ABqIARBGGopAAA3AwAgASAEKQAANwM4IAEtAH8gAUEMaiABQRhqEIwbQQFxBEAgASABQThq +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 +RQ0BGgsgASADNgIAIAEgCDYCBEGBgICAeAshBCAGIAM2AgQgBiAENgIAIAJBIGokAAwBCyACQRRq +QgA3AgAgAkEBNgIMIAJB5OjZADYCCCACQcDo2QA2AhAgAkEIakG46dkAEMswAAsgBSgCCCAFKAIM +ENk5CyAFQRBqJAAgACABKQIENwMACxYAQfyV2wAgADYCAEH4ldsAQQE6AAALIgAgAEKcyrSck+Lk +lc8ANwMIIABC0cXvzc2CzeH/ADcDAAsiACAAQqLfq+au7eeP4AA3AwggAELfq/+v4KGlgKx/NwMA +CyEAIABC6IqmmKOD3uKOfzcDCCAAQt/HhLakmoP0GzcDAAsTACAAQfz72QA2AgQgACABNgIACxEA +IAEgACgCACAAKAIEEKcDCwoAIAAoAgAQmAQLDgAgARCJPiAAIAEQ6CALDgAgARDCOiAAIAEQwy8L +DAAgACABEIFSQQFzCw0AIAAgASACEOFIQQALEAAgACABQYC+wQBBARD1QgsQACAAIAFBir7BAEEE +EPVCC4SkAQIYfwN+AkAgACESIAEoAgAhBEEAIQAjAEGgGGsiAyQAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC +QAJAAkAgBC0AywFBAWsOBxkdASccUVIACyAEQQA7AcgBIARBADoAygEgBCAEKAK8ASIONgKAASAE +IAQoAsABNgKEASAEIAQoAsQBIhE2AogBQQIhBiARKAIAIgFBBGtBACABQQVrQQJJGw4CAV0XCyAE +QdABaiELAkAgBEHgAWoiBi0AAEEBaw4FBxwDCAQACyAEQdQBaigCACERIAQoAtABIQcMAQsgBCAR +NgKMASAOKAIAIQEgBEHgAWoiBkEAOgAAIARB1AFqIBE2AgAgBCABQQhqIgc2AtABIARB0AFqIQsL +IARB2AFqIBE2AgACQAJAIBEoAgAOBAEBAQAFCyADQZgCaiAHEL8sIANBkAJqIAMoApgCIAMoApwC +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 +l0EEQCAAENtAQcST2wAoAgAhCw0DQQIhBiALQQJLDSZBgP7aABD7PiIBQf8BcUUNJkEAIQdBgP7a +ACgCACABEPUuRQ0mQYD+2gAoAgAiDkEoaigCACELIA5BJGooAgAhAiAOKAIcIQEgDkEgaigCACIJ +DQFBAAwCC0ECIQZBxJPbACgCAEECSw0lQYz+2gAQ+z4iAUH/AXFFDSVBACEHQYz+2gAoAgAgARD1 +LkUNJUGM/toAKAIAIg5BKGooAgAhCyAOQSRqKAIAIQIgDigCHCEBIAMgDkEgaigCACIJBH8gA0EA +NgLICSADIAs2AsQJIAMgAjYCwAkgAyAJNgK8CUEBIQcgAQVBAAs2ArgJIANB+AdqIANBuAlqQYSk +wgAQ2iwgA0HkFWpCADcCACADQQE2AtwVIANB5KTCADYC2BUgA0GwwMEANgLgFSADIAcgCU8Ef0EA +BSADIAs2AsQJIAMgAjYCwAkgAyAJNgK8CSADIAc2AsgJIAdBAWohByABCzYCuAkgA0G4A2ogA0G4 +CWpBhKTCABDaLCADQfABaiAMELFGIAMgAykD8AE3ArARIAMgA0GwEWo2AugPIAMgByAJSQR/IAMg +CzYCxAkgAyACNgLACSADIAk2ArwJIAMgBzYCyAkgB0EBaiEHIAEFQQALNgK4CSADQaANaiADQbgJ +akGEpMIAENosIANB6AFqIAwQskYgAyADKQPoATcC4BcgAyADQeAXajYCqBBBACEAIAcgCUkEQCAD +IAc2AsATIAMgCzYCvBMgAyACNgK4EyADIAk2ArQTIAEhAAsgAyAANgKwEyADQfARaiIBIANBsBNq +IgJBhKTCABDaLCADQeQJakGciMIANgIAIANB2AlqQYTBwQA2AgAgA0HMCWpB9MDBADYCACADQeAJ +aiADQegQajYCACADQdQJaiADQagQajYCACADQcgJaiADQegPajYCACADQaDAwQA2AsAJIAMgBEGM +AWo2AugQIAMgATYC3AkgAyADQaANajYC0AkgAyADQbgDajYCxAkgAyADQdgVajYCvAkgAyADQfgH +ajYCuAkgAiAOQRxqIANBuAlqENZBQYz+2gAoAgAgAhDENAwlCyADQQA2AsgJIAMgCzYCxAkgAyAC +NgLACSADIAk2ArwJQQEhByABCzYCuAkgA0H4B2ogA0G4CWpB7KTCABDaLCADQeQVakIANwIAIANB +ATYC3BUgA0HEpcIANgLYFSADQbDAwQA2AuAVIAMgByAJTwR/QQAFIAMgCzYCxAkgAyACNgLACSAD +IAk2ArwJIAMgBzYCyAkgB0EBaiEHIAELNgK4CSADQbgDaiADQbgJakHspMIAENosIANB4AFqIAwQ +sUYgAyADKQPgATcCsBEgAyADQbARajYC6A8gAyAHIAlJBH8gAyALNgLECSADIAI2AsAJIAMgCTYC +vAkgAyAHNgLICSAHQQFqIQcgAQVBAAs2ArgJIANBoA1qIANBuAlqQeykwgAQ2iwgA0HYAWogDBCy +RiADIAMpA9gBNwLgFyADIANB4BdqNgKoEEEAIQAgByAJSQRAIAMgBzYCwBMgAyALNgK8EyADIAI2 +ArgTIAMgCTYCtBMgASEACyADIAA2ArATIANB8BFqIgEgA0GwE2oiAkHspMIAENosIANB5AlqQZyI +wgA2AgAgA0HYCWpBhMHBADYCACADQcwJakH0wMEANgIAIANB4AlqIANB6BBqNgIAIANB1AlqIANB +qBBqNgIAIANByAlqIANB6A9qNgIAIANBoMDBADYCwAkgAyAEQYwBajYC6BAgAyABNgLcCSADIANB +oA1qNgLQCSADIANBuANqNgLECSADIANB2BVqNgK8CSADIANB+AdqNgK4CSACIA5BHGogA0G4CWoQ +1kFBgP7aACgCACACEMQ0DCMLIAtBAksNAkHo/doAEPs+IgFB/wFxRQ0CQQAhBkHo/doAKAIAIAEQ +9S5FDQJB6P3aACgCACINQShqKAIAIQogDUEkaigCACEOIA0oAhwhASADIA1BIGooAgAiDwR/IANB +ADYCyAkgAyAKNgLECSADIA42AsAJIAMgDzYCvAlBASEGIAEFQQALNgK4CSADQfgHaiADQbgJakHM +pcIAENosIANB5BVqQgA3AgAgA0EBNgLcFSADQfylwgA2AtgVIANBsMDBADYC4BVBACEJIAMgBiAP +TwR/QQAFIAMgCjYCxAkgAyAONgLACSADIA82ArwJIAMgBjYCyAkgBkEBaiEGIAELNgK4CSADQbgD +aiADQbgJakHMpcIAENosIANB0AFqIAwQsUYgAyADKQPQATcC6BAgAyADQegQajYCoA8gBiAPSQRA +IAMgCjYCxAkgAyAONgLACSADIA82ArwJIAMgBjYCyAkgASEJIAZBAWohBgsgAyAJNgK4CSADQaAN +aiADQbgJakHMpcIAENosIANByAFqIAwQskYgAyADKQPIATcCsBEgAyADQbARajYC6A8gAyAGIA9J +BH8gAyAGNgLAEyADIAo2ArwTIAMgDjYCuBMgAyAPNgK0EyABBUEACzYCsBMgA0HwEWoiBiADQbAT +aiIBQcylwgAQ2iwgA0HkCWpBnIjCADYCACADQdgJakGEwcEANgIAIANBzAlqQfTAwQA2AgAgA0Hg +CWogA0GoEGo2AgAgA0HUCWogA0HoD2o2AgAgA0HICWogA0GgD2o2AgAgA0GgwMEANgLACSADIARB +jAFqNgKoECADIAY2AtwJIAMgA0GgDWo2AtAJIAMgA0G4A2o2AsQJIAMgA0HYFWo2ArwJIAMgA0H4 +B2o2ArgJIAEgDUEcaiADQbgJahDWQSADQegXaiADQbgTaigCADYCACADIAMpArATNwPgF0Ho/doA +KAIAIANB4BdqEMQ0DAILQZj+2gAoAgAiCUEoaigCACEGIAlBJGooAgAhASAJKAIcIQAgAyAJQSBq +KAIAIgoEfyADQQA2AsgJIAMgBjYCxAkgAyABNgLACSADIAo2ArwJQQEhByAABUEACzYCuAkgA0H4 +B2ogA0G4CWpBhKbCABDaLCADQeQVakIANwIAIANBATYC3BUgA0HEpsIANgLYFSADQbDAwQA2AuAV +QQAhDiADIAcgCk8Ef0EABSADIAY2AsQJIAMgATYCwAkgAyAKNgK8CSADIAc2AsgJIAdBAWohByAA +CzYCuAkgA0G4A2ogA0G4CWpBhKbCABDaLCADIAQoAogBQRxqNgLoECAHIApJBEAgAyAGNgLECSAD +IAE2AsAJIAMgCjYCvAkgAyAHNgLICSAAIQ4gB0EBaiEHCyADIA42ArgJIANBoA1qIANBuAlqQYSm +wgAQ2iwgAyAEKAKIAUEMajYCsBEgAyAHIApJBH8gAyAHNgLAEyADIAY2ArwTIAMgATYCuBMgAyAK +NgK0EyAABUEACzYCsBMgA0HwEWoiACADQbATaiIBQYSmwgAQ2iwgA0HkCWpBnIjCADYCACADQdgJ +akHMpsIANgIAIANBzAlqQaCawgA2AgAgA0HgCWogA0HgF2o2AgAgA0HUCWogA0GwEWo2AgAgA0HI +CWogA0HoEGo2AgAgA0GgwMEANgLACSADIARBjAFqNgLgFyADIAA2AtwJIAMgA0GgDWo2AtAJIAMg +A0G4A2o2AsQJIAMgA0HYFWo2ArwJIAMgA0H4B2o2ArgJIAEgCUEcaiADQbgJahDWQUGY/toAKAIA +IAEQxDQMIwsgA0HSBWogCy0AADoAACADQcgFaiAJKQMANwMAIAMgAy8BtAM7AdAFIAMgAykDoAM3 +A8AFDCwLIARBADoAygEgBEHoCGogADYCACAEQeQIaiAEKAKAASIANgIAIARB7AhqIARBkAFqQSwQ +zU8aIARBmAlqIg5BADoAAAsgBEG0CGogBzYCACAEQbAIaiAANgIAIARBuAhqIARB7AhqIgBBLBDN +TxogBEH4B2ogBzYCACAEQfQHakENNgIAQYSLwgAhBiAEQfAHakGEi8IANgIAIARB/AdqIABBLBDN +TxogBEGoCGoiGUEAOgAAQQ0LIQAgA0HYCWogBEH8B2pBLBDNTxogBxDxTSEMIANB+AdqIgEgA0G4 +CWpBzAAQzU8aIARB1AFqIAA2AgAgBCAGNgLQASAEQdgBaiABQcwAEM1PGiAEQawCaiIBQQA6AAAg +BEGoAmogDDYCACAEQaQCaiAHQTBqIgc2AgALIARBADoArQIgA0GMCWogBEH4AWpBLBDNTxpBxJPb +ACgCAEECSw0BQez42gAQ+z4iCUH/AXFFDQFBACELQez42gAoAgAgCRD1LkUNAUHs+NoAKAIAIhNB +KGooAgAhDyATQSRqKAIAIQ0gEygCHCEKIAMgE0EgaigCACIQBH8gA0EANgLoFSADIA82AuQVIAMg +DTYC4BUgAyAQNgLcFUEBIQsgCgVBAAs2AtgVIANB6A9qIANB2BVqQeTAwQAQ2iwgA0HAAWogBxCx +RiADIAMpA8ABNwL4FCADIANB+BRqNgKsFSADIAsgEE8Ef0EABSADIA82AuQVIAMgDTYC4BUgAyAQ +NgLcFSADIAs2AugVIAtBAWohCyAKCzYC2BUgA0GoEGogA0HYFWpB5MDBABDaLCADQbgBaiAHELJG +IAMgAykDuAE3AtgOIAMgA0HYDmo2ArgVIAMgCyAQSQR/IAMgDzYC5BUgAyANNgLgFSADIBA2AtwV +IAMgCzYC6BUgC0EBaiELIAoFQQALNgLYFSADQegQaiADQdgVakHkwMEAENosIANBsBNqIgkgBxDq +SCADIAk2AsgVIAMgCyAQTwR/QQAFIAMgDzYC5BUgAyANNgLgFSADIBA2AtwVIAMgCzYC6BUgC0EB +aiELIAoLNgLYFSADQbARaiADQdgVakHkwMEAENosIAMgCyAQSQR/IAMgCzYCgBIgAyAPNgL8ESAD +IA02AvgRIAMgEDYC9BEgCgVBAAs2AvARIANB4BdqIgkgA0HwEWoiD0HkwMEAENosIANBkBZqQaTB +wQA2AgAgA0GMFmpBsMDBADYCACADQYQWakGkwcEANgIAIANBgBZqQbDAwQA2AgAgA0H4FWoiDUGU +wcEANgIAIANB7BVqQYTBwQA2AgAgA0H0FWogA0HIFWo2AgAgA0HoFWoiCiADQbgVajYCACADQfTA +wQA2AuAVIAMgCTYCiBYgAyADQbARajYC/BUgAyADQegQajYC8BUgAyADQagQajYC5BUgAyADQawV +ajYC3BUgAyADQegPajYC2BUgDyATQRxqIANB2BVqENVBIARB2AFqIhAgEyAPEMQyIARBAToArQIg +BEHgAWooAgAgA0HwDGogA0GMCWpBLBDNTxpBAkYNAiAEQQA6AK0CIANB4BVqIBBBCGopAwA3AwAg +CiAQQRBqKQMANwMAIANB8BVqIBBBGGopAwA3AwAgAyAQKQMANwPYFSANIANBoA1qQbABEM1PGiAE +QbACaiADQdgVakHQARDNTxogBEGMBGogDDYCACAEQYgEaiAHNgIAIARBhARqIAA2AgAgBEGABGog +BjYCACAEQZAEaiADQYwJakEsEM1PGiAEQQA6AL8EIARBvgRqIAMtAO4MOgAAIARBvARqIAMvAewM +OwEAIARBwARqIANBuAlqQbADEM1PGgtBACEAQgAhGyMAQaAIayIFJAAgBEGwAmoiCCgCCEECRwRA +IAhBCGogCBD4JwsgA0GwE2ohFCAIQSBqIRogBSAINgJkAkACQCAIAn8CQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAhBjwJqLQAAQQFrDgQOAwECAAsg +CEGOAmpBAToAACAIQYwCakEAOwEAIAVB2ABqEOkkIAUgBSkDWDcC2AUgBUGwA2oiACAFQdgFaiIG +EIYVIAYQ+j4gBhDuUiAGQYTKwgAgABDnERDZIiAIQY0CakEBOgAAIAhBkAJqIAUpArADNwIAIAhB +mAJqIAVBuANqKAIANgIAIAhB0QJqQQA6AAAgCEHIAmogCEHYAWopAwA3AwALIAVB2AVqIAhBnAJq +IgkgAhDlAiAFLQCoBiIAQQRGDQsgBUGuAWoiCiAFLQDbBToAACAFIAUvANkFOwGsASAFLQDYBSEL +IAUoAtwFIQcgBSgC4AUhBiAFQfAAaiAFQeQFakE8EM1PGiAFIAUoAKkGNgJoIAUgBUGsBmooAAA2 +AGsgBSkDoAYhGyAJENksIABBA0YNCCAIIAs6ACAgCCAFLwGsATsAISAIQYwCakEBOgAAIAhBKGog +BjYCACAIQSRqIAc2AgAgCEEjaiAKLQAAOgAAIAhBLGogBUHwAGpBPBDNTxogCEHwAGogADoAACAI +QegAaiAbNwMAIAggBSgCaDYAcSAIQfQAaiAFKABrNgAAIABBAkYNByAIQQA6AIwCIAhBoARqIAhB ++ABqIgAgGkHYABDNTzYCACAIQY0CakEAOwAAIAhBpARqIAhB2AFqKAIAIgY2AgAgCEHUA2ogCEHU +AWooAgAiFTYCACAIQdADaiAIQdABaigCACIJNgIAIAhBqARqIAhBkAJqIgcpAwA3AwAgCEGwBGog +CEGYAmooAgA2AgAgCEG0BGogCEHgAWpBLBDNTxogCEHgBGoiC0EAOgAADAMLIAhBkAJqIQcgCEHg +BGoiCy0AAEEBaw4EDQADBAELAAsgCEHUA2ooAgAhFSAIQdADaigCACEJIAhBpARqKAIAIQYgCEGg +BGooAgAhAAsgCCAJNgKQAiAIQZQCaiAVNgIAIAhB2ANqIAA2AgAgCEHcA2ogCEG0BGpBLBDNTyEW +IAhBkARqIAhBsARqKAIANgIAIAhBiARqIhMgCEGoBGopAwA3AwAgBUHYBWoiACAGEOlIIAVBAzYC ++AQgBUGwA2ogACAFQfgEahCBICAFKAKwAw0CIAVB0AVqIgwgBUHEA2ooAgA2AgAgBSAFQbwDaikC +ADcDyAUgBUG4A2oiCigCACEAIAUoArQDIQkgBUGEAmogBUHIA2pBrAEQzU8aIAVBgAJqIAwoAgA2 +AgAgBSAANgL0ASAFIAk2AvABIAUgBSkDyAU3AvgBIAVBADYCnAUgBUEANgKUBSAFQdAAakEGEO4f +IAUoAlAhCSAFKAJUIgxBsPLCACgAADYAACAMQQRqQbTywgAvAAA7AAAgBUEGNgLQBSAFIAw2AswF +IAUgCTYCyAUgBUHYBWogCCgC2AMQ2UkgBS0A2AVBBkYNFSAFQcADaiAFQegFaikDADcDACAKIAVB +4AVqKQMANwMAIAUgBSkD2AU3A7ADIAVB2AVqIgwgBUGUBWogBUHIBWogBUGwA2oQ1AwgDBDjQiAF +QcgAakENEO4fIAUoAkghCSAFKAJMIgpB/P3CACkAADcAACAKQQVqQYH+wgApAAA3AAAgBUENNgLQ +BSAFIAo2AswFIAUgCTYCyAUgDCAIKALYA0EIahDZSSAFLQDYBUEGRg0VIAVBwANqIhAgBUHoBWoi +DykDADcDACAFQbgDaiINIAVB4AVqIgwpAwA3AwAgBSAFKQPYBTcDsAMgBUHYBWoiFyAFQZQFaiAF +QcgFaiIYIAVBsANqENQMIBcQ40IgBUFAa0EEEO4fIAUoAkAhCiAFKAJEIglB68rlmwc2AAAgBUEE +NgKoBSAFIAk2AqQFIAUgCjYCoAUgBUEANgK0BSAFQQA2AqwFIAVBOGpBBxDuHyAFKAI4IQkgBSgC +PCIKQYn+wgAoAAA2AAAgCkEDakGM/sIAKAAANgAAIAVBBzYCwAUgBSAKNgK8BSAFIAk2ArgFIBgg +CCgC2AMoAkhBCGoQ8VEgFyAYEJdSIAUtANgFQQZGDRUgECAPKQMANwMAIA0gDCkDADcDACAFIAUp +A9gFNwOwAyAFQdgFaiINIAVBrAVqIAVBuAVqIgwgBUGwA2oiChDUDCANEONCIAVByAVqEIg/IAVB +wAVqIAVBtAVqKAIAIgk2AgAgBUG8A2ogCTYCACAFQQU6ALADIAUgBSkCrAU3ArQDIA0gBUGUBWog +BUGgBWogChDUDCANEONCIAVBMGpBCRDuHyAFKAIwIQkgBSgCNCIKQZD+wgApAAA3AAAgCkEIakGY +/sIALQAAOgAAIAVBCTYC0AUgBSAKNgLMBSAFIAk2AsgFIAVBKGogBhCxRiAFIAUpAyg3ArgFIA0g +DBD9RyAFLQDYBUEGRg0VIAVBwANqIg0gBUHoBWoiDCkDADcDACAFQbgDaiIKIAVB4AVqIgkpAwA3 +AwAgBSAFKQPYBTcDsAMgBUHYBWoiGCAFQZQFaiAFQcgFaiIQIAVBsANqENQMIBgQ40IgBUEgakEO +EO4fIAUoAiAhBiAFKAIkIg9Bmf7CACkAADcAACAPQQZqQZ/+wgApAAA3AAAgBUEONgKoBSAFIA82 +AqQFIAUgBjYCoAUgBUEANgK0BSAFQQA2AqwFIAVBGGpBBxDuHyAFKAIYIQYgBSgCHCIPQYn+wgAo +AAA2AAAgD0EDakGM/sIAKAAANgAAIAVBBzYCwAUgBSAPNgK8BSAFIAY2ArgFIBAgBUHwAWoQ8VEg +GCAQEJdSIAUtANgFQQZGDRUgDSAMKQMANwMAIAogCSkDADcDACAFIAUpA9gFNwOwAyAFQdgFaiIK +IAVBrAVqIAVBuAVqIAVBsANqIgkQ1AwgChDjQiAFQcgFahCIPyAFQcAFaiAFQbQFaigCACIGNgIA +IAVBvANqIAY2AgAgBUEFOgCwAyAFIAUpAqwFNwK0AyAKIAVBlAVqIAVBoAVqIAkQ1AwgChDjQiAF +QRBqQQQQ7h8gBSgCECEJIAUoAhQiBkH08sGrBjYAACAFQQQ2AtAFIAUgBjYCzAUgBSAJNgLIBSAK +IAcQmFIgBS0A2AVBBkYNFSAFQcADaiIMIAVB6AVqIgopAwA3AwAgBUG4A2oiECAFQeAFaiIJKQMA +NwMAIAUgBSkD2AU3A7ADIAVB2AVqIg8gBUGUBWogBUHIBWogBUGwA2oQ1AwgDxDjQiAFQQhqQQcQ +7h8gBSgCCCEGIAUoAgwiDUHV8sIAKAAANgAAIA1BA2pB2PLCACgAADYAACAFQQc2AtAFIAUgDTYC +zAUgBSAGNgLIBSAPIBYQpQogBS0A2AVBBkYNFSAMIAopAwA3AwAgECAJKQMANwMAIAUgBSkD2AU3 +A7ADIAVB2AVqIgkgBUGUBWogBUHIBWogBUGwA2oQ1AwgCRDjQiAQIAVBnAVqKAIAIgY2AgAgBUGE +BWogBjYCACAFQQU6APgEIAUgBSkClAU3AvwEIAkgBUH4BGoQ1QMgBSgC2AUiBkGAgICAeEYNCSAI +QZgEaiIAIAUpAtwFNwMAIAhBlARqIAY2AgAgBUH4BGoQzjAgCEG8BWpBADoAACAIQfAEaiAIQZwE +aigCADYCACAIQewEaiAAKAIANgIAIAhB6ARqIAgoAtgDNgIACyAFQdgFaiAIQegEaiIAIAIQqgUg +BSgCgAZBgYCAgHhGDQUgCEGYAmogBUHYBWpBuAEQzU8aIAAQg0AgCCAIQdgDajUCADcD6AQLIAVB +2AVqIAhB6ARqEMY5IAUoAtgFQQNGDQkgBUH4AWogBUHgBWoiAigCADYCACAFIAUpAtgFIhs3A/AB +IBunDQogBUGYBmogCEGYAmpBuAEQzU8aIAIgCEHYA2ooAgAiBkEgaikDADcDACAFQegFaiAGQShq +KQMANwMAIAVB8AVqIAZBMGopAwA3AwAgBUGABmogBigCSCICQdABaikCADcDACAFQYgGaiACQdgB +aikCADcDACAFQZAGaiACQeABaikCADcDACAFIAYpAxg3A9gFIAUgAkHIAWopAgA3A/gFIAVB2Adq +IAhBkARqKAIANgIAIAUgCEGIBGopAwA3A9AHIAhBlARqIQkgBUGwA2oiBiAFQdgFaiICEMlBIAVB +8AFqEL8/IAIgBhCBKSAFKALYBSICRQ0DIAUoAtwFIQAgBUGwA2oQ2zEgCRCIP0ESIQsMDQsgBUHo +B2ogBUHEA2ooAgA2AgAgBSAFQbwDaikCADcD4AcgBUG4A2ooAgAhACAFKAK0AyECQQohCwwLC0EC +IRVBESELAkBBxJPbACgCAA0AQfj42gAQ+z4iAkH/AXFFDQBBACEAQfj42gAoAgAgAhD1LkUNAEH4 ++NoAKAIAIgJBHGohByACQSBqKAIAIgYEQCACQShqKAIAIQogAkEkaigCACEJIAIoAhwhACAFQQA2 +AugFIAUgCjYC5AUgBSAJNgLgBSAFIAY2AtwFCyAFIAA2AtgFIAVBsANqIgogBUHYBWoiCUGQysIA +EN0sIAVB5AVqQgA3AgAgBUGUycIANgL4ASAFQQE2AtwFIAVB6MrCADYC2AUgBUGkycIANgLgBSAF +IAk2AvQBIAUgCjYC8AEgBUHgB2oiCSAHIAVB8AFqEOBBQfj42gAoAgAgCRDENAsMDQsgBUHiB2og +Ci0AADoAACAFIAUvAawBOwHgByAFQdgFaiAFQfAAakE8EM1PGgwLCyAFKALcBSECIAVBsANqENsx +IAkQiD9BCyELDAkLQQMhAgwGCyAUQQM6AFBBAwwMC0HgxsIAQSNBtMnCABDmKwALIAUoAtwFIQIg +BUH4BGoQzjBBCyELDAQLQeDGwgBBI0Go/sIAEOYrAAtBBCECDAELQbj+wgBBKEHg/sIAEOYrAAsg +CyACOgAAIBRBAzoAUEEEDAYLIBMQ+0ALIAhB3ANqEMM5IAVBsAFqIgkgBUHgB2pBPBDNTxogCEEB +OgDgBCAFQfoEaiIGIAVB7wFqLQAAOgAAIAUgBS8A7QE7AfgEIAVBsANqIAlBPBDNTxogBxD+IyAL +QRJGBEAgBUHiB2ogCEH7AGotAAA6AAAgBSAILwB5OwHgByAIQfwAaigCACEHIAhBgAFqKAIAIQYg +CC0AeCELIAVB2AVqIAhBhAFqQTwQzU8aIAUgCCgAyQE2AvABIAUgCEHMAWooAAA2APMBIAhByAFq +LQAAIRUgCEHAAWopAwAhGwwCCyAFQeIHaiAGLQAAOgAAIAUgBS8B+AQ7AeAHIAVB2AVqIAVBsANq +QTwQzU8aIAhB+ABqEMQpIAIhByAAIQYLIAhBjAJqQQA6AAAgCEGNAmotAAAEQCAIQZACahD7QAsg +CEEAOgCNAkECIRUgCEGOAmotAAANAQwCCwJAIAhB8ABqLQAAQQJGDQAgCEGMAmotAABFDQAgGhDE +KQsgCEGMAmpBADoAACAIQY0Cai0AAARAIAhBkAJqEPtACyAIQQA6AI0CIAhBjgJqLQAARQ0BCyAI +QeABahDDOQsgFCALOgAAIBQgBS8B4Ac7AAEgFCAGNgIIIBQgBzYCBCAUQQNqIAVB4gdqLQAAOgAA +IBRBDGogBUHYBWpBPBDNTxogFCAVOgBQIBQgGzcDSCAUIAA2AlwgFCACNgJYIBQgBSgC8AE2AFEg +FEHUAGogBSgA8wE2AABBAQs6AI8CIAVB5ABqEIo9IAVBoAhqJAAMAQsgBSAFKALcBTYCsANBuK/D +AEErIAVBsANqQaivwwBB7P3CABCJGAALQQMgAy0AgBQiBkEDRg0ZGiADQd4PaiADLQCzEzoAACAD +IAMvALETOwHcDyADLQCwEyELIAMoArQTIQcgAygCuBMhACADQaAPaiADQbwTakE8EM1PGiADIAMo +AIEUNgKYDyADIANBhBRqKAAANgCbDyADKQP4EyEbIAMoAogUIQIgAygCjBQhCiAIEM9LDBoLIARB +AToArQIgBEHwAWpBADYCACAEQeABakECNgIAIANB8AxqIANBjAlqQSwQzU8aCyAEQbACaiIJIANB +oA1qQbABEM1PGiAEQewDaiAMNgIAIARB6ANqIAc2AgAgBEHkA2ogADYCACAEQeADaiAGNgIAIARB +8ANqIANB8AxqQSwQzU8aIARBADoAnwQgBEGgBGogA0G4CWpBsAMQzU8aIARBnwRqIQwLIARBAToA +ngQgBEGcBGpBADsBACADQbABahDpJCADIAMpA7ABNwLYFSADQbATaiIAIANB2BVqIgYQhRUgBhD6 +PiAGEPgLIAZBtMHBACAAEOcRENkiIARBAToAnQQgBEGgBGogAykCsBM3AgAgBEGoBGogA0G4E2oo +AgA2AgAgBEEAOgDhBCAEQdgEaiAEQegDaikDADcDAAsgA0HYFWogBEGsBGoiCiACEOQCIAMtAKgW +Ig1BBEYNCCADQaYQaiIGIAMtANsVOgAAIAMgAy8A2RU7AaQQIAMtANgVIQsgAygC3BUhByADKALg +FSEAIANB6A9qIANB5BVqQTwQzU8aIAMgAygAqRY2AuAPIAMgA0GsFmooAAA2AOMPIAMpA6AWIRsg +ChDZLCANQQNGDQUgBCALOgCwAiAEIAMvAaQQOwCxAiAEQZwEakEBOgAAIARBuAJqIAA2AgAgBEG0 +AmogBzYCACAEQbMCaiAGLQAAOgAAIARBvAJqIANB6A9qQTwQzU8aIARBgANqIA06AAAgBEH4Amog +GzcDACAEIAMoAuAPNgCBAyAEQYQDaiADKADjDzYAACANQQJGDQQgBEEAOgCcBCAEQbAGaiAEQYgD +aiIGIAlB2AAQzU82AgAgBEEAOwCdBCAEQbQGaiAEQegDaigCACIANgIAIARB5AVqIARB5ANqKAIA +Igs2AgAgBEHgBWogBEHgA2ooAgAiCjYCACAEQbgGaiAEQaAEaiIHKQMANwMAIARBwAZqIARBqARq +KAIANgIAIARBxAZqIARB8ANqQSwQzU8aIARB8AZqIhVBADoAAAsgBCAKNgKgBCAEQaQEaiALNgIA +IARB6AVqIAY2AgAgBEHsBWogBEHEBmpBLBDNTyEYIARBoAZqIARBwAZqKAIANgIAIARBmAZqIggg +BEG4BmopAwA3AwAgA0HYFWoiBiAAEOlIIANBAzYC+BQgA0GwE2ogBiADQfgUahD/HyADKAKwEw0C +IANB0BVqIg8gA0HEE2ooAgA2AgAgAyADQbwTaikCADcDyBUgA0G4E2oiDSgCACEKIAMoArQTIQYg +A0GEEmogA0HIE2pBrAEQzU8aIANBgBJqIA8oAgA2AgAgAyAKNgL0ESADIAY2AvARIAMgAykDyBU3 +AvgRIANBADYCnBUgA0EANgKUFSADQagBakEGEO4fIAMoAqgBIQYgAygCrAEiD0Gc/8EAKAAANgAA +IA9BBGpBoP/BAC8AADsAACADQQY2AtAVIAMgDzYCzBUgAyAGNgLIFSADQdgVaiAEKALoBRDZSSAD +LQDYFUEGRg0oIANBwBNqIANB6BVqKQMANwMAIA0gA0HgFWopAwA3AwAgAyADKQPYFTcDsBMgA0HY +FWoiDyADQZQVaiADQcgVaiADQbATahDUDCAPEONCIANBoAFqQQ0Q7h8gAygCoAEhBiADKAKkASIN +QbT/wQApAAA3AAAgDUEFakG5/8EAKQAANwAAIANBDTYC0BUgAyANNgLMFSADIAY2AsgVIA8gBCgC +6AVBCGoQ2UkgAy0A2BVBBkYNKCADQcATaiIWIANB6BVqIhMpAwA3AwAgA0G4E2oiECADQeAVaiIP +KQMANwMAIAMgAykD2BU3A7ATIANB2BVqIhogA0GUFWogA0HIFWoiFyADQbATahDUDCAaEONCIANB +mAFqQQQQ7h8gAygCmAEhDSADKAKcASIGQevK5ZsHNgAAIANBBDYCqBUgAyAGNgKkFSADIA02AqAV +IANBADYCtBUgA0EANgKsFSADQZABakEHEO4fIAMoApABIQYgAygClAEiDUHB/8EAKAAANgAAIA1B +A2pBxP/BACgAADYAACADQQc2AsAVIAMgDTYCvBUgAyAGNgK4FSAXIAQoAugFKAJIQQhqEPFRIBog +FxCXUiADLQDYFUEGRg0oIBYgEykDADcDACAQIA8pAwA3AwAgAyADKQPYFTcDsBMgA0HYFWoiECAD +QawVaiADQbgVaiIPIANBsBNqIg0Q1AwgEBDjQiADQcgVahCIPyADQcAVaiADQbQVaigCACIGNgIA +IANBvBNqIAY2AgAgA0EFOgCwEyADIAMpAqwVNwK0EyAQIANBlBVqIANBoBVqIA0Q1AwgEBDjQiAD +QYgBakEJEO4fIAMoAogBIQYgAygCjAEiDUHI/8EAKQAANwAAIA1BCGpB0P/BAC0AADoAACADQQk2 +AtAVIAMgDTYCzBUgAyAGNgLIFSADQYABaiAAELFGIAMgAykDgAE3ArgVIBAgDxD9RyADLQDYFUEG +Rg0oIANBwBNqIhAgA0HoFWoiDykDADcDACADQbgTaiINIANB4BVqIgYpAwA3AwAgAyADKQPYFTcD +sBMgA0HYFWoiFyADQZQVaiADQcgVaiIWIANBsBNqENQMIBcQ40IgA0H4AGpBDhDuHyADKAJ4IQAg +AygCfCITQdH/wQApAAA3AAAgE0EGakHX/8EAKQAANwAAIANBDjYCqBUgAyATNgKkFSADIAA2AqAV +IANBADYCtBUgA0EANgKsFSADQfAAakEHEO4fIAMoAnAhACADKAJ0IhNBwf/BACgAADYAACATQQNq +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 +KAAANgCrESAEQdgDai0AACEGIARB0ANqKQMAIRsMAgsgA0HuEWogAC0AADoAACADIAMvAaQROwHs +ESADQbARaiADQegQakE8EM1PGiAEQYgDahDEKSACIQcgCiEACyAEQZwEakEAOgAAIAQtAJ0EBEAg +BEGgBGoQ+0ALIARBADoAnQRBAiEGIAQtAJ4EDQEMAgsCQCAEQYADai0AAEECRg0AIARBnARqLQAA +RQ0AIAkQxCkLIARBnARqQQA6AAAgBC0AnQQEQCAEQaAEahD7QAsgBEEAOgCdBCAELQCeBEUNAQsg +BEHwA2oQwzkLIANBlg9qIg0gA0HuEWotAAA6AAAgAyADLwHsETsBlA8gA0HYDmogA0GwEWpBPBDN +TxogAyADKACrETYA0w4gAyADKAKoETYC0A4gDEEBOgAAIAZB/wFxQQNGDQAgA0HeD2ogDS0AADoA +ACADIAMvAZQPOwHcDyADQaAPaiADQdgOakE8EM1PGiADIAMoANMONgCbDyADIAMoAtAONgKYDyAJ +EIAgDAILQQQLIQAgASAAOgAAIBlBAzoAACAOQQM6AAAgEkEEOgBQQQUhBwwSCyAELQCtAgRAIARB +2AFqENkiCyAEQQA6AK0CIANBiglqIgEgA0HeD2otAAA6AAAgAyADLwHcDzsBiAkgA0HMCGoiDCAD +QaAPakE8EM1PGiAEQQE6AKwCIANB5gZqIgkgAS0AADoAACADIAMoAJsPNgDHCCADIAMoApgPNgLE +CCADIAMvAYgJOwHkBiADQagGaiIBIAxBPBDNTxogAyADKADHCDYAowYgAyADKALECDYCoAYgERCG +KCAEQQE6AKgIIANBrgdqIgwgCS0AADoAACADIAMvAeQGOwGsByADQfAGaiABQTwQzU8aIAMgAygA +owY2AOsGIAMgAygCoAY2AugGIBEQhT0CQAJAAkAgBkH/AXFBAkcEQCADQZ4GaiAMLQAAOgAAIAMg +AygA6wY2ANsFIAMgAygC6AY2AtgFIAMgAy8BrAc7AZwGIANB4AVqIANB8AZqQTwQzU8aIANB2ABq +IARBtAhqIgwoAgBBMGoQsUYgAygCXCEJIAMoAlghASADQdAAaiAMKAIAQTBqELJGIANByABqIAMo +AlAgAygCVBDCMCADQdgVaiABIAkgAygCSCADKAJMQfSKwgBBECACIAoQyBUgA0FAayADQeQVahDx +LiADKQNAIRwgA0HUCWogA0HwFWopAgA3AgAgA0HMCWogA0HoFWopAgA3AgAgA0HECWogA0HgFWop +AgA3AgAgAyADKQLYFTcCvAkgA0GigICAeDYCuAkgAyADQbgJaiIBEIM9NgL4ESADIBw3AvARIAEg +BEGwCGooAgAoAgBBMGoQjEogAygCuAkNAiADIAMoArwJIgo2AqANIAMgA0HACWoiDC0AADoApA0g +A0E4aiADQfARahDxLiADKAI8IQkgAygCOCECIAwgA0H4EWooAgA2AgAgAyADKQLwETcDuAkgA0Gw +E2oiASAKQQhqIAIgCSADQbgJahDuECABEKFFIANBoA1qEJ8fIANB9gdqIANBngZqLQAAOgAAIAMg +Ay8BnAY7AfQHIANBuAdqIANB4AVqQTwQzU8aIAMgAygA2wU2ALMHIAMgAygC2AU2ArAHDAELIANB +9gdqIAwtAAA6AAAgAyADLwGsBzsB9AcgA0G4B2ogA0HwBmpBPBDNTxoLIANB1gRqIgIgA0H2B2ot +AAA6AAAgAyADLwH0BzsB1AQgA0GYBGoiASADQbgHakE8EM1PGiADIAMoALMHNgCTBCADIAMoArAH +NgKQBCAOQQE6AAAgAyADLwHUBDsAuQMgAyACLQAAOgC7AyADQcQDaiABQTwQzU8aIANBjARqIAMo +AJMENgAAIAMgGzcDgAQgAyAANgLAAyADIAc2ArwDIAMgCzoAuAMgAyADKAKQBDYAiQQgAyAGOgCI +BCAREIY9IANBuANqQQFyIQEgBkH/AXFBAkcEQCADQdIFaiADLQC/AzoAACADQdYFaiABQQJqLQAA +OgAAIANByAVqIANB2ANqKQMANwMAIAMgAy8AvQM7AdAFIAMgAykD0AM3A8AFIAMgAS8AADsB1AUg +AykCxAMhGyADKALMAyEMIANBmAVqIANB4ANqQSgQzU8aIAMgA0GJBGoiAUEDaigAADYAkwUgAyAB +KAAANgKQBQwDCyALQf8BcUERRwRAIANB0gVqIAMtAL8DOgAAIANB1gVqIAFBAmotAAA6AAAgA0HI +BWogA0HYA2opAwA3AwAgA0GgBWogA0HoA2opAwA3AwAgA0GoBWogA0HwA2opAwA3AwAgA0GwBWog +A0H4A2opAwA3AwAgAyADLwC9AzsB0AUgAyADKQPQAzcDwAUgAyADKQPgAzcDmAUgAyABLwAAOwHU +BUEDIQYgAygCzAMhDCADKQLEAyEbDAMLQcST2wAoAgBBAksNAUH0/doAEPs+IgFB/wFxRQ0BQQAh +AkH0/doAKAIAIAEQ9S5FDQFB9P3aACgCACIKQShqKAIAIREgCkEkaigCACEJIAooAhwhBiADIApB +IGooAgAiDQR/IANBADYCyAkgAyARNgLECSADIAk2AsAJIAMgDTYCvAlBASECIAYFQQALNgK4CSAD +QeAXaiADQbgJakHcpsIAENosIANB5BVqQgA3AgAgA0EBNgLcFSADQbynwgA2AtgVIANBsMDBADYC +4BVBACEBIAMgAiANTwR/QQAFIAMgETYCxAkgAyAJNgLACSADIA02ArwJIAMgAjYCyAkgAkEBaiEC +IAYLNgK4CSADQfgHaiADQbgJakHcpsIAENosIANBMGogBEHQCWoiDhCxRiADIAMpAzA3AugQIAMg +A0HoEGo2AqAPIAMgAiANSQR/IAMgETYCxAkgAyAJNgLACSADIA02ArwJIAMgAjYCyAkgAkEBaiEC +IAYFQQALNgK4CSADQaANaiADQbgJakHcpsIAENosIANBKGogDhCyRiADIAMpAyg3ArARIAMgA0Gw +EWo2AugPQQAhDCACIA1JBEAgAyACNgLAEyADIBE2ArwTIAMgCTYCuBMgAyANNgK0EyAGIQwLIAMg +DDYCsBMgA0HwEWoiASADQbATaiICQdymwgAQ2iwgA0HkCWpBnIjCADYCACADQdgJakGEwcEANgIA +IANBzAlqQfTAwQA2AgAgA0HgCWogA0GoEGo2AgAgA0HUCWogA0HoD2o2AgAgA0HICWogA0GgD2o2 +AgAgA0GgwMEANgLACSADIARBjAFqNgKoECADIAE2AtwJIAMgA0GgDWo2AtAJIAMgA0H4B2o2AsQJ +IAMgA0HYFWo2ArwJIAMgA0HgF2o2ArgJIAIgCkEcaiADQbgJahDWQUH0/doAKAIAIAIQxDQMAQsg +AyADKAK8CTYCsBMgAyADQcAJai0AADoAtBNB6LbCAEErIANBsBNqQYS4wgBB8JrCABCJGAALIAQo +AoABIARBADoAyAEgA0G4CWogBEGgCWpBgAEQzU8aQQYhAUEFIQYCQAJAAkACQCAEKAKIASIJKAIA +IgJBBGtBACACQQVrQQJJG0EBaw4CAwEACyACQQRJDQEgAiEBCyADQSBqIAlBBGoQ9B8gAygCJCEM +IAMoAiAhESABIQYMAQsgAiEGCyADQRhqIAlBDGoQ8S4gAykDGCEbIANBEGogCUEUahDxLiADKQMQ +IRwgA0EIaiAJQRxqEPEuIANB8BVqIBw3AgAgA0HoFWogGzcCACADQeQVaiAMNgIAIANB4BVqIBE2 +AgAgA0H4FWogAykDCDcCACADIAY2AtwVIANBgoCAgHg2AtgVIANBuAlqIANB2BVqEPwLIANBuANq +ELEaQQIhBgsgBC0AyAEEQCAEQaAJahDEOwsgBEEAOgDIAQwECyADQegQahD7QAwNCyAEKAKAASgC +AEEoaigCACEAIARB0AJqQQA6AAAgBEHUAWogBCgChAE2AgAgBCAAQQhqNgLQAQsgA0GwE2ogBEHQ +AWoiBiACEJICIAMtALATIgdBDEYNAiADQfYEaiIBIAMtALMTOgAAIANB4ARqIgkgA0HEE2opAgA3 +AwAgA0HoBGoiDiADQcwTaikCADcDACADIAMvALETOwH0BCADIAMpArwTNwPYBCADKAK0EyEAIAMo +ArgTIQogBhDaPyAHQQtHDQMgBCAANgL0ASAEQQs6ANABIARB2AFqIAo2AgAgBEHUAWogADYCACAE +QfgBaiAKNgIAIANBqA1qIgEgA0H4EWooAgA2AgAgAyADKQLwETcDoA0gBCgCiAEpAhwhHCADQdgV +aiIAIANBuAlqQT8QzU8aIARBgAJqIBw3AwAgBCAEQfQBajYC/AEgBEGIAmogAykDoA03AgAgBEGQ +AmogASgCADYCACAEQZQCakEAOgAAIARBlQJqIABBPxDNTxoLIANBuAlqIARB/AFqIgsgAhCKBiAD +LQC4CSIHQQxGDQNBAiEGIANBjgVqIgIgAy0Auwk6AAAgA0GABWoiASADQdQJaikCADcDACADIAMv +ALkJOwGMBSADIAMpAswJNwP4BCADKAK8CSEAIAMpAsAJIRsgAygCyAkhDCALEKk4IAdBC0cNBAsg +BCgCYEECRg0HIAQtAMkBDQQMBwsgEkEEOgBQQQYhBwwKCyAEQdgBaiIGIAo2AgAgBEHcAWogAykD +2AQ3AgAgBCAHOgDQASAEQdEBaiADLwH0BCICOwAAIARB1AFqIAA2AgAgBEHTAWogAS0AACIBOgAA +IARB5AFqIAkpAwAiHTcCACAEQewBaiAOKQMAIhw3AgAgA0HSBWogAToAACADIAI7AdAFIAYpAwAh +GyAEQeABaigCACEMIANByAVqIBw3AwAgAyAdNwPABQwDCyASQQQ6AFBBByEHDAgLIANB0gVqIAIt +AAA6AAAgA0HIBWogASkDADcDACADIAMvAYwFOwHQBSADIAMpA/gENwPABQwBCyAEEMQ7DAILIAQQ ++EILIARBADoAyQEgBEGQAWoQwzkMAQsgBEEAOgDJASAELQDKAQRAIARBkAFqEMM5CyAEQQA6AMoB +DAILQQMhBgsgBEEAOgDKAUEOIQsLIBIgCzoAACASIAMvAdQFOwABIBIgBzoABCASIAMvAdAFOwAF +IBIgDDYCFCASIBs3AgwgEiAANgIIIBIgAykDwAU3AhggEkEDaiADQdYFai0AADoAACASQQdqIANB +0gVqLQAAOgAAIBJBIGogA0HIBWopAwA3AgAgEkEoaiADQZgFakEoEM1PGiASIAY6AFAgEiADKAKQ +BTYAUSASQdQAaiADKACTBTYAAEEBIQcLIAQgBzoAywEgA0GgGGokAAwBCyADIAMoAtwVNgKwE0Ho +tsIAQSsgA0GwE2pByLbCAEGk/8EAEIkYAAsLDAAgACABEJBHQQFzC/6GAQIMfwJ+IAAhDiABKAIA +IQQjAEGwHGsiAyQAIAQCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQCAELQC8AkEBaw4EEAoBBwAL +IAQgBCgCsAIiATYCuAIgAyAEKQMANwLIAiAEKAK0AiEAIARBCGogAUEIahDCGkEBQQMgBCkDCEIC +fSIPpyAPQgdaGyIBdEHzAHENDiABQQJGBEAgBEHgAGooAgAiBSAFKAIAIgFBAWo2AgAgAUEASA0R +IANB8BdqIARBMGoQixQgBCgCZCIGIAYoAgAiAUEBajYCACABQQBIDREgA0GIAWogBEHYAGoQ8S4g +AykDiAEhDyAEQcACaiIBIARBEGoQ7isgBEGQA2ogBTYCACAEQeACaiADQfAXakEoEM1PGiAEQYgD +aiAPNwMAIARBlANqIAY2AgAgBCgCuAIiBi0AQCEIIAMoAsgCIQUgAygCzAIhCyADQYABaiAGQQhq +ENInIANB+ABqIAMoAoABIAMoAoQBEK0sIAMoAnghBiADKAJ8IQcgBEHZBWogCDoAACAEQdgFaiIK +QQA6AAAgBEHUBWogADYCACAEQdAFaiABNgIAIARBzAVqIAc2AgAgBEHIBWogBjYCACAEQcQFaiAL +NgIAIARBwAVqIAU2AgAgBEGYA2ohCQwCCyAEQagCaigCACIBIAEoAgAiBUEBajYCACAFQQBIDRAg +A0GADGogBEH4AWoQixQgBCgCrAIiBiAGKAIAIgVBAWo2AgAgBUEASA0QIANBwAJqIARBoAJqEPEu +IAMoAsQCIQggAygCwAIhCyADQYAUaiAEQdgBahDuKwJ+IAQpAwhQBEAgA0GQAmogBEE4ahDSJyAD +KAKUAiEHIAMoApACIQogA0HwBGogBEEQahCBFSADQfAXaiAEQUBrEK8FIARB0AFqKAIAIgUgBSgC +ACIJQQFqNgIAIAlBAEgNEiAELQDUASEMIANBiAJqIARBMGoQhSggA0GgGmogA0H4BGopAwA3AwAg +A0GoGmogA0GABWopAwA3AwAgA0GwGmogA0GIBWopAwA3AwAgAyADKQPwBDcDmBogAygCjAIhCSAD +KAKIAiENIANBsAlqIANB8BdqQZABEM1PGkIADAELIARBEGohBQJ/IARBGGoiBygCAEUEQCADQagC +aiAFEPEuIAMoAqwCIQwgAygCqAIhCUEADAELIANBuAJqIAUQ8S4gAygCvAIhDCADKAK4AiEJIANB +sAJqIAcQ8S4gAygCtAIhDSADKAKwAgshByAEQcABaigCACIFIAUoAgAiCkEBajYCACAKQQBIDREg +A0GgAmogBEEoahDSJyADKQOgAiEPIANBkBhqIARBMGoQrwUgA0GYAmogBEEgahCFKCADQfgXaiIK +IAc2AgAgA0GIGGogDzcDACADQbAaaiAPNwMAIANBgBhqIAMpA5gCIg83AwAgA0GoGmogDzcDACAD +IA02AvwXIANBoBpqIAopAwA3AwAgAyAMNgL0FyADIAk2AvAXIAMgBTYCoBkgAyAELQDEAToApBkg +AyADKQPwFzcDmBogAygCkBghDSADKAKUGCEJIAMoApgYIQogAygCnBghByADQbAJaiADQaAYakGI +ARDNTxpCAQshDyAEQcgCaiADKQOYGjcDACADQYsYaiADQZgUaikCADcAACADQYMYaiADQZAUaikC +ADcAACADQfsXaiADQYgUaikCADcAACAEQdACaiADQaAaaikDADcDACAEQdgCaiADQagaaikDADcD +ACAEQeACaiADQbAaaikDADcDACADIAMpAoAUNwDzFyAEQfgCaiADQbAJakGQARDNTxogBEHgBGog +ATYCACAEQbAEaiADQYAMakEoEM1PGiAEQdwEaiAINgIAIARB2ARqIAs2AgAgBEHkBGogBjYCACAE +IAw6AIwEIARBiARqIAU2AgAgBCAHNgL0AiAEQfACaiAKNgIAIAQgCTYC7AIgBEHoAmogDTYCACAE +IA83A8ACIARBjQRqIANB8BdqQSMQzU8aIAQoArgCIgEtAEAhCCADKALIAiEFIAMoAswCIQsgA0GA +AmogAUEIahDSJyADQfgBaiADKAKAAiADKAKEAhCtLCADKAL4ASEGIAMoAvwBIQcgBEGpB2ogCDoA +ACAEQagHaiIKQQA6AAAgBEGkB2ogADYCACAEQaAHaiAEQcACaiIBNgIAIARBnAdqIAc2AgAgBEGY +B2ogBjYCACAEQZQHaiALNgIAIARBkAdqIAU2AgAgBEHoBGohCQwHCyAEQZgDaiEJAkAgBEHYBWoi +Ci0AAEEBaw4DBQkCAAsgBEHMBWooAgAhByAEQcgFaigCACEGIARB2QVqLQAAIQggBEHUBWooAgAh +ACAEQcQFaigCACELIARBwAVqKAIAIQUgBEHQBWooAgAhAQsgBCAIOgDTAyAEQQA6ANIDIARBzANq +IAE2AgAgBEHIA2ogATYCACAEQcQDaiAANgIAIARBtANqIAc2AgAgBEGwA2ogBjYCACAEQawDaiAL +NgIAIARBqANqIAU2AgAgBEHSA2ohDCABDAELIARB0gNqIQwCQCAELQDSA0EBaw4EAgcoKQALIARB +zANqKAIAIQEgBEG0A2ooAgAhByAEQbADaigCACEGIARBxANqKAIAIQAgBEGsA2ooAgAhCyAEQagD +aigCACEFIAQtANMDIQggBEHIA2ooAgALIQ0gBEEBOgDRAyAEIAU2ApgDIARB0ANqIAg6AAAgBEG4 +A2ogADYCACAEQZwDaiALNgIAIARBwANqIAE2AgAgBEG8A2ogDTYCACAEQaQDaiAHNgIAIARBoANq +IAY2AgBBxJPbACgCAEECSw0lQcD82gAQ+z4iAUH/AXFFDSVBACEAQcD82gAoAgAgARD1LkUNJUHA +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 +ARDNTxpBxJPbACgCAEEDSw0GQZT92gAQ+z4iAUH/AXFFDQZBACEAQZT92gAoAgAgARD1LkUNBkGU +/doAKAIAIgJBKGooAgAhBSACQSRqKAIAIQYgAigCHCEHIAMgAkEgaigCACIBBH8gA0EANgKAGCAD +IAU2AvwXIAMgBjYC+BcgAyABNgL0F0EBIQAgBwVBAAs2AvAXIANB7BtqIANB8BdqQbzlwQAQ2iwg +A0GMFGpCADcCACADQQE2AoQUIANB9OXBADYCgBQgA0GwwMEANgKIFCADIAAgAU8Ef0EABSADIAU2 +AvwXIAMgBjYC+BcgAyABNgL0FyADIAA2AoAYIABBAWohACAHCzYC8BcgA0HEF2ogA0HwF2pBvOXB +ABDaLCADQcgBaiAEQagFaiIIELFGIAMgAykDyAE3ArgXIAMgA0G4F2o2AoAcIAMgACABSQR/IAMg +BTYC/BcgAyAGNgL4FyADIAE2AvQXIAMgADYCgBggAEEBaiEAIAcFQQALNgLwFyADQZwXaiADQfAX +akG85cEAENosIANBwAFqIAgQskYgAyADKQPAATcC3BcgAyADQdwXajYChBwgAyAAIAFJBH8gAyAA +NgLgFSADIAU2AtwVIAMgBjYC2BUgAyABNgLUFSAHBUEACzYC0BUgA0G4EmoiASADQdAVaiIAQbzl +wQAQ2iwgA0GcGGpB/OXBADYCACADQZAYakGEwcEANgIAIANBhBhqQfTAwQA2AgAgA0GYGGogA0GI +HGo2AgAgA0GMGGogA0GEHGo2AgAgA0GAGGogA0GAHGo2AgAgA0GgwMEANgL4FyADIAE2ApQYIAMg +A0GcF2o2AogYIAMgA0HEF2o2AvwXIAMgA0GAFGo2AvQXIAMgA0HsG2o2AvAXIAMgA0GYGmo2Aogc +IAAgAkEcaiADQfAXahDWQUGU/doAKAIAIAAQxDQMBgsgBEHsBGooAgAhACAEKALoBCEFIANB4AFq +IAIQ4EogA0GYGmogAUGgAmogBSAAIAMoAuABIAMoAuQBEP8aIAMoAqgbQQJGDQQgA0HwF2oiASAD +QZgaakG4ARDNTxogA0GAFGogASAEKAKIBRCoBSADKAKAFEGggICAeEcEQCAEKAKMBSEAIANB6BBq +IgEgA0GAFGoQhQ0gAEGgAmogARDuBgtBxJPbACgCAA0DQaD92gAQ+z4iAUH/AXFFDQNBACEAQaD9 +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 +ACADQYIOaiADQY0cakEjEM1PGiADQYAMaiADQbAJakH8ARDNTxogDEEBOgAAIA9CBFENACADQe0G +aiIBIANBgg5qQSMQzU8aIANB8ARqIgIgA0GADGpB/AEQzU8aIAkQ5SggCkEBOgAAIANBjQlqIAFB +IxDNTxogA0GQB2ogAkH8ARDNTxogCRCCPSAPQgJ9IhBCAVYNAiAQp0EBaw0DDAELIApBAzoAACAO +QQw6AABBBAweCyADQd0LaiADQY0JakEjEM1PGiAEQcACahDwJgwaCyADIAA6APgXIAMgDzcD8Bcg +A0H5F2ogA0GNCWpBIxDNTxogA0GcGGogA0GQB2pB/AEQzU8aIANBkAFqIAQoArgCQQhqEMwXIAMg +Ay0AlAE6AIQMIAMgAygCkAE2AoAMIANBsAlqIgAgA0GADGoiASADQfAXahCRPCAAEIkMIAEQnx8L +IARBwAJqEPAmDBkLIAQoArwDIQAgBCgCmAMhASAEKAKcAyEFIANB6ABqIAQoArgDEN9KIAMoAmgh +BiADKAJsIQcgBEH0A2pBADoAACAEQeQDaiAHNgIAIARB4ANqIAY2AgAgBEHcA2ogBTYCACAEQdgD +aiABNgIAIARB1ANqIABBIGo2AgALIANB8BdqIARB1ANqIgEgAhCcBCADKALwFyIFQQJGDQggAy0A +9BchACADQaUOaiADQfAXakEFckEjEM1PGiABEOY/IAUNASADQagaaiADQbgOaikAADcDACADQaAa +aiADQbAOaikAADcDACADIAMpAKgONwOYGiADKAKsGkUNAiAEQdgDaiIBIANBqA5qIgApAAA3AAAg +BEHoA2ogAEEQaikAADcAACAEQeADaiAAQQhqKQAANwAAIARBvANqKAIAIQAgA0GIGGogARCCFSAD +QZgaaiIBIANB8BdqQdQAEM1PGiAEQfADaiABQdQAEM1PGiAEQQA6AMkEIARBxARqIABBIGo2AgAL +IANB8BdqIARB8ANqIgUgAhC1AiADKALgGCIBQQNGDQIgAy0A8BchACADQcUQaiADQfAXakEBckEj +EM1PGiADQfgPaiADQZQYakHMABDNTxogA0HwD2oiAiADQfwYaigCADYCACADQegPaiIGIANB9Bhq +KQIANwMAIANB4A9qIgcgA0HsGGopAgA3AwAgAyADKQLkGDcD2A8gBRCyFyABQQJGDQMgA0HUD2og +AigCADYCACADQcwPaiAGKQMANwIAIANBxA9qIAcpAwA3AgAgAyADKQPYDzcCvA8gAyAAOgDIDiAD +QcgOakEBciADQcUQakEjEM1PGiADQewOaiADQfgPakHMABDNTxogAyABNgK4DyAEQbwDaigCACEB +IARBuANqKAIAIgIoAgQiBSgCACIAQf////8Ha0EAIABBgoCAgHhIGw4CBAUGCyADQY0caiADQaUO +akEjEM1PGkIDIQ8MDgsgA0GYGmoQlUVCAiEPAkBBxJPbACgCAEEDSw0AQcz82gAQ+z4iAUH/AXFF +DQBBACEAQcz82gAoAgAgARD1LkUNAEHM/NoAKAIAIgJBKGooAgAhBSACQSRqKAIAIQYgAigCHCEH +IAMgAkEgaigCACIBBH8gA0EANgKAGCADIAU2AvwXIAMgBjYC+BcgAyABNgL0F0EBIQAgBwVBAAs2 +AvAXIANB0BVqIANB8BdqQeDhwQAQ2iwgA0GkGmpCADcCACADQQE2ApwaIANBsOLBADYCmBogA0Gw +wMEANgKgGiADIAAgAU8Ef0EABSADIAU2AvwXIAMgBjYC+BcgAyABNgL0FyADIAA2AoAYIABBAWoh +ACAHCzYC8BcgA0HoEGogA0HwF2pB4OHBABDaLCADIAk2AsQXIAMgACABSQR/IAMgADYCgBggAyAF +NgL8FyADIAY2AvgXIAMgATYC9BcgBwVBAAs2AvAXIANBgBRqIgEgA0HwF2oiBUHg4cEAENosIANB +GGogBEG4A2ooAgAQ30ogA0GQGGpBhMHBADYCACADQYQYakH0wMEANgIAIANBjBhqIANBnBdqNgIA +IANBgBhqIANBxBdqNgIAIANBoMDBADYC+BcgAyADKQMYNwLIDiADIANByA5qNgKcFyADIAE2AogY +IAMgA0HoEGo2AvwXIAMgA0GYGmo2AvQXIAMgA0HQFWo2AvAXIANBuBJqIgEgAkEcaiAFEOFBQcz8 +2gAoAgAgARDENAsMDQtBBAwFCyADQY0caiADQcUQakEjEM1PGiAEQdgDahD7H0IDIQ8MCwsgA0GY +GmoiACABKAJUQQhqELZRIAQoArgDIQIgA0HwF2oiBSADQcgOakGQARDNTxogBEEAOgDRAyADQegQ +aiAAIAIgBSAEQaADaigCACAEQaQDaigCACAEQdADai0AABCuByADKQPoEFANCCADQZgaaiADQfAQ +akGoARDNTxpBxJPbACgCAEEDSw0GQZT92gAQ+z4iAUH/AXFFDQZBACEAQZT92gAoAgAgARD1LkUN +BkGU/doAKAIAIgJBKGooAgAhBSACQSRqKAIAIQYgAigCHCEHIAMgAkEgaigCACIBBH8gA0EANgKA +GCADIAU2AvwXIAMgBjYC+BcgAyABNgL0F0EBIQAgBwVBAAs2AvAXIANB7BtqIANB8BdqQbzlwQAQ +2iwgA0GMFGpCADcCACADQQE2AoQUIANB9OXBADYCgBQgA0GwwMEANgKIFCADIAAgAU8Ef0EABSAD +IAU2AvwXIAMgBjYC+BcgAyABNgL0FyADIAA2AoAYIABBAWohACAHCzYC8BcgA0HEF2ogA0HwF2pB +vOXBABDaLCADQcgAaiAEQdgDaiIIELFGIAMgAykDSDcCuBcgAyADQbgXajYCgBwgAyAAIAFJBH8g +AyAFNgL8FyADIAY2AvgXIAMgATYC9BcgAyAANgKAGCAAQQFqIQAgBwVBAAs2AvAXIANBnBdqIANB +8BdqQbzlwQAQ2iwgA0FAayAIELJGIAMgAykDQDcC3BcgAyADQdwXajYChBwgAyAAIAFJBH8gAyAA +NgLgFSADIAU2AtwVIAMgBjYC2BUgAyABNgLUFSAHBUEACzYC0BUgA0G4EmoiASADQdAVaiIAQbzl +wQAQ2iwgA0GcGGpB/OXBADYCACADQZAYakGEwcEANgIAIANBhBhqQfTAwQA2AgAgA0GYGGogA0GI +HGo2AgAgA0GMGGogA0GEHGo2AgAgA0GAGGogA0GAHGo2AgAgA0GgwMEANgL4FyADIAE2ApQYIAMg +A0GcF2o2AogYIAMgA0HEF2o2AvwXIAMgA0GAFGo2AvQXIAMgA0HsG2o2AvAXIAMgA0GYGmo2Aogc +IAAgAkEcaiADQfAXahDWQUGU/doAKAIAIAAQxDQMBgsgBEGcA2ooAgAhACAEKAKYAyEFIANB4ABq +IAIQ4EogA0GYGmogAUHQAGogBSAAIAMoAmAgAygCZBD/GiADKAKoG0ECRg0EIANB8BdqIgEgA0GY +GmpBuAEQzU8aIANBgBRqIAEgBCgCuAMQqAUgAygCgBRBoICAgHhHBEAgBCgCvAMhACADQegQaiIB +IANBgBRqEIUNIABB0ABqIAEQ7gYLQcST2wAoAgANA0Gg/doAEPs+IgFB/wFxRQ0DQQAhAEGg/doA +KAIAIAEQ9S5FDQNBoP3aACgCACICQShqKAIAIQUgAkEkaigCACEGIAIoAhwhByADIAJBIGooAgAi +AQR/IANBADYCkBQgAyAFNgKMFCADIAY2AogUIAMgATYChBRBASEAIAcFQQALNgKAFCADQewbaiAD +QYAUakGM5sEAENosIANB9BBqQgA3AgAgA0EBNgLsECADQbzmwQA2AugQIANBsMDBADYC8BAgAyAA +IAFPBH9BAAUgAyAFNgKMFCADIAY2AogUIAMgATYChBQgAyAANgKQFCAAQQFqIQAgBws2AoAUIANB +xBdqIANBgBRqQYzmwQAQ2iwgA0HYAGogA0GID2oiCBCxRiADIAMpA1g3ArgXIAMgA0G4F2o2AoAc +IAMgACABSQR/IAMgBTYCjBQgAyAGNgKIFCADIAE2AoQUIAMgADYCkBQgAEEBaiEAIAcFQQALNgKA +FCADQZwXaiADQYAUakGM5sEAENosIANB0ABqIAgQskYgAyADKQNQNwLcFyADIANB3BdqNgKEHCAD +IAAgAUkEfyADIAA2AuAVIAMgBTYC3BUgAyAGNgLYFSADIAE2AtQVIAcFQQALNgLQFSADQbgSaiIF +IANB0BVqIgFBjObBABDaLCADQawUakHE5sEANgIAIANBoBRqQYTBwQA2AgAgA0GUFGpB9MDBADYC +ACADQagUaiADQYgcajYCACADQZwUaiADQYQcajYCACADQZAUaiADQYAcajYCACADQaDAwQA2AogU +IAMgBTYCpBQgAyADQZwXajYCmBQgAyADQcQXajYCjBQgAyADQegQajYChBQgAyADQewbajYCgBQg +AyADQfAXajYCiBwgASACQRxqIANBgBRqENZBQaD92gAoAgAgARDENAwDCyADIAU2ApwXQcST2wAo +AgBBA0sNA0Gs/doAEPs+IgBB/wFxRQ0DQQAhAkGs/doAKAIAIAAQ9S5FDQNBrP3aACgCACIFQShq +KAIAIQcgBUEkaigCACEIIAUoAhwhASADIAVBIGooAgAiBgR/IANBADYCgBggAyAHNgL8FyADIAg2 +AvgXIAMgBjYC9BdBASECIAEFQQALNgLwFyADQdAVaiADQfAXakHU5sEAENosIANB/BdqQgA3AgAg +A0EBNgL0FyADQajnwQA2AvAXIANBsMDBADYC+BdBACEAIAIgBkkEQCADIAI2ApAUIAMgBzYCjBQg +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 +NwMAIAEgAzYCBCABQZGAgIB4NgIAIANBCGogAkEIaikDADcDAAwBCyABIAIoAgQ2AgQgAUGVgICA +eDYCAAsgAkEQaiQADAELQQhBEBDETwALDAYLIABBkoCAgHg2AgAMBgsgAygCBCEDIwBBEGsiASQA +IwBBEGsiAiQAIAIgAxDxBgJAAkACQCACKAIAQZWAgIB4RwRAQeGT2wAtAAAaQRBBCBCrSCIDRQ0C +IAMgAikDADcDACABIAM2AgQgAUGTgICAeDYCACADQQhqIAJBCGopAwA3AwAMAQsgASACKAIENgIE +IAFBlYCAgHg2AgALIAJBEGokAAwBC0EIQRAQxE8ACwwECyADQQhqKAIAIQIgA0EMaigCACEDIwBB +MGsiASQAIAFBADYCDCABIAI2AgQgASACIANBBHRqNgIIIAFBIGohAyMAQRBrIgIkACACIAFBBGoQ +hA4CQCACKAIAQZWAgIB4RwRAIAMgAikDADcDACADQQhqIAJBCGopAwA3AwAMAQsgAyACKAIENgIE +IANBloCAgHg2AgALIAJBEGokAAJAIAEoAiBBloCAgHhHBEAgAUEYaiICIAFBKGoiAykDADcDACAB +IAEpAyA3AxAgAyABQQxqKAIANgIAIAEgASkCBDcDICABQSBqEOwhIgNFBEAgACABKQMQNwMAIABB +CGogAikDADcDAAwCCyAAQZaAgIB4NgIAIAAgAzYCBCABQRBqEIJFDAELIAAgASgCJDYCBCAAQZaA +gIB4NgIACyABQTBqJAAMBAsgAygCBCEBIAMoAgghAyMAQTBrIgIkACACQgA3AgggAiABNgIAIAIg +ASADQQV0ajYCBCACQSBqIQYjAEEQayIEJAAjAEHgAGsiASQAIAFBCGpBgIACIAIoAgQgAigCACID +a0EFdiIFIAVBgIACTxtBACADGxCxFiABQQA2AhwgASABKQMINwIUAkACQANAIAFBQGshBSMAQdAA +ayIDJAAgA0EIaiACEIglAkAgAygCCCIHRQRAIAVBlYCAgHg2AgAMAQsgAygCDCEIIANBMGogBxDx +BiADKAIwQZWAgIB4RwRAIANBGGoiByADQThqKQMANwMAIAMgAykDMDcDECADQSBqIAgQ8QYgAygC +IEGVgICAeEcEQCADQUBrIAMpAyAiCTcDACADQcgAaiADQShqKQMAIgo3AwAgBSADKQMQNwMAIAVB +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 +IABBCGoQ9g4LCgAgAEEIahC/BwsKACAAQQhqEKsVCwoAIABBCGoQ3QMLCgAgAEEIahDABwsKACAA +QRhqEN9HC8wCAQV/IwBB0ABrIgEkACABIAAoAhA2AgACQAJAAkBBxJPbACgCAEECSw0AAkACQEHE ++NoALQAAIgIOAwIBAQALQbz42gAQhxgiAkH/AXFFDQELQbz42gAoAgAgAhD1LkUNAEG8+NoAKAIA +IgJBIGooAgAiA0UNASACQSRqKAIAIQQgAigCHCEFIAEgAkEoaigCADYCKCABIAQ2AiQgASADNgIg +IAEgBTYCHCABQQA2AiwgAUE8akIBNwIAIAFB4JDIADYCGCABQQI2AjQgAUHQkMgANgIwIAFBrAU2 +AkwgASABQTBqNgIUIAEgAUEcajYCECABIAFByABqNgI4IAEgATYCSCABQQRqIgMgAkEcaiABQRBq +EOBBQbz42gAoAgAgAxDENAsgABDHUSABQdAAaiQADAELQeCOyABBIkGMkMgAENciAAsgABCeQwuo +AgEBfyMAQRBrIgEkACAAKAIIQQJHBEAgAEEIaiAAEPgnCyABIAA2AgwCQAJAAkACQAJAAkACQAJA +AkACQAJAIABBowNqLQAADggGCgoCAwQAAQoLIABBqANqEOobDAQLIABBqANqEIk9DAMLIABB0ANq +EOtCDAYLIABBqANqEI4YDAQLIABBqANqEJRACyAAQYQDahC6SyAAQaADai0AAEUNASAAQfAAahDa +GgwBCyAAQZQDahCpSwwDCyAAQQA6AKADCyAAQaEDai0AAEUNACAAQSBqEOs/CyAAQaEDakEAOgAA +IABBogNqLQAABEAgAEGoA2oQx0cLIABB4AJqEMlHIABB+AJqEIAIIABBADoAogMLIAFBDGoQij0g +AUEQaiQAIAAQ2SILrAIBAX8jAEEQayIBJAAgACgCCEECRwRAIABBCGogABD4JwsgASAANgIMAkAC +QAJAAkACQAJAAkACQAJAAkACQCAAQYYCai0AAA4ICQoKAgMEAAEKCyAAQYgCahDwPyAAQegBahCa +TAwECyAAQagCahDqGyAAQYwCahD7QCAAQaACahD6PiAAQZgCahD6PiAAQYgCahCLSgwECyAAQYgC +ahDrQgwFCyAAQYgCahCtOAwDCyAAQYgCahDZPwsgAEHsAWoQvTkLIABBjAFqEOgrIABBgAFqEJ0Z +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 +QYCAgIB4NgIQIAJBEGogAUEYaigCADYCACACIAs3AwggAkE0aiACQQhqEI8yIAJBQGshBCABQSBq +KAIAIgYoAgQhAyAGKAIIIQcjAEEQayIJJAAgCUEEaiIGIAMgAyAHQQV0ahDjHiMAQSBrIgMkACAG +KAIEIQcgA0EQakEBIAYoAggiCBD2LgJAAkAgAygCEEGAgICAeEcEQCADQQhqIANBGGooAgA2AgAg +AyADKQIQNwMAIAhBDGwhCANAIAhFDQIgCEEMayEIIAMgBzYCECAHQQxqIQcgAyADQRBqELApIgpF +DQALIARBBjoAACAEIAo2AgQgAxDoSwwCCyAEIAMoAhQ2AgQgBEEGOgAADAELIANBG2ogA0EIaigC +ADYAACAEQQQ6AAAgAyADKQMANwATIAQgAykAEDcAASAEQQhqIANBF2opAAA3AAALIANBIGokACAG +EK1LIAlBEGokAAJAIAItAEBBBkcEQCACQegAaiACQdAAaikDADcDACACQeAAaiACQcgAaikDADcD +ACACIAIpA0A3A1ggAkEYaiIDIAFBBGogAkE0aiACQdgAahDUDCADEJVDQQAhAwwBCyACKAJEIQMg +AkE0ahCIPwsgAkHwAGokACADDAELQefZyQBBKEHA28kAEOYrAAshAgsgAg0BIAEgBUHoAWo2AiAg +AUGc4ckAQQogAUEgahDLPiICDQEgASAFQYgCajYCICABQabhyQBBGiABQSBqEMs+IgINASABIAVB +yANqEPEQIgJFBEAgAUE4aiABQRhqKQMANwMAIAFBMGogAUEQaikDADcDACABQShqIAFBCGopAwA3 +AwAgASABKQMANwMgIAAgAUEgahCrGgwDCwwBCyABKAIkIQIgAEEGOgAAIAAgAjYCBAwBCyAAQQY6 +AAAgACACNgIEIAEQyjgLIAFBQGskAAu8BQIIfwF+IAEoAgAhBSMAQUBqIgEkACABQSBqQQAgARD6 +SQJAIAEoAiAiAkECRwRAIAFBEGogAUEwaikDADcDACABQRhqIAFBOGopAwA3AwAgASABKQMoNwMI +IAEgASgCJDYCBCABIAI2AgACQCABQfbeyQBBByAFQQxqEM4+IgINACABQf3eyQBBCiAFEO0+IgIN +ACABQZHhyQBBCxDdFyICRQRAAn8jAEHwAGsiAiQAIAEoAgBFBEAgASkCECEKIAFBgICAgHg2AhAg +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 +CwJAIANBFUYNACACQRNqIABBDWoiAEECai0AADoAACACIAM6ABAgAiAALwAAOwARIAItAA8EQCAC +KAIEIAIoAgghASACQcQAakIANwIAIAJBATYCPCACQYTz0QA2AjggAkH08tEANgJAIAJBOGogASgC +FBECAA0CIAItABAhAwsgAkERaiEEIAJBAToADyACKAIIIQAgAigCBCEBAkACQAJAAkACQAJAAkAC +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBAWsOFBQTAAECAwQFBgcICQoLDA0ODxAREgsg +AkHEAGpCADcCACACQQE2AjwgAkHE9dEANgI4IAJB9PLRADYCQCABIAJBOGogACgCFBECAEUNFAwV +CyACQcQAakIANwIAIAJBATYCPCACQdD10QA2AjggAkH08tEANgJAIAEgAkE4aiAAKAIUEQIARQ0T +DBQLIAJBxABqQgA3AgAgAkEBNgI8IAJB3PXRADYCOCACQfTy0QA2AkAgASACQThqIAAoAhQRAgBF +DRIMEwsgAkHEAGpCADcCACACQQE2AjwgAkHo9dEANgI4IAJB9PLRADYCQCABIAJBOGogACgCFBEC +AEUNEQwSCyACQcQAakIANwIAIAJBATYCPCACQfT10QA2AjggAkH08tEANgJAIAEgAkE4aiAAKAIU +EQIARQ0QDBELIAJBxABqQgA3AgAgAkEBNgI8IAJBgPbRADYCOCACQfTy0QA2AkAgASACQThqIAAo +AhQRAgBFDQ8MEAsgAkHEAGpCADcCACACQQE2AjwgAkGM9tEANgI4IAJB9PLRADYCQCABIAJBOGog +ACgCFBECAEUNDgwPCyACQcQAakIANwIAIAJBATYCPCACQZj20QA2AjggAkH08tEANgJAIAEgAkE4 +aiAAKAIUEQIARQ0NDA4LIAJBxABqQgA3AgAgAkEBNgI8IAJBpPbRADYCOCACQfTy0QA2AkAgASAC +QThqIAAoAhQRAgBFDQwMDQsgAkHEAGpCADcCACACQQE2AjwgAkGY9tEANgI4IAJB9PLRADYCQCAB +IAJBOGogACgCFBECAEUNCwwMCyACQcQAakIANwIAIAJBATYCPCACQaT20QA2AjggAkH08tEANgJA +IAEgAkE4aiAAKAIUEQIARQ0KDAsLIAJBxABqQgA3AgAgAkEBNgI8IAJBsPbRADYCOCACQfTy0QA2 +AkAgASACQThqIAAoAhQRAgBFDQkMCgsgAkHEAGpCADcCACACQQE2AjwgAkG89tEANgI4IAJB9PLR +ADYCQCABIAJBOGogACgCFBECAEUNCAwJCyACQcQAakIANwIAIAJBATYCPCACQcj20QA2AjggAkH0 +8tEANgJAIAEgAkE4aiAAKAIUEQIARQ0HDAgLIAJBxABqQgA3AgAgAkEBNgI8IAJB1PbRADYCOCAC +QfTy0QA2AkAgASACQThqIAAoAhQRAgBFDQYMBwsgAiAENgIcIAJBxABqQgE3AgAgAkEBNgI8IAJB +5PbRADYCOCACQdwVNgIkIAIgAkEgajYCQCACIAJBHGo2AiAgASACQThqIAAoAhQRAgBFDQUMBgsg +AiAENgIUIAIgAkESajYCGCACIAJBE2o2AhwgAkEsakIDNwIAIAJBzABqQdwVNgIAIAJBxABqQdwV +NgIAIAJBAzYCJCACQfT20QA2AiAgAkHcFTYCPCACIAJBOGo2AiggAiACQRxqNgJIIAIgAkEYajYC +QCACIAJBFGo2AjggASACQSBqIAAoAhQRAgBFDQQMBQsgAkHEAGpCADcCACACQQE2AjwgAkGQ99EA +NgI4IAJB9PLRADYCQCABIAJBOGogACgCFBECAEUNAwwECyACQcQAakIANwIAIAJBATYCPCACQaD1 +0QA2AjggAkH08tEANgJAIAEgAkE4aiAAKAIUEQIARQ0CDAMLIAJBxABqQgA3AgAgAkEBNgI8IAJB +uPXRADYCOCACQfTy0QA2AkAgASACQThqIAAoAhQRAgANAgwBCyACQcQAakIANwIAIAJBATYCPCAC +Qaz10QA2AjggAkH08tEANgJAIAEgAkE4aiAAKAIUEQIADQELAkAgBUEVRg0AIAJBE2ogAkEOai0A +ADoAACACIAU6ABAgAiACLwEMOwARIAItAA8EQCACKAIEIAIoAgghASACQcQAakIANwIAIAJBATYC +PCACQYTz0QA2AjggAkH08tEANgJAIAJBOGogASgCFBECAA0CCyACQRFqIQMgAigCCCEAIAIoAgQh +AQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDhQUEwABAgME +BQYHCAkKCwwNDg8QERILIAJBxABqQgA3AgAgAkEBNgI8IAJByPPRADYCOCACQfTy0QA2AkAgASAC +QThqIAAoAhQRAgANFQwUCyACQcQAakIANwIAIAJBATYCPCACQdTz0QA2AjggAkH08tEANgJAIAEg +AkE4aiAAKAIUEQIADRQMEwsgAkHEAGpCADcCACACQQE2AjwgAkHg89EANgI4IAJB9PLRADYCQCAB +IAJBOGogACgCFBECAA0TDBILIAJBxABqQgA3AgAgAkEBNgI8IAJB7PPRADYCOCACQfTy0QA2AkAg +ASACQThqIAAoAhQRAgANEgwRCyACQcQAakIANwIAIAJBATYCPCACQfjz0QA2AjggAkH08tEANgJA +IAEgAkE4aiAAKAIUEQIADREMEAsgAkHEAGpCADcCACACQQE2AjwgAkGE9NEANgI4IAJB9PLRADYC +QCABIAJBOGogACgCFBECAA0QDA8LIAJBxABqQgA3AgAgAkEBNgI8IAJBkPTRADYCOCACQfTy0QA2 +AkAgASACQThqIAAoAhQRAgANDwwOCyACQcQAakIANwIAIAJBATYCPCACQZz00QA2AjggAkH08tEA +NgJAIAEgAkE4aiAAKAIUEQIADQ4MDQsgAkHEAGpCADcCACACQQE2AjwgAkGo9NEANgI4IAJB9PLR +ADYCQCABIAJBOGogACgCFBECAA0NDAwLIAJBxABqQgA3AgAgAkEBNgI8IAJBnPTRADYCOCACQfTy +0QA2AkAgASACQThqIAAoAhQRAgANDAwLCyACQcQAakIANwIAIAJBATYCPCACQaj00QA2AjggAkH0 +8tEANgJAIAEgAkE4aiAAKAIUEQIADQsMCgsgAkHEAGpCADcCACACQQE2AjwgAkG09NEANgI4IAJB +9PLRADYCQCABIAJBOGogACgCFBECAA0KDAkLIAJBxABqQgA3AgAgAkEBNgI8IAJBwPTRADYCOCAC +QfTy0QA2AkAgASACQThqIAAoAhQRAgANCQwICyACQcQAakIANwIAIAJBATYCPCACQcz00QA2Ajgg +AkH08tEANgJAIAEgAkE4aiAAKAIUEQIADQgMBwsgAkHEAGpCADcCACACQQE2AjwgAkHY9NEANgI4 +IAJB9PLRADYCQCABIAJBOGogACgCFBECAA0HDAYLIAIgAzYCHCACQcQAakIBNwIAIAJBATYCPCAC +Qej00QA2AjggAkHcFTYCJCACIAJBIGo2AkAgAiACQRxqNgIgIAEgAkE4aiAAKAIUEQIADQYMBQsg +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 +6AFqIgIgAxDZKyAFIAJBoAEQzU8aIAFBAWohAQwBCwsgACAEQcgAakGgARDNTxogBEGgBWokAAsO +ACABQcD40wBBAhCnAwsMACAAKAIAIAEQpEsLDgAgAUHIptYAQQIQpwMLDAAgACgCACABEIoJC/he +AgZ/Hn4jAEGwAmsiByQAIAdBAEGAARDLTyIDQYABaiAAIgdBKBDNTxogASACQQd0aiEIIAcpAzgh +JSAHKQMwISQgBykDKCEjA0AgASAIRwRAIANCgICAgIABNwK8ASADIAE2ArABIANBgAE2ArQBIAMg +AUGAAWoiADYCuAFBECADQbABahDLPCICIAJBEE8bQQN0IQRBACECA0AgAiAERgRAIAMpAxghHCAD +KQMQIRYgAykDCCEdIAMpAwAhISADKQOYASEaIAMpA5ABIQ8gAykDiAEhECADKQOAASESIAMgAykD +oAEiDDcDiAIgAyASNwOAAiADICM3A5gCIAMgEDcDkAIgAyAkNwOoAiADIA83A6ACIAMgGjcDsAEg +AyAlNwO4ASADQfABaiIGIANBgAJqIgEgA0GQAmoiAiADQaACaiIEIANBsAFqIgUgIUKi3KK5jfOL +xcIAfBDSFiADKQPwASEaIAMgAykD+AEiDTcDiAIgAyAaNwOAAiADIAw3A5gCIAMgEjcDkAIgAyAj +NwOoAiADIBA3A6ACIAMgJDcDuAEgAyAPNwOwASAGIAEgAiAEIAUgHULNy72fkpLRm/EAfBDSFiAD +KQPwASEPIAMgAykD+AEiFzcDiAIgAyAPNwOAAiADIA03A5gCIAMgGjcDkAIgAyAMNwOoAiADIBI3 +A6ACIAMgIzcDuAEgAyAQNwOwASAGIAEgAiAEIAUgFkLRicudgYbBn8oAfRDSFiADKQPwASEQIAMg +AykD+AEiETcDiAIgAyAQNwOAAiADIBc3A5gCIAMgDzcDkAIgAyANNwOoAiADIBo3A6ACIAMgDDcD +uAEgAyASNwOwASAGIAEgAiAEIAUgHELEyNjzp4uJpRZ9ENIWIAMpA/ABIRIgAykDOCEJIAMpAzAh +CiADKQMoIQsgAykDICEOIAMgAykD+AEiDDcDiAIgAyASNwOAAiADIBE3A5gCIAMgEDcDkAIgAyAX +NwOoAiADIA83A6ACIAMgDTcDuAEgAyAaNwOwASAGIAEgAiAEIAUgDkK46qKav8uwqzl8ENIWIAMp +A/ABIRogAyADKQP4ASINNwOIAiADIBo3A4ACIAMgDDcDmAIgAyASNwOQAiADIBE3A6gCIAMgEDcD +oAIgAyAXNwO4ASADIA83A7ABIAYgASACIAQgBSALQpmgl7CbvsT42QB8ENIWIAMpA/ABIQ8gAyAD +KQP4ASIbNwOIAiADIA83A4ACIAMgDTcDmAIgAyAaNwOQAiADIAw3A6gCIAMgEjcDoAIgAyARNwO4 +ASADIBA3A7ABIAYgASACIAQgBSAKQuXgmoe1q5/g7QB9ENIWIAMpA/ABIRAgAyADKQP4ASIRNwOI +AiADIBA3A4ACIAMgGzcDmAIgAyAPNwOQAiADIA03A6gCIAMgGjcDoAIgAyAMNwO4ASADIBI3A7AB +IAYgASACIAQgBSAJQuj9yayipejx1AB9ENIWIAMpA/ABIRIgAykDWCEeIAMpA1AhHyADKQNIIRcg +AykDQCETIAMgAykD+AEiIDcDiAIgAyASNwOAAiADIBE3A5gCIAMgEDcDkAIgAyAbNwOoAiADIA83 +A6ACIAMgDTcDuAEgAyAaNwOwASAGIAEgAiAEIAUgE0K++/Pn9ayV/Cd9ENIWIAMpA/ABIQwgAyAD +KQP4ASIYNwOIAiADIAw3A4ACIAMgIDcDmAIgAyASNwOQAiADIBE3A6gCIAMgEDcDoAIgAyAbNwO4 +ASADIA83A7ABIAYgASACIAQgBSAXQr7fwauU4NbBEnwQ0hYgAykD8AEhDyADIAMpA/gBIhk3A4gC +IAMgDzcDgAIgAyAYNwOYAiADIAw3A5ACIAMgIDcDqAIgAyASNwOgAiADIBE3A7gBIAMgEDcDsAEg +BiABIAIgBCAFIB9CjOWS9+S34ZgkfBDSFiADKQPwASEQIAMgAykD+AEiETcDiAIgAyAQNwOAAiAD +IBk3A5gCIAMgDzcDkAIgAyAYNwOoAiADIAw3A6ACIAMgIDcDuAEgAyASNwOwASAGIAEgAiAEIAUg +HkLi6f6vvbifhtUAfBDSFiADKQPwASENIAMpA3ghEiADKQNwIRogAykDaCEbIAMpA2AhICADIAMp +A/gBIhQ3A4gCIAMgDTcDgAIgAyARNwOYAiADIBA3A5ACIAMgGTcDqAIgAyAPNwOgAiADIBg3A7gB +IAMgDDcDsAEgBiABIAIgBCAFICBC75Luk8+ul9/yAHwQ0hYgAykD8AEhDCADIAMpA/gBIhg3A4gC +IAMgDDcDgAIgAyAUNwOYAiADIA03A5ACIAMgETcDqAIgAyAQNwOgAiADIBk3A7gBIAMgDzcDsAEg +BiABIAIgBCAFIBtCz9Klp5zA05D/AH0Q0hYgAykD8AEhDyADIAMpA/gBIhk3A4gCIAMgDzcDgAIg +AyAYNwOYAiADIAw3A5ACIAMgFDcDqAIgAyANNwOgAiADIBE3A7gBIAMgEDcDsAEgBiABIAIgBCAF +IBpCy9vj0Y2r/pHkAH0Q0hYgAykD8AEhECADIAMpA/gBIhU3A4gCIAMgEDcDgAIgAyAZNwOYAiAD +IA83A5ACIAMgGDcDqAIgAyAMNwOgAiADIBQ3A7gBIAMgDTcDsAEgBiABIAIgBCAFIBJC7LLbhLPR +g7I+fRDSFiADKQPwASENIAMpA/gBIREgAyAhNwOIAiADIB03A4ACIAMgFjcDmAIgAyAcNwOQAiAD +IBc3A6gCIAMgHzcDoAIgAyAaNwO4ASADIBI3A7ABIANB0AFqIAEgAiAEIAUQ3xUgAyAWNwOIAiAD +IBw3A4ACIAMgDjcDmAIgAyALNwOQAiADIB43A6gCIAMgIDcDoAIgAyADKQPYASIhNwO4ASADIAMp +A9ABIhY3A7ABIANB4AFqIAEgAiAEIAUQ3xUgAykD4AEhIiADKQPoASEmIAMgETcDiAIgAyANNwOA +AiADIBU3A5gCIAMgEDcDkAIgAyAZNwOoAiADIA83A6ACIAMgGDcDuAEgAyAMNwOwASAGIAEgAiAE +IAUgIUKu6rqI5selsht9ENIWIAMpA/ABIRwgAyADKQP4ASIUNwOIAiADIBw3A4ACIAMgETcDmAIg +AyANNwOQAiADIBU3A6gCIAMgEDcDoAIgAyAZNwO4ASADIA83A7ABIAYgASACIAQgBSAWQp20w72c +j+6gEH0Q0hYgAykD8AEhFiADIAMpA/gBIh03A4gCIAMgFjcDgAIgAyAUNwOYAiADIBw3A5ACIAMg +ETcDqAIgAyANNwOgAiADIBU3A7gBIAMgEDcDsAEgBiABIAIgBCAFICZCtauz3Oi45+APfBDSFiAD +KQPwASEYIAMgAykD+AEiFTcDiAIgAyAYNwOAAiADIB03A5gCIAMgFjcDkAIgAyAUNwOoAiADIBw3 +A6ACIAMgETcDuAEgAyANNwOwASAGIAEgAiAEIAUgIkLluLK9x7mohiR8ENIWIAMpA/ABIREgAykD ++AEhGSADIA43A4gCIAMgCzcDgAIgAyAKNwOYAiADIAk3A5ACIAMgGzcDqAIgAyAaNwOgAiADICY3 +A7gBIAMgIjcDsAEgBiABIAIgBCAFEN8VIAMpA/ABIQ8gAykD+AEhECADIAo3A4gCIAMgCTcDgAIg +AyATNwOYAiADIBc3A5ACIAMgEjcDqAIgAyAhNwOgAiADIBA3A7gBIAMgDzcDsAEgBiABIAIgBCAF +EN8VIAMpA/ABIQwgAykD+AEhDSADIBk3A4gCIAMgETcDgAIgAyAVNwOYAiADIBg3A5ACIAMgHTcD +qAIgAyAWNwOgAiADIBQ3A7gBIAMgHDcDsAEgBiABIAIgBCAFIBBC9YSsyfWNy/QtfBDSFiADKQPw +ASEcIAMgAykD+AEiCjcDiAIgAyAcNwOAAiADIBk3A5gCIAMgETcDkAIgAyAVNwOoAiADIBg3A6AC +IAMgHTcDuAEgAyAWNwOwASAGIAEgAiAEIAUgD0KDyZv1ppWhusoAfBDSFiADKQPwASEWIAMgAykD ++AEiCzcDiAIgAyAWNwOAAiADIAo3A5gCIAMgHDcDkAIgAyAZNwOoAiADIBE3A6ACIAMgFTcDuAEg +AyAYNwOwASAGIAEgAiAEIAUgDULU94fqy7uq2NwAfBDSFiADKQPwASEYIAMgAykD+AEiDjcDiAIg +AyAYNwOAAiADIAs3A5gCIAMgFjcDkAIgAyAKNwOoAiADIBw3A6ACIAMgGTcDuAEgAyARNwOwASAG +IAEgAiAEIAUgDEK1p8WYqJvi/PYAfBDSFiADKQPwASEZIAMpA/gBIQkgAyATNwOIAiADIBc3A4AC +IAMgHzcDmAIgAyAeNwOQAiADIAMpA9ABNwOoAiADIAMpA+gBNwOgAiADKQPgASETIAMgDTcDuAEg +AyAMNwOwASAGIAEgAiAEIAUQ3xUgAykD8AEhFyADKQP4ASERIAMgHzcDiAIgAyAeNwOAAiADICA3 +A5gCIAMgGzcDkAIgAyATNwOoAiADIBA3A6ACIAMgETcDuAEgAyAXNwOwASAGIAEgAiAEIAUQ3xUg +AykD8AEhHiADKQP4ASEfIAMgCTcDiAIgAyAZNwOAAiADIA43A5gCIAMgGDcDkAIgAyALNwOoAiAD +IBY3A6ACIAMgCjcDuAEgAyAcNwOwASAGIAEgAiAEIAUgEULVwOSM0dXr4OcAfRDSFiADKQPwASEc +IAMgAykD+AEiCjcDiAIgAyAcNwOAAiADIAk3A5gCIAMgGTcDkAIgAyAONwOoAiADIBg3A6ACIAMg +CzcDuAEgAyAWNwOwASAGIAEgAiAEIAUgF0Lwm6+SrbKO59cAfRDSFiADKQPwASEWIAMgAykD+AEi +CzcDiAIgAyAWNwOAAiADIAo3A5gCIAMgHDcDkAIgAyAJNwOoAiADIBk3A6ACIAMgDjcDuAEgAyAY +NwOwASAGIAEgAiAEIAUgH0LBvZO49oa2/s8AfRDSFiADKQPwASEYIAMgAykD+AEiDjcDiAIgAyAY +NwOAAiADIAs3A5gCIAMgFjcDkAIgAyAKNwOoAiADIBw3A6ACIAMgCTcDuAEgAyAZNwOwASAGIAEg +AiAEIAUgHkKc4sOIhIeg08AAfRDSFiADKQPwASEZIAMpA/gBIQkgAyAgNwOIAiADIBs3A4ACIAMg +GjcDmAIgAyASNwOQAiADIA83A6gCIAMgDTcDoAIgAyAfNwO4ASADIB43A7ABIAYgASACIAQgBRDf +FSADKQPwASEbIAMpA/gBISAgAyAaNwOIAiADIBI3A4ACIAMgAykD2AEiITcDmAIgAyADKQPQASIi +NwOQAiADIAw3A6gCIAMgETcDoAIgAyAgNwO4ASADIBs3A7ABIAYgASACIAQgBRDfFSADKQPwASES +IAMpA/gBIRogAyAJNwOIAiADIBk3A4ACIAMgDjcDmAIgAyAYNwOQAiADIAs3A6gCIAMgFjcDoAIg +AyAKNwO4ASADIBw3A7ABIAYgASACIAQgBSAgQr7g3ZLMgf2POX0Q0hYgAykD8AEhCiADIAMpA/gB +IhQ3A4gCIAMgCjcDgAIgAyAJNwOYAiADIBk3A5ACIAMgDjcDqAIgAyAYNwOgAiADIAs3A7gBIAMg +FjcDsAEgBiABIAIgBCAFIBtC27HV54bXm6wqfRDSFiADKQPwASELIAMgAykD+AEiFTcDiAIgAyAL +NwOAAiADIBQ3A5gCIAMgCjcDkAIgAyAJNwOoAiADIBk3A6ACIAMgDjcDuAEgAyAYNwOwASAGIAEg +AiAEIAUgGkLvhI6AnuqY5QZ8ENIWIAMpA/ABIQ4gAyADKQP4ASIdNwOIAiADIA43A4ACIAMgFTcD +mAIgAyALNwOQAiADIBQ3A6gCIAMgCjcDoAIgAyAJNwO4ASADIBk3A7ABIAYgASACIAQgBSASQvDc +udDwrMqUFHwQ0hYgAykD8AEhCSADKQP4ASETIAMgITcDiAIgAyAiNwOAAiADIAMpA+gBIhg3A5gC +IAMgAykD4AEiGTcDkAIgAyAXNwOoAiADIB83A6ACIAMgGjcDuAEgAyASNwOwASAGIAEgAiAEIAUQ +3xUgAykD8AEhHCADKQP4ASEWIAMgGDcDiAIgAyAZNwOAAiADIBA3A5gCIAMgDzcDkAIgAyAeNwOo +AiADICA3A6ACIAMgFjcDuAEgAyAcNwOwASAGIAEgAiAEIAUQ3xUgAykD8AEhGCADKQP4ASEZIAMg +EzcDiAIgAyAJNwOAAiADIB03A5gCIAMgDjcDkAIgAyAVNwOoAiADIAs3A6ACIAMgFDcDuAEgAyAK +NwOwASAGIAEgAiAEIAUgFkL838i21NDC2yd8ENIWIAMpA/ABIQogAyADKQP4ASIUNwOIAiADIAo3 +A4ACIAMgEzcDmAIgAyAJNwOQAiADIB03A6gCIAMgDjcDoAIgAyAVNwO4ASADIAs3A7ABIAYgASAC +IAQgBSAcQqaSm+GFp8iNLnwQ0hYgAykD8AEhCyADIAMpA/gBIhU3A4gCIAMgCzcDgAIgAyAUNwOY +AiADIAo3A5ACIAMgEzcDqAIgAyAJNwOgAiADIB03A7gBIAMgDjcDsAEgBiABIAIgBCAFIBlC7dWQ +1sW/m5bNAHwQ0hYgAykD8AEhDiADIAMpA/gBIh03A4gCIAMgDjcDgAIgAyAVNwOYAiADIAs3A5AC +IAMgFDcDqAIgAyAKNwOgAiADIBM3A7gBIAMgCTcDsAEgBiABIAIgBCAFIBhC3+fW7Lmig5zTAHwQ +0hYgAykD8AEhCSADKQP4ASETIAMgEDcDiAIgAyAPNwOAAiADIA03A5gCIAMgDDcDkAIgAyAbNwOo +AiADIBo3A6ACIAMgGTcDuAEgAyAYNwOwASAGIAEgAiAEIAUQ3xUgAyADKQP4ASIPNwPYASADIAMp +A/ABIhA3A9ABIAMgDTcDiAIgAyAMNwOAAiADIBE3A5gCIAMgFzcDkAIgAyASNwOoAiADIBY3A6AC +IAMgDzcDuAEgAyAQNwOwASAGIAEgAiAEIAUQ3xUgAyADKQP4ASIMNwPoASADIAMpA/ABIg03A+AB +IAMgEzcDiAIgAyAJNwOAAiADIB03A5gCIAMgDjcDkAIgAyAVNwOoAiADIAs3A6ACIAMgFDcDuAEg +AyAKNwOwASAGIAEgAiAEIAUgD0Lex73dyOqcheUAfBDSFiADKQPwASEKIAMgAykD+AEiFDcDiAIg +AyAKNwOAAiADIBM3A5gCIAMgCTcDkAIgAyAdNwOoAiADIA43A6ACIAMgFTcDuAEgAyALNwOwASAG +IAEgAiAEIAUgEEKo5d7js9eCtfYAfBDSFiADKQPwASELIAMgAykD+AEiFTcDiAIgAyALNwOAAiAD +IBQ3A5gCIAMgCjcDkAIgAyATNwOoAiADIAk3A6ACIAMgHTcDuAEgAyAONwOwASAGIAEgAiAEIAUg +DEKaosnAm9rNnv4AfRDSFiADKQPwASEOIAMgAykD+AEiHTcDiAIgAyAONwOAAiADIBU3A5gCIAMg +CzcDkAIgAyAUNwOoAiADIAo3A6ACIAMgEzcDuAEgAyAJNwOwASAGIAEgAiAEIAUgDULFlffbru/0 +xu0AfRDSFiADKQPwASEJIAMpA/gBIRMgAyARNwOIAiADIBc3A4ACIAMgHzcDmAIgAyAeNwOQAiAD +IBw3A6gCIAMgGTcDoAIgAyAMNwO4ASADIA03A7ABIAYgASACIAQgBRDfFSADKQPwASEPIAMpA/gB +IRAgAyAfNwOIAiADIB43A4ACIAMgIDcDmAIgAyAbNwOQAiADIBg3A6gCIAMgAykD2AE3A6ACIAMp +A9ABIRcgAyAQNwO4ASADIA83A7ABIAYgASACIAQgBRDfFSADKQPwASEMIAMpA/gBIQ0gAyATNwOI +AiADIAk3A4ACIAMgHTcDmAIgAyAONwOQAiADIBU3A6gCIAMgCzcDoAIgAyAUNwO4ASADIAo3A7AB +IAYgASACIAQgBSAQQpz5u5jr64Wg3QB9ENIWIAMpA/ABIR4gAyADKQP4ASIUNwOIAiADIB43A4AC +IAMgEzcDmAIgAyAJNwOQAiADIB03A6gCIAMgDjcDoAIgAyAVNwO4ASADIAs3A7ABIAYgASACIAQg +BSAPQv+f953Etuby1wB9ENIWIAMpA/ABIR8gAyADKQP4ASIVNwOIAiADIB83A4ACIAMgFDcDmAIg +AyAeNwOQAiADIBM3A6gCIAMgCTcDoAIgAyAdNwO4ASADIA43A7ABIAYgASACIAQgBSANQu/Qnfjy +kZ3aPX0Q0hYgAykD8AEhCiADIAMpA/gBIh03A4gCIAMgCjcDgAIgAyAVNwOYAiADIB83A5ACIAMg +FDcDqAIgAyAeNwOgAiADIBM3A7gBIAMgCTcDsAEgBiABIAIgBCAFIAxC0IOtzc/L68k4fRDSFiAD +KQPwASEJIAMpA/gBIQsgAyAgNwOIAiADIBs3A4ACIAMgGjcDmAIgAyASNwOQAiADIBc3A6gCIAMg +AykD6AE3A6ACIAMpA+ABIRsgAyANNwO4ASADIAw3A7ABIAYgASACIAQgBRDfFSADKQPwASEXIAMp +A/gBIREgAyAaNwOIAiADIBI3A4ACIAMgFjcDmAIgAyAcNwOQAiADIBs3A6gCIAMgEDcDoAIgAyAR +NwO4ASADIBc3A7ABIAYgASACIAQgBRDfFSADKQPwASESIAMpA/gBIRogAyALNwOIAiADIAk3A4AC +IAMgHTcDmAIgAyAKNwOQAiADIBU3A6gCIAMgHzcDoAIgAyAUNwO4ASADIB43A7ABIAYgASACIAQg +BSARQujbwsji/MW2Ln0Q0hYgAykD8AEhDiADIAMpA/gBIhQ3A4gCIAMgDjcDgAIgAyALNwOYAiAD +IAk3A5ACIAMgHTcDqAIgAyAKNwOgAiADIBU3A7gBIAMgHzcDsAEgBiABIAIgBCAFIBdC8K3p1Lq7 +vrMpfRDSFiADKQPwASETIAMgAykD+AEiFTcDiAIgAyATNwOAAiADIBQ3A5gCIAMgDjcDkAIgAyAL +NwOoAiADIAk3A6ACIAMgHTcDuAEgAyAKNwOwASAGIAEgAiAEIAUgGkLWv7vEqs/y+At9ENIWIAMp +A/ABIQogAyADKQP4ASIdNwOIAiADIAo3A4ACIAMgFTcDmAIgAyATNwOQAiADIBQ3A6gCIAMgDjcD +oAIgAyALNwO4ASADIAk3A7ABIAYgASACIAQgBSASQrij75WDjqi1EHwQ0hYgAykD8AEhCSADKQP4 +ASELIAMgFjcDiAIgAyAcNwOAAiADIBk3A5gCIAMgGDcDkAIgAyAPNwOoAiADIA03A6ACIAMgGjcD +uAEgAyASNwOwASAGIAEgAiAEIAUQ3xUgAykD8AEhHiADKQP4ASEfIAMgGTcDiAIgAyAYNwOAAiAD +IAMpA9gBIhw3A5gCIAMgAykD0AEiFjcDkAIgAyAMNwOoAiADIBE3A6ACIAMgHzcDuAEgAyAeNwOw +ASAGIAEgAiAEIAUQ3xUgAykD8AEhGyADKQP4ASEgIAMgCzcDiAIgAyAJNwOAAiADIB03A5gCIAMg +CjcDkAIgAyAVNwOoAiADIBM3A6ACIAMgFDcDuAEgAyAONwOwASAGIAEgAiAEIAUgH0LIocvG66Kw +0hl8ENIWIAMpA/ABIQ4gAyADKQP4ASIUNwOIAiADIA43A4ACIAMgCzcDmAIgAyAJNwOQAiADIB03 +A6gCIAMgCjcDoAIgAyAVNwO4ASADIBM3A7ABIAYgASACIAQgBSAeQtPWhoqFgdubHnwQ0hYgAykD +8AEhEyADIAMpA/gBIhU3A4gCIAMgEzcDgAIgAyAUNwOYAiADIA43A5ACIAMgCzcDqAIgAyAJNwOg +AiADIB03A7gBIAMgCjcDsAEgBiABIAIgBCAFICBCmde7/M3pnaQnfBDSFiADKQPwASEKIAMgAykD ++AEiHTcDiAIgAyAKNwOAAiADIBU3A5gCIAMgEzcDkAIgAyAUNwOoAiADIA43A6ACIAMgCzcDuAEg +AyAJNwOwASAGIAEgAiAEIAUgG0Koke2M3pav2DR8ENIWIAMpA/ABIQkgAykD+AEhCyADIBw3A4gC +IAMgFjcDgAIgAyADKQPoASIYNwOYAiADIAMpA+ABIhk3A5ACIAMgFzcDqAIgAyAaNwOgAiADICA3 +A7gBIAMgGzcDsAEgBiABIAIgBCAFEN8VIAMpA/ABIRwgAykD+AEhFiADIBg3A4gCIAMgGTcDgAIg +AyAQNwOYAiADIA83A5ACIAMgEjcDqAIgAyAfNwOgAiADIBY3A7gBIAMgHDcDsAEgBiABIAIgBCAF +EN8VIAMpA/ABIRggAykD+AEhGSADIAs3A4gCIAMgCTcDgAIgAyAdNwOYAiADIAo3A5ACIAMgFTcD +qAIgAyATNwOgAiADIBQ3A7gBIAMgDjcDsAEgBiABIAIgBCAFIBZC47SlrryWg445fBDSFiADKQPw +ASEOIAMgAykD+AEiFDcDiAIgAyAONwOAAiADIAs3A5gCIAMgCTcDkAIgAyAdNwOoAiADIAo3A6AC +IAMgFTcDuAEgAyATNwOwASAGIAEgAiAEIAUgHELLlYaarsmq7M4AfBDSFiADKQPwASETIAMgAykD ++AEiFTcDiAIgAyATNwOAAiADIBQ3A5gCIAMgDjcDkAIgAyALNwOoAiADIAk3A6ACIAMgHTcDuAEg +AyAKNwOwASAGIAEgAiAEIAUgGULzxo+798myztsAfBDSFiADKQPwASEKIAMgAykD+AEiHTcDiAIg +AyAKNwOAAiADIBU3A5gCIAMgEzcDkAIgAyAUNwOoAiADIA43A6ACIAMgCzcDuAEgAyAJNwOwASAG +IAEgAiAEIAUgGEKj8cq1vf6bl+gAfBDSFiADKQPwASEJIAMpA/gBIQsgAyAQNwOIAiADIA83A4AC +IAMgDTcDmAIgAyAMNwOQAiADIB43A6gCIAMgIDcDoAIgAyAZNwO4ASADIBg3A7ABIAYgASACIAQg +BRDfFSADIAMpA/gBIg83A9gBIAMgAykD8AEiEDcD0AEgAyANNwOIAiADIAw3A4ACIAMgETcDmAIg +AyAXNwOQAiADIBs3A6gCIAMgFjcDoAIgAyAPNwO4ASADIBA3A7ABIAYgASACIAQgBRDfFSADIAMp +A/gBIiE3A+gBIAMgAykD8AEiIjcD4AEgAyALNwOIAiADIAk3A4ACIAMgHTcDmAIgAyAKNwOQAiAD +IBU3A6gCIAMgEzcDoAIgAyAUNwO4ASADIA43A7ABIAYgASACIAQgBSAPQvzlvu/l3eDH9AB8ENIW +IAMpA/ABIQwgAyADKQP4ASIONwOIAiADIAw3A4ACIAMgCzcDmAIgAyAJNwOQAiADIB03A6gCIAMg +CjcDoAIgAyAVNwO4ASADIBM3A7ABIAYgASACIAQgBSAQQuDe3Jj07djS+AB8ENIWIAMpA/ABIQ0g +AyADKQP4ASITNwOIAiADIA03A4ACIAMgDjcDmAIgAyAMNwOQAiADIAs3A6gCIAMgCTcDoAIgAyAd +NwO4ASADIAo3A7ABIAYgASACIAQgBSAhQo6pvfC1/eGb+wB9ENIWIAMpA/ABIQogAyADKQP4ASIU +NwOIAiADIAo3A4ACIAMgEzcDmAIgAyANNwOQAiADIA43A6gCIAMgDDcDoAIgAyALNwO4ASADIAk3 +A7ABIAYgASACIAQgBSAiQpSM76z+vr+c8wB9ENIWIAMpA/ABIQkgAykD+AEhCyADIBE3A4gCIAMg +FzcDgAIgAyAaNwOYAiADIBI3A5ACIAMgHDcDqAIgAyAZNwOgAiADICE3A7gBIAMgIjcDsAEgBiAB +IAIgBCAFEN8VIAMpA/ABIQ8gAykD+AEhECADIBo3A4gCIAMgEjcDgAIgAyAfNwOYAiADIB43A5AC +IAMgGDcDqAIgAyADKQPYATcDoAIgAykD0AEhFSADIBA3A7gBIAMgDzcDsAEgBiABIAIgBCAFEN8V +IAMpA/ABIRIgAykD+AEhGiADIAs3A4gCIAMgCTcDgAIgAyAUNwOYAiADIAo3A5ACIAMgEzcDqAIg +AyANNwOgAiADIA43A7gBIAMgDDcDsAEgBiABIAIgBCAFIBBC2MPz5N2AwKDvAH0Q0hYgAykD8AEh +DCADIAMpA/gBIg43A4gCIAMgDDcDgAIgAyALNwOYAiADIAk3A5ACIAMgFDcDqAIgAyAKNwOgAiAD +IBM3A7gBIAMgDTcDsAEgBiABIAIgBCAFIA9Cl4T1i8Li5NfbAH0Q0hYgAykD8AEhDSADIAMpA/gB +IhM3A4gCIAMgDTcDgAIgAyAONwOYAiADIAw3A5ACIAMgCzcDqAIgAyAJNwOgAiADIBQ3A7gBIAMg +CjcDsAEgBiABIAIgBCAFIBpC643m6YSBl4PBAH0Q0hYgAykD8AEhFyADIAMpA/gBIgo3A4gCIAMg +FzcDgAIgAyATNwOYAiADIA03A5ACIAMgDjcDqAIgAyAMNwOgAiADIAs3A7gBIAMgCTcDsAEgBiAB +IAIgBCAFIBJC1dm25NHhocc5fRDSFiADKQPwASERIAMpA/gBIQkgAyAfNwOIAiADIB43A4ACIAMg +IDcDmAIgAyAbNwOQAiADIBU3A6gCIAMgAykD6AE3A6ACIAMpA+ABIQsgAyAaNwO4ASADIBI3A7AB +IAYgASACIAQgBRDfFSADKQPwASEeIAMpA/gBIR8gAyAgNwOIAiADIBs3A4ACIAMgFjcDmAIgAyAc +NwOQAiADIAs3A6gCIAMgEDcDoAIgAyAfNwO4ASADIB43A7ABIAYgASACIAQgBRDfFSADKQPwASEg +IAMpA/gBIQsgAyAJNwOIAiADIBE3A4ACIAMgCjcDmAIgAyAXNwOQAiADIBM3A6gCIAMgDTcDoAIg +AyAONwO4ASADIAw3A7ABIAYgASACIAQgBSAfQuS85q6RprDsNX0Q0hYgAykD8AEhDCADIAMpA/gB +Ig43A4gCIAMgDDcDgAIgAyAJNwOYAiADIBE3A5ACIAMgCjcDqAIgAyAXNwOgAiADIBM3A7gBIAMg +DTcDsAEgBiABIAIgBCAFIB5C+fv88Y3n0bwufRDSFiADKQPwASENIAMgAykD+AEiEzcDiAIgAyAN +NwOAAiADIA43A5gCIAMgDDcDkAIgAyAJNwOoAiADIBE3A6ACIAMgCjcDuAEgAyAXNwOwASAGIAEg +AiAEIAUgC0LiqfyQk8XgkhV9ENIWIAMpA/ABIRcgAyADKQP4ASIKNwOIAiADIBc3A4ACIAMgEzcD +mAIgAyANNwOQAiADIA43A6gCIAMgDDcDoAIgAyAJNwO4ASADIBE3A7ABIAYgASACIAQgBSAgQojd +xIyBkKzBCn0Q0hYgAykD8AEhESADKQP4ASEbIAMgFjcDiAIgAyAcNwOAAiADIBk3A5gCIAMgGDcD +kAIgAyAPNwOoAiADIBo3A6ACIAMgCzcDuAEgAyAgNwOwASAGIAEgAiAEIAUQ3xUgAykD8AEhHCAD +KQP4ASEWIAMgGTcDiAIgAyAYNwOAAiADIAMpA9gBIhQ3A5gCIAMgAykD0AEiFTcDkAIgAyASNwOo +AiADIB83A6ACIAMgFjcDuAEgAyAcNwOwASAGIAEgAiAEIAUQ3xUgAykD8AEhGCADKQP4ASEZIAMg +GzcDiAIgAyARNwOAAiADIAo3A5gCIAMgFzcDkAIgAyATNwOoAiADIA03A6ACIAMgDjcDuAEgAyAM +NwOwASAGIAEgAiAEIAUgFkK6392Qp/WZ+AZ8ENIWIAMpA/ABIQwgAyADKQP4ASIJNwOIAiADIAw3 +A4ACIAMgGzcDmAIgAyARNwOQAiADIAo3A6gCIAMgFzcDoAIgAyATNwO4ASADIA03A7ABIAYgASAC +IAQgBSAcQqaxopbauN+xCnwQ0hYgAykD8AEhDSADIAMpA/gBIg43A4gCIAMgDTcDgAIgAyAJNwOY +AiADIAw3A5ACIAMgGzcDqAIgAyARNwOgAiADIAo3A7gBIAMgFzcDsAEgBiABIAIgBCAFIBlCrpvk +98uA5p8RfBDSFiADKQPwASEXIAMgAykD+AEiCjcDiAIgAyAXNwOAAiADIA43A5gCIAMgDTcDkAIg +AyAJNwOoAiADIAw3A6ACIAMgGzcDuAEgAyARNwOwASAGIAEgAiAEIAUgGEKbjvGY0ebCuBt8ENIW +IAMpA/ABIREgAykD+AEhGyADIBQ3A4gCIAMgFTcDgAIgAyADKQPoASIUNwOYAiADIAMpA+ABIhU3 +A5ACIAMgHjcDqAIgAyALNwOgAiADIBk3A7gBIAMgGDcDsAEgBiABIAIgBCAFEN8VIAMpA/ABIRMg +AykD+AEhCyADIBQ3A4gCIAMgFTcDgAIgAyAQNwOYAiADIA83A5ACIAMgIDcDqAIgAyAWNwOgAiAD +IAs3A7gBIAMgEzcDsAEgBiABIAIgBCAFEN8VIAMpA/ABIRQgAykD+AEhFSADIBs3A4gCIAMgETcD +gAIgAyAKNwOYAiADIBc3A5ACIAMgDjcDqAIgAyANNwOgAiADIAk3A7gBIAMgDDcDsAEgBiABIAIg +BCAFIAtChPuRmNL+3e0ofBDSFiADKQPwASEMIAMgAykD+AEiIDcDiAIgAyAMNwOAAiADIBs3A5gC +IAMgETcDkAIgAyAKNwOoAiADIBc3A6ACIAMgDjcDuAEgAyANNwOwASAGIAEgAiAEIAUgE0KTyZyG +tO+q5TJ8ENIWIAMpA/ABIQ0gAyADKQP4ASIWNwOIAiADIA03A4ACIAMgIDcDmAIgAyAMNwOQAiAD +IBs3A6gCIAMgETcDoAIgAyAKNwO4ASADIBc3A7ABIAYgASACIAQgBSAVQrz9pq6hwa/PPHwQ0hYg +AykD8AEhFyADIAMpA/gBIgk3A4gCIAMgFzcDgAIgAyAWNwOYAiADIA03A5ACIAMgIDcDqAIgAyAM +NwOgAiADIBs3A7gBIAMgETcDsAEgBiABIAIgBCAFIBRCzJrA4Mn42Y7DAHwQ0hYgAykD8AEhESAD +KQP4ASEbIAMgEDcDiAIgAyAPNwOAAiADIBo3A5gCIAMgEjcDkAIgAyAcNwOoAiADIBk3A6ACIAMg +FTcDuAEgAyAUNwOwASAGIAEgAiAEIAUQ3xUgAykD8AEhDyADKQP4ASEQIAMgGjcDiAIgAyASNwOA +AiADIB83A5gCIAMgHjcDkAIgAyAYNwOoAiADIAs3A6ACIAMgEDcDuAEgAyAPNwOwASAGIAEgAiAE +IAUQ3xUgAykD8AEhHiADKQP4ASEfIAMgGzcDiAIgAyARNwOAAiADIAk3A5gCIAMgFzcDkAIgAyAW +NwOoAiADIA03A6ACIAMgIDcDuAEgAyAMNwOwASAGIAEgAiAEIAUgEEK2hfnZ7Jf14swAfBDSFiAD +KQPwASESIAMgAykD+AEiGjcDiAIgAyASNwOAAiADIBs3A5gCIAMgETcDkAIgAyAJNwOoAiADIBc3 +A6ACIAMgFjcDuAEgAyANNwOwASAGIAEgAiAEIAUgD0Kq/JXjz7PKv9kAfBDSFiADKQPwASEPIAMg +AykD+AEiEDcDiAIgAyAPNwOAAiADIBo3A5gCIAMgEjcDkAIgAyAbNwOoAiADIBE3A6ACIAMgCTcD +uAEgAyAXNwOwASAGIAEgAiAEIAUgH0Ls9dvWs/Xb5d8AfBDSFiADKQPwASEMIAMgAykD+AEiDTcD +iAIgAyAMNwOAAiADIBA3A5gCIAMgDzcDkAIgAyAaNwOoAiADIBI3A6ACIAMgGzcDuAEgAyARNwOw +ASAGIAEgAiAEIAUgHkKXsJ3SxLGGouwAfBDSFiADIAMpA4ABIAMpA/ABfDcDgAEgAyAMIAMpA4gB +fDcDiAEgAyAPIAMpA5ABfDcDkAEgAyASIAMpA5gBfDcDmAEgAyADKQOgASADKQP4AXw3A6ABIBog +JXwhJSAQICR8ISQgDSAjfCEjIAAhAQwDBSACIANqIAEgAmopAAAiEkI4hiASQoD+A4NCKIaEIBJC +gID8B4NCGIYgEkKAgID4D4NCCIaEhCASQgiIQoCAgPgPgyASQhiIQoCA/AeDhCASQiiIQoD+A4Mg +EkI4iISEhDcDACACQQhqIQIMAQsACwALCyAHIANBgAFqQSgQzU8iACAlNwM4IAAgJDcDMCAAICM3 +AyggA0GwAmokAAsOACABQbm31gBBEBCHQQsOACABQcm31gBBAhCnAwsOACABQfzD1gBBCxCHQQsM +ACAAKAIAIAEQ1jELegEDfyAAKAIAIgIoAgQhACACKAIIIQMjAEEQayICJAAgAkEIaiIEIAEQlzYg +ACADaiEDIwBBEGsiASQAA38gACADRgR/IAFBEGokACAEBSABIAA2AgwgBCABQQxqQczS1gAQiAsg +AEEBaiEADAELCxCVNiACQRBqJAALDgAgAEHc0tYAIAEQsAQL6QYBA38gACgCACEEIwBBMGsiAyQA +Qb3b1gAhAEELIQICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA +AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEEBaw4sAAEC +AwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissC0HI29YAIQBBDyECDCsL +Qdfb1gAhAEEPIQIMKgtB5tvWACEAQQohAgwpC0Hw29YAIQBBCiECDCgLQfrb1gAhAAwnC0GF3NYA +IQBBECECDCYLQZXc1gAhAEEJIQIMJQtBntzWACEAQQ4hAgwkC0Gs3NYAIQBBDiECDCMLQbrc1gAh +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 +AUG7+M8AQRYQh0ELCQAgACABEK0DCwoAIAAoAgAQljULCQAgASABEJJOC5MCAgR/AX4Cf0HslNsA +QeiU2wAoAgANABojAEEgayIBJAACfyAABEAgACkCACEFIABBADYCACABQRhqIgIgAEEQaigCADYC +ACABQRBqIgMgAEEIaikCADcDACABIAU3AwggBacEQCACKAIAIQQgAUEUaigCACEAIAMoAgAhAiAB +KAIMDAILIAFBCGoQ4kELQQEhAEEAIQJBAAshA0HolNsAKQIAIQVB7JTbACADNgIAQeiU2wBBATYC +ACABQRhqQfiU2wAoAgA2AgAgAUEQakHwlNsAKQIANwMAQfiU2wAgBDYCAEH0lNsAIAA2AgBB8JTb +ACACNgIAIAEgBTcDCCABQQhqEOJBIAFBIGokAEHslNsACwsJACAAIAEQ50YL0QICAn8CfkGYlNsA +KQMAUAR/IwBB4ABrIgEkAAJ/IAAEQCABQTBqIABBMBDNTxogAEIANwMAIAEpAzBQRQRAIAFBIGog +AUHEAGopAgA3AwAgAUEoaiABQcwAaigCADYCACABIAFBPGopAgA3AxggAUHQAGopAwAhAyABQdgA +aikDACEEIAEoAjgMAgsgAUEwahD6QAsgAUEIakH0stEAENEiIAFBJGpBiLPRACkDADcCACABQYCz +0QApAwA3AhwgASkDECEEIAEpAwghA0EACyEAIAFBMGoiAkGYlNsAQTAQzU8aQaCU2wAgADYCAEGY +lNsAQgE3AwBBwJTbACAENwMAQbiU2wAgAzcDAEGklNsAIAEpAxg3AgBBrJTbACABQSBqKQMANwIA +QbSU2wAgAUEoaigCADYCACACEPpAIAFB4ABqJABBoJTbAAVBoJTbAAsLlwcCAX8BfCMAQYABayIC +JAAgACkDALohA0EAIQACfwJAAkADQCAAQSBGBEAgAiADOQMIIAJB9ABqQQE2AgAgAkHsAGpBATYC +ACACQfMRNgJ8IAIgA0QAAAAAAECPQKI5AxAgAkECNgJkIAJBkNXRADYCYCACIAJBEGo2AnggAkED +OgA8IAJBADYCOCACQiA3AjAgAkECNgIoIAJCADcCICACIAJBIGo2AnAgAiACQfgAajYCaCABIAJB +4ABqEI9FDAQLIAIgAEHw1NEAajYCeCADRAAAAAAAACRAYw0BIANEAAAAAAAAWUBjDQIgA0QAAAAA +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 +AygCBDYCBCAGQZaAgIB4NgIACyADQRBqJAACQAJAIAIoAmAiAEHr////B2oOAgECAAsgCiALKQIA +NwIAIApBCGogC0EIaigCADYCACACIAA2AnAgAkGAAWogBRC8MiACKAKAAUGVgICAeEYEQCACKAKE +ASEAIAJB8ABqEPIfDAQLIAJBOGogAkGIAWopAwA3AwAgAiACKQOAATcDMCACKAJ0IQkgAikDeCEO +CyAIIAIpAzA3AwAgCEEIaiACQThqKQMANwMAIAIgDjcDGCACIAk2AhQgAiAANgIQIABBlYCAgHhG +DQMgAkHYAGogAkEoaikDADcDACACQdAAaiAIKQMANwMAIAJByABqIAJBGGopAwA3AwAgAiACKQMQ +NwNAIAJBBGogAkFAaxDXGgwBCwsgAigCZCEACyABQZWAgIB4NgIAIAEgADYCBCACQQRqENxLDAEL +IAJBEGoQ7z4gAUEIaiACQQxqKAIANgIAIAEgAikCBDcCAAsgAkGQAWokACAEQRBqJAALCQAgACAB +EIhBCwgAIABB/wFxCwkAIAEgARCaTwsJACAAQQI2AgALCQAgACABEJ5PCwkAIAAgARDVPAsJACAB +IAAQ1CILDgAgAUHMgNkAQQkQh0ELBwAgAEF+cQsIACAAIAEQAAsKACAAKAIAELEBCwoAIAAoAgAQ +tgELCgAgACgCABCfAQsJACAAIAEQvAELmQQCBn8BfkHwldsAKAIABH9B9JXbAAUjAEEQayIEJAAC +QCAABEAgACgCACECIABBADYCACAEIAAoAgQiADYCDCAEIAI2AgggAg0BIARBCGoQxT0LIwBBQGoi +ASQAEKABIQAgAUEgahCDOAJAAkACfwJAIAEoAiBFDQAgASABKAIkNgI4EKEBIQAgAUEYahCDOCAB +KAIcIQIgASgCGCABQThqEJZBRQ0AIAEgAjYCOBCiASEAIAFBEGoQgzggASgCFCECIAEoAhAgAUE4 +ahCWQUUNACABIAI2AjgQowEhACABQQhqEIM4IAEoAgghAiABKAIMIQMgAUE4ahCWQSABIAMgACAC +GzYCLCABIAI2AiggAUEsaiIDIAJFDQEaDAILIAEgADYCLCABQQA2AiggAUEsagshAyABIAA2AjhB +ASEFIAAQA0EBRw0BIAFBOGoQlkELIAFBlObZAEELEJkBNgIwQYABIQAgAUGAATYCNCABIAFBMGog +AUE0ahC0KSABKAIAIQYgASABKAIEIgI2AjwgASAGNgI4AkAgBgRAIAFBPGoQlkEgAUE0ahCWQSAB +QTBqEJZBDAELIAFBNGoQlkEgAUEwahCWQSACIQALIAUNACADEJZBCyABQUBrJAALQfCV2wApAgAh +B0H0ldsAIAA2AgBB8JXbAEEBNgIAIAQgBzcCCCAEQQhqEMU9IARBEGokAEH0ldsACwsKACAAKAIA +EMgBCwoAIAAoAgAQywELDgAgAEKAgICAgBA3AwALCwBBvJrbACgCAEULygMBAn8CfyMAQSBrIgIk +AAJAAkACQAJAAkACQCAALQAAQQFrDgMBAgMACyACIAAoAgQ2AgQgAkEIaiIAIAFB2fXZAEECEJY2 +IABB2/XZAEEEIAJBBGpB4PXZABDOCCACQSg6ABNB8PXZAEEEIAJBE2pB9PXZABDOCEHhk9sALQAA +GkEUQQEQq0giAEUNBCAAQRBqQcqC2gAoAAA2AAAgAEEIakHCgtoAKQAANwAAIABBuoLaACkAADcA +ACACQRQ2AhwgAiAANgIYIAJBFDYCFEGE9tkAQQcgAkEUakGM9tkAEM4IEJMbIQAgAigCFEUNAyAC +KAIYEJgEDAMLIAIgAC0AAToACCACQRRqIgAgAUGc9tkAQQQQ1DQgACACQQhqQfT12QAQlAsQ0BQh +AAwCCyAAKAIEIQAgAkEUaiIDIAFBoPbZAEEFEJY2IANB8PXZAEEEIABBCGpB9PXZABDOCEGE9tkA +QQcgAEGo9tkAEM4IEJMbIQAMAQsgAiAAKAIEIgA2AhQgAUG49tkAQQZB8PXZAEEEIABBCGpB9PXZ +AEG+9tkAQQUgAkEUakHE9tkAEIwRIQALIAJBIGokACAADAELQQFBFBDETwALCwcAIAAQ8h4LBwAg +ABCfHwsHACAAEJ42CwcAIAAoAgALBwAgABDLFQu3BQEGfwJAIwBB4ABrIgAkACAAQQA2AjQgAEKA +gICAEDcCLCAAQdAAakGsgMcANgIAIABBAzoAWCAAQSA2AkggAEEANgJUIABBADYCQCAAQQA2Ajgg +ACAAQSxqNgJMIwBBQGoiAiQAQQEhBgJAIABBOGoiBCgCFCIFQei82gBBDCAEQRhqKAIAIgcoAgwi +BBEGAA0AIAEoAgwhAyACQRxqQgM3AgAgAkE8akGsBTYCACACQTRqQawFNgIAIAJBAzYCFCACQdC8 +2gA2AhAgAiADQQxqNgI4IAIgA0EIajYCMCACQeoaNgIsIAIgAzYCKCACIAJBKGo2AhggBSAHIAJB +EGoQsAQNAAJAIAEoAggiAwRAIAVB9LzaAEECIAQRBgANAiACQThqIANBEGopAgA3AwAgAkEwaiAD +QQhqKQIANwMAIAIgAykCADcDKCAFIAcgAkEoahCwBA0CDAELIAIgASgCACIDIAEoAgRBDGooAgAR +AQAgAikDAELB9/nozJOy0UGFIAJBCGopAwBC5N7HhZDQhd59hYRQRQ0AIAVB9LzaAEECIAQRBgAN +ASAFIAMoAgAgAygCBCAEEQYADQELQQAhBgsgAkFAayQAIAZFBEAgAEEoaiIFIABBNGooAgA2AgAg +ACAAKQIsNwMgIABBIGoiAUHtgccAQfeBxwAQjjUgAEEYahA7IgIQPCAAQRBqIAAoAhggACgCHBDK +LSAAQSxqIgQgACgCECAAKAIUEPhBIAEgACgCMCAAKAI0EK1IIAFB94HHAEH5gccAEI41IABBQGsg +BSgCADYCACAAIAApAyA3AzggAEEIaiAAQThqEIRKIAAoAgggACgCDBA9IAQQiD8gAkGEAU8EQCAC +EAELIABB4ABqJAAMAQtBxIDHAEE3IABBIGpB/IDHAEHYgccAEIkYAAsLBwAgABCYLwsHACAAEJZB +CwcAIAAQmTYLBABBAQsHACAAEMcZCwcAIAAQqQcLBwAgABC/PwsHACAAEJoZCwcAIAAQ80ILBwAg +ABDzHQsHACAAKAIICwcAIAAQny0LBwAgABCgGQsHACAAEMgZCwcAIAAQnRkLBwAgABCsGQsHACAA +EMkZCwcAIAAQqj4LBwAgABCtOQsHACAAEKQ1CwcAIAAQ+0ALBwAgABDAKgsHACAAEP0dCwcAIAAQ +jDsLBwAgABC1SAsHACAAEN1ECwcAIAAQ3lELBwAgABDdUQsHACAAEMY9CwcAIAAQ2CYLBwAgABD4 +CwsHACAAEIMeCwcAIAEpAwALCgAgACgCABDWLAsKACAAKAIAEII4CwQAQQALBAAgAAsEAEEGCwcA +QfyU2wALBwBBkJXbAAsEAEEACwYAQq29AwsEAEEBCwQAQQALAwABCwMAAQsDAAELAwABCwMAAQuV +AQECfyMAQRBrIgwkAAJ/AkACQAJAIAAoAgAiAC0AAEEEa0H/AXEiDUEBakEAIA1BAkkbQQFrDgIB +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 +CCEAIwBBEGsiBSQAIAVBCGoiBiABEJc2IAQgACACbGohASMAQRBrIgAkAAN/IAEgBEYEfyAAQRBq +JAAgBgUgACAENgIMIAYgAEEMaiADEIgLIAQgAmohBAwBCwsQlTYgBUEQaiQAC24BA38gACgCBCED +IAAoAggjAEEQayIEJAAgBEEIaiIFIAEQlzYgA2ohASMAQRBrIgAkAAN/IAEgA0YEfyAAQRBqJAAg +BQUgACADNgIMIAUgAEEMaiACEIgLIANBAWohAwwBCwsQlTYgBEEQaiQAC3UBA38gACgCBCEFIAAo +AgghACMAQRBrIgYkACAGQQhqIgcgARCXNiAFIAAgBHRqIQEjAEEQayIAJAADfyABIAVGBH8gAEEQ +aiQAIAcFIAAgBTYCDCAHIABBDGogAxCICyAFIAJqIQUMAQsLEJU2IAZBEGokAAsvAQF/IAAoAggh +AiAAKAIEIQADQCACBEAgAkEBayECIAAQgT8gACABaiEADAELCwsvAQF/IAAoAgghAiAAKAIEIQAD +QCACBEAgAkEBayECIAAQ5DEgACABaiEADAELCwsvAQF/IAAoAgghAiAAKAIEIQADQCACBEAgAkEB +ayECIAAQ9Q4gACABaiEADAELCwsvAQF/IAAoAgghAiAAKAIEIQADQCACBEAgAkEBayECIAAQvzcg +ACABaiEADAELCwsvAQF/IAAoAgghAiAAKAIEIQADQCACBEAgAkEBayECIAAQ5TIgACABaiEADAEL +CwsvAQF/IAAoAgghAiAAKAIEIQADQCACBEAgAkEBayECIAAQujUgACABaiEADAELCwsvAQF/IAAo +AgghAiAAKAIEIQADQCACBEAgAkEBayECIAAQiD8gACABaiEADAELCwtJACMAQSBrIgAkACAAQQxq +QgE3AgAgACAFNgIEIAAgBDYCACAAIAM2AhwgACACNgIYIAAgAEEYajYCCCABIAAQj0UgAEEgaiQA +C5wBAQF/IwBBEGsiCSQAAn8CQAJAAkACQCAALQAAQQFrDgMBAgMACyAJIABBAWo2AgQgASAIQQsg +AEEEaiAEIAlBBGogAxDuDgwDCyAJIABBBGo2AgggASAHQQ0gCUEIaiAGEKUPDAILIAkgAEEBajYC +DCABIAVBESAAQQRqIAQgCUEMaiADEO4ODAELIAEgAkEOEIdBCyAJQRBqJAALiwEBAX8jAEEQayII +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 +CyIBQQA7AfoSIAFBADYC8BEgAQtLAQJ/An8jAEEQayICJAAgAkEIakEIIAAQjj0gAigCCCEBIAJB +EGokACABIAENABpBCCAAEMRPAAsiAUEAOwHyECABQQA2AugPIAELLwEBfwJ/IAAQpDciAQRAIAEM +AQtBCCAAEMRPAAsiAUEAOwGSAyABQQA2AogCIAELSgECfwJ/IwBBEGsiASQAIAFBCGpBBCAAEME4 +IAEoAggiAgRAIAFBEGokACACDAELQQQgABDETwALIgFBADsBjgIgAUEANgIAIAELSgECfwJ/IwBB +EGsiAiQAIAJBCGpBCCAAEKYvIAIoAgghASACQRBqJAAgASABDQAaQQggABDETwALIgFBADsBigEg +AUEANgJYIAELSgECfwJ/IwBBEGsiASQAIAFBCGpBBCAAEME4IAEoAggiAgRAIAFBEGokACACDAEL +QQQgABDETwALIgFBADsBjhggAUEANgIAIAELSwECfwJ/IwBBEGsiAiQAIAJBCGpBBCAAEI49IAIo +AgghASACQRBqJAAgASABDQAaQQQgABDETwALIgFBADsBlgQgAUEANgKQBCABCy8BAX8CfyAAENVJ +IgEEQCABDAELQQQgABDETwALIgFBADsBtgEgAUEANgKwASABC0oBAn8CfyMAQRBrIgEkACABQQhq +QQQgABDBOCABKAIIIgIEQCABQRBqJAAgAgwBC0EEIAAQxE8ACyIBQQA7AfYGIAFBADYCACABC0sB +An8CfyMAQRBrIgIkACACQQhqQQQgABCOPSACKAIIIQEgAkEQaiQAIAEgAQ0AGkEEIAAQxE8ACyIB +QQA7AdYJIAFBADYC0AkgAQtKAQJ/An8jAEEQayIBJAAgAUEIakEIIAAQwTggASgCCCICBEAgAUEQ +aiQAIAIMAQtBCCAAEMRPAAsiAUEAOwHiASABQQA2AlggAQtKAQJ/An8jAEEQayIBJAAgAUEIakEE +IAAQwTggASgCCCICBEAgAUEQaiQAIAIMAQtBBCAAEMRPAAsiAUEAOwGSAyABQQA2AlggAQtLAQJ/ +An8jAEEQayICJAAgAkEIakEEIAAQjj0gAigCCCEBIAJBEGokACABIAENABpBBCAAEMRPAAsiAUEA +OwG6AiABQQA2ArABIAELUQECfyACIAEgASACSRshBCAAKAIAIgAgAUECdGogA2ohAgNAIAEgBEcE +QCACKAIAIgUgATsB4AEgBSAANgJYIAJBBGohAiABQQFqIQEMAQsLC8MBAQJ/AkAgBCAAKAIEQQFr +RgRAIAAoAgAiAC8BkgMiBEELTw0BIAAgBEEBaiIJOwGSAyAAIARBDGxqIgpBlAJqIAFBCGooAgA2 +AgAgCkGMAmogASkCADcCACAAIARBGGxqIgEgAikDADcDACABQQhqIAJBCGopAwA3AwAgAUEQaiAC +QRBqKQMANwMAIAAgCUECdGpBmANqIAM2AgAgAyAJOwGQAyADIAA2AogCDwsgCEEwIAcQ5isACyAG +QSAgBRDmKwALpgEBAn8CQCAFIAAoAgRBAWtGBEAgACgCACIALwHiASIFQQtPDQEgACAFQQFqIgo7 +AeIBIAAgBUEDdGoiCyACNgIEIAsgATYCACAAIAVBDGxqIgFB3ABqIAMpAgA3AgAgAUHkAGogA0EI +aigCADYCACAAIApBAnRqQeQBaiAENgIAIAQgCjsB4AEgBCAANgJYDwsgCUEwIAgQ5isACyAHQSAg +BhDmKwALlgEBAX8CQCAGIAAoAgRBAWtGBEAgACgCACIALwG2ASIGQQtPDQEgACAGQQFqIgs7AbYB +IAAgBkEDdGoiBiACNgIEIAYgATYCACAGQdwAaiAENgIAIAZB2ABqIAM2AgAgACALQQJ0akG4AWog +BTYCACAFIAs7AbQBIAUgADYCsAEPCyAKQTAgCRDmKwALIAhBICAHEOYrAAt8AQF/AkAgBCAAKAIE +QQFrRgRAIAAoAgAiAC8BXiIEQQtPDQEgACAEQQFqIgk7AV4gACAEQQN0aiIEIAI2AgQgBCABNgIA +IAAgCUECdGpB4ABqIAM2AgAgAyAJOwFcIAMgADYCWA8LIAhBMCAHEOYrAAsgBkEgIAUQ5isAC60B +AQF/AkAgBCAAKAIEQQFrRgRAIAAoAgAiAC8BjgIiBEELTw0BIAAgBEEBaiIJOwGOAiAAIARBDGxq +IgRBiAFqIAIpAgA3AgAgBEEMaiABQQhqKAIANgIAIARBBGogASkCADcCACAEQZABaiACQQhqKAIA +NgIAIAAgCUECdGpBkAJqIAM2AgAgAyAJOwGMAiADIAA2AgAPCyAIQTAgBxDmKwALIAZBICAFEOYr +AAuBAQECfyABKAIAIgcvAeIBIghBC08EQCAGQSAgBRDmKwALIAcgCEEBajsB4gEgACAINgIIIAAg +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 +IAA2AghBACAFQQhqIAQgBUEMaiAEIAIgAxCTCAALRgEBfyMAQSBrIgMkACADQQxqQgE3AgAgA0EB +NgIEIAMgAjYCACADQZUVNgIcIAMgADYCGCADIANBGGo2AgggAyABEMswAAssAQF/IwBBEGsiBSQA +IABFBEAgBUEQaiQADwsgASACIAVBD2ogBCADEIkYAAstACABKAIABEAgACABIAIQzU8aDwsgAUEE +ahDrIyEBIABBADYCACAAIAE2AgQLMAAgASgCACACRwRAIAAgASADEM1PGg8LIAEoAgQQ2gshASAA +IAI2AgAgACABNgIEC3ABAX8jAEEgayIEJAACQCABKAIAIAJHBEAgACABIAMQzU8aDAELIARBGGog +AUEUaigCADYCACAEQRBqIAFBDGopAgA3AwAgBCABKQIENwMIIARBCGoQoRQhASAAIAI2AgAgACAB +NgIECyAEQSBqJAALaAEBfyMAQSBrIgckACACIANJBEAgB0EUakIANwIAIAdBATYCDCAHIAY2Aggg +ByAFNgIQIAdBCGogBBDLMAALIAAgAzYCBCAAIAE2AgAgACACIANrNgIMIAAgASADajYCCCAHQSBq +JAALaAEBfyMAQSBrIgckACACIANJBEAgB0EUakIANwIAIAdBATYCDCAHIAY2AgggByAFNgIQIAdB +CGogBBDLMAALIAAgAzYCBCAAIAE2AgAgACACIANrNgIMIAAgASADajYCCCAHQSBqJAALOgEBfyMA +QSBrIgIkACACQRRqQgA3AgAgAkEBNgIMIAIgATYCCCACQZig2gA2AhAgAkEIaiAAEMswAAtsAQF/ +IwBBMGsiBCQAIAQgADYCACAEIAE2AgQgBEEUakICNwIAIARBLGpBrAU2AgAgBEECNgIMIAQgAzYC +CCAEQawFNgIkIAQgBEEgajYCECAEIARBBGo2AiggBCAENgIgIARBCGogAhDLMAALtwEBAn8CQCAC +QQJJDQAgASADaiABEIhBQf8BcUH/AUcEQCABIARqIQFBAiEFA0AgAiAFRg0CIAEgASADaxCIQUH/ +AXFB/wFGBEAgBSECDAMFIAEgA2ohASAFQQFqIQUMAQsACwALIAEgBGohAUECIQVBASEGA38gAiAF +Rg0BIAEgASADaxCIQUH/AXFB/wFHBH8gBQUgASADaiEBIAVBAWohBQwBCwshAgsgACAGOgAEIAAg +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 +IAVBCGogASgCFCgCAEHcAGooAgBBCGoQ5TUgBSAFKAIIIAEoAhggAUEcaigCACABKAIgIAFBJGoo +AgAgBSgCDCgCWBEKACAFKAIAIQYgAUHkAGogBSgCBCIHNgIAIAEgBjYCYAwECyAFQZYDaiAKLQAA +OgAAIAVBiANqIAwpAwA3AwAgBSAFLwFMOwGUAyAFIAUpAzg3A4ADDAcLIABBBDYCYEEEDAgLIAVB +lgNqIAwtAAA6AAAgBUGIA2ogCikDADcDACAFIAUvAWQ7AZQDIAUgBSkDUDcDgAMgAUEoahCXRQwF +CyABQeQAaigCACEHIAEoAmAhBgsgBUGYA2ogBiACIAcoAgwRAwAgBSgCmAMiAkECRg0CIAVB7gFq +IAUtAJ8DOgAAIAVB4AFqIgggBUGsA2opAgA3AwAgBSAFLwCdAzsB7AEgBSAFKQKkAzcD2AEgBS0A +nAMhBiAFKAKgAyEJIAUoArQDIQcgBSkDuAMhDiABQeAAahCZNiACRQRAIAVBmAJqIAFBMGopAgA3 +AwAgBUGgAmogAUE4aikCADcDACAFQfgBaiABQcwAaikCADcDACAFQYACaiABQdQAaikCADcDACAF +QYgCaiABQdwAaigCADYCACAFIAEoAhQiCDYCjAIgBSABKQIoNwOQAiAFIAEpAkQ3A/ABAn8gBwRA +IAVBuARqIgsgAUHEAGoiAkEIaikCADcDACAFQcAEaiIKIAJBEGopAgA3AwAgBUHIBGoiDCACQRhq +KAIANgIAIAVBoARqIg0gAUEoaiIGQQhqKQIANwMAIAVBqARqIgEgBkEQaikCADcDACAFIAIpAgA3 +A7AEIAUgBikCADcDmAQgBUGYA2ogCCgCAEEIahCvGiAFQfADaiABKQMANwMAIAVB6ANqIA0pAwA3 +AwAgBUGABGogCykDADcDACAFQYgEaiAKKQMANwMAIAVBkARqIAwoAgA2AgAgBUHUA2ogBUHgAWop +AwA3AgAgBSAJNgLIAyAFIAUpA5gENwPgAyAFIAUpA7AENwP4AyAFIAUpA9gBNwLMAyAFQdwDaiAH +NgIAIAVB1gFqIAUtAJsDOgAAIAVByAFqIAVBqANqKQMANwMAIAUgBS8AmQM7AdQBIAUgBSkDoAM3 +A8ABIAUtAJgDIQYgBSgCnAMhCSAFKQK0AyEOIAUoArADIQcgBUGEAWogBUG8A2pBPBDNTxogBUHw +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 +7xYgBEFAayQACwvUhhugAQBBgIDAAAvrQi9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3 +NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL21hcC9l +bnRyeS5ycwAAEABgAAAAcAEAADYAAABhc3NlcnRpb24gZmFpbGVkOiBpZHggPCBDQVBBQ0lUWS9y +dXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxs +b2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25vZGUucnMAkAAQAFsAAACXAgAACQAAAGFzc2VydGlv +biBmYWlsZWQ6IGVkZ2UuaGVpZ2h0ID09IHNlbGYuaGVpZ2h0IC0gMZAAEABbAAAArwIAAAkAAACQ +ABAAWwAAALMCAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogc3JjLmxlbigpID09IGRzdC5sZW4oKZAA +EABbAAAALwcAAAUAAACQABAAWwAAAK8EAAAjAAAAkAAQAFsAAACzBAAAIwAAAJAAEABbAAAA7wQA +ACQAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLm5vZGUuaGVpZ2h0IC0g +MQAAAJAAEABbAAAA8AMAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBvbGRfbGVmdF9sZW4gPj0gY291 +bnQAkAAQAFsAAADdBQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IGxlbiA+IDAAAACQABAAWwAAAGUB +AAAJAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGli +cmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAYAIQAF8AAABZAgAA +MAAAAAEAAAAAAAAAAQAAAAIAAAB1c2VyX2lkc3Jvb21yZWRhY3RlZF9iZWNhdXNlc3RydWN0IFVu +c2lnbmVkRGVIZWxwZXIgd2l0aCAxIGVsZW1lbnQAAPwCEAAmAAAAAwAAAAgAAAAEAAAABAAAAHR5 +cGVzdHJ1Y3QgRXZlbnRUeXBlRGVIZWxwZXIgd2l0aCAxIGVsZW1lbnQAQAMQACcAAAB1bnNpZ25l +ZHN0cnVjdCBSZWRhY3Rpb25EZUhlbHBlciB3aXRoIDEgZWxlbWVudAB4AxAAJwAAAGh3bWltZXR5 +cGVzaXpldGh1bWJuYWlsX2luZm9rdHlrZXlfb3BzYWxna2V4dHN0cnVjdCBKc29uV2ViS2V5IHdp +dGggNSBlbGVtZW50cwAA1QMQACEAAABzdHJ1Y3QgVGh1bWJuYWlsSW5mbyB3aXRoIDQgZWxlbWVu +dHMABBAAJAAAAHNkcHN0cnVjdCBTZXNzaW9uRGVzY3JpcHRpb24gd2l0aCAyIGVsZW1lbnRzLwQQ +ACkAAABsYXRlc3RfZXZlbnRjb3VudGN1cnJlbnRfdXNlcl9wYXJ0aWNpcGF0ZWRzdHJ1Y3QgQnVu +ZGxlZFRocmVhZCB3aXRoIDMgZWxlbWVudHMAAIoEEAAkAAAAY2h1bmtzdHJ1Y3QgUmVmZXJlbmNl +Q2h1bmsgd2l0aCAxIGVsZW1lbnQAAAC9BBAAJAAAAGV2ZW50X2lkc3RydWN0IEJ1bmRsZWRSZWZl +cmVuY2Ugd2l0aCAxIGVsZW1lbnQAAPQEEAAmAAAAc3RydWN0IFJlZGFjdGVkVW5zaWduZWQgd2l0 +aCAxIGVsZW1lbnQAACQFEAAmAAAAYm9keWluZm91cmxzdHJ1Y3QgU3RpY2tlckV2ZW50Q29udGVu +dCB3aXRoIDMgZWxlbWVudHMAAABfBRAAKgAAAGVycm9ybS5yZWxhdGVzX3Rvc3RydWN0IFJlYWN0 +aW9uRXZlbnRDb250ZW50IHdpdGggMSBlbGVtZW50AKUFEAAqAAAAY2FuZGlkYXRlc2RwTWlkc2Rw +TUxpbmVJbmRleHN0cnVjdCBDYW5kaWRhdGUgd2l0aCAzIGVsZW1lbnRz9AUQACAAAABjb250ZW50 +c2VuZGVyb3JpZ2luX3NlcnZlcl90c3N0cnVjdCBVbnNpZ25lZFJvb21SZWRhY3Rpb25FdmVudCB3 +aXRoIDUgZWxlbWVudHMAADkGEAAxAAAAbXNndHlwZWFuc3dlcmNhbGxfaWRwYXJ0eV9pZHZlcnNp +b25zdHJ1Y3QgQ2FsbEFuc3dlckV2ZW50Q29udGVudCB3aXRoIDQgZWxlbWVudHOXBhAALQAAAHJl +YXNvbnN0cnVjdCBDYWxsSGFuZ3VwRXZlbnRDb250ZW50IHdpdGggNCBlbGVtZW50cwDSBhAALQAA +AGxpZmV0aW1lb2ZmZXJpbnZpdGVlc3RydWN0IENhbGxJbnZpdGVFdmVudENvbnRlbnQgd2l0aCA2 +IGVsZW1lbnRzAAAAHAcQAC0AAABzdHJ1Y3QgQ2FsbFJlamVjdEV2ZW50Q29udGVudCB3aXRoIDMg +ZWxlbWVudHMAAABUBxAALQAAAGFsZ29yaXRobWRldmljZV9waWNrbGVzdHJ1Y3QgSGVscGVyIHdp +dGggMiBlbGVtZW50cwCiBxAAHQAAAGR1cmF0aW9uc3RydWN0IEF1ZGlvSW5mbyB3aXRoIDMgZWxl +bWVudHPQBxAAIAAAAGFnZXRyYW5zYWN0aW9uX2lkbS5yZWxhdGlvbnNzdHJ1Y3QgUm9vbVJlZGFj +dGlvblVuc2lnbmVkIHdpdGggMyBlbGVtZW50cxQIEAAsAAAAc3RydWN0IE1lc3NhZ2VMaWtlVW5z +aWduZWQgd2l0aCAzIGVsZW1lbnRzAABICBAAKgAAAGRlc2NyaXB0aW9uc3RydWN0IENhbGxOZWdv +dGlhdGVFdmVudENvbnRlbnQgd2l0aCA1IGVsZW1lbnRzAIcIEAAwAAAAcmVkYWN0c3N0cnVjdCBS +b29tUmVkYWN0aW9uRXZlbnRDb250ZW50IHdpdGggMiBlbGVtZW50cwDHCBAAMAAAAGZhaWx1cmVz +ZGV2aWNlX2tleXNtYXN0ZXJfa2V5c3NlbGZfc2lnbmluZ19rZXlzdXNlcl9zaWduaW5nX2tleXNj +YW5kaWRhdGVzc3RydWN0IENhbGxDYW5kaWRhdGVzRXZlbnRDb250ZW50IHdpdGggNCBlbGVtZW50 +cwBKCRAAMQAAAG9uZV90aW1lX2tleXNzdHJ1Y3QgUmVzcG9uc2VCb2R5IHdpdGggMiBlbGVtZW50 +c5EJEAAjAAAAZmlsZW5hbWVvbmVfdGltZV9rZXlfY291bnRzc3RydWN0IFJlc3BvbnNlQm9keSB3 +aXRoIDEgZWxlbWVudAAAANcJEAAiAAAAc3RydWN0IFJlZGFjdGVkUm9vbVJlZGFjdGlvbkV2ZW50 +Q29udGVudCB3aXRoIDEgZWxlbWVudAAEChAANwAAAHJlcXVlc3RpbmdfZGV2aWNlX2lkcmVxdWVz +dF9pZHJvb21faWRzZW5kZXJfa2V5c2Vzc2lvbl9pZHNlc3Npb25fa2V5c2VuZGVyX2NsYWltZWRf +a2V5c2ZvcndhcmRpbmdfY3VydmUyNTUxOV9rZXlfY2hhaW5zdHJ1Y3QgRXhwb3J0ZWRSb29tS2V5 +IHdpdGggNyBlbGVtZW50c7oKEAAmAAAAc2VsZWN0ZWRfcGFydHlfaWRzdHJ1Y3QgQ2FsbFNlbGVj +dEFuc3dlckV2ZW50Q29udGVudCB3aXRoIDQgZWxlbWVudHP5ChAAMwAAAGVycmNvZGVzdHJ1Y3Qg +RmFpbHVyZSB3aXRoIDIgZWxlbWVudHMAAAA7CxAAHgAAAG0ubWVudGlvbnNzdHJ1Y3QgTWVudGlv +bnNEZUhlbHBlciB3aXRoIDEgZWxlbWVudG4LEAAmAAAAcmVjaXBpZW50a2V5c3JlY2lwaWVudF9r +ZXlzc3RydWN0IFRvRGV2aWNlQ3VzdG9tRXZlbnQgd2l0aCA1IGVsZW1lbnRzAAAAtwsQACoAAABn +ZW9fdXJpc3RydWN0IExvY2F0aW9uTWVzc2FnZUV2ZW50Q29udGVudCB3aXRoIDMgZWxlbWVudHMA +AADzCxAAMgAAAGV0YWdrZXlzdHJ1Y3QgS2V5VmVyaWZpY2F0aW9uS2V5RXZlbnRDb250ZW50IHdp +dGggMiBlbGVtZW50czcMEAA1AAAAbWFjc3RydWN0IEtleVZlcmlmaWNhdGlvbk1hY0V2ZW50Q29u +dGVudCB3aXRoIDMgZWxlbWVudHN3DBAANQAAAHN0cnVjdCBNZXNzYWdlVHlwZURlSGVscGVyIHdp +dGggMSBlbGVtZW50AAAAtAwQACkAAABtLmluX3JlcGx5X3Rvc3RydWN0IEtleVZlcmlmaWNhdGlv +bkRvbmVFdmVudENvbnRlbnQgd2l0aCAxIGVsZW1lbnQAAPUMEAA1AAAAaW5pdGlhbF9yYXRjaGV0 +c2lnbmluZ19rZXlzaWduaW5nX2tleV92ZXJpZmllZGNvbmZpZ3N0cnVjdCBJbmJvdW5kR3JvdXBT +ZXNzaW9uUGlja2xlIHdpdGggNCBlbGVtZW50c2gNEAAwAAAAZnJvbV9kZXZpY2VtZXRob2Rzc3Ry +dWN0IEtleVZlcmlmaWNhdGlvblJlYWR5RXZlbnRDb250ZW50IHdpdGggMyBlbGVtZW50cwAAALIN +EAA3AAAAc3RydWN0IFRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uS2V5RXZlbnRDb250ZW50IHdpdGgg +MiBlbGVtZW50cwAAAPQNEAA9AAAAc3RydWN0IFRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uTWFjRXZl +bnRDb250ZW50IHdpdGggMyBlbGVtZW50cwAAADwOEAA9AAAAY29kZXN0cnVjdCBLZXlWZXJpZmlj +YXRpb25DYW5jZWxFdmVudENvbnRlbnQgd2l0aCAzIGVsZW1lbnRziA4QADgAAABzdHJ1Y3QgVG9E +ZXZpY2VLZXlWZXJpZmljYXRpb25Eb25lRXZlbnRDb250ZW50IHdpdGggMSBlbGVtZW50AAAAyA4Q +AD0AAAB2aXZoYXNoZXNzdHJ1Y3QgTWVkaWFFbmNyeXB0aW9uSW5mbyB3aXRoIDQgZWxlbWVudHMA +GQ8QACoAAABzZXJ2ZXJfbm90aWNlX3R5cGVhZG1pbl9jb250YWN0bGltaXRfdHlwZXN0cnVjdCBT +ZXJ2ZXJOb3RpY2VNZXNzYWdlRXZlbnRDb250ZW50IHdpdGggNCBlbGVtZW50cwB1DxAANgAAAHN0 +cnVjdCBUb0RldmljZUtleVZlcmlmaWNhdGlvblJlYWR5RXZlbnRDb250ZW50IHdpdGggMyBlbGVt +ZW50cwC0DxAAPwAAAHN0cnVjdCBPcmlnaW5hbFJvb21SZWRhY3Rpb25FdmVudERlSGVscGVyIHdp +dGggNyBlbGVtZW50cwAAAPwPEAA5AAAAc3RydWN0IERlY3J5cHRlZE9sbVYxRXZlbnQgd2l0aCA1 +IGVsZW1lbnRzAABAEBAAKgAAAHN0cnVjdCBUb0RldmljZUtleVZlcmlmaWNhdGlvbkNhbmNlbEV2 +ZW50Q29udGVudCB3aXRoIDMgZWxlbWVudHN0EBAAQAAAAG0ucmVwbGFjZW0udGhyZWFkbS5yZWZl +cmVuY2VzdHJ1Y3QgQnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zSnNvblJlcHIgd2l0aCAzIGVs +ZW1lbnRzAADYEBAAOgAAAHBpY2tsZWltcG9ydGVkYmFja2VkX3VwaGlzdG9yeV92aXNpYmlsaXR5 +c3RydWN0IFBpY2tsZWRJbmJvdW5kR3JvdXBTZXNzaW9uIHdpdGggOCBlbGVtZW50cwAARREQADEA +AAB0aW1lc3RhbXBzdHJ1Y3QgVG9EZXZpY2VLZXlWZXJpZmljYXRpb25SZXF1ZXN0RXZlbnRDb250 +ZW50IHdpdGggNCBlbGVtZW50cwAAiREQAEEAAABtLm5ld19jb250ZW50c3RydWN0IEV2ZW50V2l0 +aFJlbGF0ZXNUb0RlSGVscGVyIHdpdGggMiBlbGVtZW50cwAA4REQADEAAAB0b3N0cnVjdCBIZWxw +ZXIgd2l0aCAxIGVsZW1lbnQAAB4SEAAcAAAAAQAAAAAAAAABAAAABQAAAAMAAAAIAAAABAAAAAYA +AAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAAAgAAAABAAAAAAAA +AAEAAAAHAAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAAAkAAAABAAAAAAAAAAEAAAAKAAAA +AQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAFAAAAAQAAAAAAAAAB +AAAABwAAAAEAAAAAAAAAAQAAAAsAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAADAAAAAEA +AAAAAAAAAQAAAAwAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAADAAAAAEAAAAAAAAAAQAA +AAcAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAADQAAAAEAAAAAAAAAAQAAAAcAAAABAAAA +AAAAAAEAAAAHAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAQAAAA4AAAABAAAAAAAAAAEAAAAF +AAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAAA8AAAABAAAAAAAAAAEAAAAQAAAAAQAAAAAA +AAABAAAABwAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAAEQAA +AAEAAAAAAAAAAQAAABIAAAABAAAAAAAAAAEAAAATAAAAAQAAAAAAAAABAAAAFAAAAAEAAAAAAAAA +AQAAABQAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAABUAAAAB +AAAAAAAAAAEAAAAWAAAAAQAAAAAAAAABAAAADAAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEA +AAAHAAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAABcAAAABAAAAAAAAAAEAAAAHAAAAAQAA +AAAAAAABAAAABwAAAAEAAAAAAAAAAQAAAAwAAAABAAAAAAAAAAEAAAAYAAAAAQAAAAAAAAABAAAA +GQAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAaAAAAAQAAAAAAAAABAAAAGwAAAAEAAAAA +AAAAAQAAAAcAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAABwA +AAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAAB0AAAABAAAAAAAA +AAEAAAAeAAAAAQAAAAAAAAABAAAAHwAAAAEAAAAAAAAAAQAAAAUAAAABAAAAAAAAAAEAAAAgAAAA +AQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAAB +AAAAIQAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAABwAAAAEA +AAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAA +ACIAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAAIwAAAAEAAAAAAAAAAQAAAAwAAAABAAAA +AAAAAAEAAAAHAAAAAQAAAAAAAAABAAAADAAAAAEAAAAAAAAAAQAAACQAAAABAAAAAAAAAAEAAAAl +AAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAA +AAABAAAADAAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAHAAAAAQAAAAAAAAABAAAAJgAA +AAEAAAAAAAAAAQAAAAcAAAABAAAAAAAAAAEAAAAnAAAAAQAAAAAAAAABAAAABwAAAAEAAAAAAAAA +AQAAAAcAAAABAAAAAAAAAAEAAAAMAAAAAQAAAAAAAAABAAAAKAAAAAEAAAAAAAAAAQAAACkAAAAB +AAAAAAAAAAEAAAApAAAAAQAAAAAAAAABAAAAKgAAAAEAAAAAAAAAAQAAACsAAAABAAAAAAAAAAEA +AAApAAAAAQAAAAAAAAABAAAAKwAAAAEAAAAAAAAAAQAAACkAAAABAAAAAAAAAAEAAAApAAAAAQAA +AAAAAAABAAAALAAAAAEAAAAAAAAAAQAAAC0AAAABAAAAAAAAAAEAAAAuAAAAAQAAAAAAAAABAAAA +LwAAAAEAAAAAAAAAAQAAADAAAAABAAAAAAAAAAEAAAAxAAAAAQAAAAAAAAABAAAAMgAAAAEAAAAA +AAAAAQAAADMAAAABAAAAAAAAAAEAAAA0AAAAAQAAAAAAAAABAAAANAAAAAEAAAAAAAAAAQAAADUA +AAABAAAAAAAAAAEAAAA2AAAAAQAAAAAAAAABAAAANwAAAAEAAAAAAAAAAQAAADgAAAABAAAAAAAA +AAEAAAA2AAAAAQAAAAAAAAABAAAAOQAAAAEAAAAAAAAAAQAAADQAAAABAAAAAAAAAAEAAAA2AAAA +AQAAAAAAAAABAAAANgAAAAEAAAAAAAAAAQAAADoAAAABAAAAAAAAAAEAAAA7AAAAAQAAAAAAAAAB +AAAAPAAAAAEAAAAAAAAAAQAAAD0AAAABAAAAAAAAAAEAAAA+AAAAAQAAAAAAAAABAAAANgAAAAEA +AAAAAAAAAQAAADYAAAABAAAAAAAAAAEAAAA/AAAAAQAAAAAAAAABAAAAQAAAAAEAAAAAAAAAAQAA +AEEAAAABAAAAAAAAAAEAAABCAAAAAQAAAAAAAAABAAAAQwAAAAEAAAAAAAAAAQAAAEQAAAABAAAA +AAAAAAEAAAA0AAAAAQAAAAAAAAABAAAANAAAAAEAAAAAAAAAAQAAAEUAAAABAAAAAAAAAAEAAAA0 +AAAAAQAAAAAAAAABAAAARgAAAAEAAAAAAAAAAQAAAEcAAAABAAAAAAAAAAEAAAA0AAAAAQAAAAAA +AAABAAAASAAAAAEAAAAAAAAAAQAAADQAAAABAAAAAAAAAAEAAABJAAAAAQAAAAAAAAABAAAANAAA +AAEAAAAAAAAAAQAAAEoAAAABAAAAAAAAAAEAAABLAAAAAQAAAAAAAAABAAAATAAAAAEAAAAAAAAA +AQAAAE0AAAABAAAAAAAAAAEAAABOAAAAAQAAAAAAAAABAAAANgAAAAEAAAAAAAAAAQAAAE8AAAAB +AAAAAAAAAAEAAAA2AAAAAQAAAAAAAAABAAAANAAAAAEAAAAAAAAAAQAAADQAAAABAAAAAAAAAAEA +AABQAAAAAQAAAAAAAAABAAAAUQAAAAEAAAAAAAAAAQAAAFIAAAABAAAAAAAAAAEAAABTAAAAAQAA +AAAAAAABAAAAVAAAAAEAAAAAAAAAAQAAADYAAAABAAAAAAAAAAEAAAA0AAAAAQAAAAAAAAABAAAA +VQAAAAEAAAAAAAAAAQAAADYAAAABAAAAAAAAAAEAAAA0AAAAAQAAAAAAAAABAAAAVgAAAAEAAAAA +AAAAAQAAADYAAAABAAAAAAAAAAEAAABXAAAAAQAAAAAAAAABAAAANAAAAAEAAAAAAAAAAQAAAFgA +AAABAAAAAAAAAAEAAABZAAAAAQAAAAAAAAABAAAAWgAAAAEAAAAAAAAAAQAAADQAAAABAAAAAAAA +AAEAAAA0AAAAAQAAAAAAAAABAAAANAAAAAEAAAAAAAAAAQAAADYAAAABAAAAAAAAAAEAAABbAAAA +AQAAAAAAAAABAAAAQwAAAAEAAAAAAAAAAQAAADQAAAABAAAAAAAAAAEAAABcAAAAAQAAAAAAAAAB +AAAANgAAAAEAAAAAAAAAAQAAADQAAAABAAAAAAAAAAEAAABdAAAAAQAAAAAAAAABAAAAXgAAAAEA +AAAAAAAAAQAAAF8AAAABAAAAAAAAAAEAAAA2AAAAAQAAAAAAAAABAAAANgAAAAEAAAAAAAAAAQAA +AGAAAAABAAAAAAAAAAEAAABhAAAAAQAAAAAAAAABAAAAYgAAAAEAAAAAAAAAAQAAAGMAAAABAAAA +AAAAAAEAAABkAAAAAQAAAAAAAAABAAAAZQAAAAEAAAAAAAAAAQAAAGYAAAABAAAAAAAAAAEAAABD +AAAAAQAAAAAAAAABAAAAZwAAAAEAAAAAAAAAAQAAADQAAAABAAAAAAAAAAEAAABoAAAAAQAAAAAA +AAABAAAAaQAAAAEAAAAAAAAAAQAAADQAAAABAAAAAAAAAAEAAABqAAAAAQAAAAAAAAABAAAAawAA +AAEAAAAAAAAAAQAAADYAAAABAAAAAAAAAAEAAABsAAAAAQAAAAAAAAABAAAAbQAAAAEAAAAAAAAA +AQAAAG4AAAABAAAAAAAAAAEAAABvAAAAAQAAAAAAAAABAAAAcAAAAAEAAAAAAAAAAQAAADYAAAAB +AAAAAAAAAAEAAAA2AAAAAQAAAAAAAAABAAAAcQAAAAEAAAAAAAAAAQAAAHIAAAABAAAAAAAAAAEA +AAA2AAAAAQAAAAAAAAABAAAAcwAAAAEAAAAAAAAAAQAAAHQAAAABAAAAAAAAAAEAAAB1AAAAAQAA +AAAAAAABAAAAdgAAAAEAAAAAAAAAAQAAAHcAAAABAAAAAAAAAAEAAAA2AAAAAQAAAAAAAAABAAAA +eAAAAAEAAAAAAAAAAQAAAHkAAAABAAAAAAAAAAEAAAB6AAAAAQAAAAAAAAABAAAAewAAAGludGVy +bmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvaG9tZS9ydW5uZXIvLmNhcmdvL3Jl +Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9mdXR1cmVzLXV0aWwt +MC4zLjMwL3NyYy9mdXR1cmUvZnV0dXJlL21hcC5ycwAAjCAQAG4AAAA6AAAAMQAAAE1hcCBtdXN0 +IG5vdCBiZSBwb2xsZWQgYWZ0ZXIgaXQgcmV0dXJuZWQgYFBvbGw6OlJlYWR5YAAAjCAQAG4AAAA+ +AAAAEQAAAH1beyxdAAAAAAAAAP//////////YCEQAEH4wsAAC8kdT3ZlcmxvbmcgZHVyYXRpb24v +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4 +MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jb21tb24vc3JjL3RpbWVvdXQucnMA +iSEQAHIAAAA0AAAARAAAAIkhEAByAAAALQAAAAEAAAAAAAAAYGFzeW5jIGZuYCByZXN1bWVkIGFm +dGVyIGNvbXBsZXRpb24vaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1 +c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8v +c3JjL2lkZW50aXRpZXMvdXNlci5ycwAAAEMiEAB6AAAACAEAAB4AAABDIhAAegAAABoBAAAtAAAA +QyIQAHoAAADyAAAAUgAAAEMiEAB6AAAAnQAAAFcAAABDIhAAegAAALAAAABRAAAAQyIQAHoAAAC+ +AAAAVwAAAEMiEAB6AAAAqgAAAFcAAABDIhAAegAAAIUAAABSAAAARmllbGRTZXQgY29ycnVwdGVk +ICh0aGlzIGlzIGEgYnVnKQAAQyIQAHoAAACSAAAADQAAAENvdWxkbid0IHN0b3JlIG91ciBvd24g +dXNlciBpZGVudGl0eSBhZnRlciBtYXJraW5nIGl0IGFzIHZlcmlmaWVkAAAAdCMQAEEAAACBAAAA +GAAAAAQAAACCAAAAgQAAAAQAAAAEAAAAgwAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvaWRlbnRpdGllcy9kZXZpY2UucnPgIxAAfAAAAI8BAABVAAAA4CMQ +AHwAAAAwAQAAZAAAAOAjEAB8AAAARgEAAD0AAADgIxAAfAAAAD8BAAA9AAAA4CMQAHwAAAB4AQAA +UgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvaWRlbnRp +dGllcy9tYW5hZ2VyLnJzAAAArCQQAH0AAAAcAwAARgAAAKwkEAB9AAAAbwMAABoAAACsJBAAfQAA +AGcDAAAaAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92 +ZXJpZmljYXRpb24vbW9kLnJzAFwlEAB7AAAAfgAAADsAAABcJRAAewAAAJ4AAABYAAAAXCUQAHsA +AACOAAAAPAAAAFwlEAB7AAAApQAAAEsAAABcJRAAewAAALEAAABbAAAAXCUQAHsAAACHAAAAQwAA +AFwlEAB7AAAA+gEAADcAAABcJRAAewAAAA0CAAAZAAAAQ2FuJ3Qgc2lnbiB0aGUgZGV2aWNlIGtl +eXMgZm9yICAsIG5vIHByaXZhdGUgZGV2aWNlIHNpZ25pbmcga2V5IGZvdW5kAAAAWCYQAB8AAAB3 +JhAAAQAAAHgmEAAlAAAAXCUQAHsAAAAXAgAAGQAAAEVycm9yIHNpZ25pbmcgZGV2aWNlIGtleXM6 +IADIJhAAGwAAAIEAAAAEAAAABAAAAIQAAACBAAAABAAAAAQAAACFAAAAXCUQAHsAAAAwAgAAGQAA +AENhbid0IHNpZ24gdGhlIHB1YmxpYyBjcm9zcyBzaWduaW5nIGtleXMsIG5vIHByaXZhdGUgdXNl +ciBzaWduaW5nIGtleSBmb3VuZAAcJxAASwAAAFwlEAB7AAAAOAIAABkAAABFcnJvciBzaWduaW5n +IHRoZSBwdWJsaWMgY3Jvc3Mgc2lnbmluZyBrZXlzOiAAAACAJxAALQAAAFwlEAB7AAAA3gEAAC4A +AABcJRAAewAAALECAAA7AAAAXCUQAHsAAADTAgAADQAAAFRoZSBpbnRlcmFjdGl2ZSB2ZXJpZmlj +YXRpb24gcHJvY2VzcyBkaWRuJ3QgdmVyaWZ5IHRoZSBkZXZpY2UAAADoJxAAPQAAAFwlEAB7AAAA +yQIAAA0AAABNYXJraW5nIGRldmljZSBhcyB2ZXJpZmllZC4AQCgQABsAAABcJRAAewAAAL8CAAAN +AAAAVGhlIGRldmljZSBrZXlzIGhhdmUgY2hhbmdlZCB3aGlsZSBhbiBpbnRlcmFjdGl2ZSB2ZXJp +ZmljYXRpb24gd2FzIGdvaW5nIG9uLCBub3QgbWFya2luZyB0aGUgZGV2aWNlIGFzIHZlcmlmaWVk +LnQoEABwAAAAXCUQAHsAAAC2AgAADQAAAFRoZSBkZXZpY2Ugd2FzIGRlbGV0ZWQgd2hpbGUgYW4g +aW50ZXJhY3RpdmUgdmVyaWZpY2F0aW9uIHdhcyBnb2luZyBvbi4AAPwoEABGAAAAXCUQAHsAAABl +AgAAXQAAAFwlEAB7AAAAcgIAAEsAAABcJRAAewAAAJwCAAARAAAAVGhlIG1hc3RlciBrZXlzIG9m +IHRoZSB1c2VyIGhhdmUgY2hhbmdlZCB3aGlsZSBhbiBpbnRlcmFjdGl2ZSB2ZXJpZmljYXRpb24g +d2FzIGdvaW5nIG9uLCBub3QgbWFya2luZyB0aGUgaWRlbnRpdHkgYXMgdmVyaWZpZWQuAAB8KRAA +fgAAAFwlEAB7AAAAkgIAABUAAABUaGUgaW50ZXJhY3RpdmUgdmVyaWZpY2F0aW9uIHByb2Nlc3Mg +ZGlkbid0IHZlcmlmeSB0aGUgdXNlciBpZGVudGl0eSBvZiB0aGUgdXNlciB0aGF0IHBhcnRpY2lw +YXRlZCBpbiB0aGUgaW50ZXJhY3RpdmUgdmVyaWZpY2F0aW9uAAAUKhAAggAAAFwlEAB7AAAAhAIA +ABUAAABNYXJraW5nIHRoZSB1c2VyIGlkZW50aXR5IG9mIGFzIHZlcmlmaWVkLgAAALAqEAApAAAA +XCUQAHsAAAClAgAADQAAAFRoZSBpZGVudGl0eSBvZiB0aGUgdXNlciB3YXMgZGVsZXRlZCB3aGls +ZSBhbiBpbnRlcmFjdGl2ZSB2ZXJpZmljYXRpb24gd2FzIGdvaW5nIG9uLvQqEABUAAAAL2hvbWUv +cnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2Qy +N2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vc2Fz +L21vZC5ycwBQKxAAfwAAABgCAABdAAAAUCsQAH8AAAAEAgAADQAAAENvbmZpcm1pbmcgU0FTIHZl +cmlmaWNhdGlvbgDwKxAAGwAAAFArEAB/AAAA7QEAAAUAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9xcmNvZGUucnMAACQsEAB+AAAA +PgIAACIAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Zl +cmlmaWNhdGlvbi9tYWNoaW5lLnJzALQsEAB/AAAANQEAAAUAAAC0LBAAfwAAAFYBAAARAAAAUmVj +ZWl2ZWQgYSBuZXcgdmVyaWZpY2F0aW9uIHJlcXVlc3QAVC0QACMAAACBAAAACAAAAAQAAACGAAAA +tCwQAH8AAABkAQAAFQAAAFRoZSByZWNlaXZlZCB2ZXJpZmljYXRpb24gcmVxdWVzdCB3YXMgdG9v +IG9sZCBvciB0b28gZmFyIGludG8gdGhlIGZ1dHVyZaAtEABIAAAAgQAAAAQAAAAEAAAAhwAAALQs +EAB/AAAAbQEAABUAAABUaGUgcmVjZWl2ZWQgdmVyaWZpY2F0aW9uIHJlcXVlc3Qgd2FzIHNlbnQg +YnkgdXMsIGlnbm9yaW5nIGl0AAAAEC4QAD0AAAC0LBAAfwAAAFwBAAAVAAAAVGhlIGtleSB2ZXJp +ZmljYXRpb24gcmVxdWVzdCBkaWRuJ3QgY29udGFpbiBhIHZhbGlkIHRpbWVzdGFtcAAAAGguEAA9 +AAAAtCwQAH8AAABCAQAADQAAAFJlY2VpdmVkIGEgdmVyaWZpY2F0aW9uIGV2ZW50IHdpdGggYSBt +aXNtYXRjaGVkIGZsb3cgaWQsIHRoZSB2ZXJpZmljYXRpb24gb2JqZWN0IHdhcyBjcmVhdGVkIGZv +ciBhIGluLXJvb20gdmVyaWZpY2F0aW9uIGJ1dCBhbiBldmVudCB3YXMgcmVjZWl2ZWQgb3ZlciB0 +by1kZXZpY2UgbWVzc2FnaW5nIG9yIHZpY2UgdmVyc2HALhAAuAAAALQsEAB/AAAAaQAAAB4AAAC0 +LBAAfwAAAFAAAAA9AAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1y +dXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRv +L3NyYy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnOgLxAAgAAAANADAABZAAAAoC8QAIAAAACPBAAA +RgAAAAIAQczgwAALAQEAQdjgwAAL6QagLxAAgAAAAK8EAABVAAAAoC8QAIAAAAC/BAAACQAAAENh +bid0IGNyZWF0ZSBhIFFSIGNvZGUsIHRoZSBkZXZpY2UgdGhhdCBhY2NlcHRlZCB0aGUgdmVyaWZp +Y2F0aW9uIGRvZXNuJ3QgZXhpc3QAeDAQAE8AAACBAAAABAAAAAQAAACIAAAAgQAAAAQAAAAEAAAA +iQAAAKAvEACAAAAA7AQAABUAAABDYW4ndCBjcmVhdGUgYSBRUiBjb2RlLCBvdXIgY3Jvc3Mgc2ln +bmluZyBpZGVudGl0eSBkb2Vzbid0IGNvbnRhaW4gYSB2YWxpZCBtYXN0ZXIga2V5AAAAADEQAFUA +AACgLxAAgAAAABIFAAAVAAAAQ2FuJ3QgY3JlYXRlIGEgUVIgY29kZSwgdGhlIHVzZXIncyBpZGVu +dGl0eSBkb2Vzbid0IGhhdmUgYSB2YWxpZCBtYXN0ZXIga2V5AHAxEABLAAAAoC8QAIAAAAAdBQAA +CQAAAENhbid0IGNyZWF0ZSBhIFFSIGNvZGUsIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBhIHZhbGlk +IGNyb3NzIHNpZ25pbmcgaWRlbnRpdHkuAAAA1DEQAE0AAACgLxAAgAAAANkEAAAdAAAAQ2FuJ3Qg +Y3JlYXRlIGEgUVIgY29kZSwgdGhlIG90aGVyIGRldmljZSBkb2Vzbid0IGhhdmUgYSB2YWxpZCBk +ZXZpY2Uga2V5PDIQAEgAAACgLxAAgAAAAAkFAAAZAAAAQ2FuJ3QgY3JlYXRlIGEgUVIgY29kZSwg +d2UgZG9uJ3QgdHJ1c3Qgb3VyIG93biBtYXN0ZXIga2V5AAAAnDIQADkAAACgLxAAgAAAAKcBAAA0 +AAAAoC8QAIAAAADLAQAADQAAAEluc2VydGluZyBuZXcgUVIgdmVyaWZpY2F0aW9uAAAAADMQAB0A +AACgLxAAgAAAAMQBAAANAAAAUmVwbGFjaW5nIGV4aXN0aW5nIFFSIHZlcmlmaWNhdGlvbgAAODMQ +ACIAAACgLxAAgAAAAIsBAABeAAAAoC8QAIAAAABJAwAATwAAAKAvEACAAAAAAQYAAFkAAACgLxAA +gAAAABMGAABfAAAAoC8QAIAAAAA0BgAAWQAAAKAvEACAAAAARgYAAF8AQdDnwAAL08sBoC8QAIAA +AADCBQAAWwAAAKAvEACAAAAAzQUAAAkAAABDYW4ndCBzdGFydCB0aGUgU0FTIHZlcmlmaWNhdGlv +biBmbG93LCB0aGUgZGV2aWNlIHRoYXQgYWNjZXB0ZWQgdGhlIHZlcmlmaWNhdGlvbiBkb2Vzbid0 +IGV4aXN0AADwMxAAXgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgt +cnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0 +by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL2dyb3VwX3Nlc3Npb25zLnJzAAAAWDQQAIkAAABGAAAALwAA +AFg0EACJAAAAQwAAAFcAAABYNBAAiQAAAE0AAABYAAAAWDQQAIkAAABTAAAAJwAAAFg0EACJAAAA +WQAAABEAAABDb3VsZG4ndCByZXN0b3JlIGFuIG91dGJvdW5kIGdyb3VwIHNlc3Npb246IDQ1EAAs +AAAAWDQQAIkAAADzAgAABQAAAIEAAAAEAAAABAAAAIoAAACLAAAAAAAAAAEAAACMAAAAWDQQAIkA +AAD6AgAACQAAAENoZWNraW5nIGlmIGEgcm9vbSBrZXkgbmVlZHMgdG8gYmUgc2hhcmVkAAAAqDUQ +ACkAAABzZXNzaW9uX2lkAABYNBAAiQAAADsDAAARAAAAVGhlIHJvb20ga2V5IGRvZXNuJ3QgbmVl +ZCB0byBiZSBzaGFyZWQgd2l0aCBhbnlvbmUuIE1hcmtpbmcgYXMgc2hhcmVkLgAA+DUQAEYAAABY +NBAAiQAAAEoDAAANAAAAU3RvcmVkIHRoZSBjaGFuZ2VkIHNlc3Npb25zIGFmdGVyIGVuY3J5cHRp +bmcgYW4gcm9vbSBrZXlYNhAAOAAAAIEAAAAEAAAABAAAAI0AAABYNBAAiQAAABECAAA5AAAAWDQQ +AIkAAAAgAgAADQAAAFRyeWluZyB0byBlbmNyeXB0IGEgcm9vbSBrZXnINhAAHAAAAIEAAAAEAAAA +BAAAAI4AAACBAAAABAAAAAQAAACNAAAARW5jcnlwdGlvbiB0YXNrIHBhbmlja2VkWDQQAIkAAABA +AgAAIQAAAFg0EACJAAAAbQIAABgAAABYNBAAiQAAAJkAAABZAAAAWDQQAIkAAABaAQAABQAAAFg0 +EACJAAAAZQEAAAkAAABDYWxjdWxhdGluZyBncm91cCBzZXNzaW9uIHJlY2lwaWVudHN0NxAAJAAA +AIEAAAAEAAAABAAAAI8AAACBAAAABAAAAAQAAACQAAAAWDQQAIkAAABoAQAALQAAAFg0EACJAAAA +qAEAAEcAAABYNBAAiQAAALkBAAAZAAAAUm90YXRpbmcgYSByb29tIGtleSBkdWUgdG8gdGhlc2Ug +ZGV2aWNlcyBiZWluZyBkZWxldGVkL2JsYWNrbGlzdGVkIADwNxAAQwAAAFg0EACJAAAAxgEAAA0A +AABSb3RhdGluZyByb29tIGtleSB0byBwcm90ZWN0IHJvb20gaGlzdG9yeQAAAEw4EAApAAAAkQAA +AAEAAAABAAAAkgAAAFg0EACJAAAAzgEAAAkAAABEb25lIGNhbGN1bGF0aW5nIGdyb3VwIHNlc3Np +b24gcmVjaXBpZW50cwAAAKA4EAApAAAAWDQQAIkAAAD1AQAAKgAAAFg0EACJAAAA/gEAAA0AAABB +IHVzZXIgb3IgZGV2aWNlIGhhcyBsZWZ0IHRoZSByb29tIHNpbmNlIHdlIGxhc3Qgc2VudCBhIG1l +c3NhZ2UsIG9yIHRoZSBlbmNyeXB0aW9uIHNldHRpbmdzIGhhdmUgY2hhbmdlZC4gUm90YXRpbmcg +dGhlIHJvb20ga2V5LvQ4EACAAAAAWDQQAIkAAADlAAAAQQAAAFg0EACJAAAA9QAAAEkAAABYNBAA +iQAAAM8AAAA3AAAAU2Vzc2lvbiB3YXNuJ3QgY3JlYXRlZCBub3Igc2hhcmVkAAAAWDQQAIkAAADR +AAAANgAAAFNlc3Npb24gZXhwaXJlZADgORAADwAAAFg0EACJAAAA0wAAAAkAAAAvaG9tZS9ydW5u +ZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIv +YWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9zZXNz +aW9ucy5ycwAIOhAAgwAAAN8AAABGAAAACDoQAIMAAAAfAQAAQwAAAAg6EACDAAAALQEAAA0AAABD +b2xsZWN0ZWQgdXNlci9kZXZpY2UgcGFpcnMgdGhhdCBhcmUgbWlzc2luZyBhbiBPbG0gc2Vzc2lv +bgC8OhAAOwAAAIEAAAAEAAAABAAAAJMAAACBAAAABAAAAAQAAACUAAAACDoQAIMAAAA1AQAADQAA +AENhbid0IGVzdGFibGlzaCBhbiBPbG0gc2Vzc2lvbiB3aXRoIHNvbWUgZGV2aWNlcyBkdWUgdG8g +bWlzc2luZyBPbG0gc3VwcG9ydCBvciBiYWQga2V5cwAwOxAAVwAAAIEAAAAEAAAABAAAAJUAAAAI +OhAAgwAAAEgBAAAyAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1y +dXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRv +L3NyYy9vbG0vZ3JvdXBfc2Vzc2lvbnMvaW5ib3VuZC5ycwAAALA7EACFAAAAIQEAAFAAAABDYW4n +dCBleHBvcnQgc2Vzc2lvbrA7EACFAAAAJQEAAD4AAACwOxAAhQAAAAIBAAAzAAAAsDsQAIUAAABv +AQAAUQAAALA7EACFAAAAkQEAADYAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +bWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNk +ay1jcnlwdG8vc3JjL29sbS9ncm91cF9zZXNzaW9ucy9vdXRib3VuZC5ycwAAnDwQAIYAAADfAQAA +MwAAAJw8EACGAAAA9wEAAC4AAACcPBAAhgAAAF8BAABTAAAAcGF5bG9hZCBzZXJpYWxpemF0aW9u +IG5ldmVyIGZhaWxzAAAAnDwQAIYAAACEAQAALQAAAG0ucmVsYXRlc190b3NlcmRlX2pzb246OlZh +bHVlIGRlc2VyaWFsaXphdGlvbiB3aXRoIHZhbGlkIEpTT04gaW5wdXQgbmV2ZXIgZmFpbHMAnDwQ +AIYAAACIAQAADgAAAJw8EACGAAAAeQEAACkAAABtLnJvb20uZW5jcnlwdGVkIGV2ZW50IGNvbnRl +bnQgY2FuIGFsd2F5cyBiZSBzZXJpYWxpemVkAJw8EACGAAAAnwEAABwAAABpbnRlcm5hbCBlcnJv +cjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOiBBbiBvdXRib3VuZCBncm91cCBzZXNzaW9uIGlz +IGFsd2F5cyB1c2luZyBvbmUgb2YgdGhlIHN1cHBvcnRlZCBhbGdvcml0aG1zAEA+EABzAAAAnDwQ +AIYAAACYAQAAEgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvb2xtL2FjY291bnQucnMAAMw+EAB2AAAAyQAAAAkAAABDcmVhdGluZyBhIG5ldyByb29tIGtl +eQBUPxAAFwAAAMw+EAB2AAAAyAAAAFoAAADMPhAAdgAAAP0CAABaAAAAL2hvbWUvcnVubmVyLy5j +YXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0 +ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vc2lnbmluZy9tb2QucnMAAJQ/EAB6 +AAAAzQEAADkAAACUPxAAegAAANcBAAA5AAAAQ2FuJ3Qgc2lnbiBvdXIgZnJlc2hseSBjcmVhdGVk +IG1hc3RlciBrZXkgd2l0aCBvdXIgYWNjb3VudAAAlD8QAHoAAAALAgAADgAAAFdlIGNhbiBhbHdh +eXMgY29udmVydCBvdXIgb3duIENyb3NzU2lnbmlnS2V5IGludG8gYSBNYXN0ZXJQdWJrZXmUPxAA +egAAAA8CAAAOAAAAlD8QAHoAAAAFAgAAQwAAAENhbid0IHNpZ24gb3duIGRldmljZSB3aXRoIG5l +dyBjcm9zcyBzaWduaW5nIGtleXMAAACUPxAAegAAABUCAAAOAAAAlD8QAHoAAADGAAAAUwAAAJQ/ +EAB6AAAAjwAAAEMAAACUPxAAegAAAJwAAAAwAAAAlD8QAHoAAAChAAAAMAAAAJQ/EAB6AAAA6wAA +ACgAAACUPxAAegAAAJcAAAAyAAAAlD8QAHoAAADfAQAAOQAAAJQ/EAB6AAAAiQIAAE4AAACUPxAA +egAAALAAAABDAAAAlD8QAHoAAACLAQAAOgAAAJQ/EAB6AAAAbAEAAEcAAACUPxAAegAAALUAAABO +AAAAlD8QAHoAAAC6AAAATgAAAJQ/EAB6AAAAWAEAABUAAACUPxAAegAAAO4BAABgAAAAlD8QAHoA +AACnAAAANgAAAJQ/EAB6AAAAhgAAACoAAACUPxAAegAAALEBAAA5AAAAL2hvbWUvcnVubmVyLy5j +YXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0 +ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zdG9yZS9tb2QucnNAQhAAdAAAAGoBAABK +AAAAQEIQAHQAAABtAQAAOgAAAEBCEAB0AAAAcgEAAEIAAABAQhAAdAAAAIEAAABRAAAAQEIQAHQA +AACWAAAAQwAAAEBCEAB0AAAAsgAAACUAAABAQhAAdAAAANQAAAARAAAAVGhlIHVzZXIgaGFzIGEg +cGVuZGluZyBgL2tleS9xdWVyeWAgcmVxdWVzdCB3aGljaCBkaWQgbm90IGZpbmlzaCB5ZXQsIHNv +bWUgZGV2aWNlcyBtaWdodCBiZSBtaXNzaW5nLiRDEABkAAAAQEIQAHQAAAB2AAAAYwAAAEBCEAB0 +AAAAjAEAAE4AAABAQhAAdAAAAKQBAAAoAAAAQEIQAHQAAADEAQAALQAAAEBCEAB0AAAAuQEAAD0A +AABAQhAAdAAAAL8BAAAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJp +eC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5 +cHRvL3NyYy9zdG9yZS9jcnlwdG9fc3RvcmVfd3JhcHBlci5ycwAAAPBDEACFAAAAQgAAAE0AAABA +QhAAdAAAAD8BAABXAAAAQEIQAHQAAABNAQAASwAAAEBCEAB0AAAATwEAACoAAABAQhAAdAAAAOsA +AABiAAAAQEIQAHQAAADwAAAARgAAAEBCEAB0AAAABQEAABUAAABAQhAAdAAAAAoBAABCAAAAQEIQ +AHQAAABUBAAAIQAAAEBCEAB0AAAAqgMAAEAAAABAQhAAdAAAAGYEAABhAAAAQEIQAHQAAADQAwAA +TQAAAEBCEAB0AAAAkwQAABEAAABVbmtub3duIHNlY3JldCB3YXMgcmVxdWVzdGVkSEUQABwAAACB +AAAABAAAAAQAAACWAAAAQEIQAHQAAACDBAAAMwAAAEBCEAB0AAAAPAQAAFoAAABAQhAAdAAAANUF +AAAmAAAAQEIQAHQAAAAABgAAFQAAAENvdWxkbid0IGltcG9ydCBhIHJvb20ga2V5IGZyb20gYSBm +aWxlIGV4cG9ydC4AALxFEAAuAAAAlwAAAAwAAAAEAAAAmAAAAIEAAAAEAAAABAAAAJkAAACBAAAA +BAAAAAQAAACaAAAAQEIQAHQAAAATBgAACQAAAFN1Y2Nlc3NmdWxseSBpbXBvcnRlZCByb29tIGtl +eXMANEYQAB8AAACBAAAABAAAAAQAAACbAAAAQEIQAHQAAADbBQAAEwAAAEBCEAB0AAAAAQQAAGAA +AABAQhAAdAAAAIgGAAA2AAAAQEIQAHQAAACdBAAAOAAAAEBCEAB0AAAAvAQAAA0AAABObyBwdWJs +aWMgaWRlbnRpdHkgZm91bmQgd2hpbGUgaW1wb3J0aW5nIGNyb3NzLXNpZ25pbmcga2V5cywgYSAv +a2V5cy9xdWVyeSBuZWVkcyB0byBiZSBkb25lALxGEABbAAAAQEIQAHQAAAC4BAAADQAAAFN1Y2Nl +c3NmdWxseSBpbXBvcnRlZCB0aGUgcHJpdmF0ZSBjcm9zcy1zaWduaW5nIGtleXMwRxAANAAAAIEA +AAAEAAAABAAAAJwAAABAQhAAdAAAADYGAAAmAAAAQEIQAHQAAAAZBAAAOQAAAEBCEAB0AAAAKAQA +ADkAAABAQhAAdAAAAKIDAABBAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21h +dHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGst +Y3J5cHRvL3NyYy9iYWNrdXBzL21vZC5ycwAAvEcQAHYAAAAmAgAABwAAAENhbid0IHNlcmlhbGl6 +ZSBhIGJhY2tlZCB1cCByb29tIGtlebxHEAB2AAAAOAIAAC4AAAC8RxAAdgAAAPkBAABWAAAAvEcQ +AHYAAAAAAgAADQAAAFRyeWluZyB0byBiYWNrdXAgcm9vbSBrZXlzIGJ1dCB0aGUgYmFja3VwIGtl +eSB3YXNuJ3QgdXBsb2FkZWQAAACYSBAAPQAAALxHEAB2AAAA+wEAAA0AAABUcnlpbmcgdG8gYmFj +a3VwIHJvb20ga2V5cyBidXQgbm8gYmFja3VwIGtleSB3YXMgZm91bmQAAPBIEAA2AAAAvEcQAHYA +AAAIAgAADQAAAE5vIHJvb20ga2V5cyBuZWVkIHRvIGJlIGJhY2tlZCB1cAAAAEBJEAAhAAAAgQAA +AAQAAAAEAAAAnQAAALxHEAB2AAAADwIAAAkAAABTdWNjZXNzZnVsbHkgY3JlYXRlZCBhIHJvb20g +a2V5cyBiYWNrdXAgcmVxdWVzdACMSRAALwAAALxHEAB2AAAASgEAAAkAAABWZXJpZnlpbmcgYmFj +a3VwIGF1dGggZGF0YQAA1EkQABoAAACBAAAABAAAAAQAAACeAAAAvEcQAHYAAABJAQAAOgAAALxH +EAB2AAAAlwEAAAUAAAC8RxAAdgAAAJkBAAAJAAAARGlzYWJsaW5nIGtleSBiYWNrdXAgYW5kIHJl +c2V0dGluZyBiYWNrdXAgc3RhdGUgZm9yIHJvb20ga2V5cwAAADhKEAA9AAAAvEcQAHYAAACgAQAA +CQAAAERvbmUgZGlzYWJsaW5nIGJhY2t1cAAAAJBKEAAVAAAAvEcQAHYAAAC0AQAAUQAAALxHEAB2 +AAAAjwEAAFQAAAC8RxAAdgAAAIgBAAANAAAAVHJpZWQgdG8gYWN0aXZhdGUgYSBiYWNrdXAgd2l0 +aG91dCBoYXZpbmcgdGhlIGJhY2t1cCBrZXkgdXBsb2FkZWQAAADgShAAQQAAAIEAAAAEAAAABAAA +AJ8AAAC8RxAAdgAAAIMBAABiAAAAvEcQAHYAAACGAQAADQAAAEFjdGl2YXRlZCBhIGJhY2t1cAAA +XEsQABIAAAC8RxAAdgAAAK0BAAAnAAAAvEcQAHYAAAAZAQAAEQAAAEVycm9yIHdoaWxlIHZlcmlm +eWluZyBiYWNrdXAsIGNhbid0IGNhbm9uaWNhbGl6ZSBhdXRoIGRhdGEAAJhLEAA6AAAAgQAAAAQA +AAAEAAAAoAAAALxHEAB2AAAAFQEAADoAAAC8RxAAdgAAANsAAABMAAAAvEcQAHYAAACYAAAAGQAA +ALxHEAB2AAAAUgIAADgAAAC8RxAAdgAAAKgAAAAzAAAAvEcQAHYAAAACAQAAMwAAALxHEAB2AAAA +BwEAAAkAAABDaGVja2luZyBiYWNrdXAgYXV0aCBkYXRhIGZvciBkZXZpY2VcTBAAJAAAALxHEAB2 +AAAADAEAAA0AAABEZXZpY2Ugbm90IGZvdW5kLCBjYW4ndCBjaGVjayBzaWduYXR1cmUAmEwQACcA +AAC8RxAAdgAAALwBAABUAAAAvEcQAHYAAADAAQAADQAAAEJhY2tpbmcgdXAsIHJldHVybmluZyBh +biBleGlzdGluZyByZXF1ZXN0AAAA6EwQACkAAAC8RxAAdgAAAMQBAAANAAAAQmFja2luZyB1cCwg +Y3JlYXRpbmcgYSBuZXcgcmVxdWVzdAAALE0QACIAAAC8RxAAdgAAAI8AAAApAAAAL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9iYWNrdXBzL2tleXMvYmFja3Vw +LnJzAABoTRAAfgAAAGUAAABXAAAAQ2FuJ3Qgc2VyaWFsaXplIGV4cG9ydGVkIHJvb20ga2V5AAAA +aE0QAH4AAABzAAAANQAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgt +cnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0 +by9zcmMvbWFjaGluZS5ycwAALE4QAHIAAACxBgAABQAAAIEAAAAEAAAABAAAAKEAAAAsThAAcgAA +AG4BAABFAAAALE4QAHIAAADJBgAABQAAACxOEAByAAAAdgEAAEwAAAAsThAAcgAAALIDAAAvAAAA +LE4QAHIAAAC9AgAAVQAAACxOEAByAAAAlgMAAFEAAAAsThAAcgAAAO0GAAAFAAAALE4QAHIAAACr +AQAAUAAAACxOEAByAAAAnwUAACcAAAAsThAAcgAAACYHAABEAAAALE4QAHIAAACcAgAABQAAACxO +EAByAAAA8gEAABgAAAAsThAAcgAAALsEAAAFAAAALE4QAHIAAABNBwAARwAAACxOEAByAAAAgAYA +ABoAAAAsThAAcgAAAIgGAAAaAAAALE4QAHIAAACIAwAANwAAACxOEAByAAAAHwUAAEMAAAAsThAA +cgAAADMCAAA1AAAALE4QAHIAAABQAgAADQAAAFRyeWluZyB0byB1cGxvYWQgdGhlIGV4aXN0aW5n +IGNyb3NzIHNpZ25pbmcgaWRlbnRpdHkAUBAANAAAACxOEAByAAAAOAIAAA0AAABDcmVhdGluZyBu +ZXcgY3Jvc3Mgc2lnbmluZyBpZGVudGl0eQBMUBAAIwAAAENvdWxkbid0IGNyZWF0ZSBhIHB1Ymxp +YyB2ZXJzaW9uIG9mIHRoZSBpZGVudGl0eSBmcm9tIGEgbmV3IHByaXZhdGUgaWRlbnRpdHksThAA +cgAAAEICAAA+AAAAQ2FuJ3Qgc2lnbiBkZXZpY2Uga2V5cwAALE4QAHIAAABXAgAAEgAAACxOEABy +AAAA1AQAADsAAAAsThAAcgAAAO0EAAANAAAARXJyb3IgbWFya2luZyBhIHRyYWNrZWQgdXNlciBh +cyBjaGFuZ2VkABxREAAnAAAALE4QAHIAAAAxBwAAYQAAACxOEAByAAAARgcAADgAAAAsThAAcgAA +ALgFAAAnAAAALE4QAHIAAADJAwAAZAAAACxOEAByAAAAXQYAACcAAAAsThAAcgAAAPYFAAAsAAAA +LE4QAHIAAABzBQAAWAAAACxOEAByAAAAfAUAAA0AAABObyBtaXNzaW5nIHJlcXVlc3RzIHRvIHF1 +ZXJ5zFEQABwAAAAsThAAcgAAAI0FAAANAAAAUmVxdWVzdGluZyBtaXNzaW5nIHNlY3JldHMAAABS +EAAaAAAALE4QAHIAAACKBQAADQAAAFRoZSBtaXNzaW5nIHNlY3JldHMgaGF2ZSBhbHJlYWR5IGJl +ZW4gcmVxdWVzdGVkADRSEAAvAAAALE4QAHIAAABbBwAAVQAAACxOEAByAAAAawcAABEAAABDb3Vs +ZG4ndCBzaWduIHRoZSBtZXNzYWdlIHVzaW5nIHRoZSBjcm9zcyBzaWduaW5nIG1hc3RlciBrZXmM +UhAAPAAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29z +c2lwaW5nL21hY2hpbmUucnPQUhAAfAAAAI4AAABeAAAA0FIQAHwAAACmAAAAOQAAANBSEAB8AAAA +qQAAADEAAADQUhAAfAAAALAAAAAOAAAA0FIQAHwAAADnAAAARgAAANBSEAB8AAAA4wAAACIAAACX +AAAADAAAAAQAAACiAAAAowAAAKQAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQg +YW4gZXJyb3IgdW5leHBlY3RlZGx5AIsAAAAAAAAAAQAAAKUAAAAvcnVzdGMvYWVkZDE3M2EyYzA4 +NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMA +DFQQAEsAAAAzCgAADgAAAIsAAAAAAAAAAQAAAKYAAACnAAAABAAAAAQAAACoAAAAqQAAAAQAAAAE +AAAAqgAAAIsAAAAAAAAAAQAAAKsAAACsAAAAJAAAAAQAAAB8AAAAY2FsbGVkIGBSZXN1bHQ6OnVu +d3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQCtAAAACAAAAAQAAACuAAAArwAAAAgAAAAEAAAArgAA +ALAAAAAIAAAABAAAAK4AAACxAAAACAAAAAQAAACuAAAAsgAAAAgAAAAEAAAArgAAAK0AAAAIAAAA +BAAAAK4AAACzAAAACAAAAAQAAAC0AAAArQAAAAgAAAAEAAAArgAAAK0AAAAIAAAABAAAAK4AAACt +AAAACAAAAAQAAACuAAAARXJyb3IvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl +eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMvbXV0ZXgu +cnMAAACJVRAAYAAAALIBAAAzAAAAiVUQAGAAAACzAQAAGwAAAIlVEABgAAAAiwIAAB0AAACJVRAA +YAAAAJECAAANAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVz +LmlvLTZmMTdkMjJiYmExNTAwMWYvdG9raW8tMS4zNi4wL3NyYy9zeW5jL3J3bG9jay5ycwAAACxW +EABhAAAAQQIAAEkAAAAsVhAAYQAAAEUCAAAbAAAALFYQAGEAAABJAgAAEQAAACxWEABhAAAAiQMA +AEsAAAAsVhAAYQAAAI0DAAAbAAAALFYQAGEAAACRAwAAEQAAACxWEABhAAAAsAEAADgAAAAsVhAA +YQAAALEBAAAbAAAALFYQAGEAAAC1AQAAEQAAACxWEABhAAAABQMAADoAAAAsVhAAYQAAAAYDAAAb +AAAALFYQAGEAAAAKAwAAEQAAAE5vbmVTb21lgQAAAAQAAAAEAAAAtQAAAEFib3J0ZWRUcnlGcm9t +SW50RXJyb3IAAIEAAAAEAAAABAAAALYAAAC3AAAAVW5zdXBwb3J0ZWRBbGdvcml0aG1JbnZhbGlk +S2V5SWSBAAAABAAAAAQAAAC4AAAATWlzc2luZ1NpZ25pbmdLZXlVc2VySWRNaXNtYXRjaE5vdEFu +T2JqZWN0Tm9TaWduYXR1cmVGb3VuZFZlcmlmaWNhdGlvbkVycm9yAIEAAAAEAAAABAAAALkAAABJ +bnZhbGlkS2V5AACBAAAABAAAAAQAAAC6AAAASW52YWxpZFNpZ25hdHVyZVNpZ25pbmdLZXlDaGFu +Z2VkAAAAuwAAAAQAAAAEAAAAvAAAAIEAAAAEAAAABAAAAL0AAABKc29uRXJyb3IAAACBAAAABAAA +AAQAAAC+AAAAU3RvcmVFcnJvcgAAgQAAAAQAAAAEAAAAvwAAAC9ob21lL3J1bm5lci8uY2FyZ28v +cmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24t +MS4wLjExNS9zcmMvc2VyLnJzALhYEABfAAAAogIAACoAAAC4WBAAXwAAAPoBAAAqAAAAuFgQAF8A +AAAIAgAAKgAAAEFjY291bnRVbnNldE1pc21hdGNoZWRBY2NvdW50ZXhwZWN0ZWQAAADAAAAAEAAA +AAQAAADBAAAAZ290AIEAAAAEAAAABAAAAMIAAABJbwAAgQAAAAQAAAAEAAAAwwAAAFVucGlja2xp +bmdFcnJvclBpY2tsZQAAAIEAAAAEAAAABAAAAMQAAABTZXNzaW9uQ3JlYXRpb24AgQAAAAQAAAAE +AAAAxQAAAElkZW50aWZpZXJWYWxpZGF0aW9uU2VyaWFsaXphdGlvbgAAAIEAAAAEAAAABAAAAMYA +AABVbnN1cHBvcnRlZERhdGFiYXNlVmVyc2lvbgAAgQAAAAQAAAAEAAAAxwAAAIEAAAAEAAAABAAA +AMgAAABCYWNrZW5kAIEAAAAEAAAABAAAAMkAAABJbnZhbGlkTG9ja0dlbmVyYXRpb24AAACBAAAA +BAAAAAQAAADKAAAAc3JjL21hY2hpbmUucnMAAKBaEAAOAAAAzQUAAEsAAABQcm9ncmVzcyBsaXN0 +ZW5lciBwYXNzZWQgdG8gYGltcG9ydEV4cG9ydGVkUm9vbUtleXNgIGZhaWxlZACgWhAADgAAANMF +AAAWAAAAoFoQAA4AAABEBgAAAQAAAHNyYy9kZXZpY2UucnMAAAAcWxAADQAAACQAAAAeAAAAHFsQ +AA0AAABXAAAAGwAAABxbEAANAAAAzwAAABsAAABzcmMvaWRlbnRpdGllcy5ycwAAAFxbEAARAAAA +NQAAABsAAABcWxAAEQAAAEMAAAAeAAAAXFsQABEAAABbAAAAGwAAAFxbEAARAAAAmgAAABsAAABc +WxAAEQAAAK0AAABGAAAAXFsQABEAAADEAAAAHgAAAKBaEAAOAAAAsAAAABsAAACgWhAADgAAAN4A +AAAeAAAAoFoQAA4AAAAAAQAAGwAAAKBaEAAOAAAARQEAAB4AAACgWhAADgAAAGsBAAAbAAAAoFoQ +AA4AAACPAQAAHgAAAKBaEAAOAAAAwgEAAB4AAACgWhAADgAAAAUCAAAeAAAAoFoQAA4AAAAUAgAA +OQAAAKBaEAAOAAAAJAIAABsAAACgWhAADgAAADwCAAAbAAAAoFoQAA4AAABZAgAAGwAAAKBaEAAO +AAAAaAIAABsAAACgWhAADgAAAHgCAAANAAAAoFoQAA4AAACGAgAAGwAAAKBaEAAOAAAApAIAABsA +AACgWhAADgAAAO4CAAAbAAAAoFoQAA4AAAAXAwAANQAAAKBaEAAOAAAAOwMAADgAAACgWhAADgAA +AHoDAAAeAAAAoFoQAA4AAACMAwAAGwAAAKBaEAAOAAAAtAMAAB4AAABpbXBvcnRlZF9jb3VudAAA +oFoQAA4AAAC5AwAAJwAAAHRvdGFsX2NvdW50AKBaEAAOAAAA1AMAAB4AAACgWhAADgAAAA4EAAAe +AAAAUHJvZ3Jlc3MgbGlzdGVuZXIgcGFzc2VkIHRvIGBpbXBvcnRCYWNrZWRVcFJvb21LZXlzYCBm +YWlsZWQAoFoQAA4AAAAdBAAAHgAAAKBaEAAOAAAANQQAABsAAACgWhAADgAAAEEEAAAbAAAAoFoQ +AA4AAABhBAAAHgAAAKBaEAAOAAAAewQAAB4AAACgWhAADgAAAIsEAAAbAAAAoFoQAA4AAACbBAAA +GwAAAKBaEAAOAAAAqQQAABsAAACgWhAADgAAALwEAAAvAAAAoFoQAA4AAABeBQAAGwAAAKBaEAAO +AAAAcgUAABsAAACgWhAADgAAAIsFAAAbAAAAc3JjL3ZlcmlmaWNhdGlvbi5ycwB4XhAAEwAAAPIA +AAAbAAAAeF4QABMAAAD5AwAAGwAAAEZhaWxlZCB0byBidWlsZCB0aGUgb3V0Z29pbmcgdmVyaWZp +Y2F0aW9uIHJlcXVlc3QAAAB4XhAAEwAAABwEAAAbAAAAeF4QABMAAAAsBAAADQAAAH1mYWxzZXRy +dWVudWxse0ZpZWxkU2V0IGNvcnJ1cHRlZCAodGhpcyBpcyBhIGJ1ZykvaG9tZS9ydW5uZXIvLmNh +cmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRm +Ny9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lkZW50aXRpZXMvZGV2aWNlLnJzAAAAMV8Q +AHwAAAC7AgAADQAAAFRyeWluZyB0byBmaW5kIGFuIE9sbSBzZXNzaW9uIG9mIGEgZGV2aWNlLCBi +dXQgdGhlIGRldmljZSBkb2Vzbid0IGhhdmUgYSBDdXJ2ZTI1NTE5IGtleQDAXxAAVwAAANIAAAAY +AAAABAAAAIIAAAAxXxAAfAAAAK8CAAAlAAAAYGFzeW5jIGZuYCByZXN1bWVkIGFmdGVyIGNvbXBs +ZXRpb24AMV8QAHwAAAASAwAABQAAANIAAAAEAAAABAAAAIQAAADSAAAABAAAAAQAAACFAAAA0gAA +AAQAAAAEAAAA0wAAANQAAAAAAAAAAQAAANUAAABtZXNzYWdlX2lkAAAxXxAAfAAAADYDAAANAAAA +VHJ5aW5nIHRvIGVuY3J5cHQgYW4gZXZlbnQgZm9yIGEgZGV2aWNlLCBidXQgbm8gT2xtIHNlc3Np +b24gaXMgZm91bmQuAAAA0GAQAEUAAAAxXxAAfAAAAFEBAABeAAAAMV8QAHwAAACtAQAAQwAAADFf +EAB8AAAAowEAAEMAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1 +c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8v +c3JjL2lkZW50aXRpZXMvbWFuYWdlci5ycwAAAFBhEAB9AAAAGQIAADkAAABQYRAAfQAAAKMBAAAu +AAAAUGEQAH0AAACpAQAADQAAAFJlbW92ZWQgc29tZSBvciBhbGwgb2Ygb3VyIHByaXZhdGUgY3Jv +c3Mgc2lnbmluZyBrZXlzAAAAAGIQADUAAADSAAAABAAAAAQAAADWAAAAUGEQAH0AAACzAQAAEQAA +AE1hcmtlZCBvdXIgb3duIGlkZW50aXR5IGFzIHZlcmlmaWVkAGBiEAAjAAAAUGEQAH0AAADgAQAA +NwAAAFBhEAB9AAAA1QIAAE4AAABQYRAAfQAAAIwCAAAFAAAAUGEQAH0AAACXAgAADQAAAFVzZXIg +SUQgbWlzbWF0Y2ggaW4gb25lIG9mIHRoZSBjcm9zcyBzaWduaW5nIGtleXMAAADMYhAAMQAAAFBh +EAB9AAAApQIAABUAAABVcGRhdGVkIGEgdXNlciBpZGVudGl0eQAYYxAAFwAAANIAAAAEAAAABAAA +ANcAAABQYRAAfQAAAKkCAAAVAAAAUmVjZWl2ZWQgYW4gdW5jaGFuZ2VkIHVzZXIgaWRlbnRpdHkA +WGMQACMAAABQYRAAfQAAAK0CAAAVAAAAQ291bGRuJ3QgdXBkYXRlIGFuIGV4aXN0aW5nIHVzZXIg +aWRlbnRpdHkAAACUYxAAKQAAANIAAAAEAAAABAAAAKAAAABQYRAAfQAAALcCAAAVAAAAQ3JlYXRl +ZCBuZXcgdXNlciBpZGVudGl0eQAAAOhjEAAZAAAAUGEQAH0AAAC7AgAAFQAAAENvdWxkbid0IGNy +ZWF0ZSBuZXcgdXNlciBpZGVudGl0eQAAABxkEAAhAAAAUGEQAH0AAAB8AAAACQAAAEhhbmRsaW5n +IGEgYC9rZXlzL3F1ZXJ5YCByZXNwb25zZQAAAFhkEAAhAAAA0gAAAAQAAAAEAAAA2AAAANIAAAAE +AAAABAAAANkAAADSAAAABAAAAAQAAADaAAAAUGEQAH0AAAB7AAAANgAAAFBhEAB9AAAA0QAAAAkA +AABGaW5pc2hlZCBoYW5kbGluZyBvZiB0aGUgYC9rZXlzL3F1ZXJ5YCByZXNwb25zZQDUZBAALwAA +ANIAAAAEAAAABAAAAI4AAADSAAAABAAAAAQAAACPAAAAUGEQAH0AAAB9AQAAJQAAAFBhbmljIHdo +aWxlIHVwZGF0aW5nIHVzZXIgZGV2aWNlcwAAAFBhEAB9AAAAhwEAACoAAABQYRAAfQAAAH4DAABU +AAAAUGEQAH0AAAC0AwAADQAAAE5vdCB3YWl0aW5nIGZvciBgL2tleXMvcXVlcnlgIGZvciB1c2Vy +cyB3aG9zZSBzZXJ2ZXIgaGFzIHByZXZpb3VzbHkgZmFpbGVkAACQZRAASgAAANIAAAAEAAAABAAA +ANsAAABQYRAAfQAAANMDAAARAAAAV2FpdGVkIGZvciBgL2tleXMvcXVlcnlgIHRvIGNvbXBsZXRl +IGZvciB1c2VycyB3aG8gaGF2ZSBubyBkZXZpY2VzAAAEZhAAQgAAAC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21vZC5ycwBQZhAAewAA +AH4AAAA7AAAAUGYQAHsAAACsAAAARQAAAFBmEAB7AAAAngAAAFgAAABQZhAAewAAAI4AAAA8AAAA +UGYQAHsAAACHAAAAQwAAAFBmEAB7AAAA+gEAADcAAABQZhAAewAAAA0CAAAZAAAAQ2FuJ3Qgc2ln +biB0aGUgZGV2aWNlIGtleXMgZm9yICAsIG5vIHByaXZhdGUgZGV2aWNlIHNpZ25pbmcga2V5IGZv +dW5kAAAAPGcQAB8AAABbZxAAAQAAAFxnEAAlAAAAUGYQAHsAAAAXAgAAGQAAAEVycm9yIHNpZ25p +bmcgZGV2aWNlIGtleXM6IACsZxAAGwAAAFBmEAB7AAAAMAIAABkAAABDYW4ndCBzaWduIHRoZSBw +dWJsaWMgY3Jvc3Mgc2lnbmluZyBrZXlzLCBubyBwcml2YXRlIHVzZXIgc2lnbmluZyBrZXkgZm91 +bmQA4GcQAEsAAABQZhAAewAAADgCAAAZAAAARXJyb3Igc2lnbmluZyB0aGUgcHVibGljIGNyb3Nz +IHNpZ25pbmcga2V5czogAAAARGgQAC0AAABQZhAAewAAALECAAA7AAAAUGYQAHsAAADTAgAADQAA +AFRoZSBpbnRlcmFjdGl2ZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBkaWRuJ3QgdmVyaWZ5IHRoZSBk +ZXZpY2UAAACcaBAAPQAAAFBmEAB7AAAAyQIAAA0AAABNYXJraW5nIGRldmljZSBhcyB2ZXJpZmll +ZC4A9GgQABsAAABQZhAAewAAAL8CAAANAAAAVGhlIGRldmljZSBrZXlzIGhhdmUgY2hhbmdlZCB3 +aGlsZSBhbiBpbnRlcmFjdGl2ZSB2ZXJpZmljYXRpb24gd2FzIGdvaW5nIG9uLCBub3QgbWFya2lu +ZyB0aGUgZGV2aWNlIGFzIHZlcmlmaWVkLihpEABwAAAAUGYQAHsAAAC2AgAADQAAAFRoZSBkZXZp +Y2Ugd2FzIGRlbGV0ZWQgd2hpbGUgYW4gaW50ZXJhY3RpdmUgdmVyaWZpY2F0aW9uIHdhcyBnb2lu +ZyBvbi4AALBpEABGAAAAUGYQAHsAAABlAgAAXQAAAFBmEAB7AAAAcgIAAEsAAABQZhAAewAAAJwC +AAARAAAAVGhlIG1hc3RlciBrZXlzIG9mIHRoZSB1c2VyIGhhdmUgY2hhbmdlZCB3aGlsZSBhbiBp +bnRlcmFjdGl2ZSB2ZXJpZmljYXRpb24gd2FzIGdvaW5nIG9uLCBub3QgbWFya2luZyB0aGUgaWRl +bnRpdHkgYXMgdmVyaWZpZWQuAAAwahAAfgAAAFBmEAB7AAAAkgIAABUAAABUaGUgaW50ZXJhY3Rp +dmUgdmVyaWZpY2F0aW9uIHByb2Nlc3MgZGlkbid0IHZlcmlmeSB0aGUgdXNlciBpZGVudGl0eSBv +ZiB0aGUgdXNlciB0aGF0IHBhcnRpY2lwYXRlZCBpbiB0aGUgaW50ZXJhY3RpdmUgdmVyaWZpY2F0 +aW9uAADIahAAggAAAFBmEAB7AAAAhAIAABUAAABNYXJraW5nIHRoZSB1c2VyIGlkZW50aXR5IG9m +IGFzIHZlcmlmaWVkLgAAAGRrEAApAAAAUGYQAHsAAAClAgAADQAAAFRoZSBpZGVudGl0eSBvZiB0 +aGUgdXNlciB3YXMgZGVsZXRlZCB3aGlsZSBhbiBpbnRlcmFjdGl2ZSB2ZXJpZmljYXRpb24gd2Fz +IGdvaW5nIG9uLqhrEABUAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJp +eC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5 +cHRvL3NyYy92ZXJpZmljYXRpb24vc2FzL21vZC5ycwAEbBAAfwAAABgCAABdAAAAL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcXJjb2Rl +LnJzAACUbBAAfgAAAHIBAAAHAAAAlGwQAH4AAACNAQAABwAAAC9ob21lL3J1bm5lci8uY2FyZ28v +Z2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2Ny +YXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21hY2hpbmUucnMANG0QAH8A +AAAdAQAAJwAAADRtEAB/AAAANQEAAAUAAAA0bRAAfwAAAFYBAAARAAAAUmVjZWl2ZWQgYSBuZXcg +dmVyaWZpY2F0aW9uIHJlcXVlc3QA5G0QACMAAADSAAAACAAAAAQAAACGAAAANG0QAH8AAABkAQAA +FQAAAFRoZSByZWNlaXZlZCB2ZXJpZmljYXRpb24gcmVxdWVzdCB3YXMgdG9vIG9sZCBvciB0b28g +ZmFyIGludG8gdGhlIGZ1dHVyZTBuEABIAAAA0gAAAAQAAAAEAAAAhwAAADRtEAB/AAAAbQEAABUA +AABUaGUgcmVjZWl2ZWQgdmVyaWZpY2F0aW9uIHJlcXVlc3Qgd2FzIHNlbnQgYnkgdXMsIGlnbm9y +aW5nIGl0AAAAoG4QAD0AAAA0bRAAfwAAAFwBAAAVAAAAVGhlIGtleSB2ZXJpZmljYXRpb24gcmVx +dWVzdCBkaWRuJ3QgY29udGFpbiBhIHZhbGlkIHRpbWVzdGFtcAAAAPhuEAA9AAAANG0QAH8AAABC +AQAADQAAAFJlY2VpdmVkIGEgdmVyaWZpY2F0aW9uIGV2ZW50IHdpdGggYSBtaXNtYXRjaGVkIGZs +b3cgaWQsIHRoZSB2ZXJpZmljYXRpb24gb2JqZWN0IHdhcyBjcmVhdGVkIGZvciBhIGluLXJvb20g +dmVyaWZpY2F0aW9uIGJ1dCBhbiBldmVudCB3YXMgcmVjZWl2ZWQgb3ZlciB0by1kZXZpY2UgbWVz +c2FnaW5nIG9yIHZpY2UgdmVyc2FQbxAAuAAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL3JlcXVlc3RzLnJzEHAQAIAAAABDBQAABQAA +AFJlY2VpdmVkIGEgbmV3IHZlcmlmaWNhdGlvbiBzdGFydCBldmVudACgcBAAJwAAABBwEACAAAAA +QgUAAEMAAAAQcBAAgAAAAEoFAAAJAAAAUmVjZWl2ZWQgYSBrZXkgdmVyaWZpY2F0aW9uIHN0YXJ0 +IGV2ZW50IGZyb20gYW4gdW5rbm93biBkZXZpY2UAAPBwEAA+AAAAEHAQAIAAAACKBQAAHQAAAFN0 +YXJ0ZWQgYSBuZXcgU0FTIHZlcmlmaWNhdGlvbi4ASHEQAB8AAAAQcBAAgAAAAG4FAAAhAAAAU3Rh +cnRlZCBhIG5ldyBTQVMgdmVyaWZpY2F0aW9uLCByZXBsYWNpbmcgYW4gYWxyZWFkeSBzdGFydGVk +IG9uZS4AAACAcRAAQQAAABBwEACAAAAAcgUAACEAAABJZ25vcmVkIGluY29taW5nIFNBUyB2ZXJp +ZmljYXRpb24gZnJvbSBsZXhpY29ncmFwaGljYWxseSBsYXJnZXIgdXNlci9kZXZpY2UgSUQuANxx +EABPAAAAEHAQAIAAAAB8BQAAIQAAAFRyYW5zaXRpb25lZCBmcm9tIFFSIGRpc3BsYXkgdG8gU0FT +AERyEAAjAAAAEHAQAIAAAACEBQAAIQAAAEludmFsaWQgdHJhbnNpdGlvbiBmcm9tIFFSIHRvIFNB +UwAAAIByEAAhAAAA0gAAAAQAAAAEAAAA3AAAABBwEACAAAAAkQUAABUAAABDYW4ndCBzdGFydCBr +ZXkgdmVyaWZpY2F0aW9uLCBjYW5jZWxpbmcuzHIQACgAAADSAAAABAAAAAQAAADdAAAAEHAQAIAA +AACqBQAAEQAAAFJlY2VpdmVkIGEgUVIgY29kZSByZWNpcHJvY2F0aW9uHHMQACAAAADSAAAABAAA +AAQAAADeAAAAEHAQAIAAAAC3BQAADQAAAFJlY2VpdmVkIGEga2V5IHZlcmlmaWNhdGlvbiBzdGFy +dCBldmVudCB3aXRoIGFuIHVuc3VwcG9ydGVkIG1ldGhvZAAAZHMQAEIAAADSAAAABAAAAAQAAADf +AAAAEHAQAIAAAADIAgAAEQAAAFJlY2VpdmVkIGEga2V5IHZlcmlmaWNhdGlvbiBzdGFydCBldmVu +dCBidXQgd2UncmUgbm90IHlldCBpbiB0aGUgcmVhZHkgc3RhdGXQcxAATAAAABBwEACAAAAAvwIA +ACcAAAAQcBAAgAAAAAsGAABHAAAAEHAQAIAAAAA+BgAARwAAAC9ob21lL3J1bm5lci8uY2FyZ28v +Z2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2Ny +YXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL2dyb3VwX3Nlc3Npb25z +LnJzAAAAVHQQAIkAAABGAAAALwAAAFR0EACJAAAAQwAAAFcAAABUdBAAiQAAAE0AAABYAAAAVHQQ +AIkAAABTAAAAJwAAAFR0EACJAAAAWQAAABEAAABDb3VsZG4ndCByZXN0b3JlIGFuIG91dGJvdW5k +IGdyb3VwIHNlc3Npb246IDB1EAAsAAAAVHQQAIkAAACnAAAAXQAAAFR0EACJAAAAuAAAABUAAABN +YXJraW5nIHRvLWRldmljZSBubyBvbG0gYXMgc2VudCBidXQgZGV2aWNlIG5vdCBmb3VuZCwgbWln +aHQgaGF2ZSBiZWVuIGRlbGV0ZWQ/AIR1EABPAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvc2Vzc2lvbnMucnMA3HUQAIMAAADv +AQAAXwAAANx1EACDAAAACgIAABkAAABUcmllZCB0byBjcmVhdGUgYW4gT2xtIHNlc3Npb24gYnV0 +IHRoZSBkZXZpY2UgaXMgdW5rbm93boB2EAA4AAAA0gAAAAQAAAAEAAAA4AAAANIAAAAEAAAABAAA +AOEAAADcdRAAgwAAADICAAAVAAAARXJyb3Igd2hpbGUgdHJlYXRpbmcgYW4gdW53ZWRnZWQgZGV2 +aWNlOiAAAADwdhAAKQAAANx1EACDAAAAHwIAABkAAABFcnJvciBjcmVhdGluZyBPbG0gc2Vzc2lv +bgAANHcQABoAAADSAAAABAAAAAQAAADiAAAA3HUQAIMAAAAmAgAAHgAAANx1EACDAAAAEgIAABkA +AABUcmllZCB0byBjcmVhdGUgYW4gT2xtIHNlc3Npb24sIGJ1dCB3ZSBjYW4ndCBmZXRjaCB0aGUg +ZGV2aWNlIGZyb20gdGhlIHN0b3JliHcQAEwAAADSAAAABAAAAAQAAACDAAAA3HUQAIMAAABCAgAA +CQAAAEVzdGFibGlzaGVkIG5ldyBPbG0gc2Vzc2lvbnP8dxAAHAAAANIAAAAEAAAABAAAAOMAAADc +dRAAgwAAAEUCAABCAAAA3HUQAIMAAABTAgAAEQAAAEVycm9yIHdoaWxlIHRyeWluZyB0byBjb2xs +ZWN0IHRoZSBpbmNvbWluZyBzZWNyZXQgcmVxdWVzdHMAAFB4EAA6AAAA0gAAAAQAAAAEAAAA5AAA +ANx1EACDAAAAowAAAA4AAADcdRAAgwAAAJ8AAABgAAAAbS5kdW1teQDcdRAAgwAAALkAAAAWAAAA +3HUQAIMAAABpAAAAGgAAANx1EACDAAAAdAAAABUAAABNYXJraW5nIHNlc3Npb24gdG8gYmUgdW53 +ZWRnZWQAAPx4EAAeAAAA0gAAAAQAAAAEAAAA5QAAANx1EACDAAAAgQAAAB4AAADcdRAAgwAAAIcA +AAAeAAAA3HUQAIMAAAC7AQAABQAAANx1EACDAAAA0gEAAAkAAABSZWNlaXZlZCBhIGAva2V5cy9j +bGFpbWAgcmVzcG9uc2UAAAB0eRAAIQAAANIAAAAEAAAABAAAAOYAAAAvaG9tZS9ydW5uZXIvLmNh +cmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRm +Ny9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9ncm91cF9zZXNzaW9ucy9pbmJvdW5k +LnJzAAAAsHkQAIUAAAAhAQAAUAAAAENhbid0IGV4cG9ydCBzZXNzaW9usHkQAIUAAAAlAQAAPgAA +ALB5EACFAAAAAgEAADMAAACweRAAhQAAAG8BAABRAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQv +Y2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVz +L21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vYWNjb3VudC5ycwAAjHoQAHYAAAB0BAAABQAAAIx6 +EAB2AAAAfAQAAA0AAABPbG0gZXZlbnQgZG9lc24ndCBjb250YWluIGEgY2lwaGVydGV4dCBmb3Ig +b3VyIGtleQAAJHsQADIAAACMehAAdgAAAFcEAAAnAAAAjHoQAHYAAABgBAAAFQAAAEFuIE9sbSBt +ZXNzYWdlIGdvdCByZXBsYXllZCwgZGVjcnlwdGlvbiBmYWlsZWQAAIB7EAAuAAAAjHoQAHYAAAC/ +BAAAMgAAAIx6EAB2AAAA3QQAABEAAABGYWlsZWQgdG8gZGVjcnlwdCBhIG5vbi1wcmUta2V5IG1l +c3NhZ2Ugd2l0aCBhbGwgYXZhaWxhYmxlIHNlc3Npb25zANh7EABDAAAA0gAAAAQAAAAEAAAA5wAA +AIx6EAB2AAAADwUAABkAAABGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IE9sbSBzZXNzaW9uIGZyb20g +YSBwcmUta2V5IG1lc3NhZ2U6IABEfBAAOwAAAIx6EAB2AAAA/wQAABkAAABGYWlsZWQgdG8gZGVj +cnlwdCBhIHByZS1rZXkgbWVzc2FnZSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHNlc3Npb24AAJh8 +EABCAAAAjHoQAHYAAACKBAAABQAAANIAAAAEAAAABAAAAOgAAACMehAAdgAAAJAEAAAJAAAARGVj +cnlwdGluZyBhIHRvLWRldmljZSBldmVudBR9EAAcAAAAjHoQAHYAAACbBAAAEQAAAEVycm9yIGRl +Y3J5cHRpbmcgYW4gdG8tZGV2aWNlIGV2ZW50LCB1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29y +aXRobQAAAEh9EABFAAAAjHoQAHYAAAAmBQAABQAAANIAAAAEAAAABAAAAOkAAACMehAAdgAAADEF +AAAJAAAAU3VjY2Vzc2Z1bGx5IGRlY3J5cHRlZCBhbiBPbG0gbWVzc2FnZQAAAMh9EAAlAAAAjHoQ +AHYAAAA/BQAAEQAAAEEgdG8tZGV2aWNlIG1lc3NhZ2Ugd2FzIHN1Y2Nlc3NmdWxseSBkZWNyeXB0 +ZWQgYnV0IHBhcnNpbmcgYW5kIGNoZWNraW5nIHRoZSBldmVudCBmaWVsZHMgZmFpbGVkAAh+EABf +AAAAjHoQAHYAAABkBQAAJgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRy +aXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNy +eXB0by9zcmMvb2xtL3Nlc3Npb24ucnMAAIB+EAB2AAAAfgAAAFIAAACAfhAAdgAAAIIAAAAJAAAA +U3VjY2Vzc2Z1bGx5IGVuY3J5cHRlZCBhbiBldmVudAAYfxAAHwAAANIAAAAEAAAABAAAAOoAAACA +fhAAdgAAAFIAAABeAAAAc2Vzc2lvbl9pZAAAgH4QAHYAAABXAAAACQAAAERlY3J5cHRlZCBhbiBP +bG0gbWVzc2FnZXx/EAAYAAAAc2VuZGVyAACAfhAAdgAAAJ0AAAAbAAAAc2VuZGVyX2RldmljZWVk +MjU1MTlyZWNpcGllbnRyZWNpcGllbnRfa2V5c2NvbnRlbnQAAIB+EAB2AAAAmAAAADgAAABpbnRl +cm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlgH4QAHYAAAC/AAAAEgAAAIB+EAB2 +AAAAawAAAD8AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qt +c2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3Jj +L29sbS9zaWduaW5nL21vZC5ycwAAQIAQAHoAAADNAQAAOQAAAECAEAB6AAAAxgAAAFMAAABAgBAA +egAAANoAAAAoAAAAQIAQAHoAAACcAAAAMAAAAECAEAB6AAAAoQAAADAAAABAgBAAegAAAOsAAAAo +AAAAQIAQAHoAAACXAAAAMgAAAECAEAB6AAAAQwEAABUAAABAgBAAegAAAN8BAAA5AAAAQIAQAHoA +AACwAAAAQwAAAECAEAB6AAAAbAEAAEcAAABAgBAAegAAALUAAABOAAAAQIAQAHoAAAC6AAAATgAA +AECAEAB6AAAAWAEAABUAAABAgBAAegAAALEBAAA5AAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQv +Y2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVz +L21hdHJpeC1zZGstY3J5cHRvL3NyYy9zdG9yZS9tb2QucnOsgRAAdAAAAGoBAABKAAAArIEQAHQA +AABtAQAAOgAAAKyBEAB0AAAAcgEAAEIAAACsgRAAdAAAAIEAAABRAAAArIEQAHQAAACWAAAAQwAA +AKyBEAB0AAAAvwAAACMAAACsgRAAdAAAAHYAAABjAAAArIEQAHQAAACkAQAAKAAAAKyBEAB0AAAA +xAEAAC0AAACsgRAAdAAAALkBAAA9AAAArIEQAHQAAAC/AQAAKgAAAC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvY3J5cHRvX3N0b3JlX3dyYXBwZXIu +cnMAAADQghAAhQAAAEIAAABNAAAArIEQAHQAAABNAQAASwAAAKyBEAB0AAAATwEAACoAAACsgRAA +dAAAAB8BAAAVAAAArIEQAHQAAAAkAQAAQQAAAKyBEAB0AAAAVAQAACEAAACsgRAAdAAAAKoDAABA +AAAArIEQAHQAAABmBAAAYQAAAKyBEAB0AAAA0AMAAE0AAACsgRAAdAAAAJMEAAARAAAAVW5rbm93 +biBzZWNyZXQgd2FzIHJlcXVlc3RlZPiDEAAcAAAA0gAAAAQAAAAEAAAAlgAAAKyBEAB0AAAAgwQA +ADMAAACsgRAAdAAAAOcEAAARAAAAVHJpZWQgdG8gaW1wb3J0IGFuIHVua25vd24gc2VjcmV0AAAA +TIQQACEAAACsgRAAdAAAAMMEAABiAAAArIEQAHQAAADUBAAAFQAAAFN1Y2Nlc3NmdWxseSBpbXBv +cnRlZCBhIHByaXZhdGUgY3Jvc3Mgc2lnbmluZyBrZXkAAACYhBAAMQAAANIAAAAEAAAABAAAAOsA +AACsgRAAdAAAAMoDAABSAAAArIEQAHQAAAA8BAAAWgAAAKyBEAB0AAAAtwMAACUAAACsgRAAdAAA +AA8EAAApAAAArIEQAHQAAADdAwAAIgAAAKyBEAB0AAAAMwQAACEAAACsgRAAdAAAABkEAAA5AAAA +rIEQAHQAAAAoBAAAOQAAAKyBEAB0AAAAogMAAEEAAABtLnJvb20uZW5jcnlwdGVkbS5zZWNyZXQu +c2VuZG0uZm9yd2FyZGVkX3Jvb21fa2V5L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy9iYWNrdXBzL21vZC5ycwClhRAAdgAAANABAAAnAAAApYUQAHYAAADpAQAA +EQAAAFRyaWVkIHRvIG1hcmsgYSBwZW5kaW5nIGJhY2t1cCBhcyBzZW50IGJ1dCB0aGUgcmVxdWVz +dCBpZCBkaWRuJ3QgbWF0Y2gAADyGEABGAAAA0gAAAAQAAAAEAAAA7AAAAKWFEAB2AAAA3QEAABEA +AABNYXJraW5nIHJvb20ga2V5cyBhcyBiYWNrZWQgdXAAAKyGEAAeAAAA0gAAAAQAAAAEAAAAmwAA +AKWFEAB2AAAA8AEAAA0AAABUcmllZCB0byBtYXJrIGEgcGVuZGluZyBiYWNrdXAgYXMgc2VudCBi +dXQgdGhlcmUgaXNuJ3QgYSBiYWNrdXAgcGVuZGluZwD0hhAARwAAAKWFEAB2AAAA4QEAABEAAABN +YXJrZWQgcm9vbSBrZXlzIGFzIGJhY2tlZCB1cAAAAFSHEAAdAAAAL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzAAB8hxAAcgAAAOMCAAAFAAAA +0gAAAAQAAAAEAAAAmQAAAHyHEAByAAAADAMAABEAAABSZWNlaXZlZCBhIHJvb20ga2V5IGV2ZW50 +IHdoaWNoIGNvbnRhaW5lZCBhbiBpbnZhbGlkIHNlc3Npb24ga2V5OiAAACCIEABCAAAAfIcQAHIA +AAACAwAAFQAAAFJlY2VpdmVkIGEgbWVnb2xtIHJvb20ga2V5IHRoYXQgd2UgYWxyZWFkeSBoYXZl +IGEgYmV0dGVyIHZlcnNpb24gb2YsIGRpc2NhcmRpbmcAfIgQAE8AAAB8hxAAcgAAAP4CAAAVAAAA +UmVjZWl2ZWQgYSBuZXcgbWVnb2xtIHJvb20ga2V5AADkiBAAHgAAAHyHEAByAAAAFAMAAAUAAAB8 +hxAAcgAAACMDAAARAAAAUmVjZWl2ZWQgYSByb29tIGtleSB3aXRoIGFuIHVuc3VwcG9ydGVkIGFs +Z29yaXRobQAAACyJEAAxAAAAfIcQAHIAAAApAwAAXAAAAHyHEAByAAAAKwQAAFsAAAB8hxAAcgAA +ANgCAAAnAAAAfIcQAHIAAABaBAAABQAAAHyHEAByAAAAbQQAAAkAAABSZWNlaXZlZCBhIHRvLWRl +dmljZSBldmVudAAAuIkQABoAAAB8hxAAcgAAAGcEAAARAAAAUmVjZWl2ZWQgYW4gaW52YWxpZCB0 +by1kZXZpY2UgZXZlbnQ6IAAAAOyJEAAlAAAAfIcQAHIAAACeBAAAGQAAAFJlY2VpdmVkIGFuIGlu +dmFsaWQgZW5jcnlwdGVkIHRvLWRldmljZSBldmVudDogACyKEAAvAAAAfIcQAHIAAAB7BAAAIQAA +AENvdWxkbid0IG1hcmsgZGV2aWNlIGZyb20gdG8gYmUgdW53ZWRnZWR0ihAAKAAAAFplcm9pemlu +ZyBhbmQgcmVzZXJpYWxpemluZyBvdXIgZXZlbnRzIHNob3VsZCBhbHdheXMgd29yawAAAHyHEABy +AAAAmgQAAB4AAAB8hxAAcgAAAAkEAABHAAAAfIcQAHIAAAALBAAADQAAAEVycm9yIGhhbmRsaW5n +IGEgdmVyaWZpY2F0aW9uIGV2ZW50OiAAAAAQixAAJQAAAHyHEAByAAAAsQIAADYAAAB8hxAAcgAA +AHYCAABiAAAAfIcQAHIAAAB5AgAAKAAAAHyHEAByAAAAEAQAAGMAAAB8hxAAcgAAANIDAAAFAAAA +fIcQAHIAAADfAwAACQAAAFJlY2VpdmVkIGEgZGVjcnlwdGVkIHRvLWRldmljZSBldmVudKCLEAAk +AAAAfIcQAHIAAAD/AwAAEQAAAFJlY2VpdmVkIGFuIGBtLmR1bW15YCBldmVudADcixAAGwAAAHyH +EAByAAAAAgQAABEAAABSZWNlaXZlZCBhbiB1bmV4cGVjdGVkIGVuY3J5cHRlZCB0by1kZXZpY2Ug +ZXZlbnQQjBAAMAAAAHyHEAByAAAAFQIAAE4AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1jcnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzWIwQAHwAAABAAwAACQAAAFN1 +Y2Nlc3NmdWxseSByZWNlaXZlZCBhIHNlY3JldCwgcmVtb3ZpbmcgdGhlIHJlcXVlc3TkjBAANAAA +ANIAAAAEAAAABAAAAIgAAABYjBAAfAAAAEcDAAAuAAAAWIwQAHwAAAA/AwAAXAAAAFiMEAB8AAAA +TQMAAC4AAABYjBAAfAAAABwCAAAdAAAAWIwQAHwAAAArAgAALgAAAFiMEAB8AAAAbQMAAA0AAABS +ZWNlaXZlZCBhIGJhY2t1cCBkZWNyeXB0aW9uIGtleSwgc3RvcmluZyBpdCBpbnRvIHRoZSBzZWNy +ZXQgaW5ib3guAJCNEABDAAAAWIwQAHwAAABWAwAAJwAAAFiMEAB8AAAAXwMAABUAAABFcnJvciB3 +aGlsZSBpbXBvcnRpbmcgYSBzZWNyZXQAAPyNEAAeAAAA0gAAAAQAAAAEAAAA7QAAAFiMEAB8AAAA +ewMAAAkAAABSZWNlaXZlZCBhIG0uc2VjcmV0LnNlbmQgZXZlbnQgd2l0aCBhIG1hdGNoaW5nIHJl +cXVlc3QAAESOEAA2AAAAWIwQAHwAAAB6AwAAJwAAAFiMEAB8AAAAhAMAABEAAABSZWNlaXZlZCBh +IG0uc2VjcmV0LnNlbmQgZXZlbnQgZnJvbSBhbm90aGVyIHVzZXIgb3IgZnJvbSB1bnZlcmlmaWVk +IGRldmljZQAApI4QAEoAAABYjBAAfAAAAIcDAAANAAAAUmVjZWl2ZWQgYSBtLnNlY3JldC5zZW5k +IGV2ZW50IGZyb20gYW4gdW5rbm93biBkZXZpY2UAAAAIjxAANQAAAFiMEAB8AAAAIQMAAFsAAABY +jBAAfAAAADYCAAAdAAAAWIwQAHwAAABFAgAALgAAAFiMEAB8AAAAcAIAADkAAABYjBAAfAAAABAC +AAANAAAAUmVjZWl2ZWQgYSByb29tIGtleSByZXF1ZXN0LCBidXQgcm9vbSBrZXkgZm9yd2FyZGlu +ZyBoYXMgYmVlbiB0dXJuZWQgb2ZmmI8QAEgAAABYjBAAfAAAAAQCAAAZAAAAUmVjZWl2ZWQgYSBy +b29tIGtleSByZXF1ZXN0IGZvciBhIHVuc3VwcG9ydGVkIGFsZ29yaXRobQD4jxAANwAAAFiMEAB8 +AAAA9QEAACUAAABYjBAAfAAAAOoCAAA0AAAAWIwQAHwAAACUAwAABQAAAFiMEAB8AAAAnAMAAAkA +AABSZWNlaXZlZCBhIG0uc2VjcmV0LnNlbmQgZXZlbnQAAHiQEAAeAAAAWIwQAHwAAAClAwAAFQAA +AFJlY2VpdmVkIGEgbS5zZWNyZXQuc2VuZCBldmVudCBidXQgdGhlIHJlcXVlc3Qgd2FzIGZvciBh +IHJvb20ga2V5AAAAsJAQAEEAAABzZWNyZXRfbmFtZQBYjBAAfAAAALoDAAANAAAAUmVjZWl2ZWQg +YSBtLnNlY3JldC5zZW5kIGV2ZW50LCBidXQgbm8gbWF0Y2hpbmcgcmVxdWVzdCB3YXMgZm91bmQA +AAAYkRAAQQAAAFiMEAB8AAAALQEAABEAAABVbmtub3duIHNlY3JldCByZXF1ZXN0IGFjdGlvbgAA +AHSREAAdAAAA0gAAAAQAAAAEAAAA7gAAAFiMEAB8AAAAJwEAACUAAABYjBAAfAAAADUBAAANAAAA +Q2FuJ3Qgc2VydmUgYSBzZWNyZXQgcmVxdWVzdCwgc2VjcmV0IGlzbid0IGZvdW5kzJEQADAAAABY +jBAAfAAAAGEBAAARAAAAUmVjZWl2ZWQgYSBzZWNyZXQgcmVxdWVzdCB0aGF0IHdlIHdvbid0IHNl +cnZlLCB0aGUgZGV2aWNlIGRvZXNuJ3QgYmVsb25nIHRvIHVzAAAUkhAATgAAAFiMEAB8AAAAVwEA +ABUAAABSZWNlaXZlZCBhIHNlY3JldCByZXF1ZXN0IHRoYXQgd2Ugd29uJ3Qgc2VydmUsIHRoZSBk +ZXZpY2UgaXNuJ3QgdHJ1c3RlZAB8khAARwAAAFiMEAB8AAAAPwEAABUAAABTaGFyaW5nIGEgc2Vj +cmV0IHdpdGggYSBkZXZpY2UAANySEAAeAAAAWIwQAHwAAABrAQAADQAAAFJlY2VpdmVkIGEgc2Vj +cmV0IHJlcXVlc3QgZnJvbSBhbiB1bmtub3duIGRldmljZRSTEAAwAAAA0gAAAAQAAAAEAAAAiQAA +AFiMEAB8AAAASQEAAB0AAABTZWNyZXQgcmVxdWVzdCBpcyBtaXNzaW5nIGFuIE9sbSBzZXNzaW9u +LCBwdXR0aW5nIHRoZSByZXF1ZXN0IGluIHRoZSB3YWl0IHF1ZXVlAGyTEABPAAAAWIwQAHwAAADw +AwAAKQAAAFiMEAB8AAAAAwQAAA0AAABSZWNlaXZlZCBhIGZvcndhcmRlZCByb29tIGtleSB3aXRo +IGFuIHVuc3VwcG9ydGVkIGFsZ29yaXRobQDkkxAAOwAAAO8AAAAMAAAABAAAAJgAAABYjBAAfAAA +AAEEAABAAAAAWIwQAHwAAAAOBAAADQAAAFJlY2VpdmVkIGEgZm9yd2FyZGVkIHJvb20ga2V5IHRo +YXQgd2UgZGlkbid0IHJlcXVlc3RYlBAANAAAANIAAAAEAAAABAAAAIoAAABYjBAAfAAAABwEAAAN +AAAAUmVjZWl2ZWQgYSBmb3J3YXJkZWQgcm9vbSBrZXkgZnJvbSBhbiB1bmtub3duIGRldmljZSwg +b3IgZnJvbSBhIGRldmljZSB0aGF0IHRoZSBrZXkgcmVxdWVzdCByZWNpcGllbnQgZG9lc24ndCBv +d24AAAC0lBAAcQAAAFiMEAB8AAAAGAMAAGEAAABYjBAAfAAAAKsBAAAlAAAAWIwQAHwAAACyAQAA +DQAAAFJlY2VpdmVkIGEga2V5IHJlcXVlc3QgZnJvbSBhbiB1bmtub3duIGRldmljZQAAAGCVEAAt +AAAAWIwQAHwAAADDAQAAFQAAAFJlY2VpdmVkIGEga2V5IHJlcXVlc3QgZnJvbSBhIGRldmljZSB0 +aGF0IGNoYW5nZWQgdGhlaXIgQ3VydmUyNTUxOSBzZW5kZXIga2V5AAAAqJUQAE0AAABYjBAAfAAA +AMgBAAAVAAAAUmVjZWl2ZWQgYSBrZXkgcmVxdWVzdCB0aGF0IHdlIHdvbid0IHNlcnZlAAAQlhAA +KgAAANIAAAAEAAAABAAAAPAAAABYjBAAfAAAAIwBAAAJAAAAU2VydmluZyBhIHJvb20ga2V5IHJl +cXVlc3QAAGSWEAAaAAAA0gAAAAQAAAAEAAAA8QAAAFiMEAB8AAAAiwEAACUAAABYjBAAfAAAAJkB +AAARAAAAQ2FuJ3Qgc2VydmUgYSByb29tIGtleSByZXF1ZXN0LCB0aGUgc2Vzc2lvbiBjYW4ndCBi +ZSBleHBvcnRlZCBpbnRvIGEgZm9yd2FyZGVkIHJvb20ga2V5OiAAAAC4lhAAWQAAAFiMEAB8AAAA +kQEAABEAAABLZXkgcmVxdWVzdCBpcyBtaXNzaW5nIGFuIE9sbSBzZXNzaW9uLCBwdXR0aW5nIHRo +ZSByZXF1ZXN0IGluIHRoZSB3YWl0IHF1ZXVlLJcQAEwAAABYjBAAfAAAAOYDAAARAAAAQ291bGRu +J3QgY3JlYXRlIGEgZ3JvdXAgc2Vzc2lvbiBmcm9tIGEgcmVjZWl2ZWQgcm9vbSBrZXmQlxAAOAAA +AFiMEAB8AAAAxgMAAEAAAABYjBAAfAAAANkDAAAVAAAAUmVjZWl2ZWQgYSBmb3J3YXJkZWQgcm9v +bSBrZXkgYnV0IHdlIGFscmVhZHkgaGF2ZSBhIGJldHRlciB2ZXJzaW9uIG9mIGl08JcQAEgAAADS +AAAABAAAAAQAAADyAAAAWIwQAHwAAADOAwAAFQAAAFJlY2VpdmVkIGEgZm9yd2FyZGVkIHJvb20g +a2V5AAAAYJgQAB0AAABYjBAAfAAAADcEAAARAAAAWIwQAHwAAAAtBAAAQAAAAFiMEAB8AAAA1AEA +AAUAAABYjBAAfAAAAOkBAAANAAAAUmVjZWl2ZWQgYSByb29tIGtleSByZXF1ZXN0IGZvciBhbiB1 +bmtub3duIGluYm91bmQgZ3JvdXAgc2Vzc2lvbsiYEABAAAAAWIwQAHwAAADnAAAARgAAAFiMEAB8 +AAAA4wAAACIAAABYjBAAfAAAACkDAAAnAAAAWIwQAHwAAAAtAwAADQAAAE1hcmtpbmcgb3V0Z29p +bmcgc2VjcmV0IHJlcXVlc3QgYXMgc2VudABQmRAAJwAAAFiMEAB8AAAANwMAAC4AAADzAAAAAAAA +AP//////////mJkQAEGws8IAC+uJAe8AAAAMAAAABAAAAPQAAAD1AAAApAAAAGEgRGlzcGxheSBp +bXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA1AAAAAAAAAABAAAA +9gAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJh +cnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAQmhAASwAAADMKAAAOAAAAdGhlcmUgaXMgbm8gc3VjaCB0 +aGluZyBhcyBhIHJlbGVhc2UgbG9hZGyaEAAoAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJi +NjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zeW5jL2F0b21pYy5ycwCcmhAA +TwAAAOAMAAAYAAAAdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhbiBhY3F1aXJlLXJlbGVhc2Ug +bG9hZAAAAPyaEAAxAAAAnJoQAE8AAADhDAAAFwAAAPcAAAAEAAAABAAAAKoAAADUAAAAAAAAAAEA +AAD4AAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQD5AAAACAAA +AAQAAACuAAAA+gAAAAgAAAAEAAAArgAAAPkAAAAIAAAABAAAAK4AAAD7AAAACAAAAAQAAACuAAAA +/AAAAAgAAAAEAAAArgAAAP0AAAAIAAAABAAAAK4AAAD+AAAACAAAAAQAAACuAAAA/wAAAAgAAAAE +AAAArgAAAPkAAAAIAAAABAAAAK4AAAAAAQAACAAAAAQAAAC0AAAARXJyb3IvaG9tZS9ydW5uZXIv +LmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90b2tp +by0xLjM2LjAvc3JjL3N5bmMvbXV0ZXgucnMAAAA5nBAAYAAAALIBAAAzAAAAOZwQAGAAAACzAQAA +GwAAADmcEABgAAAAiwIAAB0AAAA5nBAAYAAAAJECAAANAAAAL2hvbWUvcnVubmVyLy5jYXJnby9y +ZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdG9raW8tMS4zNi4w +L3NyYy9zeW5jL3J3bG9jay5ycwAAANycEABhAAAAQQIAAEkAAADcnBAAYQAAAEUCAAAbAAAA3JwQ +AGEAAABJAgAAEQAAANycEABhAAAAiQMAAEsAAADcnBAAYQAAAI0DAAAbAAAA3JwQAGEAAACRAwAA +EQAAANycEABhAAAAsAEAADgAAADcnBAAYQAAALEBAAAbAAAA3JwQAGEAAAC1AQAAEQAAANycEABh +AAAABQMAADoAAADcnBAAYQAAAAYDAAAbAAAA3JwQAGEAAAAKAwAAEQAAAE5vbmVTb21l0gAAAAQA +AAAEAAAAtQAAAEFib3J0ZWRFdmVudEVycm9yAAAA0gAAAAQAAAAEAAAAAQEAAEpzb25FcnJvcgAA +ANIAAAAEAAAABAAAAMYAAABTZXNzaW9uQ3JlYXRpb24A0gAAAAQAAAAEAAAAAgEAAFNlc3Npb25F +eHBvcnQAAADSAAAABAAAAAQAAAADAQAAU3RvcmUAAADSAAAABAAAAAQAAAC/AAAAU2Vzc2lvbldl +ZGdlZAAAAAQBAAAIAAAABAAAAAUBAADSAAAABAAAAAQAAAAGAQAAUmVwbGF5ZWRNZXNzYWdlTWlz +c2luZ1Nlc3Npb25VbnN1cHBvcnRlZEFsZ29yaXRobUludmFsaWRLZXlJZAAAANIAAAAEAAAABAAA +ALgAAABNaXNzaW5nU2lnbmluZ0tleVVzZXJJZE1pc21hdGNoTm90QW5PYmplY3ROb1NpZ25hdHVy +ZUZvdW5kVmVyaWZpY2F0aW9uRXJyb3IA0gAAAAQAAAAEAAAAuQAAAEludmFsaWRLZXkAANIAAAAE +AAAABAAAALoAAABJbnZhbGlkU2lnbmF0dXJlU2lnbmluZ0tleUNoYW5nZWQAAAAHAQAABAAAAAQA +AAAIAQAA0gAAAAQAAAAEAAAAvQAAANIAAAAEAAAABAAAAL4AAABTdG9yZUVycm9yT25lVGltZUtl +eU5vdFNpZ25lZAAAANIAAAAEAAAABAAAAAkBAABPbmVUaW1lS2V5TWlzc2luZ09uZVRpbWVLZXlV +bmtub3dub25lX3RpbWVfa2V5AAAKAQAABAAAAAQAAAALAQAAc2lnbmluZ19rZXllcnJvctIAAAAE +AAAABAAAAAwBAABEZXZpY2VNaXNzaW5nQ3VydmVLZXlJbnZhbGlkSnNvbkludmFsaWRDdXJ2ZUtl +eUluYm91bmRDcmVhdGlvbgAA0gAAAAQAAAAEAAAADQEAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4w +LjExNS9zcmMvc2VyLnJzANygEABfAAAAogIAACoAAABBY2NvdW50VW5zZXRNaXNtYXRjaGVkQWNj +b3VudGV4cGVjdGVkAAAADgEAABAAAAAEAAAAwQAAAGdvdADSAAAABAAAAAQAAADCAAAASW8AANIA +AAAEAAAABAAAAMMAAABVbnBpY2tsaW5nRXJyb3JQaWNrbGUAAADSAAAABAAAAAQAAADEAAAA0gAA +AAQAAAAEAAAAxQAAAElkZW50aWZpZXJWYWxpZGF0aW9uU2VyaWFsaXphdGlvblVuc3VwcG9ydGVk +RGF0YWJhc2VWZXJzaW9uANIAAAAEAAAABAAAAA8BAADSAAAABAAAAAQAAADIAAAAQmFja2VuZADS +AAAABAAAAAQAAADJAAAASW52YWxpZExvY2tHZW5lcmF0aW9uAAAA0gAAAAQAAAAEAAAAygAAAEFs +Z29yaXRobQAAANIAAAAEAAAABAAAABABAABNaXNzaW5nRWQyNTUxOUtleX1mYWxzZXRydWVudWxs +e092ZXJsb25nIGR1cmF0aW9uL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJp +eC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY29t +bW9uL3NyYy90aW1lb3V0LnJzAM2iEAByAAAANAAAAEQAAADNohAAcgAAAC0AAAABAAAAYGFzeW5j +IGZuYCByZXN1bWVkIGFmdGVyIGNvbXBsZXRpb25GaWVsZFNldCBjb3JydXB0ZWQgKHRoaXMgaXMg +YSBidWcpL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0x +ZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9pZGVu +dGl0aWVzL2RldmljZS5ycwAAAKWjEAB8AAAAuwIAAA0AAABUcnlpbmcgdG8gZmluZCBhbiBPbG0g +c2Vzc2lvbiBvZiBhIGRldmljZSwgYnV0IHRoZSBkZXZpY2UgZG9lc24ndCBoYXZlIGEgQ3VydmUy +NTUxOSBrZXkANKQQAFcAAAAWAQAAGAAAAAQAAACCAAAApaMQAHwAAACvAgAAJQAAAKWjEAB8AAAA +EgMAAAUAAAAWAQAABAAAAAQAAACEAAAAFgEAAAQAAAAEAAAAhQAAABYBAAAEAAAABAAAANMAAAAX +AQAAAAAAAAEAAAAYAQAAbWVzc2FnZV9pZAAApaMQAHwAAAA2AwAADQAAAFRyeWluZyB0byBlbmNy +eXB0IGFuIGV2ZW50IGZvciBhIGRldmljZSwgYnV0IG5vIE9sbSBzZXNzaW9uIGlzIGZvdW5kLgAA +ACClEABFAAAApaMQAHwAAABRAQAAXgAAAKWjEAB8AAAArQEAAEMAAACloxAAfAAAAKMBAABDAAAA +L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5Mjdm +ODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9pZGVudGl0aWVz +L21hbmFnZXIucnMAAACgpRAAfQAAABkCAAA5AAAAoKUQAH0AAACjAQAALgAAAKClEAB9AAAAqQEA +AA0AAABSZW1vdmVkIHNvbWUgb3IgYWxsIG9mIG91ciBwcml2YXRlIGNyb3NzIHNpZ25pbmcga2V5 +cwAAAFCmEAA1AAAAFgEAAAQAAAAEAAAA1gAAAKClEAB9AAAAswEAABEAAABNYXJrZWQgb3VyIG93 +biBpZGVudGl0eSBhcyB2ZXJpZmllZACwphAAIwAAAKClEAB9AAAAZwMAABoAAACgpRAAfQAAAOAB +AAA3AAAAoKUQAH0AAADjAwAABQAAAKClEAB9AAAAlwIAAA0AAABVc2VyIElEIG1pc21hdGNoIGlu +IG9uZSBvZiB0aGUgY3Jvc3Mgc2lnbmluZyBrZXlzAAAAHKcQADEAAACgpRAAfQAAAIwCAAAFAAAA +oKUQAH0AAAClAgAAFQAAAFVwZGF0ZWQgYSB1c2VyIGlkZW50aXR5AHinEAAXAAAAFgEAAAQAAAAE +AAAA1wAAAKClEAB9AAAAqQIAABUAAABSZWNlaXZlZCBhbiB1bmNoYW5nZWQgdXNlciBpZGVudGl0 +eQC4pxAAIwAAAKClEAB9AAAArQIAABUAAABDb3VsZG4ndCB1cGRhdGUgYW4gZXhpc3RpbmcgdXNl +ciBpZGVudGl0eQAAAPSnEAApAAAAFgEAAAQAAAAEAAAAoAAAAKClEAB9AAAAtwIAABUAAABDcmVh +dGVkIG5ldyB1c2VyIGlkZW50aXR5AAAASKgQABkAAACgpRAAfQAAALsCAAAVAAAAQ291bGRuJ3Qg +Y3JlYXRlIG5ldyB1c2VyIGlkZW50aXR5AAAAfKgQACEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9tb2QucnMAqKgQAHsAAAB+AAAA +OwAAAKioEAB7AAAArAAAAEUAAACoqBAAewAAAI4AAAA8AAAAqKgQAHsAAACHAAAAQwAAAC9ob21l +L3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNk +MjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21h +Y2hpbmUucnMAZKkQAH8AAAA1AQAABQAAAGSpEAB/AAAAVgEAABEAAABSZWNlaXZlZCBhIG5ldyB2 +ZXJpZmljYXRpb24gcmVxdWVzdAAEqhAAIwAAABYBAAAIAAAABAAAAIYAAABkqRAAfwAAAGQBAAAV +AAAAVGhlIHJlY2VpdmVkIHZlcmlmaWNhdGlvbiByZXF1ZXN0IHdhcyB0b28gb2xkIG9yIHRvbyBm +YXIgaW50byB0aGUgZnV0dXJlUKoQAEgAAAAWAQAABAAAAAQAAACHAAAAZKkQAH8AAABtAQAAFQAA +AFRoZSByZWNlaXZlZCB2ZXJpZmljYXRpb24gcmVxdWVzdCB3YXMgc2VudCBieSB1cywgaWdub3Jp +bmcgaXQAAADAqhAAPQAAAGSpEAB/AAAAXAEAABUAAABUaGUga2V5IHZlcmlmaWNhdGlvbiByZXF1 +ZXN0IGRpZG4ndCBjb250YWluIGEgdmFsaWQgdGltZXN0YW1wAAAAGKsQAD0AAABkqRAAfwAAAEIB +AAANAAAAUmVjZWl2ZWQgYSB2ZXJpZmljYXRpb24gZXZlbnQgd2l0aCBhIG1pc21hdGNoZWQgZmxv +dyBpZCwgdGhlIHZlcmlmaWNhdGlvbiBvYmplY3Qgd2FzIGNyZWF0ZWQgZm9yIGEgaW4tcm9vbSB2 +ZXJpZmljYXRpb24gYnV0IGFuIGV2ZW50IHdhcyByZWNlaXZlZCBvdmVyIHRvLWRldmljZSBtZXNz +YWdpbmcgb3IgdmljZSB2ZXJzYXCrEAC4AAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvZ3JvdXBfc2Vzc2lvbnMucnMAAAAwrBAA +iQAAAEYAAAAvAAAAMKwQAIkAAABDAAAAVwAAADCsEACJAAAATQAAAFgAAAAwrBAAiQAAAFMAAAAn +AAAAMKwQAIkAAABZAAAAEQAAAENvdWxkbid0IHJlc3RvcmUgYW4gb3V0Ym91bmQgZ3JvdXAgc2Vz +c2lvbjogDK0QACwAAAAwrBAAiQAAAPoCAAAJAAAAQ2hlY2tpbmcgaWYgYSByb29tIGtleSBuZWVk +cyB0byBiZSBzaGFyZWQAAABQrRAAKQAAADCsEACJAAAA8wIAAAUAAABzZXNzaW9uX2lkAAAwrBAA +iQAAADsDAAARAAAAVGhlIHJvb20ga2V5IGRvZXNuJ3QgbmVlZCB0byBiZSBzaGFyZWQgd2l0aCBh +bnlvbmUuIE1hcmtpbmcgYXMgc2hhcmVkLgAAsK0QAEYAAAAwrBAAiQAAAEoDAAANAAAAU3RvcmVk +IHRoZSBjaGFuZ2VkIHNlc3Npb25zIGFmdGVyIGVuY3J5cHRpbmcgYW4gcm9vbSBrZXkQrhAAOAAA +ABYBAAAEAAAABAAAAI0AAAAwrBAAiQAAABECAAA5AAAAMKwQAIkAAAAgAgAADQAAAFRyeWluZyB0 +byBlbmNyeXB0IGEgcm9vbSBrZXmArhAAHAAAABYBAAAEAAAABAAAAI4AAAAWAQAABAAAAAQAAACN +AAAAFgEAAAQAAAAEAAAAigAAAEVuY3J5cHRpb24gdGFzayBwYW5pY2tlZDCsEACJAAAAQAIAACEA +AAAwrBAAiQAAAG0CAAAYAAAAMKwQAIkAAABaAQAABQAAADCsEACJAAAAZQEAAAkAAABDYWxjdWxh +dGluZyBncm91cCBzZXNzaW9uIHJlY2lwaWVudHMsrxAAJAAAABYBAAAEAAAABAAAAI8AAAAWAQAA +BAAAAAQAAACQAAAAMKwQAIkAAABoAQAALQAAADCsEACJAAAAqAEAAEcAAAAwrBAAiQAAALkBAAAZ +AAAAUm90YXRpbmcgYSByb29tIGtleSBkdWUgdG8gdGhlc2UgZGV2aWNlcyBiZWluZyBkZWxldGVk +L2JsYWNrbGlzdGVkIACorxAAQwAAADCsEACJAAAAxgEAAA0AAABSb3RhdGluZyByb29tIGtleSB0 +byBwcm90ZWN0IHJvb20gaGlzdG9yeQAAAASwEAApAAAAGQEAAAEAAAABAAAAkgAAADCsEACJAAAA +zgEAAAkAAABEb25lIGNhbGN1bGF0aW5nIGdyb3VwIHNlc3Npb24gcmVjaXBpZW50cwAAAFiwEAAp +AAAAMKwQAIkAAAD1AQAAKgAAADCsEACJAAAA/gEAAA0AAABBIHVzZXIgb3IgZGV2aWNlIGhhcyBs +ZWZ0IHRoZSByb29tIHNpbmNlIHdlIGxhc3Qgc2VudCBhIG1lc3NhZ2UsIG9yIHRoZSBlbmNyeXB0 +aW9uIHNldHRpbmdzIGhhdmUgY2hhbmdlZC4gUm90YXRpbmcgdGhlIHJvb20ga2V5LqywEACAAAAA +MKwQAIkAAADlAAAAQQAAADCsEACJAAAA9QAAAEkAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9j +aGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMv +bWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9zZXNzaW9ucy5ycwBUsRAAgwAA +AO8BAABfAAAAVLEQAIMAAAAKAgAAGQAAAFRyaWVkIHRvIGNyZWF0ZSBhbiBPbG0gc2Vzc2lvbiBi +dXQgdGhlIGRldmljZSBpcyB1bmtub3du+LEQADgAAAAWAQAABAAAAAQAAADgAAAAFgEAAAQAAAAE +AAAA4QAAAFSxEACDAAAAMgIAABUAAABFcnJvciB3aGlsZSB0cmVhdGluZyBhbiB1bndlZGdlZCBk +ZXZpY2U6IAAAAGiyEAApAAAAVLEQAIMAAAAfAgAAGQAAAEVycm9yIGNyZWF0aW5nIE9sbSBzZXNz +aW9uAACsshAAGgAAABYBAAAEAAAABAAAAOIAAABUsRAAgwAAACYCAAAeAAAAVLEQAIMAAAASAgAA +GQAAAFRyaWVkIHRvIGNyZWF0ZSBhbiBPbG0gc2Vzc2lvbiwgYnV0IHdlIGNhbid0IGZldGNoIHRo +ZSBkZXZpY2UgZnJvbSB0aGUgc3RvcmUAsxAATAAAABYBAAAEAAAABAAAAIMAAABUsRAAgwAAAEIC +AAAJAAAARXN0YWJsaXNoZWQgbmV3IE9sbSBzZXNzaW9uc3SzEAAcAAAAFgEAAAQAAAAEAAAA4wAA +AFSxEACDAAAARQIAAEIAAABUsRAAgwAAAFMCAAARAAAARXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGNv +bGxlY3QgdGhlIGluY29taW5nIHNlY3JldCByZXF1ZXN0cwAAyLMQADoAAAAWAQAABAAAAAQAAADk +AAAAVLEQAIMAAACjAAAADgAAAFSxEACDAAAAnwAAAGAAAABtLmR1bW15AFSxEACDAAAAuQAAABYA +AABUsRAAgwAAAN8AAABGAAAAVLEQAIMAAAAfAQAAQwAAAFSxEACDAAAALQEAAA0AAABDb2xsZWN0 +ZWQgdXNlci9kZXZpY2UgcGFpcnMgdGhhdCBhcmUgbWlzc2luZyBhbiBPbG0gc2Vzc2lvbgCEtBAA +OwAAABYBAAAEAAAABAAAAJMAAAAWAQAABAAAAAQAAACUAAAAVLEQAIMAAAA1AQAADQAAAENhbid0 +IGVzdGFibGlzaCBhbiBPbG0gc2Vzc2lvbiB3aXRoIHNvbWUgZGV2aWNlcyBkdWUgdG8gbWlzc2lu +ZyBPbG0gc3VwcG9ydCBvciBiYWQga2V5cwD4tBAAVwAAABYBAAAEAAAABAAAAJUAAABUsRAAgwAA +AEgBAAAyAAAAVLEQAIMAAABpAAAAGgAAAFSxEACDAAAAdAAAABUAAABNYXJraW5nIHNlc3Npb24g +dG8gYmUgdW53ZWRnZWQAAJi1EAAeAAAAFgEAAAQAAAAEAAAA5QAAAFSxEACDAAAAgQAAAB4AAABU +sRAAgwAAAIcAAAAeAAAAVLEQAIMAAADSAQAACQAAAFJlY2VpdmVkIGEgYC9rZXlzL2NsYWltYCBy +ZXNwb25zZQAAAAC2EAAhAAAAFgEAAAQAAAAEAAAA2AAAABYBAAAEAAAABAAAAOYAAAAWAQAABAAA +AAQAAADaAAAAVLEQAIMAAAC7AQAABQAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0 +cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgt +c2RrLWNyeXB0by9zcmMvZGVoeWRyYXRlZF9kZXZpY2VzLnJzAAAAbLYQAH0AAAAyAQAABQAAAFdl +IHNob3VsZCBhbHdheXMgdHJ5IHRvIHVwbG9hZCBkZXZpY2Uga2V5cyBmb3IgYSBkZWh5ZHJhdGVk +IGRldmljZS4AbLYQAH0AAABGAQAADgAAAGy2EAB9AAAASgEAAAkAAABDcmVhdGluZyBhbiB1cGxv +YWQgcmVxdWVzdCBmb3IgYSBkZWh5ZHJhdGVkIGRldmljZQAAYLcQADIAAABsthAAfQAAAOcAAAAJ +AAAAUmVjZWl2aW5nIGV2ZW50cyBmb3IgYSByZWh5ZHJhdGVkIERldmljZay3EAAoAAAAbLYQAH0A +AADbAAAABQAAAGy2EAB9AAAA/gAAAAkAAABDb2xsZWN0ZWQgcm9vbSBrZXlzIGZyb20gdGhlIHJl +aHlkcmF0ZWQgZGV2aWNlAAD8txAALgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0 +cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgt +c2RrLWNyeXB0by9zcmMvb2xtL2dyb3VwX3Nlc3Npb25zL2luYm91bmQucnMAAAA0uBAAhQAAAIsB +AAA0AAAANLgQAIUAAAAhAQAAUAAAAENhbid0IGV4cG9ydCBzZXNzaW9uNLgQAIUAAAAlAQAAPgAA +ADS4EACFAAAAAgEAADMAAAA0uBAAhQAAAG8BAABRAAAANLgQAIUAAACdAQAANQAAAHNlbmRlcmV2 +ZW50X2lkb3JpZ2luX3NlcnZlcl90c3Jvb21faWRjb250ZW50bS5yZWxhdGVzX3RvL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vZ3JvdXBfc2Vzc2lvbnMv +b3V0Ym91bmQucnMAAGi5EACGAAAA3wEAADMAAABouRAAhgAAAPcBAAAuAAAAL2hvbWUvcnVubmVy +Ly5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2Fi +OWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vYWNjb3VudC5ycwAAELoQAHYA +AADJAAAACQAAAENyZWF0aW5nIGEgbmV3IHJvb20ga2V5AJi6EAAXAAAAELoQAHYAAADIAAAAWgAA +ABC6EAB2AAAAdAQAAAUAAAAQuhAAdgAAAHwEAAANAAAAT2xtIGV2ZW50IGRvZXNuJ3QgY29udGFp +biBhIGNpcGhlcnRleHQgZm9yIG91ciBrZXkAAOi6EAAyAAAAELoQAHYAAAC/BAAAMgAAABC6EAB2 +AAAA3QQAABEAAABGYWlsZWQgdG8gZGVjcnlwdCBhIG5vbi1wcmUta2V5IG1lc3NhZ2Ugd2l0aCBh +bGwgYXZhaWxhYmxlIHNlc3Npb25zAES7EABDAAAAFgEAAAQAAAAEAAAA5wAAABC6EAB2AAAADwUA +ABkAAABGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IE9sbSBzZXNzaW9uIGZyb20gYSBwcmUta2V5IG1l +c3NhZ2U6IACwuxAAOwAAABC6EAB2AAAA/wQAABkAAABGYWlsZWQgdG8gZGVjcnlwdCBhIHByZS1r +ZXkgbWVzc2FnZSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHNlc3Npb24AAAS8EABCAAAAELoQAHYA +AACKBAAABQAAABYBAAAEAAAABAAAAOgAAAAQuhAAdgAAAJAEAAAJAAAARGVjcnlwdGluZyBhIHRv +LWRldmljZSBldmVudIC8EAAcAAAAELoQAHYAAACbBAAAEQAAAEVycm9yIGRlY3J5cHRpbmcgYW4g +dG8tZGV2aWNlIGV2ZW50LCB1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobQAAALS8EABF +AAAAELoQAHYAAAAmBQAABQAAABC6EAB2AAAAMQUAAAkAAABTdWNjZXNzZnVsbHkgZGVjcnlwdGVk +IGFuIE9sbSBtZXNzYWdlAAAAJL0QACUAAAAQuhAAdgAAAD8FAAARAAAAQSB0by1kZXZpY2UgbWVz +c2FnZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlY3J5cHRlZCBidXQgcGFyc2luZyBhbmQgY2hlY2tpbmcg +dGhlIGV2ZW50IGZpZWxkcyBmYWlsZWQAZL0QAF8AAAAQuhAAdgAAAGQFAAAmAAAAL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vc2Vzc2lvbi5ycwAA3L0Q +AHYAAAB+AAAAUgAAANy9EAB2AAAAggAAAAkAAABTdWNjZXNzZnVsbHkgZW5jcnlwdGVkIGFuIGV2 +ZW50AHS+EAAfAAAAFgEAAAQAAAAEAAAA6gAAANy9EAB2AAAAUgAAAF4AAADcvRAAdgAAAFcAAAAJ +AAAARGVjcnlwdGVkIGFuIE9sbSBtZXNzYWdlzL4QABgAAADcvRAAdgAAAJ0AAAAbAAAAc2VuZGVy +X2RldmljZWVkMjU1MTlyZWNpcGllbnRyZWNpcGllbnRfa2V5cwDcvRAAdgAAAJgAAAA4AAAAaW50 +ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZdy9EAB2AAAAvwAAABIAAADcvRAA +dgAAAGsAAAA/AAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy9vbG0vc2lnbmluZy9tb2QucnMAAIC/EAB6AAAA2gAAACgAAACAvxAAegAAAKEAAAAwAAAAgL8Q +AHoAAADrAAAAKAAAAIC/EAB6AAAAQwEAABUAAACAvxAAegAAAN8BAAA5AAAAgL8QAHoAAACwAAAA +QwAAAIC/EAB6AAAAtQAAAE4AAACAvxAAegAAALoAAABOAAAAgL8QAHoAAABYAQAAFQAAAC9ob21l +L3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNk +MjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvbW9kLnJzjMAQ +AHQAAABqAQAASgAAAIzAEAB0AAAAbQEAADoAAACMwBAAdAAAAHIBAABCAAAAjMAQAHQAAACBAAAA +UQAAAIzAEAB0AAAAlgAAAEMAAACMwBAAdAAAALIAAAAlAAAAjMAQAHQAAADUAAAAEQAAAFRoZSB1 +c2VyIGhhcyBhIHBlbmRpbmcgYC9rZXkvcXVlcnlgIHJlcXVlc3Qgd2hpY2ggZGlkIG5vdCBmaW5p +c2ggeWV0LCBzb21lIGRldmljZXMgbWlnaHQgYmUgbWlzc2luZy5wwRAAZAAAAIzAEAB0AAAAdgAA +AGMAAACMwBAAdAAAAKQBAAAoAAAAjMAQAHQAAADEAQAALQAAAIzAEAB0AAAAuQEAAD0AAACMwBAA +dAAAAL8BAAAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy9zdG9yZS9jcnlwdG9fc3RvcmVfd3JhcHBlci5ycwAAACzCEACFAAAAQgAAAE0AAACMwBAAdAAA +AE0BAABLAAAAjMAQAHQAAABPAQAAKgAAAIzAEAB0AAAABQEAABUAAACMwBAAdAAAAAoBAABCAAAA +jMAQAHQAAABUBAAAIQAAAIzAEAB0AAAAqgMAAEAAAACMwBAAdAAAAGYEAABhAAAAjMAQAHQAAADQ +AwAATQAAAIzAEAB0AAAA5wQAABEAAABUcmllZCB0byBpbXBvcnQgYW4gdW5rbm93biBzZWNyZXQA +AABUwxAAIQAAABYBAAAEAAAABAAAAJYAAACMwBAAdAAAAMMEAABiAAAAjMAQAHQAAADUBAAAFQAA +AFN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBhIHByaXZhdGUgY3Jvc3Mgc2lnbmluZyBrZXkAAACwwxAA +MQAAABYBAAAEAAAABAAAAOsAAACMwBAAdAAAAMoDAABSAAAAjMAQAHQAAAA8BAAAWgAAAIzAEAB0 +AAAADwQAACkAAACMwBAAdAAAAN0DAAAiAAAAjMAQAHQAAAAzBAAAIQAAAIzAEAB0AAAA+gMAABUA +AACMwBAAdAAAABkEAAA5AAAAjMAQAHQAAAAoBAAAOQAAAIzAEAB0AAAAogMAAEEAAABtLnJvb20u +ZW5jcnlwdGVkbS5mb3J3YXJkZWRfcm9vbV9rZXkvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1jcnlwdG8vc3JjL2JhY2t1cHMvbW9kLnJzAACwxBAAdgAAAJkBAAAJAAAARGlzYWJs +aW5nIGtleSBiYWNrdXAgYW5kIHJlc2V0dGluZyBiYWNrdXAgc3RhdGUgZm9yIHJvb20ga2V5cwAA +ADjFEAA9AAAAsMQQAHYAAACXAQAABQAAALDEEAB2AAAAoAEAAAkAAABEb25lIGRpc2FibGluZyBi +YWNrdXAAAACgxRAAFQAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgt +cnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0 +by9zcmMvbWFjaGluZS5ycwAAwMUQAHIAAACxBgAABQAAAMDFEAByAAAA4wIAAAUAAAAWAQAABAAA +AAQAAACZAAAAwMUQAHIAAAAMAwAAEQAAAFJlY2VpdmVkIGEgcm9vbSBrZXkgZXZlbnQgd2hpY2gg +Y29udGFpbmVkIGFuIGludmFsaWQgc2Vzc2lvbiBrZXk6IAAAdMYQAEIAAADAxRAAcgAAAAIDAAAV +AAAAUmVjZWl2ZWQgYSBtZWdvbG0gcm9vbSBrZXkgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgYSBiZXR0 +ZXIgdmVyc2lvbiBvZiwgZGlzY2FyZGluZwDQxhAATwAAAMDFEAByAAAA/gIAABUAAABSZWNlaXZl +ZCBhIG5ldyBtZWdvbG0gcm9vbSBrZXkAADjHEAAeAAAAwMUQAHIAAAD5AAAABQAAAGVkMjU1MTlf +a2V5Y3VydmUyNTUxOV9rZXkAAADAxRAAcgAAAA0BAAARAAAAUmVzdG9yZWQgYW4gT2xtIGFjY291 +bnQAnMcQABcAAADAxRAAcgAAACgBAAARAAAAQ3JlYXRlZCBhIG5ldyBPbG0gYWNjb3VudAAAAMzH +EAAZAAAAwMUQAHIAAAA4AQAAEQAAAENyZWF0aW5nIGFuIGVtcHR5IGNyb3NzIHNpZ25pbmcgaWRl +bnRpdHkgc3R1YgAAAADIEAAtAAAAwMUQAHIAAAA0AQAAEQAAAFJlc3RvcmVkIHRoZSBjcm9zcyBz +aWduaW5nIGlkZW50aXR5AEjIEAAjAAAAFgEAAAQAAAAEAAAAGgEAAMDFEAByAAAAFAMAAAUAAADA +xRAAcgAAACMDAAARAAAAUmVjZWl2ZWQgYSByb29tIGtleSB3aXRoIGFuIHVuc3VwcG9ydGVkIGFs +Z29yaXRobQAAAKTIEAAxAAAAwMUQAHIAAADJBgAABQAAAMDFEAByAAAA7QYAAAUAAAAWAQAABAAA +AAQAAAChAAAAwMUQAHIAAAApAwAAXAAAAGFsZ29yaXRobXNlbmRlcl9rZXkAwMUQAHIAAAAmBgAA +EQAAAFJlY2VpdmVkIGFuIGVuY3J5cHRlZCByb29tIGV2ZW50IHdpdGggYW4gdW5zdXBwb3J0ZWQg +YWxnb3JpdGhtAABEyRAAPgAAAMDFEAByAAAADAYAAAUAAADAxRAAcgAAAD0GAAANAAAARmFpbGVk +IHRvIGRlY3J5cHQgYSByb29tIGV2ZW50OiCsyRAAIAAAADxvdXQgb2YgcmFuZ2U+AADAxRAAcgAA +AJ8FAAAnAAAAwMUQAHIAAACcAgAABQAAAMDFEAByAAAAuwQAAAUAAADAxRAAcgAAAIgGAAAaAAAA +wMUQAHIAAADDBQAAJgAAAMDFEAByAAAAHwUAAEMAAADAxRAAcgAAACsEAABbAAAAwMUQAHIAAADY +AgAAJwAAAMDFEAByAAAA1AQAADsAAADAxRAAcgAAAO0EAAANAAAARXJyb3IgbWFya2luZyBhIHRy +YWNrZWQgdXNlciBhcyBjaGFuZ2VkAITKEAAnAAAAwMUQAHIAAABtBAAACQAAAFJlY2VpdmVkIGEg +dG8tZGV2aWNlIGV2ZW50AADEyhAAGgAAAMDFEAByAAAAZwQAABEAAABSZWNlaXZlZCBhbiBpbnZh +bGlkIHRvLWRldmljZSBldmVudDogAAAA+MoQACUAAADAxRAAcgAAAFoEAAAFAAAAwMUQAHIAAACe +BAAAGQAAAFJlY2VpdmVkIGFuIGludmFsaWQgZW5jcnlwdGVkIHRvLWRldmljZSBldmVudDogAEjL +EAAvAAAAwMUQAHIAAAB7BAAAIQAAAENvdWxkbid0IG1hcmsgZGV2aWNlIGZyb20gdG8gYmUgdW53 +ZWRnZWSQyxAAKAAAAFplcm9pemluZyBhbmQgcmVzZXJpYWxpemluZyBvdXIgZXZlbnRzIHNob3Vs +ZCBhbHdheXMgd29yawAAAMDFEAByAAAAmgQAAB4AAADAxRAAcgAAAAkEAABHAAAAwMUQAHIAAAAL +BAAADQAAAEVycm9yIGhhbmRsaW5nIGEgdmVyaWZpY2F0aW9uIGV2ZW50OiAAAAAszBAAJQAAAMDF +EAByAAAA0gMAAAUAAADAxRAAcgAAAN8DAAAJAAAAUmVjZWl2ZWQgYSBkZWNyeXB0ZWQgdG8tZGV2 +aWNlIGV2ZW50fMwQACQAAADAxRAAcgAAAP8DAAARAAAAUmVjZWl2ZWQgYW4gYG0uZHVtbXlgIGV2 +ZW50ALjMEAAbAAAAwMUQAHIAAAACBAAAEQAAAFJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgZW5jcnlw +dGVkIHRvLWRldmljZSBldmVudOzMEAAwAAAAwMUQAHIAAAD2BQAALAAAAC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21hY2hpbmUucnM0zRAA +fAAAAEADAAAJAAAAU3VjY2Vzc2Z1bGx5IHJlY2VpdmVkIGEgc2VjcmV0LCByZW1vdmluZyB0aGUg +cmVxdWVzdMDNEAA0AAAAFgEAAAQAAAAEAAAAiAAAABYBAAAEAAAABAAAAOwAAAA0zRAAfAAAAEcD +AAAuAAAANM0QAHwAAAA/AwAAXAAAADTNEAB8AAAATQMAAC4AAAA0zRAAfAAAAG0DAAANAAAAUmVj +ZWl2ZWQgYSBiYWNrdXAgZGVjcnlwdGlvbiBrZXksIHN0b3JpbmcgaXQgaW50byB0aGUgc2VjcmV0 +IGluYm94LgBczhAAQwAAADTNEAB8AAAAVgMAACcAAAA0zRAAfAAAAF8DAAAVAAAARXJyb3Igd2hp +bGUgaW1wb3J0aW5nIGEgc2VjcmV0AADIzhAAHgAAABYBAAAEAAAABAAAAO0AAAA0zRAAfAAAAHsD +AAAJAAAAUmVjZWl2ZWQgYSBtLnNlY3JldC5zZW5kIGV2ZW50IHdpdGggYSBtYXRjaGluZyByZXF1 +ZXN0AAAQzxAANgAAADTNEAB8AAAAegMAACcAAAA0zRAAfAAAAIQDAAARAAAAUmVjZWl2ZWQgYSBt +LnNlY3JldC5zZW5kIGV2ZW50IGZyb20gYW5vdGhlciB1c2VyIG9yIGZyb20gdW52ZXJpZmllZCBk +ZXZpY2UAAHDPEABKAAAANM0QAHwAAACHAwAADQAAAFJlY2VpdmVkIGEgbS5zZWNyZXQuc2VuZCBl +dmVudCBmcm9tIGFuIHVua25vd24gZGV2aWNlAAAA1M8QADUAAAA0zRAAfAAAACEDAABbAAAANM0Q +AHwAAAA2AgAAHQAAADTNEAB8AAAARQIAAC4AAAA0zRAAfAAAAHACAAA5AAAANM0QAHwAAACaAgAA +YQAAADTNEAB8AAAAlAMAAAUAAAA0zRAAfAAAAJwDAAAJAAAAUmVjZWl2ZWQgYSBtLnNlY3JldC5z +ZW5kIGV2ZW50AACE0BAAHgAAADTNEAB8AAAApQMAABUAAABSZWNlaXZlZCBhIG0uc2VjcmV0LnNl +bmQgZXZlbnQgYnV0IHRoZSByZXF1ZXN0IHdhcyBmb3IgYSByb29tIGtleQAAALzQEABBAAAAc2Vj +cmV0X25hbWUANM0QAHwAAAC6AwAADQAAAFJlY2VpdmVkIGEgbS5zZWNyZXQuc2VuZCBldmVudCwg +YnV0IG5vIG1hdGNoaW5nIHJlcXVlc3Qgd2FzIGZvdW5kAAAAJNEQAEEAAAA0zRAAfAAAAPADAAAp +AAAANM0QAHwAAAADBAAADQAAAFJlY2VpdmVkIGEgZm9yd2FyZGVkIHJvb20ga2V5IHdpdGggYW4g +dW5zdXBwb3J0ZWQgYWxnb3JpdGhtAJDREAA7AAAAGwEAAAwAAAAEAAAAmAAAADTNEAB8AAAAAQQA +AEAAAAA0zRAAfAAAAA4EAAANAAAAUmVjZWl2ZWQgYSBmb3J3YXJkZWQgcm9vbSBrZXkgdGhhdCB3 +ZSBkaWRuJ3QgcmVxdWVzdATSEAA0AAAANM0QAHwAAAAcBAAADQAAAFJlY2VpdmVkIGEgZm9yd2Fy +ZGVkIHJvb20ga2V5IGZyb20gYW4gdW5rbm93biBkZXZpY2UsIG9yIGZyb20gYSBkZXZpY2UgdGhh +dCB0aGUga2V5IHJlcXVlc3QgcmVjaXBpZW50IGRvZXNuJ3Qgb3duAAAAUNIQAHEAAAA0zRAAfAAA +AKsBAAAlAAAANM0QAHwAAACyAQAADQAAAFJlY2VpdmVkIGEga2V5IHJlcXVlc3QgZnJvbSBhbiB1 +bmtub3duIGRldmljZQAAAOzSEAAtAAAANM0QAHwAAADDAQAAFQAAAFJlY2VpdmVkIGEga2V5IHJl +cXVlc3QgZnJvbSBhIGRldmljZSB0aGF0IGNoYW5nZWQgdGhlaXIgQ3VydmUyNTUxOSBzZW5kZXIg +a2V5AAAANNMQAE0AAAA0zRAAfAAAAMgBAAAVAAAAUmVjZWl2ZWQgYSBrZXkgcmVxdWVzdCB0aGF0 +IHdlIHdvbid0IHNlcnZlAACc0xAAKgAAABYBAAAEAAAABAAAAPAAAAA0zRAAfAAAAIwBAAAJAAAA +U2VydmluZyBhIHJvb20ga2V5IHJlcXVlc3QAAPDTEAAaAAAAFgEAAAQAAAAEAAAA8QAAADTNEAB8 +AAAAiwEAACUAAAA0zRAAfAAAAJkBAAARAAAAQ2FuJ3Qgc2VydmUgYSByb29tIGtleSByZXF1ZXN0 +LCB0aGUgc2Vzc2lvbiBjYW4ndCBiZSBleHBvcnRlZCBpbnRvIGEgZm9yd2FyZGVkIHJvb20ga2V5 +OiAAAABE1BAAWQAAADTNEAB8AAAAkQEAABEAAABLZXkgcmVxdWVzdCBpcyBtaXNzaW5nIGFuIE9s +bSBzZXNzaW9uLCBwdXR0aW5nIHRoZSByZXF1ZXN0IGluIHRoZSB3YWl0IHF1ZXVluNQQAEwAAAA0 +zRAAfAAAAOYDAAARAAAAQ291bGRuJ3QgY3JlYXRlIGEgZ3JvdXAgc2Vzc2lvbiBmcm9tIGEgcmVj +ZWl2ZWQgcm9vbSBrZXkc1RAAOAAAADTNEAB8AAAAxgMAAEAAAAA0zRAAfAAAANkDAAAVAAAAUmVj +ZWl2ZWQgYSBmb3J3YXJkZWQgcm9vbSBrZXkgYnV0IHdlIGFscmVhZHkgaGF2ZSBhIGJldHRlciB2 +ZXJzaW9uIG9mIGl0fNUQAEgAAAAWAQAABAAAAAQAAADyAAAANM0QAHwAAADOAwAAFQAAAFJlY2Vp +dmVkIGEgZm9yd2FyZGVkIHJvb20ga2V5AAAA7NUQAB0AAAA0zRAAfAAAADcEAAARAAAANM0QAHwA +AAAtBAAAQAAAADTNEAB8AAAACQMAACkAAAA0zRAAfAAAANQBAAAFAAAANM0QAHwAAADpAQAADQAA +AFJlY2VpdmVkIGEgcm9vbSBrZXkgcmVxdWVzdCBmb3IgYW4gdW5rbm93biBpbmJvdW5kIGdyb3Vw +IHNlc3Npb25k1hAAQAAAADTNEAB8AAAA5wAAAEYAAAA0zRAAfAAAAOMAAAAiAAAAGwEAAAwAAAAE +AAAAHAEAAB0BAACkAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9y +IHVuZXhwZWN0ZWRseQAXAQAAAAAAAAEAAAAeAQAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJi +NjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzACzXEABLAAAA +MwoAAA4AAAAXAQAAAAAAAAEAAAAfAQAAFwEAAAAAAAABAAAAIAEAACEBAAAEAAAABAAAAKoAAABj +YWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlACIBAAAIAAAABAAAAK4A +AAAjAQAACAAAAAQAAACuAAAAIgEAAAgAAAAEAAAArgAAACQBAAAIAAAABAAAAK4AAAAlAQAACAAA +AAQAAACuAAAAJgEAAAgAAAAEAAAArgAAACcBAAAIAAAABAAAAK4AAAAoAQAACAAAAAQAAACuAAAA +KQEAAAgAAAAEAAAArgAAACIBAAAIAAAABAAAAK4AAAAqAQAACAAAAAQAAAC0AAAAIgEAAAgAAAAE +AAAArgAAACIBAAAIAAAABAAAAK4AAABFcnJvci9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkv +c3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3Rva2lvLTEuMzYuMC9zcmMvc3lu +Yy9tdXRleC5ycwAAALnYEABgAAAAsgEAADMAAAC52BAAYAAAALMBAAAbAAAAudgQAGAAAACLAgAA +HQAAALnYEABgAAAAkQIAAA0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl +eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMvcndsb2Nr +LnJzAAAAXNkQAGEAAABBAgAASQAAAFzZEABhAAAARQIAABsAAABc2RAAYQAAAEkCAAARAAAAXNkQ +AGEAAACJAwAASwAAAFzZEABhAAAAjQMAABsAAABc2RAAYQAAAJEDAAARAAAAXNkQAGEAAACwAQAA +OAAAAFzZEABhAAAAsQEAABsAAABc2RAAYQAAALUBAAARAAAAXNkQAGEAAAAFAwAAOgAAAFzZEABh +AAAABgMAABsAAABc2RAAYQAAAAoDAAARAAAATm9uZVNvbWUWAQAABAAAAAQAAAC1AAAAQWJvcnRl +ZFRyeUZyb21JbnRFcnJvcgAAFgEAAAQAAAAEAAAAtgAAAEV2ZW50RXJyb3IAABYBAAAEAAAABAAA +AAEBAABKc29uRXJyb3IAAAAWAQAABAAAAAQAAADGAAAAU2Vzc2lvbkNyZWF0aW9uABYBAAAEAAAA +BAAAAAIBAABTZXNzaW9uRXhwb3J0AAAAFgEAAAQAAAAEAAAAAwEAAFN0b3JlAAAAFgEAAAQAAAAE +AAAAvwAAAFNlc3Npb25XZWRnZWQAAAArAQAACAAAAAQAAAAFAQAAFgEAAAQAAAAEAAAABgEAAFJl +cGxheWVkTWVzc2FnZU1pc3NpbmdTZXNzaW9uAAAALAEAAE9uZVRpbWVLZXlOb3RTaWduZWQAFgEA +AAQAAAAEAAAACQEAAE9uZVRpbWVLZXlNaXNzaW5nT25lVGltZUtleVVua25vd25JbnZhbGlkU2ln +bmF0dXJlb25lX3RpbWVfa2V5AAAtAQAABAAAAAQAAAALAQAAc2lnbmluZ19rZXkALgEAAAQAAAAE +AAAALwEAAGVycm9yAAAAFgEAAAQAAAAEAAAADAEAAERldmljZU1pc3NpbmdDdXJ2ZUtleUludmFs +aWRKc29uSW52YWxpZEN1cnZlS2V5ABYBAAAEAAAABAAAALoAAABJbmJvdW5kQ3JlYXRpb24AFgEA +AAQAAAAEAAAADQEAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRl +cy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvc2VyLnJzAKzcEABf +AAAAogIAACoAAABBY2NvdW50VW5zZXRNaXNtYXRjaGVkQWNjb3VudGV4cGVjdGVkAAAAMAEAABAA +AAAEAAAAwQAAAGdvdAAWAQAABAAAAAQAAADCAAAASW8AABYBAAAEAAAABAAAAMMAAABVbnBpY2ts +aW5nRXJyb3JQaWNrbGUAAAAWAQAABAAAAAQAAADEAAAAFgEAAAQAAAAEAAAAxQAAAElkZW50aWZp +ZXJWYWxpZGF0aW9uFgEAAAQAAAAEAAAAuAAAAFNlcmlhbGl6YXRpb25VbnN1cHBvcnRlZERhdGFi +YXNlVmVyc2lvbgAWAQAABAAAAAQAAAAxAQAAFgEAAAQAAAAEAAAAyAAAAEJhY2tlbmQAFgEAAAQA +AAAEAAAAyQAAAEludmFsaWRMb2NrR2VuZXJhdGlvbgAAABYBAAAEAAAABAAAAMoAAABBbGdvcml0 +aG0AAAAWAQAABAAAAAQAAAAQAQAATWlzc2luZ0VkMjU1MTlLZXkAAAD//////////5DeEABBqL3D +AAvjSE1heWJlRG9uZSBwb2xsZWQgYWZ0ZXIgdmFsdWUgdGFrZW4vaG9tZS9ydW5uZXIvLmNhcmdv +L3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9mdXR1cmVzLXV0 +aWwtMC4zLjMwL3NyYy9mdXR1cmUvbWF5YmVfZG9uZS5yc8reEABuAAAAYwAAACQAAAAyAQAAAAAA +AAEAAAAzAQAAMgEAAAAAAAABAAAANAEAAG1hcCB3aXRoIGEgc2luZ2xlIGtleQAAAGjfEAAVAAAA +NQEAAAgAAAAEAAAABAAAAHN0cmluZyBvciBtYXAAAACY3xAADQAAADIBAAAAAAAAAQAAADYBAAAy +AQAAAAAAAAEAAAA3AQAAMgEAAAAAAAABAAAAOAEAADIBAAAAAAAAAQAAADkBAAAyAQAAAAAAAAEA +AAA6AQAAMgEAAAAAAAABAAAAOwEAADIBAAAAAAAAAQAAADwBAAAyAQAAAAAAAAEAAAA9AQAAMgEA +AAAAAAABAAAAPgEAADUBAAAQAAAABAAAAD8BAAAyAQAAAAAAAAEAAABAAQAAMgEAAAAAAAABAAAA +QQEAADIBAAAAAAAAAQAAAEIBAAAyAQAAAAAAAAEAAABDAQAAMgEAAAAAAAABAAAARAEAADIBAAAA +AAAAAQAAAEUBAABmdXR1cmUgc3RpbGwgaGVyZSB3aGVuIGRyb3BwaW5nbS5yb29tX2tleW0uZm9y +d2FyZGVkX3Jvb21fa2V5bS5zZWNyZXQuc2VuZG0uZHVtbXlIZWxwZXJ0eXBlAAfhEAAEAAAATWVn +b2xtVjFBZXNTaGEyADUBAAAEAAAABAAAAEYBAAAyAQAAAAAAAAEAAABHAQAAMgEAAAAAAAABAAAA +SAEAADIBAAAAAAAAAQAAAEkBAAAyAQAAAAAAAAEAAABKAQAAMgEAAAAAAAABAAAASwEAAERlY3J5 +cHRlZE9sbVYxRXZlbnRzZW5kZXIAAABMAQAACAAAAAQAAAAFAQAAcmVjaXBpZW50a2V5cwAAADUB +AADAAAAABAAAAE0BAAByZWNpcGllbnRfa2V5c2NvbnRlbnQAAAA1AQAABAAAAAQAAABOAQAATWVn +b2xtVjFBZXNTaGEyQ29udGVudHJvb21faWQAAABMAQAACAAAAAQAAAAFAQAAc2VuZGVyX2tleQAA +TwEAACAAAAABAAAAUAEAAHNlc3Npb25faWQAADUBAAAEAAAABAAAAMoAAABhc3NlcnRpb24gZmFp +bGVkOiBwcmV2L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlv +LTZmMTdkMjJiYmExNTAwMWYvZnV0dXJlcy11dGlsLTAuMy4zMC9zcmMvc3RyZWFtL2Z1dHVyZXNf +dW5vcmRlcmVkL21vZC5ycwB24hAAeQAAANEBAAANAAAAaW5jb25zaXN0ZW50IGluIGRyb3BRAQAA +UgEAAFMBAABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABaAQAAWwEAAFwBAABdAQAAXgEAAF8BAABg +AQAAYQEAAGIBAABjAQAAZAEAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNv +ZGXK3hAAbgAAAEkAAAAWAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXgu +Y3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvZnV0dXJlcy11dGlsLTAuMy4zMC9zcmMvZnV0dXJl +L2pvaW5fYWxsLnJzYXNzZXJ0aW9uIGZhaWxlZDogc2xvdC5pc19ub25lKCkvaG9tZS9ydW5uZXIv +LmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9mdXR1 +cmVzLWNoYW5uZWwtMC4zLjMwL3NyYy9vbmVzaG90LnJzACjkEABnAAAAggAAAA0AAABhIHNlcXVl +bmNlT3ZlcmxvbmcgZHVyYXRpb24vaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0 +cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1j +b21tb24vc3JjL3RpbWVvdXQucnMAAAC75BAAcgAAADQAAABEAAAAu+QQAHIAAAAtAAAAAQAAAGBh +c3luYyBmbmAgcmVzdW1lZCBhZnRlciBjb21wbGV0aW9uRmllbGRTZXQgY29ycnVwdGVkICh0aGlz +IGlzIGEgYnVnKS9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1z +ZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMv +aWRlbnRpdGllcy9tYW5hZ2VyLnJzAACV5RAAfQAAAOMDAAAFAAAANQEAAAQAAAAEAAAAZQEAADUB +AAAEAAAABAAAAIQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1 +c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8v +c3JjL3N0b3JlL21vZC5yc0TmEAB0AAAAgQAAAFEAAABE5hAAdAAAAJYAAABDAAAAROYQAHQAAACy +AAAAJQAAAETmEAB0AAAA1AAAABEAAABUaGUgdXNlciBoYXMgYSBwZW5kaW5nIGAva2V5L3F1ZXJ5 +YCByZXF1ZXN0IHdoaWNoIGRpZCBub3QgZmluaXNoIHlldCwgc29tZSBkZXZpY2VzIG1pZ2h0IGJl +IG1pc3Npbmcu+OYQAGQAAAA1AQAAGAAAAAQAAACCAAAAROYQAHQAAAAZBAAAOQAAAETmEAB0AAAA +ogMAAEEAAABBY3Rpb25hY3Rpb25ib2R5mucQAAYAAACg5xAABAAAAFRvRGV2aWNlQ3VzdG9tRXZl +bnQAl+EQAAYAAACw4RAACQAAALnhEAAEAAAA0OEQAA4AAAAH4RAABAAAAJfhEAAGAAAAsOEQAAkA +AAC54RAABAAAANDhEAAOAAAA3uEQAAcAAABzdHJ1Y3QgQ2lwaGVydGV4dEluZm8gd2l0aCAyIGVs +ZW1lbnRzAAAAGOgQACUAAABuYW1lY2lwaGVydGV4dGRldmljZV9pZHN0cnVjdCBNZWdvbG1WMUFl +c1NoYTJDb250ZW50IHdpdGggNCBlbGVtZW50c1/oEAAtAAAAYSBtYXBzdHJ1Y3QgT2xtVjFDdXJ2 +ZTI1NTE5QWVzU2hhMkNvbnRlbnQgd2l0aCAyIGVsZW1lbnRzAAAAmegQADQAAABldmVudF9pZGlz +X2ZhbGxpbmdfYmFja3N0cnVjdCBUaHJlYWREZUhlbHBlciB3aXRoIDIgZWxlbWVudHPv6BAAJQAA +AHN0cnVjdCBSZXBsYWNlbWVudEpzb25SZXByIHdpdGggMSBlbGVtZW50AAAAHOkQACkAAABhbGdv +cml0aG1yZXF1ZXN0X2NhbmNlbGxhdGlvbnJlcXVlc3RZ6RAAFAAAAG3pEAAHAAAAQ2FuY2VsbGF0 +aW9uaW8uZWxlbWVudC5zaG93X3JlcGx5c3RydWN0IFRocmVhZFVuc3RhYmxlRGVIZWxwZXIgd2l0 +aCAyIGVsZW1lbnRzAACl6RAALQAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgMtzpEAAYAAAAc3Ry +dWN0IERlY3J5cHRlZE9sbVYxRXZlbnRyZXF1ZXN0aW5nX2RldmljZV9pZHJlcXVlc3RfaWRmAQAA +DAAAAAQAAABnAQAAaAEAAKQAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4g +ZXJyb3IgdW5leHBlY3RlZGx5ADIBAAAAAAAAAQAAAGkBAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1 +NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAlOoQ +AEsAAAAzCgAADgAAAHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMgYSByZWxlYXNlIGxvYWTw6hAA +KAAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJh +cnkvY29yZS9zcmMvc3luYy9hdG9taWMucnMAIOsQAE8AAADgDAAAGAAAAHRoZXJlIGlzIG5vIHN1 +Y2ggdGhpbmcgYXMgYW4gYWNxdWlyZS1yZWxlYXNlIGxvYWQAAACA6xAAMQAAACDrEABPAAAA4QwA +ABcAAAAyAQAAAAAAAAEAAABqAQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJy +YCB2YWx1ZQBrAQAACAAAAAQAAAC0AAAARXJyb3IvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2 +NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlf +aGVhcC9tb2QucnMAAAAd7BAAYAAAAHoBAAAZAAAANQEAABAAAAAEAAAAbAEAADUBAAAQAAAABAAA +AG0BAAAyAQAAAAAAAAEAAAACAAAAMgEAAAAAAAABAAAAbgEAAC9ob21lL3J1bm5lci8uY2FyZ28v +cmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3Rva2lvLTEuMzYu +MC9zcmMvc3luYy9tdXRleC5yc9DsEABgAAAAsgEAADMAAADQ7BAAYAAAALMBAAAbAAAA0OwQAGAA +AACLAgAAHQAAANDsEABgAAAAkQIAAA0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3Ny +Yy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMv +cndsb2NrLnJzAAAAcO0QAGEAAABBAgAASQAAAHDtEABhAAAARQIAABsAAABw7RAAYQAAAEkCAAAR +AAAAcO0QAGEAAACwAQAAOAAAAHDtEABhAAAAsQEAABsAAABw7RAAYQAAALUBAAARAAAAcO0QAGEA +AAAFAwAAOgAAAHDtEABhAAAABgMAABsAAABw7RAAYQAAAAoDAAARAAAATm9uZVNvbWU1AQAABAAA +AAQAAABvAQAANQEAAAQAAAAEAAAAcAEAAFRyeUZyb21JbnRFcnJvcgA1AQAABAAAAAQAAAC2AAAA +UndMb2NrZGF0YQAANQEAAAQAAAAEAAAAcQEAADxsb2NrZWQ+yO4QAAgAAAA1AQAAGAAAAAQAAABy +AQAAcG9pc29uZWRPAQAAAQAAAAEAAABzAQAANQEAAAQAAAAEAAAAdAEAADUBAAAEAAAABAAAAHUB +AAA1AQAABAAAAAQAAAB2AQAANQEAAAQAAAAEAAAAdwEAADUBAAAEAAAABAAAAHgBAAA1AQAABAAA +AAQAAAB5AQAANQEAAAQAAAAEAAAAegEAADUBAAAEAAAABAAAAHsBAAA1AQAABAAAAAQAAAB8AQAA +NQEAAAQAAAAEAAAAfQEAADUBAAAEAAAABAAAAH4BAAA1AQAABAAAAAQAAAB/AQAANQEAAAQAAAAE +AAAAgAEAADUBAAAEAAAABAAAAIEBAAA1AQAABAAAAAQAAACCAQAAQmFja3VwS2V5c2RlY3J5cHRp +b25fa2V5gwEAAAQAAAAEAAAAhAEAAGJhY2t1cF92ZXJzaW9uAAA1AQAABAAAAAQAAACFAQAAVHJh +Y2tlZFVzZXJ1c2VyX2lkZGlydHkANQEAAAQAAAAEAAAAhgEAAFJvb21TZXR0aW5nc4cBAAAMAAAA +BAAAAIgBAABvbmx5X2FsbG93X3RydXN0ZWRfZGV2aWNlc3Nlc3Npb25fcm90YXRpb25fcGVyaW9k +AAAAiQEAABAAAAAIAAAAigEAAHNlc3Npb25fcm90YXRpb25fcGVyaW9kX21lc3NhZ2VzNQEAAAQA +AAAEAAAAiwEAAEtleQA1AQAABAAAAAQAAAC6AAAATWlzbWF0Y2hlZFB1YmxpY0tleXNTdG9yZQAA +ADUBAAAEAAAABAAAAL8AAAB2YWx1ZSBpcyBtaXNzaW5n/////y9ydXN0Yy9hZWRkMTczYTJjMDg2 +ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy9zeXMvcGFsL3dhc20v +Li4vdW5zdXBwb3J0ZWQvbG9ja3Mvcndsb2NrLnJzAETxEABrAAAAPwAAAAkAAABPbG1WMUtleXNl +ZDI1NTE5NQEAAAQAAAAEAAAAjAEAAJzjEABsAAAAlwAAAE4AAABjYXBhY2l0eSBvdmVyZmxvdwAA +APDxEAARAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcv +bGlicmFyeS9hbGxvYy9zcmMvdmVjL3NwZWNfZnJvbV9pdGVyX25lc3RlZC5ycwAADPIQAF4AAAA7 +AAAAEgAAAGFycmF5IGNvbnRhaW5zIGEgdmFsdWUgb2YgdGhlIHdyb25nIHR5cGWNAQAABAAAAAQA +AADQAAAAjQEAAAQAAAAEAAAAqgAAANAAAACk8hAAjgEAAI8BAACQAQAAkQEAAJIBAACTAQAAFAAA +AAQAAACUAQAAkwEAABQAAAAEAAAAlQEAAJQBAADg8hAAlgEAAJcBAACQAQAAmAEAAJIBAABtLm1l +Z29sbV9iYWNrdXAudjEuY3VydmUyNTUxOS1hZXMtc2hhMgAAmQEAAAAAAAABAAAAFAAAAJkBAAAA +AAAAAQAAAJoBAACZAQAAAAAAAAEAAACbAQAAmQEAAAAAAAABAAAAKwAAAJkBAAAAAAAAAQAAAJwB +AACZAQAAAAAAAAEAAACdAQAAmQEAAAAAAAABAAAAngEAAJkBAAAAAAAAAQAAAJ8BAACZAQAAAAAA +AAEAAACgAQAAmQEAAAAAAAABAAAAoQEAAGFsZ29yaXRobWF1dGhfZGF0YXNlbmRlcl9rZXlzZXNz +aW9uX2tleXNlbmRlcl9jbGFpbWVkX2tleXNmb3J3YXJkaW5nX2N1cnZlMjU1MTlfa2V5X2NoYWlu +cGlja2xlZF9zZXNzaW9ubmVlZHNfYmFja3VwZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1 +c2UgRGlzcGxheaIBAAAIAAAABAAAAKMBAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQz +NzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzkPQQAEwAAACgCwAA +DQAAAFNlcmlhbGl6YXRpb24AAACkAQAABAAAAAQAAAClAQAARGVzZXJpYWxpemF0aW9uAKQBAAAE +AAAABAAAAKYBAABKc29upAEAAAQAAAAEAAAAxgAAAEVuY3J5cHRpb24AAKQBAAAEAAAABAAAAKcB +AABSYW5kb20AAKQBAAAEAAAABAAAAKgBAABWZXJzaW9uAKkBAAABAAAAAQAAAKoBAACkAQAABAAA +AAQAAACrAQAATGVuZ3RoAACkAQAABAAAAAQAAACsAQAApAEAAAQAAAAEAAAAyAAAAEtkZk1pc21h +dGNoQ291bGRuJ3QgZGVzZXJpYWxpemUgaTY0IG9yIHU2NCBmcm9tIGEgQmlnSW50IG91dHNpZGUg +aTY0OjpNSU4uLnU2NDo6TUFYIGJvdW5kcy9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3 +NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaXRlci5ycx72EABOAAAA1gUA +ABUAAAAAAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVyby9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2l0ZXJ0b29scy0wLjEy +LjEvc3JjL2dyb3VwYnlsYXp5LnJzAACZ9hAAZQAAADMCAAAtAAAAmfYQAGUAAAAIAgAAFAAAAJn2 +EABlAAAAAwIAABQAAABzcmMvYmFja3VwLnJzc2Vzc2lvbiBjcmVhdGlvbiB0aW1lIG91dCBvZiBy +YW5nZXNlc3Npb24gbGFzdC11c2UgdGltZSBvdXQgb2YgcmFuZ2VSb29tIElEIG5vdCBzcGVjaWZp +ZWQgZm9yIG1lZ29sbSBzZXNzaW9uQ2FuJ3QgZ2F0aGVyIGVub3VnaCByYW5kb21uZXNzIHRvIGNy +ZWF0ZSBhIHJlY292ZXJ5IGtleTD3EAANAAAALwAAABIAAAB9ZmFsc2V0cnVlbnVsbFt7LDpdL2hv +bWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmEx +NTAwMWYvZnV0dXJlcy11dGlsLTAuMy4zMC9zcmMvZnV0dXJlL2Z1dHVyZS9yZW1vdGVfaGFuZGxl +LnJzAAP4EAB4AAAAYgAAAB0AAAAD+BAAeAAAAG0AAAAdAAAArQEAAAAAAAABAAAArgEAAK8BAAAM +AAAABAAAALABAACxAQAApAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBl +cnJvciB1bmV4cGVjdGVkbHkArQEAAAAAAAABAAAAsgEAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1 +OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAM+RAA +SwAAADMKAAAOAAAAY2FuIG5vdCBjb252ZXJ0IGZsb2F0IHNlY29uZHMgdG8gRHVyYXRpb246IHZh +bHVlIGlzIG5lZ2F0aXZlY2FuIG5vdCBjb252ZXJ0IGZsb2F0IHNlY29uZHMgdG8gRHVyYXRpb246 +IHZhbHVlIGlzIGVpdGhlciB0b28gYmlnIG9yIE5hTi9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMy +YjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvdGltZS5ycwAAAO35EABIAAAA ++gIAABcAAACzAQAABAAAAAQAAACoAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBg +RXJyYCB2YWx1ZQC0AQAABAAAAAQAAACqAAAARXJyb3IvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThj +MmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJl +ZS9uYXZpZ2F0ZS5yc5n6EABfAAAAxwAAACcAAACZ+hAAXwAAABcCAAAvAAAAmfoQAF8AAAAjAgAA +NAAAAJn6EABfAAAAogAAACQAAACZ+hAAXwAAAKcAAAAjAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVy +ZWQgdW5yZWFjaGFibGUgY29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4 +LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvc2VyLnJz +AHD7EABfAAAAfQIAACoAAABw+xAAXwAAAJQCAAAqAAAAcPsQAF8AAACiAgAAKgAAAHD7EABfAAAA ++gEAACoAAABw+xAAXwAAAAgCAAAqAAAAZXhwZWN0ZWQgUmF3VmFsdWUvcnVzdGMvYWVkZDE3M2Ey +YzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0 +aW9ucy9idHJlZS9tYXAucnMAMfwQAFoAAADmAAAALAAAADH8EABaAAAA+gAAAD8AAAAx/BAAWgAA +AB8BAAAuAAAAc3JjL3JlcXVlc3RzLnJzALz8EAAPAAAA2QEAAEEAAABtYXN0ZXJfa2V5AAC8/BAA +DwAAAEUCAABDAAAAc2VsZl9zaWduaW5nX2tlebz8EAAPAAAASQIAAEkAAAB1c2VyX3NpZ25pbmdf +a2V5vPwQAA8AAABNAgAASQAAAGRldmljZV9pZAAAALz8EAAPAAAAcwIAAD4AAABpbml0aWFsX2Rl +dmljZV9kaXNwbGF5X25hbWUAvPwQAA8AAAB4AgAATAAAAGRldmljZV9kYXRhALz8EAAPAAAAfQIA +AEAAAABkZXZpY2Vfa2V5cwC8/BAADwAAAIECAABAAAAAb25lX3RpbWVfa2V5cwAAALz8EAAPAAAA +hgIAAEYAAABmYWxsYmFja19rZXlzAAAAvPwQAA8AAACMAgAARgAAAFRvIGJ1aWxkIGFuIGBPbG1N +YWNoaW5lYCwgcGxlYXNlIHVzZSB0aGUgYGluaXRpYWxpemVgIG1ldGhvZHNyYy9tYWNoaW5lLnJz +UHJlZGljYXRlIGZ1bmN0aW9uIHBhc3NlZCB0byBgZXhwb3J0X3Jvb21fa2V5c2AgZmFpbGVkNP4Q +AA4AAACUAwAAHgAAAGV2ZW50IHNyYy9tYWNoaW5lLnJzOjE1MDhtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjptYWNoaW5lbWVzc2FnZQDA/hAABwAAALUBAAAMAAAABAAAALYBAAC3AQAAuAEAAAEAAADk +BQAAAwAAAIj+EAAZAAAAof4QAB8AAADI/hAAAQAAAEC7FgDQ/hAAof4QAB8AAAA0/hAADgAAAAEA +AABldmVudCBzcmMvbWFjaGluZS5yczoxNTI1AAAAAQAAAPUFAAADAAAAKP8QABkAAACh/hAAHwAA +AMj+EAABAAAATLsWAND+EACh/hAAHwAAADT+EAAOAAAAAQAAAGV2ZW50IHNyYy9tYWNoaW5lLnJz +OjE1NTQAAAABAAAAEgYAAAMAAACE/xAAGQAAAKH+EAAfAAAAyP4QAAEAAABYuxYA0P4QAKH+EAAf +AAAANP4QAA4AAAABAAAAZXZlbnQgc3JjL21hY2hpbmUucnM6MTU3MQAAAAEAAAAjBgAAAwAAAOD/ +EAAZAAAAof4QAB8AAADI/hAAAQAAAGS7FgDQ/hAAof4QAB8AAAA0/hAADgAAAAEAAAC8/BAADwAA +AJwBAAABAAAAvPwQAA8AAACdAQAAAQAAAHRpbWVvdXQAvPwQAA8AAACeAQAAAQAAALz8EAAPAAAA +nwEAAAEAAAC8/BAADwAAAKEBAAABAAAAcm9vbXNpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkbG9j +ayBwb2lzb25lZC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p +by02ZjE3ZDIyYmJhMTUwMDFmL3RyYWNpbmctc3Vic2NyaWJlci0wLjMuMTgvc3JjL3JlbG9hZC5y +c78AEQBpAAAAiwAAAAkAAAC/ABEAaQAAAMgAAAAUAAAAvwARAGkAAACzAAAACQAAAL8AEQBpAAAA +mgAAAAkAAAC/ABEAaQAAALgAAAAJAAAAvwARAGkAAACVAAAACQAAAL8AEQBpAAAAgQAAAAkAAAC/ +ABEAaQAAAIYAAAAJAAAAvwARAGkAAACpAAAACQAAAL8AEQBpAAAArgAAAAkAAAC/ABEAaQAAAKQA +AAAJAAAAvwARAGkAAACfAAAACQAAAL8AEQBpAAAAfAAAAAkAAAC/ABEAaQAAAJAAAAAJAAAAugEA +AAAAAAABAAAAuwEAALoBAAAAAAAAAQAAALwBAAC6AQAAAAAAAAEAAAC9AQAAvgEAAEgAAAAIAAAA +vwEAAMABAABIAAAACAAAAMEBAADCAQAASAAAAAgAAADDAQAAxAEAAKAAAAAEAAAAxQEAAMYBAADH +AQAAyAEAAMkBAADKAQAAywEAAMwBAADNAQAAzgEAAM8BAADQAQAA0QEAANIBAADTAQAA1AEAANUB +AACoAAAABAAAAMUBAADWAQAA1wEAANgBAADZAQAA2gEAANsBAADcAQAA3QEAAN4BAADfAQAA4AEA +AOEBAADiAQAA0wEAAOMBAAD//////////wADEQBBmIbEAAt9L2hvbWUvcnVubmVyLy5jYXJnby9y +ZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdG9raW8tc3RyZWFt +LTAuMS4xNS9zcmMvd3JhcHBlcnMvYnJvYWRjYXN0LnJzABgDEQBvAAAAKAAAAFwAQaCHxAALkDlg +YXN5bmMgZm5gIHJlc3VtZWQgYWZ0ZXIgY29tcGxldGlvbgDkAQAAsAAAAAQAAADFAQAA5QEAAOYB +AADnAQAA6AEAAOkBAADqAQAA6wEAAOwBAADtAQAA7gEAAO8BAADwAQAA8QEAANMBAADyAQAA8wEA +ACAAAAAEAAAA9AEAAPMBAAAgAAAABAAAAPUBAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL3RyYWl0cy5ycwAwBBEAdwAAAHsBAAApAAAA9gEAABgA +AAAEAAAA9wEAAPYBAAAYAAAABAAAAPgBAAAwBBEAdwAAADsBAABgAAAA+QEAABAAAAAEAAAA+gEA +APkBAAAQAAAABAAAAPsBAAAwBBEAdwAAACsBAAA9AAAA/AEAAAABAAAIAAAA/QEAAPwBAAAAAQAA +CAAAAP4BAAAwBBEAdwAAADMBAABCAAAA+QEAABAAAAAEAAAA/wEAAPkBAAAQAAAABAAAAAACAAAw +BBEAdwAAAC8BAABSAAAA9gEAABgAAAAEAAAAAQIAAPYBAAAYAAAABAAAAAICAAAwBBEAdwAAALsB +AABZAAAA9gEAABgAAAAEAAAAAwIAAPYBAAAYAAAABAAAAAQCAAAwBBEAdwAAAIIBAAA5AAAABQIA +ABQAAAAEAAAABgIAAAUCAAAUAAAABAAAAAcCAAAwBBEAdwAAAIoBAABVAAAA+QEAABAAAAAEAAAA +CAIAAPkBAAAQAAAABAAAAAkCAAAwBBEAdwAAAGQBAAA8AAAA+QEAABAAAAAEAAAACgIAAPkBAAAQ +AAAABAAAAAsCAAAwBBEAdwAAANABAABNAAAADAIAACQAAAAEAAAADQIAAAwCAAAkAAAABAAAAA4C +AAAwBBEAdwAAAL8BAABcAAAA9gEAABgAAAAEAAAADwIAAPYBAAAYAAAABAAAABACAAAwBBEAdwAA +ALcBAABZAAAA9gEAABgAAAAEAAAAEQIAAPYBAAAYAAAABAAAABICAAAwBBEAdwAAAIYBAABjAAAA +8wEAACAAAAAEAAAAEwIAAPMBAAAgAAAABAAAABQCAAAwBBEAdwAAALMBAAA8AAAA+QEAABAAAAAE +AAAAFQIAAPkBAAAQAAAABAAAABYCAAAwBBEAdwAAAG8BAABEAAAA+QEAABAAAAAEAAAAFwIAAPkB +AAAQAAAABAAAABgCAAAwBBEAdwAAAGABAAA2AAAA9gEAABgAAAAEAAAAGQIAAPYBAAAYAAAABAAA +ABoCAAAwBBEAdwAAAHMBAABRAAAA9gEAABgAAAAEAAAAGwIAAPYBAAAYAAAABAAAABwCAAAwBBEA +dwAAAMMBAABPAAAAHQIAAFAAAAAIAAAAHgIAAB0CAABQAAAACAAAAB8CAAAwBBEAdwAAADcBAABR +AAAAIAIAACQAAAAEAAAAIQIAACACAAAkAAAABAAAACICAAAwBBEAdwAAAMwBAAAkAAAABQIAABQA +AAAEAAAAIwIAAAUCAAAUAAAABAAAACQCAAAwBBEAdwAAAKcBAAAnAAAABQIAABQAAAAEAAAAJQIA +AAUCAAAUAAAABAAAACYCAAAwBBEAdwAAAKsBAABXAAAA8wEAACAAAAAEAAAAJwIAAPMBAAAgAAAA +BAAAACgCAAAwBBEAdwAAAEMBAAAuAAAA+QEAABAAAAAEAAAAKQIAAPkBAAAQAAAABAAAACoCAAAw +BBEAdwAAAEcBAABUAAAA9gEAABgAAAAEAAAAKwIAAPYBAAAYAAAABAAAACwCAAAwBBEAdwAAAGsB +AAAvAAAABQIAABQAAAAEAAAALQIAAAUCAAAUAAAABAAAAC4CAAAwBBEAdwAAAJgBAAAoAAAA+QEA +ABAAAAAEAAAALwIAAPkBAAAQAAAABAAAADACAAAwBBEAdwAAAJwBAABOAAAA9gEAABgAAAAEAAAA +MQIAAPYBAAAYAAAABAAAADICAAAwBBEAdwAAAJEBAAAoAAAA+QEAABAAAAAEAAAAMwIAAPkBAAAQ +AAAABAAAADQCAAAwBBEAdwAAAEsBAABLAAAA9gEAABgAAAAEAAAANQIAAPYBAAAYAAAABAAAADYC +AAAwBBEAdwAAAKABAABfAAAABQIAABQAAAAEAAAANwIAAAUCAAAUAAAABAAAADgCAAAwBBEAdwAA +AFIBAAArAAAA9gEAABgAAAAEAAAAOQIAAPYBAAAYAAAABAAAADoCAAAwBBEAdwAAAFkBAAAVAAAA +RW5jcnlwdGVkIGJ5IGEgZGV2aWNlIG5vdCB2ZXJpZmllZCBieSBpdHMgb3duZXIuRW5jcnlwdGVk +IGJ5IGFuIHVua25vd24gb3IgZGVsZXRlZCBkZXZpY2UuVGhlIGF1dGhlbnRpY2l0eSBvZiB0aGlz +IGVuY3J5cHRlZCBtZXNzYWdlIGNhbid0IGJlIGd1YXJhbnRlZWQgb24gdGhpcyBkZXZpY2UuRW5j +cnlwdGVkIGJ5IGFuIHVudmVyaWZpZWQgdXNlci5PdmVybG9uZyBkdXJhdGlvbi9ob21lL3J1bm5l +ci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9h +YjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNvbW1vbi9zcmMvdGltZW91dC5ycwBhCxEAcgAAADQA +AABEAAAAYQsRAHIAAAAtAAAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9t +YXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2Rr +LWNvbW1vbi9zcmMvZXhlY3V0b3IucnMA9AsRAHMAAAAsAAAAJwAAAEZpZWxkU2V0IGNvcnJ1cHRl +ZCAodGhpcyBpcyBhIGJ1ZykvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL2lkZW50aXRpZXMvbWFuYWdlci5ycwCaDBEAfQAAADMBAAAVAAAATWlzbWF0Y2ggaW4g +dGhlIGRldmljZSBrZXlzIHBheWxvYWQAKA0RACMAAAA7AgAAGAAAAAQAAACCAAAAOwIAAAQAAAAE +AAAAiAAAADsCAAAEAAAABAAAAIkAAACaDBEAfQAAAEABAAARAAAARGV2aWNlIGtleXMgZmFpbGVk +IHRvIGRlc2VyaWFsaXplAAAAlA0RACEAAAA7AgAABAAAAAQAAAA8AgAAmgwRAH0AAABKAwAAFQAA +AENyZWF0ZWQgYSAva2V5cy9xdWVyeSByZXF1ZXN0AAAA4A0RAB0AAAA7AgAABAAAAAQAAADsAAAA +OwIAAAQAAAAEAAAAPQIAAJoMEQB9AAAA4wMAAAUAAAA7AgAABAAAAAQAAABlAQAAOwIAAAQAAAAE +AAAAhAAAAG0ucm9vbV9rZXkud2l0aGhlbGRXZSBjYW4gYWx3YXlzIHNlcmlhbGl6ZSBhIHdpdGho +ZWxkIGNvbnRlbnQgaW5mby9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgt +cnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0 +by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL2dyb3VwX3Nlc3Npb25zLnJzAJoOEQCJAAAAcQIAACAAAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4 +MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL21vZC5y +czQPEQB0AAAAgQAAAFEAAAA0DxEAdAAAAJYAAABDAAAANA8RAHQAAACyAAAAJQAAADQPEQB0AAAA +1AAAABEAAABUaGUgdXNlciBoYXMgYSBwZW5kaW5nIGAva2V5L3F1ZXJ5YCByZXF1ZXN0IHdoaWNo +IGRpZCBub3QgZmluaXNoIHlldCwgc29tZSBkZXZpY2VzIG1pZ2h0IGJlIG1pc3Npbmcu6A8RAGQA +AAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDky +N2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL2Ny +eXB0b19zdG9yZV93cmFwcGVyLnJzAAAAVBARAIUAAACHAAAAFQAAAHNlY3JldHNfc3RyZWFtIG1p +c3NlZCAgdXBkYXRlcwAA7BARABYAAAACEREACAAAAFQQEQCFAAAAgwAAACQAAABUEBEAhQAAAJ0A +AAAVAAAAZGV2aWNlc19zdHJlYW0gbWlzc2VkIAAAPBERABYAAAACEREACAAAAFQQEQCFAAAAmQAA +ACQAAABUEBEAhQAAAHQAAAAVAAAAcm9vbV9rZXlzX3JlY2VpdmVkX3N0cmVhbSBtaXNzZWQgAAAA +hBERACEAAAACEREACAAAAFQQEQCFAAAAcAAAACQAAAA0DxEAdAAAABkEAAA5AAAANA8RAHQAAACi +AwAAQQAAAGZhaWxlZCB0byBzZXQgZ2xvYmFsIGRlZmF1bHQgc3Vic2NyaWJlci9ob21lL3J1bm5l +ci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3Ry +YWNpbmctc3Vic2NyaWJlci0wLjMuMTgvc3JjL3V0aWwucnMAAA8SEQBnAAAAWwAAAA4AAAC/ABEA +aQAAADkBAAAYAAAAPgIAAOQBAAAEAAAAPwIAAEACAACoAwAACAAAAEECAABCAgAA+AcAAAgAAABD +AgAARAIAAJgBAAAIAAAARQIAALoBAAAAAAAAAQAAAEYCAABHAgAASAIAAE9uY2UgaW5zdGFuY2Ug +aGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAA8BIRACoAAABvbmUtdGltZSBpbml0aWFsaXph +dGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVseSQTEQA4AAAAL3J1c3RjL2FlZGQx +NzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL3N5bmMv +b25jZS5yc2QTEQBMAAAA0AAAADEAAABkExEATAAAAJUAAAAyAAAASQIAAAQAAAAEAAAAqgAAALoB +AAAAAAAAAQAAAEoCAABLAgAACAAAAAQAAABMAgAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBv +biBhbiBgRXJyYCB2YWx1ZQBNAgAACAAAAAQAAAC0AAAATgIAAAgAAAAEAAAAtAAAAE8CAAAIAAAA +BAAAALQAAABQAgAABAAAAAQAAABRAgAAUgIAAAgAAAAEAAAAtAAAAEFyYyBjb3VudGVyIG92ZXJm +bG93fBQRABQAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFh +Ny9saWJyYXJ5L2FsbG9jL3NyYy9zeW5jLnJzAAAAmBQRAEkAAAAuBgAADQAAAJgUEQBJAAAA3AoA +AA0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYx +N2QyMmJiYTE1MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMvbXV0ZXgucnMEFREAYAAAALIBAAAz +AAAABBURAGAAAACzAQAAGwAAAAQVEQBgAAAAiwIAAB0AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJl +ZCB1bnJlYWNoYWJsZSBjb2RlBBURAGAAAACRAgAADQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3Rva2lvLTEuMzYuMC9z +cmMvc3luYy9yd2xvY2sucnMAAADMFREAYQAAAEECAABJAAAAzBURAGEAAABFAgAAGwAAAMwVEQBh +AAAASQIAABEAAADMFREAYQAAALABAAA4AAAAzBURAGEAAACxAQAAGwAAAMwVEQBhAAAAtQEAABEA +AADMFREAYQAAAAUDAAA6AAAAzBURAGEAAAAGAwAAGwAAAMwVEQBhAAAACgMAABEAAABicm9hZGNh +c3QgY2hhbm5lbCBjYXBhY2l0eSBjYW5ub3QgYmUgemVybwAAAMAWEQApAAAAYnJvYWRjYXN0IGNo +YW5uZWwgY2FwYWNpdHkgZXhjZWVkZWQgYHVzaXplOjpNQVggLyAyYPQWEQA0AAAAL2hvbWUvcnVu +bmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYv +dG9raW8tMS4zNi4wL3NyYy9zeW5jL2Jyb2FkY2FzdC5yczAXEQBkAAAAWwIAABgAAAAwFxEAZAAA +AFsCAAA4AAAAMBcRAGQAAADxBAAAOgAAAEVycm9yAAAAOwIAAAQAAAAEAAAAUwIAAFRyeUZyb21J +bnRFcnJvcgA7AgAABAAAAAQAAAC2AAAAVAIAAHACAAAIAAAAVAIAAHACAAAIAAAAVQIAAPwXEQD8 +FxEAVgIAAFcCAABYAgAAWQIAAFoCAABbAgAAXAIAAF0CAABeAgAAXwIAAGACAABhAgAAYgIAAGMC +AABkAgAAZQIAAGYCAABnAgAAaAIAAGkCAABqAgAAawIAAGwCAABtAgAAbgIAAG8CAABwAgAAcQIA +AHICAABzAgAAdAIAAHUCAAB2AgAASWRlbnRpdHlLZXlzZWQyNTUxOQA7AgAAwAAAAAQAAAB3AgAA +Y3VydmUyNTUxOQAAOwIAAAQAAAAEAAAABgEAAEtleVJlcXVlc3QAADsCAAAEAAAABAAAAHgCAABT +ZWNyZXRSZXF1ZXN0AAAAOwIAAAQAAAAEAAAAeQIAAEdvc3NpcFJlcXVlc3RyZXF1ZXN0X3JlY2lw +aWVudAAAegIAAAgAAAAEAAAABQEAAHJlcXVlc3RfaWQAAHoCAAAIAAAABAAAAHsCAABpbmZvfAIA +ADQAAAAEAAAAfQIAAHNlbnRfb3V0OwIAAAQAAAAEAAAAhgEAAEdvc3NpcHBlZFNlY3JldHNlY3Jl +dF9uYW1lAAB+AgAADAAAAAQAAAB/AgAAZ29zc2lwX3JlcXVlc3QAAIACAABIAAAABAAAAIECAABl +dmVudAAAADsCAAAEAAAABAAAAIICAABEZXZpY2VTdG9yZWVudHJpZXMAADsCAAAEAAAABAAAAIMC +AABTZXNzaW9uU3RvcmU7AgAABAAAAAQAAACEAgAATWlzc2luZ091dGJvdW5kU2Vzc2lvbk91dGJv +dW5kU2Vzc2lvbk5vdFNoYXJlZFVudHJ1c3RlZERldmljZUNoYW5nZWRTZW5kZXJLZXkAAACFAgAA +SAAAAAgAAACGAgAAhwIAAAQAAAAEAAAAiAIAAIkCAAAUAAAABAAAAIoCAACLAgAAFAAAAAQAAACM +AgAAjQIAACAAAAAEAAAAjgIAAI8CAAAUAAAABAAAAJACAACRAgAAKAAAAAgAAACSAgAAkwIAABQA +AAAEAAAAlAIAAJUCAAAoAAAACAAAAJYCAACXAgAAKAAAAAgAAACYAgAAmQIAACgAAAAIAAAAmgIA +AJsCAAAoAAAACAAAAJwCAACdAgAAKAAAAAgAAACeAgAAnwIAACgAAAAIAAAAoAIAAKECAAAoAAAA +CAAAAKICAACjAgAAKAAAAAQAAACkAgAApQIAACQAAAAEAAAApgIAADsCAAAEAAAABAAAAKcCAABN +ZW1vcnlTdG9yZWFjY291bnRzZXNzaW9uc2luYm91bmRfZ3JvdXBfc2Vzc2lvbnNvdXRib3VuZF9n +cm91cF9zZXNzaW9uc3ByaXZhdGVfaWRlbnRpdHl0cmFja2VkX3VzZXJzb2xtX2hhc2hlc2Rldmlj +ZXNpZGVudGl0aWVzb3V0Z29pbmdfa2V5X3JlcXVlc3Rza2V5X3JlcXVlc3RzX2J5X2luZm9kaXJl +Y3Rfd2l0aGhlbGRfaW5mb2N1c3RvbV92YWx1ZXNsZWFzZXNzZWNyZXRfaW5ib3hiYWNrdXBfa2V5 +c25leHRfYmF0Y2hfdG9rZW5yb29tX3NldHRpbmdzALcbEQAHAAAAvhsRAAgAAADGGxEAFgAAANwb +EQAXAAAA8xsRABAAAAADHBEADQAAABAcEQAKAAAAGhwRAAcAAAAhHBEACgAAACscEQAVAAAAQBwR +ABQAAABUHBEAFAAAAGgcEQANAAAAdRwRAAYAAAB7HBEADAAAAIccEQALAAAAkhwRABAAAACiHBEA +DQAAAEdyb3VwU2Vzc2lvblN0b3JlAAAAOwIAAAQAAAAEAAAAqAIAAC9ob21lL3J1bm5lci8uY2Fy +Z28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Z1dHVyZXMt +dXRpbC0wLjMuMzAvc3JjL2Z1dHVyZS9zZWxlY3QucnMAAGQdEQBqAAAAawAAABkAAABjYW5ub3Qg +cG9sbCBTZWxlY3QgdHdpY2VkHREAagAAAHAAAAAqAAAAc3JjL21hY2hpbmUucnMAAAgeEQAOAAAA +3wUAAAMAAAAIHhEADgAAAOQFAAANAAAARXJyb3IgY2FsbGluZyByb29tLWtleS1yZWNlaXZlZCBj +YWxsYmFjazogAAA4HhEAKgAAAAgeEQAOAAAA7gUAAAMAAAAIHhEADgAAAPUFAAARAAAARXJyb3Ig +Y2FsbGluZyB1c2VyLWlkZW50aXR5LXVwZGF0ZWQgY2FsbGJhY2s6IAAAjB4RAC4AAAAIHhEADgAA +AAwGAABaAAAACB4RAA4AAAAABgAAAwAAAAgeEQAOAAAAEgYAAA0AAABFcnJvciBjYWxsaW5nIGRl +dmljZS11cGRhdGVkIGNhbGxiYWNrOiAA9B4RACcAAABub3QgYSBwcm9taXNlAAAAJB8RAA0AAAAI +HhEADgAAADEGAAARAAAACB4RAA4AAAAtBgAAHwAAAGZ1bmN0aW9uIHJldHVybmVkIGEgbm9uLVBy +b21pc2UgdmFsdWUgAABcHxEAJgAAAHNyYy92ZXJpZmljYXRpb24ucnMAjB8RABMAAAB2BAAAPAAA +AIwfEQATAAAAegQAAA0AAABFcnJvciBjYWxsaW5nIGNoYW5nZXMgY2FsbGJhY2s6IMAfEQAgAAAA +VGhlIG1lZGlhIGVuY3J5cHRpb24gaW5mbyBhcmUgYWJzZW50IGZyb20gdGhlIGdpdmVuIGVuY3J5 +cHRlZCBhdHRhY2htZW50AEG8wMQAC+UCaW52YWxpZCBlbnVtIHZhbHVlIHBhc3NlZAAAABYAAAAY +AAAADwAAABAAAAA8GhEAUhoRAGoaEQB5GhEAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9y +IGFmdGVyIGJlaW5nIGRyb3BwZWQAALMCAAAMAAAABAAAALQCAACzAgAADAAAAAQAAAC1AgAAtAIA +AKwgEQC2AgAAtwIAALgCAAC5AgAAugIAAGV4cGVjdGVkIDMyIGJ5dGVzAAAA6CARABEAAAC7AgAA +CAAAAAQAAAAEAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy9pZGVudGl0aWVzL21hbmFnZXIucnMAAAAUIREAfQAAAGcDAAAaAEGww8QAC8tAYGFzeW5jIGZu +YCByZXN1bWVkIGFmdGVyIGNvbXBsZXRpb25GaWVsZFNldCBjb3JydXB0ZWQgKHRoaXMgaXMgYSBi +dWcpL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9kZWh5ZHJh +dGVkX2RldmljZXMucnMAAPUhEQB9AAAAMgEAAAUAAAC7AgAABAAAAAQAAACIAAAAuwIAAAQAAAAE +AAAAiQAAALsCAAAEAAAABAAAALwCAABXZSBzaG91bGQgYWx3YXlzIHRyeSB0byB1cGxvYWQgZGV2 +aWNlIGtleXMgZm9yIGEgZGVoeWRyYXRlZCBkZXZpY2UuAPUhEQB9AAAARgEAAA4AAAD1IREAfQAA +AEoBAAAJAAAAQ3JlYXRpbmcgYW4gdXBsb2FkIHJlcXVlc3QgZm9yIGEgZGVoeWRyYXRlZCBkZXZp +Y2UAABgjEQAyAAAAuwIAABgAAAAEAAAAggAAAPUhEQB9AAAA2wAAAAUAAAC7AgAABAAAAAQAAACE +AAAAuwIAAAQAAAAEAAAAhQAAAPUhEQB9AAAA5wAAAAkAAABSZWNlaXZpbmcgZXZlbnRzIGZvciBh +IHJlaHlkcmF0ZWQgRGV2aWNlpCMRACgAAAD1IREAfQAAAP4AAAAJAAAAQ29sbGVjdGVkIHJvb20g +a2V5cyBmcm9tIHRoZSByZWh5ZHJhdGVkIGRldmljZQAA5CMRAC4AAAC7AgAABAAAAAQAAACNAAAA +9SERAH0AAABeAAAATgAAAPUhEQB9AAAAiQAAADUAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9j +aGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMv +bWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9ncm91cF9zZXNzaW9ucy9pbmJvdW5kLnJzAAAATCQR +AIUAAADvAAAAPgAAAFBpY2tsZWRJbmJvdW5kR3JvdXBTZXNzaW9ucGlja2xlc2VuZGVyX2tleXNp +Z25pbmdfa2V5cm9vbV9pZGltcG9ydGVkYmFja2VkX3VwaGlzdG9yeV92aXNpYmlsaXR5YWxnb3Jp +dGht/iQRAAYAAAAEJREACgAAAA4lEQALAAAAGSURAAcAAAAgJREACAAAACglEQAJAAAAMSURABIA +AABDJREACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1z +ZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMv +b2xtL2FjY291bnQucnMAAIwlEQB2AAAAuQIAACkAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9j +aGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMv +bWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9zaWduaW5nL21vZC5ycwAAFCYRAHoAAADfAQAAOQAA +ABQmEQB6AAAAsAAAAEMAAAAUJhEAegAAACsBAAAoAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQv +Y2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVz +L21hdHJpeC1zZGstY3J5cHRvL3NyYy9zdG9yZS9tb2QucnPAJhEAdAAAAGoBAABKAAAAwCYRAHQA +AABtAQAAOgAAAMAmEQB0AAAAcgEAAEIAAADAJhEAdAAAAIEAAABRAAAAwCYRAHQAAACWAAAAQwAA +AMAmEQB0AAAAdgAAAGMAAADAJhEAdAAAAKQBAAAoAAAAwCYRAHQAAADEAQAALQAAAMAmEQB0AAAA +uQEAAD0AAADAJhEAdAAAAL8BAAAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy9zdG9yZS9jcnlwdG9fc3RvcmVfd3JhcHBlci5ycwAAANQnEQCFAAAAQgAA +AE0AAADAJhEAdAAAAAUBAAAVAAAAwCYRAHQAAAAKAQAAQgAAAMAmEQB0AAAAqgMAAEAAAADAJhEA +dAAAANADAABNAAAAwCYRAHQAAAD6AwAAFQAAAL0CAAAUAAAABAAAAJQBAAC9AgAAFAAAAAQAAAC+ +AgAAlAEAALwoEQCWAQAAlwEAAL8CAACYAQAAugIAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2No +ZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9t +YXRyaXgtc2RrLWNyeXB0by9zcmMvbWFjaGluZS5ycwAA+CgRAHIAAAD5AAAABQAAAMACAAAAAAAA +AQAAAMECAABlZDI1NTE5X2tleWN1cnZlMjU1MTlfa2V5AAAA+CgRAHIAAAANAQAAEQAAAFJlc3Rv +cmVkIGFuIE9sbSBhY2NvdW50ALgpEQAXAAAA+CgRAHIAAAAoAQAAEQAAAENyZWF0ZWQgYSBuZXcg +T2xtIGFjY291bnQAAADoKREAGQAAAPgoEQByAAAAOAEAABEAAABDcmVhdGluZyBhbiBlbXB0eSBj +cm9zcyBzaWduaW5nIGlkZW50aXR5IHN0dWIAAAAcKhEALQAAAPgoEQByAAAANAEAABEAAABSZXN0 +b3JlZCB0aGUgY3Jvc3Mgc2lnbmluZyBpZGVudGl0eQBkKhEAIwAAALsCAAAEAAAABAAAABoBAAD4 +KBEAcgAAAPwHAABeAAAA+CgRAHIAAAAQCAAAKwAAAPgoEQByAAAAOAgAABEAAABSZWplY3Rpbmcg +aW52YWxpZCBlbmNyeXB0aW9uIGFsZ29yaXRobSAA0CoRACcAAAC7AgAABAAAAAQAAACKAAAA+CgR +AHIAAADUBAAAOwAAAPgoEQByAAAA7QQAAA0AAABFcnJvciBtYXJraW5nIGEgdHJhY2tlZCB1c2Vy +IGFzIGNoYW5nZWQAMCsRACcAAAC7AgAABAAAAAQAAACDAAAA+CgRAHIAAACpAAAALwAAAC9ob21l +L3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNk +MjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21hY2hp +bmUucnOAKxEAfAAAAOcAAABGAAAAgCsRAHwAAADjAAAAIgAAAMICAACoAAAABAAAAMMCAADEAgAA +xQIAAMYCAADHAgAAyAIAAMkCAADKAgAAywIAAMwCAADNAgAAzgIAAM8CAADQAgAA0QIAAOMBAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4 +MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1pbmRleGVkZGIvc3JjL2NyeXB0b19z +dG9yZS9taWdyYXRpb25zL21vZC5ycwAAAGgsEQCJAAAAcQAAAEsAAABoLBEAiQAAACsAAAAJAAAA +SW5kZXhlZGRiQ3J5cHRvU3RvcmUgbWlncmF0ZSBkYXRhIGJlZm9yZSB2IHN0YXJ0aW5nABQtEQAq +AAAAPi0RAAkAAABoLBEAiQAAACoAAABBAAAAaCwRAIkAAAB+AAAABQAAAEluZGV4ZWRkYkNyeXB0 +b1N0b3JlIHVwZ3JhZGUgc2NoZW1hIC0+IHZ4LREAKAAAAD4tEQAJAAAAaCwRAIkAAAB9AAAAAQAA +AGgsEQCJAAAAjQAAAAUAAAAgY29tcGxldGUAAAB4LREAKAAAANAtEQAJAAAAaCwRAIkAAABFAAAA +NQAAAEluYm91bmRHcm91cFNlc3Npb25JbmRleGVkRGJPYmplY3QycGlja2xlZF9zZXNzaW9ubmVl +ZHNfYmFja3VwAAAfLhEADwAAAC4uEQAMAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstaW5kZXhlZGRiL3NyYy9jcnlwdG9fc3RvcmUvbWlncmF0aW9ucy92MF90b192NS5ycwAA +TC4RAI4AAAAcAAAASAAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgt +cnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWluZGV4 +ZWRkYi9zcmMvY3J5cHRvX3N0b3JlL21pZ3JhdGlvbnMvdjVfdG9fdjcucnMAAOwuEQCOAAAAJgAA +AEgAAADsLhEAjgAAADYAAABeAAAAaW5ib3VuZF9ncm91cF9zZXNzaW9uc2luYm91bmRfZ3JvdXBf +c2Vzc2lvbnMyAAAAnC8RABYAAACyLxEAFwAAAOwuEQCOAAAAQwAAAAUAAABNaWdyYXRpbmcgaW5i +b3VuZCBncm91cCBzZXNzaW9uIGRhdGEgZnJvbSB2MSB0byB2MgAA7C8RADIAAAC7AgAABAAAAAQA +AACNAAAAaW5ib3VuZF9ncm91cF9zZXNzaW9ucyB2MSBjdXJzb3IgaGFzIG5vIGtleQDsLhEAjgAA +AE8AAAARAAAATWlncmF0aW5nIHNlc3Npb24gIG9mIAAAdDARABIAAACGMBEABAAAAOwuEQCOAAAA +bwAAAEsAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1pbmRleGVkZGIvc3Jj +L2NyeXB0b19zdG9yZS9taWdyYXRpb25zL3Y3X3RvX3Y4LnJzAACsMBEAjgAAAHMAAABJAAAArDAR +AI4AAAAkAAAAXgAAAKwwEQCOAAAALwAAAAUAAABGaXhpbmcgaW5ib3VuZCBncm91cCBzZXNzaW9u +IGRhdGEga2V5cwAAbDERACYAAACsMBEAjgAAAGgAAAARAAAATWlncmF0ZWQgIHNlc3Npb25zOiAg +a2V5cyB1cGRhdGVkIGFuZCAgb2Jzb2xldGUgZW50cmllcyBkZWxldGVkLqwxEQAJAAAAtTERAAsA +AADAMREAEgAAANIxEQAaAAAAaW5ib3VuZF9ncm91cF9zZXNzaW9uczIgY3Vyc29yIGhhcyBubyBr +ZXkAAACsMBEAjgAAAEcAAAARAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21h +dHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGst +aW5kZXhlZGRiL3NyYy9jcnlwdG9fc3RvcmUvbWlncmF0aW9ucy92OF90b192MTAucnMASDIRAI8A +AAAlAAAASAAAAEgyEQCPAAAAPgAAAF4AAABpbmJvdW5kX2dyb3VwX3Nlc3Npb25zMwCyLxEAFwAA +APgyEQAXAAAASDIRAI8AAABKAAAABQAAAFNocmlua2luZyBpbmJvdW5kX2dyb3VwX3Nlc3Npb24g +cmVjb3JkcwAwMxEAJwAAAEgyEQCPAAAAdQAAABEAAAAgc2Vzc2lvbnMuAACsMREACQAAAHAzEQAK +AAAASDIRAI8AAABTAAAAEQAAAEgyEQCPAAAAhQAAAEsAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1pbmRleGVkZGIvc3JjL2NyeXB0b19zdG9yZS9tb2QucnMAAKwzEQB+AAAA +VQEAAD0AAAA6Om1hdHJpeC1zZGstY3J5cHRvLW1ldGFkIxEAAAAAADw0EQAYAAAArDMRAH4AAAAX +AQAACQAAAEluZGV4ZWREYkNyeXB0b1N0b3JlOiBPcGVuaW5nIG1ldGEtc3RvcmUgAAAAdDQRACkA +AACsMxEAfgAAABQBAABXAAAAbWF0cml4LXNkay1jcnlwdG9zdG9yZV9jaXBoZXIAAACsMxEAfgAA +ADcBAAARAAAASW5kZXhlZERiQ3J5cHRvU3RvcmU6IGVuY3J5cHRpbmcgbmV3IHN0b3JlIGNpcGhl +cgAAAOg0EQAxAAAArDMRAH4AAAAyAQAAEQAAAEluZGV4ZWREYkNyeXB0b1N0b3JlOiBkZWNyeXB0 +aW5nIHN0b3JlIGNpcGhlcgAAADQ1EQAtAAAAOjptYXRyaXgtc2RrLWNyeXB0bwBkIxEAAAAAAGw1 +EQATAAAArDMRAH4AAAAAAQAACQAAAEluZGV4ZWREYkNyeXB0b1N0b3JlOiBvcGVuaW5nIG1haW4g +c3RvcmUgAAAAoDURACkAAACsMxEAfgAAAPwAAAAXAAAA0gIAAIgAAAAIAAAA0wIAANQCAACoCAAA +CAAAANUCAADWAgAATAAAAAQAAADXAgAA2AIAAIwAAAAEAAAA2QIAANoCAAA8AAAABAAAANsCAADc +AgAAZAAAAAQAAADdAgAA3gIAAIACAAAIAAAA3wIAANYCAABMAAAABAAAAOACAADhAgAAcAUAAAgA +AADiAgAA1gIAAEwAAAAEAAAA4wIAAOQCAADYAQAACAAAAOUCAADWAgAATAAAAAQAAADmAgAA5wIA +AMAGAAAIAAAA6AIAAOkCAABQAwAACAAAAOoCAADrAgAAoAoAAAgAAADsAgAA7QIAAAALAAAIAAAA +7gIAAO8CAABABgAACAAAAPACAADxAgAAAAEAAAgAAADyAgAA8wIAAOAGAAAIAAAA9AIAAPUCAABs +BgAABAAAAPYCAAD3AgAAKAIAAAgAAAD4AgAA+QIAAMACAAAIAAAA+gIAANwCAABkAAAABAAAAPsC +AAC7AgAABAAAAAQAAAD8AgAA/QIAALsCAAAEAAAABAAAAP4CAAD/AgAAuwIAAAQAAAAEAAAAAAMA +AAEDAAC7AgAABAAAAAQAAAACAwAAAwMAALsCAAAEAAAABAAAAAQDAAAFAwAAuwIAAAQAAAAEAAAA +BgMAAAcDAAC7AgAABAAAAAQAAAAIAwAACQMAALsCAAAEAAAABAAAAAoDAAALAwAAuwIAAAQAAAAE +AAAADAMAAA0DAAC7AgAABAAAAAQAAAAOAwAADwMAALsCAAAEAAAABAAAABADAAARAwAAuwIAAAQA +AAAEAAAAEgMAABMDAAC7AgAABAAAAAQAAAAUAwAAFQMAALsCAAAEAAAABAAAABYDAAAXAwAAuwIA +AAQAAAAEAAAAGAMAABkDAAC7AgAABAAAAAQAAAAaAwAAGwMAALsCAAAEAAAABAAAABwDAAAdAwAA +uwIAAAQAAAAEAAAAHgMAAB8DAAC7AgAABAAAAAQAAAAgAwAAIQMAAC9ob21lL3J1bm5lci8uY2Fy +Z28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmlu +ZGdlbi1mdXR1cmVzLTAuNC40Mi9zcmMvbGliLnJz0DgRAGgAAADdAAAAFQAAAGQjEQAAAAAAZGVz +Y3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheWNhbGxlZCBgUmVzdWx0Ojp1bndy +YXAoKWAgb24gYW4gYEVycmAgdmFsdWUAIgMAAAgAAAAEAAAArgAAACMDAAAIAAAABAAAAK4AAAAk +AwAACAAAAAQAAAC0AAAAQnVmZmVyVG9vU21hbGxJbnZhbGlkQ2hhcmFjdGVyY2hhcmFjdGVyALsC +AAAEAAAABAAAACUDAABpbmRleAAAALsCAAAEAAAABAAAAMgAAABOb25Bc2NpaUNoYXJhY3RlcmFu +IGludGVnZXIgYmV0d2VlbiAtMl41MyArIDEgYW5kIDJeNTMgLSAxAAA1OhEAKQAAAE1lc3NhZ2VU +eXBlTWlzc2luZ1ZlcnNpb25NZXNzYWdlVG9vU2hvcnRJbnZhbGlkVmVyc2lvbgAAJgMAAAEAAAAB +AAAAJwMAALsCAAAEAAAABAAAAKsBAABJbnZhbGlkS2V5AAC7AgAABAAAAAQAAAC6AAAASW52YWxp +ZE1hY0xlbmd0aLsCAAAEAAAABAAAACgDAABTaWduYXR1cmUAAAC7AgAABAAAAAQAAAC5AAAAUHJv +dG9CdWZFcnJvcgAAALsCAAAEAAAABAAAACkDAABCYXNlNjQAALsCAAAEAAAABAAAACoDAAAvaG9t +ZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1 +MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMvbXV0ZXgucnNQOxEAYAAAALIBAAAzAAAAUDsRAGAA +AACzAQAAGwAAAFA7EQBgAAAAiwIAAB0AAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNo +YWJsZSBjb2RlUDsRAGAAAACRAgAADQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3Jj +L2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3Rva2lvLTEuMzYuMC9zcmMvc3luYy9y +d2xvY2sucnMAAAAYPBEAYQAAAIkDAABLAAAAGDwRAGEAAACNAwAAGwAAABg8EQBhAAAAkQMAABEA +AAAYPBEAYQAAALABAAA4AAAAGDwRAGEAAACxAQAAGwAAABg8EQBhAAAAtQEAABEAAAAYPBEAYQAA +AAUDAAA6AAAAGDwRAGEAAAAGAwAAGwAAABg8EQBhAAAACgMAABEAAAAYPBEAYQAAAJECAAAtAAAA +YW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDJeNTMgLSAxAAAAHD0RACEAAABTZXJpYWxpemF0aW9u +AAAAuwIAAAQAAAAEAAAApQEAAERlc2VyaWFsaXphdGlvbgC7AgAABAAAAAQAAACmAQAASnNvbrsC +AAAEAAAABAAAAMYAAABFbmNyeXB0aW9uAAC7AgAABAAAAAQAAACnAQAAUmFuZG9tAAC7AgAABAAA +AAQAAACoAQAAVmVyc2lvbkxlbmd0aEtkZk1pc21hdGNoKwMAAFJ3TG9ja2RhdGEAALsCAAAEAAAA +BAAAAIUBAAA8bG9ja2VkPgg+EQAIAAAAuwIAABgAAAAEAAAAcgEAALsCAAAEAAAABAAAACwDAABE +dW1teQAAALsCAAAEAAAABAAAAC0DAABSb29tS2V5ALsCAAAEAAAABAAAAC4DAABSb29tS2V5UmVx +dWVzdAAAuwIAAAQAAAAEAAAALwMAAEZvcndhcmRlZFJvb21LZXm7AgAABAAAAAQAAAAwAwAAS2V5 +VmVyaWZpY2F0aW9uUmVxdWVzdAAAuwIAAAQAAAAEAAAAMQMAAEtleVZlcmlmaWNhdGlvblJlYWR5 +uwIAAAQAAAAEAAAAMgMAAEtleVZlcmlmaWNhdGlvblN0YXJ0uwIAAAQAAAAEAAAAMwMAAEtleVZl +cmlmaWNhdGlvbkNhbmNlbAAAALsCAAAEAAAABAAAADQDAABLZXlWZXJpZmljYXRpb25BY2NlcHQA +AAC7AgAABAAAAAQAAAA1AwAAS2V5VmVyaWZpY2F0aW9uS2V5AAC7AgAABAAAAAQAAAA2AwAAS2V5 +VmVyaWZpY2F0aW9uTWFjAAC7AgAABAAAAAQAAAA3AwAAS2V5VmVyaWZpY2F0aW9uRG9uZQC7AgAA +BAAAAAQAAAA4AwAAUm9vbUVuY3J5cHRlZAAAALsCAAAEAAAABAAAADkDAABTZWNyZXRSZXF1ZXN0 +AAAAuwIAAAQAAAAEAAAAOgMAAFNlY3JldFNlbmQAALsCAAAEAAAABAAAADsDAABfQ3VzdG9tZXZl +bnRfdHlwZQAAALsCAAAEAAAABAAAADwDAAAqbS5jYWxsLmFuc3dlcm0uY2FsbC5pbnZpdGVtLmNh +bGwuaGFuZ3VwbS5jYWxsLmNhbmRpZGF0ZXNtLmNhbGwubmVnb3RpYXRlbS5jYWxsLnJlamVjdG0u +Y2FsbC5zZWxlY3RfYW5zd2VybS5rZXkudmVyaWZpY2F0aW9uLnJlYWR5bS5rZXkudmVyaWZpY2F0 +aW9uLnN0YXJ0bS5rZXkudmVyaWZpY2F0aW9uLmNhbmNlbG0ua2V5LnZlcmlmaWNhdGlvbi5hY2Nl +cHRtLmtleS52ZXJpZmljYXRpb24ua2V5bS5rZXkudmVyaWZpY2F0aW9uLm1hY20ua2V5LnZlcmlm +aWNhdGlvbi5kb25lbS5yZWFjdGlvbm0ucm9vbS5lbmNyeXB0ZWRtLnJvb20ubWVzc2FnZW0ucm9v +bS5yZWRhY3Rpb25tLnN0aWNrZXJkZXNlcmlhbGl6YXRpb24gZmFpbGVkOiCkQREAGAAAAHRoZSBz +ZXJ2ZXIgcmV0dXJuZWQgYW4gZXJyb3I6IAAAxEERAB4AAAAAAAAA///////////wQREAQYiExQAL +kxpVc2VyIElEIG5vdCBzcGVjaWZpZWREZXZpY2UgSUQgbm90IHNwZWNpZmllZHNyYy9saWJvbG1f +bWlncmF0aW9uLnJzADRCEQAXAAAAhAAAABkAAAA0QhEAFwAAACABAAAZAAAAQmFzZSBkYXRhIG11 +c3QgYmUgaW1wb3J0ZWQgYmVmb3JlIGNhbGxpbmcgYG1pZ3JhdGVPbG1TZXNzaW9uc2AAADRCEQAX +AAAAwgEAABkAAABzcmMvbWFjaGluZS5ycwAAvEIRAA4AAAAZBgAAWAAAALxCEQAOAAAAIwYAAA0A +AABFcnJvciBjYWxsaW5nIHJlY2VpdmUgc2VjcmV0IGNhbGxiYWNrOiAA7EIRACcAAABub3QgYSBw +cm9taXNlAAAAHEMRAA0AAAC8QhEADgAAADEGAAARAAAAvEIRAA4AAAAtBgAAHwAAAGZ1bmN0aW9u +IHJldHVybmVkIGEgbm9uLVByb21pc2UgdmFsdWUgAABUQxEAJgAAAHNyYy9kZWh5ZHJhdGVkX2Rl +dmljZXMucnMAAACEQxEAGQAAABwAAABFAAAAhEMRABkAAAAYAAAAAQAAAIRDEQAZAAAAJwAAACwA +AABXcm9uZyBrZXkgbGVuZ3RohEMRABkAAABPAAAAWgAAAIRDEQAZAAAAQgAAAAEAAACEQxEAGQAA +AGwAAAA2AAAAhEMRABkAAABkAAAAAQAAADRCEQAXAAAAeAAAACMAAAA0QhEAFwAAAGIAAAABAAAA +NEIRABcAAADuAAAAIwAAADRCEQAXAAAA1QAAAAEAAAA0QhEAFwAAAIwBAAAjAAAANEIRABcAAABz +AQAAAQAAALxCEQAOAAAAWwAAACMAAAC8QhEADgAAADUAAAABAAAAvEIRAA4AAAB2AAAAIwAAALxC +EQAOAAAAgAAAACMAAAC8QhEADgAAAO0EAABQAAAAvEIRAA4AAADxBAAAFQAAALxCEQAOAAAAAAUA +AFUAAAC8QhEADgAAAAQFAAAVAAAAvEIRAA4AAAATBQAATwAAALxCEQAOAAAAGAUAABUAAAC8QhEA +DgAAADkFAABOAAAAvEIRAA4AAAA9BQAAFQAAALxCEQAOAAAAWgUAAFAAAAC8QhEADgAAAHAFAABT +AAAAvEIRAA4AAACJBQAARgAAALxCEQAOAAAAnQUAACMAAAC8QhEADgAAALAFAAAeAAAAc3JjL3N0 +b3JlLnJzkEURAAwAAAAuAAAAIwAAAJBFEQAMAAAAGAAAAAEAAABUaGUgYHN0b3JlX3Bhc3NwaHJh +c2VgIGhhcyBiZWVuIHNldCwgYnV0IGl0IGhhcyBhbiBlZmZlY3Qgb25seSBpZiBgc3RvcmVfbmFt +ZWAgaXMgc2V0LCB3aGljaCBpcyBub3Q7IHBsZWFzZSBwcm92aWRlIG9uZQCQRREADAAAADgAAAAt +AAAAkEURAAwAAABOAAAAVwAAAG1vbnRobHlfYWN0aXZlX3VzZXJ9eyw6bS5zZXJ2ZXJfbm90aWNl +LnVzYWdlX2xpbWl0X3JlYWNoZWRUb0RldmljZUtleVZlcmlmaWNhdGlvbktleUV2ZW50Q29udGVu +dHRyYW5zYWN0aW9uX2lkAAA+AwAACAAAAAQAAAB7AgAAa2V5AD8DAAAEAAAABAAAAEADAABUb0Rl +dmljZUtleVZlcmlmaWNhdGlvbk1hY0V2ZW50Q29udGVudG1hYwAAAEEDAAAMAAAABAAAAEIDAABr +ZXlzVG9EZXZpY2VLZXlWZXJpZmljYXRpb25Eb25lRXZlbnRDb250ZW50AD8DAAAEAAAABAAAAEMD +AABUb0RldmljZUtleVZlcmlmaWNhdGlvblJlYWR5RXZlbnRDb250ZW50ZnJvbV9kZXZpY2UAPgMA +AAgAAAAEAAAARAMAAG1ldGhvZHMARQMAAAwAAAAEAAAARgMAAFRvRGV2aWNlS2V5VmVyaWZpY2F0 +aW9uQ2FuY2VsRXZlbnRDb250ZW50cmVhc29uAEcDAAAMAAAABAAAAEgDAABjb2RlPwMAAAQAAAAE +AAAASQMAAEtleVZlcmlmaWNhdGlvbktleUV2ZW50Q29udGVudG0ucmVsYXRlc190bwAA1EYRAAMA +AAAuSBEADAAAAFJlZGFjdGVkS2V5VmVyaWZpY2F0aW9uS2V5RXZlbnRDb250ZW50AAC0RhEADgAA +ANRGEQADAAAAS2V5VmVyaWZpY2F0aW9uTWFjRXZlbnRDb250ZW50AAAORxEAAwAAACRHEQAEAAAA +LkgRAAwAAABSZWRhY3RlZEtleVZlcmlmaWNhdGlvbk1hY0V2ZW50Q29udGVudAAAtEYRAA4AAAAO +RxEAAwAAACRHEQAEAAAAS2V5VmVyaWZpY2F0aW9uRG9uZUV2ZW50Q29udGVudAAuSBEADAAAAFJl +ZGFjdGVkS2V5VmVyaWZpY2F0aW9uRG9uZUV2ZW50Q29udGVudAC0RhEADgAAAEtleVZlcmlmaWNh +dGlvblJlYWR5RXZlbnRDb250ZW50iEcRAAsAAACkRxEABwAAAC5IEQAMAAAAUmVkYWN0ZWRLZXlW +ZXJpZmljYXRpb25SZWFkeUV2ZW50Q29udGVudIhHEQALAAAApEcRAAcAAAC0RhEADgAAAFJlZGFj +dGVkS2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnRLZXlWZXJpZmljYXRpb25DYW5jZWxF +dmVudENvbnRlbnQAAADlRxEABgAAAPxHEQAEAAAALkgRAAwAAABSZWRhY3RlZEtleVZlcmlmaWNh +dGlvbkNhbmNlbEV2ZW50Q29udGVudAAAALRGEQAOAAAA5UcRAAYAAAD8RxEABAAAAENhbGxDYW5k +aWRhdGVzRXZlbnRDb250ZW50Y2FsbF9pZHBhcnR5X2lkY2FuZGlkYXRlc3ZlcnNpb24AAI5KEQAH +AAAAlUoRAAgAAACdShEACgAAAKdKEQAHAAAAUmVkYWN0ZWRDYWxsQ2FuZGlkYXRlc0V2ZW50Q29u +dGVudENhbmRpZGF0ZWNhbmRpZGF0ZXNkcE1pZHNkcE1MaW5lSW5kZXgA+0oRAAkAAAAESxEABgAA +AApLEQANAAAAQ2FsbEludml0ZUV2ZW50Q29udGVudGxpZmV0aW1lb2ZmZXJpbnZpdGVlAACOShEA +BwAAAJVKEQAIAAAARksRAAgAAABOSxEABQAAAKdKEQAHAAAAU0sRAAcAAABSZWRhY3RlZENhbGxJ +bnZpdGVFdmVudENvbnRlbnRDYWxsUmVqZWN0RXZlbnRDb250ZW50jkoRAAcAAACVShEACAAAAKdK +EQAHAAAAUmVkYWN0ZWRDYWxsUmVqZWN0RXZlbnRDb250ZW50Q2FsbE5lZ290aWF0ZUV2ZW50Q29u +dGVudGRlc2NyaXB0aW9uAACOShEABwAAAJVKEQAIAAAAp0oRAAcAAABGSxEACAAAAA9MEQALAAAA +UmVkYWN0ZWRDYWxsTmVnb3RpYXRlRXZlbnRDb250ZW50aHdtaW1ldHlwZXNpemV0aHVtYm5haWxf +aW5mb0pzb25XZWJLZXlrdHlrZXlfb3BzYWxna2V4dItMEQADAAAAjkwRAAcAAACVTBEAAwAAAJhM +EQABAAAAmUwRAAMAAAB1cmxmaWxlRW5jcnlwdGVkRmlsZWl2aGFzaGVzdlRodW1ibmFpbEluZm8A +AGVMEQABAAAAZkwRAAEAAABnTBEACAAAAG9MEQAEAAAAbS5hdWRpb20uZW1vdGVtLmZpbGVtLmlt +YWdlbS5sb2NhdGlvbm0ubm90aWNlbS5zZXJ2ZXJfbm90aWNlbS50ZXh0bS52aWRlb20ua2V5LnZl +cmlmaWNhdGlvbi5yZXF1ZXN0bXNndHlwZWJvZHlzZXJ2ZXJfbm90aWNlX3R5cGVhZG1pbl9jb250 +YWN0bGltaXRfdHlwZQB6TREABAAAAH5NEQASAAAAkE0RAA0AAACdTREACgAAAG0ubWVudGlvbnNS +ZWRhY3RlZFJvb21NZXNzYWdlRXZlbnRDb250ZW50Zm9ybWF0Zm9ybWF0dGVkX2JvZHlmaWxlbmFt +ZWluZm9kdXJhdGlvbmdlb191cml6TREABAAAABlOEQAHAAAADU4RAAQAAABtLnRocmVhZHJlbF90 +eXBlZXZlbnRfaWRtLmluX3JlcGx5X3RvaXNfZmFsbGluZ19iYWNrSW5SZXBseVRvbS5yZWZlcmVu +Y2VIThEACAAAAG0uYW5ub3RhdGlvbkJ1bmRsZWRUaHJlYWRsYXRlc3RfZXZlbnRjb3VudGN1cnJl +bnRfdXNlcl9wYXJ0aWNpcGF0ZWQAoU4RAAwAAACtThEABQAAALJOEQAZAAAAUmVmZXJlbmNlQ2h1 +bmtjaHVuawDyThEABQAAAEJ1bmRsZWRSZWZlcmVuY2X//////////xBPEQBBqJ7FAAu5tAFLZXlC +YWNrdXBEYXRhZmlyc3RfbWVzc2FnZV9pbmRleGZvcndhcmRlZF9jb3VudGlzX3ZlcmlmaWVkc2Vz +c2lvbl9kYXRhUm9vbUtleUJhY2t1cHNlc3Npb25zRW5jcnlwdGVkU2Vzc2lvbkRhdGFlcGhlbWVy +YWxjaXBoZXJ0ZXh0VXNlckZhaWxlZERldmljZUluZm9ub25fb2xtX2RldmljZXMAAABKAwAADAAA +AAQAAABLAwAAYmFkX2tleV9kZXZpY2VzAD8DAAAEAAAABAAAAEwDAAAvaG9tZS9ydW5uZXIvLmNh +cmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRm +Ny9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lkZW50aXRpZXMvZGV2aWNlLnJzAFARAHwA +AAA/AwAAKwAAAAAAAABgYXN5bmMgZm5gIHJlc3VtZWQgYWZ0ZXIgY29tcGxldGlvbkZpZWxkU2V0 +IGNvcnJ1cHRlZCAodGhpcyBpcyBhIGJ1ZykAAAAAUBEAfAAAALsCAAANAAAAVHJ5aW5nIHRvIGZp +bmQgYW4gT2xtIHNlc3Npb24gb2YgYSBkZXZpY2UsIGJ1dCB0aGUgZGV2aWNlIGRvZXNuJ3QgaGF2 +ZSBhIEN1cnZlMjU1MTkga2V5AOhQEQBXAAAAPwMAABgAAAAEAAAAggAAAABQEQB8AAAArwIAACUA +AAAAUBEAfAAAABIDAAAFAAAAPwMAAAQAAAAEAAAAhAAAAD8DAAAEAAAABAAAAIUAAAA/AwAABAAA +AAQAAADTAAAATQMAAAAAAAABAAAATgMAAG1lc3NhZ2VfaWQAAABQEQB8AAAANgMAAA0AAABUcnlp +bmcgdG8gZW5jcnlwdCBhbiBldmVudCBmb3IgYSBkZXZpY2UsIGJ1dCBubyBPbG0gc2Vzc2lvbiBp +cyBmb3VuZC4AAADUUREARQAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRy +aXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNy +eXB0by9zcmMvaWRlbnRpdGllcy9tYW5hZ2VyLnJzAAAAJFIRAH0AAAAnAQAAJQAAAENyZWF0aW5n +IG9yIHVwZGF0aW5nIGEgZGV2aWNlIHBhbmlja2VkAAAkUhEAfQAAAEsBAAAhAAAAJFIRAH0AAABe +AQAAEQAAAE91ciBvd24gZGV2aWNlIG1pZ2h0IGhhdmUgYmVlbiBkZWxldGVkAAD8UhEAJgAAAD8D +AAAEAAAABAAAAIkAAAA/AwAABAAAAAQAAADlAAAAPwMAAAQAAAAEAAAATwMAACRSEQB9AAAA4QAA +ACQAAAAkUhEAfQAAAOcAAAARAAAARmFpbGVkIHRvIHVwZGF0ZSBkZXZpY2Uga2V5c3xTEQAcAAAA +PwMAAAQAAAAEAAAAoAAAACRSEQB9AAAACwEAABkAAABBZGRpbmcgYSBuZXcgZGV2aWNlIHRvIHRo +ZSBkZXZpY2Ugc3RvcmUAwFMRACcAAAA/AwAABAAAAAQAAABQAwAAJFIRAH0AAAD+AAAAHQAAAEFk +ZGluZyBvdXIgb3duIGRldmljZSB0byB0aGUgZGV2aWNlIHN0b3JlLCBtYXJraW5nIGl0IGFzIGxv +Y2FsbHkgdmVyaWZpZWQAAAAQVBEASQAAACRSEQB9AAAAFgEAABUAAABGYWlsZWQgdG8gY3JlYXRl +IGEgbmV3IGRldmljZQAAAHRUEQAdAAAAPwMAAAQAAAAEAAAAiAAAAC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL2dyb3VwX3Nlc3Np +b25zLnJzAAAArFQRAIkAAADYAQAASQAAAKxUEQCJAAAA3QEAAA0AAABDcmVhdGVkIGEgdG8tZGV2 +aWNlIHJlcXVlc3QgY2FycnlpbmcgYSByb29tX2tleQBYVREALwAAAD8DAAAEAAAABAAAAI0AAAA/ +AwAABAAAAAQAAADsAAAArFQRAIkAAAATAQAACAAAAEVuY3J5cHRpb24gdGFzayBwYW5pY2tlZKxU +EQCJAAAAMQEAACEAAACsVBEAiQAAACMBAAA3AAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vZ3JvdXBfc2Vzc2lvbnMvb3V0Ym91bmQucnMAAPhVEQCG +AAAA/AEAAD0AAAD4VREAhgAAAN8BAAAzAAAA+FURAIYAAAD3AQAALgAAAC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL3Nlc3Npb24ucnMAALBWEQB2AAAA +fgAAAFIAAACwVhEAdgAAAIIAAAAJAAAAU3VjY2Vzc2Z1bGx5IGVuY3J5cHRlZCBhbiBldmVudABI +VxEAHwAAAD8DAAAEAAAABAAAAOoAAABzZW5kZXIAALBWEQB2AAAAnQAAABsAAABzZW5kZXJfZGV2 +aWNlZWQyNTUxOXJlY2lwaWVudHJlY2lwaWVudF9rZXlzY29udGVudAAAsFYRAHYAAACYAAAAOAAA +AGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGWwVhEAdgAAAGsAAAA/AAAA +L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5Mjdm +ODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zdG9yZS9jcnlw +dG9fc3RvcmVfd3JhcHBlci5ycwAAABRYEQCFAAAAKwAAACkAAAAUWBEAhQAAACwAAAAjAAAAFFgR +AIUAAAAvAAAAJgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvc3RvcmUvbW9kLnJzzFgRAHQAAAAPBAAAKQAAAMxYEQB0AAAAKAQAADkAAAByZXF1ZXN0X2lk +c2VjcmV0bmFtZWFsZ29yaXRobU1lZ29sbVYxQWVzU2hhMkNvbnRlbnRzZW5kZXJfa2V5ZGV2aWNl +X2lkc2Vzc2lvbl9pZG0ucm9vbV9rZXkAAEcDAAAMAAAABAAAAFEDAABSAwAApAAAAGEgRGlzcGxh +eSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkATQMAAAAAAAAB +AAAAUwMAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xp +YnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAcWhEASwAAADMKAAAOAAAATQMAAAAAAAABAAAAVAMA +AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAVQMAAAQAAAAEAAAA +qgAAAEVycm9yY2FuIG9ubHkgZmxhdHRlbiBzdHJ1Y3RzIGFuZCBtYXBzIChnb3QgKQAAAMlaEQAn +AAAA8FoRAAEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMvbXV0ZXgucnMEWxEAYAAA +ALIBAAAzAAAABFsRAGAAAACzAQAAGwAAAARbEQBgAAAAiwIAAB0AAAAEWxEAYAAAAJECAAANAAAA +L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJi +YmExNTAwMWYvdG9raW8tMS4zNi4wL3NyYy9zeW5jL3J3bG9jay5ycwAAAKRbEQBhAAAAsAEAADgA +AACkWxEAYQAAALEBAAAbAAAApFsRAGEAAAC1AQAAEQAAACRzZXJkZV9qc29uOjpwcml2YXRlOjpS +YXdWYWx1ZUFib3J0ZWRNdXRleGRhdGEAAD8DAAAEAAAABAAAAFYDAAA8bG9ja2VkPnhcEQAIAAAA +PwMAABgAAAAEAAAAcgEAAD8DAAAEAAAABAAAAFcDAAA/AwAABAAAAAQAAABYAwAAPwMAAAQAAAAE +AAAAWQMAAFoDAAAEWxEAYAAAACUDAAAJAAAAAAACQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVph +YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL/////////////////////////// +//////////////////////////////8+////PzQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoL +DA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//////////8dVG9EZXZpY2VEdW1teUV2ZW50Q29udGVudC9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4w +LjExNS9zcmMvc2VyLnJzOV4RAF8AAAB9AgAAKgAAADleEQBfAAAAlAIAACoAAAA5XhEAXwAAAKIC +AAAqAAAAb3JnLm1hdHJpeC5jdXN0b20uaHRtbC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkv +c3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NpcGhlci0wLjQuNC9zcmMvc3Ry +ZWFtX3dyYXBwZXIucnMAAN5eEQBkAAAAjQAAAC0AAADeXhEAZAAAAH4AAAAlAAAAfXtIYXNoIG1p +c21hdGNoIHdoaWxlIGRlY3J5cHRpbmcvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +bWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNk +ay1jcnlwdG8vc3JjL2ZpbGVfZW5jcnlwdGlvbi9hdHRhY2htZW50cy5ycwAAhF8RAIYAAABIAAAA +IQAAAIRfEQCGAAAASQAAAC4AAABzaGEyNTYAAIRfEQCGAAAAvgAAAC4AAACEXxEAhgAAAL8AAAAh +AAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdk +MjJiYmExNTAwMWYvZGlnZXN0LTAuMTAuNy9zcmMvY29yZV9hcGkvY3RfdmFyaWFibGUucnNTZXNz +aW9uRGVzY3JpcHRpb250eXBlc2Rw0WARAAQAAADVYBEAAwAAAG1zZ3R5cGVtLmtleS52ZXJpZmlj +YXRpb24ucmVxdWVzdGJvZHltZXRob2RzZnJvbV9kZXZpY2V0b20uZmlsZWZpbGVuYW1laW5mb21p +bWV0eXBlc2l6ZXRodW1ibmFpbF9pbmZvbS5hdWRpb0F1ZGlvSW5mb2R1cmF0aW9uAAAAXWERAAgA +AAAzYREACAAAADthEQAEAAAAbS5lbW90ZW0uaW1hZ2VyZWRhY3RzUm9vbVJlZGFjdGlvblVuc2ln +bmVkYWdldHJhbnNhY3Rpb25faWRtLnJlbGF0aW9ucwAAqmERAAMAAACtYREADgAAALthEQALAAAA +Um9vbVJlZGFjdGlvbkV2ZW50Q29udGVudHJlYXNvbgCOYREABwAAAPlhEQAGAAAAUmVkYWN0ZWRS +b29tUmVkYWN0aW9uRXZlbnRDb250ZW50AAAAjmERAAcAAABSZWRhY3RlZFN0aWNrZXJFdmVudENv +bnRlbnQAU3RpY2tlckV2ZW50Q29udGVudHVybAAACWERAAQAAAAvYREABAAAAGtiEQADAAAAVGAR +AGsAAAB8AAAAJAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRl +cy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3JjL2xpYi5yc5hiEQBg +AAAApAAAABgAAACYYhEAYAAAAKQAAAAgAAAAmGIRAGAAAACuAAAAFAAAAJhiEQBgAAAArgAAABoA +AACYYhEAYAAAAJ0AAAAYAAAAmGIRAGAAAACdAAAAHwAAAJhiEQBgAAAAnQAAACUAAACYYhEAYAAA +AC0BAAAiAAAAmGIRAGAAAAA4AQAAHgAAAJhiEQBgAAAANQEAABgAAABzdHJ1Y3QgaW1wbGVtZW50 +aW5nIEMAAACYYxEAFQAAAGNvbnRlbnRzZW5kZXJldmVudF9pZG9yaWdpbl9zZXJ2ZXJfdHN1bnNp +Z25lZC0tLS0tQkVHSU4gTUVHT0xNIFNFU1NJT04gREFUQS0tLS0tLS0tLS1FTkQgTUVHT0xNIFNF +U1NJT04gREFUQS0tLS0tTWVkaWFFbmNyeXB0aW9uSW5mb3ZrZXlpdmhhc2hlczxkEQABAAAAPWQR +AAMAAABAZBEAAgAAAEJkEQAGAAAAdjJvY3RlbmNyeXB0ZGVjcnlwdEEyNTZDVFIvcnVzdGMvYWVk +ZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L3N0ZC9zcmMvc3lu +Yy9vbmNlLnJzAACCZBEATAAAANAAAAAUAAAAWwMAAAwAAAAEAAAAXAMAAF0DAACkAAAAYSBEaXNw +bGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQBeAwAAAAAA +AAEAAABfAwAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcv +bGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAEBlEQBLAAAAMwoAAA4AAAAvcnVzdGMvYWVkZDE3 +M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3JjL2NoYXIv +bWV0aG9kcy5yc5xlEQBQAAAABQcAAA0AAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFu +IGBFcnJgIHZhbHVlAF4DAAAAAAAAAQAAAGADAABeAwAAAAAAAAEAAABhAwAAYgMAAAQAAAAEAAAA +ygAAAGIDAAAEAAAABAAAAGMDAABiAwAABAAAAAQAAABkAwAARXJyb3IvaG9tZS9ydW5uZXIvLmNh +cmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbm91dC0w +LjEuMy9zcmMvaW5vdXRfYnVmLnJzAH1mEQBeAAAA+AAAAAkAAABUcnlGcm9tU2xpY2VFcnJvcgAA +AGIDAAAEAAAABAAAALYAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5j +cmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jaXBoZXItMC40LjQvc3JjL3N0cmVhbS5ycxBnEQBc +AAAAeAAAACcAAABTdHJlYW1DaXBoZXJFcnJvci9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2 +ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnONZxEATwAA +ALgBAAA3AAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlv +LTZmMTdkMjJiYmExNTAwMWYvY3RyLTAuOS4yL3NyYy9mbGF2b3JzL2N0cjEyOC5ycwAAAOxnEQBh +AAAASgAAACgAAADsZxEAYQAAAEoAAAA6AAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFj +aGFibGUgY29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p +by02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvc2VyLnJzAJhoEQBfAAAA +ogIAACoAAAAkc2VyZGVfanNvbjo6cHJpdmF0ZTo6UmF3VmFsdWUvaG9tZS9ydW5uZXIvLmNhcmdv +L3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zaGEyLTAuMTAu +OC9zcmMvY29yZV9hcGkucnMAJmkRAF0AAABCAAAAEwAAAAAAAABn5glqha5nu3Lzbjw69U+lf1IO +UYxoBZur2YMfGc3gW2IDAAAIAAAABAAAAGUDAABmAwAAYgMAAAgAAAAEAAAAZwMAAGgDAABiAwAA +CAAAAAQAAABpAwAAagMAAGIDAAAIAAAABAAAAGsDAABsAwAAYgMAAAgAAAAEAAAAbQMAAG4DAABp +bnZhbGlkIGVudW0gdmFsdWUgcGFzc2Vke31Ub0RldmljZVNlY3JldFJlcXVlc3RFdmVudENvbnRl +bnRhY3Rpb24AAHADAAAMAAAABAAAAHEDAAByZXF1ZXN0aW5nX2RldmljZV9pZHIDAAAIAAAABAAA +AEQDAAByZXF1ZXN0X2lkAABzAwAABAAAAAQAAABDAwAAb3JnLm1hdHJpeC5tc2MzODE0LnYxLm9s +bU1fSU5WQUxJRF9TSUdOQVRVUkVVbmtub3duUm9vbUtleVdpdGhIZWxkYWxnb3JpdGhtAHQDAAAM +AAAABAAAAIgBAABjb2RldQMAAAwAAAAEAAAAdgMAAHJlYXNvbgAAdwMAAAwAAAAEAAAAeAMAAG90 +aGVyAAAAcwMAAAQAAAAEAAAAeQMAAGVkMjU1MTljdXJ2ZTI1NTE5c2lnbmVkX2N1cnZlMjU1MTlS +ZXF1ZXN0QWN0aW9uSnNvblJlcHJuYW1lAFhqEQAGAAAAh2sRAAQAAABCbGFja0xpc3RlZABzAwAA +BAAAAAQAAAB6AwAAVW52ZXJpZmllZFVuYXV0aG9yaXNlZFVuYXZhaWxhYmxlTm9PbG0AAHMDAAAE +AAAABAAAAHsDAABIZWxwZXJkZXZpY2VfcGlja2xlAPJqEQAJAAAA9msRAA0AAABSZXNwb25zZUJv +ZHlmYWlsdXJlc29uZV90aW1lX2tleXMAAAAgbBEACAAAAChsEQANAAAAb25lX3RpbWVfa2V5X2Nv +dW50cwBIbBEAEwAAAEZhaWx1cmVlcnJjb2RlZXJyb3JtZXNzYWdlAABrbBEABwAAAHJsEQAFAAAA +d2wRAAcAAAAgbBEACAAAAGRldmljZV9rZXlzbWFzdGVyX2tleXNzZWxmX3NpZ25pbmdfa2V5c3Vz +ZXJfc2lnbmluZ19rZXlzIGwRAAgAAACgbBEACwAAAKtsEQALAAAAtmwRABEAAADHbBEAEQAAAGV0 +YWdjb3VudAAAAABtEQAEAAAABG0RAAUAAABldmVudF9pZBxtEQAIAAAALS0tLS1CRUdJTiBNRUdP +TE0gU0VTU0lPTiBEQVRBLS0tLS0tLS0tLUVORCBNRUdPTE0gU0VTU0lPTiBEQVRBLS0tLS1Db3Vs +ZG4ndCBzZXJpYWxpemUgZGV2aWNlIGtleXMvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291 +dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4 +LXNkay1jcnlwdG8vc3JjL3R5cGVzL2RldmljZV9rZXlzLnJzAACObREAfAAAAF0AAAAsAAAAfAMA +AAAAAAABAAAAfQMAAH4DAAB8AwAAAAAAAAEAAAB/AwAAgAMAAHwDAAAAAAAAAQAAAIEDAACCAwAA +fAMAAAAAAAABAAAAgwMAAIQDAAB8AwAAAAAAAAEAAACFAwAAhgMAAHwDAAAAAAAAAQAAAIcDAACI +AwAAfAMAAAAAAAABAAAAiQMAAIoDAABpbmJvdW5kX2dyb3VwX3Nlc3Npb25zMm5lZWRzX2JhY2t1 +cGJhY2t1cGluYm91bmRfZ3JvdXBfc2Vzc2lvbnNpbmJvdW5kX2dyb3VwX3Nlc3Npb25zM2JhY2tl +ZF91cF90b21hdHJpeC1zZGstY3J5cHRvAIsDAABYAAAACAAAAIwDAACNAwAAWAAAAAgAAACOAwAA +jwMAAFgAAAAIAAAAkAMAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNy +YXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9z +cmMvbGliLnJzAExvEQBrAAAAlQAAAA4AAABzdHJlYW0gZGlkIG5vdCBjb250YWluIHZhbGlkIFVU +Ri04AADIbxEAIgAAABUAAACRAwAADAAAAAQAAACSAwAAkwMAAKQAAABhIERpc3BsYXkgaW1wbGVt +ZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AHwDAAAAAAAAAQAAAJQDAAAv +cnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2Fs +bG9jL3NyYy9zdHJpbmcucnMAWHARAEsAAAAzCgAADgAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1 +OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvZXhh +Y3Rfc2l6ZS5ycwAAtHARAFoAAAB6AAAACQAAAJUDAAAEAAAABAAAAKoAAABFcnJvclRyaWVkIHRv +IHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eQAAADVxEQAkAAAAL3J1c3RjL2FlZGQxNzNhMmMw +ODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5y +c2RxEQBMAAAAzwEAAAkAAABtaXNzaW5nIGZpZWxkIGBgwHERAA8AAADPcREAAQAAAGR1cGxpY2F0 +ZSBmaWVsZCBgAAAA4HERABEAAADPcREAAQAAAE5vbmVTb21lcwMAAAQAAAAEAAAAygAAAJYDAACX +AwAAmAMAAJkDAACaAwAAmwMAAJwDAACdAwAAngMAAJ8DAACgAwAAmwMAAKEDAACiAwAAowMAAKQD +AACgAwAAmwMAAKUDAACmAwAApwMAAKgDAACpAwAAmwMAAKoDAACrAwAArAMAAK0DAACuAwAAmwMA +AK8DAACwAwAAsQMAALIDAACzAwAAmwMAALQDAAC1AwAAtgMAALcDAACgAwAAmwMAALgDAAC5AwAA +ugMAALsDAAC8AwAAmwMAAL0DAAC+AwAAvwMAAMADAADBAwAAmwMAAMIDAADDAwAAxAMAAMUDAACp +AwAAmwMAAMYDAADHAwAAyAMAAMkDAACgAwAAmwMAAMoDAADLAwAAzAMAAM0DAACgAwAAmwMAAM4D +AADPAwAA0AMAANEDAACgAwAAmwMAANIDAABQAAAACAAAANIDAABQAAAACAAAANMDAABUcxEAVHMR +ANQDAADVAwAA1gMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA +4gMAAOMDAADkAwAA5QMAAOYDAADnAwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAADw +AwAA8QMAAPIDAADzAwAAUmVxdWVzdABzAwAABAAAAAQAAAB5AgAAUmVxdWVzdENhbmNlbGxhdGlv +bl9DdXN0b20AAHMDAAAEAAAABAAAADwDAABzAwAABAAAAAQAAAD0AwAAcwMAAAQAAAAEAAAA9QMA +AHMDAAAEAAAABAAAAPYDAABzAwAABAAAAAQAAAAQAQAAcwMAAAQAAAAEAAAA9wMAAHMDAAAEAAAA +BAAAAPgDAABzAwAABAAAAAQAAAD5AwAAcwMAAAQAAAAEAAAA+gMAAHMDAAAEAAAABAAAAPsDAABz +AwAABAAAAAQAAAD8AwAAcwMAAAQAAAAEAAAA/QMAAHMDAAAEAAAABAAAAP4DAABzAwAABAAAAAQA +AAD/AwAAcwMAAAQAAAAEAAAAcAEAAHMDAAAEAAAABAAAAAAEAABzAwAABAAAAAQAAAABBAAAcwMA +AAQAAAAEAAAACQEAAHMDAAAEAAAABAAAAAIEAABzAwAABAAAAAQAAAADBAAAcwMAAAQAAAAEAAAA +jAEAAHMDAAAEAAAABAAAAAQEAABzAwAABAAAAAQAAAAFBAAAcwMAAAQAAAAEAAAABgQAAHMDAAAE +AAAABAAAAAcEAABzAwAABAAAAAQAAAAGAQAAcwMAAAQAAAAEAAAACAQAAHMDAAAEAAAABAAAAAkE +AABzAwAABAAAAAQAAAAKBAAAcwMAAAQAAAAEAAAACwQAAHMDAAAEAAAABAAAAAIBAABzAwAABAAA +AAQAAAAMBAAAcwMAAAQAAAAEAAAADQQAAHMDAAAEAAAABAAAAA4EAABzAwAABAAAAAQAAAAPBAAA +EAQAACAAAAABAAAAUAEAAHMDAAAEAAAABAAAABEEAABzAwAABAAAAAQAAAC/AAAAcwMAAAQAAAAE +AAAAEgQAAHMDAAAEAAAABAAAABMEAABzAwAABAAAAAQAAAAUBAAAcwMAAAQAAAAEAAAAFQQAAHMD +AAAEAAAABAAAABYEAABzAwAABAAAAAQAAAAXBAAAcwMAAAQAAAAEAAAAGAQAAHMDAAAEAAAABAAA +ABkEAABzAwAABAAAAAQAAAAaBAAAcwMAAAQAAAAEAAAAGwQAAHMDAAAEAAAABAAAABwEAABzAwAA +BAAAAAQAAADFAAAAcwMAAAQAAAAEAAAAHQQAAG0uY3Jvc3Nfc2lnbmluZy5tYXN0ZXJtLmNyb3Nz +X3NpZ25pbmcudXNlcl9zaWduaW5nbS5jcm9zc19zaWduaW5nLnNlbGZfc2lnbmluZ20ubWVnb2xt +X2JhY2t1cC52MRAEAAAgAAAAAQAAAB4EAABzAwAAwAAAAAQAAAAfBAAAaW50ZXJuYWwgZXJyb3I6 +IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogVW5rbm93biB2YXJpYW50AAAA3HcRADkAAABzcmMv +ZW5jcnlwdGlvbi5ycwAAACB4EQARAAAAZgAAABIAAABzcmMvZXZlbnRzLnJzAAAARHgRAA0AAAA6 +AAAAEgAAAFRoZSBgRGV2aWNlS2V5QWxnb3JpdGhtTmFtZS5Vbmtub3duYCB2YXJpYW50IGNhbm5v +dCBiZSBjb252ZXJ0ZWRVbmtub3duIHZlcmlmaWNhdGlvbiBtZXRob2QgKHJlY2VpdmVkIGBgKQAA +AKR4EQAnAAAAy3gRAAIAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2Vkc3JjL3ZlcmlmaWNhdGlv +bi5yc/l4EQATAAAAZQEAABUAAAAAAAAAYGFzeW5jIGZuYCByZXN1bWVkIGFmdGVyIGNvbXBsZXRp +b24A+XgRABMAAAA7AgAAFQAAAPl4EQATAAAAqAMAABUAAABldmVudCBzcmMvdmVyaWZpY2F0aW9u +LnJzOjExNDZtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb24AAHdsEQAHAAAAcwMA +AAwAAAAEAAAAtgEAACAEAAAhBAAAAQAAAHoEAAADAAAAZHkRAB4AAACCeREAJAAAAKh5EQABAAAA +cLsWALB5EQCCeREAJAAAAPl4EQATAAAAAQAAADYxYjE3NWItZGlydHk2MWIxNzVifW51bGx7YSBz +dHJpbmcwMU1lbnRpb25zdXNlcl9pZHNyb29tNHoRAAgAAAA8ehEABAAAAFVuc2lnbmVkRGVIZWxw +ZXJyZWRhY3RlZF9iZWNhdXNlYHoRABAAAABFdmVudFR5cGVEZUhlbHBlcnR5cGUAAACJehEABAAA +AFJlZGFjdGlvbkRlSGVscGVydW5zaWduZWQAAACpehEACAAAAENhbGxTZWxlY3RBbnN3ZXJFdmVu +dENvbnRlbnRjYWxsX2lkcGFydHlfaWRzZWxlY3RlZF9wYXJ0eV9pZHZlcnNpb24A2HoRAAcAAADf +ehEACAAAAOd6EQARAAAA+HoRAAcAAABSZWRhY3RlZENhbGxTZWxlY3RBbnN3ZXJFdmVudENvbnRl +bnRDYWxsQW5zd2VyRXZlbnRDb250ZW50YW5zd2VyWnsRAAYAAADYehEABwAAAN96EQAIAAAA+HoR +AAcAAABSZWRhY3RlZENhbGxBbnN3ZXJFdmVudENvbnRlbnRDYWxsSGFuZ3VwRXZlbnRDb250ZW50 +cmVhc29uAADYehEABwAAAN96EQAIAAAA+HoRAAcAAAC0exEABgAAAFJlZGFjdGVkQ2FsbEhhbmd1 +cEV2ZW50Q29udGVudE1lbnRpb25zRGVIZWxwZXJtLm1lbnRpb25zCnwRAAoAAABNZXNzYWdlVHlw +ZURlSGVscGVybXNndHlwZQAAL3wRAAcAAAByZWxfdHlwZU9yaWdpbmFsUm9vbVJlZGFjdGlvbkV2 +ZW50RGVIZWxwZXJjb250ZW50cmVkYWN0c2V2ZW50X2lkc2VuZGVyb3JpZ2luX3NlcnZlcl90c3Jv +b21faWQAAABqfBEABwAAAHF8EQAHAAAAeHwRAAgAAACAfBEABgAAAIZ8EQAQAAAAlnwRAAcAAACp +ehEACAAAAFJlZGFjdGVkUmVhY3Rpb25FdmVudENvbnRlbnRSZWFjdGlvbkV2ZW50Q29udGVudG0u +cmVsYXRlc190bwh9EQAMAAAAVW5zaWduZWRSb29tUmVkYWN0aW9uRXZlbnQAAGp8EQAHAAAAeHwR +AAgAAACAfBEABgAAAIZ8EQAQAAAAqXoRAAgAAABNZXNzYWdlTGlrZVVuc2lnbmVkYWdldHJhbnNh +Y3Rpb25faWRtLnJlbGF0aW9ucwBzfREAAwAAAHZ9EQAOAAAAhH0RAAsAAABSZWRhY3RlZFVuc2ln +bmVkSW5kZXggb3V0IG9mIGJvdW5kcwC4fREAEwAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2No +ZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9t +YXRyaXgtc2RrLWNvbW1vbi9zcmMvZmFpbHVyZXNfY2FjaGUucnMAAADUfREAeQAAAJ4AAAAxAAAA +1H0RAHkAAAC4AAAAMQAAANR9EQB5AAAAbAAAACwAAABCYWNrZWRVcFJvb21LZXlhbGdvcml0aG1z +ZW5kZXJfa2V5c2Vzc2lvbl9rZXlzZW5kZXJfY2xhaW1lZF9rZXlzZm9yd2FyZGluZ19jdXJ2ZTI1 +NTE5X2tleV9jaGFpbgCPfhEACQAAAJh+EQAKAAAAon4RAAsAAACtfhEAEwAAAMB+EQAfAAAARXhw +b3J0ZWRSb29tS2V5c2Vzc2lvbl9pZAAAAI9+EQAJAAAAlnwRAAcAAACYfhEACgAAABd/EQAKAAAA +on4RAAsAAACtfhEAEwAAAMB+EQAfAAAAc3RydWN0IE1lc3NhZ2VMaWtlVW5zaWduZWQvcnVzdGMv +YWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3Jj +L2lvL2JvcnJvd2VkX2J1Zi5ycwAAAHZ/EQBTAAAA1gAAAEEAAAAvcnVzdGMvYWVkZDE3M2EyYzA4 +NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAAAA +3H8RAEkAAACzAQAAMQAAANx/EQBJAAAA2QEAABsAAAB2fxEAUwAAAM4AAABCAAAAdn8RAFMAAADf +AAAAGgAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xp +YnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzAAAAaIARAE0AAADhAwAAIQAAAGiAEQBNAAAA4QMA +AC4AAABogBEATQAAAOUDAAAgAAAAaIARAE0AAADlAwAAKwAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2 +ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC5y +cwAA+IARAE4AAAA7BAAADgAAAPiAEQBOAAAASAQAABwAAAD4gBEATgAAAEkEAAAdAAAA+IARAE4A +AABKBAAAJQAAAPiAEQBOAAAAUAQAABEAAAD4gBEATgAAAI4EAABAAAAA+IARAE4AAAC0BAAATgAA +APiAEQBOAAAAwgQAAFYAAAD4gBEATgAAANYEAAARAAAAYXNzZXJ0aW9uIGZhaWxlZDogZW5kID49 +IHN0YXJ0ICYmIGVuZCA8PSBsZW74gBEATgAAAC0FAAAFAAAA+IARAE4AAAA+BQAAKQAAAGFzc2Vy +dGlvbiBmYWlsZWQ6IG9mZnNldCAhPSAwICYmIG9mZnNldCA8PSBsZW4AAPiAEQBOAAAAmwAAAAUA +AAD4gBEATgAAAKMAAAAfAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2 +YWx1ZQAjBAAACAAAAAQAAAAkBAAAIwQAAAgAAAAEAAAArgAAACUEAAAIAAAABAAAAK4AAAAmBAAA +CAAAAAQAAACuAAAAJwQAAAgAAAAEAAAAJAQAACMEAAAIAAAABAAAAK4AAAAjBAAACAAAAAQAAACu +AAAAKAQAAAAAAAABAAAAKQQAACgEAAAAAAAAAQAAAEgBAABQb2lzb25FcnJvcnBvaXNvbmVkIGxv +Y2s6IGFub3RoZXIgdGFzayBmYWlsZWQgaW5zaWRlL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3Ry +eS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvZXllYmFsbC0wLjguNy9zcmMv +c3RhdGUucnNkgxEAXAAAADEAAAAdAAAAaWNlX2ZhaWxlZGludml0ZV90aW1lb3V0aWNlX3RpbWVv +dXR1c2VyX2hhbmd1cHVzZXJfbWVkaWFfZmFpbGVkdXNlcl9idXN5dW5rbm93bl9lcnJvcmludGVy +bmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvaG9tZS9ydW5uZXIvLmNhcmdvL3Jl +Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEu +MC4xMTUvc3JjL3Nlci5yc02EEQBfAAAAogIAACoAAABQcmVLZXlNZXNzYWdlc2Vzc2lvbl9rZXlz +AAAAKgQAAGAAAAABAAAAKwQAAG1lc3NhZ2UALAQAAAQAAAAEAAAALQQAACRzZXJkZV9qc29uOjpw +cml2YXRlOjpSYXdWYWx1ZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNy +YXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JlYWRsb2NrLTAuMS43L3NyYy9saWIucnMAAAAehREA +WwAAAJgAAAAnAAAAZXJyY29kZXNvZnRfbG9nb3V0cmV0cnlfYWZ0ZXJfbXNyb29tX3ZlcnNpb25h +ZG1pbl9jb250YWN0c3RhdHVzYm9keWN1cnJlbnRfdmVyc2lvbmR1cGxpY2F0ZSBmaWVsZCBgYN6F +EQARAAAA74URAAEAAABNX0ZPUkJJRERFTk1fVU5LTk9XTl9UT0tFTk1fTUlTU0lOR19UT0tFTk1f +QkFEX0pTT05NX05PVF9KU09OTV9OT1RfRk9VTkRNX0xJTUlUX0VYQ0VFREVETV9VTktOT1dOTV9V +TlJFQ09HTklaRURNX1VOQVVUSE9SSVpFRE1fVVNFUl9ERUFDVElWQVRFRE1fVVNFUl9JTl9VU0VN +X0lOVkFMSURfVVNFUk5BTUVNX1JPT01fSU5fVVNFTV9JTlZBTElEX1JPT01fU1RBVEVNX1RIUkVF +UElEX0lOX1VTRU1fVEhSRUVQSURfTk9UX0ZPVU5ETV9USFJFRVBJRF9BVVRIX0ZBSUxFRE1fVEhS +RUVQSURfREVOSUVETV9TRVJWRVJfTk9UX1RSVVNURURNX1VOU1VQUE9SVEVEX1JPT01fVkVSU0lP +Tk1fSU5DT01QQVRJQkxFX1JPT01fVkVSU0lPTk1fQkFEX1NUQVRFTV9HVUVTVF9BQ0NFU1NfRk9S +QklEREVOTV9DQVBUQ0hBX05FRURFRE1fQ0FQVENIQV9JTlZBTElETV9NSVNTSU5HX1BBUkFNTV9J +TlZBTElEX1BBUkFNTV9UT09fTEFSR0VNX0VYQ0xVU0lWRU1fUkVTT1VSQ0VfTElNSVRfRVhDRUVE +RURNX0NBTk5PVF9MRUFWRV9TRVJWRVJfTk9USUNFX1JPT01NX1dFQUtfUEFTU1dPUkRNX1VOQUJM +RV9UT19BVVRIT1JJWkVfSk9JTk1fVU5BQkxFX1RPX0dSQU5UX0pPSU5NX0JBRF9BTElBU01fRFVQ +TElDQVRFX0FOTk9UQVRJT05GSS5NQVUuTVNDMjI0Nl9OT1RfWUVUX1VQTE9BREVETV9OT1RfWUVU +X1VQTE9BREVERkkuTUFVLk1TQzIyNDZfQ0FOTk9UX09WRVJXUklURV9NRURJQU1fQ0FOTk9UX09W +RVJXUklURV9NRURJQU1fVVJMX05PVF9TRVRNX0JBRF9TVEFUVVNNX0NPTk5FQ1RJT05fRkFJTEVE +TV9DT05ORUNUSU9OX1RJTUVPVVRNX1dST05HX1JPT01fS0VZU19WRVJTSU9OdWxscnVlYWxzZUFs +Z29yaXRobSwEAAAEAAAABAAAABABAABNaXNzaW5nRWQyNTUxOUtleQAAAC4EAAAMAAAABAAAAC8E +AAAwBAAACAAAAAQAAAAFAQAAMQQAAAwAAAAEAAAAMgQAADMEAAAEAAAABAAAADQEAABUb0Rldmlj +ZUZvcndhcmRlZFJvb21LZXlFdmVudENvbnRlbnRhbGdvcml0aG1yb29tX2lkc2VuZGVyX2tleXNl +c3Npb25faWRzZXNzaW9uX2tleXNlbmRlcl9jbGFpbWVkX2VkMjU1MTlfa2V5Zm9yd2FyZGluZ19j +dXJ2ZTI1NTE5X2tleV9jaGFpbtiJEQAJAAAA4YkRAAcAAADoiREACgAAAPKJEQAKAAAA/IkRAAsA +AAAHihEAGgAAACGKEQAfAAAAVG9EZXZpY2VLZXlWZXJpZmljYXRpb25SZXF1ZXN0RXZlbnRDb250 +ZW50ZnJvbV9kZXZpY2V0cmFuc2FjdGlvbl9pZG1ldGhvZHN0aW1lc3RhbXAAoooRAAsAAACtihEA +DgAAALuKEQAHAAAAwooRAAkAAAAwBAAACAAAAAQAAABEAwAAMAQAAAgAAAAEAAAAewIAADUEAAAM +AAAABAAAAEYDAAAzBAAABAAAAAQAAAALBAAAT3ZlcmxvbmcgZHVyYXRpb24vaG9tZS9ydW5uZXIv +LmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5 +ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jb21tb24vc3JjL3RpbWVvdXQucnMAPYsRAHIAAAA0AAAA +RAAAAD2LEQByAAAALQAAAAEAAABgYXN5bmMgZm5gIHJlc3VtZWQgYWZ0ZXIgY29tcGxldGlvbi9o +b21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3Zjgy +YTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2dyb3VwX3Nl +c3Npb25zL2luYm91bmQucnPzixEAhQAAAIsBAAA0AAAA84sRAIUAAACdAQAANQAAAHNlbmRlcmV2 +ZW50X2lkb3JpZ2luX3NlcnZlcl90c2NvbnRlbnRtLnJlbGF0ZXNfdG8vaG9tZS9ydW5uZXIvLmNh +cmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRm +Ny9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL21vZC5ycwAAAMmMEQB0AAAAgQAA +AFEAAADJjBEAdAAAAJYAAABDAAAAyYwRAHQAAACyAAAAJQAAAEZpZWxkU2V0IGNvcnJ1cHRlZCAo +dGhpcyBpcyBhIGJ1ZykAAMmMEQB0AAAA1AAAABEAAABUaGUgdXNlciBoYXMgYSBwZW5kaW5nIGAv +a2V5L3F1ZXJ5YCByZXF1ZXN0IHdoaWNoIGRpZCBub3QgZmluaXNoIHlldCwgc29tZSBkZXZpY2Vz +IG1pZ2h0IGJlIG1pc3NpbmcupI0RAGQAAAAzBAAAGAAAAAQAAACCAAAAMwQAAAQAAAAEAAAAhAAA +AMmMEQB0AAAAPAQAAFoAAADJjBEAdAAAACgEAAA5AAAAyYwRAHQAAACiAwAAQQAAAHB1YmxpY19r +ZXlzaWduYXR1cmVzQmFja3VwSW5mb0hlbHBlcmF1dGhfZGF0YQAAANiJEQAJAAAAhI4RAAkAAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4 +MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL21hY2hpbmUucnMA +AKCOEQByAAAA7QYAAAUAAAAzBAAABAAAAAQAAAChAAAAoI4RAHIAAAAMBgAABQAAADMEAAAEAAAA +BAAAAIoAAAA2BAAAAAAAAAEAAAA3BAAAoI4RAHIAAAAmBgAAEQAAAFJlY2VpdmVkIGFuIGVuY3J5 +cHRlZCByb29tIGV2ZW50IHdpdGggYW4gdW5zdXBwb3J0ZWQgYWxnb3JpdGhtAAB0jxEAPgAAAKCO +EQByAAAAPQYAAA0AAABGYWlsZWQgdG8gZGVjcnlwdCBhIHJvb20gZXZlbnQ6IMyPEQAgAAAAPG91 +dCBvZiByYW5nZT4AAKCOEQByAAAAnwUAACcAAACgjhEAcgAAAIgGAAAaAAAAoI4RAHIAAADDBQAA +JgAAAKCOEQByAAAAHwUAAEMAAACgjhEAcgAAAPYFAAAsAAAAL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFjaGluZS5yc1SQEQB8AAAAmgIA +AGEAAABUkBEAfAAAAAkDAAApAAAAOAQAAKAIAAAIAAAAOQQAADoEAAAgBwAACAAAADsEAAA8BAAA +wAsAAAgAAAA9BAAAPgQAAPANAAAIAAAAPwQAAEAEAABgAwAACAAAAEEEAABCBAAATAAAAAQAAABD +BAAARAQAANQAAAAEAAAARQQAAEYEAAA8AAAABAAAAEcEAABIBAAAQAsAAAgAAABJBAAASgQAAAAH +AAAIAAAASwQAAEwEAADgBwAACAAAAE0EAABOBAAAYA0AAAgAAABPBAAAUAQAADAMAAAIAAAAUQQA +AFIEAABkAwAABAAAAFMEAABUBAAAwAMAAAgAAABVBAAAVgQAAIADAAAIAAAAVwQAAFgEAADwBgAA +CAAAAFkEAABaBAAAVAEAAAQAAABbBAAAXAQAALACAAAIAAAAXQQAAF4EAAA8AAAABAAAAF8EAABg +BAAAIAoAAAgAAABhBAAAYgQAABwBAAAEAAAAYwQAAGQEAAAACgAACAAAAGUEAABmBAAA4AAAAAgA +AABnBAAAaAQAAJABAAAIAAAAaQQAAGoEAACABwAACAAAAGsEAABsBAAAoBgAAAgAAABtBAAAbgQA +AGQAAAAEAAAAbwQAAHAEAAAgAQAACAAAAHEEAAByBAAAUAIAAAgAAABzBAAAdAQAAFwAAAAEAAAA +dQQAAHYEAADwDQAACAAAAHcEAAB4BAAAjAAAAAQAAAB5BAAAegQAAKwAAAAEAAAAewQAAHwEAAAQ +AQAACAAAAH0EAAB+BAAAxAEAAAQAAAB/BAAAgAQAAEAFAAAIAAAAgQQAAD4EAADwDQAACAAAAIIE +AACDBAAAkAcAAAgAAACEBAAAhQQAABAOAAAIAAAAhgQAAIcEAABABwAACAAAAIgEAACJBAAAAAIA +AAgAAACKBAAAiwQAAKABAAAIAAAAjAQAAI0EAABABQAACAAAAI4EAACPBAAAfAEAAAQAAACQBAAA +kQQAAOADAAAIAAAAkgQAAJMEAADgAQAACAAAAJQEAACVBAAAlAQAAAQAAACWBAAAlwQAAIABAAAI +AAAAmAQAAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4AJQRACAAAAAAL3J1c3RjL2Fl +ZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL3N5 +cy9wYWwvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAplBEAagAAABQAAAAJAAAA +MQQAAAwAAAAEAAAAmQQAAJoEAACkAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVk +IGFuIGVycm9yIHVuZXhwZWN0ZWRseQA2BAAAAAAAAAEAAACbBAAAL3J1c3RjL2FlZGQxNzNhMmMw +ODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJz +AASVEQBLAAAAMwoAAA4AAAB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGEgcmVsZWFzZSBsb2Fk +YJURACgAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9s +aWJyYXJ5L2NvcmUvc3JjL3N5bmMvYXRvbWljLnJzAJCVEQBPAAAA4AwAABgAAAB0aGVyZSBpcyBu +byBzdWNoIHRoaW5nIGFzIGFuIGFjcXVpcmUtcmVsZWFzZSBsb2FkAAAA8JURADEAAACQlREATwAA +AOEMAAAXAAAANgQAAAAAAAABAAAAnAQAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4g +YEVycmAgdmFsdWUAnQQAAAgAAAAEAAAAtAAAAEVycm9yL2hvbWUvcnVubmVyLy5jYXJnby9yZWdp +c3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdG9raW8tMS4zNi4wL3Ny +Yy9zeW5jL211dGV4LnJzAAAAjZYRAGAAAACyAQAAMwAAAI2WEQBgAAAAswEAABsAAACNlhEAYAAA +AIsCAAAdAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZY2WEQBgAAAA +kQIAAA0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8t +NmYxN2QyMmJiYTE1MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMvcndsb2NrLnJzAAAAWJcRAGEA +AABBAgAASQAAAFiXEQBhAAAARQIAABsAAABYlxEAYQAAAEkCAAARAAAAWJcRAGEAAACwAQAAOAAA +AFiXEQBhAAAAsQEAABsAAABYlxEAYQAAALUBAAARAAAAWJcRAGEAAAAFAwAAOgAAAFiXEQBhAAAA +BgMAABsAAABYlxEAYQAAAAoDAAARAAAAVHJ5RnJvbUludEVycm9yADMEAAAEAAAABAAAALYAAABT +aWduYXR1cmVzAAAzBAAABAAAAAQAAACeBAAAJHNlcmRlX2pzb246OnByaXZhdGU6OlJhd1ZhbHVl +AACfBAAAIAAAAAEAAACgBAAAoQQAAAwAAAAEAAAAogQAADEEAAAMAAAABAAAAJgAAAAzBAAABAAA +AAQAAACjBAAAMwQAAAQAAAAEAAAApAQAAJ8EAAAgAAAAAQAAAKUEAAAzBAAABAAAAAQAAACIAAAA +MwQAAMAAAAAEAAAApgQAADMEAAAEAAAABAAAAOsAAABEaWZmUmVzdWx0bWFzdGVyX2RpZmZlcnOf +BAAAAQAAAAEAAACnBAAAc2VsZl9zaWduaW5nX2RpZmZlcnN1c2VyX3NpZ25pbmdfZGlmZmVyczME +AAAEAAAABAAAAIYBAABDYW5jZWxJbmZvY2FuY2VsbGVkX2J5X3VzY2FuY2VsX2NvZGWoBAAADAAA +AAQAAACpBAAAcmVhc29uAAAzBAAABAAAAAQAAACqBAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdp +c3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAu +MTE1L3NyYy92YWx1ZS9zZXIucnMAAADkmREAZQAAAJsBAAAuAAAAc2VyaWFsaXplX3ZhbHVlIGNh +bGxlZCBiZWZvcmUgc2VyaWFsaXplX2tleQDkmREAZQAAAKgBAAAfAAAA5JkRAGUAAACvAQAALgAA +AE1lZ29sbVYxQXV0aERhdGGfBAAAIAAAAAEAAABQAQAAqwQAAAwAAAAEAAAArAQAAGV4dHJhAAAA +MwQAAAQAAAAEAAAAeQMAAFRvRGV2aWNlUm9vbUtleUV2ZW50Q29udGVudAAzBAAABAAAAAQAAADK +AAAAQ3Jvc3NTaWduaW5nU3RhdHVzaGFzX21hc3Rlcmhhc19zZWxmX3NpZ25pbmdoYXNfdXNlcl9z +aWduaW5nTWVnb2xtQmFja3VwVjFDdXJ2ZTI1NTE5QWVzU2hhMgAzBAAABAAAAAQAAACtBAAAT3Ro +ZXJTZWxmU2lnbmluZ2lubmVyAAAArgQAAMQAAAAEAAAArwQAADMEAAAEAAAABAAAALAEAABVc2Vy +U2lnbmluZwAzBAAABAAAAAQAAACxBAAATWFzdGVyU2lnbmluZwAAADMEAAAEAAAABAAAALIEAABQ +cml2YXRlQ3Jvc3NTaWduaW5nSWRlbnRpdHl1c2VyX2lkAAAwBAAACAAAAAQAAAAFAQAAc2hhcmVk +AACzBAAABAAAAAQAAAC0BAAAbWFzdGVyX2tleQAAtQQAAAQAAAAEAAAAtgQAAHVzZXJfc2lnbmlu +Z19rZXm3BAAABAAAAAQAAAC4BAAAc2VsZl9zaWduaW5nX2tleTMEAAAEAAAABAAAALkEAABSb29t +MwQAAAQAAAAEAAAAugQAAFRvRGV2aWNlMwQAAAQAAAAEAAAAuwQAADMEAAAEAAAABAAAALwEAAC9 +BAAAMwQAAAQAAAAEAAAAvgQAAL8EAAAzBAAABAAAAAQAAADABAAAwQQAADMEAAAEAAAABAAAAMIE +AADDBAAAMwQAAAQAAAAEAAAAxAQAAMUEAAAzBAAABAAAAAQAAADGBAAAxwQAADMEAAAEAAAABAAA +AMgEAADJBAAAMwQAAAQAAAAEAAAAygQAAMsEAAAzBAAABAAAAAQAAADMBAAAzQQAADMEAAAEAAAA +BAAAAM4EAADPBAAAMwQAAAQAAAAEAAAA0AQAANEEAAAzBAAABAAAAAQAAADSBAAA0wQAADMEAAAE +AAAABAAAANQEAADVBAAAMwQAAAQAAAAEAAAA1gQAANcEAAAzBAAABAAAAAQAAADYBAAA2QQAADME +AAAEAAAABAAAANoEAADbBAAAMwQAAAQAAAAEAAAA3AQAAN0EAAAzBAAABAAAAAQAAADeBAAA3wQA +ADMEAAAEAAAABAAAAOAEAADhBAAAMwQAAAQAAAAEAAAA4gQAAOMEAAAzBAAABAAAAAQAAADkBAAA +5QQAADMEAAAEAAAABAAAAOYEAADnBAAAMwQAAAQAAAAEAAAA6AQAAOkEAAAzBAAABAAAAAQAAADq +BAAA6wQAADMEAAAEAAAABAAAAOwEAADtBAAAMwQAAAQAAAAEAAAA7gQAAO8EAAAzBAAABAAAAAQA +AADwBAAA8QQAADMEAAAEAAAABAAAAPIEAADzBAAAMwQAAAQAAAAEAAAA9AQAAPUEAAAzBAAABAAA +AAQAAAD2BAAA9wQAADMEAAAEAAAABAAAAPgEAAD5BAAAMwQAAAQAAAAEAAAA+gQAAPsEAAAzBAAA +BAAAAAQAAAD8BAAA/QQAADMEAAAEAAAABAAAAP4EAAD/BAAAMwQAAAQAAAAEAAAAAAUAAAEFAAAz +BAAABAAAAAQAAAACBQAAAwUAADMEAAAEAAAABAAAAAQFAAAFBQAAMwQAAAQAAAAEAAAABgUAAAcF +AAAzBAAABAAAAAQAAAAIBQAACQUAADMEAAAEAAAABAAAAAoFAAALBQAAMwQAAAQAAAAEAAAADAUA +AA0FAAAzBAAABAAAAAQAAAAOBQAADwUAADMEAAAEAAAABAAAABAFAAARBQAAMwQAAAQAAAAEAAAA +EgUAABMFAAAzBAAABAAAAAQAAAAUBQAAFQUAADMEAAAEAAAABAAAABYFAAAXBQAAMwQAAAQAAAAE +AAAAGAUAABkFAAAzBAAABAAAAAQAAAAaBQAAGwUAADMEAAAEAAAABAAAABwFAAAdBQAAc3JjL2Z1 +dHVyZS5ycwAAAKSgEQANAAAAGwAAABUAAABzcmMvbWFjaGluZS5ycwAAxKARAA4AAADiAQAACwAA +AFRvRGV2aWNlUm9vbUVuY3J5cHRlZEV2ZW50Q29udGVudHNjaGVtZQAfBQAABAAAAAQAAAAgBQAA +bS5kdW1teW0ua2V5LnZlcmlmaWNhdGlvbi5hY2NlcHRtLmtleS52ZXJpZmljYXRpb24uY2FuY2Vs +bS5rZXkudmVyaWZpY2F0aW9uLmRvbmVtLmtleS52ZXJpZmljYXRpb24ua2V5bS5rZXkudmVyaWZp +Y2F0aW9uLm1hY20ua2V5LnZlcmlmaWNhdGlvbi5zdGFydG0ua2V5LnZlcmlmaWNhdGlvbi5yZWFk +eW0ua2V5LnZlcmlmaWNhdGlvbi5yZXF1ZXN0bS5yb29tLmVuY3J5cHRlZG0ucm9vbV9rZXltLmZv +cndhcmRlZF9yb29tX2tleW0ucm9vbV9rZXlfcmVxdWVzdG0ucm9vbV9rZXkud2l0aGhlbGRtLnNl +Y3JldC5zZW5kbS5zZWNyZXQucmVxdWVzdEhlbHBlcnR5cGVYohEABAAAAFRvRGV2aWNlUm9vbUtl +eVJlcXVlc3RFdmVudENvbnRlbnRhY3Rpb24hBQAADAAAAAQAAAAiBQAAYm9keSMFAAAsAAAABAAA +ACQFAAByZXF1ZXN0aW5nX2RldmljZV9pZCUFAAAIAAAABAAAAEQDAAByZXF1ZXN0X2lkAAAfBQAA +BAAAAAQAAABDAwAAVG9EZXZpY2VFdmVudHNlbmRlcgAlBQAACAAAAAQAAAAFAQAAY29udGVudAAm +BQAAMAAAAAQAAAAnBQAAb3RoZXIAAAAfBQAABAAAAAQAAAB5AwAARW5jcnlwdGlvblNldHRpbmdz +YWxnb3JpdGhtACEFAAAMAAAABAAAAIgBAAByb3RhdGlvbl9wZXJpb2QAKAUAABAAAAAIAAAAKQUA +AHJvdGF0aW9uX3BlcmlvZF9tc2dzKAUAAAgAAAAIAAAAKgUAAGhpc3RvcnlfdmlzaWJpbGl0eQAA +KwUAAAwAAAAEAAAALAUAAG9ubHlfYWxsb3dfdHJ1c3RlZF9kZXZpY2VzAAAfBQAABAAAAAQAAACG +AQAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdk +MjJiYmExNTAwMWYvaW5kZXhlZF9kYl9mdXR1cmVzLTAuNC4xL3NyYy9pbnRlcm5hbF91dGlscy5y +cwSkEQBwAAAAFAAAABYAAABVc2VyU2lnbmluZ1B1YmtleQAAAB8FAAAEAAAABAAAAC0FAAB9ewAA +LgUAAAAAAAABAAAAbgEAAE1pc21hdGNoZWQgZXZlbnQgdHlwZSwgZ290ICwgZXhwZWN0ZWQgAAC8 +pBEAGwAAANekEQALAAAATWVnb2xtVjFBZXNTaGEyAB8FAAAEAAAABAAAAC8FAABVbmtub3duAB8F +AAAEAAAABAAAADAFAABUb0RldmljZUtleVZlcmlmaWNhdGlvbkFjY2VwdEV2ZW50Q29udGVudHRy +YW5zYWN0aW9uX2lkACUFAAAIAAAABAAAAHsCAABtZXRob2QAAB8FAAAEAAAABAAAADEFAABtLnJl +bGF0ZXNfdG9SZWRhY3RlZEtleVZlcmlmaWNhdGlvbkFjY2VwdEV2ZW50Q29udGVudAAAAHRodW1i +bmFpbF91cmx0aHVtYm5haWxfZmlsZVRocmVhZERlSGVscGVyZXZlbnRfaWRpc19mYWxsaW5nX2Jh +Y2vtpREACAAAAPWlEQAPAAAAbS5pbl9yZXBseV90b2RhdGEgZGlkIG5vdCBtYXRjaCBhbnkgdmFy +aWFudCBvZiB1bnRhZ2dlZCBlbnVtIFJlbGF0aW9uRGVIZWxwZXJSZWxhdGlvblNlckhlbHBlclJl +cGxhY2VtZW50cmVsX3R5cGVtLnJlcGxhY2VUaHJlYWRtLnRocmVhZFJlcGxhY2VtZW50SnNvblJl +cHIA7aURAAgAAABpbnRlcm5hbGx5IHRhZ2dlZCBlbnVtIEtub3duUmVsYXRpb25EZUhlbHBlclRo +cmVhZFVuc3RhYmxlRGVIZWxwZXJpby5lbGVtZW50LnNob3dfcmVwbHkA7aURAAgAAAD6phEAFQAA +AEV2ZW50V2l0aFJlbGF0ZXNUb0RlSGVscGVybS5uZXdfY29udGVudACMpREADAAAADqnEQANAAAA +bS5tZW50aW9uc1JlbGF0aW9ubS5yZWZlcmVuY2VtLmFubm90YXRpb25pbnRlcm5hbGx5IHRhZ2dl +ZCBlbnVtIEVuY3J5cHRlZEV2ZW50U2NoZW1lTWVnb2xtVjFBZXNTaGEyQ29udGVudGNpcGhlcnRl +eHRzZW5kZXJfa2V5ZGV2aWNlX2lkc2Vzc2lvbl9pZAAAAMKnEQAKAAAAzKcRAAoAAADWpxEACQAA +AN+nEQAKAAAAT2xtVjFDdXJ2ZTI1NTE5QWVzU2hhMkNvbnRlbnQAAADCpxEACgAAAMynEQAKAAAA +UmVkYWN0ZWRSb29tRW5jcnlwdGVkRXZlbnRDb250ZW50Q2lwaGVydGV4dEluZm8AnKIRAAQAAABY +ohEABAAAAEJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uc0pzb25SZXByAIWmEQAJAAAAlKYRAAgA +AABqpxEACwAAAGB1bndyYXBfdGhyb3dgIGZhaWxlZC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2No +ZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9t +YXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2dyb3VwX3Nlc3Npb25zL2luYm91bmQucnMAAM2oEQCF +AAAAIQEAAFAAQfDSxgALhVBgYXN5bmMgZm5gIHJlc3VtZWQgYWZ0ZXIgY29tcGxldGlvbkNhbid0 +IGV4cG9ydCBzZXNzaW9uAM2oEQCFAAAAJQEAAD4AAADNqBEAhQAAAAIBAAAzAAAAUGF5bG9hZHJv +b21faWQvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFm +NDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3Jl +L21vZC5ycwAA1qkRAHQAAACMBgAAHQAAAG0ub2xtLnYxLmN1cnZlMjU1MTktYWVzLXNoYTJtLm1l +Z29sbS52MS5hZXMtc2hhMlyqEQAcAAAAeKoRABQAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDKc +qhEAGAAAAB8FAAAIAAAABAAAAAQAAABvcmlnaW5fc2VydmVyX3RzdW5zaWduZWRzdHJ1Y3QgRXZl +bnRpby5lbGVtZW50LnRocmVhZAAAAIWmEQAJAAAAlKYRAAgAAADwqhEAEQAAAHZhcmlhbnQgaW5k +ZXggMCA8PSBpIDwgMxyrEQAYAAAAc3RydWN0IEJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uc0pz +b25SZXByc3RydWN0IEV2ZW50V2l0aFJlbGF0ZXNUb0RlSGVscGVyc3RydWN0IEhlbHBlch8FAAAE +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 +thEAsgUAAMwFAAC0BQAAtQUAALYFAADNBQAAJAAAAAQAAACwBQAAzQUAACQAAAAEAAAAsQUAALAF +AABgthEAsgUAAM4FAAC0BQAAtQUAALYFAADPBQAAQAAAAAQAAACwBQAAzwUAAEAAAAAEAAAAsQUA +ALAFAACcthEAsgUAANAFAAC0BQAAtQUAALYFAADRBQAAMAAAAAQAAACwBQAA0QUAADAAAAAEAAAA +sQUAALAFAADYthEAsgUAANIFAAC0BQAAtQUAALYFAADTBQAAQAAAAAQAAACwBQAA0wUAAEAAAAAE +AAAAsQUAALAFAAAUtxEAsgUAANQFAAC0BQAAtQUAALYFAABFdmVudEVycm9yAAAfBQAABAAAAAQA +AAABAQAASnNvbkVycm9yU2Vzc2lvbkNyZWF0aW9uHwUAAAQAAAAEAAAAAgEAAFNlc3Npb25FeHBv +cnQAAAAfBQAABAAAAAQAAAADAQAAU3RvcmUAAAAfBQAABAAAAAQAAAC/AAAAU2Vzc2lvbldlZGdl +ZAAAAB8FAAAEAAAABAAAAAYBAABSZXBsYXllZE1lc3NhZ2VNaXNzaW5nU2Vzc2lvblVuc3VwcG9y +dGVkQWxnb3JpdGhtTm90QW5PYmplY3RNaXNzaW5nQ2lwaGVydGV4dE1pc3NpbmdTaWduaW5nS2V5 +TWlzc2luZ1NlbmRlcktleU1pc21hdGNoZWRTZW5kZXJNaXNtYXRjaGVkS2V5c9UFAAAEAAAABAAA +ANYFAABNaXNtYXRjaGVkUm9vbQAAJQUAAAgAAAAEAAAABQEAAB8FAAAEAAAABAAAANcFAABOb3Jt +YWwAAB8FAAAEAAAABAAAAC0EAABQcmVLZXkAAB8FAAAEAAAABAAAANgFAABNaXNzaW5nUm9vbUtl +eQAAHwUAAAQAAAAEAAAA2QUAAE1pc21hdGNoZWRJZGVudGl0eUtleXNrZXlfZWQyNTUxOWRldmlj +ZV9lZDI1NTE5ANoFAAAEAAAABAAAANsFAABrZXlfY3VydmUyNTUxOQAA3AUAAAQAAAAEAAAA3QUA +AGRldmljZV9jdXJ2ZTI1NTE5AAAAHwUAAAQAAAAEAAAA3gUAAB8FAAAEAAAABAAAAN8FAAAfBQAA +BAAAAAQAAADgBQAASW52YWxpZEtleUlkHwUAAAQAAAAEAAAAuAAAAFVzZXJJZE1pc21hdGNoTm9T +aWduYXR1cmVGb3VuZFZlcmlmaWNhdGlvbkVycm9yAB8FAAAEAAAABAAAALkAAABJbnZhbGlkS2V5 +SW52YWxpZFNpZ25hdHVyZVNpZ25pbmdLZXlDaGFuZ2VkAB8FAAAEAAAABAAAAL0AAAAfBQAABAAA +AAQAAAC+AAAAU3RvcmVFcnJvci9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4 +LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2V5ZWJhbGwtMC44Ljcvc3JjL3NoYXJlZC5ycwBe +uhEAXQAAAFMAAAAbAAAAXroRAF0AAACMAAAAHAAAAEtleU1pc21hdGNoZWRQdWJsaWNLZXlzL2hv +bWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmEx +NTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1L3NyYy9zZXIucnMAAPO6EQBfAAAAogIAACoAAABSZXF1 +ZXN0ZWRLZXlJbmZvIQUAAAwAAAAEAAAALwQAAOEFAAAMAAAABAAAAOIFAABBY2NvdW50VW5zZXRN +aXNtYXRjaGVkQWNjb3VudGV4cGVjdGVkAAAA4wUAABAAAAAEAAAAwQAAAGdvdAAfBQAABAAAAAQA +AADCAAAASW8AAB8FAAAEAAAABAAAAMMAAABVbnBpY2tsaW5nRXJyb3JQaWNrbGUAAAAfBQAABAAA +AAQAAADEAAAAHwUAAAQAAAAEAAAAxQAAAElkZW50aWZpZXJWYWxpZGF0aW9uVW5zdXBwb3J0ZWRE +YXRhYmFzZVZlcnNpb24AAB8FAAAEAAAABAAAAOQFAAAfBQAABAAAAAQAAADIAAAAQmFja2VuZAAf +BQAABAAAAAQAAADJAAAASW52YWxpZExvY2tHZW5lcmF0aW9uJHNlcmRlX2pzb246OnByaXZhdGU6 +OlJhd1ZhbHVlS2V5TWlzbWF0Y2hmb3VuZE1pc3NpbmdDcm9zc1NpZ25pbmdJZGVudGl0eU1pc3Np +bmdEZXZpY2VLZXlzRmxvd0lkTWlzbWF0Y2hPbG1WMUN1cnZlMjU1MTlBZXNTaGEyAB8FAAAEAAAA +BAAAAOUFAAAfBQAABAAAAAQAAADmBQAATWFwQWNjZXNzOjpuZXh0X3ZhbHVlIGNhbGxlZCBiZWZv +cmUgbmV4dF9rZXkvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZS0xLjAuMTk3L3NyYy9kZS92YWx1ZS5ycwB0vREAXwAA +AM4EAAAbAAAAU2FzVjEAAAAfBQAABAAAAAQAAADnBQAAX0N1c3RvbQAfBQAABAAAAAQAAADoBQAA +dWxscnVlYWxzZVByZWZpeOkFAAACAAAAAQAAAOoFAAAfBQAABAAAAAQAAADrBQAAUGFyaXR5AADp +BQAAAQAAAAEAAADsBQAAHwUAAAQAAAAEAAAAqwEAAExlbmd0aEJhc2U1OB8FAAAEAAAABAAAAO0F +AABTaWduYXR1cmVJbnZhbGlkTUFDAB8FAAAEAAAABAAAAO4FAABJbnZhbGlkTUFDTGVuZ3RoSW52 +YWxpZFBhZGRpbmcAAB8FAAAEAAAABAAAAO8FAABVbmtub3duTWVzc2FnZUluZGV4U3RhcnRlZFNj +YW5uZWRDb25maXJtZWRSZWNpcHJvY2F0ZWREb25ldmVyaWZpZWRfZGV2aWNlcwAA8AUAAAwAAAAE +AAAA8QUAAHZlcmlmaWVkX2lkZW50aXRpZXMAHwUAAAQAAAAEAAAA8gUAAENhbmNlbGxlZAAAAB8F +AAAEAAAABAAAAPMFAABNYXN0ZXJQdWJrZXlEb21FeGNlcHRpb25jb2Rl9AUAAAIAAAACAAAA9QUA +AG5hbWVtZXNzYWdlQ3J5cHRvU3RvcmVFcnJvckluYm91bmRHcm91cFNlc3Npb25QaWNrbGVpbml0 +aWFsX3JhdGNoZXRzaWduaW5nX2tleXNpZ25pbmdfa2V5X3ZlcmlmaWVkY29uZmln2L8RAA8AAADn +vxEACwAAAPK/EQAUAAAABsARAAYAAAD2BQAADAAAAAQAAAD3BQAA+AUAAPkFAABhIERpc3BsYXkg +aW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5APoFAAAAAAAAAQAA +APsFAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJy +YXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAjMARAEsAAAAzCgAADgAAAEVycm9yCgpTdGFjazoKCgoK +AAAA/AUAAAAAAAABAAAA/QUAAPwFAAAAAAAAAQAAAP4FAAD8BQAAAAAAAAEAAAD/BQAA/AUAAAAA +AAABAAAAAAYAAPwFAAAAAAAAAQAAAAEGAABpbm5lcnN0cnVjdCBDaGFpblN0b3JlIHdpdGggMSBl +bGVtZW50AAAAUcERACAAAAACBgAACAAAAAQAAAAEAAAAY291bnRlcnN0cnVjdCBSYXRjaGV0IHdp +dGggMiBlbGVtZW50cwAAAJPBEQAeAAAAc2lnbmluZ19rZXlkaWZmaWVfaGVsbG1hbl9rZXlvbmVf +dGltZV9rZXlzZmFsbGJhY2tfa2V5c3N0cnVjdCBBY2NvdW50UGlja2xlIHdpdGggNCBlbGVtZW50 +cwDzwREAJAAAAHNlc3Npb25fa2V5c3NlbmRpbmdfcmF0Y2hldHJlY2VpdmluZ19jaGFpbnNjb25m +aWdzdHJ1Y3QgU2Vzc2lvblBpY2tsZSB3aXRoIDQgZWxlbWVudHMAAABRwhEAJAAAAGFsZ29yaXRo +bW9ubHlfYWxsb3dfdHJ1c3RlZF9kZXZpY2Vzc2Vzc2lvbl9yb3RhdGlvbl9wZXJpb2RzZXNzaW9u +X3JvdGF0aW9uX3BlcmlvZF9tZXNzYWdlc3N0cnVjdCBSb29tU2V0dGluZ3Mgd2l0aCA0IGVsZW1l +bnRzAAAA2sIRACMAAABpZGVudGl0eV9rZXliYXNlX2tleW9uZV90aW1lX2tleXN0cnVjdCBTZXNz +aW9uS2V5cyB3aXRoIDMgZWxlbWVudHMAACjDEQAiAAAAdmVyc2lvbmNpcGhlcnRleHRub25jZXN0 +cnVjdCBFbmNyeXB0ZWRWYWx1ZSB3aXRoIDMgZWxlbWVudHMAasMRACUAAAByZXF1ZXN0X3JlY2lw +aWVudHJlcXVlc3RfaWRpbmZvc2VudF9vdXRzdHJ1Y3QgR29zc2lwUmVxdWVzdCB3aXRoIDQgZWxl +bWVudHMAv8MRACQAAABldmVudF90eXBldHhuX2lkbWVzc2FnZXNzdHJ1Y3QgVG9EZXZpY2VSZXF1 +ZXN0IHdpdGggMyBlbGVtZW50cwAABMQRACYAAABzZWNyZXRfbmFtZWdvc3NpcF9yZXF1ZXN0ZXZl +bnRzdHJ1Y3QgR29zc2lwcGVkU2VjcmV0IHdpdGggMyBlbGVtZW50c1LEEQAmAAAAc3RydWN0IFNl +c3Npb25Db25maWcgd2l0aCAxIGVsZW1lbnQAgMQRACMAAAB1c2VyX2lkZGV2aWNlX2lkcGlja2xl +c2hhcmVkZGVoeWRyYXRlZHVwbG9hZGVkX3NpZ25lZF9rZXlfY291bnRjcmVhdGlvbl9sb2NhbF90 +aW1lZmFsbGJhY2tfa2V5X2NyZWF0aW9uX3RpbWVzdGFtcHN0cnVjdCBQaWNrbGVkQWNjb3VudCB3 +aXRoIDggZWxlbWVudHMAAB3FEQAlAAAAc2VuZGVyX2tleWNyZWF0ZWRfdXNpbmdfZmFsbGJhY2tf +a2V5Y3JlYXRpb25fdGltZWxhc3RfdXNlX3RpbWVzdHJ1Y3QgUGlja2xlZFNlc3Npb24gd2l0aCA1 +IGVsZW1lbnRzAIrFEQAlAAAAcmF0Y2hldHN0cnVjdCBHcm91cFNlc3Npb25QaWNrbGUgd2l0aCAz +IGVsZW1lbnRzv8URACkAAABrZXlpbmRleHN0cnVjdCBSZW1vdGVDaGFpbktleSB3aXRoIDIgZWxl +bWVudHMAAAD4xREAJQAAAGtleV9pZHB1Ymxpc2hlZHN0cnVjdCBGYWxsYmFja0tleSB3aXRoIDMg +ZWxlbWVudHMAAAA3xhEAIgAAAGRlbGV0ZWR0cnVzdF9zdGF0ZXdpdGhoZWxkX2NvZGVfc2VudGZp +cnN0X3RpbWVfc2Vlbl90c3N0cnVjdCBSZWFkT25seURldmljZSB3aXRoIDUgZWxlbWVudHMAmsYR +ACUAAABmYWxsYmFja19rZXlwcmV2aW91c19mYWxsYmFja19rZXlzdHJ1Y3QgRmFsbGJhY2tLZXlz +IHdpdGggMyBlbGVtZW50c+nGEQAjAAAAc3RydWN0IFJlbW90ZU1lc3NhZ2VLZXkgd2l0aCAyIGVs +ZW1lbnRzABTHEQAnAAAAa2V5c3N0cnVjdCBQaWNrbGVkQ3Jvc3NTaWduaW5nSWRlbnRpdHkgd2l0 +aCAzIGVsZW1lbnRzAABIxxEAMgAAAGFsZ29yaXRobXNzaWduYXR1cmVzdW5zaWduZWRlZDI1NTE5 +c3RydWN0IE9sbVYxS2V5cyB3aXRoIDEgZWxlbWVudAAAp8cRAB8AAABtYXN0ZXJfa2V5c2VsZl9z +aWduaW5nX2tleXN0cnVjdCBSZWFkT25seVVzZXJJZGVudGl0eSB3aXRoIDMgZWxlbWVudHMAAADq +xxEAKwAAAHJhdGNoZXRfa2V5aGtkZl9yYXRjaGV0c2tpcHBlZF9tZXNzYWdlX2tleXNyYXRjaGV0 +X2NvdW50c3RydWN0IFJlY2VpdmVyQ2hhaW4gd2l0aCA0IGVsZW1lbnRzWMgRACQAAABkZXZpY2Vf +ZGlzcGxheV9uYW1ldXNlcl9zaWduaW5nX2tleXZlcmlmaWVkc3RydWN0IFJlYWRPbmx5T3duVXNl +cklkZW50aXR5IHdpdGggNSBlbGVtZW50cwAAAK/IEQAuAAAAbmV4dF9rZXlfaWRwdWJsaWNfa2V5 +c3ByaXZhdGVfa2V5c3N0cnVjdCBPbmVUaW1lS2V5c1BpY2tsZSB3aXRoIDMgZWxlbWVudHMAAArJ +EQAoAAAAc3RydWN0IE1lc3NhZ2VLZXlTdG9yZSB3aXRoIDEgZWxlbWVudAAAADzJEQAlAAAAc3Ry +dWN0IFBpY2tsZWRTaWduaW5ncyB3aXRoIDMgZWxlbWVudHMAAGzJEQAmAAAAcHVibGljX2tleXN0 +cnVjdCBQaWNrbGVkU2VsZlNpZ25pbmcgd2l0aCAyIGVsZW1lbnRzAKbJEQApAAAAc3RydWN0IFBp +Y2tsZWRVc2VyU2lnbmluZyB3aXRoIDIgZWxlbWVudHMAAADYyREAKQAAAG1lc3NhZ2VfaW5kZXhz +dHJ1Y3QgU2hhcmVkV2l0aCB3aXRoIDIgZWxlbWVudHMAABnKEQAhAAAAc3RydWN0IFBpY2tsZWRN +YXN0ZXJTaWduaW5nIHdpdGggMiBlbGVtZW50cwBEyhEAKwAAAHNlY3JldG5hbWV1c2FnZXJvdGF0 +aW9uX3BlcmlvZHJvdGF0aW9uX3BlcmlvZF9tc2dzaGlzdG9yeV92aXNpYmlsaXR5c3RydWN0IEVu +Y3J5cHRpb25TZXR0aW5ncyB3aXRoIDUgZWxlbWVudHMAAAC8yhEAKQAAAHJlYXNvbmNvZGVzZW5k +ZXJyZWNpcGllbnRyZWNpcGllbnRfa2V5c2NvbnRlbnRzdHJ1Y3QgRGVjcnlwdGVkT2xtVjFFdmVu +dCB3aXRoIDUgZWxlbWVudHMeyxEAKgAAAHJvb21faWRpbXBvcnRlZGJhY2tlZF91cHN0cnVjdCBQ +aWNrbGVkSW5ib3VuZEdyb3VwU2Vzc2lvbiB3aXRoIDggZWxlbWVudHMAAABoyxEAMQAAAHNldHRp +bmdzbWVzc2FnZV9jb3VudGludmFsaWRhdGVkc2hhcmVkX3dpdGhfc2V0cmVxdWVzdHNzdHJ1Y3Qg +UGlja2xlZE91dGJvdW5kR3JvdXBTZXNzaW9uIHdpdGggOSBlbGVtZW50cwAAANvLEQAyAAAAdHlw +ZW5ld3R5cGUgdmFyaWFudAAczBEADwAAAPwFAAAAAAAAAQAAAAMGAAD8BQAAAAAAAAEAAAAEBgAA +/AUAAAAAAAABAAAABQYAAPwFAAAAAAAAAQAAABQAAAD8BQAAAAAAAAEAAAAGBgAA/AUAAAAAAAAB +AAAAAwYAAPwFAAAAAAAAAQAAAAMGAAD8BQAAAAAAAAEAAAAHBgAA/AUAAAAAAAABAAAAAwYAAPwF +AAAAAAAAAQAAAAMGAAD8BQAAAAAAAAEAAAAIBgAA/AUAAAAAAAABAAAACQYAAPwFAAAAAAAAAQAA +ABQAAAD8BQAAAAAAAAEAAAAKBgAA/AUAAAAAAAABAAAACAYAAPwFAAAAAAAAAQAAADQBAAD8BQAA +AAAAAAEAAAALBgAA/AUAAAAAAAABAAAADAYAAPwFAAAAAAAAAQAAAA0GAAD8BQAAAAAAAAEAAAAO +BgAA/AUAAAAAAAABAAAADwYAAPwFAAAAAAAAAQAAABAGAAD8BQAAAAAAAAEAAAARBgAA/AUAAAAA +AAABAAAAEgYAAPwFAAAAAAAAAQAAABMGAAD8BQAAAAAAAAEAAAAUBgAA/AUAAAAAAAABAAAAFQYA +APwFAAAAAAAAAQAAABYGAAD8BQAAAAAAAAEAAAAXBgAA/AUAAAAAAAABAAAAGAYAAPwFAAAAAAAA +AQAAABkGAAD8BQAAAAAAAAEAAAAaBgAAdWxsAPwFAAAAAAAAAQAAABsGAAD8BQAAAAAAAAEAAAAc +BgAA/AUAAAAAAAABAAAAHQYAAPwFAAAAAAAAAQAAAB4GAAD8BQAAAAAAAAEAAAAfBgAA/AUAAAAA +AAABAAAAIAYAAPwFAAAAAAAAAQAAACEGAAD8BQAAAAAAAAEAAAAiBgAA/AUAAAAAAAABAAAAIwYA +APwFAAAAAAAAAQAAACQGAAD8BQAAAAAAAAEAAAAlBgAA/AUAAAAAAAABAAAAJgYAAPwFAAAAAAAA +AQAAACcGAAD8BQAAAAAAAAEAAAAoBgAA/AUAAAAAAAABAAAAKQYAAPwFAAAAAAAAAQAAACoGAAD8 +BQAAAAAAAAEAAAArBgAA/AUAAAAAAAABAAAALAYAAPwFAAAAAAAAAQAAAC0GAAD8BQAAAAAAAAEA +AABPAAAA/AUAAAAAAAABAAAALgYAAPwFAAAAAAAAAQAAAC8GAAD8BQAAAAAAAAEAAAAwBgAA/AUA +AAAAAAABAAAAMQYAAPwFAAAAAAAAAQAAADIGAAD8BQAAAAAAAAEAAAAzBgAA/AUAAAAAAAABAAAA +NAYAAPwFAAAAAAAAAQAAADUGAAD8BQAAAAAAAAEAAAA2BgAA/AUAAAAAAAABAAAANwYAAPwFAAAA +AAAAAQAAADgGAAD8BQAAAAAAAAEAAAA5BgAA/AUAAAAAAAABAAAAOgYAAPwFAAAAAAAAAQAAADsG +AAD8BQAAAAAAAAEAAAA8BgAA/AUAAAAAAAABAAAAPQYAAPwFAAAAAAAAAQAAAD4GAAD8BQAAAAAA +AAEAAAA/BgAA/AUAAAAAAAABAAAAQAYAAHN0cnVjdCBMZWFzZSB3aXRoIDIgZWxlbWVudHOo0BEA +HAAAAGhvbGRlcmV4cGlyYXRpb25fdHN9ey9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0 +cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgt +c2RrLWNyeXB0by9zcmMvb2xtL2dyb3VwX3Nlc3Npb25zL2luYm91bmQucnMAAOHQEQCFAAAA7wAA +AD4AQYCjxwALg3hgYXN5bmMgZm5gIHJlc3VtZWQgYWZ0ZXIgY29tcGxldGlvbi9ob21lL3J1bm5l +ci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9h +YjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2dyb3VwX3Nlc3Npb25zL291 +dGJvdW5kLnJzAAAAo9ERAIYAAACuAgAAPwAAAKPREQCGAAAAuQIAADoAAACj0REAhgAAALoCAAA1 +AAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vc2Vz +c2lvbi5ycwAAXNIRAHYAAADSAAAAMgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0 +cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgt +c2RrLWNyeXB0by9zcmMvb2xtL3NpZ25pbmcvbW9kLnJzAADk0hEAegAAAIECAAAiAAAA5NIRAHoA +AACCAgAAKAAAAOTSEQB6AAAAgwIAACgAAADk0hEAegAAAHcCAABhAAAA5NIRAHoAAABmAgAAPwAA +AC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3 +ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvY2Fj +aGVzLnJzALDTEQB3AAAAOwAAAA4AAACw0xEAdwAAADcAAAA3AAAAQgYAAAwAAAAEAAAAQwYAAEQG +AACkAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0 +ZWRseQBFBgAAAAAAAAEAAABGBgAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2Iz +NDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAKjUEQBLAAAAMwoAAA4AAABH +BgAABAAAAAQAAACoAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1 +ZQBIBgAACAAAAAQAAACuAAAASQYAAAgAAAAEAAAArgAAAEkGAAAIAAAABAAAAK4AAABKBgAACAAA +AAQAAABLBgAASQYAAAgAAAAEAAAASwYAAEVycm9yL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3Ry +eS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdG9raW8tMS4zNi4wL3NyYy9z +eW5jL211dGV4LnJzAAAAldURAGAAAACyAQAAMwAAAJXVEQBgAAAAswEAABsAAACV1REAYAAAAIsC +AAAdAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZZXVEQBgAAAAkQIA +AA0AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYx +N2QyMmJiYTE1MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMvcndsb2NrLnJzAAAAYNYRAGEAAACw +AQAAOAAAAGDWEQBhAAAAsQEAABsAAABg1hEAYQAAALUBAAARAAAAJHNlcmRlX2pzb246OnByaXZh +dGU6OlJhd1ZhbHVlSW5kZXhlZGRiQ3J5cHRvU3RvcmVuYW1lAABCBgAADAAAAAQAAABMBgAAL2hv +bWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJh +M2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstaW5kZXhlZGRiL3NyYy9jcnlwdG9fc3Rv +cmUvbW9kLnJzAAA81xEAfgAAAFoBAAAkAAAAPNcRAH4AAABiAQAAGgAAAGdvc3NpcF9yZXF1ZXN0 +cwA81xEAfgAAAJ8BAABjAAAAY29yZW5leHRfYmF0Y2hfdG9rZW5wcml2YXRlX2lkZW50aXR5YmFj +a3VwX2tleXNyZWNvdmVyeV9rZXlfdjFiYWNrdXBfa2V5X3Yxc2Vzc2lvbmluYm91bmRfZ3JvdXBf +c2Vzc2lvbnMzb3V0Ym91bmRfZ3JvdXBfc2Vzc2lvbnNkZXZpY2VzaWRlbnRpdGllc29sbV9oYXNo +ZXNkaXJlY3Rfd2l0aGhlbGRfaW5mb3Jvb21fc2V0dGluZ3NzZWNyZXRzX2luYm94AAAAPNcRAH4A +AAAMBQAAAQAAAEZpZWxkU2V0IGNvcnJ1cHRlZCAodGhpcyBpcyBhIGJ1ZykAADzXEQB+AAAAFAUA +AAkAAABGZXRjaGluZyBJbmRleGVkIERCIHJlY29yZHMgc3RhcnRpbmcgZnJvbSAAAAzZEQAqAAAA +TQYAABgAAAAEAAAAggAAAEtleSB3YXMgbm90IHZhbGlkIQAAPNcRAH4AAAAeBQAAQwAAADzXEQB+ +AAAAOwUAAAEAAABEb21FeGNlcHRpb24gICgpOiAAAITZEQANAAAAkdkRAAIAAACT2REAAwAAAGV2 +ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWluZGV4ZWRkYi9zcmMvY3J5 +cHRvX3N0b3JlL21vZC5yczoyNTZtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlbWVz +c2FnZQAAAFraEQAHAAAATQYAAAwAAAAEAAAAtgEAAE4GAABPBgAAAQAAAAABAAABAAAAsNkRAIgA +AAA42hEAIgAAAGTaEQABAAAAfLsWAGzaEQA42hEAIgAAADzXEQB+AAAAAQAAAGV2ZW50IC9ob21l +L3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNk +MjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWluZGV4ZWRkYi9zcmMvY3J5cHRvX3N0b3Jl +L21vZC5yczoyNzkBAAAAFwEAAAEAAADE2hEAiAAAADjaEQAiAAAAZNoRAAEAAACIuxYAbNoRADja +EQAiAAAAPNcRAH4AAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstaW5kZXhlZGRiL3NyYy9jcnlwdG9fc3RvcmUvbW9kLnJzOjMwNgEAAAAyAQAAAQAAAIzbEQCI +AAAAONoRACIAAABk2hEAAQAAAJS7FgBs2hEAONoRACIAAAA81xEAfgAAAAEAAABldmVudCAvaG9t +ZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEz +ZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1pbmRleGVkZGIvc3JjL2NyeXB0b19zdG9y +ZS9tb2QucnM6MzExAQAAADcBAAABAAAAVNwRAIgAAAA42hEAIgAAAGTaEQABAAAAoLsWAGzaEQA4 +2hEAIgAAADzXEQB+AAAAAQAAAFAGAACYAQAACAAAAFEGAAA81xEAfgAAAGsCAABRAAAAPNcRAH4A +AACCAgAAKgAAAGFjY291bnQAUgYAAKADAAAIAAAAUwYAADzXEQB+AAAAkgIAAEIAAABUBgAAuAAA +AAQAAABVBgAAdHJhY2tlZF91c2VycwAAADzXEQB+AAAAsQIAAEQAAABWBgAAAAEAAAgAAABXBgAA +PNcRAH4AAADIAgAALwAAAFgGAADcAAAABAAAAFkGAAA81xEAfgAAAOQCAAAoAAAAWgYAANgAAAAE +AAAAWwYAADzXEQB+AAAA8AIAAD0AAAA81xEAfgAAAPwCAAAqAAAAWgYAANgAAAAEAAAAXAYAADzX +EQB+AAAABAMAAEAAAABdBgAA7AAAAAQAAABeBgAAPNcRAH4AAAATAwAAUgAAAF8GAAAAAQAACAAA +AGAGAAA81xEAfgAAACcDAABgAAAAYQYAAOgAAAAEAAAAYgYAADzXEQB+AAAARwMAAC4AAABjBgAA +YAEAAAQAAABkBgAAPNcRAH4AAABZAwAAVAAAAGUGAADIAAAABAAAAGYGAAA81xEAfgAAAGwDAABL +AAAAYmFja3VwAABnBgAAzAAAAAQAAABoBgAAPNcRAH4AAAB9AwAAKwAAADzXEQB+AAAAnwMAABUA +AABGYWlsZWQgdG8gZGVzZXJpYWxpemUgaW5ib3VuZCBncm91cCBzZXNzaW9uOiAAAAAM3xEALQAA +AGkGAACoAAAABAAAAGoGAAA81xEAfgAAAKgDAAB2AAAAPNcRAH4AAAC5AwAAEQAAAENvdWxkIG5v +dCBmaW5kIGluYm91bmQgZ3JvdXAgc2Vzc2lvbiB0byBtYXJrIGl0IGFzIGJhY2tlZCB1cC4ga2V5 +PQAAdN8RAEIAAABrBgAAGAEAAAQAAABsBgAAPNcRAH4AAADAAwAANgAAAG0GAACEAAAABAAAAG4G +AAA81xEAfgAAAN0DAABRAAAAYQYAAOgAAAAEAAAAbwYAADzXEQB+AAAA7wMAACkAAABwBgAA4AAA +AAQAAABxBgAAPNcRAH4AAAD+AwAAOQAAAHIGAADgAAAABAAAAHMGAAA81xEAfgAAAA4EAABjAAAA +WgYAANgAAAAEAAAAdAYAADzXEQB+AAAAGQQAAE0AAAB1BgAA3AAAAAQAAAB2BgAAPNcRAH4AAAAm +BAAAKwAAAHcGAAAMAAAABAAAAHgGAAA81xEAfgAAADkEAAAVAAAAeQYAAOgAAAAEAAAAegYAAGJ5 +X2luZm8APNcRAH4AAABIBAAAKAAAAHsGAADkAAAABAAAAHwGAAB1bnNlbnQAADzXEQB+AAAAXgQA +AE4AAAB9BgAAeAAAAAQAAAB+BgAAPNcRAH4AAABwBAAAXwAAAH8GAACkAAAABAAAAIAGAAA81xEA +fgAAAHcEAAA8AAAAYQYAAOgAAAAEAAAAgQYAADzXEQB+AAAAlAQAAC8AAABwBgAA4AAAAAQAAACC +BgAAPNcRAH4AAACnBAAAWQAAAHIGAADgAAAABAAAAIMGAAA81xEAfgAAALMEAABMAAAAhAYAABwA +AAAEAAAAhQYAADzXEQB+AAAAvgQAAE8AAAB3BgAAEAAAAAQAAACGBgAAPNcRAH4AAADHBAAAQgAA +AIcGAADAAAAACAAAAIgGAAA81xEAfgAAANUEAAAXAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstaW5kZXhlZGRiL3NyYy9jcnlwdG9fc3RvcmUvbW9kLnJzOjkyNwEA +AACfAwAAAwAAABDiEQCIAAAAONoRACIAAABk2hEAAQAAAKy7FgBs2hEAONoRACIAAAA81xEAfgAA +AAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qt +c2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1pbmRleGVkZGIv +c3JjL2NyeXB0b19zdG9yZS9tb2QucnM6OTUzAQAAALkDAAADAAAA2OIRAIgAAAA42hEAIgAAAGTa +EQABAAAAuLsWAGzaEQA42hEAIgAAADzXEQB+AAAAAQAAAExlYXNlaG9sZGVyZXhwaXJhdGlvbl90 +c6XjEQAGAAAAq+MRAA0AAABzdHJ1Y3QgTGVhc2VldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1pbmRleGVkZGIvc3JjL2NyeXB0b19zdG9yZS9tb2QucnM6MTMwMAAAAAEA +AAAUBQAAAQAAANTjEQCJAAAAONoRACIAAABk2hEAAQAAAMS7FgBs2hEAONoRACIAAAA81xEAfgAA +AAEAAABHb3NzaXBSZXF1ZXN0SW5kZXhlZERiT2JqZWN0aW5mb3JlcXVlc3QAvOQRAAQAAADA5BEA +BwAAAPjgEQAGAAAAc3RydWN0IEdvc3NpcFJlcXVlc3RJbmRleGVkRGJPYmplY3RJbmJvdW5kR3Jv +dXBTZXNzaW9uSW5kZXhlZERiT2JqZWN0cGlja2xlZF9zZXNzaW9ubmVlZHNfYmFja3VwYmFja2Vk +X3VwX3RvJeURAA8AAAA05READAAAAEDlEQAMAAAAc3RydWN0IEluYm91bmRHcm91cFNlc3Npb25J +bmRleGVkRGJPYmplY3R9W3ssOl1gdW53cmFwX3Rocm93YCBmYWlsZWRQaWNrbGVkSW5ib3VuZEdy +b3VwU2Vzc2lvbnBpY2tsZXNlbmRlcl9rZXlzaWduaW5nX2tleXJvb21faWRpbXBvcnRlZGJhY2tl +ZF91cGhpc3RvcnlfdmlzaWJpbGl0eWFsZ29yaXRobcLlEQAGAAAAyOURAAoAAADS5REACwAAAN3l +EQAHAAAA5OURAAgAAADs5REACQAAAPXlEQASAAAAB+YRAAkAAABTaGFyZWRXaXRoaGVsZAAAUOYR +AAYAAABW5hEACAAAAFNoYXJlZFdpdGhtZXNzYWdlX2luZGV4AMjlEQAKAAAAeuYRAA0AAABFbmNy +eXB0aW9uU2V0dGluZ3Nyb3RhdGlvbl9wZXJpb2Ryb3RhdGlvbl9wZXJpb2RfbXNnc29ubHlfYWxs +b3dfdHJ1c3RlZF9kZXZpY2VzAAfmEQAJAAAAquYRAA8AAAC55hEAFAAAAPXlEQASAAAAzeYRABoA +AABQaWNrbGVkT3V0Ym91bmRHcm91cFNlc3Npb25zZXR0aW5nc2NyZWF0aW9uX3RpbWVtZXNzYWdl +X2NvdW50c2hhcmVkaW52YWxpZGF0ZWRzaGFyZWRfd2l0aF9zZXRyZXF1ZXN0cwAAAMLlEQAGAAAA +K+cRAAgAAADd5REABwAAADPnEQANAAAAQOcRAA0AAABN5xEABgAAAFPnEQALAAAAXucRAA8AAABt +5xEACAAAAFBpY2tsZWRTZXNzaW9uY3JlYXRlZF91c2luZ19mYWxsYmFja19rZXlsYXN0X3VzZV90 +aW1lAAAAwuURAAYAAADI5REACgAAAM7nEQAaAAAAM+cRAA0AAADo5xEADQAAAFJvb21TZXR0aW5n +c3Nlc3Npb25fcm90YXRpb25fcGVyaW9kc2Vzc2lvbl9yb3RhdGlvbl9wZXJpb2RfbWVzc2FnZXMA +B+YRAAkAAADN5hEAGgAAACzoEQAXAAAAQ+gRACAAAABUb0RldmljZVJlcXVlc3RldmVudF90eXBl +dHhuX2lkbWVzc2FnZXMAk+gRAAoAAACd6BEABgAAAKPoEQAIAAAAL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL3ZvZG96ZW1hYy1kYTljMTYxNWI2YWMxNGU1LzBjNzU3NDYvc3JjL3R5 +cGVzL2VkMjU1MTkucnN1bmtub3duIGZpZWxkIGBgLCBleHBlY3RlZCAd6READwAAACzpEQAMAAAA +YCwgdGhlcmUgYXJlIG5vIGZpZWxkcwAAHekRAA8AAABI6REAFgAAAER1cmF0aW9uc2Vjc25hbm9z +AAAAeOkRAAQAAAB86REABQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNv +ZGUvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2Qy +MmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMTUvc3JjL3Nlci5ycwC86REAXwAAAPoBAAAqAAAA +vOkRAF8AAAAIAgAAKgAAACRzZXJkZV9qc29uOjpwcml2YXRlOjpSYXdWYWx1ZQAAxOgRAFkAAAB3 +AAAAEwAAAEludmFsaWQgc2VjcmV0IGtleSBsZW5ndGg6IGV4cGVjdGVkIDY0IGJ5dGVzLCBnb3Qg +AABs6hEAMgAAAHVsbEdyb3VwU2Vzc2lvblBpY2tsZXJhdGNoZXRjb25maWcAAL3qEQAHAAAA0uUR +AAsAAADE6hEABgAAAEluYm91bmRHcm91cFNlc3Npb25QaWNrbGV9bnVsbFt7LDpdaW50ZXJuYWwg +ZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0 +cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjEx +NS9zcmMvc2VyLnJzAAAv6xEAXwAAAH0CAAAqAAAAL+sRAF8AAACUAgAAKgAAAC/rEQBfAAAAogIA +ACoAAAAv6xEAXwAAAPoBAAAqAAAAL+sRAF8AAAAIAgAAKgAAAGV4cGVjdGVkIFJhd1ZhbHVlZXhw +ZWN0ZWQgMzIgYnl0ZXMAAPHrEQARAAAAigYAAAgAAAAEAAAABAAAAGFuIGludGVnZXIgYmV0d2Vl +biAwIGFuZCAyXjUzIC0gMQAAABzsEQAhAAAAdmFsdWUgaXMgbWlzc2luZ2V2ZW50IC9ob21lL3J1 +bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdi +Yi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWluZGV4ZWRkYi9zcmMvY3J5cHRvX3N0b3JlL21p +Z3JhdGlvbnMvdjVfdG9fdjcucnM6NjdtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3Jl +OjptaWdyYXRpb25zOjp2NV90b192N21lc3NhZ2Vyb3dfY291bnQAJ+0RAAcAAAAu7REACQAAAIoG +AAAMAAAABAAAALYBAACLBgAAjAYAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9t +YXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2Rr +LWluZGV4ZWRkYi9zcmMvY3J5cHRvX3N0b3JlL21pZ3JhdGlvbnMvdjVfdG9fdjcucnMAAAEAAABD +AAAAAgAAAFjsEQCXAAAA7+wRADgAAAA47REAAgAAANC7FgBI7REA7+wRADgAAABg7REAjgAAAAEA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1pbmRleGVkZGIvc3Jj +L2NyeXB0b19zdG9yZS9taWdyYXRpb25zL3Y1X3RvX3Y3LnJzOjc5ACftEQAHAAAAAQAAAE8AAAAB +AAAAMO4RAJcAAADv7BEAOAAAAMjuEQABAAAA3LsWAEjtEQDv7BEAOAAAAGDtEQCOAAAAAQAAAGV2 +ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWluZGV4ZWRkYi9zcmMvY3J5 +cHRvX3N0b3JlL21pZ3JhdGlvbnMvdjdfdG9fdjgucnM6NDdtYXRyaXhfc2RrX2luZGV4ZWRkYjo6 +Y3J5cHRvX3N0b3JlOjptaWdyYXRpb25zOjp2N190b192OC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0 +L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRl +cy9tYXRyaXgtc2RrLWluZGV4ZWRkYi9zcmMvY3J5cHRvX3N0b3JlL21pZ3JhdGlvbnMvdjdfdG9f +djgucnMAAAABAAAALwAAAAIAAAAQ7xEAlwAAAKfvEQA4AAAAOO0RAAIAAADouxYASO0RAKfvEQA4 +AAAA3+8RAI4AAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21h +dHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGst +aW5kZXhlZGRiL3NyYy9jcnlwdG9fc3RvcmUvbWlncmF0aW9ucy92N190b192OC5yczo3MQABAAAA +RwAAAAEAAACw8BEAlwAAAKfvEQA4AAAAyO4RAAEAAAD0uxYASO0RAKfvEQA4AAAA3+8RAI4AAAAB +AAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstaW5kZXhlZGRiL3Ny +Yy9jcnlwdG9fc3RvcmUvbWlncmF0aW9ucy92N190b192OC5yczoxMDQBAAAAaAAAAAEAAACI8REA +mAAAAKfvEQA4AAAAyO4RAAEAAAAAvBYASO0RAKfvEQA4AAAA3+8RAI4AAAABAAAAZXZlbnQgL2hv +bWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJh +M2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstaW5kZXhlZGRiL3NyYy9jcnlwdG9fc3Rv +cmUvbWlncmF0aW9ucy92OF90b192MTAucnM6NzRtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRv +X3N0b3JlOjptaWdyYXRpb25zOjp2OF90b192MTAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1pbmRleGVkZGIvc3JjL2NyeXB0b19zdG9yZS9taWdyYXRpb25zL3Y4X3RvX3YxMC5y +cwEAAABKAAAAAgAAAGDyEQCYAAAA+PIRADkAAAA47REAAgAAAAy8FgBI7REA+PIRADkAAAAx8xEA +jwAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1 +c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1pbmRleGVk +ZGIvc3JjL2NyeXB0b19zdG9yZS9taWdyYXRpb25zL3Y4X3RvX3YxMC5yczo4MwEAAABTAAAAAQAA +AAD0EQCYAAAA+PIRADkAAADI7hEAAQAAABi8FgBI7REA+PIRADkAAAAx8xEAjwAAAAEAAABldmVu +dCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDky +N2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1pbmRleGVkZGIvc3JjL2NyeXB0 +b19zdG9yZS9taWdyYXRpb25zL3Y4X3RvX3YxMC5yczoxMTcAAAABAAAAdQAAAAEAAADY9BEAmQAA +APjyEQA5AAAAyO4RAAEAAAAkvBYASO0RAPjyEQA5AAAAMfMRAI8AAAABAAAAfWZhbHNldHJ1ZW51 +bGx7TW9udGdvbWVyeVBvaW50dmVyc2lvbmNpcGhlcnRleHRub25jZUVuY3J5cHRlZFZhbHVlQmFz +ZTY00vURAAcAAADZ9REACgAAAOP1EQAFAAAARW5jcnlwdGVkVmFsdWUkc2VyZGVfanNvbjo6cHJp +dmF0ZTo6UmF3VmFsdWVhdHRlbXB0ZWQgdG8gc2VyaWFsaXplIGB1bmRlZmluZWRgUmF0Y2hldGlu +bmVyY291bnRlcgAAAGn2EQAFAAAAbvYRAAcAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2 +NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9t +YXAvZW50cnkucnOI9hEAYAAAAHABAAA2AAAAYXNzZXJ0aW9uIGZhaWxlZDogaWR4IDwgQ0FQQUNJ +VFkvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5 +L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzABj3EQBbAAAAlwIAAAkAAABhc3Nl +cnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhlaWdodCAtIDEY9xEAWwAAAK8CAAAJ +AAAAGPcRAFsAAACzAgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNyYy5sZW4oKSA9PSBkc3QubGVu +KCkY9xEAWwAAAC8HAAAFAAAAGPcRAFsAAACvBAAAIwAAABj3EQBbAAAAswQAACMAAAAY9xEAWwAA +AO8EAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5ub2RlLmhlaWdo +dCAtIDEAAAAY9xEAWwAAAPADAAAJAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0 +M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdh +dGUucnMAhPgRAF8AAABZAgAAMAAAAEluZGV4IG91dCBvZiBib3VuZHMA9PgRABMAAAAvcnVzdGMv +YWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3Jj +L3NsaWNlL21vZC5ycwAAABD5EQBNAAAA4QMAACEAAAAQ+REATQAAAOEDAAAuAAAAEPkRAE0AAADl +AwAAIAAAABD5EQBNAAAA5QMAACsAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQz +YjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQucnMAAKD5EQBOAAAAOwQA +AA4AAACg+REATgAAAEgEAAAcAAAAoPkRAE4AAABJBAAAHQAAAKD5EQBOAAAASgQAACUAAACg+REA +TgAAAFAEAAARAAAAoPkRAE4AAACOBAAAQAAAAKD5EQBOAAAAtAQAAE4AAACg+REATgAAAMIEAABW +AAAAoPkRAE4AAADWBAAAEQAAAGFzc2VydGlvbiBmYWlsZWQ6IGVuZCA+PSBzdGFydCAmJiBlbmQg +PD0gbGVuoPkRAE4AAAAtBQAABQAAAKD5EQBOAAAAPgUAACkAAABhc3NlcnRpb24gZmFpbGVkOiBv +ZmZzZXQgIT0gMCAmJiBvZmZzZXQgPD0gbGVuAACg+REATgAAAJsAAAAFAAAAoPkRAE4AAACjAAAA +HwAAAE1pc21hdGNoZWQgZXZlbnQgdHlwZSwgZ290ICwgZXhwZWN0ZWQgAAAc+xEAGwAAADf7EQAL +AAAAbS5ibGFja2xpc3RlZG0udW52ZXJpZmllZG0udW5hdXRob3Jpc2VkbS51bmF2YWlsYWJsZW0u +bm9fb2xtbS5yb29tX2tleS53aXRoaGVsZGFsZ29yaXRobXJlYXNvbmNvZGVzZW5kZXJjb250ZW50 +dHlwZXN0cnVjdCBIZWxwZXIvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5 +Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwDU ++xEAXwAAAMcAAAAnAAAA1PsRAF8AAAAXAgAALwAAANT7EQBfAAAAogAAACQAAAAvcnVzdGMvYWVk +ZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9j +b2xsZWN0aW9ucy9idHJlZS9tYXAucnNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJs +ZSBjb2RlAABk/BEAWgAAAOYAAAAsAAAAZPwRAFoAAAD6AAAAPwAAAGT8EQBaAAAAHwEAAC4AAABj +b3Jlc2Vzc2lvbmluYm91bmRfZ3JvdXBfc2Vzc2lvbnNvdXRib3VuZF9ncm91cF9zZXNzaW9uc3Ry +YWNrZWRfdXNlcnNvbG1faGFzaGVzZGV2aWNlc2lkZW50aXRpZXNiYWNrdXBfa2V5c3Jvb21fc2V0 +dGluZ3NkaXJlY3Rfd2l0aGhlbGRfaW5mb3NlY3JldHNfaW5ib3hnb3NzaXBfcmVxdWVzdHN1bnNl +bnRpbmZvYnlfaW5mb291dGdvaW5nX3NlY3JldF9yZXF1ZXN0c3Vuc2VudF9zZWNyZXRfcmVxdWVz +dHNzZWNyZXRfcmVxdWVzdHNfYnlfaW5mbwAA0f0RABgAAAAkc2VyZGVfanNvbjo6cHJpdmF0ZTo6 +UmF3VmFsdWUAAI4GAAAIAAAABAAAAI8GAACOBgAACAAAAAQAAACQBgAAjwYAAED+EQCRBgAAkgYA +AJMGAACRBgAAlAYAAJUGAAAUAAAABAAAAJQBAACVBgAAFAAAAAQAAACWBgAAlAEAAHz+EQCWAQAA +lwEAAJMGAACYAQAAlAYAAJcGAAAEAAAABAAAANAAAACXBgAABAAAAAQAAACqAAAA0AAAALj+EQCO +AQAAjwEAAJMGAACRAQAAlAYAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3Bs +YXlJbnZhbGlkQnl0ZQCOBgAABAAAAAQAAACYBgAAjgYAAAQAAAAEAAAAqwEAAEludmFsaWRMZW5n +dGhJbnZhbGlkTGFzdFN5bWJvbEludmFsaWRQYWRkaW5nU2VyaWFsaXphdGlvbgAAAI4GAAAEAAAA +BAAAAKUBAABEZXNlcmlhbGl6YXRpb24AjgYAAAQAAAAEAAAApgEAAEpzb26OBgAABAAAAAQAAADG +AAAARW5jcnlwdGlvbgAAjgYAAAQAAAAEAAAApwEAAFJhbmRvbQAAjgYAAAQAAAAEAAAAqAEAAFZl +cnNpb24AmQYAAAEAAAABAAAAmgYAAExlbmd0aAAAjgYAAAQAAAAEAAAAyAAAAEtkZk1pc21hdGNo +UG9pc29uRXJyb3JJZGJLZXlSYW5nZU1ha2VFcnJvcgAAAkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX +WFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky////////////////////// +////////////////////////////////////Pv///z80NTY3ODk6Ozw9/////////wABAgMEBQYH +CAkKCwwNDg8QERITFBUWFxgZ////////GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP///////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +////////////////ZGF0YSBkaWQgbm90IG1hdGNoIGFueSB2YXJpYW50IG9mIHVudGFnZ2VkIGVu +dW0gTWF5YmVFbmNyeXB0ZWQAmwYAACQAAAAEAAAAZgUAAJsGAAAkAAAABAAAAJwGAABmBQAA2AES +AGgFAABpBQAAnQYAAGsFAACeBgAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlz +cGxheUludmFsaWRNYXJrZXJSZWFkAAAAnwYAAAQAAAAEAAAAwwAAAEludmFsaWREYXRhUmVhZFR5 +cGVNaXNtYXRjaACfBgAABAAAAAQAAACgBgAAT3V0T2ZSYW5nZUxlbmd0aE1pc21hdGNonwYAAAQA +AAAEAAAAWwUAAFVuY2F0ZWdvcml6ZWQAAACfBgAABAAAAAQAAADKAAAAU3ludGF4VXRmOEVycm9y +AJ8GAAAEAAAABAAAAFkFAABEZXB0aExpbWl0RXhjZWVkZWRJbnZhbGlkVmFsdWVXcml0ZQCfBgAA +BAAAAAQAAAChBgAAVW5rbm93bkxlbmd0aEludmFsaWREYXRhTW9kZWwAAACfBgAABAAAAAQAAACq +BAAAU2Vzc2lvbktleXNpZGVudGl0eV9rZXliYXNlX2tleW9uZV90aW1lX2tleQBjAxIADAAAAG8D +EgAIAAAAdwMSAAwAAABzdHJ1Y3QgSW5ib3VuZEdyb3VwU2Vzc2lvbkluZGV4ZWREYk9iamVjdDJT +ZXJpYWxpemF0aW9uAJ8GAAAEAAAABAAAAMYAAABEb21FeGNlcHRpb25jb2RlogYAAAIAAAACAAAA +owYAAG5hbWWkBgAADAAAAAQAAAClBgAAbWVzc2FnZUNyeXB0b1N0b3JlRXJyb3IAnwYAAAQAAAAE +AAAAvwAAAGZhbHNldHJ1ZQAAAKgGAAAMAAAABAAAAKkGAACqBgAApAAAAGEgRGlzcGxheSBpbXBs +ZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAqwYAAAAAAAABAAAArAYA +AC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkv +YWxsb2Mvc3JjL3N0cmluZy5ycwCsBBIASwAAADMKAAAOAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZl +NTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5y +cwAIBRIATwAAALcFAAAUAAAACAUSAE8AAAC3BQAAIQAAAAgFEgBPAAAAqwUAACEAAABFcnJvcmlu +dmFsaWQgdmFsdWU6ICwgZXhwZWN0ZWQgAI0FEgAPAAAAnAUSAAsAAABtaXNzaW5nIGZpZWxkIGBg +uAUSAA8AAADHBRIAAQAAAGludmFsaWQgbGVuZ3RoIADYBRIADwAAAJwFEgALAAAAZHVwbGljYXRl +IGZpZWxkIGAAAAD4BRIAEQAAAMcFEgABAAAAqwYAAAAAAAABAAAArQYAAC9ob21lL3J1bm5lci8u +Y2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRl +X2pzb24tMS4wLjExNS9zcmMvcmVhZC5ycywGEgBgAAAAtgIAAB0AAAAsBhIAYAAAAFYCAAAeAAAA +CAUSAE8AAAA7BAAAJAAAAEZhbGxiYWNrS2V5a2V5X2lka2V5cHVibGlzaGVkAAAAxwYSAAYAAADN +BhIAAwAAANAGEgAJAAAARmFsbGJhY2tLZXlzZmFsbGJhY2tfa2V5cHJldmlvdXNfZmFsbGJhY2tf +a2V5AAAAxwYSAAYAAAAABxIADAAAAAwHEgAVAAAAUmVtb3RlQ2hhaW5LZXlpbmRleADNBhIAAwAA +AEoHEgAFAAAARmllbGRTZXQgY29ycnVwdGVkICh0aGlzIGlzIGEgYnVnKS9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWluZGV4ZWRkYi9zcmMvY3J5cHRvX3N0b3JlL21pZ3JhdGlv +bnMvbW9kLnJzAIIHEgCJAAAAOwAAAAkAAABJbmRleGVkZGJDcnlwdG9TdG9yZSBtaWdyYXRlIGRh +dGEgYmVmb3JlIHYgZmluaXNoZWQAHAgSACoAAABGCBIACQAAAK4GAAAYAAAABAAAAIIAAAAAAAJB +QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1 +Njc4OSsv/////////////////////////////////////////////////////////z7///8/NDU2 +Nzg5Ojs8Pf////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGf///////xobHB0eHyAhIiMk +JSYnKCkqKywtLi8wMTIz//////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////x0eQ3JlYXRpbmcga2V5IHJhbmdlIGZh +aWxlZB4dZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstaW5kZXhlZGRi +L3NyYy9jcnlwdG9fc3RvcmUvbWlncmF0aW9ucy9tb2QucnM6NDNtYXRyaXhfc2RrX2luZGV4ZWRk +Yjo6Y3J5cHRvX3N0b3JlOjptaWdyYXRpb25zbWVzc2FnZQCQChIABwAAAK4GAAAMAAAABAAAALYB +AACvBgAAsAYAAAEAAAArAAAAAgAAANAJEgCSAAAAYgoSAC4AAACYChIAAQAAADC8FgCgChIAYgoS +AC4AAACCBxIAiQAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +bWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNk +ay1pbmRleGVkZGIvc3JjL2NyeXB0b19zdG9yZS9taWdyYXRpb25zL21vZC5yczo1OQAAAQAAADsA +AAACAAAA+AoSAJIAAABiChIALgAAAJgKEgABAAAAPLwWAKAKEgBiChIALgAAAIIHEgCJAAAAAQAA +AGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWluZGV4ZWRkYi9zcmMv +Y3J5cHRvX3N0b3JlL21pZ3JhdGlvbnMvbW9kLnJzOjEyNgABAAAAfgAAAAIAAADMCxIAkwAAAGIK +EgAuAAAAmAoSAAEAAABIvBYAoAoSAGIKEgAuAAAAggcSAIkAAAABAAAAZXZlbnQgL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstaW5kZXhlZGRiL3NyYy9jcnlwdG9fc3RvcmUvbWln +cmF0aW9ucy9tb2QucnM6MTQxAAEAAACNAAAAAgAAAKAMEgCTAAAAYgoSAC4AAACYChIAAQAAAFS8 +FgCgChIAYgoSAC4AAACCBxIAiQAAAAEAAAAAAAAA//////////94DRIAQZCbyAALiyGxBgAAAAAA +AAEAAAD/BQAAsQYAAAAAAAABAAAAsgYAAHNlY3NuYW5vcwAAALEGAAAAAAAAAQAAADUGAABhIHR1 +cGxlIG9mIHNpemUgMmEgc2VxdWVuY2UvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9p +bmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleGVkX2RiX2Z1dHVyZXMtMC40LjEv +c3JjL2lkYl9jdXJzb3IucnMA5w0SAGwAAABUAAAANQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2luZGV4ZWRfZGJfZnV0 +dXJlcy0wLjQuMS9zcmMvaWRiX2N1cnNvci9pZGJfY3Vyc29yX3dpdGhfdmFsdWUucnMAAGQOEgCC +AAAALwAAADMAAACxBgAAAAAAAAEAAACzBgAAsQYAAAAAAAABAAAAtAYAALEGAAAAAAAAAQAAAJ0B +AACxBgAAAAAAAAEAAAC1BgAAsQYAAAAAAAABAAAADQYAAGEgbWFwAAAAsA0SAAQAAAC0DRIABQAA +AG92ZXJmbG93IGluIER1cmF0aW9uOjpuZXcAAABgDxIAGQAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2 +ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvdGltZS5yc4QPEgBI +AAAAygAAABUAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlALYG +AAAEAAAABAAAAKgAAABvdmVyZmxvdyBkZXNlcmlhbGl6aW5nIER1cmF0aW9uALcGAABDb3VsZG4n +dCBkZXNlcmlhbGl6ZSBpNjQgb3IgdTY0IGZyb20gYSBCaWdJbnQgb3V0c2lkZSBpNjQ6Ok1JTi4u +dTY0OjpNQVggYm91bmRzAAACQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xt +bm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL/////////////////////////////////////////// +//////////////8+////PzQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYX +GBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////8dHkNy +ZWF0aW5nIGtleSByYW5nZSBmYWlsZWRpbmZvcmVxdWVzdHVuc2VudHBpY2tsZWRfc2Vzc2lvbm5l +ZWRzX2JhY2t1cGJhY2tlZF91cF90bwAAALgGAAAAAAAAAQAAAJ0BAAC4BgAAAAAAAAEAAAC5BgAA +uAYAAAAAAAABAAAAugYAAGB1bndyYXBfdGhyb3dgIGZhaWxlZAAAALgGAAAAAAAAAQAAAP8FAAC4 +BgAAAAAAAAEAAAAOBgAAuAYAAAAAAAABAAAACwYAAHZlcnNpb25jaXBoZXJ0ZXh0bm9uY2VzdHJ1 +Y3QgRW5jcnlwdGVkVmFsdWVCYXNlNjQgd2l0aCAzIGVsZW1lbnRzAAAAshISACsAAAC7BgAACAAA +AAQAAAAEAAAAuwYAAAQAAAAEAAAAVgUAALsGAAAEAAAABAAAALwGAABNYXBBY2Nlc3M6Om5leHRf +dmFsdWUgY2FsbGVkIGJlZm9yZSBuZXh0X2tleS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkv +c3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlLTEuMC4xOTcvc3JjL2Rl +L3ZhbHVlLnJzAEQTEgBfAAAAzgQAABsAAAB1bGxydWVhbHNldHlwZWludGVybmFsbHkgdGFnZ2Vk +IGVudW0gRG91YmxlUmF0Y2hldFN0YXRlfXs6UmVhZE9ubHlVc2VySWRlbnRpdHl1c2VyX2lkbWFz +dGVyX2tleXNlbGZfc2lnbmluZ19rZXkAAhQSAAcAAAAJFBIACgAAABMUEgAQAAAAT3duT3RoZXI8 +FBIAAwAAAD8UEgAFAAAAUmVhZE9ubHlPd25Vc2VySWRlbnRpdHl1c2VyX3NpZ25pbmdfa2V5dmVy +aWZpZWQAAhQSAAcAAAAJFBIACgAAABMUEgAQAAAAaxQSABAAAAB7FBIACAAAAFBpY2tsZWRTaWdu +aW5nUGlja2xlZFNpZ25pbmdzAAAACRQSAAoAAABrFBIAEAAAABMUEgAQAAAAUGlja2xlZFNlbGZT +aWduaW5ncGlja2xlcHVibGljX2tleVBpY2tsZWRVc2VyU2lnbmluZ/YUEgAGAAAA/BQSAAoAAABQ +aWNrbGVkTWFzdGVyU2lnbmluZ2RldmljZV9pZGFsZ29yaXRobXNrZXlzZGVoeWRyYXRlZHNpZ25h +dHVyZXN1bnNpZ25lZGRldmljZV9kaXNwbGF5X25hbWVyZXF1ZXN0X2lkc2VjcmV0bmFtZWFsZ29y +aXRobUVycm9yvQYAAAAAAAABAAAAvgYAAGxvY2sgcG9pc29uIGVycm9yIHdoaWxlIHNlcmlhbGl6 +aW5nJHNlcmRlX2pzb246OnByaXZhdGU6OlJhd1ZhbHVlaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQg +dW5yZWFjaGFibGUgY29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNy +YXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvc2VyLnJzHRYS +AF8AAACiAgAAKgAAAP////8vcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5 +Nzc2MjFhNy9saWJyYXJ5L3N0ZC9zcmMvc3lzL3BhbC93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tz +L3J3bG9jay5ycwCQFhIAawAAAD8AAAAJAAAAQWNjb3VudFBpY2tsZXNpZ25pbmdfa2V5ZGlmZmll +X2hlbGxtYW5fa2V5b25lX3RpbWVfa2V5c2ZhbGxiYWNrX2tleXMZFxIACwAAACQXEgASAAAANhcS +AA0AAABDFxIADQAAAFJlbW90ZU1lc3NhZ2VLZXlrZXlpbmRleIAXEgADAAAAgxcSAAUAAABDaGFp +blN0b3JlaW5uZXIAohcSAAUAAABTZXNzaW9uUGlja2xlc2Vzc2lvbl9rZXlzc2VuZGluZ19yYXRj +aGV0cmVjZWl2aW5nX2NoYWluc2NvbmZpZwAAvRcSAAwAAADJFxIADwAAANgXEgAQAAAA6BcSAAYA +AABLZXlJZFNlc3Npb25Db25maWd2ZXJzaW9uAAAAIhgSAAcAAABpbnZpdGVkam9pbmVkc2hhcmVk +d29ybGRfcmVhZGFibGV9ezpQdWJsaWNLZXlTdGF0aWNTZWNyZXRMb2NhbFRydXN0VmVyaWZpZWRC +bGFja0xpc3RlZElnbm9yZWRVbnNldAAAdxgSAAgAAAB/GBIACwAAAIoYEgAHAAAAkRgSAAUAAABS +ZWFkT25seURldmljZWlubmVyZGVsZXRlZHRydXN0X3N0YXRld2l0aGhlbGRfY29kZV9zZW50Zmly +c3RfdGltZV9zZWVuX3RzAAAAxhgSAAUAAADLGBIABwAAANIYEgALAAAA3RgSABIAAADvGBIAEgAA +AFBpY2tsZWRBY2NvdW50dXNlcl9pZGRldmljZV9pZHBpY2tsZWRlaHlkcmF0ZWR1cGxvYWRlZF9z +aWduZWRfa2V5X2NvdW50Y3JlYXRpb25fbG9jYWxfdGltZWZhbGxiYWNrX2tleV9jcmVhdGlvbl90 +aW1lc3RhbXAAAAA6GRIABwAAAEEZEgAJAAAAShkSAAYAAABBGBIABgAAAFAZEgAKAAAAWhkSABkA +AABzGRIAEwAAAIYZEgAfAAAAUGlja2xlZENyb3NzU2lnbmluZ0lkZW50aXR5a2V5cwA6GRIABwAA +AEEYEgAGAAAAAxoSAAQAAABPbG1WMUtleXNlZDI1NTE5KRoSAAcAAABEZWNyeXB0ZWRPbG1WMUV2 +ZW50c2VuZGVycmVjaXBpZW50cmVjaXBpZW50X2tleXNjb250ZW50AEsaEgAGAAAAURoSAAkAAAAD +GhIABAAAAFoaEgAOAAAAaBoSAAcAAABLZXlSZXF1ZXN0U2VjcmV0UmVxdWVzdACYGhIACgAAAKIa +EgANAAAAR29zc2lwUmVxdWVzdHJlcXVlc3RfcmVjaXBpZW50cmVxdWVzdF9pZGluZm9zZW50X291 +dM0aEgARAAAA3hoSAAoAAADoGhIABAAAAOwaEgAIAAAAR29zc2lwcGVkU2VjcmV0c2VjcmV0X25h +bWVnb3NzaXBfcmVxdWVzdGV2ZW50AAAAIxsSAAsAAAAuGxIADgAAADwbEgAFAAAAc3RydWN0IERl +Y3J5cHRlZE9sbVYxRXZlbnQqJHNlcmRlX2pzb246OnByaXZhdGU6OlJhd1ZhbHVlYSB2YWxpZCBk +ZXZpY2UgaWRlbnRpZmllciBvciAnKicAAACVGxIAIAAAAL8GAAAIAAAABAAAAAQAAABtLmNyb3Nz +X3NpZ25pbmcubWFzdGVybS5jcm9zc19zaWduaW5nLnVzZXJfc2lnbmluZ20uY3Jvc3Nfc2lnbmlu +Zy5zZWxmX3NpZ25pbmdtLm1lZ29sbV9iYWNrdXAudjFTZXNzaW9uQ29uZmlndmVyc2lvbj0cEgAH +AAAAT25lVGltZUtleXNQaWNrbGVrZXlfaWRuZXh0X2tleV9pZHB1YmxpY19rZXlzcHJpdmF0ZV9r +ZXlzAAAAXRwSAAYAAABjHBIACwAAAG4cEgALAAAAeRwSAAwAAABSZWNlaXZlckNoYWlucmF0Y2hl +dF9rZXloa2RmX3JhdGNoZXRza2lwcGVkX21lc3NhZ2Vfa2V5c3JhdGNoZXRfY291bnQAAAC1HBIA +CwAAAMAcEgAMAAAAzBwSABQAAADgHBIADQAAAE1lc3NhZ2VLZXlTdG9yZQDGGBIABQAAAGNhbm5v +dCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVz +dHJ1Y3Rpb24AAMAGAAAAAAAAAQAAAMEGAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQz +NzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAIAdEgBPAAAA +BgEAABoAAABpbnZhbGlkIHR5cGU6ICwgZXhwZWN0ZWQgAAAA4B0SAA4AAADuHRIACwAAAAAAAAD/ +/////////xAeEgBBqLzIAAuZVuAdEgAAAAAAwgYAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0 +cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlLXdhc20tYmluZGdl +bi0wLjYuNS9zcmMvbGliLnJzAAAANB4SAGUAAAA1AAAADgAAAMMGAAAAAAAAAQAAAMQGAADDBgAA +AAAAAAEAAAD9BQAAdWxscnVlYWxzZWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxl +IGNvZGUvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYx +N2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMTUvc3JjL2RlLnJz/h4SAF4AAACaBAAAIgAA +AP4eEgBeAAAAkAQAACYAAADDBgAAAAAAAAEAAAAABgAAwwYAAAAAAAABAAAA/wUAAHN0cnVjdCB2 +YXJpYW50AACcHxIADgAAAMUGAAAIAAAABAAAAAQAAADDBgAAAAAAAAEAAAANBgAAwwYAAAAAAAAB +AAAAxgYAAMMGAAAAAAAAAQAAAMYGAADDBgAAAAAAAAEAAADHBgAAwwYAAAAAAAABAAAAyAYAAMMG +AAAAAAAAAQAAAMkGAADDBgAAAAAAAAEAAADKBgAAc3RydWN0IHZhcmlhbnQgS2RmSW5mbzo6UGJr +ZGYyVG9DaGFDaGEyMFBvbHkxMzA1IHdpdGggMiBlbGVtZW50czQgEgBAAAAAcm91bmRza2RmX3Nh +bHRzdHJ1Y3QgdmFyaWFudCBDaXBoZXJUZXh0SW5mbzo6Q2hhQ2hhMjBQb2x5MTMwNSB3aXRoIDIg +ZWxlbWVudHMAAACKIBIAPwAAAG5vbmNlY2lwaGVydGV4dHN0cnVjdCBFbmNyeXB0ZWRTdG9yZUNp +cGhlciB3aXRoIDIgZWxlbWVudHMAAOMgEgArAAAAa2RmX2luZm9jaXBoZXJ0ZXh0X2luZm8vaG9t +ZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1 +MDAxZi9ybXAtc2VyZGUtMS4xLjIvc3JjL2RlY29kZS5yc2ludGVybmFsIGVycm9yOiBlbnRlcmVk +IHVucmVhY2hhYmxlIGNvZGUAAC8hEgBfAAAABwIAABoAAAAvIRIAXwAAADYCAAAaAAAAzQYAAAAA +AAABAAAAxAYAAM0GAAAAAAAAAQAAAP0FAAAvIRIAXwAAANgBAAAxAAAAzQYAAAAAAAABAAAA/wUA +AM0GAAAAAAAAAQAAAAAGAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5 +Nzc2MjFhNy9saWJyYXJ5L3N0ZC9zcmMvaW8vaW1wbHMucnMAKCISAEsAAAAhAQAAGwAAACgiEgBL +AAAAJwEAABYAAAAoIhIASwAAACkBAAARAAAAZmFpbGVkIHRvIGZpbGwgd2hvbGUgYnVmZmVyAKQi +EgAbAAAAJQAAAG1pZCA+IGxlbgAAAMwiEgAJAAAAaW52YWxpZCB0eXBlOiAsIGV4cGVjdGVkIAAA +AOAiEgAOAAAA7iISAAsAAABpbnZhbGlkIHZhbHVlOiAADCMSAA8AAADuIhIACwAAAG1pc3Npbmcg +ZmllbGQgYGAsIxIADwAAADsjEgABAAAAaW52YWxpZCBsZW5ndGggAEwjEgAPAAAA7iISAAsAAABk +dXBsaWNhdGUgZmllbGQgYAAAAGwjEgARAAAAOyMSAAEAAAB1bmtub3duIHZhcmlhbnQgYGAsIGV4 +cGVjdGVkIAAAAJAjEgARAAAAoSMSAAwAAABgLCB0aGVyZSBhcmUgbm8gdmFyaWFudHOQIxIAEQAA +AMAjEgAYAAAAzgYAAAgAAAAEAAAAzwYAAM4GAAAIAAAABAAAANAGAADPBgAA6CMSANEGAADSBgAA +0wYAANQGAADVBgAA1gYAAAgAAAAEAAAA1wYAANYGAAAIAAAABAAAANgGAADXBgAAJCQSANkGAADa +BgAA2wYAANwGAADVBgAAVXRmOEVycm9ydmFsaWRfdXBfdG/WBgAABAAAAAQAAADdBgAAZXJyb3Jf +bGVuAAAA1gYAAAQAAAAEAAAA3gYAAGludmFsaWQgdXRmLTg6IGNvcnJ1cHQgY29udGVudHMALyES +AF8AAADgAwAAHwAAAHN0cnVjdCB2YXJpYW50AADQJBIADgAAANYGAAAIAAAABAAAAAQAAABzdHJ1 +Y3QgdmFyaWFudCBLZGZJbmZvOjpQYmtkZjJUb0NoYUNoYTIwUG9seTEzMDUgd2l0aCAyIGVsZW1l +bnRz+CQSAEAAAAByb3VuZHNrZGZfc2FsdHN0cnVjdCB2YXJpYW50IENpcGhlclRleHRJbmZvOjpD +aGFDaGEyMFBvbHkxMzA1IHdpdGggMiBlbGVtZW50cwAAAE4lEgA/AAAAbm9uY2VjaXBoZXJ0ZXh0 +c3RydWN0IEVuY3J5cHRlZFN0b3JlQ2lwaGVyIHdpdGggMiBlbGVtZW50cwAApyUSACsAAABrZGZf +aW5mb2NpcGhlcnRleHRfaW5mbwIkBAMTFBUhIiMNDgUGBwgJCgsMHB0eHyAQERIXGBobABgAAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJi +YTE1MDAxZi9kaWdlc3QtMC4xMC43L3NyYy9jb3JlX2FwaS9jdF92YXJpYWJsZS5ycwAYJhIAawAA +AHwAAAAkAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlv +LTZmMTdkMjJiYmExNTAwMWYvYmxvY2stYnVmZmVyLTAuMTAuNC9zcmMvbGliLnJzlCYSAGAAAACk +AAAAGAAAAJQmEgBgAAAApAAAACAAAACUJhIAYAAAAK4AAAAUAAAAlCYSAGAAAACuAAAAGgAAAJQm +EgBgAAAAnQAAABgAAACUJhIAYAAAAJ0AAAAfAAAAlCYSAGAAAACdAAAAJQAAAJQmEgBgAAAALQEA +ACIAAACUJhIAYAAAADgBAAAeAAAAlCYSAGAAAAA1AQAAGAAAAOYGAAAMAAAABAAAAOcGAADoBgAA +6QYAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVk +bHkA6gYAAAAAAAABAAAA6wYAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0 +Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwD0JxIASwAAADMKAAAOAAAARXJy +b3IAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJy +YXJ5L2NvcmUvc3JjL2NoYXIvbWV0aG9kcy5yc1goEgBQAAAABQcAAA0AAABkZXNjcmlwdGlvbigp +IGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF57AYAABAAAAAEAAAA7QYAAOwGAAAQAAAABAAAAO4G +AADsBgAAEAAAAAQAAADtBgAA7gYAAPAoEgDvBgAA8AYAAPEGAADyBgAA8wYAAPQGAAAIAAAABAAA +APUGAAD0BgAACAAAAAQAAACjAQAA9QYAACwpEgD2BgAA9wYAAPEGAAD4BgAA8wYAAOoGAAAAAAAA +AQAAAPkGAADqBgAAAAAAAAEAAADrBgAA+QYAAGgpEgD6BgAA+wYAAPwGAAD9BgAA/gYAAP8GAAAE +AAAABAAAANAAAAD/BgAABAAAAAQAAACqAAAA0AAAAKQpEgCOAQAAjwEAAPEGAACRAQAA8wYAAAAH +AAAQAAAABAAAAAEHAAAABwAAEAAAAAQAAAACBwAAAQcAAOApEgADBwAABAcAAPEGAAAFBwAA8wYA +AOoGAAAAAAAAAQAAAMYGAADqBgAAAAAAAAEAAAAGBwAA6gYAAAAAAAABAAAAygYAAOoGAAAAAAAA +AQAAAMgGAADqBgAAAAAAAAEAAAAGBwAA6gYAAAAAAAABAAAABgcAAOoGAAAAAAAAAQAAAMkGAADq +BgAAAAAAAAEAAADGBgAASW52YWxpZE1hcmtlclJlYWQAAAAHBwAABAAAAAQAAADDAAAASW52YWxp +ZERhdGFSZWFkVHlwZU1pc21hdGNoAAcHAAAEAAAABAAAAKAGAABPdXRPZlJhbmdlTGVuZ3RoTWlz +bWF0Y2gHBwAABAAAAAQAAAAIBwAAVW5jYXRlZ29yaXplZAAAAAcHAAAEAAAABAAAAAkHAABTeW50 +YXhVdGY4RXJyb3IABwcAAAQAAAAEAAAAWQUAAERlcHRoTGltaXRFeGNlZWRlZEludmFsaWRWYWx1 +ZVdyaXRlAAcHAAAEAAAABAAAAKEGAABVbmtub3duTGVuZ3RoSW52YWxpZERhdGFNb2RlbAAAAAcH +AAAEAAAABAAAAAoHAAALBwAACAAAAAQAAADPBgAACwcAAAgAAAAEAAAA0AYAAM8GAAC4KxIA0QYA +ANIGAADTBgAA1AYAAPMGAAAHBwAACAAAAAQAAADXBgAABwcAAAgAAAAEAAAADAcAANcGAAD0KxIA +DQcAANoGAAAOBwAA3AYAAPMGAAAPBwAADAAAAAQAAAAQBwAADwcAAAwAAAAEAAAAEQcAABAHAAAw +LBIAEgcAABMHAADxBgAAFAcAAPMGAAB2YWxpZF91cF90bwAHBwAABAAAAAQAAAAVBwAAZXJyb3Jf +bGVuAAAABwcAAAQAAAAEAAAA3gYAAGludmFsaWQgdXRmLTg6IGNvcnJ1cHQgY29udGVudHNJbnZh +bGlkTWFya2VyV3JpdGVJbnZhbGlkRGF0YVdyaXRlL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3Ry +eS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2hhMi0wLjEwLjgvc3JjL2Nv +cmVfYXBpLnJzAADlLBIAXQAAAEIAAAATAAAAAAAAAGfmCWqFrme7cvNuPDr1T6V/Ug5RjGgFm6vZ +gx8ZzeBbL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0x +ZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstc3RvcmUtZW5jcnlwdGlv +bi9zcmMvbGliLnJzQ2FuJ3Qgc2VyaWFsaXplIHRoZSBzdG9yZSBjaXBoZXJ4LRIAeAAAALgAAAAN +AAAAeC0SAHgAAAC4AAAAFQAAAHgtEgB4AAAAuQAAAA0AAAB4LRIAeAAAALkAAAAWAAAAeC0SAHgA +AADXAAAAMwAAAHgtEgB4AAAA6wAAADYAAAB4LRIAeAAAAOsAAAAcAAAAeC0SAHgAAADsAAAANAAA +AHgtEgB4AAAA7AAAABoAAABJbmNvcnJlY3Qgbm9uY2UgbGVuZ3RoIC4gRXhwZWN0ZWQgbGVuZ3Ro +OiAuAKAuEgAXAAAAty4SABMAAADKLhIAAQAAAAAAAkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla +YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky////////////////////////// +////////////////////////////////Pv///z80NTY3ODk6Ozw9/////////wABAgMEBQYHCAkK +CwwNDg8QERITFBUWFxgZ////////GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP///////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +////////////AHgtEgB4AAAAgAMAAA8AAABGYWlsZWQgdG8gc2VyaWFsaXplIGEgdmFsdWUgODAS +ABwAAABGYWlsZWQgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSAAAFwwEgAeAAAARmFpbGVkIHRvIGRl +c2VyaWFsaXplIG9yIHNlcmlhbGl6ZSBhIEpTT04gdmFsdWUghDASADAAAABFcnJvciBlbmNyeXB0 +aW5nIG9yIGRlY3J5cHRpbmcgYSB2YWx1ZSAAvDASACcAAABDb3VsZG4ndCBnZW5lcmF0ZSBlbm91 +Z2ggcmFuZG9tbmVzcyBmb3IgYSBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbjogAOwwEgBDAAAAVW5z +dXBwb3J0ZWQgY2lwaGVydGV4dCB2ZXJzaW9uLCBleHBlY3RlZCAsIGdvdCAAODESACkAAABhMRIA +BgAAAFRoZSBjaXBoZXJ0ZXh0IGhhZCBhbiBpbnZhbGlkIGxlbmd0aCwgZXhwZWN0ZWQgAHgxEgAv +AAAAYTESAAYAAABGYWlsZWQgdG8gaW1wb3J0IGEgc3RvcmUgY2lwaGVyLCB0aGUgZXhwb3J0IHVz +ZWQgYSBwYXNzcGhyYXNlIHdoaWxlCndlJ3JlIHRyeWluZyB0byBpbXBvcnQgaXQgdXNpbmcgYSBr +ZXkgb3IgdmljZS12ZXJzYS64MRIAeAAAAGZpZWxkIGlkZW50aWZpZXJzdHJ1Y3QgRW5jcnlwdGVk +VmFsdWVzdHJ1Y3QgRW5jcnlwdGVkVmFsdWVCYXNlNjRLZGZJbmZvTm9uZVBia2RmMlRvQ2hhQ2hh +MjBQb2x5MTMwNXJvdW5kc2tkZl9zYWx0AAAAfzISAAQAAACDMhIAGAAAAHZhcmlhbnQgaWRlbnRp +ZmllcnZhcmlhbnQgaW5kZXggMCA8PSBpIDwgMgAAzjISABgAAAAHBwAACAAAAAQAAAAEAAAAmzIS +AAYAAAChMhIACAAAAHN0cnVjdCB2YXJpYW50IEtkZkluZm86OlBia2RmMlRvQ2hhQ2hhMjBQb2x5 +MTMwNUNpcGhlclRleHRJbmZvQ2hhQ2hhMjBQb2x5MTMwNW5vbmNlY2lwaGVydGV4dAAAAE4zEgAQ +AAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAxeDMSABgAAABeMxIABQAAAGMzEgAKAAAAc3RydWN0 +IHZhcmlhbnQgQ2lwaGVyVGV4dEluZm86OkNoYUNoYTIwUG9seTEzMDVFbmNyeXB0ZWRTdG9yZUNp +cGhlcmtkZl9pbmZvY2lwaGVydGV4dF9pbmZvAADrMxIACAAAAPMzEgAPAAAAc3RydWN0IEVuY3J5 +cHRlZFN0b3JlQ2lwaGVyABYHAAAEAAAABAAAABcHAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lz +dHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ieXRlb3JkZXItMS41LjAv +c3JjL2xpYi5yc0A0EgBcAAAAuwcAABIAAABANBIAXAAAAMAHAAASAAAAQDQSAFwAAADFBwAAEgAA +AFV0ZjhFcnJvcnZhbGlkX3VwX3RvFgcAAAQAAAAEAAAAGAcAAGVycm9yX2xlbgAAABYHAAAEAAAA +BAAAAN4GAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8t +NmYxN2QyMmJiYTE1MDAxZi9kaWdlc3QtMC4xMC43L3NyYy9jb3JlX2FwaS9jdF92YXJpYWJsZS5y +cwAMNRIAawAAAHwAAAAkAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXgu +Y3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmxvY2stYnVmZmVyLTAuMTAuNC9zcmMvbGliLnJz +iDUSAGAAAACuAAAAGgAAAIg1EgBgAAAALQEAACIAAACINRIAYAAAADgBAAAeAAAAiDUSAGAAAAA1 +AQAAGAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02 +ZjE3ZDIyYmJhMTUwMDFmL2htYWMtMC4xMi4xL3NyYy9saWIucnMoNhIAWAAAAHwAAAAjAAAAKDYS +AFgAAABzAAAAHgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRl +cy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NoYTItMC4xMC44L3NyYy9jb3JlX2FwaS5ycwAAAKA2EgBd +AAAAQgAAABMAAABn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gWy9ob21lL3J1bm5lci8u +Y2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NoYWNo +YTIwLTAuOS4xL3NyYy9iYWNrZW5kcy9zb2Z0LnJzAAAAMDcSAGUAAAAbAAAAEwAAAGFuIGFycmF5 +IG9mIGxlbmd0aCAyNGFuIGFycmF5IG9mIGxlbmd0aCAzMmEgc2VxdWVuY2UvcnVzdGMvYWVkZDE3 +M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L3N0ZC9zcmMvaW8vaW1w +bHMucnMA3DcSAEsAAAApAQAAEQAAAGZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgA4OBIAGwAA +ACUAAAAZBwAAAAAAAAEAAADEBgAAGQcAAAAAAAABAAAADQYAABkHAAAAAAAAAQAAAAAGAAAZBwAA +AAAAAAEAAAD9BQAAGQcAAAAAAAABAAAA/wUAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkv +c3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NpcGhlci0wLjQuNC9zcmMvc3Ry +ZWFtX3dyYXBwZXIucnOwOBIAZAAAAHsAAAAjAAAAsDgSAGQAAACNAAAALQAAALA4EgBkAAAAfgAA +ACUAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYx +N2QyMmJiYTE1MDAxZi91bml2ZXJzYWwtaGFzaC0wLjUuMS9zcmMvbGliLnJzAAAARDkSAGEAAAB/ +AAAAGQAAAEQ5EgBhAAAAfwAAACgAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9p +bmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jaGFjaGEyMHBvbHkxMzA1LTAuMTAuMS9z +cmMvY2lwaGVyLnJzAMg5EgBnAAAAZwAAABQAAADIORIAZwAAAGgAAAAUAAAAY2FsbGVkIGBSZXN1 +bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAaBwAAAAAAAAEAAAAbBwAAGgcAAAAAAAAB +AAAAHAcAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02 +ZjE3ZDIyYmJhMTUwMDFmL2lub3V0LTAuMS4zL3NyYy9pbm91dF9idWYucnMAAJw6EgBeAAAA+AAA +AAkAAABUcnlGcm9tU2xpY2VFcnJvcgAAAB0HAAAEAAAABAAAAB4HAAAvaG9tZS9ydW5uZXIvLmNh +cmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jaXBoZXIt +MC40LjQvc3JjL3N0cmVhbS5yczA7EgBcAAAAeAAAACcAAABTdHJlYW1DaXBoZXJFcnJvci9ob21l +L3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUw +MDFmL2NoYWNoYTIwLTAuOS4xL3NyYy9saWIucnNleHBhbmQgMzItYnl0ZSBrrTsSAFsAAADZAAAA +OAAAAK07EgBbAAAA1QAAADgAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl +eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jaGFjaGEyMC0wLjkuMS9zcmMveGNoYWNoYS5y +cwA4PBIAXwAAADkAAAAYAAAAODwSAF8AAACNAAAADwAAADg8EgBfAAAAiQAAAA8AAAA4PBIAXwAA +AHQAAAAyAAAAODwSAF8AAABwAAAAMgAAABAAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5 +L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9nZW5lcmljLWFycmF5LTAuMTQu +Ny9zcmMvbGliLnJzAAAA7DwSAGEAAAA8AgAACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0 +cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2FlYWQtMC41LjIvc3JjL2xp +Yi5ycwAfBwAADAAAAAQAAAAgBwAAHwcAAAwAAAAEAAAAIAcAACAHAAC4PRIAIQcAACIHAAAjBwAA +JAcAAGA9EgBXAAAANgEAAAkAAABtaWQgPiBsZW4AAAAAPhIACQAAACUHAAAUAAAABAAAACYHAABj +YWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlACcHAAAAAAAAAQAAACgH +AAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2Qy +MmJiYTE1MDAxZi9ieXRlb3JkZXItMS41LjAvc3JjL2xpYi5yc2A+EgBcAAAAuwcAABIAAABgPhIA +XAAAAMAHAAASAAAARnJvbVV0ZjhFcnJvcmJ5dGVzAAAfBwAADAAAAAQAAAApBwAAZXJyb3IAAAAq +BwAABAAAAAQAAABZBQAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3Jh +dGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0LTAuMjEuNy9zcmMvZW5jb2RlLnJzAAAAGD8S +AF0AAABQAAAAMwAAAHVzaXplIG92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgYjY0IGxlbmd0aAAA +GD8SAF0AAABXAAAACgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNy +YXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIxLjcvc3JjL2VuZ2luZS9tb2QucnNp +bnRlZ2VyIG92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgYnVmZmVyIHNpemUAAMQ/EgBhAAAAfAAA +ABIAAABJbnZhbGlkIFVURjjEPxIAYQAAAIIAAAAkAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdp +c3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY2lwaGVyLTAuNC40L3Ny +Yy9zdHJlYW0ucnOAQBIAXAAAAK0AAAAcAAAAU3RyZWFtQ2lwaGVyRXJyb3JJbnZhbGlkTWFya2Vy +V3JpdGUAKgcAAAQAAAAEAAAAwwAAAEludmFsaWREYXRhV3JpdGUrBwAACAAAAAQAAADPBgAAKwcA +AAgAAAAEAAAA0AYAAM8GAAAwQRIA0QYAANIGAADTBgAA1AYAACwHAABkZXNjcmlwdGlvbigpIGlz +IGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5bWlzc2luZyBmaWVsZCBgYJRBEgAPAAAAo0ESAAEAAABp +bnZhbGlkIGxlbmd0aCAsIGV4cGVjdGVkIAAAtEESAA8AAADDQRIACwAAAGR1cGxpY2F0ZSBmaWVs +ZCBgAAAA4EESABEAAACjQRIAAQAAAHVua25vd24gdmFyaWFudCBgYCwgZXhwZWN0ZWQgAAAABEIS +ABEAAAAVQhIADAAAAGAsIHRoZXJlIGFyZSBubyB2YXJpYW50cwRCEgARAAAANEISABgAAAAtBwAA +DAAAAAQAAAAQBwAALQcAAAwAAAAEAAAALgcAABAHAABcQhIALwcAABMHAAAwBwAAFAcAADEHAABJ +bnZhbGlkTWFya2VyV3JpdGUAADIHAAAEAAAABAAAAMMAAABJbnZhbGlkRGF0YVdyaXRlMwcAAAgA +AAAEAAAAzwYAADMHAAAIAAAABAAAANAGAADPBgAAzEISANEGAADSBgAA0wYAANQGAAAxBwAAL2hv +bWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmEx +NTAwMWYvY2hhY2hhMjAtMC45LjEvc3JjL3hjaGFjaGEucnMACEMSAF8AAACWAAAAEAAAAAhDEgBf +AAAAlgAAACYAAAAIQxIAXwAAAJcAAAAFAAAACEMSAF8AAACaAAAAEAAAAC9ob21lL3J1bm5lci8u +Y2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NoYWNo +YTIwLTAuOS4xL3NyYy9iYWNrZW5kcy9zb2Z0LnJzAAAAqEMSAGUAAAA6AAAAEAAAAKhDEgBlAAAA +OgAAACYAAACoQxIAZQAAADsAAAAFAAAAqEMSAGUAAAA+AAAAEAAAACgpL2hvbWUvcnVubmVyLy5j +YXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcG9seTEz +MDUtMC44LjAvc3JjL2JhY2tlbmQvc29mdC5ycwAAUkQSAGQAAADiAAAAEwAAAFJEEgBkAAAA4wAA +ABMAAABSRBIAZAAAAOQAAAAUAAAAUkQSAGQAAADlAAAAFQAAAGFlYWQ6OkVycm9yAG1pZCA+IGxl +bgAAAARFEgAJAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIx +YTcvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAAAYRRIATgAAAFoHAAAlAAAAL2hvbWUv +cnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAw +MWYvYmxha2UzLTEuNS4xL3NyYy9wbGF0Zm9ybS5ycwAAeEUSAF4AAAC8AQAAIgAAAHhFEgBeAAAA +vQEAACIAAAB4RRIAXgAAAL4BAAAiAAAAeEUSAF4AAAC/AQAAIgAAAHhFEgBeAAAAwAEAACIAAAB4 +RRIAXgAAAMEBAAAiAAAAeEUSAF4AAADCAQAAIgAAAHhFEgBeAAAAwwEAACIAAAB4RRIAXgAAAOAB +AAAGAAAAeEUSAF4AAADhAQAABgAAAHhFEgBeAAAA4gEAAAYAAAB4RRIAXgAAAOMBAAAGAAAAeEUS +AF4AAADkAQAABgAAAHhFEgBeAAAA5QEAAAYAAAB4RRIAXgAAAOYBAAAGAAAAeEUSAF4AAADnAQAA +BgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3 +ZDIyYmJhMTUwMDFmL2JsYWtlMy0xLjUuMS9zcmMvbGliLnJzAAAA2EYSAFkAAADwAQAAEQAAANhG +EgBZAAAA8AEAACoAAADYRhIAWQAAAPABAABJAAAA2EYSAFkAAADwAQAAMwAAANhGEgBZAAAA8gEA +ABgAAADYRhIAWQAAABcCAAARAAAA2EYSAFkAAAAdAgAAGwAAANhGEgBZAAAAlgIAAAoAAADYRhIA +WQAAAIICAAAbAAAA2EYSAFkAAACCAgAAFgAAANhGEgBZAAAAxAIAAAwAAADYRhIAWQAAAMQCAAAo +AAAA2EYSAFkAAADEAgAANAAAANhGEgBZAAAAtAIAABwAAADYRhIAWQAAALQCAAAXAAAA2EYSAFkA +AADwAgAAHwAAANhGEgBZAAAADQMAAAwAAADYRhIAWQAAAA0DAAA1AAAA2EYSAFkAAAANAwAAHAAA +ANhGEgBZAAAAFAMAABIAAADYRhIAWQAAADwDAAAGAAAA2EYSAFkAAAA4AwAAIQAAANhGEgBZAAAA +OgMAABEAAADYRhIAWQAAADoDAABBAAAA2EYSAFkAAAA6AwAAJwAAAGfmCWqFrme7cvNuPDr1T6V/ +Ug5RjGgFm6vZgx8ZzeBbL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3 +NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9pdGVyLnJzAADkSBIATgAAAAIIAAARAEHQkskA +C9saYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVyb2NhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24g +YW4gYEVycmAgdmFsdWU0BwAABAAAAAQAAAA1BwAANAcAAAQAAAAEAAAANQcAAENhcGFjaXR5RXJy +b3I6IAC0SRIADwAAAGluc3VmZmljaWVudCBjYXBhY2l0eQAAAMxJEgAVAAAAL2hvbWUvcnVubmVy +Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmxh +a2UzLTEuNS4xL3NyYy9wbGF0Zm9ybS5ycwAA7EkSAF4AAADKAQAAIgAAAOxJEgBeAAAAywEAACIA +AADsSRIAXgAAAMwBAAAiAAAA7EkSAF4AAADNAQAAIgAAAOxJEgBeAAAAzgEAACIAAADsSRIAXgAA +AM8BAAAiAAAA7EkSAF4AAADQAQAAIgAAAOxJEgBeAAAA0QEAACIAAADsSRIAXgAAANIBAAAiAAAA +7EkSAF4AAADTAQAAIgAAAOxJEgBeAAAA1AEAACMAAADsSRIAXgAAANUBAAAjAAAA7EkSAF4AAADW +AQAAIwAAAOxJEgBeAAAA1wEAACMAAADsSRIAXgAAANgBAAAjAAAA7EkSAF4AAADZAQAAIwAAAOxJ +EgBeAAAA4AEAAAYAAADsSRIAXgAAAOEBAAAGAAAA7EkSAF4AAADiAQAABgAAAOxJEgBeAAAA4wEA +AAYAAADsSRIAXgAAAOQBAAAGAAAA7EkSAF4AAADlAQAABgAAAOxJEgBeAAAA5gEAAAYAAADsSRIA +XgAAAOcBAAAGAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVz +LmlvLTZmMTdkMjJiYmExNTAwMWYvYmxha2UzLTEuNS4xL3NyYy9wb3J0YWJsZS5ycwAAzEsSAF4A +AACOAAAADQAAAMxLEgBeAAAArAAAAA0AAABjbG9zdXJlIGludm9rZWQgYWZ0ZXIgYmVpbmcgZHJv +cHBlZAA2BwAABAAAAAQAAACoAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJy +YCB2YWx1ZQA3BwAABAAAAAQAAAA4BwAAT2JqZWN0b2JqAAAAOQcAAAQAAAAEAAAAUwIAAEV2ZW50 +VGFyZ2V0ADkHAAAEAAAABAAAADoHAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9p +bmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleGVkX2RiX2Z1dHVyZXMtMC40LjEv +c3JjL2lkYl90cmFuc2FjdGlvbi9pZGJfdHJhbnNhY3Rpb25fZnV0dXJlLnJz9EwSAIgAAAASAAAA +OAAAAPRMEgCIAAAAGAAAABIAAABUcmFuc2FjdGlvbiBhYm9ydGVkRmFpbGVkIHRvIGNvbnN0cnVj +dCBhYm9ydCBldmVudCBkb20gZXhjZXB0aW9uL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9z +cmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvaW5kZXhlZF9kYl9mdXR1cmVzLTAu +NC4xL3NyYy9pZGJfdHJhbnNhY3Rpb24vaWRiX3RyYW5zYWN0aW9uX3Jlc3VsdC5yc9xNEgCIAAAA +FgAAABYAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8t +NmYxN2QyMmJiYTE1MDAxZi9pbmRleGVkX2RiX2Z1dHVyZXMtMC40LjEvc3JjL2ludGVybmFsX3V0 +aWxzLnJzdE4SAHAAAAAgAAAAFgAAAHROEgBwAAAAOAAAACEAAAAvaG9tZS9ydW5uZXIvLmNhcmdv +L3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleGVkX2Ri +X2Z1dHVyZXMtMC40LjEvc3JjL3JlcXVlc3QvZnV0dXJlcy9jb3VudF9mdXR1cmUucnMAAARPEgB+ +AAAAFAAAACkAAABJZGJSZXF1ZXN0UmVmaW5uZXIAADkHAAAEAAAABAAAADsHAABjbG9zdXJlIGlu +dm9rZWQgYWZ0ZXIgYmVpbmcgZHJvcHBlZAA+BwAABAAAAAQAAACoAAAAL2hvbWUvcnVubmVyLy5j +YXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvaW5kZXhl +ZF9kYl9mdXR1cmVzLTAuNC4xL3NyYy9pZGJfZGF0YWJhc2UucnNObyBgaW5kZXhlZERCYCBnZXR0 +ZXIgaW4gYFdpbmRvd2AA7E8SAG4AAADbAAAADgAAAFRoZSBgaW5kZXhlZERCYCBnZXR0ZXIgcmV0 +dXJuZWQgYG51bGxgIG9yIGB1bmRlZmluZWRgAAAA7E8SAG4AAADcAAAADgAAAE5vIGBpbmRleGVk +REJgIGdldHRlciBpbiBgV29ya2VyR2xvYmFsU2NvcGVg7E8SAG4AAADhAAAADgAAAOxPEgBuAAAA +4gAAAA4AAABObyBgaW5kZXhlZERCYCBnZXR0ZXIgaW4gdGhlIE5vZGUuanMgYGdsb2JhbGAgZW52 +aXJvbm1lbnQAAADsTxIAbgAAAOcAAAAOAAAA7E8SAG4AAADoAAAADgAAAE9ubHkgc3VwcG9ydGVk +IGluIGEgYnJvd3Nlciwgb3Igd2ViIHdvcmtlciwgb3IgTm9kZS5qcyB3aXRoIGEgcG9seWZpbGwg +Zm9yIEluZGV4ZWREQnxREgBUAAAA7E8SAG4AAADqAAAACQAAAC9ob21lL3J1bm5lci8uY2FyZ28v +cmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2luZGV4ZWRfZGJf +ZnV0dXJlcy0wLjQuMS9zcmMvcmVxdWVzdC9mdXR1cmVzL2lkYl9yZXF1ZXN0X2Z1dHVyZS5yc+hR +EgCEAAAAWQAAABgAAADoURIAhAAAAF0AAAANAAAA6FESAIQAAABaAAAAJgAAAD8HAAAQAAAABAAA +AEAHAABBBwAAQQcAAOhREgCEAAAAgwAAABAAAABCBwAADAAAAAQAAABDBwAARAcAAEQHAABGYWls +ZWQgdG8gdW53cmFwIGVycm9yAADoURIAhAAAAIwAAAAxAAAA6FESAIQAAACMAAAAEAAAAEsHAAAE +AAAABAAAAKgAAABJZGJSZXF1ZXN0b2JqAAAATAcAAAQAAAAEAAAATQcAAEZhaWxlZCB0byB1bndy +YXAgSWRiT3BlbkRiUmVxdWVzdCBldmVudCB0YXJnZXQvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lz +dHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleGVkX2RiX2Z1dHVy +ZXMtMC40LjEvc3JjL2lkYl9kYXRhYmFzZS9pZGJfdmVyc2lvbl9jaGFuZ2VfZXZlbnQucnMAAABy +UxIAhwAAABsAAAAOAAAARmFpbGVkIHRvIHVud3JhcCBJZGJPcGVuRGJSZXF1ZXN0IHJlc3VsdHJT +EgCHAAAAHwAAAA4AAABOBwAACAAAAAQAAABPBwAAUAcAAFAHAABFcnJvciB1bnJlYWNoYWJsZSBv +biBhbiBlcnJvcmVkIHRyYW5zYWN0aW9uL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMv +aW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvaW5kZXhlZF9kYl9mdXR1cmVzLTAuNC4x +L3NyYy9pZGJfdHJhbnNhY3Rpb24vaWRiX3RyYW5zYWN0aW9uX2xpc3RlbmVycy5ycwAAh1QSAIsA +AABAAAAAEgAAAFEHAAAQAAAABAAAAFIHAABTBwAAUwcAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2luZGV4ZWRfZGJfZnV0 +dXJlcy0wLjQuMS9zcmMvaW50ZXJuYWxfdXRpbHMucnM8VRIAcAAAABQAAAAWAAAAY2Fubm90IGFj +Y2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVj +dGlvbgAAVQcAAAAAAAABAAAAwQYAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNi +MzQ0Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAFFYSAE8AAAAGAQAA +GgAAAGludmFsaWQgdHlwZTogLCBleHBlY3RlZCAAAAB0VhIADgAAAIJWEgALAAAA//////////+g +VhIAQbityQALiTF0VhIAAAAAAFYHAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9p +bmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZS13YXNtLWJpbmRnZW4tMC41LjAv +c3JjL2xpYi5ycwAAAMRWEgBlAAAANQAAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmlzX2No +YXJfYm91bmRhcnkobikvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2 +MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAABmVxIASwAAAHQHAAAdAAAAZlcSAEsA +AAB8BwAAHQAAAFcHAAAMAAAABAAAAFgHAABZBwAAWgcAAF0HAAAMAAAABAAAAF4HAABfBwAAWgcA +AGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA +YAcAAAAAAAABAAAAYQcAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3 +NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBMWBIASwAAADMKAAAOAAAAZGVzY3Jp +cHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheUVycm9yYXNzZXJ0aW9uIGZhaWxlZDog +c2VsZi5pc19jaGFyX2JvdW5kYXJ5KG5ld19sZW4pAAAATFgSAEsAAAB0BQAADQAAAGIHAAAIAAAA +BAAAAGMHAABiBwAACAAAAAQAAABkBwAAYwcAABhZEgBlBwAAZgcAAGcHAABoBwAAaQcAAGoHAAAk +AAAABAAAAGsHAABqBwAAJAAAAAQAAABsBwAAawcAAFRZEgBtBwAAbgcAAG8HAABtBwAAcAcAAGJh +Y2t0cmFjZSBjYXB0dXJlIGZhaWxlZC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2lu +ZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2FueWhvdy0xLjAuODEvc3JjL2Vycm9yLnJz +qFkSAFwAAACrAwAADgAAAKhYEgAAAAAAOiAAABxaEgACAAAACgpDYXVzZWQgYnk6KFoSAAwAAAAK +AAAAPFoSAAEAAAAKCgAASFoSAAIAAABzdGFjayBiYWNrdHJhY2U6U3RhY2sgYmFja3RyYWNlOgoA +AABkWhIAEQAAAFMAAABxBwAAEAAAAAQAAAByBwAAcwcAAHQHAAB1BwAAdgcAAHcHAACZAwAAmgMA +AHgHAAAgICAgOiAAAIRaEgAAAAAAuFoSAAIAAAAgICAgICAgaW50ZXJuYWwgZXJyb3I6IGVudGVy +ZWQgdW5yZWFjaGFibGUgY29kZTogaW52YWxpZCBPbmNlIHN0YXRlANNaEgA8AAAAL3J1c3RjL2Fl +ZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL3N5 +cy9wYWwvd2FzbS8uLi91bnN1cHBvcnRlZC9vbmNlLnJzABhbEgBjAAAANgAAABIAAAAvcnVzdGMv +YWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3Ny +Yy92ZWMvbW9kLnJzjFsSAEwAAAAnCAAAJAAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2 +ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvaW5kZXgucnMA6FsSAE8A +AACwAgAANAAAAOhbEgBPAAAAuAIAADIAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQz +NzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9tYXAu +cnMAAFhcEgBaAAAAmwcAAEYAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0 +NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9tYXAvZW50cnku +cnPEXBIAYAAAAHABAAA2AAAAYXNzZXJ0aW9uIGZhaWxlZDogaWR4IDwgQ0FQQUNJVFkvcnVzdGMv +YWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3Ny +Yy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzAFRdEgBbAAAAlwIAAAkAAABhc3NlcnRpb24gZmFp +bGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhlaWdodCAtIDFUXRIAWwAAAK8CAAAJAAAAVF0SAFsA +AACzAgAACQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IGVtcHR5 +IGludGVybmFsIG5vZGUAAAAQXhIAPQAAAFRdEgBbAAAAKwUAAB8AAABhc3NlcnRpb24gZmFpbGVk +OiBzZWxmLmhlaWdodCA+IDAAAABUXRIAWwAAAGICAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogc3Jj +LmxlbigpID09IGRzdC5sZW4oKVRdEgBbAAAALwcAAAUAAABUXRIAWwAAAK8EAAAjAAAAVF0SAFsA +AACzBAAAIwAAAFRdEgBbAAAA7wQAACQAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9 +PSBzZWxmLm5vZGUuaGVpZ2h0IC0gMQAAAFRdEgBbAAAA8AMAAAkAAABhc3NlcnRpb24gZmFpbGVk +OiBjb3VudCA+IDAAVF0SAFsAAADUBQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9yaWdodF9s +ZW4gKyBjb3VudCA8PSBDQVBBQ0lUWQBUXRIAWwAAANwFAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDog +b2xkX2xlZnRfbGVuID49IGNvdW50AFRdEgBbAAAA3QUAAA0AAABpbnRlcm5hbCBlcnJvcjogZW50 +ZXJlZCB1bnJlYWNoYWJsZSBjb2RlVF0SAFsAAAAMBgAAFgAAAFRdEgBbAAAAEwYAAAkAAABhc3Nl +cnRpb24gZmFpbGVkOiBvbGRfbGVmdF9sZW4gKyBjb3VudCA8PSBDQVBBQ0lUWQAAVF0SAFsAAAAb +BgAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9yaWdodF9sZW4gPj0gY291bnRUXRIAWwAAABwG +AAANAAAAVF0SAFsAAABMBgAAFgAAAGFzc2VydGlvbiBmYWlsZWQ6IG1hdGNoIHRyYWNrX2VkZ2Vf +aWR4IHsKICAgIExlZnRPclJpZ2h0OjpMZWZ0KGlkeCkgPT4gaWR4IDw9IG9sZF9sZWZ0X2xlbiwK +ICAgIExlZnRPclJpZ2h0OjpSaWdodChpZHgpID0+IGlkeCA8PSByaWdodF9sZW4sCn0AAFRdEgBb +AAAArgUAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBuZXdfbGVmdF9sZW4gPD0gQ0FQQUNJVFkAAFRd +EgBbAAAAYQUAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBsZW4gPiAwAAAAVF0SAFsAAABlAQAACQAA +AC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkv +YWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzANBhEgBfAAAAWQIAADAAAADQ +YRIAXwAAADECAAAvAAAASW5kZXggb3V0IG9mIGJvdW5kcwBQYhIAEwAAAG1pZCA+IGxlbgAAAGxi +EgAJAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGli +cmFyeS9jb3JlL3NyYy9zbGljZS9tb2QucnMAAACAYhIATQAAAOEDAAAhAAAAgGISAE0AAADhAwAA +LgAAAIBiEgBNAAAA5QMAACAAAACAYhIATQAAAOUDAAArAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZl +NTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0LnJz +AAAQYxIATgAAADsEAAAOAAAAEGMSAE4AAABIBAAAHAAAABBjEgBOAAAASQQAAB0AAAAQYxIATgAA +AEoEAAAlAAAAEGMSAE4AAABQBAAAEQAAABBjEgBOAAAAjgQAAEAAAAAQYxIATgAAALQEAABOAAAA +EGMSAE4AAADCBAAAVgAAABBjEgBOAAAA1gQAABEAAAAQYxIATgAAANECAAAPAAAAEGMSAE4AAABs +AgAABwAAABBjEgBOAAAAbQIAABgAAAAQYxIATgAAAG4CAAAWAAAAYXNzZXJ0aW9uIGZhaWxlZDog +ZW5kID49IHN0YXJ0ICYmIGVuZCA8PSBsZW4QYxIATgAAAC0FAAAFAAAAEGMSAE4AAAA+BQAAKQAA +ABBjEgBOAAAA5wAAAAsAAAAQYxIATgAAAOsAAAAtAAAAEGMSAE4AAADuAAAALgAAAGFzc2VydGlv +biBmYWlsZWQ6IG9mZnNldCAhPSAwICYmIG9mZnNldCA8PSBsZW4AABBjEgBOAAAAmwAAAAUAAAAQ +YxIATgAAAKMAAAAfAAAAYXNzZXJ0aW9uIGZhaWxlZDogb2Zmc2V0ICE9IDAgJiYgb2Zmc2V0IDw9 +IGxlbiAmJiBsZW4gPj0gMgAAEGMSAE4AAAC0AAAABQAAABBjEgBOAAAAvQAAAB8AAAAQYxIATgAA +AFoDAAAdAAAAEGMSAE4AAABeAwAAGwAAABBjEgBOAAAAaQMAAB8AAAAQYxIATgAAAGoDAAAkAAAA +EGMSAE4AAABrAwAAFgAAABBjEgBOAAAAIAEAAAsAAAAQYxIATgAAACEBAAAZAAAAEGMSAE4AAAAP +AQAAGgAAABBjEgBOAAAADwEAACQAAAAQYxIATgAAABQBAAAPAAAAEGMSAE4AAAA2AgAACwAAABBj +EgBOAAAANwIAABwAAAAQYxIATgAAADgCAAAaAAAAEGMSAE4AAABWAgAAKAAAABBjEgBOAAAAXgIA +AAcAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJy +YXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwBIZhIAXwAAAK4AAAAk +AAAASGYSAF8AAADHAAAAJwAAAEhmEgBfAAAAFwIAAC8AAABIZhIAXwAAACMCAAA0AAAASGYSAF8A +AACiAAAAJAAAAEhmEgBfAAAApwAAACMAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQz +NzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9tYXAu +cnNpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlAAAIZxIAWgAAAOYAAAAs +AAAACGcSAFoAAAD6AAAAPwAAAAhnEgBaAAAAHwEAAC4AAABjdXJ2ZTI1NTE5Y3VydmUyNTUxOS1o +a2RmLXNoYTI1Nm0uc2FzLnYxbS5xcl9jb2RlLnNjYW4udjFtLnFyX2NvZGUuc2hvdy52MW0ucmVj +aXByb2NhdGUudjFtLnVzZXJtLnRpbWVvdXRtLnVua25vd25fdHJhbnNhY3Rpb25tLnVua25vd25f +bWV0aG9kbS51bmV4cGVjdGVkX21lc3NhZ2VtLmtleV9taXNtYXRjaG0udXNlcl9taXNtYXRjaG0u +aW52YWxpZF9tZXNzYWdlbS5hY2NlcHRlZG0ubWlzbWF0Y2hlZF9jb21taXRtZW50bS5taXNtYXRj +aGVkX3Nhc2hrZGYtaG1hYy1zaGEyNTZoa2RmLWhtYWMtc2hhMjU2LnYyaG1hYy1zaGEyNTZkZWNp +bWFsZW1vaml9ZmFsc2V0cnVlbnVsbFt7LDpdS2V5VmVyaWZpY2F0aW9uQ2FuY2VsRXZlbnRDb250 +ZW50cmVhc29uAAAAeQcAAAwAAAAEAAAAegcAAGNvZGV7BwAADAAAAAQAAACpBAAAcmVsYXRlc190 +bwAAfAcAAAQAAAAEAAAAfQcAAGVkMjU1MTlzaWduZWRfY3VydmUyNTUxOVRvRGV2aWNlS2V5VmVy +aWZpY2F0aW9uQ2FuY2VsRXZlbnRDb250ZW50dHJhbnNhY3Rpb25faWQAtWkSAA4AAAAraRIABgAA +AERpEgAEAAAAbS5vbG0udjEuY3VydmUyNTUxOS1hZXMtc2hhMm0ubWVnb2xtLnYxLmFlcy1zaGEy +fAcAAAQAAAAEAAAAQwUAAHwHAAAEAAAABAAAAH4HAAB8BwAABAAAAAQAAADKAAAAfAcAAAQAAAAE +AAAAfwcAAHwHAAAEAAAABAAAAIAHAAB8BwAABAAAAAQAAACBBwAAfAcAAAQAAAAEAAAAggcAAHwH +AAAEAAAABAAAADoFAAB8BwAABAAAAAQAAACDBwAAfAcAAAQAAAAEAAAAhAcAAHwHAAAEAAAABAAA +AIUHAAB8BwAABAAAAAQAAABAAwAAfAcAAAQAAAAEAAAAhgcAAHwHAAAEAAAABAAAAIcHAAB8BwAA +BAAAAAQAAACIBwAAfAcAAAQAAAAEAAAAiQcAAHwHAAAEAAAABAAAAIoHAAB8BwAABAAAAAQAAACL +BwAAfAcAAAQAAAAEAAAAjAcAAHwHAAAEAAAABAAAAAkBAAB8BwAABAAAAAQAAAAFBAAAfAcAAAQA +AAAEAAAATAMAAHwHAAAEAAAABAAAAI0HAAB8BwAABAAAAAQAAACOBwAAfAcAAAQAAAAEAAAAMgUA +AHwHAAAEAAAABAAAAEoFAAB8BwAABAAAAAQAAACPBwAAfAcAAAQAAAAEAAAAkAcAAHwHAAAEAAAA +BAAAAJEHAAB8BwAABAAAAAQAAAB5AgAAfAcAAAQAAAAEAAAAGgQAAHwHAAAEAAAABAAAAJIHAAB8 +BwAABAAAAAQAAACTBwAAfAcAAAQAAAAEAAAABgEAAHwHAAAEAAAABAAAAJQHAAB8BwAABAAAAAQA +AACVBwAAfAcAAAQAAAAEAAAAlgcAAHwHAAAEAAAABAAAABABAAB8BwAABAAAAAQAAACXBwAAY2Fu +IG9ubHkgZmxhdHRlbiBzdHJ1Y3RzIGFuZCBtYXBzIChnb3QgKXxsEgAnAAAAo2wSAAEAAABQb2lz +b25FcnJvclBvaXNvbmVkKC4uKVdvdWxkQmxvY2tEZXZpY2VJZEFsbERldmljZXNpbnRlcm5hbCBl +cnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3Ry +eS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1 +L3NyYy92YWx1ZS9zZXIucnMPbRIAZQAAAJsBAAAuAAAAc2VyaWFsaXplX3ZhbHVlIGNhbGxlZCBi +ZWZvcmUgc2VyaWFsaXplX2tleQAPbRIAZQAAAKgBAAAfAAAAD20SAGUAAACvAQAALgAAAG1hc3Rl +cnNlbGZfc2lnbmluZ3VzZXJfc2lnbmluZy9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3Jj +L2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMv +c2VyLnJzAAAA7m0SAF8AAAB9AgAAKgAAAO5tEgBfAAAAlAIAACoAAADubRIAXwAAAKICAAAqAAAA +7m0SAF8AAAD6AQAAKgAAAO5tEgBfAAAACAIAACoAAABUb0RldmljZUV2ZW50dHlwZWNvbnRlbnRz +ZW5kZXIkc2VyZGVfanNvbjo6cHJpdmF0ZTo6UmF3VmFsdWVleHBlY3RlZCBSYXdWYWx1ZXNoYTI1 +NlRleHRNZXNzYWdlRXZlbnRDb250ZW50Ym9keWZvcm1hdHRlZAB8BwAABAAAAAQAAACYBwAATm90 +aWNlTWVzc2FnZUV2ZW50Q29udGVudABB0N7JAAuzF20ubWVnb2xtX2JhY2t1cC52MS5jdXJ2ZTI1 +NTE5LWFlcy1zaGEycm9vbV9pZHNlc3Npb25faWRmb3J3YXJkaW5nX2N1cnZlMjU1MTlfa2V5X2No +YWluVGhlIGBtLnJvb20uZW5jcnlwdGVkYCBldmVudCBpcyBtaXNzaW5nIGEgY2lwaGVydGV4dE1l +Z29sbVYxQWVzU2hhMkNvbnRlbnRVbnN1cHBvcnRlZCBhbGdvcml0aG0gZm9yIGEgcm9vbSBrZXkg +cmVxdWVzdG9yZy5tYXRyaXgubXNjMzc4My5oa2RmLWhtYWMtc2hhMjU2ZmllbGQgaWRlbnRpZmll +cnB1YmxpY19rZXlzaWduYXR1cmVzc3RydWN0IE1lZ29sbVYxQXV0aERhdGFzdHJ1Y3QgQmFja3Vw +SW5mb0hlbHBlcnNlc3Npb25fa2V5c2VuZGVyX2tleXNlbmRlcl9jbGFpbWVkX2VkMjU1MTlfa2V5 +c3RydWN0IEZvcndhcmRlZE1lZ29sbVYxQWVzU2hhMkNvbnRlbnRzdHJ1Y3QgUm9vbUtleUhlbHBl +cmFsZ29yaXRobU9sbUhlbHBlcmNpcGhlcnRleHRvcmcubWF0cml4Lm1zZ2lkAACccBIACgAAAAxx +EgAKAAAAFnESABAAAABzdHJ1Y3QgT2xtSGVscGVyc3RydWN0IFJvb21FbmNyeXB0ZWRFdmVudENv +bnRlbnRkZXZpY2VfaWQAAAAMcRIACgAAAJxwEgAKAAAAcHESAAkAAAB9bxIACgAAAHN0cnVjdCBN +ZWdvbG1WMUFlc1NoYTJDb250ZW50c3RydWN0IEhlbHBlcnN0cnVjdCBSb29tS2V5UmVxdWVzdENv +bnRlbnRyZXF1ZXN0aW5nX2RldmljZV9pZHJlcXVlc3RfaWR2YXJpYW50IGlkZW50aWZpZXJBY3Rp +b25hY3Rpb25yZXF1ZXN0X2NhbmNlbGxhdGlvbgAAEnISAAYAAAAechIAFAAAAAAAAAByZXF1ZXN0 +ABJyEgAGAAAASHISAAcAAAABAAAAdm8SAAcAAACccBIACgAAAH1vEgAKAAAAc3RydWN0IFJlcXVl +c3RlZEtleUluZm9IZWxwZXJFZDI1NTE5fAcAAAQAAAAEAAAAmQcAAE90aGVySW52YWxpZFNpZ25h +dHVyZXNvdXJjZQAQAAAAEwAAACMAAAC9aBIAzWgSABxwEgBLZXlWZXJpZmljYXRpb25LZXlFdmVu +dENvbnRlbnRrZXkAAACcBwAADAAAAAQAAACdBwAAcmVsYXRlc190bwAAngcAAAQAAAAEAAAAfQcA +AEtleVZlcmlmaWNhdGlvbkRvbmVFdmVudENvbnRlbnRLZXlWZXJpZmljYXRpb25SZWFkeUV2ZW50 +Q29udGVudGZyb21fZGV2aWNlAACfBwAACAAAAAQAAABEAwAAbWV0aG9kcwCgBwAADAAAAAQAAABG +AwAAfXtvcmcubWF0cml4Lm1zYzM4MTQudjEub2xtVG9EZXZpY2VSb29tS2V5UmVxdWVzdEV2ZW50 +Q29udGVudGFjdGlvbmJvZHlyZXF1ZXN0aW5nX2RldmljZV9pZHJlcXVlc3RfaWRSZXF1ZXN0ZWRL +ZXlJbmZvYWxnb3JpdGhtcm9vbV9pZHNlbmRlcl9rZXlzZXNzaW9uX2lkVG9EZXZpY2VLZXlWZXJp +ZmljYXRpb25LZXlFdmVudENvbnRlbnR0cmFuc2FjdGlvbl9pZAAAAGd0EgAOAAAAAnMSAAMAAABU +b0RldmljZUtleVZlcmlmaWNhdGlvbkRvbmVFdmVudENvbnRlbnQAZ3QSAA4AAABUb0RldmljZUtl +eVZlcmlmaWNhdGlvblJlYWR5RXZlbnRDb250ZW50c3MSAAsAAACQcxIABwAAAGd0EgAOAAAAVG9E +ZXZpY2VLZXlWZXJpZmljYXRpb25SZXF1ZXN0RXZlbnRDb250ZW50dGltZXN0YW1wAHNzEgALAAAA +Z3QSAA4AAACQcxIABwAAACJ1EgAJAAAAVG9EZXZpY2VSb29tS2V5RXZlbnRDb250ZW50c2Vzc2lv +bl9rZXlIZWxwZXJkZXZpY2VfcGlja2xlAAAAdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhIHJl +bGVhc2UgbG9hZIh1EgAoAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRm +OTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zeW5jL2F0b21pYy5ycwC4dRIATwAAAOAMAAAYAAAA +dGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhbiBhY3F1aXJlLXJlbGVhc2UgbG9hZAAAABh2EgAx +AAAAuHUSAE8AAADhDAAAFwAAAKEHAAAEAAAABAAAAKoAAACiBwAAJAAAAAQAAACjBwAAY2FsbGVk +IGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQCkBwAACAAAAAQAAACuAAAApQcA +AAgAAAAEAAAArgAAAKUHAAAIAAAABAAAAK4AAAClBwAACAAAAAQAAACuAAAApAcAAAgAAAAEAAAA +rgAAAKUHAAAIAAAABAAAAK4AAACkBwAACAAAAAQAAACuAAAApAcAAAgAAAAEAAAArgAAAEludmFs +aWRLZXkAAJ4HAAAEAAAABAAAALoAAACeBwAABAAAAAQAAAC5AAAATm9uZVNvbWWeBwAABAAAAAQA +AACqBAAAngcAAAQAAAAEAAAApgcAAJ4HAAAEAAAABAAAAAYBAACeBwAABAAAAAQAAACnBwAAngcA +AAQAAAAEAAAAQwUAAJ4HAAAEAAAABAAAAKgHAACeBwAABAAAAAQAAAC1AAAAngcAAAQAAAAEAAAA +qQcAAJ4HAAAEAAAABAAAAKoHAACeBwAABAAAAAQAAACrBwAAngcAAAQAAAAEAAAArAcAAJ4HAAAE +AAAABAAAAK0HAACeBwAABAAAAAQAAAA3BQAAngcAAAQAAAAEAAAArgcAAJ4HAAAEAAAABAAAAK8H +AACeBwAABAAAAAQAAACwBwAAngcAAAQAAAAEAAAAygAAAJ4HAAAEAAAABAAAALEHAACeBwAABAAA +AAQAAACyBwAAngcAAAQAAAAEAAAAswcAAJ4HAAAEAAAABAAAALQHAABQbGFpbgAAAJ4HAAAEAAAA +BAAAALUHAABFbmNyeXB0ZWQAAACeBwAABAAAAAQAAAC2BwAAUndMb2NrZGF0YQAAngcAAAQAAAAE +AAAAtwcAADxsb2NrZWQ+BHkSAAgAAACeBwAAGAAAAAQAAAByAQAAcG9pc29uZWS4BwAAAQAAAAEA +AAC5BwAAngcAAAQAAAAEAAAAugcAAJ4HAAAEAAAABAAAALsHAAC8BwAAJHNlcmRlX2pzb246OnBy +aXZhdGU6OlJhd1ZhbHVlAAD/////L3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2Iz +NDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL3N5cy9wYWwvd2FzbS8uLi91bnN1cHBvcnRlZC9s +b2Nrcy9yd2xvY2sucnMAhHkSAGsAAAA/AAAACQAAAHJlcXVlc3RyZXF1ZXN0X2NhbmNlbGxhdGlv +bnVsbEZpbGVNZXNzYWdlRXZlbnRDb250ZW50AAAAnAcAAAwAAAAEAAAAvQcAAGZvcm1hdHRlZAAA +AL4HAAAUAAAABAAAAL8HAABmaWxlbmFtZcAHAAAMAAAABAAAAMEHAABzb3VyY2UAAMIHAAAIAAAA +BAAAAMMHAABpbmZvngcAAAQAAAAEAAAAxAcAAEF1ZGlvTWVzc2FnZUV2ZW50Q29udGVudJ4HAAAE +AAAABAAAAMUHAABJbWFnZU1lc3NhZ2VFdmVudENvbnRlbnSeBwAABAAAAAQAAADGBwAA//////// +///4ehIAQZD2yQALugFSZWFkT25seURldmljZXVzZXJfaWQAAACeBwAACAAAAAQAAADHBwAAZGV2 +aWNlX2lkAAAAngcAAAgAAAAEAAAAyAcAAGRpc3BsYXlfbmFtZZ4HAAAIAAAABAAAAMkHAABrZXlz +ygcAAAwAAAAEAAAAywcAAGRlbGV0ZWR0cnVzdF9zdGF0ZQAAzAcAAAQAAAAEAAAAzQcAAHdpdGho +ZWxkX2NvZGVfc2VudAAAzgcAAAQAAAAEAAAAtAQAQdj3yQALlEQvaG9tZS9ydW5uZXIvLmNhcmdv +L2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9j +cmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lkZW50aXRpZXMvZGV2aWNlLnJz2HsSAHwAAAB2 +AgAAIgAAANh7EgB8AAAAigIAACMAAABDcmVhdGluZyBhIGRldmljZSBmcm9tIG91ciBvd24gYWNj +b3VudCBzaG91bGQgYWx3YXlzIHN1Y2NlZWTYexIAfAAAALADAAAOAAAAU2lnbmluZ3B1YmxpY19r +ZXlBIGZyZXNobHkgY3JlYXRlZCBtYXN0ZXIga2V5IGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIE1h +c3RlclB1YmtleS9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1z +ZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMv +b2xtL3NpZ25pbmcvcGtfc2lnbmluZy5ycwASfRIAgQAAAGoAAAAOAAAAQSBmcmVzaGx5IHNpZ25l +ZCBtYXN0ZXIga2V5IGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIE1hc3RlclB1YmtleRJ9EgCBAAAA +cQAAAA4AAABBIG1hc3RlciBrZXkgY2FuIGFsd2F5cyBiZSBpbXBvcnRlZCBmcm9tIGEgYmFzZTY0 +IGVuY29kZWQgdmFsdWUAEn0SAIEAAACFAAAADgAAAENhbid0IHNlcmlhbGl6ZSBjcm9zcyBzaWdu +aW5nIGtleQAAABJ9EgCBAAAAlgAAADkAAABDYW4ndCBzaWduIGNyb3NzIHNpZ25pbmcga2V5cwAA +ABJ9EgCBAAAAlwAAADsAAABBIHVzZXItc2lnbmluZyBrZXkgY2FuIGFsd2F5cyBiZSBpbXBvcnRl +ZCBmcm9tIGEgYmFzZTY0IGVuY29kZWQgdmFsdWUAAAASfRIAgQAAALQAAAAOAAAAQSBzZWxmLXNp +Z25pbmcga2V5IGNhbiBhbHdheXMgYmUgaW1wb3J0ZWQgZnJvbSBhIGJhc2U2NCBlbmNvZGVkIHZh +bHVlAAAAEn0SAIEAAADxAAAADgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9t +YXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2Rr +LWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL2NhY2hlLnJzAAAAWH8SAH0AAABAAAAATAAAAEZpZWxk +U2V0IGNvcnJ1cHRlZCAodGhpcyBpcyBhIGJ1ZykAAFh/EgB9AAAASQAAABEAAABSZWNlaXZlZCBh +IG5ldyB2ZXJpZmljYXRpb24gd2hpbHN0IGFub3RoZXIgb25lIHdpdGggdGhlIHNhbWUgdXNlciBp +cyBvbmdvaW5nLiBDYW5jZWxsaW5nIGJvdGggdmVyaWZpY2F0aW9ucwAcgBIAawAAAJ4HAAAYAAAA +BAAAAIIAAACeBwAABAAAAAQAAACEAAAAngcAAAgAAAAEAAAAhgAAAFh/EgB9AAAAfgAAAA4AAABY +fxIAfQAAAIUAAAAoAAAAWH8SAH0AAACJAAAALQAAAFh/EgB9AAAAjQAAAEEAAABYfxIAfQAAAKEA +AAAJAAAAQWRkaW5nIGFuIG91dGdvaW5nIHJlcXVlc3QgABCBEgAbAAAAWH8SAH0AAACiAAAALgAA +AFh/EgB9AAAAtQAAAA0AAABTdG9yaW5nIHRoZSByZXF1ZXN0IGluZm8sIHdhaXRpbmcgZm9yIHRo +ZSByZXF1ZXN0IHRvIGJlIG1hcmtlZCBhcyBzZW50AABUgRIARgAAAJ4HAAAEAAAABAAAAM8HAABY +fxIAfQAAALsAAAA+AAAAWH8SAH0AAADfAAAANgAAAFh/EgB9AAAA0wAAADYAAABYfxIAfQAAAOUA +AABIAAAAWH8SAH0AAADmAAAADQAAAE1hcmtpbmcgYSB2ZXJpZmljYXRpb24gSFRUUCByZXF1ZXN0 +IGFzIHNlbnQABIISACsAAACeBwAABAAAAAQAAADQBwAAWH8SAH0AAADqAAAAPQAAAFVuc3VwcG9y +dGVkQWxnb3JpdGhtSW52YWxpZEtleUlkngcAAAQAAAAEAAAAuAAAAE1pc3NpbmdTaWduaW5nS2V5 +VXNlcklkTWlzbWF0Y2hOb3RBbk9iamVjdE5vU2lnbmF0dXJlRm91bmRWZXJpZmljYXRpb25FcnJv +ckludmFsaWRTaWduYXR1cmVTaWduaW5nS2V5Q2hhbmdlZNEHAAAEAAAABAAAANIHAACeBwAABAAA +AAQAAAC9AAAASnNvbkVycm9yAAAAngcAAAQAAAAEAAAAvgAAAFN0b3JlRXJyb3IAAJ4HAAAEAAAA +BAAAAL8AAABzdHJ1Y3QgUmVhZE9ubHlEZXZpY2VWZXJpZmllZEJsYWNrTGlzdGVkSWdub3JlZFVu +c2V0dmFyaWFudCBpZGVudGlmaWVyZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy9pZGVudGl0aWVzL2RldmljZS5yczo2OTltYXRyaXhfc2RrX2NyeXB0 +bzo6aWRlbnRpdGllczo6ZGV2aWNlbWVzc2FnZT2EEgAHAAAAngcAAAwAAAAEAAAAtgEAANMHAADU +BwAAAQAAALsCAAADAAAAkoMSAIYAAAAYhBIAJQAAAESEEgABAAAAYLwWAEyEEgAYhBIAJQAAANh7 +EgB8AAAAAQAAAGVuY3J5cHRyZWNpcGllbnRyZWNpcGllbnRfZGV2aWNlcmVjaXBpZW50X2tleWV2 +ZW50X3R5cGVtZXNzYWdlX2lkAAAAq4QSAAkAAAC0hBIAEAAAAMSEEgANAAAA0YQSAAoAAADbhBIA +CgAAAAEAAAASAwAAAgAAAKSEEgAHAAAAGIQSACUAAADohBIABQAAAGy8FgBMhBIAGIQSACUAAADY +exIAfAAAAAIAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL2lkZW50aXRpZXMvZGV2aWNlLnJzOjgyMgAAAQAAADYDAAAAAAAAUIUSAIYAAAAYhBIA +JQAAAESEEgABAAAAeLwWAEyEEgAYhBIAJQAAANh7EgB8AAAAAQAAAEFsZ29yaXRobQAAAJ4HAAAE +AAAABAAAABABAABEZWNvZGUAAJ4HAAAEAAAABAAAANUHAABUaGUgcHJvdmlkZWQgYWxnb3JpdGht +IGlzIG5vdCBzdXBwb3J0ZWQ6IAAAAEyGEgApAAAAVGhlIHByb3ZpZGVkIHJvb20ga2V5IGV4cG9y +dCBpcyBtaXNzaW5nIGEgY2xhaW1lZCBFZDI1NTE5IHNlbmRlciBrZXlzdHJ1Y3QgRXhwb3J0ZWRS +b29tS2V5RXhwb3J0ZWRSb29tS2V5c2VuZGVyX2NsYWltZWRfa2V5c2ZvcndhcmRpbmdfY3VydmUy +NTUxOV9rZXlfY2hhaW5zdHJ1Y3QgQmFja2VkVXBSb29tS2V5c3RydWN0IFBpY2tsZWRNYXN0ZXJT +aWduaW5nc3RydWN0IFBpY2tsZWRVc2VyU2lnbmluZ3N0cnVjdCBQaWNrbGVkU2VsZlNpZ25pbmdz +dHJ1Y3QgUGlja2xlZFNpZ25pbmdzdHVwbGUgc3RydWN0IFBpY2tsZWRTaWduaW5nT3V0Z29pbmdS +ZXF1ZXN0AACfBwAACAAAAAQAAAB7AgAAngcAAAQAAAAEAAAA1gcAAFJlcXVlc3RJbmZvZmxvd19p +ZAAA1wcAABAAAAAEAAAA2AcAAJ4HAAAEAAAABAAAAEMDAABldmVudCAvaG9tZS9ydW5uZXIvLmNh +cmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRm +Ny9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9jYWNoZS5yczo3M21h +dHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OmNhY2hlb2xkX2Zsb3dfaWRuZXdfZmxvd19p +ZAAAPYQSAAcAAAAeexIABwAAAMCIEgALAAAAy4gSAAsAAAABAAAASQAAAAMAAAAUiBIAhgAAAJqI +EgAmAAAA2IgSAAQAAACEvBYATIQSAJqIEgAmAAAAWH8SAH0AAAABAAAAZXZlbnQgL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vY2FjaGUu +cnM6MTYxAAEAAAChAAAAAAAAADiJEgCHAAAAmogSACYAAABEhBIAAQAAAJC8FgBMhBIAmogSACYA +AABYfxIAfQAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0 +cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1j +cnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9jYWNoZS5yczoxODFyZXF1ZXN0X2luZm8APYQSAAcAAACr +hBIACQAAAIeKEgAMAAAAAQAAALUAAAAAAAAAAIoSAIcAAACaiBIAJgAAAJSKEgADAAAAnLwWAEyE +EgCaiBIAJgAAAFh/EgB9AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL2NhY2hlLnJzOjIzMAA9hBIABwAAAAN0EgAK +AAAAAQAAAOYAAAAAAAAA7IoSAIcAAACaiBIAJgAAAHSLEgACAAAAqLwWAEyEEgCaiBIAJgAAAFh/ +EgB9AAAAAQAAAFRvRGV2aWNlSW5Sb29tAACfBwAACAAAAAQAAAAFAQAAngcAAAQAAAAEAAAACQQA +AAgAAAALAAAABwAAAAUAAABhgxIAaYMSAHSDEgB7gxIA3AcAAAAAAAABAAAADgAAANwHAAAAAAAA +AQAAABQAAADcBwAAAAAAAAEAAADdBwAA3AcAAAAAAAABAAAAFAAAANwHAAAAAAAAAQAAAN4HAADc +BwAAAAAAAAEAAADfBwAA3AcAAAAAAAABAAAAJQAAANwHAAAAAAAAAQAAABAAAADcBwAAAAAAAAEA +AAAUAAAA3AcAAAAAAAABAAAA4AcAANwHAAAAAAAAAQAAAOEHAADcBwAAAAAAAAEAAAAUAAAA3AcA +AAAAAAABAAAAKwAAANwHAAAAAAAAAQAAAP4FAADcBwAAAAAAAAEAAAChAQAA3AcAAAAAAAABAAAA +RgAAANwHAAAAAAAAAQAAAGEAAADcBwAAAAAAAAEAAAByAAAA3AcAAAAAAAABAAAA4AcAANwHAAAA +AAAAAQAAAOAHAADcBwAAAAAAAAEAAADiBwAA3AcAAAAAAAABAAAA4wcAANwHAAAAAAAAAQAAADoA +AADcBwAAAAAAAAEAAABaAAAA3AcAAAAAAAABAAAANQAAAEZhaWxlZCB0byBzZXJpYWxpemUgZXZl +bnQgW2NvbnRlbnRdIGVudW06IFVua25vd24gZXZlbnQgdHlwZS4KVG8gc2VuZCBjdXN0b20gZXZl +bnRzLCB0dXJuIHRoZW0gaW50byBgUmF3PEVudW1UeXBlPmAgYnkgZ29pbmcgdGhyb3VnaAogICAg +ICAgICBgc2VyZGVfanNvbjo6dmFsdWU6OnRvX3Jhd192YWx1ZWAgYW5kIGBSYXc6OmZyb21fanNv +bmAubS5kdW1teW0ucm9vbV9rZXltLnJvb21fa2V5X3JlcXVlc3RtLmZvcndhcmRlZF9yb29tX2tl +eW0ua2V5LnZlcmlmaWNhdGlvbi5yZXF1ZXN0bS5rZXkudmVyaWZpY2F0aW9uLnJlYWR5bS5rZXku +dmVyaWZpY2F0aW9uLnN0YXJ0bS5rZXkudmVyaWZpY2F0aW9uLmNhbmNlbG0ua2V5LnZlcmlmaWNh +dGlvbi5hY2NlcHRtLmtleS52ZXJpZmljYXRpb24ua2V5bS5rZXkudmVyaWZpY2F0aW9uLm1hY20u +a2V5LnZlcmlmaWNhdGlvbi5kb25lbS5yb29tLmVuY3J5cHRlZG0uc2VjcmV0LnJlcXVlc3RtLnNl +Y3JldC5zZW5k5AcAAAwAAAAEAAAA5QcAAOYHAACkAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9u +IHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQDcBwAAAAAAAAEAAADnBwAAL3J1c3RjL2Fl +ZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMv +c3RyaW5nLnJzAOyPEgBLAAAAMwoAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBtaW4gPD0gbWF4L3J1 +c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3Jl +L3NyYy9jbXAucnMAZJASAEcAAABwAwAACQAAAG92ZXJmbG93IGluIER1cmF0aW9uOjpuZXcAAAC8 +kBIAGQAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xp +YnJhcnkvY29yZS9zcmMvdGltZS5yc+CQEgBIAAAAygAAABUAAADoBwAABAAAAAQAAACqAAAAY2Fs +bGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDpBwAACAAAAAQAAACuAAAA +6gcAAAgAAAAEAAAA6wcAAOoHAAAIAAAABAAAAOsHAADsBwAACAAAAAQAAACuAAAA7QcAAAgAAAAE +AAAArgAAAO4HAAAIAAAABAAAAK4AAADqBwAACAAAAAQAAADrBwAA7wcAAAQAAAAEAAAA8AcAAEVy +cm9yTWVudGlvbnN1c2VyX2lkcwAAAPEHAAAMAAAABAAAAPIHAAByb29t7wcAAAQAAAAEAAAAhgEA +ANwHAAAAAAAAAQAAAPMHAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5 +Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9zeW5jLnJzAAAAQJISAEkAAACwBwAAKQAAAO8HAAAE +AAAABAAAAFYFAABvdmVyZmxvdyB3aGVuIGFkZGluZyBkdXJhdGlvbnMAAOCQEgBIAAAAqAMAAB8A +AABvdmVyZmxvdyB3aGVuIHN1YnRyYWN0aW5nIGR1cmF0aW9ucwDgkBIASAAAALoDAAAfAAAAL2hv +bWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmEx +NTAwMWYvZXllYmFsbC0wLjguNy9zcmMvbG9jay5ycwAQkxIAWwAAADQAAAAZAAAA7wcAAAQAAAAE +AAAAqwEAAO8HAAAEAAAABAAAAMgAAABOb25lU29tZe8HAAAEAAAABAAAAPQHAADvBwAABAAAAAQA +AAAJBAAATGF5b3V0RXJyb3JJTwAAAO8HAAAEAAAABAAAAPUHAABPdXRzaWRlVXNpemVSYW5nZQAA +AO8HAAAEAAAABAAAAPYHAABBcnJheVRvb0JpZ1Vua25vd25FbnVtVmFyaWFudE91dHNpZGVVMzJS +YW5nZU9ic2VydmFibGVTdGF0ZXZhbHVl9wcAABgAAAAEAAAA+AcAAHZlcnNpb24A+QcAAAgAAAAI +AAAA+gcAAHdha2VycwAA7wcAAAQAAAAEAAAA+wcAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0 +cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2V5ZWJhbGwtMC44Ljcvc3Jj +L3N0YXRlLnJziJQSAFwAAABkAAAAJAAAAIiUEgBcAAAAXwAAADIAAABGaWVsZFNldCBjb3JydXB0 +ZWQgKHRoaXMgaXMgYSBidWcpAACIlBIAXAAAAHwAAAANAAAATm8gd2FrZXJzAAAAOJUSAAkAAADv +BwAAGAAAAAQAAACCAAAAiJQSAFwAAAB6AAAADQAAAFdha2luZyB1cCAgd2FpdGluZyBzdWJzY3Jp +YmVycwAAbJUSAAoAAAB2lRIAFAAAAGBlYXJsaWVyYCBjYW5ub3QgYmUgbGF0ZXIgdGhhbiBgc2Vs +ZmAuL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdk +MjJiYmExNTAwMWYvaW5zdGFudC0wLjEuMTIvc3JjL3dhc20ucnMAAMKVEgBcAAAAGAAAAAkAAABD +YWxsQW5zd2VyAADvBwAABAAAAAQAAAD8BwAAQ2FsbEludml0ZQAA7wcAAAQAAAAEAAAA/QcAAENh +bGxIYW5ndXAAAO8HAAAEAAAABAAAAP4HAABDYWxsQ2FuZGlkYXRlcwAA7wcAAAQAAAAEAAAA/wcA +AENhbGxOZWdvdGlhdGUAAADvBwAABAAAAAQAAAAACAAAQ2FsbFJlamVjdAAA7wcAAAQAAAAEAAAA +AQgAAENhbGxTZWxlY3RBbnN3ZXLvBwAABAAAAAQAAAACCAAAS2V5VmVyaWZpY2F0aW9uUmVhZHnv +BwAABAAAAAQAAAADCAAAS2V5VmVyaWZpY2F0aW9uU3RhcnTvBwAABAAAAAQAAAAECAAAS2V5VmVy +aWZpY2F0aW9uQ2FuY2VsAAAA7wcAAAQAAAAEAAAABQgAAEtleVZlcmlmaWNhdGlvbkFjY2VwdAAA +AO8HAAAEAAAABAAAAAYIAABLZXlWZXJpZmljYXRpb25LZXkAAO8HAAAEAAAABAAAAAcIAABLZXlW +ZXJpZmljYXRpb25NYWMAAO8HAAAEAAAABAAAAAgIAABLZXlWZXJpZmljYXRpb25Eb25lAO8HAAAE +AAAABAAAAAkIAABSZWFjdGlvbu8HAAAEAAAABAAAAAoIAABSb29tRW5jcnlwdGVkAAAA7wcAAAQA +AAAEAAAACwgAAFJvb21NZXNzYWdlAO8HAAAEAAAABAAAAAwIAABSb29tUmVkYWN0aW9uAAAA7wcA +AAQAAAAEAAAADQgAAFN0aWNrZXIA7wcAAAQAAAAEAAAADggAAF9DdXN0b21ldmVudF90eXBlAAAA +7wcAAAQAAAAEAAAAPAMAAFJlcXVlc3RkZXZpY2Vfa2V5cwAADwgAAAgAAAAEAAAAEAgAAG9uZV90 +aW1lX2tleXMAAAARCAAADAAAAAQAAAASCAAAZmFsbGJhY2tfa2V5cwAAAO8HAAAEAAAABAAAABMI +AABDYWxsUmVqZWN0RXZlbnRDb250ZW50Y2FsbF9pZAAAABQIAAAIAAAABAAAABUIAABwYXJ0eV9p +ZO8HAAAEAAAABAAAABYIAABNYXBBY2Nlc3M6Om5leHRfdmFsdWUgY2FsbGVkIGJlZm9yZSBuZXh0 +X2tleS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3 +ZDIyYmJhMTUwMDFmL3NlcmRlLTEuMC4xOTcvc3JjL2RlL3ZhbHVlLnJzAIyZEgBfAAAAzgQAABsA +AABSb29tUmVkYWN0aW9uRXZlbnRDb250ZW50cmVkYWN0cxcIAAAIAAAABAAAABgIAAByZWFzb24A +AO8HAAAEAAAABAAAAIUBAABDYWxsU2VsZWN0QW5zd2VyRXZlbnRDb250ZW50c2VsZWN0ZWRfcGFy +dHlfaWRhdHRlbXB0ZWQgdG8gc2VyaWFsaXplIGB1bmRlZmluZWRgL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvZ3JvdXBfc2Vzc2lv +bnMucnOTmhIAiQAAADoAAAAfAAAAk5oSAIkAAABmAAAAHgAAAJOaEgCJAAAAawAAAB4AAACTmhIA +iQAAAG8AAAAsAAAAk5oSAIkAAABzAAAALAAAAJOaEgCJAAAAsQIAAA0AAABDcmVhdGVkIGJhdGNo +IG9mIHRvLWRldmljZSBtZXNzYWdlcyBvZiB0eXBlIHybEgAsAAAA7wcAAAQAAAAEAAAA7AAAAO8H +AAAEAAAABAAAABkIAABXZSBzaG91bGQgYmUgYWJsZSB0byBkZXNlcmlhbGl6ZSB0aGUgY29udGVu +dCB3ZSBnZW5lcmF0ZWQAAACTmhIAiQAAAM0CAAAWAAAAPHVuZGVmaW5lZD4vaG9tZS9ydW5uZXIv +LmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5 +ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9xcmNvZGUucnNR +clZlcmlmaWNhdGlvbmZsb3dfaWQAABoIAAAQAAAABAAAABsIAABpbm5lcgAAABwIAAAEAAAABAAA +AB0IAABzdGF0ZQAAAB4IAAAIAAAABAAAAB8IAAAnnBIAfgAAAOUBAAANAAAAQ2FuY2VsbGluZyBh +IFFSIHZlcmlmaWNhdGlvbiwgb3RoZXIgdXNlciBoYXMgY2FuY2VsbGVkAAAMnRIANgAAAO8HAAAE +AAAABAAAAIQAAADvBwAACAAAAAQAAACGAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnMAQfi7ygALAQIAQYS8ygAL +AQMAQZC8ygALsgEgaXMgcmVxdWVzdGluZyB0byB2ZXJpZnkgeW91ciBrZXksIGJ1dCB5b3VyIGNs +aWVudCBkb2VzIG5vdCBzdXBwb3J0IGluLWNoYXQga2V5IHZlcmlmaWNhdGlvbi4gWW91IHdpbGwg +bmVlZCB0byB1c2UgbGVnYWN5IGtleSB2ZXJpZmljYXRpb24gdG8gdmVyaWZ5IGtleXMuAAC8kBIA +AAAAABCeEgCaAAAAAAAAAFgCAEHQvcoAC7tcbJ0SAIAAAABjAgAAEQAAAFRpbWluZyBhIHZlcmlm +aWNhdGlvbiByZXF1ZXN0IG91dAAAAOCeEgAhAAAAbJ0SAIAAAAD0AgAADQAAAE1hcmtpbmcgYSB2 +ZXJpZmljYXRpb24gcmVxdWVzdCBhcyBkb25lAAAcnxIAJgAAAGydEgCAAAAABgMAAAkAAABDYW5j +ZWxsaW5nIGEgdmVyaWZpY2F0aW9uIHJlcXVlc3QsIG90aGVyIHVzZXIgaGFzIGNhbmNlbGxlZABc +nxIAOwAAAGydEgCAAAAAJQMAABUAAABXZSBoYXZlIGFuIG9uZ29pbmcgUVIgdmVyaWZpY2F0aW9u +LCByZXBsYWNpbmcgd2l0aCBTQVMAALCfEgA2AAAAbJ0SAIAAAACrAwAADQAAAFZlcmlmaWNhdGlv +biByZXF1ZXN0IGdvaW5nIGludG8gdGhlIGNhbmNlbGxlZCBzdGF0ZQAAoBIAMwAAACAIAAABAAAA +AQAAAJIAAABUaGUgdXNlciBjYW5jZWxsZWQgdGhlIHZlcmlmaWNhdGlvbi5UaGUgdmVyaWZpY2F0 +aW9uIHByb2Nlc3MgdGltZWQgb3V0LlRoZSBkZXZpY2UgZG9lcyBub3Qga25vdyBhYm91dCB0aGUg +Z2l2ZW4gdHJhbnNhY3Rpb24gSUQuVGhlIGRldmljZSBkb2VzIG5vdCBrbm93IGhvdyB0byBoYW5k +bGUgdGhlIHJlcXVlc3RlZCBtZXRob2QuVGhlIGRldmljZSByZWNlaXZlZCBhbiB1bmV4cGVjdGVk +IG1lc3NhZ2UuVGhlIGV4cGVjdGVkIGtleSBkaWQgbm90IG1hdGNoIHRoZSB2ZXJpZmllZCBvbmVU +aGUgZXhwZWN0ZWQgdXNlciBkaWQgbm90IG1hdGNoIHRoZSB2ZXJpZmllZCB1c2VyVGhlIHJlY2Vp +dmVkIG1lc3NhZ2Ugd2FzIGludmFsaWQuQSBtLmtleS52ZXJpZmljYXRpb24ucmVxdWVzdCB3YXMg +YWNjZXB0ZWQgYnkgYSBkaWZmZXJlbnQgZGV2aWNlLlRoZSBoYXNoIGNvbW1pdG1lbnQgZGlkIG5v +dCBtYXRjaC5UaGUgU0FTIGRpZCBub3QgbWF0Y2guVW5rbm93biBjYW5jZWwgcmVhc29uVGhlIGVu +Y3J5cHRpb24gaW5mbyBpcyBtaXNzaW5nIGEgaGFzaFRoZSBzdXBwbGllZCBrZXkgb3IgSVYgaGFz +IGFuIGludmFsaWQgbGVuZ3RoLlVua25vd24gdmVyc2lvbiBmb3IgdGhlIGVuY3J5cHRlZCBhdHRh +Y2htZW50LnN0cnVjdCBNZWRpYUVuY3J5cHRpb25JbmZvZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvZ3JvdXBfc2Vzc2lv +bnMucnM6ODltYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91cF9zZXNzaW9u +c21lc3NhZ2UAnKMSAAcAAADvBwAADAAAAAQAAAC2AQAAIQgAACIIAAABAAAAWQAAAAQAAADYohIA +kgAAAGqjEgAyAAAApKMSAAEAAAC0vBYArKMSAGqjEgAyAAAAk5oSAIkAAAABAAAAZXZlbnQgL2hv +bWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJh +M2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFn +ZXIvZ3JvdXBfc2Vzc2lvbnMucnM6MTg0cmVxdWVzdF9pZAAAAJyjEgAHAAAAl6QSAAoAAAABAAAA +uAAAAAQAAAAEpBIAkwAAAGqjEgAyAAAApKQSAAIAAADAvBYArKMSAGqjEgAyAAAAk5oSAIkAAAAB +AAAAY29sbGVjdF9zZXNzaW9uX3JlY2lwaWVudHMAAAEAAABaAQAAAgAAAPSkEgAaAAAAaqMSADIA +AAC8kBIAAAAAAMy8FgCsoxIAaqMSADIAAACTmhIAiQAAAAIAAABldmVudCAvaG9tZS9ydW5uZXIv +LmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5 +ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9ncm91cF9z +ZXNzaW9ucy5yczozNTd1c2Vyc3NldHRpbmdznKMSAAcAAADjpRIABQAAAOilEgAIAAAAAQAAAGUB +AAAAAAAAUKUSAJMAAABqoxIAMgAAAPClEgADAAAA2LwWAKyjEgBqoxIAMgAAAJOaEgCJAAAAAQAA +AGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc2Vz +c2lvbl9tYW5hZ2VyL2dyb3VwX3Nlc3Npb25zLnJzOjQ0MQABAAAAuQEAAAEAAABIphIAkwAAAGqj +EgAyAAAApKMSAAEAAADkvBYArKMSAGqjEgAyAAAAk5oSAIkAAAABAAAAZXZlbnQgL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvZ3Jv +dXBfc2Vzc2lvbnMucnM6NDU0c2hvdWxkX3JvdGF0ZXVzZXJfbGVmdHZpc2liaWxpdHlfY2hhbmdl +ZGFsZ29yaXRobV9jaGFuZ2VknKMSAAcAAACvpxIADQAAALynEgAJAAAAxacSABIAAADXpxIAEQAA +AAEAAADGAQAAAQAAABynEgCTAAAAaqMSADIAAADopxIABQAAAPC8FgCsoxIAaqMSADIAAACTmhIA +iQAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1 +c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8v +c3JjL3Nlc3Npb25fbWFuYWdlci9ncm91cF9zZXNzaW9ucy5yczo0NjIAnKMSAAcAAACvpxIADQAA +AAEAAADOAQAAAAAAAFCoEgCTAAAAaqMSADIAAADkqBIAAgAAAPy8FgCsoxIAaqMSADIAAACTmhIA +iQAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1 +c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8v +c3JjL3Nlc3Npb25fbWFuYWdlci9ncm91cF9zZXNzaW9ucy5yczo0NzdyZWNpcGllbnRfY291bnR0 +cmFuc2FjdGlvbl9pZJyjEgAHAAAAx6kSAA8AAADWqRIADgAAAAEAAADdAQAAAAAAADSpEgCTAAAA +aqMSADIAAADkqRIAAwAAAAi9FgCsoxIAaqMSADIAAACTmhIAiQAAAAEAAABldmVudCAvaG9tZS9y +dW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3 +YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9n +cm91cF9zZXNzaW9ucy5yczo1MTBvbGRfc2Vzc2lvbl9pZHNlc3Npb25faWQAnKMSAAcAAADPqhIA +DgAAAN2qEgAKAAAAAQAAAP4BAAABAAAAPKoSAJMAAABqoxIAMgAAAOiqEgADAAAAFL0WAKyjEgBq +oxIAMgAAAJOaEgCJAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0 +cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgt +c2RrLWNyeXB0by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL2dyb3VwX3Nlc3Npb25zLnJzOjU0NHJlY2lw +aWVudHNtZXNzYWdlX2luZGV4cm9vbV9pZAAAAJyjEgAHAAAA06sSAAoAAADdqxIADQAAAOqrEgAH +AAAA3aoSAAoAAAABAAAAIAIAAAIAAABAqxIAkwAAAGqjEgAyAAAA9KsSAAUAAAAgvRYArKMSAGqj +EgAyAAAAk5oSAIkAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvZ3JvdXBfc2Vzc2lvbnMucnM6Njg5bWVzc2Fn +ZV9saXN0AJyjEgAHAAAAl6QSAAoAAADvrBIADAAAAAEAAACxAgAAAgAAAFysEgCTAAAAaqMSADIA +AAD8rBIAAwAAACy9FgCsoxIAaqMSADIAAACTmhIAiQAAAAEAAABDb250ZW50U3R1Ym9yZy5tYXRy +aXgubXNnaWQAX60SABAAAABzdHJ1Y3QgQ29udGVudFN0dWJzaGFyZV9yb29tX2tleeqrEgAHAAAA +3aoSAAoAAAABAAAA8wIAAAIAAACKrRIADgAAAGqjEgAyAAAAmK0SAAIAAAA4vRYArKMSAGqjEgAy +AAAAk5oSAIkAAAACAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21h +dHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGst +Y3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvZ3JvdXBfc2Vzc2lvbnMucnM6NzYyAAEAAAD6AgAA +AAAAAOitEgCTAAAAaqMSADIAAACkoxIAAQAAAES9FgCsoxIAaqMSADIAAACTmhIAiQAAAAEAAABl +dmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFm +NDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Np +b25fbWFuYWdlci9ncm91cF9zZXNzaW9ucy5yczo4MjcAAQAAADsDAAABAAAAvK4SAJMAAABqoxIA +MgAAAKSjEgABAAAAUL0WAKyjEgBqoxIAMgAAAJOaEgCJAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5l +ci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9h +YjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL2dyb3Vw +X3Nlc3Npb25zLnJzOjg0MnNlc3Npb25fY291bnScoxIABwAAACOwEgANAAAAAQAAAEoDAAAAAAAA +kK8SAJMAAABqoxIAMgAAADCwEgACAAAAXL0WAKyjEgBqoxIAMgAAAJOaEgCJAAAAAQAAAGV2ZW50 +IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3 +ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvY3J5 +cHRvX3N0b3JlX3dyYXBwZXIucnM6MTE2bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpjcnlwdG9f +c3RvcmVfd3JhcHBlci9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvc3RvcmUvY3J5cHRvX3N0b3JlX3dyYXBwZXIucnMAAAEAAAB0AAAAAwAAAICwEgCPAAAAD7ES +AC4AAACkoxIAAQAAAGi9FgCsoxIAD7ESAC4AAAA9sRIAhQAAAAEAAABldmVudCAvaG9tZS9ydW5u +ZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIv +YWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL2NyeXB0b19zdG9yZV93 +cmFwcGVyLnJzOjEzNQABAAAAhwAAAAMAAAAEshIAjwAAAA+xEgAuAAAApKMSAAEAAAB0vRYArKMS +AA+xEgAuAAAAPbESAIUAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy9zdG9yZS9jcnlwdG9fc3RvcmVfd3JhcHBlci5yczoxNTcAAQAAAJ0A +AAADAAAA1LISAI8AAAAPsRIALgAAAKSjEgABAAAAgL0WAKyjEgAPsRIALgAAAD2xEgCFAAAAAQAA +AFRoZSBrZXlzIHRoYXQgYXJlIGJlaW5nIHZlcmlmaWVkIGRpZG4ndCBtYXRjaCAoZXhwZWN0ZWQg +LCBmb3VuZCApAAAApLMSADgAAADcsxIACAAAAOSzEgABAAAAVGhlIHVzZXIgIGlzIG1pc3Npbmcg +YSB2YWxpZCBjcm9zcyBzaWduaW5nIGlkZW50aXR5AAC0EgAJAAAACbQSACoAAABUaGUgdXNlcidz +ICBkZXZpY2UgIGlzIG5vdCBFMkUgY2FwYWJsZQAARLQSAAsAAABPtBIACAAAAFe0EgATAAAAVGhl +IHVuaXF1ZSB2ZXJpZmljYXRpb24gZmxvdyBpZCBkaWQgbm90IG1hdGNoIChleHBlY3RlZCCEtBIA +OAAAANyzEgAIAAAA5LMSAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291 +dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4 +LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9xcmNvZGUucnM6NDg1bWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6cXJjb2Rlc2VuZGVyY29kZQAAAJyjEgAHAAAAg7USAAYAAACJtRIA +BAAAAAEAAADlAQAAAAAAANS0EgCIAAAAXLUSACcAAACQtRIAAwAAAIy9FgCsoxIAXLUSACcAAAAn +nBIAfgAAAAEAAABDcmVhdGVkAO8HAAAEAAAABAAAACMIAABTY2FubmVkAO8HAAAEAAAABAAAACQI +AABDb25maXJtZWQAAADvBwAABAAAAAQAAAAlCAAAUmVjaXByb2NhdGVk7wcAAAQAAAAEAAAAJggA +AERvbmXvBwAABAAAAAQAAAAnCAAAQ2FuY2VsbGVkAAAA7wcAAAQAAAAEAAAAKAgAAFFyU3RhdGUA +7wcAAAQAAAAEAAAAKQgAAO8HAAAEAAAABAAAACoIAADvBwAABAAAAAQAAAArCAAA7wcAAAQAAAAE +AAAALAgAAO8HAAAEAAAABAAAAC0IAADvBwAABAAAAAQAAAAuCAAAc2VjcmV0AADvBwAABAAAAAQA +AABAAwAAb3duX2RldmljZV9pZAAAABQIAAAIAAAABAAAAEQDAABldmVudCAvaG9tZS9ydW5uZXIv +LmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5 +ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9yZXF1ZXN0cy5y +czo0NTJtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0c3VzZXJfaWQAAJyj +EgAHAAAA07cSAAcAAACznBIABwAAAAEAAADEAQAAAQAAACC3EgCKAAAAqrcSACkAAADctxIAAwAA +AJi9FgCsoxIAqrcSACkAAABsnRIAgAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9yZXF1ZXN0cy5yczo0NTkAAAEA +AADLAQAAAQAAADS4EgCKAAAAqrcSACkAAADctxIAAwAAAKS9FgCsoxIAqrcSACkAAABsnRIAgAAA +AAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qt +c2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3Jj +L3ZlcmlmaWNhdGlvbi9yZXF1ZXN0cy5yczo2MTFvdGhlcl91c2VynKMSAAcAAACKuRIACgAAALOc +EgAHAAAAAQAAAGMCAAAAAAAAALkSAIoAAACqtxIAKQAAAJS5EgADAAAAsL0WAKyjEgCqtxIAKQAA +AGydEgCAAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRy +aXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNy +eXB0by9zcmMvdmVyaWZpY2F0aW9uL3JlcXVlc3RzLnJzOjcxMmRldmljZV9pZACcoxIABwAAAIO1 +EgAGAAAAdroSAAkAAAABAAAAyAIAAAMAAADsuRIAigAAAKq3EgApAAAAgLoSAAMAAAC8vRYArKMS +AKq3EgApAAAAbJ0SAIAAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnM6NzU2AAABAAAA9AIAAAAA +AADYuhIAigAAAKq3EgApAAAAlLkSAAMAAADIvRYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAZXZl +bnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmlj +YXRpb24vcmVxdWVzdHMucnM6Nzc0AAABAAAABgMAAAAAAACkuxIAigAAAKq3EgApAAAAkLUSAAMA +AADUvRYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnM6ODA1AAAB +AAAAJQMAAAEAAABwvBIAigAAAKq3EgApAAAA3LcSAAMAAADgvRYArKMSAKq3EgApAAAAbJ0SAIAA +AAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnM6OTM5Y2FuY2VsbGVkX2J5X3VzAAAAnKMSAAcAAADG +vRIADwAAAIm1EgAEAAAAAQAAAKsDAAAAAAAAPL0SAIoAAACqtxIAKQAAANi9EgADAAAA7L0WAKyj +EgCqtxIAKQAAAGydEgCAAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL3JlcXVlc3RzLnJzOjEyMTUAnKMSAAcAAADT +txIABwAAAHa6EgAJAAAAAQAAAL8EAAADAAAAML4SAIsAAACqtxIAKQAAALy+EgADAAAA+L0WAKyj +EgCqtxIAKQAAAGydEgCAAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL3JlcXVlc3RzLnJzOjEyNDEAAQAAANkEAAAD +AAAAFL8SAIsAAACqtxIAKQAAALy+EgADAAAABL4WAKyjEgCqtxIAKQAAAGydEgCAAAAAAQAAAGV2 +ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZp +Y2F0aW9uL3JlcXVlc3RzLnJzOjEyNjAAAQAAAOwEAAADAAAA4L8SAIsAAACqtxIAKQAAALy+EgAD +AAAAEL4WAKyjEgCqtxIAKQAAAGydEgCAAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28v +Z2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2Ny +YXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL3JlcXVlc3RzLnJzOjEyODkA +AQAAAAkFAAADAAAArMASAIsAAACqtxIAKQAAALy+EgADAAAAHL4WAKyjEgCqtxIAKQAAAGydEgCA +AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvdmVyaWZpY2F0aW9uL3JlcXVlc3RzLnJzOjEyOTgAAQAAABIFAAADAAAAeMESAIsAAACqtxIA +KQAAALy+EgADAAAAKL4WAKyjEgCqtxIAKQAAAGydEgCAAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5l +ci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9h +YjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL3JlcXVlc3Rz +LnJzOjEzMDkAAQAAAB0FAAADAAAARMISAIsAAACqtxIAKQAAALy+EgADAAAANL4WAKyjEgCqtxIA +KQAAAGydEgCAAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9t +YXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2Rr +LWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL3JlcXVlc3RzLnJzOjEzNDdkZXZpY2UAAACcoxIABwAA +AIO1EgAGAAAAm8MSAAYAAAABAAAAQwUAAAIAAAAQwxIAiwAAAKq3EgApAAAApMMSAAMAAABAvhYA +rKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnM6MTM1NAABAAAASgUA +AAMAAAD8wxIAiwAAAKq3EgApAAAApMMSAAMAAABMvhYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAA +ZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0x +ZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJp +ZmljYXRpb24vcmVxdWVzdHMucnM6MTM5MAABAAAAbgUAAAIAAADIxBIAiwAAAKq3EgApAAAApKMS +AAEAAABYvhYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnM6MTM5 +NAABAAAAcgUAAAIAAACUxRIAiwAAAKq3EgApAAAApKMSAAEAAABkvhYArKMSAKq3EgApAAAAbJ0S +AIAAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1y +dXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRv +L3NyYy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnM6MTQwNAABAAAAfAUAAAIAAABgxhIAiwAAAKq3 +EgApAAAApKMSAAEAAABwvhYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAZXZlbnQgL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcmVxdWVz +dHMucnM6MTQxMnFyX3N0YXRlAJyjEgAHAAAAt8cSAAgAAAABAAAAhAUAAAMAAAAsxxIAiwAAAKq3 +EgApAAAAwMcSAAIAAAB8vhYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAZXZlbnQgL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcmVxdWVz +dHMucnM6MTQxOAABAAAAigUAAAIAAAAQyBIAiwAAAKq3EgApAAAApKMSAAEAAACIvhYArKMSAKq3 +EgApAAAAbJ0SAIAAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vcmVxdWVzdHMucnM6MTQyNWNvbnRlbnQAAJyjEgAH +AAAA07cSAAcAAAB2uhIACQAAAGfJEgAHAAAAAQAAAJEFAAADAAAA3MgSAIsAAACqtxIAKQAAAHDJ +EgAEAAAAlL4WAKyjEgCqtxIAKQAAAGydEgCAAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL3JlcXVlc3RzLnJzOjE0 +NTB2ZXJpZmljYXRpb24AnKMSAAcAAACDtRIABgAAAHa6EgAJAAAAW8oSAAwAAAABAAAAqgUAAAAA +AADQyRIAiwAAAKq3EgApAAAAaMoSAAQAAACgvhYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAZXZl +bnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmlj +YXRpb24vcmVxdWVzdHMucnM6MTQ2M21ldGhvZAAAAJyjEgAHAAAAU8sSAAYAAAABAAAAtwUAAAMA +AADIyhIAiwAAAKq3EgApAAAAXMsSAAIAAACsvhYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAZXZl +bnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmlj +YXRpb24vcmVxdWVzdHMucnM6MTQ4NQABAAAAzQUAAAMAAACsyxIAiwAAAKq3EgApAAAAvL4SAAMA +AAC4vhYArKMSAKq3EgApAAAAbJ0SAIAAAAABAAAAVG9EZXZpY2XvBwAABAAAAAQAAABDAwAASW5S +b29tAAAUCAAACAAAAAQAAAAFAQAAJAAAACMAAAA4AAAAPAAAACoAAAAvAAAAMQAAACEAAABAAAAA +IgAAABYAAABMoBIAcKASAJOgEgDLoBIAB6ESADGhEgBgoRIAkaESALKhEgDyoRIAFKISAP////// +////AM0SAEGYmssAC7GnASgpAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJg +IHZhbHVlAC8IAAAIAAAABAAAAK4AAAAvCAAACAAAAAQAAACuAAAAMAgAAAgAAAAEAAAArgAAADEI +AAAIAAAABAAAAK4AAAAvCAAACAAAAAQAAACuAAAAMggAAAgAAAAEAAAArgAAADMIAAAIAAAABAAA +AK4AAAA0CAAACAAAAAQAAACuAAAANQgAAAgAAAAEAAAArgAAAC8IAAAIAAAABAAAAK4AAAAvCAAA +CAAAAAQAAACuAAAALwgAAAgAAAAEAAAArgAAADYIAAAIAAAABAAAAK4AAAA3CAAACAAAAAQAAACu +AAAAQXJjIGNvdW50ZXIgb3ZlcmZsb3cozhIAFAAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMy +YjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL3N5bmMucnMAAABEzhIASQAA +AC4GAAANAAAARM4SAEkAAADcCgAADQAAADgIAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5 +L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9leWViYWxsLTAuOC43L3NyYy9z +aGFyZWQucnMAAAC0zhIAXQAAAGAAAABQAAAAtM4SAF0AAAB4AAAANgAAALTOEgBdAAAAPQAAACkA +AABWZXJpZmljYXRpb245CAAABAAAAAQAAAA6CAAAU2VsZlZlcmlmaWNhdGlvbjkIAAAEAAAABAAA +ADsIAABTZWxmVmVyaWZpY2F0aW9uTm9NYXN0ZXJLZXkAOQgAAAQAAAAEAAAAPAgAAFNoYXJlZE9i +c2VydmFibGVzdGF0ZQAAAD0IAAAEAAAABAAAAD4IAABfbnVtX2Nsb25lcwA/CAAABAAAAAQAAABA +CAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBp +bmcvbWFjaGluZS5yc/DPEgB8AAAA1gAAADYAAABGaWVsZFNldCBjb3JydXB0ZWQgKHRoaXMgaXMg +YSBidWcpAADwzxIAfAAAANMAAAANAAAAUmVjZWl2ZWQgYSBzZWNyZXQgcmVxdWVzdCBldmVudCBm +cm9tIG91cnNlbHZlcywgaWdub3Jpbmew0BIAOAAAADkIAAAYAAAABAAAAIIAAADwzxIAfAAAAP8A +AAAOAAAA8M8SAHwAAAAUAQAANAAAAPDPEgB8AAAAHQEAAFIAAADwzxIAfAAAANsCAAANAAAAQ3Jl +YXRpbmcgbmV3IG91dGdvaW5nIHNlY3JldCByZXF1ZXN0cwAAAEDREgAlAAAAOQgAAAQAAAAEAAAA +QQgAAPDPEgB8AAAA4gIAAA0AAABObyBzZWNyZXRzIGFyZSBtaXNzaW5nIGZyb20gb3VyIHN0b3Jl +LCBub3QgcmVxdWVzdGluZyB0aGVtAACQ0RIAOgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2No +ZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9t +YXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvY2FjaGVzLnJzANTREgB3AAAATAAAAB0AAADU0RIA +dwAAAFEAAAAeAAAA1NESAHcAAABoAAAADgAAANTREgB3AAAAcQAAAB0AAADU0RIAdwAAAHYAAAAd +AAAA1NESAHcAAACAAAAAHQAAANTREgB3AAAAlwAAAA4AAADU0RIAdwAAAKAAAAAiAAAA1NESAHcA +AACoAAAAHgAAANTREgB3AAAArwAAAA4AAADU0RIAdwAAAA0BAAAJAAAARmxhZ2dpbmcgdXNlciBm +b3Iga2V5IHF1ZXJ5APzSEgAbAAAAOQgAAAQAAAAEAAAAhAAAADkIAAAEAAAABAAAAEIIAADU0RIA +dwAAAGsBAAANAAAAUmVnaXN0ZXJpbmcgbmV3IHdhaXRpbmcgdGFza1DTEgAcAAAAZXZlbnQgL2hv +bWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJh +M2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFj +aGluZS5yczoyMTFtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lbWVzc2FnZQAA +H9QSAAcAAAA5CAAADAAAAAQAAAC2AQAAQwgAAEQIAAABAAAA0wAAAAAAAAB00xIAhgAAAPrTEgAl +AAAAKNQSAAEAAADEvhYAMNQSAPrTEgAlAAAA8M8SAHwAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVy +Ly5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2Fi +OWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFjaGluZS5yczoz +MDFhY3Rpb24f1BIABwAAAA7VEgAGAAAAAQAAAC0BAAADAAAAiNQSAIYAAAD60xIAJQAAABTVEgAC +AAAA0L4WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28v +Z2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2Ny +YXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21hY2hpbmUucnM6MzA5c2VjcmV0 +X25hbWUAAAAf1BIABwAAAOrVEgALAAAAAQAAADUBAAACAAAAZNUSAIYAAAD60xIAJQAAAPjVEgAC +AAAA3L4WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28v +Z2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2Ny +YXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21hY2hpbmUucnM6MzE5dXNlcl9p +ZGRldmljZV9pZAAAH9QSAAcAAADO1hIABwAAANXWEgAJAAAA6tUSAAsAAAABAAAAPwEAAAIAAABI +1hIAhgAAAPrTEgAlAAAA4NYSAAQAAADovhYAMNQSAPrTEgAlAAAA8M8SAHwAAAABAAAAZXZlbnQg +L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5Mjdm +ODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcv +bWFjaGluZS5yczozMjkAAAEAAABJAQAAAgAAAEDXEgCGAAAA+tMSACUAAADg1hIABAAAAPS+FgAw +1BIA+tMSACUAAADwzxIAfAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1jcnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzOjM0MwAAAQAAAFcBAAACAAAA +CNgSAIYAAAD60xIAJQAAAODWEgAEAAAAAL8WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50 +IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3 +ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5n +L21hY2hpbmUucnM6MzUzAAABAAAAYQEAAAIAAADQ2BIAhgAAAPrTEgAlAAAA4NYSAAQAAAAMvxYA +MNQSAPrTEgAlAAAA8M8SAHwAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFjaGluZS5yczozNjMAAAEAAABrAQAAAwAA +AJjZEgCGAAAA+tMSACUAAADg1hIABAAAABi/FgAw1BIA+tMSACUAAADwzxIAfAAAAAEAAABldmVu +dCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDky +N2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2dvc3NpcGlu +Zy9tYWNoaW5lLnJzOjM5Nm1lc3NhZ2VfaW5kZXgAH9QSAAcAAADm2hIADQAAAAEAAACMAQAAAgAA +AGDaEgCGAAAA+tMSACUAAAD02hIAAgAAACS/FgAw1BIA+tMSACUAAADwzxIAfAAAAAEAAABldmVu +dCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDky +N2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2dvc3NpcGlu +Zy9tYWNoaW5lLnJzOjQwMQAAAQAAAJEBAAACAAAARNsSAIYAAAD60xIAJQAAACjUEgABAAAAML8W +ADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2No +ZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9t +YXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21hY2hpbmUucnM6NDA5AAABAAAAmQEAAAMA +AAAM3BIAhgAAAPrTEgAlAAAAKNQSAAEAAAA8vxYAMNQSAPrTEgAlAAAA8M8SAHwAAAABAAAAZXZl +bnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBp +bmcvbWFjaGluZS5yczo0MzQAAAEAAACyAQAAAwAAANTcEgCGAAAA+tMSACUAAAAo1BIAAQAAAEi/ +FgAw1BIA+tMSACUAAADwzxIAfAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9j +aGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMv +bWF0cml4LXNkay1jcnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzOjQ1MQAAAQAAAMMBAAAD +AAAAnN0SAIYAAAD60xIAJQAAACjUEgABAAAAVL8WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2 +ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lw +aW5nL21hY2hpbmUucnM6NDU2cmVhc29uH9QSAAcAAADq3hIABgAAAAEAAADIAQAAAQAAAGTeEgCG +AAAA+tMSACUAAADw3hIAAgAAAGC/FgAw1BIA+tMSACUAAADwzxIAfAAAAAEAAABoYW5kbGVfc3Vw +cG9ydGVkX2tleV9yZXF1ZXN0cm9vbV9pZHNlc3Npb25faWQAAADO1hIABwAAANXWEgAJAAAAXN8S +AAcAAABj3xIACgAAAAEAAADUAQAAAgAAAEDfEgAcAAAA+tMSACUAAABw3xIABAAAAGy/FgAw1BIA ++tMSACUAAADwzxIAfAAAAAIAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291 +dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4 +LXNkay1jcnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzOjQ4OQAAAQAAAOkBAAABAAAA0N8S +AIYAAAD60xIAJQAAACjUEgABAAAAeL8WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50IC9o +b21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3Zjgy +YTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21h +Y2hpbmUucnM6NTE2c2VuZGVyYWxnb3JpdGhtAAAAH9QSAAcAAAAe4RIABgAAACThEgAJAAAAAQAA +AAQCAAABAAAAmOASAIYAAAD60xIAJQAAADDhEgADAAAAhL8WADDUEgD60xIAJQAAAPDPEgB8AAAA +AQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1z +ZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMv +Z29zc2lwaW5nL21hY2hpbmUucnM6NTI4AAAf1BIABwAAAB7hEgAGAAAAAQAAABACAAABAAAAiOES +AIYAAAD60xIAJQAAABDiEgACAAAAkL8WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50IC9o +b21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3Zjgy +YTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21h +Y2hpbmUucnM6NzMxc2VjcmV0X25hbWVzAAAf1BIABwAAAObiEgAMAAAAAQAAANsCAAACAAAAYOIS +AIYAAAD60xIAJQAAAPTiEgACAAAAnL8WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50IC9o +b21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3Zjgy +YTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21h +Y2hpbmUucnM6NzM4AAABAAAA4gIAAAAAAABE4xIAhgAAAPrTEgAlAAAAKNQSAAEAAACovxYAMNQS +APrTEgAlAAAA8M8SAHwAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFjaGluZS5yczo4MTNyZWNpcGllbnRyZXF1ZXN0 +X3R5cGVyZXF1ZXN0X2lkAAAAH9QSAAcAAACS5BIACQAAAJvkEgAMAAAAp+QSAAoAAAABAAAALQMA +AAAAAAAM5BIAhgAAAPrTEgAlAAAAtOQSAAQAAAC0vxYAMNQSAPrTEgAlAAAA8M8SAHwAAAABAAAA +ZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0x +ZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3Nz +aXBpbmcvbWFjaGluZS5yczo4MzIAAAEAAABAAwAAAAAAABTlEgCGAAAA+tMSACUAAAC05BIABAAA +AMC/FgAw1BIA+tMSACUAAADwzxIAfAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzOjg2M2Vycm9yAB/U +EgAHAAAA6tUSAAsAAABi5hIABQAAAAEAAABfAwAAAwAAANzlEgCGAAAA+tMSACUAAABo5hIAAwAA +AMy/FgAw1BIA+tMSACUAAADwzxIAfAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzOjg3NwAAAQAAAG0D +AAACAAAAwOYSAIYAAAD60xIAJQAAACjUEgABAAAA2L8WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAA +AGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29z +c2lwaW5nL21hY2hpbmUucnM6ODkxAAABAAAAewMAAAEAAACI5xIAhgAAAPrTEgAlAAAAKNQSAAEA +AADkvxYAMNQSAPrTEgAlAAAA8M8SAHwAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFjaGluZS5yczo5MDAAAAEAAACE +AwAAAwAAAFDoEgCGAAAA+tMSACUAAAAo1BIAAQAAAPC/FgAw1BIA+tMSACUAAADwzxIAfAAAAAEA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2dv +c3NpcGluZy9tYWNoaW5lLnJzOjkwMwAAAQAAAIcDAAADAAAAGOkSAIYAAAD60xIAJQAAACjUEgAB +AAAA/L8WADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAHJlY2VpdmVfc2VjcmV0X2V2ZW50c2VuZGVy +X2tleQAA9OkSAAoAAAAe4RIABgAAAKfkEgAKAAAA6tUSAAsAAAABAAAAlAMAAAIAAADg6RIAFAAA +APrTEgAlAAAAAOoSAAQAAAAIwBYAMNQSAPrTEgAlAAAA8M8SAHwAAAACAAAAZXZlbnQgL2hvbWUv +cnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2Qy +N2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFjaGlu +ZS5yczo5MjQAAAEAAACcAwAAAQAAAGDqEgCGAAAA+tMSACUAAAAo1BIAAQAAABTAFgAw1BIA+tMS +ACUAAADwzxIAfAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +bWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNk +ay1jcnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzOjkzMwAAAQAAAKUDAAADAAAAKOsSAIYA +AAD60xIAJQAAACjUEgABAAAAIMAWADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50IC9ob21l +L3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNk +MjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21hY2hp +bmUucnM6OTU0AAABAAAAugMAAAMAAADw6xIAhgAAAPrTEgAlAAAAKNQSAAEAAAAswBYAMNQSAPrT +EgAlAAAA8M8SAHwAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFjaGluZS5yczo5NzRjbGFpbWVkX3NlbmRlcl9rZXkf +1BIABwAAAPTpEgAKAAAAPu0SABIAAABc3xIABwAAAGPfEgAKAAAAJOESAAkAAAABAAAAzgMAAAIA +AAC47BIAhgAAAPrTEgAlAAAAUO0SAAYAAAA4wBYAMNQSAPrTEgAlAAAA8M8SAHwAAAABAAAAZXZl +bnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBp +bmcvbWFjaGluZS5yczo5ODUAAAEAAADZAwAAAgAAAMDtEgCGAAAA+tMSACUAAABQ7RIABgAAAETA +FgAw1BIA+tMSACUAAADwzxIAfAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9j +aGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMv +bWF0cml4LXNkay1jcnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzOjk5OAAAH9QSAAcAAAD0 +6RIACgAAAAEAAADmAwAAAwAAAIjuEgCGAAAA+tMSACUAAAAQ7xIAAgAAAFDAFgAw1BIA+tMSACUA +AADwzxIAfAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0 +cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1j +cnlwdG8vc3JjL2dvc3NpcGluZy9tYWNoaW5lLnJzOjEwMjcAH9QSAAcAAAD06RIACgAAACThEgAJ +AAAAAQAAAAMEAAADAAAAYO8SAIcAAAD60xIAJQAAAOjvEgADAAAAXMAWADDUEgD60xIAJQAAAPDP +EgB8AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgt +cnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0 +by9zcmMvZ29zc2lwaW5nL21hY2hpbmUucnM6MTAzOAAf1BIABwAAAPTpEgAKAAAAXN8SAAcAAABj +3xIACgAAAPTpEgAKAAAAJOESAAkAAAABAAAADgQAAAMAAABA8BIAhwAAAPrTEgAlAAAAyPASAAYA +AABowBYAMNQSAPrTEgAlAAAA8M8SAHwAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9nb3NzaXBpbmcvbWFjaGluZS5yczoxMDUyAB/UEgAH +AAAA9OkSAAoAAABc3xIABwAAAGPfEgAKAAAAAQAAABwEAAADAAAAOPESAIcAAAD60xIAJQAAAMDx +EgAEAAAAdMAWADDUEgD60xIAJQAAAPDPEgB8AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvZ29zc2lwaW5nL21hY2hpbmUucnM6MTA3OQAf +1BIABwAAAB7hEgAGAAAA9OkSAAoAAAAk4RIACQAAAAEAAAA3BAAAAwAAACDyEgCHAAAA+tMSACUA +AACo8hIABAAAAIDAFgAw1BIA+tMSACUAAADwzxIAfAAAAAEAAABLZXlzVXBsb2FkAAA5CAAABAAA +AAQAAABFCAAAS2V5c1F1ZXJ5AAAAOQgAAAQAAAAEAAAARggAAEtleXNDbGFpbQAAADkIAAAEAAAA +BAAAAEcIAABUb0RldmljZVJlcXVlc3QAOQgAAAQAAAAEAAAASAgAAFNpZ25hdHVyZVVwbG9hZAA5 +CAAABAAAAAQAAABJCAAAUm9vbU1lc3NhZ2UAOQgAAAQAAAAEAAAASggAAFNlcXVlbmNlTnVtYmVy +AAA5CAAABAAAAAQAAABLCAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy9zdG9yZS9jYWNoZXMucnM6MjY5bWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +OjpjYWNoZXN1c2Vyc2VxdWVuY2VfbnVtYmVyH9QSAAcAAAB59BIABAAAAH30EgAPAAAAAQAAAA0B +AAAAAAAA2PMSAIEAAABZ9BIAIAAAAIz0EgADAAAAjMAWADDUEgBZ9BIAIAAAANTREgB3AAAAAQAA +ANTREgB3AAAAGgEAAAUAAAA5CAAABAAAAAQAAABMCAAATQgAAAAAAAABAAAATggAAGludmFsaWRh +dGlvbl9zZXF1ZW5jZQAAANTREgB3AAAATgEAABEAAABVc2VyIG5vdyB1cC10by1kYXRlADz1EgAT +AAAA1NESAHcAAABLAQAAEQAAAFVzZXIgaW52YWxpZGF0ZWQgc2luY2UgdGhpcyBxdWVyeSBzdGFy +dGVkOiBzdGlsbCBub3QgdXAtdG8tZGF0ZQBo9RIAPwAAANTREgB3AAAAUwEAAA0AAABVc2VyIGFs +cmVhZHkgdXAtdG8tZGF0ZSwgbm90aGluZyB0byBkbwAAwPUSACYAAABtYXliZV9yZW1vdmVfdXNl +cnF1ZXJ5X3NlcXVlbmNlAHn0EgAEAAAAAfYSAA4AAAAU9RIAFQAAAAEAAAAaAQAAAAAAAPD1EgAR +AAAAWfQSACAAAAAQ9hIAAwAAAJjAFgAw1BIAWfQSACAAAADU0RIAdwAAAAIAAABldmVudCAvaG9t +ZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEz +ZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL2NhY2hlcy5y +czoyOTgAAAABAAAAKgEAAAAAAABo9hIAgQAAAFn0EgAgAAAAKNQSAAEAAADswBYAMNQSAFn0EgAg +AAAA1NESAHcAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21h +dHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGst +Y3J5cHRvL3NyYy9zdG9yZS9jYWNoZXMucnM6MzA0d2FpdGVyX3NlcXVlbmNlH9QSAAcAAAB59BIA +BAAAAAH2EgAOAAAArfcSAA8AAAABAAAAMAEAAAAAAAAs9xIAgQAAAFn0EgAgAAAAvPcSAAQAAADg +wBYAMNQSAFn0EgAgAAAA1NESAHcAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQv +Y2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVz +L21hdHJpeC1zZGstY3J5cHRvL3NyYy9zdG9yZS9jYWNoZXMucnM6MzE1d2FpdGVyX3VzZXIf1BIA +BwAAAHn0EgAEAAAAAfYSAA4AAACd+BIACwAAAK33EgAPAAAAAQAAADsBAAAAAAAAHPgSAIEAAABZ +9BIAIAAAAKj4EgAFAAAA1MAWADDUEgBZ9BIAIAAAANTREgB3AAAAAQAAAGV2ZW50IC9ob21lL3J1 +bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdi +Yi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvY2FjaGVzLnJzOjMz +MQAAAAEAAABLAQAAAAAAABD5EgCBAAAAWfQSACAAAAAo1BIAAQAAAKTAFgAw1BIAWfQSACAAAADU +0RIAdwAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL3N0b3JlL2NhY2hlcy5yczozMzQAAAABAAAATgEAAAAAAADU+RIAgQAAAFn0EgAgAAAA +KNQSAAEAAACwwBYAMNQSAFn0EgAgAAAA1NESAHcAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5j +YXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0 +ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zdG9yZS9jYWNoZXMucnM6MzM5AAAAAQAA +AFMBAAAAAAAAmPoSAIEAAABZ9BIAIAAAACjUEgABAAAAvMAWADDUEgBZ9BIAIAAAANTREgB3AAAA +AQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1z +ZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMv +c3RvcmUvY2FjaGVzLnJzOjM2MwAAAAEAAABrAQAAAAAAAFz7EgCBAAAAWfQSACAAAACM9BIAAwAA +AMjAFgAw1BIAWfQSACAAAADU0RIAdwAAAAEAAABDcm9zc1NpZ25pbmdLZXkATwgAAAgAAAAEAAAA +BQEAAHVzYWdlAAAAUAgAAAwAAAAEAAAAUQgAAGtleXNSCAAADAAAAAQAAABTCAAAc2lnbmF0dXJl +cwAAVAgAAAwAAAAEAAAAVQgAAG90aGVyAAAAOQgAAAQAAAAEAAAAeQMAAFNpZ25hdHVyZXMAADkI +AAAEAAAABAAAAJ4EAABTaWduaW5nS2V5cwA5CAAABAAAAAQAAABWCAAAS2V5VmVyaWZpY2F0aW9u +U3RhcnRFdmVudENvbnRlbnRmcm9tX2RldmljZQBZCAAACAAAAAQAAABEAwAAbWV0aG9kAABaCAAA +MAAAAAQAAABbCAAAcmVsYXRlc190bwAAXAgAAAQAAAAEAAAAfQcAAH17ZmV3ZXIgZWxlbWVudHMg +aW4gYXJyYXkAAABK/RIAFwAAAFwIAAAIAAAABAAAAAQAAABmZXdlciBlbGVtZW50cyBpbiBtYXAA +AAB8/RIAFQAAAFRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnR0cmFuc2Fj +dGlvbl9pZAAAWQgAAAgAAAAEAAAAewIAAFwIAAAEAAAABAAAAF0IAABkYXRhIGRpZCBub3QgbWF0 +Y2ggYW55IHZhcmlhbnQgb2YgdW50YWdnZWQgZW51bSBTdGFydE1ldGhvZG0uc2FzLnYxa2V5X2Fn +cmVlbWVudF9wcm90b2NvbHNoYXNoZXNtZXNzYWdlX2F1dGhlbnRpY2F0aW9uX2NvZGVzc2hvcnRf +YXV0aGVudGljYXRpb25fc3RyaW5nADf+EgAXAAAATv4SAAYAAABU/hIAHAAAAHD+EgAbAAAAbS5y +ZWNpcHJvY2F0ZS52MXNlY3JldAAAvP4SAAYAAABtLnJlbGF0ZXNfdG90eXBlYm9keXN0cnVjdCBN +ZXNzYWdlU2VyZGVIZWxwZXIgd2l0aCAyIGVsZW1lbnRzAAAA4P4SACkAAABrZXlzdHJ1Y3QgVG9E +ZXZpY2VLZXlWZXJpZmljYXRpb25LZXlFdmVudENvbnRlbnQgd2l0aCAyIGVsZW1lbnRzF/8SAD0A +AABtYWNrZXlzc3RydWN0IFRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uTWFjRXZlbnRDb250ZW50IHdp +dGggMyBlbGVtZW50c2P/EgA9AAAAc3RydWN0IFRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uRG9uZUV2 +ZW50Q29udGVudCB3aXRoIDEgZWxlbWVudAAAAKj/EgA9AAAAbWV0aG9kc3N0cnVjdCBUb0Rldmlj +ZUtleVZlcmlmaWNhdGlvblJlYWR5RXZlbnRDb250ZW50IHdpdGggMyBlbGVtZW50cwAA9/8SAD8A +AAByZWFzb25jb2Rlc3RydWN0IFRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uQ2FuY2VsRXZlbnRDb250 +ZW50IHdpdGggMyBlbGVtZW50cwAASgATAEAAAAB0aW1lc3RhbXBzdHJ1Y3QgVG9EZXZpY2VLZXlW +ZXJpZmljYXRpb25SZXF1ZXN0RXZlbnRDb250ZW50IHdpdGggNCBlbGVtZW50cwAAnQATAEEAAABe +CAAADAAAAAQAAABfCAAAYAgAAKQAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQg +YW4gZXJyb3IgdW5leHBlY3RlZGx5AGEIAAAAAAAAAQAAAGIIAAAvcnVzdGMvYWVkZDE3M2EyYzA4 +NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMA +SAETAEsAAAAzCgAADgAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3 +NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvZXhhY3Rfc2l6ZS5ycwAApAETAFoA +AAB6AAAACQAAAGMIAAAEAAAABAAAAKoAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFu +IGBFcnJgIHZhbHVlAGQIAAAIAAAABAAAAK4AAABFcnJvcgAAAFwIAAAEAAAABAAAAMoAAABOb25l +U29tZVwIAAAEAAAABAAAAAkBAABcCAAABAAAAAQAAABwAQAAUmF3Ojo8PgCcAhMABgAAAKICEwAB +AAAAanNvbmUIAAAIAAAABAAAAGYIAAAkc2VyZGVfanNvbjo6cHJpdmF0ZTo6UmF3VmFsdWV2YWx1 +ZSBpcyBtaXNzaW5naW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZS9ob21l +L3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUw +MDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvc2VyLnJzAAAAHgMTAF8AAACiAgAAKgAAAFNhc1Yx +AAAAXAgAAAQAAAAEAAAAZwgAAFJlY2lwcm9jYXRlVjEAAABcCAAABAAAAAQAAABoCAAAX0N1c3Rv +bQBcCAAABAAAAAQAAABpCAAAU2FzVjFDb250ZW50aggAAAwAAAAEAAAAawgAAGwIAAAMAAAABAAA +AG0IAABuCAAADAAAAAQAAABvCAAAXAgAAAQAAAAEAAAAcAgAAF9DdXN0b21Db250ZW50AABeCAAA +DAAAAAQAAABxCAAAZGF0YVwIAAAEAAAABAAAAHkDAABtLmNyb3NzX3NpZ25pbmcubWFzdGVybS5j +cm9zc19zaWduaW5nLnVzZXJfc2lnbmluZ20uY3Jvc3Nfc2lnbmluZy5zZWxmX3NpZ25pbmdtLm1l +Z29sbV9iYWNrdXAudjFrZXlSZXF1ZXN0OjrABBMACwAAAMsEEwABAAAAywQTAAEAAABzZWNyZXRO +YW1lOgDkBBMACwAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvZ29zc2lwaW5nL21vZC5yc20ucm9vbV9rZXlfcmVxdWVzdFdlIGNhbiBhbHdheXMgc2VyaWFs +aXplIGEgcm9vbSBrZXkgcmVxdWVzdCBpbmZvAAAA+AQTAHgAAACiAAAAFgAAAPgEEwB4AAAAUgEA +ADIAAAD4BBMAeAAAAFgBAAAyAAAAc2lnbmF0dXJlc3Vuc2lnbmVkL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9yZXF1ZXN0cy5yc0ZhaWxlZCB0byBzZXJpYWxp +emUgdG8tZGV2aWNlIGV2ZW509gUTAHMAAABmAAAALQAAAPYFEwBzAAAAjwAAAC0AAAAvaG9tZS9y +dW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3 +YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3R5cGVzL2V2ZW50cy9yb29t +X2tleV93aXRoaGVsZC5ycwAAAKwGEwCJAAAAcgAAABEAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJl +ZCB1bnJlYWNoYWJsZSBjb2RlOiBDYW4ndCBjcmVhdGUgYW4gdW5rbm93biB3aXRoaGVsZCBjb2Rl +IGNvbnRlbnQASAcTAFcAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2Rl +OiBVbnN1cHBvcnRlZCBhbGdvcml0aG0gqAcTAEAAAACsBhMAiQAAAIYAAAASAAAAVGhlIHNlbmRl +ciBoYXMgYmxvY2tlZCB5b3UuVGhlIHNlbmRlciBoYXMgZGlzYWJsZWQgZW5jcnlwdGluZyB0byB1 +bnZlcmlmaWVkIGRldmljZXMuWW91IGFyZSBub3QgYXV0aG9yaXNlZCB0byByZWFkIHRoZSBtZXNz +YWdlLlRoZSByZXF1ZXN0ZWQga2V5IHdhcyBub3QgZm91bmQuVW5hYmxlIHRvIGVzdGFibGlzaCBh +IHNlY3VyZSBjaGFubmVsLmludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6 +IFRoaXMgY29uc3RydWN0b3IgcmVxdWlyZXMgb25lIG9mIHRoZSBjb21tb24gd2l0aGhlbGQgY29k +ZXPECBMAZAAAAKwGEwCJAAAAMwEAABIAAABBbnlXaXRoaGVsZENvbnRlbnRyb29tX2lkAAAAWQgA +AAgAAAAEAAAABQEAAHNlc3Npb25faWRzZW5kZXJfa2V5cggAACAAAAABAAAAUAEAAHMIAAAIAAAA +BAAAAHQIAABOb09sbVdpdGhoZWxkQ29udGVudG0uZHVtbXltLnJvb21fa2V5LndpdGhoZWxkbS5y +b29tX2tleW0ucm9vbS5lbmNyeXB0ZWRtLmZvcndhcmRlZF9yb29tX2tleW0uc2VjcmV0LnNlbmRz +dHJ1Y3QgR29zc2lwcGVkU2VjcmV0c3RydWN0IEdvc3NpcFJlcXVlc3R2YXJpYW50IGlkZW50aWZp +ZXJUb0RldmljZVJlcXVlc3RldmVudF90eXBlAAB1CAAADAAAAAQAAAB2CAAAdHhuX2lkbWVzc2Fn +ZXMAAFwIAAAEAAAABAAAAHcIAABzdHJ1Y3QgVG9EZXZpY2VSZXF1ZXN0S2V5c1F1ZXJ5UmVxdWVz +dHRpbWVvdXQAAAB4CAAAEAAAAAgAAAB5CAAAZGV2aWNlX2tleXMAXAgAAAQAAAAEAAAAeggAAE91 +dGdvaW5nUmVxdWVzdHJlcXVlc3RfaWRyZXF1ZXN0XAgAAAQAAAAEAAAA1gcAAFJvb21NZXNzYWdl +UmVxdWVzdGNvbnRlbnQAAABcCAAABAAAAAQAAAC6BAAAcHVibGljX2tleXNlc3Npb25fa2V5Zm9y +d2FyZGluZ19jdXJ2ZTI1NTE5X2tleV9jaGFpbnNlbmRlcl9jbGFpbWVkX2VkMjU1MTlfa2V5c3Ry +dWN0IE9sbUhlbHBlciB3aXRoIDMgZWxlbWVudHMAAJYLEwAgAAAAY2lwaGVydGV4dG9yZy5tYXRy +aXgubXNnaWRzdHJ1Y3QgTWVnb2xtVjFBZXNTaGEyQ29udGVudCB3aXRoIDQgZWxlbWVudHMA2gsT +AC0AAABkZXZpY2VfaWRzdHJ1Y3QgTWVnb2xtVjFBZXNTaGEyQ29udGVudCB3aXRoIDMgZWxlbWVu +dHMAABkMEwAtAAAAbS5ibGFja2xpc3RlZG0udW52ZXJpZmllZG0udW5hdXRob3Jpc2VkbS51bmF2 +YWlsYWJsZW0ubm9fb2xtc3RydWN0IFdpdGhoZWxkSGVscGVyYWxnb3JpdGhtc3RydWN0IENvbW1v +bldpdGhoZWxkQ29kZUNvbnRlbnRzdHJ1Y3QgTm9PbG1XaXRoaGVsZENvbnRlbnRIZWxwZXJzZW5k +ZXJzdHJ1Y3QgVG9EZXZpY2VDdXN0b21FdmVudHN0cnVjdCBIZWxwZXIbAAAAOQAAACsAAAAgAAAA +JQAAAAAIEwAbCBMAVAgTAH8IEwCfCBMATG9jYXRpb25NZXNzYWdlRXZlbnRDb250ZW50Ym9keQB9 +CAAADAAAAAQAAAB+CAAAZ2VvX3VyaWluZm8AfwgAAAQAAAAEAAAAgAgAAEtleVZlcmlmaWNhdGlv +bk1hY0V2ZW50Q29udGVudG1hYwAAAIEIAAAMAAAABAAAAEIDAABrZXlzfQgAAAwAAAAEAAAAnQcA +AHJlbGF0ZXNfdG8AAH8IAAAEAAAABAAAAH0HAAB9e1RvRGV2aWNlRm9yd2FyZGVkUm9vbUtleUV2 +ZW50Q29udGVudGFsZ29yaXRobXJvb21faWRzZW5kZXJfa2V5c2Vzc2lvbl9pZHNlc3Npb25fa2V5 +c2VuZGVyX2NsYWltZWRfZWQyNTUxOV9rZXlmb3J3YXJkaW5nX2N1cnZlMjU1MTlfa2V5X2NoYWlu +VG9EZXZpY2VLZXlWZXJpZmljYXRpb25NYWNFdmVudENvbnRlbnR0cmFuc2FjdGlvbl9pZAAApA4T +AA4AAACqDRMAAwAAAMANEwAEAAAARW5jcnlwdGVkRXZlbnRTY2hlbWVPbG1WMUN1cnZlMjU1MTlB +ZXNTaGEybS5vbG0udjEuY3VydmUyNTUxOS1hZXMtc2hhMk1lZ29sbVYxQWVzU2hhMm0ubWVnb2xt +LnYxLmFlcy1zaGEyTWVnb2xtVjFBZXNTaGEyQ29udGVudGNpcGhlcnRleHRkZXZpY2VfaWRPbG1W +MUN1cnZlMjU1MTlBZXNTaGEyQ29udGVudENpcGhlcnRleHRJbmZvdHlwZVRvRGV2aWNlU2VjcmV0 +U2VuZEV2ZW50Q29udGVudHJlcXVlc3RfaWRzZWNyZXRtLnJlZmVyZW5jZXJlbF90eXBlZXZlbnRf +aWRSb29tTWVzc2FnZUV2ZW50Q29udGVudFdpdGhvdXRSZWxhdGlvbm1zZ3R5cGUAgggAADwAAAAE +AAAAgwgAAG1lbnRpb25zfwgAAAQAAAAEAAAAhAgAAH0IAAAMAAAABAAAAIUIAACGCAAApAAAAGEg +RGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAhwgA +AAAAAAABAAAAiAgAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYy +MWE3L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwCMEBMASwAAADMKAAAOAAAAdGhlcmUgaXMg +bm8gc3VjaCB0aGluZyBhcyBhIHJlbGVhc2UgbG9hZOgQEwAoAAAAL3J1c3RjL2FlZGQxNzNhMmMw +ODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zeW5jL2F0b21p +Yy5ycwAYERMATwAAAOAMAAAYAAAAdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBhbiBhY3F1aXJl +LXJlbGVhc2UgbG9hZAAAAHgREwAxAAAAGBETAE8AAADhDAAAFwAAAG92ZXJmbG93IGluIER1cmF0 +aW9uOjpuZXcAAADEERMAGQAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0 +Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvdGltZS5yc+gREwBIAAAAygAAABUAAACJCAAABAAA +AAQAAACqAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQCKCAAA +CAAAAAQAAACuAAAAiwgAAAgAAAAEAAAArgAAAIwIAAAIAAAABAAAAK4AAACMCAAACAAAAAQAAACu +AAAAeWVhci0rVDpvZmZzZXRfc2Vjb25kWkVycm9yAI0IAAAQAAAACAAAAI4IAACPCAAADAAAAAQA +AACQCAAAkQgAAAQAAAAEAAAAkggAAH8IAAAEAAAABAAAAJMIAABJbWFnZUluZm9oZWlnaHR3aWR0 +aG1pbWV0eXBlc2l6ZXRodW1ibmFpbF9pbmZvdGh1bWJuYWlsX3NvdXJjZQAAIRMTAAYAAAAnExMA +BQAAACwTEwAIAAAANBMTAAQAAAA4ExMADgAAAEYTEwAQAAAATm9uZVNvbWV/CAAABAAAAAQAAACm +BwAAfwgAAAQAAAAEAAAAlAgAAH8IAAAEAAAABAAAAKgHAAB/CAAABAAAAAQAAAC1AAAAfwgAAAQA +AAAEAAAAcAEAAH8IAAAEAAAABAAAAJUIAAB/CAAABAAAAAQAAADKAAAAfwgAAAQAAAAEAAAAsgcA +AH8IAAAEAAAABAAAAJYIAAB/CAAABAAAAAQAAACXCAAAfwgAAAQAAAAEAAAAswcAAFRocmVhZAAA +mAgAAAgAAAAEAAAABQEAAGluX3JlcGx5X3RvAJkIAAAIAAAABAAAAJoIAABpc19mYWxsaW5nX2Jh +Y2sAfwgAAAQAAAAEAAAAhgEAAEpzb25XZWJLZXlrdHlrZXlfb3BzmwgAAAwAAAAEAAAAnAgAAGFs +Z2t9CAAADAAAAAQAAACdCAAAZXh0UGxhaW5/CAAABAAAAAQAAAC1BwAARW5jcnlwdGVkAAAAfwgA +AAQAAAAEAAAAtgcAACRzZXJkZV9qc29uOjpwcml2YXRlOjpSYXdWYWx1ZUluUmVwbHlUbwB/CAAA +BAAAAAQAAAAJBAAAUmVmZXJlbmNlRW5jcnlwdGVkRmlsZXVybAAAAJgIAAAIAAAABAAAAJ4IAABr +ZXkAnwgAADQAAAAEAAAAoAgAAGl2aGFzaGVzdlRodW1ibmFpbEluZm8AAH8IAAAEAAAABAAAAKEI +AABBbm5vdGF0aW9uQ3VzdG9tUmVsYXRpb25/CAAABAAAAAQAAACiCAAAUmVwbHlSZXBsYWNlbWVu +dH8IAAAEAAAABAAAAKMIAAB/CAAABAAAAAQAAACkCAAAfwgAAAQAAAAEAAAApQgAAF9DdXN0b20A +fwgAAAQAAAAEAAAApggAAEF1ZGlvAAAAfwgAAAQAAAAEAAAApwgAAEVtb3RlAAAAfwgAAAQAAAAE +AAAAqAgAAEZpbGV/CAAABAAAAAQAAACpCAAASW1hZ2UAAAB/CAAABAAAAAQAAACqCAAATG9jYXRp +b25/CAAABAAAAAQAAACrCAAATm90aWNlAAB/CAAABAAAAAQAAACsCAAAU2VydmVyTm90aWNlfwgA +AAQAAAAEAAAArQgAAFRleHR/CAAABAAAAAQAAACuCAAAVmlkZW8AAAB/CAAABAAAAAQAAACvCAAA +VmVyaWZpY2F0aW9uUmVxdWVzdAB/CAAABAAAAAQAAACwCAAAfwgAAAQAAAAEAAAAsQgAAEZvcm1h +dHRlZEJvZHlmb3JtYXQAsggAAAgAAAAEAAAAswgAAFN0aWNrZXJFdmVudENvbnRlbnQAtAgAAFAA +AAAIAAAAtQgAAEZpbGVJbmZvjQgAAAgAAAAIAAAAtggAAH8IAAAIAAAABAAAALcIAAB/CAAACAAA +AAQAAACGAAAAfQgAAAwAAAAEAAAAuAgAAFJlYWN0aW9uRXZlbnRDb250ZW50bmV3X2NvbnRlbnQA +fwgAAAQAAAAEAAAAuQgAAG1lc3NhZ2VfdHlwZUF1ZGlvSW5mb2R1cmF0aW9uAAAAjQgAABAAAAAI +AAAAuggAAFZpZGVvSW5mbwAAAP0XEwAIAAAAIRMTAAYAAAAnExMABQAAACwTEwAIAAAANBMTAAQA +AAA4ExMADgAAAEYTEwAQAAAAUmVxdWVzdHRpbWVvdXRvbmVfdGltZV9rZXlzAH8IAAAEAAAABAAA +ALsIAABDdXN0b21FdmVudENvbnRlbnRkYXRhaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFj +aGFibGUgY29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p +by02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvc2VyLnJzAAAAxhgTAF8A +AACiAgAAKgAAAENhbGxIYW5ndXBFdmVudENvbnRlbnRjYWxsX2lkAAAAmAgAAAgAAAAEAAAAFQgA +AHBhcnR5X2lkmQgAAAgAAAAEAAAAvAgAAHZlcnNpb24AvQgAAAwAAAAEAAAAvggAAHJlYXNvbgAA +fwgAAAQAAAAEAAAAvwgAAAAVEwAeAAAAVG9EZXZpY2VEdW1teUV2ZW50Q29udGVudAAAAH8IAAAE +AAAABAAAAOUFAAB/CAAABAAAAAQAAADmBQAATG9jYXRpb25JbmZvwAgAAAwAAAAEAAAAwQgAAH8I +AAAEAAAABAAAAMIIAABSb29tTWVzc2FnZUV2ZW50Q29udGVudADDCAAAVAAAAAQAAADECAAAmAgA +AAgAAAAEAAAARAMAAENhbGxOZWdvdGlhdGVFdmVudENvbnRlbnRsaWZldGltZQAAAI0IAAAIAAAA +CAAAAMUIAABkZXNjcmlwdGlvbgB/CAAABAAAAAQAAADGCAAAUm9vbUVuY3J5cHRlZEV2ZW50Q29u +dGVudHNjaGVtZQDHCAAALAAAAAQAAADICAAAfwgAAAQAAAAEAAAAyQgAAH8IAAAEAAAABAAAAMoI +AABWMFYxfwgAAAQAAAAEAAAAywgAAMwIAAAMAAAABAAAAM0IAABFbW90ZU1lc3NhZ2VFdmVudENv +bnRlbnRmb3JtYXR0ZWQAAAB/CAAABAAAAAQAAACYBwAAVmlkZW9NZXNzYWdlRXZlbnRDb250ZW50 +zggAABQAAAAEAAAAzwgAAGZpbGVuYW1lc291cmNlAADQCAAACAAAAAQAAADRCAAAfwgAAAQAAAAE +AAAA0ggAAEluYm91bmRHcm91cFNlc3Npb24AfwgAAAgAAAAEAAAA0wgAAC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2dyb3VwX3Nlc3Npb25zL291dGJv +dW5kLnJzAADMGxMAhgAAAAIBAAAoAAAAzBsTAIYAAAAmAQAANgAAAEZpZWxkU2V0IGNvcnJ1cHRl +ZCAodGhpcyBpcyBhIGJ1ZykAAMwbEwCGAAAALQEAAA0AAABNYXJraW5nIHRvLWRldmljZSByZXF1 +ZXN0IGNhcnJ5aW5nIGEgcm9vbSBrZXkgb3IgYSB3aXRoaGVsZCBhcyBzZW50AKgcEwBDAAAAfwgA +ABgAAAAEAAAAggAAAH8IAAAEAAAABAAAANgAAAB/CAAABAAAAAQAAACOAAAAfwgAAAQAAAAEAAAA +1AgAAMwbEwCGAAAAPwEAAC4AAADMGxMAhgAAAEABAAARAAAAQWxsIG0ucm9vbV9rZXkgYW5kIHdp +dGhoZWxkIHRvLWRldmljZSByZXF1ZXN0cyB3ZXJlIHNlbnQgb3V0LCBtYXJraW5nIHNlc3Npb24g +YXMgc2hhcmVkLlQdEwBYAAAAfwgAAAQAAAAEAAAAmQAAAMwbEwCGAAAAPAEAAC4AAADMGxMAhgAA +AEsBAAAvAAAAzBsTAIYAAABNAQAADQAAAE1hcmtpbmcgdG8tZGV2aWNlIHJlcXVlc3QgY2Fycnlp +bmcgYSByb29tIGtleSBhcyBzZW50IGJ1dCBubyByZXF1ZXN0IGZvdW5kIHdpdGggdGhlIGdpdmVu +IGlk9B0TAFwAAAB/CAAABAAAAAQAAADVCAAAzBsTAIYAAAANAgAAKQAAAMwbEwCGAAAAIwIAAC8A +AADMGxMAhgAAADkCAAAOAAAAzBsTAIYAAABFAgAALwAAAMwbEwCGAAAAdQIAACcAAADMGxMAhgAA +AHoCAAAnAAAAT3V0Ym91bmRHcm91cFNlc3Npb27WCAAACAAAAAQAAADXCAAAmAgAAAgAAAAEAAAA +BQEAAGNyZWF0aW9uX3RpbWUAAACNCAAACAAAAAgAAADYCAAAbWVzc2FnZV9jb3VudAAAANkIAAAE +AAAABAAAANoIAABTZXNzaW9uANsIAAAgAAAAAQAAAFABAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9zZXNzaW9uLnJzL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vc2lnbmluZy9tb2QucnNXZSBjYW4gYWx3 +YXlzIGNyZWF0ZSBhIG5ldyByYW5kb20gVXNlclNpZ25pbmdQdWJrZXkAyh8TAHoAAAAlAgAAEgAA +AFdlIGNhbiBhbHdheXMgY3JlYXRlIGEgbmV3IHJhbmRvbSBTZWxmU2lnbmluZ1B1YmtleQDKHxMA +egAAADECAAASAEHYwcwAC80DRXhwZWN0ZWQgY3Jvc3Mgc2lnbmluZyBrZXkgdXNhZ2UgIHdhcyBu +b3QgZm91bmQA2CATACEAAAD5IBMADgAAAG0uZHVtbXltLnJvb21fa2V5bS5mb3J3YXJkZWRfcm9v +bV9rZXltLnNlY3JldC5zZW5kQ291bGRuJ3Qgc2VyaWFsaXplIG9uZS10aW1lIGtleS9ob21lL3J1 +bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdi +Yi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdHlwZXMvb25lX3RpbWVfa2V5 +cy5ycwBpIRMAfgAAAGAAAAArAAAAVW5zdXBwb3J0ZWQga2V5IGFsZ29yaXRobSAAAPghEwAaAAAA +L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5Mjdm +ODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRp +b24vc2FzL2lubmVyX3Nhcy5ycwAAAAEAQbDFzAALyxQcIhMAhQAAAL8AAAAJAAAAQWNjZXB0ZWQg +YSBTQVMgdmVyaWZpY2F0aW9uAMAiEwAbAAAAfwgAAAQAAAAEAAAA3AgAAFVuc3VwcG9ydGVkQWxn +b3JpdGhtSW52YWxpZEtleUlkfwgAAAQAAAAEAAAAuAAAAE1pc3NpbmdTaWduaW5nS2V5VXNlcklk +TWlzbWF0Y2hOb3RBbk9iamVjdE5vU2lnbmF0dXJlRm91bmRWZXJpZmljYXRpb25FcnJvcgB/CAAA +BAAAAAQAAAC5AAAASW52YWxpZEtleQAAfwgAAAQAAAAEAAAAugAAAEludmFsaWRTaWduYXR1cmVT +aWduaW5nS2V5Q2hhbmdlZAAAAN0IAAAEAAAABAAAAN4IAAB/CAAABAAAAAQAAAC9AAAASnNvbkVy +cm9yAAAAfwgAAAQAAAAEAAAAvgAAAFN0b3JlRXJyb3IAAH8IAAAEAAAABAAAAL8AAABzdHJ1Y3Qg +UGlja2xlZEluYm91bmRHcm91cFNlc3Npb25zdHJ1Y3QgRW5jcnlwdGlvblNldHRpbmdzdmFyaWFu +dCBpZGVudGlmaWVyc3RydWN0IFNoYXJlZFdpdGhldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9ncm91cF9zZXNzaW9ucy9vdXRib3VuZC5yczoz +MDFtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmRtZXNzYWdl +cmVjaXBpZW50c3RvX2RldmljZS5ldmVudF90eXBlAAA1JRMABwAAAKsPEwAKAAAAPCUTAAoAAABG +JRMAFAAAAH8IAAAMAAAABAAAALYBAADfCAAA4AgAAAEAAAAtAQAAAgAAAHUkEwCQAAAABSUTADAA +AABcJRMABAAAAPjAFgB8JRMABSUTADAAAADMGxMAhgAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIv +LmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5 +ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9ncm91cF9zZXNzaW9ucy9vdXRi +b3VuZC5yczozMjA1JRMABwAAADAOEwAKAAAAHw4TAAcAAAABAAAAQAEAAAEAAADUJRMAkAAAAAUl +EwAwAAAAZCYTAAMAAAAEwRYAfCUTAAUlEwAwAAAAzBsTAIYAAAABAAAAZXZlbnQgL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vZ3JvdXBfc2Vzc2lvbnMv +b3V0Ym91bmQucnM6MzMzYWxsX3JlcXVlc3RfaWRzADUlEwAHAAAATCcTAA8AAACrDxMACgAAAAEA +AABNAQAABAAAALwmEwCQAAAABSUTADAAAABcJxMAAwAAABDBFgB8JRMABSUTADAAAADMGxMAhgAA +AAEAAABzdHJ1Y3QgUGlja2xlZE91dGJvdW5kR3JvdXBTZXNzaW9uZXZlbnQgL2hvbWUvcnVubmVy +Ly5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2Fi +OWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vc2Vzc2lvbi5yczo4N21hdHJp +eF9zZGtfY3J5cHRvOjpvbG06OnNlc3Npb25zZXNzaW9uADUlEwAHAAAAdCgTAAcAAAABAAAAVwAA +AAEAAADWJxMAfwAAAFUoEwAfAAAAfCgTAAIAAAAcwRYAfCUTAFUoEwAfAAAAVB8TAHYAAAABAAAA +ZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0x +ZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0v +c2Vzc2lvbi5yczoxMzABAAAAggAAAAEAAADMKBMAgAAAAFUoEwAfAAAAfCgTAAIAAAAowRYAfCUT +AFUoEwAfAAAAVB8TAHYAAAABAAAAc3RydWN0IFBpY2tsZWRTZXNzaW9uc3RydWN0IFBpY2tsZWRD +cm9zc1NpZ25pbmdJZGVudGl0eXN0cnVjdCBUb0RldmljZUN1c3RvbUV2ZW50c3RydWN0IE9sbVYx +S2V5c3N0cnVjdCBIZWxwZXJTaWduZWRLZXlzaWduYXR1cmVzAAAA4QgAAAwAAAAEAAAA4ggAAGZh +bGxiYWNr2wgAAAEAAAABAAAA4wgAAG90aGVyAAAAfwgAAAQAAAAEAAAAeQMAAHN0cnVjdCBTaWdu +ZWRLZXlTaWduYXR1cmVzAAB/CAAABAAAAAQAAACeBAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vc2FzL2lubmVyX3Nhcy5y +czoxOTFtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OmlubmVyX3Nhc2Zsb3df +aWRhY2NlcHRlZF9wcm90b2NvbHMANSUTAAcAAAA6KxMABwAAAEErEwASAAAAAQAAAL8AAAAAAAAA +fCoTAI8AAAALKxMALwAAAFQrEwADAAAANMEWAHwlEwALKxMALwAAABwiEwCFAAAAAQAAAOYIAAAE +AAAABAAAAKoAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAOcI +AAAIAAAABAAAAK4AAADoCAAACAAAAAQAAACuAAAA6QgAAAgAAAAEAAAArgAAAOoIAAAIAAAABAAA +AK4AAADnCAAACAAAAAQAAACuAAAA6wgAAAgAAAAEAAAArgAAAOwIAAAEAAAABAAAAEMFAADsCAAA +BAAAAAQAAAAJAQAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIx +YTcvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJzaCwTAGAA +AAAyAgAAKgAAAFVJbnTtCAAA7ggAAAAAAAABAAAAnwEAAP//////////8CwTAEGI2swAC6VtL2hv +bWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJh +M2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9pZGVudGl0aWVzL21h +bmFnZXIucnNGaWVsZFNldCBjb3JydXB0ZWQgKHRoaXMgaXMgYSBidWcpAAgtEwB9AAAARgIAABUA +AABBIHVzZXIgaWRlbnRpdHkgZGlkbid0IGNvbnRhaW4gYSBzZWxmIHNpZ25pbmcgcHVia2V5IG9y +IHRoZSBrZXkgd2FzIGludmFsaWQAuC0TAEsAAADsCAAAGAAAAAQAAACCAAAACC0TAH0AAABLAgAA +EQAAAENvdWxkbid0IHVwZGF0ZSBvciBjcmVhdGUgbmV3IHVzZXIgaWRlbnRpdHkALC4TACsAAADs +CAAABAAAAAQAAAA8AgAACC0TAH0AAABvAgAADQAAAFVzZXIgSUQgbWlzbWF0Y2ggaW4gb3VyIHVz +ZXItc2lnbmluZyBrZXmALhMAKAAAAOwIAAAEAAAABAAAAIQAAAAILRMAfQAAAGcCAAANAAAAVXNl +ciBpZGVudGl0eSBmb3Igb3VyIG93biB1c2VyIGRpZG4ndCBjb250YWluIGEgdXNlciBzaWduaW5n +IHB1YmtleSBvciB0aGUga2V5IGlzbid0IHZhbGlkAADQLhMAWgAAAC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL3Nlc3Npb25zLnJz +ADQvEwCDAAAAYgAAADIAAAA0LxMAgwAAAE0BAAAkAAAANC8TAIMAAABrAQAARAAAADQvEwCDAAAA +cwEAABEAAABSZWNlaXZlZCBhIGAva2V5cy9jbGFpbWAgcmVzcG9uc2UgZm9yIHRoZSB3cm9uZyBy +ZXF1ZXN0APgvEwA3AAAA7AgAAAQAAAAEAAAA2AAAAOwIAAAEAAAABAAAAO8IAAA0LxMAgwAAAKQB +AAARAAAAVHJpZWQgdG8gY3JlYXRlIG5ldyBPbG0gc2Vzc2lvbnMsIGJ1dCB0aGUgc2lnbmVkIG9u +ZS10aW1lIGtleSB3YXMgbWlzc2luZyBmb3Igc29tZSBkZXZpY2VzAABoMBMAWgAAAOwIAAAEAAAA +BAAAAPAIAAA0LxMAgwAAAKkBAABLAAAAc2Vzc2lvbl9pZDogLCBhbGdvcml0aG06ICwgZmFsbGJh +Y2tfa2V5X3VzZWQ6IAAA7DATAAwAAAD4MBMADQAAAAUxEwAVAAAAL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0Zjcv +Y3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vbWFjaGluZS5ycwA0MRMA +fwAAAJsAAAAeAAAANDETAH8AAAChAAAADgAAADQxEwB/AAAArAAAAA0AAABJZ25vcmluZyBrbm93 +biB2ZXJpZmljYXRpb24gcmVxdWVzdADkMRMAIwAAAOwIAAAIAAAABAAAAIYAAAA0MRMAfwAAALAA +AAAyAAAANDETAH8AAAC4AAAAEQAAAFJlY2VpdmVkIGEgbmV3IHZlcmlmaWNhdGlvbiByZXF1ZXN0 +IHdoaWxzdCBhbm90aGVyIHJlcXVlc3Qgd2l0aCB0aGUgc2FtZSB1c2VyIGlzIG9uZ29pbmcuIENh +bmNlbGxpbmcgYm90aCByZXF1ZXN0cy4AQDITAHMAAAA0MRMAfwAAAPkAAAA2AAAARmFpbGVkIHRv +IHNlcmlhbGl6ZSBtLmtleV92ZXJpZmljYXRpb24uY2FuY2VsIGV2ZW50ADQxEwB/AAAADgEAABoA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lk +ZW50aXRpZXMvbWFuYWdlci5yczoxMjRtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6bWFu +YWdlcm1lc3NhZ2VyZXF1ZXN0X2lkdXNlcnNmYWlsdXJlcwC9MxMABwAAAMQzEwAKAAAAzjMTAAUA +AADTMxMACAAAAOwIAAAMAAAABAAAALYBAADxCAAA8ggAAAEAAAB8AAAAAQAAABAzEwCHAAAAlzMT +ACYAAADcMxMABAAAAEDBFgD8MxMAlzMTACYAAAAILRMAfQAAAAEAAABldmVudCAvaG9tZS9ydW5u +ZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIv +YWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lkZW50aXRpZXMvbWFuYWdlci5y +czoyMDluZXdfZGV2aWNlc2NoYW5nZWRfZGV2aWNlc2RlbGV0ZWRfZGV2aWNlc25ld19pZGVudGl0 +aWVzY2hhbmdlZF9pZGVudGl0aWVzvTMTAAcAAADEMxMACgAAANs0EwALAAAA5jQTAA8AAAD1NBMA +DwAAAAQ1EwAOAAAAEjUTABIAAAABAAAA0QAAAAEAAABUNBMAhwAAAJczEwAmAAAAJDUTAAcAAABM +wRYA/DMTAJczEwAmAAAACC0TAH0AAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQv +Y2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVz +L21hdHJpeC1zZGstY3J5cHRvL3NyYy9pZGVudGl0aWVzL21hbmFnZXIucnM6MjMxdXNlcl9pZGRl +dmljZV9pZGVycm9yvTMTAAcAAAAjNhMABwAAACo2EwAJAAAAMzYTAAUAAAABAAAA5wAAAAMAAACc +NRMAhwAAAJczEwAmAAAAODYTAAQAAABYwRYA/DMTAJczEwAmAAAACC0TAH0AAAABAAAAZXZlbnQg +L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5Mjdm +ODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9pZGVudGl0aWVz +L21hbmFnZXIucnM6MjU0a2V5cwC9MxMABwAAACM2EwAHAAAAKjYTAAkAAAAfNxMABAAAAAEAAAD+ +AAAAAAAAAJg2EwCHAAAAlzMTACYAAAAkNxMABAAAAGTBFgD8MxMAlzMTACYAAAAILRMAfQAAAAEA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lk +ZW50aXRpZXMvbWFuYWdlci5yczoyNjcAAQAAAAsBAAAAAAAAhDcTAIcAAACXMxMAJgAAACQ3EwAE +AAAAcMEWAPwzEwCXMxMAJgAAAAgtEwB9AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28v +Z2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2Ny +YXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvaWRlbnRpdGllcy9tYW5hZ2VyLnJzOjI3OAABAAAA +FgEAAAMAAABMOBMAhwAAAJczEwAmAAAAODYTAAQAAAB8wRYA/DMTAJczEwAmAAAACC0TAH0AAAAB +AAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9p +ZGVudGl0aWVzL21hbmFnZXIucnM6MzA3ZGV2aWNlX2tleV91c2VyZGV2aWNlX2tleV9kZXZpY2Vf +aWQAAL0zEwAHAAAAIzYTAAcAAAAqNhMACQAAAJs5EwAPAAAAqjkTABQAAAABAAAAMwEAAAMAAAAU +ORMAhwAAAJczEwAmAAAAwDkTAAUAAACIwRYA/DMTAJczEwAmAAAACC0TAH0AAAABAAAAZXZlbnQg +L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5Mjdm +ODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9pZGVudGl0aWVz +L21hbmFnZXIucnM6MzIwAAEAAABAAQAAAwAAACg6EwCHAAAAlzMTACYAAAA4NhMABAAAAJTBFgD8 +MxMAlzMTACYAAAAILRMAfQAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1jcnlwdG8vc3JjL2lkZW50aXRpZXMvbWFuYWdlci5yczozNTBjdXJ2ZTI1NTE5X2tl +eWVkMjU1MTlfa2V5vTMTAAcAAAAjNhMABwAAACo2EwAJAAAAdzsTAA4AAACFOxMACwAAAAEAAABe +AQAAAwAAAPA6EwCHAAAAlzMTACYAAACQOxMABQAAAKDBFgD8MxMAlzMTACYAAAAILRMAfQAAAAEA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lk +ZW50aXRpZXMvbWFuYWdlci5yczo0MjVjbGVhcmVkAAC9MxMABwAAAH88EwAHAAAAAQAAAKkBAAAC +AAAA+DsTAIcAAACXMxMAJgAAAIg8EwACAAAArMEWAPwzEwCXMxMAJgAAAAgtEwB9AAAAAQAAAGV2 +ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvaWRlbnRp +dGllcy9tYW5hZ2VyLnJzOjQzNQC9MxMABwAAAAEAAACzAQAAAAAAANg8EwCHAAAAlzMTACYAAABg +PRMAAQAAALjBFgD8MxMAlzMTACYAAAAILRMAfQAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNh +cmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRm +Ny9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lkZW50aXRpZXMvbWFuYWdlci5yczo1ODIA +AQAAAEYCAAADAAAAqD0TAIcAAACXMxMAJgAAAGA9EwABAAAAxMEWAPwzEwCXMxMAJgAAAAgtEwB9 +AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvaWRlbnRpdGllcy9tYW5hZ2VyLnJzOjU4NwC9MxMABwAAADM2EwAFAAAAAQAAAEsCAAADAAAA +cD4TAIcAAACXMxMAJgAAAPg+EwACAAAA0MEWAPwzEwCXMxMAJgAAAAgtEwB9AAAAAQAAAGV2ZW50 +IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3 +ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvaWRlbnRpdGll +cy9tYW5hZ2VyLnJzOjYxNQABAAAAZwIAAAMAAABIPxMAhwAAAJczEwAmAAAAYD0TAAEAAADcwRYA +/DMTAJczEwAmAAAACC0TAH0AAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy9pZGVudGl0aWVzL21hbmFnZXIucnM6NjIzZXhwZWN0ZWRnb3QA +AL0zEwAHAAAAl0ATAAgAAACfQBMAAwAAAAEAAABvAgAAAwAAABBAEwCHAAAAlzMTACYAAACkQBMA +AwAAAOjBFgD8MxMAlzMTACYAAAAILRMAfQAAAAEAAAB1cGRhdGVfb3JfY3JlYXRlX2lkZW50aXR5 +AAAAIzYTAAcAAAABAAAAjAIAAAIAAAD8QBMAGQAAAJczEwAmAAAAGEETAAEAAAD0wRYA/DMTAJcz +EwAmAAAACC0TAH0AAAACAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy9pZGVudGl0aWVzL21hbmFnZXIucnM6NjYzAL0zEwAHAAAAIzYTAAcAAAAB +AAAAlwIAAAMAAABgQRMAhwAAAJczEwAmAAAA6EETAAIAAAAAwhYA/DMTAJczEwAmAAAACC0TAH0A +AAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy9pZGVudGl0aWVzL21hbmFnZXIucnM6Njc3aWRlbnRpdHkAvTMTAAcAAAC/QhMACAAAAAEAAACl +AgAAAAAAADhCEwCHAAAAlzMTACYAAADIQhMAAgAAAAzCFgD8MxMAlzMTACYAAAAILRMAfQAAAAEA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lk +ZW50aXRpZXMvbWFuYWdlci5yczo2ODEAAQAAAKkCAAAAAAAAGEMTAIcAAACXMxMAJgAAAMhCEwAC +AAAAGMIWAPwzEwCXMxMAJgAAAAgtEwB9AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28v +Z2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2Ny +YXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvaWRlbnRpdGllcy9tYW5hZ2VyLnJzOjY4NQABAAAA +rQIAAAMAAADgQxMAhwAAAJczEwAmAAAA+D4TAAIAAAAkwhYA/DMTAJczEwAmAAAACC0TAH0AAAAB +AAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9p +ZGVudGl0aWVzL21hbmFnZXIucnM6Njk1AAEAAAC3AgAAAAAAAKhEEwCHAAAAlzMTACYAAADIQhMA +AgAAADDCFgD8MxMAlzMTACYAAAAILRMAfQAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdv +L2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9j +cmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2lkZW50aXRpZXMvbWFuYWdlci5yczo2OTkAAQAA +ALsCAAADAAAAcEUTAIcAAACXMxMAJgAAAPg+EwACAAAAPMIWAPwzEwCXMxMAJgAAAAgtEwB9AAAA +AQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1z +ZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMv +aWRlbnRpdGllcy9tYW5hZ2VyLnJzOjg0MgC9MxMABwAAAMQzEwAKAAAAzjMTAAUAAAABAAAASgMA +AAEAAAA4RhMAhwAAAJczEwAmAAAAwEYTAAMAAABIwhYA/DMTAJczEwAmAAAACC0TAH0AAAABAAAA +ZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0x +ZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9pZGVu +dGl0aWVzL21hbmFnZXIucnM6OTQ4dXNlcnNfd2l0aF9ub19kZXZpY2VzX29uX2ZhaWxlZF9zZXJ2 +ZXJzAAC9MxMABwAAAJ9HEwAnAAAAAQAAALQDAAACAAAAGEcTAIcAAACXMxMAJgAAAMhHEwACAAAA +VMIWAPwzEwCXMxMAJgAAAAgtEwB9AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0 +L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRl +cy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvaWRlbnRpdGllcy9tYW5hZ2VyLnJzOjk3OXVwZGF0ZWRf +dXNlcnO9MxMABwAAAJ9IEwANAAAAAQAAANMDAAACAAAAGEgTAIcAAACXMxMAJgAAAKxIEwACAAAA +YMIWAPwzEwCXMxMAJgAAAAgtEwB9AAAAAQAAAGdldF91cGRhdGVkX2tleXNfZm9yX3VzZXJ0aW1l +b3V0X2R1cmF0aW9uAAAAFUkTABAAAAAjNhMABwAAAAEAAADjAwAAAgAAAPxIEwAZAAAAlzMTACYA +AAAoSRMAAgAAAGzCFgD8MxMAlzMTACYAAAAILRMAfQAAAAIAAABldmVudCAvaG9tZS9ydW5uZXIv +LmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5 +ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9zZXNzaW9u +cy5yczoxMTZtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpzZXNzaW9uc3NlbmRl +cl9rZXkAvTMTAAcAAAAxShMACgAAAAEAAAB0AAAAAgAAAHhJEwCNAAAABUoTACwAAAA8ShMAAgAA +AHjCFgD8MxMABUoTACwAAAA0LxMAgwAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9zZXNzaW9ucy5yczozMDFt +aXNzaW5nX3Nlc3Npb25fZGV2aWNlc19ieV91c2VydGltZWRfb3V0X2RldmljZXNfYnlfdXNlcgAA +AL0zEwAHAAAAGUsTAB8AAAA4SxMAGQAAAAEAAAAtAQAAAQAAAIxKEwCNAAAABUoTACwAAABUSxMA +AwAAAITCFgD8MxMABUoTACwAAAA0LxMAgwAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdv +L2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9j +cmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9zZXNzaW9ucy5yczoz +MDlmYWlsZWRfZGV2aWNlc19ieV91c2VyAL0zEwAHAAAAOUwTABYAAAABAAAANQEAAAMAAACsSxMA +jQAAAAVKEwAsAAAAUEwTAAIAAACQwhYA/DMTAAVKEwAsAAAANC8TAIMAAAABAAAAZXZlbnQgL2hv +bWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJh +M2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFn +ZXIvc2Vzc2lvbnMucnM6MzcxZXhwZWN0ZWRfcmVxdWVzdF9pZL0zEwAHAAAAxDMTAAoAAAAtTRMA +EwAAAAEAAABzAQAAAwAAAKBMEwCNAAAABUoTACwAAABATRMAAwAAAJzCFgD8MxMABUoTACwAAAA0 +LxMAgwAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL3Nlc3Npb25fbWFuYWdlci9zZXNzaW9ucy5yczo0MjBtaXNzaW5nX2RldmljZXNfYnlf +dXNlcr0zEwAHAAAAJU4TABcAAAABAAAApAEAAAMAAACYTRMAjQAAAAVKEwAsAAAAPE4TAAIAAACo +whYA/DMTAAVKEwAsAAAANC8TAIMAAAABAAAAcmVjZWl2ZV9rZXlzX2NsYWltX3Jlc3BvbnNlAMQz +EwAKAAAAAQAAALsBAAACAAAAjE4TABsAAAAFShMALAAAAKhOEwABAAAAtMIWAPwzEwAFShMALAAA +ADQvEwCDAAAAAgAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRy +aXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNy +eXB0by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL3Nlc3Npb25zLnJzOjQ2Nm9uZV90aW1lX2tleXMAAL0z +EwAHAAAAxDMTAAoAAAB9TxMADQAAANMzEwAIAAAAAQAAANIBAAABAAAA8E4TAI0AAAAFShMALAAA +AIxPEwAEAAAAwMIWAPwzEwAFShMALAAAADQvEwCDAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc2Vzc2lvbl9tYW5hZ2VyL3Nlc3Npb25z +LnJzOjUyMgAAAL0zEwAHAAAAIzYTAAcAAAAqNhMACQAAAAEAAAAKAgAAAwAAAOxPEwCNAAAABUoT +ACwAAAB8UBMAAwAAAMzCFgD8MxMABUoTACwAAAA0LxMAgwAAAAEAAABldmVudCAvaG9tZS9ydW5u +ZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIv +YWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9zZXNz +aW9ucy5yczo1MzAAAAABAAAAEgIAAAMAAADUUBMAjQAAAAVKEwAsAAAAODYTAAQAAADYwhYA/DMT +AAVKEwAsAAAANC8TAIMAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvc2Vzc2lvbnMucnM6NTQzAAAAAQAAAB8C +AAADAAAApFETAI0AAAAFShMALAAAADg2EwAEAAAA5MIWAPwzEwAFShMALAAAADQvEwCDAAAAAQAA +AGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc2Vz +c2lvbl9tYW5hZ2VyL3Nlc3Npb25zLnJzOjU2MgAAAAEAAAAyAgAABAAAAHRSEwCNAAAABUoTACwA +AAB8UBMAAwAAAPDCFgD8MxMABUoTACwAAAA0LxMAgwAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIv +LmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5 +ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Nlc3Npb25fbWFuYWdlci9zZXNzaW9u +cy5yczo1NzhzZXNzaW9ucwAAAL0zEwAHAAAA0VMTAAgAAAABAAAAQgIAAAIAAABEUxMAjQAAAAVK +EwAsAAAA3FMTAAIAAAD8whYA/DMTAAVKEwAsAAAANC8TAIMAAAABAAAAZXZlbnQgL2hvbWUvcnVu +bmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2Ji +L2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zZXNzaW9uX21hbmFnZXIvc2Vz +c2lvbnMucnM6NTk1AAAAAQAAAFMCAAADAAAALFQTAI0AAAAFShMALAAAAPg+EwACAAAACMMWAPwz +EwAFShMALAAAADQvEwCDAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21hY2hpbmUucnM6MTcybWF0cml4X3Nka19j +cnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZWZsb3dfaWS9MxMABwAAAK1VEwAHAAAAAQAAAKwA +AAABAAAA/FQTAIkAAACFVRMAKAAAALRVEwACAAAAFMMWAPwzEwCFVRMAKAAAADQxEwB/AAAAAQAA +AGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVy +aWZpY2F0aW9uL21hY2hpbmUucnM6MTg0AAAAAQAAALgAAAADAAAABFYTAIkAAACFVRMAKAAAAGA9 +EwABAAAAIMMWAPwzEwCFVRMAKAAAADQxEwB/AAAAAQAAAHJlY2VpdmVfYW55X2V2ZW50AAAAAQAA +ADUBAAACAAAA0FYTABEAAACFVRMAKAAAAKwrEwAAAAAALMMWAPwzEwCFVRMAKAAAADQxEwB/AAAA +AgAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1z +ZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMv +dmVyaWZpY2F0aW9uL21hY2hpbmUucnM6MzIyAAAAAQAAAEIBAAADAAAAJFcTAIkAAACFVRMAKAAA +ALRVEwACAAAAOMMWAPwzEwCFVRMAKAAAADQxEwB/AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21hY2hpbmUucnM6 +MzQyZnJvbV9kZXZpY2W9MxMABwAAAHlYEwALAAAAAQAAAFYBAAACAAAA8FcTAIkAAACFVRMAKAAA +AIRYEwACAAAARMMWAPwzEwCFVRMAKAAAADQxEwB/AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21hY2hpbmUucnM6 +MzQ4AAAAAQAAAFwBAAADAAAA1FgTAIkAAACFVRMAKAAAAIRYEwACAAAAUMMWAPwzEwCFVRMAKAAA +ADQxEwB/AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRy +aXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNy +eXB0by9zcmMvdmVyaWZpY2F0aW9uL21hY2hpbmUucnM6MzU2dGltZXN0YW1wAAC9MxMABwAAAHlY +EwALAAAAKVoTAAkAAAABAAAAZAEAAAAAAACgWRMAiQAAAIVVEwAoAAAANFoTAAMAAABcwxYA/DMT +AIVVEwAoAAAANDETAH8AAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vbWFjaGluZS5yczozNjUAAAABAAAAbQEAAAAA +AACMWhMAiQAAAIVVEwAoAAAAhFgTAAIAAABowxYA/DMTAIVVEwAoAAAANDETAH8AAAABAAAAL2hv +bWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmEx +NTAwMWYvY2lwaGVyLTAuNC40L3NyYy9zdHJlYW1fd3JhcHBlci5yc1hbEwBkAAAAjQAAAC0AAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJi +YTE1MDAxZi9kaWdlc3QtMC4xMC43L3NyYy9jb3JlX2FwaS9jdF92YXJpYWJsZS5ycwDMWxMAawAA +AHwAAAA9AAAAzFsTAGsAAAB8AAAAJAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3Jj +L2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3Jj +L2xpYi5yc1hcEwBgAAAAogAAACcAAABYXBMAYAAAAKQAAAAYAAAAWFwTAGAAAACkAAAAIAAAAFhc +EwBgAAAArgAAABQAAABYXBMAYAAAAK4AAAAaAAAAWFwTAGAAAACdAAAAGAAAAFhcEwBgAAAAnQAA +AB8AAABYXBMAYAAAAJ0AAAAlAAAAWFwTAGAAAAAtAQAAIgAAAFhcEwBgAAAAOAEAAB4AAABYXBMA +YAAAADUBAAAYAAAAbWlkID4gbGVuAAAAaF0TAAkAAAD0CAAAAAAAAAEAAAD1CAAAY2FsbGVkIGBS +ZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQD0CAAAAAAAAAEAAAD2CAAA9AgAAAAA +AAABAAAA9wgAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p +by02ZjE3ZDIyYmJhMTUwMDFmL2htYWMtMC4xMi4xL3NyYy9saWIucnPYXRMAWAAAAHwAAAAUAAAA +2F0TAFgAAAB8AAAAIwAAANhdEwBYAAAAcwAAABAAAADYXRMAWAAAAHMAAAAeAAAAaF0TAAAAAAAw +L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJi +YmExNTAwMWYvaW5vdXQtMC4xLjMvc3JjL2lub3V0X2J1Zi5ycwB5XhMAXgAAAPgAAAAJAAAAL2hv +bWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmEx +NTAwMWYvYnl0ZW9yZGVyLTEuNS4wL3NyYy9saWIucnPoXhMAXAAAAJoHAAAfAAAA6F4TAFwAAACa +BwAAMAAAAEludmFsaWRMZW5ndGhUcnlGcm9tU2xpY2VFcnJvcgAA+AgAAAQAAAAEAAAAtgAAAC9o +b21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJh +MTUwMDFmL2NpcGhlci0wLjQuNC9zcmMvc3RyZWFtLnJzlF8TAFwAAAB4AAAAJwAAAFN0cmVhbUNp +cGhlckVycm9yL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlv +LTZmMTdkMjJiYmExNTAwMWYvY3RyLTAuOS4yL3NyYy9mbGF2b3JzL2N0cjEyOC5ycwAAEWATAGEA +AABKAAAAKAAAABFgEwBhAAAASgAAADoAAAARYBMAYQAAADoAAAASAAAAEWATAGEAAAA6AAAAHAAA +ABFgEwBhAAAAOgAAACMAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5j +cmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zaGEyLTAuMTAuOC9zcmMvY29yZV9hcGkucnMAAADE +YBMAXQAAAEIAAAATAAAAAAAAAGfmCWqFrme7cvNuPDr1T6V/Ug5RjGgFm6vZgx8ZzeBbxGATAF0A +AACMAAAAEwAAAAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgF +m2u9Qfur2YMfeSF+ExnN4FsvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL2NpcGhlcnMucnNXZSBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgYSBuZXcgSE1BQyBv +YmplY3QgZnJvbSBvdXIgMzIgYnl0ZSBNQUMga2V5qGETAHIAAADDAAAADgAAAKhhEwByAAAA1gAA +AA4AAACoYRMAcgAAAO8AAAAvAAAAqGETAHIAAADvAAAAEQAAAKhhEwByAAAA8AAAAC8AAACoYRMA +cgAAAPAAAAARAAAALS0tLS1CRUdJTiBNRUdPTE0gU0VTU0lPTiBEQVRBLS0tLS0tLS0tLUVORCBN +RUdPTE0gU0VTU0lPTiBEQVRBLS0tLS0KL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy9maWxlX2VuY3J5cHRpb24va2V5X2V4cG9ydC5ycwAABWMTAIUAAADKAAAA +HAAAAAVjEwCFAAAAzAAAACIAAAABAEG4x80AC4MCRXhwZWN0ZWQgY3Jvc3Mgc2lnbmluZyBrZXkg +dXNhZ2UgIHdhcyBub3QgZm91bmQAuGMTACEAAADZYxMADgAAAEludmFsaWQgb3IgbWlzc2luZyBr +ZXkgZXhwb3J0IGhlYWRlcnMuVGhlIGtleSBleHBvcnQgaGFzIGJlZW4gZW5jcnlwdGVkIHdpdGgg +YW4gdW5zdXBwb3J0ZWQgdmVyc2lvbi5UaGUgTUFDIG9mIHRoZSBlbmNyeXB0ZWQgcGF5bG9hZCBp +cyBpbnZhbGlkLlNlbGZTaWduaW5nUHVia2V5AAAA+AgAAAQAAAAEAAAALQUAAAAAAAD///////// +/7BkEwBByMnNAAvxSS9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNvbW1vbi9z +cmMvZmFpbHVyZXNfY2FjaGUucnMAAADIZBMAeQAAAJ4AAAAxAAAAyGQTAHkAAABsAAAALAAAAHR5 +cGVib2R5ZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheWNhbGxlZCBgUmVz +dWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAAAkAAAgAAAAEAAAArgAAAAEJAAAMAAAA +BAAAAAIJAAADCQAACAAAAAQAAACuAAAABAkAAAQAAAAEAAAABQkAAGF0dGVtcHRlZCB0byBmb3Jt +YXQgYSBwYXJzaW5nLW9ubHkgZm9ybWF0IGRlc2NyaXB0aW9uAAAAAGYTADUAAAAvaG9tZS9ydW5u +ZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90 +aW1lLTAuMy4zNC9zcmMvZm9ybWF0dGluZy9mb3JtYXR0YWJsZS5ycwBAZhMAawAAADUBAAANAAAA +BgkAABQAAAAEAAAABwkAAAYJAAAUAAAABAAAAAgJAAAHCQAAvGYTAAkJAAAKCQAACwkAAAwJAAAN +CQAADgkAAAQAAAAEAAAA0AAAAA4JAAAEAAAABAAAAKoAAADQAAAA+GYTAI4BAACPAQAACwkAAJEB +AAANCQAADwkAACQAAAAEAAAAjQUAAA8JAAAkAAAABAAAABAJAACNBQAANGcTAI8FAACQBQAACwkA +AJEFAAANCQAAEQkAAAIAAAABAAAAEgkAABEJAAACAAAAAQAAABMJAAASCQAAcGcTABQJAAAVCQAA +FgkAABcJAAAYCQAABAkAAAQAAAAEAAAAyAAAAAQJAAAEAAAABAAAALoAAAAECQAABAAAAAQAAAAZ +CQAAU2lnbmF0dXJlAAAABAkAAAQAAAAEAAAAuQAAAEJhc2U2NAAABAkAAAQAAAAEAAAAKgMAAERl +Y3J5cHRpb24AAAQJAAAEAAAABAAAAFUFAABTZXJpYWxpemF0aW9uAAAABAkAAAQAAAAEAAAAxgAA +AEJhc2U2NEVycm9ySW52YWxpZEtleUxlbmd0aGtleV90eXBlAAQJAAAIAAAABAAAANMIAABleHBl +Y3RlZF9sZW5ndGhsZW5ndGhOb25Db250cmlidXRvcnlLZXlJbnZhbGlkUGFkZGluZ0luc3VmZmlj +aWVudFR5cGVJbmZvcm1hdGlvbkludmFsaWRDb21wb25lbnQECQAABAAAAAQAAACqBAAAU3RkSW8A +AAAECQAABAAAAAQAAAD1BwAATm9uZVNvbWUECQAABAAAAAQAAAC1AAAABAkAAAQAAAAEAAAA7wUA +AE1hYwAECQAABAAAAAQAAADuBQAATWFjTWlzc2luZwAAGgkAAEludmFsaWRNQUNJbnZhbGlkTUFD +TGVuZ3RoTWlzc2luZ01lc3NhZ2VLZXkABAkAAAQAAAAEAAAA9gcAAFRvb0JpZ01lc3NhZ2VHYXAb +CQAACAAAAAgAAAAcCQAARW1wdHlJbnZhbGlkQ2hhcmFjdGVyc0ludmFsaWRNYXRyaXhJZAAAAAQJ +AAAEAAAABAAAAB0JAABJbnZhbGlkTWF0cml4VG9VcmkAAAQJAAAEAAAABAAAAB4JAABJbnZhbGlk +TWF0cml4VXJpBAkAAAQAAAAEAAAAHwkAAEludmFsaWRNeGNVcmkAAAAECQAABAAAAAQAAAAgCQAA +SW52YWxpZFZvaXBWZXJzaW9uSWQECQAABAAAAAQAAAAhCQAASW52YWxpZFNlcnZlck5hbWVJbnZh +bGlkVXRmOE1heGltdW1MZW5ndGhFeGNlZWRlZE1pc3NpbmdDb2xvbk1pc3NpbmdMZWFkaW5nU2ln +aWxNaXNzaW5nT25lVGltZUtleQAAAAQJAAAEAAAABAAAAAYBAABNaXNtYXRjaGVkSWRlbnRpdHlL +ZXkAAAARCQAAIAAAAAEAAABQAQAABAkAAAQAAAAEAAAAZAMAAEludENvbnZlcnRTZXJEZQAECQAA +CAAAAAQAAAAiCQAAIwkAAAQJAAAIAAAABAAAACQJAAAlCQAABAkAAAgAAAAEAAAAJgkAACcJAAAE +CQAACAAAAAQAAAAoCQAAKQkAAAQJAAAIAAAABAAAACoJAAArCQAABAkAAAgAAAAEAAAALAkAAC0J +AAAECQAACAAAAAQAAAAuCQAALwkAAAQJAAAIAAAABAAAADAJAAAxCQAABAkAAAgAAAAEAAAAMgkA +ADMJAAAECQAACAAAAAQAAAA0CQAANQkAAAQJAAAIAAAABAAAADYJAAA3CQAABAkAAAgAAAAEAAAA +OAkAADkJAAAECQAACAAAAAQAAAA6CQAAOwkAAE1lc3NhZ2VTZXJkZUhlbHBlcgAAZGUTAAQAAABo +ZRMABAAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvYmFj +a3Vwcy9tb2QucnMAAFRsEwB2AAAAiQAAABkAAABUbBMAdgAAAIoAAAAdAAAAL2hvbWUvcnVubmVy +Ly5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2Fi +OWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy91dGlsaXRpZXMucnPsbBMAdAAAAEAA +AAA1AAAAVGhlIGRlY29kZWQgcmVjb3Zlcnkga2V5IGhhcyBhbiBpbnZhbGlkIHByZWZpeDogZXhw +ZWN0ZWQgLCBnb3QgAHBtEwA5AAAAqW0TAAYAAABUaGUgcGFyaXR5IGJ5dGUgb2YgdGhlIHJlY292 +ZXJ5IGtleSBkb2Vzbid0IG1hdGNoOiBleHBlY3RlZCDAbRMAPAAAAKltEwAGAAAAVGhlIGRlY29k +ZWQgcmVjb3Zlcnkga2V5IGhhcyBhIGludmFsaWQgbGVuZ3RoOiBleHBlY3RlZCAMbhMAOAAAAKlt +EwAGAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy9iYWNrdXBzL21vZC5yczoyNjNtYXRyaXhfc2RrX2NyeXB0bzo6YmFja3Vwc21lc3NhZ2VkZXZp +Y2VfaWQAAO5uEwAHAAAA9W4TAAkAAAAECQAADAAAAAQAAAC2AQAAPAkAAD0JAAABAAAABwEAAAAA +AABUbhMAgAAAANRuEwAaAAAAAG8TAAIAAAB0wxYAEG8TANRuEwAaAAAAVGwTAHYAAAABAAAAZXZl +bnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9iYWNrdXBz +L21vZC5yczoyNjgBAAAADAEAAAAAAABobxMAgAAAANRuEwAaAAAAAG8TAAIAAACAwxYAEG8TANRu +EwAaAAAAVGwTAHYAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1z +ZGstY3J5cHRvL3NyYy9iYWNrdXBzL21vZC5yczoyODFlcnJvcgAAAO5uEwAHAAAAqHATAAUAAAAB +AAAAGQEAAAMAAAAocBMAgAAAANRuEwAaAAAAsHATAAIAAACMwxYAEG8TANRuEwAaAAAAVGwTAHYA +AAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy9iYWNrdXBzL21vZC5yczozMzBiYWNrdXBfaW5mbwDubhMABwAAAIBxEwALAAAAAQAAAEoBAAAA +AAAAAHETAIAAAADUbhMAGgAAAIxxEwACAAAAmMMWABBvEwDUbhMAGgAAAFRsEwB2AAAAAQAAAGV2 +ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvYmFja3Vw +cy9tb2QucnM6MzkwYmFja3VwX2tleQAA7m4TAAcAAABcchMACgAAAAEAAACGAQAAAgAAANxxEwCA +AAAA1G4TABoAAABochMAAgAAAKTDFgAQbxMA1G4TABoAAABUbBMAdgAAAAEAAABldmVudCAvaG9t +ZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEz +ZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2JhY2t1cHMvbW9kLnJz +OjM5MgEAAACIAQAAAwAAALhyEwCAAAAA1G4TABoAAABochMAAgAAALDDFgAQbxMA1G4TABoAAABU +bBMAdgAAAAEAAABkaXNhYmxlX2JhY2t1cAAAAQAAAJcBAAACAAAAeHMTAA4AAADUbhMAGgAAAGxl +EwAAAAAAvMMWABBvEwDUbhMAGgAAAFRsEwB2AAAAAgAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvYmFja3Vwcy9tb2QucnM6NDA57m4TAAcAAAAB +AAAAmQEAAAEAAADIcxMAgAAAANRuEwAaAAAASHQTAAEAAADIwxYAEG8TANRuEwAaAAAAVGwTAHYA +AAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy9iYWNrdXBzL21vZC5yczo0MTYBAAAAoAEAAAEAAACQdBMAgAAAANRuEwAaAAAASHQTAAEAAADU +wxYAEG8TANRuEwAaAAAAVGwTAHYAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQv +Y2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVz +L21hdHJpeC1zZGstY3J5cHRvL3NyYy9iYWNrdXBzL21vZC5yczo0NDgBAAAAwAEAAAAAAABQdRMA +gAAAANRuEwAaAAAASHQTAAEAAADgwxYAEG8TANRuEwAaAAAAVGwTAHYAAAABAAAAZXZlbnQgL2hv +bWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJh +M2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9iYWNrdXBzL21vZC5y +czo0NTIBAAAAxAEAAAAAAAAQdhMAgAAAANRuEwAaAAAASHQTAAEAAADswxYAEG8TANRuEwAaAAAA +VGwTAHYAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJp +eC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5 +cHRvL3NyYy9iYWNrdXBzL21vZC5yczo0NzdyZXF1ZXN0X2lka2V5cwAA7m4TAAcAAABQdxMACgAA +AFp3EwAEAAAAAQAAAN0BAAAAAAAA0HYTAIAAAADUbhMAGgAAAGB3EwADAAAA+MMWABBvEwDUbhMA +GgAAAFRsEwB2AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9t +YXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2Rr +LWNyeXB0by9zcmMvYmFja3Vwcy9tb2QucnM6NDgxAQAAAOEBAAAAAAAAuHcTAIAAAADUbhMAGgAA +AGB3EwADAAAABMQWABBvEwDUbhMAGgAAAFRsEwB2AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvYmFja3Vwcy9tb2QucnM6NDg5ZXhwZWN0 +ZWRnb3QA7m4TAAcAAAD4eBMACAAAAAB5EwADAAAAAQAAAOkBAAADAAAAeHgTAIAAAADUbhMAGgAA +AAR5EwADAAAAEMQWABBvEwDUbhMAGgAAAFRsEwB2AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvYmFja3Vwcy9tb2QucnM6NDk27m4TAAcA +AABQdxMACgAAAAEAAADwAQAAAwAAAFx5EwCAAAAA1G4TABoAAADceRMAAgAAABzEFgAQbxMA1G4T +ABoAAABUbBMAdgAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +bWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNk +ay1jcnlwdG8vc3JjL2JhY2t1cHMvbW9kLnJzOjUwNwEAAAD7AQAAAwAAACx6EwCAAAAA1G4TABoA +AABIdBMAAQAAACjEFgAQbxMA1G4TABoAAABUbBMAdgAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIv +LmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5 +ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2JhY2t1cHMvbW9kLnJzOjUxMgEAAAAA +AgAAAwAAAOx6EwCAAAAA1G4TABoAAABIdBMAAQAAADTEFgAQbxMA1G4TABoAAABUbBMAdgAAAAEA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2Jh +Y2t1cHMvbW9kLnJzOjUyMAEAAAAIAgAAAAAAAKx7EwCAAAAA1G4TABoAAABochMAAgAAAEDEFgAQ +bxMA1G4TABoAAABUbBMAdgAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1jcnlwdG8vc3JjL2JhY2t1cHMvbW9kLnJzOjUyN2tleV9jb3VudAAAAO5uEwAHAAAA +7HwTAAkAAABadxMABAAAAFxyEwAKAAAAAQAAAA8CAAACAAAAbHwTAIAAAADUbhMAGgAAAPh8EwAE +AAAATMQWABBvEwDUbhMAGgAAAFRsEwB2AAAAAQAAAGZhaWxlZCB0byByZWFkIG9yIHdyaXRlIHRv +IHRoZSBjcnlwdG8gc3RvcmUgWH0TACwAAABkZWNyeXB0aW9uIGZhaWxlZCBsaWtlbHkgYmVjYXVz +ZSBhbiBPbG0gc2Vzc2lvbiBmcm9tICB3aXRoIHNlbmRlciBrZXkgIHdhcyB3ZWRnZWQAAACMfRMA +NQAAAMF9EwARAAAA0n0TAAsAAABkZWNyeXB0aW9uIGZhaWxlZCBiZWNhdXNlIGFuIE9sbSBtZXNz +YWdlIGZyb20gIHdhcyByZXBsYXllZAD4fRMALgAAAMF9EwARAAAAJn4TAA0AAABlbmNyeXB0aW9u +IGZhaWxlZCBiZWNhdXNlIHRoZSBkZXZpY2UgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIE9sbSBzZXNz +aW9uIHdpdGggdXNDYW4ndCBmaW5kIHRoZSByb29tIGtleSB0byBkZWNyeXB0IHRoZSBldmVudCwg +d2l0aGhlbGQgY29kZTogAJp+EwA9AAAAZGVjcnlwdGlvbiBmYWlsZWQgYmVjYXVzZSBvZiBtaXNt +YXRjaGVkIGlkZW50aXR5IGtleXMgb2YgdGhlIHNlbmRpbmcgZGV2aWNlIGFuZCB0aG9zZSByZWNv +cmRlZCBpbiB0aGUgdG8tZGV2aWNlIG1lc3NhZ2V0aGUgRW5jcnlwdGVkIG1lc3NhZ2UgaGFzIGJl +ZW4gZW5jcnlwdGVkIHdpdGggYSB1bnN1cHBvcnRlZCBhbGdvcml0aG0udGhlIHByb3ZpZGVkIEpT +T04gdmFsdWUgaXNuJ3QgYW4gb2JqZWN0dGhlIEVuY3J5cHRlZCBtZXNzYWdlIGRvZXNuJ3QgY29u +dGFpbiBhIGNpcGhlcnRleHQgZm9yIG91ciBkZXZpY2V0aGUgRW5jcnlwdGVkIG1lc3NhZ2UgaXMg +bWlzc2luZyB0aGUgc2lnbmluZyBrZXkgb2YgdGhlIHNlbmRlcnRoZSBFbmNyeXB0ZWQgbWVzc2Fn +ZSBpcyBtaXNzaW5nIHRoZSBzZW5kZXIga2V5dGhlIHNlbmRlciBvZiB0aGUgcGxhaW50ZXh0IGRv +ZXNuJ3QgbWF0Y2ggdGhlIHNlbmRlciBvZiB0aGUgZW5jcnlwdGVkIG1lc3NhZ2UsIGdvdCAsIGV4 +cGVjdGVkIHKAEwBTAAAAxYATAAsAAAB0aGUgcHVibGljIGtleSB0aGF0IHdhcyBwYXJ0IG9mIHRo +ZSBtZXNzYWdlIGRvZXNuJ3QgbWF0Y2ggdGhlIGtleSB3ZSBoYXZlIHN0b3JlZCwgZXhwZWN0ZWQg +AOCAEwBbAAAAqW0TAAYAAAB0aGUgcm9vbSBpZCBvZiB0aGUgcm9vbSBrZXkgZG9lc24ndCBtYXRj +aCB0aGUgcm9vbSBpZCBvZiB0aGUgZGVjcnlwdGVkIGV2ZW50OiBleHBlY3RlZCAATIETAFcAAACp +bRMABgAAAD4JAAAIAAAABAAAAAUBAAB0aGUgc2lnbmF0dXJlIHVzZWQgYW4gdW5zdXBwb3J0ZWQg +YWxnb3JpdGhtdGhlIElEIG9mIHRoZSBzaWduaW5nIGtleSBpcyBpbnZhbGlkdGhlIHNpZ25pbmcg +a2V5IGlzIG1pc3NpbmcgZnJvbSB0aGUgb2JqZWN0IHRoYXQgc2lnbmVkIHRoZSBtZXNzYWdldGhl +IHVzZXIgaWQgb2YgdGhlIHNpZ25pbmcga2V5IGRpZmZlcnMgdXNlciBpZCB0aGF0IHByb3ZpZGVk +IHRoZSBzaWduYXR1cmV0aGUgcHJvdmlkZWQgSlNPTiBvYmplY3QgZG9lc24ndCBjb250YWluIGEg +c2lnbmF0dXJlcyBmaWVsZHRoZSBnaXZlbiBzaWduYXR1cmUgaXMgbm90IHZhbGlkIGFuZCBjYW4n +dCBiZSBkZWNvZGVkdGhlIHNpZ25pbmcga2V5IHRoYXQgdXNlZCB0byBzaWduIHRoZSBvYmplY3Qg +aGFzIGNoYW5nZWQsIG9sZDogLCBuZXc6IAAAAA+DEwA/AAAAToMTAAcAAABGYWlsZWQgdG8gY3Jl +YXRlIGEgbmV3IE9sbSBzZXNzaW9uIGZvciAgLCB0aGUgcmVxdWVzdGVkIG9uZS10aW1lIGtleSBp +c24ndCBhIHNpZ25lZCBjdXJ2ZSBrZXkAAABogxMAJwAAAI+DEwABAAAAkIMTADUAAABUcmllZCB0 +byBjcmVhdGUgYSBuZXcgT2xtIHNlc3Npb24gZm9yICwgYnV0IHRoZSBzaWduZWQgb25lLXRpbWUg +a2V5IGlzIG1pc3NpbmcAAOCDEwAmAAAAj4MTAAEAAAAGhBMAKAAAACwgYnV0IHRoZSBvbmUtdGlt +ZSBrZXkgYWxnb3JpdGhtIGlzIHVuc3VwcG9ydGVkAOCDEwAmAAAAj4MTAAEAAABIhBMALwAAAEZh +aWxlZCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiBhIG9uZS10aW1lIGtleSwga2V5OiAsIHNp +Z25pbmdfa2V5OiA6IJCEEwA3AAAAx4QTAA8AAADWhBMAAgAAAFRyaWVkIHRvIGNyZWF0ZSBhbiBP +bG0gc2Vzc2lvbiBmb3IgLCBidXQgdGhlIGRldmljZSBpcyBtaXNzaW5nIGEgY3VydmUyNTUxOSBr +ZXkA8IQTACMAAACPgxMAAQAAABOFEwAsAAAARXJyb3IgZGVzZXJpYWxpemluZyB0aGUgb25lLXRp +bWUga2V5OiAAAFiFEwAmAAAAVGhlIGdpdmVuIGN1cnZlMjU1MTkga2V5IGlzIG5vdCBhIHZhbGlk +IGtleU9uZVRpbWVLZXlOb3RTaWduZWQAAAQJAAAEAAAABAAAAAkBAABPbmVUaW1lS2V5TWlzc2lu +Z09uZVRpbWVLZXlVbmtub3duSW52YWxpZFNpZ25hdHVyZW9uZV90aW1lX2tleQAAPwkAAAQAAAAE +AAAACwEAAHNpZ25pbmdfa2V5AEAJAAAEAAAABAAAAEEJAAAECQAABAAAAAQAAAAMAQAARGV2aWNl +TWlzc2luZ0N1cnZlS2V5SW52YWxpZEpzb25JbnZhbGlkQ3VydmVLZXlJbmJvdW5kQ3JlYXRpb24A +AAQJAAAEAAAABAAAAA0BAAB0aGUgbmV3IHNldHRpbmdzIHdvdWxkIGNhdXNlIGEgZG93bmdyYWRl +IG9mIGVuY3J5cHRpb24gc2VjdXJpdHl0aGUgbmV3IHNldHRpbmdzIGFyZSBpbnZhbGlkQWNjb3Vu +dFVuc2V0TWlzbWF0Y2hlZEFjY291bnRCCQAAEAAAAAQAAADBAAAABAkAAAQAAAAEAAAAwgAAAElv +VW5waWNrbGluZ0Vycm9yUGlja2xlAAQJAAAEAAAABAAAAMQAAABTZXNzaW9uQ3JlYXRpb24ABAkA +AAQAAAAEAAAAxQAAAElkZW50aWZpZXJWYWxpZGF0aW9uBAkAAAQAAAAEAAAAuAAAAFVuc3VwcG9y +dGVkRGF0YWJhc2VWZXJzaW9uQmFja2VuZAAAAAQJAAAEAAAABAAAAMkAAABJbnZhbGlkTG9ja0dl +bmVyYXRpb24AAAAECQAABAAAAAQAAADKAAAAc3RydWN0IFVuc2lnbmVkRGV2aWNlSW5mb2Rldmlj +ZV9kaXNwbGF5X25hbWVDdXJ2ZTI1NTE5RWQyNTUxOQAAAAQJAAAEAAAABAAAAIwBAABVbmtub3du +c3RydWN0IERldmljZUtleUhlbHBlcnVzZXJfaWRhbGdvcml0aG1zZGVoeWRyYXRlZHNpZ25hdHVy +ZXN1bnNpZ25lZH17S2V5VmVyaWZpY2F0aW9uQWNjZXB0RXZlbnRDb250ZW50bWV0aG9kAEMJAAA4 +AAAABAAAAEQJAAByZWxhdGVzX3RvAABFCQAABAAAAAQAAAB9BwAAbS5zYXMudjFrZXlfYWdyZWVt +ZW50X3Byb3RvY29saGFzaG1lc3NhZ2VfYXV0aGVudGljYXRpb25fY29kZXNob3J0X2F1dGhlbnRp +Y2F0aW9uX3N0cmluZ2NvbW1pdG1lbnRkYXRhIGRpZCBub3QgbWF0Y2ggYW55IHZhcmlhbnQgb2Yg +dW50YWdnZWQgZW51bSBBY2NlcHRNZXRob2QAAPyIEwAWAAAAEokTAAQAAAAWiRMAGwAAADGJEwAb +AAAATIkTAAoAQcSTzgALmRh0cmFuc2FjdGlvbl9pZHJlcXVlc3RpbmdfZGV2aWNlX2lkcmVxdWVz +dF9pZEtleVZlcmlmaWNhdGlvblJlcXVlc3RFdmVudENvbnRlbnRib2R5AABGCQAADAAAAAQAAABH +CQAAZm9ybWF0dGVkAAAASAkAABQAAAAEAAAASQkAAG1ldGhvZHMASgkAAAwAAAAEAAAARgMAAGZy +b21fZGV2aWNlAEsJAAAIAAAABAAAAEQDAAB0bwAARQkAAAQAAAAEAAAAQwUAAGEgc2VxdWVuY2Vh +IG1hcGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4AJuKEwAgAAAAAC9ydXN0Yy9hZWRk +MTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy9zeXMv +cGFsL3dhc20vLi4vdW5zdXBwb3J0ZWQvbG9ja3MvbXV0ZXgucnMAxYoTAGoAAAAUAAAACQAAAHRo +ZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMgYSByZWxlYXNlIGxvYWRAixMAKAAAAC9ydXN0Yy9hZWRk +MTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc3lu +Yy9hdG9taWMucnMAcIsTAE8AAADgDAAAGAAAAHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMgYW4g +YWNxdWlyZS1yZWxlYXNlIGxvYWQAAADQixMAMQAAAHCLEwBPAAAA4QwAABcAAABvdmVyZmxvdyBp +biBEdXJhdGlvbjo6bmV3AAAAHIwTABkAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQz +NzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3JjL3RpbWUucnNAjBMASAAAAMoAAAAVAAAA +RQkAAAgAAAAEAAAATAkAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFs +dWUATQkAAAgAAAAEAAAArgAAAE4JAAAIAAAABAAAAK4AAABNCQAACAAAAAQAAACuAAAATgkAAAgA +AAAEAAAArgAAAE0JAAAIAAAABAAAAK4AAABPCQAAAAAAAAEAAABQCQAAL3J1c3RjL2FlZGQxNzNh +MmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5y +cwAAADSNEwBJAAAAsAcAACkAAABPCQAAAAAAAAEAAAD+BQAATwkAAAAAAAABAAAAUQkAAG1heCBy +ZWNlaXZlcnMAAACwjRMADQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4 +LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3Rva2lvLTEuMzYuMC9zcmMvc3luYy9icm9hZGNh +c3QucnPIjRMAZAAAADQDAAAFAAAAb3ZlcmZsb3fIjRMAZAAAADYDAAAuAAAAYXNzZXJ0aW9uIGZh +aWxlZDogcXVldWVkLmxvYWQoUmVsYXhlZCkAAMiNEwBkAAAAjwMAAB0AAADIjRMAZAAAACUEAAAY +AAAAyI0TAGQAAAAlBAAANwAAAMiNEwBkAAAANgQAABQAAADIjRMAZAAAADYEAAAzAAAAL2hvbWUv +cnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAw +MWYvdG9raW8tMS4zNi4wL3NyYy91dGlsL2xpbmtlZF9saXN0LnJzAADMjhMAZgAAAIIAAAAJAAAA +zI4TAGYAAABkAQAAKgAAAMyOEwBmAAAAdgEAAD0AAADMjhMAZgAAAIgBAABJAAAAb3ZlcmZsb3cg +d2hlbiBzdWJ0cmFjdGluZyBkdXJhdGlvbnMAQIwTAEgAAAC6AwAAHwAAAE5vbmVTb21lRQkAAAQA +AAAEAAAAsgcAAExheW91dEVycm9yVmVyaWZpY2F0aW9uRGF0YWZsb3dfaWRmaXJzdF9tYXN0ZXJf +a2V5AABFCQAAwAAAAAQAAAB3AgAAc2Vjb25kX21hc3Rlcl9rZXlzaGFyZWRfc2VjcmV0AABFCQAA +BAAAAAQAAABAAwAAYGVhcmxpZXJgIGNhbm5vdCBiZSBsYXRlciB0aGFuIGBzZWxmYC4vaG9tZS9y +dW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAx +Zi9pbnN0YW50LTAuMS4xMi9zcmMvd2FzbS5ycwAAWpATAFwAAAAYAAAACQAAAFNlbGZWZXJpZmlj +YXRpb25EYXRhbWFzdGVyX2tleWRldmljZV9rZXlpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJl +YWNoYWJsZSBjb2RlL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVz +LmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1L3NyYy9zZXIucnMAGJETAF8A +AACiAgAAKgAAAHVuZXhwZWN0ZWQgZW1wdHkgYnJvYWRjYXN0IGNoYW5uZWwAAIiREwAiAAAAyI0T +AGQAAABRBQAALQAAAG5hbWVyZXF1ZXN0YWN0aW9ucmVxdWVzdF9jYW5jZWxsYXRpb24AAABFCQAA +BAAAAAQAAAA3BQAARQkAAAQAAAAEAAAAxgAAAEUJAAAEAAAABAAAAIkHAABFCQAABAAAAAQAAABS +CQAARQkAAAQAAAAEAAAAQwMAAEUJAAAEAAAABAAAAFMJAABFCQAABAAAAAQAAABUCQAARQkAAAQA +AAAEAAAAVQkAAEUJAAAEAAAABAAAAFYJAABFCQAABAAAAAQAAABXCQAARQkAAAQAAAAEAAAAWAkA +AEUJAAAEAAAABAAAAFkJAABFCQAABAAAAAQAAABaCQAARQkAAAQAAAAEAAAAWwkAAEUJAAAEAAAA +BAAAAFwJAABFCQAABAAAAAQAAABdCQAARQkAAAQAAAAEAAAAXgkAAEUJAAAEAAAABAAAADoFAABF +CQAABAAAAAQAAAAyBQAARQkAAAQAAAAEAAAAXwkAAEUJAAAEAAAABAAAAGAJAABFCQAABAAAAAQA +AAA0BAAARQkAAAQAAAAEAAAAYQkAAEUJAAAEAAAABAAAAGIJAABFCQAABAAAAAQAAACtBwAAU2Fz +VjEAAABFCQAABAAAAAQAAADnBQAAX0N1c3RvbQBFCQAABAAAAAQAAADoBQAAU2FzVjFDb250ZW50 +YwkAAAwAAAAEAAAAZAkAAGUJAAAIAAAABAAAAGYJAABnCQAADAAAAAQAAABoCQAAaQkAAAwAAAAE +AAAAagkAAGsJAAAIAAAACAAAAGwJAABFCQAABAAAAAQAAABtCQAAU2VsZlZlcmlmaWNhdGlvbk5v +TWFzdGVyS2V5X0N1c3RvbUNvbnRlbnRkYXRhAAAARQkAAAQAAAAEAAAAeQMAAG0uY3Jvc3Nfc2ln +bmluZy5tYXN0ZXJtLmNyb3NzX3NpZ25pbmcudXNlcl9zaWduaW5nbS5jcm9zc19zaWduaW5nLnNl +bGZfc2lnbmluZ20ubWVnb2xtX2JhY2t1cC52MS9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvaWRlbnRpdGllcy91c2VyLnJzU2VjcmV0U2VuZENvbnRlbnQASwkA +AAgAAAAEAAAAewIAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvdmVyaWZpY2F0aW9uL3Nhcy9zYXNfc3RhdGUucnMAAAABAEHoq84ACyNvcmcubWF0cml4Lm1z +YzM3ODMuaGtkZi1obWFjLXNoYTI1NgBBmKzOAAsBAQBBpKzOAAuVAWhrZGYtaG1hYy1zaGEyNTZo +a2RmLWhtYWMtc2hhMjU2LnYyV2UgY2FuIGFsd2F5cyBkZWNvZGUgYSBNYWMgZnJvbSB2b2RvemVt +YWNUlRMAhQAAAKIAAAAWAAAAV2UgY2FuIGFsd2F5cyBkZWNvZGUgb3VyIG5ld2x5IGdlbmVyYXRl +ZCBNYWNUlRMAhQAAALoAAAAWAEHIrc4AC8BNAQIAAFSVEwCFAAAAZwEAAC4AAABJbnZhbGlkIHB1 +YmxpYyBrZXlGaWVsZFNldCBjb3JydXB0ZWQgKHRoaXMgaXMgYSBidWcpVJUTAIUAAADJAgAAEQAA +AENhbGN1bGF0ZWQgU0FTIGNvbW1pdG1lbnQAAAAglxMAGQAAAEUJAAAYAAAABAAAAIIAAABGCQAA +DAAAAAQAAACYAAAARQkAAAQAAAAEAAAAbgkAAEUJAAAEAAAABAAAAG8JAABUlRMAhQAAAGoEAAAk +AAAAVJUTAIUAAAB3BAAAJAAAAFSVEwCFAAAAhAQAACQAAABUlRMAhQAAAJoEAAAkAAAAVJUTAIUA +AADaBAAAJAAAAFSVEwCFAAAABgUAACQAAABUlRMAhQAAACYFAAAkAAAAVJUTAIUAAABjBQAAJAAA +AFSVEwCFAAAAcAUAACQAAABUlRMAhQAAAH0FAAAkAAAAVJUTAIUAAACMBQAAJAAAAFSVEwCFAAAA +ywUAACQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Zl +cmlmaWNhdGlvbi9zYXMvbW9kLnJzAESYEwB/AAAA2QEAAAkAAABBY2NlcHRlZCBTQVMgdmVyaWZp +Y2F0aW9uAAAA1JgTABkAAABFCQAACAAAAAQAAACGAAAARQkAAAQAAAAEAAAAcAkAAESYEwB/AAAA +/AIAAAkAAABTQVMgcmVjZWl2ZWQgYW4gZXZlbnQgYW5kIGNoYW5nZWQgaXRzIHN0YXRlACiZEwAr +AAAARJgTAH8AAAARAwAAEQAAAFRyaWVkIHRvIG1hcmsgYSByZXF1ZXN0IGFzIHNlbnQsIGJ1dCB0 +aGUgcmVxdWVzdCBJRCBkaWRuJ3QgbWF0Y2hsmRMAQAAAAEUJAAAEAAAABAAAANgAAABEmBMAfwAA +ABsDAAAJAAAATWFya2VkIGEgU0FTIHZlcmlmaWNhdGlvbiBIVFRQIHJlcXVlc3QgYXMgc2VudAAA +1JkTAC4AAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Zl +cmlmaWNhdGlvbi9tb2QucnNUaGUgdXNlciBjYW5jZWxsZWQgdGhlIHZlcmlmaWNhdGlvbi5UaGUg +dmVyaWZpY2F0aW9uIHByb2Nlc3MgdGltZWQgb3V0LlRoZSBkZXZpY2UgZG9lcyBub3Qga25vdyBh +Ym91dCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24gSUQuVGhlIGRldmljZSBkb2VzIG5vdCBrbm93IGhv +dyB0byBoYW5kbGUgdGhlIHJlcXVlc3RlZCBtZXRob2QuVGhlIGRldmljZSByZWNlaXZlZCBhbiB1 +bmV4cGVjdGVkIG1lc3NhZ2UuVGhlIGV4cGVjdGVkIGtleSBkaWQgbm90IG1hdGNoIHRoZSB2ZXJp +ZmllZCBvbmVUaGUgZXhwZWN0ZWQgdXNlciBkaWQgbm90IG1hdGNoIHRoZSB2ZXJpZmllZCB1c2Vy +VGhlIHJlY2VpdmVkIG1lc3NhZ2Ugd2FzIGludmFsaWQuQSBtLmtleS52ZXJpZmljYXRpb24ucmVx +dWVzdCB3YXMgYWNjZXB0ZWQgYnkgYSBkaWZmZXJlbnQgZGV2aWNlLlRoZSBoYXNoIGNvbW1pdG1l +bnQgZGlkIG5vdCBtYXRjaC5UaGUgU0FTIGRpZCBub3QgbWF0Y2guVW5rbm93biBjYW5jZWwgcmVh +c29uZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9p +ZGVudGl0aWVzL3VzZXIucnM6MTQ2bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXJt +ZXNzYWdlZXJyb3IAAAAhnRMABwAAACidEwAFAAAARQkAAAwAAAAEAAAAtgEAAHEJAAByCQAAAQAA +AJIAAAAEAAAAepwTAIQAAAD+nBMAIwAAADCdEwACAAAAWMQWAECdEwD+nBMAIwAAALiUEwB6AAAA +AQAAAE93bgBFCQAABAAAAAQAAABzCQAAT3RoZXIAAABFCQAABAAAAAQAAAB0CQAAdmFyaWFudCBp +ZGVudGlmaWVyUmVhZE9ubHlVc2VySWRlbnRpdHl1c2VyX2lkAAAASwkAAAgAAAAEAAAABQEAAHUJ +AAAEAAAABAAAAHYJAABzZWxmX3NpZ25pbmdfa2V5RQkAAAQAAAAEAAAAsAQAAHN0cnVjdCBSZWFk +T25seVVzZXJJZGVudGl0eVJlYWRPbmx5T3duVXNlcklkZW50aXR5AAB1CQAABAAAAAQAAAB3CQAA +dXNlcl9zaWduaW5nX2tleXUJAAAEAAAABAAAAHgJAAB2ZXJpZmllZEUJAAAEAAAABAAAAHkJAABz +dHJ1Y3QgUmVhZE9ubHlPd25Vc2VySWRlbnRpdHlNYXN0ZXJQdWJrZXkAAEUJAAAEAAAABAAAAC0F +AABTZWxmU2lnbmluZ1B1YmtleVVzZXJTaWduaW5nUHVia2V5c3RydWN0IER1bW15RXZlbnRDb250 +ZW50c2VjcmV0c3RydWN0IFNlY3JldFNlbmRDb250ZW50SGtkZkhtYWNTaGEyNTZIa2RmSG1hY1No +YTI1NlYyTXNjMzc4M0hrZGZIbWFjU2hhMjU2VjJBY2NlcHRlZFByb3RvY29sc21lc3NhZ2VfYXV0 +aF9jb2RlAHoJAAABAAAAAQAAAHsJAABzaG9ydF9hdXRoX3N0cmluZwAAAEUJAAAEAAAABAAAAHAI +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Zl +cmlmaWNhdGlvbi9zYXMvc2FzX3N0YXRlLnJzOjcxM21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmlj +YXRpb246OnNhczo6c2FzX3N0YXRlcHVibGljX2tleWNvbnRlbnQAIZ0TAAcAAACOoBMACgAAAEyJ +EwAKAAAAmKATAAcAAAABAAAAyQIAAAIAAADQnxMAjwAAAF+gEwAvAAAAoKATAAQAAABkxBYAQJ0T +AF+gEwAvAAAAVJUTAIUAAAABAAAAQ3JlYXRlZFN0YXJ0ZWRBY2NlcHRlZFdlQWNjZXB0ZWRLZXlS +ZWNlaXZlZEtleVNlbnRLZXlzRXhjaGFuZ2VkQ29uZmlybWVkTWFjUmVjZWl2ZWRXYWl0aW5nRm9y +RG9uZURvbmVDYW5jZWxsZWRldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +bWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNk +ay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9zYXMvbW9kLnJzOjQ3M21hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OnNhc29sZF9zdGF0ZW5ld19zdGF0ZQAAACGdEwAHAAAA248TAAcAAAAb +ohMACQAAACSiEwAJAAAAAQAAANkBAAAAAAAAbqETAIkAAAD3oRMAJAAAADCiEwAEAAAAcMQWAECd +EwD3oRMAJAAAAESYEwB/AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL3Nhcy9tb2QucnM6NTE2ZGV2aWNlX2lkAAAh +nRMABwAAAOqdEwAHAAAAGaMTAAkAAAABAAAABAIAAAAAAACQohMAiQAAAPehEwAkAAAAJKMTAAMA +AAB8xBYAQJ0TAPehEwAkAAAARJgTAH8AAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vc2FzL21vZC5yczo3NjQAAAAB +AAAA/AIAAAAAAAB8oxMAiQAAAPehEwAkAAAAMKITAAQAAACIxBYAQJ0TAPehEwAkAAAARJgTAH8A +AAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy92ZXJpZmljYXRpb24vc2FzL21vZC5yczo3ODUAAAAhnRMABwAAANuPEwAHAAAA5okTAAoAAAAB +AAAAEQMAAAQAAABIpBMAiQAAAPehEwAkAAAA1KQTAAMAAACUxBYAQJ0TAPehEwAkAAAARJgTAH8A +AAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy92ZXJpZmljYXRpb24vc2FzL21vZC5yczo3OTUAAAAhnRMABwAAANuPEwAHAAAAG6ITAAkAAAAk +ohMACQAAAOaJEwAKAAAAAQAAABsDAAABAAAALKUTAIkAAAD3oRMAJAAAALilEwAFAAAAoMQWAECd +EwD3oRMAJAAAAESYEwB/AAAAAQAAAHZlcmlmaWVkX2RldmljZXN8CQAACAAAAAQAAAB9CQAAdmVy +aWZpZWRfbWFzdGVyX2tleXNFCQAABAAAAAQAAAB+CQAAY2FuY2VsbGVkX2J5X3VzAHoJAAABAAAA +AQAAAH8JAABjYW5jZWxfY29kZQCACQAADAAAAAQAAACpBAAAcmVhc29uAABFCQAABAAAAAQAAACq +BAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92 +ZXJpZmljYXRpb24vbW9kLnJzOjUyNW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb24hnRMA +BwAAAAEAAAANAgAAAwAAALimEwCFAAAAPacTAB8AAABcpxMAAQAAAKzEFgBAnRMAPacTAB8AAAAM +mhMAewAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL3ZlcmlmaWNhdGlvbi9tb2QucnM6NTM1AAAAAQAAABcCAAAEAAAApKcTAIUAAAA9pxMA +HwAAACSjEwADAAAAuMQWAECdEwA9pxMAHwAAAAyaEwB7AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5l +ci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9h +YjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21vZC5yczo1 +NjAAAAAhnRMABwAAAOqdEwAHAAAAAQAAADACAAADAAAAbKgTAIUAAAA9pxMAHwAAAPSoEwACAAAA +xMQWAECdEwA9pxMAHwAAAAyaEwB7AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0 +L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRl +cy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21vZC5yczo1NjgAAAABAAAAOAIA +AAQAAABEqRMAhQAAAD2nEwAfAAAA9KgTAAIAAADQxBYAQJ0TAD2nEwAfAAAADJoTAHsAAAABAAAA +ZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0x +ZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJp +ZmljYXRpb24vbW9kLnJzOjY0NAAAAAEAAACEAgAAAAAAAAyqEwCFAAAAPacTAB8AAAD0qBMAAgAA +ANzEFgBAnRMAPacTAB8AAAAMmhMAewAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9tb2QucnM6NjU4AAAAAQAAAJIC +AAACAAAA1KoTAIUAAAA9pxMAHwAAAPSoEwACAAAA6MQWAECdEwA9pxMAHwAAAAyaEwB7AAAAAQAA +AGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVy +aWZpY2F0aW9uL21vZC5yczo2NjgAAAABAAAAnAIAAAMAAACcqxMAhQAAAD2nEwAfAAAA9KgTAAIA +AAD0xBYAQJ0TAD2nEwAfAAAADJoTAHsAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vbW9kLnJzOjY3NwAAAAEAAACl +AgAAAgAAAGSsEwCFAAAAPacTAB8AAAD0qBMAAgAAAADFFgBAnRMAPacTAB8AAAAMmhMAewAAAAEA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3Zl +cmlmaWNhdGlvbi9tb2QucnM6Njk0AAAAAQAAALYCAAACAAAALK0TAIUAAAA9pxMAHwAAACSjEwAD +AAAADMUWAECdEwA9pxMAHwAAAAyaEwB7AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28v +Z2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2Ny +YXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVyaWZpY2F0aW9uL21vZC5yczo3MDMAAAABAAAA +vwIAAAMAAAD0rRMAhQAAAD2nEwAfAAAAJKMTAAMAAAAYxRYAQJ0TAD2nEwAfAAAADJoTAHsAAAAB +AAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92 +ZXJpZmljYXRpb24vbW9kLnJzOjcxMwAAAAEAAADJAgAAAAAAALyuEwCFAAAAPacTAB8AAAAkoxMA +AwAAACTFFgBAnRMAPacTAB8AAAAMmhMAewAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdv +L2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9j +cmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9tb2QucnM6NzIzAAAAAQAA +ANMCAAACAAAAhK8TAIUAAAA9pxMAHwAAACSjEwADAAAAMMUWAECdEwA9pxMAHwAAAAyaEwB7AAAA +AQAAAAcAAAAHAAAACAAAAAoAAAALAAAABwAAAA0AAAAJAAAACwAAAA4AAAAEAAAACQAAAAChEwAH +oRMADqETABahEwAgoRMAK6ETADKhEwA/oRMASKETAFOhEwBhoRMAZaETACQAAAAjAAAAOAAAADwA +AAAqAAAALwAAADEAAAAhAAAAQAAAACIAAAAWAAAAh5oTAKuaEwDOmhMABpsTAEKbEwBsmxMAm5sT +AMybEwDtmxMALZwTAE+cEwAOAAAAEAAAABcAAABEnxMAUp8TAGKfEwCICQAAAAAAAAEAAACJCQAA +iAkAAAAAAAABAAAAigkAAIgJAAAAAAAAAQAAAA8GAACICQAAAAAAAAEAAAAPBgAAiAkAAAAAAAAB +AAAADwYAAIgJAAAAAAAAAQAAAA8GAACICQAAAAAAAAEAAACfAQAAiAkAAAAAAAABAAAAiwkAAIgJ +AAAAAAAAAQAAAIwJAACICQAAAAAAAAEAAACNCQAAiAkAAAAAAAABAAAAjgkAAIgJAAAAAAAAAQAA +AI8JAACICQAAAAAAAAEAAACQCQAAiAkAAAAAAAABAAAAkQkAAIgJAAAAAAAAAQAAAJIJAAB9ey9o +b21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJh +MTUwMDFmL2RpZ2VzdC0wLjEwLjcvc3JjL2NvcmVfYXBpL2N0X3ZhcmlhYmxlLnJzAAAADrITAGsA +AAB8AAAAJAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p +by02ZjE3ZDIyYmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3JjL2xpYi5yc4yyEwBgAAAA +pAAAABgAAACMshMAYAAAAKQAAAAgAAAAjLITAGAAAACuAAAAFAAAAIyyEwBgAAAArgAAABoAAACM +shMAYAAAAJ0AAAAYAAAAjLITAGAAAACdAAAAHwAAAIyyEwBgAAAAnQAAACUAAACMshMAYAAAAC0B +AAAiAAAAjLITAGAAAAA4AQAAHgAAAIyyEwBgAAAANQEAABgAAABrZXlfYWdyZWVtZW50X3Byb3Rv +Y29sc2hhc2hlc21lc3NhZ2VfYXV0aGVudGljYXRpb25fY29kZXNzaG9ydF9hdXRoZW50aWNhdGlv +bl9zdHJpbmdzdHJ1Y3QgU2FzVjFDb250ZW50IHdpdGggNCBlbGVtZW50cwDgsxMAIwAAAJMJAAAI +AAAABAAAAAQAAABrZXlfYWdyZWVtZW50X3Byb3RvY29saGFzaG1lc3NhZ2VfYXV0aGVudGljYXRp +b25fY29kZWNvbW1pdG1lbnRzdHJ1Y3QgU2FzVjFDb250ZW50IHdpdGggNSBlbGVtZW50cwAAW7QT +ACMAAABtZXRob2RzZWNyZXRzdHJ1Y3QgUmVjaXByb2NhdGVWMUNvbnRlbnQgd2l0aCAxIGVsZW1l +bnQAAJS0EwAqAAAAlAkAAAwAAAAEAAAAlQkAAJYJAACkAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0 +aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQCICQAAAAAAAAEAAACXCQAAL3J1c3Rj +L2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9z +cmMvc3RyaW5nLnJzACi1EwBLAAAAMwoAAA4AAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2 +NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3JjL2NoYXIvbWV0aG9kcy5yc4S1EwBQ +AAAABQcAAA0AAACYCQAAJAAAAAQAAACZCQAAiAkAAAAAAAABAAAAmgkAAJsJAAAEAAAABAAAAKoA +AACcCQAAGAAAAAgAAACdCQAAiAkAAAAAAAABAAAAngkAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAo +KWAgb24gYW4gYEVycmAgdmFsdWUAnwkAAAgAAAAEAAAAoAkAAEVycm9yQmFzZTY0AJMJAAAEAAAA +BAAAACoDAABEZWNyeXB0aW9uAACTCQAABAAAAAQAAABVBQAAU2VyaWFsaXphdGlvbgAAAJMJAAAE +AAAABAAAAMYAAABQYWRFcnJvcpMJAAAEAAAABAAAAKEJAACTCQAABAAAAAQAAADIAAAAkwkAAAQA +AAAEAAAAuQAAAEludmFsaWRMZW5ndGhNaXNzaW5nVmVyc2lvblZlcnNpb24AAJMJAAAEAAAABAAA +AKIJAACTCQAABAAAAAQAAABbBQAAUHVibGljS2V5AAAAkwkAAAQAAAAEAAAAugAAAEludmFsaWRT +ZXNzaW9uRGVjb2RlkwkAAAQAAAAEAAAAXAUAAEVuY29kZQAAkwkAAAQAAAAEAAAAXQUAAC9ob21l +L3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUw +MDFmL2Jsb2NrLXBhZGRpbmctMC4zLjMvc3JjL2xpYi5yc5y3EwBgAAAA0gAAABwAAABOb25lU29t +ZZMJAAAEAAAABAAAALUAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5j +cmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jaXBoZXItMC40LjQvc3JjL2Jsb2NrLnJzACS4EwBb +AAAAIgIAADUAAABlbm91Z2ggc3BhY2UgZm9yIGVuY3J5cHRpbmcgaXMgYWxsb2NhdGVkJLgTAFsA +AACwAQAADgAAAElkZW50aXR5S2V5c2VkMjU1MTkAkwkAAMAAAAAEAAAAdwIAAGN1cnZlMjU1MTkA +AJMJAAAEAAAABAAAAAYBAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2Rl +L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJi +YmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1L3NyYy9zZXIucnMAMLkTAF8AAACiAgAAKgAAAC9o +b21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJh +MTUwMDFmL3NoYTItMC4xMC44L3NyYy9jb3JlX2FwaS5ycwAAAKC5EwBdAAAAQgAAABMAAABn5glq +ha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gW4gJAAAAAAAAAQAAABQAAACICQAAAAAAAAEAAAAU +AAAAiAkAAAAAAAABAAAACgYAAIgJAAAAAAAAAQAAABQAAACICQAAAAAAAAEAAACjCQAAiAkAAAAA +AAABAAAADwYAAIgJAAAAAAAAAQAAAFEJAACICQAAAAAAAAEAAACdAQAAiAkAAAAAAAABAAAApAkA +AIgJAAAAAAAAAQAAAKUJAACICQAAAAAAAAEAAACmCQAAV2Ugc2hvdWxkIGJlIGFibGUgdG8gZXhw +YW5kIHRoZSBzaGFyZWQgc2VjcmV0IGludG8gODAgYnl0ZXMvaG9tZS9ydW5uZXIvLmNhcmdvL2dp +dC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0 +ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL2JhY2t1cHMva2V5cy9jb21wYXQucnMAAAAbuxMAfgAA +ADsAAAAOAAAAG7sTAH4AAABBAAAALwAAABu7EwB+AAAAQQAAABEAAAAbuxMAfgAAAEIAAAAvAAAA +G7sTAH4AAABCAAAAEQAAABu7EwB+AAAAQwAAACoAAAAbuxMAfgAAAEMAAAAMAAAAZGVoeWRyYXRl +ZC1kZXZpY2UtcGlja2xlLWtleVdlIHNob3VsZCBiZSBhYmxlIHRvIGV4cGFuZCB0aGUgMzIgYnl0 +ZSBwaWNrbGUga2V5L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0 +LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3Ny +Yy9kZWh5ZHJhdGVkX2RldmljZXMucnMAWrwTAH0AAAB0AQAACgAAAHVzZXJfaWRkZXZpY2VfaWRz +ZW5kZXJldmVudF90eXBlbWVzc2FnZV9pZC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0 +cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgt +c2RrLWNyeXB0by9zcmMvb2xtL2FjY291bnQucnMAQZT7zgALAQEAQaD7zgALRYi9EwCUvRMAQWNj +b3VudGlkZW50aXR5X2tleXOTCQAA4AAAAAQAAACnCQAAc2hhcmVkAACoCQAAAQAAAAEAAACpCQAA +AgBB8PvOAAujngFGaWVsZFNldCBjb3JydXB0ZWQgKHRoaXMgaXMgYSBidWcpAAASvRMAdgAAAAwC +AAARAAAAVXBkYXRlZCB1cGxvYWRlZCBvbmUtdGltZSBrZXkgY291bnQgIC0+IC4AAAAkvhMAJAAA +AEi+EwAEAAAATL4TAAEAAACTCQAAGAAAAAQAAACCAAAAEr0TAHYAAABQAgAADQAAAFRoZSBmYWxs +YmFjayBrZXkgZWl0aGVyIGV4cGlyZWQgb3Igd2UgZGlkbid0IGhhdmUgb25lOiBnZW5lcmF0ZWQg +YSBuZXcgZmFsbGJhY2sga2V5Loi+EwBUAAAAkwkAAAQAAAAEAAAA0wAAAFdlIHNob3VsZCBiZSBh +YmxlIHRvIGNvbnZlcnQgYSBmcmVzaGx5IGNyZWF0ZWQgQWNjb3VudCBpbnRvIGEgbGlib2xtIHBp +Y2tsZQASvRMAdgAAAK4CAAAOAAAAQ291bGRuJ3Qgc2VyaWFsaXplIG91ciBkZWh5ZHJhdGVkIGRl +dmljZSBkYXRhAAAAEr0TAHYAAACxAgAALAAAAGRldmljZSBrZXkgaXMgYWx3YXlzIHNhZmUgdG8g +c2VyaWFsaXplAAASvRMAdgAAAOwCAAAwAAAATmV3bHkgY3JlYXRlZCBkZXZpY2Uga2V5cyBjYW4g +YWx3YXlzIGJlIHNpZ25lZAAAEr0TAHYAAADvAgAADgAAAENhbid0IHNlcmlhbGl6ZSBhIHNpZ25l +ZCBrZXkSvRMAdgAAAGsDAAAzAAAATmV3bHkgY3JlYXRlZCBvbmUtdGltZSBrZXlzIGNhbiBhbHdh +eXMgYmUgc2lnbmVkEr0TAHYAAABsAwAADgAAAHNlc3Npb25faWQAABK9EwB2AAAABQQAAAkAAABD +cmVhdGluZyBhIG5ldyBPbG0gc2Vzc2lvbiBmcm9tIGEgcHJlLWtleSBtZXNzYWdlAAAAkMATADEA +AAASvRMAdgAAAAsEAAAJAAAARGVjcnlwdGVkIGFuIE9sbSBtZXNzYWdlIGZyb20gYSBuZXcgT2xt +IHNlc3Npb24A3MATAC8AAACTCQAABAAAAAQAAACqCQAAEr0TAHYAAACrBAAADQAAAE1hcmtpbmcg +YWNjb3VudCBhcyBzaGFyZWQAAAA0wRMAGQAAABK9EwB2AAAArwQAAAkAAABNYXJraW5nIG9uZS10 +aW1lIGtleXMgYXMgcHVibGlzaGVkAABowRMAIgAAABK9EwB2AAAAoQUAACoAAABDb3VsZG4ndCBz +ZXJpYWxpemUgY3Jvc3Mgc2lnbmluZyBrZXlzL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tv +dXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJp +eC1zZGstY3J5cHRvL3NyYy90eXBlcy9jcm9zc19zaWduaW5nL2NvbW1vbi5ycwAAycETAIUAAABK +AAAALAAAAPCfkLZEb2fwn5CxQ2F08J+mgUxpb27wn5COSG9yc2Xwn6aEVW5pY29ybvCfkLdQaWfw +n5CYRWxlcGhhbnTwn5CwUmFiYml08J+QvFBhbmRh8J+Qk1Jvb3N0ZXLwn5CnUGVuZ3VpbvCfkKJU +dXJ0bGXwn5CfRmlzaPCfkJlPY3RvcHVz8J+mi0J1dHRlcmZsefCfjLdGbG93ZXLwn4yzVHJlZfCf +jLVDYWN0dXPwn42ETXVzaHJvb23wn4yPR2xvYmXwn4yZTW9vbuKYge+4j0Nsb3Vk8J+UpUZpcmXw +n42MQmFuYW5h8J+NjkFwcGxl8J+Nk1N0cmF3YmVycnnwn4y9Q29ybvCfjZVQaXp6YfCfjoJDYWtl +4p2k77iPSGVhcnTwn5iAU21pbGV58J+kllJvYm908J+OqUhhdPCfkZNHbGFzc2Vz8J+Up1NwYW5u +ZXLwn46FU2FudGHwn5GNVGh1bWJzIFVw4piC77iPVW1icmVsbGHijJtIb3VyZ2xhc3Pij7BDbG9j +a/CfjoFHaWZ08J+SoUxpZ2h0IEJ1bGLwn5OVQm9va+Kcj++4j1BlbmNpbPCfk45QYXBlcmNsaXDi +nILvuI9TY2lzc29yc/CflJJMb2Nr8J+UkUtlefCflKhIYW1tZXLimI7vuI9UZWxlcGhvbmXwn4+B +RmxhZ/CfmoJUcmFpbvCfmrJCaWN5Y2xl4pyI77iPQWVyb3BsYW5l8J+agFJvY2tldPCfj4ZUcm9w +aHnimr1CYWxs8J+OuEd1aXRhcvCfjrpUcnVtcGV08J+UlEJlbGzimpNBbmNob3Lwn46nSGVhZHBo +b25lc/Cfk4FGb2xkZXLwn5OMUGluVHJ5aW5nIHRvIGZldGNoIGFuIGVtb2ppIG91dHNpZGUgdGhl +IGFsbG93ZWQgcmFuZ2UA4cQTADIAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +bWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNk +ay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlvbi9zYXMvaGVscGVycy5ycwAcxRMAgwAAAJwAAAAOAAAA +TUFUUklYX0tFWV9WRVJJRklDQVRJT05fTUFDALDFEwAbAAAAhLUTAAAAAACEtRMAAAAAAIS1EwAA +AAAAhLUTAAAAAAAcxRMAgwAAANAAAAAFAAAAUmVjZWl2ZWQgYSBrZXkudmVyaWZpY2F0aW9uLm1h +YyBldmVudAAAAATGEwAlAAAAkwkAAAQAAAAEAAAAhAAAAJMJAAAEAAAABAAAAIUAAAAsS0VZX0lE +U4S1EwAAAAAAVcYTAAcAAAAcxRMAgwAAANsAAAAJAAAAQ2hlY2tpbmcgYSBTQVMgTUFDAAB8xhMA +EgAAAJMJAAAEAAAABAAAAKQEAACEtRMAAAAAAIS1EwAAAAAAHMUTAIMAAADpAAAADQAAAFN1Y2Nl +c3NmdWxseSB2ZXJpZmllZCBhIGRldmljZSBrZXkAAMjGEwAiAAAAkwkAAAQAAAAEAAAAqwkAABzF +EwCDAAAA9QAAABEAAABTdWNjZXNzZnVsbHkgdmVyaWZpZWQgYSBtYXN0ZXIga2V5AAAUxxMAIgAA +ABzFEwCDAAAA+QAAAA0AAABLZXkgSUQgIGluIE1BQyBldmVudCBmcm9tICAgZG9lc24ndCBiZWxv +bmcgdG8gYW55IGRldmljZSBvciB1c2VyIGlkZW50aXR5AAAAUMcTAAcAAABXxxMAEwAAAGrHEwAB +AAAAa8cTAC4AAAA6AAAAhLUTAAAAAAC8xxMAAQAAAHwAAACEtRMAAAAAANDHEwABAAAA0McTAAEA +AABNQVRSSVhfS0VZX1ZFUklGSUNBVElPTl9TQVN87McTABwAAADQxxMAAQAAANDHEwABAAAAHMUT +AIMAAABxAQAABQAAAEdlbmVyYXRlZCBhIFNBUyBleHRyYSBpbmZvOiAwyBMAHAAAAEZhaWxlZCBk +ZWNyeXB0aW5nLCBpbnZhbGlkIHBhZGRpbmc6IFTIEwAkAAAAVGhlIE1BQyBvZiB0aGUgY2lwaGVy +dGV4dCBkaWRuJ3QgcGFzcyB2YWxpZGF0aW9uIAAAAIDIEwAxAAAAVGhlIG1lc3NhZ2UgY291bGQg +bm90IGJlZW4gZGVjb2RlZDogvMgTACQAAABUaGUgbWVzc2FnZSdzIGVwaGVtZXJhbCBDdXJ2ZTI1 +NTE5IGtleSBjb3VsZCBub3QgYmVlbiBkZWNvZGVkOiAA6MgTAD8AAABUaGUgZGVjcnlwdGVkIG1l +c3NhZ2UgaXNuJ3QgdmFsaWQgSlNPTjogMMkTACgAAABUaGUgc2VsZi1zaWduaW5nIGtleSBpcyBt +aXNzaW5nLCBjYW4ndCBjcmVhdGUgYSBkZWh5ZHJhdGVkIGRldmljZXJlY2VpdmVfZXZlbnRzbWF0 +cml4X3Nka19jcnlwdG86OmRlaHlkcmF0ZWRfZGV2aWNlc3JlaHlkcmF0ZWRfZGV2aWNlX2lkb3Jp +Z2luYWxfZGV2aWNlX2lkAADovBMABwAAANTJEwAUAAAA6MkTABIAAACTCQAADAAAAAQAAAC2AQAA +rAkAAK0JAAABAAAA2wAAAAIAAAChyRMADgAAAK/JEwAlAAAA/MkTAAMAAAA8xRYAFMoTAK/JEwAl +AAAAWrwTAH0AAAACAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21h +dHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGst +Y3J5cHRvL3NyYy9kZWh5ZHJhdGVkX2RldmljZXMucnM6MjMxbWVzc2FnZQAA88oTAAcAAAABAAAA +5wAAAAAAAABsyhMAhwAAAK/JEwAlAAAA/MoTAAEAAABIxRYAFMoTAK/JEwAlAAAAWrwTAH0AAAAB +AAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9k +ZWh5ZHJhdGVkX2RldmljZXMucnM6MjU0cm9vbV9rZXlfY291bnQAAADzyhMABwAAAMvLEwAOAAAA +AQAAAP4AAAAAAAAARMsTAIcAAACvyRMAJQAAANzLEwACAAAAVMUWABTKEwCvyRMAJQAAAFq8EwB9 +AAAAAQAAAGtleXNfZm9yX3VwbG9hZADovBMABwAAAO+8EwAJAAAAr70TAA0AAAABAAAAMgEAAAIA +AAAszBMADwAAAK/JEwAlAAAAPMwTAAMAAABgxRYAFMoTAK/JEwAlAAAAWrwTAH0AAAACAAAAZXZl +bnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5 +MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9kZWh5ZHJh +dGVkX2RldmljZXMucnM6MzMwAAEAAABKAQAAAAAAAJTMEwCHAAAAr8kTACUAAAD8yhMAAQAAAGzF +FgAUyhMAr8kTACUAAABavBMAfQAAAAEAAABVbnN1cHBvcnRlZEFsZ29yaXRobUludmFsaWRLZXlJ +ZJMJAAAEAAAABAAAALgAAABNaXNzaW5nU2lnbmluZ0tleVVzZXJJZE1pc21hdGNoTm90QW5PYmpl +Y3ROb1NpZ25hdHVyZUZvdW5kVmVyaWZpY2F0aW9uRXJyb3JJbnZhbGlkS2V5SW52YWxpZFNpZ25h +dHVyZVNpZ25pbmdLZXlDaGFuZ2VkAACuCQAABAAAAAQAAACvCQAAkwkAAAQAAAAEAAAAvQAAAEpz +b25FcnJvcgAAAJMJAAAEAAAABAAAAL4AAABTdG9yZUVycm9yAACTCQAABAAAAAQAAAC/AAAAd2l0 +aF9zdG9yZW1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lZWQyNTUxOV9rZXljdXJ2ZTI1NTE5X2tl +eQAAAOi8EwAHAAAA77wTAAkAAACAzhMACwAAAIvOEwAOAAAAL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzAAABAAAA+QAAAAIAAABczhMACgAA +AGbOEwAaAAAAnM4TAAQAAAB4xRYAFMoTAGbOEwAaAAAAvM4TAHIAAAACAAAAZXZlbnQgL2hvbWUv +cnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2Qy +N2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzOjI2OQEA +AAANAQAAAQAAAHDPEwB8AAAAZs4TABoAAAD8yhMAAQAAAITFFgAUyhMAZs4TABoAAAC8zhMAcgAA +AAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qt +c2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3Jj +L21hY2hpbmUucnM6Mjk2AQAAACgBAAABAAAALNATAHwAAABmzhMAGgAAAPzKEwABAAAAkMUWABTK +EwBmzhMAGgAAALzOEwByAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvbWFjaGluZS5yczozMDhtYXN0ZXJfa2V5AADzyhMABwAAAGTREwAK +AAAAAQAAADQBAAABAAAA6NATAHwAAABmzhMAGgAAAHDREwACAAAAnMUWABTKEwBmzhMAGgAAALzO +EwByAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgt +cnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0 +by9zcmMvbWFjaGluZS5yczozMTIBAAAAOAEAAAEAAADA0RMAfAAAAGbOEwAaAAAA/MoTAAEAAACo +xRYAFMoTAGbOEwAaAAAAvM4TAHIAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQv +Y2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVz +L21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzOjU2OAEAAAA4AgAAAgAAAHzSEwB8AAAA +Zs4TABoAAAD8yhMAAQAAALTFFgAUyhMAZs4TABoAAAC8zhMAcgAAAAEAAABldmVudCAvaG9tZS9y +dW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3 +YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL21hY2hpbmUucnM6NTkyAQAA +AFACAAACAAAAONMTAHwAAABmzhMAGgAAAPzKEwABAAAAwMUWABTKEwBmzhMAGgAAALzOEwByAAAA +AQAAAGdldF9taXNzaW5nX3Nlc3Npb25zAQAAAJwCAAACAAAA9NMTABQAAABmzhMAGgAAAIS1EwAA +AAAAzMUWABTKEwBmzhMAGgAAALzOEwByAAAAAgAAAGhhbmRsZV9rZXlyb29tX2lkAAAAUtQTAAcA +AAB0wBMACgAAAAEAAADjAgAAAgAAAEjUEwAKAAAAZs4TABoAAABc1BMAAgAAANjFFgAUyhMAZs4T +ABoAAAC8zhMAcgAAAAIAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +bWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNk +ay1jcnlwdG8vc3JjL21hY2hpbmUucnM6NzY2AQAAAP4CAAACAAAArNQTAHwAAABmzhMAGgAAAPzK +EwABAAAA5MUWABTKEwBmzhMAGgAAALzOEwByAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvbWFjaGluZS5yczo3NzABAAAAAgMAAAMAAABo +1RMAfAAAAGbOEwAaAAAA/MoTAAEAAADwxRYAFMoTAGbOEwAaAAAAvM4TAHIAAAABAAAAZXZlbnQg +L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5Mjdm +ODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJz +Ojc4MAEAAAAMAwAAAwAAACTWEwB8AAAAZs4TABoAAAD8yhMAAQAAAPzFFgAUyhMAZs4TABoAAAC8 +zhMAcgAAAAEAAABhZGRfcm9vbV9rZXlhbGdvcml0aG0AAADs1hMACQAAAAEAAAAUAwAAAgAAAODW +EwAMAAAAZs4TABoAAAD41hMAAQAAAAjGFgAUyhMAZs4TABoAAAC8zhMAcgAAAAIAAABldmVudCAv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4 +MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL21hY2hpbmUucnM6 +ODAzAQAAACMDAAADAAAAQNcTAHwAAABmzhMAGgAAAPzKEwABAAAAFMYWABTKEwBmzhMAGgAAALzO +EwByAAAAAQAAAGhhbmRsZV9kZWNyeXB0ZWRfdG9fZGV2aWNlX2V2ZW50c2VuZGVyX2tleQAAHNgT +AAoAAAD+vBMACgAAAAEAAADSAwAAAgAAAPzXEwAgAAAAZs4TABoAAAAo2BMAAgAAACDGFgAUyhMA +Zs4TABoAAAC8zhMAcgAAAAIAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291 +dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4 +LXNkay1jcnlwdG8vc3JjL21hY2hpbmUucnM6OTkxAQAAAN8DAAABAAAAeNgTAHwAAABmzhMAGgAA +APzKEwABAAAALMYWABTKEwBmzhMAGgAAALzOEwByAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvbWFjaGluZS5yczoxMDIzAAAAAQAAAP8D +AAABAAAANNkTAH0AAABmzhMAGgAAAPzKEwABAAAAOMYWABTKEwBmzhMAGgAAALzOEwByAAAAAQAA +AGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvbWFj +aGluZS5yczoxMDI2AAAAAQAAAAIEAAADAAAA9NkTAH0AAABmzhMAGgAAAPzKEwABAAAARMYWABTK +EwBmzhMAGgAAALzOEwByAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvbWFjaGluZS5yczoxMDM1AAAAAQAAAAsEAAAEAAAAtNoTAH0AAABm +zhMAGgAAAPzKEwABAAAAUMYWABTKEwBmzhMAGgAAALzOEwByAAAAAQAAAG9yZy5tYXRyaXgubXNn +aWRzdHJ1Y3QgQ29udGVudFN0dWJzdHJ1Y3QgQ29udGVudFN0dWIgd2l0aCAxIGVsZW1lbnQAltsT +ACEAAAB0eXBlY29udGVudHN0cnVjdCBUb0RldmljZVN0dWJzdHJ1Y3QgVG9EZXZpY2VTdHViIHdp +dGggMyBlbGVtZW50cwAAAN7bEwAjAAAAcmVjZWl2ZV90b19kZXZpY2VfZXZlbnQA+LwTAAYAAAD+ +vBMACgAAAAi9EwAKAAAAAQAAAFoEAAACAAAADNwTABcAAABmzhMAGgAAACTcEwADAAAAXMYWABTK +EwBmzhMAGgAAALzOEwByAAAAAgAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNr +b3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRy +aXgtc2RrLWNyeXB0by9zcmMvbWFjaGluZS5yczoxMTI3AAAAAQAAAGcEAAADAAAAfNwTAH0AAABm +zhMAGgAAAPzKEwABAAAAaMYWABTKEwBmzhMAGgAAALzOEwByAAAAAQAAAGV2ZW50IC9ob21lL3J1 +bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdi +Yi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvbWFjaGluZS5yczoxMTMzAAAA +AQAAAG0EAAABAAAAPN0TAH0AAABmzhMAGgAAAPzKEwABAAAAdMYWABTKEwBmzhMAGgAAALzOEwBy +AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvbWFjaGluZS5yczoxMTQ3ZXJyb3IAAPPKEwAHAAAAed4TAAUAAAABAAAAewQAAAQAAAD83RMA +fQAAAGbOEwAaAAAAgN4TAAIAAACAxhYAFMoTAGbOEwAaAAAAvM4TAHIAAAABAAAAZXZlbnQgL2hv +bWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJh +M2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzOjEx +ODIAAAABAAAAngQAAAMAAADQ3hMAfQAAAGbOEwAaAAAA/MoTAAEAAACMxhYAFMoTAGbOEwAaAAAA +vM4TAHIAAAABAAAAcmVjZWl2ZV9zeW5jX2NoYW5nZXMBAAAAuwQAAAIAAACQ3xMAFAAAAGbOEwAa +AAAAhLUTAAAAAACYxhYAFMoTAGbOEwAaAAAAvM4TAHIAAAACAAAAZXZlbnQgL2hvbWUvcnVubmVy +Ly5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2Fi +OWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzOjEyNjEAAAABAAAA +7QQAAAQAAADk3xMAfQAAAGbOEwAaAAAAgN4TAAIAAACkxhYAFMoTAGbOEwAaAAAAvM4TAHIAAAAB +AAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9t +YWNoaW5lLnJzOjE0MDQAAAABAAAAfAUAAAEAAACk4BMAfQAAAGbOEwAaAAAA/MoTAAEAAACwxhYA +FMoTAGbOEwAaAAAAvM4TAHIAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzOjE0MTgAAAABAAAAigUAAAEAAABk4RMAfQAA +AGbOEwAaAAAA/MoTAAEAAAC8xhYAFMoTAGbOEwAaAAAAvM4TAHIAAAABAAAAZXZlbnQgL2hvbWUv +cnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2Qy +N2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzOjE0MjEA +AAABAAAAjQUAAAEAAAAk4hMAfQAAAGbOEwAaAAAA/MoTAAEAAADIxhYAFMoTAGbOEwAaAAAAvM4T +AHIAAAABAAAAZGVjcnlwdF9yb29tX2V2ZW50ZXZlbnRfaWRvcmlnaW5fc2VydmVyX3RzAABS1BMA +BwAAAPbiEwAIAAAA/uITABAAAAD4vBMABgAAAOzWEwAJAAAAdMATAAoAAAAc2BMACgAAAAEAAAAM +BgAAAgAAAOTiEwASAAAAZs4TABoAAAAQ4xMABwAAANTGFgAUyhMAZs4TABoAAAC8zhMAcgAAAAIA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL21h +Y2hpbmUucnM6MTU3NAAAAAEAAAAmBgAAAwAAAIjjEwB9AAAAZs4TABoAAAD8yhMAAQAAAODGFgAU +yhMAZs4TABoAAAC8zhMAcgAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1jcnlwdG8vc3JjL21hY2hpbmUucnM6MTU5NwAAAAEAAAA9BgAAAwAAAEjkEwB9AAAA +Zs4TABoAAAD8yhMAAQAAAOzGFgAUyhMAZs4TABoAAAC8zhMAcgAAAAEAAABnZXRfZGV2aWNldGlt +ZW91dAAAAOi8EwAHAAAA77wTAAkAAAAS5RMABwAAAAEAAACxBgAAAgAAAAjlEwAKAAAAZs4TABoA +AAAc5RMAAwAAAPjGFgAUyhMAZs4TABoAAAC8zhMAcgAAAAIAAABnZXRfaWRlbnRpdHnovBMABwAA +ABLlEwAHAAAAAQAAAMkGAAACAAAAdOUTAAwAAABmzhMAGgAAAIDlEwACAAAABMcWABTKEwBmzhMA +GgAAALzOEwByAAAAAgAAAGdldF91c2VyX2RldmljZXMBAAAA7QYAAAIAAADQ5RMAEAAAAGbOEwAa +AAAAgOUTAAIAAAAQxxYAFMoTAGbOEwAaAAAAvM4TAHIAAAACAAAAZXZlbnQgL2hvbWUvcnVubmVy +Ly5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2Fi +OWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9tYWNoaW5lLnJzOjE4OTkAAAABAAAA +awcAAAMAAAAg5hMAfQAAAGbOEwAaAAAAgN4TAAIAAAAcxxYAFMoTAGbOEwAaAAAAvM4TAHIAAAAB +AAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNk +ay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9t +YWNoaW5lLnJzOjIxMDQAAADzyhMABwAAAFLUEwAHAAAAAQAAADgIAAADAAAA4OYTAH0AAABmzhMA +GgAAAGDnEwACAAAAKMcWABTKEwBmzhMAGgAAALzOEwByAAAAAQAAAE9sbTNESGtleQAAAJMJAAAE +AAAABAAAAAsBAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL29sbS9hY2NvdW50LnJzOjIwMW1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQA +88oTAAcAAABS1BMABwAAAOzWEwAJAAAAAQAAAMkAAAAAAAAAzOcTAIAAAABM6BMAHwAAAGzoEwAD +AAAANMcWABTKEwBM6BMAHwAAABK9EwB2AAAAAQAAAHN0cnVjdCBQaWNrbGVkQWNjb3VudGV2ZW50 +IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3 +ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2FjY291 +bnQucnM6NTI0AAAAAQAAAAwCAAABAAAA2egTAIAAAABM6BMAHwAAAPzKEwABAAAAQMcWABTKEwBM +6BMAHwAAABK9EwB2AAAAAQAAABK9EwB2AAAAOwIAAAkAAABHZW5lcmF0ZWQgbmV3IG9uZS10aW1l +IGtleXMArOkTABsAAACTCQAABAAAAAQAAACNAAAAkwkAAAQAAAAEAAAAsAkAAGdlbmVyYXRlX29u +ZV90aW1lX2tleXNfaWZfbmVlZGVkAQAAACYCAAACAAAA8OkTACAAAABM6BMAHwAAAIS1EwAAAAAA +TMcWABTKEwBM6BMAHwAAABK9EwB2AAAAAgAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0 +L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRl +cy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2FjY291bnQucnM6NTcxY291bnRkaXNjYXJkZWRf +a2V5c2NyZWF0ZWRfa2V5cwDzyhMABwAAANDqEwAFAAAA1eoTAA4AAADj6hMADAAAAAEAAAA7AgAA +AQAAAFDqEwCAAAAATOgTAB8AAADw6hMABAAAAFjHFgAUyhMATOgTAB8AAAASvRMAdgAAAAEAAABl +dmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFm +NDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9h +Y2NvdW50LnJzOjU5MnJlbW92ZWRfZmFsbGJhY2tfa2V588oTAAcAAADQ6xMAFAAAAAEAAABQAgAA +AQAAAFDrEwCAAAAATOgTAB8AAADk6xMAAgAAAGTHFgAUyhMATOgTAB8AAAASvRMAdgAAAAEAAAAS +vRMAdgAAAJ4DAAAFAAAAkwkAAAQAAAAEAAAAsQkAABK9EwB2AAAAvgMAAAkAAABGaW5pc2hlZCBz +ZWFyY2hpbmcgZm9yIGEgdmFsaWQgcHJlLWtleSBidW5kbGUAAABk7BMALQAAAJMJAAAEAAAABAAA +ALIJAABmaW5kX3ByZV9rZXlfYnVuZGxlYWxnb3JpdGhtcwAAAOi8EwAHAAAA77wTAAkAAAC/7BMA +CgAAAAEAAACeAwAAAgAAAKzsEwATAAAATOgTAB8AAADM7BMAAwAAAHDHFgAUyhMATOgTAB8AAAAS +vRMAdgAAAAIAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL29sbS9hY2NvdW50LnJzOjk1OHJlc3VsdAAA88oTAAcAAACk7RMABgAAAAEAAAC+AwAA +AAAAACTtEwCAAAAATOgTAB8AAACs7RMAAgAAAHzHFgAUyhMATOgTAB8AAAASvRMAdgAAAAEAAABl +dmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFm +NDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9h +Y2NvdW50LnJzOjEwMjkAAAABAAAABQQAAAAAAAD87RMAgQAAAEzoEwAfAAAA/MoTAAEAAACIxxYA +FMoTAEzoEwAfAAAAEr0TAHYAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vYWNjb3VudC5yczoxMDM1c2Vzc2lvbvPKEwAHAAAAQe8T +AAcAAAABAAAACwQAAAEAAADA7hMAgQAAAEzoEwAfAAAASO8TAAIAAACUxxYAFMoTAEzoEwAfAAAA +Er0TAHYAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJp +eC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5 +cHRvL3NyYy9vbG0vYWNjb3VudC5yczoxMTIwAAAA88oTAAcAAAAc2BMACgAAAAEAAABgBAAAAgAA +AJjvEwCBAAAATOgTAB8AAAAc8BMAAgAAAKDHFgAUyhMATOgTAB8AAAASvRMAdgAAAAEAAABkZWNy +eXB0X29sbV92MQAA+LwTAAYAAAAc2BMACgAAAAEAAAB0BAAAAgAAAGzwEwAOAAAATOgTAB8AAAB8 +8BMAAgAAAKzHFgAUyhMATOgTAB8AAAASvRMAdgAAAAIAAABldmVudCAvaG9tZS9ydW5uZXIvLmNh +cmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRm +Ny9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL29sbS9hY2NvdW50LnJzOjExNDgAAAABAAAA +fAQAAAMAAADM8BMAgQAAAEzoEwAfAAAA/MoTAAEAAAC4xxYAFMoTAEzoEwAfAAAAEr0TAHYAAAAB +AAAAZGVjcnlwdF90b19kZXZpY2VfZXZlbnQAAQAAAIoEAAACAAAAkPETABcAAABM6BMAHwAAAPjW +EwABAAAAxMcWABTKEwBM6BMAHwAAABK9EwB2AAAAAgAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3 +L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2FjY291bnQucnM6MTE2OAAAAAEAAACQ +BAAAAAAAAOjxEwCBAAAATOgTAB8AAAD8yhMAAQAAANDHFgAUyhMATOgTAB8AAAASvRMAdgAAAAEA +AABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2Rr +LTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL29s +bS9hY2NvdW50LnJzOjExNzkAAAABAAAAmwQAAAMAAACs8hMAgQAAAEzoEwAfAAAA/MoTAAEAAADc +xxYAFMoTAEzoEwAfAAAAEr0TAHYAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQv +Y2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVz +L21hdHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vYWNjb3VudC5yczoxMTk1AAAAAQAAAKsEAAABAAAA +cPMTAIEAAABM6BMAHwAAAPzKEwABAAAA6McWABTKEwBM6BMAHwAAABK9EwB2AAAAAQAAAGV2ZW50 +IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3 +ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2FjY291 +bnQucnM6MTE5OQAAAAEAAACvBAAAAQAAADT0EwCBAAAATOgTAB8AAAD8yhMAAQAAAPTHFgAUyhMA +TOgTAB8AAAASvRMAdgAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291 +dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4 +LXNkay1jcnlwdG8vc3JjL29sbS9hY2NvdW50LnJzOjEyNDVlcnJvcnNfYnlfb2xtX3Nlc3Npb24A +APPKEwAHAAAAefUTABUAAAABAAAA3QQAAAMAAAD49BMAgQAAAEzoEwAfAAAAkPUTAAIAAAAAyBYA +FMoTAEzoEwAfAAAAEr0TAHYAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy9vbG0vYWNjb3VudC5yczoxMjc5AAAA88oTAAcAAAB0wBMACgAA +AAEAAAD/BAAAAwAAAOD1EwCBAAAATOgTAB8AAABk9hMAAgAAAAzIFgAUyhMATOgTAB8AAAASvRMA +dgAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1 +c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8v +c3JjL29sbS9hY2NvdW50LnJzOjEyOTUAAAABAAAADwUAAAMAAAC09hMAgQAAAEzoEwAfAAAA/MoT +AAEAAAAYyBYAFMoTAEzoEwAfAAAAEr0TAHYAAAABAAAAZGVjcnlwdF9hbmRfcGFyc2Vfb2xtX21l +c3NhZ2UAAAD4vBMABgAAABzYEwAKAAAA88oTAAcAAABB7xMABwAAAHTAEwAKAAAAAQAAACYFAAAC +AAAAePcTAB0AAABM6BMAHwAAAJj3EwAFAAAAJMgWABTKEwBM6BMAHwAAABK9EwB2AAAAAgAAAGV2 +ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvb2xtL2Fj +Y291bnQucnM6MTMyOQAAAAEAAAAxBQAAAAAAAAD4EwCBAAAATOgTAB8AAAD8yhMAAQAAADDIFgAU +yhMATOgTAB8AAAASvRMAdgAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0 +cml4LXNkay1jcnlwdG8vc3JjL29sbS9hY2NvdW50LnJzOjEzNDMAAAABAAAAPwUAAAMAAADE+BMA +gQAAAEzoEwAfAAAAgN4TAAIAAAA8yBYAFMoTAEzoEwAfAAAAEr0TAHYAAAABAAAAQWNjb3VudFVu +c2V0TWlzbWF0Y2hlZEFjY291bnRleHBlY3RlZAAAALMJAAAQAAAABAAAAMEAAABnb3QAkwkAAAQA +AAAEAAAAwgAAAElvAACTCQAABAAAAAQAAAD1BwAAVW5waWNrbGluZ0Vycm9yUGlja2xlAAAAkwkA +AAQAAAAEAAAAxAAAAFNlc3Npb25DcmVhdGlvbgCTCQAABAAAAAQAAADFAAAASWRlbnRpZmllclZh +bGlkYXRpb25VbnN1cHBvcnRlZERhdGFiYXNlVmVyc2lvbkJhY2tlbmQAAACTCQAABAAAAAQAAADJ +AAAASW52YWxpZExvY2tHZW5lcmF0aW9uAAAAkwkAAAQAAAAEAAAAygAAAGNhbid0IHNhdmUvbG9h +ZCBzZXNzaW9ucyBvciBncm91cCBzZXNzaW9ucyBpbiB0aGUgc3RvcmUgYmVmb3JlIGFuIGFjY291 +bnQgaXMgc3RvcmVkdGhlIGFjY291bnQgaW4gdGhlIHN0b3JlIGRvZXNuJ3QgbWF0Y2ggdGhlIGFj +Y291bnQgaW4gdGhlIGNvbnN0cnVjdG9yOiBleHBlY3RlZCAsIGdvdCAAAADz+hMAUAAAALzHEwAB +AAAAQ/sTAAYAAAC8xxMAAQAAAEFuIG9iamVjdCBmYWlsZWQgdG8gYmUgZGVjcnlwdGVkIHdoaWxl +IHVucGlja2xpbmdUaGUgZGF0YWJhc2UgZm9ybWF0IGNoYW5nZWQgaW4gYW4gaW5jb21wYXRpYmxl +IHdheSwgY3VycmVudCB2ZXJzaW9uOiAsIGxhdGVzdCB2ZXJzaW9uOiCd+xMARQAAAOL7EwASAAAA +aW52YWxpZCBsb2NrIGdlbmVyYXRpb246IAAAAAT8EwAZAAAAdXNhZ2VrZXlzc2lnbmF0dXJlc3N0 +cnVjdCBDcm9zc1NpZ25pbmdLZXlFZDI1NTE5kwkAAAQAAAAEAAAAjAEAAFVua25vd25mYWxsYmFj +a2V2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGst +MWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvdmVy +aWZpY2F0aW9uL3Nhcy9oZWxwZXJzLnJzOjIwOG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnNhczo6aGVscGVycwAAAPPKEwAHAAAA+LwTAAYAAADvvBMACQAAAAEAAADQAAAAAAAAAHf8 +EwCNAAAABP0TAC0AAAA0/RMAAwAAAEjIFgAUyhMABP0TAC0AAAAcxRMAgwAAAAEAAABldmVudCAv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4 +MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlv +bi9zYXMvaGVscGVycy5yczoyMTlrZXlfaWQA88oTAAcAAAD4vBMABgAAAO+8EwAJAAAAGf4TAAYA +AAABAAAA2wAAAAAAAACM/RMAjQAAAAT9EwAtAAAAIP4TAAQAAABUyBYAFMoTAAT9EwAtAAAAHMUT +AIMAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL21hdHJpeC1y +dXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21hdHJpeC1zZGstY3J5cHRv +L3NyYy92ZXJpZmljYXRpb24vc2FzL2hlbHBlcnMucnM6MjMzAAAA88oTAAcAAAD4vBMABgAAABn+ +EwAGAAAAAQAAAOkAAAAAAAAAgP4TAI0AAAAE/RMALQAAABD/EwADAAAAYMgWABTKEwAE/RMALQAA +ABzFEwCDAAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRy +aXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNy +eXB0by9zcmMvdmVyaWZpY2F0aW9uL3Nhcy9oZWxwZXJzLnJzOjI0NQAAAAEAAAD1AAAAAAAAAGj/ +EwCNAAAABP0TAC0AAAAQ/xMAAwAAAGzIFgAUyhMABP0TAC0AAAAcxRMAgwAAAAEAAABldmVudCAv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4 +MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3ZlcmlmaWNhdGlv +bi9zYXMvaGVscGVycy5yczoyNDkAAAABAAAA+QAAAAMAAAA4ABQAjQAAAAT9EwAtAAAA/MoTAAEA +AAB4yBYAFMoTAAT9EwAtAAAAHMUTAIMAAAABAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy92ZXJpZmljYXRpb24vc2FzL2hlbHBlcnMucnM6MzY5 +AAAAAQAAAHEBAAAAAAAACAEUAI0AAAAE/RMALQAAAPzKEwABAAAAhMgWABTKEwAE/RMALQAAABzF +EwCDAAAAAQAAAGDCEwBnwhMAbsITAHbCEwB/whMAisITAJHCEwCdwhMAp8ITALDCEwC7whMAxsIT +ANDCEwDYwhMA48ITAPDCEwD6whMAAsMTAAzDEwAYwxMAIcMTACnDEwA0wxMAPMMTAEbDEwBPwxMA +XcMTAGXDEwBuwxMAdsMTAIHDEwCLwxMAlMMTAJvDEwCmwxMAscMTALrDEwDHwxMA1cMTAOHDEwDp +wxMA8cMTAP/DEwAHxBMAE8QTACDEEwAuxBMANsQTAD3EEwBHxBMAVsQTAF7EEwBnxBMAcsQTAIHE +EwCLxBMAlcQTAJzEEwCmxBMAscQTALnEEwDCxBMA0MQTANrEEwAEAAAABAAAAAQAAAAEAAAABAAA +AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA +BAAAAAQAAAAGAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAYAAAAEAAAABAAAAAQAAAAE +AAAABAAAAAQAAAAEAAAABgAAAAMAAAADAAAABAAAAAQAAAAEAAAABgAAAAQAAAAGAAAABAAAAAQA +AAAEAAAABgAAAAQAAAAEAAAABAAAAAYAAAAEAAAABAAAAAMAAAAEAAAABAAAAAQAAAADAAAABAAA +AAQAAAAEAAAAZMITAGvCEwBywhMAesITAIPCEwCOwhMAlcITAKHCEwCrwhMAtMITAL/CEwDKwhMA +1MITANzCEwDnwhMA9MITAP7CEwAGwxMAEMMTABzDEwAlwxMAL8MTADjDEwBAwxMASsMTAFPDEwBh +wxMAacMTAHLDEwB8wxMAhcMTAI/DEwCYwxMAn8MTAKrDEwC1wxMAvsMTAM3DEwDYwxMA5MMTAO3D +EwD1wxMAA8QTAA3EEwAXxBMAJsQTADLEEwA6xBMAQcQTAE3EEwBaxBMAYsQTAGvEEwB4xBMAhcQT +AI/EEwCYxBMAoMQTAKrEEwC1xBMAvMQTAMbEEwDUxBMA3sQTAAMAAAADAAAABAAAAAUAAAAHAAAA +AwAAAAgAAAAGAAAABQAAAAcAAAAHAAAABgAAAAQAAAAHAAAACQAAAAYAAAAEAAAABgAAAAgAAAAF +AAAABAAAAAUAAAAEAAAABgAAAAUAAAAKAAAABAAAAAUAAAAEAAAABQAAAAYAAAAFAAAAAwAAAAcA +AAAHAAAABQAAAAkAAAAIAAAACQAAAAUAAAAEAAAACgAAAAQAAAAGAAAACQAAAAgAAAAEAAAAAwAA +AAYAAAAJAAAABAAAAAUAAAAHAAAACQAAAAYAAAAGAAAABAAAAAYAAAAHAAAABAAAAAYAAAAKAAAA +BgAAAAMAAABTZXJ2ZXJOb3RpY2VNZXNzYWdlRXZlbnRDb250ZW50Ym9keQC0CQAADAAAAAQAAAC1 +CQAAc2VydmVyX25vdGljZV90eXBlAAC2CQAACAAAAAQAAAC3CQAAYWRtaW5fY29udGFjdAAAALgJ +AAAMAAAABAAAALkJAABsaW1pdF90eXBlAAC6CQAABAAAAAQAAAC7CQAAY2FsbGVkIGBSZXN1bHQ6 +OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQC8CQAACAAAAAQAAACuAAAAL3J1c3RjL2FlZGQx +NzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvdmVj +L21vZC5yc6gGFABMAAAAJwgAACQAAABOb25lU29tZboJAAAEAAAABAAAAMoAAAC6CQAABAAAAAQA +AACXCAAAaW52YWxpZCBzZWVrIHRvIGEgbmVnYXRpdmUgb3Igb3ZlcmZsb3dpbmcgcG9zaXRpb24A +ACwHFAAyAAAAFAAAAE9rAAC6CQAABAAAAAQAAAC9CQAARXJyALoJAAAEAAAABAAAAL4JAAC6CQAA +BAAAAAQAAAC/CQAAugkAAAQAAAAEAAAAAgEAAFNlc3Npb25EZXNjcmlwdGlvbnNlc3Npb25fdHlw +ZXNkcENhbmRpZGF0ZWNhbmRpZGF0ZXNkcF9taWRzZHBfbV9saW5lX2luZGV4AAC6CQAABAAAAAQA +AAChCAAAQ2FsbEFuc3dlckV2ZW50Q29udGVudGFuc3dlcsAJAAAYAAAABAAAAMEJAABjYWxsX2lk +AMIJAAAIAAAABAAAABUIAABwYXJ0eV9pZMMJAAAIAAAABAAAAMQJAAB2ZXJzaW9uALoJAAAEAAAA +BAAAABYIAADFCQAACAAAAAgAAADFCAAAxgkAAAwAAAAEAAAAxwkAALoJAAAEAAAABAAAAMgJAABD +YWxsSW52aXRlRXZlbnRDb250ZW50bGlmZXRpbWVvZmZlcmludml0ZWUAADwIFAAHAAAAVAgUAAgA +AADKCBQACAAAANIIFAAFAAAAbAgUAAcAAADXCBQABwAAAFYwVjFfQ3VzdG9tALoJAAAEAAAABAAA +AMsIAABDYWxsQ2FuZGlkYXRlc0V2ZW50Q29udGVudGNhbmRpZGF0ZXPJCQAADAAAAAQAAADKCQAA +TWVnb2xtVjFCYWNrdXBLZXlrZXkvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0 +cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1j +cnlwdG8vc3JjL2JhY2t1cHMva2V5cy9iYWNrdXAucnMAAHQJFAB+AAAAWgAAACMAAAB0CRQAfgAA +AGIAAAAkAAAARmllbGRTZXQgY29ycnVwdGVkICh0aGlzIGlzIGEgYnVnKS9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvY2FjaGVzLnJzAAAANgoUAHcA +AAA7AQAAEQAAAFJldGFpbmluZyBzdGlsbC13YWl0aW5nIHRhc2vAChQAHAAAALoJAAAYAAAABAAA +AIIAAAC6CQAABAAAAAQAAACEAAAAugkAAAQAAAAEAAAAQggAALoJAAAEAAAABAAAAIgAAAA2ChQA +dwAAADABAAARAAAAUmVtb3ZpbmcgY29tcGxldGVkIHdhaXRpbmcgdGFzawA0CxQAHwAAADYKFAB3 +AAAAKgEAABEAAAByZW1vdmluZyBleHBpcmVkIHdhaXRpbmcgdGFzawAAAGwLFAAdAAAAywkAAEgA +AAAIAAAAzAkAAM0JAABIAAAACAAAAM4JAADPCQAASAAAAAgAAADQCQAAAAEAQUJDREVGR0hJSktM +TU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL/////// +//////////////////////////////////////////////////8+////PzQ1Njc4OTo7PD3///// +////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4v +MDEyM/////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////8A//////////8IDRQAQaCa0AALnRMvaG9tZS9ydW5uZXIv +LmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90b2tp +by1zdHJlYW0tMC4xLjE1L3NyYy93cmFwcGVycy9icm9hZGNhc3QucnMAIA0UAG8AAAAoAAAAXAAA +AGBhc3luYyBmbmAgcmVzdW1lZCBhZnRlciBjb21wbGV0aW9uANEJAAAMAAAABAAAANIJAADTCQAA +pAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVk +bHkA1AkAAAAAAAABAAAA1QkAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0 +Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAkDhQASwAAADMKAAAOAAAAcnVt +YV9jb21tb246OmVuY3J5cHRpb246Ok9uZVRpbWVLZXlydW1hX2NvbW1vbjo6ZW5jcnlwdGlvbjo6 +RGV2aWNlS2V5c3J1bWFfZXZlbnRzOjplbnVtczo6QW55VG9EZXZpY2VFdmVudENvbnRlbnQAAADW +CQAABAAAAAQAAADXCQAA2AkAAAQAAAAEAAAAqgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAg +b24gYW4gYEVycmAgdmFsdWUA2QkAAAgAAAAEAAAArgAAANkJAAAIAAAABAAAAK4AAADZCQAACAAA +AAQAAACuAAAA2gkAAAgAAAAEAAAArgAAANsJAAAIAAAABAAAAK4AAADcCQAACAAAAAQAAACuAAAA +2QkAAAgAAAAEAAAArgAAANkJAAAIAAAABAAAAK4AAADZCQAACAAAAAQAAACuAAAA2QkAAAgAAAAE +AAAArgAAANkJAAAIAAAABAAAAK4AAADdCQAACAAAAAQAAACuAAAA3gkAAAgAAAAEAAAArgAAAN8J +AAAIAAAABAAAAK4AAADgCQAACAAAAAQAAACuAAAA4QkAAAgAAAAEAAAArgAAAOIJAAAIAAAABAAA +AK4AAADjCQAACAAAAAQAAACuAAAA2QkAAAgAAAAEAAAArgAAAOQJAAAIAAAABAAAAK4AAADZCQAA +CAAAAAQAAACuAAAA2QkAAAgAAAAEAAAArgAAAOUJAAAIAAAABAAAAK4AAADmCQAACAAAAAQAAACu +AAAA5wkAAAgAAAAEAAAArgAAAEVycm9yL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMv +aW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdG9raW8tMS4zNi4wL3NyYy9zeW5jL211 +dGV4LnJzAAAA1RAUAGAAAACyAQAAMwAAANUQFABgAAAAswEAABsAAADVEBQAYAAAAIsCAAAdAAAA +aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZdUQFABgAAAAkQIAAA0AAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJi +YTE1MDAxZi90b2tpby0xLjM2LjAvc3JjL3N5bmMvcndsb2NrLnJzAAAAoBEUAGEAAACwAQAAOAAA +AKARFABhAAAAsQEAABsAAACgERQAYQAAALUBAAARAAAAoBEUAGEAAAAFAwAAOgAAAKARFABhAAAA +BgMAABsAAACgERQAYQAAAAoDAAARAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMv +aW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdG9raW8tMS4zNi4wL3NyYy9zeW5jL2Jy +b2FkY2FzdC5yc2QSFABkAAAA8QQAADoAAADoCQAABAAAAAQAAAAqAwAAU2lnbmF0dXJlAAAA6AkA +AAQAAAAEAAAAuQAAAOkJAABJbnRDb252ZXJ0U2VyRGUA6AkAAAQAAAAEAAAAxgAAAFJlcXVlc3Rz +aWduZWRfa2V5cwAA6AkAAAQAAAAEAAAA6gkAAFZlcnNpb24A6wkAAAEAAAABAAAA7AkAAOgJAAAE +AAAABAAAAKsBAABSZWFk6AkAAAQAAAAEAAAA9QcAAEJhc2U2NFB1YmxpY0tleQDoCQAABAAAAAQA +AAC6AAAAbS5jcm9zc19zaWduaW5nLm1hc3Rlcm0uY3Jvc3Nfc2lnbmluZy51c2VyX3NpZ25pbmdt +LmNyb3NzX3NpZ25pbmcuc2VsZl9zaWduaW5nbS5tZWdvbG1fYmFja3VwLnYxU2lnbmVkS2V5cwAA +6AkAAAQAAAAEAAAA7QkAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgt +cnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0 +by9zcmMvYmFja3Vwcy9rZXlzL2RlY3J5cHRpb24ucnMAACQUFACCAAAAfQAAABEAAAAvaG9tZS9y +dW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3 +YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL2NhY2hlcy5ycwC4 +FBQAdwAAADsAAAAOAAAAuBQUAHcAAAA3AAAANwAAAPQOFAAAAAAA9A4UAAAAAAD0DhQAAAAAAC9o +b21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3Zjgy +YTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvbWVtb3J5 +c3RvcmUucnNoFRQAfAAAAHUAAAA7AAAAaBUUAHwAAACEAAAADgAAAGgVFAB8AAAAiQAAACgAAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4 +MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL21vZC5y +cxQWFAB0AAAARQEAACkAAABCYWNrdXBEZWNyeXB0aW9uS2V5ABQWFAB0AAAAiQMAACEAAAACAEHI +rdAAC7kvRXhwZWN0ZWQgY3Jvc3Mgc2lnbmluZyBrZXkgdXNhZ2UgIHdhcyBub3QgZm91bmQAyBYU +ACEAAADpFhQADgAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVz +dC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNyeXB0by9z +cmMvdmVyaWZpY2F0aW9uL2V2ZW50X2VudW1zLnJzQ2FuJ3Qgc2VyaWFsaXplIGNvbnRlbnQAAAgX +FACDAAAArgEAABEAAABDYW4ndCBjYW5vbmljYWxpemUgY29udGVudAAACBcUAIMAAACuAQAAPgAA +AFVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgAOAXFAAXAAAAQ29udGVudCBpcyBtaXNzaW5nIGZyb20g +dGhlIHJlcXVlc3QwLjcuMCMYFAAFAAAA7gkAAAgAAAAEAAAA7wkAAGgVFAB8AAAAlQAAACAAAABo +FRQAfAAAAJQAAAA9AAAA7gkAAAgAAAAEAAAA8AkAAGgVFAB8AAAAmQAAACkAAABoFRQAfAAAAJgA +AABSAAAA8QkAADgAAAAEAAAA8gkAAGgVFAB8AAAAnAAAAEAAAADzCQAASAAAAAgAAAD0CQAAaBUU +AHwAAACiAAAAIwAAAGgVFAB8AAAAoAAAAFEAAAD1CQAA0AMAAAgAAAD2CQAAaBUUAHwAAACoAAAA +QgAAAGgVFAB8AAAAswAAADoAAABoFRQAfAAAALoAAAA6AAAAaBUUAHwAAADBAAAAUAAAAGgVFAB8 +AAAAwgAAAE4AAABoFRQAfAAAANYAAAA+AAAAaBUUAHwAAADdAAAATgAAAGgVFAB8AAAA7QAAADsA +AADuCQAAEAAAAAQAAAD3CQAAaBUUAHwAAAD0AAAAYAAAAO4JAAAYAAAABAAAAPgJAABoFRQAfAAA +APwAAAAuAAAA7gkAABgAAAAEAAAA+QkAAGgVFAB8AAAACAEAAA4AAABoFRQAfAAAAAQBAAAvAAAA +7gkAAAgAAAAEAAAA+gkAAGgVFAB8AAAADQEAAFQAAAD7CQAAFAAAAAQAAAD8CQAAaBUUAHwAAAAR +AQAASwAAAP0JAAAYAAAABAAAAP4JAABoFRQAfAAAABsBAAArAAAA7gkAABAAAAAEAAAA/wkAAGgV +FAB8AAAAKAEAABUAAAAACgAAEAAAAAQAAAABCgAAaBUUAHwAAAAzAQAANgAAAPEJAAA4AAAABAAA +AAIKAABoFRQAfAAAADsBAAA8AAAA7gkAABAAAAAEAAAAAwoAAGgVFAB8AAAAQwEAADAAAABoFRQA +fAAAAEIBAAAvAAAA7gkAAAgAAAAEAAAABAoAAGgVFAB8AAAARwEAACYAAABoFRQAfAAAAEYBAABE +AAAA7gkAABAAAAAEAAAABQoAAGgVFAB8AAAASwEAACQAAABoFRQAfAAAAEoBAABZAAAA7gkAABgA +AAAEAAAABgoAAGgVFAB8AAAAVQEAACkAAADuCQAAEAAAAAQAAAAHCgAAaBUUAHwAAABcAQAAOQAA +AO4JAAAQAAAABAAAAAgKAABoFRQAfAAAAGEBAAAjAAAAaBUUAHwAAABgAQAAYwAAAO4JAAAMAAAA +BAAAAAkKAABoFRQAfAAAAGgBAAAOAAAAaBUUAHwAAABkAQAAYQAAAO4JAAAQAAAABAAAAAoKAABo +FRQAfAAAAHIBAAAuAAAAaBUUAHwAAABxAQAAKAAAAO4JAAAMAAAABAAAAAsKAABoFRQAfAAAAH4B +AAAOAAAAaBUUAHwAAAB4AQAAKAAAAGgVFAB8AAAAgAEAAD0AAADuCQAACAAAAAQAAAAMCgAAaBUU +AHwAAACHAQAADgAAAGgVFAB8AAAAgwEAAE4AAADuCQAAEAAAAAQAAAANCgAAaBUUAHwAAACPAQAA +NgAAAGgVFAB8AAAAkgEAAC8AAABoFRQAfAAAAI4BAABfAAAA7gkAAAwAAAAEAAAADgoAAGgVFAB8 +AAAAnwEAAA4AAABoFRQAfAAAAJsBAAAnAAAA7gkAAAwAAAAEAAAADwoAAGgVFAB8AAAApgEAACMA +AABoFRQAfAAAAKUBAABXAAAA7gkAABAAAAAEAAAAEAoAAGgVFAB8AAAArAEAACYAAABoFRQAfAAA +AKsBAABZAAAA7gkAABAAAAAEAAAAEQoAAGgVFAB8AAAAsAEAACYAAABoFRQAfAAAAK8BAABMAAAA +EgoAABwAAAAEAAAAEwoAAGgVFAB8AAAAtAEAACQAAABoFRQAfAAAALMBAABPAAAA7gkAABAAAAAE +AAAAFAoAAGgVFAB8AAAAuQEAACQAAABoFRQAfAAAALgBAABCAAAA7gkAABwAAAAEAAAAFQoAAGgV +FAB8AAAAxQEAACMAAABoFRQAfAAAAMIBAAAXAAAAZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3Jh +dGVzL21hdHJpeC1zZGstY3J5cHRvL3NyYy9zdG9yZS9tb2QucnM6MjEybWF0cml4X3Nka19jcnlw +dG86OnN0b3JlbWVzc2FnZXVzZXJfaWSWHhQABwAAAJ0eFAAHAAAA6AkAAAwAAAAEAAAAtgEAABYK +AAAXCgAAAQAAANQAAAADAAAAAB4UAH4AAAB+HhQAGAAAAKQeFAACAAAAkMgWALQeFAB+HhQAGAAA +ABQWFAB0AAAAAQAAAFRoZSBwdWJsaWMga2V5IG9mIHRoZSBpbXBvcnRlZCBwcml2YXRlIGtleSBk +b2Vzbid0IG1hdGNoIHRvIHRoZSBwdWJsaWMga2V5IHRoYXQgd2FzIHVwbG9hZGVkIHRvIHRoZSBz +ZXJ2ZXJzdHJ1Y3QgUm9vbVNldHRpbmdzZXZlbnQgL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL21hdHJpeC1ydXN0LXNkay0xZjQ5MjdmODJhM2QyN2JiL2FiOWU0ZjcvY3JhdGVzL21h +dHJpeC1zZGstY3J5cHRvL3NyYy9zdG9yZS9tb2QucnM6MTE3MXNlY3JldAAAlh4UAAcAAAAIIBQA +BgAAAAEAAACTBAAAAwAAAIkfFAB/AAAAfh4UABgAAAAQIBQAAgAAAJzIFgC0HhQAfh4UABgAAAAU +FhQAdAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4 +LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlw +dG8vc3JjL3N0b3JlL21vZC5yczoxMjA4c3RhdHVzAAAAlh4UAAcAAADfIBQABgAAAAEAAAC4BAAA +AgAAAGAgFAB/AAAAfh4UABgAAADoIBQAAgAAAKjIFgC0HhQAfh4UABgAAAAUFhQAdAAAAAEAAABl +dmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFm +NDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3Jl +L21vZC5yczoxMjEyAJYeFAAHAAAAAQAAALwEAAADAAAAOCEUAH8AAAB+HhQAGAAAALghFAABAAAA +tMgWALQeFAB+HhQAGAAAABQWFAB0AAAAAQAAAGV2ZW50IC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0 +L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRl +cy9tYXRyaXgtc2RrLWNyeXB0by9zcmMvc3RvcmUvbW9kLnJzOjEyMzZzZWNyZXRfbmFtZQAAlh4U +AAcAAAB/IhQACwAAAAEAAADUBAAAAgAAAAAiFAB/AAAAfh4UABgAAACMIhQAAgAAAMDIFgC0HhQA +fh4UABgAAAAUFhQAdAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291 +dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4 +LXNkay1jcnlwdG8vc3JjL3N0b3JlL21vZC5yczoxMjU1AAEAAADnBAAAAwAAANwiFAB/AAAAfh4U +ABgAAAAQIBQAAgAAAMzIFgC0HhQAfh4UABgAAAAUFhQAdAAAAAEAAABldmVudCAvaG9tZS9ydW5u +ZXIvLmNhcmdvL2dpdC9jaGVja291dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIv +YWI5ZTRmNy9jcmF0ZXMvbWF0cml4LXNkay1jcnlwdG8vc3JjL3N0b3JlL21vZC5yczoxNTM2c2Vu +ZGVyX2tleXJvb21faWRzZXNzaW9uX2lkZXJyb3IAlh4UAAcAAAAbJBQACgAAACUkFAAHAAAALCQU +AAoAAAA2JBQABQAAAAEAAAAABgAAAwAAAJwjFAB/AAAAfh4UABgAAAA8JBQABQAAANjIFgC0HhQA +fh4UABgAAAAUFhQAdAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291 +dHMvbWF0cml4LXJ1c3Qtc2RrLTFmNDkyN2Y4MmEzZDI3YmIvYWI5ZTRmNy9jcmF0ZXMvbWF0cml4 +LXNkay1jcnlwdG8vc3JjL3N0b3JlL21vZC5yczoxNTU1dG90YWxfY291bnRpbXBvcnRlZF9jb3Vu +dHJvb21fa2V5cwAAAJYeFAAHAAAAIyUUAAsAAAAuJRQADgAAADwlFAAJAAAAAQAAABMGAAACAAAA +pCQUAH8AAAB+HhQAGAAAAEglFAAEAAAA5MgWALQeFAB+HhQAGAAAABQWFAB0AAAAAQAAAFRvRGV2 +aWNl6AkAAAQAAAAEAAAAGAoAAFJvb23oCQAABAAAAAQAAAAZCgAARml4UG9zAAAeCgAABAAAAAQA +AAAXBwAARml4TmVnAAAeCgAABAAAAAQAAAAfCgAATnVsbFRydWVGYWxzZVU4VTE2VTMyVTY0SThJ +MTZJMzJJNjRGMzJGNjRGaXhTdHJTdHI4U3RyMTZTdHIzMkJpbjhCaW4xNkJpbjMyRml4QXJyYXlB +cnJheTE2QXJyYXkzMkZpeE1hcE1hcDE2TWFwMzJGaXhFeHQxRml4RXh0MkZpeEV4dDRGaXhFeHQ4 +Rml4RXh0MTZFeHQ4RXh0MTZFeHQzMlJlc2VydmVkZXJyb3Igd2hpbGUgd3JpdGluZyBtdWx0aS1i +eXRlIE1lc3NhZ2VQYWNrIHZhbHVlSU8gZXJyb3Igd2hpbGUgcmVhZGluZyBtYXJrZXI6IAAA3yYU +AB8AAABJTyBlcnJvciB3aGlsZSByZWFkaW5nIGRhdGE6IAAAAAgnFAAdAAAAd3JvbmcgbXNncGFj +ayBtYXJrZXIgAAAAMCcUABUAAABudW1lcmljIGNhc3QgZm91bmQgb3V0IG9mIHJhbmdlYXJyYXkg +aGFkIGluY29ycmVjdCBsZW5ndGgsIGV4cGVjdGVkIG8nFAAlAAAAdW5jYXRlZ29yaXplZCBlcnJv +cjogAAAAnCcUABUAAABzdHJpbmcgZm91bmQgdG8gYmUgaW52YWxpZCB1dGY4OiAAAAC8JxQAIQAA +AGRlcHRoIGxpbWl0IGV4Y2VlZGVkaW52YWxpZCB2YWx1ZSB3cml0ZTogAAAA/CcUABUAAABhdHRl +bXB0IHRvIHNlcmlhbGl6ZSBzdHJ1Y3QsIHNlcXVlbmNlIG9yIG1hcCB3aXRoIHVua25vd24gbGVu +Z3Roc2VyaWFsaXplIGRhdGEgbW9kZWwgaXMgaW52YWxpZDogAAAAXCgUACEAAABidWZmZXIgcHJv +dmlkZWQgdG8gZGVjb2RlIGJhc2U1OCBlbmNvZGVkIHN0cmluZyBpbnRvIHdhcyB0b28gc21hbGwA +AIgoFABCAAAAcHJvdmlkZWQgc3RyaW5nIGNvbnRhaW5lZCBpbnZhbGlkIGNoYXJhY3RlciAgYXQg +Ynl0ZSAAAADUKBQALAAAAAApFAAJAAAAcHJvdmlkZWQgc3RyaW5nIGNvbnRhaW5lZCBub24tYXNj +aWkgY2hhcmFjdGVyIHN0YXJ0aW5nIGF0IGJ5dGUgABwpFAA/AAAAL3J1c3RjL2FlZGQxNzNhMmMw +ODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAA +AGQpFABJAAAAswEAADEAAABkKRQASQAAANkBAAAbAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4 +YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9pby9ib3Jyb3dlZF9idWYu +cnMA0CkUAFMAAADOAAAAQgAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0 +Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwA0KhQASwAAACEBAAAbAAAANCoU +AEsAAAAnAQAAFgAAADQqFABLAAAAKQEAABEAAABmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXIA +sCoUABsAAAAlAAAANCoUAEsAAADtAAAAGwAAADQqFABLAAAA8wAAABYAAAA0KhQASwAAAPUAAAAY +AAAANCoUAEsAAAD/AAAAGwAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0 +Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy9pby9jdXJzb3IucnMYKxQATAAAAOsAAAAdAAAAYXNz +ZXJ0aW9uIGZhaWxlZDogc2VsZi5jYXBhY2l0eSgpID49IGJ1Zi5sZW4oKS9ydXN0Yy9hZWRkMTcz +YTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvaW8vYm9y +cm93ZWRfYnVmLnJzAAAAoisUAFMAAAAgAQAACQAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMy +YjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvbWVtL21heWJlX3VuaW5pdC5y +cwgsFABUAAAALAQAAA4AAACiKxQAUwAAAOkAAAAaAAAAbWlkID4gbGVuAAAAfCwUAAkAAAACTUFU +UklYdGhlIGRlY29kZWQgUVIgY29kZSBpcyBtaXNzaW5nIHRoZSBNYXRyaXggaGVhZGVydGhlIFFS +IGNvZGUgY29udGFpbnMgYW4gaW52YWxpZCB2ZXJpZmljYXRpb24gbW9kZTogAADHLBQAMwAAAHRo +ZSBRUiBjb2RlIGNvbnRhaW5zIGEgdG9vIHNob3J0IHNoYXJlZCBzZWNyZXQsIGxlbmd0aDogBC0U +ADgAAAB0aGUgUVIgY29kZSBjb250YWlucyBhbiBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIHZlcnNp +b246IEQtFAA4AAAAdGhlIFFSIGNvZGUgY29udGFpbnMgaW52YWxpZCBlZDI1NTE5IGtleXM6IACE +LRQAKwAAAFRoZSB2ZXJpZmljYXRpb24gZmxvdyBpZCBsZW5ndGggY2FuJ3QgYmUgY29udmVydGVk +IGludG8gYSB1MTY6IAC4LRQAPwAAAG1pZCA+IGxlbgAAAAAuFAAJAAAAL3J1c3RjL2FlZGQxNzNh +MmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9p +dGVyLnJzAAAULhQATgAAAMsFAAAlAAAAFC4UAE4AAADWBQAAFQBBkN3QAAvFDGF0dGVtcHQgdG8g +ZGl2aWRlIGJ5IHplcm8AAAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4 +LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3FyY29kZS0wLjEzLjAvc3JjL2NhbnZhcy5ycwCu +LhQAXQAAAIEAAAAVAAAAri4UAF0AAACIAAAAGgAAAK4uFABdAAAAWgEAACEAAAAGABYAJgAGABgA +KgAGABoALgAGABwAMgAGAB4ANgAGACAAOgAGACIAPgAGABoALgBCAAYAGgAwAEYABgAaADIASgAG +AB4ANgBOAAYAHgA4AFIABgAeADoAVgAGACIAPgBaAAYAHAAyAEgAXgAGABoAMgBKAGIABgAeADYA +TgBmAAYAHAA2AFAAagAGACAAOgBUAG4ABgAeADoAVgByAAYAIgA+AFoAdgAGABoAMgBKAGIAegAG +AB4ANgBOAGYAfgAGABoANABOAGgAggAGAB4AOABSAGwAhgAGACIAPABWAHAAigAGAB4AOgBWAHIA +jgAGACIAPgBaAHYAkgAGAB4ANgBOAGYAfgCWAAYAGAAyAEwAZgCAAJoABgAcADYAUABqAIQAngAG +ACAAOgBUAG4AiACiAAYAGgA2AFIAbgCKAKYABgAeADoAVgByAI4AqgA8LxQAAwAAAEIvFAADAAAA +SC8UAAMAAABOLxQAAwAAAFQvFAADAAAAWi8UAAMAAABgLxQAAwAAAGYvFAAEAAAAbi8UAAQAAAB2 +LxQABAAAAH4vFAAEAAAAhi8UAAQAAACOLxQABAAAAJYvFAAEAAAAni8UAAUAAACoLxQABQAAALIv +FAAFAAAAvC8UAAUAAADGLxQABQAAANAvFAAFAAAA2i8UAAUAAADkLxQABgAAAPAvFAAGAAAA/C8U +AAYAAAAIMBQABgAAABQwFAAGAAAAIDAUAAYAAAAsMBQABgAAADgwFAAHAAAARjAUAAcAAABUMBQA +BwAAAGIwFAAHAAAAcDAUAAcAAAB+MBQABwAAAK4uFABdAAAAqQIAACQAAAAFAPf/BQD2/wUA9f8E +APf/BAD2/wQA9f8DAPf/AwD2/wMA9f8CAPf/AgD2/wIA9f8BAPf/AQD2/wEA9f8AAPf/AAD2/wAA +9f/3/wUA9v8FAPX/BQD3/wQA9v8EAPX/BAD3/wMA9v8DAPX/AwD3/wIA9v8CAPX/AgD3/wEA9v8B +APX/AQD3/wAA9v8AAPX/AAAAAAgAAQAIAAIACAADAAgABAAIAAUACAAHAAgACAAIAAgABwAIAAUA +CAAEAAgAAwAIAAIACAABAAgAAAAIAP//CAD+/wgA/f8IAPz/CAD7/wgA+v8IAPn/+P8IAPn/CAD6 +/wgA+/8IAPz/CAD9/wgA/v8IAP//CAABAAgAAgAIAAMACAAEAAgABQAIAAYACAAHAAgACAAIAAgA +BwAIAAYACAAFAAgABAAIAAMACAACAAgAAQCUfAAAvIUAAJmaAADTpAAA9rsAAGLHAABH2AAADeYA +ACj5AAB4CwEAXRQBABcqAQAyNQEApkkBAINWAQDJaAEA7HcBAMSOAQDhkQEAq68BAI6wAQAazAEA +P9MBAHXtAQBQ8gEA1QkCAPAWAgC6KAIAnzcCAAtLAgAuVAIAZGoCAEF1AgBpjAIAVW5zdXBwb3J0 +ZWQgdmVyc2lvbi9lY19sZXZlbCBjb21iaW5hdGlvbiBpbiBNaWNybyBRUiBjb2RlAAAAeDMUADkA +AACuLhQAXQAAACQGAAAaAAAAVW5zdXBwb3J0ZWQgbWFzayBwYXR0ZXJuIGluIE1pY3JvIFFSIGNv +ZGUAAADMMxQAKQAAAK4uFABdAAAAGQYAABoAAAASVCVRfF5LW/lFzkCXT6BKxHfzcqp9nXgvZhhj +QWx2aYkWvhPnHNAZYgdVAgwNOwhfNWgwMT8GOrQkgyHaLu0rRURyQStOHEuuVZlQwF/3WpNnpGL9 +bcpoeHZPcxZ8IXneBukDsAyHCTUXAhJbHWwYCCU/IGYvUSrjNNQxjT66OyIKAAAIAAAABAAAACMK +AAAkCgAAJAoAACIKAAAIAAAABAAAACUKAAAmCgAAJgoAAAEAAQEBAAEAri4UAF0AAAD/BgAAFQBB +4OnQAAtqYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwABAgMEBQYHAQQGB2F0IGxlYXN0IG9uZSBw +YXR0ZXJuAAAAri4UAF0AAADABwAACgAAACcKAAAoCgAAKQoAACoKAAArCgAALAoAAC0KAAAuCgBB +2OrQAAvdCwEAAAAAAAAAAgAAAAMAAABjaHVuayBzaXplIG11c3QgYmUgbm9uLXplcm8AaDUUABsA +AAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5 +L2FsbG9jL3NyYy92ZWMvbW9kLnJzjDUUAEwAAACcCAAADQAAAC9ob21lL3J1bm5lci8uY2FyZ28v +cmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3FyY29kZS0wLjEz +LjAvc3JjL2VjLnJzAAAA6DUUAFkAAAAVAAAAEwAAAOg1FABZAAAAHAAAAB0AAABub24tZW1wdHkg +YmxvY2tz6DUUAFkAAABNAAAAKAAAAOg1FABZAAAAdgAAABoAAADoNRQAWQAAAHYAAAAqAAAA6DUU +AFkAAAB4AAAALgAAAAECBAgQIECAHTp06M2HEyZMmC1atHXqyY8DBgwYMGDAnSdOnCVKlDVq1LV3 +7sGfI0aMBQoUKFCgXbpp0rlv3qFfvmHCmS9evGXKiQ8ePHjw/efTu2vWsX/+4d+jW7Zx4tmvQ4YR +IkSIDRo0aNC9Z86BHz58+O3Hkzt27MWXM2bMhRcuXLht2qlPniFChBUqVKhNmilSpFWqSZI5cuTV +t3Pm0b9jxpE/fvzl17N79vH/49urS5YxYsSVN27cpVeuQYIZMmTIjQcOHDhw4N2nU6ZRolmyefL5 +78ObK1asRYoJEiRIkD169PX38/vry4sLFixYsH366c+DGzZs2K1HjgH/AAEZAjIaxgPfM+4baMdL +BGTgDjSN74EcwWn4yAhMcQWKZS/hJA8hNZOO2vASgkUdtcJ9aif5ucmaCXhN5HKmBr+LYmbdMP3i +mCWzEJEiiDbQlM6Pltu98dITXIM4RkAeQrajw0h+bms6KFT6hbo9yl6bnwoVeStO1OWsc/OnVwdw +wPeMgGMNZ0re7THF/hjjpZl3Jri0fBFEktkjIIkuNz/RW5W8z82Qh5ey3Py+YfJW06sUKl2ehDw5 +U0dtQaIfLUPYt3ukdsQXSex/DG/2bKE7UimdVar7YIaxu8w+WstZX7CcqaBRC/UW63p1LNdPrtXp +5uet6HTW9OqoUFivBwAAAAoAAAANAAAAEQAAAAoAAAAQAAAAFgAAABwAAAAPAAAAGgAAABIAAAAW +AAAAFAAAABIAAAAaAAAAEAAAABoAAAAYAAAAEgAAABYAAAASAAAAEAAAABgAAAAcAAAAFAAAABIA +AAASAAAAGgAAABgAAAAWAAAAFgAAABoAAAAeAAAAFgAAABQAAAAYAAAAEgAAABoAAAAYAAAAHAAA +ABQAAAAeAAAAHAAAABgAAAAYAAAAFgAAABoAAAAcAAAAGgAAABYAAAAYAAAAFgAAAB4AAAAYAAAA +FAAAABgAAAAWAAAAGAAAAB4AAAAYAAAAGAAAABwAAAAYAAAAHgAAABwAAAAcAAAAHAAAABwAAAAe +AAAAGgAAABwAAAAcAAAAHAAAABoAAAAaAAAAGgAAABwAAAAaAAAAHgAAABwAAAAcAAAAGgAAABwA +AAAeAAAAHAAAABwAAAAeAAAAGAAAAB4AAAAcAAAAHgAAAB4AAAAeAAAAHAAAAB4AAAAeAAAAGgAA +ABwAAAAeAAAAHgAAABwAAAAcAAAAHAAAAB4AAAAeAAAAHAAAAB4AAAAeAAAAHgAAABwAAAAeAAAA +HgAAAB4AAAAcAAAAHgAAAB4AAAAeAAAAHAAAAB4AAAAeAAAAHgAAABwAAAAeAAAAHgAAAB4AAAAc +AAAAHgAAAB4AAAAeAAAAHAAAAB4AAAAeAAAAHgAAABwAAAAeAAAAHgAAAB4AAAAcAAAAHgAAAB4A +AAAeAAAAHAAAAB4AAAAeAAAAHgAAABwAAAAeAAAAHgAAAB4AAAAcAAAAHgAAAB4AAAAeAAAAHAAA +AB4AAAAeAAAAHgAAABwAAAAeAAAAHgAAAAIAQcT20AALBQUAAAAGAEHU9tAACwUGAAAACABB5PbQ +AAsVCAAAAAoAAAAOAAAAAAAAABMAAAABAEGE99AACwUQAAAAAQBBlPfQAAsFDQAAAAEAQaT30AAL +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 +e7HMu/7ITo2Vdxp/NaBdx9QdGJGc0Jba0QTYWy+4ki+Mw8N98u4/Y2yM5vIfzAuy89mc1eeJnvfw +Je7WgGPaLorGgFzbbYumGUJDDjrulbHD3ZqrMFAMO77kEzfQXHDlJTwKL1EAwCWrr5OASaY9lQwY +X0ZxKAV23rSIiKIzLnUN11ERi/fFq1+tQYmyRG9fZSlI1qnFXwcsmk1v7Ch5jz9XUP3wftlNIuhq +MqhSTJJDaqsZhF0tab+scVYHpva5m/picVlW1uGcvjohkEOzozSa6Zdo+6B+r9DhRuOSBJiLZxlr +Pcyf+sHhaaBipwI1EPJT0sRn+FbTKav3n98h4F1NRlqgIP4rllRlvs2FNDzKpdzLl11UD1T9raBZ +4zTHYV/nNLEpfYnxpuF2AjYgUtevxivu6xtluH8DBQij7mlJRAEdqHUOWNA3LirZBlSzYQbwwOee +QHagyzk9bMd8Qbvdpye2n7T0y+T+Da89Ws4ox15DOVHlLntZJR/KQvojqvNYMwBoNRQAAAAAAHRG +FAABAAAAdUYUAAIAAAB3RhQAAwAAAHpGFAAEAAAAfkYUAAUAAACDRhQABgAAAIlGFAAHAAAAkEYU +AAgAAACYRhQACQAAAKFGFAAKAAAAq0YUAAsAAAC2RhQADAAAAMJGFAANAAAAz0YUAA4AAADdRhQA +DwAAAOxGFAAQAAAA/EYUABEAAAANRxQAEgAAAB9HFAATAAAAMkcUABQAAABGRxQAFQAAAFtHFAAW +AAAAcUcUABcAAACIRxQAGAAAAKBHFAAZAAAAuUcUABoAAADTRxQAGwAAAO5HFAAcAAAACkgUAB0A +AAAnSBQAHgAAAEVIFAAfAAAAZEgUACAAAACESBQAIQAAAKVIFAAiAAAAx0gUACMAAADqSBQAJAAA +AA5JFAAlAAAAM0kUACYAAABZSRQAJwAAAIBJFAAoAAAAqEkUACkAAADRSRQAKgAAAPtJFAArAAAA +JkoUACwAAABSShQALQAAAH9KFAAuAAAArUoUAC8AAADcShQAMAAAAAxLFAAxAAAAPUsUADIAAABv +SxQAMwAAAKJLFAA0AAAA1ksUADUAAAALTBQANgAAAEFMFAA3AAAAeEwUADgAAACwTBQAOQAAAOlM +FAA6AAAAI00UADsAAABeTRQAPAAAAJpNFAA9AAAA100UAD4AAAAVThQAPwAAAFROFABAAAAAlE4U +AEEAAADVThQAQgAAABdPFABDAAAAWk8UAEQAAACeTxQARQAAAC9ob21lL3J1bm5lci8uY2FyZ28v +cmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3FyY29kZS0wLjEz +LjAvc3JjL2JpdHMucnMAFFIUAFsAAAA2AAAAGgAAABRSFABbAAAAMgAAABoAAAAUUhQAWwAAAC8A +AAAaAAAAmAAAAIAAAABoAAAASAAAABABAADgAAAAsAAAAIAAAAC4AQAAYAEAABABAADQAAAAgAIA +AAACAACAAQAAIAEAAGADAACwAgAA8AEAAHABAABABAAAYAMAAGACAADgAQAA4AQAAOADAADAAgAA +EAIAABAGAADQBAAAcAMAALACAABABwAAsAUAACAEAAAgAwAAkAgAAMAGAADQBAAA0AMAACAKAADw +BwAAoAUAAGAEAACQCwAAEAkAAHAGAADwBAAAYA0AAHAKAACgBwAAoAUAAGgOAABoCwAAKAgAACgG +AABYEAAA+AwAADgJAAD4BgAAaBIAACgOAAAoCgAA6AcAADgUAADYDwAAeAsAANgIAACIFgAAmBEA +AGgMAADICQAA2BgAAJgTAADoDQAAqAoAAOgaAADoFAAAKA8AAAgMAAAgHQAAUBYAAAAQAACwDAAA +cB8AAHAYAADAEQAA0A0AADAiAADgGgAAMBMAAIAOAACwJAAAkBwAAMAUAAAQEAAA4CcAAEAfAABw +FgAA0BAAANAqAAAwIQAAkBcAAKASAADgLQAAQCMAAEAZAACgEwAA2C8AAEglAAA4GwAAqBQAAPgy +AACYJwAAeBwAAOgVAAA4NgAA6CoAAMgeAABIFwAAmDkAAHgtAABIIAAAyBgAABg9AAAoMAAA2CIA +AGgaAAC4QAAA+DIAAJgkAAAoHAAAeEQAAOg1AAB4JgAACB4AABBIAACgOAAAMCgAANAeAAAQTAAA +0DsAAFAqAADwIAAAMFAAAEA+AACQLAAAQCIAAHBUAACwQQAA8C4AALAjAADgVwAAQEUAAHAxAAAw +JgAAYFwAAPBIAAAQNAAA4CcAABQAQbCq0QALBSgAAAAgAEHAqtEACwVUAAAARABB0KrRAAuzCIAA +AABwAAAAUAAAAAAAAADsEQAAAQAAAAIAAAAEAAAACAAAAGRhdGEgdG9vIGxvbmdpbnZhbGlkIHZl +cnNpb251bnN1cHBvcnRlZCBjaGFyYWN0ZXIgc2V0aW52YWxpZCBFQ0kgZGVzaWduYXRvcmludmFs +aWQgY2hhcmFjdGVyL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVz +LmlvLTZmMTdkMjJiYmExNTAwMWYvcXJjb2RlLTAuMTMuMC9zcmMvdHlwZXMucnPQVRQAXAAAAJ8A +AAAbAAAA0FUUAFwAAACiAAAAGwAAAA0AAAAPAAAAGQAAABYAAAARAAAAdFUUAIFVFACQVRQAqVUU +AL9VFAAKAAAACQAAAAgAAAAIAAAADgAAAA0AAAAQAAAADAAAAAwAAAALAAAAEAAAAAoAAABtaWQg +PiBsZW4AAACkVhQACQAAAGF0dGVtcHQgdG8gam9pbiBpbnRvIGNvbGxlY3Rpb24gd2l0aCBsZW4g +PiB1c2l6ZTo6TUFYL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIx +YTcvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAAAA7VYUAEgAAACbAAAACgAAAO1WFABIAAAAsgAA +ABYAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi9leWViYWxsLTAuOC43L3NyYy9zdGF0ZS5yczoxMjJleWViYWxs +OjpzdGF0ZW1lc3NhZ2UAzFcUAAcAAAAvCgAADAAAAAQAAAC2AQAAMAoAADEKAAAvaG9tZS9ydW5u +ZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9l +eWViYWxsLTAuOC43L3NyYy9zdGF0ZS5ycwEAAAB6AAAAAQAAAFhXFABmAAAAvlcUAA4AAADUVxQA +AQAAAPDIFgDcVxQAvlcUAA4AAAD0VxQAXAAAAAEAAABldmVudCAvaG9tZS9ydW5uZXIvLmNhcmdv +L3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9leWViYWxsLTAu +OC43L3NyYy9zdGF0ZS5yczoxMjQAAAEAAAB8AAAAAQAAAJBYFABmAAAAvlcUAA4AAADUVxQAAQAA +APzIFgDcVxQAvlcUAA4AAAD0VxQAXAAAAAEAAAAyCgAACAAAAAQAAADXBgAAMgoAAAgAAAAEAAAA +MwoAANcGAAA4WRQANAoAADUKAAA2CgAANwoAADgKAAA5CgAA//////////94WRQAQZCz0QALsyhV +dGY4RXJyb3J2YWxpZF91cF90bzIKAAAEAAAABAAAADoKAABlcnJvcl9sZW4AAAAyCgAABAAAAAQA +AAA7CgAAaW52YWxpZCB1dGYtODogY29ycnVwdCBjb250ZW50c1VuYWJsZSB0byBhbGxvY2F0ZSBh +bm90aGVyIHNwYW4vaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi90cmFjaW5nLXN1YnNjcmliZXItMC4zLjE4L3NyYy9yZWdpc3Ry +eS9zaGFyZGVkLnJzAAAADloUAHMAAAALAQAADgAAAD0KAACQAAAABAAAAD4KAAA/CgAAQAoAAEEK +AABCCgAAQwoAAEQKAABFCgAARgoAAEcKAABICgAASQoAAEoKAABLCgAATAoAAE0KAABTcGFuIG5v +dCBmb3VuZCwgdGhpcyBpcyBhIGJ1Zy9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2lu +ZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3RyYWNpbmctc3Vic2NyaWJlci0wLjMuMTgv +c3JjL2ZtdC9mbXRfbGF5ZXIucnMAAAD9WhQAcAAAACwDAAAhAAAAW3RyYWNpbmctc3Vic2NyaWJl +cl0gVW5hYmxlIHRvIGZvcm1hdCB0aGUgZm9sbG93aW5nIGV2ZW50LCBpZ25vcmluZzogCgAAgFsU +AEUAAADFWxQAAQAAAG1lc3NhZ2UA2FsUAAcAAABuZXcA6FsUAAMAAABOCgAACAAAAAQAAACGAAAA +/VoUAHAAAAB5AwAAJQAAAGV4aXQUXBQABAAAAP1aFABwAAAAjQMAACYAAAB0aW1lLmJ1c3l0aW1l +LmlkbGUAANhbFAAHAAAAMFwUAAkAAAA5XBQACQAAAGNsb3NlAAAAXFwUAAUAAABPCgAACAAAAAgA +AABQCgAA/VoUAHAAAABlAwAAJQAAAGVudGVyAAAAjFwUAAUAAABRCgAA/VoUAHAAAABRAwAAIQAA +AFUKAAAIAAAACAAAAFYKAABVCgAACAAAAAgAAABXCgAAWAoAAAgAAAAEAAAA0wgAAFUKAAAIAAAA +CAAAAFkKAABaCgAAAQAAAAEAAABbCgAAVQoAABAAAAAIAAAAXAoAAFUKAAAQAAAACAAAAF0KAABY +CgAACAAAAAQAAABeCgAAWAoAAAwAAAAEAAAAXwoAAGAKAABhCgAAZmFpbGVkIHRvIHdyaXRlIHdo +b2xlIGJ1ZmZlckhdFAAcAAAAFwAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNi +MzQ0Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy9pby9tb2QucnMAAABwXRQASQAAALEGAAAkAAAA +YgoAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0 +OTI3ZjgyYTNkMjdiYi9hYjllNGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNvbW1vbi9zcmMvanNfdHJh +Y2luZy5ycyA6IMxdFAAAAAAARV4UAAEAAABGXhQAAgAAAGMKAAAMAAAABAAAAGQKAABlCgAAZgoA +AGcKAABoCgAAaQoAAGoKAABrCgAAbAoAAFgKAAAQAAAABAAAAG0KAABuCgAAbwoAAHAKAABxCgAA +cgoAAHMKAAB0CgAAdQoAAAogICAgYXQgwF4UAAgAAAA6AAAA0F4UAAEAAAAKICAgIGluIDo6AADc +XhQACAAAAOReFAACAAAAVW5hYmxlIHRvIGZpbmQgRm9ybWF0dGVkRmllbGRzIGluIGV4dGVuc2lv +bnM7IHRoaXMgaXMgYSBidWcA0F0UAHUAAAABAQAAEgAAACB3aXRoIAAARF8UAAYAAABtZXNzYWdl +AMxdFAAAAAAARV4UAAEAAAAKICAgIAAAAGxfFAAFAAAAPQAAAMxdFAAAAAAAfF8UAAEAAAAvcnVz +dGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9j +L3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwCQXxQAXwAAAFkCAAAwAAAAVW5hYmxl +IHRvIGZvcm1hdCB0aGUgZm9sbG93aW5nIGV2ZW50LiBOYW1lOiA7IEZpZWxkczogCgAAYBQALAAA +ACxgFAAKAAAANmAUAAEAAABbdHJhY2luZy1zdWJzY3JpYmVyXSBVbmFibGUgdG8gd3JpdGUgYW4g +ImV2ZW50IGZvcm1hdHRpbmcgZXJyb3IiIHRvIHRoZSBXcml0ZXIgZm9yIHRoaXMgU3Vic2NyaWJl +ciEgRXJyb3I6IAoKAAAAUGAUAGsAAAC7YBQAAgAAAFt0cmFjaW5nLXN1YnNjcmliZXJdIFVuYWJs +ZSB0byB3cml0ZSBhbiBldmVudCB0byB0aGUgV3JpdGVyIGZvciB0aGlzIFN1YnNjcmliZXIhIEVy +cm9yOiDQYBQAWAAAALtgFAACAAAAdwoAAAQAAAAEAAAAeAoAAHkKAAB6CgAAY2Fubm90IGFjY2Vz +cyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlv +bgAAewoAAAAAAAABAAAAwQYAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0 +Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAqGEUAE8AAAAGAQAAGgAA +AKhhFABPAAAA2AEAACIAAACoYRQATwAAAPkBAAAmAAAASXRlcmlkeHN3CgAACAAAAAQAAAB8CgAA +ZmllbGRzAAB3CgAABAAAAAQAAAB9CgAAbG9nZ2VyIGlkIG5vdCBmb3VuZC9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy9tYXRyaXgtcnVzdC1zZGstMWY0OTI3ZjgyYTNkMjdiYi9hYjll +NGY3L2NyYXRlcy9tYXRyaXgtc2RrLWNvbW1vbi9zcmMvanNfdHJhY2luZy5yc2tiFAB1AAAAdgAA +ADoAAAB+CgAAoAAAAAQAAAB/CgAAxgEAAMcBAADIAQAAyQEAAMoBAADLAQAAzAEAAM0BAADOAQAA +zwEAANABAACACgAA0gEAAIEKAADUAQAAb3ZlcmZsb3cgaW4gRHVyYXRpb246Om5ldwAAADxjFAAZ +AAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFy +eS9jb3JlL3NyYy90aW1lLnJzYGMUAEgAAADKAAAAFQAAAG92ZXJmbG93IHdoZW4gc3VidHJhY3Rp +bmcgZHVyYXRpb25zAGBjFABIAAAAugMAAB8AAABgZWFybGllcmAgY2Fubm90IGJlIGxhdGVyIHRo +YW4gYHNlbGZgLi9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p +by02ZjE3ZDIyYmJhMTUwMDFmL2luc3RhbnQtMC4xLjEyL3NyYy93YXNtLnJzAAASZBQAXAAAABgA +AAAJAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGli +cmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAgGQUAF8AAADHAAAA +JwAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkY2Fu +bm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBk +ZXN0cnVjdGlvboUKAAAAAAAAAQAAAMEGAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQz +NzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAHhlFABPAAAA +BgEAABoAAACGCgAABAAAAAQAAACHCgAAiAoAAIYKAAAEAAAABAAAAIkKAACKCgAARm5PbmNlIGNh +bGxlZCBtb3JlIHRoYW4gb25jZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4 +LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC40Mi9z +cmMvbGliLnJzHGYUAGgAAACoAAAADwAAABxmFABoAAAAiAAAACcAAAAcZhQAaAAAALIAAAAkAAAA +Y2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWQAAIwKAAAE +AAAABAAAAI0KAACOCgAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3Jh +dGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvd2FzbS1iaW5kZ2VuLWZ1dHVyZXMtMC40LjQyL3NyYy9x +dWV1ZS5ycwAA/GYUAGoAAAAlAAAALgAAAPxmFABqAAAAKAAAACkAAAD8ZhQAagAAAD4AAAAaAAAA +L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJi +YmExNTAwMWYvd2FzbS1iaW5kZ2VuLWZ1dHVyZXMtMC40LjQyL3NyYy90YXNrL3NpbmdsZXRocmVh +ZC5ycwAAmGcUAHYAAAAhAAAAFQAAAI8KAACQCgAAkQoAAJIKAACTCgAAmGcUAHYAAABmAAAAJQAA +AFRyaWVkIHRvIHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eURoFAAkAAAAL3J1c3RjL2FlZGQx +NzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvcmF3 +X3ZlYy5yc3BoFABMAAAAzwEAAAkAAACZCgAACAAAAAgAAABWCgAAmQoAAAgAAAAIAAAAmgoAAJkK +AAAIAAAACAAAAJsKAACcCgAAAQAAAAEAAACdCgAAmQoAABAAAAAIAAAAngoAAJkKAAAQAAAACAAA +AJ8KAACgCgAAGAAAAAQAAAByAQAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5k +ZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdHJhY2luZy1zdWJzY3JpYmVyLTAuMy4xOC9z +cmMvZm10L2Zvcm1hdC9tb2QucnMAAAAsaRQAAAAAACAAAAAsaRQAAAAAACxpFAAAAAAALGkUAAAA +AACgCgAAEAAAAAQAAAChCgAAogoAAKMKAACkCgAApQoAAKYKAACnCgAAqAoAAKkKAAC4aRQAAQAA +AG1lc3NhZ2UAoAoAAAgAAAAEAAAAqgoAACxpFAAAAAAAuGkUAAEAAAAsaRQAAAAAACxpFAAAAAAA +LGkUAAAAAAAuc291cmNlcz1yIwA8aRQAcQAAAAYFAAAxAAAAbnPCtXNtc3NoahQAAgAAAGpqFAAD +AAAAbWoUAAIAAABvahQAAQAAACxpFAAAAAAAb2oUAAEAAAAsaRQAAAAAACxpFAAAAAAAqwoAAAwA +AAAEAAAArAoAAK0KAACuCgAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXgu +Y3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdHJhY2luZy1jb3JlLTAuMS4zMi9zcmMvZGlzcGF0 +Y2hlci5ycwDIahQAZwAAAGsDAAAmAAAAsAoAAAgAAAAEAAAAsQoAAGludGVybmFsIGVycm9yOiBl +bnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IHdlaXJkIGxpZmVjeWNsZSAAAFBrFAA6AAAAL2hvbWUv +cnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAw +MWYvc2hhcmRlZC1zbGFiLTAuMS43L3NyYy9wYWdlL3Nsb3QucnMAAACUaxQAZQAAAJQCAAAYAAAA +cGFnZSBtdXN0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgdG8gaW5zZXJ0IS9ob21lL3J1bm5lci8uY2Fy +Z28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NoYXJkZWQt +c2xhYi0wLjEuNy9zcmMvcGFnZS9tb2QucnM0bBQAZAAAABgBAAASAAAANGwUAGQAAAAZAQAAGQAA +AC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIy +YmJhMTUwMDFmL3NoYXJkZWQtc2xhYi0wLjEuNy9zcmMvc2hhcmQucnMAAAC4bBQAYQAAAPwAAAAK +AAAAuGwUAGEAAABRAQAAIgAAALIKAAAIAAAACAAAALMKAAC2CgAACAAAAAQAAAC3CgAAuAoAAAgA +AAAEAAAAtwoAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAbG0U +ACoAAABJZAAAuQoAAAQAAAAEAAAAugoAAAAAAAD//////////7htFABB0NvRAAv7mgG7CgAAL2hv +bWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmEx +NTAwMWYvdHJhY2luZy1zdWJzY3JpYmVyLTAuMy4xOC9zcmMvcmVnaXN0cnkvc2hhcmRlZC5ycwDU +bRQAcwAAANAAAAAtAAAA1G0UAHMAAAAlAQAADgAAANRtFABzAAAALgEAABYAAAB0cmllZCB0byBj +bG9uZSBhIHNwYW4gKCkgdGhhdCBhbHJlYWR5IGNsb3NlZHhuFAAXAAAAj24UABUAAAAAAAAA1G0U +AHMAAABCAQAACQAAAHRyaWVkIHRvIGNsb25lICwgYnV0IG5vIHNwYW4gZXhpc3RzIHdpdGggdGhh +dCBJRApUaGlzIG1heSBiZSBjYXVzZWQgYnkgY29uc3VtaW5nIGEgcGFyZW50IHNwYW4gKGBwYXJl +bnQ6IHNwYW5gKSByYXRoZXIgdGhhbiBib3Jyb3dpbmcgaXQgKGBwYXJlbnQ6ICZzcGFuYCkuAMhu +FAAPAAAA124UAIwAAADUbRQAcwAAADcBAAAgAAAA1G0UAHMAAABOAQAAIwAAAHRyaWVkIHRvIGRy +b3AgYSByZWYgdG8gLCBidXQgbm8gc3VjaCBzcGFuIGV4aXN0cyEAAACUbxQAFwAAAKtvFAAaAAAA +1G0UAHMAAABeAQAAFQAAAHJlZmVyZW5jZSBjb3VudCBvdmVyZmxvdyEAAADUbRQAcwAAAGMBAAAN +AAAATXV0ZXggcG9pc29uZWQAANRtFABzAAAAsQEAADYAAADUbRQAcwAAALUBAAA6AAAALyFcIFRy +aWVkIHRvIHJlZ2lzdGVyIHRoZSBudWxsIGNhbGxzaXRlIC8hXAogVGhpcyBzaG91bGQgbmV2ZXIg +aGF2ZSBoYXBwZW5lZCBhbmQgaXMgZGVmaW5pdGVseSBhIGJ1Zy4gQSBgdHJhY2luZ2AgYnVnIHJl +cG9ydCB3b3VsZCBiZSBhcHByZWNpYXRlZC4AAERwFACSAAAA1G0UAHMAAADJAQAAEQAAAC8hXCBU +cmllZCB0byBhY2Nlc3MgdGhlIG51bGwgY2FsbHNpdGUncyBtZXRhZGF0YSAvIVwKIFRoaXMgc2hv +dWxkIG5ldmVyIGhhdmUgaGFwcGVuZWQgYW5kIGlzIGRlZmluaXRlbHkgYSBidWcuIEEgYHRyYWNp +bmdgIGJ1ZyByZXBvcnQgd291bGQgYmUgYXBwcmVjaWF0ZWQuAPBwFACbAAAA1G0UAHMAAADRAQAA +EQAAALwKAAAAAAAAAQAAAL0KAAC+CgAAvwoAAHRyYWNpbmdfc3Vic2NyaWJlcjo6cmVnaXN0cnk6 +OnNoYXJkZWQAAAABAAAA2gEAAAAAAABMbRQAAAAAAExtFAAAAAAATG0UAAAAAACkcRQApHEUALxx +FAAlAAAA1G0UAHMAAAACAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXgu +Y3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdHJhY2luZy1zdWJzY3JpYmVyLTAuMy4xOC9zcmMv +cmVnaXN0cnkvc3RhY2sucnMAAAAkchQAcQAAACMAAAA9AAAAYSBzaGFyZCBjYW4gb25seSBiZSBp +bnNlcnRlZCBieSB0aGUgdGhyZWFkIHRoYXQgb3ducyBpdCwgdGhpcyBpcyBhIGJ1ZyEvaG9tZS9y +dW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAx +Zi9zaGFyZGVkLXNsYWItMC4xLjcvc3JjL3NoYXJkLnJz73IUAGEAAACVAQAADgAAAFRocmVhZCBj +b3VudCBvdmVyZmxvd2VkIHRoZSBjb25maWd1cmVkIG1heCBjb3VudC4gVGhyZWFkIGluZGV4ID0g +LCBtYXggdGhyZWFkcyA9IC4AAGBzFABBAAAAoXMUABAAAACxcxQAAQAAAIAAAADvchQAYQAAACcB +AAAJAAAA73IUAGEAAAAzAQAADQAAAMAKAAAEAAAABAAAAMEKAAD/////L3J1c3RjL2FlZGQxNzNh +MmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL3N5cy9wYWwv +d2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9yd2xvY2sucnMABHQUAGsAAAA/AAAACQAAAMIKAADE +CgAASWQAAMUKAAAEAAAABAAAALoKAABBdHRyaWJ1dGVzbWV0YWRhdGEAAMUKAAAEAAAABAAAAMYK +AAB2YWx1ZXMAAMUKAAAEAAAABAAAAMcKAABwYXJlbnQAAMUKAAAEAAAABAAAAMgKAABQb2lzb25F +cnJvcnN1YnNjcmliZXIgbm8gbG9uZ2VyIGV4aXN0c2xvY2sgcG9pc29uZWQvaG9tZS9ydW5uZXIv +LmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zaGFy +ZGVkLXNsYWItMC4xLjcvc3JjL3RpZC5yc2NyZWF0aW5nIGEgbmV3IHRocmVhZCBJRCAoKSB3b3Vs +ZCBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZCBJRCBiaXRzIHNwZWNpZmllZCBp +biAgKCmCdRQAGgAAAJx1FABBAAAA3XUUAAIAAADfdRQAAQAAAP8AAAAjdRQAXwAAAKMAAAAVAAAA +dGhyZWFkICcnIGF0dGVtcHRlZCB0byBwYW5pYyBhdCAnY3JlYXRpbmcgYSBuZXcgdGhyZWFkIElE +ICgpJywgL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZm +MTdkMjJiYmExNTAwMWYvc2hhcmRlZC1zbGFiLTAuMS43L3NyYy90aWQucnM6MTYzOjIxCm5vdGU6 +IHdlIHdlcmUgYWxyZWFkeSB1bndpbmRpbmcgZHVlIHRvIGEgcHJldmlvdXMgcGFuaWMuCgAUdhQA +CAAAABx2FAAzAAAAnHUUAEEAAADddRQAAgAAAE92FACkAAAAPHVubmFtZWQ+AAAAyQoAAAgAAAAE +AAAAygoAAMsKAAAuLgAAPHcUAAIAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9p +bmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90cmFjaW5nLXN1YnNjcmliZXItMC4zLjE4 +L3NyYy9yZWdpc3RyeS9leHRlbnNpb25zLnJzYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5yZXBsYWNl +KHZhbCkuaXNfbm9uZSgpAEh3FAB2AAAAWAAAAAkAAADMCgAAIAAAAAgAAADNCgAAzgoAABAAAAAE +AAAAzwoAANAKAAAMAAAABAAAANEKAADSCgAArgoAANMKAAAAAAAAAQAAANQKAADTCgAAAAAAAAEA +AADVCgAA1AoAADR4FADWCgAA1woAANgKAADZCgAA2goAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQg +TG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AANMKAAAAAAAA +AQAAAMEGAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9s +aWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAMh4FABPAAAABgEAABoAAABkZXNjcmlwdGlv +bigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5Um9vdEN1cnJlbnRFeHBsaWNpdADbCgAABAAA +AAQAAAC0CgAAG1sAAHR5FAACAAAAOwAAAIB5FAABAAAAbQAAAIx5FAABAAAAdHkUAAAAAAAzMAAA +oHkUAAIAAAA5MAAArHkUAAIAAAAzMQAAuHkUAAIAAAA5MQAAxHkUAAIAAAAzMgAA0HkUAAIAAAA5 +MgAA3HkUAAIAAAAzMwAA6HkUAAIAAAA5MwAA9HkUAAIAAAAzNAAAAHoUAAIAAAA5NAAADHoUAAIA +AAAzNQAAGHoUAAIAAAA5NQAAJHoUAAIAAAAzNgAAMHoUAAIAAAA5NgAAPHoUAAIAAAAzNwAASHoU +AAIAAAA5NwAAVHoUAAIAAAAzODs1OwAAAGB6FAAFAAAAMzg7MjsAAABwehQABQAAAIB5FAABAAAA +gHkUAAEAAAAzOQAAkHoUAAIAAAA0MAAAnHoUAAIAAAAxMDAAqHoUAAMAAAA0MQAAtHoUAAIAAAAx +MDEAwHoUAAMAAAA0MgAAzHoUAAIAAAAxMDIA2HoUAAMAAAA0MwAA5HoUAAIAAAAxMDMA8HoUAAMA +AAA0NAAA/HoUAAIAAAAxMDQACHsUAAMAAAA0NQAAFHsUAAIAAAAxMDUAIHsUAAMAAAA0NgAALHsU +AAIAAAAxMDYAOHsUAAMAAAA0NwAARHsUAAIAAAAxMDcAUHsUAAMAAAA0ODs1OwAAAFx7FAAFAAAA +NDg7MjsAAABsexQABQAAAIB5FAABAAAAgHkUAAEAAAA0OQAAjHsUAAIAAADhCgAAJAAAAAQAAADi +CgAA4woAAOQKAACYexQAAAAAABtbMG3lCgAAJAAAAAQAAADiCgAA4woAAOQKAAC4exQABAAAAGNh +bm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV43HsUACAAAAAAL3J1c3RjL2FlZGQxNzNhMmMw +ODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL3N5cy9wYWwvd2Fz +bS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAFfBQAagAAABQAAAAJAAAAY2Fubm90IGFj +Y2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVj +dGlvbgAA5goAAAAAAAABAAAAwQYAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNi +MzQ0Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMA2HwUAE8AAAAGAQAA +GgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUA5woAAAgAAAAE +AAAA6AoAAOkKAAAEAAAABAAAAOoKAABQb2lzb25FcnJvcgDpCgAADAAAAAQAAADrCgAA7AoAAExh +enkgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAApH0UACoAAAAvaG9tZS9y +dW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAx +Zi9vbmNlX2NlbGwtMS4xOS4wL3NyYy9saWIucnMAAADYfRQAXQAAAB8FAAAZAAAAL2hvbWUvcnVu +bmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYv +dGhyZWFkX2xvY2FsLTEuMS44L3NyYy90aHJlYWRfaWQucnMAAABIfhQAZQAAAKcAAAA8AAAA7goA +AC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIy +YmJhMTUwMDFmL2xhenlfc3RhdGljLTEuNC4wL3NyYy9pbmxpbmVfbGF6eS5ycwAAxH4UAGYAAAAe +AAAAEAAAAE9uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAAPH8UACoA +AABvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtYXkgbm90IGJlIHBlcmZvcm1lZCByZWN1cnNpdmVs +eXB/FAA4AAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXiwfxQAIAAAAAAvcnVzdGMv +YWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L3N0ZC9zcmMv +c3lzL3BhbC93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL211dGV4LnJzANl/FABqAAAAFAAAAAkA +AAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5 +L3N0ZC9zcmMvc3luYy9vbmNlLnJzVIAUAEwAAACVAAAAMgAAAHNoYXJkZWRfc2xhYjo6Y2ZnOjpE +ZWZhdWx0Q29uZmln7woAAAQAAAAEAAAAhgEAAGB1bndyYXBfdGhyb3dgIGZhaWxlZGNsb3N1cmUg +aW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAPMKAAAEAAAABAAAAPQK +AAD1CgAARm5PbmNlIGNhbGxlZCBtb3JlIHRoYW4gb25jZWFzc2VydGlvbiBmYWlsZWQ6IHNsb3Qu +aXNfbm9uZSgpL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlv +LTZmMTdkMjJiYmExNTAwMWYvZnV0dXJlcy1jaGFubmVsLTAuMy4zMC9zcmMvb25lc2hvdC5ycwB4 +gRQAZwAAAIIAAAANAAAA9goAAAQAAAAEAAAAqAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0 +cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2luc3RhbnQtMC4xLjEyL3Ny +Yy93YXNtLnJzcGVyZm9ybWFuY2VmYWlsZWQgdG8gZ2V0IHBlcmZvcm1hbmNlIGZyb20gZ2xvYmFs +IG9iamVjdAAAghQAXAAAAIkAAAAOAAAA9woAAAgAAAAEAAAA+AoAAHBlbmRpbmdkb25lcmVhZG9u +bHlyZWFkd3JpdGVyZWFkd3JpdGVmbHVzaGNsZWFudXB2ZXJzaW9uY2hhbmdlYXR0ZW1wdGVkIHRv +IGNvbnZlcnQgaW52YWxpZCBJZGJUcmFuc2FjdGlvbk1vZGUgaW50byBKU1ZhbHVlL2hvbWUvcnVu +bmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYv +d2ViLXN5cy0wLjMuNjkvc3JjL2ZlYXR1cmVzL2dlbl9JZGJUcmFuc2FjdGlvbk1vZGUucnMAAAAu +gxQAdwAAAAQAAAABAAAAdW5pcXVlAAD5CgAACAAAAAQAAAD6CgAA+woAANSDFAAAAAAAL2hvbWUv +cnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAw +MWYvZnV0dXJlcy11dGlsLTAuMy4zMC9zcmMvc3RyZWFtL2Z1dHVyZXNfdW5vcmRlcmVkL2Fib3J0 +LnJzANyDFAB7AAAACwAAAAUAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl +eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9mdXR1cmVzLWNvcmUtMC4zLjMwL3NyYy90YXNr +L19faW50ZXJuYWwvYXRvbWljX3dha2VyLnJzAAAAaIQUAHkAAAA2AQAARAAAAP0KAAAAAAAAAQAA +AP4KAAB1bGxydWVhbHNlaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZS9o +b21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJh +MTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvZGUucnM2hRQAXgAAAJoEAAAiAAAANoUUAF4A +AACQBAAAJgAAAP0KAAAAAAAAAQAAAP8KAAD9CgAAAAAAAAEAAAAACwAA/QoAAAAAAAABAAAAAQsA +AG5ld3R5cGUgdmFyaWFudADkhRQADwAAAAILAAAIAAAABAAAAAQAAAD9CgAAAAAAAAEAAAAIBgAA +/QoAAAAAAAABAAAACAYAAP0KAAAAAAAAAQAAAAsGAAD9CgAAAAAAAAEAAAAQBgAA/QoAAAAAAAAB +AAAAEQYAAP0KAAAAAAAAAQAAAAMLAAD9CgAAAAAAAAEAAAAqAAAA/QoAAAAAAAABAAAADgYAAP0K +AAAAAAAAAQAAABUGAAD9CgAAAAAAAAEAAAAYBgAA/QoAAAAAAAABAAAAFgYAAP0KAAAAAAAAAQAA +ABkGAAD9CgAAAAAAAAEAAAAaBgAA/QoAAAAAAAABAAAABAsAAP0KAAAAAAAAAQAAAMcGAAD9CgAA +AAAAAAEAAAAcBgAA/QoAAAAAAAABAAAAMQYAAP0KAAAAAAAAAQAAAD4GAAD9CgAAAAAAAAEAAAAq +BgAA/QoAAAAAAAABAAAAPwYAAP0KAAAAAAAAAQAAAD0GAAD9CgAAAAAAAAEAAAAhBgAA/QoAAAAA +AAABAAAAOgYAAP0KAAAAAAAAAQAAADIGAAD9CgAAAAAAAAEAAAAwBgAA/QoAAAAAAAABAAAAJwYA +AP0KAAAAAAAAAQAAAB8GAAD9CgAAAAAAAAEAAAB0AAAA/QoAAAAAAAABAAAAQAYAAP0KAAAAAAAA +AQAAACIGAAD9CgAAAAAAAAEAAAAvBgAAc3RydWN0IEdyb3VwU2Vzc2lvblBpY2tsZSB3aXRoIDMg +ZWxlbWVudHMAAAD8hxQAKQAAAHJhdGNoZXRzaWduaW5nX2tleWNvbmZpZ3N0cnVjdCBJbmJvdW5k +R3JvdXBTZXNzaW9uUGlja2xlIHdpdGggNCBlbGVtZW50c0iIFAAwAAAAaW5pdGlhbF9yYXRjaGV0 +c2lnbmluZ19rZXlfdmVyaWZpZWRzdHJ1Y3QgUmF0Y2hldCB3aXRoIDIgZWxlbWVudHMAAACjiBQA +HgAAAGlubmVyY291bnRlcnN0cnVjdCBTZXNzaW9uQ29uZmlnIHdpdGggMSBlbGVtZW50ANiIFAAj +AAAAdmVyc2lvbnN0cnVjdCBGYWxsYmFja0tleSB3aXRoIDMgZWxlbWVudHMAAAALiRQAIgAAAGtl +eV9pZGtleXB1Ymxpc2hlZHN0cnVjdCBGYWxsYmFja0tleXMgd2l0aCAzIGVsZW1lbnRzAAAASokU +ACMAAABmYWxsYmFja19rZXlwcmV2aW91c19mYWxsYmFja19rZXlzdHJ1Y3QgT25lVGltZUtleXNQ +aWNrbGUgd2l0aCAzIGVsZW1lbnRzAAAAmYkUACgAAABuZXh0X2tleV9pZHB1YmxpY19rZXlzcHJp +dmF0ZV9rZXlzc3RydWN0IEFjY291bnRQaWNrbGUgd2l0aCA0IGVsZW1lbnRzAADuiRQAJAAAAGRp +ZmZpZV9oZWxsbWFuX2tleW9uZV90aW1lX2tleXNmYWxsYmFja19rZXlzc3RydWN0IFJlbW90ZUNo +YWluS2V5IHdpdGggMiBlbGVtZW50cwAAAEiKFAAlAAAAaW5kZXhzdHJ1Y3QgUmVtb3RlTWVzc2Fn +ZUtleSB3aXRoIDIgZWxlbWVudHN9ihQAJwAAAHN0cnVjdCBNZXNzYWdlS2V5U3RvcmUgd2l0aCAx +IGVsZW1lbnQAAACsihQAJQAAAHN0cnVjdCBSZWNlaXZlckNoYWluIHdpdGggNCBlbGVtZW50c9yK +FAAkAAAAcmF0Y2hldF9rZXloa2RmX3JhdGNoZXRza2lwcGVkX21lc3NhZ2Vfa2V5c3JhdGNoZXRf +Y291bnRzdHJ1Y3QgQ2hhaW5TdG9yZSB3aXRoIDEgZWxlbWVudECLFAAgAAAAc3RydWN0IFNlc3Np +b25QaWNrbGUgd2l0aCA0IGVsZW1lbnRzaIsUACQAAABzZXNzaW9uX2tleXNzZW5kaW5nX3JhdGNo +ZXRyZWNlaXZpbmdfY2hhaW5zc3RydWN0IFNlc3Npb25LZXlzIHdpdGggMyBlbGVtZW50cwAAAL+L +FAAiAAAAaWRlbnRpdHlfa2V5YmFzZV9rZXlvbmVfdGltZV9rZXkKAACABAAAgAgAAIAFCwAAAAAA +AAEAAAD+CgAAbWFwIHdpdGggYSBzaW5nbGUga2V5AAAAKIwUABUAAAAGCwAACAAAAAQAAAAEAAAA +c3RyaW5nIG9yIG1hcAAAAFiMFAANAAAABQsAAAAAAAABAAAAxwYAAAULAAAAAAAAAQAAAAcLAAAF +CwAAAAAAAAEAAAAICwAABQsAAAAAAAABAAAACQsAAAULAAAAAAAAAQAAAAoLAAAFCwAAAAAAAAEA +AAALCwAABQsAAAAAAAABAAAAGgYAAAULAAAAAAAAAQAAAAwLAAAFCwAAAAAAAAEAAAANCwAABQsA +AAAAAAABAAAADgsAAAULAAAAAAAAAQAAAA8LAAAFCwAAAAAAAAEAAAAMCwAAbmV3dHlwZSB2YXJp +YW50ADCNFAAPAAAABQsAAAAAAAABAAAA/woAAAULAAAAAAAAAQAAAAALAAAGCwAAEAAAAAQAAAAQ +CwAAc3RydWN0IENoYWluS2V5IHdpdGggMiBlbGVtZW50cwB4jRQAHwAAAGtleWluZGV4c3RydWN0 +IEluYWN0aXZlRG91YmxlUmF0Y2hldCB3aXRoIDMgZWxlbWVudHOojRQALAAAAHJvb3Rfa2V5cmF0 +Y2hldF9rZXlyYXRjaGV0X2NvdW50c3RydWN0IEFjdGl2ZURvdWJsZVJhdGNoZXQgd2l0aCA0IGVs +ZW1lbnRzAAD8jRQAKgAAAHBhcmVudF9yYXRjaGV0X2tleWFjdGl2ZV9yYXRjaGV0c3ltbWV0cmlj +X2tleV9yYXRjaGV0c3RydWN0IFJhdGNoZXQgd2l0aCAyIGVsZW1lbnRzAGWOFAAeAAAAc3RydWN0 +IFJlbW90ZVJvb3RLZXkgd2l0aCAxIGVsZW1lbnQAjI4UACMAAAB9bnVsbHs6ABILAAAEAAAABAAA +AFYFAAASCwAABAAAAAQAAAC8BgAATm9uZVNvbWUSCwAABAAAAAQAAAATCwAAJHNlcmRlX2pzb246 +OnByaXZhdGU6OlJhd1ZhbHVlTWFwQWNjZXNzOjpuZXh0X3ZhbHVlIGNhbGxlZCBiZWZvcmUgbmV4 +dF9rZXkvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYx +N2QyMmJiYTE1MDAxZi9zZXJkZS0xLjAuMTk3L3NyYy9kZS92YWx1ZS5ycwAAAEKPFABfAAAAzgQA +ABsAAAB1bGxydWVhbHNlAAAAQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xt +bm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL/////////////////////////////////////////// +//////////////8+////PzQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYX +GBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////8vaG9t +ZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvdm9kb3plbWFjLWRhOWMxNjE1YjZhYzE0ZTUv +MGM3NTc0Ni9zcmMvdXRpbGl0aWVzL21vZC5ycwAAAZEUAFkAAABUAAAAHwAAAAGRFABZAAAAVwAA +AA0AAAABkRQAWQAAAE4AAAAfAAAAAZEUAFkAAABRAAAADQAAAAGRFABZAAAAlgAAAAoAAAABkRQA +WQAAAJEAAAAOAAAARG91YmxlUmF0Y2hldAAAABQLAAA4AAAACAAAABULAAAWCwAAUAAAAAgAAAAX +CwAASW5hY3RpdmVEb3VibGVSYXRjaGV0cmF0Y2hldF9jb3VudAAAGAsAABAAAAAIAAAAGQsAAHJh +dGNoZXRfa2V5ABoLAAAgAAAAAQAAABsLAABBY3RpdmVEb3VibGVSYXRjaGV0cGFyZW50X3JhdGNo +ZXRfa2V5AAAAGgsAACEAAAABAAAAHAsAABoLAAAgAAAAAQAAAB0LAABjaGFpbl9pbmRleAAYCwAA +CAAAAAgAAAAeCwAAwI4UAAAAAAA8dW5rbm93bj4AAACokhQACQAAAERvdWJsZVJhdGNoZXRTdGF0 +ZUluYWN0aXZldHlwZWluYWN0aXZlQWN0aXZlYWN0aXZlaW50ZXJuYWxseSB0YWdnZWQgZW51bSBE +b3VibGVSYXRjaGV0U3RhdGV2YXJpYW50IGlkZW50aWZpZXIAAADakhQACAAAAOiSFAAGAAAAcm9v +dF9rZXk8kxQACAAAACCSFAALAAAAAZIUAA0AAABmaWVsZCBpZGVudGlmaWVyc3RydWN0IEluYWN0 +aXZlRG91YmxlUmF0Y2hldGFjdGl2ZV9yYXRjaGV0c3ltbWV0cmljX2tleV9yYXRjaGV0AE+SFAAS +AAAAAZIUAA0AAACIkxQADgAAAJaTFAAVAAAAc3RydWN0IEFjdGl2ZURvdWJsZVJhdGNoZXRSYXRj +aGV0Q291bnRLbm93blVua25vd24AAPKTFAAFAAAA95MUAAcAAAB2YXJpYW50IGluZGV4IDAgPD0g +aSA8IDIQlBQAGAAAABILAAAIAAAABAAAAAQAAABSYXRjaGV0UHVibGljS2V5EgsAAAQAAAAEAAAA +BgEAAH17L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZm +MTdkMjJiYmExNTAwMWYvZGlnZXN0LTAuMTAuNy9zcmMvY29yZV9hcGkvY3RfdmFyaWFibGUucnMA +AABilBQAawAAAHwAAAAkAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXgu +Y3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmxvY2stYnVmZmVyLTAuMTAuNC9zcmMvbGliLnJz +4JQUAGAAAACiAAAAJwAAAOCUFABgAAAApAAAABgAAADglBQAYAAAAKQAAAAgAAAA4JQUAGAAAACu +AAAAFAAAAOCUFABgAAAArgAAABoAAADglBQAYAAAAJ0AAAAYAAAA4JQUAGAAAACdAAAAHwAAAOCU +FABgAAAAnQAAACUAAADglBQAYAAAAC0BAAAiAAAA4JQUAGAAAAA4AQAAHgAAAOCUFABgAAAANQEA +ABgAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYx +N2QyMmJiYTE1MDAxZi9kaWdlc3QtMC4xMC43L3NyYy9tYWMucnMAAPCVFABaAAAAywAAACsAAABk +ZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5bWlkID4gbGVuAAAAhJYUAAkA +AAAgCwAAAAAAAAEAAAAhCwAAIAsAAAAAAAABAAAAIgsAACALAAAAAAAAAQAAACMLAAAiCwAAqJYU +ACQLAAAlCwAAJgsAACQLAAAnCwAAIAsAAAAAAAABAAAAKAsAACALAAAAAAAAAQAAACkLAAAoCwAA +5JYUACQLAAAqCwAAJgsAACsLAAAnCwAATWFjRXJyb3JpbnZhbGlkIHZhcmludGludmFsaWQgd2ly +ZSB0eXBlOiAgKGV4cGVjdGVkICkAAAA2lxQAEwAAAEmXFAALAAAAVJcUAAEAAABidWZmZXIgdW5k +ZXJmbG93UGFkRXJyb3JVbnBhZEVycm9yVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVk +U3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3Ry +eS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmxvY2stcGFkZGluZy0wLjMu +My9zcmMvbGliLnJzAAAA0ZcUAGAAAADSAAAAHAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0 +cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2NpcGhlci0wLjQuNC9zcmMv +YmxvY2sucnMARJgUAFsAAAAiAgAANQAAAGVub3VnaCBzcGFjZSBmb3IgZW5jcnlwdGluZyBpcyBh +bGxvY2F0ZWREmBQAWwAAALABAAAOAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMv +aW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYnl0ZXMtMS42LjAvc3JjL2J1Zi9idWZf +bXV0LnJz6JgUAGAAAADgBQAADQAAAOiYFABgAAAA4AUAABsAAAAkc2VyZGVfanNvbjo6cHJpdmF0 +ZTo6UmF3VmFsdWUvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi9zaGEyLTAuMTAuOC9zcmMvY29yZV9hcGkucnMAhpkUAF0AAABC +AAAAEwAAAAAAAABn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gWy9ob21lL3J1bm5lci8u +Y2FyZ28vZ2l0L2NoZWNrb3V0cy92b2RvemVtYWMtZGE5YzE2MTViNmFjMTRlNS8wYzc1NzQ2L3Ny +Yy9jaXBoZXIvbW9kLnJzAAAYmhQAVgAAACsAAAATAAAAGJoUAFYAAACHAAAADQAAABiaFABWAAAA +lQAAADAAAABTZXNzaW9uS2V5c2lkZW50aXR5X2tleQAsCwAADAAAAAQAAAAtCwAAYmFzZV9rZXlv +bmVfdGltZV9rZXlGYWlsZWQgZGVjcnlwdGluZywgaW52YWxpZCBwYWRkaW5nVGhlIE1BQyBvZiB0 +aGUgY2lwaGVydGV4dCBkaWRuJ3QgcGFzcyB2YWxpZGF0aW9uIAD+mhQAMQAAAFRoZSBjaXBoZXJ0 +ZXh0IGRpZG4ndCBjb250YWluIGEgdmFsaWQgTUFDUmF0Y2hldHJvb3Rfa2V5cmF0Y2hldF9rZXkA +aJsUAAgAAABwmxQACwAAAGZpZWxkIGlkZW50aWZpZXJzdHJ1Y3QgUmF0Y2hldFNlc3Npb25Db25m +aWd2ZXJzaW9uAAC3mxQABwAAAHN0cnVjdCBTZXNzaW9uQ29uZmlnVjFWMtybFAACAAAA3psUAAIA +AAB2YXJpYW50IGlkZW50aWZpZXIAAKuaFAAMAAAAyJoUAAgAAADQmhQADAAAAHN0cnVjdCBTZXNz +aW9uS2V5cwAABgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAkpcUAJiXFACklxQAs5cUAL2XFADFlxQA +aW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZS9ob21lL3J1bm5lci8uY2Fy +Z28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pz +b24tMS4wLjExNS9zcmMvc2VyLnJzAIicFABfAAAACwYAABIAAACInBQAXwAAAC4IAAAzAAAAiJwU +AF8AAAAhCAAAQAAAAH0iZmFsc2V0cnVlbnVsbFt7LFwiXFxcYlxmXG5cclx0Ol0vaG9tZS9ydW5u +ZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9i +bG9jay1wYWRkaW5nLTAuMy4zL3NyYy9saWIucnMAADqdFABgAAAAvgAAABsAAAA6nRQAYAAAAMEA +AAASAAAAYXNzZXJ0aW9uIGZhaWxlZDogbiA8PSBicwAAADqdFABgAAAAUQAAABEAAAAuCwAABAAA +AAQAAAAvCwAALgsAAAQAAAAEAAAAMAsAAFVucGFkRXJyb3IvaG9tZS9ydW5uZXIvLmNhcmdvL3Jl +Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEu +MC4xMTUvc3JjL3JlYWQucnMAABKeFABgAAAAVgIAAB4AAACInBQAXwAAAH0CAAAqAAAAiJwUAF8A +AACUAgAAKgAAAIicFABfAAAAogIAACoAAACInBQAXwAAAPoBAAAqAAAAiJwUAF8AAAAIAgAAKgAA +ACRzZXJkZV9qc29uOjpwcml2YXRlOjpSYXdWYWx1ZWV4cGVjdGVkIFJhd1ZhbHVlL2hvbWUvcnVu +bmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYv +emVyb2l6ZS0xLjcuMC9zcmMvbGliLnJzAAAAA58UAFoAAADMAQAAQAAAAGFzc2VydGlvbiBmYWls +ZWQ6IHNpemUgPD0gaXNpemU6Ok1BWCBhcyB1c2l6ZQAAAAOfFABaAAAAzQEAAAkAAABTZXNzaW9u +Q29uZmlndmVyc2lvbr2fFAAHAAAAc3RydWN0IFNlc3Npb25Db25maWdWMVYy4J8UAAIAAADinxQA +AgAAAHZhcmlhbnQgaWRlbnRpZmllclZlcmlmeWluZ0tleWV4cGVjdGVkIDMyIGJ5dGVzABKgFAAR +AAAAMQsAAAgAAAAEAAAABAAAADILAAAIAAAABAAAADMLAAB1bGxzaWduYXR1cmUgb3BlcmF0aW9u +IGZhaWxlZC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02 +ZjE3ZDIyYmJhMTUwMDFmL3NpZ25hdHVyZS0yLjIuMC9zcmMvc2lnbmVyLnJzaaAUAF8AAAAQAAAA +HAAAAH17L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZm +MTdkMjJiYmExNTAwMWYvYXJyYXl2ZWMtMC43LjQvc3JjL2FycmF5dmVjLnJzAADaoBQAYAAAAG0E +AAAPAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZm +MTdkMjJiYmExNTAwMWYvZGlnZXN0LTAuMTAuNy9zcmMvY29yZV9hcGkvY3RfdmFyaWFibGUucnMA +TKEUAGsAAAB8AAAAJAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNy +YXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3JjL2xpYi5yc8ih +FABgAAAAogAAACcAAADIoRQAYAAAAKQAAAAYAAAAyKEUAGAAAACkAAAAIAAAAMihFABgAAAArgAA +ABQAAADIoRQAYAAAAK4AAAAaAAAAyKEUAGAAAACdAAAAGAAAAMihFABgAAAAnQAAAB8AAADIoRQA +YAAAAJ0AAAAlAAAAyKEUAGAAAAAtAQAAIgAAAMihFABgAAAAOAEAAB4AAADIoRQAYAAAADUBAAAY +AAAAYW4gYXJyYXkgd2l0aCBubyBtb3JlIHRoYW4gIGl0ZW1zAAAA2KIUABsAAADzohQABgAAACgA +AAAFAAAANAsAAAAAAAABAAAADgYAADQLAAAAAAAAAQAAAAsGAABtaWQgPiBsZW4AAAA0oxQACQAA +AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUANQsAABAAAAAIAAAA +NgsAADcLAADIAgAACAAAADgLAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl +eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9obWFjLTAuMTIuMS9zcmMvbGliLnJzlKMUAFgA +AAB8AAAAIwAAAJSjFABYAAAAcwAAABAAAACUoxQAWAAAAHMAAAAeAAAAaW50ZXJuYWwgZXJyb3I6 +IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZSRzZXJkZV9qc29uOjpwcml2YXRlOjpSYXdWYWx1ZS9o +b21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJh +MTUwMDFmL3NoYTItMC4xMC44L3NyYy9jb3JlX2FwaS5ycwBipBQAXQAAAEIAAAATAAAAZ+YJaoWu +Z7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FvaoBQAYAAAAHwCAAAqAAAAL2hvbWUvcnVubmVyLy5j +YXJnby9naXQvY2hlY2tvdXRzL3ZvZG96ZW1hYy1kYTljMTYxNWI2YWMxNGU1LzBjNzU3NDYvc3Jj +L21lZ29sbS9yYXRjaGV0LnJzAAAApRQAWgAAADkAAAAXAAAAAKUUAFoAAABjAAAAEAAAAAABAgN8 +pRQAfaUUAH6lFAB/pRQAAKUUAFoAAAB4AAAAIAAAAAClFABaAAAAfwAAABIAAAAApRQAWgAAAHUA +AAASAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL3ZvZG96ZW1hYy1kYTljMTYx +NWI2YWMxNGU1LzBjNzU3NDYvc3JjL29sbS9zZXNzaW9uL3JlY2VpdmVyX2NoYWluLnJzAADApRQA +ZgAAAC8AAAAUAAAAUmVjZWl2ZXJDaGFpbnJhdGNoZXRfY291bnQAADkLAAAEAAAABAAAADoLAABy +YXRjaGV0X2tleQA5CwAABAAAAAQAAAATCwAAY2hhaW5faW5kZXgAOwsAAAgAAAAIAAAAPAsAAHNr +aXBwZWRfbWVzc2FnZV9rZXlzPQsAAIgCAAAIAAAAPgsAAFJhdGNoZXRpbm5lcmNvdW50ZXIAx6YU +AAUAAADMphQABwAAAHN0cnVjdCBSYXRjaGV0SW52YWxpZCBNZWdvbG0gcmF0Y2hldCBsZW5ndGg6 +IGV4cGVjdGVkIDEyOCwgZ290IADyphQAMQAAAE1lc3NhZ2VLZXlTdG9yZQDHphQABQAAAHN0cnVj +dCBNZXNzYWdlS2V5U3RvcmVoa2RmX3JhdGNoZXQAAGSmFAALAAAAWqcUAAwAAACcphQAFAAAAEWm +FAANAAAAc3RydWN0IFJlY2VpdmVyQ2hhaW59W3ssXS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0 +cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2RpZ2VzdC0wLjEwLjcvc3Jj +L2NvcmVfYXBpL2N0X3ZhcmlhYmxlLnJzoacUAGsAAAB8AAAAPQAAAKGnFABrAAAAfAAAACQAAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJi +YTE1MDAxZi9ibG9jay1idWZmZXItMC4xMC40L3NyYy9saWIucnMsqBQAYAAAAKQAAAAYAAAALKgU +AGAAAACkAAAAIAAAACyoFABgAAAArgAAABQAAAAsqBQAYAAAAK4AAAAaAAAALKgUAGAAAACdAAAA +GAAAACyoFABgAAAAnQAAAB8AAAAsqBQAYAAAAJ0AAAAlAAAALKgUAGAAAAAtAQAAIgAAACyoFABg +AAAAOAEAAB4AAAAsqBQAYAAAADUBAAAYAAAAUHVibGljS2V5U3RhdGljU2VjcmV0TW9udGdvbWVy +eVBvaW50PwsAAAAAAAABAAAAQAsAAD8LAAAAAAAAAQAAAEELAAA/CwAAAAAAAAEAAABCCwAAPwsA +AAAAAAABAAAAQwsAAD8LAAAAAAAAAQAAAEQLAABJbnZhbGlkTGVuZ3RoL2hvbWUvcnVubmVyLy5j +YXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0 +LTAuMjIuMC9zcmMvZW5jb2RlLnJzAACtqRQAXQAAAFAAAAAzAAAAdXNpemUgb3ZlcmZsb3cgd2hl +biBjYWxjdWxhdGluZyBiNjQgbGVuZ3RoAACtqRQAXQAAAFcAAAAKAAAAQ2FwYWNpdHlFcnJvcjog +AFiqFAAPAAAAaW5zdWZmaWNpZW50IGNhcGFjaXR5AAAAcKoUABUAAABpbnRlcm5hbCBlcnJvcjog +ZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMv +aW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1L3NyYy9z +ZXIucnMAuKoUAF8AAAD6AQAAKgAAALiqFABfAAAACAIAACoAAAAkc2VyZGVfanNvbjo6cHJpdmF0 +ZTo6UmF3VmFsdWUvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi9zaGEyLTAuMTAuOC9zcmMvY29yZV9hcGkucnMAVqsUAF0AAABC +AAAAEwAAAAAAAABn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gW09MTV9LRVlTTUVHT0xN +X0tFWVNQaWNrbGUAQ2FuJ3QgZXhwYW5kIG1lc3NhZ2Uga2V5L2hvbWUvcnVubmVyLy5jYXJnby9n +aXQvY2hlY2tvdXRzL3ZvZG96ZW1hYy1kYTljMTYxNWI2YWMxNGU1LzBjNzU3NDYvc3JjL2NpcGhl +ci9rZXkucnMarBQAVgAAADgAAAAvAAAAGqwUAFYAAABfAAAAMQAAABqsFABWAAAAXwAAABEAAAAa +rBQAVgAAAGAAAAAxAAAAGqwUAFYAAABgAAAAEQAAABqsFABWAAAAYQAAADAAAAAarBQAVgAAAGEA +AAAQAAAAT0xNX1JBVENIRVRDYW4ndCBleHBhbmQvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvdm9kb3plbWFjLWRhOWMxNjE1YjZhYzE0ZTUvMGM3NTc0Ni9zcmMvb2xtL3Nlc3Npb24v +cm9vdF9rZXkucnMA96wUAGAAAAA/AAAAOgAAAPesFABgAAAAUwAAABMAAAD3rBQAYAAAAFQAAAAp +AAAA96wUAGAAAABUAAAAEgAAAPesFABgAAAAbAAAACkAAAD3rBQAYAAAAGwAAAASAAAA96wUAGAA +AABtAAAAEwAAAE9MTV9ST09UQ2FuJ3QgZXhwYW5kIHRoZSBzaGFyZWQgM0RIIHNlY3JldCBpbnRv +IHRoZSBPbG0gcm9vdC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy92b2RvemVtYWMt +ZGE5YzE2MTViNmFjMTRlNS8wYzc1NzQ2L3NyYy9vbG0vc2hhcmVkX3NlY3JldC5ycwAAAASuFABd +AAAAOQAAAAoAAAAErhQAXQAAADsAAAAsAAAABK4UAF0AAAA7AAAADgAAAASuFABdAAAAPAAAAC0A +AAAErhQAXQAAADwAAAAPAAAABK4UAF0AAABKAAAACwAAAASuFABdAAAASgAAABMAAAAErhQAXQAA +AEsAAAALAAAABK4UAF0AAABLAAAAFAAAAASuFABdAAAATAAAAAsAAAAErhQAXQAAAEwAAAAUAAAA +L2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL3ZvZG96ZW1hYy1kYTljMTYxNWI2YWMx +NGU1LzBjNzU3NDYvc3JjL3Nhcy5ycwAUrxQATwAAALEAAAAhAAAAFK8UAE8AAACyAAAAFQAAABSv +FABPAAAAswAAABUAAAAUrxQATwAAALQAAAAVAAAAFK8UAE8AAAC1AAAAFQAAABSvFABPAAAAtgAA +ABUAAAAUrxQATwAAAMwAAAAaAAAAFK8UAE8AAADMAAAAKgAAABSvFABPAAAAzQAAABwAAAAUrxQA +TwAAAM0AAAA0AAAAFK8UAE8AAADNAAAARAAAABSvFABPAAAAzgAAABsAAAAUrxQATwAAAM4AAAAz +AAAASEtERiBzaG91bGQgYWx3YXlzIGJlIGFibGUgdG8gZ2VuZXJhdGUgNiBieXRlcwAAFK8UAE8A +AAAWAQAAJQAAABSvFABPAAAAGAEAAA8AAAAUrxQATwAAACoBAAAxAAAAFK8UAE8AAABVAQAANAAA +ABSvFABPAAAAdAEAACMAAAAUrxQATwAAAG0BAAAnAAAAFK8UAE8AAABfAQAAKwAAABSvFABPAAAA +YAEAACsAAABDYW4ndCBleHBhbmQgdGhlIE1BQyBrZXkUrxQATwAAAJoBAAA+AAAAZmllbGQgaWRl +bnRpZmllcnN0cnVjdCBNZXNzYWdlU2VyZGVIZWxwZXJSZW1vdGVSb290S2V5a2V5AAAAQrEUAAMA +AABzdHJ1Y3QgUmVtb3RlUm9vdEtleUludmFsaWRDb3VudC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1 +OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0 +cmVlL21hcC9lbnRyeS5yc3CxFABgAAAAcAEAADYAAABhc3NlcnRpb24gZmFpbGVkOiBpZHggPCBD +QVBBQ0lUWS9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xp +YnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25vZGUucnMAALIUAFsAAACXAgAACQAA +AGFzc2VydGlvbiBmYWlsZWQ6IGVkZ2UuaGVpZ2h0ID09IHNlbGYuaGVpZ2h0IC0gMQCyFABbAAAA +rwIAAAkAAAAAshQAWwAAALMCAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFi +bGUgY29kZTogZW1wdHkgaW50ZXJuYWwgbm9kZQAAALyyFAA9AAAAALIUAFsAAAArBQAAHwAAAGFz +c2VydGlvbiBmYWlsZWQ6IHNlbGYuaGVpZ2h0ID4gMAAAAACyFABbAAAAYgIAAAkAAABhc3NlcnRp +b24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigpALIUAFsAAAAvBwAABQAAAACyFABbAAAA +rwQAACMAAAAAshQAWwAAALMEAAAjAAAAALIUAFsAAADvBAAAJAAAAGFzc2VydGlvbiBmYWlsZWQ6 +IGVkZ2UuaGVpZ2h0ID09IHNlbGYubm9kZS5oZWlnaHQgLSAxAAAAALIUAFsAAADwAwAACQAAAGFz +c2VydGlvbiBmYWlsZWQ6IGNvdW50ID4gMAAAshQAWwAAANQFAAAJAAAAYXNzZXJ0aW9uIGZhaWxl +ZDogb2xkX3JpZ2h0X2xlbiArIGNvdW50IDw9IENBUEFDSVRZAACyFABbAAAA3AUAAA0AAABhc3Nl +cnRpb24gZmFpbGVkOiBvbGRfbGVmdF9sZW4gPj0gY291bnQAALIUAFsAAADdBQAADQAAAGludGVy +bmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUAshQAWwAAAAwGAAAWAAAAALIUAFsA +AAATBgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiArIGNvdW50IDw9IENBUEFD +SVRZAAAAshQAWwAAABsGAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogb2xkX3JpZ2h0X2xlbiA+PSBj +b3VudACyFABbAAAAHAYAAA0AAAAAshQAWwAAAEwGAAAWAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWF0 +Y2ggdHJhY2tfZWRnZV9pZHggewogICAgTGVmdE9yUmlnaHQ6OkxlZnQoaWR4KSA9PiBpZHggPD0g +b2xkX2xlZnRfbGVuLAogICAgTGVmdE9yUmlnaHQ6OlJpZ2h0KGlkeCkgPT4gaWR4IDw9IHJpZ2h0 +X2xlbiwKfQAAALIUAFsAAACuBQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IG5ld19sZWZ0X2xlbiA8 +PSBDQVBBQ0lUWQAAALIUAFsAAABhBQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGxlbiA+IDAAAAAA +shQAWwAAAGUBAAAJAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3 +NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAfLYU +AF8AAABZAgAAMAAAAEcLAAAIAAAABAAAAEgLAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2 +NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9t +YXAvZW50cnkucnP8thQAYAAAADICAAAqAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9z +cmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYnl0ZXMtMS42LjAvc3JjL2J1Zi91 +bmluaXRfc2xpY2UucnMAAABstxQAZQAAAIkAAAAJAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdp +c3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYnl0ZXMtMS42LjAvc3Jj +L2J1Zi9idWZfbXV0LnJz5LcUAGAAAADXAAAAKAAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxp +ZCBrZXkgdmFsdWU6IABouBQAEwAAAGludmFsaWQgdmFyaW50aW52YWxpZCB3aXJlIHR5cGU6ICAo +ZXhwZWN0ZWQgKQAAAJK4FAATAAAApbgUAAsAAACwuBQAAQAAAFZhcmludFNpeHR5Rm91ckJpdExl +bmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdEVuY29kZUVycm9ycmVx +dWlyZWQAAEcLAAAEAAAABAAAAEULAAByZW1haW5pbmcAAABHCwAABAAAAAQAAABJCwAAY2Fubm90 +IGFkdmFuY2UgcGFzdCBgcmVtYWluaW5nYDogIDw9IAAAAEy5FAAhAAAAbbkUAAQAAAAvaG9tZS9y +dW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAx +Zi9ieXRlcy0xLjYuMC9zcmMvYnl0ZXMucnMAAIS5FABaAAAAOwIAAAkAAABpbnZhbGlkIHdpcmUg +dHlwZSB2YWx1ZTogAAAA8LkUABkAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMv +dm9kb3plbWFjLWRhOWMxNjE1YjZhYzE0ZTUvMGM3NTc0Ni9zcmMvb2xtL21lc3NhZ2VzL3ByZV9r +ZXkucnMUuhQAYAAAAIEAAAAPAAAAQ291bGRuJ3QgZW5jb2RlIG91ciBtZXNzYWdlIGludG8gYSBw +cm90b2J1ZgAUuhQAYAAAAIUAAAAOAAAAFLoUAGAAAADRAAAAPwAAAFByb3RvQnVmUHJlS2V5TWVz +c2FnZW9uZV90aW1lX2tleWJhc2Vfa2V5aWRlbnRpdHlfa2V5bWVzc2FnZQYAAAAMAAAADwAAAAoA +AAAIAAAADAAAAMy4FADSuBQA3rgUAO24FAD3uBQA/7gUAH17AAD//////////0C7FABB2PbSAAv9 +GkoLAABkZXNjcmlwdGlvbigpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5SwsAABQAAAAEAAAA +TAsAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAAlLsUACoAAABN +CwAAGAAAAAgAAABOCwAATQsAABgAAAAIAAAATwsAAE4LAADIuxQAUAsAAFELAABSCwAAUwsAAFQL +AAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5 +L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwAEvBQAXwAAAMcAAAAnAAAA +BLwUAF8AAAAXAgAALwAAAAS8FABfAAAAogAAACQAAABVdGY4RXJyb3J2YWxpZF91cF90b1ULAAAE +AAAABAAAAFYLAABlcnJvcl9sZW4AAABVCwAABAAAAAQAAABXCwAARnJvbVV0ZjhFcnJvcmJ5dGVz +AABYCwAADAAAAAQAAABYBQAAZXJyb3IAAABVCwAABAAAAAQAAABZCwAAL2hvbWUvcnVubmVyLy5j +YXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0 +LTAuMjIuMC9zcmMvZW5naW5lL21vZC5yc1ZlYyBpcyBzaXplZCBjb25zZXJ2YXRpdmVseXG9FAAb +AAAAEL0UAGEAAAAAAQAAGQAAAGludGVnZXIgb3ZlcmZsb3cgd2hlbiBjYWxjdWxhdGluZyBidWZm +ZXIgc2l6ZQAAABC9FABhAAAAeAAAABIAAABJbnZhbGlkIFVURjgQvRQAYQAAAH4AAAAkAAAAaW50 +ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZSRzZXJkZV9qc29uOjpwcml2YXRl +OjpSYXdWYWx1ZS9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3 +L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL21hcC5yc0a+FABaAAAA5gAAACwA +AABGvhQAWgAAAPoAAAA/AAAARr4UAFoAAAAfAQAALgAAAAABAlRoZSBwcmUta2V5IG1lc3NhZ2Ug +Y29udGFpbmVkIGFuIHVua25vd24gb25lLXRpbWUga2V5OiAAANO+FAA3AAAAVGhlIGdpdmVuIGlk +ZW50aXR5IGtleSBkb2Vzbid0IG1hdGNoIHRoZSBvbmUgaW4gdGhlIHByZS1rZXkgbWVzc2FnZTog +ZXhwZWN0ZWQgLCBnb3QgFL8UAE4AAABivxQABgAAAFRoZSBtZXNzYWdlIHRoYXQgd2FzIHVzZWQg +dG8gZXN0YWJsaXNoIHRoZSBTZXNzaW9uIGNvdWxkbid0IGJlIGRlY3J5cHRlZEFjY291bnRQaWNr +bGVzaWduaW5nX2tleWRpZmZpZV9oZWxsbWFuX2tleW9uZV90aW1lX2tleXNmYWxsYmFja19rZXlz +zb8UAAsAAADYvxQAEgAAAOq/FAANAAAA978UAA0AAABzdHJ1Y3QgQWNjb3VudFBpY2tsZUludmFs +aWRNQUMAAFULAAAEAAAABAAAAO4FAABJbnZhbGlkTUFDTGVuZ3RoVQsAAAQAAAAEAAAASQsAAElu +dmFsaWRQYWRkaW5nAABVCwAABAAAAAQAAADvBQAATWlzc2luZ01lc3NhZ2VLZXkAAABVCwAABAAA +AAQAAABaCwAAVG9vQmlnTWVzc2FnZUdhcE0LAAAIAAAACAAAAFsLAAB9ey9ob21lL3J1bm5lci8u +Y2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2RpZ2Vz +dC0wLjEwLjcvc3JjL2NvcmVfYXBpL2N0X3ZhcmlhYmxlLnJzSE1BQyBjYW4gdGFrZSBhIGtleSBv +ZiBhbnkgc2l6ZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p +by02ZjE3ZDIyYmJhMTUwMDFmL2hrZGYtMC4xMi40L3NyYy9zZWFsZWQucnMAZMEUAFsAAAAqAAAA +JgAAANrAFABrAAAAfAAAACQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl +eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ibG9jay1idWZmZXItMC4xMC40L3NyYy9saWIu +cnPgwRQAYAAAAKQAAAAYAAAA4MEUAGAAAACkAAAAIAAAAODBFABgAAAArgAAABQAAADgwRQAYAAA +AK4AAAAaAAAA4MEUAGAAAACdAAAAGAAAAODBFABgAAAAnQAAAB8AAADgwRQAYAAAAJ0AAAAlAAAA +4MEUAGAAAAAtAQAAIgAAAODBFABgAAAAOAEAAB4AAADgwRQAYAAAADUBAAAYAAAAU2xpY2UgbXVz +dCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGFycmF5L2hvbWUvcnVubmVyLy5jYXJnby9yZWdp +c3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvZ2VuZXJpYy1hcnJheS0w +LjE0Ljcvc3JjL2xpYi5ycwAKwxQAYQAAAFwCAAAOAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNh +dGVkOyB1c2UgRGlzcGxheWELAAAAAAAAAQAAAGILAABhCwAAAAAAAAEAAABjCwAAZAsAAAwAAAAE +AAAAZQsAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02 +ZjE3ZDIyYmJhMTUwMDFmL2hrZGYtMC4xMi40L3NyYy9saWIucnPUwxQAWAAAAAIBAAAqAAAA1MMU +AFgAAAACAQAAEwAAAFBSSyBzaXplIGlzIGNvcnJlY3QA1MMUAFgAAACoAAAAKQAAADAwMDEwMjAz +MDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEz +MjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYw +NjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4 +OTkwOTE5MjkzOTQ5NTk2OTc5ODk5ZgsAAAgAAAAEAAAAzwYAAGYLAAAIAAAABAAAANAGAADPBgAA +OMUUANEGAABnCwAA0wYAANQGAABoCwAAaQsAAAgAAAAEAAAAagsAAGkLAAAIAAAABAAAAGsLAABq +CwAAdMUUAGwLAABtCwAAbgsAAG8LAABoCwAAcAsAABQAAAAEAAAABwkAAHALAAAUAAAABAAAAHEL +AAAHCQAAsMUUAAkJAAAKCQAAbgsAAAwJAABoCwAAcgsAAAEAAAABAAAAcwsAAHILAAABAAAAAQAA +AHQLAABzCwAA7MUUAHULAAB2CwAAdwsAAHgLAAB5CwAAegsAAAQAAAAEAAAA0AAAAHoLAAAEAAAA +BAAAAKoAAADQAAAAKMYUAI4BAACPAQAAbgsAAJEBAABoCwAAZAsAAAwAAAAEAAAAewsAAGQLAAAM +AAAABAAAAGULAAB7CwAAZMYUAHwLAAB9CwAAbgsAAH4LAABoCwAASW52YWxpZEJ5dGUAaQsAAAQA +AAAEAAAAfwsAAGkLAAAEAAAABAAAAIALAABJbnZhbGlkTGVuZ3RoAAAAaQsAAAQAAAAEAAAASQsA +AEludmFsaWRMYXN0U3ltYm9sSW52YWxpZFBhZGRpbmdJbnZhbGlkUHJrTGVuZ3RoL2hvbWUvcnVu +bmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYv +Ynl0ZXMtMS42LjAvc3JjL2J1Zi90YWtlLnJzG8cUAF0AAACLAAAADwAAAGFzc2VydGlvbiBmYWls +ZWQ6IGNudCA8PSBzZWxmLmxpbWl0ABvHFABdAAAAjwAAAAkAAAAkc2VyZGVfanNvbjo6cHJpdmF0 +ZTo6UmF3VmFsdWUvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi9zaGEyLTAuMTAuOC9zcmMvY29yZV9hcGkucnMA2scUAF0AAABC +AAAAEwAAAGfmCWqFrme7cvNuPDr1T6V/Ug5RjGgFm6vZgx8ZzeBbL2hvbWUvcnVubmVyLy5jYXJn +by9naXQvY2hlY2tvdXRzL3ZvZG96ZW1hYy1kYTljMTYxNWI2YWMxNGU1LzBjNzU3NDYvc3JjL21l +Z29sbS9zZXNzaW9uX2tleXMucnMAaMgUAF8AAABBAAAAFwBBmJLTAAu2KUNhbid0IGNyZWF0ZSBh +biBlbXB0eSBzaWduYXR1cmUAaMgUAF8AAADlAAAAEgAAAGjIFABfAAAAAwEAAB0AAABDYW4ndCBj +cmVhdGUgSG1hY1NoYTI1NiBmcm9tIHRoZSBrZXkvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVj +a291dHMvdm9kb3plbWFjLWRhOWMxNjE1YjZhYzE0ZTUvMGM3NTc0Ni9zcmMvb2xtL3Nlc3Npb24v +Y2hhaW5fa2V5LnJzAAAAfMkUAGEAAAAeAAAALQAAAAEAAAB8yRQAYQAAACQAAAAJAAAAQ291bGRu +J3QgY3JlYXRlIGEgdmFsaWQgSG1hYyBvYmplY3QgdG8gYWR2YW5jZSB0aGUgcmF0Y2hldAAAfMkU +AGEAAAAtAAAACgAAAAIAAAB8yRQAYQAAAFEAAAASAAAAfMkUAGEAAABrAAAAEgAAAFJlbW90ZU1l +c3NhZ2VLZXlpbmRleAAAAIELAAAIAAAACAAAAIILAAAwLjUuMQAAAJzKFAAFAAAAaQsAAAQAAAAE +AAAA7wUAAE1hYwBpCwAABAAAAAQAAADuBQAATWFjTWlzc2luZ0Jhc2U2NGkLAAAEAAAABAAAACoD +AABTaWduYXR1cmUAAABpCwAABAAAAAQAAACDCwAAQmFzZTY0RXJyb3JJbnZhbGlkS2V5TGVuZ3Ro +a2V5X3R5cGUAaQsAAAgAAAAEAAAAhAsAAGV4cGVjdGVkX2xlbmd0aGxlbmd0aAAAAGkLAAAEAAAA +BAAAALkAAABOb25Db250cmlidXRvcnlLZXlUaGUgc2Vzc2lvbiBrZXkgaGFkIGEgaW52YWxpZCB2 +ZXJzaW9uLCBleHBlY3RlZCAsIGdvdCB6yxQAMAAAAKrLFAAGAAAAVGhlIHNlc3Npb24ga2V5IHdh +cyB0b28gc2hvcnQgAADAyxQAHgAAAFRoZSBzZXNzaW9uIGtleSB3YXNuJ3QgdmFsaWQgYmFzZTY0 +OiAAAADoyxQAJQAAAFRoZSBzaWduYXR1cmUgb24gdGhlIHNlc3Npb24ga2V5IHdhcyBpbnZhbGlk +OiAAABjMFAAuAAAAVGhlIHB1YmxpYyBrZXkgb2Ygc2Vzc2lvbiB3YXMgaW52YWxpZDogAFDMFAAn +AAAAQ2hhaW5LZXlrZXkAiMwUAAMAAACEyhQABQAAAGZpZWxkIGlkZW50aWZpZXJzdHJ1Y3QgQ2hh +aW5LZXlSZW1vdGVDaGFpbktleXN0cnVjdCBSZW1vdGVDaGFpbktleXN0cnVjdCBSZW1vdGVNZXNz +YWdlS2V5VGhlIHBpY2tsZSB3YXNuJ3QgdmFsaWQgYmFzZTY0OiAAAAD1zBQAIAAAAFRoZSBwaWNr +bGUgY291bGRuJ3QgYmUgZGVjcnlwdGVkOiAAACDNFAAiAAAAVGhlIHBpY2tsZSBjb3VsZG4ndCBi +ZSBkZXNlcmlhbGl6ZWQ6IAAAAEzNFAAlAAAAVGhlIHBpY2tsZSBkb2Vzbid0IGNvbnRhaW4gYSB2 +ZXJzaW9uVGhlIHBpY2tsZSB1c2VzIGFuIHVuc3VwcG9ydGVkIHZlcnNpb24sIGV4cGVjdGVkIAAA +AKDNFAAxAAAAqssUAAYAAABUaGUgcGlja2xlIGNvbnRhaW5lZCBhbiBpbnZhbGlkIGVkMjU1MTkg +cHVibGljIGtleSAA5M0UADMAAABUaGUgcGlja2xlIGRpZG4ndCBjb250YWluIGEgdmFsaWQgT2xt +IHNlc3Npb25UaGUgbWVzc2FnZSBoYXMgYW4gaW52YWxpZCB0eXBlLCBleHBlY3RlZCAwIG9yIDEs +IGdvdCAATc4UADYAAABUaGUgbWVzc2FnZSBkaWRuJ3QgY29udGFpbiBhIHZlcnNpb25UaGUgbWVz +c2FnZSB3YXMgdG9vIHNob3J0LCBpdCBkaWRuJ3QgY29udGFpbiBhIHZhbGlkIHBheWxvYWRUaGUg +bWVzc2FnZSBkaWRuJ3QgaGF2ZSBhIHZhbGlkIHZlcnNpb24sIGV4cGVjdGVkIAAA7M4UADIAAACq +yxQABgAAAFRoZSBtZXNzYWdlIGNvbnRhaW5lZCBhbiBpbnZhbGlkIHB1YmxpYyBrZXk6IAAAADDP +FAAtAAAAVGhlIG1lc3NhZ2UgY29udGFpbmVkIGEgTUFDIHdpdGggYW4gaW52YWxpZCBzaXplLCBl +eHBlY3RlZCAAaM8UADsAAACqyxQABgAAAFRoZSBtZXNzYWdlIGNvbnRhaW5lZCBhbiBpbnZhbGlk +IFNpZ25hdHVyZTogtM8UACwAAABUaGUgbWVzc2FnZSB3YXNuJ3QgdmFsaWQgYmFzZTY0OiAAAADo +zxQAIQAAAEluZGV4IG91dCBvZiBib3VuZHMAFNAUABMAAABmYWlsZWQgdG8gd3JpdGUgd2hvbGUg +YnVmZmVyMNAUABwAAAAXAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRm +OTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAAAFjQFABJAAAAsQYAACQAAAAvcnVz +dGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L3N0ZC9z +cmMvaW8vaW1wbHMucnMAtNAUAEsAAAApAQAAEQAAAGZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZl +cgAQ0RQAGwAAACUAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2 +MjFhNy9saWJyYXJ5L3N0ZC9zcmMvaW8vY3Vyc29yLnJzONEUAEwAAADrAAAAHQAAAGN1cnNvciBw +b3NpdGlvbiBleGNlZWRzIG1heGltdW0gcG9zc2libGUgdmVjdG9yIGxlbmd0aAAAlNEUADYAAAAU +AAAAY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBh +ZnRlciBkZXN0cnVjdGlvbgAAhgsAAAAAAAABAAAAwQYAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1 +OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMA +MNIUAE8AAAAGAQAAGgAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3 +NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzAAAAkNIUAE0AAADhAwAAIQAAAJDS +FABNAAAA4QMAAC4AAACQ0hQATQAAAOUDAAAgAAAAkNIUAE0AAADlAwAAKwAAAC9ydXN0Yy9hZWRk +MTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc2xp +Y2Uvc29ydC5ycwAAINMUAE4AAAA7BAAADgAAACDTFABOAAAASAQAABwAAAAg0xQATgAAAEkEAAAd +AAAAINMUAE4AAABKBAAAJQAAACDTFABOAAAAUAQAABEAAAAg0xQATgAAAI4EAABAAAAAINMUAE4A +AAC0BAAATgAAACDTFABOAAAAwgQAAFYAAAAg0xQATgAAANYEAAARAAAAYXNzZXJ0aW9uIGZhaWxl +ZDogZW5kID49IHN0YXJ0ICYmIGVuZCA8PSBsZW4g0xQATgAAAC0FAAAFAAAAINMUAE4AAAA+BQAA +KQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9mZnNldCAhPSAwICYmIG9mZnNldCA8PSBsZW4AACDTFABO +AAAAmwAAAAUAAAAg0xQATgAAAKMAAAAfAAAAaW52YWxpZCB0YWcgdmFsdWU6IDBpbnZhbGlkIGtl +eSB2YWx1ZTogALDUFAATAAAAdW5leHBlY3RlZCBlbmQgZ3JvdXAgdGFnYnVmZmVyIHVuZGVyZmxv +d3JlY3Vyc2lvbiBsaW1pdCByZWFjaGVkaW52YWxpZCB2YXJpbnRpbnZhbGlkIHdpcmUgdHlwZTog +IChleHBlY3RlZCApGdUUABMAAAAs1RQACwAAADfVFAABAAAAL2hvbWUvcnVubmVyLy5jYXJnby9y +ZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYnl0ZXMtMS42LjAv +c3JjL2J1Zi9idWZfaW1wbC5ycwAAAFDVFABhAAAAiQUAABYAAABWYXJpbnRTaXh0eUZvdXJCaXRM +ZW5ndGhEZWxpbWl0ZWRTdGFydEdyb3VwRW5kR3JvdXBUaGlydHlUd29CaXRpbnZhbGlkIHdpcmUg +dHlwZSB2YWx1ZTogA9YUABkAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvdm9k +b3plbWFjLWRhOWMxNjE1YjZhYzE0ZTUvMGM3NTc0Ni9zcmMvdXRpbGl0aWVzL21vZC5ycwAAACTW +FABZAAAAlgAAAAoAAAAk1hQAWQAAAJEAAAAOAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hl +Y2tvdXRzL3ZvZG96ZW1hYy1kYTljMTYxNWI2YWMxNGU1LzBjNzU3NDYvc3JjL29sbS9tZXNzYWdl +cy9tZXNzYWdlLnJzoNYUAGAAAADiAAAAIwAAAE1lc3NhZ2V2ZXJzaW9uAACHCwAAAQAAAAEAAACI +CwAAcmF0Y2hldF9rZXkAhwsAACAAAAABAAAAUAEAAGNoYWluX2luZGV4AIkLAAAIAAAACAAAAIoL +AAAKECJQcm90b0J1Zk1lc3NhZ2VjaXBoZXJ0ZXh0BgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAxNUU +AMrVFADW1RQA5dUUAO/VFAD31RQAfXs6L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMv +aW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvZGlnZXN0LTAuMTAuNy9zcmMvY29yZV9h +cGkvY3RfdmFyaWFibGUucnMAALfXFABrAAAAfAAAACQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3Jl +Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ibG9jay1idWZmZXIt +MC4xMC40L3NyYy9saWIucnM02BQAYAAAAKQAAAAYAAAANNgUAGAAAACkAAAAIAAAADTYFABgAAAA +rgAAABQAAAA02BQAYAAAAK4AAAAaAAAANNgUAGAAAACdAAAAGAAAADTYFABgAAAAnQAAAB8AAAA0 +2BQAYAAAAJ0AAAAlAAAANNgUAGAAAAAtAQAAIgAAADTYFABgAAAAOAEAAB4AAAA02BQAYAAAADUB +AAAYAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxheY8LAAAMAAAABAAA +AJALAACRCwAACAAAAAQAAABqCwAAkQsAAAgAAAAEAAAAkgsAAGoLAABs2RQAkwsAAG0LAACUCwAA +bwsAAJULAACWCwAACAAAAAQAAACXCwAAlgsAAAgAAAAEAAAAMwsAAJcLAACo2RQAmAsAAJkLAACU +CwAAmgsAAJULAABpbnZhbGlkIHRhZyB2YWx1ZTogMGludmFsaWQga2V5IHZhbHVlOiAA+NkUABMA +AABpbnZhbGlkIHZhcmludC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNy +YXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2J5dGVzLTEuNi4wL3NyYy9idWYvYnVmX2ltcGwucnMA +ItoUAGEAAACJBQAAFgAAAEludmFsaWRCeXRlAJELAAAEAAAABAAAAJsLAACRCwAABAAAAAQAAACA +CwAASW52YWxpZExlbmd0aAAAAJELAAAEAAAABAAAAEkLAABJbnZhbGlkTGFzdFN5bWJvbEludmFs +aWRQYWRkaW5naW52YWxpZCB3aXJlIHR5cGUgdmFsdWU6IP/aFAAZAAAAL2hvbWUvcnVubmVyLy5j +YXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2hhMi0w +LjEwLjgvc3JjL2NvcmVfYXBpLnJzAAAAINsUAF0AAACMAAAAEwAAAAjJvPNn5glqO6fKhIWuZ7sr ++JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FsvaG9tZS9ydW5u +ZXIvLmNhcmdvL2dpdC9jaGVja291dHMvdm9kb3plbWFjLWRhOWMxNjE1YjZhYzE0ZTUvMGM3NTc0 +Ni9zcmMvdHlwZXMvY3VydmUyNTUxOS5yc9DbFABcAAAAPAAAAA0AAABDdXJ2ZTI1NTE5AADQ2xQA +XAAAAKwAAAARAAAANNkUAAAAAABjdXJ2ZTI1NTE5OgBg3BQACwAAAC9ob21lL3J1bm5lci8uY2Fy +Z28vZ2l0L2NoZWNrb3V0cy92b2RvemVtYWMtZGE5YzE2MTViNmFjMTRlNS8wYzc1NzQ2L3NyYy90 +eXBlcy9lZDI1NTE5LnJzAAAAdNwUAFkAAAA9AAAAEAAAAHTcFABZAAAAdwAAABMAAABJbnZhbGlk +IHNlY3JldCBrZXkgbGVuZ3RoOiBleHBlY3RlZCA2NCBieXRlcywgZ290IAAA8NwUADIAAAB03BQA +WQAAAKMAAAAxAAAAdNwUAFkAAAD4AAAAFwAAAEVkMjU1MTkAdNwUAFkAAABfAQAAFwAAAGVkMjU1 +MTk6ZN0UAAgAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvdm9kb3plbWFjLWRh +OWMxNjE1YjZhYzE0ZTUvMGM3NTc0Ni9zcmMvbWVnb2xtL21lc3NhZ2UucnMAQY680wALvRdDYW4n +dCBjcmVhdGUgYW4gZW1wdHkgc2lnbmF0dXJlAAAAdN0UAFoAAAC3AAAAEgAAAHTdFABaAAAAywAA +ABIAAAB03RQAWgAAACQBAAArAAAAdN0UAFoAAAAnAQAAJQAAAG1lc3NhZ2VfaW5kZXgIEkJhc2U2 +NAAAAJELAAAEAAAABAAAACoDAABTaWduYXR1cmUAAACRCwAABAAAAAQAAACDCwAAVGhlIHNpZ25h +dHVyZSBjb3VsZG4ndCBiZSBkZWNvZGVkOiAAtN4UACMAAABUaGUgc2lnbmF0dXJlIHdhcyBpbnZh +bGlkOiAA4N4UABsAAABOb3JtYWxFeHBhbmRlZAAABN8UAAYAAAAK3xQACAAAAHZhcmlhbnQgaWRl +bnRpZmllclByb3RvYnVmTWVnb2xtTWVzc2FnZWNpcGhlcnRleHRhbiBhcnJheSBvZiBsZW5ndGgg +MzJ9e2Egc2VxdWVuY2VhIG1hcACdCwAADAAAAAQAAACeCwAAnwsAAOkGAABhIERpc3BsYXkgaW1w +bGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AKALAAAAAAAAAQAAAKEL +AAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5 +L2FsbG9jL3NyYy9zdHJpbmcucnMA3N8UAEsAAAAzCgAADgAAAGRlc2NyaXB0aW9uKCkgaXMgZGVw +cmVjYXRlZDsgdXNlIERpc3BsYXmiCwAACAAAAAQAAABqCwAAogsAAAgAAAAEAAAAowsAAGoLAABg +4BQAbwsAAG0LAACkCwAAbwsAAKULAACgCwAAAAAAAAEAAAAiCwAAoAsAAAAAAAABAAAApgsAACIL +AACc4BQApwsAACULAACoCwAAJAsAAKkLAACqCwAADAAAAAQAAAB7CwAAqgsAAAwAAAAEAAAAqwsA +AHsLAADY4BQAfAsAAH0LAACkCwAAfgsAAKULAACgCwAAAAAAAAEAAAAoCwAAoAsAAAAAAAABAAAA +rAsAACgLAAAU4RQApwsAACoLAACoCwAAKwsAAKkLAABFcnJvck1hY0Vycm9ybWlzc2luZyBmaWVs +ZCBgYAAAAF3hFAAPAAAAbOEUAAEAAABpbnZhbGlkIGxlbmd0aCAsIGV4cGVjdGVkIAAAgOEUAA8A +AACP4RQACwAAAGR1cGxpY2F0ZSBmaWVsZCBgAAAArOEUABEAAABs4RQAAQAAAHVua25vd24gdmFy +aWFudCBgYCwgZXhwZWN0ZWQgAAAA0OEUABEAAADh4RQADAAAAGAsIHRoZXJlIGFyZSBubyB2YXJp +YW50c9DhFAARAAAAAOIUABgAAACgCwAAAAAAAAEAAAABCwAAoAsAAAAAAAABAAAAAAsAAKALAAAA +AAAAAQAAAP8KAACgCwAAAAAAAAEAAACtCwAAVW5wYWRFcnJvckludmFsaWRCeXRlAAAAogsAAAQA +AAAEAAAArgsAAKILAAAEAAAABAAAAIALAABJbnZhbGlkTGVuZ3RoAAAAogsAAAQAAAAEAAAASQsA +AEludmFsaWRMYXN0U3ltYm9sSW52YWxpZFBhZGRpbmckc2VyZGVfanNvbjo6cHJpdmF0ZTo6UmF3 +VmFsdWUvaG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvdm9kb3plbWFjLWRhOWMxNjE1 +YjZhYzE0ZTUvMGM3NTc0Ni9zcmMvbWVnb2xtL2luYm91bmRfZ3JvdXBfc2Vzc2lvbi5yc2ludGVy +bmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IEVpdGhlciBpbmRleCBBID49IGlu +ZGV4IEIsIG9yIHZpY2UgdmVyc2EuIFRoZXJlIGlzIG5vIHRoaXJkIG9wdGlvbi4AAGXjFABtAAAA +/eIUAGgAAACoAAAADQAAAC9ob21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy92b2RvemVt +YWMtZGE5YzE2MTViNmFjMTRlNS8wYzc1NzQ2L3NyYy9vbG0vc2Vzc2lvbi9tb2QucnMA7OMUAFsA +AABeAAAAFAAAAFNlc3Npb25zZXNzaW9uX2lkAAAAnQsAAAwAAAAEAAAArwsAAHNlbmRpbmdfcmF0 +Y2hldACiCwAABAAAAAQAAACwCwAAcmVjZWl2aW5nX2NoYWluc7ELAADwDQAACAAAALILAABjb25m +aWcAALMLAAABAAAAAQAAALQLAABCYXNlNjQAAKILAAAEAAAABAAAACoDAABTaWduYXR1cmUAAACi +CwAABAAAAAQAAACDCwAAS2V5SWR0dXBsZSBzdHJ1Y3QgS2V5SWRGYWlsZWQgZGVjb2RpbmcgYSBw +dWJsaWMga2V5IGZyb20gYmFzZTY0OiAAAAAf5RQAKgAAAEZhaWxlZCBkZWNvZGluZyAga2V5IGZy +b20gYmFzZTY0OiBJbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgLCBnb3QgLgAAAFTlFAAQAAAA +ZOUUAC4AAACP4RQACwAAAJLlFAAGAAAAmOUUAAEAAABBdCBsZWFzdCBvbmUgb2YgdGhlIGtleXMg +ZGlkIG5vdCBoYXZlIGNvbnRyaWJ1dG9yeSBiZWhhdmlvdXJHcm91cFNlc3Npb25QaWNrbGVyYXRj +aGV0c2lnbmluZ19rZXkS5hQABwAAABnmFAALAAAAvOQUAAYAAABzdHJ1Y3QgR3JvdXBTZXNzaW9u +UGlja2xlVGhlIHNpZ25hdHVyZSBvbiB0aGUgbWVzc2FnZSB3YXMgaW52YWxpZDogAFXmFAAqAAAA +RmFpbGVkIGRlY3J5cHRpbmcgTWVnb2xtIG1lc3NhZ2UsIGludmFsaWQgTUFDOiAAiOYUAC8AAABG +YWlsZWQgZGVjcnlwdGluZyBPbG0gbWVzc2FnZSwgaW52YWxpZCBNQUMgbGVuZ3RoOiBleHBlY3Rl +ZCDA5hQAPAAAAJLlFAAGAAAARmFpbGVkIGRlY3J5cHRpbmcgTWVnb2xtIG1lc3NhZ2UsIGludmFs +aWQgcGFkZGluZ1RoZSBtZXNzYWdlIHdhcyBlbmNyeXB0ZWQgdXNpbmcgYW4gdW5rbm93biBtZXNz +YWdlIGluZGV4LCBmaXJzdCBrbm93biBpbmRleCAsIGluZGV4IG9mIHRoZSBtZXNzYWdlID3nFABM +AAAAiecUABcAAABJbmJvdW5kR3JvdXBTZXNzaW9uUGlja2xlaW5pdGlhbF9yYXRjaGV0c2lnbmlu +Z19rZXlfdmVyaWZpZWTJ5xQADwAAABnmFAALAAAA2OcUABQAAAC85BQABgAAAHN0cnVjdCBJbmJv +dW5kR3JvdXBTZXNzaW9uUGlja2xlRmFpbGVkIGRlY3J5cHRpbmcgT2xtIG1lc3NhZ2UsIGludmFs +aWQgTUFDOiAs6BQALAAAAEZhaWxlZCBkZWNyeXB0aW5nIE9sbSBtZXNzYWdlLCBpbnZhbGlkIHBh +ZGRpbmdUaGUgbWVzc2FnZSBrZXkgd2l0aCB0aGUgZ2l2ZW4ga2V5IGNhbid0IGJlIGNyZWF0ZWQs +IG1lc3NhZ2UgaW5kZXg6IAAAjugUAEQAAABUaGUgbWVzc2FnZSBnYXAgd2FzIHRvbyBiaWcsIGdv +dCAsIG1heCBhbGxvd2VkIADc6BQAIQAAAP3oFAAOAAAAQ2hhaW5TdG9yZWlubmVyACbpFAAFAAAA +c3RydWN0IENoYWluU3RvcmVTZXNzaW9uUGlja2xlc2Vzc2lvbl9rZXlzAABS6RQADAAAAHzkFAAP +AAAAnOQUABAAAAC85BQABgAAAHN0cnVjdCBTZXNzaW9uUGlja2xlU2Vzc2lvbkNvbmZpZ3ZlcnNp +b26iCwAABAAAAAQAAAC1CwAAfXsAALYLAAD//////////8DpFABB2NPTAAudBSRzZXJkZV9qc29u +Ojpwcml2YXRlOjpSYXdWYWx1ZQAAtwsAAAgAAAAEAAAAuAsAALkLAAC3CwAACAAAAAQAAAC6CwAA +uwsAAEZhbGxiYWNrS2V5a2V5X2lka2V5cHVibGlzaGVkAAAAK+oUAAYAAAAx6hQAAwAAADTqFAAJ +AAAAc3RydWN0IEZhbGxiYWNrS2V5RmFsbGJhY2tLZXlzZmFsbGJhY2tfa2V5cHJldmlvdXNfZmFs +bGJhY2tfa2V5ACvqFAAGAAAAduoUAAwAAACC6hQAFQAAAHN0cnVjdCBGYWxsYmFja0tleXNPbmVU +aW1lS2V5c1BpY2tsZW5leHRfa2V5X2lkcHVibGljX2tleXNwcml2YXRlX2tleXMAACvqFAAGAAAA +1OoUAAsAAADf6hQACwAAAOrqFAAMAAAAc3RydWN0IE9uZVRpbWVLZXlzUGlja2xlQXJyYXlWZWM6 +IGNhcGFjaXR5IGV4Y2VlZGVkIGluIGV4dGVuZC9mcm9tX2l0ZXIAvQsAAAQAAAAEAAAAvgsAAL0L +AAAEAAAABAAAAL8LAABEZWNvZGVFcnJvcmRlc2NyaXB0aW9uAADACwAADAAAAAQAAADBCwAAc3Rh +Y2sAAADCCwAADAAAAAQAAADDCwAAZmFpbGVkIHRvIGRlY29kZSBQcm90b2J1ZiBtZXNzYWdlOiAu +OiAAAHDrFAAAAAAA4+sUAAEAAADk6xQAAgAAAMQLAAAEAAAABAAAAIALAABieXRlIGFycmF5L3J1 +c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3Jl +L3NyYy9zbGljZS9pdGVyLnJzGuwUAE4AAAACCAAAEQBBgNnTAAv+F2F0dGVtcHQgdG8gZGl2aWRl +IGJ5IHplcm8vaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8t +NmYxN2QyMmJiYTE1MDAxZi9kaWdlc3QtMC4xMC43L3NyYy9jb3JlX2FwaS9jdF92YXJpYWJsZS5y +c5nsFABrAAAAfAAAACQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5j +cmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9ibG9jay1idWZmZXItMC4xMC40L3NyYy9saWIucnMU +7RQAYAAAAJ0AAAAYAAAAFO0UAGAAAACdAAAAHwAAABTtFABgAAAAnQAAACUAAAAU7RQAYAAAAC0B +AAAiAAAAFO0UAGAAAAA4AQAAHgAAABTtFABgAAAANQEAABgAAADFCwAAEAAAAAQAAADGCwAAxQsA +ABAAAAAEAAAAxwsAAMYLAADU7RQAyAsAAMkLAADKCwAAyAsAAMsLAABkZXNjcmlwdGlvbigpIGlz +IGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMv +aW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2hhMi0wLjEwLjgvc3JjL2NvcmVfYXBp +LnJzAAAAOO4UAF0AAACMAAAAEwAAAAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLm +rX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FtDYW5ub3QgZGVjb21wcmVzcyBFZHdhcmRzIHBv +aW50AOjuFAAfAAAAQ2Fubm90IHVzZSBzY2FsYXIgd2l0aCBoaWdoLWJpdCBzZXQAEO8UACMAAAAg +bXVzdCBiZSAgYnl0ZXMgaW4gbGVuZ3RoAAAAEO4UAAAAAAA87xQACQAAAEXvFAAQAAAAVmVyaWZp +Y2F0aW9uIGVxdWF0aW9uIHdhcyBub3Qgc2F0aXNmaWVkAHDvFAAnAAAATWlzbWF0Y2hlZCBLZXlw +YWlyIGRldGVjdGVkAKDvFAAbAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5k +ZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvZWQyNTUxOS1kYWxlay0yLjEuMS9zcmMvc2ln +bmF0dXJlLnJzAADE7xQAZgAAAJwAAAAnAAAAxO8UAGYAAACcAAAAEQAAAMTvFABmAAAAnQAAACcA +AADE7xQAZgAAAJ0AAAARAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXgu +Y3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvZWQyNTUxOS1kYWxlay0yLjEuMS9zcmMvaGF6bWF0 +LnJzAGzwFABjAAAAQQAAACwAAABs8BQAYwAAAEEAAAAWAAAAbPAUAGMAAABCAAAAKwAAAGzwFABj +AAAAQgAAABUAAABQb2ludERlY29tcHJlc3Npb25TY2FsYXJGb3JtYXRCeXRlc0xlbmd0aG5hbWUA +AADFCwAACAAAAAQAAACECwAAbGVuZ3RoAADFCwAABAAAAAQAAABJCwAAVmVyaWZ5TWlzbWF0Y2hl +ZEtleXBhaXIvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8t +NmYxN2QyMmJiYTE1MDAxZi9ibG9jay1idWZmZXItMC4xMC40L3NyYy9saWIucnMAf/EUAGAAAACk +AAAAGAAAAH/xFABgAAAApAAAACAAAAB/8RQAYAAAAK4AAAAUAAAAf/EUAGAAAACuAAAAGgAAAH/x +FABgAAAAnQAAABgAAAB/8RQAYAAAAJ0AAAAfAAAAf/EUAGAAAACdAAAAJQAAAAjJvPNn5glqO6fK +hIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FtTZWNy +ZXRLZXlBbiBlZDI1NTE5IHNpZ25pbmcgKHByaXZhdGUpIGtleQAAAJnyFAAgAAAAL2hvbWUvcnVu +bmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYv +ZGlnZXN0LTAuMTAuNy9zcmMvY29yZV9hcGkvY3RfdmFyaWFibGUucnMAxPIUAGsAAAB8AAAAJAAA +AC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIy +YmJhMTUwMDFmL2Jsb2NrLWJ1ZmZlci0wLjEwLjQvc3JjL2xpYi5yc0DzFABgAAAApAAAABgAAABA +8xQAYAAAAKQAAAAgAAAAQPMUAGAAAACuAAAAFAAAAEDzFABgAAAArgAAABoAAABA8xQAYAAAAJ0A +AAAYAAAAQPMUAGAAAACdAAAAHwAAAEDzFABgAAAAnQAAACUAAABA8xQAYAAAAC0BAAAiAAAAQPMU +AGAAAAA4AQAAHgAAAEDzFABgAAAANQEAABgAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5 +L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jdXJ2ZTI1NTE5LWRhbGVrLTQu +MS4yL3NyYy9zY2FsYXIucnMAAED0FABmAAAApgIAABAAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3Jl +Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zaGEyLTAuMTAuOC9z +cmMvY29yZV9hcGkucnMAAAC49BQAXQAAAIwAAAATAAAACMm882fmCWo7p8qEha5nuyv4lP5y8248 +8TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gW1NpZ0VkMjU1MTkgbm8gRWQy +NTUxOSBjb2xsaXNpb25zQW4gZWQyNTUxOSB2ZXJpZnlpbmcgKHB1YmxpYykga2V5AAAAiPUUACEA +AAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2Qy +MmJiYTE1MDAxZi9lZDI1NTE5LTIuMi4zL3NyYy9saWIucnMAALT1FABaAAAAPgEAAAsAAAC09RQA +WgAAAD8BAAALAAAAtPUUAFoAAABiAQAACwAAALT1FABaAAAAYwEAAAsAAABzaWduYXR1cmU6OkVy +cm9yIHsgc291cmNlOiBTb21lKCkAAABr9hQABQAAAHD2FAABAAAATm9uZSB9c2lnbmF0dXJlIGVy +cm9yOiAAmfYUAAIAAAB0dXBsZSBzdHJ1Y3QgUHVibGljS2V5dHVwbGUgc3RydWN0IFN0YXRpY1Nl +Y3JldADNCwAAAAAAAAEAAADOCwAAVHJ5RnJvbVNsaWNlRXJyb3IAAADPCwAABAAAAAQAAADQCwAA +AC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIy +YmJhMTUwMDFmL2N1cnZlMjU1MTktZGFsZWstNC4xLjIvc3JjL3NjYWxhci5ycwAJ9xQAZgAAAE8D +AAAPAAAACfcUAGYAAADsAwAAKgAAAAn3FABmAAAA7QMAAC4AAABhdHRlbXB0IHRvIGRpdmlkZSBi +eSB6ZXJvAAAACfcUAGYAAAA2BAAAHAAAAAn3FABmAAAAWQQAABIAAAAJ9xQAZgAAAFoEAAASAAAA +CfcUAGYAAABFBAAAEgAAAAn3FABmAAAARQQAADUAAAAJ9xQAZgAAAEIEAAARAAAACfcUAGYAAABN +BAAADQAAAEluY29ycmVjdCBzcmMgbGVuZ3RoLCBzaG91bGQgYmUgOCAqIGRzdC5sZW4oKQAAAAn3 +FABmAAAAUQUAABIAAADt0/Uc0hiTAJY15x1FvfMdTQEAQY7x0wALAxAAAQBBuPHTAAveAVnxsgIJ +5aYBet0qAh0U1ABSgAMAMNHzAHd5QAMx45wB/23FAWcbkACwoA4C0smGAZ0YjwB/aTUAYAy9AKfX ++wGeTIACaWXhAR38BACSDK4AL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXgu +Y3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3VydmUyNTUxOS1kYWxlay00LjEuMi9zcmMvYmFj +a2VuZC9zZXJpYWwvdTMyL3NjYWxhci5ycwAAAO3T9RzSGJMAljXnHUW98x1NAQBBpvPTAAvXAhAA +CPkUAHkAAACyAAAAFgAAAAj5FAB5AAAAsgAAAB0AAAAI+RQAeQAAALMAAAAQAAAACPkUAHkAAADK +AAAALwAAAAj5FAB5AAAAygAAAEIAAAAI+RQAeQAAAMsAAAAXAAAACPkUAHkAAADCAAAAFwAAAAj5 +FAB5AAAAwgAAACkAAAAI+RQAeQAAAMMAAAAXAAAAEp1fCxcbFB49f40VVzc/FIHXchl86y8EPcfu +HB5NGB5tBAUA7flNEQNzYRqMCXwPZzF5Fm5l/R////8f////H////x///w8AL3J1c3RjL2FlZGQx +NzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zbGlj +ZS9pdGVyLnJzAACA+hQATgAAANYFAAAVAAAAYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAEA +QaT20wALR6N4WQOEctMAvW4VAw4KagApwAEAmOh5Abs8oAOYcc4B/7biArMNSAF0dXBsZSBzdHJ1 +Y3QgTW9udGdvbWVyeVBvaW50QtsBAEGQ99MACwEBAEG499MAC40BL2hvbWUvcnVubmVyLy5jYXJn +by9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3VydmUyNTUx +OS1kYWxlay00LjEuMi9zcmMvd2luZG93LnJzAAC4+xQAZgAAAL8AAAAJAAAAuPsUAGYAAADtAAAA +CQAAACgpAAABAEHs+NMAC6W+AnI7jAW88SQD9iXDAWDcNwK2TD4DwkI9AjFMpAXgpEwBSz2jA3Q+ +HwI+kUADdUEOAKJz1gMFii4AfOb0AwmKjwA0GsIAuPRMAIGPKQG+9BMBaKp6A2GBRAB51ZMAVmUe +AaBnmwCMWUMB7uW+AUMLtQDG8IkC7UW8ATCX7gQSKmwB5FVxATJEhwEQagkEMWcBAU8BqAUimB4D +Dqi5AThZ6AFl0vwAKfpHAMyqTwMNLu8BT03vAL3WSwEQjfkAJlBMAb1VdQBW5KoAidjQAcPPpAGV +QkwDruEQAYxQYgFM2/IAxqJyAC7amACbK/ECmqBoASC7pQQBEa8AQlSgAfc6HgIiQTUCROy/AiyG +9QWie90CH24UBzIXpQK61kcA6bBgAPLvNgE5WYoAUwBUA4egZABcjngCZ3y+ALWxPgP5KVUAhYIq +AWD89gCXlz8C7oU+ACA4nAAtp70BjYWzAYNW0wC7s5YC+aoOAb+jTgQkNJcCYk0aBO2c1QHUwNEF +SC5UAhNBKQU1zk8CyIOSAqlvGAGxITICqibLAU33dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1 +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 +0aEAvVQzBpn6SADVVOsDLN7gAO6UjwOpKjUBTad1ALoAKAF8sWcDROFCAOMHWAFLrAYAli3jARAk +RgExAgkDisEWAI+35wLZRTIA7DihAdWDKgCKkSwCh+UoAR4/IwM8kfUBZMACAuencQKXaCYBebna +AHmL0wJ28CMCQL3ZArqzogGgu+YAPvgOATtOYQD/96MB4DtbA2pHOgHwLyEBMnXsANuxPwLzWrMA +EMLXA7xDMgEWh4EAaL0lAbg5wgAjPucB2/hsAAznsgCPUFsBg11lAZAnAgH/+rIABRHsAoogLgLL +vCYG83M0A71xSQK+bEUBFUX1ARfLsgCXY6oAQfhvACVsmQM/JUUAAFg+AliUkAG+ROAB8Sc1ACnL +7QOQfsIByir9AxhjlwBh/d8BSnMxAQWvSAM6sMsAfLf5AeTkYwCBDM8Cp8DDAbmwEAaW6qsCTCVV +AyB4hwGNwuMBH9Y6AtS7fQPnLjwBvXQqApayEwEzPu0Cy+zBAMLoPACsIp0BvBC4AmYDXwGM6SQC +KBkLARTDpgB29S0AQ9WVA54MEgG6pOMBoBkFAAxOwwErxeEAMI4pAsObPAHexxIBkYicAPx1qQKQ +4u4C7hdrBGy1vAHlcDECSKrtAea34wNP3BQCwWt/BX7NZQAuNMUB0qskAVcDWgM3l40AYLv/AylO +yAD+RkYB9H2oAMxEigF810YAZkLIAhA05AB13I8Cyvh7ADgSrgO5l6QBMujQAaDkKwH4HRkBRL4/ +AFRoZSBkZWNvZGVkIHZhbHVlICBkb2VzIG5vdCBmaXQgaW50byB0aGUgdXNpemUgdHlwZSBvZiB0 +aGlzIGFyY2hpdGVjdHVyZWySFQASAAAAfpIVADYAAABBbiBhcnJheSBoYXMgdG9vIG1hbnkgZWxl +bWVudHM6IMSSFQAgAAAAVE9ETyAAAADskhUABQAAAFRoZSB1c2l6ZSB2YWx1ZSAgZG9lcyBub3Qg +Zml0IGludG8gdGhlIHUzMiByYW5nZSBvZiB2YWx1ZXMuAPySFQAQAAAADJMVACsAAAAoKQAATm9u +ZVNvbWXTCwAABAAAAAQAAADUCwAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5k +ZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0LTAuMjIuMC9zcmMvZW5naW5lL2dl +bmVyYWxfcHVycG9zZS9kZWNvZGUucnNkkxUAdAAAAI0AAAAZAAAAL2hvbWUvcnVubmVyLy5jYXJn +by9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0LTAu +MjIuMC9zcmMvZW5naW5lL2dlbmVyYWxfcHVycG9zZS9kZWNvZGVfc3VmZml4LnJzAOiTFQB7AAAA +HwAAACYAAADokxUAewAAAFQAAAAJAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMv +aW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0LTAuMjIuMC9zcmMvZW5jb2Rl +LnJzAAAAhJQVAF0AAACKAAAACQAAAEludmFsaWQgc3ltYm9sICwgb2Zmc2V0IC4AAAD0lBUADwAA +AAOVFQAJAAAADJUVAAEAAABJbnZhbGlkIGlucHV0IGxlbmd0aDogAAAolRUAFgAAAEludmFsaWQg +bGFzdCBzeW1ib2wgSJUVABQAAAADlRUACQAAAAyVFQABAAAASW52YWxpZCBwYWRkaW5nAHSVFQAP +AAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDVCwAAAAAAAAEA +AADWCwAAVHJ5RnJvbVNsaWNlRXJyb3IAAADXCwAABAAAAAQAAADYCwAAL2hvbWUvcnVubmVyLy5j +YXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYmFzZTY0 +LTAuMjIuMC9zcmMvZW5naW5lL2dlbmVyYWxfcHVycG9zZS9kZWNvZGUucnPslRUAdAAAADgAAAAm +AAAA7JUVAHQAAABeAAAALgAAAOyVFQB0AAAAYQAAAA0AAADslRUAdAAAAGUAAAA4AAAA7JUVAHQA +AAA9AAAAJwAAAOyVFQB0AAAARAAAAB4AAADslRUAdAAAAEoAAAAeAAAA7JUVAHQAAABQAAAAHgAA +AOyVFQB0AAAAVgAAAB4AAADslRUAdAAAAPkAAAALAAAA7JUVAHQAAAD5AAAANQAAAOyVFQB0AAAA ++QAAABEAAADslRUAdAAAACcBAAALAAAA7JUVAHQAAAAnAQAANQAAAOyVFQB0AAAAJwEAABEAAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJi +YTE1MDAxZi9iYXNlNjQtMC4yMi4wL3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL21vZC5ycwAA +AFCXFQBxAAAAlgAAAA0AAABQlxUAcQAAAJgAAABAAAAAUJcVAHEAAACXAAAADQAAAFCXFQBxAAAA +mgAAAA0AAABQlxUAcQAAAJ4AAAANAAAAUJcVAHEAAACfAAAADQAAAFCXFQBxAAAAhwAAACUAAABQ +lxUAcQAAAIgAAAArAAAAUJcVAHEAAACKAAAAMgAAAFCXFQBxAAAAigAAAA0AAABQlxUAcQAAAIwA +AAAqAAAAUJcVAHEAAACLAAAADQAAAFCXFQBxAAAAjgAAACoAAABQlxUAcQAAAI0AAAANAAAAUJcV +AHEAAACPAAAADQAAAFCXFQBxAAAAQAAAABsAAABQlxUAcQAAAEIAAAAgAAAAUJcVAHEAAABMAAAA +NgAAAFCXFQBxAAAATgAAABEAAABQlxUAcQAAAE8AAAARAAAAUJcVAHEAAABQAAAAEQAAAFCXFQBx +AAAAUQAAABEAAABQlxUAcQAAAFIAAAARAAAAUJcVAHEAAABTAAAAEQAAAFCXFQBxAAAAVAAAABEA +AABQlxUAcQAAAFUAAAARAAAAUJcVAHEAAABXAAAANgAAAFCXFQBxAAAAWQAAABEAAABQlxUAcQAA +AFoAAAARAAAAUJcVAHEAAABbAAAAEQAAAFCXFQBxAAAAXAAAABEAAABQlxUAcQAAAF0AAAARAAAA +UJcVAHEAAABeAAAAEQAAAFCXFQBxAAAAXwAAABEAAABQlxUAcQAAAGAAAAARAAAAUJcVAHEAAABi +AAAANgAAAFCXFQBxAAAAZAAAABEAAABQlxUAcQAAAGUAAAARAAAAUJcVAHEAAABmAAAAEQAAAFCX +FQBxAAAAZwAAABEAAABQlxUAcQAAAGgAAAARAAAAUJcVAHEAAABpAAAAEQAAAFCXFQBxAAAAagAA +ABEAAABQlxUAcQAAAGsAAAARAAAAUJcVAHEAAABtAAAANgAAAFCXFQBxAAAAbwAAABEAAABQlxUA +cQAAAHAAAAARAAAAUJcVAHEAAABxAAAAEQAAAFCXFQBxAAAAcgAAABEAAABQlxUAcQAAAHMAAAAR +AAAAUJcVAHEAAAB0AAAAEQAAAFCXFQBxAAAAdQAAABEAAABQlxUAcQAAAHYAAAARAAAAUJcVAHEA +AADlAAAAGQAAAFCXFQBxAAAA5QAAACoAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQz +NzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAADSbFQBOAAAA +YgcAABEAQaC31gAL8pQBYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVyb01BQyB0YWcgbWlzbWF0Y2go +KWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAANkLAAAAAAAAAQAA +ANoLAABUcnlGcm9tU2xpY2VFcnJvcgAAANsLAAAEAAAABAAAANwLAAAvaG9tZS9ydW5uZXIvLmNh +cmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9hZXMtMC44 +LjQvc3JjL3NvZnQvZml4c2xpY2UzMi5ycwAALJwVAGIAAAC7AAAAGAAAACycFQBiAAAAuwAAACMA +AAAsnBUAYgAAALsAAAAvAAAALJwVAGIAAAC8AAAAGAAAACycFQBiAAAAxQAAAB0AAAAsnBUAYgAA +AMYAAAAiAAAALJwVAGIAAADIAAAAKgAAACycFQBiAAAA5wAAACQAAAAsnBUAYgAAAOwAAAAiAAAA +LJwVAGIAAADjAAAAKAAAACycFQBiAAAA5AAAACgAAAAsnBUAYgAAAOUAAAAoAAAALJwVAGIAAADT +AAAAHQAAACycFQBiAAAA1AAAACIAAAAsnBUAYgAAAN0BAAApAAAALJwVAGIAAAD5AQAAJQAAACyc +FQBiAAAA5gEAACkAAAAsnBUAYgAAAO0BAAAtAAAALJwVAGIAAADyAQAALQAAACycFQBiAAAABgIA +ACUAAAAsnBUAYgAAAAwCAAApAAAALJwVAGIAAAAcAgAALQAAACycFQBiAAAAIQIAAC0AAAAsnBUA +YgAAACcCAAApAAAALJwVAGIAAAAPAwAADgAAACycFQBiAAAAEAMAAA4AAAAsnBUAYgAAABEDAAAO +AAAALJwVAGIAAAASAwAADgAAACycFQBiAAAAEwMAAA4AAAAsnBUAYgAAABQDAAAOAAAALJwVAGIA +AAAVAwAADgAAACycFQBiAAAAFgMAAA4AAAAsnBUAYgAAALgDAAAFAAAALJwVAGIAAAC5AwAABQAA +ACycFQBiAAAAugMAAAUAAAAsnBUAYgAAALsDAAAFAAAALJwVAGIAAACJBAAAEgAAACycFQBiAAAA +iQQAAD0AAAAsnBUAYgAAAJ8EAAArAAAALJwVAGIAAACfBAAAQwAAACycFQBiAAAAoAQAACsAAAAs +nBUAYgAAAKAEAABDAAAALJwVAGIAAAChBAAAKwAAACycFQBiAAAAoQQAAEMAAAAsnBUAYgAAAKIE +AAArAAAALJwVAGIAAACiBAAAQwAAACycFQBiAAAAowQAACsAAAAsnBUAYgAAAKMEAABDAAAALJwV +AGIAAACkBAAAKwAAACycFQBiAAAApAQAAEMAAAAsnBUAYgAAAKUEAAArAAAALJwVAGIAAAClBAAA +QwAAACycFQBiAAAApgQAACsAAAAsnBUAYgAAAKYEAABDAAAALJwVAGIAAADCBAAABQAAACycFQBi +AAAAwwQAAAUAAAAsnBUAYgAAAMQEAAAFAAAALJwVAGIAAADFBAAABQAAACycFQBiAAAAxgQAAAUA +AAAsnBUAYgAAAMcEAAAFAAAALJwVAGIAAADIBAAABQAAACycFQBiAAAAyQQAAAUAAAAsnBUAYgAA +AP4EAAAbAAAALJwVAGIAAAD/BAAAGwAAACycFQBiAAAAAAUAABsAAAAsnBUAYgAAAAEFAAAbAAAA +LJwVAGIAAAACBQAAGwAAACycFQBiAAAAAwUAABsAAAAsnBUAYgAAAAQFAAAbAAAALJwVAGIAAAAF +BQAAGwAAACycFQBiAAAAFAUAACIAAAAsnBUAYgAAABQFAAAJAAAALJwVAGIAAAAkBQAABQAAAC9o +b21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJh +MTUwMDFmL3plcm9pemUtMS43LjAvc3JjL2xpYi5yc2Fzc2VydGlvbiBmYWlsZWQ6IHNpemUgPD0g +aXNpemU6Ok1BWCBhcyB1c2l6ZQAgoRUAWgAAAM0BAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2Vs +Zi5sZW4oKSA8PSBpc2l6ZTo6TUFYIGFzIHVzaXplACChFQBaAAAA5wEAAAkAAABVbnBhZCBFcnJv +ckdlbmVyaWNBcnJheTo6ZnJvbV9pdGVyIHJlY2VpdmVkICBlbGVtZW50cyBidXQgZXhwZWN0ZWQg +AAeiFQAhAAAAKKIVABcAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5j +cmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9nZW5lcmljLWFycmF5LTAuMTQuNy9zcmMvbGliLnJz +AAAAUKIVAGEAAABuAQAABQAAAGEgc2VtYXBob3JlIG1heSBub3QgaGF2ZSBtb3JlIHRoYW4gTUFY +X1BFUk1JVFMgcGVybWl0cyAoKQAAAMSiFQA4AAAA/KIVAAEAAAD///8fL2hvbWUvcnVubmVyLy5j +YXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvdG9raW8t +MS4zNi4wL3NyYy9zeW5jL2JhdGNoX3NlbWFwaG9yZS5ycwAAFKMVAGoAAACNAAAACQAAABSjFQBq +AAAACgEAAAkAAAAAAAAAY2Fubm90IGFkZCBtb3JlIHRoYW4gTUFYX1BFUk1JVFMgcGVybWl0cyAo +AACkoxUAKgAAAPyiFQABAAAAFKMVAGoAAABQAQAAEQAAAG51bWJlciBvZiBhZGRlZCBwZXJtaXRz +ICgpIHdvdWxkIG92ZXJmbG93IE1BWF9QRVJNSVRTICgA8KMVABkAAAAJpBUAHgAAAPyiFQABAAAA +FKMVAGoAAABXAQAAEQAAABSjFQBqAAAARgEAADsAAABudW1iZXIgb2YgcGVybWl0cyBtdXN0IG5v +dCBvdmVyZmxvdwAUoxUAagAAAI8BAAASAAAAbG9jayBtdXN0IGJlIGFjcXVpcmVkIGJlZm9yZSB3 +YWl0aW5nFKMVAGoAAAC7AQAAIAAAABSjFQBqAAAA0wEAAAkAAAAvaG9tZS9ydW5uZXIvLmNhcmdv +L3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90b2tpby0xLjM2 +LjAvc3JjL3V0aWwvbGlua2VkX2xpc3QucnMAANikFQBmAAAAggAAAAkAAABhc3NlcnRpb24gZmFp +bGVkOiBzZWxmLnRhaWwuaXNfbm9uZSgpAAAA2KQVAGYAAACtAAAACQAAANikFQBmAAAAZAEAACoA +AADYpBUAZgAAAHYBAAA9AAAA2KQVAGYAAACIAQAASQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3Rva2lvLTEuMzYuMC9z +cmMvdXRpbC93YWtlX2xpc3QucnO4pRUAZAAAACMAAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2Vs +Zi5jdXJyIDw9IE5VTV9XQUtFUlMAAAC4pRUAZAAAACgAAAAJAAAA3QsAAAQAAAAEAAAA3gsAAN0L +AAAEAAAABAAAAN8LAADdCwAABAAAAAQAAADgCwAA3QsAAAQAAAAEAAAA4QsAAE5vbmVTb21l4gsA +AAQAAAAEAAAA4wsAAOILAAAEAAAABAAAAOMLAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBt +dXRleNCmFQAgAAAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYy +MWE3L2xpYnJhcnkvc3RkL3NyYy9zeXMvcGFsL3dhc20vLi4vdW5zdXBwb3J0ZWQvbG9ja3MvbXV0 +ZXgucnMA+aYVAGoAAAAUAAAACQAAAHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMgYSByZWxlYXNl +IGxvYWR0pxUAKAAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYy +MWE3L2xpYnJhcnkvY29yZS9zcmMvc3luYy9hdG9taWMucnMApKcVAE8AAADgDAAAGAAAAGludGVy +bmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvaG9tZS9ydW5uZXIvLmNhcmdvL3Jl +Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90b2tpby0xLjM2LjAv +c3JjL3N5bmMvbm90aWZ5LnJzAAAALKgVAGEAAAAeAQAAEgAAAGFzc2VydGlvbiBmYWlsZWQ6IGFj +dHVhbF9zdGF0ZSA9PSBFTVBUWSB8fCBhY3R1YWxfc3RhdGUgPT0gTk9USUZJRUQALKgVAGEAAADQ +AgAAFQAAACyoFQBhAAAA3AIAAC0AAAAsqBUAYQAAAPACAAAOAAAAAgAAACyoFQBhAAAArAMAACUA +AAAAAAAALKgVAGEAAADDAwAAKQAAACyoFQBhAAAAyAMAACIAAADkCwAABAAAAAQAAADlCwAA5gsA +AAwAAAAEAAAA5wsAAOgLAADpCwAAZm9ybWF0dGVyIGVycm9yAHSpFQAPAAAAKAAAAGVycmNvZGVz +b2Z0X2xvZ291dHJldHJ5X2FmdGVyX21zcm9vbV92ZXJzaW9uYWRtaW5fY29udGFjdHN0YXR1c2Jv +ZHljdXJyZW50X3ZlcnNpb25hbnkgc3RydWN0IGZpZWxkc3RydWN0IFJlc3BvbnNlQm9keXN0cnVj +dCBGYWlsdXJlc3RydWN0IFJlc3BvbnNlQm9keXN0cnVjdCBSZXNwb25zZUJvZHkvcnVzdGMvYWVk +ZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9j +b2xsZWN0aW9ucy9idHJlZS9tYXAvZW50cnkucnMAAAA5qhUAYAAAAHABAAA2AAAAYXNzZXJ0aW9u +IGZhaWxlZDogaWR4IDwgQ0FQQUNJVFkvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQz +YjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJz +AMyqFQBbAAAAlwIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhl +aWdodCAtIDHMqhUAWwAAAK8CAAAJAAAAzKoVAFsAAACzAgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6 +IHNyYy5sZW4oKSA9PSBkc3QubGVuKCnMqhUAWwAAAC8HAAAFAAAAzKoVAFsAAACvBAAAIwAAAMyq +FQBbAAAAswQAACMAAADMqhUAWwAAAO8EAAAkAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWln +aHQgPT0gc2VsZi5ub2RlLmhlaWdodCAtIDEAAADMqhUAWwAAAPADAAAJAAAAL3J1c3RjL2FlZGQx +NzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvY29s +bGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAOKwVAF8AAAAXAgAALwAAADisFQBfAAAAogAAACQA +AADqCwAACAAAAAQAAAAEAAAAc3RydWN0IFJlc3BvbnNlQm9keSRzZXJkZV9qc29uOjpwcml2YXRl +OjpSYXdWYWx1ZQAAAO4LAAAMAAAABAAAAO8LAADwCwAApAAAAGEgRGlzcGxheSBpbXBsZW1lbnRh +dGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkA8QsAAAAAAAABAAAA8gsAAC9ydXN0 +Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mv +c3JjL3N0cmluZy5ycwBcrRUASwAAADMKAAAOAAAARXJyb3JNX0ZPUkJJRERFTk1fVU5LTk9XTl9U +T0tFTk1fTUlTU0lOR19UT0tFTk1fQkFEX0pTT05NX05PVF9KU09OTV9OT1RfRk9VTkRNX0xJTUlU +X0VYQ0VFREVETV9VTktOT1dOTV9VTlJFQ09HTklaRURNX1VOQVVUSE9SSVpFRE1fVVNFUl9ERUFD +VElWQVRFRE1fVVNFUl9JTl9VU0VNX0lOVkFMSURfVVNFUk5BTUVNX1JPT01fSU5fVVNFTV9JTlZB +TElEX1JPT01fU1RBVEVNX1RIUkVFUElEX0lOX1VTRU1fVEhSRUVQSURfTk9UX0ZPVU5ETV9USFJF +RVBJRF9BVVRIX0ZBSUxFRE1fVEhSRUVQSURfREVOSUVETV9TRVJWRVJfTk9UX1RSVVNURURNX1VO +U1VQUE9SVEVEX1JPT01fVkVSU0lPTk1fSU5DT01QQVRJQkxFX1JPT01fVkVSU0lPTk1fQkFEX1NU +QVRFTV9HVUVTVF9BQ0NFU1NfRk9SQklEREVOTV9DQVBUQ0hBX05FRURFRE1fQ0FQVENIQV9JTlZB +TElETV9NSVNTSU5HX1BBUkFNTV9JTlZBTElEX1BBUkFNTV9UT09fTEFSR0VNX0VYQ0xVU0lWRU1f +UkVTT1VSQ0VfTElNSVRfRVhDRUVERURNX0NBTk5PVF9MRUFWRV9TRVJWRVJfTk9USUNFX1JPT01N +X1dFQUtfUEFTU1dPUkRNX1VOQUJMRV9UT19BVVRIT1JJU0VfSk9JTk1fVU5BQkxFX1RPX0dSQU5U +X0pPSU5NX0JBRF9BTElBU01fRFVQTElDQVRFX0FOTk9UQVRJT05NX05PVF9ZRVRfVVBMT0FERURN +X0NBTk5PVF9PVkVSV1JJVEVfTUVESUFNX1VSTF9OT1RfU0VUTV9CQURfU1RBVFVTTV9DT05ORUNU +SU9OX0ZBSUxFRE1fQ09OTkVDVElPTl9USU1FT1VUTV9XUk9OR19ST09NX0tFWVNfVkVSU0lPTgAA +uK0VAAAAAABbIC8gXSAAAMCwFQABAAAAwbAVAAMAAADEsBUAAgAAAMCwFQABAAAAxLAVAAIAAABd +IDxub24tanNvbiBieXRlcz4AAMCwFQABAAAA8LAVABIAAABzdHJ1Y3QgU3RhbmRhcmRFcnJvckJv +ZHlhIE1hdHJpeCByb29tIHZlcnNpb24gSUQgYXMgYSBzdHJpbmdzdHJ1Y3QgUmVzcG9uc2VCb2R5 +APMLAAAAAAAAAQAAAPQLAADzCwAAAAAAAAEAAACtBgAATm9uZVNvbWX1CwAABAAAAAQAAADKAAAA +L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJi +YmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1L3NyYy9yYXcucnMAnLEVAF8AAAD2AQAAMAAAAFVu +c3VwcG9ydGVkIGRldmljZSBkZWh5ZHJhdGlvbiBhbGdvcml0aG0uc3RydWN0IEhlbHBlcm0uY2Fs +bC5hbnN3ZXJtLmNhbGwuaW52aXRlbS5jYWxsLmhhbmd1cG0uY2FsbC5jYW5kaWRhdGVzbS5jYWxs +Lm5lZ290aWF0ZW0uY2FsbC5yZWplY3RtLmNhbGwuc2VsZWN0X2Fuc3dlcm0ua2V5LnZlcmlmaWNh +dGlvbi5yZWFkeW0ua2V5LnZlcmlmaWNhdGlvbi5zdGFydG0ua2V5LnZlcmlmaWNhdGlvbi5jYW5j +ZWxtLmtleS52ZXJpZmljYXRpb24uYWNjZXB0bS5rZXkudmVyaWZpY2F0aW9uLmtleW0ua2V5LnZl +cmlmaWNhdGlvbi5tYWNtLmtleS52ZXJpZmljYXRpb24uZG9uZW0ucmVhY3Rpb25tLnJvb20uZW5j +cnlwdGVkbS5yb29tLm1lc3NhZ2VtLnJvb20ucmVkYWN0aW9ubS5zdGlja2VybS5kdW1teW0ucm9v +bV9rZXltLnJvb21fa2V5X3JlcXVlc3RtLmZvcndhcmRlZF9yb29tX2tleW0ua2V5LnZlcmlmaWNh +dGlvbi5yZXF1ZXN0bS5zZWNyZXQucmVxdWVzdG0uc2VjcmV0LnNlbmQvcnVzdGMvYWVkZDE3M2Ey +YzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0 +aW9ucy9idHJlZS9tYXAvZW50cnkucnMA/7MVAGAAAABwAQAANgAAAGFzc2VydGlvbiBmYWlsZWQ6 +IGlkeCA8IENBUEFDSVRZL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3 +NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbm9kZS5ycwCQtBUAWwAA +AJcCAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAx +kLQVAFsAAACvAgAACQAAAJC0FQBbAAAAswIAAAkAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1 +bnJlYWNoYWJsZSBjb2RlOiBlbXB0eSBpbnRlcm5hbCBub2RlAAAATLUVAD0AAACQtBUAWwAAACsF +AAAfAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5oZWlnaHQgPiAwAAAAkLQVAFsAAABiAgAACQAA +AGFzc2VydGlvbiBmYWlsZWQ6IHNyYy5sZW4oKSA9PSBkc3QubGVuKCmQtBUAWwAAAC8HAAAFAAAA +kLQVAFsAAACvBAAAIwAAAJC0FQBbAAAAswQAACMAAACQtBUAWwAAAO8EAAAkAAAAYXNzZXJ0aW9u +IGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5ub2RlLmhlaWdodCAtIDEAAACQtBUAWwAAAPAD +AAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogY291bnQgPiAwAJC0FQBbAAAA1AUAAAkAAABhc3NlcnRp +b24gZmFpbGVkOiBvbGRfcmlnaHRfbGVuICsgY291bnQgPD0gQ0FQQUNJVFkAkLQVAFsAAADcBQAA +DQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiA+PSBjb3VudACQtBUAWwAAAN0FAAAN +AAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZZC0FQBbAAAADAYAABYA +AACQtBUAWwAAABMGAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogb2xkX2xlZnRfbGVuICsgY291bnQg +PD0gQ0FQQUNJVFkAAJC0FQBbAAAAGwYAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvbGRfcmlnaHRf +bGVuID49IGNvdW50kLQVAFsAAAAcBgAADQAAAJC0FQBbAAAATAYAABYAAABhc3NlcnRpb24gZmFp +bGVkOiBtYXRjaCB0cmFja19lZGdlX2lkeCB7CiAgICBMZWZ0T3JSaWdodDo6TGVmdChpZHgpID0+ +IGlkeCA8PSBvbGRfbGVmdF9sZW4sCiAgICBMZWZ0T3JSaWdodDo6UmlnaHQoaWR4KSA9PiBpZHgg +PD0gcmlnaHRfbGVuLAp9AACQtBUAWwAAAK4FAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogbmV3X2xl +ZnRfbGVuIDw9IENBUEFDSVRZAACQtBUAWwAAAGEFAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogbGVu +ID4gMAAAAJC0FQBbAAAAZQEAAAkAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQz +YjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0 +ZS5ycwAMuRUAXwAAAFkCAAAwAAAAZmV3ZXIgZWxlbWVudHMgaW4gYXJyYXkAfLkVABcAAAD2CwAA +CAAAAAQAAAAEAAAAZmV3ZXIgZWxlbWVudHMgaW4gbWFwAAAArLkVABUAAAD3CwAAAAAAAAEAAACg +AQAA9wsAAAAAAAABAAAAmwEAAHZhbHVlIGlzIG1pc3Npbmf4CwAAAAAAAAEAAAD5CwAAdWxscnVl +YWxzZQAA+AsAAAAAAAABAAAARwEAAPgLAAAAAAAAAQAAAJ0BAAD4CwAAAAAAAAEAAACfAQAA+AsA +AAAAAAABAAAA9AsAAPgLAAAAAAAAAQAAAPoLAAD4CwAAAAAAAAEAAAD7CwAA+AsAAAAAAAABAAAA +/AsAAPgLAAAAAAAAAQAAAP0LAAD4CwAAAAAAAAEAAAD+CwAA+AsAAAAAAAABAAAA/wsAAPgLAAAA +AAAAAQAAAAAMAABzdHJ1Y3QgSW5SZXBseVRvIHdpdGggMSBlbGVtZW50AMi6FQAfAAAAAQwAAAgA +AAAEAAAABAAAAGV2ZW50X2lkc3RydWN0IEFubm90YXRpb24gd2l0aCAyIGVsZW1lbnRzAAAACLsV +ACEAAABrZXlzdHJ1Y3QgVGhyZWFkIHdpdGggMyBlbGVtZW50cze7FQAdAAAAbS5pbl9yZXBseV90 +b2lzX2ZhbGxpbmdfYmFja3N0cnVjdCBSZWZlcmVuY2Ugd2l0aCAxIGVsZW1lbnQAeLsVAB8AAABz +dHJ1Y3QgUmVsYXRpb25EZUhlbHBlciB3aXRoIDIgZWxlbWVudHMAoLsVACcAAAByZWxfdHlwZXN0 +cnVjdCBUaHJlYWRVbnN0YWJsZURlSGVscGVyIHdpdGggMiBlbGVtZW50cwAAANi7FQAtAAAAaW8u +ZWxlbWVudC5zaG93X3JlcGx5c3RydWN0IFJlcGxhY2VtZW50IHdpdGggMSBlbGVtZW50AAAlvBUA +IQAAAAoAAIAEAACACAAAgC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3 +NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAFy8 +FQBfAAAAxwAAACcAAABcvBUAXwAAABcCAAAvAAAAXLwVAF8AAACiAAAAJAAAAC9ydXN0Yy9hZWRk +MTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL2Nv +bGxlY3Rpb25zL2J0cmVlL21hcC5yc2ludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxl +IGNvZGUAAOy8FQBaAAAA5gAAACwAAADsvBUAWgAAAPoAAAA/AAAA7LwVAFoAAAAfAQAALgAAACRz +ZXJkZV9qc29uOjpwcml2YXRlOjpSYXdWYWx1ZQABAEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla +YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky////////////////////////// +////////////////////////////////Pv///z80NTY3ODk6Ozw9/////////wABAgMEBQYHCAkK +CwwNDg8QERITFBUWFxgZ////////GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP///////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +////////////AAEAQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJz +dHV2d3h5ejAxMjM0NTY3ODktX/////////////////////////////////////////////////// +/////////z7//zQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///// +P/8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////9SZWNpcHJvY2F0 +ZVYxQ29udGVudGZpZWxkIGlkZW50aWZpZXJzdHJ1Y3QgQ2FsbEFuc3dlckV2ZW50Q29udGVudG0u +Y2FsbC5hbnN3ZXJzdHJ1Y3QgUmVkYWN0ZWRDYWxsQW5zd2VyRXZlbnRDb250ZW50c3RydWN0IENh +bGxDYW5kaWRhdGVzRXZlbnRDb250ZW50bS5jYWxsLmNhbmRpZGF0ZXNzdHJ1Y3QgUmVkYWN0ZWRD +YWxsQ2FuZGlkYXRlc0V2ZW50Q29udGVudHN0cnVjdCBDYW5kaWRhdGVzdHJ1Y3QgQ2FsbEhhbmd1 +cEV2ZW50Q29udGVudG0uY2FsbC5oYW5ndXBzdHJ1Y3QgUmVkYWN0ZWRDYWxsSGFuZ3VwRXZlbnRD +b250ZW50aWNlX2ZhaWxlZGludml0ZV90aW1lb3V0aWNlX3RpbWVvdXR1c2VyX2hhbmd1cHVzZXJf +bWVkaWFfZmFpbGVkdXNlcl9idXN5dW5rbm93bl9lcnJvcnN0cnVjdCBDYWxsSW52aXRlRXZlbnRD +b250ZW50bS5jYWxsLmludml0ZXN0cnVjdCBSZWRhY3RlZENhbGxJbnZpdGVFdmVudENvbnRlbnRt +LnVzZXJzdHJ1Y3QgQ2FsbE5lZ290aWF0ZUV2ZW50Q29udGVudG0uY2FsbC5uZWdvdGlhdGVzdHJ1 +Y3QgUmVkYWN0ZWRDYWxsTmVnb3RpYXRlRXZlbnRDb250ZW50c3RydWN0IENhbGxSZWplY3RFdmVu +dENvbnRlbnRtLmNhbGwucmVqZWN0c3RydWN0IFJlZGFjdGVkQ2FsbFJlamVjdEV2ZW50Q29udGVu +dHN0cnVjdCBDYWxsU2VsZWN0QW5zd2VyRXZlbnRDb250ZW50bS5jYWxsLnNlbGVjdF9hbnN3ZXJz +dHJ1Y3QgUmVkYWN0ZWRDYWxsU2VsZWN0QW5zd2VyRXZlbnRDb250ZW50c3RydWN0IFRvRGV2aWNl +S2V5VmVyaWZpY2F0aW9uQWNjZXB0RXZlbnRDb250ZW50bS5rZXkudmVyaWZpY2F0aW9uLmFjY2Vw +dHN0cnVjdCBLZXlWZXJpZmljYXRpb25BY2NlcHRFdmVudENvbnRlbnRzdHJ1Y3QgUmVkYWN0ZWRL +ZXlWZXJpZmljYXRpb25BY2NlcHRFdmVudENvbnRlbnRzdHJ1Y3QgX0N1c3RvbUNvbnRlbnRzdHJ1 +Y3QgU2FzVjFDb250ZW50c3RydWN0IFRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uQ2FuY2VsRXZlbnRD +b250ZW50bS5rZXkudmVyaWZpY2F0aW9uLmNhbmNlbHN0cnVjdCBLZXlWZXJpZmljYXRpb25DYW5j +ZWxFdmVudENvbnRlbnRzdHJ1Y3QgUmVkYWN0ZWRLZXlWZXJpZmljYXRpb25DYW5jZWxFdmVudENv +bnRlbnRtLnRpbWVvdXRtLnVua25vd25fdHJhbnNhY3Rpb25tLnVua25vd25fbWV0aG9kbS51bmV4 +cGVjdGVkX21lc3NhZ2VtLmtleV9taXNtYXRjaG0udXNlcl9taXNtYXRjaG0uaW52YWxpZF9tZXNz +YWdlbS5hY2NlcHRlZG0ubWlzbWF0Y2hlZF9jb21taXRtZW50bS5taXNtYXRjaGVkX3Nhc3N0cnVj +dCBUb0RldmljZUtleVZlcmlmaWNhdGlvbkRvbmVFdmVudENvbnRlbnRtLmtleS52ZXJpZmljYXRp +b24uZG9uZXN0cnVjdCBLZXlWZXJpZmljYXRpb25Eb25lRXZlbnRDb250ZW50c3RydWN0IFJlZGFj +dGVkS2V5VmVyaWZpY2F0aW9uRG9uZUV2ZW50Q29udGVudHN0cnVjdCBUb0RldmljZUtleVZlcmlm +aWNhdGlvbktleUV2ZW50Q29udGVudG0ua2V5LnZlcmlmaWNhdGlvbi5rZXlzdHJ1Y3QgS2V5VmVy +aWZpY2F0aW9uS2V5RXZlbnRDb250ZW50c3RydWN0IFJlZGFjdGVkS2V5VmVyaWZpY2F0aW9uS2V5 +RXZlbnRDb250ZW50c3RydWN0IFRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uTWFjRXZlbnRDb250ZW50 +bS5rZXkudmVyaWZpY2F0aW9uLm1hY3N0cnVjdCBLZXlWZXJpZmljYXRpb25NYWNFdmVudENvbnRl +bnRzdHJ1Y3QgUmVkYWN0ZWRLZXlWZXJpZmljYXRpb25NYWNFdmVudENvbnRlbnRzdHJ1Y3QgVG9E +ZXZpY2VLZXlWZXJpZmljYXRpb25SZWFkeUV2ZW50Q29udGVudG0ua2V5LnZlcmlmaWNhdGlvbi5y +ZWFkeXN0cnVjdCBLZXlWZXJpZmljYXRpb25SZWFkeUV2ZW50Q29udGVudHN0cnVjdCBSZWRhY3Rl +ZEtleVZlcmlmaWNhdGlvblJlYWR5RXZlbnRDb250ZW50c3RydWN0IFRvRGV2aWNlS2V5VmVyaWZp +Y2F0aW9uU3RhcnRFdmVudENvbnRlbnRtLmtleS52ZXJpZmljYXRpb24uc3RhcnRzdHJ1Y3QgS2V5 +VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnRzdHJ1Y3QgUmVkYWN0ZWRLZXlWZXJpZmljYXRp +b25TdGFydEV2ZW50Q29udGVudHN0cnVjdCBSZWNpcHJvY2F0ZVYxQ29udGVudHN0cnVjdCBSZWFj +dGlvbkV2ZW50Q29udGVudG0ucmVhY3Rpb25zdHJ1Y3QgUmVkYWN0ZWRSZWFjdGlvbkV2ZW50Q29u +dGVudG0ucm9vbS5tZXNzYWdlc3RydWN0IFJlZGFjdGVkUm9vbU1lc3NhZ2VFdmVudENvbnRlbnRv +cmcubWF0cml4LmN1c3RvbS5odG1sRm9ybWF0dGVkQm9keWZvcm1hdGZvcm1hdHRlZF9ib2R5AADm +yBUABgAAAOzIFQAOAAAAc3RydWN0IEN1c3RvbUV2ZW50Q29udGVudHN0cnVjdCBpbXBsZW1lbnRp +bmcgUmVkYWN0ZWRSb29tUmVkYWN0aW9uRXZlbnRDb250ZW50AAAlyRUANQAAAHN0cnVjdCBSb29t +UmVkYWN0aW9uRXZlbnRDb250ZW50bS5yb29tLnJlZGFjdGlvbnN0cnVjdCBSZWRhY3RlZFJvb21S +ZWRhY3Rpb25FdmVudENvbnRlbnRzdHJ1Y3QgUm9vbVJlZGFjdGlvblVuc2lnbmVkY2FuIG9ubHkg +ZmxhdHRlbiBzdHJ1Y3RzIGFuZCBtYXBzdmFsdWUgaXMgbWlzc2luZ3VsbHRodW1ibmFpbF91cmx0 +aHVtYm5haWxfZmlsZXVybHJlcXVlc3RyZXF1ZXN0X2NhbmNlbGxhdGlvbkEgc2VjcmV0IG5hbWUg +aXMgcmVxdWlyZWQgd2hlbiB0aGUgYWN0aW9uIGlzICJyZXF1ZXN0Ii5maWVsZCBpZGVudGlmaWVy +c3RydWN0IEltYWdlSW5mb2JvZHlzdHJ1Y3QgRW1vdGVNZXNzYWdlRXZlbnRDb250ZW50c3RydWN0 +IFRleHRNZXNzYWdlRXZlbnRDb250ZW50ZmlsZW5hbWVpbmZvc3RydWN0IFZpZGVvTWVzc2FnZUV2 +ZW50Q29udGVudGR1cmF0aW9uaHdtaW1ldHlwZXNpemV0aHVtYm5haWxfaW5mb3N0cnVjdCBWaWRl +b0luZm9mb3JtYXRmb3JtYXR0ZWRfYm9keQzKFQANAAAAGcoVAA4AAABmaWxlJ8oVAAMAAABgyxUA +BAAAAHN0cnVjdCBUaHVtYm5haWxJbmZvRW5jcnlwdGVkRmlsZWtleWl2aGFzaGVzdgAAACfKFQAD +AAAAlcsVAAMAAACYyxUAAgAAAJrLFQAGAAAAoMsVAAEAAABzdHJ1Y3QgRW5jcnlwdGVkRmlsZUpz +b25XZWJLZXlrdHlrZXlfb3BzYWxna2V4dADqyxUAAwAAAO3LFQAHAAAA9MsVAAMAAAD3yxUAAQAA +APjLFQADAAAAc3RydWN0IEpzb25XZWJLZXlzdHJ1Y3QgVG9EZXZpY2VTZWNyZXRSZXF1ZXN0RXZl +bnRDb250ZW50bS5zZWNyZXQucmVxdWVzdG0uY3Jvc3Nfc2lnbmluZy5tYXN0ZXJtLmNyb3NzX3Np +Z25pbmcudXNlcl9zaWduaW5nbS5jcm9zc19zaWduaW5nLnNlbGZfc2lnbmluZ20ubWVnb2xtX2Jh +Y2t1cC52MXN0cnVjdCBTdGlja2VyRXZlbnRDb250ZW50bS5zdGlja2Vyc3RydWN0IFJlZGFjdGVk +U3RpY2tlckV2ZW50Q29udGVudAAAAgwAAAAAAAABAAAAKwAAAAIMAAAAAAAAAQAAAPkLAAACDAAA +AAAAAAEAAACfAQAAAgwAAAAAAAABAAAAnQEAAGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAyXjUz +IC0gMQAAAFTNFQAhAAAAAwwAAAgAAAAEAAAABAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0 +cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjEx +NS9zcmMvdmFsdWUvc2VyLnJzaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29k +ZQAAAJDNFQBlAAAAmwEAAC4AAABzZXJpYWxpemVfdmFsdWUgY2FsbGVkIGJlZm9yZSBzZXJpYWxp +emVfa2V5AJDNFQBlAAAAqAEAAB8AAACQzRUAZQAAAK8BAAAuAAAAJHNlcmRlX2pzb246OnByaXZh +dGU6OlJhd1ZhbHVlc2hhMjU2Y3VydmUyNTUxOWN1cnZlMjU1MTktaGtkZi1zaGEyNTZoa2RmLWht +YWMtc2hhMjU2aGtkZi1obWFjLXNoYTI1Ni52MmhtYWMtc2hhMjU2ZGVjaW1hbGVtb2ppbS5zYXMu +djFtLnFyX2NvZGUuc2Nhbi52MW0ucXJfY29kZS5zaG93LnYxbS5yZWNpcHJvY2F0ZS52MWJvZHlz +ZXJ2ZXJfbm90aWNlX3R5cGVhZG1pbl9jb250YWN0bGltaXRfdHlwZXN0cnVjdCBTZXJ2ZXJOb3Rp +Y2VNZXNzYWdlRXZlbnRDb250ZW50bS5zZXJ2ZXJfbm90aWNlLnVzYWdlX2xpbWl0X3JlYWNoZWRt +b250aGx5X2FjdGl2ZV91c2VyYSBzZXF1ZW5jZWEgbWFwBAwAAAwAAAAEAAAABQwAAAYMAACkAAAA +YSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseQAH +DAAAAAAAAAEAAAAIDAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3 +NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzACzQFQBLAAAAMwoAAA4AAAAJDAAAFAAA +AAQAAAAKDAAARXJyb3JtaXNzaW5nIGZpZWxkIGBgAAAAndAVAA8AAACs0BUAAQAAAGludmFsaWQg +bGVuZ3RoICwgZXhwZWN0ZWQgAADA0BUADwAAAM/QFQALAAAAZHVwbGljYXRlIGZpZWxkIGAAAADs +0BUAEQAAAKzQFQABAAAAdW5rbm93biB2YXJpYW50IGBgLCBleHBlY3RlZCAAAAAQ0RUAEQAAACHR +FQAMAAAAYCwgdGhlcmUgYXJlIG5vIHZhcmlhbnRzENEVABEAAABA0RUAGAAAAAcMAAAAAAAAAQAA +APkLAABGcm9tVXRmOEVycm9yYnl0ZXMAAAsMAAAMAAAABAAAAAwMAABlcnJvcgAAAA0MAAAEAAAA +BAAAAA4MAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8t +NmYxN2QyMmJiYTE1MDAxZi9zZXJkZV9qc29uLTEuMC4xMTUvc3JjL3JlYWQucnO00RUAYAAAALYC +AAAdAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZm +MTdkMjJiYmExNTAwMWYvYmFzZTY0LTAuMjEuNy9zcmMvZW5jb2RlLnJzAAAAJNIVAF0AAABQAAAA +MwAAAHVzaXplIG92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgYjY0IGxlbmd0aAAAJNIVAF0AAABX +AAAACgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02 +ZjE3ZDIyYmJhMTUwMDFmL2Jhc2U2NC0wLjIxLjcvc3JjL2VuZ2luZS9tb2QucnNpbnRlZ2VyIG92 +ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgYnVmZmVyIHNpemUAANDSFQBhAAAAfAAAABIAAABJbnZh +bGlkIFVURjjQ0hUAYQAAAIIAAAAkAAAABwwAAAAAAAABAAAAnQEAAAcMAAAAAAAAAQAAAJ8BAABt +LnRocmVhZGlvLmVsZW1lbnQudGhyZWFkbS5hbm5vdGF0aW9ubS5yZWZlcmVuY2VtLnJlcGxhY2Vt +LmR1bW15ZmllbGQgaWRlbnRpZmllcm0uZm9yd2FyZGVkX3Jvb21fa2V5c3RydWN0IFJvb21FbmNy +eXB0ZWRFdmVudENvbnRlbnRtLnJvb20uZW5jcnlwdGVkc3RydWN0IFJlZGFjdGVkUm9vbUVuY3J5 +cHRlZEV2ZW50Q29udGVudHZhcmlhbnQgaWRlbnRpZmllclJlcGxhY2VtZW50ZXZlbnRfaWQAAACF +1BUACAAAAHN0cnVjdCBSZXBsYWNlbWVudHN0cnVjdCBPbG1WMUN1cnZlMjU1MTlBZXNTaGEyQ29u +dGVudHN0cnVjdCBDaXBoZXJ0ZXh0SW5mb3N0cnVjdCBNZWdvbG1WMUFlc1NoYTJDb250ZW50L3J1 +c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxv +Yy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJzANUVAGAAAAAyAgAAKgAAAHJlbF90 +eXBlVG9EZXZpY2VTZWNyZXRTZW5kRXZlbnRDb250ZW50cmVxdWVzdF9pZA8MAAAIAAAABAAAAHsC +AABmaWVsZCBpZGVudGlmaWVySW5SZXBseVRvZXZlbnRfaWQAAADJ1RUACAAAAHN0cnVjdCBJblJl +cGx5VG9tLmFubm90YXRpb25rZXkAydUVAAgAAAD41RUAAwAAAHN0cnVjdCBBbm5vdGF0aW9ubS50 +aHJlYWRtLmluX3JlcGx5X3RvaXNfZmFsbGluZ19iYWNrAAAAydUVAAgAAAAl1hUADQAAADLWFQAP +AAAAc3RydWN0IFRocmVhZHN0cnVjdCBCdW5kbGVkVGhyZWFkbS5yZWZlcmVuY2VzdHJ1Y3QgUmVm +ZXJlbmNlc3RydWN0IEJ1bmRsZWRSZWZlcmVuY2VzdHJ1Y3QgUmVmZXJlbmNlQ2h1bmtSZWxhdGlv +bkRlSGVscGVyJdYVAA0AAABw1RUACAAAAHN0cnVjdCBSZWxhdGlvbkRlSGVscGVyVGhyZWFkVW5z +dGFibGVEZUhlbHBlcmlvLmVsZW1lbnQuc2hvd19yZXBseQAAydUVAAgAAAAR1xUAFQAAAHN0cnVj +dCBUaHJlYWRVbnN0YWJsZURlSGVscGVyaW52aXRlZGpvaW5lZHNoYXJlZHdvcmxkX3JlYWRhYmxl +Ym9keWZpbGVuYW1laW5mb3N0cnVjdCBBdWRpb01lc3NhZ2VFdmVudENvbnRlbnRkdXJhdGlvbm1p +bWV0eXBlc2l6ZXN0cnVjdCBBdWRpb0luZm9zdHJ1Y3QgTWVudGlvbnNEZUhlbHBlcnN0cnVjdCBN +ZXNzYWdlVHlwZURlSGVscGVyc3RydWN0IEltYWdlTWVzc2FnZUV2ZW50Q29udGVudG1ldGhvZHNm +cm9tX2RldmljZXRvc3RydWN0IEtleVZlcmlmaWNhdGlvblJlcXVlc3RFdmVudENvbnRlbnRzdHJ1 +Y3QgTm90aWNlTWVzc2FnZUV2ZW50Q29udGVudHN0cnVjdCBSZWxhdGVzVG9EZUhlbHBlcnZhcmlh +bnQgaWRlbnRpZmllcnN0cnVjdCBSZXBsYWNlbWVudEpzb25SZXByc3RydWN0IFRocmVhZERlSGVs +cGVyc3RydWN0IE9yaWdpbmFsUm9vbVJlZGFjdGlvbkV2ZW50RGVIZWxwZXJtLnNlY3JldC5zZW5k +SW5kZXggb3V0IG9mIGJvdW5kcwXZFQATAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZk +Mzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tb2QucnMAAAAg2RUATQAA +AOEDAAAhAAAAINkVAE0AAADhAwAALgAAACDZFQBNAAAA5QMAACAAAAAg2RUATQAAAOUDAAArAAAA +L3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9j +b3JlL3NyYy9zbGljZS9zb3J0LnJzAACw2RUATgAAADsEAAAOAAAAsNkVAE4AAABIBAAAHAAAALDZ +FQBOAAAASQQAAB0AAACw2RUATgAAAEoEAAAlAAAAsNkVAE4AAABQBAAAEQAAALDZFQBOAAAAjgQA +AEAAAACw2RUATgAAALQEAABOAAAAsNkVAE4AAADCBAAAVgAAALDZFQBOAAAA1gQAABEAAABhc3Nl +cnRpb24gZmFpbGVkOiBlbmQgPj0gc3RhcnQgJiYgZW5kIDw9IGxlbrDZFQBOAAAALQUAAAUAAACw +2RUATgAAAD4FAAApAAAAYXNzZXJ0aW9uIGZhaWxlZDogb2Zmc2V0ICE9IDAgJiYgb2Zmc2V0IDw9 +IGxlbgAAsNkVAE4AAACbAAAABQAAALDZFQBOAAAAowAAAB8AAABib2R5ZmlsZW5hbWVpbmZvc3Ry +dWN0IEZpbGVNZXNzYWdlRXZlbnRDb250ZW50bWltZXR5cGVzaXpldGh1bWJuYWlsX2luZm9zdHJ1 +Y3QgRmlsZUluZm9nZW9fdXJpc3RydWN0IExvY2F0aW9uTWVzc2FnZUV2ZW50Q29udGVudHN0cnVj +dCBMb2NhdGlvbkluZm8AEAwAAAQAAAAEAAAAVgUAABAMAAAEAAAABAAAALwGAABNYXBBY2Nlc3M6 +Om5leHRfdmFsdWUgY2FsbGVkIGJlZm9yZSBuZXh0X2tleS9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlLTEuMC4xOTcv +c3JjL2RlL3ZhbHVlLnJzAAzcFQBfAAAAzgQAABsAAABzdHJ1Y3QgUmVkYWN0ZWRVbnNpZ25lZHN0 +cnVjdCBVbnNpZ25lZFJvb21SZWRhY3Rpb25FdmVudHN0cnVjdCBTZXNzaW9uRGVzY3JpcHRpb25z +dHJ1Y3QgVG9EZXZpY2VLZXlWZXJpZmljYXRpb25SZXF1ZXN0RXZlbnRDb250ZW50bS5rZXkudmVy +aWZpY2F0aW9uLnJlcXVlc3RzdHJ1Y3QgRXZlbnRUeXBlRGVIZWxwZXJzdHJ1Y3QgUmVkYWN0aW9u +RGVIZWxwZXJzdHJ1Y3QgVW5zaWduZWREZUhlbHBlcnN0cnVjdCBNZW50aW9ucwAAEQwAAAAAAAAB +AAAAEAAAABEMAAAAAAAAAQAAACsAAAARDAAAAAAAAAEAAAD0CwAAEQwAAAAAAAABAAAAnQEAABEM +AAAAAAAAAQAAAJ8BAAARDAAAAAAAAAEAAAASDAAAEQwAAAAAAAABAAAAUQAAABEMAAAAAAAAAQAA +ABMMAAARDAAAAAAAAAEAAAATDAAAEQwAAAAAAAABAAAAFAwAABEMAAAAAAAAAQAAABMMAAARDAAA +AAAAAAEAAAAVDAAAEQwAAAAAAAABAAAAoQEAABEMAAAAAAAAAQAAAKABAAARDAAAAAAAAAEAAACt +BgAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdk +MjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1L3NyYy9yYXcucnMAYN4VAF8AAAAPAgAATQAA +AHN0cnVjdCBFbmNyeXB0ZWRGaWxlIHdpdGggNSBlbGVtZW50c9DeFQAkAAAAFgwAAAgAAAAEAAAA +BAAAAHVybGtleWl2aGFzaGVzdnN0cnVjdCBKc29uV2ViS2V5IHdpdGggNSBlbGVtZW50cxvfFQAh +AAAAa3R5a2V5X29wc2FsZ2tleHRtLnJvb21fa2V5bS5yb29tX2tleV9yZXF1ZXN0cmVxdWVzdHJl +cXVlc3RfY2FuY2VsbGF0aW9uYXNzZXJ0aW9uIGZhaWxlZDogaWR4IDwgQ0FQQUNJVFkvcnVzdGMv +YWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3Ny +Yy9jb2xsZWN0aW9ucy9idHJlZS9ub2RlLnJzAKzfFQBbAAAAlwIAAAkAAABhc3NlcnRpb24gZmFp +bGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhlaWdodCAtIDGs3xUAWwAAAK8CAAAJAAAArN8VAFsA +AACzAgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNyYy5sZW4oKSA9PSBkc3QubGVuKCms3xUAWwAA +AC8HAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogY291bnQgPiAwAKzfFQBbAAAA1AUAAAkAAABhc3Nl +cnRpb24gZmFpbGVkOiBvbGRfcmlnaHRfbGVuICsgY291bnQgPD0gQ0FQQUNJVFkArN8VAFsAAADc +BQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiA+PSBjb3VudACs3xUAWwAAAN0F +AAANAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZazfFQBbAAAADAYA +ABYAAABhc3NlcnRpb24gZmFpbGVkOiBsZW4gPiAwAAAArN8VAFsAAABlAQAACQAAAC9ydXN0Yy9h +ZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3Jj +L2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAKzhFQBfAAAAWQIAADAAAAAvcnVzdGMvYWVk +ZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9j +b2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwAc4hUAXwAAAMcAAAAnAAAAHOIVAF8AAAAXAgAA +LwAAABziFQBfAAAAogAAACQAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0 +NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9tYXAucnNpbnRl +cm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlAACs4hUAWgAAAOYAAAAsAAAArOIV +AFoAAAD6AAAAPwAAAKziFQBaAAAAHwEAAC4AAAB1bGxydWVhbHNlAAAXDAAAAAAAAAEAAAChAQAA +SW5kZXggb3V0IG9mIGJvdW5kcwB84xUAEwAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2 +ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzAAAAmOMVAE0A +AADhAwAAIQAAAJjjFQBNAAAA4QMAAC4AAACY4xUATQAAAOUDAAAgAAAAmOMVAE0AAADlAwAAKwAA +AC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkv +Y29yZS9zcmMvc2xpY2Uvc29ydC5ycwAAKOQVAE4AAAA7BAAADgAAACjkFQBOAAAASAQAABwAAAAo +5BUATgAAAEkEAAAdAAAAKOQVAE4AAABKBAAAJQAAACjkFQBOAAAAUAQAABEAAAAo5BUATgAAAI4E +AABAAAAAKOQVAE4AAAC0BAAATgAAACjkFQBOAAAAwgQAAFYAAAAo5BUATgAAANYEAAARAAAAYXNz +ZXJ0aW9uIGZhaWxlZDogZW5kID49IHN0YXJ0ICYmIGVuZCA8PSBsZW4o5BUATgAAAC0FAAAFAAAA +KOQVAE4AAAA+BQAAKQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9mZnNldCAhPSAwICYmIG9mZnNldCA8 +PSBsZW4AACjkFQBOAAAAmwAAAAUAAAAo5BUATgAAAKMAAAAfAAAAGQwAAAAAAAABAAAAGgwAAC9o +b21lL3J1bm5lci8uY2FyZ28vZ2l0L2NoZWNrb3V0cy9ydW1hLTUyMDFlNzNmNWY5MTdjNzcvNGMw +MGJkMC9jcmF0ZXMvcnVtYS1jb21tb24vc3JjL3RpbWUucnMAQajM1wAL7SQtVDoupOUVAAAAAAAo +5hUAAQAAACjmFQABAAAAKeYVAAEAAAAq5hUAAQAAACrmFQABAAAAK+YVAAEAAABNaWxsaVNlY29u +ZHNTaW5jZVVuaXhFcG9jaCgpZOYVABsAAAB/5hUAAQAAAKTlFQAAAAAAKOYVAAEAAAAo5hUAAQAA +ACnmFQABAAAAKuYVAAEAAAAq5hUAAQAAAFNlY29uZHNTaW5jZVVuaXhFcG9jaCgAAMDmFQAWAAAA +f+YVAAEAAABkYXRlIG91dCBvZiByYW5nZQAAALTlFQBeAAAAiwAAACAAAACk5RUAAAAAACoAAAAU +5xUAAQAAAERldmljZSBpZGVudGlmaWVyIGNhbm5vdCBiZSBlbXB0eWVkMjU1MTljdXJ2ZTI1NTE5 +c2lnbmVkX2N1cnZlMjU1MTltLm9sbS52MS5jdXJ2ZTI1NTE5LWFlcy1zaGEybS5tZWdvbG0udjEu +YWVzLXNoYTJJbnZhbGlkQnl0ZQAAGwwAAAQAAAAEAAAAHAwAABsMAAAEAAAABAAAAKsBAABJbnZh +bGlkTGVuZ3RoSW52YWxpZExhc3RTeW1ib2xJbnZhbGlkUGFkZGluZx4MAAAMAAAABAAAAB8MAAAg +DAAApAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVj +dGVkbHkAIQwAAAAAAAABAAAAIgwAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNi +MzQ0Zjk3NzYyMWE3L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBM6BUASwAAADMKAAAOAAAA +RXJyb3JudW1iZXIgZm91bmQgaXMgbm90IGEgdmFsaWQgYGpzX2ludDo6SW50YHNlcmRlIEVycm9y +OiAA1ugVAA0AAACo6BUAAAAAAH1mYWxzZXRydWVudWxsewAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1 +NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJz +AATpFQBPAAAAuAEAADcAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2Rl +L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJi +YmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1L3NyYy9zZXIucnMAjOkVAF8AAACiAgAAKgAAAATp +FQAAAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL3J1bWEtNTIwMWU3M2Y1Zjkx +N2M3Ny80YzAwYmQwL2NyYXRlcy9ydW1hLWNvbW1vbi9zcmMvaWRlbnRpZmllcnMvZGV2aWNlX2tl +eV9pZC5ycwAE6hUAcwAAAB0AAAAWAAAABOoVAHMAAAAiAAAAFgAAAATqFQBzAAAAJgAAACEAAABl +ZDI1NTE5Y3VydmUyNTUxOXNpZ25lZF9jdXJ2ZTI1NTE5AADM6hUAAAAAAG1pc3NpbmcgaGVhZGVy +IGBgAAAA1OoVABAAAADk6hUAAQAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVy +cmAgdmFsdWUAJQwAAAIAAAABAAAAJgwAAEVtcHR5SW52YWxpZENoYXJhY3RlcnNJbnZhbGlkTWF0 +cml4SWQAAAAnDAAABAAAAAQAAAAdCQAASW52YWxpZE1hdHJpeFRvVXJpAAAnDAAABAAAAAQAAAAe +CQAASW52YWxpZE1hdHJpeFVyaScMAAAEAAAABAAAAB8JAABJbnZhbGlkTXhjVXJpAAAAJwwAAAQA +AAAEAAAAIAkAAEludmFsaWRWb2lwVmVyc2lvbklkJwwAAAQAAAAEAAAAIQkAAEludmFsaWRTZXJ2 +ZXJOYW1lSW52YWxpZFV0ZjhNYXhpbXVtTGVuZ3RoRXhjZWVkZWRNaXNzaW5nQ29sb25NaXNzaW5n +TGVhZGluZ1NpZ2lsL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIx +YTcvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwBE7BUATwAAALgBAAA3AAAAL2hvbWUv +cnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL3J1bWEtNTIwMWU3M2Y1ZjkxN2M3Ny80YzAwYmQw +L2NyYXRlcy9ydW1hLWNvbW1vbi9zcmMvaWRlbnRpZmllcnMvdXNlcl9pZC5ycwAAAKTsFQBtAAAA +XgAAABcAAACk7BUAbQAAAGMAAAAxAAAApOwVAG0AAABrAAAAOgAAAKTsFQBtAAAAlAAAACEAAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvcnVtYS01MjAxZTczZjVmOTE3Yzc3LzRj +MDBiZDAvY3JhdGVzL3J1bWEtY29tbW9uL3NyYy9pZGVudGlmaWVycy9ldmVudF9pZC5ycwAAVO0V +AG4AAAA+AAAAFwAAAFTtFQBuAAAARQAAAEwAAAAxMCBvciBzdHJpbmf46hUAAAAAAGNhbGxlZCBg +UmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAKAwAAAEAAAABAAAAKQwAAFBhcnNl +SW50RXJyb3JraW5kAAAAKgwAAAQAAAAEAAAAKwwAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMy +YjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAWO4V +AE8AAAC4AQAANwAAAFdyb25nU2NoZW1hTWlzc2luZ1NsYXNoTWVkaWFJZE1hbGZvcm1lZFNlcnZl +ck5hbWVNYWxmb3JtZWRJbnZhbGlkUGFydHNOdW1iZXJNaXNzaW5nUm9vbU5vSWRlbnRpZmllclRv +b01hbnlJZGVudGlmaWVyc1Vua25vd25JZGVudGlmaWVyVW5rbm93bklkZW50aWZpZXJQYWlyVW5r +bm93blR5cGVJbnZhbGlkVXJsV3JvbmdCYXNlVXJsVW5rbm93bkFyZ3VtZW50V3JvbmdTY2hlbWVU +b29NYW55QWN0aW9uc1Vua25vd25RdWVyeUl0ZW1Xcm9uZ1VpbnRWYWx1ZTEyMzQ1Njc4OTEwMTEv +aG9tZS9ydW5uZXIvLmNhcmdvL2dpdC9jaGVja291dHMvcnVtYS01MjAxZTczZjVmOTE3Yzc3LzRj +MDBiZDAvY3JhdGVzL3J1bWEtY29tbW9uL3NyYy9pZGVudGlmaWVycy9zZXJ2ZXJfbmFtZS5yc8fv +FQBxAAAAGAAAABQAAADH7xUAcQAAABwAAAAUAAAAx+8VAHEAAAArAAAAFQAAAMfvFQBxAAAALAAA +ABMAAADH7xUAcQAAACwAAAAvAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5hc19ieXRlcygpW2Vu +ZF9vZl9ob3N0XSA9PSBiJzonAADH7xUAcQAAACsAAAANAAAAYSBzdHJpbmcKAAAADAAAAA8AAABe +7xUAaO8VAHTvFQALAAAADgAAABAAAACD7xUAju8VAJzvFQASAAAACwAAAAwAAAASAAAAEQAAABUA +AAALAAAA8u4VAATvFQAP7xUAG+8VAC3vFQA+7xUAU+8VAAsAAAAMAAAAEAAAABMAAAC47hUAw+4V +AM/uFQDf7hUAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZS9ob21lL3J1 +bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFm +L3NlcmRlX2pzb24tMS4wLjExNS9zcmMvc2VyLnJzAIjxFQBfAAAACwYAABIAAACI8RUAXwAAAC4I +AAAzAAAAiPEVAF8AAAAhCAAAQAAAAH0iZmFsc2V0cnVlbnVsbFt7LFwiXFxcYlxmXG5cclx0Ol0A +AIjxFQBfAAAAfQIAACoAAACI8RUAXwAAAKICAAAqAAAAiPEVAF8AAAD6AQAAKgAAAIjxFQBfAAAA +CAIAACoAAABtYXN0ZXJzZWxmX3NpZ25pbmd1c2VyX3NpZ25pbmcwMTIzNDU2Nzg5YWJjZGVmMDEy +MzQ1Njc4OUFCQ0RFRi9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRl +cy5pby02ZjE3ZDIyYmJhMTUwMDFmL3V1aWQtMS42LjEvc3JjL3JuZy5yc2NvdWxkIG5vdCByZXRy +aWV2ZSByYW5kb20gYnl0ZXMgZm9yIHV1aWQ6IAAR8xUAKgAAALryFQBXAAAACQAAAA0AAAAoKQAA +b3ZlcmZsb3cgaW4gRHVyYXRpb246Om5ldwAAAFjzFQAZAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZl +NTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy90aW1lLnJzfPMVAEgA +AADKAAAAFQAAAC0MAAAAAAAAAQAAAC4MAABvdmVyZmxvdyB3aGVuIHN1YnRyYWN0aW5nIGR1cmF0 +aW9ucwB88xUASAAAALoDAAAfAAAAVHJ5RnJvbUludEVycm9yAC8MAAAEAAAABAAAADAMAABmb3Vu +ZCBuZWdhdGl2ZSB0aW1lc3RhbXAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl +eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi93ZWItdGltZS0xLjEuMC9zcmMvdGltZS9zeXN0 +ZW1fdGltZS5yc1D0FQBoAAAAFgAAACAAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3Ny +Yy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90aW1lLTAuMy4zNC9zcmMvZGF0ZS5y +c2p1bGlhbl9kYXkAHwA7AFoAeACXALUA1ADzABEBMAFOAR8APABbAHkAmAC2ANUA9AASATEBTwFv +dmVyZmxvdyBhZGRpbmcgZHVyYXRpb24gdG8gZGF0Zcj0FQBZAAAArAUAAA4AAAAvaG9tZS9ydW5u +ZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90 +aW1lLTAuMy4zNC9zcmMvb2Zmc2V0X2RhdGVfdGltZS5yc3RpbWVzdGFtcHJlc3VsdGluZyB2YWx1 +ZSBpcyBvdXQgb2YgcmFuZ2UAAACI9RUAZQAAAGoFAAAWAAAAKCkAAGludGVybmFsIGVycm9yOiBl +bnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAALPYVACoAAABOb25lU29tZTIMAAAEAAAABAAAADMM +AAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2Qy +MmJiYTE1MDAxZi9iYXNlNjQtMC4yMS43L3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJwb3NlL2RlY29k +ZV9zdWZmaXgucnMAePYVAHsAAAAdAAAAGQAAAHj2FQB7AAAAmgAAAAkAAABJbXBvc3NpYmxlOiBt +dXN0IG9ubHkgaGF2ZSAwIHRvIDggaW5wdXQgYnl0ZXMgaW4gbGFzdCBjaHVuaywgd2l0aCBubyBp +bnZhbGlkIGxlbmd0aHMU9xUAVAAAAHj2FQB7AAAAhQAAAA4AAAAvaG9tZS9ydW5uZXIvLmNhcmdv +L3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4y +MS43L3NyYy9lbmNvZGUucnMAAACA9xUAXQAAAIoAAAAJAAAASW52YWxpZCBieXRlICwgb2Zmc2V0 +IC4A8PcVAA0AAAD99xUACQAAAAb4FQABAAAARW5jb2RlZCB0ZXh0IGNhbm5vdCBoYXZlIGEgNi1i +aXQgcmVtYWluZGVyLgAg+BUAKwAAAEludmFsaWQgbGFzdCBzeW1ib2wgVPgVABQAAAD99xUACQAA +AAb4FQABAAAASW52YWxpZCBwYWRkaW5nAID4FQAPAEGg8dcAC7UVCAAAABAAAAAYAAAAAAAAACAA +AAAoAAAAMAAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUANAwA +AAAAAAABAAAANQwAAFRyeUZyb21TbGljZUVycm9yAAAANgwAAAQAAAAEAAAANwwAAC9ob21lL3J1 +bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFm +L2Jhc2U2NC0wLjIxLjcvc3JjL2VuZ2luZS9nZW5lcmFsX3B1cnBvc2UvZGVjb2RlLnJzHPkVAHQA +AAByAAAAKQAAABz5FQB0AAAAcwAAAC8AAAAc+RUAdAAAAHYAAAAhAAAAHPkVAHQAAAB5AAAAJgAA +ABz5FQB0AAAAfAAAACEAAAAc+RUAdAAAAH8AAAAmAAAAHPkVAHQAAACCAAAAIQAAABz5FQB0AAAA +hQAAACYAAAAc+RUAdAAAAIgAAAAhAAAAHPkVAHQAAACLAAAAJgAAABz5FQB0AAAAmQAAABsAAAAc ++RUAdAAAAJ0AAAAZAAAAHPkVAHQAAACwAAAAEwAAABz5FQB0AAAAswAAABgAAAAc+RUAdAAAANoA +AAAfAAAAHPkVAHQAAADgAAAAHwAAABz5FQB0AAAA6QAAAB8AAAAc+RUAdAAAAPIAAAAfAAAAHPkV +AHQAAAD7AAAAHwAAABz5FQB0AAAABAEAAB8AAAAc+RUAdAAAAA0BAAAfAAAAHPkVAHQAAAAWAQAA +HwAAABz5FQB0AAAANgEAAAsAAAAc+RUAdAAAADYBAAASAAAAHPkVAHQAAAA9AQAACwAAABz5FQB0 +AAAAPQEAABEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi9iYXNlNjQtMC4yMS43L3NyYy9lbmdpbmUvZ2VuZXJhbF9wdXJw +b3NlL21vZC5ycwAAADD7FQBxAAAAlgAAAA0AAAAw+xUAcQAAAJgAAABAAAAAMPsVAHEAAACXAAAA +DQAAADD7FQBxAAAAmgAAAA0AAAAw+xUAcQAAAJ4AAAANAAAAMPsVAHEAAACfAAAADQAAADD7FQBx +AAAAhwAAACUAAAAw+xUAcQAAAIgAAAArAAAAMPsVAHEAAACKAAAAMgAAADD7FQBxAAAAigAAAA0A +AAAw+xUAcQAAAIwAAAAqAAAAMPsVAHEAAACLAAAADQAAADD7FQBxAAAAjgAAACoAAAAw+xUAcQAA +AI0AAAANAAAAMPsVAHEAAACPAAAADQAAADD7FQBxAAAAQAAAABsAAAAw+xUAcQAAAEIAAAAgAAAA +MPsVAHEAAABMAAAANgAAADD7FQBxAAAATgAAABEAAAAw+xUAcQAAAE8AAAARAAAAMPsVAHEAAABQ +AAAAEQAAADD7FQBxAAAAUQAAABEAAAAw+xUAcQAAAFIAAAARAAAAMPsVAHEAAABTAAAAEQAAADD7 +FQBxAAAAVAAAABEAAAAw+xUAcQAAAFUAAAARAAAAMPsVAHEAAABXAAAANgAAADD7FQBxAAAAWQAA +ABEAAAAw+xUAcQAAAFoAAAARAAAAMPsVAHEAAABbAAAAEQAAADD7FQBxAAAAXAAAABEAAAAw+xUA +cQAAAF0AAAARAAAAMPsVAHEAAABeAAAAEQAAADD7FQBxAAAAXwAAABEAAAAw+xUAcQAAAGAAAAAR +AAAAMPsVAHEAAABiAAAANgAAADD7FQBxAAAAZAAAABEAAAAw+xUAcQAAAGUAAAARAAAAMPsVAHEA +AABmAAAAEQAAADD7FQBxAAAAZwAAABEAAAAw+xUAcQAAAGgAAAARAAAAMPsVAHEAAABpAAAAEQAA +ADD7FQBxAAAAagAAABEAAAAw+xUAcQAAAGsAAAARAAAAMPsVAHEAAABtAAAANgAAADD7FQBxAAAA +bwAAABEAAAAw+xUAcQAAAHAAAAARAAAAMPsVAHEAAABxAAAAEQAAADD7FQBxAAAAcgAAABEAAAAw ++xUAcQAAAHMAAAARAAAAMPsVAHEAAAB0AAAAEQAAADD7FQBxAAAAdQAAABEAAAAw+xUAcQAAAHYA +AAARAAAAMPsVAHEAAADlAAAAGQAAADD7FQBxAAAA5QAAACoAAABjYWxsZWQgYFJlc3VsdDo6dW53 +cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlADgMAAAAAAAAAQAAADkMAAAvcnVzdGMvYWVkZDE3M2Ey +YzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9zeW5jLnJz +AAAAUP8VAEkAAABiBwAAKQAAAExheW91dEVycm9yY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2Nh +bCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbgAAADoMAAAAAAAAAQAA +AMEGAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJy +YXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzABAAFgBPAAAABgEAABoAAAAvcnVzdGMvYWVkZDE3 +M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9jb2xs +ZWN0aW9ucy9idHJlZS9ub2RlLnJzYXNzZXJ0aW9uIGZhaWxlZDogc3JjLmxlbigpID09IGRzdC5s +ZW4oKQBwABYAWwAAAC8HAAAFAAAAOwwAAAQAAAAEAAAAPAwAAE5vbmVTb21lPQwAAAQAAAAEAAAA +PgwAAD0MAAAEAAAABAAAAD8MAABtaWQgPiBsZW4AAAA8ARYACQAAAGF0dGVtcHQgdG8gam9pbiBp +bnRvIGNvbGxlY3Rpb24gd2l0aCBsZW4gPiB1c2l6ZTo6TUFYL3J1c3RjL2FlZGQxNzNhMmMwODZl +NTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvc3RyLnJzAAAAhQEW +AEgAAACbAAAACgAAAIUBFgBIAAAAsgAAABYAAABADAAABAAAAAQAAAA/DAAAVXRmOEVycm9ydmFs +aWRfdXBfdG9BDAAABAAAAAQAAABCDAAAZXJyb3JfbGVuAAAAQQwAAAQAAAAEAAAAOwoAAC9ydXN0 +Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvY29yZS9z +cmMvY2hhci9tZXRob2RzLnJzQAIWAFAAAAAFBwAADQAAAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQg +TG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAEMMAAAAAAAA +AQAAAMEGAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9s +aWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAPgCFgBPAAAABgEAABoAQeCG2AAL+QxEDAAA +L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJi +YmExNTAwMWYvcmFuZC0wLjguNS9zcmMvcm5ncy90aHJlYWQucnNjb3VsZCBub3QgaW5pdGlhbGl6 +ZSB0aHJlYWRfcm5nOiDDAxYAIQAAAGQDFgBfAAAASAAAABEAAAAvaG9tZS9ydW5uZXIvLmNhcmdv +L3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYW5kX2NoYWNo +YS0wLjMuMS9zcmMvZ3V0cy5ycwD8AxYAXwAAAKQAAAAnAAAAL2hvbWUvcnVubmVyLy5jYXJnby9y +ZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFuZF9jaGFjaGEt +MC4zLjEvc3JjL2d1dHMucnMABAAAAGwEFgBfAAAA5gAAAAUAAABkZXNjcmlwdGlvbigpIGlzIGRl +cHJlY2F0ZWQ7IHVzZSBEaXNwbGF5RXJyb3IgeyBpbm5lcjogIH0AAAAIBRYADwAAABcFFgACAAAA +4AQWAAAAAABHDAAABAAAAAQAAAAsDAAARwwAAAQAAAAEAAAASAwAACwMAAA0BRYASQwAAEoMAABL +DAAATAwAAE0MAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMu +aW8tNmYxN2QyMmJiYTE1MDAxZi9yYW5kX2NvcmUtMC42LjQvc3JjL2ltcGxzLnJzAABwBRYAXgAA +AFwAAAANAAAAcAUWAF4AAABcAAAAQAAAAHAFFgBeAAAAXAAAAE8AAABwBRYAXgAAAFwAAAAaAAAA +Y2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRl +ciBkZXN0cnVjdGlvbgAATgwAAAAAAAABAAAAwQYAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMy +YjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAaAYW +AE8AAAAGAQAAGgAAAEVycm9yb3NfZXJyb3IAAABPDAAABAAAAAQAAABQDAAAZGVzY3JpcHRpb24A +TwwAAAgAAAAEAAAAUQwAAGludGVybmFsX2NvZGUAAABPDAAABAAAAAQAAABSDAAAdW5rbm93bl9j +b2RlT1MgRXJyb3I6IAAAMAcWAAoAAABVbmtub3duIEVycm9yOiAARAcWAA8AAABnZXRyYW5kb206 +IHRoaXMgdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWRlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3Np +dGl2ZSB2YWx1ZXVuZXhwZWN0ZWQgc2l0dWF0aW9uU2VjUmFuZG9tQ29weUJ5dGVzOiBpT1MgU2Vj +dXJpdHkgZnJhbWV3b3JrIGZhaWx1cmVSdGxHZW5SYW5kb206IFdpbmRvd3Mgc3lzdGVtIGZ1bmN0 +aW9uIGZhaWx1cmVSRFJBTkQ6IGZhaWxlZCBtdWx0aXBsZSB0aW1lczogQ1BVIGlzc3VlIGxpa2Vs +eVJEUkFORDogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZFdlYiBDcnlwdG8gQVBJIGlzIHVuYXZh +aWxhYmxlQ2FsbGluZyBXZWIgQVBJIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgZmFpbGVkcmFuZFNl +Y3VyZTogVnhXb3JrcyBSTkcgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZE5vZGUuanMgY3J5cHRv +IENvbW1vbkpTIG1vZHVsZSBpcyB1bmF2YWlsYWJsZUNhbGxpbmcgTm9kZS5qcyBBUEkgY3J5cHRv +LnJhbmRvbUZpbGxTeW5jIGZhaWxlZE5vZGUuanMgRVMgbW9kdWxlcyBhcmUgbm90IGRpcmVjdGx5 +IHN1cHBvcnRlZCwgc2VlIGh0dHBzOi8vZG9jcy5ycy9nZXRyYW5kb20jbm9kZWpzLWVzLW1vZHVs +ZS1zdXBwb3J0AAAAUwwAAGNyeXB0bwAAJwAAACYAAAAUAAAAMgAAAC0AAAAvAAAAIQAAAB0AAAAt +AEHkk9gACzMxAAAALQAAADAAAABlAAAAXAcWAIMHFgCpBxYAvQcWAO8HFgAcCBYASwgWAGwIFgCJ +CBYAQaCU2AALxRO2CBYA5wgWABQJFgBECRYAVAwAAAwAAAAEAAAAVQwAAFYMAACkAAAAVwwAAAgA +AAAEAAAAWAwAAFkMAABFbXB0eUludmFsaWREaWdpdFBvc092ZXJmbG93TmVnT3ZlcmZsb3daZXJv +AFcMAAAIAAAABAAAAFoMAAAFAAAADAAAAAsAAAALAAAABAAAAFwKFgBhChYAbQoWAHgKFgCDChYA +KCkAAFsMAAAEAAAABAAAAMgAAABbDAAABAAAAAQAAACLAQAATm9uZVNvbWVkZXNjcmlwdGlvbigp +IGlzIGRlcHJlY2F0ZWQ7IHVzZSBEaXNwbGF5L3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZk +Mzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tb2QucnMAAAAUCxYATQAA +AO8JAAArAAAAYQwAAAEAAAABAAAAYgwAAGEMAAABAAAAAQAAAGMMAABiDAAAdAsWAGQMAABlDAAA +ZgwAAGQMAABnDAAAYQwAAAEAAAABAAAAaAwAAGEMAAABAAAAAQAAAGkMAABoDAAAsAsWAGQMAABq +DAAAZgwAAGQMAABnDAAAawwAAAAAAAABAAAAbAwAAGsMAAAAAAAAAQAAAG0MAABsDAAA7AsWAG4M +AABvDAAAcAwAAG4MAABxDAAAYQwAAAEAAAABAAAAcgwAAGEMAAABAAAAAQAAAHMMAAByDAAAKAwW +AGQMAAB0DAAAZgwAAGQMAABnDAAAYQwAAAEAAAABAAAAdQwAAGEMAAABAAAAAQAAAHYMAAB1DAAA +ZAwWAGQMAAB3DAAAZgwAAGQMAABnDAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0 +M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwCgDBYATwAAALgB +AAA3AAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL3J1bWEtNTIwMWU3M2Y1Zjkx +N2M3Ny80YzAwYmQwL2NyYXRlcy9ydW1hLWlkZW50aWZpZXJzLXZhbGlkYXRpb24vc3JjL3VzZXJf +aWQucnMAAAAADRYAcQAAAAUAAAAXAAAAL2hvbWUvcnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRz +L3J1bWEtNTIwMWU3M2Y1ZjkxN2M3Ny80YzAwYmQwL2NyYXRlcy9ydW1hLWlkZW50aWZpZXJzLXZh +bGlkYXRpb24vc3JjL2xpYi5ycwAAAIQNFgBtAAAAKgAAAB4AAABpZGVudGlmaWVyIG9yIHJlcXVp +cmVkIHBhcnQgb2YgaXQgaXMgZW1wdHlpZGVudGlmaWVyIGNvbnRhaW5zIGludmFsaWQgY2hhcmFj +dGVyc2ludmFsaWQgbWF0cml4IElEOiAAVA4WABMAAABpbnZhbGlkIG1hdHJpeC50byBVUkk6IABw +DhYAFwAAAGludmFsaWQgbWF0cml4IFVSSTogkA4WABQAAABpbnZhbGlkIE1hdHJpeCBDb250ZW50 +IFVSSTogrA4WABwAAABpbnZhbGlkIFZvSVAgdmVyc2lvbiBJRDogAAAA0A4WABkAAABzZXJ2ZXIg +bmFtZSBpcyBub3QgYSB2YWxpZCBJUCBhZGRyZXNzIG9yIGRvbWFpbiBuYW1laW52YWxpZCBVVEYt +OElEIGV4Y2VlZHMgMjU1IGJ5dGVzcmVxdWlyZWQgY29sb24gaXMgbWlzc2luZ2xlYWRpbmcgc2ln +aWwgaXMgaW5jb3JyZWN0IG9yIG1pc3NpbmdXcm9uZ1NjaGVtYU1pc3NpbmdTbGFzaE1lZGlhSWRN +YWxmb3JtZWRTZXJ2ZXJOYW1lTWFsZm9ybWVkTVhDIFVSSSBzY2hlbWEgd2FzIG5vdCBteGM6Ly9N +WEMgVVJJIGRvZXMgbm90IGhhdmUgZmlyc3Qgc2xhc2hNZWRpYSBJZGVudGlmaWVyIG1hbGZvcm1l +ZCwgaW52YWxpZCBjaGFyYWN0ZXJzaW52YWxpZCBTZXJ2ZXIgTmFtZUludmFsaWRQYXJ0c051bWJl +ck1pc3NpbmdSb29tTm9JZGVudGlmaWVyVG9vTWFueUlkZW50aWZpZXJzVW5rbm93bklkZW50aWZp +ZXJVbmtub3duSWRlbnRpZmllclBhaXJVbmtub3duVHlwZWludmFsaWQgbnVtYmVyIG9mIHBhcnRz +bWlzc2luZyByb29tIElEIG9yIGFsaWFzbm8gaWRlbnRpZmllcnRvbyBtYW55IGlkZW50aWZpZXJz +dW5rbm93biBpZGVudGlmaWVydW5rbm93biBpZGVudGlmaWVyIHBhaXJ1bmtub3duIGlkZW50aWZp +ZXIgdHlwZUludmFsaWRVcmxXcm9uZ0Jhc2VVcmxVbmtub3duQXJndW1lbnRnaXZlbiBzdHJpbmcg +aXMgbm90IGEgdmFsaWQgVVJMYmFzZSBVUkwgaXMgbm90IGh0dHBzOi8vbWF0cml4LnRvLyMvdW5r +bm93biBhZGRpdGlvbmFsIGFyZ3VtZW50V3JvbmdTY2hlbWVUb29NYW55QWN0aW9uc1Vua25vd25R +dWVyeUl0ZW1zY2hlbWUgaXMgbm90ICdtYXRyaXg6J3RvbyBtYW55IGFjdGlvbnN1bmtub3duIHF1 +ZXJ5IGl0ZW1Xcm9uZ1VpbnRWYWx1ZVVJbnQgdmFsdWUgaXMgbm90IDAAAAsAAAAMAAAAEAAAABMA +AACHDxYAkg8WAJ4PFgCuDxYAEgAAAAsAAAAMAAAAEgAAABEAAAAVAAAACwAAAEAQFgBSEBYAXRAW +AGkQFgB7EBYAjBAWAKEQFgAKAAAADAAAAA8AAAA8ERYARhEWAFIRFgALAAAADgAAABAAAAC/ERYA +yhEWANgRFgAuLS9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3 +L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMAAADOEhYATwAAALgBAAA3AAAAL2hvbWUv +cnVubmVyLy5jYXJnby9naXQvY2hlY2tvdXRzL3J1bWEtNTIwMWU3M2Y1ZjkxN2M3Ny80YzAwYmQw +L2NyYXRlcy9ydW1hLWlkZW50aWZpZXJzLXZhbGlkYXRpb24vc3JjL3NlcnZlcl9uYW1lLnJzAAAA +MBMWAHUAAAAZAAAAFwAAADATFgB1AAAAEAAAABcAAAAwExYAdQAAACYAAAANAAAAMBMWAHUAAAAo +AAAAGwBB8KfYAAt3YXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAAAwUFgAAAAAAb3V0IG9mIHJh +bmdlIGludGVncmFsIHR5cGUgY29udmVyc2lvbiBhdHRlbXB0ZWRUcnlGcm9tSW50RXJyb3IAAAAA +AAABAAAAAADg/////////x8AQfCo2AALmSYvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3Ny +Yy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9qc19pbnQtMC4yLjIvc3JjL3VpbnQu +cnMAAHAUFgBaAAAABgIAAAEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRl +eC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi90cmFjaW5nLWNvcmUtMC4xLjMyL3NyYy9kaXNw +YXRjaGVyLnJzANwUFgBnAAAAawMAACYAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFu +IGBFcnJgIHZhbHVlAHoMAAAIAAAABAAAAHsMAAB8DAAACAAAAAQAAAB7DAAAfQwAAAgAAAAEAAAA +ewwAAH8MAAAMAAAABAAAALYBAACADAAAgQwAAElkZW50aWZpZXIoKcgVFgALAAAA0xUWAAEAAAAv +aG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJi +YTE1MDAxZi90cmFjaW5nLWNvcmUtMC4xLjMyL3NyYy9jYWxsc2l0ZS5yc0F0dGVtcHRlZCB0byBy +ZWdpc3RlciBhIGBEZWZhdWx0Q2FsbHNpdGVgIHRoYXQgYWxyZWFkeSBleGlzdHMhIFRoaXMgd2ls +bCBjYXVzZSBhbiBpbmZpbml0ZSBsb29wIHdoZW4gYXR0ZW1wdGluZyB0byByZWFkIGZyb20gdGhl +IGNhbGxzaXRlIGNhY2hlLiBUaGlzIGlzIGxpa2VseSBhIGJ1ZyEgWW91IHNob3VsZCBvbmx5IG5l +ZWQgdG8gY2FsbCBgRGVmYXVsdENhbGxzaXRlOjpyZWdpc3RlcmAgb25jZSBwZXIgYERlZmF1bHRD +YWxsc2l0ZWAuSRYWAPsAAADkFRYAZQAAAL0BAAANAAAA5BUWAGUAAADeAQAAMgAAAOQVFgBlAAAA +JQIAADcAAADkFRYAZQAAACkCAAA+AAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXiM +FxYAIAAAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9s +aWJyYXJ5L3N0ZC9zcmMvc3lzL3BhbC93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL211dGV4LnJz +ALUXFgBqAAAAFAAAAAkAAABQb2lzb25FcnJvcgD/////L3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4 +YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL3N5cy9wYWwvd2FzbS8uLi91 +bnN1cHBvcnRlZC9sb2Nrcy9yd2xvY2sucnMAQBgWAGsAAAA/AAAACQAAAIUMAAAYAAAABAAAAHIB +AABNZXRhZGF0YW5hbWWFDAAACAAAAAQAAACqCgAAdGFyZ2V0bGV2ZWwAhQwAAAQAAAAEAAAAhgwA +AG1vZHVsZV9wYXRobGluZQCFDAAABAAAAAQAAACHDAAAZmlsZbQXFgAAAAAAbG9jYXRpb246AAAA +tBcWAAAAAAA4GRYAAQAAAGZpZWxkc2NhbGxzaXRlAACFDAAACAAAAAQAAACIDAAAa2luZIkMAAAB +AAAAAQAAAIoMAABLaW5kKEVWRU5UU1BBTkhJTlQpIHwgVFJBQ0VERUJVR0lORk9XQVJORVJST1JM +ZXZlbAAAhQwAAAQAAAAEAAAAiwwAAFRyYWNlRGVidWdJbmZvV2FybkVycm9yAAUAAAAFAAAABAAA +AAQAAAAFAAAAxBkWAMkZFgDOGRYA0hkWANYZFgCMDAAAAAAAAAEAAACNDAAAjgwAAI8MAACQDAAA +kQwAAJIMAACTDAAAlAwAAJUMAACVDAAAlQwAAJYMAACXDAAAmAwAAJkMAACaDAAAAAAAAFwaFgAE +GhYAU2V0R2xvYmFsRGVmYXVsdEVycm9yYSBnbG9iYWwgZGVmYXVsdCB0cmFjZSBkaXNwYXRjaGVy +IGhhcyBhbHJlYWR5IGJlZW4gc2V0AHEaFgA2AAAAmwwAAAgAAAAEAAAAqgoAAC9ob21lL3J1bm5l +ci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3Ry +YWNpbmctY29yZS0wLjEuMzIvc3JjL2Rpc3BhdGNoZXIucnMAwBoWAGcAAABrAwAAJgAAAC9ob21l +L3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUw +MDFmL3RyYWNpbmctY29yZS0wLjEuMzIvc3JjL2ZpZWxkLnJzAAA4GxYAYgAAAAQDAAAJAAAARmll +bGRTZXRuYW1lcwAAAJwMAAAIAAAABAAAAJ0MAABjYWxsc2l0ZZwMAAAIAAAABAAAAIgMAABWYWx1 +ZVNldJwMAAAIAAAABAAAAJ4MAACfDAAAoAwAAKEMAACiDAAAowwAAKQMAAClDAAApgwAAKcMAAAE +AAAABAAAAKgMAACnDAAABAAAAAQAAACpDAAApwwAAAQAAAAEAAAAqQwAAKcMAAAEAAAABAAAAKoM +AABBcmMgY291bnRlciBvdmVyZmxvd1wcFgAUAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJi +NjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvc3luYy5ycwAAAHgcFgBJAAAA +LgYAAA0AAAAcHBYAAAAAAHgcFgBJAAAA3AoAAA0AAACnDAAADAAAAAQAAACrDAAArAwAAKcMAAAM +AAAABAAAAK0MAACuDAAATGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVk +AAAUHRYAKgAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5p +by02ZjE3ZDIyYmJhMTUwMDFmL29uY2VfY2VsbC0xLjE5LjAvc3JjL2xpYi5ycwAAAEgdFgBdAAAA +HwUAABkAAABzcGFuIElEcyBtdXN0IGJlID4gMC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkv +c3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3RyYWNpbmctY29yZS0wLjEuMzIv +c3JjL3NwYW4ucnMAAADMHRYAYQAAAEYAAAAfAAAArwwAAAQAAAAEAAAAsAwAAK8MAAAEAAAABAAA +ALEMAACyDAAACAAAAAgAAABWCgAAsgwAAAgAAAAIAAAAswwAALIMAAAIAAAACAAAALQMAACyDAAA +EAAAAAgAAAC1DAAAsgwAABAAAAAIAAAAtgwAALcMAAABAAAAAQAAALgMAACvDAAACAAAAAQAAACq +CgAArwwAAAgAAAAEAAAAXgoAALkMAAAEAAAABAAAALoMAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3Jl +Z2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9vbmNlX2NlbGwtMS4x +OS4wL3NyYy9pbXBfc3RkLnJzAAAA8B4WAGEAAAChAAAANgAAAAEAAADwHhYAYQAAAJsAAAAJAAAA +SW52YWxpZEhlYWRlclZhbHVlZmFpbGVkIHRvIHBhcnNlIGhlYWRlciB2YWx1ZWZhaWxlZCB0byBj +b252ZXJ0IGhlYWRlciB0byBhIHN0ckludmFsaWRTdGF0dXNDb2RlaW52YWxpZCBzdGF0dXMgY29k +ZWludmFsaWQgdXJpIGNoYXJhY3RlcmludmFsaWQgc2NoZW1laW52YWxpZCBhdXRob3JpdHlpbnZh +bGlkIHBvcnRpbnZhbGlkIGZvcm1hdHNjaGVtZSBtaXNzaW5nYXV0aG9yaXR5IG1pc3NpbmdwYXRo +IG1pc3Npbmd1cmkgdG9vIGxvbmdlbXB0eSBzdHJpbmdzY2hlbWUgdG9vIGxvbmdJbnZhbGlkVXJp +AAAAuwwAAAQAAAAEAAAAvAwAAEludmFsaWRVcmlDaGFySW52YWxpZFNjaGVtZUludmFsaWRBdXRo +b3JpdHlJbnZhbGlkUG9ydEludmFsaWRGb3JtYXRTY2hlbWVNaXNzaW5nQXV0aG9yaXR5TWlzc2lu +Z1BhdGhBbmRRdWVyeU1pc3NpbmdUb29Mb25nRW1wdHlTY2hlbWVUb29Mb25nDgAAAA0AAAAQAAAA +CwAAAA0AAAANAAAAEAAAABMAAAAHAAAABQAAAA0AAACoIBYAtiAWAMMgFgDTIBYA3iAWAOsgFgD4 +IBYACCEWABshFgAiIRYAJyEWABUAAAAOAAAAEQAAAAwAAAAOAAAADgAAABEAAAAMAAAADAAAAAwA +AAAPAAAA6x8WAAAgFgAOIBYAHyAWACsgFgA5IBYARyAWAFggFgBkIBYAcCAWAHwgFgBJbnZhbGlk +SGVhZGVyTmFtZWludmFsaWQgSFRUUCBoZWFkZXIgbmFtZWRlc2NyaXB0aW9uKCkgaXMgZGVwcmVj +YXRlZDsgdXNlIERpc3BsYXlNYXhTaXplUmVhY2hlZG1heCBzaXplIHJlYWNoZWQAvQwAAAAAAAAB +AAAAvgwAAL0MAAAAAAAAAQAAAL8MAAC+DAAAVCIWAMAMAADBDAAAwgwAAMMMAADEDAAAvQwAAAAA +AAABAAAAxQwAAL0MAAAAAAAAAQAAAMYMAADFDAAAkCIWAMAMAADHDAAAwgwAAMgMAADEDAAAyQwA +AAEAAAABAAAAygwAAMkMAAABAAAAAQAAAMsMAADKDAAAzCIWAMwMAADNDAAAzgwAAM8MAADQDAAA +yQwAAAEAAAABAAAA0QwAAMkMAAABAAAAAQAAANIMAADRDAAACCMWAMwMAADTDAAAzgwAAM8MAADQ +DAAAvQwAAAAAAAABAAAA1AwAAL0MAAAAAAAAAQAAANUMAADUDAAARCMWAMAMAADWDAAAwgwAANcM +AADEDAAAvQwAAAAAAAABAAAA2AwAAL0MAAAAAAAAAQAAANkMAADYDAAAgCMWAMAMAADaDAAAwgwA +ANsMAADEDAAAvQwAAAAAAAABAAAA3AwAAL0MAAAAAAAAAQAAAN0MAADcDAAAvCMWAMAMAADeDAAA +wgwAAMAMAADEDAAASW52YWxpZFVyaQAA3wwAAAQAAAAEAAAAvAwAAEludmFsaWRVcmlQYXJ0cwDf +DAAABAAAAAQAAADgDAAAZCIWAKAiFgDcIhYAGCMWAFQjFgCQIxYAzCMWAEludmFsaWRNZXRob2Rp +bnZhbGlkIEhUVFAgbWV0aG9kL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRm +OTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJz +cCQWAGAAAABwAQAANgAAAGFzc2VydGlvbiBmYWlsZWQ6IGlkeCA8IENBUEFDSVRZL3J1c3RjL2Fl +ZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMv +Y29sbGVjdGlvbnMvYnRyZWUvbm9kZS5ycwAAJRYAWwAAAJcCAAAJAAAAYXNzZXJ0aW9uIGZhaWxl +ZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAxACUWAFsAAACvAgAACQAAAAAlFgBbAAAA +swIAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigpACUWAFsAAAAv +BwAABQAAAAAlFgBbAAAArwQAACMAAAAAJRYAWwAAALMEAAAjAAAAACUWAFsAAADvBAAAJAAAAGFz +c2VydGlvbiBmYWlsZWQ6IGVkZ2UuaGVpZ2h0ID09IHNlbGYubm9kZS5oZWlnaHQgLSAxAAAAACUW +AFsAAADwAwAACQAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYy +MWE3L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAGwmFgBf +AAAAWQIAADAAAAB1bGxydWVhbHNlaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUg +Y29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3 +ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvZGUucnMOJxYAXgAAAJoEAAAiAAAA +DicWAF4AAACQBAAAJgBBls/YAAvRJfA/AAAAAAAAJEAAAAAAAABZQAAAAAAAQI9AAAAAAACIw0AA +AAAAAGr4QAAAAACAhC5BAAAAANASY0EAAAAAhNeXQQAAAABlzc1BAAAAIF+gAkIAAADodkg3QgAA +AKKUGm1CAABA5ZwwokIAAJAexLzWQgAANCb1awxDAIDgN3nDQUMAoNiFVzR2QwDITmdtwatDAD2R +YORY4UNAjLV4Ha8VRFDv4tbkGktEktVNBs/wgET2SuHHAi21RLSd2XlDeOpEkQIoLCqLIEU1AzK3 +9K1URQKE/uRx2YlFgRIfL+cnwEUh1+b64DH0ReqMoDlZPilGJLAIiO+NX0YXbgW1tbiTRpzJRiLj +pshGA3zY6pvQ/kaCTcdyYUIzR+Mgec/5EmhHG2lXQ7gXnkexoRYq087SRx1KnPSHggdIpVzD8Slj +PUjnGRo3+l1ySGGg4MR49aZIecgY9tay3EhMfc9Zxu8RSZ5cQ/C3a0ZJxjNU7KUGfElcoLSzJ4Sx +SXPIoaAx5eVJjzrKCH5eG0qaZH7FDhtRSsD93XbSYYVKMH2VFEe6uko+bt1sbLTwSs7JFIiH4SRL +QfwZaukZWkupPVDiMVCQSxNN5Fo+ZMRLV2Cd8U19+UttuARuodwvTETzwuTk6WNMFbDzHV7kmEwb +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 +BnqezoUkfPaHGEZCp1l8+lTPa4kIkHw4KsPGqwrEfMf0c7hWDfl8+PGQZqxQL307lxrAa5JjfQo9 +IbAGd5h9TIwpXMiUzn2w95k5/RwDfpx1AIg85Dd+A5MAqkvdbX7iW0BKT6qiftpy0BzjVNd+kI8E +5BsqDX+62YJuUTpCfymQI8rlyHZ/M3SsPB97rH+gyOuF88zhf+EMAAAAAAAAAQAAAKEBAADlDAAA +DAAAAAQAAADmDAAA5wwAAOkGAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4g +ZXJyb3IgdW5leHBlY3RlZGx5AOgMAAAAAAAAAQAAAOkMAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1 +NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAqDEW +AEsAAAAzCgAADgAAAC9ydXN0Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYy +MWE3L2xpYnJhcnkvY29yZS9zcmMvc3RyL3BhdHRlcm4ucnMABDIWAE8AAAAOBgAAFAAAAAQyFgBP +AAAADgYAACEAAAAEMhYATwAAAAIGAAAUAAAABDIWAE8AAAACBgAAIQAAAEVycm9yYXNzZXJ0aW9u +IGZhaWxlZDogc2VsZi5pc19jaGFyX2JvdW5kYXJ5KG5ld19sZW4pAAAAqDEWAEsAAAB0BQAADQAA +AAQyFgBPAAAAjwQAACQAAABFT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3RFT0Ygd2hpbGUgcGFyc2lu +ZyBhbiBvYmplY3RFT0Ygd2hpbGUgcGFyc2luZyBhIHN0cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEg +dmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4 +cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlkIGVzY2FwZWludmFs +aWQgbnVtYmVybnVtYmVyIG91dCBvZiByYW5nZWludmFsaWQgdW5pY29kZSBjb2RlIHBvaW50Y29u +dHJvbCBjaGFyYWN0ZXIgKFx1MDAwMC1cdTAwMUYpIGZvdW5kIHdoaWxlIHBhcnNpbmcgYSBzdHJp +bmdrZXkgbXVzdCBiZSBhIHN0cmluZ2ludmFsaWQgdmFsdWU6IGV4cGVjdGVkIGtleSB0byBiZSBh +IG51bWJlciBpbiBxdW90ZXNmbG9hdCBrZXkgbXVzdCBiZSBmaW5pdGUgKGdvdCBOYU4gb3IgKy8t +aW5mKWxvbmUgbGVhZGluZyBzdXJyb2dhdGUgaW4gaGV4IGVzY2FwZXRyYWlsaW5nIGNvbW1hdHJh +aWxpbmcgY2hhcmFjdGVyc3VuZXhwZWN0ZWQgZW5kIG9mIGhleCBlc2NhcGVyZWN1cnNpb24gbGlt +aXQgZXhjZWVkZWQgYXQgbGluZSAgY29sdW1uIAAAAAQyFgAAAAAAIDUWAAkAAAApNRYACAAAAEVy +cm9yKCwgbGluZTogLCBjb2x1bW46ICkAAABMNRYABgAAAFI1FgAIAAAAWjUWAAoAAABkNRYAAQAA +AGludmFsaWQgdHlwZTogLCBleHBlY3RlZCAAAACINRYADgAAAJY1FgALAAAAaW52YWxpZCB2YWx1 +ZTogALQ1FgAPAAAAljUWAAsAAABmbG9hdGluZyBwb2ludCBgYAAAANQ1FgAQAAAA5DUWAAEAAABu +dWxsL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdk +MjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAuMTE1L3NyYy9lcnJvci5ycwAAAPw1FgBhAAAA9wEA +ACEAAAD8NRYAYQAAAPsBAAAMAAAA/DUWAGEAAAACAgAAIQAAAPw1FgBhAAAACwIAACoAAAD8NRYA +YQAAAA8CAAAsAAAAZmFpbGVkIHRvIHdyaXRlIHdob2xlIGJ1ZmZlcrA2FgAcAAAAFwAAAC9ydXN0 +Yy9hZWRkMTczYTJjMDg2ZTU1OGMyYjY2ZDM3NDNiMzQ0Zjk3NzYyMWE3L2xpYnJhcnkvc3RkL3Ny +Yy9pby9tb2QucnMAAADYNhYASQAAALEGAAAkAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5y +ZWFjaGFibGUgY29kZS9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRl +cy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4wLjExNS9zcmMvc2VyLnJzAFw3FgBf +AAAAogIAACoAAABudWxsZmFsc2V0cnVle30KTnVsbEJvb2woKQAA4DcWAAUAAADlNxYAAQAAAFN0 +cmluZygA+DcWAAcAAADlNxYAAQAAAEFycmF5IE9iamVjdCBmbXQgZXJyb3IvaG9tZS9ydW5uZXIv +LmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zZXJk +ZV9qc29uLTEuMC4xMTUvc3JjL3ZhbHVlL3Nlci5ycyRzZXJkZV9qc29uOjpwcml2YXRlOjpSYXdW +YWx1ZWludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUAAAAmOBYAZQAAALkB +AAAuAAAAcmF3IHZhbHVlIHdhcyBub3QgZW1pdHRlZAAAACY4FgBlAAAAqAIAAB4AAABpbnRlcm5h +bCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlL2hvbWUvcnVubmVyLy5jYXJnby9yZWdp +c3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvc2VyZGVfanNvbi0xLjAu +MTE1L3NyYy9zZXIucnMAODkWAF8AAAD6AQAAKgAAADg5FgBfAAAACAIAACoAAAA4ORYAXwAAAH0C +AAAqAAAAODkWAF8AAACiAgAAKgAAADg5FgBfAAAACwYAABIAAABudWxsZmFsc2V0cnVlIlwiXFxc +L1xiXGZcblxyXHQwMTIzNDU2Nzg5YWJjZGVmW10se306ICAKLAo6IAA4ORYAXwAAAC4IAAAzAAAA +ODkWAF8AAAAhCAAAQAAAAHV1dXV1dXV1YnRudWZydXV1dXV1dXV1dXV1dXV1dXV1AAAiAEGg9dgA +CwFcAEHE9tgAC4sDVHJpZWQgdG8gc2hyaW5rIHRvIGEgbGFyZ2VyIGNhcGFjaXR5RDsWACQAAAAv +cnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQzYjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2Fs +bG9jL3NyYy9yYXdfdmVjLnJzcDsWAEwAAADPAQAACQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVn +aXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRlX2pzb24tMS4w +LjExNS9zcmMvcmVhZC5yc8w7FgBgAAAAowEAAB4AAADMOxYAYAAAAMgBAAATAAAAzDsWAGAAAADR +AQAAPgAAAMw7FgBgAAAAzQEAADMAAADMOxYAYAAAANcBAAA6AAAAzDsWAGAAAAAoAgAAEwAAAMw7 +FgBgAAAAQAIAACUAAADMOxYAYAAAALYCAAAdAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB +AQEBAQEAAAEAQYj62AALAQEAQaz72AALvQjMOxYAYAAAAKgDAAAvAAAA//////////////////// +////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg// +/////////////////////////////////woLDA0OD/////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +/////////////////+sMAAAEAAAABAAAAAkHAADrDAAABAAAAAQAAADsDAAAL3J1c3RjL2FlZGQx +NzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvY29s +bGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMA3D4WAF8AAADHAAAAJwAAANw+FgBfAAAAFwIAAC8A +AADcPhYAXwAAAKIAAAAkAAAAYSBtYXBhbnkgdmFsaWQgSlNPTiB2YWx1ZWEgc3RyaW5nIGtleSRz +ZXJkZV9qc29uOjpwcml2YXRlOjpSYXdWYWx1ZQDuDAAAAAAAAAEAAADvDAAA8AwAAAwAAAAEAAAA +8QwAAPIMAADpBgAAJHNlcmRlX2pzb246OnByaXZhdGU6OlJhd1ZhbHVlTnVtYmVyKCkAAPY/FgAH +AAAA/T8WAAEAAABSYXdWYWx1ZbA/FgAAAAAA8wwAABgAAAAEAAAAcgEAAGFueSB2YWxpZCBKU09O +IHZhbHVlMEAWABQAAAByYXcgdmFsdWV1bmV4cGVjdGVkIHJhdyB2YWx1ZS9ob21lL3J1bm5lci8u +Y2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3NlcmRl +X2pzb24tMS4wLjExNS9zcmMvcmF3LnJzaUAWAF8AAAAPAgAATQAAAPQMAAAMAAAABAAAALQCAAD0 +DAAADAAAAAQAAAC1AgAAtAIAANhAFgC5AgAAtwIAAPUMAAC5AgAA9gwAADAwMDEwMjAzMDQwNTA2 +MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQz +NTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYz +NjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5 +MjkzOTQ5NTk2OTc5ODk5aW5mLWluZk5hTgAAAQBB94PZAAvRKiCamZmZmZmZmZmZmZmZmZkZFa5H +4XoUrkfhehSuR+F6FN4kBoGVQ4ts5/up8dJNYhCW1AloImx4eqUsQxzr4jYaq0Nuhhvw+WGE8Gjj +iLX4FCI2WDhJ88e0No3ttaD3xhBqI43ADlKmh1dIr7ya8tcaiE/XZqVBuJ/fOYww4o55FQemEh9R +AS3mspTWJugLLhGkCVHLgWiu1re6vdfZ33wb6jqnojTt8d5flWR54X/9FbvIhej28Cd/GRHqLYGZ +lxH4DdZAvrQMZcKBdklowiUck3HeM5iQcOoBmyuhhpuEFkPBfingpvMhmxVW556vAxI3NTEPzdeF +aSu8idiXstIc+ZBaP9ffNyGJltRGRvUOF/pzSMxF5l/noKtD0tFdchJdhg16PD1mpTSs0rZPyYMd +sZ7XlGOXHlFdI0KSDKGcF8FLed2C337afU+bDgq04xJorFti0ZhkKpblXhcQIDkeU/Digafgtu5E +UbISQLMtGKkmT85STZJYaqeOqJnCVxNBpH6wt3tQJ6rYfdr10PIeNFBlwF/JplK7E8uuxEDCGJCm +6plM1OsOyQ888jaazhOAChHDrVN5sUEZYFC+9rAfZwh0AovcLcFnR7Om/l5aGVKgKTVvsCQ0hp/C +6/5LSBTbGe6Q8lkdkJ5/aIll1jkQXymwtB3D+0yXMqeo1SP2GbK6WV2xNZY9rFsfunfpxBQoYuF9 +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 +wxMQg6RgbjHheFJ8Q+xOCrQYMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgx +OTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3 +NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3 +Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkwLjAA+QwAAAgA +AAAEAAAA+gwAAPsMAAD8DAAAYm9vbGVhbiBgYAAAjGwWAAkAAACVbBYAAQAAAGludGVnZXIgYAAA +AKhsFgAJAAAAlWwWAAEAAABmbG9hdGluZyBwb2ludCBgxGwWABAAAACVbBYAAQAAAGNoYXJhY3Rl +ciBgAORsFgALAAAAlWwWAAEAAABzdHJpbmcgAABtFgAHAAAAYnl0ZSBhcnJheXVuaXQgdmFsdWVP +cHRpb24gdmFsdWVuZXd0eXBlIHN0cnVjdHNlcXVlbmNlbWFwZW51bXVuaXQgdmFyaWFudG5ld3R5 +cGUgdmFyaWFudHR1cGxlIHZhcmlhbnRzdHJ1Y3QgdmFyaWFudGV4cGxpY2l0IHBhbmljL2hvbWUv +cnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAw +MWYvc2VyZGUtMS4wLjE5Ny9zcmMvZGUvbW9kLnJzAACRbRYAXQAAAOUIAAASAAAAlWwWAAEAAACV +bBYAAQAAAGAgb3IgYAAAlWwWAAEAAAAQbhYABgAAAJVsFgABAAAAb25lIG9mICwgAAAAdGwWAAAA +AAAuMAAA/QwAAAgAAAAEAAAA/gwAAP8MAAD9DAAACAAAAAQAAAAADQAAMSBlbGVtZW50IGluIHNl +cXVlbmNlIGVsZW1lbnRzIGluIHNlcXVlbmNlAABcbhYAAAAAAIFuFgAVAAAAMSBlbGVtZW50IGlu +IG1hcCBlbGVtZW50cyBpbiBtYXBcbhYAAAAAALhuFgAQAAAAdW5pdGEgYm9vbGVhbmEgc3RyaW5n +YSBib3Jyb3dlZCBzdHJpbmdzdHJ1Y3QgRHVyYXRpb25hIGJ5dGUgYXJyYXlhbnkgdmFsdWUsICwg +b3Igb3RoZXIgaWdub3JlZCBmaWVsZHMAAABcbhYAAAAAACJvFgACAAAAJG8WABkAAAB1bml0IHZh +cmlhbnQgOjoAWG8WAA0AAABlbxYAAgAAAGFuIGludGVnZXJhIGZsb2F0YSBjaGFyYW4gb3B0aW9u +YWx1bml0IHN0cnVjdGEgc2VxdWVuY2VhIHR1cGxlYSB0dXBsZSBzdHJ1Y3RhbiBlbnVtaTMyaTY0 +dTh1MTZ1MzJ1NjR1c2l6ZQAAAFRyaWVkIHRvIHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eeRv +FgAkAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGli +cmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5ycxBwFgBMAAAAzwEAAAkAAABjYWxsZWQgYFJlc3VsdDo6 +dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAAMNAAAAAAAAAQAAAAQNAABMYXlvdXRFcnJvcgAF +DQAABg0AAAcNAAAIDQAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3Jh +dGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvYnl0ZXMtMS42LjAvc3JjL2J5dGVzLnJzAAAJDQAACg0A +AAsNAAAMDQAADQ0AAA4NAAALDQAADw0AAMRwFgBaAAAAKwQAADIAAADEcBYAWgAAADkEAABJAAAA +EA0AABENAAASDQAAEw0AAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNy +YXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2J5dGVzLTEuNi4wL3NyYy9ieXRlc19tdXQucnNvdmVy +ZmxvdwAAcHEWAF4AAACRAgAANwAAAHBxFgBeAAAAtwIAADgAAAAUDQAAFQ0AABINAAAWDQAAYWR2 +YW5jZSBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgYWR2YW5jaW5nIGJ5IAhyFgAiAAAA +KnIWABIAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8t +NmYxN2QyMmJiYTE1MDAxZi9ieXRlcy0xLjYuMC9zcmMvbGliLnJzTHIWAFgAAACJAAAABQAAAC9o +b21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJh +MTUwMDFmL2pzLXN5cy0wLjMuNjkvc3JjL2xpYi5ycwAAFw0AAHJldHVybiB0aGlzALRyFgBaAAAA +sBgAAAEAAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5n +IG9yIGFmdGVyIGRlc3RydWN0aW9uAAAkDQAAAAAAAAEAAADBBgAAL3J1c3RjL2FlZGQxNzNhMmMw +ODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2Nh +bC5ycwCIcxYATwAAAAYBAAAaAAAAJQ0AAAQAAAAEAAAASQsAAGB1bndyYXBfdGhyb3dgIGZhaWxl +ZGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAFRyaWVk +IHRvIHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eUB0FgAkAAAAL3J1c3RjL2FlZGQxNzNhMmMw +ODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5y +c2x0FgBMAAAAzwEAAAkAAABKc1ZhbHVlKCkAAADIdBYACAAAANB0FgABAAAAbnVsbCBwb2ludGVy +IHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2gg +d291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAAAcmVlbnRyYW50IGluaXQAAFB1 +FgAOAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcvbGli +cmFyeS9jb3JlL3NyYy9jZWxsL29uY2UucnMAAABodRYATQAAANkAAABCAAAAAG92ZXJmbG93IGlu +IER1cmF0aW9uOjpuZXcAAMl1FgAZAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0 +M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy90aW1lLnJz7HUWAEgAAADKAAAAFQAAACwN +AAAEAAAABAAAAC0NAAAuDQAADAAAAAQAAAAvDQAAMA0AADENAAAyDQAADAAAAAQAAAAzDQAANA0A +ADUNAAAuDQAADAAAAAQAAAA2DQAANw0AADgNAAAKQWNjZXNzRXJyb3JsaWJyYXJ5L3N0ZC9zcmMv +dGhyZWFkL21vZC5yc2ZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgdGhyZWFkIElEOiBiaXRzcGFj +ZSBleGhhdXN0ZWTFdhYANwAAAKh2FgAdAAAAmAQAAA0AAABsaWJyYXJ5L3N0ZC9zcmMvc3luYy9s +YXp5X2xvY2sucnMAAAAUdxYAIQAAAKAAAAATAAAAbGlicmFyeS9zdGQvc3JjL2JhY2t0cmFjZS5y +c29wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1kdxYAKAAAACQAAAB1bnN1 +cHBvcnRlZCBiYWNrdHJhY2VkaXNhYmxlZCBiYWNrdHJhY2UASHcWABwAAACKAQAAHQAAADkNAAAQ +AAAABAAAADoNAAA7DQAAUHUWAAAAAABlbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRj +b25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsg +dW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2Vh +ZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5 +IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5 +ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVt +ZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClz +dGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRh +dGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBm +aWxlZmlsZXN5c3RlbSBxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4 +ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28g +bWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9u +IGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9y +eW90aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvck9zY29kZQAsDQAABAAAAAQAAAA8DQAAa2lu +ZD0NAAABAAAAAQAAAD4NAABtZXNzYWdlADINAAAMAAAABAAAAD8NAABLaW5kRXJyb3IAAAAsDQAA +CAAAAAQAAABADQAAQ3VzdG9tZXJyb3IALA0AAAQAAAAEAAAAQQ0AACAob3MgZXJyb3IgKVB1FgAA +AAAAVHsWAAsAAABfexYAAQAAAGxpYnJhcnkvc3RkL3NyYy9pby9zdGRpby5ycwB4exYAGwAAANAD +AAAUAAAAZmFpbGVkIHByaW50aW5nIHRvIDogAAAApHsWABMAAAC3exYAAgAAAHh7FgAbAAAABgQA +AAkAAABzdGRlcnJmb3JtYXR0ZXIgZXJyb3IAAADiexYADwAAACgAAABsaWJyYXJ5L3N0ZC9zcmMv +c3luYy9vbmNlLnJzAHwWABwAAACVAAAAMgAAAAB8FgAcAAAA0AAAABQAAAAAfBYAHAAAANAAAAAx +AAAAbG9jayBjb3VudCBvdmVyZmxvdyBpbiByZWVudHJhbnQgbXV0ZXhsaWJyYXJ5L3N0ZC9zcmMv +c3luYy9yZW11dGV4LnJzAAAAcnwWAB8AAACRAAAADgAAAG92ZXJmbG93IHdoZW4gYWRkaW5nIGR1 +cmF0aW9uIHRvIGluc3RhbnRsaWJyYXJ5L3N0ZC9zcmMvdGltZS5ycwDMfBYAFwAAAKEBAAAhAAAA +SW5zdGFudAAsDQAABAAAAAQAAABCDQAAPHVua25vd24+77+9bWVtb3J5IGFsbG9jYXRpb24gb2Yg +IGJ5dGVzIGZhaWxlZAAAGH0WABUAAAAtfRYADQAAAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5yc0x9 +FgAYAAAAYgEAAAkAAABjYW5ub3QgbW9kaWZ5IHRoZSBwYW5pYyBob29rIGZyb20gYSBwYW5pY2tp +bmcgdGhyZWFkdH0WADQAAABsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzsH0WABwAAACHAAAA +CQAAALB9FgAcAAAAhgIAAB4AAAAyDQAADAAAAAQAAABDDQAALA0AAAgAAAAEAAAARA0AACwNAAAI +AAAABAAAAEUNAABGDQAARw0AABAAAAAEAAAASA0AAEkNAABKDQAAAAAAAAEAAABLDQAATA0AAAgA +AAAEAAAATQ0AAE4NAABKDQAAAAAAAAEAAABPDQAAbGlicmFyeS9zdGQvc3JjLy4uLy4uL2JhY2t0 +cmFjZS9zcmMvc3ltYm9saXplL21vZC5yc2h+FgA0AAAAdgEAADAAAABQdRYAAAAAALd7FgACAAAA +IC0gAFB1FgAAAAAAvH4WAAMAAAAKAAAAICAgICAgAADUfhYABgAAAA0AAAAMfRYACQAAACAgICAg +ICAgICAgICBhdCDwfhYAEAAAADoAAAAIfxYAAQAAAJx2FgABAAAATm90Rm91bmRQZXJtaXNzaW9u +RGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3 +b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJO +b3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzV291bGRCbG9ja05v +dEFEaXJlY3RvcnlJc0FEaXJlY3RvcnlEaXJlY3RvcnlOb3RFbXB0eVJlYWRPbmx5RmlsZXN5c3Rl +bUZpbGVzeXN0ZW1Mb29wU3RhbGVOZXR3b3JrRmlsZUhhbmRsZUludmFsaWRJbnB1dEludmFsaWRE +YXRhVGltZWRPdXRXcml0ZVplcm9TdG9yYWdlRnVsbE5vdFNlZWthYmxlRmlsZXN5c3RlbVF1b3Rh +RXhjZWVkZWRGaWxlVG9vTGFyZ2VSZXNvdXJjZUJ1c3lFeGVjdXRhYmxlRmlsZUJ1c3lEZWFkbG9j +a0Nyb3NzZXNEZXZpY2VzVG9vTWFueUxpbmtzSW52YWxpZEZpbGVuYW1lQXJndW1lbnRMaXN0VG9v +TG9uZ0ludGVycnVwdGVkVW5zdXBwb3J0ZWRVbmV4cGVjdGVkRW9mT3V0T2ZNZW1vcnlPdGhlclVu +Y2F0ZWdvcml6ZWRvcGVyYXRpb24gc3VjY2Vzc2Z1bHRpbWUgbm90IGltcGxlbWVudGVkIG9uIHRo +aXMgcGxhdGZvcm0AToEWACUAAABsaWJyYXJ5L3N0ZC9zcmMvc3lzL3BhbC93YXNtLy4uL3Vuc3Vw +cG9ydGVkL3RpbWUucnMAfIEWADMAAAANAAAACQAAAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJl +IG11dGV4wIEWACAAAABsaWJyYXJ5L3N0ZC9zcmMvc3lzL3BhbC93YXNtLy4uL3Vuc3VwcG9ydGVk +L2xvY2tzL211dGV4LnJzAADogRYAOgAAABQAAAAJAAAAT25jZSBpbnN0YW5jZSBoYXMgcHJldmlv +dXNseSBiZWVuIHBvaXNvbmVkAAA0ghYAKgAAAG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1heSBu +b3QgYmUgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5aIIWADgAAAAQAAAAEQAAABIAAAAQAAAAEAAAABMA +AAASAAAADQAAAA4AAAAVAAAADAAAAAsAAAAVAAAAFQAAAA8AAAAOAAAAEwAAACYAAAA4AAAAGQAA +ABcAAAAMAAAACQAAAAoAAAAQAAAAFwAAABkAAAAOAAAADQAAABQAAAAIAAAAGwAAAA4AAAAQAAAA +FgAAABUAAAALAAAAFgAAAA0AAAALAAAAEwAAAOx3FgD8dxYADXgWAB94FgAveBYAP3gWAFJ4FgBk +eBYAcXgWAH94FgCUeBYAoHgWAKt4FgDAeBYA1XgWAOR4FgDyeBYABXkWACt5FgBjeRYAfHkWAJN5 +FgCfeRYAqHkWALJ5FgDCeRYA2XkWAPJ5FgAAehYADXoWACF6FgApehYARHoWAFJ6FgBiehYAeHoW +AI16FgCYehYArnoWALt6FgDGehYACAAAABAAAAARAAAADwAAAA8AAAASAAAAEQAAAAwAAAAJAAAA +EAAAAAsAAAAKAAAADQAAAAoAAAANAAAADAAAABEAAAASAAAADgAAABYAAAAMAAAACwAAAAgAAAAJ +AAAACwAAAAsAAAAXAAAADAAAAAwAAAASAAAACAAAAA4AAAAMAAAADwAAABMAAAALAAAACwAAAA0A +AAALAAAABQAAAA0AAAAcfxYAJH8WADR/FgBFfxYAVH8WAGN/FgB1fxYAhn8WAJJ/FgCbfxYAq38W +ALZ/FgDAfxYAzX8WANd/FgDkfxYA8H8WAAGAFgATgBYAIYAWADeAFgBDgBYAToAWAFaAFgBfgBYA +aoAWAHWAFgCMgBYAmIAWAKSAFgC2gBYAvoAWAMyAFgDYgBYA54AWAPqAFgAFgRYAEIEWAB2BFgAo +gRYALYEWACgpAABTDQAABAAAAAQAAABUDQAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZk +Mzc0M2IzNDRmOTc3NjIxYTcvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnNMhRYAUAAA +AKYAAAAFAAAAL3J1c3RjL2FlZGQxNzNhMmMwODZlNTU4YzJiNjZkMzc0M2IzNDRmOTc3NjIxYTcv +bGlicmFyeS9jb3JlL3NyYy9zdHIvcGF0dGVybi5ycwCshRYATwAAALcFAAAUAAAArIUWAE8AAAC3 +BQAAIQAAAKyFFgBPAAAAqwUAACEAAAAvcnVzdGMvYWVkZDE3M2EyYzA4NmU1NThjMmI2NmQzNzQz +YjM0NGY5Nzc2MjFhNy9saWJyYXJ5L2NvcmUvc3JjL2VzY2FwZS5ycwAALIYWAEoAAABmAAAAIwAA +AGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAVQ0AAAAAAAABAAAA +Vg0AAEVycm9yRW1wdHlJbnZhbGlkRGlnaXRQb3NPdmVyZmxvd05lZ092ZXJmbG93WmVyb1BhcnNl +SW50RXJyb3JraW5kAAAAUw0AAAQAAAAEAAAAVw0AAFMNAAAMAAAABAAAAFgNAABZDQAAWg0AAKyF +FgBPAAAAOwQAACQAAACshRYATwAAALgBAAA3AAAAX1pOL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmds +ZS0wLjEuMjMvc3JjL2xlZ2FjeS5ycwAAAFOHFgAuAAAAPQAAAAsAAABThxYALgAAADoAAAALAAAA +U4cWAC4AAAA2AAAACwAAAFOHFgAuAAAAZgAAABwAAABThxYALgAAAG8AAAAnAAAAU4cWAC4AAABw +AAAAHQAAAFOHFgAuAAAAcgAAACEAAABThxYALgAAAHMAAAAaAAAAU4cWAC4AAAB0AAAAGQAAADo6 +AABThxYALgAAAH4AAAAdAAAAU4cWAC4AAAC0AAAAJgAAAFOHFgAuAAAAtQAAACEAAABThxYALgAA +AIoAAABJAAAAU4cWAC4AAACLAAAAHwAAAFOHFgAuAAAAiwAAAC8AAABDAAAAU4cWAC4AAACdAAAA +NQAAACwpKD48JipAU4cWAC4AAACCAAAALAAAAFOHFgAuAAAAhAAAACUAAAAuAAAAU4cWAC4AAACH +AAAAJQAAAFsNAAABAAAAAQAAAFwNAABThxYALgAAAHIAAABIAAAAX19SL3J1c3QvZGVwcy9ydXN0 +Yy1kZW1hbmdsZS0wLjEuMjMvc3JjL3YwLnJzAAAA64gWACoAAAAyAAAAEwAAAOuIFgAqAAAALwAA +ABMAAADriBYAKgAAACsAAAATAAAA64gWACoAAABaAAAAKAAAAGBmbXQ6OkVycm9yYHMgc2hvdWxk +IGJlIGltcG9zc2libGUgd2l0aG91dCBhIGBmbXQ6OkZvcm1hdHRlcmAAAABVDQAAAAAAAAEAAABd +DQAA64gWACoAAABLAAAADgAAAOuIFgAqAAAAigAAAA0AAABwdW55Y29kZXstfTDriBYAKgAAAB4B +AAAxAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZeuIFgAqAAAAMQEA +ABYAAADriBYAKgAAADQBAABHAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUg +Y29kZTogc3RyOjpmcm9tX3V0ZjgoKSA9ICB3YXMgZXhwZWN0ZWQgdG8gaGF2ZSAxIGNoYXIsIGJ1 +dCAgY2hhcnMgd2VyZSBmb3VuZCyKFgA5AAAAZYoWAAQAAABpihYAIgAAAIuKFgARAAAA64gWACoA +AABcAQAAGgAAAOuIFgAqAAAAUQEAABUAAABib29sY2hhcnN0cmk4aTE2aTMyaTY0aTEyOGlzaXpl +dTh1MTZ1MzJ1NjR1MTI4dXNpemVmMzJmNjQhXy4uLgAA64gWACoAAAC/AQAAHwAAAOuIFgAqAAAA +HgIAAB4AAADriBYAKgAAACMCAAAiAAAA64gWACoAAAAkAgAAJQAAAOuIFgAqAAAAhwIAABEAAAB7 +aW52YWxpZCBzeW50YXh9e3JlY3Vyc2lvbiBsaW1pdCByZWFjaGVkfT8nZm9yPD4gLCBbXTo6e2Ns +b3N1cmVzaGltOiMgYXMgIG11dCBjb25zdCA7IGR5biAgKyB1bnNhZmUgZXh0ZXJuICLriBYAKgAA +ANQDAAAtAAAAIiBmbiggLT4gID0gZmFsc2V0cnVleyB7ICB9OiAweADriBYAKgAAAMoEAAAtAAAA +Lmxsdm0uL3J1c3QvZGVwcy9ydXN0Yy1kZW1hbmdsZS0wLjEuMjMvc3JjL2xpYi5ycwAAAB6MFgAr +AAAAYgAAABsAAAAejBYAKwAAAGkAAAATAAAATIUWAAAAAAB7c2l6ZSBsaW1pdCByZWFjaGVkfWBm +bXQ6OkVycm9yYCBmcm9tIGBTaXplTGltaXRlZEZtdEFkYXB0ZXJgIHdhcyBkaXNjYXJkZWQAVQ0A +AAAAAAABAAAAXg0AAB6MFgArAAAAUwEAAB4AAABTaXplTGltaXRFeGhhdXN0ZWQAAAUAAAAMAAAA +CwAAAAsAAAAEAAAAyYYWAM6GFgDahhYA5YYWAPCGFgACAAAABAAAAAQAAAADAAAAAwAAAAMAAAAE +AAAAAgAAAAUAAAAFAAAABAAAAAMAAAADAAAABAAAAAQAAAABAAAABAAAAAQAAAADAAAAAwAAAAIA +AAADAAAABAAAAAMAAAADAAAAAQAAAOeKFgDcihYA4IoWABKLFgDkihYAD4sWANyKFgD7ihYA9ooW +AAqLFgDcihYA7IoWAACLFgDyihYABosWABaLFgDcihYA3IoWAOmKFgD9ihYAOIUWABeLFgDcihYA +74oWAAOLFgAVixYASGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvd+yNFgAcAAAAL3J1c3QvZGVw +cy9oYXNoYnJvd24tMC4xNC4zL3NyYy9yYXcvbW9kLnJzAAAQjhYAKgAAAFYAAAAoAAAARXJyb3JM +YXlvdXRFcnJvcl8NAAAMAAAABAAAAGANAABhDQAAYg0AAGxpYnJhcnkvYWxsb2Mvc3JjL3Jhd192 +ZWMucnNjYXBhY2l0eSBvdmVyZmxvdwAAAJCOFgARAAAAdI4WABwAAAA6AgAABQAAAGEgZm9ybWF0 +dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvcgBjDQAAAAAAAAEAAABk +DQAAbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAI8WABgAAABkAgAAIAAAAGNhbGxlZCBgUmVzdWx0 +Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAYw0AAAAAAAABAAAAZQ0AAO+/vWxpYnJhcnkv +YWxsb2Mvc3JjL3N5bmMucnNnjxYAGQAAAHUBAAAyAAAAKSBzaG91bGQgYmUgPCBsZW4gKGlzICkp +IHNob3VsZCBiZSA8PSBsZW4gKGlzIHJlbW92YWwgaW5kZXggKGlzIL6PFgASAAAAkI8WABYAAACm +jxYAAQAAAGBhdGAgc3BsaXQgaW5kZXggKGlzIAAAAOiPFgAVAAAAp48WABcAAACmjxYAAQAAAGxp +YnJhcnkvY29yZS9zcmMvZm10L21vZC5yc2Fzc2VydGlvbiBmYWlsZWQ6IGVkZWx0YSA+PSAwbGli +cmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAAAAUJAWACEAAABMAAAACQAAAFCQFgAhAAAA +TgAAAAkAAAACAAAAFAAAAMgAAADQBwAAIE4AAEANAwCAhB4AAC0xAQDC6wsAlDV3AADBb/KGIwAA +AAAAge+shVtBbS3uBABB3KHaAAsTAR9qv2TtOG7tl6fa9Pk/6QNPGABBgKLaAAsmAT6VLgmZ3wP9 +OBUPL+R0I+z1z9MI3ATE2rDNvBl/M6YDJh/pTgIAQcii2gALlAoBfC6YW4fTvnKf2diHLxUSxlDe +a3BuSs8P2JXVbnGyJrBmxq0kNhUdWtNCPA5U/2PAc1XMF+/5ZfIovFX3x9yA3O1u9M7v3F/3UwUA +bGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9zdHJhdGVneS9kcmFnb24ucnNhc3NlcnRpb24g +ZmFpbGVkOiBkLm1hbnQgPiAwAJSRFgAvAAAAdQAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1p +bnVzID4gMAAAAJSRFgAvAAAAdgAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLnBsdXMgPiAwlJEW +AC8AAAB3AAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGJ1Zi5sZW4oKSA+PSBNQVhfU0lHX0RJR0lU +UwAAAJSRFgAvAAAAegAAAAUAAACUkRYALwAAAMEAAAAJAAAAlJEWAC8AAAD6AAAADQAAAJSRFgAv +AAAAAQEAADYAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQuY2hlY2tlZF9zdWIoZC5taW51cyku +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 +AJkWAC4AAACtAAAABQAAAACZFgAuAAAArAAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiAhYnVmLmlz +X2VtcHR5KCkAAAAAmRYALgAAANwBAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50IDwgKDEg +PDwgNjEpAJkWAC4AAADdAQAABQAAAACZFgAuAAAA3gEAAAUAAAABAAAACgAAAGQAAADoAwAAECcA +AKCGAQBAQg8AgJaYAADh9QUAypo7AJkWAC4AAAAzAgAAEQAAAACZFgAuAAAANgIAAAkAAAAAmRYA +LgAAAGwCAAAJAAAAAJkWAC4AAADjAgAATgAAAACZFgAuAAAA7wIAAEoAAAAAmRYALgAAAMwCAABK +AAAAbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9tb2QucnMALJsWACMAAAC8AAAABQAAAGFz +c2VydGlvbiBmYWlsZWQ6IGJ1ZlswXSA+IGInMCcALJsWACMAAAC9AAAABQAAAGFzc2VydGlvbiBm +YWlsZWQ6IHBhcnRzLmxlbigpID49IDQAACybFgAjAAAAvgAAAAUAAAAuMC4ALJsWACMAAAALAQAA +BQAAACybFgAjAAAADAEAAAUAAABlRWUtRS0tK05hTmluZjAwZTAwRTBhc3NlcnRpb24gZmFpbGVk +OiBidWYubGVuKCkgPj0gbWF4bGVuAAAsmxYAIwAAAH8CAAANAAAAb3V0IG9mIHJhbmdlIGludGVn +cmFsIHR5cGUgY29udmVyc2lvbiBhdHRlbXB0ZWRmcm9tX3N0cl9yYWRpeF9pbnQ6IG11c3QgbGll +IGluIHRoZSByYW5nZSBgWzIsIDM2XWAgLSBmb3VuZCAAY5wWADwAAABsaWJyYXJ5L2NvcmUvc3Jj +L251bS9tb2QucnMAqJwWABsAAACpBQAABQAAACkuLgDVnBYAAgAAADAxMjM0NTY3ODlhYmNkZWZC +b3Jyb3dFcnJvckJvcnJvd011dEVycm9yYWxyZWFkeSBib3Jyb3dlZDogAAmdFgASAAAAYWxyZWFk +eSBtdXRhYmx5IGJvcnJvd2VkOiAAACSdFgAaAAAAdG9fZGlnaXQ6IHJhZGl4IGlzIHRvbyBoaWdo +IChtYXhpbXVtIDM2KUidFgAoAAAAbGlicmFyeS9jb3JlL3NyYy9jaGFyL21ldGhvZHMucnN4nRYA +IAAAAH8BAAANAAAAGJAWAAAAAABsaWJyYXJ5L2NvcmUvc3JjL25ldC9wYXJzZXIucnMAALCdFgAe +AAAArgAAABkAAACwnRYAHgAAAK8AAAAZAAAAsJ0WAB4AAADWAAAAOgAAALCdFgAeAAAA2QAAABEA +AACwnRYAHgAAANkAAAA7AAAAOltjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVg +IHZhbHVlAAAAGJAWAAAAAAAgnhYAAQAAACCeFgABAAAAcGFuaWNrZWQgYXQgOgoAAG0NAAAAAAAA +AQAAAG4NAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlz +IAAAiJ4WACAAAAConhYAEgAAAG8NAAAEAAAABAAAAHANAABvDQAABAAAAAQAAABxDQAAPT0hPW1h +dGNoZXNhc3NlcnRpb24gYGxlZnQgIHJpZ2h0YCBmYWlsZWQKICBsZWZ0OiAKIHJpZ2h0OiAA954W +ABAAAAAHnxYAFwAAAB6fFgAJAAAAIHJpZ2h0YCBmYWlsZWQ6IAogIGxlZnQ6IAAAAPeeFgAQAAAA +QJ8WABAAAABQnxYACQAAAB6fFgAJAAAAOiAAABiQFgAAAAAAfJ8WAAIAAABvDQAADAAAAAQAAABy +DQAAcw0AAHQNAAAgICAgIHsgLCAgewosCiB7IC4uIH0sIC4uIH0uLgp9IH0oKAosCntdYXR0ZW1w +dGVkIHRvIGJlZ2luIGEgbmV3IG1hcCBlbnRyeSB3aXRob3V0IGNvbXBsZXRpbmcgdGhlIHByZXZp +b3VzIG9uZQAA0J8WAEYAAABsaWJyYXJ5L2NvcmUvc3JjL2ZtdC9idWlsZGVycy5ycyCgFgAgAAAA +TAMAAA0AAABhdHRlbXB0ZWQgdG8gZm9ybWF0IGEgbWFwIHZhbHVlIGJlZm9yZSBpdHMga2V5AABQ +oBYALgAAACCgFgAgAAAAmAMAAA0AAABhdHRlbXB0ZWQgdG8gZmluaXNoIGEgbWFwIHdpdGggYSBw +YXJ0aWFsIGVudHJ5AACYoBYALgAAACCgFgAgAAAA7gMAAA0AAABsaWJyYXJ5L2NvcmUvc3JjL2Zt +dC9udW0ucnMA4KAWABsAAABpAAAAFwAAADBiMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEz +MTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0 +MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcw +NzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5 +OWFzc2VydGlvbiBmYWlsZWQ6ICpjdXJyID4gMTngoBYAGwAAAO8BAAAFAAAAZg0AADAwMDAwMDAw +MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAY +kBYAGwAAAPIFAAAfAAAAGJAWABsAAADgBwAACQAAAG8NAAAIAAAABAAAAGkNAABmYWxzZXRydWUA +AAAYkBYAGwAAADUJAAAaAAAAGJAWABsAAAAuCQAAIgAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQg +b2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCCkohYAEgAAALaiFgAiAAAAcmFuZ2UgZW5kIGlu +ZGV4IOiiFgAQAAAAtqIWACIAAABzbGljZSBpbmRleCBzdGFydHMgYXQgIGJ1dCBlbmRzIGF0IAAI +oxYAFgAAAB6jFgANAAAAYXR0ZW1wdGVkIHRvIGluZGV4IHNsaWNlIGZyb20gYWZ0ZXIgbWF4aW11 +bSB1c2l6ZQAAADyjFgAxAAAAYXR0ZW1wdGVkIHRvIGluZGV4IHNsaWNlIHVwIHRvIG1heGltdW0g +dXNpemV4oxYALAAAAHNvdXJjZSBzbGljZSBsZW5ndGggKCkgZG9lcyBub3QgbWF0Y2ggZGVzdGlu +YXRpb24gc2xpY2UgbGVuZ3RoICisoxYAFQAAAMGjFgArAAAA1JwWAAEAAABpbnZhbGlkIHV0Zi04 +IHNlcXVlbmNlIG9mICBieXRlcyBmcm9tIGluZGV4IASkFgAaAAAAHqQWABIAAABpbmNvbXBsZXRl +IHV0Zi04IGJ5dGUgc2VxdWVuY2UgZnJvbSBpbmRleCAAAECkFgAqAAAAYXR0ZW1wdGVkIHRvIGlu +ZGV4IHN0ciB1cCB0byBtYXhpbXVtIHVzaXplAAB0pBYAKgAAAAEBAQEBAQEBAQEBAQEBAQEBAQEB +AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB +AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEHqytoA +CzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDBAQEBAQAQajL +2gALpSlsaWJyYXJ5L2NvcmUvc3JjL3N0ci9wYXR0ZXJuLnJzAKilFgAfAAAARgUAABIAAACopRYA +HwAAAEYFAAAoAAAAqKUWAB8AAAA5BgAAFQAAAKilFgAfAAAAZwYAABUAAACopRYAHwAAAGgGAAAV +AAAAAFsuLi5dYmVnaW4gPD0gZW5kICggPD0gKSB3aGVuIHNsaWNpbmcgYGAAAAAephYADgAAACym +FgAEAAAAMKYWABAAAABAphYAAQAAAGJ5dGUgaW5kZXggIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7 +IGl0IGlzIGluc2lkZSAgKGJ5dGVzICkgb2YgYABkphYACwAAAG+mFgAmAAAAlaYWAAgAAACdphYA +BgAAAECmFgABAAAAIGlzIG91dCBvZiBib3VuZHMgb2YgYAAAZKYWAAsAAADMphYAFgAAAECmFgAB +AAAAbGlicmFyeS9jb3JlL3NyYy9zdHIvbW9kLnJzAPymFgAbAAAADAEAACwAAABuc8K1c21zc2xp +YnJhcnkvY29yZS9zcmMvdGltZS5yczCnFgAYAAAAQQQAACMAAAAwpxYAGAAAAEEEAAARAAAAGJAW +AAAAAAAYkBYAAAAAADE4NDQ2NzQ0MDczNzA5NTUxNjE2GJAWAAAAAAB4pxYAFAAAADCnFgAYAAAA +hgQAAEoAAADEmxYAAQAAAGxpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAAAC0 +pxYAJQAAABoAAAA2AAAAtKcWACUAAAAKAAAAKwAAAAAGAQEDAQQCBQcHAggICQIKBQsCDgQQAREC +EgUTERQBFQIXAhkNHAUdCB8BJAFqBGsCrwOxArwCzwLRAtQM1QnWAtcC2gHgBeEC5wToAu4g8AT4 +AvoD+wEMJzs+Tk+Pnp6fe4uTlqKyuoaxBgcJNj0+VvPQ0QQUGDY3Vld/qq6vvTXgEoeJjp4EDQ4R +EikxNDpFRklKTk9kZVy2txscBwgKCxQXNjk6qKnY2Qk3kJGoBwo7PmZpj5IRb1+/7u9aYvT8/1NU +mpsuLycoVZ2goaOkp6iturzEBgsMFR06P0VRpqfMzaAHGRoiJT4/5+zv/8XGBCAjJSYoMzg6SEpM +UFNVVlhaXF5gY2Vma3N4fX+KpKqvsMDQrq9ub76TXiJ7BQMELQNmAwEvLoCCHQMxDxwEJAkeBSsF +RAQOKoCqBiQEJAQoCDQLTkOBNwkWCggYO0U5A2MICTAWBSEDGwUBQDgESwUvBAoHCQdAICcEDAk2 +AzoFGgcEDAdQSTczDTMHLggKgSZSSysIKhYaJhwUFwlOBCQJRA0ZBwoGSAgnCXULQj4qBjsFCgZR +BgEFEAMFgItiHkgICoCmXiJFCwoGDRM6Bgo2LAQXgLk8ZFMMSAkKRkUbSAhTDUkHCoD2RgodA0dJ +NwMOCAoGOQcKgTYZBzsDHFYBDzINg5tmdQuAxIpMYw2EMBAWj6qCR6G5gjkHKgRcBiYKRgooBROC +sFtlSwQ5BxFABQsCDpf4CITWKgmi54EzDwEdBg4ECIGMiQRrBQ0DCQcQkmBHCXQ8gPYKcwhwFUZ6 +FAwUDFcJGYCHgUcDhUIPFYRQHwYGgNUrBT4hAXAtAxoEAoFAHxE6BQGB0CqC5oD3KUwECgQCgxFE +TD2AwjwGAQRVBRs0AoEOLARkDFYKgK44HQ0sBAkHAg4GgJqD2AQRAw0DdwRfBgwEAQ8MBDgICgYo +CCJOgVQMHQMJBzYIDgQJBwkHgMslCoQGAAEDBQUGBgIHBggHCREKHAsZDBoNEA4MDwQQAxISEwkW +ARcEGAEZAxoHGwEcAh8WIAMrAy0LLgEwAzECMgGnAqkCqgSrCPoC+wX9Av4D/wmteHmLjaIwV1iL +jJAc3Q4PS0z7/C4vP1xdX+KEjY6RkqmxurvFxsnK3uTl/wAEERIpMTQ3Ojs9SUpdhI6SqbG0urvG +ys7P5OUABA0OERIpMTQ6O0VGSUpeZGWEkZudyc7PDREpOjtFSVdbXF5fZGWNkam0urvFyd/k5fAN +EUVJZGWAhLK8vr/V1/Dxg4WLpKa+v8XHz9rbSJi9zcbOz0lOT1dZXl+Jjo+xtre/wcbH1xEWF1tc +9vf+/4Btcd7fDh9ubxwdX31+rq9/u7wWFx4fRkdOT1haXF5+f7XF1NXc8PH1cnOPdHWWJi4vp6+3 +v8fP19+aQJeYMI8f0tTO/05PWlsHCA8QJy/u725vNz0/QkWQkVNndcjJ0NHY2ef+/wAgXyKC3wSC +RAgbBAYRgawOgKsFHwmBGwMZCAEELwQ0BAcDAQcGBxEKUA8SB1UHAwQcCgkDCAMHAwIDAwMMBAUD +CwYBDhUFTgcbB1cHAgYXDFAEQwMtAwEEEQYPDDoEHSVfIG0EaiWAyAWCsAMaBoL9A1kHFgkYCRQM +FAxqBgoGGgZZBysFRgosBAwEAQMxCywEGgYLA4CsBgoGLzFNA4CkCDwDDwM8BzgIKwWC/xEYCC8R +LQMhDyEPgIwEgpcZCxWIlAUvBTsHAg4YCYC+InQMgNYaDAWA/wWA3wzynQM3CYFcFIC4CIDLBQoY +OwMKBjgIRggMBnQLHgNaBFkJgIMYHAoWCUwEgIoGq6QMFwQxoQSB2iYHDAUFgKYQgfUHASAqBkwE +gI0EgL4DGwMPDWxpYnJhcnkvY29yZS9zcmMvdW5pY29kZS91bmljb2RlX2RhdGEucnN4rRYAKAAA +AFAAAAAoAAAAeK0WACgAAABcAAAAFgAAAFdha2VyZGF0YXZ0YWJsZQBvDQAABAAAAAQAAAB1DQAA +bGlicmFyeS9jb3JlL3NyYy9lc2NhcGUucnNcdXsAAADgrRYAGgAAADgAAAALAAAA4K0WABoAAABm +AAAAIwAAAGxpYnJhcnkvY29yZS9zcmMvbnVtL2JpZ251bS5ycwAAIK4WAB4AAACsAQAAAQAAAGFz +c2VydGlvbiBmYWlsZWQ6IG5vYm9ycm93YXNzZXJ0aW9uIGZhaWxlZDogZGlnaXRzIDwgNDBhc3Nl +cnRpb24gZmFpbGVkOiBvdGhlciA+IDAAAMICAABJEgACbRYANBYfwDi2JEBFACwgTgUwYE4ANCBT +wE0gVo2kQFYNpoBWpNcAVwD5QGJu+uBiPv0AY4ACwWU3B+FqgA6BcAAcoXngHqGOmiPhk5AvQZUw +NOGVAERBlkdGoZYAaMGWOWrhlkBuAZf4h+GY1ozBmvCvAZsjsWGb/LJBnAC8gZ0A1KGdptbhngDf +gaOQ4mGm0ORhqeDn4akA7iGqMPEhrAAAYrTgpiK1OrdCtaLOgrXh6wK2APhCth76YrYAAIO2SxOj +trAjw7awIxS3QRoGGi8BCgEEAQUXAR8BAAQMDgUHAQEBVgEqBQECAgQBAQYBAQMBAQEUAVMBiwim +ASYCAQYpJw4BAQECAQIBAQgbBAQdCwU4AQcOZgEIBAgEAwoDAgEQMA1lGCEJAgQBBRgCExMZBwsF +GAEGESoKDAMHBkwBEAEDBA8NEwEIAgICFgEHAQEDBAMIAgICAgEBCAEEAgEFDAIKAQQDAQYEAgIW +AQcBAgECAQIEBQQCAgIEAQcEAQERBgsDAQkBAwEWAQcBAgEFAwkBAwECAwEPBBUEBAMBCAICAhYB +BwECAQUDCAICAgIJAgQCAQUNARACAQYDAwEEAwIBAQECAwIDAwMMBAUDAwEDAwEGASgNAQMBFwEQ +AwgBAwEDCAIBAwIBAgQcBAEIAQMBFwEKAQUDCAEDAQMIAgYCAQQNAwwNAQMBKQIIAQMBAwEBBQQH +BRYGAQMBEgMYAQkBAQIHCAYBAQEIEgINOgUHBgEzAgEBAQUBGAEBARMBAwIFAQEGAQ4EIAE/CAEk +BBMEEAEkQzcBAQIFEEAKBAImAQEFAQIrAQABBAIHAQEBBAIpAQQCIQEEAgcBAQEEAg8BOQEEAkMl +EBBWAgYDAAIRARoFSwMLBxQLFQwUDA0BAwECDDQCEw4BBAFDWQcrBUYKHwEMBAkXHgIFCywEGjYc +BD8CFDIBFwILAzE0AQ8BCDMqAgQKLAELDjcWAwokAgkHKwIDKQQBBgECAwEFwCcOCwACBgImAgYC +CAEBAQEBAQEfAjUBBwEBAwMBBwMEAgYEDQUDAQd0AQ0BEA1lAQQBAgoBAQMFBgEBAQEBAQQBCwIE +BQUEAREpADQA5QYEAwIMJgEBBQECOAcBEBcJBwEHAQcBBwEHAQcBBwEHASAvAQADGQkHBQIFBFYG +AwFaAQQFKwFeESAwEAAAQABDLgIAAxAKAhQvBQgDcScJAmcCQAUCAQEBBRgUASEYNAxEAQEsBgMB +AQMKIQUjDR0DMwEMDwEQEAoFATcJDhIXA0UBAQEBGAMCEAIECwYCBgIGCQcBBwErAQ4GexUADBcE +MQAAAmomBwwFBQwBDQEFAQEBAgECAWwhABJAAjYoDHQFAYckGgYaC1kDBgIGAgYCAyMMARoBEwEC +AQ8CDiJ7RTUAHQMxLyANHgUrBR4CJAQIAQUqnhIkBCQEKAg0DAsBDwEHAQIBCwEPAQcBAkMACRYK +CBgGASoBCUUGAgEBLAECAwECFwoXCR9BEwECChYKGkY4BgJABAECBQgBAwEdKh0DHSMIARwbNgoW +ChMNEm5JNzMNMw0oACoBAgMCTh0KAQgWKhIuFRsXCUYrBQo5CQENGRczEQQIIwMBCUABBAkCCgEB +ASMSASICAQYEPgcBAQEEAQ8BCgc5FwQBCAICAhYBBwECAQUDCAICAgIDAQYBBQecQgEDAQQUAx5C +AgIBAbg2AgcZBiI/AQEDATs2AgFHGwIOFQe5OWdAHwgCAQIIAQIBHgECAgICBF0IAi4CBgEBAQIb +MwIKEUgFARJJAAkBLQEHAQExHgIWAQ5JBwECASwDAQECAQMBAQICGAYBAgElAQIBBAEBABcJEQEp +AwNvAU8AZm8RxABhDwARBgAAAAAHHxFPER4SMBAEHxUFEwBAgEsEOQcRQAIBAQwCDgAIACoJAAQB +BwECAQAPAR0DAgEOBAgAAGsFDQMJBwoEAQBVAUcBAgIBAgICBAEMAQEBBwFBAQQCCAEHARwBBAEF +AQEDBwEAAhkBGQEfARkBHwEZAR8BGQEfARkBCAAfBgbVBwERAgcBAgEFBT4hAXAtCgcQAQAeEiwA +HAAHAQQBAgEPAcU7RAMBAwEABAEbAQIBAQIBAQoBBAEBAQEGAQQBAQEBAQEDAQIBAQIBAQEBAQEB +AQEBAgEBAgQBBwEEAQQBAQEKAREFAwEFAREAGgYaBhoAACAABt4CAA4AAAAAAAUAAAAAAAADAACD +BCAAkQVgAF0ToAASFyAfDCBgH+8soCsqMCAsb6bgLAKoYC0e+2AuAP4gNp7/YDb9AeE2AQohNyQN +4TerDmE5LxihOTAcYUjzHqFMQDRhUPBqoVFPbyFSnbyhUgDPYVNl0aFTANohVADg4VWu4mFX7OQh +WdDooVkgAO5Z8AF/WgBwAAcALQEBAQIBAgEBSAswFRABZQcCBgICAQQjAR4bWws6CQkBGAQBCQED +AQUrAzwIKhgBIDcBAQEECAQBAwcKAh0BOgEBAQIECAEJAQoCGgECAjkBBAIEAgIDAwEeAgMBCwI5 +AQQFAQIEARQCFgYBAToBAQIBBAgBBwMKAh4BOwEBAQwBCQEoAQMBNwEBAwUDAQQHAgsCHQE6AQIB +AgEDAQUCBwILAhwCOQIBAQIECAEJAQoCHQFIAQQBAgMBAQgBUQECBwwIYgECCQsHSQIbAQEBAQE3 +DgEFAQIFCwEkCQFmBAEGAQICAhkCBAMQBA0BAgIGAQ8BAAMAAx0CHgIeAkACAQcIAQILCQEtAwEB +dQIiAXYDBAIJAQYD2wICAToBAQcBAQEBAggGCgIBMB8xBDAHAQEFASgJDAIgBAICAQM4AQECAwEB +AzoIAgKYAwENAQcEAQYBAwLGQAABwyEAA40BYCAABmkCAAQBCiACUAIAAQMBBAEZAgUBlwIaEg0B +JggZCy4DMAECBAICJwFDBgICAgIMAQgBLwEzAQEDAgIFAgEBKgIIAe4BAgEEAQABABAQEAACAAHi +AZUFAAMBAgUEKAMEAaUCAAQAAlADRgsxBHsBNg8pAQICCgMxBAICBwE9AyQFAQg+AQwCNAkKBAIB +XwMCAQECBgECAZ0BAwgVAjkCAQEBARYBDgcDBcMIAgMBARcBUQECBgEBAgEBAgEC6wECBAYCAQIb +AlUIAgEBAmoBAQECBgEBZQMCBAEFAAkBAvUBCgIBAQQBkAQCAgQBIAooBgIECAEJBgIDLg0BAgAH +AQYBAVIWAgcBAgECegYDAQECAQcBAUgCAwEBAQACCwI0BQUBAQEAAQYPAAU7BwABPwRRAQACAC4C +FwABAQMEBQgIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAQAB20HAGCA8AAA +YAYAAGYJIAFAEOABaRMgBu4WoAZGGeAGcCDgB2Ak4Al2JyAL/SygCwcw4AuSMSAMIKbgDDCoYA7w +q+AOEP9gEAcBoRDhAuEQWAihEfoMIRNgDuEWUBRhF1AW4RngGGEaUBwhG1AfoRsAJGEcYGrhHIBu +IR3A0iEeztdhHkDhIR/w4mEf8OShH8fo4R9x7CEgAPGhIPD74SH6+zIiMAp4AgUBAgMACoYKxgoA +CnYKBAZsCnYKdgoCBm4NcwoIB2cKaAcHE20KYAp2CkYUAApGCgAUAAPvCgYKFgoACoALpQoGCrYK +VgqGCgYKAAEDBgYKxjMCBQA8ThYAHgABAAEZCQ4DAASKCh4IAQ8gCicPAAq8CgAGmgomCsYKFgpW +CgAKAAoALQw5EQIAGyQEHQEIAYYFygoACBkHJwlLBRYGoAICEAIuQAk0Ah4DSwVoCBgIKQcABjAK +AB+eCioEcAeGHoAKPAqQCgcU+woACnYKAApmCmYMABNdCgAd4wpGCgAKZhUAbwAKVgqGCgEHABcA +FAwUbBkAMgAKAAoACgAJgAoAOwEDAQRMLQEPAA0ACgACAgICAgICAgIDAwEBAQBB3/TaAAsQAQAA +AAAAAAACAgAAAAAAAgBBnvXaAAsBAgBBxPXaAAsBAQBB3/XaAAsBAQBBwPbaAAvFG+j+EAAAAAAA +/wAAAET/EAAAAAAA/wAAAKD/EAAAAAAA/wAAAPz/EAAAAAAA/wAAAMh5EQAAAAAA/wAAAITaEQAA +AAAA/wAAAEzbEQAAAAAA/wAAABTcEQAAAAAA/wAAANzcEQAAAAAA/wAAAJjiEQAAAAAA/wAAAGDj +EQAAAAAA/wAAAGDkEQAAAAAA/wAAAPDtEQAAAAAA/wAAANDuEQAAAAAA/wAAAHDwEQAAAAAA/wAA +AEjxEQAAAAAA/wAAACDyEQAAAAAA/wAAAMDzEQAAAAAA/wAAAJj0EQAAAAAA/wAAAHT1EQAAAAAA +/wAAALgKEgAAAAAA/wAAAIwLEgAAAAAA/wAAAGAMEgAAAAAA/wAAADQNEgAAAAAA/wAAAGSEEgAA +AAAA/wAAABCFEgAAAAAA/wAAANiFEgAAAAAA/wAAAPiIEgAAAAAA/wAAAMCJEgAAAAAA/wAAAKyK +EgAAAAAA/wAAAISLEgAAAAAA/wAAAMSjEgAAAAAA/wAAALSkEgAAAAAA/wAAABClEgAAAAAA/wAA +AAimEgAAAAAA/wAAANymEgAAAAAA/wAAABCoEgAAAAAA/wAAAPSoEgAAAAAA/wAAAPypEgAAAAAA +/wAAAACrEgAAAAAA/wAAABysEgAAAAAA/wAAABStEgAAAAAA/wAAAKitEgAAAAAA/wAAAHyuEgAA +AAAA/wAAAFCvEgAAAAAA/wAAAECwEgAAAAAA/wAAAMSxEgAAAAAA/wAAAJSyEgAAAAAA/wAAAGSz +EgAAAAAA/wAAAKi1EgAAAAAA/wAAAPS3EgAAAAAA/wAAAMC4EgAAAAAA/wAAAKy5EgAAAAAA/wAA +AJi6EgAAAAAA/wAAAGS7EgAAAAAA/wAAADC8EgAAAAAA/wAAAPy8EgAAAAAA/wAAAPC9EgAAAAAA +/wAAANS+EgAAAAAA/wAAAKC/EgAAAAAA/wAAAGzAEgAAAAAA/wAAADjBEgAAAAAA/wAAAATCEgAA +AAAA/wAAANDCEgAAAAAA/wAAALzDEgAAAAAA/wAAAIjEEgAAAAAA/wAAAFTFEgAAAAAA/wAAACDG +EgAAAAAA/wAAAOzGEgAAAAAA/wAAANDHEgAAAAAA/wAAAJzIEgAAAAAA/wAAAJDJEgAAAAAA/wAA +AIjKEgAAAAAA/wAAAGzLEgAAAAAA/wAAADjMEgAAAAAA/wAAAEjUEgAAAAAA/wAAACTVEgAAAAAA +/wAAAAjWEgAAAAAA/wAAAADXEgAAAAAA/wAAAMjXEgAAAAAA/wAAAJDYEgAAAAAA/wAAAFjZEgAA +AAAA/wAAACDaEgAAAAAA/wAAAATbEgAAAAAA/wAAAMzbEgAAAAAA/wAAAJTcEgAAAAAA/wAAAFzd +EgAAAAAA/wAAACTeEgAAAAAA/wAAAADfEgAAAAAA/wAAAJDfEgAAAAAA/wAAAFjgEgAAAAAA/wAA +AEjhEgAAAAAA/wAAACDiEgAAAAAA/wAAAATjEgAAAAAA/wAAAMzjEgAAAAAA/wAAANTkEgAAAAAA +/wAAAJzlEgAAAAAA/wAAAIDmEgAAAAAA/wAAAEjnEgAAAAAA/wAAABDoEgAAAAAA/wAAANjoEgAA +AAAA/wAAAKDpEgAAAAAA/wAAACDqEgAAAAAA/wAAAOjqEgAAAAAA/wAAALDrEgAAAAAA/wAAAHjs +EgAAAAAA/wAAAIDtEgAAAAAA/wAAAEjuEgAAAAAA/wAAACDvEgAAAAAA/wAAAADwEgAAAAAA/wAA +APjwEgAAAAAA/wAAAODxEgAAAAAA/wAAAMjyEgAAAAAA/wAAAKT0EgAAAAAA/wAAACj2EgAAAAAA +/wAAAJT5EgAAAAAA/wAAAFj6EgAAAAAA/wAAABz7EgAAAAAA/wAAAOD7EgAAAAAA/wAAAND4EgAA +AAAA/wAAANz3EgAAAAAA/wAAAOz2EgAAAAAA/wAAAJQlEwAAAAAA/wAAAHwmEwAAAAAA/wAAAHQn +EwAAAAAA/wAAAIwoEwAAAAAA/wAAAEwpEwAAAAAA/wAAAGwrEwAAAAAA/wAAABQ0EwAAAAAA/wAA +AFw1EwAAAAAA/wAAAFg2EwAAAAAA/wAAAEQ3EwAAAAAA/wAAAAw4EwAAAAAA/wAAANQ4EwAAAAAA +/wAAAOg5EwAAAAAA/wAAALA6EwAAAAAA/wAAALg7EwAAAAAA/wAAAJg8EwAAAAAA/wAAAGg9EwAA +AAAA/wAAADA+EwAAAAAA/wAAAAg/EwAAAAAA/wAAANA/EwAAAAAA/wAAALxAEwAAAAAA/wAAACBB +EwAAAAAA/wAAAPhBEwAAAAAA/wAAANhCEwAAAAAA/wAAAKBDEwAAAAAA/wAAAGhEEwAAAAAA/wAA +ADBFEwAAAAAA/wAAAPhFEwAAAAAA/wAAANhGEwAAAAAA/wAAANhHEwAAAAAA/wAAALxIEwAAAAAA +/wAAADhJEwAAAAAA/wAAAExKEwAAAAAA/wAAAGxLEwAAAAAA/wAAAGBMEwAAAAAA/wAAAFhNEwAA +AAAA/wAAAExOEwAAAAAA/wAAALBOEwAAAAAA/wAAAKxPEwAAAAAA/wAAAJRQEwAAAAAA/wAAAGRR +EwAAAAAA/wAAADRSEwAAAAAA/wAAAARTEwAAAAAA/wAAAOxTEwAAAAAA/wAAALxUEwAAAAAA/wAA +AMRVEwAAAAAA/wAAAJBWEwAAAAAA/wAAAORWEwAAAAAA/wAAALBXEwAAAAAA/wAAAJRYEwAAAAAA +/wAAAGBZEwAAAAAA/wAAAExaEwAAAAAA/wAAABhbEwAAAAAA/wAAAChvEwAAAAAA/wAAAOhvEwAA +AAAA/wAAAMBwEwAAAAAA/wAAAJxxEwAAAAAA/wAAAHhyEwAAAAAA/wAAADhzEwAAAAAA/wAAAIhz +EwAAAAAA/wAAAFB0EwAAAAAA/wAAABB1EwAAAAAA/wAAANB1EwAAAAAA/wAAAJB2EwAAAAAA/wAA +AHh3EwAAAAAA/wAAADh4EwAAAAAA/wAAABx5EwAAAAAA/wAAAOx5EwAAAAAA/wAAAKx6EwAAAAAA +/wAAAGx7EwAAAAAA/wAAACx8EwAAAAAA/wAAABh9EwAAAAAA/wAAAFidEwAAAAAA/wAAAMCgEwAA +AAAA/wAAAFCiEwAAAAAA/wAAADyjEwAAAAAA/wAAAAikEwAAAAAA/wAAAOykEwAAAAAA/wAAAOCl +EwAAAAAA/wAAAGSnEwAAAAAA/wAAACyoEwAAAAAA/wAAAASpEwAAAAAA/wAAAMypEwAAAAAA/wAA +AJSqEwAAAAAA/wAAAFyrEwAAAAAA/wAAACSsEwAAAAAA/wAAAOysEwAAAAAA/wAAALStEwAAAAAA +/wAAAHyuEwAAAAAA/wAAAESvEwAAAAAA/wAAAAywEwAAAAAA/wAAACzKEwAAAAAA/wAAAATLEwAA +AAAA/wAAAOzLEwAAAAAA/wAAAFTMEwAAAAAA/wAAABzNEwAAAAAA/wAAADDPEwAAAAAA/wAAAOzP +EwAAAAAA/wAAAKjQEwAAAAAA/wAAAIDREwAAAAAA/wAAADzSEwAAAAAA/wAAAPjSEwAAAAAA/wAA +ALTTEwAAAAAA/wAAAAjUEwAAAAAA/wAAAGzUEwAAAAAA/wAAACjVEwAAAAAA/wAAAOTVEwAAAAAA +/wAAAKDWEwAAAAAA/wAAAADXEwAAAAAA/wAAALzXEwAAAAAA/wAAADjYEwAAAAAA/wAAAPTYEwAA +AAAA/wAAALTZEwAAAAAA/wAAAHTaEwAAAAAA/wAAADTbEwAAAAAA/wAAADzcEwAAAAAA/wAAAPzc +EwAAAAAA/wAAALzdEwAAAAAA/wAAAJDeEwAAAAAA/wAAAFDfEwAAAAAA/wAAAKTfEwAAAAAA/wAA +AGTgEwAAAAAA/wAAACThEwAAAAAA/wAAAOThEwAAAAAA/wAAAKTiEwAAAAAA/wAAAEjjEwAAAAAA +/wAAAAjkEwAAAAAA/wAAAMjkEwAAAAAA/wAAADTlEwAAAAAA/wAAAJDlEwAAAAAA/wAAAODlEwAA +AAAA/wAAAKDmEwAAAAAA/wAAAHDnEwAAAAAA/wAAAIToEwAAAAAA/wAAAFzpEwAAAAAA/wAAABDq +EwAAAAAA/wAAABDrEwAAAAAA/wAAAPTrEwAAAAAA/wAAAOTsEwAAAAAA/wAAALztEwAAAAAA/wAA +AIDuEwAAAAAA/wAAAFjvEwAAAAAA/wAAACzwEwAAAAAA/wAAAIzwEwAAAAAA/wAAAFDxEwAAAAAA +/wAAAKjxEwAAAAAA/wAAAGzyEwAAAAAA/wAAADDzEwAAAAAA/wAAAPTzEwAAAAAA/wAAALj0EwAA +AAAA/wAAAKD1EwAAAAAA/wAAAHT2EwAAAAAA/wAAADj3EwAAAAAA/wAAAMD3EwAAAAAA/wAAAIT4 +EwAAAAAA/wAAAEj5EwAAAAAA/wAAAEz9EwAAAAAA/wAAAED+EwAAAAAA/wAAACj/EwAAAAAA/wAA +APj/EwAAAAAA/wAAAMgAFAAAAAAA/wAAAJgBFAAAAAAA/wAAAMweFAAAAAAA/wAAACAgFAAAAAAA +/wAAAPggFAAAAAAA/wAAAMAhFAAAAAAA/wAAAJwiFAAAAAAA/wAAAFwjFAAAAAAA/wAAAGQkFAAA +AAAA/wAAAGglFAAAAAAA/wAAAFBYFAAAAAAA/wAAAPhYFAAAAAAA/wBBnJLbAAsBAgBBvJLbAAsC +7QoAQfaS2wALAwIAAwBBhJPbAAsBAQBBoJPbAAsCfgwAQcCT2wALE4IMAAAFAAAAAAAAAFwaFgAE +GhYAkfRFBG5hbWUBiPRF4lUANndhc21fYmluZGdlbjo6X193YmluZGdlbl9zdHJpbmdfbmV3Ojpo +ZjYzZmZlMmFiOTdiOGI4NgE7d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3Jl +Zjo6aDZlNTQyM2I2ZDljMWE5OGYCNndhc21fYmluZGdlbjo6X193YmluZGdlbl9udW1iZXJfbmV3 +OjpoYmM3ZGJkYjRiZjI5ZDZmMgM4d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX3VuZGVmaW5l +ZDo6aDY5OGU2MTU3OTIzYjE0MjkELndhc21fYmluZGdlbjo6X193YmluZGdlbl9pbjo6aDM5YmNh +M2ZkZDZjYjJmZDQFNndhc21fYmluZGdlbjo6X193YmluZGdlbl9zdHJpbmdfZ2V0OjpoMWM0NWJi +YjQ4ODFkNDY0YgY1d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX29iamVjdDo6aDk5NzdmOTYx +YWNlMzJkNWIHNHdhc21fYmluZGdlbjo6X193YmluZGdlbl9qc3ZhbF9lcTo6aGI1OWY1MmU1OTUx +NzNjNWUIPHdhc21fYmluZGdlbjo6X193YmluZGdlbl9vYmplY3RfY2xvbmVfcmVmOjpoNTc2YWQ3 +ZWQ5N2UwMDAwZgk3d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2Jvb2xlYW5fZ2V0OjpoODQ5OGQ1 +YTRhYTkzN2MzZQo1d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX2JpZ2ludDo6aDM3ZTUxZDQ5 +MmIxM2M2YTALNndhc21fYmluZGdlbjo6X193YmluZGdlbl9udW1iZXJfZ2V0OjpoMjJjNDBmOTZm +MmYxOTIzNQw7d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2JpZ2ludF9mcm9tX2k2NDo6aGUyOWY0 +Mjc2ZDhiYTNhMTkNO3dhc21fYmluZGdlbjo6X193YmluZGdlbl9iaWdpbnRfZnJvbV91NjQ6Omg5 +NDliZDliZWU0YjVmYTcwDjV3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fZXJyb3JfbmV3OjpoZTRj +OGY1MTU3YzUzZjQyZg+uATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpsaWJvbG1fbWlncmF0aW9u +OjpQaWNrbGVkU2Vzc2lvbiBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6VHJ5RnJv +bUpzVmFsdWU+Ojp0cnlfZnJvbV9qc192YWx1ZTo6X193YmdfcGlja2xlZHNlc3Npb25fdW53cmFw +OjpoZjIwNDhjZGZmZmYyNTRiZBDGATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpsaWJvbG1fbWln +cmF0aW9uOjpQaWNrbGVkSW5ib3VuZEdyb3VwU2Vzc2lvbiBhcyB3YXNtX2JpbmRnZW46OmNvbnZl +cnQ6OnRyYWl0czo6VHJ5RnJvbUpzVmFsdWU+Ojp0cnlfZnJvbV9qc192YWx1ZTo6X193YmdfcGlj +a2xlZGluYm91bmRncm91cHNlc3Npb25fdW53cmFwOjpoOTUyZTcwZjMwNTk0MjE0ZBHBAW1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OmlkZW50aXRpZXM6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRlbnRpdGllczo6T3duVXNlcklkZW50aXR5PiBmb3Ig +d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193Ymdfb3dudXNlcmlkZW50aXR5X25ldzo6 +aGI4MzlkNTgyOWFhNmJiY2ISuwFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjo8 +aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmlkZW50aXRp +ZXM6OlVzZXJJZGVudGl0eT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2Jn +X3VzZXJpZGVudGl0eV9uZXc6Omg2NDIyZWFmYzUwNDUyNzQ5E7UBbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6YmFja3VwOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmJhY2t1cDo6Um9vbUtleUNvdW50cz4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46 +OmZyb206Ol9fd2JnX3Jvb21rZXljb3VudHNfbmV3OjpoMjYyOWE0Y2ZkMDZhYmZlMhSvAW1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OmJhY2t1cDo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjpiYWNrdXA6OkJhY2t1cEtleXM+IGZvciB3YXNtX2JpbmRnZW46 +OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19iYWNrdXBrZXlzX25ldzo6aDQ2YzcwYjM1NjU4ZTM0OWYV +0wFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpkZWh5ZHJhdGVkX2RldmljZXM6OjxpbXBsIGNvcmU6 +OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZGVoeWRyYXRlZF9kZXZpY2Vz +OjpSZWh5ZHJhdGVkRGV2aWNlPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193 +YmdfcmVoeWRyYXRlZGRldmljZV9uZXc6OmgzYTk3NzMwZmQ0MjgyZWE4FtMBbWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6ZGVoeWRyYXRlZF9kZXZpY2VzOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9t +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRlaHlkcmF0ZWRfZGV2aWNlczo6RGVoeWRyYXRlZERl +dmljZT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX2RlaHlkcmF0ZWRk +ZXZpY2VfbmV3OjpoYmFiMTE4M2E2MGMwZGQwMRenAW1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRl +dmljZTo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpk +ZXZpY2U6OkRldmljZT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX2Rl +dmljZV9uZXc6OmgzOWI3MzY0ODkwZTU5Yjk4GLEBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZGV2 +aWNlOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRl +dmljZTo6VXNlckRldmljZXM+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3di +Z191c2VyZGV2aWNlc19uZXc6OmgwYjk3MDIwODBmOTJmMzhmGcMBbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6ZXJyb3I6Ok1lZ29sbURlY3J5cHRpb25FcnJvcj4gZm9yIHdhc21fYmluZGdlbjo6SnNW +YWx1ZT46OmZyb206Ol9fd2JnX21lZ29sbWRlY3J5cHRpb25lcnJvcl9uZXc6Omg1Yjc4OTM2YTA5 +NGQ3ZDk5GrEBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRlbnRpZmllcnM6OjxpbXBsIGNvcmU6 +OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRlbnRpZmllcnM6OlVzZXJJ +ZD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX3VzZXJpZF9uZXc6Omgx +NWI3YzczZDllMWIwZWU3G7UBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRlbnRpZmllcnM6Ojxp +bXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRlbnRpZmll +cnM6OkRldmljZUlkPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193YmdfZGV2 +aWNlaWRfbmV3OjpoYTVmYTUzYTFkNTM0ZjBlZRy7AW1hdHJpeF9zZGtfY3J5cHRvX3dhc206Omlk +ZW50aWZpZXJzOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmlkZW50aWZpZXJzOjpEZXZpY2VLZXlJZD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46 +OmZyb206Ol9fd2JnX2RldmljZWtleWlkX25ldzo6aGNiNDUxZjExNTk2YWI4NmUdsQFtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU+IGZvciB3YXNtX2JpbmRnZW46 +OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19vbG1tYWNoaW5lX25ldzo6aDlkMjAwNGEzMTE0MjNiMTEe +uQFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpvbG06OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6b2xtOjpDcm9zc1NpZ25pbmdTdGF0dXM+IGZvciB3YXNt +X2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19jcm9zc3NpZ25pbmdzdGF0dXNfbmV3Ojpo +ZDYyMTcwOWQ5Yjk0ZDgyYx+7AW1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om9sbTo6PGltcGwgY29y +ZTo6Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpvbG06OkluYm91bmRHcm91 +cFNlc3Npb24+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19pbmJvdW5k +Z3JvdXBzZXNzaW9uX25ldzo6aDY2NTVjOTVlNmFjMjBmMjIgwQFtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjpyZXF1ZXN0czo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjpyZXF1ZXN0czo6S2V5c1VwbG9hZFJlcXVlc3Q+IGZvciB3YXNtX2JpbmRnZW46Okpz +VmFsdWU+Ojpmcm9tOjpfX3diZ19rZXlzdXBsb2FkcmVxdWVzdF9uZXc6Omg1MDZiMzM2ZDhjZmUw +ZDllIb8BbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OjxpbXBsIGNvcmU6OmNvbnZl +cnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OktleXNRdWVyeVJlcXVl +c3Q+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19rZXlzcXVlcnlyZXF1 +ZXN0X25ldzo6aGFhZWJlYWNlOWY2YmI5YTYivwFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpyZXF1 +ZXN0czo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpy +ZXF1ZXN0czo6S2V5c0NsYWltUmVxdWVzdD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZy +b206Ol9fd2JnX2tleXNjbGFpbXJlcXVlc3RfbmV3OjpoYzJkMTRkNWFkNjdmM2UwMyO9AW1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OnJlcXVlc3RzOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OnJlcXVlc3RzOjpUb0RldmljZVJlcXVlc3Q+IGZvciB3YXNt +X2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ190b2RldmljZXJlcXVlc3RfbmV3OjpoMWE1 +MzNiMzdhY2FkMjM1OCTLAW1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnJlcXVlc3RzOjo8aW1wbCBj +b3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnJlcXVlc3RzOjpTaWdu +YXR1cmVVcGxvYWRSZXF1ZXN0PiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193 +Ymdfc2lnbmF0dXJldXBsb2FkcmVxdWVzdF9uZXc6Omg5OGY5YzAwM2U2NGQyYjVlJcMBbWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlJvb21NZXNzYWdlUmVxdWVzdD4gZm9yIHdh +c21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX3Jvb21tZXNzYWdlcmVxdWVzdF9uZXc6 +OmhmNmUxNWUxNWFjNzM1MDI3JsEBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6Ojxp +bXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6 +OktleXNCYWNrdXBSZXF1ZXN0PiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193 +Ymdfa2V5c2JhY2t1cHJlcXVlc3RfbmV3OjpoNzUzNjZiMzdiMGI1NDE2ZSfTAW1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OnJlcXVlc3RzOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OnJlcXVlc3RzOjpQdXREZWh5ZHJhdGVkRGV2aWNlUmVxdWVzdD4gZm9y +IHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX3B1dGRlaHlkcmF0ZWRkZXZpY2Vy +ZXF1ZXN0X25ldzo6aDk3MjY2ZWIyOWEzZGQxY2Uo2QFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpy +ZXF1ZXN0czo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjpyZXF1ZXN0czo6Q3Jvc3NTaWduaW5nQm9vdHN0cmFwUmVxdWVzdHM+IGZvciB3YXNtX2JpbmRn +ZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19jcm9zc3NpZ25pbmdib290c3RyYXByZXF1ZXN0c19u +ZXc6OmgwNzI4NjAzMGYzM2FhYmE4KcUBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVzcG9uc2Vz +Ojo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnJlc3Bv +bnNlczo6RGVjcnlwdGVkUm9vbUV2ZW50PiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJv +bTo6X193YmdfZGVjcnlwdGVkcm9vbWV2ZW50X25ldzo6aDVmMzVlYTI4NjZmOTY5ZTYqvQFtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjpyZXNwb25zZXM6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVzcG9uc2VzOjpFbmNyeXB0aW9uSW5mbz4gZm9yIHdh +c21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX2VuY3J5cHRpb25pbmZvX25ldzo6aDdj +M2U5YjJhMWM4ZTdhYzcrrwFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpzdG9yZTo6PGltcGwgY29y +ZTo6Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpzdG9yZTo6U3RvcmVIYW5k +bGU+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19zdG9yZWhhbmRsZV9u +ZXc6Omg5Y2EzNWI3OGU3MTg2MDdjLMMBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6c3RvcmU6Ojxp +bXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6c3RvcmU6OkNy +b3NzU2lnbmluZ0tleUV4cG9ydD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9f +d2JnX2Nyb3Nzc2lnbmluZ2tleWV4cG9ydF9uZXc6Omg0ZTAyYmY4NTNiZTBlNGNkLa8BbWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6c3RvcmU6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6c3RvcmU6OlJvb21LZXlJbmZvPiBmb3Igd2FzbV9iaW5kZ2VuOjpK +c1ZhbHVlPjo6ZnJvbTo6X193Ymdfcm9vbWtleWluZm9fbmV3OjpoNmVlYzAwNzVlZWMzMDlhNy6t +AW1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnR5cGVzOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9t +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnR5cGVzOjpTaWduYXR1cmVzPiBmb3Igd2FzbV9iaW5k +Z2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193Ymdfc2lnbmF0dXJlc19uZXc6Omg4M2ZkMDhlNGMxODAx +NTQxL7UBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6 +OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6Ok1heWJlU2lnbmF0dXJlPiBmb3Ig +d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193YmdfbWF5YmVzaWduYXR1cmVfbmV3Ojpo +ZDhhNzkxZjY5MjI5MmM2NDDDAW1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnR5cGVzOjo8aW1wbCBj +b3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnR5cGVzOjpTaWduYXR1 +cmVWZXJpZmljYXRpb24+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19z +aWduYXR1cmV2ZXJpZmljYXRpb25fbmV3OjpoMDRhOGNmMGRiZjJlZmQ1OTG/AW1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OnR5cGVzOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OnR5cGVzOjpSb29tS2V5SW1wb3J0UmVzdWx0PiBmb3Igd2FzbV9iaW5kZ2Vu +OjpKc1ZhbHVlPjo6ZnJvbTo6X193Ymdfcm9vbWtleWltcG9ydHJlc3VsdF9uZXc6OmhlN2Y0Yjgz +YjhmMjkzNWYwMrEBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6OjxpbXBsIGNvcmU6OmNv +bnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6OlJvb21TZXR0aW5ncz4g +Zm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX3Jvb21zZXR0aW5nc19uZXc6 +OmgzYWI3ZWE5YzAxOGE5YjU5M60BbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9u +Ojo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnZlcmlm +aWNhdGlvbjo6U2FzPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193Ymdfc2Fz +X25ldzo6aDNkYjZlNTg3YjYwYTllYzc0qwFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmlj +YXRpb246OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +dmVyaWZpY2F0aW9uOjpRcj4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2Jn +X3FyX25ldzo6aDFkYTUxOTc0OTQ5MDgwZDc1sQFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJp +ZmljYXRpb246OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6dmVyaWZpY2F0aW9uOjpFbW9qaT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206 +Ol9fd2JnX2Vtb2ppX25ldzo6aDE4NzFhMDA3NGRkMDVjNjg2zQFtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjp2ZXJpZmljYXRpb246OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25SZXF1ZXN0PiBmb3Igd2FzbV9i +aW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193YmdfdmVyaWZpY2F0aW9ucmVxdWVzdF9uZXc6Omhl +YWFkZWIzMTg3NzdmNjMyN7MBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dm9kb3plbWFjOjo8aW1w +bCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnZvZG96ZW1hYzo6 +RGV2aWNlS2V5PiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6X193YmdfZGV2aWNl +a2V5X25ldzo6aGUyZThkMDZkMzc5YTc4YzI4mQE8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRl +bnRpZmllcnM6OlVzZXJJZCBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6VHJ5RnJv +bUpzVmFsdWU+Ojp0cnlfZnJvbV9qc192YWx1ZTo6X193YmdfdXNlcmlkX3Vud3JhcDo6aGZkOTcz +MTU3NTg2NGY3MTM5mQE8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRlbnRpZmllcnM6OlJvb21J +ZCBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6VHJ5RnJvbUpzVmFsdWU+Ojp0cnlf +ZnJvbV9qc192YWx1ZTo6X193Ymdfcm9vbWlkX3Vud3JhcDo6aGYyNzcwYjg3NjBmNDJhMmU6O3dh +c21fYmluZGdlbjo6X193YmluZGdlbl90cnlfaW50b19udW1iZXI6OmhkZGZiZDhkYzkxZjg2Zjk4 +O1Njb25zb2xlX2Vycm9yX3BhbmljX2hvb2s6OkVycm9yOjpuZXc6Ol9fd2JnX25ld19hYmRhNzZl +ODgzYmE4YTVmOjpoNjY5ZTlhYWFhMjlmMjA1YTxXY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjpF +cnJvcjo6c3RhY2s6Ol9fd2JnX3N0YWNrXzY1ODI3OWZlNDQ1NDFjZjY6OmhhZTZlOWJlMTI5Zjk3 +MTFhPVBjb25zb2xlX2Vycm9yX3BhbmljX2hvb2s6OmVycm9yOjpfX3diZ19lcnJvcl9mODUxNjY3 +YWY3MWJjZmM2OjpoOGM3MTJjNWE5OTUxNzM1Yz4zd2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2Ni +X2Ryb3A6Omg4YWI1ZDAyNTc4MjYyZmMxPzN3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5faXNfbnVs +bDo6aGVkMGRiZWQ4OTc2OWIzZTdAOndhc21fYmluZGdlbjo6X193YmluZGdlbl9qc3ZhbF9sb29z +ZV9lcTo6aGZiNGQzMWQ2ODdjMDI3ZDBBNXdhc21fYmluZGdlbjo6X193YmluZGdlbl9hc19udW1i +ZXI6OmgyY2UxODQ3OTUyMGM4YmFjQno8c2VyZGVfd2FzbV9iaW5kZ2VuOjplcnJvcjo6RXJyb3Ig +YXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10Ojp0b19zdHJpbmc6Ol9fd2JnX1N0cmluZ19iOTQx +MmY4Nzk5ZmFhYjNlOjpoOThlYzFjMjA0MGRkOTkzM0Noc2VyZGVfd2FzbV9iaW5kZ2VuOjpPYmpl +Y3RFeHQ6OmdldF93aXRoX3JlZl9rZXk6Ol9fd2JnX2dldHdpdGhyZWZrZXlfZWRjMmM4OTYwZjBm +MTE5MTo6aDE0NDMwMGY1MTcyYTFlMDVEUXNlcmRlX3dhc21fYmluZGdlbjo6T2JqZWN0RXh0Ojpz +ZXQ6Ol9fd2JnX3NldF9mOTc1MTAyMjM2ZDNjNTAyOjpoODlhNTk5OWRiMmM5ODc1MkVraW5kZXhl +ZF9kYl9mdXR1cmVzOjppZGJfZGF0YWJhc2U6OmZhY3Rvcnk6Okdsb2JhbDo6d2luZG93OjpfX3di +Z19XaW5kb3dfNGM5N2MwOTliMDM5OTRjMjo6aGY4ZDNhYWRjMzgyYzA1OTFGdmluZGV4ZWRfZGJf +ZnV0dXJlczo6aWRiX2RhdGFiYXNlOjpmYWN0b3J5OjpHbG9iYWw6Ondvcmtlcjo6X193YmdfV29y +a2VyR2xvYmFsU2NvcGVfYjg3ZDY5YWI5OTE4NTlmNjo6aDEzY2M3ODI2NGYwZTBlYjNHcGluZGV4 +ZWRfZGJfZnV0dXJlczo6aWRiX2RhdGFiYXNlOjpmYWN0b3J5OjpHbG9iYWw6Om5vZGVfZ2xvYmFs +OjpfX3diZ19nbG9iYWxfYzIyYzM5ZDViNjBmNjIyYzo6aDJjNTY3MTg0ZDQ1ZmZlMzlIdmluZGV4 +ZWRfZGJfZnV0dXJlczo6aWRiX2RhdGFiYXNlOjpmYWN0b3J5OjpOb2RlR2xvYmFsOjppbmRleGVk +X2RiOjpfX3diZ19pbmRleGVkREJfZjUwZTRiYTUzMDJhODdjNjo6aDJjOTU5Y2U1Y2Y3ZjZjM2RJ +ejxzZXJkZV93YXNtX2JpbmRnZW46OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+ +OjpmbXQ6OnRvX3N0cmluZzo6X193YmdfU3RyaW5nXzg4ODEwZGZlYjQwMjE5MDI6Omg1YTAzNThk +ZjgzNDlmZmRiSmhzZXJkZV93YXNtX2JpbmRnZW46Ok9iamVjdEV4dDo6Z2V0X3dpdGhfcmVmX2tl +eTo6X193YmdfZ2V0d2l0aHJlZmtleV81ZTZkOTU0NzQwM2RlYWI4OjpoODg2Nzc4NmExNjJiZGNi +ZktfbWF0cml4X3Nka19jb21tb246OmpzX3RyYWNpbmc6OkpzTG9nZ2VyOjpkZWJ1Zzo6X193Ymdf +ZGVidWdfZDM4Y2I1MmJmMTBlZDU0OTo6aDY2MzUzMWJlZWU2ZGQzZGNMXW1hdHJpeF9zZGtfY29t +bW9uOjpqc190cmFjaW5nOjpKc0xvZ2dlcjo6aW5mbzo6X193YmdfaW5mb185MWI3YzgxMWFjMjk4 +MDE5OjpoZTMyN2MxZjZmNDg5MWRmME1dbWF0cml4X3Nka19jb21tb246OmpzX3RyYWNpbmc6Okpz +TG9nZ2VyOjp3YXJuOjpfX3diZ193YXJuXzAzNmVlODE0ZTUwMGRkMzE6OmhiZmI2NzExMDY4ZjNl +NWFmTl9tYXRyaXhfc2RrX2NvbW1vbjo6anNfdHJhY2luZzo6SnNMb2dnZXI6OmVycm9yOjpfX3di +Z19lcnJvcl82OGM5YjM3Y2JhZGViNWU3OjpoODk2NTE4NjE5MzJiZDM4N09ld2FzbV9iaW5kZ2Vu +X2Z1dHVyZXM6OnF1ZXVlOjpxdWV1ZU1pY3JvdGFzazo6X193YmdfcXVldWVNaWNyb3Rhc2tfNDgx +OTcxYjBkODdmM2RkNDo6aDk0NWU5MGI1YjgzOWI2MTRQcHdhc21fYmluZGdlbl9mdXR1cmVzOjpx +dWV1ZTo6R2xvYmFsOjpoYXNRdWV1ZU1pY3JvdGFzazo6X193YmdfcXVldWVNaWNyb3Rhc2tfM2Ni +YWUyZWM2YjZjZDNkNjo6aDIwMjVmYjYyNWMwYmY0N2FRN3dhc21fYmluZGdlbjo6X193YmluZGdl +bl9pc19mdW5jdGlvbjo6aDYyNGQ1YzNiNzIxODZiMGRSXGdsb29fdGltZXJzOjpjYWxsYmFjazo6 +Y2xlYXJfdGltZW91dDo6X193YmdfY2xlYXJUaW1lb3V0XzU0MWFjMDk4MGZmY2VmNzQ6OmgwMWZi +OTZkNTcwOGIwOGVmU1hnbG9vX3RpbWVyczo6Y2FsbGJhY2s6OnNldF90aW1lb3V0OjpfX3diZ19z +ZXRUaW1lb3V0XzdkODFkMDUyODc1YjBmNGY6OmhhOTdkYzg1YzhlMjVhYWFjVGZ3ZWJfc3lzOjpm +ZWF0dXJlczo6Z2VuX1dpbmRvdzo6V2luZG93OjppbmRleGVkX2RiOjpfX3diZ19pbmRleGVkREJf +N2M1MWQ5MDU2NjY3ZjRlMDo6aDFjMjQwN2NlMGYzZjQxNTRVYXdlYl9zeXM6OmZlYXR1cmVzOjpn +ZW5fY29uc29sZTo6Y29uc29sZTo6ZGVidWdfMTo6X193YmdfZGVidWdfNWZiOTY2ODBhZWNmNWRj +ODo6aGJlZjllMDU3OWVlM2QxOWNWYXdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29u +c29sZTo6ZXJyb3JfMTo6X193YmdfZXJyb3JfOGUzOTI4Y2ZiOGE0M2UyYjo6aDk2MjEyZDRjNGQx +N2IyYjZXX3dlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29uc29sZTo6aW5mb18xOjpf +X3diZ19pbmZvXzUzMGEyOWNiMmU0ZTMzMDQ6OmhjMzBjNDU0MWI2NjBiYzk0WF93ZWJfc3lzOjpm +ZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6Ondhcm5fMTo6X193Ymdfd2Fybl82M2JiYWUx +NzMwYWVhZDA5OjpoM2ViYmZjN2VmMDkyOGNiNVl8d2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9Xb3Jr +ZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGU6OmluZGV4ZWRfZGI6Ol9fd2JnX2luZGV4 +ZWREQl9kMzEyZjk1NzU5YTE1ZmRjOjpoY2EzZGY3NDljMDNhMDNlOVpyd2ViX3N5czo6ZmVhdHVy +ZXM6Omdlbl9JZGJPYmplY3RTdG9yZTo6SWRiT2JqZWN0U3RvcmU6OmFkZF93aXRoX2tleTo6X193 +YmdfYWRkXzFkYWM1MmEyOGVkNzNhM2E6OmgzMmY2YTFlMzczZjYyNThhW213ZWJfc3lzOjpmZWF0 +dXJlczo6Z2VuX0lkYk9iamVjdFN0b3JlOjpJZGJPYmplY3RTdG9yZTo6Y2xlYXI6Ol9fd2JnX2Ns +ZWFyX2I0NTcwODI3ZDE4NjZiNzA6OmhmNTQ2NGM3ZGI3ZDhjNmY1XG13ZWJfc3lzOjpmZWF0dXJl +czo6Z2VuX0lkYk9iamVjdFN0b3JlOjpJZGJPYmplY3RTdG9yZTo6Y291bnQ6Ol9fd2JnX2NvdW50 +XzU4YzZmZjVmMjdlY2MzYWU6OmgxYzU5YWE4Y2I3YTUyMDEyXaQBd2ViX3N5czo6ZmVhdHVyZXM6 +Omdlbl9JZGJPYmplY3RTdG9yZTo6SWRiT2JqZWN0U3RvcmU6OmNyZWF0ZV9pbmRleF93aXRoX3N0 +cl9zZXF1ZW5jZV9hbmRfb3B0aW9uYWxfcGFyYW1ldGVyczo6X193YmdfY3JlYXRlSW5kZXhfZDc4 +NjU2NGIzN2RlOGU3Mzo6aGExZGYxYzA5MjM5ZDdiZjleb3dlYl9zeXM6OmZlYXR1cmVzOjpnZW5f +SWRiT2JqZWN0U3RvcmU6OklkYk9iamVjdFN0b3JlOjpkZWxldGU6Ol9fd2JnX2RlbGV0ZV9mNjBi +YmE3ZDBhZTU5YTRmOjpoNDk3NTgyMmM0NDA5MDg0N19pd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9J +ZGJPYmplY3RTdG9yZTo6SWRiT2JqZWN0U3RvcmU6OmdldDo6X193YmdfZ2V0XzUzNjFiNjRjYWMw +ZDA4MjY6OmhkOTg1Y2UyM2Q5MzYzYjJkYHl3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0lkYk9iamVj +dFN0b3JlOjpJZGJPYmplY3RTdG9yZTo6Z2V0X2FsbF93aXRoX2tleTo6X193YmdfZ2V0QWxsX2Iw +MjIwYmIzNmQwM2UxY2E6Omg5MTkyMGQyZTU5ZmM5MDRmYXl3ZWJfc3lzOjpmZWF0dXJlczo6Z2Vu +X0lkYk9iamVjdFN0b3JlOjpJZGJPYmplY3RTdG9yZTo6Z2V0X2FsbF9rZXlzOjpfX3diZ19nZXRB +bGxLZXlzX2VmY2IyNTM5Mjk0ZTI1ZWY6Omg2N2VhNGIxNzU2ODcyNGQ4Ym13ZWJfc3lzOjpmZWF0 +dXJlczo6Z2VuX0lkYk9iamVjdFN0b3JlOjpJZGJPYmplY3RTdG9yZTo6aW5kZXg6Ol9fd2JnX2lu +ZGV4XzM4M2I2ODEyYzE1MDgwMzA6OmgyMjhjNWU3NWM3YzRjYWI5Y3h3ZWJfc3lzOjpmZWF0dXJl +czo6Z2VuX0lkYk9iamVjdFN0b3JlOjpJZGJPYmplY3RTdG9yZTo6b3Blbl9jdXJzb3I6Ol9fd2Jn +X29wZW5DdXJzb3JfMzBkNThhZTI3YTMyNzYyOTo6aDlhNWQ1OTc4MzVhZTY1ZDFkgwF3ZWJfc3lz +OjpmZWF0dXJlczo6Z2VuX0lkYk9iamVjdFN0b3JlOjpJZGJPYmplY3RTdG9yZTo6b3Blbl9jdXJz +b3Jfd2l0aF9yYW5nZTo6X193Ymdfb3BlbkN1cnNvcl82MTFiMWU0ODhjMzkzZGQ4OjpoZjgyMTAy +MzRjOGU5MDU2MmVyd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJPYmplY3RTdG9yZTo6SWRiT2Jq +ZWN0U3RvcmU6OnB1dF93aXRoX2tleTo6X193YmdfcHV0XzIyNzkyZTE3NTgwY2ExOGI6OmgwMTk0 +MWFjNTk0ZDkwMmIwZmd3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0RvbUV4Y2VwdGlvbjo6RG9tRXhj +ZXB0aW9uOjpuYW1lOjpfX3diZ19uYW1lX2FkNzdmYTE2ZWNkNjE0OTY6OmgyOTI5YjA5ODA0NTE1 +ZDU3Z213ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0RvbUV4Y2VwdGlvbjo6RG9tRXhjZXB0aW9uOjpt +ZXNzYWdlOjpfX3diZ19tZXNzYWdlX2M1Mzk1ODU0NzExMzE5ODU6OmgwNWM3NDk1MjlkMTc4MDk3 +aGd3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0RvbUV4Y2VwdGlvbjo6RG9tRXhjZXB0aW9uOjpjb2Rl +OjpfX3diZ19jb2RlX2JkZGNmZjc5NjEwODk0Y2Y6OmgzNDFkZWY1Y2U3NDIyNDE3aX13ZWJfc3lz +OjpmZWF0dXJlczo6Z2VuX0RvbUV4Y2VwdGlvbjo6RG9tRXhjZXB0aW9uOjpuZXdfd2l0aF9tZXNz +YWdlOjpfX3diZ19uZXd3aXRobWVzc2FnZV8xZDFlMWQ5NDllOTU0NGFjOjpoYjE1YWI4NDA3ZjVj +YTc4NWpdd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9FdmVudDo6RXZlbnQ6OnRhcmdldDo6X193Ymdf +dGFyZ2V0XzJmYzE3N2UzODZjOGI3YjA6OmhkNzFlYzRjNGMwMTBkNWI5a193ZWJfc3lzOjpmZWF0 +dXJlczo6Z2VuX0lkYkN1cnNvcjo6SWRiQ3Vyc29yOjprZXk6Ol9fd2JnX2tleV83YTUzNGRlOTVh +MWY1ZmJmOjpoMDgwNDJjNzg2YzNkMzEwZWxqd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJDdXJz +b3I6OklkYkN1cnNvcjo6Y29udGludWVfOjpfX3diZ19jb250aW51ZV9mMWMzZTA4MTU5MjRkZTYy +OjpoMjlhYmYzYWUyODgzMGRiMG1ld2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJDdXJzb3I6Oklk +YkN1cnNvcjo6ZGVsZXRlOjpfX3diZ19kZWxldGVfMjFmZWIxYzhkM2VjMDA4Zjo6aDYxODZjOGUy +YzFkMzIzZTJuZXdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiQ3Vyc29yOjpJZGJDdXJzb3I6OnVw +ZGF0ZTo6X193YmdfdXBkYXRlX2UzODA5YTJmMTgxZjRlMzA6OmhmOWIzYzQwYTA1N2ZhMTBjb2d3 +ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0lkYktleVJhbmdlOjpJZGJLZXlSYW5nZTo6Ym91bmQ6Ol9f +d2JnX2JvdW5kX2NlMzI0MzkwNTU2ZjA1NmQ6OmgwYzg1NjgyOWQ2YjJmZTllcHx3ZWJfc3lzOjpm +ZWF0dXJlczo6Z2VuX0lkYktleVJhbmdlOjpJZGJLZXlSYW5nZTo6bG93ZXJfYm91bmRfd2l0aF9v +cGVuOjpfX3diZ19sb3dlckJvdW5kX2U3N2Y2ZTE0Y2I2OTE1MWU6OmgzNGFmYjg2MzQwNTU4Y2Yy +cWF3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0lkYkluZGV4OjpJZGJJbmRleDo6Y291bnQ6Ol9fd2Jn +X2NvdW50XzMzZTMzYjU2MWQwOWMwNjQ6Omg3YmJiMzY3ZTNmMjIwZTQ0cl13ZWJfc3lzOjpmZWF0 +dXJlczo6Z2VuX0lkYkluZGV4OjpJZGJJbmRleDo6Z2V0OjpfX3diZ19nZXRfZDc4ZGRhZTIyMmVl +ZGYzMDo6aDdlM2UzODc0ZjliODg4ZGVzZHdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiSW5kZXg6 +OklkYkluZGV4OjpnZXRfYWxsOjpfX3diZ19nZXRBbGxfNWQwNjMzNWY5Yzk2N2VmYzo6aDNlODA0 +MDQzM2VkZWY0ZjB0bHdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiSW5kZXg6OklkYkluZGV4Ojpv +cGVuX2N1cnNvcjo6X193Ymdfb3BlbkN1cnNvcl80MjVhYmE5Y2JlMWQ0ZDM5OjpoNzY4NWRkOTEz +NTFiMTBmMXWAAXdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiT3BlbkRiUmVxdWVzdDo6SWRiT3Bl +bkRiUmVxdWVzdDo6c2V0X29uYmxvY2tlZDo6X193Ymdfc2V0b25ibG9ja2VkX2ViMTAzMmEzZGZh +YWJkMWM6Omg1MDBjODVmOWYzNDNkMjNkdowBd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJPcGVu +RGJSZXF1ZXN0OjpJZGJPcGVuRGJSZXF1ZXN0OjpzZXRfb251cGdyYWRlbmVlZGVkOjpfX3diZ19z +ZXRvbnVwZ3JhZGVuZWVkZWRfYWQ3NjQ1MzczYzdkNWUxYjo6aDU3OTY5NjQxMDg0YzBkODB3Z3dl +Yl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiUmVxdWVzdDo6SWRiUmVxdWVzdDo6cmVzdWx0OjpfX3di +Z19yZXN1bHRfNmNlZGY1Zjc4NjAwYTc5Yzo6aDgyNTg2ZmM1MWYxN2U1ODN4ZXdlYl9zeXM6OmZl +YXR1cmVzOjpnZW5fSWRiUmVxdWVzdDo6SWRiUmVxdWVzdDo6ZXJyb3I6Ol9fd2JnX2Vycm9yXzY4 +NWIyMDAyNGRjMmQ2Y2E6Omg2Y2JiNTE2MjJkODg0ZTIyeXB3ZWJfc3lzOjpmZWF0dXJlczo6Z2Vu +X0lkYlJlcXVlc3Q6OklkYlJlcXVlc3Q6OnJlYWR5X3N0YXRlOjpfX3diZ19yZWFkeVN0YXRlX2Y4 +ZDU4Y2M5ZTljNGY5MDY6OmhmZWFkZDM5OTFiYTg0MjdjenR3ZWJfc3lzOjpmZWF0dXJlczo6Z2Vu +X0lkYlJlcXVlc3Q6OklkYlJlcXVlc3Q6OnNldF9vbnN1Y2Nlc3M6Ol9fd2JnX3NldG9uc3VjY2Vz +c182MzJjZTBhMTQ2MDQ1NWMyOjpoZTBjMTcyODMyYjYxMWQwMHtwd2ViX3N5czo6ZmVhdHVyZXM6 +Omdlbl9JZGJSZXF1ZXN0OjpJZGJSZXF1ZXN0OjpzZXRfb25lcnJvcjo6X193Ymdfc2V0b25lcnJv +cl84NDc5YjMzZTc1NjhhOTA0OjpoZGM1MDBhZTc3Yzg3NmQ2MXx4d2ViX3N5czo6ZmVhdHVyZXM6 +Omdlbl9JZGJUcmFuc2FjdGlvbjo6SWRiVHJhbnNhY3Rpb246OnNldF9vbmFib3J0OjpfX3diZ19z +ZXRvbmFib3J0XzUyMzEzNWZkOTE2OGFlOGI6OmhmNjVlMmRiMWRhNWU4NjBmfX53ZWJfc3lzOjpm +ZWF0dXJlczo6Z2VuX0lkYlRyYW5zYWN0aW9uOjpJZGJUcmFuc2FjdGlvbjo6c2V0X29uY29tcGxl +dGU6Ol9fd2JnX3NldG9uY29tcGxldGVfZDhlNDIzNjY2NWNiZjFlMjo6aGYxYzA2YWVjNDJmOGQ3 +MjN+eHdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiVHJhbnNhY3Rpb246OklkYlRyYW5zYWN0aW9u +OjpzZXRfb25lcnJvcjo6X193Ymdfc2V0b25lcnJvcl9kYTA3MWVjOTRlMTQ4Mzk3OjpoYjRlMDcy +MDE2ODM3MTFlY396d2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJUcmFuc2FjdGlvbjo6SWRiVHJh +bnNhY3Rpb246Om9iamVjdF9zdG9yZTo6X193Ymdfb2JqZWN0U3RvcmVfZGE0Njg3OTNiZDlkZjE3 +Yjo6aDM3NGE5MmFiZTgxNmJhYzOAAXV3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0lkYkN1cnNvcldp +dGhWYWx1ZTo6SWRiQ3Vyc29yV2l0aFZhbHVlOjp2YWx1ZTo6X193YmdfdmFsdWVfODZkMzMzNGY1 +MDc1YjIzMjo6aDVjNTNjMGUwZjk0MDY4MzKBAYYBd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJW +ZXJzaW9uQ2hhbmdlRXZlbnQ6OklkYlZlcnNpb25DaGFuZ2VFdmVudDo6b2xkX3ZlcnNpb246Ol9f +d2JnX29sZFZlcnNpb25fNjJiYWQwN2E0NzIwYTgyZDo6aGQ2YWE1YjhlMjJkNDI4ZjiCAWl3ZWJf +c3lzOjpmZWF0dXJlczo6Z2VuX0RvbVN0cmluZ0xpc3Q6OkRvbVN0cmluZ0xpc3Q6Oml0ZW06Ol9f +d2JnX2l0ZW1fODcxMzBlYjRkMzhlY2RjNTo6aDEwYTQ3MzVmN2ExOGM5MDiDAWt3ZWJfc3lzOjpm +ZWF0dXJlczo6Z2VuX0lkYkRhdGFiYXNlOjpJZGJEYXRhYmFzZTo6dmVyc2lvbjo6X193YmdfdmVy +c2lvbl83NDA2ZTNmOTdhZTY5OTY2OjpoMDgyYjNmYzNkOWE5ZWMzMoQBf3dlYl9zeXM6OmZlYXR1 +cmVzOjpnZW5fSWRiRGF0YWJhc2U6OklkYkRhdGFiYXNlOjpvYmplY3Rfc3RvcmVfbmFtZXM6Ol9f +d2JnX29iamVjdFN0b3JlTmFtZXNfNTg4YjU5MjQyNzQyMzlmZDo6aDEyNWQzNjI1NjcwN2Y4OTOF +AYIBd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJEYXRhYmFzZTo6SWRiRGF0YWJhc2U6OnNldF9v +bnZlcnNpb25jaGFuZ2U6Ol9fd2JnX3NldG9udmVyc2lvbmNoYW5nZV9hZjA0NTdhY2JiOTQ5ZGYy +OjpoZDdmYjc2N2U5YTkwZDcxYoYBZ3dlYl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiRGF0YWJhc2U6 +OklkYkRhdGFiYXNlOjpjbG9zZTo6X193YmdfY2xvc2VfNmJmZTRjYTJmZTY3Y2I2Nzo6aGZjMmM3 +ZWM5Yzc4ZWE5YjOHAYEBd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJEYXRhYmFzZTo6SWRiRGF0 +YWJhc2U6OmNyZWF0ZV9vYmplY3Rfc3RvcmU6Ol9fd2JnX2NyZWF0ZU9iamVjdFN0b3JlXzg4MmYy +ZjZiMWIxZWYwNDA6Omg2ZDg3ZWZkNzhlMzczZjcziAGBAXdlYl9zeXM6OmZlYXR1cmVzOjpnZW5f +SWRiRGF0YWJhc2U6OklkYkRhdGFiYXNlOjpkZWxldGVfb2JqZWN0X3N0b3JlOjpfX3diZ19kZWxl +dGVPYmplY3RTdG9yZV8xNzMyZWZkZDBmOGEzNTFkOjpoYTJhMGI1MTEwMjJhOWE1ZYkBhQF3ZWJf +c3lzOjpmZWF0dXJlczo6Z2VuX0lkYkRhdGFiYXNlOjpJZGJEYXRhYmFzZTo6dHJhbnNhY3Rpb25f +d2l0aF9zdHJfYW5kX21vZGU6Ol9fd2JnX3RyYW5zYWN0aW9uXzFlMjgyYTc5ZTliYjczODc6Omhh +MTEzOGM0MDlhMTZjYzY0igGOAXdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiRGF0YWJhc2U6Oklk +YkRhdGFiYXNlOjp0cmFuc2FjdGlvbl93aXRoX3N0cl9zZXF1ZW5jZV9hbmRfbW9kZTo6X193Ymdf +dHJhbnNhY3Rpb25fYjM5ZTI2NjViNDBiNjMyNDo6aGJkYzc3MjA3ZDQ3MjJlZGSLAWx3ZWJfc3lz +OjpmZWF0dXJlczo6Z2VuX0lkYkZhY3Rvcnk6OklkYkZhY3Rvcnk6Om9wZW5fd2l0aF91MzI6Ol9f +d2JnX29wZW5fZjBkNzI1OWZkN2U2ODljZTo6aDAwZWNjMmU2NTgxNmFiOGSMAWN3ZWJfc3lzOjpm +ZWF0dXJlczo6Z2VuX0lkYkZhY3Rvcnk6OklkYkZhY3Rvcnk6Om9wZW46Ol9fd2JnX29wZW5fYTA1 +MTk4ZDY4NzM1NzUzNjo6aGIzNGUyNjM0ZjVlZTRiODSNAWN3ZWJfc3lzOjpmZWF0dXJlczo6Z2Vu +X1BlcmZvcm1hbmNlOjpQZXJmb3JtYW5jZTo6bm93OjpfX3diZ19ub3dfNGU2NTliM2QxNWY0NzBk +OTo6aDliYWNlNjA4ZWMxMzYzNTiOAVBnZXRyYW5kb206OmltcDo6R2xvYmFsOjpjcnlwdG86Ol9f +d2JnX2NyeXB0b19kMDViNjhhMzU3MmJiOGNhOjpoZTYxOGM5OGVjMTcyMzhhN48BUmdldHJhbmRv +bTo6aW1wOjpHbG9iYWw6OnByb2Nlc3M6Ol9fd2JnX3Byb2Nlc3NfYjAyYjM1NzAyODBkMDM2Njo6 +aGMwYTI1NWY0NzUxODVjZmOQAVVnZXRyYW5kb206OmltcDo6UHJvY2Vzczo6dmVyc2lvbnM6Ol9f +d2JnX3ZlcnNpb25zX2MxY2I0MjIxM2NlZGYwZjU6Omg2MDQxODAxZTA2YmY3MjIzkQFOZ2V0cmFu +ZG9tOjppbXA6OlZlcnNpb25zOjpub2RlOjpfX3diZ19ub2RlXzQzYjEwODlmNDA3ZTRlYzI6Omg5 +NzM3MTEzMTNhYmFiOGUykgE1d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2lzX3N0cmluZzo6aGMy +ZGRlYTg2MTJjM2RlNjKTAVVnZXRyYW5kb206OmltcDo6TW9kdWxlOjpyZXF1aXJlX2ZuOjpfX3di +Z19yZXF1aXJlXzlhN2UwZjY2N2VhZDQ5OTU6OmhhNzAwMGViNjM5MDBiNTQ2lAFVZ2V0cmFuZG9t +OjppbXA6Okdsb2JhbDo6bXNfY3J5cHRvOjpfX3diZ19tc0NyeXB0b18xMGZjOTRhZmVlOTJiZDc2 +OjpoMmE2ZGY0Nzg0MmMzMDcyZZUBZmdldHJhbmRvbTo6aW1wOjpOb2RlQ3J5cHRvOjpyYW5kb21f +ZmlsbF9zeW5jOjpfX3diZ19yYW5kb21GaWxsU3luY19iNzBjY2JkZjQ5MjZhOTlkOjpoMDk4MGU4 +YTk0MjliYmNhY5YBZ2dldHJhbmRvbTo6aW1wOjpXZWJDcnlwdG86OmdldF9yYW5kb21fdmFsdWVz +OjpfX3diZ19nZXRSYW5kb21WYWx1ZXNfN2U0MmI0ZmI4Nzc5ZGM2ZDo6aDZkMDRhNmU1MWIwNDlk +YjmXAUdqc19zeXM6OkFycmF5OjpsZW5ndGg6Ol9fd2JnX2xlbmd0aF9jZDdhZjgxMTc2NzJiOGI4 +OjpoMzQ0ZTFlNTdjYTU2MzczM5gBQWpzX3N5czo6QXJyYXk6Om5ldzo6X193YmdfbmV3XzE2YjMw +NGEyY2ZhN2ZmNGE6OmgwNGVjMjhhNjEyZTViZDE2mQFSanNfc3lzOjpGdW5jdGlvbjo6bmV3X25v +X2FyZ3M6Ol9fd2JnX25ld25vYXJnc19lMjU4MDg3Y2QwZGFhMGVhOjpoNTRmMTg4ZmRlYTE0ZmFh +ZZoBP2pzX3N5czo6TWFwOjpuZXc6Ol9fd2JnX25ld19kOWJjM2EwMTQ3NjM0NjQwOjpoOTk2ODNk +YWRhYWU2ZDY2MJsBampzX3N5czo6SXRlcmF0b3I6Omxvb2tzX2xpa2VfaXRlcmF0b3I6Ok1heWJl +SXRlcmF0b3I6Om5leHQ6Ol9fd2JnX25leHRfNDBmYzMyN2JmYzg3NzBlNjo6aDRkNDhmMjNhMTA2 +YzkzNjOcAUxqc19zeXM6Okl0ZXJhdG9yTmV4dDo6dmFsdWU6Ol9fd2JnX3ZhbHVlX2Q5M2M2NTAx +MWY1MWE0NTY6OmhiMjk0ZDVlNmFlZDliNTVlnQFManNfc3lzOjpTeW1ib2w6Oml0ZXJhdG9yOjpf +X3diZ19pdGVyYXRvcl8yY2VlNmRhZGZkOTU2ZGZhOjpoZTZkNjk4NmNlZDBkMWU1N54BQmpzX3N5 +czo6T2JqZWN0OjpuZXc6Ol9fd2JnX25ld183MmZiOWExOGI1YWUyNjI0OjpoYzc1Y2NmZDRkMTRk +NjVlY58BP2pzX3N5czo6U2V0OjpuZXc6Ol9fd2JnX25ld18zMmY4ZGQyOTRkMTM5NGZkOjpoMGFi +NGExN2RkNDhlYzZiMKABY2pzX3N5czo6Z2xvYmFsOjpnZXRfZ2xvYmFsX29iamVjdDo6R2xvYmFs +OjpnZXRfc2VsZjo6X193Ymdfc2VsZl9jZTBkYmZjNDVjZjJmNWJlOjpoYjc2ZWM4YWE2M2NjM2Q0 +NqEBZ2pzX3N5czo6Z2xvYmFsOjpnZXRfZ2xvYmFsX29iamVjdDo6R2xvYmFsOjpnZXRfd2luZG93 +OjpfX3diZ193aW5kb3dfYzZmYjkzOWE3ZjQzNjc4Mzo6aGJjMDc1MWE5ZDMzZjUxMzOiAXBqc19z +eXM6Omdsb2JhbDo6Z2V0X2dsb2JhbF9vYmplY3Q6Okdsb2JhbDo6Z2V0X2dsb2JhbF90aGlzOjpf +X3diZ19nbG9iYWxUaGlzX2QxZTZhZjQ4NTZiYTMzMWI6Omg2NjZkNzk4NGFmZTdkNjMxowFnanNf +c3lzOjpnbG9iYWw6OmdldF9nbG9iYWxfb2JqZWN0OjpHbG9iYWw6OmdldF9nbG9iYWw6Ol9fd2Jn +X2dsb2JhbF8yMDdiNTU4OTQyNTI3NDg5OjpoYTQ5MzFhNDMxMTFkZmUyM6QBP2pzX3N5czo6QXJy +YXk6OmF0OjpfX3diZ19hdF9jNzI5YTE0ZjlmYzI3YzYyOjpoYTViOTY4OTE1YTQyM2Q5NaUBQWpz +X3N5czo6QXJyYXk6OmdldDo6X193YmdfZ2V0X2JkOGUzMzhmYmQ1ZjVjYzg6OmgyNzkwYmYwMzBk +YzRhYjhkpgFBanNfc3lzOjpBcnJheTo6c2V0OjpfX3diZ19zZXRfZDQ2MzhmNzIyMDY4ZjA0Mzo6 +aGE5YWM4NGUyMDkwNDEyZWSnAUNqc19zeXM6OkFycmF5Ojpmcm9tOjpfX3diZ19mcm9tXzg5ZTNm +YzNiYTVlNmZiNDg6OmgzOWM0MTkzOTMzZmQyM2RhqAFKanNfc3lzOjpBcnJheTo6aXNfYXJyYXk6 +Ol9fd2JnX2lzQXJyYXlfMmFiNjRkOTVlMDllYTBhZTo6aDViZWRlODE1MGI5OTFjYTCpAUNqc19z +eXM6OkFycmF5OjpwdXNoOjpfX3diZ19wdXNoX2E1YjA1YWVkYzcyMzRmOWY6OmgwYTNhYTM5NDk5 +M2UwOGQ0qgGSAWpzX3N5czo6Xzo6PGltcGwgd2FzbV9iaW5kZ2VuOjpjYXN0OjpKc0Nhc3QgZm9y +IGpzX3N5czo6QXJyYXlCdWZmZXI+OjppbnN0YW5jZW9mOjpfX3diZ19pbnN0YW5jZW9mX0FycmF5 +QnVmZmVyXzgzNjgyNWJlMDdkNGM5ZDI6OmhmYzc0ZTUyZTgzMzM5NGQ3qwFHanNfc3lzOjpGdW5j +dGlvbjo6Y2FsbDA6Ol9fd2JnX2NhbGxfMjdjMGY4NzgwMWRlZGY5Mzo6aGNmNDA4OTdmMjU3MTgz +NWasAUdqc19zeXM6OkZ1bmN0aW9uOjpjYWxsMTo6X193YmdfY2FsbF9iM2NhN2M2MDUxZjliZWMx +OjpoNTk3ODY5MjFkZTY4ODI2ZK0BR2pzX3N5czo6RnVuY3Rpb246OmNhbGwyOjpfX3diZ19jYWxs +XzhlN2NiNjA4Nzg5YzI1Mjg6Omg5NjU1YzM0NmIyOGZkYmI2rgFHanNfc3lzOjpGdW5jdGlvbjo6 +Y2FsbDM6Ol9fd2JnX2NhbGxfOTM4OTkyYzgzMmY3NDMxNDo6aGZhMTEyNTg0ZWYwYWJlYjmvAYIB +anNfc3lzOjpfOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpN +YXA+OjppbnN0YW5jZW9mOjpfX3diZ19pbnN0YW5jZW9mX01hcF84NzkxN2UwYTdhYWY0MDEyOjpo +MzcxMWI1ZTYzODk3NGFiMrABP2pzX3N5czo6TWFwOjpzZXQ6Ol9fd2JnX3NldF84NDE3MjU3YWFl +ZGM5MzZiOjpoYThmNDQwYWNmYmNkNDY4MrEBR2pzX3N5czo6TWFwOjplbnRyaWVzOjpfX3diZ19l +bnRyaWVzX2NlODQ0OTQxZDBjNTE4ODA6Omg3NmU2YjkxYjQ5MDdlMWU3sgFGanNfc3lzOjpJdGVy +YXRvcjo6bmV4dDo6X193YmdfbmV4dF8xOTZjODQ0NTBiMzY0MjU0OjpoNjMwZTdhZjJjN2QzNWRk +ObMBSmpzX3N5czo6SXRlcmF0b3JOZXh0Ojpkb25lOjpfX3diZ19kb25lXzI5OGI1N2QyM2MwZmM4 +MGM6OmgxYWJmYzFhOTUyOGM5Y2ZltAFYanNfc3lzOjpOdW1iZXI6OmlzX3NhZmVfaW50ZWdlcjo6 +X193YmdfaXNTYWZlSW50ZWdlcl9mN2IwNGVmMDIyOTZjNGQyOjpoODE1MjI5YWI5MDIxN2NlNbUB +SWpzX3N5czo6RGF0ZTo6Z2V0X3RpbWU6Ol9fd2JnX2dldFRpbWVfMmJjNDM3NTE2NWYwMmQxNTo6 +aGFlMmUyZTcxMTFmYjM2NjC2AUBqc19zeXM6OkRhdGU6Om5ldzo6X193YmdfbmV3X2NmM2VjNTU3 +NDRhNzg1Nzg6OmhjNTkwNWRhN2ZlN2FkYWMytwFAanNfc3lzOjpEYXRlOjpub3c6Ol9fd2JnX25v +d18zMDE0NjM5YTk0NDIzNTM3OjpoODYyYzM5ZjgyMGEwMDBkOLgBSmpzX3N5czo6T2JqZWN0Ojpl +bnRyaWVzOjpfX3diZ19lbnRyaWVzXzk1Y2MyYzgyM2IyODVhMDk6OmhmNzgzNjZlZmYxMjlhOWRj +uQE/anNfc3lzOjpTZXQ6OmFkZDo6X193YmdfYWRkXzkxMjQ0MTVmNGFiYTZkOTg6Omg4Yzk2NGIy +ZTMyOTVlNjcwugFFanNfc3lzOjpTZXQ6OnZhbHVlczo6X193YmdfdmFsdWVzX2MwYmMxY2ZlZTcy +YzZhNDg6OmhlNDNlZDk4MjEwMWVlNjY2uwGKAWpzX3N5czo6Xzo6PGltcGwgd2FzbV9iaW5kZ2Vu +OjpjYXN0OjpKc0Nhc3QgZm9yIGpzX3N5czo6UHJvbWlzZT46Omluc3RhbmNlb2Y6Ol9fd2JnX2lu +c3RhbmNlb2ZfUHJvbWlzZV9iNDM4ZGRlYTRjYWNjNTFmOjpoMGZiN2IxNGQ0NGY1YWVjNrwBQ2pz +X3N5czo6UHJvbWlzZTo6bmV3OjpfX3diZ19uZXdfODE3NDA3NTBkYTQwNzI0Zjo6aDhmNWY1NjUy +MGRjODljOTC9AUtqc19zeXM6OlByb21pc2U6OnJlc29sdmU6Ol9fd2JnX3Jlc29sdmVfYjAwODNh +Nzk2NzgyOGVjODo6aGNmMjdiOWZlOGQyZDk0M2K+AUVqc19zeXM6OlByb21pc2U6OnRoZW46Ol9f +d2JnX3RoZW5fMGM4NmE2MGU4ZmNmZTlmNjo6aGE0YTcwNDA4NWEwOTlkM2S/AUZqc19zeXM6OlBy +b21pc2U6OnRoZW4yOjpfX3diZ190aGVuX2E3M2NhYTlhODc5OTE1NjY6OmhjYWYzZGEzZjlmMWNl +NmI3wAFVanNfc3lzOjpXZWJBc3NlbWJseTo6TWVtb3J5OjpidWZmZXI6Ol9fd2JnX2J1ZmZlcl8x +MmQwNzljYzIxZTE0YmRiOjpoZmM0NzRkNzA1MzFjMWJmOcEBeWpzX3N5czo6VWludDhBcnJheTo6 +bmV3X3dpdGhfYnl0ZV9vZmZzZXRfYW5kX2xlbmd0aDo6X193YmdfbmV3d2l0aGJ5dGVvZmZzZXRh +bmRsZW5ndGhfYWE0YTE3YzMzYTA2ZTVjYjo6aGQ3NjkzOTNmZmM1NmY0ZTnCAUZqc19zeXM6OlVp +bnQ4QXJyYXk6Om5ldzo6X193YmdfbmV3XzYzYjkyYmM4NjcxZWQ0NjQ6OmgxYzUxOTdlZGEzM2Mz +MjQ3wwGAAWpzX3N5czo6VWludDhDbGFtcGVkQXJyYXk6Om5ld193aXRoX2J5dGVfb2Zmc2V0X2Fu +ZF9sZW5ndGg6Ol9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2E4YTg1MDEzYTQzN2Y5 +NWI6OmgyNjIyMTMxMzA0MTE4YmUwxAFNanNfc3lzOjpVaW50OENsYW1wZWRBcnJheTo6bmV3Ojpf +X3diZ19uZXdfOWU3ZTFhM2RkNTAwYTM0Mzo6aDE2MDAwZGM5M2U5MGQ5YTjFAZABanNfc3lzOjpf +Ojo8aW1wbCB3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdCBmb3IganNfc3lzOjpVaW50OEFycmF5 +Pjo6aW5zdGFuY2VvZjo6X193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzJiM2JiZWNkMDMzZDE5 +ZjY6Omg5ZjFmY2I3NGJkNzViNmIwxgFcanNfc3lzOjpVaW50OEFycmF5OjpuZXdfd2l0aF9sZW5n +dGg6Ol9fd2JnX25ld3dpdGhsZW5ndGhfZTliNDg3OGNlYmFkYjNkMzo6aDNmZTJjZWQ3NjliMGMw +YjPHAVBqc19zeXM6OlVpbnQ4QXJyYXk6OnN1YmFycmF5OjpfX3diZ19zdWJhcnJheV9hMWY3M2Nk +NGI1YjQyZmUxOjpoMTA1MGY3NGZlMTdkNDUyOMgBTGpzX3N5czo6VWludDhBcnJheTo6bGVuZ3Ro +OjpfX3diZ19sZW5ndGhfYzIwYTQwZjE1MDIwZDY4YTo6aDBhZjIwOWNjNjI5M2U3ZjLJAUZqc19z +eXM6OlVpbnQ4QXJyYXk6OnNldDo6X193Ymdfc2V0X2E0N2JhYzcwMzA2YTE5YTc6OmhiZjVjNTQ2 +N2ZiMzViZWRhygFjanNfc3lzOjpVaW50OENsYW1wZWRBcnJheTo6bmV3X3dpdGhfbGVuZ3RoOjpf +X3diZ19uZXd3aXRobGVuZ3RoXzQ5YjZkOGUyYThkMTEzNWM6OmgyM2VjNDRiY2MyYTNmZTY2ywFT +anNfc3lzOjpVaW50OENsYW1wZWRBcnJheTo6bGVuZ3RoOjpfX3diZ19sZW5ndGhfY2JkZGRiNjFh +ZmY0YmMyNDo6aDUxZDdlMjYyNDhmNmZiZmPMAU1qc19zeXM6OlVpbnQ4Q2xhbXBlZEFycmF5Ojpz +ZXQ6Ol9fd2JnX3NldF85NzFiMDZlZjkwMWQwMTQ0OjpoY2E1MTM3ZTdmM2Q5NDEwMs0BRGpzX3N5 +czo6SlNPTjo6cGFyc2U6Ol9fd2JnX3BhcnNlXzY2ZDE4MDE2MzRlMDk5YWM6OmhlYWIyZWQ1Mzdl +YTU4NTEzzgFManNfc3lzOjpKU09OOjpzdHJpbmdpZnk6Ol9fd2JnX3N0cmluZ2lmeV84ODg3ZmU3 +NGUxYzUwZDgxOjpoZDIyMzE4OTI3M2JhN2ZhM88BQ2pzX3N5czo6UmVmbGVjdDo6Z2V0OjpfX3di +Z19nZXRfZTNjMjU0MDc2NTU3ZTM0ODo6aGI1NTA3NTdjMmFkYmQ0MTfQAUNqc19zeXM6OlJlZmxl +Y3Q6OnNldDo6X193Ymdfc2V0XzFmOWIwNGYxNzAwNTVkMzM6OmgxZWZmNjA1MDRiZmNhMWY00QE9 +d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2JpZ2ludF9nZXRfYXNfaTY0OjpoY2FiMWVlMmQwMWMz +YzE0Y9IBOHdhc21fYmluZGdlbjo6X193YmluZGdlbl9kZWJ1Z19zdHJpbmc6OmgyM2JlMDU2NTVh +M2FlNDA20wExd2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX3Rocm93OjpoOTY0N2E1OTMyZTgzMzQ3 +NNQBMndhc21fYmluZGdlbjo6X193YmluZGdlbl9tZW1vcnk6OmhjY2RjYTExNmU0YzNmNTRm1QEe +X193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXI1MDAz1gEfX193YmluZGdlbl9jbG9zdXJlX3dyYXBw +ZXIxMjI3OdcBH19fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyMTIyODHYAR9fX3diaW5kZ2VuX2Ns +b3N1cmVfd3JhcHBlcjE4OTEw2QEfX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXIxOTMyONoBcG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0 +b21fZXJyb3I6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aDEzNTEzYmRjN2RiMDEwNTXbAUw8 +Y29yZTo6cGluOjpQaW48UD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6 +OmgzZTQ3MmUxNjg5ZTZmYzY33AF3bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hp +bmU6OmhhbmRsZV9kZWNyeXB0ZWRfdG9fZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fTo6e3tjbG9z +dXJlfX06Omg3YWNjYTQyN2QxYTUwYTIzLjHdAWZtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0 +aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZDo6bWFya19hc19kb25lOjp7e2Nsb3N1cmV9fTo6 +aGRiNmNhNDk4ZjQ0ZmM4MmPeAUw8Y29yZTo6cGluOjpQaW48UD4gYXMgY29yZTo6ZnV0dXJlOjpm +dXR1cmU6OkZ1dHVyZT46OnBvbGw6OmgyZjlmNWY2MjAxNmY4NmVk3wGZATxtYXRyaXhfc2RrX2lu +ZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpzYXZlX2NoYW5nZXM6Ont7Y2xv +c3VyZX19OjpoYjJjYzljYWI0ZmE5MWI0MOABVHdhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVf +dG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoNTgzYjRhMTNiYWZlYTc3OOEB +d21hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OnJl +Y2VpdmVfc2VjcmV0X2V2ZW50Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmhkNTQ0NmI2MTc0 +ZDkwODFj4gFebWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmhhbmRsZV90 +b19kZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19OjpoNGY3ZmEzZDdiOWQyOTc0YuMBYjxyYW5kX2No +YWNoYTo6Y2hhY2hhOjpDaGFDaGExMkNvcmUgYXMgcmFuZF9jb3JlOjpibG9jazo6QmxvY2tSbmdD +b3JlPjo6Z2VuZXJhdGU6Omg2NjcyYzM3NWY2OTZjOTlh5AFYbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6bWFjaGluZTo6T2xtTWFjaGluZTo6aW5pdF9oZWxwZXI6Ont7Y2xvc3VyZX19OjpoZGVlNTQ3 +NDkwYzQ4NzFmMuUBkwE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6TWVt +b3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3Jl +Pjo6c2F2ZV9jaGFuZ2VzOjp7e2Nsb3N1cmV9fTo6aGQ0Y2FlOTdmMjJmZTlmMzHmASxzaGEyOjpz +aGEyNTY6OmNvbXByZXNzMjU2OjpoZTdlZWYwOGUyNjVhMTdiY+cBajwmbXV0IHJtcF9zZXJkZTo6 +ZGVjb2RlOjpEZXNlcmlhbGl6ZXI8UixDPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRl +c2VyaWFsaXplX2FueTo6aDg4NTcxOGE2MTRkZjQyOWXoAX1tYXRyaXhfc2RrX2NyeXB0bzo6dmVy +aWZpY2F0aW9uOjptYWNoaW5lOjpWZXJpZmljYXRpb25NYWNoaW5lOjpyZWNlaXZlX2FueV9ldmVu +dDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoMzEyMDMwNTljZmFjZjZjZekBSGNvcmU6Om51 +bTo6Zmx0MmRlYzo6c3RyYXRlZ3k6OmRyYWdvbjo6Zm9ybWF0X3Nob3J0ZXN0OjpoODNlNWU5ZGVh +NDY4YTdlYeoBUG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnN0b3JlOjpTdG9yZUhhbmRsZTo6b3Bl +bjo6e3tjbG9zdXJlfX06Omg3ZThmZjhkMDYwZTU5ZDYw6wFUd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6 +OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06Omg4ZGU2NWU3Mzgw +ZTM2ZGQy7AFqPCZtdXQgcm1wX3NlcmRlOjpkZWNvZGU6OkRlc2VyaWFsaXplcjxSLEM+IGFzIHNl +cmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfYW55OjpoN2RmYzkwOTMzMzA3ZTVh +Oe0BVHdhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06 +Ont7Y2xvc3VyZX19OjpoZmNhYWZhODRlZmJhZGY4NO4BYW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246Om1hY2hpbmU6OlZlcmlmaWNhdGlvbk1hY2hpbmU6OmdhcmJhZ2VfY29sbGVjdDo6 +aGFhOTViZjgyZTUyZWU0MDPvAZABbWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6 +Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmNvbGxlY3Rfc2Vzc2lvbl9yZWNp +cGllbnRzOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmhiODc0YWE5MzMzYjc3MWNh8AFtbWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6aW1wb3J0X2V4cG9ydGVk +X3Jvb21fa2V5c19oZWxwZXI6Ont7Y2xvc3VyZX19OjpoODBiMWZhMmY2MWYxZDg0NPEBbzxiYXNl +NjQ6OmVuZ2luZTo6Z2VuZXJhbF9wdXJwb3NlOjpHZW5lcmFsUHVycG9zZSBhcyBiYXNlNjQ6OmVu +Z2luZTo6RW5naW5lPjo6aW50ZXJuYWxfZGVjb2RlOjpoN2NkZDQ4NmY1OWNjYmRkZvIBNmJsYWtl +Mzo6cG9ydGFibGU6OmNvbXByZXNzX2luX3BsYWNlOjpoMDZmZDAzMzBlMDkyMDFmM/MBU21hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6aGVscGVyczo6cmVjZWl2ZV9tYWNfZXZl +bnQ6OmhjZmUxNWMyZWY2MDgwNzIx9AFrbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRl +dmljZTo6UmVhZE9ubHlEZXZpY2U6OmVuY3J5cHQ6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6 +aDJiMmU4YTNhZTNmNjY3OTb1AVhtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGlu +ZTo6Z2V0X3VzZXJfZGV2aWNlczo6e3tjbG9zdXJlfX06OmhhNGRhZmFhNGMwYjcxMGRk9gFrbWF0 +cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OmVuY3J5 +cHQ6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aDY2YjllYzc1OGQzYzc2OTL3ATpkbG1hbGxv +Yzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjptYWxsb2M6OmhkOTc5NmQzZjZmYzJlMWUw+AFUd2Fz +bV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6e3tjbG9z +dXJlfX06OmgzYWNiMTAwMTMzZWZkNDQz+QFabWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9y +ZTo6Z2V0X2RldmljZV9mcm9tX2N1cnZlX2tleTo6e3tjbG9zdXJlfX06OmhiOTUwNTIyZmMwY2U4 +Mjc3+gFfbWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnByZXByb2Nlc3Nf +c3luY19jaGFuZ2VzOjp7e2Nsb3N1cmV9fTo6aDQ0YmFkYWEyZjdmYTQxZGP7AUw8Y29yZTo6cGlu +OjpQaW48UD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6Omg0OTlkM2Yw +MzkwZGZmMTky/AFMPGNvcmU6OnBpbjo6UGluPFA+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpG +dXR1cmU+Ojpwb2xsOjpoODA5NTMwYmJlMjJhOGQwZP0BVHdhc21fYmluZGdlbl9mdXR1cmVzOjpm +dXR1cmVfdG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoNWY2YmZjZWYzNjMy +OTAyZf4BZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zZXE6OmgyYWE3Yjk3YzZjYzcxMGY0/wFlPCZt +dXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplcj46OmRlc2VyaWFsaXplX3NlcTo6aDE2NWU0ODdiMTgyMWNmZjCAAm9tYXRyaXhfc2RrX2Ny +eXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjpjaGVja19wcml2YXRl +X2lkZW50aXR5Ojp7e2Nsb3N1cmV9fTo6aGU5MTUwMDIyMWY5ZDM1MTCBAmU8Jm11dCBzZXJkZV9q +c29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVz +ZXJpYWxpemVfc2VxOjpoODAwOWQ1YzNiOWU0MDg4NoICajwmbXV0IHJtcF9zZXJkZTo6ZGVjb2Rl +OjpEZXNlcmlhbGl6ZXI8UixDPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFs +aXplX2FueTo6aDFmODBhNmU4YjE3NzA4NmKDAsoCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1 +dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVjZWl2ZV9zeW5jX2NoYW5nZXM6Ont7Y2xvc3Vy +ZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVjZWl2ZV9zeW5jX2No +YW5nZXM6Ont7Y2xvc3VyZX19LGFsbG9jOjpzdHJpbmc6OlN0cmluZz46Ont7Y2xvc3VyZX19Pj46 +OmgyODFiMzdmNDFlMTViMmFlhAJibWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJj +b2RlOjpRclZlcmlmaWNhdGlvbjo6ZnJvbV9zY2FuOjp7e2Nsb3N1cmV9fTo6aDMwZTNkNmQ4MjNl +OTBjYWWFAqcBPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNy +eXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OmdldF9pbmJvdW5kX2dyb3VwX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fTo6aGViZWZjYWZlNzE1 +MGRlZTKGAmo8Jm11dCBybXBfc2VyZGU6OmRlY29kZTo6RGVzZXJpYWxpemVyPFIsQz4gYXMgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9hbnk6OmhlNGUxNmRjYjhjN2Q1MDdk +hwJxbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5TWFuYWdl +cjo6Y2hlY2tfcHJpdmF0ZV9pZGVudGl0eTo6e3tjbG9zdXJlfX06OmhlOTE1MDAyMjFmOWQzNTEw +LjGIAmo8Jm11dCBybXBfc2VyZGU6OmRlY29kZTo6RGVzZXJpYWxpemVyPFIsQz4gYXMgc2VyZGU6 +OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9hbnk6OmhiMzUwNDg4YzUxMGVhNjQ0iQJU +bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6Y3JlYXRlX291dGJvdW5k +X3Nlc3Npb246OmhkMGYwMTk3Y2IyZDA5YWUwigJqPCZtdXQgcm1wX3NlcmRlOjpkZWNvZGU6OkRl +c2VyaWFsaXplcjxSLEM+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVf +YW55OjpoZjY1MmMxYWQ5NTU5ZTVmZIsCbzxiYXNlNjQ6OmVuZ2luZTo6Z2VuZXJhbF9wdXJwb3Nl +OjpHZW5lcmFsUHVycG9zZSBhcyBiYXNlNjQ6OmVuZ2luZTo6RW5naW5lPjo6aW50ZXJuYWxfZW5j +b2RlOjpoNGY5N2M3NDg1MWQyZDRiM4wCWTxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6TWVz +c2FnZVR5cGUgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg4YzJlYmQ0ZDZjZDI0NmJi +jQKcAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6 +OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVjZWl2ZV90b19k +ZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19Pj4+OjpoN2NlYmZlMmFmNTJmZWY1NI4CajwmbXV0IHJt +cF9zZXJkZTo6ZGVjb2RlOjpEZXNlcmlhbGl6ZXI8UixDPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplcj46OmRlc2VyaWFsaXplX2FueTo6aGU4ZmIxMWUxYTg5M2QzYTKPAoYBbWF0cml4X3Nka19j +cnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFn +ZXI6OmNyZWF0ZV9vdXRib3VuZF9ncm91cF9zZXNzaW9uOjp7e2Nsb3N1cmV9fTo6aDQ5NGY2ODI3 +ZWI3ZjcxNjWQAogBbWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vz +c2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZV9vdXRib3VuZF9ncm91cF9zZXNzaW9u +Ojp7e2Nsb3N1cmV9fTo6aDQ5NGY2ODI3ZWI3ZjcxNjUuMZECajwmbXV0IHJtcF9zZXJkZTo6ZGVj +b2RlOjpEZXNlcmlhbGl6ZXI8UixDPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2Vy +aWFsaXplX2FueTo6aDIzMjVjZTU4YTVhNDJjMTKSAlFtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OktleVF1ZXJ5TWFuYWdlcjo6c3luY2VkOjp7e2Nsb3N1cmV9fTo6aGQ4MTUwYzlmMTZiZTRkOGGT +Al5tYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpjYWNoZTo6VmVyaWZpY2F0aW9uQ2Fj +aGU6OnF1ZXVlX3VwX2NvbnRlbnQ6OmgwMjNlNWEwNzdmNmNkNGMylAKaATxtYXRyaXhfc2RrX2lu +ZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojpsb2FkX2lkZW50aXR5Ojp7e2Ns +b3N1cmV9fTo6aDUyNzg5NDcwZGUyZDFiYTSVAjxjb3JlOjpuZXQ6OnBhcnNlcjo6UGFyc2VyOjpy +ZWFkX2lwdjRfYWRkcjo6aDc4MTNjZmVhMDk1NmFjMzeWAlR3YXNtX2JpbmRnZW5fZnV0dXJlczo6 +ZnV0dXJlX3RvX3Byb21pc2U6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aGVhY2NmOTBiODZj +OWFkMDSXAlFtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlOjpnZXRfdXNlcl9kZXZpY2Vz +Ojp7e2Nsb3N1cmV9fTo6aGQ2YmVhMjI5NDZkYjUxYTmYAtYCY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVjZWl2ZV92ZXJpZmljYXRpb25fZXZl +bnQ6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3Rv +X3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVj +ZWl2ZV92ZXJpZmljYXRpb25fZXZlbnQ6Ont7Y2xvc3VyZX19LHdhc21fYmluZGdlbjo6SnNWYWx1 +ZT46Ont7Y2xvc3VyZX19Pj46OmgxZGMzMDBhMDhjNzUwOWJkmQJcbWF0cml4X3Nka19jcnlwdG86 +Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OndhaXRfaWZfdXNlcl9wZW5kaW5nOjp7e2Nsb3N1cmV9fTo6 +aGNlNjNkMjZhMmNhM2E5NDKaAkttYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlOjpnZXRf +ZGV2aWNlOjp7e2Nsb3N1cmV9fTo6aDk5NzgxZDEzNGQwZjAyYWGbAk1tYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OlN0b3JlOjpnZXRfZGV2aWNlOjp7e2Nsb3N1cmV9fTo6aDk5NzgxZDEzNGQwZjAy +YWEuMZwCTW1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmdldF9kZXZpY2U6Ont7Y2xv +c3VyZX19OjpoOTk3ODFkMTM0ZDBmMDJhYS4ynQJlPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2Vy +aWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3NlcTo6 +aDNlNDVhNTZhZmEyYzliMzKeAktjb3JlOjpudW06OmZsdDJkZWM6OnN0cmF0ZWd5OjpncmlzdTo6 +Zm9ybWF0X3Nob3J0ZXN0X29wdDo6aGYxZDg0MDU1ZTRiZWJhZDGfAp4BY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGNvcmU6OnBpbjo6UGluPGFsbG9jOjpib3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5 +cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyZWNlaXZlX3RvX2RldmljZV9ldmVudDo6e3tjbG9z +dXJlfX0+Pj46Omg3Y2ViZmUyYWY1MmZlZjU0LjGgAmU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVz +ZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFw +OjpoNWQwOTc3YWZmOTEyZmJkYaECbm1hdHJpeF9zZGtfY3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6 +OnNlc3Npb25zOjpTZXNzaW9uTWFuYWdlcjo6aGFuZGxlX290a19leGhhdXN0aW9uX2ZhaWx1cmU6 +Omg5MTdkN2MxYmRiMDA5ODhkogI6cnVzdGNfZGVtYW5nbGU6OnYwOjpQcmludGVyOjpwcmludF9w +YXRoOjpoNzVlZmFiMWVlMTI4MTgyNKMCU21hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6 +OmdldF91c2VyX2RldmljZXM6Ont7Y2xvc3VyZX19OjpoZDZiZWEyMjk0NmRiNTFhOS4xpAJ3PG1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnRz +IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aGFhMmQ1NDE1YWNkYTM5 +ZmWlArkCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlf +ZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGlu +ZTo6bWFya19yZXF1ZXN0X2FzX3NlbnQ6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFj +aGluZTo6T2xtTWFjaGluZTo6bWFya19yZXF1ZXN0X2FzX3NlbnQ6Ont7Y2xvc3VyZX19LGJvb2w+ +Ojp7e2Nsb3N1cmV9fT4+OjpoOGI5OTU3MDkyMDIzY2M4NKYCZTwmbXV0IHNlcmRlX2pzb246OmRl +OjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6 +ZV9tYXA6OmhhMjVhYzQ5MzVmMGUwMjUwpwJubWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3Vu +dDo6QWNjb3VudDo6ZGVjcnlwdF90b19kZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fTo6aGFlZDQyZWIwZjhiNWFhNDCoAmRtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OktleVF1 +ZXJ5TWFuYWdlcjo6ZW5zdXJlX3N5bmNfdHJhY2tlZF91c2Vyczo6e3tjbG9zdXJlfX06OmgwZjMz +ZTI1NmJkOWQ5MzgwqQJmbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpLZXlRdWVyeU1hbmFnZXI6 +OmVuc3VyZV9zeW5jX3RyYWNrZWRfdXNlcnM6Ont7Y2xvc3VyZX19OjpoMGYzM2UyNTZiZDlkOTM4 +MC4xqgJNbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6c2F2ZV9jaGFuZ2VzOjp7e2Ns +b3N1cmV9fTo6aDM4ZDg3NGRlZDk0ODZjZjarAmU8c2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6RGVz +ZXJpYWxpemVyIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfYW55Ojpo +YzgwZWM1OTA2ZWFjOTNjNawCT21hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OnNhdmVf +Y2hhbmdlczo6e3tjbG9zdXJlfX06OmgzOGQ4NzRkZWQ5NDg2Y2Y2LjGtAmU8Jm11dCBzZXJkZV9q +c29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVz +ZXJpYWxpemVfbWFwOjpoYmViYWMwYmUyNzc0NDRmMq4CYW1hdHJpeF9zZGtfY3J5cHRvOjptYWNo +aW5lOjpPbG1NYWNoaW5lOjphZGRfcm9vbV9rZXk6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6 +aGM0YzVkYTE3MWIwZDJkMjivAlR3YXNtX2JpbmRnZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21p +c2U6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aGUxYjlhMjUyNWRkMmEwZDawAjxhbGxvYzo6 +dmVjOjpWZWM8VCxBPjo6cmV0YWluOjp7e2Nsb3N1cmV9fTo6aGYyNzgzMzczOWM0ZWZkZGGxAl9t +YXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6aGFuZGxlX2tleTo6e3tjbG9z +dXJlfX06Ont7Y2xvc3VyZX19OjpoYmEzZjQyZmNiNmYwMjczZLICO3J1c3RjX2RlbWFuZ2xlOjp2 +MDo6UHJpbnRlcjo6cHJpbnRfY29uc3Q6OmgxMWEwZDAwM2Y3OTYxYmYyswKjATw8cnVtYV9ldmVu +dHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PEM+IGFzIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6RXZlbnRWaXNpdG9yPEM+IGFzIHNlcmRlOjpkZTo6 +VmlzaXRvcj46OnZpc2l0X21hcDo6aDAwMGI2MmJlZTZhMDc3NTi0AmJtYXRyaXhfc2RrX2NyeXB0 +bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25TdG9yZTo6Z2V0X2lkZW50aXRpZXM6Ont7Y2xv +c3VyZX19OjpoYmFkZTE3ODYxZTRhNDVhY7UCZG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OlZlcmlmaWNhdGlvblN0b3JlOjpnZXRfaWRlbnRpdGllczo6e3tjbG9zdXJlfX06OmhiYWRl +MTc4NjFlNGE0NWFjLjG2AmRtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmlj +YXRpb25TdG9yZTo6Z2V0X2lkZW50aXRpZXM6Ont7Y2xvc3VyZX19OjpoYmFkZTE3ODYxZTRhNDVh +Yy4ytwJ5bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5TWFu +YWdlcjo6dXBkYXRlX3VzZXJfZGV2aWNlczo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoMDIz +ZTYxZmJlYTAxMTQ0ObgCKHJ5dTo6cHJldHR5Ojpmb3JtYXQ2NDo6aDQ4MzY1ZWE0MTJjYWQ3MGW5 +Ak88Y29yZTo6dGltZTo6RHVyYXRpb24gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6Zm10X2Rl +Y2ltYWw6OmhlYzMxYzQ4Nzg3NWJiMDBkugJMPGNvcmU6OnBpbjo6UGluPFA+IGFzIGNvcmU6OmZ1 +dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpoYjU1NjdmYjQxN2I5OTM4NbsCUW1hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OnJlcXVlc3RzOjpvdXRnb2luZ19yZXF1ZXN0X3RvX2pzX3ZhbHVlOjpo +ZGRjODU0MWYwZDRhM2UyMbwCN2NvcmU6OnN0cjo6cGF0dGVybjo6U3RyU2VhcmNoZXI6Om5ldzo6 +aDIwNTc2YjczY2VkMDY0ZWG9AnBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNyeXB0b19zdG9y +ZV93cmFwcGVyOjpDcnlwdG9TdG9yZVdyYXBwZXI6OnNhdmVfY2hhbmdlczo6e3tjbG9zdXJlfX06 +OmgyOWUxYjEzN2ZlZWYwMWVlvgJybWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpjcnlwdG9fc3Rv +cmVfd3JhcHBlcjo6Q3J5cHRvU3RvcmVXcmFwcGVyOjpzYXZlX2NoYW5nZXM6Ont7Y2xvc3VyZX19 +OjpoMjllMWIxMzdmZWVmMDFlZS4xvwKfATxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0 +b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRy +YWl0czo6Q3J5cHRvU3RvcmU+OjpyZXNldF9iYWNrdXBfc3RhdGU6Ont7Y2xvc3VyZX19OjpoNzk4 +OGZkODNiMDg1NWUxMcACazxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6Omlu +bmVyX3Nhczo6SW5uZXJTYXMgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyYWI0MWI5 +ZjI5NjA4N2NjwQJRbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpoZWxwZXJz +OjpnZXRfbWFjX2NvbnRlbnQ6Omg1ZmZiMTRjZmYzNWZjZDY5wgJbY3VydmUyNTUxOV9kYWxlazo6 +YmFja2VuZDo6c2VyaWFsOjp1MzI6OnNjYWxhcjo6U2NhbGFyMjk6Om1vbnRnb21lcnlfbXVsOjpo +YzI5YTA4NzM1NzhhZGQ0NsMCYG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5l +OjpoYW5kbGVfdG9fZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fTo6aDRmN2ZhM2Q3YjlkMjk3NGIu +McQCSDxzZXJkZV9qc29uOjp2YWx1ZTo6VmFsdWUgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10 +OjpoZmEyMGJhZGI4NTg0ODg3N8UCMGNvcmU6OnNsaWNlOjpzb3J0OjptZXJnZV9zb3J0OjpoMDA1 +NzA1NzljMTk5Yjc4NMYCTm1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmV4cG9ydF9z +ZWNyZXQ6Ont7Y2xvc3VyZX19OjpoNWRhZTFhMTEyY2M2ZDc3NscCU21hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6U3RvcmVUcmFuc2FjdGlvbjo6YWNjb3VudDo6e3tjbG9zdXJlfX06OmhjMGFmOTc1 +YmE3ODc0ODk2yAJVbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZVRyYW5zYWN0aW9uOjph +Y2NvdW50Ojp7e2Nsb3N1cmV9fTo6aGMwYWY5NzViYTc4NzQ4OTYuMckCVW1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6U3RvcmVUcmFuc2FjdGlvbjo6YWNjb3VudDo6e3tjbG9zdXJlfX06OmhjMGFm +OTc1YmE3ODc0ODk2LjLKAmw8Y29yZTo6aXRlcjo6c291cmNlczo6ZnJvbV9mbjo6RnJvbUZuPEY+ +IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDU3ZDZh +NDA4OTdlY2NjNDDLAjBjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2Vfc29ydDo6aGQ1YTIxNjA3MjE2 +OTEzNDHMAqcBPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNy +eXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OmdldF9vdXRib3VuZF9ncm91cF9zZXNzaW9uOjp7e2Nsb3N1cmV9fTo6aGE2YTNjM2QxODky +ZWRjNWLNAqEBPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNy +eXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OnRyeV90YWtlX2xlYXNlZF9sb2NrOjp7e2Nsb3N1cmV9fTo6aDczNTIyNmZjZThkNzVjNjLO +AlVzdGQ6OmJhY2t0cmFjZV9yczo6cHJpbnQ6OkJhY2t0cmFjZUZyYW1lRm10OjpwcmludF9yYXdf +d2l0aF9jb2x1bW46Omg0NzY4ZjAzMjA4MDUyZDlizwJpPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnJlcXVlc3RzOjpJbm5lclJlcXVlc3QgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6 +Y2xvbmU6OmgzMGMwZThkOTdkNDIxYjVi0AI7Y3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjpTY2Fs +YXI6OnJlZHVjZTo6aGQ4MjhhNDk0NDRiMDM3YTfRAnFzZXJkZV9qc29uOjp2YWx1ZTo6ZGU6Ojxp +bXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHNlcmRlX2pzb246OnZhbHVlOjpWYWx1ZT46 +OmRlc2VyaWFsaXplOjpoZmFlY2M2NTA1ZTkyZDQwY9ICcXNlcmRlX2pzb246OnZhbHVlOjpkZTo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igc2VyZGVfanNvbjo6dmFsdWU6OlZhbHVl +Pjo6ZGVzZXJpYWxpemU6OmhmZWFjZGEyOTlkZDU5M2Zi0wJlPCZtdXQgc2VyZGVfanNvbjo6ZGU6 +OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXpl +X21hcDo6aDgzOTlhZjNlYzhhZGM0YjbUAmU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxp +emVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoNzQ4 +NTNkNTU2YWZlMzhhZNUCMHNlcmRlX2pzb246OmVycm9yOjptYWtlX2Vycm9yOjpoNzQyZWYzYzk2 +NzdiYjExY9YCTW1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmdldF9pZGVudGl0eTo6 +e3tjbG9zdXJlfX06OmhkMTk1OTg1YzFkZjc3MWNj1wJPbWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +OjpTdG9yZTo6Z2V0X2lkZW50aXR5Ojp7e2Nsb3N1cmV9fTo6aGQxOTU5ODVjMWRmNzcxY2MuMdgC +tQE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3Rv +cmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6bWFy +a19pbmJvdW5kX2dyb3VwX3Nlc3Npb25zX2FzX2JhY2tlZF91cDo6e3tjbG9zdXJlfX06Omg1MzIz +Zjc1MmM4MGI2ZDgy2QJUd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7 +e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmhmYzViNjVkNzM5YTFiZjE22gIwY29yZTo6c2xpY2U6 +OnNvcnQ6Om1lcmdlX3NvcnQ6OmgwOWMzNmRjODM3ZDcxYTM12wIwY29yZTo6c2xpY2U6OnNvcnQ6 +Om1lcmdlX3NvcnQ6OmhkMWUwODI2MmM0NDZlOTUz3AJibWF0cml4X3Nka19jcnlwdG86Omdvc3Np +cGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGluZTo6bWFya19hc19kb25lOjp7e2Nsb3N1cmV9fTo6 +aDUyYWVkYTkyNTQ4MmZiMjXdAmRtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5l +OjpHb3NzaXBNYWNoaW5lOjptYXJrX2FzX2RvbmU6Ont7Y2xvc3VyZX19OjpoNTJhZWRhOTI1NDgy +ZmIyNS4x3gJgbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZp +Y2F0aW9uTWFjaGluZTo6aW5zZXJ0X3JlcXVlc3Q6OmhkOTgwNmFlZjdhYWU2ZDk23wJ3bWF0cml4 +X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lv +bk1hbmFnZXI6OmxvZ19yb29tX2tleV9zaGFyaW5nX3Jlc3VsdDo6aDAyOGFiNmQzMjY5NzgwZTDg +AmdtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWduaW5nSWRl +bnRpdHk6OnNpZ25fdXNlcjo6e3tjbG9zdXJlfX06OmhkZDEzMTg3OTRkOWExYWVh4QJJPHJ1c3Rj +X2RlbWFuZ2xlOjp2MDo6SWRlbnQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNzQxM2M2 +ZDA5YTgwNTQ1NOICaW1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6S2V5UXVlcnlNYW5hZ2VyOjp3 +YWl0X2lmX3VzZXJfa2V5X3F1ZXJ5X3BlbmRpbmc6Ont7Y2xvc3VyZX19OjpoNDhiMTg5MmQ3ZjM1 +ODA1ZeMCrgE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5 +cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3Jl +Pjo6aW5ib3VuZF9ncm91cF9zZXNzaW9uc19mb3JfYmFja3VwOjp7e2Nsb3N1cmV9fTo6aGQ3M2Rm +YzZkMTAzNWU4MGPkAm5tYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFk +T25seURldmljZTo6Z2V0X21vc3RfcmVjZW50X3Nlc3Npb246Ont7Y2xvc3VyZX19OjpoNzM3ZDJi +ZmEyNTBmN2I3YeUCcG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRP +bmx5RGV2aWNlOjpnZXRfbW9zdF9yZWNlbnRfc2Vzc2lvbjo6e3tjbG9zdXJlfX06Omg3MzdkMmJm +YTI1MGY3YjdhLjHmAqEBPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4 +ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlw +dG9TdG9yZT46OnNhdmVfcGVuZGluZ19jaGFuZ2VzOjp7e2Nsb3N1cmV9fTo6aDM0YTJkYzBiNjMw +Nzk3M2bnAiFvbG1tYWNoaW5lX2ltcG9ydEJhY2tlZFVwUm9vbUtleXPoAoQCYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X3JlY3Vyc2lu +Zzo6aGExMTdkY2MyYmU3NmY1NjnpAnJtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2Vy +Ojpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9uQ2FjaGU6OmdldF9vcl9sb2FkOjp7e2Nsb3N1 +cmV9fTo6aGM5YjMzMWJlMWI3MzA1MjDqAnRtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5h +Z2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9uQ2FjaGU6OmdldF9vcl9sb2FkOjp7e2Ns +b3N1cmV9fTo6aGM5YjMzMWJlMWI3MzA1MjAuMesCMGNvcmU6OnNsaWNlOjpzb3J0OjptZXJnZV9z +b3J0OjpoNmEwZTAxZjg2NmUzYTk4NuwCmQE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19z +dG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkNyeXB0b1N0b3JlPjo6bG9hZF9hY2NvdW50Ojp7e2Nsb3N1cmV9fTo6aDBkMGU5YTUx +NTM3YjJmNjPtAp8BPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRk +YkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9T +dG9yZT46OmxvYWRfdHJhY2tlZF91c2Vyczo6e3tjbG9zdXJlfX06OmgzZWQ5NTMwNTUyYzkyZGU0 +7gJoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRy +YWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDg3MzY0NTM5MzcxNWJjNWTvAmVtYXRy +aXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlFyVmVyaWZpY2F0aW9uOjptYXJr +X2FzX2RvbmU6Ont7Y2xvc3VyZX19OjpoMDUyOWI3NzA4OTE3MGRkZfACU21hdHJpeF9zZGtfY3J5 +cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OmNyZWF0ZV9pbmJvdW5kX3Nlc3Npb246OmgxMjA0 +OGU1Mzk1ZmZhMzMx8QJHcnVzdGNfZGVtYW5nbGU6OnYwOjpQcmludGVyOjpwcmludF90eXBlOjp7 +e2Nsb3N1cmV9fTo6aDEyOTU5NTVjZWRkMGY3YzjyAjBjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2Vf +c29ydDo6aDI3ZTllMWUyN2RiMWE5MTXzAlZtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3Jl +Ojpjb21wYXJlX2dyb3VwX3Nlc3Npb246Ont7Y2xvc3VyZX19OjpoNDg4MDQ4MDQ2OThiMmM2ZPQC +em1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnJlZ2lzdGVyX3Jl +Y2VpdmVfc2VjcmV0X2NhbGxiYWNrOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmhjNjhkODE3 +NDIyZDk1MTZj9QKZATxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVk +ZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRv +U3RvcmU+OjpnZXRfc2Vzc2lvbnM6Ont7Y2xvc3VyZX19OjpoOGQwZmVjOGNkNTY5OTNlMPYCMGNv +cmU6OnNsaWNlOjpzb3J0OjptZXJnZV9zb3J0OjpoMGI5MDUzNTEwNzMzMWYzZPcCOnJ1c3RjX2Rl +bWFuZ2xlOjp2MDo6UHJpbnRlcjo6cHJpbnRfdHlwZTo6aDdjNWQzNGY0Nzc3MTJmN2T4ArYCY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpN +YXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6c2hhcmVf +cm9vbV9rZXk6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0 +dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGlu +ZTo6c2hhcmVfcm9vbV9rZXk6Ont7Y2xvc3VyZX19LGpzX3N5czo6QXJyYXk+Ojp7e2Nsb3N1cmV9 +fT4+OjpoNzU5OTMxYzg5NGMzNDY0NPkCnQE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19z +dG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkNyeXB0b1N0b3JlPjo6bG9hZF9iYWNrdXBfa2V5czo6e3tjbG9zdXJlfX06OmhmYzQ1 +NWExZDkyYjM3ODk3+gJYbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6Y29tcGFyZV9n +cm91cF9zZXNzaW9uOjp7e2Nsb3N1cmV9fTo6aDQ4ODA0ODA0Njk4YjJjNmQuMfsCTDxjb3JlOjpw +aW46OlBpbjxQPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aGVjZGY4 +OWE2MGZjMDQzYjf8AoQCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpFZGdlPjo6aW5zZXJ0X3JlY3Vyc2luZzo6aDYwZTFjZjMwOTRlMjg0YmL9AmM8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6b3BzOjpk +cm9wOjpEcm9wPjo6ZHJvcDo6aGZlZjZlY2UxYTk1OWM0YzL+AkFzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplcjo6X19kZXNlcmlhbGl6ZV9jb250ZW50OjpoZDYzZTlhNDU0MGVlMGRhNf8CYm1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnRzOjpzZXJp +YWxpemVfemVyb2l6ZWQ6Omg2MGYzM2I0NGM2OGVmOTMxgAOAAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9u +OjpldmVudF9lbnVtczo6T3V0Z29pbmdDb250ZW50Pj46OmhlYzFmYTZlZDNhNzRiN2RhgQNYbWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6Y2FjaGU6OlZlcmlmaWNhdGlvbkNhY2hlOjpp +bnNlcnRfc2FzOjpoNTU1OWZiZTlkMTg4ZGEyM4IDV21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmlj +YXRpb246OmNhY2hlOjpWZXJpZmljYXRpb25DYWNoZTo6aW5zZXJ0X3FyOjpoMDJjNjAwMWM0NmNh +NTQ1OIMDamNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZp +Y2F0aW9uOjpldmVudF9lbnVtczo6T3V0Z29pbmdDb250ZW50Pjo6aDYwZDlhMjExZmJkODMzYWGE +A0N2b2RvemVtYWM6Om1lZ29sbTo6cmF0Y2hldDo6UmF0Y2hldFBhcnRzOjp1cGRhdGU6OmhlMmQ3 +NzliOWExMTNhZTcyhQNFbWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Om5l +d19oZWxwZXI6OmhkMGIzZmVhMGZjNDBmZWExhgM9Y29yZTo6bmV0OjpwYXJzZXI6OlBhcnNlcjo6 +cmVhZF9hdG9taWNhbGx5OjpoZjJlODFjZWI2MGIxNTE2OIcDjQFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGlu +ZTo6Y29sbGVjdF9pbmNvbWluZ19rZXlfcmVxdWVzdHM6Ont7Y2xvc3VyZX19Pjo6aGJiOGNjYTBh +OGJkMTBlMzeIA48BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpn +b3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OmNvbGxlY3RfaW5jb21pbmdfa2V5X3Jl +cXVlc3RzOjp7e2Nsb3N1cmV9fT46OmhiYjhjY2EwYThiZDEwZTM3LjGJA5cBPG1hdHJpeF9zZGtf +aW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9kZXZpY2U6Ont7Y2xv +c3VyZX19OjpoZDlkMzMyZDZhZTZhNzhlZYoDtQE8JmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6 +OnNlcmlhbDo6dTMyOjpmaWVsZDo6RmllbGRFbGVtZW50MjYyNSBhcyBjb3JlOjpvcHM6OmFyaXRo +OjpNdWw8JmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTMyOjpmaWVsZDo6Rmll +bGRFbGVtZW50MjYyNT4+OjptdWw6OmhhOWMzNzk2OTZlZjZkMjljiwNaPGNvcmU6OnN0cjo6cGF0 +dGVybjo6U3RyU2VhcmNoZXIgYXMgY29yZTo6c3RyOjpwYXR0ZXJuOjpTZWFyY2hlcj46Om5leHQ6 +OmhhODJjNGRhY2FmZTU2ZDk1jANlY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvOjpyZXF1ZXN0czo6T3V0Z29pbmdWZXJpZmljYXRpb25SZXF1ZXN0Pjo6aGRhYTBjZTli +MjA2ODNmMDeNA5wBPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6U2FzU3Rh +dGUgYXMgY29yZTo6Y29udmVydDo6RnJvbTwmbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlv +bjo6c2FzOjppbm5lcl9zYXM6OklubmVyU2FzPj46OmZyb206Omg0ZThhZDZhNjFhOWJiZjk0jgNj +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlZlcmlmaWNhdGlvblJl +cXVlc3Q6OnN0YXJ0X3Nhc19oZWxwZXI6Omg0MGRiZWE4OTBlNjcyNTE4jwMzYWxsb2M6OnN5bmM6 +OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmgzMTg3ODY1NDlkMWE5OWYykAMwYWxsb2M6OnN0cjo6am9p +bl9nZW5lcmljX2NvcHk6Omg4MGRhZmJmN2EyZmM4OGQ1kQNlPCZtdXQgc2VyZGVfanNvbjo6ZGU6 +OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXpl +X21hcDo6aDljYmEwM2M5ZDdjNDljMTOSA3NtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpt +YWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpjb2xsZWN0X2luY29taW5nX2tleV9yZXF1ZXN0czo6e3tj +bG9zdXJlfX06Omg5NTQ1YmQ0MDhkYzhiMzVhkwNBc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI6Ol9f +ZGVzZXJpYWxpemVfY29udGVudDo6aDQ0M2ZjZjRjY2I3OGEwMWKUA188dHJhY2luZzo6aW5zdHJ1 +bWVudDo6SW5zdHJ1bWVudGVkPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpw +b2xsOjpoYzU4ODc4NDY2ZWVjZWY3YpUDVHdhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9f +cHJvbWlzZTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoNzUyYTk2NmU5ZDQxM2Q0YpYDvQFt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfcmVxdWVzdDo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6OnJvb21fa2V5X3JlcXVlc3Q6OlJlcXVlc3RlZEtleUluZm8+OjpkZXNlcmlhbGl6ZTo6 +aDZkOWM5ZGMwNWMxZDNmMTKXA4QBPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpy +b29tX2tleV93aXRoaGVsZDo6Um9vbUtleVdpdGhoZWxkQ29udGVudCBhcyBzZXJkZTo6c2VyOjpT +ZXJpYWxpemU+OjpzZXJpYWxpemU6Omg4Y2UwNzE5MzhiZmFhYzBkmAMzYWxsb2M6OnN5bmM6OkFy +YzxULEE+Ojpkcm9wX3Nsb3c6OmhlMGYzY2QxZTdkOGZiNDg0mQNUd2FzbV9iaW5kZ2VuX2Z1dHVy +ZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmgyYjg5NGVh +YjE1ZThiODJhmgMwYWVzOjpzb2Z0OjpmaXhzbGljZTo6Yml0c2xpY2U6OmhiNTg4NDJjMmJmNmQ0 +OTA4mwM7YWVzOjpzb2Z0OjpmaXhzbGljZTo6YWVzMjU2X2tleV9zY2hlZHVsZTo6aDY1NjEwZjM2 +MzdjZWFkNjOcA19tYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVy +aWZpY2F0aW9uUmVxdWVzdDo6cmVjZWl2ZV9kb25lOjpoZGY4NWYyZTA3NWNlZWVmNJ0DZm1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpWZXJpZmljYXRpb25SZXF1ZXN0 +OjphY2NlcHRfd2l0aF9tZXRob2RzOjpoMGI4ZTk0NjYwN2Y4NjIxOJ4DY21hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpWZXJpZmljYXRpb25SZXF1ZXN0OjpjYW5jZWxf +d2l0aF9jb2RlOjpoYTQwYjI4MGZkMGFiZDQ2ZJ8DTGl0ZXJ0b29sczo6Z3JvdXBieWxhenk6Okdy +b3VwSW5uZXI8SyxJLEY+OjpzdGVwX2J1ZmZlcmluZzo6aDNkNTQyNTQxN2RjZTJkMjWgA9YBPHJ1 +bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6YWNjZXB0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmFjY2VwdDo6 +U2FzVjFDb250ZW50Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6 +VmlzaXRvcj46OnZpc2l0X2J5dGVzOjpoNGQxMTYzNWQ2NDM4MmI2M6EDMmFsbG9jOjpzdHI6Ojxp +bXBsIHN0cj46OnJlcGxhY2U6OmgzYzMzMjIzYmRhZjZmZDkzogOpATxtYXRyaXhfc2RrX2luZGV4 +ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjppbmJvdW5kX2dyb3VwX3Nlc3Npb25f +Y291bnRzOjp7e2Nsb3N1cmV9fTo6aDk5MWRkOThkMWE4MzczZGWjA1ZtYXRyaXhfc2RrX2NyeXB0 +bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5nOjpVc2VyU2lnbmluZzo6c2lnbl91c2VyOjpoYjdk +NGE2MTUxNGZiOTk3MqQDngE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5k +ZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNy +eXB0b1N0b3JlPjo6Z2V0X3VzZXJfaWRlbnRpdHk6Ont7Y2xvc3VyZX19OjpoNWNiYTI1YmEyMWRj +NzVhZaUDbG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJ +bmJvdW5kR3JvdXBTZXNzaW9uOjpwaWNrbGU6Ont7Y2xvc3VyZX19OjpoODE0MTRjNmI3NjI5MmJj +MaYDpwE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRv +U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6 +Z2V0X3NlY3JldF9yZXF1ZXN0X2J5X2luZm86Ont7Y2xvc3VyZX19OjpoZjVlYmIxNTYyMjEwMzA2 +YqcDLGNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpwYWQ6OmgzNzIzNjNkOTI0N2IwOTE1qANlPCZtdXQg +c2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +cj46OmRlc2VyaWFsaXplX21hcDo6aDY3OWEwYjA0ZDQ0MWNkMDapAzNjb3JlOjpzdHI6OmNvdW50 +Ojpkb19jb3VudF9jaGFyczo6aDEzOTcxNTZhZTY3MTQ0NGOqA0BzZXJkZV9qc29uOjpkZTo6RGVz +ZXJpYWxpemVyPFI+OjppZ25vcmVfdmFsdWU6Omg5NTMyNzY4MTZlOTJiNzM3qwNAc2VyZGVfanNv +bjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6aWdub3JlX3ZhbHVlOjpoN2U0ZjBjNmRlZGIzZTQ1NawD +QHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46Omlnbm9yZV92YWx1ZTo6aDIyNzY3YTY0 +YmUyNzJlMzWtA0Y8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6 +Y2xvbmU6Omg5OGYwZWU3YzUzYWQ0M2YyrgNwbWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19z +dG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmU6Om9wZW5fd2l0aF9zdG9yZV9jaXBoZXI6Ont7Y2xv +c3VyZX19OjpoNTVkMzhlNGE1YWNiNzAyN68DR21hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6 +U3RvcmVDaXBoZXI6OmV4cGFuZF9rZXk6OmgzNDU2MDVjMGRlZThmOTYzsAM/dG9raW86OnN5bmM6 +Om5vdGlmeTo6Tm90aWZpZWQ6OnBvbGxfbm90aWZpZWQ6OmhlMjM0M2FhMTcwMzc4NTQwsQOCAWVk +MjU1MTlfZGFsZWs6OnNpZ25pbmc6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208Jlt1ODsgX10+ +IGZvciBlZDI1NTE5X2RhbGVrOjpoYXptYXQ6OkV4cGFuZGVkU2VjcmV0S2V5Pjo6ZnJvbTo6aDQ3 +NDc2NDE1ZTQzZDgzNTSyA3Q8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp2b2lwX3ZlcnNpb25f +aWQ6OlZvaXBWZXJzaW9uSWQgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXpl +OjpoNWMwMzFjMjg5NWQyYjNmZbMDnQE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9y +ZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFp +dHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3VzZXJfZGV2aWNlczo6e3tjbG9zdXJlfX06Omg2NjExZDJk +NzFlMzA5YzZltANabWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZl +cmlmaWNhdGlvbjo6cmVjZWl2ZV9jYW5jZWw6Omg5MmUyMGIzNmM2NTM0MWMwtQPUATxydW1hX2V2 +ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0YXJ0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2Vy +aWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0YXJ0OjpTYXNWMUNv +bnRlbnQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9y +Pjo6dmlzaXRfYnl0ZXM6OmhmYzc1NDdjMDgyMzNiYzA4tgN1bWF0cml4X3Nka19pbmRleGVkZGI6 +OmNyeXB0b19zdG9yZTo6aW5kZXhlZGRiX3NlcmlhbGl6ZXI6OkluZGV4ZWRkYlNlcmlhbGl6ZXI6 +Om1heWJlX2VuY3J5cHRfdmFsdWU6OmhjYjU1ZDNhZGRiMTYwMzYxtwNmY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6aW5uZXJfc2Fz +OjpJbm5lclNhcz46OmgxOTcyZWU2YTI2MDBjN2RmuAOmATxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6 +Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpnZXRfaW5ib3VuZF9ncm91cF9zZXNzaW9uOjp7 +e2Nsb3N1cmV9fTo6aGNhZDExOWE2YTZjZDljZjC5A25tYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRp +dGllczo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjpnZXRfdXNlcl9zaWduaW5nX2tleV9mcm9t +X3Jlc3BvbnNlOjpoNGYwMjA3NDgxZDNlNzJmMroDMTxzdHIgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDMzYWFjNzM4OTBlMWNkYza7A3hjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4 +X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmhhbmRsZV90b19kZXZpY2VfZXZlbnQ6 +Ont7Y2xvc3VyZX19Pjo6aGI4YWY0M2E0OWQ4YTYzMjS8A0xhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpzZXQ6OkJUcmVlU2V0PFQsQT46OmRpZmZlcmVuY2U6OmgzNTk5YjU0ZWNjMzg1ZjVkvQNM +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0OjpCVHJlZVNldDxULEE+OjpkaWZmZXJlbmNl +OjpoMzVhNDU4NmI2MDk2NWE0ML4DhQFydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6Xzo6PGlt +cGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6 +TWVzc2FnZVR5cGU+OjpzZXJpYWxpemU6Omg3YmRlY2YwODVlYzhjYzk1vwNxbWF0cml4X3Nka19j +cnlwdG86OmlkZW50aXRpZXM6OnVzZXI6Ok93blVzZXJJZGVudGl0eTo6cmVxdWVzdF92ZXJpZmlj +YXRpb25faGVscGVyOjp7e2Nsb3N1cmV9fTo6aDhiZTFlZTU1NDFiZGEzNTHAA6kBPG1hdHJpeF9z +ZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9vdXRnb2luZ19z +ZWNyZXRfcmVxdWVzdHM6Ont7Y2xvc3VyZX19OjpoMGEzZGZhYTI2YjdhMTVjMcEDMXNlcmRlX2pz +b246OnJlYWQ6OnBhcnNlX2VzY2FwZTo6aDFlNWE1M2QzYTBkNzA4NWXCA01tYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OlN0b3JlQ2FjaGU6OmFjY291bnQ6Ont7Y2xvc3VyZX19OjpoYmE1ZDEyNGIx +OWE4Y2RhM8MDMGJsYWtlMzo6Y29tcHJlc3Nfc3VidHJlZV93aWRlOjpoODM0Mzc3MjhmNjkzOGY3 +OcQDngE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRv +U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6 +Z2V0X3dpdGhoZWxkX2luZm86Ont7Y2xvc3VyZX19OjpoZDcwMWEzZjk3OWMwMGExN8UDogE8c2Vy +ZGVfanNvbjo6dmFsdWU6OmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBzZXJk +ZV9qc29uOjp2YWx1ZTo6VmFsdWU+OjpkZXNlcmlhbGl6ZTo6VmFsdWVWaXNpdG9yIGFzIHNlcmRl +OjpkZTo6VmlzaXRvcj46OnZpc2l0X21hcDo6aDkxNmFjYjJiYmI4NjNkZGPGA0Jjb3JlOjpudW06 +OmZsdDJkZWM6OnN0cmF0ZWd5OjpkcmFnb246Om11bF9wb3cxMDo6aDBiM2Q1ZDM5MTE0MzlhMznH +A50BPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0 +b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Om5l +eHRfYmF0Y2hfdG9rZW46Ont7Y2xvc3VyZX19OjpoYzA1ZDViYzMxMjdiMzkyYcgDUnZvZG96ZW1h +Yzo6b2xtOjpzZXNzaW9uOjpyZWNlaXZlcl9jaGFpbjo6UmVjZWl2ZXJDaGFpbjo6ZGVjcnlwdDo6 +aDU2NTAyNjk1MTBlMzFkOGPJA2c8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OkZsYXRTdHJ1Y3RBY2Nl +c3M8RT4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmgxZDQzYmZi +MTk5ZTE1ZWQwygNCY29yZTo6Zm10OjpmbG9hdDo6ZmxvYXRfdG9fZGVjaW1hbF9jb21tb25fZXhh +Y3Q6OmhmZDllMjJlYTA2Y2MwZTVmywOeATxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0 +b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRy +YWl0czo6Q3J5cHRvU3RvcmU+OjpnZXRfcm9vbV9zZXR0aW5nczo6e3tjbG9zdXJlfX06OmhhYWQ2 +MmNmNmY1YWQyOTY3zANbYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5n +Q29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX3JpZ2h0OjpoNTY5OWEwOGJmNjgyNzI1Ns0DnQE8bWF0 +cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMg +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X2N1c3Rv +bV92YWx1ZTo6e3tjbG9zdXJlfX06Omg4ZWQ3MTY0NDViYjQ0MmU5zgNUd2FzbV9iaW5kZ2VuX2Z1 +dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmhmNDMw +ZjljYjMwZTc5OTFlzwObATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0b3JlOjpN +ZW1vcnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3Rv +cmU+Ojp0cnlfdGFrZV9sZWFzZWRfbG9jazo6e3tjbG9zdXJlfX06OmgzMzBkMTY5MjI2MzJiMzA1 +0ANbPGFlczo6c29mdDo6QWVzMjU2IGFzIGNpcGhlcjo6YmxvY2s6OkJsb2NrRW5jcnlwdD46OmVu +Y3J5cHRfd2l0aF9iYWNrZW5kOjpoNjA3MjY5ZGY4N2JlODVlMtEDMWFlczo6c29mdDo6Zml4c2xp +Y2U6OnN1Yl9ieXRlczo6aDUyZDczZGVkZDdiMWE2MGbSA6cBPG1hdHJpeF9zZGtfaW5kZXhlZGRi +OjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF91bnNlbnRfc2VjcmV0X3JlcXVlc3Rz +Ojp7e2Nsb3N1cmV9fTo6aGViMjE3MDk2MzQ0MjUwMznTAzBwcm9zdDo6ZW5jb2Rpbmc6OmJ5dGVz +OjptZXJnZTo6aDRlM2U3OWU0MzJhYjQ3OWPUAy1zZXJkZV9qc29uOjpzZXI6OnRvX3N0cmluZzo6 +aGQxNjA2MzdjODAxNWEwOTTVAy9zZXJkZV9qc29uOjpzZXI6OnRvX3N0cmluZzo6aGQxNjA2Mzdj +ODAxNWEwOTQuMdYDPmN1cnZlMjU1MTlfZGFsZWs6OnNjYWxhcjo6U2NhbGFyOjpmcm9tX2hhc2g6 +OmgxYTllZWViODdiMjUzZmY11wOjATxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3Jl +OjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6Q3J5cHRvU3RvcmU+OjpnZXRfc2VjcmV0c19mcm9tX2luYm94Ojp7e2Nsb3N1cmV9fTo6aDc0 +NDdjZGRiZmNmM2NjNTbYA1phbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNp +bmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfbGVmdDo6aDQzNDQ4ZGE5MWI5YmEzMDLZAzRydXN0 +Y19kZW1hbmdsZTo6djA6OlBhcnNlcjo6aWRlbnQ6OmgzZWYxZjQ4MTgyMDEyNjE22gM6Y29yZTo6 +bnVtOjpiaWdudW06OkJpZzMyeDQwOjptdWxfZGlnaXRzOjpoMDY2MjlhNzcyYTkxZWEwNdsDajxt +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZCBh +cyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGMxYTNiNDI1MDQxNGI0ZjDcA6EBPG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1lbW9yeVN0b3JlIGFzIG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9zZWNyZXRfcmVxdWVz +dF9ieV9pbmZvOjp7e2Nsb3N1cmV9fTo6aDAzODgxNjg0ZGJhYTMxMWHdA2M8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aDAzZjQxMDRmMTI1NmVkZTPeA2M8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6 +aGUzNmRiMTA1OWNjMmNmZDbfA2U8c2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6RGVzZXJpYWxpemVy +IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfYW55OjpoOThkMjI2MTRk +YzUxNWQwM+ADYDx0b2tpbzo6c3luYzo6YmF0Y2hfc2VtYXBob3JlOjpBY3F1aXJlIGFzIGNvcmU6 +OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpoODVkOTgxMjJkZmNiNmVkNeEDdjxzZXJk +ZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudERlc2VyaWFsaXplcjxFPiBhcyBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX2FueTo6aGU5MDU5NDIxMzRhN2Y3Zjni +A1FtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uOjpkZWNyeXB0Ojp7e2Ns +b3N1cmV9fTo6aDM4YjAzZjExNTI0MTQ1YTHjA5ABPGRpZ2VzdDo6Y29yZV9hcGk6OmN0X3Zhcmlh +YmxlOjpDdFZhcmlhYmxlQ29yZVdyYXBwZXI8VCxPdXRTaXplLE8+IGFzIGRpZ2VzdDo6Y29yZV9h +cGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6Omg4YWUzMWJiZjBjN2M3 +ZDA05ANPbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM6OnJlY2VpdmVf +YW55X2V2ZW50OjpoYjg1NTllYzM0YWJlYzQ1OeUDU21hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNl +c3Npb246OlNlc3Npb246OmRlY3J5cHQ6Ont7Y2xvc3VyZX19OjpoMzhiMDNmMTE1MjQxNDVhMS4x +5gNZdm9kb3plbWFjOjpvbG06OmFjY291bnQ6Om9uZV90aW1lX2tleXM6Ok9uZVRpbWVLZXlzOjpp +bnNlcnRfc2VjcmV0X2tleTo6aDM2Y2U3MTU5OTlkYjgzYmPnA1BtYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjpzYXM6OmhlbHBlcnM6OmV4dHJhX2luZm9fc2FzOjpoNDEwNzcwNDI5ZGM1 +YmUxMOgDIm9sbW1hY2hpbmVfZGVjcnlwdEV4cG9ydGVkUm9vbUtleXPpA2FtYXRyaXhfc2RrX2Ny +eXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdDo6cmVjZWl2 +ZV9jYW5jZWw6Omg0MDBhZDQ4ZWE3NzA5MWU56gNmPHJ1bWFfY29tbW9uOjpjYW5vbmljYWxfanNv +bjo6dmFsdWU6OkNhbm9uaWNhbEpzb25WYWx1ZSBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6 +OmhjMzM5ZGUwMzhkZTc2NGM26wNFY29yZTo6Y2hhcjo6bWV0aG9kczo6PGltcGwgY2hhcj46OmVz +Y2FwZV9kZWJ1Z19leHQ6OmhiYTI4ZTEyY2QwMGFjZjUw7ANOcnVzdGNfZGVtYW5nbGU6OnYwOjpQ +cmludGVyOjpwcmludF9wYXRoX21heWJlX29wZW5fZ2VuZXJpY3M6OmhhMDU5NmU0NjVjMmJjNWQ1 +7QOqAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnJlbW92ZTo6PGltcGwgYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+OjpyZW1vdmVfbGVhZl9rdjo6 +aGI2MTc1NTU0ODYwMmJkNjHuA6oCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3ZlOjo8 +aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46 +OnJlbW92ZV9sZWFmX2t2OjpoYzU3YWY5NzlmMDgxZWNiN+8DXGN1cnZlMjU1MTlfZGFsZWs6OmJh +Y2tlbmQ6OnNlcmlhbDo6dTMyOjpmaWVsZDo6RmllbGRFbGVtZW50MjYyNTo6YXNfYnl0ZXM6Omg0 +MWZiMjBhMmRiMzdhOWI18AM1Y29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZF9pbnRlZ3JhbDo6aGM3 +MDExMTA2NjM1MmE0NzPxA2BtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjptaWdy +YXRpb25zOjpNaWdyYXRpb25EYjo6bmV3Ojp7e2Nsb3N1cmV9fTo6aDc5MTJmZDFmYmFjYzgxNGTy +A2BtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9u +UmVxdWVzdDo6cmVjZWl2ZV9yZWFkeTo6aDExNmFjZTk3M2FhYTIxOWLzAzFjb3JlOjpmbXQ6Om51 +bTo6cGFyc2VfdTY0X2ludG86Omg1YTllMjFiZTc5ODAwZDQz9AOqAmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6OnJlbW92ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpLVj4+OjpyZW1vdmVfbGVhZl9rdjo6aGZjYzNmNTU1M2U5YjAyOGL1Ax1v +bG1tYWNoaW5lX3JlY2VpdmVTeW5jQ2hhbmdlc/YDgAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6SWRlbnRpdGllc0JlaW5nVmVyaWZpZWQ6 +Om1hcmtfYXNfZG9uZTo6e3tjbG9zdXJlfX0+OjpoOTBkMjc4YTMwNmI4ZDBhZfcDW2NvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6ZW51bXM6OkFueU1lc3NhZ2VMaWtlRXZlbnRD +b250ZW50Pjo6aGIxM2E1NzQ5MWRlOWY5MWL4A1JtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0 +aW9uOjpyZXF1ZXN0czo6SW5uZXJSZXF1ZXN0OjpjYW5jZWw6OmhkNzY1MjQzODRlMzNjYzY0+QNT +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+Ojpk +b19tZXJnZTo6aGRlZjEwMDk0Y2ExNGRmY2b6A0dydXN0Y19kZW1hbmdsZTo6djA6OlByaW50ZXI6 +OnByaW50X2NvbnN0X3N0cl9saXRlcmFsOjpoN2EwOTBlNTNkYzVhNGI1YfsDqgJhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpyZW1vdmU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6cmVtb3ZlX2xlYWZfa3Y6Omg0OTZhM2E0ZDRlNTk4 +ODVm/ANbbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6VXNlckRldmljZXM6 +OmRldmljZXM6Ont7Y2xvc3VyZX19OjpoODFhMWMzNzMxZTE3ZjMyMf0DggFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6SWRlbnRpdGllc0Jl +aW5nVmVyaWZpZWQ6Om1hcmtfYXNfZG9uZTo6e3tjbG9zdXJlfX0+OjpoOTBkMjc4YTMwNmI4ZDBh +ZS4x/gOqAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnJlbW92ZTo6PGltcGwgYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpN +dXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+OjpyZW1vdmVfbGVhZl9r +djo6aDg4MGM0YmVmZGY4Y2UzMzP/A6oCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3Zl +Ojo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktW +Pj46OnJlbW92ZV9sZWFmX2t2OjpoZjNkNDYxM2EyNzlmY2JiYoAEcDx0cmFjaW5nX3N1YnNjcmli +ZXI6OmZtdDo6Zm9ybWF0OjpEZWZhdWx0VmlzaXRvciBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpW +aXNpdD46OnJlY29yZF9kZWJ1Zzo6aDUxZjlhYjc5NjNlZTA1ZTCBBKUBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGNvcmU6OnBpbjo6UGluPGFsbG9jOjpib3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5 +cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OmhhbmRsZV9rZXlfcmVxdWVz +dDo6e3tjbG9zdXJlfX0+Pj46OmgzNzc5ZTlmZTY2ODgxNDE1ggRlPCZtdXQgc2VyZGVfanNvbjo6 +ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFs +aXplX21hcDo6aGQ4MjE4MmYyN2YzMDk1M2KDBGU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJp +YWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpo +NDhhYmNjZjhlMzY5MzkxM4QENGFlczo6c29mdDo6Zml4c2xpY2U6Omludl9iaXRzbGljZTo6aGVk +YmZiN2VhY2FiZjNjODCFBFthbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNp +bmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfcmlnaHQ6Omg1NTgyYjYzMTlmMmIyNmRjhgQ1YWVz +Ojpzb2Z0OjpmaXhzbGljZTo6aW52X3N1Yl9ieXRlczo6aGE4NzNmMmM2MDNjYjQ3MmOHBGU8Jm11 +dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoNTQ2OTgyYWQ5NDZhMjY4Y4gEZTwmbXV0IHNlcmRlX2pz +b246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNl +cmlhbGl6ZV9tYXA6OmgzMmRhZjYyNGJlMzkwODA4iQRlPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRl +c2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21h +cDo6aDllZjg5OTIxNDFlYzc1MmWKBGU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVy +PFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoMWU5NzQ3 +YTY1MWQ4ODQ3NosEW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0Nv +bnRleHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aGUyZDZlNjNkMzliNjY3YTWMBFthbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3Rl +YWxfcmlnaHQ6OmgyNGNkYTk3Y2I4MDMyZDQzjQQYcm9vbWtleWltcG9ydHJlc3VsdF9rZXlzjgRO +bWF0cml4X3Nka19jcnlwdG86OmNpcGhlcnM6OkFlc0htYWNTaGEyS2V5OjphcHBseV9rZXlzdHJl +YW06OmhjZTdhNDU3NWM3ZGU2NjYyjwQxY29yZTo6c3RyOjpjb252ZXJ0czo6ZnJvbV91dGY4Ojpo +YmM0ODZhNWE4NGZlZDNjZZAEZW1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291 +bnQ6OmRlY3J5cHRfb2xtX3YxOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmhjNDY4M2RmM2M3 +YjVhNGZlkQTKAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6 +dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1h +Y2hpbmU6OmdldF9taXNzaW5nX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9taXNzaW5nX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fSx3 +YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojp7e2Nsb3N1cmV9fT4+OjpoN2M2YzJjM2IyMDQzNDI4ZZIE +MDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMGViNjcwODBjMjI4MmJkNZMEmAE8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3dpdGhoZWxkX2lu +Zm86Ont7Y2xvc3VyZX19OjpoZjkwZDQzYjcyMDMxMmJhMZQEVjxydW1hX2NvbW1vbjo6dGltZTo6 +U2Vjb25kc1NpbmNlVW5peEVwb2NoIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlMzQ3ZmQ1 +MzY5YmQ4MGRllQRcbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6Z2V0X2RldmljZV9m +cm9tX2N1cnZlX2tleTo6e3tjbG9zdXJlfX06OmhiOTUwNTIyZmMwY2U4Mjc3LjGWBHM8bWF0cml4 +X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5OjpSb29tS2V5Q29udGVudCBhcyBz +ZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6Omg0MGE4MzYyZmQwNDRkZGI3lwSGATxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6Zm9yd2FyZGVkX3Jvb21fa2V5OjpGb3J3 +YXJkZWRSb29tS2V5Q29udGVudCBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6 +OmgxMDMyZDdkZTVmMjc5ODlimAQ4ZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6ZnJl +ZTo6aDk5NDIxZTc2ZWQzZGJjMDaZBGBtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNo +aW5lOjpHb3NzaXBNYWNoaW5lOjpyZXF1ZXN0X21pc3Npbmdfc2VjcmV0czo6aGE4ZDEwODRlNmM2 +N2I4Y2WaBGBjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnUzMjo6ZmllbGQ6OkZp +ZWxkRWxlbWVudDI2MjU6OnNxdWFyZV9pbm5lcjo6aDQyNGZjZGMxMDAyYzY5YzmbBF5tYXRyaXhf +c2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25TdG9yZTo6Z2V0X2RldmljZTo6 +e3tjbG9zdXJlfX06Omg5MTk2ZGE5MjVlMTYwZWY4nARgbWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6VmVyaWZpY2F0aW9uU3RvcmU6OmdldF9kZXZpY2U6Ont7Y2xvc3VyZX19OjpoOTE5 +NmRhOTI1ZTE2MGVmOC4xnQRgbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6VmVyaWZp +Y2F0aW9uU3RvcmU6OmdldF9kZXZpY2U6Ont7Y2xvc3VyZX19OjpoOTE5NmRhOTI1ZTE2MGVmOC4y +ngRibWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpjYWNoZXM6OlVzZXJzRm9yS2V5UXVlcnk6Om1h +eWJlX3JlZ2lzdGVyX3dhaXRpbmdfdGFzazo6aDFhYmY1MDI5MTU0NTgyOWKfBFphbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxf +bGVmdDo6aDI1ZTEyOWU4ODk0MWIyZTigBExpdGVydG9vbHM6Omdyb3VwYnlsYXp5OjpHcm91cElu +bmVyPEssSSxGPjo6c3RlcF9idWZmZXJpbmc6Omg0NTVlM2MzOWQyMTlkYzE3oQRdY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjplbnVtczo6QW55TWVzc2FnZUxpa2VFdmVudENv +bnRlbnQ+OjpoMTZjNjc0YTAzOGRjMjRkMC4xogRaYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX2xlZnQ6OmgwZmYxMTQxMGY2 +MjIwYzQyowRMbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6dHJhbnNhY3Rpb246Ont7 +Y2xvc3VyZX19OjpoM2ZjZmZmYWVjM2Y2MzM0N6QETm1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +U3RvcmU6OnRyYW5zYWN0aW9uOjp7e2Nsb3N1cmV9fTo6aDNmY2ZmZmFlYzNmNjMzNDcuMaUETm1h +dHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OnRyYW5zYWN0aW9uOjp7e2Nsb3N1cmV9fTo6 +aDNmY2ZmZmFlYzNmNjMzNDcuMqYEyQE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6 +OnJvb21fa2V5X3dpdGhoZWxkOjpSb29tS2V5V2l0aGhlbGRDb250ZW50IGFzIGNvcmU6OmNvbnZl +cnQ6OlRyeUZyb208bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dp +dGhoZWxkOjpXaXRoaGVsZEhlbHBlcj4+Ojp0cnlfZnJvbTo6aDNmMDM4OTBjYTRiMGMyYWOnBKoC +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYs +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoMjIw +ODdhNTRmZTY2YTE5MKgEWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2lu +Z0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoYmQzZDc2NmE0MjgwYTJiYakERWNvcmU6 +OmZtdDo6ZmxvYXQ6OmZsb2F0X3RvX2RlY2ltYWxfY29tbW9uX3Nob3J0ZXN0OjpoNzQ3Y2U0M2U2 +ZGU5ZWU5NaoEiQJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjphYm9ydGFi +bGU6OkFib3J0YWJsZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6ZnV0dXJlOjpyZW1vdGVfaGFuZGxl +OjpSZW1vdGU8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lv +bnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3VyZX19 +Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Pj46OmhhMDZmOTk2ZGI5Y2E3NDYyqwRUd2FzbV9i +aW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJl +fX06OmhiZDNkMzc3ZTBmNjgxMTg3rARvc2VyZGVfanNvbjo6dmFsdWU6OnNlcjo6PGltcGwgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzZXJkZV9qc29uOjp2YWx1ZTo6VmFsdWU+OjpzZXJpYWxp +emU6OmgyMTYzYjJlZThiNmJjN2I1rQRLaXRlcnRvb2xzOjpncm91cGJ5bGF6eTo6R3JvdXBJbm5l +cjxLLEksRj46Omxvb2t1cF9idWZmZXI6Omg2OGFhY2U3NmRjOTVhMjQ2rgSqAmFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6OnJlbW92ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+OjpyZW1vdmVfbGVhZl9rdjo6aGYxOTVlYmRkMjBkMjBi +ODavBF5tYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6d2FpdF9pZl91c2Vy +X3BlbmRpbmc6Ont7Y2xvc3VyZX19OjpoY2U2M2QyNmEyY2EzYTk0Mi4xsAQjY29yZTo6Zm10Ojp3 +cml0ZTo6aGM0N2U1YjBkZGFkZWFmMTexBLMBPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnJlcXVl +c3RzOjpLZXlzUXVlcnlSZXF1ZXN0IGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208KGFsbG9jOjpz +dHJpbmc6OlN0cmluZywmbWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3RzOjpLZXlzUXVlcnlSZXF1 +ZXN0KT4+Ojp0cnlfZnJvbTo6aDdhODUwMWU0NzFkOTQwYzOyBLQBPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OnJlcXVlc3RzOjpLZXlzQ2xhaW1SZXF1ZXN0IGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZy +b208KGFsbG9jOjpzdHJpbmc6OlN0cmluZywmcnVtYV9jbGllbnRfYXBpOjprZXlzOjpjbGFpbV9r +ZXlzOjp2Mzo6UmVxdWVzdCk+Pjo6dHJ5X2Zyb206OmgwMjk5NjU1YWMxYzY0M2Q3swSdATxtYXRy +aXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojppc19tZXNzYWdl +X2tub3duOjp7e2Nsb3N1cmV9fTo6aGM0OWY4YjY4ZjQzM2UxN2K0BKoCYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoYTU1ZDYyYTIwZWM5NGU1OLUE +qgJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpyZW1vdmU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEss +VixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6cmVtb3ZlX2xlYWZfa3Y6Omg2 +YjFlNGNkMjI4MWZjYjgwtgRybWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6aW1wb3J0 +X3Jvb21fa2V5czo6e3tjbG9zdXJlfX06Om5ld19zZXNzaW9uX2JldHRlcjo6e3tjbG9zdXJlfX06 +Omg0YmE4YjhkZmNlOWQzNTdjtwRAdG9raW86OnN5bmM6OmJyb2FkY2FzdDo6UmVjZWl2ZXI8VD46 +OnJlY3ZfcmVmOjpoMDI2MWNjYzgxYWZlYzFmYbgEQHRva2lvOjpzeW5jOjpicm9hZGNhc3Q6OlJl +Y2VpdmVyPFQ+OjpyZWN2X3JlZjo6aDMzMTRiOTQ2MTQ1M2FhYWK5BEB0b2tpbzo6c3luYzo6YnJv +YWRjYXN0OjpSZWNlaXZlcjxUPjo6cmVjdl9yZWY6OmhkMmM1NTIxNDRmZTcyMGY3ugRlPCZtdXQg +c2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +cj46OmRlc2VyaWFsaXplX21hcDo6aDRmMDRjYjZhMjI3ZTU5ODW7BKoCYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoYmIxMWEyMDk2MzQ4OGFhYbwE +ZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNl +cmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9tYXA6Omg0YmQ2MDkwYzA2NmUzNjFivQSqAmFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6OnJlbW92ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+OjpyZW1vdmVfbGVhZl9rdjo6aGM4NWEzNGYxODI5 +ZTQ1NjC+BKcBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnBpbjo6UGluPGFsbG9jOjpi +b3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1h +Y2hpbmU6OmhhbmRsZV9rZXlfcmVxdWVzdDo6e3tjbG9zdXJlfX0+Pj46OmgzNzc5ZTlmZTY2ODgx +NDE1LjG/BGU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoY2Q2ZDUyN2Q3NDY0YmQ2N8AEaW1h +dHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6T3V0Ym91bmRH +cm91cFNlc3Npb246OmlzX3NoYXJlZF93aXRoOjpoNDdlNzgxNThjYTkyZTFlNMEEggFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86 +OnZlcmlmaWNhdGlvbjo6ZXZlbnRfZW51bXM6Ok91dGdvaW5nQ29udGVudD4+OjpoZWMxZmE2ZWQz +YTc0YjdkYS4xwgSQATxkaWdlc3Q6OmNvcmVfYXBpOjpjdF92YXJpYWJsZTo6Q3RWYXJpYWJsZUNv +cmVXcmFwcGVyPFQsT3V0U2l6ZSxPPiBhcyBkaWdlc3Q6OmNvcmVfYXBpOjpGaXhlZE91dHB1dENv +cmU+OjpmaW5hbGl6ZV9maXhlZF9jb3JlOjpoOGI0NjliMTFiN2UxMmYwZcMEbGNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpldmVudF9lbnVt +czo6T3V0Z29pbmdDb250ZW50Pjo6aDYwZDlhMjExZmJkODMzYWEuMsQEMDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoNmNhMzE1ODNkYmZhYzU4NMUEqgJhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpyZW1vdmU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Okhh +bmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6S1Y+Pjo6cmVtb3ZlX2xlYWZfa3Y6Omg0NTUyZjc3YjJiODhlY2EwxgRFPHNl +cmRlOjpkZTo6VW5leHBlY3RlZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0MjcwMmRk +NTIyMGQ5MWE4xwRSbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZVRyYW5zYWN0aW9uOjpj +b21taXQ6Ont7Y2xvc3VyZX19OjpoMjJhM2QzYjU2MDNlMjZiYsgEVG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6U3RvcmVUcmFuc2FjdGlvbjo6Y29tbWl0Ojp7e2Nsb3N1cmV9fTo6aDIyYTNkM2I1 +NjAzZTI2YmIuMckEVG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmVUcmFuc2FjdGlvbjo6 +Y29tbWl0Ojp7e2Nsb3N1cmV9fTo6aDIyYTNkM2I1NjAzZTI2YmIuMsoEW2FsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdo +dDo6aDBlY2Y3ZWZlODUzNzI5M2XLBDBjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2Vfc29ydDo6aDUw +NTdhNWUwODBkYzVlZWHMBCdleWViYWxsOjpzdGF0ZTo6d2FrZTo6aDQwMmI0N2U3OTQ5ZjE4MWPN +BFdtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpy +ZXRyeV9rZXlzaGFyZTo6aDVmYzkzODc3NjIyZjE3ODfOBJABPGRpZ2VzdDo6Y29yZV9hcGk6OmN0 +X3ZhcmlhYmxlOjpDdFZhcmlhYmxlQ29yZVdyYXBwZXI8VCxPdXRTaXplLE8+IGFzIGRpZ2VzdDo6 +Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6Omg0MWIzODRh +MmQyMDEyMGQ5zwSQAW1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6X0RFUklWRV9EaXNwbGF5 +X0ZPUl9FcnJvcjo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciBtYXRyaXhfc2RrX3N0b3Jl +X2VuY3J5cHRpb246OkVycm9yPjo6Zm10OjpoMGEzNWYyMDk2NjU1NGQ2Y9AEZTwmbXV0IHNlcmRl +X2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+Ojpk +ZXNlcmlhbGl6ZV9tYXA6OmgyYzg3ZGVhZjcwMTU3ZTk10QRlPCZtdXQgc2VyZGVfanNvbjo6ZGU6 +OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXpl +X21hcDo6aDJjMmYyZWRlZjI5YTFhM2TSBGU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxp +emVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoNzcw +NmU0NjJmMGQ5NzM0YdMEbm1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVD +cm9zc1NpZ25pbmdJZGVudGl0eTo6c2lnbl9kZXZpY2Vfa2V5czo6e3tjbG9zdXJlfX06OmhlMzk1 +ZjI3YTg2YzE4ZDhk1ASfATxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRl +eGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5 +cHRvU3RvcmU+OjpzYXZlX3RyYWNrZWRfdXNlcnM6Ont7Y2xvc3VyZX19OjpoMmUzZGZkMGVhZjAw +ODg3ONUEkgE8ZGlnZXN0Ojpjb3JlX2FwaTo6Y3RfdmFyaWFibGU6OkN0VmFyaWFibGVDb3JlV3Jh +cHBlcjxULE91dFNpemUsTz4gYXMgZGlnZXN0Ojpjb3JlX2FwaTo6Rml4ZWRPdXRwdXRDb3JlPjo6 +ZmluYWxpemVfZml4ZWRfY29yZTo6aDhiNDY5YjExYjdlMTJmMGUuMdYEkgE8ZGlnZXN0Ojpjb3Jl +X2FwaTo6Y3RfdmFyaWFibGU6OkN0VmFyaWFibGVDb3JlV3JhcHBlcjxULE91dFNpemUsTz4gYXMg +ZGlnZXN0Ojpjb3JlX2FwaTo6Rml4ZWRPdXRwdXRDb3JlPjo6ZmluYWxpemVfZml4ZWRfY29yZTo6 +aDhiNDY5YjExYjdlMTJmMGUuMtcEYHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250 +ZW50UmVmRGVzZXJpYWxpemVyPEU+OjpkZXNlcmlhbGl6ZV9pbnRlZ2VyOjpoNTlkYzYwMTE1ZGY3 +MWEwMtgEWGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6ZW51bXM6OkFueVRv +RGV2aWNlRXZlbnRDb250ZW50Pjo6aDRlZjYzYjRjZjViMTZkODnZBJIBPGRpZ2VzdDo6Y29yZV9h +cGk6OmN0X3ZhcmlhYmxlOjpDdFZhcmlhYmxlQ29yZVdyYXBwZXI8VCxPdXRTaXplLE8+IGFzIGRp +Z2VzdDo6Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6Omg4 +YjQ2OWIxMWI3ZTEyZjBlLjPaBFthbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxh +bmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfcmlnaHQ6Omg3NDMyODkxMDYzZmViYTg52wRS +dm9kb3plbWFjOjptZWdvbG06OnNlc3Npb25fa2V5czo6RXhwb3J0ZWRTZXNzaW9uS2V5OjpkZWNv +ZGVfa2V5OjpoYWUyYmUzMTMwMDdhNzQ4YdwEb3NlcmRlX2pzb246OnZhbHVlOjpzZXI6OjxpbXBs +IHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3Igc2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPjo6c2Vy +aWFsaXplOjpoNzkwNDBhNTJiYWE1YWJhZt0EaGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50cz46 +Omg4ZGY2MGYyYjFiZDM1NTVl3gQ/cnVzdGNfZGVtYW5nbGU6OnYwOjpQcmludGVyOjpwcmludF9k +eW5fdHJhaXQ6OmgzODI1ODI4OGRlY2MxZTFm3wS3ATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpy +ZXF1ZXN0czo6Um9vbU1lc3NhZ2VSZXF1ZXN0IGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208KGFs +bG9jOjpzdHJpbmc6OlN0cmluZywmbWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3RzOjpSb29tTWVz +c2FnZVJlcXVlc3QpPj46OnRyeV9mcm9tOjpoZDFmNjNjZGJjMDA3ZmNlYeAETDxhbnlob3c6OmZt +dDo6SW5kZW50ZWQ8VD4gYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aGJjMTQyYzEw +ODM4OGJjZDHhBDFwcm9zdDo6ZW5jb2Rpbmc6OmRlY29kZV92YXJpbnQ6OmhhOTMyZGJjY2NkNThl +YjUz4gQzcHJvc3Q6OmVuY29kaW5nOjpkZWNvZGVfdmFyaW50OjpoYTkzMmRiY2NjZDU4ZWI1My4x +4wRlPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRl +c2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aDk1YTQ3YzY5YzJkZjc4YWPkBCdleWViYWxs +OjpzdGF0ZTo6d2FrZTo6aDBiN2Y2Y2I3NzY2MWI5MmHlBJABPGRpZ2VzdDo6Y29yZV9hcGk6OmN0 +X3ZhcmlhYmxlOjpDdFZhcmlhYmxlQ29yZVdyYXBwZXI8VCxPdXRTaXplLE8+IGFzIGRpZ2VzdDo6 +Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6OmhmMTc4MTc4 +YzU0ZWQzNzky5gQ2c2VyZGU6OnNlcjo6U2VyaWFsaXplcjo6Y29sbGVjdF9tYXA6Omg1NjYwZTQ5 +MzNlZTg5YTMx5wRPdm9kb3plbWFjOjpzYXM6OkVzdGFibGlzaGVkU2FzOjpjYWxjdWxhdGVfbWFj +X2ludmFsaWRfYmFzZTY0OjpoMzAxZjc4ODIxNjc2YTMyMugEZTxzZXJkZTo6X19wcml2YXRlOjpk +ZTo6RmxhdFN0cnVjdEFjY2VzczxFPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfa2V5 +X3NlZWQ6OmhlMjgxZTI3NjVmZWI5ZWJh6QRlPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFs +aXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aDBk +NWVmZTk2ZjIzOGYzNzfqBEljb3JlOjpuZXQ6OnBhcnNlcjo6UGFyc2VyOjpyZWFkX2lwdjZfYWRk +cjo6cmVhZF9ncm91cHM6OmhlNGY4M2IzMjA3YjMzNTYz6wQ+Y29yZTo6Zm10OjpGb3JtYXR0ZXI6 +OndyaXRlX2Zvcm1hdHRlZF9wYXJ0czo6aDg2MWEwMWExM2QyYTY4YmPsBDBjb3JlOjpzbGljZTo6 +c29ydDo6bWVyZ2Vfc29ydDo6aGU3ZTcxNWQ4NmNhZWUyMjjtBDBjb3JlOjpzbGljZTo6c29ydDo6 +bWVyZ2Vfc29ydDo6aGVkMjYyNWJkZmY3NWNkNTjuBDBjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2Vf +c29ydDo6aGY1YmJkMDNkMDVmNWFlYjHvBGU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxp +emVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoZDIy +MDE3YmRlOTkzYTkwY/AEygE8cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Xzo6PGltcGwg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6 +RW5jcnlwdGVkRXZlbnRTY2hlbWU+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2Vy +ZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYnl0ZXM6OmgyNWIxYjc5MzJlMDE4ZTRi8QRKbWF0cml4 +X3Nka19jcnlwdG86Omdvc3NpcGluZzo6R29zc2lwUmVxdWVzdDo6dG9fcmVxdWVzdDo6aDkyOTUy +YTc5ZDFjZTI0NGLyBGg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29y +ZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNmYzMWFmZjU1NGZm +ODJkNPMEkAE8ZGlnZXN0Ojpjb3JlX2FwaTo6Y3RfdmFyaWFibGU6OkN0VmFyaWFibGVDb3JlV3Jh +cHBlcjxULE91dFNpemUsTz4gYXMgZGlnZXN0Ojpjb3JlX2FwaTo6Rml4ZWRPdXRwdXRDb3JlPjo6 +ZmluYWxpemVfZml4ZWRfY29yZTo6aDQ0ZDU1NWVmYmRkZGYxZDH0BDZzZXJkZTo6c2VyOjpTZXJp +YWxpemVyOjpjb2xsZWN0X21hcDo6aGUwM2U2OTVkM2E4MmI2NTb1BFphbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfbGVmdDo6 +aDllMDgwODE1MmU3NDNjNjf2BJIBPGRpZ2VzdDo6Y29yZV9hcGk6OmN0X3ZhcmlhYmxlOjpDdFZh +cmlhYmxlQ29yZVdyYXBwZXI8VCxPdXRTaXplLE8+IGFzIGRpZ2VzdDo6Y29yZV9hcGk6OkZpeGVk +T3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6OmhmMTc4MTc4YzU0ZWQzNzkyLjH3BHVt +YXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6SW5ib3VuZEdy +b3VwU2Vzc2lvbjo6ZXhwb3J0X2F0X2luZGV4Ojp7e2Nsb3N1cmV9fTo6aGYzZTY1ZWU1MDMzOWQy +NDD4BHdtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6SW5i +b3VuZEdyb3VwU2Vzc2lvbjo6ZXhwb3J0X2F0X2luZGV4Ojp7e2Nsb3N1cmV9fTo6aGYzZTY1ZWU1 +MDMzOWQyNDAuMfkEM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoZTJhMmQ3Y2Vi +ODQ2ZmZmZfoER3FyY29kZTo6Y2FudmFzOjpDYW52YXM6OmNvbXB1dGVfdG90YWxfcGVuYWx0eV9z +Y29yZXM6OmgzY2M3MDE0Y2JkNDdkOTU2+wQ8Y29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZF9mb3Jt +YXR0ZWRfcGFydHM6OmhmNDM0YTE5ZjI1NWU0OGFi/ARaYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX2xlZnQ6OmgxOWZiMzBh +ZWMwODNkZGUw/QRlPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aGZjNWMxM2IxMTM0YTMxNmb+ +BGg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJh +aXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoOGQ1NDBmMmFiMjVjOWNjMv8EC3Nhc19j +b25maXJtgAWCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxt +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpldmVudF9lbnVtczo6T3V0Z29pbmdDb250 +ZW50Pj46OmhlYzFmYTZlZDNhNzRiN2RhLjKBBUhtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2Nv +dW50OjpBY2NvdW50OjpzaWduZWRfa2V5czo6aDhjMzcyYjQwZjgxZmIyNjOCBWM8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9w +OjpEcm9wPjo6ZHJvcDo6aDVkNmY5ODRmYThlNjQ2N2SDBaQBPG1hdHJpeF9zZGtfY3J5cHRvOjp2 +ZXJpZmljYXRpb246OnFyY29kZTo6UXJWZXJpZmljYXRpb25TdGF0ZSBhcyBjb3JlOjpjb252ZXJ0 +OjpGcm9tPCZtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OklubmVyU3Rh +dGU+Pjo6ZnJvbTo6aDdiMTM3MzA2Mzk0OGIwOGaEBUVzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxp +emVyPFI+OjpwZWVrX2ludmFsaWRfdHlwZTo6aDcxOTQ2ZjRmMTk1YjUxOTmFBUVzZXJkZV9qc29u +OjpkZTo6RGVzZXJpYWxpemVyPFI+OjpwZWVrX2ludmFsaWRfdHlwZTo6aGNmYmZiNjEyMDBhYWVi +ODmGBUVzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjpwZWVrX2ludmFsaWRfdHlwZTo6 +aDY4ZGViM2U0NWY5NWExZmSHBZ0BPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6 +OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpDcnlwdG9TdG9yZT46OnNldF9jdXN0b21fdmFsdWU6Ont7Y2xvc3VyZX19OjpoZmY2MjBiMDU0 +MzdlMDM1MogFcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixB +PiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3VidHJlZTo6aDE5NzJhMzBh +MWQ4YjIyZmGJBUY8dm9kb3plbWFjOjpEZWNvZGVFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+ +OjpmbXQ6OmgxYzFjZjhlNmE1NWNmMTAzigV2PHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50 +OjpDb250ZW50RGVzZXJpYWxpemVyPEU+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVz +ZXJpYWxpemVfbWFwOjpoMzE1ZTkwZmJhN2VjNDA1NYsF9AFtYXRyaXhfc2RrX2NyeXB0bzo6dHlw +ZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OjxpbXBsIGNvcmU6OmNsb25lOjpDbG9uZSBm +b3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnRvX2RldmljZTo6VG9EZXZpY2VF +dmVudDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6 +OlJvb21LZXlXaXRoaGVsZENvbnRlbnQ+Pjo6Y2xvbmU6Omg4ZjVhMWZmNjJmZTYwMjgwjAU5YWxs +b2M6OnN0cmluZzo6U3RyaW5nOjpmcm9tX3V0ZjhfbG9zc3k6Omg1YTczNTdhNzJhNzlkNjk0jQW9 +AW1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6PGltcGwgY29yZTo6Y29udmVy +dDo6VHJ5RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb246Ok91dGdvaW5n +VmVyaWZpY2F0aW9uUmVxdWVzdD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OnRyeV9mcm9t +OjpoNjMxNGQyNzVmNTZiM2FjMo4FU2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJh +bGFuY2luZ0NvbnRleHQ8SyxWPjo6ZG9fbWVyZ2U6OmhjOWJjZWVjZDJkYTU0NzBhjwUuY29yZTo6 +c3RyOjo8aW1wbCBzdHI+OjpmaW5kOjpoZTI4M2Y4OTRiYzFmNTU0ZpAFUzxjb3JlOjpmbXQ6OmJ1 +aWxkZXJzOjpQYWRBZGFwdGVyIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhlNjk2 +Nzg3MjZkYzgyZDc2kQVUY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29t +OjptZXNzYWdlOjpNZXNzYWdlVHlwZT46OmhiMmMxODVlZTViNmExMWM5kgVWY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpNZXNzYWdlVHlwZT46Omhi +MmMxODVlZTViNmExMWM5LjOTBVZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6 +OnJvb206Om1lc3NhZ2U6Ok1lc3NhZ2VUeXBlPjo6aGIyYzE4NWVlNWI2YTExYzkuNZQFbDxtYXRy +aXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6UmVxdWVzdFN0YXRlPFM+IGFz +IGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoNTY0ODBkMjE5MTZjZGQ0YpUFVmNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6TWVzc2FnZVR5cGU+ +OjpoOGI0MmJhODNjOTczZWNjZS4ylgVlPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXpl +cjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aDg2Y2Y4 +NDNhZTBlNDJmYWOXBWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNl +cmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoNjIxOGEzNTQ2NTRlMGU5 +ZJgFeTxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudFJlZkRlc2VyaWFsaXpl +cjxFPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX2FueTo6aDNjMmE3 +NGNkY2VhNTc4ZTOZBYIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OklkZW50aXRpZXNCZWluZ1ZlcmlmaWVkOjptYXJrX2FzX2RvbmU6Ont7 +Y2xvc3VyZX19Pjo6aDkwZDI3OGEzMDZiOGQwYWUuMpoFggFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6SWRlbnRpdGllc0JlaW5nVmVyaWZp +ZWQ6Om1hcmtfYXNfZG9uZTo6e3tjbG9zdXJlfX0+OjpoOTBkMjc4YTMwNmI4ZDBhZS4zmwVcbWF0 +cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OkluYm91bmRHcm91 +cFNlc3Npb246Om5ldzo6aDhiNWVlY2I1MjcxYmRjZWKcBTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDFhMzIzYTRmZmY4MTQ4YzmdBVJtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNh +Y2hlczo6VXNlcnNGb3JLZXlRdWVyeTo6aW5zZXJ0X3VzZXI6OmhkZTA2NmU4ZTY0M2ZjOTJjngWt +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTw8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1v +cnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6 +OkNyeXB0b1N0b3JlPjo6c2F2ZV9jaGFuZ2VzOjp7e2Nsb3N1cmV9fT46Omg3MzJmYjVjZWUwMzIx +NjI2nwVUd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9 +fTo6e3tjbG9zdXJlfX06OmgwNWVhYTg1OWM5MjhiMWM4oAVUd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6 +OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmgxNjljMzE0MDlj +YTJkNTNmoQVUd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1 +cmV9fTo6e3tjbG9zdXJlfX06Omg4M2U3M2QwN2ZhNTQwODY0ogVUd2FzbV9iaW5kZ2VuX2Z1dHVy +ZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06Omg4YTUwNDVh +OTU3M2ZlYmQ3owVbYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29u +dGV4dDxLLFY+OjpidWxrX3N0ZWFsX3JpZ2h0OjpoMzFjODJiYjIyYzFmMDk2M6QFXzxtYXRyaXhf +c2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb24gYXMgY29yZTo6Y2xvbmU6OkNs +b25lPjo6Y2xvbmU6Omg5OGY5MTZmNGNjOWViNDlhpQVWY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpNZXNzYWdlVHlwZT46Omg4YjQyYmE4M2M5NzNl +Y2NlLjSmBTxzaGFyZGVkX3NsYWI6OnRpZDo6UmVnaXN0cmF0aW9uOjpyZWdpc3Rlcjo6aDM2ODg2 +YTczZGU2NmRiYzenBUBydXN0Y19kZW1hbmdsZTo6djA6OlByaW50ZXI6OnByaW50X2NvbnN0X3Vp +bnQ6Omg4ZmJkY2JjMGNmYTRiODkyqAVhbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +cXJjb2RlOjpRclZlcmlmaWNhdGlvbjo6cmVjZWl2ZV9yZWNpcHJvY2F0aW9uOjpoNzM4ZTUzNjcy +NWM4OGJlYqkFWG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNlc3Npb246OlNlc3Npb246OmVuY3J5 +cHRfaGVscGVyOjp7e2Nsb3N1cmV9fTo6aGJhZWU3Yjk2ODUxYWY2OTmqBVptYXRyaXhfc2RrX2Ny +eXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uOjplbmNyeXB0X2hlbHBlcjo6e3tjbG9zdXJlfX06 +OmhiYWVlN2I5Njg1MWFmNjk5LjGrBVthbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpC +YWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfcmlnaHQ6OmhmNzc3OWFiY2RhYTdlYmQ4 +rAVbYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+ +OjpidWxrX3N0ZWFsX3JpZ2h0OjpoMTZmZTcwZDY2ZmJjNGQ5Oa0FVW1hdHJpeF9zZGtfY3J5cHRv +OjppZGVudGl0aWVzOjpkZXZpY2U6OkRldmljZTo6aXNfb3duZXJfb2Zfc2Vzc2lvbjo6aDRkNmJm +MDY3NWQyNjAyYTmuBWE8Y29yZTo6c3RyOjpwYXR0ZXJuOjpDaGFyU2VhcmNoZXIgYXMgY29yZTo6 +c3RyOjpwYXR0ZXJuOjpTZWFyY2hlcj46Om5leHRfbWF0Y2g6OmgwMzNjZGY1ZWZkMDNhY2VjrwVs +PG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OklkZW50aXRpZXNCZWluZ1ZlcmlmaWVk +IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYzFhM2I0MjUwNDE0YjRmMC4xsAVvc2Vy +ZGVfanNvbjo6dmFsdWU6OnNlcjo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzZXJk +ZV9qc29uOjp2YWx1ZTo6VmFsdWU+OjpzZXJpYWxpemU6Omg4ZGRjNDk2YWNlNDE3ZmEzsQVFdm9k +b3plbWFjOjpvbG06Om1lc3NhZ2VzOjptZXNzYWdlOjpNZXNzYWdlOjplbmNvZGU6Omg1ZmY2MDMz +ZTE3OWYyYWEwsgVXbWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmtleXNf +Zm9yX3VwbG9hZDo6e3tjbG9zdXJlfX06OmgyN2FjMmIwMmQ2YzQxNDA2swVObWF0cml4X3Nka19j +b21tb246OmZhaWx1cmVzX2NhY2hlOjpGYWlsdXJlc0NhY2hlPFQ+OjppbnNlcnQ6Omg5MzgxYTkw +NTY2ZjZhNmI2tAVebWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6Z2V0X3JlYWRvbmx5 +X2RldmljZXNfZmlsdGVyZWQ6Ont7Y2xvc3VyZX19OjpoNjEzNTNmZmM2NzMxOGE1ZbUFRnNlcmRl +X3dhc21fYmluZGdlbjo6ZGU6OkRlc2VyaWFsaXplcjo6aW52YWxpZF90eXBlXzo6aDAwZjRlZTgz +OTE1NmI4Zje2BVNhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250 +ZXh0PEssVj46OmRvX21lcmdlOjpoMDhlNDliODM3NTM2MGE4NbcFQGNpcGhlcjo6c3RyZWFtOjpT +dHJlYW1DaXBoZXI6OmFwcGx5X2tleXN0cmVhbTo6aDNmYzM2ZTgxYzRjNzljMmG4BVthbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3Rl +YWxfcmlnaHQ6OmhjYTkzZjY0NWJjOTYyNzAzuQWhAW1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdy +b3VwX3Nlc3Npb25zOjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpFeHBvcnRlZFJvb21LZXk+OjpzZXJpYWxp +emU6OmhkYmQyMTUyNmVkNTM5MzU4ugVfbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +ZXZlbnRfZW51bXM6OkFueUV2ZW50Ojp2ZXJpZmljYXRpb25fY29udGVudDo6aDAwNmI3OWMwZmM2 +MDc3NjW7BVZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206Om1lc3Nh +Z2U6Ok1lc3NhZ2VUeXBlPjo6aGIyYzE4NWVlNWI2YTExYzkuObwFQGNpcGhlcjo6c3RyZWFtOjpT +dHJlYW1DaXBoZXI6OmFwcGx5X2tleXN0cmVhbTo6aDFiOTkzMWUxMDBiNDU5N2S9BSRobWFjOjpn +ZXRfZGVyX2tleTo6aGYxNWVhZTQ0MjNmNjhiMji+BVphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfbGVmdDo6aGQwMjgzNjcz +YzlmYzFjYjG/BVRzZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXpl +IGZvciAmVD46OnNlcmlhbGl6ZTo6aDUyNTU2OGZlODg3MjZiODTABVthbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmJ1bGtfc3RlYWxfcmlnaHQ6 +Omg0NTE4OWY5YmU0ZTQ4MzZiwQVcbWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNj +b3VudDo6Z2VuZXJhdGVfZmFsbGJhY2tfa2V5X2lmX25lZWRlZDo6aDc5MzVjMzIwMjI2ZDA0ZjnC +BVNhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46 +OmRvX21lcmdlOjpoMDU5MWU5YWUzN2U1YjA5McMFSDxybXBfc2VyZGU6OmRlY29kZTo6RXJyb3Ig +YXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMWUyNWI0ZTVmODc4MWIwZcQFVHdhc21fYmlu +ZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19 +OjpoYzk4ZjRlY2QwNDYzYzE1NMUFrAE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9y +ZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFp +dHM6OkNyeXB0b1N0b3JlPjo6ZGVsZXRlX291dGdvaW5nX3NlY3JldF9yZXF1ZXN0czo6e3tjbG9z +dXJlfX06OmgzMjQwYTY5NmNiMjhkZjY2xgVGc2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6RGVzZXJp +YWxpemVyOjppbnZhbGlkX3R5cGVfOjpoYzkzZTJkYTRlNmE0NmNmNscFWmFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0 +OjpoYzRmMzEwNWY5ODM2OGIxNcgFWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJh +bGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoMDdiODFjMTY5YWU5MTVhN8kF +aTx2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6bGlib2xtOjpPbmVUaW1lS2V5IGFzIG1hdHJpeF9w +aWNrbGU6OmRlY29kZTo6RGVjb2RlPjo6ZGVjb2RlOjpoN2JkZTIyM2U5MDJiZjI1Y8oFLnByb3N0 +OjplbmNvZGluZzo6c2tpcF9maWVsZDo6aGZjNjVlNjI0NzIxYWZhMTfLBUZ0cmFjaW5nX2NvcmU6 +OmNhbGxzaXRlOjpDYWxsc2l0ZXM6OnJlYnVpbGRfaW50ZXJlc3Q6Omg1ZDYyYWI1ZGFlNDNkYzE0 +zAWxATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpyZXF1ZXN0czo6VG9EZXZpY2VSZXF1ZXN0IGFz +IGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208KGFsbG9jOjpzdHJpbmc6OlN0cmluZywmbWF0cml4X3Nk +a19jcnlwdG86OnJlcXVlc3RzOjpUb0RldmljZVJlcXVlc3QpPj46OnRyeV9mcm9tOjpoYjQ1YWQw +NWRjMWI5OTNjMM0FvgFtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5i +b3VuZDo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0 +bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6UGlja2xlZEluYm91bmRHcm91cFNlc3Np +b24+OjpzZXJpYWxpemU6OmhkYTQwZmFlMjA4ZmE2MTVlzgVhPGNvcmU6OnN0cjo6bG9zc3k6OlV0 +ZjhDaHVua3MgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0 +OjpoMjVhNDI0MzgxOGVhMWE3Ys8FXDxjb3JlOjp0aW1lOjpEdXJhdGlvbiBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpmbXRfZGVjaW1hbDo6e3tjbG9zdXJlfX06Omg2OGM3Yjk2NjMzNmQ3ZTUx +0AWpAXJ1bWFfZXZlbnRzOjpyb29tOjpyZWRhY3Rpb246OmV2ZW50X3NlcmRlOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cm9vbTo6cmVkYWN0aW9uOjpPcmln +aW5hbFN5bmNSb29tUmVkYWN0aW9uRXZlbnQ+OjpkZXNlcmlhbGl6ZTo6aGI3ODAzYzlhNjkxMzNk +ZjXRBW9zZXJkZV9qc29uOjp2YWx1ZTo6c2VyOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUg +Zm9yIHNlcmRlX2pzb246OnZhbHVlOjpWYWx1ZT46OnNlcmlhbGl6ZTo6aDI5ZWU4ZGM0ZGM3MzU2 +MDnSBW9tYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWduaW5n +SWRlbnRpdHk6OmFzX3VwbG9hZF9yZXF1ZXN0Ojp7e2Nsb3N1cmV9fTo6aDU2ZjY1MjFkYWEzN2Ex +MTDTBWVtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6Z2V0X3VzZXJfZGV2 +aWNlczo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoNjdjYzY0OTVhMzUwNGUwY9QFqAFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cGluOjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0 +cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGluZTo6aGFuZGxl +X3NlY3JldF9yZXF1ZXN0Ojp7e2Nsb3N1cmV9fT4+Pjo6aDM4NWU2YzVhN2M2YmYzNjLVBTtoYXNo +YnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoNzA2NzEyMGZlNjhjOTcyN9YF +UDxhbGxvYzo6dmVjOjpWZWM8VD4gYXMgbWF0cml4X3BpY2tsZTo6ZGVjb2RlOjpEZWNvZGU+Ojpk +ZWNvZGU6OmhhYzBjMTY4NmJkNGI1MDE21wVYY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFf +ZXZlbnRzOjplbnVtczo6QW55VG9EZXZpY2VFdmVudENvbnRlbnQ+OjpoZGJkMGQzMjczNTVhNDY3 +ONgFO3ZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uOjpwaWNrbGU6OmhjNTcyNzU1MzNi +MDZiMTU32QVTYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4 +dDxLLFY+Ojpkb19tZXJnZTo6aDU0OTRlNmVkNmYwMTgwZTbaBZoBbWF0cml4X3Nka19jcnlwdG86 +OnR5cGVzOjpkZXZpY2Vfa2V5czo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXlzPjo6c2VyaWFs +aXplOjpoZDZlYTU4YTQ3YWE0MTc3MdsFWDxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFz +IHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF9rZXlfc2VlZDo6aDFiYTA1YmIzMTNhODBmYmLc +BTRjb3JlOjppdGVyOjphZGFwdGVyczo6dHJ5X3Byb2Nlc3M6OmgzYzIyYWFkOWM3OGUxZjRh3QWm +ATxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9y +ZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpkZWxl +dGVfc2VjcmV0c19mcm9tX2luYm94Ojp7e2Nsb3N1cmV9fTo6aDFjNWExODgzYjVkYzM1ZDTeBXA8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6 +Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1YnRyZWU6OmhhODE1MjU0OGVjMjU1OGQw3wVw +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6 +OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9zdWJ0cmVlOjpoYmVkNWQ3ZTNkZDljNGM1MuAF +Vm1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OnJl +Y2VpdmVfZXZlbnQ6Omg3ZGM5YjE5MzEzOTg5MGMw4QVdc2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNv +bnRlbnQ6OkNvbnRlbnREZXNlcmlhbGl6ZXI8RT46OmRlc2VyaWFsaXplX2ludGVnZXI6OmhiNmM2 +YmRmMGMxNzRiZTk14gU2aXRlcnRvb2xzOjpJdGVydG9vbHM6OnBhcnRpdGlvbl9tYXA6OmgyNTJj +MTM3NDlhOWY1YjRj4wVwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8 +SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9zdWJ0cmVlOjpoOTQ0 +OTQwMzI5NjM5YTU1M+QFogE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6 +RGV2aWNlS2V5cyBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6ZGV2aWNlX2tleXM6OkRldmljZUtleUhlbHBlcj4+Ojp0cnlfZnJvbTo6aDE4YWFhZTFl +OTdiYmIxYjTlBQ5zaWduYXR1cmVzX2dldOYFWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoM2M3OWM1ZjEzMGY3 +OWRlYecFWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8 +SyxWPjo6YnVsa19zdGVhbF9sZWZ0OjpoOWQ5NmVlYjRkYjk2MmYyM+gFOGNvcmU6Om51bTo6Ymln +bnVtOjpCaWczMng0MDo6bXVsX3BvdzI6OmhjZGNmZDlmMGQyMjgyYjQ16QWqAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdDo6cmVj +ZWl2ZV9zdGFydDo6e3tjbG9zdXJlfX0+Pj46OmhmNGY4NmRjODFkNzZiOGVl6gVUd2FzbV9iaW5k +Z2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06 +OmhiYmEwMThjYzJiOGUzMjJk6wVwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1 +cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19 +OjpoMTRhMzc4NzZlMjczZDBlNuwFWTxydW1hX2lkZW50aWZpZXJzX3ZhbGlkYXRpb246OmVycm9y +OjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgyMzNjYWZmYWJhZDViMDFj7QVL +aXRlcnRvb2xzOjpncm91cGJ5bGF6eTo6R3JvdXBJbm5lcjxLLEksRj46Omxvb2t1cF9idWZmZXI6 +OmgyY2MxODYzZGYyNDVkNGFh7gVsPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246Oklk +ZW50aXRpZXNCZWluZ1ZlcmlmaWVkIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYzFh +M2I0MjUwNDE0YjRmMC4y7wVwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVN +YXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9zdWJ0cmVlOjpo +MDA1YzA4NTQ1MDc1NGJjMPAFcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVl +TWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3VidHJlZTo6 +aDNlMTFjYjU3ZGNmNDU4NzXxBXA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJl +ZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1YnRyZWU6 +Omg0ZmFmMDBkNGJlOTU0Zjhi8gVwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRy +ZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9zdWJ0cmVl +OjpoNjA3MmQ5N2RlZTJmY2QwYvMFcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJU +cmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3VidHJl +ZTo6aDdhZjM3ZjhkOTg2ZDBiYmL0BXA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpC +VHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1YnRy +ZWU6OmgwZDFjNGIxMDI2MmM4NDQw9QVwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9zdWJ0 +cmVlOjpoNjdlOThiYjBmMmViZTgwMPYFcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6 +OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3Vi +dHJlZTo6aDgyZWRhNTBlNmM2NGQ4OGP3BXA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFw +OjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1 +YnRyZWU6OmhhZDBkMjhhNzIwMmRmOTQ2+AVwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1h +cDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9z +dWJ0cmVlOjpoYzZlZmE4M2ZlODI0MzQ3ZfkFlwE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpt +ZW1vcnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFp +dHM6OkNyeXB0b1N0b3JlPjo6bmV4dF9iYXRjaF90b2tlbjo6e3tjbG9zdXJlfX06OmgzZjNkYjBi +Mjg4MDEzOTk2+gWXATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0b3JlOjpNZW1v +cnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+ +Ojpsb2FkX2JhY2t1cF9rZXlzOjp7e2Nsb3N1cmV9fTo6aGQxMjBmNzkzOWVkOGRjZWL7BVU8c2Vy +ZGVfanNvbjo6cmVhZDo6U2xpY2VSZWFkIGFzIHNlcmRlX2pzb246OnJlYWQ6OlJlYWQ+OjpwYXJz +ZV9zdHI6OmgwZDA1NTE0MGMwMDI5MDYy/AUcb2xtbWFjaGluZV9tYXJrUmVxdWVzdEFzU2VudP0F +cG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9j +dXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aDYxZjlhNzYzZTQ5MGRiZGX+ +BVg8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46 +Om5leHRfa2V5X3NlZWQ6OmgwNThjZTNkYThlNTY0ZmUy/wVUbWF0cml4X3Nka19jcnlwdG86OnZl +cmlmaWNhdGlvbjo6c2FzOjppbm5lcl9zYXM6OklubmVyU2FzOjpjYW5jZWw6OmhjODcyZmQ1Yzc1 +NTYwMDFjgAaCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVy +aWZpY2F0aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZDo6bWFya19hc19kb25lOjp7e2Nsb3N1 +cmV9fT46Omg5MGQyNzhhMzA2YjhkMGFlLjSBBoIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OklkZW50aXRpZXNCZWluZ1ZlcmlmaWVkOjpt +YXJrX2FzX2RvbmU6Ont7Y2xvc3VyZX19Pjo6aDkwZDI3OGEzMDZiOGQwYWUuNYIGX21hdHJpeF9z +ZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpJbm5lclJlcXVlc3Q6OmNhbmNlbDo6 +e3tjbG9zdXJlfX06Omg5NDczNGYxZDM5MDA0YzBmgwZwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpj +bG9uZV9zdWJ0cmVlOjpoOTdlZWRkYTJiNGNlMTAzYYQGK2NvcmU6OmZtdDo6bnVtOjpmbXRfdTEy +ODo6aDdlN2E3ZDM2ZGI2MDYzMTGFBnA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpC +VHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1YnRy +ZWU6Omg0ZjE3ZDIxOTI0YzcxM2Q2hgZwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9zdWJ0 +cmVlOjpoOTdlM2NiOTY2OGUxYWQ0NocGLWNvcmU6OnNsaWNlOjpzb3J0OjpyZWN1cnNlOjpoZjU2 +MDMyMGQwNWIxYjBmYYgGcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFw +PEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6Y2xvbmVfc3VidHJlZTo6aDg5 +YzJlMjhkOTVhZDg2OTWJBnA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1h +cDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25lX3N1YnRyZWU6Omhh +Mzk4N2ZjYzZmZDdkMWNmigZlbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTeW5jZWRLZXlRdWVy +eU1hbmFnZXI6Om1hcmtfdXNlcl9hc19jaGFuZ2VkOjp7e2Nsb3N1cmV9fTo6aDY3ZThjZTNmM2E0 +NDBlZjGLBmdtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN5bmNlZEtleVF1ZXJ5TWFuYWdlcjo6 +bWFya191c2VyX2FzX2NoYW5nZWQ6Ont7Y2xvc3VyZX19OjpoNjdlOGNlM2YzYTQ0MGVmMS4xjAYt +c2VyZGVfanNvbjo6c2VyOjp0b19zdHJpbmc6Omg0Y2RlMGUyYzY3MzlkYmQwjQYPZGV2aWNlbGlz +dHNfbmV3jgZwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlz +ZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoNzIzZGYxZmMw +NjI4OTUzZY8GRjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+Ojpj +bG9uZTo6aDNmMzg0NzFlN2FkOWUxYzSQBjFzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF9rZXk6 +Omg5MDAwODFlODAyYzM3MDU2kQYxc2VyZGU6OmRlOjpNYXBBY2Nlc3M6Om5leHRfa2V5OjpoYmQw +NDljZWRkNzc4OWQyZJIGcjxzZXJkZTo6X19wcml2YXRlOjpkZTo6QWRqYWNlbnRseVRhZ2dlZEVu +dW1WYXJpYW50VmlzaXRvcjxGPiBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9lbnVtOjpo +OTYyOTZlMDViMDhkMzEwZJMGEmF0dGFjaG1lbnRfZGVjcnlwdJQGWDxzZXJkZV9qc29uOjpkZTo6 +TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF9rZXlfc2VlZDo6aDNm +ZTQ0YzI1NTc0Zjg1YTOVBlg8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6 +ZGU6Ok1hcEFjY2Vzcz46Om5leHRfa2V5X3NlZWQ6Omg1ODBlYmY1ZTNkZDQ3NjFhlgZYPHNlcmRl +X2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X2tl +eV9zZWVkOjpoOTA5MDE4MGRjZWEwZjRiN5cGWDxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+ +IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF9rZXlfc2VlZDo6aDk3Zjk5YjYwZWY1ODBh +OTCYBpgBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1lbW9yeVN0b3Jl +IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF91 +c2VyX2lkZW50aXR5Ojp7e2Nsb3N1cmV9fTo6aGNhMDhlYTYwNDBiMjYwMjCZBlg8c2VyZGVfanNv +bjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfa2V5X3Nl +ZWQ6OmgyNzczM2YzZGRhZGE3ZGY1mgb6AmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVz +X3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmJvb3RzdHJhcF9jcm9zc19zaWduaW5nOjp7e2Nsb3N1cmV9 +fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmJvb3RzdHJhcF9jcm9zc19z +aWduaW5nOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpyZXF1ZXN0czo6Q3Jv +c3NTaWduaW5nQm9vdHN0cmFwUmVxdWVzdHM+Ojp7e2Nsb3N1cmV9fT4+OjpoZTJjZmFkNGMxYTU0 +NDAzZZsGbTxzZXJkZTo6X19wcml2YXRlOjpkZTo6RmxhdE1hcERlc2VyaWFsaXplcjxFPiBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aGQ3ZDhlNjE4NDRjNTZl +MmScBk50b2tpbzo6c3luYzo6YmF0Y2hfc2VtYXBob3JlOjpTZW1hcGhvcmU6OmFkZF9wZXJtaXRz +X2xvY2tlZDo6aDYxMDQ0OWJhZDA0ZGY3NmSdBnA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmNsb25l +X3N1YnRyZWU6OmhkOGM2NDA2MzRiMDU1MTY4ngbnATxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2Fn +ZTo6cmVsYXRpb25fc2VyZGU6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1 +bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpyZWxhdGlvbl9zZXJkZTo6S25vd25SZWxhdGlvbkRl +SGVscGVyPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRv +cj46OnZpc2l0X2J5dGVzOjpoZDIyNTAyOTZmMThlNGUyYp8GQXNlcmRlX2pzb246OmRlOjpEZXNl +cmlhbGl6ZXI8Uj46OnBhcnNlX2ludGVnZXI6OmhmMmEwNDFjOWRlMzc2NTc5oAZTYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+Ojpkb19tZXJnZTo6 +aDVkMDQ4YWZlOTdkOTYxNzehBko8dm9kb3plbWFjOjp0eXBlczo6S2V5RXJyb3IgYXMgY29yZTo6 +Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNTUzMDM5YWU5MGI1NjgzZaIGRHZvZG96ZW1hYzo6b2xtOjpz +ZXNzaW9uOjpTZXNzaW9uOjpkZWNyeXB0X2RlY29kZWQ6OmgyMGQyNmFiMzk1Zjg3MjMwowZTYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+Ojpkb19t +ZXJnZTo6aDkyMzQ1ZmRlYzY0MTAxY2akBlNhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmRvX21lcmdlOjpoMDIwMWMxODU4OWI5Yzg2MqUGU2Fs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6ZG9f +bWVyZ2U6OmgzNDY1MDliNjc1NmYxOTY2pgZpbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBf +c2Vzc2lvbnM6Om91dGJvdW5kOjpPdXRib3VuZEdyb3VwU2Vzc2lvbjo6aXNfd2l0aGhlbGRfdG86 +Omg5M2ZhNzVkNDZiZDVkMDMzpwYvY29yZTo6b3B0aW9uOjpPcHRpb248VD46Om1hcDo6aGJiMGMz +MTg0NGNhZjVlMzWoBnA8dHJhY2luZ19zdWJzY3JpYmVyOjpmbXQ6OmZvcm1hdDo6RGVmYXVsdFZp +c2l0b3IgYXMgdHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ+OjpyZWNvcmRfZXJyb3I6OmgxZWE4 +MjUwYjNjMTNiM2Y0qQZGbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6Y2FjaGU6Ont7 +Y2xvc3VyZX19OjpoMGMwMzA3N2I3YmNiMjNiZKoGSG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +U3RvcmU6OmNhY2hlOjp7e2Nsb3N1cmV9fTo6aDBjMDMwNzdiN2JjYjIzYmQuMasGSG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmNhY2hlOjp7e2Nsb3N1cmV9fTo6aDBjMDMwNzdiN2Jj +YjIzYmQuMqwGwQFtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91 +bmQ6Ol86OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86 +Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpQaWNrbGVkT3V0Ym91bmRHcm91cFNlc3Np +b24+OjpzZXJpYWxpemU6Omg5ODAyN2Y0YjAyYzA4YzZmrQZPY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3I+OjpoYTAyMzU3NTdiMDI0ZGE2 +Oa4GQ2NvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmbGF0dGVuOjphbmRfdGhlbl9vcl9jbGVhcjo6aDE2 +YmNiOTE0YjlkNTlkMjmvBlFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OmVycm9yOjpPbG1FcnJvcj46OmhhMDIzNTc1N2IwMjRkYTY5LjGwBmJtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjp2ZXJpZmljYXRpb246OnNlbmRfY2hhbmdlX2luZm9fdG9fY2FsbGJhY2s6Ont7 +Y2xvc3VyZX19OjpoYzZjYWNiMjE1M2ZlMWU3ZLEGUWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok9sbUVycm9yPjo6aGEwMjM1NzU3YjAyNGRhNjkuMrIG +T21hdHJpeF9zZGtfY3J5cHRvOjpyZXF1ZXN0czo6VG9EZXZpY2VSZXF1ZXN0Ojpmb3JfcmVjaXBp +ZW50czo6aDFjMjJhZTkzNjZlZDM3ZTCzBkttYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNhY2hl +czo6R3JvdXBTZXNzaW9uU3RvcmU6OmFkZDo6aDU5NmI4NDc3NmNjZDg2Zjm0BnA8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNs +b25lPjo6Y2xvbmU6OmNsb25lX3N1YnRyZWU6Omg0NjZhNjQwNmJmY2NjOWYytQYbdmVyaWZpY2F0 +aW9ucmVxdWVzdF9yZXF1ZXN0tgZubWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6 +SW5kZXhlZGRiQ3J5cHRvU3RvcmU6OmRlc2VyaWFsaXplX2luYm91bmRfZ3JvdXBfc2Vzc2lvbjo6 +aDM2MTIzYWNlNGMxN2Q5YTG3BmE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5 +cHRvU3RvcmVFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwYjg2ZDAxZTg0ZTdi +NmY5uAZwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFz +IGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpjbG9uZV9zdWJ0cmVlOjpoMmFlNTY2NjYyZDI3 +MDA3NbkGamNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6 +OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50cz46Omg4ZGY2MGYyYjFiZDM1NTVlLjG6 +Bmpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVu +dHM6OnRvX2RldmljZTo6VG9EZXZpY2VFdmVudHM+OjpoOGRmNjBmMmIxYmQzNTU1ZS4yuwZObWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM6OmNhbmNlbF93aXRoX2NvZGU6 +OmhjNTRjODI2ZWRjMjljMjc1vAZCc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6cGFy +c2VfZXhwb25lbnQ6Omg0NTYyZWUwNTU5MTlhYWQwvQaNAW1hdHJpeF9zZGtfc3RvcmVfZW5jcnlw +dGlvbjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19zdG9y +ZV9lbmNyeXB0aW9uOjpDaXBoZXJUZXh0SW5mbz46OmRlc2VyaWFsaXplOjpoY2IwM2YyNjRiYTk3 +ZDcwML4GW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8 +SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aGIxNDIzYTJmMGQ0Zjk5NTG/Bll2b2RvemVtYWM6Om1l +Z29sbTo6aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpJbmJvdW5kR3JvdXBTZXNzaW9uOjpkZWNyeXB0 +OjpoZmQ0ODc2MmQ5NDJjMTM3NcAGowE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlz +dG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNy +eXB0b1N0b3JlPjo6aW5ib3VuZF9ncm91cF9zZXNzaW9uX2NvdW50czo6e3tjbG9zdXJlfX06Omg2 +M2E1ODNlOWI2NWMwY2I0wQZqaW5kZXhlZF9kYl9mdXR1cmVzOjpyZXF1ZXN0OjpmdXR1cmVzOjpp +ZGJfcmVxdWVzdF9mdXR1cmU6OklkYlJlcXVlc3RGdXR1cmU6Om5ld193aXRoX3JjOjpoOTg1MjI2 +ODc1MDY2MWUzNcIGRXJ1bWFfaWRlbnRpZmllcnNfdmFsaWRhdGlvbjo6c2VydmVyX25hbWU6OnZh +bGlkYXRlOjpoOGE1YzMwNDU5MzA4NTU1ZcMGaGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OmlubmVyX3Nhczo6SW5uZXJTYXM+Ojpo +MTk3MmVlNmEyNjAwYzdkZi4xxAZBZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6ZGlz +cG9zZV9jaHVuazo6aDBhY2ZhZDM4MGJhMmJkZTPFBkVhbGxvYzo6Y29sbGVjdGlvbnM6OmJpbmFy +eV9oZWFwOjpQZWVrTXV0PFQsQT46OnBvcDo6aGZhYmEyNTRlZjA2Njg4YmXGBlNhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46OmRvX21lcmdlOjpo +M2ZkNmNiYzM5NTI5YTY0NMcGRG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnV0aWxpdHk6OnRvX3Np +Z25hYmxlX2pzb246OmhkZmZmMGFjZWEwMmZmNWM0yAaXATxtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6Om1lbW9yeXN0b3JlOjpNZW1vcnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpnZXRfY3VzdG9tX3ZhbHVlOjp7e2Nsb3N1cmV9fTo6aGFl +NTU0ODcxZWMxNjRkNmXJBlNhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNp +bmdDb250ZXh0PEssVj46OmRvX21lcmdlOjpoNTMxN2FmODJkMDFiNGM1OMoGWDxzZXJkZV9qc29u +OjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF9rZXlfc2Vl +ZDo6aDY3ZWI2YWEwYmJlZTc5NjPLBlg8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBz +ZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfa2V5X3NlZWQ6OmhmNGNiY2E5MGY0ODVmOTQ3zAZl +PCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2Vy +aWFsaXplcj46OmRlc2VyaWFsaXplX3NlcTo6aDdiMWViN2RmYWRmNTU5MDbNBgtkZXZpY2Vfa2V5 +c84GhgFtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6S2RmSW5mbz46OmRlc2Vy +aWFsaXplOjpoZjFmMTNiYjYyOGYzMTE5ZM8GiQE8cnVtYV9jb21tb246OmNhbm9uaWNhbF9qc29u +Ojp2YWx1ZTo6Q2Fub25pY2FsSnNvblZhbHVlIGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208c2Vy +ZGVfanNvbjo6dmFsdWU6OlZhbHVlPj46OnRyeV9mcm9tOjpoMWY4NzM3NDJmZDFmN2E1MtAGPGlu +ZGV4ZWRfZGJfZnV0dXJlczo6aWRiX2RhdGFiYXNlOjpmYWN0b3J5OjpoYjA0ZTE0YjJhOWNmOThk +ONEGRjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6 +aDA5NDEzNDRkYzk3YTNjMWbSBk50b2tpb19zdHJlYW06OndyYXBwZXJzOjpicm9hZGNhc3Q6Om1h +a2VfZnV0dXJlOjp7e2Nsb3N1cmV9fTo6aDNmMzQ4YjVjNmJjYWFkNDLTBqMBPG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1lbW9yeVN0b3JlIGFzIG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9vdXRnb2luZ19zZWNyZXRfcmVx +dWVzdHM6Ont7Y2xvc3VyZX19OjpoNmI2ZTRlODk0YjU5NTZhN9QGbzxydW1hX2NvbW1vbjo6Y2Fu +b25pY2FsX2pzb246OnZhbHVlOjpDYW5vbmljYWxKc29uVmFsdWUgYXMgc2VyZGU6OnNlcjo6U2Vy +aWFsaXplPjo6c2VyaWFsaXplOjpoMDZjMjllMWUxODJlNjYxNdUGamNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0Rl +dmljZUV2ZW50cz46Omg4ZGY2MGYyYjFiZDM1NTVlLjPWBmpjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnRvX2RldmljZTo6VG9EZXZpY2VF +dmVudHM+OjpoOGRmNjBmMmIxYmQzNTU1ZS401wY1cXJjb2RlOjpjYW52YXM6OkNhbnZhczo6YXBw +bHlfbWFzazo6aDY5NDJjNjI0ZmEzZDk3NWXYBjV2b2RvemVtYWM6OmNpcGhlcjo6Q2lwaGVyOjpl +bmNyeXB0OjpoMGZiZWUxMjE4NDFhNzZiNdkGO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixT +LEE+OjppbnNlcnQ6OmhjYjVlZTFiOWI3NGQ1NTll2gZcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nl +c3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDk1YjZh +ZDlmYzY4NWJlNDHbBjp2b2RvemVtYWM6OnNhczo6RXN0YWJsaXNoZWRTYXM6OmdldF9tYWM6Omhj +NGU4YWYxNmRjMzQ1YWRk3AYedmVyaWZpY2F0aW9ucmVxdWVzdF9zY2FuUXJDb2Rl3QZaY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjplbnVtczo6QW55VG9EZXZpY2VFdmVudENv +bnRlbnQ+OjpoNGVmNjNiNGNmNWIxNmQ4OS4x3gZBcnVzdGNfZGVtYW5nbGU6OnYwOjpQcmludGVy +OjpwcmludF9nZW5lcmljX2FyZzo6aDlkNzMzNDhmMDhhNmRhNzXfBpIGY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGNvcmU6OnBpbjo6UGluPGFsbG9jOjpib3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5 +cHRvOjppZGVudGl0aWVzOjptYW5hZ2VyOjpJZGVudGl0eU1hbmFnZXI6OmdldF91c2VyX2Rldmlj +ZXNfZm9yX2VuY3J5cHRpb248Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZpbHRlcjo6RmlsdGVyPGNv +cmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxjb3JlOjpzbGljZTo6aXRlcjo6SXRlcjxydW1h +X2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkPiw8cnVtYV9jb21tb246 +OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCBhcyBjb3JlOjpjb252ZXJ0OjpBc1Jl +ZjxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6OlVzZXJJZD4+Ojphc19yZWY+LG1h +dHJpeF9zZGtfY3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6OnNlc3Npb25zOjpTZXNzaW9uTWFuYWdl +cjo6Z2V0X21pc3Npbmdfc2Vzc2lvbnM8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPGNv +cmU6OnNsaWNlOjppdGVyOjpJdGVyPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6 +T3duZWRVc2VySWQ+LDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNl +cklkIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNl +cl9pZDo6VXNlcklkPj46OmFzX3JlZj4+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Pjo6e3tj +bG9zdXJlfX0+Pj46Omg3NDA4NjczM2E2YjBmOGMx4AZMPGNvcmU6OnBpbjo6UGluPFA+IGFzIGNv +cmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpoZDkzMThkNTA5ZTMxZTZkNOEGWDxz +ZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4 +dF9rZXlfc2VlZDo6aDIyMGRhMmY4ZGQ0ZmJhZTLiBlg8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2Vz +czxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfa2V5X3NlZWQ6OmgzYzU3MjQ5MDZj +ZTk3ZTdm4wZYPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBB +Y2Nlc3M+OjpuZXh0X2tleV9zZWVkOjpoNDM4ZTdkZTMxN2Q0MWNhMuQGWDxzZXJkZV9qc29uOjpk +ZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF9rZXlfc2VlZDo6 +aGRlZjk0NWI2NzU2OThlODXlBosBbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGlu +Zzo6U2VjcmV0SW5mbz46OmRlc2VyaWFsaXplOjpoMDFlN2RhNTZmODY4M2FhMeYGiwFtYXRyaXhf +c2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZv +ciBtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpTZWNyZXRJbmZvPjo6ZGVzZXJpYWxpemU6 +OmhiZWZjYWE1MzMzZjI2ZGNi5wbJATxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +cm9vbV9rZXlfcmVxdWVzdDo6UmVxdWVzdGVkS2V5SW5mbyBhcyBjb3JlOjpjb252ZXJ0OjpUcnlG +cm9tPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpS +ZXF1ZXN0ZWRLZXlJbmZvSGVscGVyPj46OnRyeV9mcm9tOjpoMWUwZmYxNWRiYjBkYzM5YugGWDxz +ZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4 +dF9rZXlfc2VlZDo6aDRlOWFmNTRjZjE3YmVjNDfpBlg8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2Vz +czxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfa2V5X3NlZWQ6OmhiYjZlNGQ5NzM4 +MjZhMDMy6gZYPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBB +Y2Nlc3M+OjpuZXh0X2tleV9zZWVkOjpoNzViMDlmMzFlODM5NTcxYesGowF2b2RvemVtYWM6Om9s +bTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0Y2hldDo6UmF0Y2hldENv +dW50Pjo6ZGVzZXJpYWxpemU6Omg4YzMyODViNWU2NDc0OWQz7AZaYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX2xlZnQ6Omhi +YWJiMzRmZjdjYTA3ZTBl7QZ2PG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25z +OjppbmJvdW5kOjpJbmJvdW5kR3JvdXBTZXNzaW9uIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNs +b25lOjpoNWZiZWYxYWVhMGNhODcwMu4GWW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246 +OmNhY2hlOjpWZXJpZmljYXRpb25DYWNoZTo6YWRkX3JlcXVlc3Q6Omg0MWE4OTMwMTk5YjIwYjA0 +7wZjPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNv +cmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgxYjczYzhkZDk0NGU3NzAw8AZYPHNlcmRlOjpf +X3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNs +b25lOjpoNjdiOTM5YjdjZWVmMDI0YvEGWjxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6 +Q29udGVudCBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDY3YjkzOWI3Y2VlZjAyNGIu +MfIGM2NvcmU6Om9wdGlvbjo6T3B0aW9uPCZUPjo6Y2xvbmVkOjpoZDQyZTU0OGNkMjU4YmZkY/MG +pQFtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6U2FzU3Rh +dGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OlN0YXJ0 +ZWQ+Ojpmcm9tX3N0YXJ0X2V2ZW50Ojp7e2Nsb3N1cmV9fTo6aGY4ZGIzYjQ2MWI2ZDZlNTD0BlNt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OktleVF1ZXJ5TWFuYWdlcjo6c3luY2VkOjp7e2Nsb3N1 +cmV9fTo6aGQ4MTUwYzlmMTZiZTRkOGEuMfUGU21hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6S2V5 +UXVlcnlNYW5hZ2VyOjpzeW5jZWQ6Ont7Y2xvc3VyZX19OjpoZDgxNTBjOWYxNmJlNGQ4YS4y9gZc +PHZvZG96ZW1hYzo6b2xtOjptZXNzYWdlczo6bWVzc2FnZTo6TWVzc2FnZSBhcyBjb3JlOjpjbG9u +ZTo6Q2xvbmU+OjpjbG9uZTo6aDY2YTU0YjhlZDdkZmZiOTT3BmI8bWF0cml4X3Nka19jcnlwdG86 +OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpTY2FuRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6 +Zm10OjpoYTQ4MDU2OTAyZDMyODMwOfgGZjx2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9rZXlz +OjpTZXNzaW9uS2V5RGVjb2RlRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZjBj +ZTg5MTIxZmJhMTk0NfkGTnRva2lvX3N0cmVhbTo6d3JhcHBlcnM6OmJyb2FkY2FzdDo6bWFrZV9m +dXR1cmU6Ont7Y2xvc3VyZX19OjpoNTA5NjdiMTU4MDBlM2Y3M/oGamNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0Rl +dmljZUV2ZW50cz46Omg4ZGY2MGYyYjFiZDM1NTVlLjX7Blw8c2VyZGVfanNvbjo6ZGU6OlNlcUFj +Y2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoZGQ3 +ZGM2MzkyNmM2ODQxNfwGYzxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpE +ZXZpY2VLZXlzIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoZDc1NmVmNTk1MjQ5ODQ1 +ZP0GVDxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6OkV2ZW50RXJyb3IgYXMgY29yZTo6Zm10OjpE +aXNwbGF5Pjo6Zm10OjpoN2JhMDM5MGNhNjJlNzgyMf4GjAF2b2RvemVtYWM6Om9sbTo6c2Vzc2lv +bl9jb25maWc6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6 +b2xtOjpzZXNzaW9uX2NvbmZpZzo6VmVyc2lvbj46OmRlc2VyaWFsaXplOjpoNmYyMzJlYWYzNWQx +NTdmMf8GkgF2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9jb25maWc6Ol86OjxpbXBsIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6bWVnb2xtOjpzZXNzaW9uX2NvbmZpZzo6 +VmVyc2lvbj46OmRlc2VyaWFsaXplOjpoMDNlOTY4N2ZmMDZlZWExM4AHcDxhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+ +OjpjbG9uZTo6Y2xvbmVfc3VidHJlZTo6aDM3YWM2YjAwY2FiODA1NjWBB3A8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25l +Pjo6Y2xvbmU6OmNsb25lX3N1YnRyZWU6OmhmZGE5NDY5NGYyZDJkOWQ4ggeqAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2Rr +X2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpoYW5kbGVfc2VjcmV0 +X3JlcXVlc3Q6Ont7Y2xvc3VyZX19Pj4+OjpoMzg1ZTZjNWE3YzZiZjM2Mi4xgwc5dG9raW86OnN5 +bmM6OmJyb2FkY2FzdDo6U2VuZGVyPFQ+OjpuZXc6Omg3NmZmNWUyYzg4MzNlNGU2hAc5dG9raW86 +OnN5bmM6OmJyb2FkY2FzdDo6U2VuZGVyPFQ+OjpuZXc6Omg4ZTExNjJhMThlMmVmMmUwhQc5dG9r +aW86OnN5bmM6OmJyb2FkY2FzdDo6U2VuZGVyPFQ+OjpuZXc6OmhhYzBjMjQzMjk5NDJiM2Flhgdc +PHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+Ojpu +ZXh0X2VsZW1lbnRfc2VlZDo6aGM5ZjZjMjhjMWYwMTMyODKHBzNjb3JlOjpvcHRpb246Ok9wdGlv +bjwmVD46OmNsb25lZDo6aDc5MWM3OWYzZGIwN2MxZjOIB1g8c2VyZGVfanNvbjo6ZGU6Ok1hcEFj +Y2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfa2V5X3NlZWQ6OmgwOGFhYTQy +M2UyYWE4YzBmiQdYPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpN +YXBBY2Nlc3M+OjpuZXh0X2tleV9zZWVkOjpoODZiZmY0MTcwYWQ0Yjg3OIoHeDxtYXRyaXhfc2Rr +X2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6Ok91dGJvdW5kR3JvdXBTZXNz +aW9uIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYzJlM2U3ZmYxNTEwMGRiZosHYDxh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpj +bXA6OlBhcnRpYWxFcT46OmVxOjpoM2RhOWNlMWU1NDdkY2JlZYwHWDxzZXJkZV9qc29uOjpkZTo6 +TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF9rZXlfc2VlZDo6aDI2 +ZDcwNDM2YzZkNTBlMzWNB+0BbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6 +OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3Jv +dXBfc2Vzc2lvbnM6OkV4cG9ydGVkUm9vbUtleT4gZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6ZXZlbnRzOjpmb3J3YXJkZWRfcm9vbV9rZXk6OkZvcndhcmRlZFJvb21LZXlDb250ZW50Pjo6 +dHJ5X2Zyb206OmhjZDNkNzY1MzE4NzEyZmZkjgdcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8 +Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDUzNzhlZmVi +Yzk1YjgyODGPBzZzZXJkZTo6c2VyOjpTZXJpYWxpemVyOjpjb2xsZWN0X21hcDo6aDY1MzFkZmI2 +ZWMzMTA5YTeQBzZzZXJkZTo6c2VyOjpTZXJpYWxpemVyOjpjb2xsZWN0X21hcDo6aDg3YTJjYjI2 +YTZlNzJkNjSRB2k8bWF0cml4X3Nka19jcnlwdG86OmJhY2t1cHM6OmtleXM6OmRlY3J5cHRpb246 +OkRlY29kZUVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDE2ZGIwMWMwZGY5Nzg3 +MmWSB1ttYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpTdGF0aWNBY2NvdW50RGF0YTo6 +dW5zaWduZWRfZGV2aWNlX2tleXM6Omg4MWRkOWRjZTY3MDMzYmQ5kwdwPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46 +OmNsb25lOjpjbG9uZV9zdWJ0cmVlOjpoMDg2YmE0ZjM2YjFkOWQxMJQHWmNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxydW1hX2V2ZW50czo6ZW51bXM6OkFueVRvRGV2aWNlRXZlbnRDb250ZW50Pjo6 +aDRlZjYzYjRjZjViMTZkODkuM5UHmAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlz +dG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNy +eXB0b1N0b3JlPjo6Z2V0X3Jvb21fc2V0dGluZ3M6Ont7Y2xvc3VyZX19OjpoODg5NTEyMjk5MWJi +MjFhOZYHTDx2b2RvemVtYWM6OkxpYm9sbVBpY2tsZUVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxh +eT46OmZtdDo6aDA5MDcyMmM4YTA3YjcwZjmXB3o8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3Jv +dXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpPdXRib3VuZEdyb3VwU2Vzc2lvbiBhcyBjb3JlOjpjbG9u +ZTo6Q2xvbmU+OjpjbG9uZTo6aGMyZTNlN2ZmMTUxMDBkYmYuM5gHbDxtYXRyaXhfc2RrX2NyeXB0 +bzo6dmVyaWZpY2F0aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZCBhcyBjb3JlOjpjbG9uZTo6 +Q2xvbmU+OjpjbG9uZTo6aGMxYTNiNDI1MDQxNGI0ZjAuM5kHNmFlczo6c29mdDo6Zml4c2xpY2U6 +OmFlczI1Nl9lbmNyeXB0OjpoY2NmNzVlNzM3NDg0ZWNiZZoH6wFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8ZnV0dXJlc191dGlsOjphYm9ydGFibGU6OkFib3J0YWJsZTxmdXR1cmVzX3V0aWw6OmZ1 +dHVyZTo6ZnV0dXJlOjpyZW1vdGVfaGFuZGxlOjpSZW1vdGU8bWF0cml4X3Nka19jcnlwdG86OnNl +c3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmVuY3J5 +cHRfcmVxdWVzdDo6e3tjbG9zdXJlfX0+Pj46OmhlYzU3NDlkMzI1MDZkMGNjmwejAXZvZG96ZW1h +Yzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0Y2hldDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNl +cmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0OjpSYXRj +aGV0Q291bnQ+OjpkZXNlcmlhbGl6ZTo6aGExYzE4YzYxNWIyYmYyMzicBzlxcmNvZGU6OmNhbnZh +czo6Q2FudmFzOjpkcmF3X2NvZGV3b3Jkczo6aDAxZmNiZmQ0MmZjMjRkZWSdBzVzZXJkZTo6ZGU6 +OlNlcUFjY2Vzczo6bmV4dF9lbGVtZW50OjpoODZlZWMzMjE1MzJkYzM4N54HYzxhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6 +OkRyb3A+Ojpkcm9wOjpoZTVlMDMwZjU2ZGU1MjcyOJ8HXm1hdHJpeF9zZGtfY3J5cHRvOjpvbG06 +Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6T3V0Ym91bmRHcm91cFNlc3Npb246Om5ldzo6aDUy +ZDAwZGY0NGJiZGU2NzegB2g8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNl +Q3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjkxMGUyZGQx +N2QwODY0MqEHVm1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpWZXJp +ZmljYXRpb25SZXF1ZXN0OjpuZXc6OmgyNTdhZmMwNzdmZTNhYzI1ogeeAXJ1bWFfZXZlbnRzOjpr +ZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUg +Zm9yIHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6OlN0YXJ0TWV0aG9kPjo6 +ZGVzZXJpYWxpemU6Omg0NTA0ZTFkODNhZWJkNTM3owezAW1hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6Y3Jvc3Nfc2lnbmluZzo6Y29tbW9uOjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUg +Zm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6Y29tbW9uOjpDcm9z +c1NpZ25pbmdLZXk+OjpzZXJpYWxpemU6OmhlMjU3YTc2NzY0M2IzMTRlpAdyY3VydmUyNTUxOV9k +YWxlazo6c2NhbGFyOjo8aW1wbCBjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnUz +Mjo6c2NhbGFyOjpTY2FsYXIyOT46OnBhY2s6OmgxMmJiNjlmYzVjMGZlNzFhpQdBcnVzdGNfZGVt +YW5nbGU6OnYwOjpIZXhOaWJibGVzOjp0cnlfcGFyc2VfdWludDo6aDVjYjQyMDI3MDcyZDI1YWWm +Bz1ydXN0Y19kZW1hbmdsZTo6djA6OlBhcnNlcjo6b3B0X2ludGVnZXJfNjI6OmhlM2UyZmVkZWFh +ZDM1NzU2pwc1c2VyZGU6OmRlOjpTZXFBY2Nlc3M6Om5leHRfZWxlbWVudDo6aDdhYTdhYmUxMjU5 +MjQ5N2KoB2M8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVy +OjpTcGVjRnJvbUl0ZXI8VCxJPj46OmZyb21faXRlcjo6aGFlOTI5YTEwYjBiYmIzMjipB2M8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6b3Bz +Ojpkcm9wOjpEcm9wPjo6ZHJvcDo6aDI3N2YzOGEyYWRjNWRiMzOqBxxvbG1tYWNoaW5lX3F1ZXJ5 +S2V5c0ZvclVzZXJzqwdwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9f +cHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoYWM4 +NDBhYTk5ZDc1NmNkNawHX21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3Rz +OjpWZXJpZmljYXRpb25SZXF1ZXN0Ojpmcm9tX3JlcXVlc3Q6Omg1N2UxZWVhZDMxZGE1ZGVirQdS +PG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5 +Pjo6Zm10OjpoYTJlYzkxMjE4OGYwZWU3Mq4HTm1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnNhczo6U2FzOjpmcm9tX3N0YXJ0X2V2ZW50OjpoNzE2MmJjYWNhNmI1ZDYwOK8HWGNvcmU6 +Om51bTo6Zmx0MmRlYzo6c3RyYXRlZ3k6OmdyaXN1Ojpmb3JtYXRfZXhhY3Rfb3B0Ojpwb3NzaWJs +eV9yb3VuZDo6aGZiMGM3NTRlNTlhZWFmOWawB1w8c2VyZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxS +PiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoMDY1OGVlNTZl +M2FkZGMzNLEHXTxjdHI6OmZsYXZvcnM6OmN0cjEyODo6Q3RyMTI4QkUgYXMgY3RyOjpmbGF2b3Jz +OjpDdHJGbGF2b3I8Qj4+OjpuZXh0X2Jsb2NrOjpoMjk3ZTQ2MzYzMGVjOWE4ZLIHdTxjb3JlOjpp +dGVyOjphZGFwdGVyczo6ZmlsdGVyX21hcDo6RmlsdGVyTWFwPEksRj4gYXMgY29yZTo6aXRlcjo6 +dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMDA5YWI2ZGU4NzRlOTJiMLMHXDxz +ZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4 +dF9lbGVtZW50X3NlZWQ6OmhmZTcxZWVkYWE0ZDYwMWZhtAdeY3VydmUyNTUxOV9kYWxlazo6YmFj +a2VuZDo6c2VyaWFsOjp1MzI6OmZpZWxkOjpGaWVsZEVsZW1lbnQyNjI1Ojpmcm9tX2J5dGVzOjpo +ODZhZTBjNjE1NmQ3MTVlMrUH6AE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJv +b21fa2V5X3JlcXVlc3Q6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJp +eF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpBY3Rpb24+Ojpk +ZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRf +Ynl0ZXM6OmhlZmI3MTk1ODZkYjkwOGZktgeSAXZvZG96ZW1hYzo6bWVnb2xtOjpzZXNzaW9uX2Nv +bmZpZzo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjptZWdv +bG06OnNlc3Npb25fY29uZmlnOjpWZXJzaW9uPjo6ZGVzZXJpYWxpemU6Omg4OWJhNGYxNzI2NmYy +NjE2tweMAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uX2NvbmZpZzo6Xzo6PGltcGwgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNlc3Npb25fY29uZmlnOjpWZXJzaW9u +Pjo6ZGVzZXJpYWxpemU6OmhjNzU4NjM4MTc1ODcyY2YwuAdCdG9raW86OnN5bmM6Om11dGV4OjpN +dXRleDxUPjo6bG9jazo6e3tjbG9zdXJlfX06Omg0OWY2MGNkMWFmZTAxYzA4uQdCdG9raW86OnN5 +bmM6Om11dGV4OjpNdXRleDxUPjo6bG9jazo6e3tjbG9zdXJlfX06Omg5MjkzM2M0NDIwNzI0Mzcx +ugdEdG9raW86OnN5bmM6Om11dGV4OjpNdXRleDxUPjo6bG9jazo6e3tjbG9zdXJlfX06OmgyM2My +YjJkYzk4M2U5NDY5LjK7B0R0b2tpbzo6c3luYzo6bXV0ZXg6Ok11dGV4PFQ+Ojpsb2NrOjp7e2Ns +b3N1cmV9fTo6aDkyOTMzYzQ0MjA3MjQzNzEuMbwHYDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +OjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbXA6OlBhcnRpYWxFcT46OmVxOjpoOTdj +Y2I2MjVlNDE0MWExN70HYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFw +PEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMDIwYzViYWRlMWIwZmI2 +ZL4HYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBj +b3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYzgwZWY1MTdhZDg4ZWZkOL8HYzxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpvcHM6OmRy +b3A6OkRyb3A+Ojpkcm9wOjpoNGNmOGQ4YmU0NDBmYzBjM8AHYzxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpk +cm9wOjpoNTJjMDMwNzA2YWNhMDRmZcEHYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6 +OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYTc2NGNl +YmRkMWRjNTkzMcIHYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEss +VixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYjFmYjcwYzg1YzM0NTNjZsMH +RHRva2lvOjpzeW5jOjptdXRleDo6TXV0ZXg8VD46OmxvY2s6Ont7Y2xvc3VyZX19OjpoOTI5MzNj +NDQyMDcyNDM3MS4yxAegATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VD +cnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpD +cnlwdG9TdG9yZT46OmdldF91c2VyX2lkZW50aXR5Ojp7e2Nsb3N1cmV9fTo6aGI1MDBkY2M0ZmJk +OTg3ZGLFB0R0b2tpbzo6c3luYzo6bXV0ZXg6Ok11dGV4PFQ+Ojpsb2NrOjp7e2Nsb3N1cmV9fTo6 +aDQ5ZjYwY2QxYWZlMDFjMDguMsYHczxtYXRyaXhfc2RrX2NyeXB0bzo6ZmlsZV9lbmNyeXB0aW9u +OjphdHRhY2htZW50czo6QXR0YWNobWVudEVuY3J5cHRvcjxSPiBhcyBzdGQ6OmlvOjpSZWFkPjo6 +cmVhZDo6aDc5ODQ2ODliMDI2N2JmODbHB0R0b2tpbzo6c3luYzo6bXV0ZXg6Ok11dGV4PFQ+Ojps +b2NrOjp7e2Nsb3N1cmV9fTo6aDkyOTMzYzQ0MjA3MjQzNzEuM8gHcG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xv +c3VyZX19Ojp7e2Nsb3N1cmV9fTo6aDQyYWE1YzI2ZWNjNjRjZGPJB3BtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Ns +b3N1cmV9fTo6e3tjbG9zdXJlfX06OmhhZWEwYTkxYjFkOGMxNDQ4ygdCdG9raW86OnN5bmM6Om11 +dGV4OjpNdXRleDxUPjo6bG9jazo6e3tjbG9zdXJlfX06OmgyMDQyNWQ5YTEyYTE3YWRlywddbWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZpY2F0aW9uTWFjaGlu +ZTo6Z2V0X3JlcXVlc3Q6Omg1YzFhNGZmN2JkMjczZDNmzAdcPHNlcmRlX2pzb246OmRlOjpTZXFB +Y2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDI2 +ZmNhZTVlYWYyZGM1N2HNBzZhZXM6OnNvZnQ6OmZpeHNsaWNlOjphZXMyNTZfZGVjcnlwdDo6aDQw +NzlhY2NkYmFmYTIxZGPOB1Fjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OmVycm9yOjpPbG1FcnJvcj46OmhhMDIzNTc1N2IwMjRkYTY5LjPPB1Fjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj46OmhhMDIzNTc1 +N2IwMjRkYTY5LjTQB2tzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplIGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpoZDhjZmJkYTlh +YWJiZDUzY9EHW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRl +eHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aDYxMTBmNjIzZDYzOTZiM2HSB2g8Y2lwaGVyOjpz +dHJlYW1fd3JhcHBlcjo6U3RyZWFtQ2lwaGVyQ29yZVdyYXBwZXI8VD4gYXMgY3J5cHRvX2NvbW1v +bjo6S2V5SXZJbml0Pjo6bmV3OjpoNzNkYjMzM2JjYzRiYjEyZtMHcG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xv +c3VyZX19Ojp7e2Nsb3N1cmV9fTo6aGRmOTdhNDUwMTYzYzM2YTDUB3xjdXJ2ZTI1NTE5X2RhbGVr +OjpmaWVsZDo6PGltcGwgY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjp1MzI6OmZp +ZWxkOjpGaWVsZEVsZW1lbnQyNjI1Pjo6cG93MjI1MDE6Omg4MTE4ZGYzODczODc0N2Zk1QcuY29y +ZTo6c3RyOjo8aW1wbCBzdHI+OjpmaW5kOjpoMmRlYzYwNmYwMjViODA3ZtYHPGRsbWFsbG9jOjpk +bG1hbGxvYzo6RGxtYWxsb2M8QT46Om1lbWFsaWduOjpoYjdiOGFkMDllODFjYWRmMdcHlAZjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cGluOjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0 +cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5TWFuYWdlcjo6Z2V0 +X3VzZXJfZGV2aWNlc19mb3JfZW5jcnlwdGlvbjxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVy +OjpGaWx0ZXI8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPGNvcmU6OnNsaWNlOjppdGVy +OjpJdGVyPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQ+LDxy +dW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkIGFzIGNvcmU6OmNv +bnZlcnQ6OkFzUmVmPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6VXNlcklkPj46 +OmFzX3JlZj4sbWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6c2Vzc2lvbnM6OlNl +c3Npb25NYW5hZ2VyOjpnZXRfbWlzc2luZ19zZXNzaW9uczxjb3JlOjppdGVyOjphZGFwdGVyczo6 +bWFwOjpNYXA8Y29yZTo6c2xpY2U6Oml0ZXI6Okl0ZXI8cnVtYV9jb21tb246OmlkZW50aWZpZXJz +Ojp1c2VyX2lkOjpPd25lZFVzZXJJZD4sPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9p +ZDo6T3duZWRVc2VySWQgYXMgY29yZTo6Y29udmVydDo6QXNSZWY8cnVtYV9jb21tb246OmlkZW50 +aWZpZXJzOjp1c2VyX2lkOjpVc2VySWQ+Pjo6YXNfcmVmPj46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fT4+Ojp7e2Nsb3N1cmV9fT4+Pjo6aDc0MDg2NzMzYTZiMGY4YzEuMdgHgAFpbmRleGVkX2Ri +X2Z1dHVyZXM6OmlkYl9kYXRhYmFzZTo6aWRiX3ZlcnNpb25fY2hhbmdlX2V2ZW50OjpJZGJWZXJz +aW9uQ2hhbmdlRXZlbnQ6OndyYXBfY2FsbGJhY2s6Ont7Y2xvc3VyZX19OjpoMGY3NzkyYTAzMTg5 +MDFjYdkHLGJsYWtlMzo6T3V0cHV0Ojpyb290X2hhc2g6Omg4M2U4YjkxM2Q4MWE0MDFi2geJATxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpUb0Rldmlj +ZUVuY3J5cHRlZEV2ZW50Q29udGVudCBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxp +emU6OmhhMTA1ZGVhYWRjY2Q1YTcw2wdVPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpNZXNz +YWdlVHlwZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNWVmZWU0ZWMzMzc1Y2M2M9wHOGNv +cmU6Om51bTo6Zmx0MmRlYzo6ZGlnaXRzX3RvX2RlY19zdHI6OmgxMjUwYzQzMzMxZThiYTQx3Qc1 +c2VyZGU6OmRlOjpTZXFBY2Nlc3M6Om5leHRfZWxlbWVudDo6aDNlZmQ4Mzk3OWM4YjFjYjDeBzVz +ZXJkZTo6ZGU6OlNlcUFjY2Vzczo6bmV4dF9lbGVtZW50OjpoODhhNzgxYjczNWJhNzYyZt8HNXNl +cmRlOjpkZTo6U2VxQWNjZXNzOjpuZXh0X2VsZW1lbnQ6OmhjNDI2M2M3MzU2ZDg4YzA14Ac1c2Vy +ZGU6OmRlOjpTZXFBY2Nlc3M6Om5leHRfZWxlbWVudDo6aGQ1NWJmOTcyZjliNjhlMTPhB2w8Y29y +ZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpp +dGVyYXRvcjo6SXRlcmF0b3I+Ojp0cnlfZm9sZDo6aDJlMmFkMmMwYmQzMjc5OWTiB2M8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6b3BzOjpk +cm9wOjpEcm9wPjo6ZHJvcDo6aDI0YWM3OThkNDA3NmE4NTTjB1w8c2VyZGVfanNvbjo6ZGU6OlNl +cUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpo +NTI0NjY4MDAwMjUwYjQyZOQHXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRl +OjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6Omg1YTAzN2NjMTkwNDgxYWU45Qcw +Y29yZTo6c2xpY2U6OnNvcnQ6Om1lcmdlX3NvcnQ6OmgxMTZmMzdiMWVjOTQ3NTQ25gcwY29yZTo6 +c2xpY2U6OnNvcnQ6Om1lcmdlX3NvcnQ6OmgxMzAzMTlhYzFiZDMwMjEy5wcwY29yZTo6c2xpY2U6 +OnNvcnQ6Om1lcmdlX3NvcnQ6Omg3NGVmNDYyNmMxNGI3ZGIz6AevATxtYXRyaXhfc2RrX2NyeXB0 +bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdFN0YXRlIGFzIGNv +cmU6OmNvbnZlcnQ6OkZyb208Jm1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVl +c3RzOjpJbm5lclJlcXVlc3Q+Pjo6ZnJvbTo6aGRkM2NmM2VjOWM1ODU4MzTpBzNhbGxvYzo6Zm10 +Ojpmb3JtYXQ6OmZvcm1hdF9pbm5lcjo6aDcwZTljYzY0ZjkzMDUwMWHqBzVzZXJkZTo6ZGU6OlNl +cUFjY2Vzczo6bmV4dF9lbGVtZW50OjpoMWM0NmZhMTFjZjQ5YzIyM+sHNXNlcmRlOjpkZTo6U2Vx +QWNjZXNzOjpuZXh0X2VsZW1lbnQ6Omg5ZjFhN2JiMzUyNWJkNDk47Ac1c2VyZGU6OmRlOjpTZXFB +Y2Nlc3M6Om5leHRfZWxlbWVudDo6aGFhMjBhNGVkOWRiNDQ5NTDtBzVzZXJkZTo6ZGU6OlNlcUFj +Y2Vzczo6bmV4dF9lbGVtZW50OjpoZDEzZWRhNGU5YWZjNDVkZO4HTm1hdHJpeF9zZGtfY29tbW9u +OjpmYWlsdXJlc19jYWNoZTo6RmFpbHVyZXNDYWNoZTxUPjo6ZXh0ZW5kOjpoMzhiODRhZmNjYjkw +ZDA0Ye8HXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNj +ZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6Omg0YmFmMDNlYjM0MzQwNGVm8AdcPHNlcmRlX2pzb246 +OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRf +c2VlZDo6aDcwOGNkMDBmM2Q0MDNiZjPxB1w8c2VyZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBh +cyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoNTQ1NjEyMDcwMzAx +YWY4Y/IHS21hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Y2FjaGVzOjpHcm91cFNlc3Npb25TdG9y +ZTo6Z2V0OjpoZDc0YmQ2MmEwZjk2MzM2MfMHXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+ +IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6OmhkNTJhODkwMTk0 +NDE1MzAw9AdcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFB +Y2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aGZkZTZjN2I5YjcwNjJkODL1B1w8c2VyZGVfanNv +bjo6ZGU6OlNlcUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVu +dF9zZWVkOjpoZDdiNTVkN2MzZjM4Y2MxZPYHXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+ +IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6OmgwMWQ5MmQ4NTUy +YTJlNWUx9wdcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFB +Y2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDk0ZGFhNmEyMjJlODk2NTH4B3BtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9y +Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmgyMzc3ZjYyZTVjYjIxMTVi+Qc2c2VyZGU6OnNl +cjo6U2VyaWFsaXplcjo6Y29sbGVjdF9zZXE6OmhlYzk3ZGViOWJkYTBkYzVi+gc1c2VyZGU6OmRl +OjpTZXFBY2Nlc3M6Om5leHRfZWxlbWVudDo6aDE3ZTgwNDllMjAwMjEwNDf7BzVzZXJkZTo6ZGU6 +OlNlcUFjY2Vzczo6bmV4dF9lbGVtZW50OjpoNDljZjNiZmE2OGFlMGQ2MfwHiQE8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6ZGVkdXBfc29ydGVkX2l0ZXI6OkRlZHVwU29ydGVkSXRlcjxLLFYs +ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNzRi +ZThkZGRiM2NiZjUwYf0HNGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp0cnlfcHJvY2Vzczo6aGM5ZGI0 +OTI5ZTM4M2YzMzf+B2M8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxL +LFYsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDIzNTI5M2Q4ZmMwZDhhODj/ +B2M8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29y +ZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDlhMzk1YmFkZWFjM2I0OGWACGM8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9w +OjpEcm9wPjo6ZHJvcDo6aGIyNzIzNmU3MzllMjUxNTiBCD9jb3JlOjpzbGljZTo6c29ydDo6aW5z +ZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aDBlOTEyNDI2ODIzM2IwMjeCCHBtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7 +e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06Omg3YzZiY2M3MTllZmViMTFlgwhcPHNlcmRlX2pzb246 +OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRf +c2VlZDo6aDI4MTE3NmY3OGE5MDEyZTGECFw8c2VyZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBh +cyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoM2UyMTdkYTk1OWVk +MWIyOYUIXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNj +ZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6Omg2NTEwNDY1Y2Y3Y2M3ZTc1hghcPHNlcmRlX2pzb246 +OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRf +c2VlZDo6aDZlNTVjMTRhMWY2MGEyOTCHCFw8c2VyZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBh +cyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoOGViYzQ3M2UwYWVk +NDc0ZogIXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNj +ZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6Omg5NDNkNTYxNzFlMDc0MjQziQhcPHNlcmRlX2pzb246 +OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRf +c2VlZDo6aGI0MzQ4MTRkY2EzNzRiNjiKCFw8c2VyZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBh +cyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoY2FjZTQyNGM3ZTIx +ZjlkZYsIXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNj +ZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6OmgxYjFhMjMyMTBjMGVhY2U4jAg7aGFzaGJyb3duOjpt +YXA6Okhhc2hNYXA8SyxWLFMsQT46Omluc2VydDo6aGJiMzljMWQwY2FhOTRiOWaNCFw8c2VyZGVf +anNvbjo6ZGU6OlNlcUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxl +bWVudF9zZWVkOjpoN2FmNDExZTk3ZDQ3MTIzMI4IXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNz +PFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6Omg5MTBjYmM5 +NjU2NDVmZmQ0jwhcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpT +ZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aGIyNWM5MWU1MTA5NDliMzKQCFw8c2VyZGVf +anNvbjo6ZGU6OlNlcUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxl +bWVudF9zZWVkOjpoYzIyNDNkZmRlZGU0ZGZmN5EIO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEss +VixTLEE+OjppbnNlcnQ6Omg5ZjM1YzFhYzhhZDFiNzIxkghcPHNlcmRlX2pzb246OmRlOjpTZXFB +Y2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDU1 +YzQyMDY4YjRkN2M1NWOTCDdjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWRfaW5uZXI6Omhm +NTNiZTQ5ZDk4M2MwN2NhlAhsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFz +IGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6dHJ5X2ZvbGQ6Omg0OGY5 +MTFjZmRmNDA3M2U0lQg3bWF0cml4X3Nka19xcmNvZGU6OnV0aWxzOjp0b19xcl9jb2RlOjpoNWEx +OTVjMzdiMTBlY2VmM5YIYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFw +PEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYTVhOGYyNDgyYTg0NzA1 +NJcImQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVF +cnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+ +OjpnZXRfZGV2aWNlOjp7e2Nsb3N1cmV9fTo6aGVmZjg3N2NiNjYwOGRhMjaYCDNjb3JlOjpvcHRp +b246Ok9wdGlvbjwmVD46OmNsb25lZDo6aDVjNTUwZjFlZmQyY2Q1ZjWZCE9tYXRyaXhfc2RrX2Ny +eXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBSZXF1ZXN0Ojp0b19jYW5jZWxsYXRpb246OmhmMTI3NGI2 +NGJmZWFiNjc5mggwY29yZTo6c3RyOjo8aW1wbCBzdHI+OjpmaW5kOjpoZTI4M2Y4OTRiYzFmNTU0 +Zi4xmwg6PFQgYXMgYWxsb2M6OmJvcnJvdzo6VG9Pd25lZD46OnRvX293bmVkOjpoNjcwZTVkZTBj +NmQwNzJiY5wIFHFyY29kZXNjYW5fZnJvbUJ5dGVznQi7ATxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5 +cHRpb246Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfc3Rv +cmVfZW5jcnlwdGlvbjo6S2RmSW5mbz46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBz +ZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9ieXRlczo6aDQyZDIzZmU2N2Q5NmE2NTmeCJkBPG1h +dHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1lbW9yeVN0b3JlIGFzIG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnJlc2V0X2JhY2t1cF9z +dGF0ZTo6e3tjbG9zdXJlfX06OmgxOWNiZGIxOTY5MWI4OGMznwg1c2VyZGU6OmRlOjpTZXFBY2Nl +c3M6Om5leHRfZWxlbWVudDo6aDk2YTUwMTZjYmEzODhjNDagCDVzZXJkZTo6ZGU6OlNlcUFjY2Vz +czo6bmV4dF9lbGVtZW50OjpoOTc4NTM1ZGNlZGE2YWY2YaEIigFtYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjptYWNoaW5lOjpWZXJpZmljYXRpb25NYWNoaW5lOjpyZWNlaXZlX2FueV9l +dmVudDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aGQ4YmZkNTYzOGU0 +MTM4ZTWiCIoBbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZp +Y2F0aW9uTWFjaGluZTo6cmVjZWl2ZV9hbnlfZXZlbnQ6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9 +fTo6e3tjbG9zdXJlfX06OmgyOGZiNjgxNzk3OGY5ODFjowiMAW1hdHJpeF9zZGtfY3J5cHRvOjp2 +ZXJpZmljYXRpb246Om1hY2hpbmU6OlZlcmlmaWNhdGlvbk1hY2hpbmU6OnJlY2VpdmVfYW55X2V2 +ZW50Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoMjhmYjY4MTc5Nzhm +OTgxYy4xpAhObWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6dXBkYXRl +X2tleV9jb3VudHM6Omg5ZTE1MTZkYzZmYTg3MTVhpQhcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nl +c3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aGYwODE2 +NmRhMDA3NzFiYWamCFhtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5n +OjpVc2VyU2lnbmluZzo6ZnJvbV9iYXNlNjQ6Omg3MmYxNThjNzBhYzczNWY5pwhYbWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6c2lnbmluZzo6cGtfc2lnbmluZzo6U2VsZlNpZ25pbmc6OmZyb21fYmFz +ZTY0OjpoYjFkMDIwYmVmMTMyNDVjNKgIRTxzdGQ6OmlvOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6 +Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZDAwNTliYWRlMGNhYmMyY6kIWmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9sZWZ0Ojpo +NTVjZjFjZDZjYzg0MmQ4MaoIpQFtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6 +OnNhc19zdGF0ZTo6U2FzU3RhdGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2Fz +OjpzYXNfc3RhdGU6Ok1hY1JlY2VpdmVkPjo6Y29uZmlybV9hbmRfd2FpdF9mb3JfZG9uZTo6aGU2 +Nzg3ZmM0ZGE4ZDBiMTerCDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQ4ZmNjMzFi +MzA4MDJkNTOsCE50b2tpb19zdHJlYW06OndyYXBwZXJzOjpicm9hZGNhc3Q6Om1ha2VfZnV0dXJl +Ojp7e2Nsb3N1cmV9fTo6aGJkNmFlNDA4NjA0MGJiODStCE50b2tpb19zdHJlYW06OndyYXBwZXJz +Ojpicm9hZGNhc3Q6Om1ha2VfZnV0dXJlOjp7e2Nsb3N1cmV9fTo6aGY4NGFlMTEzMGJkYTdmNzau +CDVzZXJkZTo6ZGU6OlNlcUFjY2Vzczo6bmV4dF9lbGVtZW50OjpoMGNlMDY2ZjZhZDE1Mzc2Nq8I +NXNlcmRlOjpkZTo6U2VxQWNjZXNzOjpuZXh0X2VsZW1lbnQ6Omg2ZGRkNDIzNjhlM2E4NzI4sAhc +PHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+Ojpu +ZXh0X2VsZW1lbnRfc2VlZDo6aDBiNTg0NjAzNmEyOWYzY2axCFw8c2VyZGVfanNvbjo6ZGU6OlNl +cUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpo +MzEzMWRkNjQzMTc5YmIyOLIIXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRl +OjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6Omg2MGVhZjEyNjMxZDg0N2M0swhc +PHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+Ojpu +ZXh0X2VsZW1lbnRfc2VlZDo6aGMzYmUzNzVjYmE2M2M1Yjm0CFw8c2VyZGVfanNvbjo6ZGU6OlNl +cUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpo +Y2I5ODQyN2VjZTQ5YTM1YbUIWG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OnBrX3Np +Z25pbmc6OlNlbGZTaWduaW5nOjpzaWduX2RldmljZTo6aDEzNzk5ODFmMjQ5ZWE0MDG2CFRtYXRy +aXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdHk6OnVw +ZGF0ZTo6aDYyZDljYzE4MzU0ZjUzN2a3CFw8c2VyZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBh +cyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoNWEwOTU3Y2VmNTcz +Zjk3NbgIXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNj +ZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6OmgxOTI5MmYyNzZhYzliNGNluQhcPHNlcmRlX2pzb246 +OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRf +c2VlZDo6aDY3NWM5MTg2Zjk0OTVhNWO6CFw8c2VyZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBh +cyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoZTExMWQzODBiZGU5 +ZTM1NrsIUzxzZXJkZV9qc29uOjpyZWFkOjpTdHJSZWFkIGFzIHNlcmRlX2pzb246OnJlYWQ6OlJl +YWQ+OjpwYXJzZV9zdHI6OmgxMDAxZGQzMTZkZGM5YTg5vAg1c2VyZGU6OmRlOjpTZXFBY2Nlc3M6 +Om5leHRfZWxlbWVudDo6aDI0ZTk0Yjg3OWNhNDhmNGS9CDVzZXJkZTo6ZGU6OlNlcUFjY2Vzczo6 +bmV4dF9lbGVtZW50OjpoNmU5MTZjNTUyMzZhMGZlZL4IaTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVy +aWZpY2F0aW9uOjpxcmNvZGU6OlFyVmVyaWZpY2F0aW9uIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46 +OmNsb25lOjpoZDk5NTliYzNjNjdlZjRlNb8IcW1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25p +bmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6Z2V0X21pc3Npbmdfc2VjcmV0czo6e3tj +bG9zdXJlfX06OmhmNDk0YzVhNzQ4ZjRhZTE0wAhfPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGM3YzAz +NzJiMTczNDM2ZWTBCFFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OmVycm9yOjpPbG1FcnJvcj46OmhhMDIzNTc1N2IwMjRkYTY5LjXCCGE8bWF0cml4X3Nka19jcnlw +dG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoYzdjMDM3MmIxNzM0MzZlZC4xwwhhPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJy +b3I6OkNyeXB0b1N0b3JlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGM3YzAzNzJi +MTczNDM2ZWQuMsQIVHdhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTo6e3tj +bG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoYTZjMWM5N2VmNTY4MGQzNcUIUWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok9sbUVycm9yPjo6aGEwMjM1NzU3 +YjAyNGRhNjkuNsYIYTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9y +ZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjN2MwMzcyYjE3MzQzNmVkLjPHCJ0B +bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpvbmVfdGltZV9rZXlzOjpfOjo8aW1wbCBzZXJkZTo6 +c2VyOjpTZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6b25lX3RpbWVfa2V5 +czo6U2lnbmVkS2V5Pjo6c2VyaWFsaXplOjpoM2EwMjBiNDkwM2Y5MmIyOcgIYTxtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6OmhjN2MwMzcyYjE3MzQzNmVkLjTJCElxcmNvZGU6OmNhbnZhczo6Q2FudmFzOjpj +b21wdXRlX2FkamFjZW50X3BlbmFsdHlfc2NvcmU6Omg1MzA2NWU4MmMzODczM2Q2yghYPHZvZG96 +ZW1hYzo6b2xtOjpzZXNzaW9uOjpEZWNyeXB0aW9uRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5 +Pjo6Zm10OjpoYTQ5ZDRkOTMzMDU3M2Q1YssIPnRpbWU6OmRhdGU6OkRhdGU6OmZyb21fanVsaWFu +X2RheV91bmNoZWNrZWQ6OmhiZDdmYTY3OWE5MWQxMTBkzAgbb2xtbWFjaGluZV9lbmNyeXB0Um9v +bUV2ZW50zQhAZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6dW5saW5rX2NodW5rOjpo +ZGMwNjMxYTVkNWI0MDU5ZM4IOmNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnU3RydWN0OjpmaWVs +ZDo6aDM0ZjU4ZmQ0ODQyNTdkNzHPCDJjb3JlOjp1bmljb2RlOjpwcmludGFibGU6OmNoZWNrOjpo +NDAyMDAxMDEzNjk2ZTU3ONAIYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVl +TWFwPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMjI4ZGQ0NjMxZGY5 +Y2NiONEIP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0OjpoYTAx +OGZlNDRiMWE5OGFmN9IIP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25fc29ydF9zaGlmdF9s +ZWZ0OjpoZDRkZjgwYTY2N2RjOGQyZtMIP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25fc29y +dF9zaGlmdF9sZWZ0OjpoMGJkMzdjOWQ0Zjc1MDBjNNQIcG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19 +Ojp7e2Nsb3N1cmV9fTo6aDY5NjY3NzgyMDMzZTdlMDnVCC1ybXA6OmVuY29kZTo6d3JpdGVfbWFw +X2xlbjo6aGNkNGEyOTY0MWUzYzNjY2bWCC9ybXA6OmVuY29kZTo6d3JpdGVfYXJyYXlfbGVuOjpo +OTc5ZTA2N2ZhZGVmNDc2ZdcIMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZmVhMjc3 +ZWZhMDAzZjExM9gIV2N1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTMyOjpzY2Fs +YXI6OlNjYWxhcjI5Ojpmcm9tX2J5dGVzOjpoY2RhNDg4ZDhkOGNmN2I0M9kIOXJ1c3RjX2RlbWFu +Z2xlOjp2MDo6UGFyc2VyOjppbnRlZ2VyXzYyOjpoZjFjNjhmMmNlZGNkZDE5MtoIdnRyYWNpbmc6 +Omluc3RydW1lbnQ6Ol86OjxpbXBsIGNvcmU6Om9wczo6ZHJvcDo6RHJvcCBmb3IgdHJhY2luZzo6 +aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+Pjo6ZHJvcDo6aGZjZTFlMTQwZTQ5NWI5YzXbCHBt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3Vz +dG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06OmhhMzhhNTRhZmFlNzM0NjFj3AhP +bWF0cml4X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpTdG9yZUNpcGhlcjo6ZW5jcnlwdF92YWx1ZV9k +YXRhOjpoYzE1MWM5OTMzY2FmZWVmMd0IU2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6ZG9fbWVyZ2U6OmhlYTMyYTJhMjk0Y2Q1MTY13ghJbWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6Q2FuY2VsbGVkOjphc19jb250ZW50OjpoYTQ4 +N2RhNmUzNDNiNGQ5Nt8IpgE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6 +TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0 +b3JlPjo6ZGVsZXRlX291dGdvaW5nX3NlY3JldF9yZXF1ZXN0czo6e3tjbG9zdXJlfX06Omg2MWQ1 +ZDZjYjgyMGQyMDNh4AhZPHNlcmRlX2pzb246OnJlYWQ6OlNsaWNlUmVhZCBhcyBzZXJkZV9qc29u +OjpyZWFkOjpSZWFkPjo6cGFyc2Vfc3RyX3Jhdzo6aGVmMjA0MmJjMGQxNGU0MzbhCGxtYXRyaXhf +c2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpzYXZlX291dGdv +aW5nX2tleV9pbmZvOjp7e2Nsb3N1cmV9fTo6aDc3MTJlMjYyNDNhNDgyNmbiCFw8bWF0cml4X3Nk +a19jcnlwdG86OmVycm9yOjpTZXNzaW9uQ3JlYXRpb25FcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoYzU1YmM3Y2ZhNDk4MTJiZuMIXjxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6OlNl +c3Npb25DcmVhdGlvbkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjNTViYzdjZmE0 +OTgxMmJmLjHkCCNvbG1tYWNoaW5lX3JlY2VpdmVWZXJpZmljYXRpb25FdmVudOUIEmF0dGFjaG1l +bnRfZW5jcnlwdOYIhwNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1 +cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRp +b246OlZlcmlmaWNhdGlvblJlcXVlc3Q6OmdlbmVyYXRlX3FyX2NvZGU6Ont7Y2xvc3VyZX19LG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25SZXF1ZXN0OjpnZW5lcmF0 +ZV9xcl9jb2RlOjp7e2Nsb3N1cmV9fSxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjp2ZXJpZmljYXRpb246OlFyPj46Ont7Y2xvc3VyZX19Pj46OmhlNmNmYzBhZTNj +NDMzOTFi5whoPGRpZ2VzdDo6Y29yZV9hcGk6OndyYXBwZXI6OkNvcmVXcmFwcGVyPFQ+IGFzIGNy +eXB0b19jb21tb246OktleUluaXQ+OjpuZXdfZnJvbV9zbGljZTo6aGNmNTkyOWI2N2QwYWYxZDXo +CBdzaWduYXR1cmVzX2FkZFNpZ25hdHVyZekIcG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVy +ZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19Ojp7e2Ns +b3N1cmV9fTo6aDUwMTYyMGRiY2IwNmFiYjXqCCtjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2U6Omgy +OTdmOGVhYzhmZmNlOTIw6wiqAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBp +bjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5l +OjpHb3NzaXBNYWNoaW5lOjpoYW5kbGVfc2VjcmV0X3JlcXVlc3Q6Ont7Y2xvc3VyZX19Pj4+Ojpo +Mzg1ZTZjNWE3YzZiZjM2Mi4y7AhjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpz +cGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6OmhlYjA0ZTgwNzcy +MTYxZTEy7QjfAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OmFib3J0YWJs +ZTo6QWJvcnRhYmxlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjpmdXR1cmU6OnJlbW90ZV9oYW5kbGU6 +OlJlbW90ZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6SWRlbnRpdHlN +YW5hZ2VyOjp1cGRhdGVfdXNlcl9kZXZpY2VzOjp7e2Nsb3N1cmV9fT4+Pjo6aDVlM2M5NDQ3Nzhk +NWU0ZTHuCDp0b2tpbzo6c3luYzo6YnJvYWRjYXN0OjpTZW5kZXI8VD46OnNlbmQ6OmhhZGQ3MzBl +NjVjMTc1ZWZj7whwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJv +bWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoNWZjMmZk +OTlhODBkMTg1MPAIZ21hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRk +YkNyeXB0b1N0b3JlOjpkZXNlcmlhbGl6ZV9nb3NzaXBfcmVxdWVzdDo6aDkxY2RiYmI3ODA1MTI2 +NjLxCDpjb3JlOjpzdHI6OjxpbXBsIHN0cj46OnRyaW1fZW5kX21hdGNoZXM6Omg3M2RkMThlMThj +YjdiMWYz8ghgPHJ1bWFfZXZlbnRzOjplbnVtczo6TWVzc2FnZUxpa2VFdmVudFR5cGUgYXMgY29y +ZTo6Y29udmVydDo6RnJvbTwmc3RyPj46OmZyb206Omg0ZmIyNmU4NDFhMWE0Njkw8whEdHJhY2lu +Z19jb3JlOjpjYWxsc2l0ZTo6cmVidWlsZF9jYWxsc2l0ZV9pbnRlcmVzdDo6aDljYzA3ZGRiODFj +ZWIwNTf0CB1iYWNrdXBkZWNyeXB0aW9ua2V5X2RlY3J5cHRWMfUIP2NvcmU6OnNsaWNlOjpzb3J0 +OjppbnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0OjpoMWM3MzYwMTY1NjJiMjE1OPYIWm1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OnBrX3NpZ25pbmc6Ok1hc3RlclNpZ25pbmc6OnNpZ25f +c3Via2V5OjpoYmY4MTE2ZGQwZjFhOWNmNvcIRm1hdHJpeF9zZGtfY3J5cHRvOjpiYWNrdXBzOjpr +ZXlzOjpjb21wYXQ6OktleXM6Om5ldzo6aGRjZWZkOTc1Zjk0MzQwYjP4CCJvbG1tYWNoaW5lX2Vu +Y3J5cHRFeHBvcnRlZFJvb21LZXlz+QhZbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6 +cHJvbWlzZV9yZXN1bHRfdG9fZnV0dXJlOjp7e2Nsb3N1cmV9fTo6aDkyYTMwZmQzMDkyZjlhNGT6 +CE50b2tpb19zdHJlYW06OndyYXBwZXJzOjpicm9hZGNhc3Q6Om1ha2VfZnV0dXJlOjp7e2Nsb3N1 +cmV9fTo6aDgyYTZjODUzOTZhZGQ5MTj7CE50b2tpb19zdHJlYW06OndyYXBwZXJzOjpicm9hZGNh +c3Q6Om1ha2VfZnV0dXJlOjp7e2Nsb3N1cmV9fTo6aGM3OGNiODIyMDAzZjFmNWT8CFJhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OmVudHJ5OjpFbnRyeTxLLFYsQT46Om9yX2RlZmF1bHQ6 +OmgzNjIzMjMzN2M4ZDZmZDY5/QhQbWF0cml4X3Nka19jb21tb246OmZhaWx1cmVzX2NhY2hlOjpG +YWlsdXJlc0NhY2hlPFQ+Ojpjb250YWluczo6aGZmNjU2NmM0MWI3YjE4Yzf+CFptYXRyaXhfc2Rr +X2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5nOjpNYXN0ZXJTaWduaW5nOjpmcm9tX2Jh +c2U2NDo6aDIzMjdhYzlmNzU4MjY3MmH/CEdlZDI1NTE5X2RhbGVrOjpoYXptYXQ6OkV4cGFuZGVk +U2VjcmV0S2V5Ojpmcm9tX2J5dGVzOjpoMmEyMGZkYWVkOWY0MWQyNoAJcG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7 +Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aDRmZGJhNzE1NWE0Mzg1NDSBCUhtYXRyaXhfc2RrX2Ny +eXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uOjpmcm9tX3BpY2tsZTo6aDIxNWZkOTkxZTQzNGFl +YjaCCV9oYXNoYnJvd246OnJ1c3RjX2VudHJ5Ojo8aW1wbCBoYXNoYnJvd246Om1hcDo6SGFzaE1h +cDxLLFYsUyxBPj46OnJ1c3RjX2VudHJ5OjpoMzg4OWM2NzdiMTYzNWQxNoMJR2NvcmU6OnVuaWNv +ZGU6OnVuaWNvZGVfZGF0YTo6Z3JhcGhlbWVfZXh0ZW5kOjpsb29rdXA6OmhkNWI4MzkzZTFhM2Y0 +MzdjhAmfATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9y +ZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OmdldF91c2VyX2RldmljZXM6Ont7Y2xvc3VyZX19OjpoY2RiN2QzZWVjNjk0ZGUyMIUJZTxt +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OklubmVyU3RhdGUgYXMgY29y +ZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg4MjQ0NmI1NmRhODY2NDUxhglzbWF0cml4X3Nka19p +bmRleGVkZGI6OmNyeXB0b19zdG9yZTo6aW5kZXhlZGRiX3NlcmlhbGl6ZXI6OkluZGV4ZWRkYlNl +cmlhbGl6ZXI6OmRlc2VyaWFsaXplX3ZhbHVlOjpoMDRlZjEzYzNjNDA0MTE1ZIcJR21hdHJpeF9z +ZGtfY3J5cHRvOjpiYWNrdXBzOjprZXlzOjpjb21wYXQ6OktleXM6OmhtYWM6OmgwMjM2ZDIwMTE4 +ZDM4MzAziAlhPHdhc21fYmluZGdlbl9mdXR1cmVzOjpKc0Z1dHVyZSBhcyBjb3JlOjpjb252ZXJ0 +OjpGcm9tPGpzX3N5czo6UHJvbWlzZT4+Ojpmcm9tOjpoYjkzYzllNTA0NTY3Y2Q3MokJNnZvZG96 +ZW1hYzo6Y2lwaGVyOjpDaXBoZXI6OmdldF9obWFjOjpoMmZjYzdhMzFhNGI5NDE5N4oJSzxiYXNl +NjQ6OmRlY29kZTo6RGVjb2RlRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoODk5 +NmMzOTA2NDdlNDQyMosJnwE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNl +Q3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +Q3J5cHRvU3RvcmU+OjpnZXRfdXNlcl9kZXZpY2VzOjp7e2Nsb3N1cmV9fTo6aGIxZTZmOWI0YWQ1 +NzhmMGWMCUA8c2VyZGU6OmRlOjpPbmVPZiBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omhi +OTc3ODYwZTQzNmQ5ZWUxjQlsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFz +IGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6dHJ5X2ZvbGQ6OmgzOTEz +YmMzMjFiODhlYmJhjgkNZGV2aWNlX2dldEtleY8JoAE8bWF0cml4X3Nka19pbmRleGVkZGI6OmNy +eXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6cmVtb3ZlX2N1c3RvbV92YWx1ZTo6e3tjbG9zdXJl +fX06OmgwNDRiNTk0MGFhZjQ1MjE3kAlxbWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9y +ZTo6aW5kZXhlZGRiX3NlcmlhbGl6ZXI6OkluZGV4ZWRkYlNlcmlhbGl6ZXI6OnNlcmlhbGl6ZV92 +YWx1ZTo6aDI1NzM1YzA3ODkxYmIzODmRCVJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6 +OmVudHJ5OjpFbnRyeTxLLFYsQT46Om9yX2RlZmF1bHQ6Omg3ZWZkMzJiNzM5NmE5NzA2kglSYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjplbnRyeTo6RW50cnk8SyxWLEE+Ojpvcl9kZWZh +dWx0OjpoOGQ4OTIxNzE1MTQxMzYyOJMJUmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +ZW50cnk6OkVudHJ5PEssVixBPjo6b3JfZGVmYXVsdDo6aGM3Y2Q5NWJlZDFkMGI0NTmUCUFzZXJk +ZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjpwYXJzZV9kZWNpbWFsOjpoZjM2ZDU4Y2NjMmY3 +ZDhjZpUJoAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3Rv +cmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3Rv +cmU+OjpnZXRfdXNlcl9pZGVudGl0eTo6e3tjbG9zdXJlfX06Omg3MmNlZjc3OWQxNDkwZjBjlglT +PHN0ZDo6aGFzaDo6cmFuZG9tOjpEZWZhdWx0SGFzaGVyIGFzIGNvcmU6Omhhc2g6Okhhc2hlcj46 +OmZpbmlzaDo6aDk3ODE2NzRiN2EwZDI3ZDWXCXBtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1 +cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX06OmgzY2ViYWJjMWFjZDkwMDA3mAlpPHZvZG96ZW1hYzo6b2xtOjphY2NvdW50Ojps +aWJvbG06Ok9uZVRpbWVLZXkgYXMgbWF0cml4X3BpY2tsZTo6ZW5jb2RlOjpFbmNvZGU+OjplbmNv +ZGU6OmhmNWZhY2YzYTFjOGIzZDA4mQkXb2xtbWFjaGluZV9zaGFyZVJvb21LZXmaCSB1c2VyaWRl +bnRpdHlfcmVxdWVzdFZlcmlmaWNhdGlvbpsJcG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVy +ZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19Ojp7e2Ns +b3N1cmV9fTo6aGYwNWI0ZmE3ODFiOTY3ZjecCYoBbWF0cml4X3Nka19zdG9yZV9lbmNyeXB0aW9u +OjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfc3RvcmVfZW5j +cnlwdGlvbjo6RW5jcnlwdGVkVmFsdWU+OjpzZXJpYWxpemU6OmhjNzUzYzE2NzJiMzRlZDg5nQkt +cm1wX3NlcmRlOjpkZWNvZGU6OmV4dF9sZW46OmhjNjliYWM5NTJmNmI4ODU0nglHcXJjb2RlOjpj +YW52YXM6OkNhbnZhczo6Y29tcHV0ZV9maW5kZXJfcGVuYWx0eV9zY29yZTo6aGVkNzVkNzc1MjE3 +NzA0MTCfCZkBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0 +b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0 +b3JlPjo6Z2V0X2RldmljZTo6e3tjbG9zdXJlfX06Omg3M2E0OGUwZDgzODAwZmMzoAlfaGFzaGJy +b3duOjpydXN0Y19lbnRyeTo6PGltcGwgaGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT4+ +OjpydXN0Y19lbnRyeTo6aGIxOWEzMjEyMTZkMGZhZmWhCWVjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6SWRlbnRpdGllc0JlaW5nVmVyaWZp +ZWQ+OjpoYTlmMzQ4MWM3NGExYmMzMqIJSnZvZG96ZW1hYzo6dHlwZXM6OmVkMjU1MTk6OkVkMjU1 +MTlQdWJsaWNLZXk6OmZyb21fc2xpY2U6OmgxYmYwZjNkMjY2ODA5NTU2owk7aGFzaGJyb3duOjpt +YXA6Okhhc2hNYXA8SyxWLFMsQT46Omluc2VydDo6aDRmMjY3ZmUyZDEwZGIwNTWkCUZjdXJ2ZTI1 +NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6bm9uX2FkamFjZW50X2Zvcm06OmgyMmM4YzEyYTI4 +NTgxNjlkpQlKPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3Jp +dGVfY2hhcjo6aGQyMGE0YzI0MWU4ZDVlNzOmCWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJp +YWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpo +NWJlMTQyNTRlM2I2ZDEwMKcJZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4g +YXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9tYXA6Omg5ZmJkMzYwMmY5 +NjU3Yjk2qAllPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6 +ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aGMzODU0YWQ0MDg4YjRiNWWpCWU8 +Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoOGM1NzU1MGZlNTgwYzAxZqoJZTwmbXV0IHNlcmRl +X2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+Ojpk +ZXNlcmlhbGl6ZV9tYXA6Omg3N2UzZjViMDZjZmI0NjdjqwllPCZtdXQgc2VyZGVfanNvbjo6ZGU6 +OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXpl +X21hcDo6aDhjZDMwZjZjNTUyOWJmNDCsCWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxp +emVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoZTI0 +MzEyNTUwNTdiNjI0NK0JZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9tYXA6OmhjNDU3MDliZmExZjlj +YWQ3rgkZb2xtbWFjaGluZV9lbmFibGVCYWNrdXBWMa8Ja21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnJlcXVlc3RzOjpWZXJpZmljYXRpb25SZXF1ZXN0OjpjYW5jZWxfZm9yX290aGVy +X2RldmljZXM6OmhiNDdjZGIwZDY0MDQzZTYzsAlaY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6 +c2VyaWFsOjp1MzI6OmZpZWxkOjpGaWVsZEVsZW1lbnQyNjI1OjpyZWR1Y2U6OmhiY2U4YmUzM2Qw +OGI2Yzk0sQmcATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9T +dG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9T +dG9yZT46OmxvYWRfaWRlbnRpdHk6Ont7Y2xvc3VyZX19OjpoNWY5NjdlODYzMmM3NDIwN7IJOnRv +a2lvOjpzeW5jOjpicm9hZGNhc3Q6OlNlbmRlcjxUPjo6c2VuZDo6aDAyNmNmN2RlNGMxYzhlZGKz +CTp0b2tpbzo6c3luYzo6YnJvYWRjYXN0OjpTZW5kZXI8VD46OnNlbmQ6OmgwNzJmNGY0MmFhMmFh +MjM1tAl9PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0 +OjpSZXF1ZXN0ZWRLZXlJbmZvIGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZT46OnNlcmlhbGl6ZTo6 +aDIwM2QyYjhmNzAwNDE5MTe1CVNtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2Nv +dW50OjpzaWduX2Nyb3NzX3NpZ25pbmdfa2V5OjpoN2FiZTEzNzM3M2QzYmE4NbYJlAE8bWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6bG9hZF9pZGVudGl0eTo6e3tj +bG9zdXJlfX06Omg3MjUxZDI0YmFjZmZkNmY1twlFc2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRl +bnQ6OkNvbnRlbnQ6OnVuZXhwZWN0ZWQ6OmhiZjU4OTU4ODk0YmNmMWFiuAllPCZtdXQgc2VyZGVf +anNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRl +c2VyaWFsaXplX21hcDo6aDQ4NzE5MzI3ODE0NDRhYze5CWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6 +RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVf +bWFwOjpoNTMzNGJlOTQyZGY0ZTc0NLoJZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6 +ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9tYXA6OmhmZDU2 +NDliZTg4MGE0MjdluwllPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aDU2NGU4MDVhYmQ1ZjM1 +MmG8CWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoZjBkNmRjODE4YzZiNTQ5Yr0JZTwmbXV0 +IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZXI+OjpkZXNlcmlhbGl6ZV9tYXA6OmgyZWY2OWU1MzE4YzIwYjdmvgllPCZtdXQgc2VyZGVfanNv +bjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2Vy +aWFsaXplX21hcDo6aGM0ZWVjOWMyNDRkMGM4NWK/CWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVz +ZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFw +OjpoZGY1MDZlNjk5NTdlMjM0ZcAJZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8 +Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9tYXA6OmgxYjlmNzRh +MzUzNTRiNWNiwQllPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aDg1MzI1YzJiM2MwOWZkZjbC +CWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoMGY2NmUxNzNiNTU1OWRhZcMJMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDEyZTM5YjE5NTUwNTM1MsQJRnNlcmRlX2pzb246OmRl +OjpEZXNlcmlhbGl6ZXI8Uj46OmRlc2VyaWFsaXplX251bWJlcjo6aDhkYTI3ZWNhZGVmZTVmMDHF +CWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc2VxOjpoMDViNzYyMzY3NzZmZjMwZcYJNnZvZG96ZW1h +Yzo6c2FzOjpTYXM6OmRpZmZpZV9oZWxsbWFuOjpoMzgxZTRjNmU0YWNjMDYwZscJL2NvcmU6OmZt +dDo6bnVtOjppbXA6OmZtdF91NjQ6OmgwZjkxZTU2YjQ0Yzg3YzA0yAlWPG1hdHJpeF9zZGtfY3J5 +cHRvOjplcnJvcjo6U2lnbmF0dXJlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhl +ODRlYTc3YjViNGUwZDPJCVg8bWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpTaWduYXR1cmVFcnJv +ciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGU4NGVhNzdiNWI0ZTBkMy4xygknZW5jcnlw +dGVkYXR0YWNobWVudF9tZWRpYUVuY3J5cHRpb25JbmZvywlwbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJl +fX06Ont7Y2xvc3VyZX19OjpoNDAxNTg5MjRkYjY2YzE4NMwJcG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3Vy +ZX19Ojp7e2Nsb3N1cmV9fTo6aDY1NGFjNTc5ZDc1MzU4YmLNCVg8bWF0cml4X3Nka19jcnlwdG86 +OmVycm9yOjpTaWduYXR1cmVFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGU4NGVh +NzdiNWI0ZTBkMy4yzglCc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6aWdub3JlX2lu +dGVnZXI6OmhhOWY2N2U2OGJjODliZDljzwm7AXJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlv +bjo6Y2FuY2VsOjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRz +OjprZXk6OnZlcmlmaWNhdGlvbjo6Y2FuY2VsOjpUb0RldmljZUtleVZlcmlmaWNhdGlvbkNhbmNl +bEV2ZW50Q29udGVudD46OnNlcmlhbGl6ZTo6aGI5ZWY5OTJjMTdiZDhhMmLQCVg8bWF0cml4X3Nk +a19jcnlwdG86OmVycm9yOjpTaWduYXR1cmVFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoOGU4NGVhNzdiNWI0ZTBkMy4z0QlUYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpl +bnRyeTo6VmFjYW50RW50cnk8SyxWLEE+OjppbnNlcnQ6OmhmNzVhNTY1OGIzNmY5MjMw0glYPG1h +dHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6U2lnbmF0dXJlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDhlODRlYTc3YjViNGUwZDMuNNMJXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNjZXNz +PFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6Omg2ZWNkYzEy +MDg5MWIyNmM51AlcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpT +ZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDhlYzdhZDI1ODljMTg5MGLVCUR0b2tpbzo6 +c3luYzo6cndsb2NrOjpSd0xvY2s8VD46OnJlYWQ6Ont7Y2xvc3VyZX19OjpoNTYyZDY5YWJiODlh +ZGQ4Y9YJRHRva2lvOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxUPjo6cmVhZDo6e3tjbG9zdXJlfX06 +OmhhODJmNjVkZDljMDEzZWEy1wmfATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJh +aXRzOjpDcnlwdG9TdG9yZT46OmdldF9jdXN0b21fdmFsdWU6Ont7Y2xvc3VyZX19OjpoYTJiYjU0 +ODhjNmI3NWYzMNgJRnRva2lvOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxUPjo6cmVhZDo6e3tjbG9z +dXJlfX06OmhhODJmNjVkZDljMDEzZWEyLjHZCXBtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1 +cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX06Omg5YWJkZTRjNjBhZWE5NmMz2glgPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6OmgxNzRk +NzFlZjBkNWYxMDM52wk0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoN2E5YTlm +YTMwMjM4OGQwONwJZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zZXE6OmhjZDU0OGJiYmViZWQ1NTE3 +3QlHY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIHUzMj46OmZtdDo6 +aDY3NGEyODczYmNjYzE3NGTeCTtmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6am9pbl9hbGw6OmpvaW5f +YWxsOjpoZTY3YzUzZWI2YmM0OTZiYt8JX2hhc2hicm93bjo6cnVzdGNfZW50cnk6OjxpbXBsIGhh +c2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+Pjo6cnVzdGNfZW50cnk6OmhkOGFkYzQzOGEy +ZDkxNmM14AlLPGJhc2U2NDo6ZGVjb2RlOjpEZWNvZGVFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3Bs +YXk+OjpmbXQ6OmgzM2NhOTZlNTY4YzAwNzNi4QknaXRvYTo6QnVmZmVyOjpmb3JtYXQ6OmgwM2Yz +YmViZmRjZjRlMzM14glFdG9raW86OnN5bmM6OnJ3bG9jazo6UndMb2NrPFQ+Ojp3cml0ZTo6e3tj +bG9zdXJlfX06OmgwYzllNTNjZDIyMGIxMDdm4wlwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0 +dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7 +Y2xvc3VyZX19OjpoMjMxM2UzZmNkZjAzNjUxNuQJcG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1 +dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19Ojp7 +e2Nsb3N1cmV9fTo6aDc0ZWEwNzBlOGRhYjcyZjblCXBtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpm +dXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6 +e3tjbG9zdXJlfX06OmhlYjFjYmY3NTExMWMwMGE55glwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06 +Ont7Y2xvc3VyZX19OjpoZmVjODRkODU5NjhmNjliMecJZTwmbXV0IHNlcmRlX2pzb246OmRlOjpE +ZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9z +ZXE6OmhjMzgzYzE1MThiOGNjM2U06AlFdG9raW86OnN5bmM6OnJ3bG9jazo6UndMb2NrPFQ+Ojp3 +cml0ZTo6e3tjbG9zdXJlfX06OmgwNTRlMTc3NmI0Yzg3MTQx6QlBcXJjb2RlOjpjYW52YXM6OkNh +bnZhczo6ZHJhd19maW5kZXJfcGF0dGVybl9hdDo6aDRiM2M0ZTY3N2NlMjg4ZmPqCYIBdm9kb3pl +bWFjOjp0eXBlczo6ZWQyNTUxOTo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciB2 +b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpTZWNyZXRLZXlzPjo6c2VyaWFsaXplOjpoNGYwNWEy +NDYwNzZmZmQ2ZesJOjxUIGFzIGFsbG9jOjpib3Jyb3c6OlRvT3duZWQ+Ojp0b19vd25lZDo6aDg0 +YjgwYTgyNWRkZGU0NjTsCXBtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90 +b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06Omhk +MDFmYWE5MmNjNjc3Mjhj7QlwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVf +dG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Ojpo +ZTRkOTQ2NzE3MzM3NWRhN+4JZGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6SW5uZXJSZXF1ZXN0Pjo6aDE0ZGY5YzEzOTZl +MTZkYTXvCaUBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0 +b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0 +b3JlPjo6Z2V0X3NlY3JldHNfZnJvbV9pbmJveDo6e3tjbG9zdXJlfX06OmgxN2YzMWRjZjM3NjEz +ZWY38AkxY29yZTo6c2xpY2U6OnNvcnQ6Omluc2VydF90YWlsOjpoMmIyYWZlYzg3NDBhZThkMPEJ +RnNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46OmRlc2VyaWFsaXplX251bWJlcjo6aDlm +NDA3NGNjZjNkYTk2OWPyCUZzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjpkZXNlcmlh +bGl6ZV9udW1iZXI6OmhjOTY1ZjRjOTY5NDFhYThi8wl1PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpm +aWx0ZXJfbWFwOjpGaWx0ZXJNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9y +OjpJdGVyYXRvcj46Om5leHQ6OmhlMTczNGE5OGIyYWYwZTll9AlGc2VyZGVfanNvbjo6ZGU6OkRl +c2VyaWFsaXplcjxSPjo6ZGVzZXJpYWxpemVfbnVtYmVyOjpoYjQxMGMwZDM4YTk1MzVhNfUJcG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0 +b21fZXJyb3I6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aDdkYmJjZWFiMWMxNmE5NTP2CWU8 +Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemVyPjo6ZGVzZXJpYWxpemVfc2VxOjpoMjRhM2NlOWYwMDQzZDZhYfcJoQFydW1hX2V2ZW50 +czo6a2V5Ojp2ZXJpZmljYXRpb246OmFjY2VwdDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3IgcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OkFjY2VwdE1l +dGhvZD46OmRlc2VyaWFsaXplOjpoYjUwMmE5YjI1ODQzMWNlNvgJP3Rva2lvOjpzeW5jOjpicm9h +ZGNhc3Q6OlNoYXJlZDxUPjo6bm90aWZ5X3J4OjpoMjA3NTZiYTE4OTg4ZWE2MvkJMjxUIGFzIGRp +Z2VzdDo6bWFjOjpNYWM+Ojp1cGRhdGU6OmgxNGI4M2Q2YzcxMWQ3MmNh+glGc2VyZGVfanNvbjo6 +ZGU6OkRlc2VyaWFsaXplcjxSPjo6ZGVzZXJpYWxpemVfbnVtYmVyOjpoODliNDk0ODdlNjNmMjRk +YvsJTDxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3JDb2RlIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46 +OmZtdDo6aGVhMTcyZjIzZTg5ZjY2Nzj8CUdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10 +OjpEZWJ1ZyBmb3IgdTY0Pjo6Zm10OjpoZTgwZTYxMmNiZGI4Mjg1Nf0J/gJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OmpvaW5fYWxsOjpKb2luQWxsPG1hdHJp +eF9zZGtfY29tbW9uOjpleGVjdXRvcjo6Sm9pbkhhbmRsZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDwo +YWxsb2M6OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNlc3Npb246OlNlc3Npb24+ +LGFsbG9jOjp2ZWM6OlZlYzwobWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6 +UmVhZE9ubHlEZXZpY2UsbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5 +X3dpdGhoZWxkOjpXaXRoaGVsZENvZGUpPiksbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1F +cnJvcj4+Pj46Omg5NjJkMTc0NzM3NTNhYzNl/glJd2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjppbXBs +czo6anNfdmFsdWVfdmVjdG9yX2Zyb21fYWJpOjpoODc0OWI5Njk0NmE2OGE3Mf8JZDxmdXR1cmVz +X3V0aWw6OmZ1dHVyZTo6c2VsZWN0OjpTZWxlY3Q8QSxCPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVy +ZTo6RnV0dXJlPjo6cG9sbDo6aGM2Y2FmYzU1OTg5MzU5YzeACp8BPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6bG9hZF9iYWNrdXBfa2V5czo6e3tj +bG9zdXJlfX06Omg0ZDNlMjIxZTcxNDc4OTdlgQqfATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Om5leHRfYmF0Y2hfdG9rZW46Ont7Y2xvc3VyZX19 +OjpoYjU2YjkxZjM0MWEzZjUyZoIKoQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6 +OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRy +YWl0czo6Q3J5cHRvU3RvcmU+Ojpsb2FkX3RyYWNrZWRfdXNlcnM6Ont7Y2xvc3VyZX19OjpoYjVh +ODgxNDVhZmI2NDYyY4MKqQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNl +Q3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +Q3J5cHRvU3RvcmU+OjpnZXRfdW5zZW50X3NlY3JldF9yZXF1ZXN0czo6e3tjbG9zdXJlfX06Omgw +NmMzNmYwYjY2MzYyYmY2hAq8AmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6 +OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hp +bmU6Ok9sbU1hY2hpbmU6Om91dGdvaW5nX3JlcXVlc3RzOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Om91dGdvaW5nX3JlcXVlc3RzOjp7e2Nsb3N1cmV9 +fSxqc19zeXM6OkFycmF5Pjo6e3tjbG9zdXJlfX0+Pjo6aDEzZmU3OWYyMTY1MDliMjSFClw8c2Vy +ZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRf +ZWxlbWVudF9zZWVkOjpoMDRkYTkyMGQ2YjRkYTZjYYYKXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNj +ZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6OmgwYjMw +NmZiMmJiZDYyYzJmhwpcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRl +OjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDI2MTJkNjMzZjZmZWEyYzCIClw8c2Vy +ZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRf +ZWxlbWVudF9zZWVkOjpoMjc5YzM1Yjc4YjI3NTllYokKXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNj +ZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6OmgzMjhi +ZjAwN2I1M2Q3ZWM0igpcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRl +OjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDMzOGU3ZmQ3ODYyZDA2ZTSLClw8c2Vy +ZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRf +ZWxlbWVudF9zZWVkOjpoMzQ5YjQ1ZjMyOTUwMjA4M4wKXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNj +ZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6Omg2NzI4 +MjA3NGZhZDc1OWEwjQpcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRl +OjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDlhN2I5YTEyMjgwNTYzZDmOClw8c2Vy +ZGVfanNvbjo6ZGU6OlNlcUFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRf +ZWxlbWVudF9zZWVkOjpoYjNhZWIyZWJmYzE1NmZhMI8KXDxzZXJkZV9qc29uOjpkZTo6U2VxQWNj +ZXNzPFI+IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50X3NlZWQ6OmhiYjli +NzQ5OWE1YzdmNTAwkApcPHNlcmRlX2pzb246OmRlOjpTZXFBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRl +OjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aGQxY2U3ODVhYThkZjZlOTeRCjI8VCBh +cyBkaWdlc3Q6Om1hYzo6TWFjPjo6dXBkYXRlOjpoNDMxNGRhYWE3Yzg0Mjg0OZIKWDxkaWdlc3Q6 +OmNvcmVfYXBpOjp3cmFwcGVyOjpDb3JlV3JhcHBlcjxUPiBhcyBkaWdlc3Q6OlVwZGF0ZT46OnVw +ZGF0ZTo6aDdjNWE2ZTk4MGJiYzY3ZTaTClg8bWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpTaWdu +YXR1cmVFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhkNjI4NDI3YzczNzU2NTRm +lApWZnV0dXJlc19jb3JlOjp0YXNrOjpfX2ludGVybmFsOjphdG9taWNfd2FrZXI6OkF0b21pY1dh +a2VyOjpyZWdpc3Rlcjo6aDk4YWVmMWMwNTAwMDQzYzGVCj48RCBhcyBkaWdlc3Q6OmRpZ2VzdDo6 +RGlnZXN0Pjo6Y2hhaW5fdXBkYXRlOjpoNTQzNGI0MGVjODcyMTczZpYKcDxtYXRyaXhfc2RrX2Ny +eXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdCBhcyBjb3Jl +OjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDc0YjExYjQ0MTM4MTI1MDmXCmU8Jm11dCBzZXJkZV9q +c29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVz +ZXJpYWxpemVfc2VxOjpoYTNlMWUwY2QwN2I4NThmNpgKajxtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6Om1lbW9yeXN0b3JlOjpNZW1vcnlTdG9yZSBhcyBjb3JlOjpkZWZhdWx0OjpEZWZhdWx0Pjo6 +ZGVmYXVsdDo6aDA2MGU1YWQwN2JhYjdhZjOZClQ8ZWQyNTUxOV9kYWxlazo6ZXJyb3JzOjpJbnRl +cm5hbEVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGM0MzE1MTRkY2E1ODIxN2Sa +ClZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OmVudHJ5OjpFbnRyeTxLLFYsQT46Om9y +X2luc2VydF93aXRoOjpoMzUzNGNmYjM4ZTQ3ZmRkNJsKcG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19 +Ojp7e2Nsb3N1cmV9fTo6aDFmMGFjZGFjNTcwNTUxYmOcCnBtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9 +fTo6e3tjbG9zdXJlfX06OmgyZWM3NGE0NWIxZjljYzAynQpwbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJl +fX06Ont7Y2xvc3VyZX19OjpoYmYyZWU5OWViZTA0N2U5ZZ4KcG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3Vy +ZX19Ojp7e2Nsb3N1cmV9fTo6aGM3ZTRmM2ZiOTFlNjEzMWSfCmRtYXRyaXhfc2RrX2NyeXB0bzo6 +b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6SW5ib3VuZEdyb3VwU2Vzc2lvbjo6ZnJvbV9w +aWNrbGU6OmhhNDIxZmIxNDM2MGU3MmJhoApHd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OnF1ZXVlOjpR +dWV1ZTo6bmV3Ojp7e2Nsb3N1cmV9fTo6aDViNGJiYjk1ZTZmMTU5ZTihCmU8Jm11dCBzZXJkZV9q +c29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVz +ZXJpYWxpemVfc2VxOjpoNTZiMjJmYWVhYzhjNWIzYaIKZTwmbXV0IHNlcmRlX2pzb246OmRlOjpE +ZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9z +ZXE6OmgwNGYzYTUyMmYwMjZmNTVmowplPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXpl +cjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3NlcTo6aDZlYzE5 +NWY3NjBjMTYxNWSkCmU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNl +cmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc2VxOjpoN2RjOWIzOTMzMjU5NThl +NKUKsQFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6Ol86Ojxp +bXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6OnNlY3JldF9zZW5kOjpTZWNyZXRTZW5kQ29udGVudD46OnNlcmlhbGl6ZTo6aGU3Nzk3 +NDNhYWM3MmQwNDimClM8bWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpNZWdvbG1FcnJvciBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTZhMTQzNWQ3NTIyODEyNqcKZTwmbXV0IHNlcmRlX2pz +b246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNl +cmlhbGl6ZV9zZXE6Omg5ZGVkMTdiOWYzMjk1YWViqAo8dm9kb3plbWFjOjpvbG06OnNlc3Npb246 +OlNlc3Npb246OmRlY3J5cHQ6OmhjZTMxY2U3ZWM0YzNkMmZkqQphPGFsbG9jOjpjb2xsZWN0aW9u +czo6YmluYXJ5X2hlYXA6OlBlZWtNdXQ8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpk +cm9wOjpoZDY3NGJjZGNlM2RmNzkxY6oKYTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJpbmFyeV9oZWFw +OjpQZWVrTXV0PFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDhkNTAzMGFk +NTMzMzdmMDSrCmU8ZnV0dXJlc191dGlsOjpmdXR1cmU6OmpvaW5fYWxsOjpKb2luQWxsPEY+IGFz +IGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpoNzBkOTZmYWNjM2VkOTkzMawK +fTx0cmFjaW5nX3N1YnNjcmliZXI6OmxheWVyOjpsYXllcmVkOjpMYXllcmVkPEwsUz4gYXMgdHJh +Y2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6bWF4X2xldmVsX2hpbnQ6OmhjMmM0 +MjI3ZDA0ZDJiYmU1rQoPdXNlcmRldmljZXNfZ2V0rgpRbWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +OjpTeW5jZWRLZXlRdWVyeU1hbmFnZXI6OnRyYWNrZWRfdXNlcnM6Omg2YTVmZDBjYjY2MjA0MTk1 +rwpmPGVkMjU1MTlfZGFsZWs6OnZlcmlmeWluZzo6VmVyaWZ5aW5nS2V5IGFzIGNvcmU6OmNvbnZl +cnQ6OlRyeUZyb208Jlt1OF0+Pjo6dHJ5X2Zyb206OmhkN2U3ZWUxNDZhYmUxOTA3sAqLATxjdXJ2 +ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnUzMjo6ZmllbGQ6OkZpZWxkRWxlbWVudDI2 +MjUgYXMgc3VidGxlOjpDb25kaXRpb25hbGx5U2VsZWN0YWJsZT46OmNvbmRpdGlvbmFsX3NlbGVj +dDo6aDAzMjhkZTQ0MWVmZGFkNDOxCkZkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+Ojpp +bnNlcnRfbGFyZ2VfY2h1bms6OmhhZDkxMDBkNDQ4NmQyZWFhsgp6Y29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpoYW5kbGVfdG9f +ZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fT46OmhiOGFmNDNhNDlkOGE2MzI0LjGzCpwBPG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMg +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6bG9hZF9pZGVu +dGl0eTo6e3tjbG9zdXJlfX06OmhhYjlmYzYzNWYzMjY1YjIytApQaGFzaGJyb3duOjpyYXc6OlJh +d1RhYmxlSW5uZXI6OmZpbmRfb3JfZmluZF9pbnNlcnRfc2xvdF9pbm5lcjo6aDVkNjNkOTQwZDMy +OGZmYWS1CiV2ZXJpZmljYXRpb25yZXF1ZXN0X2FjY2VwdFdpdGhNZXRob2Rztgo/Y29yZTo6c2xp +Y2U6OnNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6OmgyNThhN2IwMjhjNDdlNzQxtwpd +PHJ1bWFfZXZlbnRzOjpjYWxsOjpoYW5ndXA6OlJlYXNvbiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplPjo6ZGVzZXJpYWxpemU6OmhjZmQzZGMxNWVhY2FkMWM3uAp6Y29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpoYW5kbGVfdG9f +ZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fT46OmhiOGFmNDNhNDlkOGE2MzI0LjK5Cnpjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6 +OmhhbmRsZV90b19kZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19Pjo6aGI4YWY0M2E0OWQ4YTYzMjQu +M7oKRnNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46OmRlc2VyaWFsaXplX251bWJlcjo6 +aDZmNzNkOGRmN2YxYTEyNmK7Ckw8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6 +V3JpdGU+Ojp3cml0ZV9jaGFyOjpoZDIwYTRjMjQxZThkNWU3My4xvApuaW5kZXhlZF9kYl9mdXR1 +cmVzOjppZGJfdHJhbnNhY3Rpb246OmlkYl90cmFuc2FjdGlvbl9saXN0ZW5lcnM6OmVycm9yX2Nh +bGxiYWNrOjp7e2Nsb3N1cmV9fTo6aDkyYTNiZGU3YTZmOGFkNWO9ClJoYXNoYnJvd246OnJhdzo6 +UmF3VGFibGVJbm5lcjo6ZmluZF9vcl9maW5kX2luc2VydF9zbG90X2lubmVyOjpoNWQ2M2Q5NDBk +MzI4ZmZhZC4xvgo2c2VyZGU6OnNlcjo6U2VyaWFsaXplcjo6Y29sbGVjdF9zZXE6Omg5NTQ0N2Fi +NTQzNDZmMWVhvwovY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfY2hhcjo6aGRhNGFkNTNjZWY5YTZm +YTPACjI8Y2hhciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmRlMjVjMGFiY2ZjMzY5OMEK +b21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnFyY29kZTo6UXJWZXJpZmljYXRpb246 +OmZyb21fc2Nhbjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoNjczNjlhMGZhYTY1NWJmNcIK +UDxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok9sbUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6OmhlM2JmNTVmODc5YTJiNWI4wwpSPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xt +RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGUzYmY1NWY4NzlhMmI1YjguMcQKJW9s +bW1hY2hpbmVfZ2V0Um9vbUV2ZW50RW5jcnlwdGlvbkluZm/FClFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj46OmhhMDIzNTc1N2IwMjRk +YTY5LjfGCnVydW1hX2V2ZW50czo6cm9vbTo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXpl +IGZvciBydW1hX2V2ZW50czo6cm9vbTo6RW5jcnlwdGVkRmlsZT46OnNlcmlhbGl6ZTo6aGY3YjM3 +NzRjNzdjYTk5ZjjHCkw8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+ +Ojp3cml0ZV9jaGFyOjpoZDIwYTRjMjQxZThkNWU3My4yyApRY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3I+OjpoYTAyMzU3NTdiMDI0ZGE2 +OS44yQpSPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3IgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aGUzYmY1NWY4NzlhMmI1YjguMsoKTDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcg +YXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmhkMjBhNGMyNDFlOGQ1ZTczLjPLCu4B +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjpqb2luX2FsbDo6 +Sm9pbkFsbDxtYXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5kbGU8Y29yZTo6cmVz +dWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpEZXZpY2VDaGFuZ2VzLG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+Pj4+OjpoOGU0YzQ4 +N2ZmMTFiMjNlNMwKO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+OjppbnNlcnQ6Omgx +ZmQzODQ5MmNlMzMwODFizQo7aGFzaGJyb3duOjptYXA6Okhhc2hNYXA8SyxWLFMsQT46Omluc2Vy +dDo6aDExNDlmNTNhN2E2MmUyM2POCjtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6 +aW5zZXJ0OjpoNjEyOTAxOWE5NWVlZTU2MM8KVG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVz +Ojp1c2VyOjpSZWFkT25seU93blVzZXJJZGVudGl0eTo6bmV3OjpoNjJjMDc3MWRiNWZjNzM1N9AK +dnRyYWNpbmc6Omluc3RydW1lbnQ6Ol86OjxpbXBsIGNvcmU6Om9wczo6ZHJvcDo6RHJvcCBmb3Ig +dHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+Pjo6ZHJvcDo6aDdiMGJkOTg4YmE0 +ZWZiMmTRChtvbG1tYWNoaW5lX2RlY3J5cHRSb29tRXZlbnTSCiFvbG1tYWNoaW5lX2dldFZlcmlm +aWNhdGlvblJlcXVlc3TTCqABPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFz +ZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6 +OkNyeXB0b1N0b3JlPjo6Z2V0X3dpdGhoZWxkX2luZm86Ont7Y2xvc3VyZX19OjpoMmUyZjU1ZmM4 +Njg4N2I0YtQKDnRyYWNpbmdfdHVybk9u1QpwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJl +OjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7Y2xv +c3VyZX19OjpoNDE5YTdmMjQzNmNjNjcxMdYKcG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVy +ZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19Ojp7e2Ns +b3N1cmV9fTo6aDVhMDllOTIyMjA1ZjZhODnXCnBtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1 +cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX06Omg5NTM1N2RmZWYwM2VmODhl2ApwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0 +dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7 +Y2xvc3VyZX19OjpoYTAwYTU0NTNkMmZjODllM9kKcG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1 +dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19Ojp7 +e2Nsb3N1cmV9fTo6aGFkMDliOWZlOTQ1ZjZkZDPaCnBtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpm +dXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6 +e3tjbG9zdXJlfX06OmhiMGRiOTUxN2JkZWRlYWU32wpwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06 +Ont7Y2xvc3VyZX19OjpoYjU3MWY2ZTA2YjRhYzM2N9wKcG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19 +Ojp7e2Nsb3N1cmV9fTo6aGI3NWJmMDY1N2RlNWNmMTTdCnBtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9 +fTo6e3tjbG9zdXJlfX06OmhjNTUxZWRhYTMzZTcxMjFk3gpwbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJl +fX06Ont7Y2xvc3VyZX19OjpoZTQ3YzE2OWRjZmZlYzA3NN8KcG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3Vy +ZX19Ojp7e2Nsb3N1cmV9fTo6aGVlYTI4ZjZmMDgxZjg3YmXgCnBtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1 +cmV9fTo6e3tjbG9zdXJlfX06OmhmM2Q2YTdlMzY1OGZjNGI34QpwbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9z +dXJlfX06Ont7Y2xvc3VyZX19OjpoZjU4OWFiMGRmNzliNGM3MuIKM2NvcmU6Om9wdGlvbjo6T3B0 +aW9uPCZUPjo6Y2xvbmVkOjpoZmJjMDMyMmEyNmM4MGRkZuMKXG1hdHJpeF9zZGtfY3J5cHRvOjp2 +ZXJpZmljYXRpb246OnFyY29kZTo6UXJWZXJpZmljYXRpb246OmNhbmNlbF93aXRoX2NvZGU6Omhh +YjVmNjE0ZWJkZjEwZDJl5ArxAW1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29t +X2tleV9yZXF1ZXN0Ojo8aW1wbCBjb3JlOjpjbG9uZTo6Q2xvbmUgZm9yIG1hdHJpeF9zZGtfY3J5 +cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3JlcXVlc3Q6OlJvb21LZXlSZXF1ZXN0Q29u +dGVudD4+OjpjbG9uZTo6aGRiMjIxNjAxY2JkMmQ0MDTlCjxzZXJkZTo6c2VyOjpTZXJpYWxpemVN +YXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDRjMDE5ZGM1ZmQzMWY0OWPmCjZzZXJkZTo6c2VyOjpTZXJp +YWxpemVyOjpjb2xsZWN0X3NlcTo6aDYxNDQ1YmEwNzBlN2JlMDDnCi9jb3JlOjpmbXQ6OldyaXRl +Ojp3cml0ZV9jaGFyOjpoMzJjNjVkZDliNGU5ZmRiZugKFG9sbW1hY2hpbmVfZ2V0RGV2aWNl6Qqb +ATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9y +PFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Omdl +dF9zZXNzaW9uczo6e3tjbG9zdXJlfX06OmgzMGEwOWIxOWEzZWE0M2Yy6goPdHJhY2luZ190dXJu +T2Zm6wpwbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93 +aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoZDZhZjEyNzcwYWM0 +ZDMxZOwKV21hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjp1c2VyOjpSZWFkT25seU93blVz +ZXJJZGVudGl0eTo6dXBkYXRlOjpoY2Q3YzJlYTkyNmE5NDI4N+0KbjxtYXRyaXhfc2RrX2NvbW1v +bjo6anNfdHJhY2luZzo6SnNGaWVsZFZpc2l0b3IgYXMgdHJhY2luZ19jb3JlOjpmaWVsZDo6Vmlz +aXQ+OjpyZWNvcmRfZGVidWc6OmhlMDllNmY5MmU5ZjVmMjY17go2Y29yZTo6c2xpY2U6Om1lbWNo +cjo6bWVtY2hyX2FsaWduZWQ6OmgyMDcxYjQ5NTRmNjYzY2Zl7wphPGFsbG9jOjpjb2xsZWN0aW9u +czo6YmluYXJ5X2hlYXA6OlBlZWtNdXQ8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpk +cm9wOjpoYjU3NWE5MDdkZTcxMjAwZvAKYTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJpbmFyeV9oZWFw +OjpQZWVrTXV0PFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDBkZjc3ODc2 +NTQ4MmY4Y2XxCqkBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0 +b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0 +b1N0b3JlPjo6Z2V0X291dGJvdW5kX2dyb3VwX3Nlc3Npb246Ont7Y2xvc3VyZX19OjpoNGU4MWNl +MDdmM2FjZmQ2MvIKEnNhc19jYW5jZWxXaXRoQ29kZfMKEXFyX2NhbmNlbFdpdGhDb2Rl9Aotcm1w +OjpkZWNvZGU6Om1hcmtlcl90b19sZW46OmhlMjJkNWMwN2E0MGVlODg49QpuY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PCgpLG1hdHJpeF9zZGtfY3J5cHRvOjpl +cnJvcjo6U2lnbmF0dXJlRXJyb3I+Pjo6aDFmNDIzZmQ2YjRlODk5YjH2CrEBPG1hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpBY2NlcHRlZFByb3RvY29scyBh +cyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6 +YWNjZXB0OjpTYXNWMUNvbnRlbnQ+Pjo6dHJ5X2Zyb206OmhiOGIzODgwMTY3OTVlZDEw9wplPCZt +dXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplcj46OmRlc2VyaWFsaXplX3N0cjo6aDAxNTJiYmQwNDBhNjUwYmL4CkY8YWxsb2M6OnZlYzo6 +VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyNWQ3Y2JjYzljOWQyMDU4 ++QpKPHRyYWNpbmdfY29yZTo6bWV0YWRhdGE6OktpbmQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDBkNTFmNGFlZmYzOTUxMWb6CmptYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2 +aWNlOjpEZXZpY2U6OnJlcXVlc3RfdmVyaWZpY2F0aW9uX2hlbHBlcjo6e3tjbG9zdXJlfX06Omhi +ZmY1NGM3OGZjOTAzZjU5+wqfATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJh +c2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpDcnlwdG9TdG9yZT46OmdldF9jdXN0b21fdmFsdWU6Ont7Y2xvc3VyZX19OjpoYzg3MzdjYzgy +NTQ0MTFlYfwKKXZlcmlmaWNhdGlvbnJlcXVlc3RfdGhlaXJTdXBwb3J0ZWRNZXRob2Rz/QondmVy +aWZpY2F0aW9ucmVxdWVzdF9vdXJTdXBwb3J0ZWRNZXRob2Rz/go/Y29yZTo6c2xpY2U6OnNvcnQ6 +Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6Omg4MDRkNzQ1NWM0YTc1YTk0/wpwbWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJv +cjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoNTRiODQzYzBlMDczNjQzOYALcG1hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJy +b3I6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6aDczNWE0NWFlMTUwYmRlMWaBC3BtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vy +cm9yOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06Omg3ZjI2ZTY3MTE3MmQ3ODY5ggtwbWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9l +cnJvcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19OjpoY2Q5NWYzYmJlNmNmZGE4M4ML5wI8bWF0 +cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMg +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6dHJ5X3Rha2Vf +bGVhc2VkX2xvY2s6Ont7Y2xvc3VyZX19OjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUg +Zm9yIDxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9T +dG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojp0 +cnlfdGFrZV9sZWFzZWRfbG9jazo6e3tjbG9zdXJlfX06OkxlYXNlPjo6c2VyaWFsaXplOjpoY2Mx +N2YyOWY1YjY5ZjA4MYQLVW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OmNhY2hlOjpW +ZXJpZmljYXRpb25DYWNoZTo6cmVwbGFjZTo6aDY3MGYzZWEzYWNhYzljNjWFC1RhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjptYXA6OmVudHJ5OjpWYWNhbnRFbnRyeTxLLFYsQT46Omluc2VydDo6 +aDNmYTQ5MWRjZGZiOTY0MDWGC108cnVtYV9ldmVudHM6OmVudW1zOjpUb0RldmljZUV2ZW50VHlw +ZSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPCZzdHI+Pjo6ZnJvbTo6aGEwNGE3YWQ1Njg3MTY4YzmH +C1RhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OmVudHJ5OjpWYWNhbnRFbnRyeTxLLFYs +QT46Omluc2VydDo6aDU1OGQ5Yjg3M2FiZjNlN2GICzdjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1 +Z1NldDo6ZW50cnk6Omg0OWE5ZmI4ZjQ5NTY3M2Y1iQtRY29yZTo6bnVtOjo8aW1wbCBjb3JlOjpz +dHI6OnRyYWl0czo6RnJvbVN0ciBmb3IgdTE2Pjo6ZnJvbV9zdHI6Omg4ZDE4NjY3NzdhYmZjZDdi +igtKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46Omluc2Vy +dDo6aGE5ODgwZjU1ODVmYjcxMmSLC5MBbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +c2FzOjpzYXNfc3RhdGU6OlNhc1N0YXRlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246 +OnNhczo6c2FzX3N0YXRlOjpBY2NlcHRlZD46OmFzX2NvbnRlbnQ6OmhlZjJlYWRhN2U1N2M5ZDIz +jAtZc2VyZGU6OnNlcjo6aW1wbHM6OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgW1Q7 +IDMyXT46OnNlcmlhbGl6ZTo6aGZhMDY1NWNmOTA4M2Q1ZTCNCzg8RCBhcyBkaWdlc3Q6OmRpZ2Vz +dDo6RGlnZXN0Pjo6dXBkYXRlOjpoMmYzN2YyYTZlZWI3MmIzN44LZzxtYXRyaXhfc2RrX2NyeXB0 +bzo6YmFja3Vwczo6a2V5czo6ZGVjcnlwdGlvbjo6RGVjb2RlRXJyb3IgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aGY0NjY5MzQ4MjcyNGUwNzKPC9wBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLE5vZGVUeXBl +PixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXRfbGVh +Zl9kYXRhOjpoMWYwNGNjN2YwNmUzY2UwOJALOjxUIGFzIGFsbG9jOjpib3Jyb3c6OlRvT3duZWQ+ +Ojp0b19vd25lZDo6aDEzOWUxY2JiOTA5MzhkNTKRC1g8ZGlnZXN0Ojpjb3JlX2FwaTo6d3JhcHBl +cjo6Q29yZVdyYXBwZXI8VD4gYXMgZGlnZXN0OjpVcGRhdGU+Ojp1cGRhdGU6Omg5ZTA2ZDg5ZWFm +YTEwMmNmkgs0PFQgYXMgZGlnZXN0OjptYWM6Ok1hYz46OnVwZGF0ZTo6aDE0YjgzZDZjNzExZDcy +Y2EuMZML3AFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6OmhhYzljYmM1Mzk5MWIwNzg1 +lAs5Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdUdXBsZTo6ZmllbGQ6Omg0YjAxZTEwMDc4YTZl +MWZklQuAA2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6am9p +bl9hbGw6OkpvaW5BbGw8bWF0cml4X3Nka19jb21tb246OmV4ZWN1dG9yOjpKb2luSGFuZGxlPGNv +cmU6OnJlc3VsdDo6UmVzdWx0PChhbGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86Om9s +bTo6c2Vzc2lvbjo6U2Vzc2lvbj4sYWxsb2M6OnZlYzo6VmVjPChtYXRyaXhfc2RrX2NyeXB0bzo6 +aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZSxtYXRyaXhfc2RrX2NyeXB0bzo6dHlw +ZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OldpdGhoZWxkQ29kZSk+KSxtYXRyaXhfc2Rr +X2NyeXB0bzo6ZXJyb3I6Ok9sbUVycm9yPj4+Pjo6aDk2MmQxNzQ3Mzc1M2FjM2UuMZYLTDxhbGxv +Yzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmhkMjBh +NGMyNDFlOGQ1ZTczLjSXC6gBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFz +ZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6 +OkNyeXB0b1N0b3JlPjo6Z2V0X2luYm91bmRfZ3JvdXBfc2Vzc2lvbjo6e3tjbG9zdXJlfX06Omg3 +ODQ4YWZjMWJkY2VlZWU1mAtNPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6Oldy +aXRlPjo6d3JpdGVfY2hhcjo6aGQyMGE0YzI0MWU4ZDVlNzMuMTGZCzZzZXJkZTo6c2VyOjpTZXJp +YWxpemVyOjpjb2xsZWN0X3NlcTo6aGJkNTkzNmI3YmM0NTFiZDKaC1c8cnVtYV9pZGVudGlmaWVy +c192YWxpZGF0aW9uOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDM1 +YTJlOTFkMTQyYTE1YzWbC1ZtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6Omhl +bHBlcnM6OmNhbGN1bGF0ZV9jb21taXRtZW50OjpoYjQ1NDVhMzFlMWIxYzUxNpwLTTxhbGxvYzo6 +c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmhkMjBhNGMy +NDFlOGQ1ZTczLjE4nQtZPHJ1bWFfaWRlbnRpZmllcnNfdmFsaWRhdGlvbjo6ZXJyb3I6OkVycm9y +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzNWEyZTkxZDE0MmExNWM1LjGeCzQ8Y2hhciBh +cyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiODQ2OWRkOGI0NjFhMjM5nwtuPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SXRlcjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6 +aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDA0ZGY3MGQ4NzNlZDAwYTWgC6UBPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3NlY3JldHNf +ZnJvbV9pbmJveDo6e3tjbG9zdXJlfX06OmhlY2ZkYzZhOTFmZGM0ZTAxoQtUc2VyZGU6OnNlcjo6 +aW1wbHM6OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgJlQ+OjpzZXJpYWxpemU6Omg4 +YjQ1YWY2ZDA4NWVmNDA0ogswPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyZDI3MDEx +OGM4Y2QxMzhhowuLAW1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Ol86OjxpbXBsIHNlcmRl +OjpzZXI6OlNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6R29zc2lw +UmVxdWVzdD46OnNlcmlhbGl6ZTo6aGE5NDhjODgxMDQzNTdmZjKkC1g8ZGlnZXN0Ojpjb3JlX2Fw +aTo6d3JhcHBlcjo6Q29yZVdyYXBwZXI8VD4gYXMgZGlnZXN0OjpVcGRhdGU+Ojp1cGRhdGU6Omhl +ZTAyMjQ5MmQ5NGZjYTEwpQtrY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpWZXJpZmljYXRpb25SZXF1ZXN0Pjo6aGYyZGVj +YjQ1NzUxY2MyNzKmC6gBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1l +bW9yeVN0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OmluYm91bmRfZ3JvdXBfc2Vzc2lvbnNfZm9yX2JhY2t1cDo6e3tjbG9zdXJlfX06OmhmZjE2 +ODI2NWFmZjQyNDUwpwtYPGRpZ2VzdDo6Y29yZV9hcGk6OndyYXBwZXI6OkNvcmVXcmFwcGVyPFQ+ +IGFzIGRpZ2VzdDo6VXBkYXRlPjo6dXBkYXRlOjpoMTYwN2U0NjMyOGI0N2Q0YqgLWDxkaWdlc3Q6 +OmNvcmVfYXBpOjp3cmFwcGVyOjpDb3JlV3JhcHBlcjxUPiBhcyBkaWdlc3Q6OlVwZGF0ZT46OnVw +ZGF0ZTo6aGEyYzdkNWViMWVkYzFhOTGpC1g8ZGlnZXN0Ojpjb3JlX2FwaTo6d3JhcHBlcjo6Q29y +ZVdyYXBwZXI8VD4gYXMgZGlnZXN0OjpVcGRhdGU+Ojp1cGRhdGU6Omg5NDg0OGVmMGE1NDczYmZm +qgtaPGRpZ2VzdDo6Y29yZV9hcGk6OndyYXBwZXI6OkNvcmVXcmFwcGVyPFQ+IGFzIGRpZ2VzdDo6 +VXBkYXRlPjo6dXBkYXRlOjpoOTQ4NDhlZjBhNTQ3M2JmZi4xqwtUYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bWFwOjplbnRyeTo6VmFjYW50RW50cnk8SyxWLEE+OjppbnNlcnQ6OmgzMThjYTFi +YTVmNjA1ZDFlrAt9bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVy +aWZpY2F0aW9uTWFjaGluZTo6cmVxdWVzdF90b19kZXZpY2VfdmVyaWZpY2F0aW9uOjp7e2Nsb3N1 +cmV9fTo6aDUwOTJjNDczNTJkNjdkZWStC0l3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmltcGxzOjpq +c192YWx1ZV92ZWN0b3JfZnJvbV9hYmk6OmhkMmZhNWM5MTY2OWVkZDQ2rgtQPG1hdHJpeF9zZGtf +c3RvcmVfZW5jcnlwdGlvbjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDJiZTRk +Y2Q2MjA5MDBjODevC248YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJdGVyPEssVj4g +YXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNTNhMTA3 +YjIyZDA2NTk4Y7ALoAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5 +cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5 +cHRvU3RvcmU+OjpnZXRfcm9vbV9zZXR0aW5nczo6e3tjbG9zdXJlfX06OmhiMDIyM2IzYzBkM2U2 +M2M0sQtGbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHJhY2luZzo6VHJhY2luZzo6bWluX2xldmVs +OjpoMTI2Zjg5NTRiYWZiYjgzYbILUjxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246OkVycm9y +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyYmU0ZGNkNjIwOTAwYzg3LjGzCzZzZXJkZTo6 +c2VyOjpTZXJpYWxpemVyOjpjb2xsZWN0X3NlcTo6aGEwODNjOTEzODAyNjMzNGS0C1I8bWF0cml4 +X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +MmJlNGRjZDYyMDkwMGM4Ny4ytQtnPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6Y2Fu +Y2VsOjpDYW5jZWxDb2RlIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208VD4+Ojpmcm9tOjpoOTAxYWQz +MDlmOThiZTI4ZbYLVm1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlVzZXJE +ZXZpY2VzOjppc19hbnlfdmVyaWZpZWQ6OmgyMmJmYWJjOTkxYzcxOGQwtwtYbWF0cml4X3Nka19j +cnlwdG86Om9sbTo6c2lnbmluZzo6cGtfc2lnbmluZzo6U2VsZlNpZ25pbmc6OmZyb21fcGlja2xl +OjpoZGIxZGVmMTVhMTRlNDJmM7gL1gE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6 +OnJvb21fa2V5X3dpdGhoZWxkOjpSb29tS2V5V2l0aGhlbGRDb250ZW50IGFzIGNvcmU6OmNvbnZl +cnQ6OlRyeUZyb208bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dp +dGhoZWxkOjpXaXRoaGVsZEhlbHBlcj4+Ojp0cnlfZnJvbTo6e3tjbG9zdXJlfX06Omg0M2Q4YTA4 +ZWFkZjgzN2EzuQsycXJjb2RlOjpiaXRzOjpCaXRzOjpwdXNoX251bWJlcjo6aGQ3ZGE3MTIxNzM4 +NWJiMje6C09ydW1hX2V2ZW50czo6a2luZHM6OlN5bmNNZXNzYWdlTGlrZUV2ZW50PEM+OjppbnRv +X2Z1bGxfZXZlbnQ6OmgzMjk1YTZjYmQ2ODM4MDdjuwsnaXRvYTo6QnVmZmVyOjpmb3JtYXQ6Omg2 +M2FiMGQ4YWIxYTNlZTQyvAtZPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Q2hhbmdlcyBhcyBj +b3JlOjpkZWZhdWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aDEyMDU1NjVkN2UyMzc1ODa9C1o8bWF0 +cml4X3Nka19jcnlwdG86Om9sbTo6c2Vzc2lvbjo6U2Vzc2lvbiBhcyBjb3JlOjpjbG9uZTo6Q2xv +bmU+OjpjbG9uZTo6aDJkM2Q5ZWUxZmM5YWQ4MjK+C1s8bWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +OjpDaGFuZ2VzIGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoMTIwNTU2NWQ3 +ZTIzNzU4Ni4xvwtuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SXRlcjxLLFY+IGFz +IGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGI0NGY1MjUz +NjQzZGI0OTjAC0phbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixB +Pjo6aW5zZXJ0OjpoY2NkMWNjNTNiNjc3YWIyYcELGm9sbW1hY2hpbmVfZ2V0VmVyaWZpY2F0aW9u +wgufATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVy +cm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46 +OmxvYWRfYmFja3VwX2tleXM6Ont7Y2xvc3VyZX19OjpoYmY1NWMyMTk2NTg4NmQxMcMLnwE8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBh +cyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpuZXh0X2Jh +dGNoX3Rva2VuOjp7e2Nsb3N1cmV9fTo6aGM4NThjMjM2MmFiYjJlYTDEC6EBPG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6bG9hZF90cmFja2VkX3Vz +ZXJzOjp7e2Nsb3N1cmV9fTo6aDRiN2EyMDdkNzFmN2I1ZWHFC6kBPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3Vuc2VudF9zZWNyZXRfcmVx +dWVzdHM6Ont7Y2xvc3VyZX19OjpoOTEwNDVkZjNmMzExMzA0ZMYLWzxtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OkNoYW5nZXMgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6Omgx +MjA1NTY1ZDdlMjM3NTg2LjLHC3k8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0OjpEaWZm +ZXJlbmNlPFQsQT4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+Ojpz +aXplX2hpbnQ6OmgyZDczMDg5ZTUxNzlmNmZlyAvIATxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRp +b246Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfc3RvcmVf +ZW5jcnlwdGlvbjo6RW5jcnlwdGVkU3RvcmVDaXBoZXI+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZp +c2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYnl0ZXM6OmhkYjBlNTkxYzY4NGY1 +NGMxyQtGPHJtcF9zZXJkZTo6ZGVjb2RlOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoYzAxNTRkNjhiMzdkNTIwZMoLYm1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Np +b25zOjpvdXRib3VuZDo6T3V0Ym91bmRHcm91cFNlc3Npb246OmV4cGlyZWQ6OmhkYjkyZTBjZDVl +MmIzMjVmywtbPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Q2hhbmdlcyBhcyBjb3JlOjpkZWZh +dWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aDEyMDU1NjVkN2UyMzc1ODYuM8wLsAE8bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRy +aXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjppbmJvdW5kX2dyb3Vw +X3Nlc3Npb25zX2Zvcl9iYWNrdXA6Ont7Y2xvc3VyZX19OjpoYTllZmJhZjU5MDg5ZDdiY80Ldjxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OldpdGho +ZWxkQ29kZSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDhjNDIyZDZhNDNjMDQ2 +M2HOC248bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OlNh +c1N0YXRlPFM+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMGZiNzJjOTU0YjViZGE2 +Nc8LTTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2No +YXI6OmhkMjBhNGMyNDFlOGQ1ZTczLjIx0AtOYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFw +OjpJbnRvSXRlcjxLLFYsQT46OmR5aW5nX25leHQ6OmgwZDI1YzM1MGRlMTY1NGRm0QtOYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRlcjxLLFYsQT46OmR5aW5nX25leHQ6Omgy +MGE0NzFiN2Q4NDViZTc40gtOYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRl +cjxLLFYsQT46OmR5aW5nX25leHQ6Omg2Yjc3MmVjMTI1NTIyYTM40wtOYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bWFwOjpJbnRvSXRlcjxLLFYsQT46OmR5aW5nX25leHQ6OmhmMjEyZGIzNWZk +MDdmNGVj1AtOYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRlcjxLLFYsQT46 +OmR5aW5nX25leHQ6Omg0NmMyMjYwMzY0YzQ5ODk01QtOYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bWFwOjpJbnRvSXRlcjxLLFYsQT46OmR5aW5nX25leHQ6OmhhOTEwMWU3NmU2NTdhMzBl1gs/ +Y29yZTo6c2xpY2U6OnNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6Omg2ZjJjMTAwZTI1 +OTBiOTA01wtsPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OklkZW50aXRpZXNCZWlu +Z1ZlcmlmaWVkIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYzFhM2I0MjUwNDE0YjRm +MC402AtIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRy +b3A6Omg5MmU4NmU5MzM2ZjgwNGQ22QsnaXRvYTo6QnVmZmVyOjpmb3JtYXQ6OmgwZmE1MjY0N2Vk +NTIwNDk12gtJPHNlcmRlX2pzb246OmVycm9yOjpFcnJvciBhcyBzZXJkZTo6ZGU6OkVycm9yPjo6 +Y3VzdG9tOjpoZmY1MTRkNTk3NmI1NTc4YtsLmwE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojpsb2FkX2FjY291bnQ6Ont7Y2xvc3VyZX19OjpoNDc0 +ZWZhMzY5YWNjNDhhY9wLqQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNl +Q3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +Q3J5cHRvU3RvcmU+OjpnZXRfaW5ib3VuZF9ncm91cF9zZXNzaW9uczo6e3tjbG9zdXJlfX06Omhh +ODU4YTMxYjVhMDY5ZDlj3QsXZW5jcnlwdGVkYXR0YWNobWVudF9uZXfeC3NtYXRyaXhfc2RrX2lu +ZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjppbmRleGVkZGJfc2VyaWFsaXplcjo6SW5kZXhlZGRiU2Vy +aWFsaXplcjo6ZGVzZXJpYWxpemVfdmFsdWU6OmhjNmZjNzg4NjQzNjc0MmEz3wtVY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6U2lnbmF0dXJlRXJyb3I+ +OjpoNTYwMTVmYjAwZjUzNmNkNuALsgFydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246Om1h +Yzo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2 +ZXJpZmljYXRpb246Om1hYzo6VG9EZXZpY2VLZXlWZXJpZmljYXRpb25NYWNFdmVudENvbnRlbnQ+ +OjpzZXJpYWxpemU6OmhkYmRmODIxMjE4MjUwNzFl4Qs3bWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +OjpTdG9yZTo6bmV3OjpoMWVjZDY3Yzc4ZWJhMzNlZuILS21hdHJpeF9zZGtfY29tbW9uOjpmYWls +dXJlc19jYWNoZTo6RmFpbHVyZXNJdGVtOjpleHBpcmVkOjpoYzNhYzk2NjYyZWRhZmZhNOMLSHZv +ZG96ZW1hYzo6b2xtOjpzZXNzaW9uX2tleXM6OlNlc3Npb25LZXlzOjpzZXNzaW9uX2lkOjpoYThj +MTAyZDJmYzM5NjZkM+QL3AFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6Omg4ZWUxYWM0 +NGU0ZDZmMDBm5QtRY29yZTo6bnVtOjo8aW1wbCBjb3JlOjpzdHI6OnRyYWl0czo6RnJvbVN0ciBm +b3IgdTMyPjo6ZnJvbV9zdHI6Omg5NDEzYzQ4NmFlMDkxODAz5gtLY29yZTo6Zm10OjpudW06Ojxp +bXBsIGNvcmU6OmZtdDo6TG93ZXJIZXggZm9yIGkxMjg+OjpmbXQ6Omg2NmRjYTBiMWFjNjBiZDEx +5wtLY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6VXBwZXJIZXggZm9yIGkxMjg+Ojpm +bXQ6OmgwZDQzZjVkODE0MzA3MzI26AtoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJ +LEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDI2 +NTc5ZjhhOGRmOGRhNTLpC3FydW1hX2V2ZW50czo6cm9vbTo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6 +U2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cm9vbTo6SW1hZ2VJbmZvPjo6c2VyaWFsaXplOjpo +MWM3YTI2OTQzZjVlOTA0NuoLCXNhc19lbW9qaesLazxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZp +Y2F0aW9uOjpxcmNvZGU6OlFyVmVyaWZpY2F0aW9uIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNs +b25lOjpoZDk5NTliYzNjNjdlZjRlNS4x7AvIATxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246 +Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfc3RvcmVfZW5j +cnlwdGlvbjo6RW5jcnlwdGVkVmFsdWVCYXNlNjQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0 +b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYnl0ZXM6OmgzNDFiM2FjNjFmNzQzOTBh +7Qs2c2VyZGU6OnNlcjo6U2VyaWFsaXplcjo6Y29sbGVjdF9zZXE6OmhjNDljY2IyMThkNjhiYTEx +7guXATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0b3JlOjpNZW1vcnlTdG9yZSBh +cyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpzZXRfY3Vz +dG9tX3ZhbHVlOjp7e2Nsb3N1cmV9fTo6aDE2NzVkZWVjNjE3YWM2OTXvCzV2b2RvemVtYWM6OmNp +cGhlcjo6Q2lwaGVyOjpkZWNyeXB0OjpoMTgzZWFiY2NmYjI0ODE5NvALL3NoYTI6OnNoYTI1Njo6 +c29mdDo6c2NoZWR1bGU6Omg5MjRkZjQ3MzM3NGFhMmI08QsjanNfc3lzOjp0cnlfaXRlcjo6aDBi +N2ZlMDgzMjM5ZThmOTXyC8gDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjpzZXNzaW9uX21hbmFnZXI6Omdyb3VwX3Nlc3Npb25zOjpHcm91cFNlc3Npb25NYW5hZ2Vy +OjpzaGFyZV9yb29tX2tleTxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8Y29yZTo6c2xp +Y2U6Oml0ZXI6Okl0ZXI8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVz +ZXJJZD4sPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQgYXMg +Y29yZTo6Y29udmVydDo6QXNSZWY8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpV +c2VySWQ+Pjo6YXNfcmVmPixtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6 +b3V0Ym91bmQ6OkVuY3J5cHRpb25TZXR0aW5ncz46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46 +OmhhYTc5Zjc5MGJhNjUwNDUz8wtKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJl +ZU1hcDxLLFYsQT46Omluc2VydDo6aDhhMTJlMDkzNDRlMzczYzL0C+4CY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6aW1wb3J0X2Nyb3NzX3NpZ25p +bmdfa2V5czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1 +cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5l +OjppbXBvcnRfY3Jvc3Nfc2lnbmluZ19rZXlzOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjpvbG06OkNyb3NzU2lnbmluZ1N0YXR1cz46Ont7Y2xvc3VyZX19Pj46Omg2N2UxM2Jh +NDI4ZTVkODJl9QtDc3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNoTWFwPEssVixTPjo6 +Z2V0OjpoOGZhODA1YjY1ZTAxNmRiMfYLOnZvZG96ZW1hYzo6c2FzOjpTYXNCeXRlczo6ZW1vamlf +aW5kaWNlczo6aGEwNWQyODIzNmRhNjYyZWX3C0Y8dm9kb3plbWFjOjpQaWNrbGVFcnJvciBhcyBj +b3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzNzE4MGYzZjFkY2ZhYzk5+As4dHJhY2luZ19jb3Jl +OjpkaXNwYXRjaGVyOjpnZXRfZGVmYXVsdDo6aDYxMzE5MDQyNzFiMDY2MjH5C5sBPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3Nlc3Npb25z +Ojp7e2Nsb3N1cmV9fTo6aGFiNzk2ODU5NmUyN2MwNDn6Cz5oYXNoYnJvd246OnJhdzo6UmF3VGFi +bGU8VCxBPjo6cmVtb3ZlX2VudHJ5OjpoNWQyNzA4MzFjZTFiNGU1NfsLSjx2b2RvemVtYWM6Okxp +Ym9sbVBpY2tsZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyNjI1NzljMDY5OGI2 +MzUw/AtpbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGlu +ZTo6aGFuZGxlX2tleV9zaGFyZV93aXRob3V0X3Nlc3Npb246Omg5NGY5ODY1NzhiZWQzYWQy/Qt2 +c2VyZGVfanNvbjo6dmFsdWU6OmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplciBmb3Ig +c2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPjo6ZGVzZXJpYWxpemVfYW55OjpoNzYwMWM3ZDQxMWZh +Yjk4Nv4LTDx2b2RvemVtYWM6OkxpYm9sbVBpY2tsZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6OmgyNjI1NzljMDY5OGI2MzUwLjH/C0Njb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdf +c3RydWN0X2ZpZWxkc19maW5pc2g6Omg3ZjU0NzA1ZjYzM2Y1YTAxgAwUZWQyNTUxOXNpZ25hdHVy +ZV9uZXeBDIABaW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfZGF0YWJhc2U6OmlkYl92ZXJzaW9uX2No +YW5nZV9ldmVudDo6SWRiVmVyc2lvbkNoYW5nZUV2ZW50Ojp3cmFwX2NhbGxiYWNrOjp7e2Nsb3N1 +cmV9fTo6aGFiZjJhZWNiMDRkZTM2MjWCDFdtYXRyaXhfc2RrX2NvbW1vbjo6ZmFpbHVyZXNfY2Fj +aGU6OkZhaWx1cmVzQ2FjaGU8VD46OmNhbGN1bGF0ZV9kZWxheTo6aGNhMTlmM2NjMTBiNjZjNTWD +DENzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8SyxWLFM+OjpnZXQ6OmgyZDM3 +ZjNjYjEyOGMzZWZihAwtYmxha2UzOjpDaHVua1N0YXRlOjp1cGRhdGU6Omg2MjM2ODZlNTdiNTE0 +MTMzhQw0Ymxha2UzOjpjb21wcmVzc19wYXJlbnRzX3BhcmFsbGVsOjpoZjg4ZjBkYjEzOWI3M2Uw +N4YMZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpE +ZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6Omg4YmYxMWUzMWRkNWQ1YzU4hwxLdm9kb3pl +bWFjOjp0eXBlczo6ZWQyNTUxOTo6RWQyNTUxOVNpZ25hdHVyZTo6ZnJvbV9iYXNlNjQ6Omg2MmFl +NGFjY2QxOGIxNzg2iAw6cnVzdGNfZGVtYW5nbGU6OnYwOjpQYXJzZXI6OmhleF9uaWJibGVzOjpo +MmE2YzQ1YTQzZGI4NjgwZokMZGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6SW5uZXJSZXF1ZXN0Pjo6aGFhYTgwMThhNzUx +NjJkYjOKDBlvbG1tYWNoaW5lX2ltcG9ydFJvb21LZXlziwwhb2xtbWFjaGluZV9pbXBvcnRFeHBv +cnRlZFJvb21LZXlzjAxmY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpJbm5lclJlcXVlc3Q+OjpoYWFhODAxOGE3NTE2MmRi +My4yjQwzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmgxMzNhMmJiNGY0N2VmOGUy +jgySAW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNT +dGF0ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6Q3Jl +YXRlZD46OmFzX2NvbnRlbnQ6Omg3OWU5ODZmZTlkNTQ2OTA3jww1b25jZV9jZWxsOjppbXA6Omlu +aXRpYWxpemVfb3Jfd2FpdDo6aDcxN2ZhNjBjNjk3MmQ3YjOQDEY8c2VyZGVfanNvbjo6ZXJyb3I6 +OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1NTM5ZTMwN2UxNzA4ZDY3kQxQPHJ1 +bWFfZXZlbnRzOjpyb29tOjpNZWRpYVNvdXJjZSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9u +ZTo6aDk0NzdkMDM0OWQwODZhYTWSDEphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJU +cmVlTWFwPEssVixBPjo6aW5zZXJ0OjpoMjM3ODgxMjllZTRjYTJjZJMMSmFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjppbnNlcnQ6OmhhMDJhNjg4MGViYmJh +ZjVjlAyJAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRy +aXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6Ok91dGJvdW5kR3Jv +dXBTZXNzaW9uPj46OmhkOTQ1NjY1ZjUyMzI2YWM1lQxDc3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6 +bWFwOjpIYXNoTWFwPEssVixTPjo6Z2V0OjpoMTk0ODg0ZmI4MTVkYWJmNJYMSm1hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6U2FzOjpzdGFydF9oZWxwZXI6Omg1YjNlNTk1OGU0 +MDhlNTQ3lwxuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6S2V5czxLLFY+IGFzIGNv +cmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDM4Yzg5MWExZTU2 +NGYxM2GYDG48YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpLZXlzPEssVj4gYXMgY29y +ZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZDgwNGJlMWMzZjhl +OWM0OJkMcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OlZhbHVlczxLLFY+IGFzIGNv +cmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDc4YzQyNDg2MzI5 +OTM4NGKaDGk8cnVtYV9jbGllbnRfYXBpOjplcnJvcjo6RXJyb3IgYXMgcnVtYV9jb21tb246OmFw +aTo6RW5kcG9pbnRFcnJvcj46OmZyb21faHR0cF9yZXNwb25zZTo6aDQ2YTY5YTlmMmYzNjdhM2Sb +DDNjb3JlOjpzbGljZTo6PGltcGwgW1RdPjo6cmV2ZXJzZTo6aDMxZjhiZmFhZWI2NzI3ZmKcDElt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0b3JlOjplbmNvZGVfa2V5X2luZm86Omhl +NTAyNmYxM2U4MjBkOTRknQxjPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50 +VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6OmhjY2IxZGYzM2NlMTYy +ZjlingypATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9y +ZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OmdldF9vdXRib3VuZF9ncm91cF9zZXNzaW9uOjp7e2Nsb3N1cmV9fTo6aGY2ODJjZWZiZGFj +MmJmNjWfDDtzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjplbmRfc2VxOjpoMGQ1Y2Zi +MDMzZDk2ZGY5NqAMZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6Omg5ZmU2YTdmMTkyZGU2YTgw +oQwtcm1wOjptYXJrZXI6Ok1hcmtlcjo6dG9fdTg6Omg2NTdiMzQ5ZGJlY2NlZGI0ogxjPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8SyxWLEE+IGFzIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcD46OmRyb3A6OmhlYTM1ZmE3NTYyZDFkMWE5owxmbWF0cml4X3Nka19jcnlwdG86 +OnZlcmlmaWNhdGlvbjo6Y2FjaGU6OlZlcmlmaWNhdGlvbkNhY2hlOjphZGRfdmVyaWZpY2F0aW9u +X3JlcXVlc3Q6OmgxZmZlZmUyNDQzMTkwMzBipAxlPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2Vy +aWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cjo6 +aGNjMDUzMGNkYTc4NGQ1NGSlDHg8dHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6c2hhcmRl +ZDo6UmVnaXN0cnkgYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6Y2xv +bmVfc3Bhbjo6aDdmYTgwNTBjZGVhOGRjMTimDGU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJp +YWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc3RyOjpo +ODMxZjRkMGI2N2JjYmIwNacMZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4g +YXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6OmhkNGM1NTRmODI2 +MDFmNzc0qAxlPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6 +ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cjo6aGM0NzI4NTg3YWUxMTYyNzCpDGU8 +Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemVyPjo6ZGVzZXJpYWxpemVfc3RyOjpoODUxNGE2Nzk0YjYwYWVkM6oMZTwmbXV0IHNlcmRl +X2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+Ojpk +ZXNlcmlhbGl6ZV9zdHI6OmgwN2E5MDMxN2JkMjFkMTJiqwxlPCZtdXQgc2VyZGVfanNvbjo6ZGU6 +OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXpl +X3N0cjo6aDU4ZjVlZjg5ZjkzNDUxZWGsDDdjb3JlOjpjaGFyOjptZXRob2RzOjplbmNvZGVfdXRm +OF9yYXc6OmhlNjhmMDQyYzRlYzJlYTQwrQwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg1MTIxNGFiMmZkYzJiOWI0rgwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3Mzk3 +NDNiMmU4Zjk1NWE1rwwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjYjc5MWVmOTY5 +ZmYwMTA3sAxuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6S2V5czxLLFY+IGFzIGNv +cmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDBjNTlhMDRjNzJl +OTcxNjKxDG48YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpLZXlzPEssVj4gYXMgY29y +ZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNGYwMWIxYjlmODli +NGIyMbIMIW9sbW1hY2hpbmVfaW1wb3J0Q3Jvc3NTaWduaW5nS2V5c7MMIm9sbW1hY2hpbmVfc2F2 +ZUJhY2t1cERlY3J5cHRpb25LZXm0DKsBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkNyeXB0b1N0b3JlPjo6aW5ib3VuZF9ncm91cF9zZXNzaW9uX2NvdW50czo6e3tjbG9z +dXJlfX06OmhlOTMzZDZjNGI2OTZhMjdjtQyrATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRy +YWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9y +ZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmluYm91bmRfZ3JvdXBfc2Vzc2lvbl9jb3VudHM6Ont7 +Y2xvc3VyZX19OjpoZjk5OWRjMjRkMGY5YjViYrYMUG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlv +bjo6U3RvcmVDaXBoZXI6OmRlY3J5cHRfdmFsdWVfdHlwZWQ6OmhmYTk4OTRmNzczYTA2YWM1twy3 +AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpjaG9vc2VfcGFyZW50X2t2OjpoZGQ0 +NzA0Mjk5MGY0YWFhMLgMtwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6Y2hvb3Nl +X3BhcmVudF9rdjo6aGVmMjBkMTg5MDA4MTIyNGK5DLcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJ +bnRlcm5hbD46OmNob29zZV9wYXJlbnRfa3Y6Omg1OTM0ZDgzZmI2NmE5ZGM1ugy3AWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpjaG9vc2VfcGFyZW50X2t2OjpoNTE2MDVmMGUzMzc1 +YTMwY7sMtwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6Y2hvb3NlX3BhcmVudF9r +djo6aDVlNGE2ZTY3MWFmMjJmMDO8DLcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYs +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46 +OmNob29zZV9wYXJlbnRfa3Y6OmgyMjkwNjYxMzYyMzM3ZDhlvQy3AWFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TGVhZk9ySW50ZXJuYWw+OjpjaG9vc2VfcGFyZW50X2t2OjpoNDRjYmRlOTdmNWE1ZmViZL4MtwFh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6Y2hvb3NlX3BhcmVudF9rdjo6aGFhZTQ3 +MmYwY2RmOGIxNjO/DFptYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6 +VmVyaWZpY2F0aW9uUmVxdWVzdDo6cmVxdWVzdDo6aGQzYjdlMGU3ZTMxZDJlODLADEttYXRyaXhf +c2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6VXNlcklkZW50aXRpZXM6Om5ldzo6aGYzNzM0 +MTQ5ZGRiZWMxYzHBDERzZXJkZTo6ZGU6OnZhbHVlOjpNYXBEZXNlcmlhbGl6ZXI8SSxFPjo6bmV4 +dF9wYWlyOjpoMzdmYjYyNGYzODg1Mzg3ZMIMtwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0 +LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVy +bmFsPjo6Y2hvb3NlX3BhcmVudF9rdjo6aGM1YWVlYTM0YjYyMWFhOTHDDLcBYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpMZWFmT3JJbnRlcm5hbD46OmNob29zZV9wYXJlbnRfa3Y6OmgyOTgwOWE4YmVjZTIzNzVm +xAy3AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpjaG9vc2VfcGFyZW50X2t2Ojpo +MDY3MTIzNmY0NjU2MmViYcUMU3J1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2tleV9p +ZDo6RGV2aWNlS2V5SWQ6OmZyb21fcGFydHM6Omg1NGZjOTY1MzVlYWE5MThjxgxkbWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5OjpzdGF0 +dXM6Ont7Y2xvc3VyZX19OjpoZmQwM2UyZDc4Zjc2ZDI3OccMNmRpZ2VzdDo6Rml4ZWRPdXRwdXQ6 +OmZpbmFsaXplX2ZpeGVkOjpoNWVlMTY3MDU4NTU4NmJhNsgM3AFhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9k +ZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsTm9k +ZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxp +dF9sZWFmX2RhdGE6OmgxYmI1YTgwM2MzYTFhYjhjyQzcAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixOb2RlVHlw +ZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0X2xl +YWZfZGF0YTo6aDc4ODdmN2QyNjNjMzg0ODPKDERtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjp1dGls +aXR5Ojp2ZXJpZnlfc2lnbmF0dXJlOjpoYzRlNDE1NTcyOTY5ZDI3Y8sMmwE8bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6RGV2aWNlS2V5SGVscGVyIGFzIGNvcmU6OmNvbnZl +cnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6RGV2aWNlS2V5 +cz4+Ojpmcm9tOjpoODRmMTBlOGU5ZTc5ODNjNMwMNmRpZ2VzdDo6Rml4ZWRPdXRwdXQ6OmZpbmFs +aXplX2ZpeGVkOjpoNGU3MjgzYjVjMDE5NDA0MM0MczxtYXRyaXhfc2RrX2NyeXB0bzo6ZmlsZV9l +bmNyeXB0aW9uOjphdHRhY2htZW50czo6QXR0YWNobWVudERlY3J5cHRvcjxSPiBhcyBzdGQ6Omlv +OjpSZWFkPjo6cmVhZDo6aDg3OGZkOTZkMGJjMGMwMjjODD9jb3JlOjpzbGljZTo6c29ydDo6aW5z +ZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGZkOWFhOWJhNzYyYWZhNjbPDPYCY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6YmFja3VwX3Jvb21fa2V5 +czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9f +cHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpiYWNr +dXBfcm9vbV9rZXlzOjp7e2Nsb3N1cmV9fSxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpyZXF1ZXN0czo6S2V5c0JhY2t1cFJlcXVlc3Q+Pjo6e3tjbG9zdXJlfX0+ +Pjo6aDY4MTAwOTY0NzJiZTlkZWXQDNwBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLE5vZGVUeXBlPixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXRfbGVhZl9kYXRhOjpo +MWM4YWU0YmIyZjM1YWQwONEMSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVN +YXA8SyxWLEE+OjppbnNlcnQ6OmhlYTJjNjcwNjE5NjYzYjA00gyLATxjdXJ2ZTI1NTE5X2RhbGVr +OjpiYWNrZW5kOjpzZXJpYWw6OnUzMjo6ZmllbGQ6OkZpZWxkRWxlbWVudDI2MjUgYXMgc3VidGxl +OjpDb25kaXRpb25hbGx5U2VsZWN0YWJsZT46OmNvbmRpdGlvbmFsX2Fzc2lnbjo6aDFkMzM3M2U3 +MzNiZDEyMjfTDNwBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLE5vZGVUeXBlPixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXRfbGVhZl9kYXRhOjpoNjQxM2MxY2ZlNTMx +ZmY5NtQMSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+Ojpp +bnNlcnQ6Omg5ZDExNWNjMmRhZWFlOGU01QxKPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8VD4g +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDE3NGM0NGMxYjAwZmQwYTXWDEo8c3RkOjpzeW5j +Ojpyd2xvY2s6OlJ3TG9jazxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjMwYjQ0ODE1 +YjgyYmQ1Y9cMSjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrPFQ+IGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg0MDRjZjhjMTg4MGUzNzY42AxKPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8 +VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDg2ZjM4MDZmMzgwZDAzZjnZDEo8c3RkOjpz +eW5jOjpyd2xvY2s6OlJ3TG9jazxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYWRjYjkx +NDA4ZDE3OGVhZtoMSjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrPFQ+IGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmhiMjcyMjMwZDljZWE3MTM52wxKPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xv +Y2s8VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGJmMjhjYzQ5YjQxN2UxMWPcDEo8c3Rk +OjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGMw +YTNkMzNiYjM2NWU0ZN0MSjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrPFQ+IGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmhmNzUxMTUxMjkzMTI2YmIy3gxjPGFsbG9jOjp2ZWM6OlZlYzxUPiBh +cyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0 +ZXI6OmhjOWZlODFjY2VjMmQzMTI23wyfATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNldF9jdXN0b21fdmFsdWU6Ont7Y2xvc3VyZX19OjpoNGNh +OTEzZDZhY2RmNmM1NuAMmQFydW1hX2V2ZW50czo6cmVsYXRpb246OnJlbF9zZXJkZTo6PGltcGwg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVk +TWVzc2FnZUxpa2VSZWxhdGlvbnM8RT4+OjpkZXNlcmlhbGl6ZTo6aDA2NzI2ZDNhYTQwMTMwZjnh +DJkBcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpyZWxfc2VyZGU6OjxpbXBsIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VMaWtlUmVs +YXRpb25zPEU+Pjo6ZGVzZXJpYWxpemU6OmgxYzViOTFkNTQ1MjdlMDNk4gyZAXJ1bWFfZXZlbnRz +OjpyZWxhdGlvbjo6cmVsX3NlcmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBy +dW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxFPj46OmRl +c2VyaWFsaXplOjpoMWZhM2UyNTMwOGEzMWY3MuMMmQFydW1hX2V2ZW50czo6cmVsYXRpb246OnJl +bF9zZXJkZTo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJl +bGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8RT4+OjpkZXNlcmlhbGl6ZTo6aDI1 +MzZmZjk0MDhhNTFjMDDkDJkBcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpyZWxfc2VyZGU6OjxpbXBs +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxl +ZE1lc3NhZ2VMaWtlUmVsYXRpb25zPEU+Pjo6ZGVzZXJpYWxpemU6OmgzN2UzNjAwMGMyMmZkMmU5 +5QyZAXJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6cmVsX3NlcmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRl +c2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJl +bGF0aW9uczxFPj46OmRlc2VyaWFsaXplOjpoM2JkNGVhMjA0NDM2MTRlNOYMmQFydW1hX2V2ZW50 +czo6cmVsYXRpb246OnJlbF9zZXJkZTo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Ig +cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8RT4+Ojpk +ZXNlcmlhbGl6ZTo6aDU1ZjdjZmZkNTkxYzk4NTnnDJkBcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpy +ZWxfc2VyZGU6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpy +ZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPEU+Pjo6ZGVzZXJpYWxpemU6Omg2 +ZWEyNzIxMTRmMzI1MGE36AyZAXJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6cmVsX3NlcmRlOjo8aW1w +bCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRs +ZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxFPj46OmRlc2VyaWFsaXplOjpoODBjNmZkZmJmM2U1OTNk +NekMmQFydW1hX2V2ZW50czo6cmVsYXRpb246OnJlbF9zZXJkZTo6PGltcGwgc2VyZGU6OmRlOjpE +ZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VS +ZWxhdGlvbnM8RT4+OjpkZXNlcmlhbGl6ZTo6aDk2ZThhZTRiNWI3MTAzYzLqDJkBcnVtYV9ldmVu +dHM6OnJlbGF0aW9uOjpyZWxfc2VyZGU6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9y +IHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPEU+Pjo6 +ZGVzZXJpYWxpemU6Omg5ZjQwZjI0ZWMwYzVjZDkw6wyZAXJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6 +cmVsX3NlcmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6 +cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxFPj46OmRlc2VyaWFsaXplOjpo +YTM1M2E3Y2VmMGM2MDI2ZewMmQFydW1hX2V2ZW50czo6cmVsYXRpb246OnJlbF9zZXJkZTo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5k +bGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8RT4+OjpkZXNlcmlhbGl6ZTo6aGFjNjQ5ZjM1ZDY2MjQ1 +NGLtDJkBcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpyZWxfc2VyZGU6OjxpbXBsIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VMaWtl +UmVsYXRpb25zPEU+Pjo6ZGVzZXJpYWxpemU6OmhhZTA1ZWE5NWUxZmI4YTA07gyZAXJ1bWFfZXZl +bnRzOjpyZWxhdGlvbjo6cmVsX3NlcmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZv +ciBydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxFPj46 +OmRlc2VyaWFsaXplOjpoYjFmMGNhNmY1MTQwNzIyN+8MmQFydW1hX2V2ZW50czo6cmVsYXRpb246 +OnJlbF9zZXJkZTo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6 +OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8RT4+OjpkZXNlcmlhbGl6ZTo6 +aGI2NDg3Nzk2ZDU0OTAyNmPwDJkBcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpyZWxfc2VyZGU6Ojxp +bXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVu +ZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPEU+Pjo6ZGVzZXJpYWxpemU6OmhiODY2NjA1MjA1ZWM4 +ODZj8QyZAXJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6cmVsX3NlcmRlOjo8aW1wbCBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlr +ZVJlbGF0aW9uczxFPj46OmRlc2VyaWFsaXplOjpoYjk4YzFjMTBkOWQxODk2YvIMmQFydW1hX2V2 +ZW50czo6cmVsYXRpb246OnJlbF9zZXJkZTo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBm +b3IgcnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8RT4+ +OjpkZXNlcmlhbGl6ZTo6aGRlOGIxNjBhYzI2ZGQ3NznzDJkBcnVtYV9ldmVudHM6OnJlbGF0aW9u +OjpyZWxfc2VyZGU6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRz +OjpyZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPEU+Pjo6ZGVzZXJpYWxpemU6 +OmhlMmMyYzZkYmM5ODRjMGY49AyZAXJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6cmVsX3NlcmRlOjo8 +aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1 +bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxFPj46OmRlc2VyaWFsaXplOjpoZTdiYTY1NGJkMzMx +YzZhZvUMM2NoYWNoYTIwOjp4Y2hhY2hhOjpxdWFydGVyX3JvdW5kOjpoMGMxMmI4NGY5NDQ0MGNi +Y/YMOmNoYWNoYTIwOjpiYWNrZW5kczo6c29mdDo6cXVhcnRlcl9yb3VuZDo6aGI5M2EzMzY4NTI5 +NTdmMWT3DEVtYXRyaXhfc2RrX2NyeXB0bzo6dXRpbGl0aWVzOjp0aW1lc3RhbXBfdG9faXNvODYw +MTo6aDA3ZmU0YzZhOGVlMGExZmH4DHI8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46OkZs +YXRNYXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6 +bmV4dDo6aDIxNDFmZGQ4NjM4NzE3MTf5DHI8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46 +OkZsYXRNYXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9y +Pjo6bmV4dDo6aDBlMGM2M2Y0MWRiNDIwZjL6DCxzdGQ6OmlvOjpXcml0ZTo6d3JpdGVfYWxsOjpo +OGQ4NjBjNGViOTYzMjM0OPsMPXNoYTI6OnNoYTI1Njo6c29mdDo6c2hhMjU2X2RpZ2VzdF9yb3Vu +ZF94Mjo6aDEyYTRkMzQ2ZmQ2MTI0MWP8DIICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmhjM2FlYWQ1NmNiNjkwZDU4 +/QxoY29yZTo6b3BzOjpmdW5jdGlvbjo6aW1wbHM6OjxpbXBsIGNvcmU6Om9wczo6ZnVuY3Rpb246 +OkZuTXV0PEE+IGZvciAmbXV0IEY+OjpjYWxsX211dDo6aDViYTEzYmU4YjljZWIwZGb+DAtxcl90 +b1FyQ29kZf8MYDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlNjYW5F +cnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmFjZDI2YzkzMmU4ZjA0ZYANNnNlcmRl +OjpzZXI6OlNlcmlhbGl6ZXI6OmNvbGxlY3RfbWFwOjpoM2JkNTM2ZDNkYzY1NGZjZoEN3AFhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6OmgwZjVmYTJmN2FiYmJkZjczgg3cAWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpLVj46OnNwbGl0X2xlYWZfZGF0YTo6aDVhOWE2MzdhNDhmOWRiNDCDDUlhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6ZW50cnk6OmhhNGM0NzVkNDc5Zjdm +ZDM1hA02c2VyZGU6OnNlcjo6U2VyaWFsaXplcjo6Y29sbGVjdF9tYXA6Omg1MDRjMDcxZmMzNGM0 +NDgwhQ2YATxtYXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6Ok91dGdvaW5nUmVxdWVzdCBhcyBj +b3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvOjpyZXF1ZXN0czo6T3V0Z29pbmdW +ZXJpZmljYXRpb25SZXF1ZXN0Pj46OmZyb206Omg2ODBmODYzYTdhMTQ5OTkyhg1mPCZtdXQgc2Vy +ZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46 +OmRlc2VyaWFsaXplX2Jvb2w6OmhhYzI2NTc5ZmFkZDIwMTgzhw1EZ2VuZXJpY19hcnJheTo6R2Vu +ZXJpY0FycmF5PFQsTj46OmZyb21fZXhhY3RfaXRlcjo6aDk1ZjQyOWU4MGEzZWM4NTOIDUl2b2Rv +emVtYWM6OmNpcGhlcjo6a2V5OjpDaXBoZXJLZXlzOjpmcm9tX2V4cGFuZGVkX2tleXM6Omg2OTEx +ZjM4ZGYxZTg0OTRhiQ1MPGNvcmU6Omhhc2g6OnNpcDo6SGFzaGVyPFM+IGFzIGNvcmU6Omhhc2g6 +Okhhc2hlcj46OndyaXRlOjpoYWJmZTFiYmEwZjJlMDc3OYoN3AFhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9k +ZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsTm9k +ZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxp +dF9sZWFmX2RhdGE6OmgwY2UyMDEzYTM2OWE3NjNkiw1DbWF0cml4X3Nka19jcnlwdG86Omdvc3Np +cGluZzo6U2VjcmV0SW5mbzo6YXNfa2V5OjpoZDg0MjEwMTI2ZThiNjQyN4wNW21hdHJpeF9zZGtf +Y3J5cHRvOjpiYWNrdXBzOjprZXlzOjpiYWNrdXA6Ok1lZ29sbVYxQmFja3VwS2V5Ojpmcm9tX2Jh +c2U2NDo6aDg3OTE1ZmUwNjJmNzk4ZTGNDXw8dm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6RWQy +NTUxOVB1YmxpY0tleSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjp1dGlsaXR5OjpWZXJpZnlK +c29uPjo6dmVyaWZ5X2pzb246Omg5MmIxYTU1ODkzNDgwNGUxjg18PHZvZG96ZW1hYzo6dHlwZXM6 +OmVkMjU1MTk6OkVkMjU1MTlQdWJsaWNLZXkgYXMgbWF0cml4X3Nka19jcnlwdG86Om9sbTo6dXRp +bGl0eTo6VmVyaWZ5SnNvbj46OnZlcmlmeV9qc29uOjpoOWE3MTEyOTViZDhjOWExZo8NS3ZvZG96 +ZW1hYzo6dHlwZXM6OmVkMjU1MTk6OkVkMjU1MTlQdWJsaWNLZXk6OmZyb21fYmFzZTY0OjpoNmVh +NTYxNjY3MWFkMGIzOZANxgJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpm +dXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5l +OjpPbG1NYWNoaW5lOjplbmNyeXB0X3Jvb21fZXZlbnQ6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZW5jcnlwdF9yb29tX2V2ZW50Ojp7e2Nsb3N1cmV9 +fSxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+Ojp7e2Nsb3N1cmV9fT4+OjpoNDFhYTk3OTI3NmE2ZTMw +MJENZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpE +ZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6OmhlMzVmYjBmOTc0NWFhMTBlkg1lPCZtdXQg +c2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +cj46OmRlc2VyaWFsaXplX3N0cjo6aGNjODlkMzVmOGZjNWZjNziTDWU8Jm11dCBzZXJkZV9qc29u +OjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJp +YWxpemVfc3RyOjpoY2UzMTllMDVlYTQ2ZTljY5QNZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNl +cmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6 +OmgyYWUyYTgzZWM5MDdmMjJjlQ1lPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxS +PiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cjo6aGJkMjNmZTQ5 +MmE0MzBmZDKWDWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc3RyOjpoZmQ2MjRhNjY3OWU3NGRjNpcN +ZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNl +cmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6OmgzYWU0NzUyODdkYWZlYzc2mA1lPCZtdXQgc2Vy +ZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46 +OmRlc2VyaWFsaXplX3N0cjo6aGUzZTRiYzBjMjQ2ZDgwYjWZDWU8Jm11dCBzZXJkZV9qc29uOjpk +ZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxp +emVfc3RyOjpoOThiYmE0MDgzOWFiNDUzYZoNZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlh +bGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6Omhh +NWI1N2NiMGFkYjA3MDFjmw1lPCZtdXQgc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPiBh +cyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cjo6aDM3N2EzNzkxNDFl +NGQxMGKcDWU8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc3RyOjpoNTMwNTk2MjJmNjI3Mjg4OZ0NZTwm +bXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6OmgzOTY4ZDQyNzY5YmJkMzRjng0vY29yZTo6Zm10OjpX +cml0ZTo6d3JpdGVfY2hhcjo6aDQ2MmIxODRlZWEzZTlmMDSfDVxtYXRyaXhfc2RrX2NyeXB0bzo6 +aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZTo6dmVyaWZ5X2RldmljZV9rZXlzOjpo +NjBlMTMwM2ExN2JkMDZmMaAN2AE8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRvdWJsZV9yYXRj +aGV0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6 +c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OlJhdGNoZXRDb3VudD46OmRlc2VyaWFsaXplOjpfX0Zp +ZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9ieXRlczo6aDUwZDRlN2Rl +M2MxODViZmWhDVh2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OkFjdGl2 +ZURvdWJsZVJhdGNoZXQ6OmFkdmFuY2U6OmgxMDBkMzc2MTQwMDY5Mjdmog0vY29yZTo6Zm10OjpX +cml0ZTo6d3JpdGVfY2hhcjo6aGZiZWMzYTUzNDFhYmNlNmajDXI8cnVtYV9ldmVudHM6OmVudW1z +OjpBbnlUb0RldmljZUV2ZW50Q29udGVudCBhcyBydW1hX2V2ZW50czo6Y29udGVudDo6RXZlbnRD +b250ZW50Pjo6ZXZlbnRfdHlwZTo6aGMwMWViYzFiZTIzYjBlYWOkDUk8Y29yZTo6b3B0aW9uOjpP +cHRpb248VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgxNDBiMWE2YjMxZWQxYzk1 +pQ1tPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRy +YWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6c2l6ZV9oaW50OjpoMzNkZTg3ZmQ1MDc5ZDQzZqYN +DnNhc19lbW9qaUluZGV4pw1bPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6 +U2FzIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoOWZhNTYzM2VhYWEwYzVhY6gNZ2Nv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpJ +ZGVudGl0aWVzQmVpbmdWZXJpZmllZD46OmhhOWYzNDgxYzc0YTFiYzMyLjGpDVptYXRyaXhfc2Rr +X2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5nOjpTaWduaW5nOjpjcm9zc19zaWduaW5n +X2tleTo6aDI2YWQ1OTBiZDBhM2JmZDWqDV08bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlv +bjo6c2FzOjpTYXMgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg5ZmE1NjMzZWFhYTBj +NWFjLjGrDWhtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNo +aW5lOjpyZWNlaXZlX2luY29taW5nX3NlY3JldF9yZXF1ZXN0OjpoNmM5NjVjYTNmODJjMzBiMawN +PHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoNDI2ZjdlZDE1YThi +Nzg3Ya0NOWNvcmU6OnVuaWNvZGU6OnByaW50YWJsZTo6aXNfcHJpbnRhYmxlOjpoM2JlMWViZjNh +YWIyZTAwN64Nbzx2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9rZXlzOjpFeHBvcnRlZFNlc3Np +b25LZXkgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoNzdlYjViZTA4 +MDg2MWFmZq8NPHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoYWYy +Mzk1YjVjMjNhNGQ1NrANgwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OnN0b3JlOjpLZXlRdWVyeU1hbmFnZXI6OndhaXRfaWZfdXNlcl9rZXlfcXVlcnlfcGVuZGlu +Zzo6e3tjbG9zdXJlfX0+OjpoNzA5N2FkZTcwZTJiMmE5NbENkgFtYXRyaXhfc2RrX2NyeXB0bzo6 +b2xtOjpzZXNzaW9uOjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06OnNlc3Npb246OlBpY2tsZWRTZXNzaW9uPjo6c2VyaWFsaXplOjpoNGI4 +Mjg0YjY5OWI3MzBkNbINQHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46OnBhcnNlX251 +bWJlcjo6aDViODU2NTY2NTUzZTIzYzKzDcIBPG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6 +Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19zdG9yZV9lbmNy +eXB0aW9uOjpDaXBoZXJUZXh0SW5mbz46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBz +ZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9ieXRlczo6aDAzMTI3ZjBmZGI2YWIyNTK0DYwBPGlu +ZGV4ZWRfZGJfZnV0dXJlczo6aWRiX3RyYW5zYWN0aW9uOjppZGJfdHJhbnNhY3Rpb25fZnV0dXJl +OjpJZGJUcmFuc2FjdGlvbkZ1dHVyZSBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6 +cG9sbDo6aDVlYTAwODVkMmI0YmUyOTe1DVRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6 +OmVudHJ5OjpWYWNhbnRFbnRyeTxLLFYsQT46Omluc2VydDo6aGU4MjhhZWRjOTUzOGQ5Y2W2DTto +YXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6aW5zZXJ0OjpoNjZiZDZiZGMzOGZlOGYw +M7cNN2Jsb2NrX3BhZGRpbmc6OlBhZGRpbmc6OnVucGFkX2Jsb2Nrczo6aDcxOGM1M2U4NDg0MTI0 +ZTC4DU08YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9j +aGFyOjpoZDIwYTRjMjQxZThkNWU3My4yMrkNUGN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNl +cmlhbDo6dTMyOjpzY2FsYXI6OlNjYWxhcjI5OjpzdWI6OmhjYWM1YWQ0ZjUyYmIyZjhjug2sAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxt +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVx +dWVzdDo6cmVjZWl2ZV9zdGFydDo6e3tjbG9zdXJlfX0+Pj46OmhmNGY4NmRjODFkNzZiOGVlLjG7 +DVpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6 +OmRldmljZTo6RGV2aWNlPjo6aGVkNzkxY2ZmZWE3MjVjYWS8DS9zZXJkZV93YXNtX2JpbmRnZW46 +OnRvX3ZhbHVlOjpoOWY5ZWMzMmMwZDYwZWM1OL0NP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRp +b25fc29ydF9zaGlmdF9sZWZ0OjpoMjZiZmNiMjg5OTFjYWUyML4NrAFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8Y29yZTo6cGluOjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlZlcmlmaWNhdGlvblJlcXVlc3Q6OnJlY2VpdmVf +c3RhcnQ6Ont7Y2xvc3VyZX19Pj4+OjpoZjRmODZkYzgxZDc2YjhlZS4yvw2sAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdDo6cmVj +ZWl2ZV9zdGFydDo6e3tjbG9zdXJlfX0+Pj46OmhmNGY4NmRjODFkNzZiOGVlLjPADStybXA6OmRl +Y29kZTo6cmVhZF9tYXJrZXI6Omg1NTRlNDk5NDRlNDk2ZTU1wQ07aGFzaGJyb3duOjptYXA6Okhh +c2hNYXA8SyxWLFMsQT46Omluc2VydDo6aDhjOTYyZTZkNGUxNTI1MWbCDTJpbnN0YW50Ojp3YXNt +OjpJbnN0YW50OjplbGFwc2VkOjpoMDNhMWM4NWMwZjNlMjc2YcMNRjxhbGxvYzo6dmVjOjpWZWM8 +VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDM3MGZmZjkyYTExZjlhMWXEDaAB +PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8 +VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0 +X3dpdGhoZWxkX2luZm86Ont7Y2xvc3VyZX19OjpoMzcyNGMxMDA5MWQ5NDdiZcUNowE8bWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojp0cnlfdGFrZV9s +ZWFzZWRfbG9jazo6e3tjbG9zdXJlfX06OmhkYWQ0MDBlMzY0YzA4NGMyxg1RPGhhc2hicm93bjo6 +cmF3OjpSYXdUYWJsZTxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg3YTI0 +MDJlY2YyMmNiM2Qzxw1SY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjplcnJvcjo6TWVnb2xtRXJyb3I+OjpoNWUxZTliZDlhNWE3YWUwMsgNXTxydW1hX2V2ZW50czo6 +a2luZHM6OlRvRGV2aWNlRXZlbnQ8Qz4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplPjo6c2VyaWFs +aXplOjpoNzg0Njg0OGI4YjQwMTg3YckNT3J1bWFfZXZlbnRzOjpraW5kczo6U3luY01lc3NhZ2VM +aWtlRXZlbnQ8Qz46OmludG9fZnVsbF9ldmVudDo6aDRlMTEyNzYyMjFhOWM0YzXKDV08c2VyZGVf +anNvbjo6cmVhZDo6U2xpY2VSZWFkIGFzIHNlcmRlX2pzb246OnJlYWQ6OlJlYWQ+OjpkZWNvZGVf +aGV4X2VzY2FwZTo6aGVjODhiOWI3YTg1NDdlODXLDYcBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6OnNlc3Npb25zOjpTZXNzaW9uTWFu +YWdlcjo6Y3JlYXRlX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fT46Omg0NDBhZTI2OWQzM2I4MzNizA2f +ATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9y +PFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNl +dF9jdXN0b21fdmFsdWU6Ont7Y2xvc3VyZX19OjpoNTRmN2UyZWNlNzk3NjYxNs0N/wJjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVy +cjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlvblJlcXVl +c3Q6OnNjYW5fcXJfY29kZTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0 +dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRp +b246OlZlcmlmaWNhdGlvblJlcXVlc3Q6OnNjYW5fcXJfY29kZTo6e3tjbG9zdXJlfX0sY29yZTo6 +b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpRcj4+ +Ojp7e2Nsb3N1cmV9fT4+OjpoMWQ4ZGY5N2NhNDRiNmYzYs4NswFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0 +b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46 +OnNhdmVfY2hhbmdlczo6e3tjbG9zdXJlfX0+OjpoMzhmZjk5NGJkOGM0NjBjOM8NZmluZGV4ZWRf +ZGJfZnV0dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6aWRiX3JlcXVlc3RfZnV0dXJlOjpJZGJSZXF1 +ZXN0RnV0dXJlOjpkb19wb2xsOjpoYjk2NWEzNjkzMjljYjFjYtANvgFydW1hX2V2ZW50czo6a2V5 +Ojp2ZXJpZmljYXRpb246OnJlcXVlc3Q6Ol86OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBm +b3IgcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0OjpUb0RldmljZUtleVZl +cmlmaWNhdGlvblJlcXVlc3RFdmVudENvbnRlbnQ+OjpzZXJpYWxpemU6Omg1ZGM3NTg5YzI2NzI0 +ZDJi0Q1IbWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6ZnJvbV9waWNr +bGU6OmgyNDdkOWY0MGZiZTIyYWFh0g1KPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8VD4gYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDNiNjk1MzI5ZTkwYjE4YmXTDUo8c3RkOjpzeW5jOjpy +d2xvY2s6OlJ3TG9jazxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzY0N2JmMTdlY2Q5 +ZTNlMdQNSjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg4MjRlODkwOTJiY2YwZmI21Q1tPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1h +cDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6c2l6ZV9o +aW50OjpoMTYyYTFmYjYyYWU3N2VhYtYNgQE8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFw +OjpCVHJlZU1hcDxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJh +dG9yPChLLFYpPj46OmZyb21faXRlcjo6aDAxNDI1MjRjNTM2NjE3NzXXDYEBPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6 +OmNvbGxlY3Q6OkZyb21JdGVyYXRvcjwoSyxWKT4+Ojpmcm9tX2l0ZXI6OmgwZDRhY2E2MDM5NjU4 +YmE42A2jATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9y +ZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OnRyeV90YWtlX2xlYXNlZF9sb2NrOjp7e2Nsb3N1cmV9fTo6aDJjYzY0MzU1MzlhZTkyNWPZ +DasCPDxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6Xzo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Om9sbTo6 +Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OlBpY2tsZWRJbmJvdW5kR3JvdXBTZXNzaW9uPjo6ZGVz +ZXJpYWxpemU6Ol9fVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9tYXA6Ol9f +RGVzZXJpYWxpemVXaXRoIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6 +aDJmODQ5MTMzZGZkNTdhMGXaDRRkZXZpY2VrZXlpZF90b1N0cmluZ9sNG2RldmljZWtleWFsZ29y +aXRobV90b1N0cmluZ9wNCnNhc19hY2NlcHTdDQpzYXNfY2FuY2Vs3g0OcXJfcmVjaXByb2NhdGXf +DRJxcl9jb25maXJtU2Nhbm5pbmfgDQlxcl9jYW5jZWzhDRVjYW5jZWxpbmZvX2NhbmNlbENvZGXi +DRp2ZXJpZmljYXRpb25yZXF1ZXN0X2FjY2VwdOMNGnZlcmlmaWNhdGlvbnJlcXVlc3RfY2FuY2Vs +5A2rAjw8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6Ol86 +OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06 +Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpQaWNrbGVkSW5ib3VuZEdyb3VwU2Vzc2lvbj46OmRl +c2VyaWFsaXplOjpfX1Zpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfbWFwOjpf +X0Rlc2VyaWFsaXplV2l0aCBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6 +OmgwNTY5OGE5ZTc5ZDAyNmE25Q1Dc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6aWdu +b3JlX2V4cG9uZW50OjpoMmM4NmMxMzk4MzFiMjkyMeYNgwI8PG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6YmFja3VwOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhf +c2RrX2NyeXB0bzo6dHlwZXM6OmJhY2t1cDo6TWVnb2xtVjFBdXRoRGF0YT46OmRlc2VyaWFsaXpl +OjpfX1Zpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfbWFwOjpfX0Rlc2VyaWFs +aXplV2l0aCBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmgyYzlkNzI5 +MzdlYjJkNGM45w2iATxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFk +T25seURldmljZSBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPCZtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXlzPj46OnRyeV9mcm9tOjpoMDM2NTBkMGM1MmIx +NzE0NegNdnNlcmRlX2pzb246OnZhbHVlOjpkZTo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZXIgZm9yIHNlcmRlX2pzb246OnZhbHVlOjpWYWx1ZT46OmRlc2VyaWFsaXplX3U2NDo6aDI3NWZl +ZWE5NjgyMGU1ODXpDVo8dG9raW86OnN5bmM6OmJyb2FkY2FzdDo6UmVjdjxUPiBhcyBjb3JlOjpm +dXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aDM2ZjE5NmJlNmYwMWQ2ZmXqDVo8dG9raW86 +OnN5bmM6OmJyb2FkY2FzdDo6UmVjdjxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJl +Pjo6cG9sbDo6aDhlNjg3NjFjYjg5ZjJkODHrDbMBPHgyNTUxOV9kYWxlazo6eDI1NTE5OjpfOjo8 +aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB4MjU1MTlfZGFsZWs6OngyNTUxOTo6UHVi +bGljS2V5Pjo6ZGVzZXJpYWxpemU6Ol9fVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2 +aXNpdF9uZXd0eXBlX3N0cnVjdDo6aDBkYWQwYmJkYzkwMzAxMDTsDbYBPHgyNTUxOV9kYWxlazo6 +eDI1NTE5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB4MjU1MTlfZGFsZWs6 +OngyNTUxOTo6U3RhdGljU2VjcmV0Pjo6ZGVzZXJpYWxpemU6Ol9fVmlzaXRvciBhcyBzZXJkZTo6 +ZGU6OlZpc2l0b3I+Ojp2aXNpdF9uZXd0eXBlX3N0cnVjdDo6aDU5ZjQ1ODk5MWVjNWUyZTXtDVJt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjpyZXNwb25zZXM6OkVuY3J5cHRpb25JbmZvOjpzaGllbGRf +c3RhdGU6Omg3NTU2YWMyYjBkNGYxYjJm7g0YbWF5YmVzaWduYXR1cmVfc2lnbmF0dXJl7w3VATxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpfOjo8aW1wbCBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpE +ZXZpY2VLZXlIZWxwZXI+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRl +OjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoMDE4YWIwMGEzMDc3M2JjNfANZjxzZXJkZV9qc29uOjp2 +YWx1ZTo6ZGU6OlNlcURlc2VyaWFsaXplciBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRf +ZWxlbWVudF9zZWVkOjpoOTNiOGU3NTc5OWI0ODlmMfENNmhhc2hicm93bjo6cmF3OjpSYXdUYWJs +ZTxULEE+OjpmaW5kOjpoMTk1ZDRhOGM1Y2QzMmVlM/INNjwqY29uc3QgVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoM2M2ZGMxYWYzMDNlZTUxMPMNK3NlcmRlX2pzb246OmRlOjpmcm9tX3N0 +cjo6aDY4YTBiYzM5NDJlNjZlNGX0DYEBPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +QlRyZWVNYXA8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkZyb21JdGVyYXRv +cjwoSyxWKT4+Ojpmcm9tX2l0ZXI6OmhiMWIzYmZjZmM5OThkM2Y59Q2jATxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNhdmVfcGVuZGluZ19jaGFu +Z2VzOjp7e2Nsb3N1cmV9fTo6aDg4MTBkNmIxMjc4ZWM1Yjj2Dd4CY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25SZXF1ZXN0OjpzdGFydF9z +YXM6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3Rv +X3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRp +b25SZXF1ZXN0OjpzdGFydF9zYXM6Ont7Y2xvc3VyZX19LGNvcmU6Om9wdGlvbjo6T3B0aW9uPGpz +X3N5czo6QXJyYXk+Pjo6e3tjbG9zdXJlfX0+Pjo6aDU3NDljYTQ3NTExMmYxOTj3DUphbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6aW5zZXJ0OjpoNWUwODkw +MjcwOWM2ZWZjY/gNZjxzZXJkZV9qc29uOjp2YWx1ZTo6c2VyOjpTZXJpYWxpemVNYXAgYXMgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplTWFwPjo6c2VyaWFsaXplX3ZhbHVlOjpoZjUxNjM3OGVlYWE3Mzg0 +NPkNZzxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmNhbmNlbDo6Q2FuY2VsQ29kZSBh +cyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDdlYzA5YTg1YzZkYTMzZGX6DTA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQ1ZWMzNDEwYWJkMGE1YTH7DYMBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPChhbGxvYzo6c3RyaW5nOjpTdHJpbmcsbWF0cml4X3Nka19jcnlwdG86 +OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlZlcmlmaWNhdGlvblJlcXVlc3QpPjo6aDNiYjg0OGE5 +ZWRkNDFiZjT8DWltYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6OmNvbW1v +bjo6Q3Jvc3NTaWduaW5nS2V5OjpnZXRfZmlyc3Rfa2V5X2FuZF9pZDo6aDZjYjVjMmVlODE4MTAw +MjD9DbMBbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjpjb21tb246Ol86 +OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVz +Ojpjcm9zc19zaWduaW5nOjpjb21tb246OkNyb3NzU2lnbmluZ0tleT46OnNlcmlhbGl6ZTo6aDFl +NDEwNDlmZDIzZmU1NzX+DaEBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6 +Ok1lbW9yeVN0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9T +dG9yZT46OmdldF91bnNlbnRfc2VjcmV0X3JlcXVlc3RzOjp7e2Nsb3N1cmV9fTo6aGJkMWRiMTY5 +Nzk3Y2QxMTP/DUg8cm1wX3NlcmRlOjplbmNvZGU6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxh +eT46OmZtdDo6aDI1OTMwMmQwM2U5MjE0MGOADkRxcmNvZGU6OmNhbnZhczo6Q2FudmFzOjpkcmF3 +X2FsaWdubWVudF9wYXR0ZXJuX2F0OjpoYmEwN2MxOThjODY1YTkwZIEOdzx0cmFjaW5nX3N1YnNj +cmliZXI6OnJlZ2lzdHJ5OjpzaGFyZGVkOjpSZWdpc3RyeSBhcyB0cmFjaW5nX2NvcmU6OnN1YnNj +cmliZXI6OlN1YnNjcmliZXI+Ojp0cnlfY2xvc2U6OmgwYjQ5NGQxOGY0ZWY3NmUwgg40dm9kb3pl +bWFjOjp1dGlsaXRpZXM6OmV4dHJhY3RfbWFjOjpoYjFkOTUzZjAwYzQzZDQwM4MOSmFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjppbnNlcnQ6Omg5YzU4OWE5 +ZjYyY2Y3MjgwhA5jPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50VmlzaXRv +ciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6OmhhODY2NjEwODJkMmU4OGI1hQ5z +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nl +c3Npb25zOjpvdXRib3VuZDo6T3V0Ym91bmRHcm91cFNlc3Npb24+OjpoMjAwYmNhYWVkMTA4MGUx +MYYOVGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok1l +Z29sbUVycm9yPjo6aDVlMWU5YmQ5YTVhN2FlMDIuMYcOdWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6Ok91dGJv +dW5kR3JvdXBTZXNzaW9uPjo6aDIwMGJjYWFlZDEwODBlMTEuNYgOVGNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok1lZ29sbUVycm9yPjo6aDVlMWU5YmQ5 +YTVhN2FlMDIuMokO3AFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6OmgzZmY1ZmRhYjYw +ZDc3MTEyig7cAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0X2xlYWZfZGF0YTo6aGFmY2NlNTA2ODE3Mzg0 +NjmLDkRydW1hX2V2ZW50czo6ZW51bXM6OlRvRGV2aWNlRXZlbnRUeXBlOjp0b19jb3dfc3RyOjpo +NGU0NmVlZmM3NzMzOWI5ZIwOXG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6 +aW5uZXJfc2FzOjpJbm5lclNhczo6c3VwcG9ydHNfZW1vamk6OmgzYTE2N2IyMzBjZjljMjM5jQ5k +PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3IgYXMgY29y +ZTo6ZXJyb3I6OkVycm9yPjo6c291cmNlOjpoNDVkYzM0NzkwZmE5ZDBhZI4Oejx0cmFjaW5nX3N1 +YnNjcmliZXI6OnJlZ2lzdHJ5OjpzaGFyZGVkOjpSZWdpc3RyeSBhcyB0cmFjaW5nX2NvcmU6OnN1 +YnNjcmliZXI6OlN1YnNjcmliZXI+OjpjdXJyZW50X3NwYW46Omg5MGIyZGMwZDJmNzNkNWRmjw44 +YmFzZTY0OjplbmdpbmU6OkVuZ2luZTo6ZW5jb2RlOjppbm5lcjo6aGNlYTBiYTY4N2E1NGY2ZjGQ +DkZydW1hX2V2ZW50czo6ZW51bXM6OlRvRGV2aWNlRXZlbnRUeXBlOjp0b19jb3dfc3RyOjpoNGU0 +NmVlZmM3NzMzOWI5ZC4xkQ6rATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJh +c2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpDcnlwdG9TdG9yZT46OmdldF9vdXRnb2luZ19zZWNyZXRfcmVxdWVzdHM6Ont7Y2xvc3VyZX19 +OjpoYTdiMDI5YTFlZDE1MzNhM5IOO2hhc2hicm93bjo6bWFwOjpIYXNoTWFwPEssVixTLEE+Ojpp +bnNlcnQ6OmhhM2MwNjQzYmYzODg1MTcwkw4LZ2V0VmVyc2lvbnOUDj9jb3JlOjpzbGljZTo6c29y +dDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGI4MjI0ZmU3MmJiYjAyY2aVDnFtYXRyaXhf +c2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjppbmRleGVkZGJfc2VyaWFsaXplcjo6SW5kZXhl +ZGRiU2VyaWFsaXplcjo6ZW5jb2RlX3RvX3JhbmdlOjpoOGE3YTUyNDIzM2ViZWIyY5YO3AFhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6OmgwNDgwMTYwMGQ4ZGZmNTcylw5sPG1hdHJpeF9z +ZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpSZXF1ZXN0U3RhdGU8Uz4gYXMgY29y +ZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg2NjIwYmMxYTMyZTg5NTIzmA5hPG1hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnFyY29kZTo6SW5uZXJTdGF0ZSBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoNWUyZDcyYzY1MjJlNzBmNZkOM3NlcmRlOjpkZTo6TWFwQWNjZXNzOjpuZXh0 +X2VudHJ5OjpoZjc4Mjk4MDM0ZTRlY2E3YZoOT3J1bWFfZXZlbnRzOjpraW5kczo6U3luY01lc3Nh +Z2VMaWtlRXZlbnQ8Qz46OmludG9fZnVsbF9ldmVudDo6aGExNjQ5NDE5ZDcxODQ5MzKbDnQ8c3Rk +OjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6OkZvcm1hdFN0cmluZ1BheWxvYWQgYXMg +Y29yZTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OnRha2VfYm94OjpoM2QxZWY0ZGI2ODQ5YTAzZpwO +ZW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlvblN0b3JlOjpnZXRf +dXNlcl9pZGVudGl0eTo6e3tjbG9zdXJlfX06Omg1NzU1MTMyODI5YzY3YjU2nQ5nbWF0cml4X3Nk +a19jcnlwdG86OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uU3RvcmU6OmdldF91c2VyX2lkZW50 +aXR5Ojp7e2Nsb3N1cmV9fTo6aDU3NTUxMzI4MjljNjdiNTYuMZ4OZ21hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlvblN0b3JlOjpnZXRfdXNlcl9pZGVudGl0eTo6e3tj +bG9zdXJlfX06Omg1NzU1MTMyODI5YzY3YjU2LjKfDkphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +OjptYXA6OkJUcmVlTWFwPEssVixBPjo6aW5zZXJ0OjpoNmI0YjA4NmI2ZDY0ZDQ3YqAOF29sbW1h +Y2hpbmVfdmVyaWZ5QmFja3VwoQ4/Y29yZTo6c2xpY2U6OnNvcnQ6Omluc2VydGlvbl9zb3J0X3No +aWZ0X2xlZnQ6OmgzMzRlNzYzMTdiNzYyMzBkog4/Y29yZTo6c2xpY2U6OnNvcnQ6Omluc2VydGlv +bl9zb3J0X3NoaWZ0X2xlZnQ6OmhiODU2YzFlYjcwNmUxMmZiow4wPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6Omg0ZTUxZGEzZTI2OGFhYjAypA44YmFzZTY0OjplbmdpbmU6OkVuZ2luZTo6 +ZW5jb2RlOjppbm5lcjo6aGU1Yzk1OTZiNTJhMjkyOWOlDjNhbGxvYzo6c3luYzo6QXJjPFQsQT46 +OmRyb3Bfc2xvdzo6aDIwODk0NjIzNWNjMGJjNWOmDkhtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjph +Y2NvdW50OjpBY2NvdW50OjpkZXZpY2Vfa2V5czo6aGZhNDJiNDUzN2Q3NGZiNzKnDq8BPG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1lbW9yeVN0b3JlIGFzIG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Om1hcmtfaW5ib3VuZF9ncm91 +cF9zZXNzaW9uc19hc19iYWNrZWRfdXA6Ont7Y2xvc3VyZX19OjpoZDFkNTA5ZWJiMzBiMmQ4Y6gO +NW1hdHJpeF9zZGtfcXJjb2RlOjp1dGlsczo6dG9fYnl0ZXM6OmgzMTFiZWQ3NDg3NmM1MjNjqQ7a +AWN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6Y3VydmVfbW9kZWxzOjo8aW1wbCBj +b3JlOjpvcHM6OmFyaXRoOjpBZGQ8JmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6 +Y3VydmVfbW9kZWxzOjpQcm9qZWN0aXZlTmllbHNQb2ludD4gZm9yICZjdXJ2ZTI1NTE5X2RhbGVr +OjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ+OjphZGQ6OmhhNzk2NTc3MDAzNzU2ZTIxqg5oPGNvcmU6 +Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRl +cmF0b3I6Okl0ZXJhdG9yPjo6Zm9sZDo6aDlmYzMyZmM3MTNjYWMyY2KrDhlvbG1tYWNoaW5lX2dl +dFVzZXJEZXZpY2VzrA6bATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VD +cnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpD +cnlwdG9TdG9yZT46OnNhdmVfY2hhbmdlczo6e3tjbG9zdXJlfX06OmgwNTQ2OWUzMjBlMTczM2Q1 +rQ6rATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVy +cm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46 +OmdldF9vdXRnb2luZ19zZWNyZXRfcmVxdWVzdHM6Ont7Y2xvc3VyZX19OjpoZDEwNjY1MjA1NTk2 +ZjVkZq4OSjx3YXNtX2JpbmRnZW46OkpzRXJyb3IgYXMgY29yZTo6Y29udmVydDo6RnJvbTxFPj46 +OmZyb206OmgwNGEwNjBiOWJhZGRlYjg5rw7QAXJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpr +ZXlfdmVyaWZpY2F0aW9uX3JlcXVlc3Q6Ol86OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBm +b3IgcnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OmtleV92ZXJpZmljYXRpb25fcmVxdWVzdDo6 +S2V5VmVyaWZpY2F0aW9uUmVxdWVzdEV2ZW50Q29udGVudD46OnNlcmlhbGl6ZTo6aDVmMzY5MDc5 +N2ZjZTg3ZDGwDmQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpTaWduaW5nS2V5czxUPiBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmhhMzY5NWMxNGRkYmRlMGJmsQ7b +AmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVy +ZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnZl +cmlmeV9iYWNrdXA6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6 +ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFj +aGluZTo6dmVyaWZ5X2JhY2t1cDo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +dHlwZXM6OlNpZ25hdHVyZVZlcmlmaWNhdGlvbj46Ont7Y2xvc3VyZX19Pj46Omg0ZmVkODlhMDEy +ZTZhMTIxsg4rYmxha2UzOjpoYXNoX2FsbF9hdF9vbmNlOjpoNmU0MzMxNDQ0ODYxYzQ1ZLMO3AFh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6OmgyNTllMTgxNTk5NjZjZGE2tA7cAWFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpLVj46OnNwbGl0X2xlYWZfZGF0YTo6aDQ0MTFkYzNhNzFjZjlmZDG1DtwBYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpN +dXQsSyxWLE5vZGVUeXBlPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OktWPjo6c3BsaXRfbGVhZl9kYXRhOjpoNDdjMDA3ZDNmZjljMGY4N7YOZDxtYXRyaXhfc2RrX2Ny +eXB0bzo6dHlwZXM6OlNpZ25pbmdLZXlzPFQ+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+Ojpk +ZXNlcmlhbGl6ZTo6aDBlZDcwNDIzOTM4MzIwNTO3Dnk8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNv +bnRlbnQ6OkNvbnRlbnREZXNlcmlhbGl6ZXI8RT4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+ +OjpkZXNlcmlhbGl6ZV9zdHJpbmc6OmhiYjBlN2E5YTNiMDZlZTBjuA6oATxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9pbmJvdW5kX2dyb3Vw +X3Nlc3Npb246Ont7Y2xvc3VyZX19OjpoMzE2ZmQ5NmUwYmVmNzQxYrkOPmFsbG9jOjpyYXdfdmVj +OjpSYXdWZWM8VCxBPjo6Z3Jvd19hbW9ydGl6ZWQ6OmhkZTBmODYxYzNmNmQ5OWM1ug4+YWxsb2M6 +OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X2Ftb3J0aXplZDo6aGUzMzQ4YzZkZTEyNjg5ZWK7 +Dk5tYXRyaXhfc2RrX2NvbW1vbjo6ZmFpbHVyZXNfY2FjaGU6OkZhaWx1cmVzQ2FjaGU8VD46OnJl +bW92ZTo6aGEyNDZkNjQ4ZjU3YzgyODa8Dj9jb3JlOjpzbGljZTo6c29ydDo6aW5zZXJ0aW9uX3Nv +cnRfc2hpZnRfbGVmdDo6aDQ2ODc1MGQ3NzQzOTYyMTm9DvMCY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6aW1wb3J0X2JhY2tlZF91cF9yb29tX2tl +eXM6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3Rv +X3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6aW1w +b3J0X2JhY2tlZF91cF9yb29tX2tleXM6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OnR5cGVzOjpSb29tS2V5SW1wb3J0UmVzdWx0Pjo6e3tjbG9zdXJlfX0+Pjo6aDAwNjRjYzUx +YzJhZTUzODO+Dm08bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRi +Q3J5cHRvU3RvcmVFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg3MzZmMjJiN2Ix +OTdmMTMzvw4+YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X2Ftb3J0aXplZDo6aDAx +ZWYxMGM5MmY3MzdhNGbADp8BbWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6Xzo6PGlt +cGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWdu +aW5nOjpQaWNrbGVkQ3Jvc3NTaWduaW5nSWRlbnRpdHk+OjpzZXJpYWxpemU6OmhhOWE1NjI4NTU0 +NGRmOWE2wQ5Cc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6ZjY0X2Zyb21fcGFydHM6 +Omg3OGY4MjFlMTI2MjEyODkzwg4uYWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoOWYwZDUy +ODU0YzcxNzViNcMOVm1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRP +bmx5RGV2aWNlOjpmcm9tX2FjY291bnQ6Omg4ZGFlNWUzYmM2MzExNzE3xA4+YWxsb2M6OnJhd192 +ZWM6OlJhd1ZlYzxULEE+Ojpncm93X2Ftb3J0aXplZDo6aDA3MmYwZWFiOWE1YzQyMzTFDj5hbGxv +Yzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfYW1vcnRpemVkOjpoMDhhOGI5MmViNGE1NWY4 +Y8YOPmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19hbW9ydGl6ZWQ6OmgxYTIwNmY1 +NjMzODZiZTc5xw4+YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X2Ftb3J0aXplZDo6 +aDFjYzM2MTljODQ3M2RmZGPIDj5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfYW1v +cnRpemVkOjpoODhkZGI1MzIwMTRhOTI4MckOPmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6 +Z3Jvd19hbW9ydGl6ZWQ6Omg5YmI4OTE0NWU2NWJmYjM3yg4+YWxsb2M6OnJhd192ZWM6OlJhd1Zl +YzxULEE+Ojpncm93X2Ftb3J0aXplZDo6aGEzMmNmOGVkNDI0M2NiMWPLDj5hbGxvYzo6cmF3X3Zl +Yzo6UmF3VmVjPFQsQT46Omdyb3dfYW1vcnRpemVkOjpoYWQ3MGJiMGUzZTg3MTM3YcwOnQE8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3NlY3JldHNfZnJv +bV9pbmJveDo6e3tjbG9zdXJlfX06OmhhNWQ1ZmE0NzQ4NWJkNTVizQ4+YWxsb2M6OnJhd192ZWM6 +OlJhd1ZlYzxULEE+Ojpncm93X2Ftb3J0aXplZDo6aDFkODQ3YTliYmYyZTlmNzHODj5hbGxvYzo6 +cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfYW1vcnRpemVkOjpoMjU2NmMyZjYzMGU3NDExMs8O +OGRpZ2VzdDo6Rml4ZWRPdXRwdXQ6OmZpbmFsaXplX2ZpeGVkOjpoNGU3MjgzYjVjMDE5NDA0MC4x +0A5rPHNlcmRlOjpfX3ByaXZhdGU6OnNlcjo6VGFnZ2VkU2VyaWFsaXplcjxTPiBhcyBzZXJkZTo6 +c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVjdDo6aGFmYzViNDE5MDM1YmY2NmPRDj5h +bGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfYW1vcnRpemVkOjpoMTdmYmYxNDMxZWZi +OTljYtIOPmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19hbW9ydGl6ZWQ6Omg1Yzdi +YWJiNTEwNzI1YmJk0w44ZGlnZXN0OjpGaXhlZE91dHB1dDo6ZmluYWxpemVfZml4ZWQ6Omg0ZTcy +ODNiNWMwMTk0MDQwLjLUDmY8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFz +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfYm9vbDo6aDQ1MDRiZGQyYTll +NWVkNDXVDnk8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnREZXNlcmlhbGl6 +ZXI8RT4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHJpbmc6Omhl +ZjE0ZmQxY2EzMGIwYzBm1g6CAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRs +ZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoYTVkNGQzNDMwYzI3NjRlY9cOggJhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRl +cm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5z +ZXJ0X2ZpdDo6aDJmODNlNGQ1MTdhYWY4NjfYDoICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmgyZTNjY2Q1ODNkYzcw +YjBi2Q6CAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6OkludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkVkZ2U+OjppbnNlcnRfZml0OjpoYTBjNzljOWIyZGM3ZDUzOdoOggJhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYs +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDY2 +ZDMzOGExOWZiMTYxNmPbDjljb3JlOjpjaGFyOjptZXRob2RzOjplbmNvZGVfdXRmOF9yYXc6Omhl +NjhmMDQyYzRlYzJlYTQwLjHcDnI8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZsYXR0ZW46OkZsYXRN +YXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4 +dDo6aGIzNWIwNDZiMWM2NmU5MTHdDoABPHRyYWNpbmdfc3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVy +ZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+ +OjpyZWdpc3Rlcl9jYWxsc2l0ZTo6aDRmZTk2NDk4MWExNzk0YzneDqEBPG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6c2F2ZV90cmFja2VkX3VzZXJz +Ojp7e2Nsb3N1cmV9fTo6aDIwZDg1ZTUxODIxYjFmNDnfDqIBPG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlw +dG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6cmVtb3ZlX2N1c3RvbV92YWx1ZTo6e3tj +bG9zdXJlfX06OmhlN2U0YTdhMzgzMDg2NjNl4A6pATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9zZWNyZXRfcmVxdWVzdF9ieV9pbmZvOjp7 +e2Nsb3N1cmV9fTo6aDU0NDU3ZWI0NjQxNjA3MTjhDq4BPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9y +ZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6ZGVsZXRlX291dGdvaW5nX3NlY3JldF9yZXF1 +ZXN0czo6e3tjbG9zdXJlfX06OmhmZjZiNzI5YzVlOTI1M2U44g63ATxtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Om1hcmtfaW5ib3VuZF9ncm91cF9z +ZXNzaW9uc19hc19iYWNrZWRfdXA6Ont7Y2xvc3VyZX19OjpoY2U3NmM3MDczYzMyYmMzMOMODHNh +c19kZWNpbWFsc+QOMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDhkYmRiOWNkMWE5 +MDFlYeUOV2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6 +OlNpZ25hdHVyZUVycm9yPjo6aDU2MDE1ZmIwMGY1MzZjZDYuMuYOUzxzaGFyZGVkX3NsYWI6OnNo +YXJkOjpBcnJheTxULEM+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg1MGYxMmFk +ZWFkZWQ5YWRh5w4uYWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoOWYzNDA3ZTUwOTRlMjE3 +NegOLHN0ZDo6aW86OldyaXRlOjp3cml0ZV9hbGw6OmhhOTc5ZDVmODQzMGQ4NjQx6Q5vPHZvZG96 +ZW1hYzo6dHlwZXM6OmN1cnZlMjU1MTk6OkN1cnZlMjU1MTlQdWJsaWNLZXkgYXMgbWF0cml4X3Bp +Y2tsZTo6ZGVjb2RlOjpEZWNvZGU+OjpkZWNvZGU6Omg3NWE5ZDVlNzU3MjRlMjc36g5BcnVtYV9j +bGllbnRfYXBpOjplcnJvcjo6a2luZF9zZXJkZTo6RmllbGQ6Om5ldzo6aGU1ZWQyZmZmMjIzYmM2 +YzXrDk9ydW1hX2V2ZW50czo6a2luZHM6OlN5bmNNZXNzYWdlTGlrZUV2ZW50PEM+OjppbnRvX2Z1 +bGxfZXZlbnQ6OmhhYjA0Y2UwNGNiNTJhN2Uz7A5WcnVtYV9pZGVudGlmaWVyc192YWxpZGF0aW9u +Ojp1c2VyX2lkOjpsb2NhbHBhcnRfaXNfZnVsbHlfY29uZm9ybWluZzo6aDE1MjJhMTljMWViYjlk +NTLtDkNjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfc3RydWN0X2ZpZWxkNV9maW5pc2g6Omgw +ODVmYThmMjI0NzQ5MDUx7g5CY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3R1cGxlX2ZpZWxk +Ml9maW5pc2g6OmgwMjM0ZTljZTRlMGZhNmI37w5LPGNvcmU6OnN0cjo6ZXJyb3I6OlV0ZjhFcnJv +ciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhMDQ5MmJmOTEwYjI4YjY48A6CAmFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVy +bmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNl +cnRfZml0OjpoYjFkNzMyMDdjYjBhMTAwMPEOggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aGU4MjIyMTI3OGZlNzhm +MWXyDoICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +RWRnZT46Omluc2VydF9maXQ6OmgyMTVhZTE1ZmIwMThlN2Uz8w6CAmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpO +b2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoMzFh +MDM3YzFkNzFkN2UwMPQOiQE8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6ZGVkdXBfc29ydGVk +X2l0ZXI6OkRlZHVwU29ydGVkSXRlcjxLLFYsST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVy +YXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMzM1ZDk0OTc1MzE4MGM5Y/UOlAJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0 +cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vz +c2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3VyZX19OjpEZXZpY2VSZXN1 +bHQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4sZnV0dXJlc191dGlsOjphYm9y +dGFibGU6OkFib3J0ZWQ+Pjo6aDEyODU3YzFkM2FlYjIwODL2DlE8aGFzaGJyb3duOjpyYXc6OlJh +d1RhYmxlPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGQwMjU5NTc0ZWRi +YzM3MDD3DiN2ZXJpZmljYXRpb25yZXF1ZXN0X2dldFZlcmlmaWNhdGlvbvgOOmNvcmU6OnNsaWNl +Ojpzb3J0OjptZXJnZV9zb3J0Ojpjb2xsYXBzZTo6aGQ2M2M5OWEwZjNmOTQ2YTX5DmQ8bWF0cml4 +X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uU3RvcmUgYXMgY29yZTo6Y2xv +bmU6OkNsb25lPjo6Y2xvbmU6OmgzNGFlNThhYThlZWRlNWNj+g73ATxtYXRyaXhfc2RrX2NyeXB0 +bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRi +b3VuZDo6UGlja2xlZE91dGJvdW5kR3JvdXBTZXNzaW9uPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRW +aXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aDc3NWE1MWFhNzNiNjdm +YTP7DjNpbnN0YW50Ojp3YXNtOjpkdXJhdGlvbl9mcm9tX2Y2NDo6aDQwODM1NjE5Yjk1NmE5Njn8 +Dj5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfYW1vcnRpemVkOjpoZGY0Zjc4Mzkz +NGFlOGNlM/0OggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDFmMGNkNTIzNjE0ZDY1MjH+Dh1vbG1tYWNoaW5lX3Vw +ZGF0ZVRyYWNrZWRVc2Vyc/8OnwE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVy +YXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6Q3J5cHRvU3RvcmU+Ojppc19tZXNzYWdlX2tub3duOjp7e2Nsb3N1cmV9fTo6aDhjOTEyMjZj +NGIyMzA5ZjmAD6MBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0 +b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0 +b1N0b3JlPjo6c2F2ZV9wZW5kaW5nX2NoYW5nZXM6Ont7Y2xvc3VyZX19OjpoOGE0MDViNjM5Nzhk +MTFjM4EPqQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3Rv +cmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3Rv +cmU+OjpnZXRfc2VjcmV0X3JlcXVlc3RfYnlfaW5mbzo6e3tjbG9zdXJlfX06OmgxOTk4OGY2Yzgw +YWU1OTIygg9zcnVtYV9ldmVudHM6OnJvb206Ol86OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6 +ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206Ok1lZGlhU291cmNlPjo6c2VyaWFsaXplOjpoOTA3MmNh +MzhhM2MzMjU5MIMPSjx3YXNtX2JpbmRnZW46OkpzRXJyb3IgYXMgY29yZTo6Y29udmVydDo6RnJv +bTxFPj46OmZyb206Omg4Y2NjMTEzYjMwMWVkMWY2hA+AAWluZGV4ZWRfZGJfZnV0dXJlczo6aWRi +X2RhdGFiYXNlOjppZGJfdmVyc2lvbl9jaGFuZ2VfZXZlbnQ6OklkYlZlcnNpb25DaGFuZ2VFdmVu +dDo6d3JhcF9jYWxsYmFjazo6e3tjbG9zdXJlfX06OmgwMTBlODZhODk4NzYyMzA1hQ9OYWxsb2M6 +OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6Omgw +MDk4NGNjZmUxMjNlM2Zkhg9OYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpk +b19yZXNlcnZlX2FuZF9oYW5kbGU6OmgwMTA2MTY4YzI3YmY2ZmI3hw9OYWxsb2M6OnJhd192ZWM6 +OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmgwYTlmNTcxYTcx +YTUwZDQziA9OYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpkb19yZXNlcnZl +X2FuZF9oYW5kbGU6OmgwZjE0NWE4OTQ2MTA5NjQxiQ9OYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxU +LEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmgxZmYyMGY1Nzg4NDUwNmIwig9O +YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5k +bGU6OmgyM2ZkZmU4ZmUyNjExZTc0iw9OYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNl +cnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6Omg2NjdlNWU4MmQ2ODU0MTExjA9OYWxsb2M6OnJh +d192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhiNGU1 +NzNiNTE4Yjg2M2QyjQ8Rc2lnbmF0dXJlc19hc0pTT06ODx5fX3diZ192ZXJpZmljYXRpb25yZXF1 +ZXN0X2ZyZWWPD1RhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OmVudHJ5OjpWYWNhbnRF +bnRyeTxLLFYsQT46Omluc2VydDo6aDkxOWJlN2EyOGQ1ZjU1NjKQD9wBYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxW +LE5vZGVUeXBlPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6 +c3BsaXRfbGVhZl9kYXRhOjpoYTkwNzIzMmI0YzViOTg2MpEPVTxtYXRyaXhfc2RrX2NyeXB0bzo6 +ZXJyb3I6Ok1lZ29sbUVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDY2NGI1ZmQ3 +NTU4NDJjZWWSD3U8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZpbHRlcl9tYXA6OkZpbHRlck1hcDxJ +LEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDIz +NzE1M2MyYjc4OWRjOTmTDzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDc3YzIwNzAy +NTczY2FhNjeUDzRjb3JlOjpoYXNoOjpCdWlsZEhhc2hlcjo6aGFzaF9vbmU6OmgyMTZhMDM2ZDYw +MTA5ZWNllQ+ZAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6 +Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpkZWNy +eXB0X29sbV9oZWxwZXI6Ont7Y2xvc3VyZX19Pj4+OjpoZDkwNmEzY2NiNjFjZmVkNZYPhgFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hp +bmU6OnJlY2VpdmVfdG9fZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Ojpo +ZWFmOTUzNmU0OWE3NDQyMJcPXTxqc19zeXM6OkFycmF5IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6 +Y29sbGVjdDo6RnJvbUl0ZXJhdG9yPEE+Pjo6ZnJvbV9pdGVyOjpoNzc1MzczNDRiNjcyNjdiM5gP +QGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDAxYWM2Mzk5 +YjZkZmJkM2KZD0BhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmVfZm9yX3B1c2g6 +OmgwNDMzNTQ0ZWY1N2FiZmIxmg9AYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZl +X2Zvcl9wdXNoOjpoMTQwYmQxY2NmYTdkYzM3YZsPQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxB +Pjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDIwY2FiOTUyZDQ1MTAzMjScD0BhbGxvYzo6cmF3X3ZlYzo6 +UmF3VmVjPFQsQT46OnJlc2VydmVfZm9yX3B1c2g6Omg4MTRkNWUxNDE4YTA1ZWRknQ++AmNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFw +RXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnNpZ246Ont7 +Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21p +c2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6c2lnbjo6e3tj +bG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6OlNpZ25hdHVyZXM+Ojp7e2Ns +b3N1cmV9fT4+OjpoYzFjYzBiMzA0OTAwM2FkYZ4P3AFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+ +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFm +X2RhdGE6OmhiNWE3ZTE1YzEwOWJlMWY3nw/cAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixOb2RlVHlwZT4sYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0X2xlYWZfZGF0 +YTo6aDA4NjgyMWFiMjU5M2VkNWagD9wBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLE5vZGVUeXBlPixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6c3BsaXRfbGVhZl9kYXRhOjpo +MmYyZWFkYTI0ZDFmZjg0MKEPXm1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnFyY29k +ZTo6UXJWZXJpZmljYXRpb246OmNvbnRlbnRfdG9fcmVxdWVzdDo6aDhkMjEwMGQ4NTFkYWNiOWWi +D3A8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyX25lc3Rl +ZDo6U3BlY0Zyb21JdGVyTmVzdGVkPFQsST4+Ojpmcm9tX2l0ZXI6Omg1OTQwYTlkNzE2ZDAzYjQy +ow8zYWVzOjpzb2Z0OjpmaXhzbGljZTo6eG9yX2NvbHVtbnM6OmgxMzNiMTc2YzY1OTcyNGRlpA8u +YWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoNTE2ODE4OTAwYThlNTZjOaUPQmNvcmU6OmZt +dDo6Rm9ybWF0dGVyOjpkZWJ1Z190dXBsZV9maWVsZDFfZmluaXNoOjpoYTRlOTA0ZDBmNzExYjc0 +Y6YPggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpF +ZGdlPjo6aW5zZXJ0X2ZpdDo6aGYyZTQzZmJiYmYyYjQxNWWnDzA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDA4YjFiMjhkZDdlMTM4MWOoD58BPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9y +ZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6aXNfbWVzc2FnZV9rbm93bjo6e3tjbG9zdXJl +fX06OmgxZWQzYWUwOGYwMmUwYTEyqQ+oATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +dHJhaXRzOjpDcnlwdG9TdG9yZT46OmRlbGV0ZV9zZWNyZXRzX2Zyb21faW5ib3g6Ont7Y2xvc3Vy +ZX19OjpoMjMwOTBhNzVmOTY0ZjZlMqoPsAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFp +dHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjppbmJvdW5kX2dyb3VwX3Nlc3Npb25zX2Zvcl9iYWNrdXA6 +Ont7Y2xvc3VyZX19OjpoYzA5NzUxYmJkN2JkMmQwNKsPdDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpzZXQ6OkRpZmZlcmVuY2U8VCxBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9y +OjpJdGVyYXRvcj46Om5leHQ6OmgxNDc2YTNmNjNiZGYzNGRhrA90PGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6OnNldDo6RGlmZmVyZW5jZTxULEE+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRl +cmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGQwMDEwNzNhZTVlY2I0MWStDxdzaWduYXR1cmVzX2dl +dFNpZ25hdHVyZa4PPGV5ZWJhbGw6OnNoYXJlZDo6U2hhcmVkT2JzZXJ2YWJsZTxUPjo6bmV3Ojpo +YmM3ZWE2YmFkNjk0OTZhYq8PuAE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWdu +aW5nOjptYXN0ZXI6Ok1hc3RlclB1YmtleSBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPG1hdHJp +eF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6Y29tbW9uOjpDcm9zc1NpZ25pbmdL +ZXk+Pjo6dHJ5X2Zyb206Omg5ZDE3NjhkNDM1NTcxNDk5sA/DATxtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmNyb3NzX3NpZ25pbmc6OnNlbGZfc2lnbmluZzo6U2VsZlNpZ25pbmdQdWJrZXkgYXMg +Y29yZTo6Y29udmVydDo6VHJ5RnJvbTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3Np +Z25pbmc6OmNvbW1vbjo6Q3Jvc3NTaWduaW5nS2V5Pj46OnRyeV9mcm9tOjpoZDUyNTJmMWNhNzYy +YTI1Y7EPMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjE4ZGZjNDQ3NGQ5MzE5ZbIP +wwE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjp1c2VyX3NpZ25pbmc6 +OlVzZXJTaWduaW5nUHVia2V5IGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjpjb21tb246OkNyb3NzU2lnbmluZ0tleT4+Ojp0 +cnlfZnJvbTo6aGYzNzRiYzhlODk3MjEyMjizD3M8dHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3Ry +eTo6c2hhcmRlZDo6UmVnaXN0cnkgYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3Jp +YmVyPjo6ZW50ZXI6OmgyNDljMmE4MDhhYzRkMzBmtA9sPHZvZG96ZW1hYzo6bWVnb2xtOjpsaWJv +bG06OkxpYm9sbVJhdGNoZXRQaWNrbGUgYXMgbWF0cml4X3BpY2tsZTo6ZGVjb2RlOjpEZWNvZGU+ +OjpkZWNvZGU6OmhhNTRmZDRmNmI2ZDg1YzEwtQ84YmFzZTY0OjplbmdpbmU6OkVuZ2luZTo6ZW5j +b2RlOjppbm5lcjo6aDIyOWNkYzgyNDMyNDM4MjO2D0U8Z2V0cmFuZG9tOjplcnJvcjo6RXJyb3Ig +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE2M2Q2ODE2MTQ2Nzg2OTW3Dz5hbGxvYzo6cmF3 +X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfYW1vcnRpemVkOjpoNmYwNWJiNmNjYjViNjEwZrgP3AFh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6OmgyOWUyM2VkNDAzYjFhYTMwuQ94PHZvZG96 +ZW1hYzo6dHlwZXM6OmVkMjU1MTk6OkVkMjU1MTlTZWNyZXRLZXkgYXMgbWF0cml4X3Nka19jcnlw +dG86Om9sbTo6dXRpbGl0eTo6U2lnbkpzb24+OjpzaWduX2pzb246Omg0ZGY3MTBiOWY4YzIxNTgw +ug9RPHRva2lvOjpzeW5jOjpub3RpZnk6Ok5vdGlmaWVkIGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6OmgxYzc5MDRhZTJiNDEzNWFluw81c3RkOjpiYWNrdHJhY2U6OkJhY2t0cmFjZTo6 +Y2FwdHVyZTo6aDk4OGRjNGM2YWY5NjE5ZDm8DzdzdGQ6OnBhbmlja2luZzo6cnVzdF9wYW5pY193 +aXRoX2hvb2s6Omg2YjAwYTE1NDJiN2U4MjdjvQ9DY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVn +X3N0cnVjdF9maWVsZDRfZmluaXNoOjpoZGY4ZmM0MmJmNzQ3OTYzYr4PvQJhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6ZGVhbGxvY2F0aW5nX25leHRfdW5jaGVja2Vk +OjpoMGVjODAwYmI4MGIyMzI3Yb8PvQJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0 +ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkVkZ2U+Pjo6ZGVhbGxvY2F0aW5nX25leHRfdW5jaGVja2VkOjpoMjEyN2ZlMDIwOThjNWZiZsAP +vQJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWlu +ZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6ZGVhbGxvY2F0aW5n +X25leHRfdW5jaGVja2VkOjpoNDU4MmFlMTAwYTNkZTgwOcEPvQJhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6ZGVhbGxvY2F0aW5nX25leHRfdW5jaGVja2VkOjpoNmI5 +M2ZjYjk3Zjg3NWMxMMIPwQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZpY2F0aW9uTWFjaGluZTo6cmVjZWl2ZV9h +bnlfZXZlbnQ8JnJ1bWFfZXZlbnRzOjplbnVtczo6QW55TWVzc2FnZUxpa2VFdmVudD46Ont7Y2xv +c3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhkZjdmMTU2MzgzZTFkZDU3ww/VAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjptYWNoaW5lOjpWZXJp +ZmljYXRpb25NYWNoaW5lOjpyZWNlaXZlX2FueV9ldmVudDwmbWF0cml4X3Nka19jcnlwdG86OnR5 +cGVzOjpldmVudHM6OnRvX2RldmljZTo6VG9EZXZpY2VFdmVudHM+Ojp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX0+OjpoNDJiMWUxMDYzMTIzYzRjNcQP1wFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZpY2F0aW9uTWFj +aGluZTo6cmVjZWl2ZV9hbnlfZXZlbnQ8Jm1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRz +Ojp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnRzPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6 +aDQyYjFlMTA2MzEyM2M0YzUuMcUPdnRyYWNpbmc6Omluc3RydW1lbnQ6Ol86OjxpbXBsIGNvcmU6 +Om9wczo6ZHJvcDo6RHJvcCBmb3IgdHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+ +Pjo6ZHJvcDo6aGRlNjgwYTkyMjc3MmY3OTfGD5sBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6c2F2ZV9jaGFuZ2VzOjp7e2Nsb3N1cmV9fTo6aDQ1 +Nzc4Njc5ODIyMmIxMzLHD6EBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFz +ZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6 +OkNyeXB0b1N0b3JlPjo6cmVzZXRfYmFja3VwX3N0YXRlOjp7e2Nsb3N1cmV9fTo6aDIxZTAyZDBk +Y2JiYjJhNmXID6kBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0 +b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0 +b1N0b3JlPjo6Z2V0X2luYm91bmRfZ3JvdXBfc2Vzc2lvbnM6Ont7Y2xvc3VyZX19OjpoY2I3NzA4 +NzMwNzA3OGZjOckPXmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPjo6aDBlMmJkOWFiZjc2ZDIxYWPKD0ZtYXRy +aXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpkZWh5ZHJhdGU6Omg0NDc2Njg1 +M2U5OGU4N2Jlyw+bATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0b3JlOjpNZW1v +cnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+ +OjpzYXZlX3BlbmRpbmdfY2hhbmdlczo6e3tjbG9zdXJlfX06OmhkZTlmMjUzNjUxNjZiMTc3zA9W +PHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpEZWNyeXB0aW9uRXJyb3IgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aGRjM2EzNWFmZWU5NjI0NGTND0c8Z2V0cmFuZG9tOjplcnJvcjo6RXJyb3Ig +YXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoM2U3M2QxMGY5MDBhMWQxN84PSGNvcmU6Om9w +czo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoYzBkNjNjN2Vj +NDQzNmNjZc8PWDxzdGQ6OmJhY2t0cmFjZV9yczo6c3ltYm9saXplOjpTeW1ib2xOYW1lIGFzIGNv +cmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDU5ZTI2OWMwZTgxMDk1YTnQD6ABPG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3Jvb21fc2V0dGlu +Z3M6Ont7Y2xvc3VyZX19OjpoZDQyN2ZiZGE5OTQzYzY4M9EPNHNlcmRlOjpkZTo6RXJyb3I6OnVu +a25vd25fdmFyaWFudDo6aGQzZjFjMGViMTZiNDUxMznSD2BtYXRyaXhfc2RrX2NyeXB0bzo6c2Vz +c2lvbl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9uQ2FjaGU6Omluc2VydDo6 +aGI4ZmJkMjc5OTI4MTk1MDjTD2ZtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9u +czo6b3V0Ym91bmQ6Ok91dGJvdW5kR3JvdXBTZXNzaW9uOjphZGRfcmVxdWVzdDo6aGUwMTg1ZjU3 +YmU2ZTNhOGHUD0dtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpuZXdf +aGVscGVyOjpoNDllNjIxOWNmNjJiY2Q5YtUP0gE8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRv +dWJsZV9yYXRjaGV0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVt +YWM6Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OlJhdGNoZXRDb3VudD46OmRlc2VyaWFs +aXplOjpfX1Zpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfZW51bTo6aGRmMjE3 +NjJjOWJiYzUwYWTWDzRzZXJkZTo6ZGU6OkVycm9yOjp1bmtub3duX3ZhcmlhbnQ6OmhjY2U2YmEy +YmVhNjgyMjQ01w80c2VyZGU6OmRlOjpFcnJvcjo6dW5rbm93bl92YXJpYW50OjpoOTViOGE0NjU1 +OWExMTc1ZdgPSWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+ +OjplbnRyeTo6aDQ3YTNjZTIxZWIxYWVjMzjZDx1vbG1tYWNoaW5lX2dldE1pc3NpbmdTZXNzaW9u +c9oPoQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVF +cnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+ +OjpzYXZlX3RyYWNrZWRfdXNlcnM6Ont7Y2xvc3VyZX19OjpoNmExZmQ5ZDMwMDA0NjkyN9sPogE8 +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxU +PiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpyZW1v +dmVfY3VzdG9tX3ZhbHVlOjp7e2Nsb3N1cmV9fTo6aDVjNjNjOTk0M2Q3MzRhYzHcD64BPG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMg +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6ZGVsZXRlX291 +dGdvaW5nX3NlY3JldF9yZXF1ZXN0czo6e3tjbG9zdXJlfX06OmgwNDIwMWYzMWM4OWM0YzY43Q+3 +ATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9y +PFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Om1h +cmtfaW5ib3VuZF9ncm91cF9zZXNzaW9uc19hc19iYWNrZWRfdXA6Ont7Y2xvc3VyZX19OjpoNzQx +YmZjM2MyYjc2MTg3NN4PSjx3YXNtX2JpbmRnZW46OkpzRXJyb3IgYXMgY29yZTo6Y29udmVydDo6 +RnJvbTxFPj46OmZyb206Omg1MzI5OTBmODY2NjhmNjA53w8KcXJfdG9CeXRlc+APMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTdlMDFiZjVhNzIxMjE0NOEP8QE8PG1hdHJpeF9zZGtf +c3RvcmVfZW5jcnlwdGlvbjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0 +cml4X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpDaXBoZXJUZXh0SW5mbz46OmRlc2VyaWFsaXplOjpf +X1Zpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfZW51bTo6X19GaWVsZFZpc2l0 +b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYnl0ZXM6OmgxOTliMTY3ZGI5MjgwMGMz +4g80c2VyZGU6OmRlOjpFcnJvcjo6dW5rbm93bl92YXJpYW50OjpoNzAwNTM1N2M5NDhlOWY3ZeMP +3AFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6OmgyNzU5MDM0ZWEzZTdlMzQ45A/cAWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpLVj46OnNwbGl0X2xlYWZfZGF0YTo6aDUwYWNjYjNiOTBkMDc4ZTnlD9wBYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpNdXQsSyxWLE5vZGVUeXBlPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OktWPjo6c3BsaXRfbGVhZl9kYXRhOjpoYzE5MDc3ODFmMWViNjQyMOYPSWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjplbnRyeTo6aGU3Mzk3ZjFiNzc2 +ZDllNzDnD3Njb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8W21hdHJpeF9zZGtfY3J5cHRvOjpvbG06 +Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJbmJvdW5kR3JvdXBTZXNzaW9uXT46OmgyMDc0ODU1 +YTIwNWZjYjMw6A9ebWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZl +cmlmaWNhdGlvbjo6bmV3X3NlbGZfbm9fbWFzdGVyOjpoMGQ3MWE2OTZkYWZiZDRlMekPN2FsbG9j +Ojp2ZWM6OlZlYzxULEE+OjpleHRlbmRfdHJ1c3RlZDo6aDg0YmJiZjNlOGExMjQ5OWPqD0lhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6ZW50cnk6Omg0Yjlm +ODM4OTM5MWU3ODM16w9PcnVtYV9ldmVudHM6OmtpbmRzOjpTeW5jTWVzc2FnZUxpa2VFdmVudDxD +Pjo6aW50b19mdWxsX2V2ZW50OjpoOGFlMmQzZjdkMjU4MDFiYuwPLHN0ZDo6aW86OldyaXRlOjp3 +cml0ZV9hbGw6Omg5NzhhMWM3MjEzZTU2ZjEy7Q9JYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bWFwOjpCVHJlZU1hcDxLLFYsQT46OmVudHJ5OjpoYWNmYTQxYTM0OWQyOTY3MO4PK3NlcmRlX2pz +b246OmRlOjpmcm9tX3N0cjo6aDg3NTY2ZTE0MDY1NTVmYmXvDytzZXJkZV9qc29uOjpkZTo6ZnJv +bV9zdHI6OmhjNTFhYzk1ZjEwMmE4ZmU58A9vbWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmlu +Zzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5OjptYXN0ZXJfcHVibGljX2tleTo6e3tjbG9z +dXJlfX06Omg1MjQ5ODIzNzcwNmJlNTFi8Q9xbWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmlu +Zzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5OjptYXN0ZXJfcHVibGljX2tleTo6e3tjbG9z +dXJlfX06Omg1MjQ5ODIzNzcwNmJlNTFiLjHyD0Njb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRl +bjo6YW5kX3RoZW5fb3JfY2xlYXI6Omg1NWRmOTk3MGVlYjRkYmJh8w9KYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46OnJlbW92ZTo6aDYxZTFiOTBhMmE2MWY2 +OWL0D0d3YXNtX2JpbmRnZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U6Ont7Y2xvc3VyZX19 +OjpoOWY1ZjllZmM0MTI0ZmU1NvUPR3dhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJv +bWlzZTo6e3tjbG9zdXJlfX06OmhlMGE1YTU0ZDA4MDk5ZDE09g9Hd2FzbV9iaW5kZ2VuX2Z1dHVy +ZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6aGVlNDdjNDE3ZTAzZTA3ZTH3D0d3 +YXNtX2JpbmRnZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U6Ont7Y2xvc3VyZX19OjpoZmIz +YmE1MDhmMmJjNzY2YvgPY21hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3Rv +X3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoMjE5MTI3YjI2YmMwZTk4 +MvkPsgFydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmtleTo6Xzo6PGltcGwgc2VyZGU6 +OnNlcjo6U2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmtleTo6 +VG9EZXZpY2VLZXlWZXJpZmljYXRpb25LZXlFdmVudENvbnRlbnQ+OjpzZXJpYWxpemU6Omg4MDI1 +NWE1NjdkN2I1ZTk4+g+CAW1hdHJpeF9zZGtfY3J5cHRvOjpiYWNrdXBzOjprZXlzOjpkZWNyeXB0 +aW9uOjo8aW1wbCBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkJhY2t1cERlY3J5cHRpb25LZXk+ +Ojpmcm9tX2Jhc2U2NDo6aGNiODI3NDEyYTk0NWMwYjb7D1NtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6Om1lbW9yeXN0b3JlOjpNZW1vcnlTdG9yZTo6c2F2ZV9kZXZpY2VzOjpoY2I0ZDY2OTBjOThm +ZWU2OPwPWzx2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpFZDI1NTE5S2V5cGFpciBhcyBjb3Jl +OjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDMwNWI2ODBmYzNkZWU1Njn9D1tjdXJ2ZTI1NTE5X2Rh +bGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6UHJvamVjdGl2ZVBvaW50Ojpkb3Vi +bGU6OmhiYWIwMzUzYmFmODYwNGVm/g9jPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpD +b250ZW50VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6OmhjNzM5MTlk +NDU4NmM4NzJj/w88dHJhY2luZzo6c3Bhbjo6U3Bhbjo6Y3VycmVudDo6e3tjbG9zdXJlfX06Omhl +ODQ3YzZiNjQwNGIyYmZkgBA+YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X2Ftb3J0 +aXplZDo6aGZlMTNhNzkyODc5OGI3OTmBED1yeXU6OnByZXR0eTo6bWFudGlzc2E6OndyaXRlX21h +bnRpc3NhX2xvbmc6OmgxM2M2YjNmOTA4OGIzN2IxghBOYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxU +LEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhjNDE2MWVjMDRhMGUzYjRhgxBF +PHN0ZDo6dGltZTo6SW5zdGFudCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpTdWI+OjpzdWI6Omg1MGM4 +MDYxYTg2Yzk5OGVjhBBOYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpkb19y +ZXNlcnZlX2FuZF9oYW5kbGU6Omg0NjE0OTljZTc0MDQ1YTM0hRCCAmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpO +b2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoMWI4 +ZWMxNTJmZDQ2ZjU0OYYQbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4g +YXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoODIwMWUz +NDJjZjQ2M2YzMYcQSWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxW +LEE+OjplbnRyeTo6aDAzMjkxZTdmYTUyM2MwZWOIEElhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +OjptYXA6OkJUcmVlTWFwPEssVixBPjo6ZW50cnk6OmhkZmNjNGE0YTRlMzIyYzI3iRCAAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpt +aWdyYXRpb25zOjp2NV90b192Nzo6ZGF0YV9taWdyYXRlOjp7e2Nsb3N1cmV9fT46Omg4NzQyZDY4 +MmMxZDc4MzczihCBAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2luZGV4ZWRk +Yjo6Y3J5cHRvX3N0b3JlOjptaWdyYXRpb25zOjp2OF90b192MTA6OmRhdGFfbWlncmF0ZTo6e3tj +bG9zdXJlfX0+OjpoOGYwYmFiNzdhNGZjYjFiM4sQGW93bnVzZXJpZGVudGl0eV9tYXN0ZXJLZXmM +EB5vd251c2VyaWRlbnRpdHlfc2VsZlNpZ25pbmdLZXmNEB5vd251c2VyaWRlbnRpdHlfdXNlclNp +Z25pbmdLZXmOEElhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixB +Pjo6ZW50cnk6OmhmMDhhYzVkZGE5MDMzYWY5jxBKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bWFwOjpCVHJlZU1hcDxLLFYsQT46Omluc2VydDo6aDBmNjIxZDdiY2VhZDkyYjmQEEphbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6aW5zZXJ0OjpoMzQ4NDAw +OWRkMjI3NzVmZZEQbjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6Okl0ZXI8SyxWPiBh +cyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgyM2MzYmRl +NzQwOTZkN2FmkhBuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SXRlcjxLLFY+IGFz +IGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGFjNGE0OGIw +NjZmNjM5ZGGTEElhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixB +Pjo6ZW50cnk6OmgwMzIwNmQ3NmRhNzUzNTQylBBJYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bWFwOjpCVHJlZU1hcDxLLFYsQT46OmVudHJ5OjpoMWFmMmM2OWRlMmY4NzQwZpUQSWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjplbnRyeTo6aDgyM2ZmMjA2 +ZjhmMjdhMzCWEEY8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6 +Y2xvbmU6OmgzMjk3NDc5MDFmOTM3ZTY1lxCXATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1l +bW9yeXN0b3JlOjpNZW1vcnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6Q3J5cHRvU3RvcmU+Ojppc19tZXNzYWdlX2tub3duOjp7e2Nsb3N1cmV9fTo6aGM2OTY3YTdk +ZDU3ODJjMTOYEDBxcmNvZGU6OnR5cGVzOjpWZXJzaW9uOjpmZXRjaDo6aDdkMGRmYzdlNDI3ZjUy +ZWaZEDt2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6cGlja2xlOjpoYjM3NTg5NjY2 +MDhjMmU4ZJoQTHZvZG96ZW1hYzo6bWVnb2xtOjptZXNzYWdlOjpNZWdvbG1NZXNzYWdlOjplbmNv +ZGVfbWVzc2FnZTo6aDEwMGY0YWUzYjc3Y2JlZTSbEEY8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMg +Y29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgxNGIyN2QxZGM2NTdmYmFjnBBGPGFsbG9jOjp2 +ZWM6OlZlYzxULEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYWZiYjdhNmVjMjk1 +MmQzOZ0QVjxzZXJkZV9qc29uOjpyZWFkOjpTbGljZVJlYWQgYXMgc2VyZGVfanNvbjo6cmVhZDo6 +UmVhZD46Omlnbm9yZV9zdHI6Omg2MDFkN2NmNGM3MTMwYjk5nhBDY29yZTo6Zm10OjpGb3JtYXR0 +ZXI6OmRlYnVnX3N0cnVjdF9maWVsZDNfZmluaXNoOjpoNjY4YWY1OTY4MjI0NDc0NJ8QggJhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRl +cm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5z +ZXJ0X2ZpdDo6aGRmYzExYTRkZTc4NTdjN2GgEIICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6Omg3YjhlOGJiNjY5MTE4 +M2IxoRAeYmFja3VwZGVjcnlwdGlvbmtleV9mcm9tQmFzZTY0ohAdX193Ymdfcm9vbW1lc3NhZ2Vy +ZXF1ZXN0X2ZyZWWjEJsBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNy +eXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNy +eXB0b1N0b3JlPjo6bG9hZF9hY2NvdW50Ojp7e2Nsb3N1cmV9fTo6aGNhNmRjNzQ2ZjYxMGM2ZGWk +EGo8aGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpj +b2xsZWN0OjpJbnRvSXRlcmF0b3I+OjppbnRvX2l0ZXI6Omg3Y2U3NDBiMWYyOTZkYjM2pRAaZGV2 +aWNlX3JlcXVlc3RWZXJpZmljYXRpb26mECd1c2VyaWRlbnRpdHlfdmVyaWZpY2F0aW9uUmVxdWVz +dENvbnRlbnSnEGtzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +IGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpoOWM5OGE1OGQzMjJk +NDNlMKgQZTwmbXV0IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6Omg1NDY3ZWU5YmFhMzZiNzhhqRBibWF0 +cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OmlzX2Ny +b3NzX3NpZ25pbmdfdHJ1c3RlZDo6aDA3ZmY1ZWIxOTBlYmJiYjiqEDNhbGxvYzo6c3luYzo6QXJj +PFQsQT46OmRyb3Bfc2xvdzo6aDZjZTE4YjdiMTMyNjYxNzOrEGY8c2VyZGVfanNvbjo6dmFsdWU6 +OmRlOjpTZXFEZXNlcmlhbGl6ZXIgYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1l +bnRfc2VlZDo6aGFmYzI1MWM5ODBhYjU0MzesEGY8c2VyZGVfanNvbjo6dmFsdWU6OmRlOjpTZXFE +ZXNlcmlhbGl6ZXIgYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6 +aDJkZDkyNGM3YjRjNTdkNjCtEGY8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2Nl +cHQ6OlNhc1YxQ29udGVudCBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDViYmUwOWE0 +NzAyOTU3NWGuEHA8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9p +dGVyX25lc3RlZDo6U3BlY0Zyb21JdGVyTmVzdGVkPFQsST4+Ojpmcm9tX2l0ZXI6OmhhMTcwNmQ4 +YzVmZDAzNmQzrxCgATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0b3JlOjpNZW1v +cnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+ +OjpkZWxldGVfc2VjcmV0c19mcm9tX2luYm94Ojp7e2Nsb3N1cmV9fTo6aDNiZTQwZGM1M2M2MjFk +YTGwEFk8d2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OkpzRnV0dXJlIGFzIGNvcmU6OmZ1dHVyZTo6ZnV0 +dXJlOjpGdXR1cmU+Ojpwb2xsOjpoMzVhNWRiNmQ5NDE0NTAxMbEQZjxzZXJkZV9qc29uOjp2YWx1 +ZTo6ZGU6OlNlcURlc2VyaWFsaXplciBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxl +bWVudF9zZWVkOjpoYTdjOTkyZWFkZGM0OWY4NLIQR29uY2VfY2VsbDo6aW1wOjpPbmNlQ2VsbDxU +Pjo6aW5pdGlhbGl6ZTo6e3tjbG9zdXJlfX06Omg0Y2NhOGQ0NjllZWVmMzBjsxBwPHRyYWNpbmdf +c3Vic2NyaWJlcjo6cmVsb2FkOjpMYXllcjxMLFM+IGFzIHRyYWNpbmdfc3Vic2NyaWJlcjo6bGF5 +ZXI6OkxheWVyPFM+Pjo6ZG93bmNhc3RfcmF3OjpoZWM3ZmVjNjJjMDM1MTIxOLQQqAE8bWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpkZWxldGVfc2Vj +cmV0c19mcm9tX2luYm94Ojp7e2Nsb3N1cmV9fTo6aDQzMDU2N2RjNDE3YWI1YTW1EGE8cnVtYV9j +b21tb246OnNlcmRlOjpiYXNlNjQ6OkJhc2U2NDxDPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +Pjo6ZGVzZXJpYWxpemU6Omg4NjI0NDM3YzcxNWE5NWU4thBhPHJ1bWFfY29tbW9uOjpzZXJkZTo6 +YmFzZTY0OjpCYXNlNjQ8Qz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXpl +OjpoOGFlOTg2OGMwZjY0ZTcxYbcQC2V2ZW50aWRfbmV3uBAwPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg3MDFhMzFhODdmMWUxZDM2uRD0ATxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpn +cm91cF9zZXNzaW9uczo6aW5ib3VuZDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBm +b3IgbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OlBpY2ts +ZWRJbmJvdW5kR3JvdXBTZXNzaW9uPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNl +cmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aDU0YWUwYjM5ZGFhOTYyMDi6EG48YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJdGVyPEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRz +OjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMWRiNWMwY2ExODBkMTJhYbsQyAE8bWF0cml4 +X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6UGlja2xlZEFjY291bnQ+Ojpk +ZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRf +c3RyOjpoYjY2YzEzZjQ5ZjNmMzdlOLwQbjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6 +Okl0ZXI8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5l +eHQ6OmgyMzNkZjQ4MDU4ZGEyMWMzvRBuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +SXRlcjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4 +dDo6aDI0MjZmYzUwNDJiYmY5ZGS+EG48YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJ +dGVyPEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0 +OjpoMmYyMjVlZmUyMjc2NWZkMb8QbjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6Okl0 +ZXI8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6 +OmgzZGY2YmQ4MTUyMzhlMjQ0wBBuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SXRl +cjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6 +aDRkNzk0YWZjN2UzM2E3NjDBEG48YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJdGVy +PEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0Ojpo +NThmNDc3OTQ2MWI3YWEyNMIQbjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6Okl0ZXI8 +SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg3 +NDQ2ZjM2ZDExYjU5MTQ1wxBuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SXRlcjxL +LFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGE1 +NTAzNTIzODdlMjc4MjHEEG48YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJdGVyPEss +Vj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZGNj +Y2FkYjg0YzBmNjNkYcUQSDxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6OmNsb25lOjpD +bG9uZT46OmNsb25lOjpoYjFmZDJlMjRmYTIyOGY3YsYQcjx0cmFjaW5nX3N1YnNjcmliZXI6OnJl +Z2lzdHJ5OjpzaGFyZGVkOjpSZWdpc3RyeSBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1 +YnNjcmliZXI+OjpleGl0OjpoNjFhODY2YjA1N2M5ZjhiM8cQY251X2Fuc2lfdGVybTo6YW5zaTo6 +PGltcGwgbnVfYW5zaV90ZXJtOjpzdHlsZTo6U3R5bGU+Ojp3cml0ZV9wcmVmaXg6Ont7Y2xvc3Vy +ZX19OjpoZjUxNTY1OWQyMDk0ZTVkYcgQa3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxpemU6 +Omg0MjNkNjE3YWQwNWM4ZTU4yRBuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SXRl +cjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6 +aDBmNTIxYmVjZjI2NTAyOWXKEG48YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJdGVy +PEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0Ojpo +MmRkNDhjNWJiOGEyYzAwZMsQRTxbdTg7IE5dIGFzIG1hdHJpeF9waWNrbGU6OmRlY29kZTo6RGVj +b2RlPjo6ZGVjb2RlOjpoZmI2ZmNlOTA2OGY4MTljNcwQ1gFjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNr +ZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6PGltcGwgY29yZTo6b3BzOjphcml0aDo6QWRkPCZj +dXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6QWZmaW5lTmll +bHNQb2ludD4gZm9yICZjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ+Ojph +ZGQ6OmhjMzIzODJhOTBkODBlMTA5zRBuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +SXRlcjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4 +dDo6aGE2YTBmMzg5NGFkM2MyMWLOEEpydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnNlcnZlcl9u +YW1lOjpTZXJ2ZXJOYW1lOjpob3N0OjpoMWIwZWVhMDlmMDUyZDI2Zs8QQXJ1bWFfaWRlbnRpZmll +cnNfdmFsaWRhdGlvbjo6dXNlcl9pZDo6dmFsaWRhdGU6Omg1OWVjNzgxZWIzMmFiMTli0BBuPGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SXRlcjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRy +YWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGFlNThjYmNlNDgzZTE1YjPREC5hbGxv +Yzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6OmhiMzgxMTM4YjU0MGRiNTc30hBJcnVzdGNfZGVtYW5n +bGU6OnYwOjpQcmludGVyOjpwcmludF9saWZldGltZV9mcm9tX2luZGV4OjpoYmE2ZGVkYWE5ZDhl +YzI3ZdMQFl9fd2JnX2RldmljZWxpc3RzX2ZyZWXUEDFjb3JlOjpzbGljZTo6c29ydDo6ZmluZF9z +dHJlYWs6OmhmYzMzZjI4YmM5YjQ4Y2M11RAxY29yZTo6c2xpY2U6OnNvcnQ6OmZpbmRfc3RyZWFr +OjpoMWJhNDNiOWJkMGUyNzBiYdYQMWNvcmU6OnNsaWNlOjpzb3J0OjpmaW5kX3N0cmVhazo6aGZk +ZDE2ODI4MmQ2OTkxNDPXEE9tYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246OlN0b3JlQ2lwaGVy +OjpkZWNyeXB0X3ZhbHVlX2RhdGE6Omg4Njk2Mzc2OTBmMWQzNGUz2BBUbWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlvbjo6bmV3X3NlbGY6Omg4Y2M0 +Nzg1Njc1NWVjN2I32RBVbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpR +clZlcmlmaWNhdGlvbjo6bmV3X2Nyb3NzOjpoNGZmNjczOGMzODRkZThlNNoQa21hdHJpeF9zZGtf +Y3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6T3V0Ym91bmRHcm91cFNlc3Np +b246OnBlbmRpbmdfcmVxdWVzdHM6OmhkM2MwNWQ4YmFlNTc4ODAy2xBubWF0cml4X3Nka19jcnlw +dG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpPdXRib3VuZEdyb3VwU2Vzc2lvbjo6 +cGVuZGluZ19yZXF1ZXN0X2lkczo6aGZiN2QxMTI2NjBkMDAxYjTcEENjdXJ2ZTI1NTE5X2RhbGVr +Ojp3aW5kb3c6Okxvb2t1cFRhYmxlPFQ+OjpzZWxlY3Q6Omg1YTY2Yzc0MTQ0ZTc0Njdj3RBOdGlt +ZTo6b2Zmc2V0X2RhdGVfdGltZTo6T2Zmc2V0RGF0ZVRpbWU6OmZyb21fdW5peF90aW1lc3RhbXA6 +OmhlNDcxZDgxNzE0MTFjNTJj3hA4cnVtYV9pZGVudGlmaWVyc192YWxpZGF0aW9uOjpwYXJzZV9p +ZDo6aDQ5NGEwNTY2NTk0ZDY0MzffEDxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6 +ZV9lbnRyeTo6aDIwNzU2MTJjYmZjM2E3OTngEG48bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2ln +bmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46 +OmNsb25lOjpoZjgyZDgxN2YwYTczNmFiOeEQdnRyYWNpbmc6Omluc3RydW1lbnQ6Ol86OjxpbXBs +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcCBmb3IgdHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVu +dGVkPFQ+Pjo6ZHJvcDo6aGI1OWYxYjI5N2Y3OThlZDLiEIABPHNlcmRlOjpfX3ByaXZhdGU6OmRl +Ojpjb250ZW50OjpDb250ZW50UmVmRGVzZXJpYWxpemVyPEU+IGFzIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemVyPjo6ZGVzZXJpYWxpemVfaWRlbnRpZmllcjo6aDcyYzA1MTZhMTEwZTg4NGPjEKEBPG1h +dHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4g +YXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6cmVzZXRf +YmFja3VwX3N0YXRlOjp7e2Nsb3N1cmV9fTo6aDE2OWUyNmE5Y2EwNjNjYWbkEEw8dG9raW86OnN5 +bmM6OnJ3bG9jazo6UndMb2NrPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0NWRhOGNl +MTBiOTY3YjUy5RBMPHRva2lvOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxUPiBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoOTIzZDBhMDZjZTU0MjcyMeYQSjx3YXNtX2JpbmRnZW46OkpzRXJyb3Ig +YXMgY29yZTo6Y29udmVydDo6RnJvbTxFPj46OmZyb206OmhmN2FjYjQwNjYxMjAzOGQz5xBRPHNl +cmRlX3dhc21fYmluZGdlbjo6ZXJyb3I6OkVycm9yIGFzIHNlcmRlOjpkZTo6RXJyb3I+OjpjdXN0 +b206OmhlZTFiYTdkNjFkZWVkYzJj6BBObWF0cml4X3Nka19jb21tb246OmZhaWx1cmVzX2NhY2hl +OjpGYWlsdXJlc0NhY2hlPFQ+OjpyZW1vdmU6Omg2ZmRkZTMxNDllYzMxOTM16RCRATxtYXRyaXhf +c2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZUVycm9yIGFz +IGNvcmU6OmNvbnZlcnQ6OkZyb208c2VyZGVfd2FzbV9iaW5kZ2VuOjplcnJvcjo6RXJyb3I+Pjo6 +ZnJvbTo6aDBkMmZkODdmMWZkODk5YzXqEDFjb3JlOjpzbGljZTo6c29ydDo6aW5zZXJ0X3RhaWw6 +OmgzNDAxNDVhMTgzZGQ0ZTBi6xAxY29yZTo6c2xpY2U6OnNvcnQ6Omluc2VydF90YWlsOjpoOGZh +NTI0MmRlZDQ4YmQ5M+wQbTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6 +b3V0Ym91bmQ6OlNoYXJlSW5mbyBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDIwZDVk +MDE2YWFhMDI5ZDbtEEphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEss +VixBPjo6aW5zZXJ0OjpoOTVlYTcyNGEyNWJjZWZlMu4QSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjppbnNlcnQ6OmhhNTI0NWE1MmExYTUzNzE57xBKYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46Omluc2VydDo6aGY0 +ZTc2ZTIxYTNlZWI4NDXwEDZzZXJkZTo6c2VyOjpTZXJpYWxpemVyOjpjb2xsZWN0X21hcDo6aDIy +MTM1ZDcxMDhlZTcyNTPxEDZzZXJkZTo6c2VyOjpTZXJpYWxpemVyOjpjb2xsZWN0X21hcDo6aDVm +M2Y4OTk2Y2E2MGY3ZTPyEDZzZXJkZTo6c2VyOjpTZXJpYWxpemVyOjpjb2xsZWN0X21hcDo6aDY3 +YmQ4YjQ0NzMxODU0NTfzEGJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6c2FzOjpoZWxwZXJzOjpTYXNJZHM+OjpoODdmYjI2N2E2MjE0ZTI1 +NPQQ1wFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjo8 +aW1wbCBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbTo6RXZlbnQ8bWF0cml4 +X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Um9vbUVuY3J5cHRl +ZEV2ZW50Q29udGVudD4+Ojpyb29tX2tleV9pbmZvOjpoOGExODRhYzUwMDUxODcxM/UQR29uY2Vf +Y2VsbDo6aW1wOjpPbmNlQ2VsbDxUPjo6aW5pdGlhbGl6ZTo6e3tjbG9zdXJlfX06OmhjZmE1OWQ4 +YjU3ODYyZjYy9hBDaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlSW5uZXI6Om5ld191bmluaXRpYWxp +emVkOjpoMTQ4MDFlZWIxMzE5ZTM1M/cQpQFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEss +VixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVz +aDo6aDA5MGNiNmMzODgwM2QxZTH4EG48YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJ +dGVyPEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0 +OjpoNzdiMTcyMzFmNDUyYzcwMvkQpQFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpO +b2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVzaDo6 +aDdkMTM3NDZkNTgyODBhZTX6EDxjb3JlOjpzdHI6OmNvdW50OjpjaGFyX2NvdW50X2dlbmVyYWxf +Y2FzZTo6aDljMGZlYTc4OGY0MGQ2OTj7EE9tYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3Jl +OjpzYXZlX2NoYW5nZXM6Ont7Y2xvc3VyZX19OjpoMzhkODc0ZGVkOTQ4NmNmNi4y/BBPbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6c2F2ZV9jaGFuZ2VzOjp7e2Nsb3N1cmV9fTo6aDM4 +ZDg3NGRlZDk0ODZjZjYuM/0Qd2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpkZWNyeXB0X29sbV9tZXNzYWdlOjp7e2Nsb3N1 +cmV9fT46OmgyMzViZTljZTAyN2RlZGEw/hB5Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OmRlY3J5cHRfb2xtX21lc3NhZ2U6 +Ont7Y2xvc3VyZX19Pjo6aDIzNWJlOWNlMDI3ZGVkYTAuMf8QSjxhbGxvYzo6dmVjOjpWZWM8VD4g +YXMgY29yZTo6Y29udmVydDo6RnJvbTwmW1RdPj46OmZyb206OmhhZDgyNDUyODk0OTJlNmU4gBFK +PHdhc21fYmluZGdlbjo6SnNFcnJvciBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPEU+Pjo6ZnJvbTo6 +aDMyOGQ1NDQxNWVkNjgwZTOBEUo8d2FzbV9iaW5kZ2VuOjpKc0Vycm9yIGFzIGNvcmU6OmNvbnZl +cnQ6OkZyb208RT4+Ojpmcm9tOjpoZDBjZjA0MzJhYjliMDkwMIIRajxoYXNoYnJvd246OnJhdzo6 +UmF3VGFibGU8VCxBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkludG9JdGVyYXRv +cj46OmludG9faXRlcjo6aDNmYzVkOTQ5OGY4MmZmMzWDETZzZXJkZV9qc29uOjpkZTo6UGFyc2Vy +TnVtYmVyOjp2aXNpdDo6aDdjYTlkYjE4MzViMDdmMGWEEXU8Y29yZTo6aXRlcjo6YWRhcHRlcnM6 +OmZpbHRlcl9tYXA6OkZpbHRlck1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0 +b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDE3NGZjNmI1NzEyM2JmZTGFEThzZXJkZV93YXNtX2JpbmRn +ZW46OmVycm9yOjpFcnJvcjo6bmV3OjpoY2Y4MTcyZWE5ZDBmMTA2M4YRNnNlcmRlX2pzb246OmRl +OjpQYXJzZXJOdW1iZXI6OnZpc2l0OjpoNDJmNTE0OWNkM2M5OTM1YocRNnNlcmRlX2pzb246OmRl +OjpQYXJzZXJOdW1iZXI6OnZpc2l0OjpoOTljZDE4NGM0OTQxYzBkMYgRUGFsbG9jOjpzbGljZTo6 +PGltcGwgYWxsb2M6OmJvcnJvdzo6VG9Pd25lZCBmb3IgW1RdPjo6dG9fb3duZWQ6OmhkNTZlNmJl +NDQwYjEzNmMwiRE5PFtUXSBhcyBzdWJ0bGU6OkNvbnN0YW50VGltZUVxPjo6Y3RfZXE6Omg1MWJl +MWYxYzVhODM3ZDIwihFAdm9kb3plbWFjOjpzYXM6OkVzdGFibGlzaGVkU2FzOjpjYWxjdWxhdGVf +bWFjOjpoM2Q0YzA5MGRhZjY5MmRjNosRWjxydW1hX2V2ZW50czo6cm9vbTo6TWVkaWFTb3VyY2Ug +YXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoZjYzNTQ4NzJhOGM3MDNi +OIwRQ2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z19zdHJ1Y3RfZmllbGQyX2ZpbmlzaDo6aDhj +YTc1MWQ5NDM5OTgwYjaNEYYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6aW1wb3J0X3Nl +Y3JldHM6Ont7Y2xvc3VyZX19Pjo6aDZhMWYzMjQwYzczYzk5OWKOEY8BY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpkZWh5ZHJhdGVkX2RldmljZXM6OkRlaHlkcmF0 +ZWREZXZpY2U6OmtleXNfZm9yX3VwbG9hZDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDk0 +NzdjMTJiNDRkMjVkZDCPERJkZXZpY2VfZGlzcGxheU5hbWWQEYgBY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25p +bmdJZGVudGl0eTo6aW1wb3J0X3NlY3JldHM6Ont7Y2xvc3VyZX19Pjo6aDZhMWYzMjQwYzczYzk5 +OWIuM5ERygJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRy +eV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNo +aW5lOjp1cGRhdGVfdHJhY2tlZF91c2Vyczo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpt +YWNoaW5lOjpPbG1NYWNoaW5lOjp1cGRhdGVfdHJhY2tlZF91c2Vyczo6e3tjbG9zdXJlfX0sd2Fz +bV9iaW5kZ2VuOjpKc1ZhbHVlPjo6e3tjbG9zdXJlfX0+Pjo6aDEwMmM4OWNhODk3NTk5MmOSEeoB +PDxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6S2RmSW5mbz46OmRlc2VyaWFs +aXplOjpfX1Zpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfZW51bTo6X19GaWVs +ZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYnl0ZXM6OmhhM2Q5OTZhNDA0 +ZDJhZTVkkxH4AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +S1Y+OjpyZW1vdmU6OmgzZWNiODlhY2JhZjQ2N2QxlBFKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46Omluc2VydDo6aDA4OGU4OWE2NTAyNmVlZTSVEVc8dG9r +aW86OnN5bmM6OmJyb2FkY2FzdDo6UmVjZWl2ZXI8VD4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9w +Pjo6ZHJvcDo6aDM1MjFkMTFlYzY5ZjBkZWaWEVc8dG9raW86OnN5bmM6OmJyb2FkY2FzdDo6UmVj +ZWl2ZXI8VD4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDlhYmM3NDE0MGE0MDNm +OTWXEVc8dG9raW86OnN5bmM6OmJyb2FkY2FzdDo6UmVjZWl2ZXI8VD4gYXMgY29yZTo6b3BzOjpk +cm9wOjpEcm9wPjo6ZHJvcDo6aGU0MjkwMTUxZjVhNDRlMDiYEVo8dG9raW86OnN5bmM6OmJyb2Fk +Y2FzdDo6UmVjdjxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aGUz +MWVkNTc2ZGE2ODZkZDWZEUNtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50 +OjpwaWNrbGU6OmgzMDMyNGJiOGRjZDZlNTg2mhGlAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpN +dXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+ +OjpwdXNoOjpoMDQ4YjEwNjcwODJlNTE3MZsROzxbVl0gYXMgYWxsb2M6OnNsaWNlOjpDb25jYXQ8 +VD4+Ojpjb25jYXQ6OmhkM2ZhNTQwNmVlNWM2NzYznBFJPHNlcmRlX2pzb246OmVycm9yOjpFcnJv +ciBhcyBzZXJkZTo6ZGU6OkVycm9yPjo6Y3VzdG9tOjpoNTk5YmVlZDJlNDQ4NTQxOZ0RRjxhbGxv +Yzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGNiNDM1Nzg2 +MTUyOWJhODGeETxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDU0 +YjcyYjdkMTYzNDhmODKfEWltYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRl +Q3Jvc3NTaWduaW5nSWRlbnRpdHk6OnNpZ25fZGV2aWNlOjp7e2Nsb3N1cmV9fTo6aDAyNmVhMDYw +NGQ4ZWU2YmKgEVc8ZnV0dXJlc19jaGFubmVsOjpvbmVzaG90OjpTZW5kZXI8VD4gYXMgY29yZTo6 +b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGRkMmVlMTY3YjNmYjhiYjmhEVc8ZnV0dXJlc19jaGFu +bmVsOjpvbmVzaG90OjpTZW5kZXI8VD4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6 +aGM5ZTkyMTQ4Y2Y4NTM3Y2GiEVc8ZnV0dXJlc19jaGFubmVsOjpvbmVzaG90OjpTZW5kZXI8VD4g +YXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGY2ZDY4MTcxMmU2OWYwNTejEVc8ZnV0 +dXJlc19jaGFubmVsOjpvbmVzaG90OjpTZW5kZXI8VD4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9w +Pjo6ZHJvcDo6aDZjMzk2OGI0NzNiZDY2ZGakEVk8ZnV0dXJlc19jaGFubmVsOjpvbmVzaG90OjpS +ZWNlaXZlcjxUPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMmY0Y2M1OWQ4YjIx +YzYyYqURWTxmdXR1cmVzX2NoYW5uZWw6Om9uZXNob3Q6OlJlY2VpdmVyPFQ+IGFzIGNvcmU6Om9w +czo6ZHJvcDo6RHJvcD46OmRyb3A6OmhmZTQ3NDE1NjY0YmZhNWI2phFZPGZ1dHVyZXNfY2hhbm5l +bDo6b25lc2hvdDo6UmVjZWl2ZXI8VD4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6 +aDQzZjBmMTFkYjE3YzNhYjanEVk8ZnV0dXJlc19jaGFubmVsOjpvbmVzaG90OjpSZWNlaXZlcjxU +PiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMjYyYWZjYjIxMThlN2JlMKgRWTxm +dXR1cmVzX2NoYW5uZWw6Om9uZXNob3Q6OlJlY2VpdmVyPFQ+IGFzIGNvcmU6Om9wczo6ZHJvcDo6 +RHJvcD46OmRyb3A6Omg1YzY3OGQ5ZjFlYzBmMzI1qRFuPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpm +aWx0ZXI6OkZpbHRlcjxJLFA+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJh +dG9yPjo6bmV4dDo6aGRmNmE5NTI1NGE0Njc1MjmqEV5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj46OmgyODE5 +NGZlODllYjRjZGFhqxFgY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+OjpoMjgxOTRmZTg5ZWI0Y2RhYS4xrBFJ +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46OmVudHJ5Ojpo +ODIxODJkYzAyZTQyMmYwMq0RM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoYjZm +NGIwYjM5MjUxNzJkOK4RNnJtcDo6ZGVjb2RlOjpSbXBSZWFkOjpyZWFkX2RhdGFfdTY0OjpoYzZi +MzVhNjlmODQ3NjM2Ya8RSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8 +SyxWLEE+OjppbnNlcnQ6Omg4NTQzNTU2MzFmMGYyYWM2sBFmPHNlcmRlX2pzb246OnZhbHVlOjpk +ZTo6U2VxRGVzZXJpYWxpemVyIGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6bmV4dF9lbGVtZW50 +X3NlZWQ6OmgwODU2YzhlZjQ4ZDBlOGFisREudHJhY2luZzo6c3Bhbjo6U3Bhbjo6cmVjb3JkOjpo +Y2QzMGYzNGRlMjFjMjBiY7IRV21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6 +c2FzX3N0YXRlOjpTYXNTdGF0ZTxTPjo6Y2FuY2VsOjpoMzIwODBiOWJkMzdiZDE3M7MRV21hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxTPjo6 +Y2FuY2VsOjpoNDdjOTMxMTg4MTQ4NGYwMrQRV21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxTPjo6Y2FuY2VsOjpoNGJhYzM1MzVkZmJhYjA0 +OLURV21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNT +dGF0ZTxTPjo6Y2FuY2VsOjpoNjZiOTI1YzFjOTQ3YmU4MLYRV21hdHJpeF9zZGtfY3J5cHRvOjp2 +ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxTPjo6Y2FuY2VsOjpoNmZmOGY0 +YzQ3ZjRhZmFkMrcRV21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0 +YXRlOjpTYXNTdGF0ZTxTPjo6Y2FuY2VsOjpoOTk0ZGJhZjdiOTMzYTM0ObgRV21hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxTPjo6Y2FuY2Vs +OjpoYTFjZDk2Zjg0MzQzMDRlY7kRV21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNh +czo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxTPjo6Y2FuY2VsOjpoYTNkNjAwYjdlODkzOGI5N7oRsQFt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6Ol86OjxpbXBsIHNl +cmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6 +OnNlY3JldF9zZW5kOjpTZWNyZXRTZW5kQ29udGVudD46OnNlcmlhbGl6ZTo6aGUyMzVkY2M4ZjRk +MjAyZTa7EVB2b2RvemVtYWM6OnR5cGVzOjpjdXJ2ZTI1NTE5OjpDdXJ2ZTI1NTE5UHVibGljS2V5 +Ojpmcm9tX3NsaWNlOjpoNmU1OGQyN2Q2NGJlMTFkYbwRR3Rva2lvOjpzeW5jOjpiYXRjaF9zZW1h +cGhvcmU6OlNlbWFwaG9yZTo6dHJ5X2FjcXVpcmU6OmhhMjAyZjdmNGFjN2E3OTA5vREqc3RkOjpp +bzo6c3RkaW86Ol9lcHJpbnQ6OmhmMGU2NmVhZTA3ZTkzY2E0vhFgbWF0cml4X3Nka19jcnlwdG86 +OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uU3RvcmU6OnNhdmVfY2hhbmdlczo6e3tjbG9zdXJl +fX06OmhmMjdlYTYxMjYwOWFkYjY0vxHdAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpy +ZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91cF9z +ZXNzaW9uczo6R3JvdXBTZXNzaW9uTWFuYWdlcjo6ZW5jcnlwdF9zZXNzaW9uX2Zvcjo6e3tjbG9z +dXJlfX06OkRldmljZVJlc3VsdCxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok9sbUVycm9yPj46 +Omg5YzM5ZDIxODNlMzczYjdjwBF4PHRyYWNpbmdfc3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6 +OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+Ojp0 +cnlfY2xvc2U6OmhjNmI5NGMwMTZlNWVjYmZjwRFKPHdhc21fYmluZGdlbjo6SnNFcnJvciBhcyBj +b3JlOjpjb252ZXJ0OjpGcm9tPEU+Pjo6ZnJvbTo6aDE1NDI3NDhlZWIzMDNiYznCEUo8d2FzbV9i +aW5kZ2VuOjpKc0Vycm9yIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208RT4+Ojpmcm9tOjpoYTEzODBj +OTRjN2IxMjc1NMMRfmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OktleVF1ZXJ5TWFuYWdlcjo6ZW5zdXJlX3N5bmNfdHJhY2tlZF91c2Vyczo6e3tjbG9z +dXJlfX0+OjpoOWY2ZDQ4NTVmYmJjZjQ3NMQR3AFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2Rh +dGE6OmgyYzQ5Y2IyNDZlZDQ0YzQ3xRFuPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +SXRlcjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4 +dDo6aDBlNmY3YjU0MzAxYzM5ZDfGEW48YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJ +dGVyPEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0 +OjpoNTM1NjdmMTE4NmU0ZTdhNMcRZ2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZD46OmhhOWYzNDgx +Yzc0YTFiYzMyLjLIEZsBbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNf +c3RhdGU6OlNhc1N0YXRlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2Fz +X3N0YXRlOjpXYWl0aW5nRm9yRG9uZT46OmRvbmVfY29udGVudDo6aDU1N2M3MjMwN2ExNTlkMmPJ +EZkBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1lbW9yeVN0b3JlIGFz +IG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNhdmVfdHJh +Y2tlZF91c2Vyczo6e3tjbG9zdXJlfX06OmhhNjI2YTM1ZGVlZDZiMTg0yhFEPHU2NCBhcyB2b2Rv +emVtYWM6OnV0aWxpdGllczo6VmFySW50Pjo6dG9fdmFyX2ludDo6aGYwYmE2NWZiZGYyOTQxMDPL +ETF2b2RvemVtYWM6OmNpcGhlcjo6Q2lwaGVyOjptYWM6Omg4ODhiZDIzMzkxMmRjNWFjzBHcAWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpLVj46OnNwbGl0X2xlYWZfZGF0YTo6aGQ0NmZlNDQzYjc4ZGU2YmbNEW48YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJdGVyPEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRz +OjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMzQwZGYyNWE4Y2U3YzczNM4RSjxzZXJkZV9q +c29uOjp2YWx1ZTo6VmFsdWUgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg3NmUxMWIw +YmRhMmNmZjljzxFRPHNlcmRlX2pzb246OmVycm9yOjpKc29uVW5leHBlY3RlZCBhcyBjb3JlOjpm +bXQ6OkRpc3BsYXk+OjpmbXQ6Omg5NmMyNmVjMWRmYmJiNmZi0BGAAWluZGV4ZWRfZGJfZnV0dXJl +czo6aWRiX2RhdGFiYXNlOjppZGJfdmVyc2lvbl9jaGFuZ2VfZXZlbnQ6OklkYlZlcnNpb25DaGFu +Z2VFdmVudDo6d3JhcF9jYWxsYmFjazo6e3tjbG9zdXJlfX06Omg3ZWFiNDU3MTQ2ODc0ZDMy0RFr +c2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29yZTo6 +b3B0aW9uOjpPcHRpb248VD4+OjpkZXNlcmlhbGl6ZTo6aGI4NjVkMTFiMmVkZGM0NDfSEWtzZXJk +ZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjpvcHRp +b246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpoZWZkYTc3MTg3NDAxZWY0ONMRa3NlcmRlOjpk +ZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6 +T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxpemU6Omg1NDAyYjc0ZjAxMTJiNzI01BFrc2VyZGU6OmRlOjpp +bXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29yZTo6b3B0aW9uOjpPcHRp +b248VD4+OjpkZXNlcmlhbGl6ZTo6aGE4ZGIzY2VkYmJhNWM5Y2HVEbMCYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPj46OmRlYWxsb2NhdGluZ19uZXh0OjpoYmUzZTFiYmVl +M2UwZWQ5YdYRP21hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6S2V5czo6Z2V0X25vbmNlOjpo +MjlmZWEyNjU0YjY0OWQxY9cRswJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6 +PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVk +Z2U+Pjo6ZGVhbGxvY2F0aW5nX25leHQ6Omg4Mzg2YTFiNDQwOGYwNjM32BEzYWxsb2M6OnNsaWNl +Ojo8aW1wbCBbVF0+Ojp0b192ZWM6OmgxYjc2ZGJjNjg5YjkzMDQ22RFlbWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OlN1cHBvcnRlZE1hY01ldGhvZDo6Y2Fs +Y3VsYXRlX21hYzo6aDZlNjUxMjBjOTgxMjU4NGbaEVptYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6 +OmNyb3NzX3NpZ25pbmc6OmNvbW1vbjo6U2lnbmluZ0tleTo6ZnJvbV9wYXJ0czo6aGVjNTI5ZDE3 +NWFlNDVhNTjbEZoBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1lbW9y +eVN0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46 +OnJlbW92ZV9jdXN0b21fdmFsdWU6Ont7Y2xvc3VyZX19OjpoZGNiZGJiMzA5ODRkYjg2MtwRswJh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxL +LFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6ZGVhbGxvY2F0aW5nX25l +eHQ6OmhhMWQ3MjRjOGMzNjE1MGFh3RFRdm9kb3plbWFjOjp0eXBlczo6Y3VydmUyNTUxOTo6Q3Vy +dmUyNTUxOVB1YmxpY0tleTo6ZnJvbV9iYXNlNjQ6Omg2ZmEzZTIyMmY0MGE2NzNh3hGzAmFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9k +ZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpkZWFsbG9jYXRpbmdfbmV4dDo6 +aDIwNDFhNGZiZGRiMjY5OWHfEWtzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRl +c2VyaWFsaXplIGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpoNGZl +ZTU4NzU1NTdlYWM0M+ARKF9fd2JnX2Nyb3Nzc2lnbmluZ2Jvb3RzdHJhcHJlcXVlc3RzX2ZyZWXh +EY4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpkZWh5ZHJhdGVk +X2RldmljZXM6OlJlaHlkcmF0ZWREZXZpY2U6OnJlY2VpdmVfZXZlbnRzOjp7e2Nsb3N1cmV9fTo6 +e3tjbG9zdXJlfX0+OjpoZDE4ODY3Y2RiNTE1YWVkOOIREHVzZXJpZF9sb2NhbHBhcnTjEQ9zZXJ2 +ZXJuYW1lX2hvc3TkERFldmVudGlkX2xvY2FscGFydOURI293bnVzZXJpZGVudGl0eV9yZXF1ZXN0 +VmVyaWZpY2F0aW9u5hEudHJhY2luZzo6c3Bhbjo6U3Bhbjo6cmVjb3JkOjpoOTMxNTgyYzA5NmEx +MzM2MOcRLnRyYWNpbmc6OnNwYW46OlNwYW46OnJlY29yZDo6aGIxM2U3ZDEzNTFmNjIwYznoES50 +cmFjaW5nOjpzcGFuOjpTcGFuOjpyZWNvcmQ6OmhkMGVkZTkxZmRlMmYxMDdm6REudHJhY2luZzo6 +c3Bhbjo6U3Bhbjo6cmVjb3JkOjpoZThiZGFjY2I4YWY3MzQzMuoRSmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjppbnNlcnQ6OmhiYTQwM2EwNDE2NzA0ZmY2 +6xHcAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0X2xlYWZfZGF0YTo6aDNkZWUyZDc2NTBlNzZiMTDsEUph +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6aW5zZXJ0Ojpo +Nzc1ZGZiYjc5YTJhNjdmY+0RNjxUIGFzIGNvcmU6OmNvbnZlcnQ6OkludG88VT4+OjppbnRvOjpo +NDgxNWQ3OTc5M2Q2NzhjM+4RNjxUIGFzIGNvcmU6OmNvbnZlcnQ6OkludG88VT4+OjppbnRvOjpo +NTUyMmI0NjIzYTU4YTUyMu8RMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDc2MzA3 +MDY1Yjk4Y2IyMPARODxUIGFzIGNvcmU6OmNvbnZlcnQ6OkludG88VT4+OjppbnRvOjpoNDgxNWQ3 +OTc5M2Q2NzhjMy4x8RE4PFQgYXMgY29yZTo6Y29udmVydDo6SW50bzxVPj46OmludG86Omg1NTIy +YjQ2MjNhNThhNTIyLjHyEUp2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpFZDI1NTE5U2lnbmF0 +dXJlOjpmcm9tX3NsaWNlOjpoNjk1MTM5YzgxNDE5ZTZjNPMRSjxzZXJkZV9qc29uOjplcnJvcjo6 +RXJyb3IgYXMgc2VyZGU6OnNlcjo6RXJyb3I+OjpjdXN0b206OmhjNjA4ZmJkMmJlN2MyZjQx9BHc +AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpLVj46OnNwbGl0X2xlYWZfZGF0YTo6aDMyYTRjZDAzYWMzYzk4MTL1EUphbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6aW5zZXJ0OjpoNjc5 +ZDQ2YWMwZTJiNTE1ZvYRSTxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3IgYXMgc2VyZGU6OmRlOjpF +cnJvcj46OmN1c3RvbTo6aGZjNTc2OWRkNjM5NDJhOTP3EUg8YWxsb2M6OnZlYzo6VmVjPFQsQT4g +YXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDA2NjljNTJkMmQ0MzBjZTT4EUk8c2Vy +ZGVfanNvbjo6ZXJyb3I6OkVycm9yIGFzIHNlcmRlOjpkZTo6RXJyb3I+OjpjdXN0b206OmhjZGUw +YjdkMWY5NDY2ODg3+RFDY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3N0cnVjdF9maWVsZDFf +ZmluaXNoOjpoOTJkNDY2YWUxYjY2ODFlOfoRbDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpN +YXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OnRyeV9m +b2xkOjpoOWZhODhhMzIyN2RlNjE2N/sRIW9sbW1hY2hpbmVfaW52YWxpZGF0ZUdyb3VwU2Vzc2lv +bvwREV9fd2JnX3FyY29kZV9mcmVl/RH+AmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVz +X3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnJlcXVlc3RfbWlzc2luZ19zZWNyZXRzX2lmX25lZWRlZDo6 +e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6 +ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFj +aGluZTo6cmVxdWVzdF9taXNzaW5nX3NlY3JldHNfaWZfbmVlZGVkOjp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX0sd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6e3tjbG9zdXJlfX0+Pjo6aDVmYjhmNWEw +NTIyNzNkYjn+EWtzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +IGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpoMGE4MDZlNTFhY2Yz +MzExOf8Ra3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9y +IGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxpemU6Omg1Mzc3MzFlYmQxYzZmMDU5 +gBJrc2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29y +ZTo6b3B0aW9uOjpPcHRpb248VD4+OjpkZXNlcmlhbGl6ZTo6aDhiNTQyMTEzOGFmODY3YTKBEmtz +ZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjpv +cHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpoYWM0NGMwMTc3MDBjMzhiY4ISa3NlcmRl +OjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlv +bjo6T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxpemU6OmhkOGQ2YWI1NmM0MGQxMTY2gxJrc2VyZGU6OmRl +OjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29yZTo6b3B0aW9uOjpP +cHRpb248VD4+OjpkZXNlcmlhbGl6ZTo6aDA3ZjMxMzlmZTMxZmNkYmKEEmtzZXJkZTo6ZGU6Omlt +cGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjpvcHRpb246Ok9wdGlv +bjxUPj46OmRlc2VyaWFsaXplOjpoNDcyYWEzZmMyNWZhZjJhN4USa3NlcmRlOjpkZTo6aW1wbHM6 +OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+ +Pjo6ZGVzZXJpYWxpemU6Omg1MjQ3Y2UyMmM4Y2YyZWNmhhJrc2VyZGU6OmRlOjppbXBsczo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29yZTo6b3B0aW9uOjpPcHRpb248VD4+Ojpk +ZXNlcmlhbGl6ZTo6aDg1Y2M3NmY2MTY2ZTkxNmGHEmtzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2Vy +aWFsaXplOjpoYjEwOTQyNjQ2NmQwZTI2ZogSa3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxp +emU6OmhiZjBmNmJkN2VjZDNhMzEwiRLeATxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmlj +ZV9rZXlzOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2Ny +eXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXlIZWxwZXI+OjpkZXNlcmlhbGl6ZTo6 +X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYm9ycm93ZWRfc3Ry +OjpoZTEzMjI4OTUzNjE5NTQ5M4oS7QFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpmaXg6Ojxp +bXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpmaXhfcmlnaHRfYm9yZGVy +X29mX3BsZW50aWZ1bDo6aDEwMjAzOGVlZjg1YTVmZWOLEu0BYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6Zml4Ojo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6Zml4 +X3JpZ2h0X2JvcmRlcl9vZl9wbGVudGlmdWw6Omg0ZWQ5OTk4OWM5NmQ5ODhljBLtAWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6OmZpeDo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93 +bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPcklu +dGVybmFsPj46OmZpeF9yaWdodF9ib3JkZXJfb2ZfcGxlbnRpZnVsOjpoNjUwNWUwODE3YWQyYjI1 +OI0S7QFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpmaXg6OjxpbXBsIGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpmaXhfcmlnaHRfYm9yZGVyX29mX3BsZW50aWZ1bDo6aDZk +Njg0MzQ1MTE0NjdlY2aOEu0BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6Zml4Ojo8aW1wbCBh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6Zml4X3JpZ2h0X2JvcmRlcl9vZl9w +bGVudGlmdWw6OmhiMzdhOTI3NjU4ZjlmMmU5jxLtAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +OmZpeDo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPj46OmZpeF9yaWdo +dF9ib3JkZXJfb2ZfcGxlbnRpZnVsOjpoZTUwYzFiNTg0NTM2MGFhOZASbTxtYXRyaXhfc2RrX2Ny +eXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdGllcyBhcyBjb3JlOjpj +bG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDA4YTM3ZGVjNDNkODY5ZDSREmtzZXJkZTo6ZGU6OmltcGxz +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxU +Pj46OmRlc2VyaWFsaXplOjpoNjExMzU4ZGUwYjc0YTg5MZISYjxzZXJkZV9qc29uOjp2YWx1ZTo6 +ZGU6Ok1hcERlc2VyaWFsaXplciBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfa2V5X3Nl +ZWQ6Omg3NWJkYTcyN2Y3MjI3NGYzkxJYPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6TWVnb2xt +RXJyb3IgYXMgY29yZTo6ZXJyb3I6OkVycm9yPjo6c291cmNlOjpoOWYyZWUzMzJkMDgyOTdiMJQS +lwFtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6U2FzU3Rh +dGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OktleXNF +eGNoYW5nZWQ+OjpnZXRfZW1vamk6OmhkMGQ5NDI3NjAyYmEyYzQ2lRKdAW1hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6S2V5c0V4Y2hhbmdlZD46OmdldF9l +bW9qaV9pbmRleDo6aGY2MTQ2OWM5MjY1ZjE2ZTWWEpkBbWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OlNhc1N0YXRlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpLZXlzRXhjaGFuZ2VkPjo6Z2V0X2RlY2ltYWw6Omgw +YzQ5ZDU4ODMxZjk1OTQzlxKVAW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6 +c2FzX3N0YXRlOjpTYXNTdGF0ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6 +OnNhc19zdGF0ZTo6TWFjUmVjZWl2ZWQ+OjpnZXRfZW1vamk6OmhmMjA4ZDRiZGU2Y2VlMzFhmBKb +AW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0 +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6TWFjUmVj +ZWl2ZWQ+OjpnZXRfZW1vamlfaW5kZXg6OmgxZmYxNmVkYzYxMDhkNjljmRKXAW1hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6TWFjUmVjZWl2ZWQ+OjpnZXRf +ZGVjaW1hbDo6aGQ3YWE3OTk0ZTFkZjY3NjCaEkNoYXNoYnJvd246OnJhdzo6UmF3VGFibGVJbm5l +cjo6bmV3X3VuaW5pdGlhbGl6ZWQ6Omg0MTAyOWRjZGQ4YTk2MzQ2mxJsPGNvcmU6Oml0ZXI6OmFk +YXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0 +ZXJhdG9yPjo6dHJ5X2ZvbGQ6Omg4ZGUwODU1YzNjZWQ4MWQxnBJZPHZvZG96ZW1hYzo6dHlwZXM6 +OmVkMjU1MTk6OlNpZ25hdHVyZUVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDRk +NzU0NjlmYWNhMGY0ODSdEkRjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ6 +OmNvbXByZXNzOjpoODBiZWIxNWIwM2NjN2YxYp4Sa3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNl +cmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6ZGVzZXJp +YWxpemU6OmgxMzIzZjRjMTNjYzAxM2I1nxJCcnVtYV9pZGVudGlmaWVyc192YWxpZGF0aW9uOjpl +dmVudF9pZDo6dmFsaWRhdGU6Omg2NzVlMGRiZTdlZjE4NmE4oBJaPGJ5dGVzOjpieXRlczo6Qnl0 +ZXMgYXMgY29yZTo6Y29udmVydDo6RnJvbTxhbGxvYzo6dmVjOjpWZWM8dTg+Pj46OmZyb206Omhm +NzM5MjNhYTFjM2U0ZWUyoRJqbWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0 +ZUNyb3NzU2lnbmluZ0lkZW50aXR5OjpzaWduX2FjY291bnQ6Ont7Y2xvc3VyZX19OjpoMWU5NmYw +ZWRjOTQ4ZmI2MaISYGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPjo6aDI4MTk0ZmU4OWViNGNkYWEuNqMSF29s +bW1hY2hpbmVfaWRlbnRpdHlLZXlzpBJUbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +cmVxdWVzdHM6OlJlYWR5Ojp0b190cmFuc2l0aW9uZWQ6OmgzZDFmOWVjZTdjYmRmNGU3pRJUbWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlJlYWR5Ojp0b190cmFuc2l0 +aW9uZWQ6Omg5NDAwYTZlNmY4YzIwMjgxphJJPHJtcF9zZXJkZTo6ZGVjb2RlOjpFcnJvciBhcyBz +ZXJkZTo6ZGU6OkVycm9yPjo6Y3VzdG9tOjpoOGQxZTU0NTJiZDAzOTMxZKcSXW1hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpSZXF1ZXN0SGFuZGxlOjpjYW5jZWxfd2l0 +aF9jb2RlOjpoNzdmNWM2YzkxMDNjNTkzZagSUjxzZXJkZV9qc29uOjpyYXc6OlJhd1ZhbHVlIGFz +IHNlcmRlOjpzZXI6OlNlcmlhbGl6ZT46OnNlcmlhbGl6ZTo6aDFhZjJhMWMyMWNiY2Q2YjmpElFt +YXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdHk6 +Om5ldzo6aDgxYzQ5MDE0M2Q5ZjBiODeqEmJtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9u +OjpzYXM6OnNhc19zdGF0ZTo6U3VwcG9ydGVkTWFjTWV0aG9kOjp2ZXJpZnlfbWFjOjpoYTk1OWVk +ZTFlM2FjMjU1OKsSMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNWY3ZDk1YWRkYzcw +MTczMKwSSTxjb3JlOjpvcHRpb246Ok9wdGlvbjxaPiBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVy +b2l6ZTo6aDRjYjgzNzkyZTEyZTYwNmatEklydW1hX2V2ZW50czo6cm9vbTo6dGh1bWJuYWlsX3Nv +dXJjZV9zZXJkZTo6ZGVzZXJpYWxpemU6Omg4ZjdiMjk3YmM0NWUxOTY1rhJHb25jZV9jZWxsOjpp +bXA6Ok9uY2VDZWxsPFQ+Ojppbml0aWFsaXplOjp7e2Nsb3N1cmV9fTo6aDI0NmI4OWMxYzMxOGE3 +NjKvEkI8Y29yZTo6dGltZTo6RHVyYXRpb24gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQ0 +OGQ1NTZjOTc0YzJhNTGwEmM8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRl +cjxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDM0ZjQ1NDkxNjI2OGI4 +NjWxEgpzYXNfZmxvd0lkshIVX193YmdfY2FuY2VsaW5mb19mcmVlsxIXcXJjb2RlX3JlbmRlcklu +dG9CdWZmZXK0Ehp2ZXJpZmljYXRpb25yZXF1ZXN0X2Zsb3dJZLUSLnRyYWNpbmc6OnNwYW46OlNw +YW46OnJlY29yZDo6aDA5NDE3ZWU1ODkwNzNiNmO2Ei50cmFjaW5nOjpzcGFuOjpTcGFuOjpyZWNv +cmQ6OmgyODIwNTgzM2Y1YmQ2ZmYytxJtPHJ1bWFfZXZlbnRzOjpyb29tOjpoaXN0b3J5X3Zpc2li +aWxpdHk6Okhpc3RvcnlWaXNpYmlsaXR5IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208VD4+Ojpmcm9t +OjpoZjRlMjYxOWQ1ZjA5OTk5NbgSXTxydW1hX2V2ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpTZWNy +ZXROYW1lIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208VD4+Ojpmcm9tOjpoYTE1Mjg1MDU0OGIwNTI1 +ZLkSugFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZWFyY2g6OjxpbXBsIGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpzZWFyY2hfdHJl +ZTo6aDE1NzVmZmVjMzYyMGNkNGW6EroBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2VhcmNo +Ojo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5 +cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50 +ZXJuYWw+Pjo6c2VhcmNoX3RyZWU6OmgyNjQwMDc3YTc0MDUxMTAyuxK6AWFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6OnNlYXJjaDo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6OkxlYWZPckludGVybmFsPj46OnNlYXJjaF90cmVlOjpoYWRjMzkxODdmYTg4NzJj +ZrwSugFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZWFyY2g6OjxpbXBsIGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpzZWFyY2hfdHJl +ZTo6aGJlODY1MjFhNDUwODMxODK9ElZtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpx +cmNvZGU6OlFyVmVyaWZpY2F0aW9uOjpuZXdfaGVscGVyOjpoOTI1YzRmNjZlZmRmYzE0Nr4STG1h +dHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyZWNvcmRfbWVzc2FnZV9pZDo6 +aDYzOGRkZDIyMWYzZWUzMTi/EkY8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6 +OkNsb25lPjo6Y2xvbmU6Omg0NWI5ZjYzZWIwNjBlMDdlwBJgPHRyYWNpbmdfc3Vic2NyaWJlcjo6 +Zm10Ojpmb3JtYXQ6OkVycm9yU291cmNlTGlzdCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6 +OmhmNDNlZjA1MmExNzQ2YWYxwRJEc2hhcmRlZF9zbGFiOjpwYWdlOjpzbG90OjpTbG90PFQsQz46 +OnJlbGVhc2Vfd2l0aDo6aDkwNzI5ZjQ2ZmY1OWViMDnCEkk8c2VyZGVfanNvbjo6ZXJyb3I6OkVy +cm9yIGFzIHNlcmRlOjpkZTo6RXJyb3I+OjpjdXN0b206OmhlODgzNzFjYzNmNGMwY2VmwxJGPGFs +bG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYmZiZGU2 +ZjBmZTVmNzU5NsQSZzxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlv +bk1ldGhvZCBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDAxN2NlMDk3NDRkNjA2 +YmXFEroBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2VhcmNoOjo8aW1wbCBhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6c2VhcmNoX3Ry +ZWU6OmgyZDc5MmVkODJhM2ZmZWU2xhJQY29yZTo6Y2VsbDo6b25jZTo6T25jZUNlbGw8VD46Omdl +dF9vcl90cnlfaW5pdDo6b3V0bGluZWRfY2FsbDo6aGM5NmQ0MDMzNTE5YzNmYzjHEkpjb3JlOjpm +bXQ6OmJ1aWxkZXJzOjpEZWJ1Z1N0cnVjdDo6ZmluaXNoX25vbl9leGhhdXN0aXZlOjpoNzYyMDY2 +OThlYmM3MDg1ZsgSW2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +ZXJyb3I6OlNlc3Npb25DcmVhdGlvbkVycm9yPjo6aGE1NTI4Yzk1ZWZkMzc0OGPJEh1pbmJvdW5k +Z3JvdXBzZXNzaW9uX3Nlc3Npb25JZMoSHmRlY3J5cHRlZHJvb21ldmVudF9zaGllbGRTdGF0ZcsS +C3RyYWNpbmdfbmV3zBIJcXJfZmxvd0lkzRIwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg5NzMwY2VkY2E2YTlhNjNkzhJrPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6 +OkluZGV4ZWRkYkNyeXB0b1N0b3JlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDRj +Mjc5NTMwNGE2YjI5Y2XPEroBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2VhcmNoOjo8aW1w +bCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxW +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+ +Pjo6c2VhcmNoX3RyZWU6Omg1ZGI3ZTlkZTdmOGQzNzFk0BJtPG1hdHJpeF9zZGtfaW5kZXhlZGRi +OjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlRXJyb3IgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDRjMjc5NTMwNGE2YjI5Y2UuMdESVTxybXBfc2VyZGU6OmRlY29kZTo6UmVh +ZFJlZlJlYWRlcjxUPiBhcyBzdGQ6OmlvOjpSZWFkPjo6cmVhZF9leGFjdDo6aGViZGJiYzFiYTMx +ZDZlMGLSEroBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2VhcmNoOjo8aW1wbCBhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6c2VhcmNo +X3RyZWU6Omg3MWFiZWI1OTQ1YjcxNmE10xK6AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNl +YXJjaDo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jy +b3dUeXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZP +ckludGVybmFsPj46OnNlYXJjaF90cmVlOjpoODcxYzIwODViYmVkMGQyZdQSugFhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpzZWFyY2g6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpzZWFyY2hfdHJlZTo6aGVhNjgxZGVhM2M2 +OGEwZmXVEmw8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpjYW5jZWw6OkNhbmNlbENv +ZGUgYXMgY29yZTo6Y29udmVydDo6QXNSZWY8c3RyPj46OmFzX3JlZjo6aDMyMGM1N2NmMjdhM2M2 +NWXWEkttYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OmhlbHBlcnM6OmdldF9l +bW9qaTo6aDE1MTNlNGYxMTRkNGIxY2bXEjRxcmNvZGU6OmNhbnZhczo6Q2FudmFzOjpkcmF3X2xp +bmU6Omg3YTZjYzMzMmM4M2Y0OTQ42BI/c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OndyaXRl +X2J5dGVfYXJyYXk6Omg5NmIxM2FhZDhjNDVkY2Uw2RIxY29yZTo6b3B0aW9uOjpPcHRpb248VD46 +Om9rX29yOjpoNzdjOWRmYWNhMzc5NmI4ONoSugFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpz +ZWFyY2g6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9y +cm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFm +T3JJbnRlcm5hbD4+OjpzZWFyY2hfdHJlZTo6aDRjM2U0ZmFmNGEwYzA4YmPbEroBYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6c2VhcmNoOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6c2VhcmNoX3RyZWU6Omg3YmFkZjE4NjI1 +YzlmMjE23BI2cHJvc3Q6OmVuY29kaW5nOjpkZWNvZGVfdmFyaW50X3Nsb3c6Omg3ZTRlOGFkODc0 +MzAxODIz3RJuPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6Y2FuY2VsOjpDYW5jZWxD +b2RlIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHN0cj4+Ojphc19yZWY6OmgzMjBjNTdjZjI3YTNj +NjVlLjHeEmk8c2VyZGVfanNvbjo6dmFsdWU6OnNlcjo6U2VyaWFsaXplTWFwIGFzIHNlcmRlOjpz +ZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aDAwMTg2ODE3MDU4ZTAyYmPf +Els8c3RkOjp0aW1lOjpJbnN0YW50IGFzIGNvcmU6Om9wczo6YXJpdGg6OkFkZDxjb3JlOjp0aW1l +OjpEdXJhdGlvbj4+OjphZGQ6OmgwZDgxNmU0MjYyZWE4ZjMz4BKlAWFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +SW50ZXJuYWw+OjpwdXNoOjpoZWVkZjBkZWMwYjcxMjdmMuEScWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6SW5i +b3VuZEdyb3VwU2Vzc2lvbj46OmgyNjkwNWE5NjFiM2YxOGY34hIWb2xtbWFjaGluZV9nZXRJZGVu +dGl0eeMSgQFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyZWdp +c3Rlcl91c2VyX2lkZW50aXR5X3VwZGF0ZWRfY2FsbGJhY2s6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fTo6aDA0ZjQyMzk1Njc0YTUzYWTkEnttYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5l +OjpPbG1NYWNoaW5lOjpyZWdpc3Rlcl9kZXZpY2VzX3VwZGF0ZWRfY2FsbGJhY2s6Ont7Y2xvc3Vy +ZX19Ojp7e2Nsb3N1cmV9fTo6aGQ0MWQ3Y2Y1ZjcxMDkyZGXlEi50cmFjaW5nOjpzcGFuOjpTcGFu +OjpyZWNvcmQ6OmgwMGE5YjE1ZWNiMDIzNGU05hIudHJhY2luZzo6c3Bhbjo6U3Bhbjo6cmVjb3Jk +OjpoYzgyMzhhZWI5OThjYTllNucSLnRyYWNpbmc6OnNwYW46OlNwYW46OnJlY29yZDo6aGQ5NTg3 +N2E0YWViNjRhNWHoEmY8c2VyZGU6OmRlOjp2YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEksRT4gYXMg +c2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aGU2OWY1YmJlZGNkMmRj +NTjpEmtzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBj +b3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpoMmQxZjUzMTI1N2QyYjJjY+oS +a3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6 +Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxpemU6OmhkOTM2ZGNmMTdmZThkNWI46xKlAWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+OjpwdXNoOjpoNWQwOTk5OTIzYWU2OTQ3NOwSO2NvcmU6 +OnNsaWNlOjpzb3J0OjpoZWFwc29ydDo6e3tjbG9zdXJlfX06Omg1MmZlOWY1ZmE1N2I3ZDcx7RJm +PCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2Vy +aWFsaXplcj46OnNlcmlhbGl6ZV9zdHJ1Y3Q6OmhkNTYwOTZiNTQ0NjQ0MGJk7hJKPHJ1bWFfZXZl +bnRzOjpyb29tOjpJbWFnZUluZm8gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDMwMmI5ZTQ0 +YTA1NjA2MzHvEq4BbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6Om9sbV92MTo6RGVj +cnlwdGVkT2xtVjFFdmVudDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6Zm9yd2Fy +ZGVkX3Jvb21fa2V5OjpGb3J3YXJkZWRSb29tS2V5Q29udGVudD46OnJvb21fa2V5X2luZm86Omhl +YmVlN2NhOGM3YWZhN2Qw8BJIPHZvZG96ZW1hYzo6dHlwZXM6OktleUVycm9yIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6Omg1NzMzOWNhODIyZTg1ZTA08RJxY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJbmJv +dW5kR3JvdXBTZXNzaW9uPjo6aDBjNTg0ZmI3MmRiNDRhZGTyElt2b2RvemVtYWM6Om9sbTo6c2Vz +c2lvbjo6ZG91YmxlX3JhdGNoZXQ6OkluYWN0aXZlRG91YmxlUmF0Y2hldDo6YWN0aXZhdGU6Omhi +NWFmMTZiNTM1ZDMwM2Zl8xJmPCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4g +YXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zdHJ1Y3Q6Omg5ZmFmY2ZjOGIy +YTg2ZjZj9BJoPCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMgc2VyZGU6 +OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zdHJ1Y3Q6Omg5ZmFmY2ZjOGIyYTg2ZjZjLjH1 +Eko8dm9kb3plbWFjOjp0eXBlczo6S2V5RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDU3MzM5Y2E4MjJlODVlMDQuMfYSaDwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxX +LEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RydWN0OjpoOWZhZmNm +YzhiMmE4NmY2Yy4y9xKlAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+OjpwdXNoOjpoMjA4MTYx +YTMxODQyYzI1ZvgSaTxzZXJkZV9qc29uOjp2YWx1ZTo6c2VyOjpTZXJpYWxpemVNYXAgYXMgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoYWMxMDgyNDY2MWY5 +NWM3NPkSOGJhc2U2NDo6ZW5naW5lOjpFbmdpbmU6OmRlY29kZTo6aW5uZXI6Omg2OTg4NjkyZGQ2 +MjBkNGM4+hIrc2VyZGVfanNvbjo6ZGU6OmZyb21fc3RyOjpoM2YzMWRhNjZjODc3ZDM2Y/sSfmNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0 +bzo6dHlwZXM6OmV2ZW50czo6b2xtX3YxOjpBbnlEZWNyeXB0ZWRPbG1FdmVudD4+OjpoOTY2ODc5 +NWY1ZGQ1MWEyYfwSgAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8 +bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6Om9sbV92MTo6QW55RGVjcnlwdGVkT2xt +RXZlbnQ+Pjo6aDk2Njg3OTVmNWRkNTFhMmEuMf0SgAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6Om9sbV92 +MTo6QW55RGVjcnlwdGVkT2xtRXZlbnQ+Pjo6aDk2Njg3OTVmNWRkNTFhMmEuMv4SV2Z1dHVyZXNf +dXRpbDo6c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6RnV0dXJlc1Vub3JkZXJlZDxGdXQ+Ojpw +dXNoOjpoNmU1YzJmM2E5ZmJkNWMzN/8SSm1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6U3Rv +cmVDaXBoZXI6OmRlY3J5cHRfdmFsdWU6OmgxZmRiM2IwMWIzMDRmZDQygBMaX193YmdfdG9kZXZp +Y2VyZXF1ZXN0X2ZyZWWBE4ABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6 +Qm94PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpvbG1fdjE6OkFueURlY3J5cHRl +ZE9sbUV2ZW50Pj46Omg5NjY4Nzk1ZjVkZDUxYTJhLjOCE108cnVtYV9ldmVudHM6OnNlY3JldDo6 +cmVxdWVzdDo6U2VjcmV0TmFtZSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aGEw +MGJjNWRiNjcxZGE5MTaDExRkZXZpY2VfY3VydmUyNTUxOUtleYQTQXN0ZDo6aW86OmRlZmF1bHRf +cmVhZF90b19lbmQ6OnNtYWxsX3Byb2JlX3JlYWQ6Omg1NTkyNWQ5YjJmOTc4MDE5hRNBc3RkOjpp +bzo6ZGVmYXVsdF9yZWFkX3RvX2VuZDo6c21hbGxfcHJvYmVfcmVhZDo6aGYzYjBlMDdhYmE5ZGFm +ZDWGE4ABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PG1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpvbG1fdjE6OkFueURlY3J5cHRlZE9sbUV2ZW50Pj46 +Omg5NjY4Nzk1ZjVkZDUxYTJhLjSHE2tzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplIGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpo +Njk1YWU1MGViMzI5ZGZlYYgTa3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxpemU6Omg3MjZj +NGRlYzQ0NTNhNGM0iRNrc2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3IgY29yZTo6b3B0aW9uOjpPcHRpb248VD4+OjpkZXNlcmlhbGl6ZTo6aDk3YjZiNWRj +MjM5ODIwYTKKE2tzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +IGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFsaXplOjpoYmRkZTU3MDg3Nzlh +MjIxNIsTdTxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVyX21hcDo6RmlsdGVyTWFwPEksRj4g +YXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZDJkNzFl +MDA0MmI1YjhjOIwTeTxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudFJlZkRl +c2VyaWFsaXplcjxFPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0 +cjo6aDcwMzk1MzkzNmU3M2FkNjKNEztzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+Ojpl +bmRfbWFwOjpoZmQ0NmVkZGI1MTc0ZDkyY44TpQFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0 +LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6 +cHVzaDo6aDkwZWM0YmM3ZTgxN2I4NDmPE0htYXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6OlRv +RGV2aWNlUmVxdWVzdDo6d2l0aF9pZDo6aDczMzNmMTZjN2VkNTc4MDGQE1s8bWF0cml4X3Nka19j +cnlwdG86OmVycm9yOjpTaWduYXR1cmVFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3Vy +Y2U6OmgxNThhZTE0ZTI2MDk0YmM5kRPpATxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3Nz +X3NpZ25pbmc6OmNvbW1vbjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0 +cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjpjb21tb246OkNyb3NzU2lnbmlu +Z0tleT46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+ +Ojp2aXNpdF9zdHI6Omg3ZjczNWRmOGI3NjNkM2JmkhNBc3RkOjppbzo6ZGVmYXVsdF9yZWFkX3Rv +X2VuZDo6c21hbGxfcHJvYmVfcmVhZDo6aGUzOGU0NjU0Y2IyZDM3NjiTE0w8c3RkOjppbzo6Y3Vy +c29yOjpDdXJzb3I8VD4gYXMgc3RkOjppbzo6UmVhZD46OnJlYWRfZXhhY3Q6OmhjNDk4MTk5Yjgy +Y2QzYzc2lBNgPHNoYXJkZWRfc2xhYjo6cGFnZTo6c2xvdDo6TGlmZWN5Y2xlPEM+IGFzIHNoYXJk +ZWRfc2xhYjo6UGFjazxDPj46OmZyb21fdXNpemU6Omg1Mjc4MDczMGIyMjY1NzYzlRNkPHZvZG96 +ZW1hYzo6bWVnb2xtOjpyYXRjaGV0OjpSYXRjaGV0Qnl0ZXMgYXMgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZT46OmRlc2VyaWFsaXplOjpoNzlmNGVkOWYzNThiYzc0N5YTR3ZvZG96ZW1hYzo6b2xtOjpz +ZXNzaW9uOjpjaGFpbl9rZXk6OmV4cGFuZF9jaGFpbl9rZXk6Omg3MmQwZWM3ODBjNzdmNzYxlxNi +PHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpGbGF0TWFwQWNjZXNzPEU+IGFzIHNlcmRlOjpkZTo6TWFw +QWNjZXNzPjo6bmV4dF9rZXlfc2VlZDo6aDRiM2RhYjYwMTBhZDdmZDeYE3k8c2VyZGU6Ol9fcHJp +dmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnRSZWZEZXNlcmlhbGl6ZXI8RT4gYXMgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6Omg2Yzc4ZmRjZGMxYmQ4ZjI2mRN5PHNl +cmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50UmVmRGVzZXJpYWxpemVyPEU+IGFz +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc3RyOjpoOWY4NTdjMGJhMDhj +OWNkN5oTeTxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudFJlZkRlc2VyaWFs +aXplcjxFPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cjo6aGI3 +MmQwMWIxYzg1NzEzNDSbE7wBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJl +ZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6cHVz +aF9pbnRlcm5hbF9sZXZlbDo6aDBkOTc4MDgxYjdiZWJkZDmcE7wBYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkxlYWZPckludGVybmFsPjo6cHVzaF9pbnRlcm5hbF9sZXZlbDo6aDBmOTk0MjIwYzlmNTdiZWad +E7wBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6cHVzaF9pbnRlcm5hbF9sZXZl +bDo6aDE5YWZiZWVhMzJlMTkwYmSeE7wBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEss +VixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFs +Pjo6cHVzaF9pbnRlcm5hbF9sZXZlbDo6aDFiMjc0ZjMyYjY5OGE0OTmfE7wBYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6OkxlYWZPckludGVybmFsPjo6cHVzaF9pbnRlcm5hbF9sZXZlbDo6aDI1YTAxZDA3YzRm +MjgwNWSgE7oBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2VhcmNoOjo8aW1wbCBhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6c2VhcmNo +X3RyZWU6OmgwYTk2ZWRkOGExNzdkOTAyoRO6AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNl +YXJjaDo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jy +b3dUeXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZP +ckludGVybmFsPj46OnNlYXJjaF90cmVlOjpoMTNmN2ExMGVmYjJkM2UyOaITugFhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpzZWFyY2g6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpzZWFyY2hfdHJlZTo6aDIzNmRkOGVkYmZh +ZGZiYmKjE7QBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8bWF0cml4X3Nka19jcnlwdG86OnR5 +cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpSb29tS2V5V2l0aGhlbGRDb250ZW50Pj46 +OmhjZTIyYjM3ZmRkNjVkYzQwpBOAAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjptaWdyYXRpb25zOjp2N190b192ODo6ZGF0YV9taWdy +YXRlOjp7e2Nsb3N1cmV9fT46Omg0NGY0YWJlYTcyZmNiMGY5pRNHd2FzbV9iaW5kZ2VuX2Z1dHVy +ZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6aDg3ZDc0MDgxN2E5ZDNhYzemE35j +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bGlib2xtX21p +Z3JhdGlvbjo6bWlncmF0ZV9iYXNlX2RhdGFfdG9fc3RvcmU6Ont7Y2xvc3VyZX19Pjo6aDBjMTQz +ZjY4ZjIwNWI2ZTenE0o8d2FzbV9iaW5kZ2VuOjpKc0Vycm9yIGFzIGNvcmU6OmNvbnZlcnQ6OkZy +b208RT4+Ojpmcm9tOjpoMDU1NzdlYWFkMjIzY2YyZqgTSjx3YXNtX2JpbmRnZW46OkpzRXJyb3Ig +YXMgY29yZTo6Y29udmVydDo6RnJvbTxFPj46OmZyb206OmgwOTFiZWQxNThjZGU2YjIwqRNKPHdh +c21fYmluZGdlbjo6SnNFcnJvciBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPEU+Pjo6ZnJvbTo6aDk4 +NTMxMGYzMzE1NWZiZjmqE0o8d2FzbV9iaW5kZ2VuOjpKc0Vycm9yIGFzIGNvcmU6OmNvbnZlcnQ6 +OkZyb208RT4+Ojpmcm9tOjpoZDUyZTA0ZjA2ZWM4ODg5NKsTUTxzZXJkZV93YXNtX2JpbmRnZW46 +OmVycm9yOjpFcnJvciBhcyBzZXJkZTo6ZGU6OkVycm9yPjo6Y3VzdG9tOjpoOWMzNmI4YzA3ZDcx +MmU0MqwTM3N0ZDo6c3luYzo6bXV0ZXg6Ok11dGV4PFQ+Ojpsb2NrOjpoNmVlZWVmYTRmMzgzYzQ4 +Zq0TY21hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0 +aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoZDFiNGFhYmYwYjY4ODU3Zq4TY21hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJy +b3I6Ont7Y2xvc3VyZX19OjpoMTZjNjdjOTRlNDk5MTdkOa8TZDx2b2RvemVtYWM6Om1lZ29sbTo6 +cmF0Y2hldDo6UmF0Y2hldEJ5dGVzIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlh +bGl6ZTo6aDkwNmFlNmU5ZTM3NTQ1MGawEy9ibGFrZTM6OkNodW5rU3RhdGU6OmZpbGxfYnVmOjpo +ZDk1ZmJjM2I0YmVkYzRlYbETgQE8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJl +ZU1hcDxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJhdG9yPChL +LFYpPj46OmZyb21faXRlcjo6aDI5NDU3MzI3YjQ1MTc5YTOyE2k8c2VyZGVfanNvbjo6dmFsdWU6 +OnNlcjo6U2VyaWFsaXplTWFwIGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlh +bGl6ZV9maWVsZDo6aDE2NmJkN2MyZTY3MzViZjSzE3k8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNv +bnRlbnQ6OkNvbnRlbnRSZWZEZXNlcmlhbGl6ZXI8RT4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6Omg5YjJjOWFhOTYzZTQ0NzUxtBNpPHdhc21fYmluZGdlbl9m +dXR1cmVzOjpKc0Z1dHVyZSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPGpzX3N5czo6UHJvbWlzZT4+ +Ojpmcm9tOjpmaW5pc2g6OmgxMjkzNDVlYTVlOGJhNTlhtRN5PHNlcmRlOjpfX3ByaXZhdGU6OmRl +Ojpjb250ZW50OjpDb250ZW50RGVzZXJpYWxpemVyPEU+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emVyPjo6ZGVzZXJpYWxpemVfb3B0aW9uOjpoM2I0ZDhkYjAwZDFhODJjMbYTZjxzZXJkZTo6ZGU6 +OnZhbHVlOjpTZXFEZXNlcmlhbGl6ZXI8SSxFPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5l +eHRfZWxlbWVudF9zZWVkOjpoZTViZjYwNmU2MGE3YTkyM7cTa3NlcmRlOjpkZTo6aW1wbHM6Ojxp +bXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6 +ZGVzZXJpYWxpemU6OmgxZjMwNzcwYjQ0ZGMxMGU4uBNBc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI6 +Ol9fZGVzZXJpYWxpemVfY29udGVudDo6aGFjMGViMDFmNTI3Y2I4ZjW5EzlyeXU6OnByZXR0eTo6 +ZXhwb25lbnQ6OndyaXRlX2V4cG9uZW50Mzo6aDQ3NGE1M2QwMTc1NDliN2a6E6UBYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpJbnRlcm5hbD46OnB1c2g6OmgwZTNiOGNiYjNiYmM2ZDk1uxOlAWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6SW50ZXJuYWw+OjpwdXNoOjpoYWQyNjMxMzc5MDc4NWZiYrwTdnRyYWNpbmc6Omluc3Ry +dW1lbnQ6Ol86OjxpbXBsIGNvcmU6Om9wczo6ZHJvcDo6RHJvcCBmb3IgdHJhY2luZzo6aW5zdHJ1 +bWVudDo6SW5zdHJ1bWVudGVkPFQ+Pjo6ZHJvcDo6aDlkYjA3NTQ1MDM3NjcwNmO9E2M8YWxsb2M6 +OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyOjpTcGVjRnJvbUl0ZXI8 +VCxJPj46OmZyb21faXRlcjo6aGI4ODk4ZWNhMDNlNjlkNzm+EzNhbGxvYzo6c3luYzo6QXJjPFQs +QT46OmRyb3Bfc2xvdzo6aDQ3OTc4OTljZjY1ZWEyMDi/E2Vjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6SWRlbnRpdGllc0JlaW5nVmVyaWZp +ZWQ+OjpoMGU4ZDQ3MjE1NTllMWM2Y8ATa3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxpemU6 +Omg5YjMwMDY1Y2JlM2E0MGJkwRNrc2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpE +ZXNlcmlhbGl6ZSBmb3IgY29yZTo6b3B0aW9uOjpPcHRpb248VD4+OjpkZXNlcmlhbGl6ZTo6aGEy +MThiMDAzMGQyZjJjYzjCE2Y8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNlcmlhbGl6ZXI8VyxGPiBh +cyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVjdDo6aDZiYzI2NjNkNjFh +NzRmM2HDE3hjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +OjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpSb29tS2V5V2l0aGhlbGRDb250ZW50Pjo6aDY2 +Zjg4NzNjNDgwZWRkY2PEE2g8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNlcmlhbGl6ZXI8VyxGPiBh +cyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVjdDo6aDZiYzI2NjNkNjFh +NzRmM2EuMcUTpQFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVzaDo6aDAxOTM5YjVlMjA1 +Zjk3MzLGE6UBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OnB1c2g6Omg1ZTQ0Y2Y2NDYwZmNk +MmJkxxM8c2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwOjpzZXJpYWxpemVfZW50cnk6OmhkNDg0MTAw +OGVhZjNmOTJhyBMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4YzJiYWMyNDlmNDA0 +YzAzyRNYPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6 +OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNzMyYTQzYTUxNDUyMTk2NMoTV2NvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpSZXF1ZXN0RXZlbnQ+OjpoNzVl +MTQ1NjExNmMzNjg0ZcsTmQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6 +TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0 +b3JlPjo6bG9hZF90cmFja2VkX3VzZXJzOjp7e2Nsb3N1cmV9fTo6aGM1MmNjNjhhOTZiZDA4YmbM +E3g8dHJhY2luZ19zdWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRy +YWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OnRyeV9jbG9zZTo6aGViMWEyZjFl +M2FiNGNjZjLNEzdudV9hbnNpX3Rlcm06OnN0eWxlOjpTdHlsZTo6aXNfcGxhaW46OmhkNzlhOGIw +NmJkZGVkYzJlzhM8dm9kb3plbWFjOjpjaXBoZXI6OkNpcGhlcjo6ZGVjcnlwdF9waWNrbGU6Omg4 +YWUxYWE1YTY1NGJjODBkzxM4dm9kb3plbWFjOjpzYXM6OkVzdGFibGlzaGVkU2FzOjpieXRlczo6 +aGE5NzFjNGUzMDI5NzQzNjjQE21mdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJlc191bm9yZGVy +ZWQ6OnJlYWR5X3RvX3J1bl9xdWV1ZTo6UmVhZHlUb1J1blF1ZXVlPEZ1dD46OmRlcXVldWU6Omhl +MDdmYzc3YjdmM2Q3YTI50RNtZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfdW5vcmRlcmVk +OjpyZWFkeV90b19ydW5fcXVldWU6OlJlYWR5VG9SdW5RdWV1ZTxGdXQ+OjpkZXF1ZXVlOjpoNTE4 +NmFkYTYzMGM3N2JjONITdTxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVyX21hcDo6RmlsdGVy +TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0 +OjpoNzhiODI0MjMxNzFiM2VmNtMTIm9sbW1hY2hpbmVfZ2V0VmVyaWZpY2F0aW9uUmVxdWVzdHPU +E3Y8dHJhY2luZ19zdWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRy +YWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OmVuYWJsZWQ6Omg1MWE0MWQ3ZDlh +OGYyMzY51RNSYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjplbnRyeTo6RW50cnk8SyxW +LEE+Ojpvcl9kZWZhdWx0OjpoNjhkNmZkMWNjZTBlOTZkZdYTcDwmbXV0IHJtcF9zZXJkZTo6ZW5j +b2RlOjpTZXJpYWxpemVyPFcsQz4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6 +ZV9zdHJ1Y3RfdmFyaWFudDo6aDIxNmJhYTVhMWI3MWVjZjjXE7gBcnVtYV9ldmVudHM6OmtleTo6 +dmVyaWZpY2F0aW9uOjpyZWFkeTo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBy +dW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnJlYWR5OjpUb0RldmljZUtleVZlcmlmaWNh +dGlvblJlYWR5RXZlbnRDb250ZW50Pjo6c2VyaWFsaXplOjpoZTliZjYxMTdkOTNhOGQ1YdgTMHNl +cmRlX2pzb246OnJhdzo6dG9fcmF3X3ZhbHVlOjpoOGEwNzkwNTZmMDJmNzdkZtkTVzx2b2RvemVt +YWM6Om9sbTo6c2Vzc2lvbl9rZXlzOjpTZXNzaW9uS2V5cyBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoN2MwMDY4MGJmNDAwYjA1OdoTdTxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVyX21h +cDo6RmlsdGVyTWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0 +b3I+OjpuZXh0OjpoOTA5Nzk2NzNmMmUwMWRjNdsTXXZvZG96ZW1hYzo6bWVnb2xtOjpzZXNzaW9u +X2tleXM6OkV4cG9ydGVkU2Vzc2lvbktleTo6dG9fYnl0ZXNfd2l0aF92ZXJzaW9uOjpoNjE3NzM0 +M2Q3NDFmMDk3ZNwTTzx2b2RvemVtYWM6OkxpYm9sbVBpY2tsZUVycm9yIGFzIGNvcmU6OmVycm9y +OjpFcnJvcj46OnNvdXJjZTo6aDdlZjFiYjE1ZjkxMzkwMDDdE2Y8c2VyZGU6OmRlOjp2YWx1ZTo6 +U2VxRGVzZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1l +bnRfc2VlZDo6aDc0YzExYzk5MTgzOWYwZWXeEzxiYXNlNjQ6OmVuZ2luZTo6Z2VuZXJhbF9wdXJw +b3NlOjpyZWFkX3U2NDo6aGEwYzkzMWZmOGExZmM1ZTHfEzJieXRlczo6Ynl0ZXM6OnNoYWxsb3df +Y2xvbmVfdmVjOjpoN2U2OTE1ZjAwZjZhOWUwMuATpQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OndpdGhfc3RvcmU8bWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6c3RvcmU6OlN0b3JlSGFuZGxlPjo6e3tjbG9zdXJlfX06Ont7Y2xv +c3VyZX19Pjo6aGVmNGQ0ZmY0ZGY2Yjk0NTfhE3xtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNo +aW5lOjpPbG1NYWNoaW5lOjpyZWdpc3Rlcl9yb29tX2tleV91cGRhdGVkX2NhbGxiYWNrOjp7e2Ns +b3N1cmV9fTo6e3tjbG9zdXJlfX06OmgxNWM2NThjNWYwOThmZjM54hMKdXNlcmlkX25ld+MTD3Vz +ZXJpZF90b1N0cmluZ+QTCnJvb21pZF9uZXflEw5zZXJ2ZXJuYW1lX25ld+YTngFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5 +cHRvU3RvcmVFcnJvcjxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVk +ZGJDcnlwdG9TdG9yZT4+OjpoZGI2OWIxY2U3YjM2MDUyOOcTSjxzZXJkZV9qc29uOjplcnJvcjo6 +RXJyb3IgYXMgc2VyZGU6OnNlcjo6RXJyb3I+OjpjdXN0b206OmgyODQwZDFlNjczZTcwMGU16BMe +X193Ymdfcm9vbWtleWltcG9ydHJlc3VsdF9mcmVl6RNrc2VyZGU6OmRlOjppbXBsczo6PGltcGwg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29yZTo6b3B0aW9uOjpPcHRpb248VD4+OjpkZXNl +cmlhbGl6ZTo6aGJmYWQ1ZTMzNmIzMmRhMjjqE2tzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmRlc2VyaWFs +aXplOjpoMGVkNDVjZjk3ZjMyYWNlZesTa3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Pjo6ZGVzZXJpYWxpemU6 +OmgxZGViNWM5YWYxMzFmZDdl7BMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2ZDlj +M2E0MTNiZjU1ZjM07RNbPGRpZ2VzdDo6Y29yZV9hcGk6OndyYXBwZXI6OkNvcmVXcmFwcGVyPFQ+ +IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYTNmODE0YTU5OTVmMDNhOe4TpQFhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVzaDo6aDBhZjcxYjM3YWQ1YjA5OWTvE6UBYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpJbnRlcm5hbD46OnB1c2g6OmgzMDg4OTNlMTNjNTFiNmRh8BO/AW1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpfOjo8aW1wbCBzZXJk +ZTo6c2VyOjpTZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpy +b29tX2tleV9yZXF1ZXN0OjpSb29tS2V5UmVxdWVzdENvbnRlbnQ+OjpzZXJpYWxpemU6OmhkZGMy +NjA3Y2NlMDU3NTI38RMzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmhlY2ZkNzNm +MDkzNTZjNDBh8hOTATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0b3JlOjpNZW1v +cnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+ +Ojpsb2FkX2FjY291bnQ6Ont7Y2xvc3VyZX19OjpoZmYzZjM1NTI4YTk4OTI3NfMTRXgyNTUxOV9k +YWxlazo6eDI1NTE5OjpTdGF0aWNTZWNyZXQ6OmRpZmZpZV9oZWxsbWFuOjpoMGE0ZWQ0NWMyZWI0 +YmNlOfQTPGJhc2U2NDo6ZW5naW5lOjpnZW5lcmFsX3B1cnBvc2U6OnJlYWRfdTY0OjpoYmFjZjlj +YjgwMGQ0OTc1M/UTSjxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3IgYXMgc2VyZGU6OnNlcjo6RXJy +b3I+OjpjdXN0b206Omg1OGZhYjZlZTEyZWE2NDdj9hNOPHN0ZDo6c3lzOjpvc19zdHI6OmJ5dGVz +OjpTbGljZSBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwNDY3NDFlN2Q4MWJiMDVi9xMP +b2xtbWFjaGluZV9zaWdu+BMUZGV2aWNla2V5X2N1cnZlMjU1MTn5E3s8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6c2V0OjpCVHJlZVNldDxUPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxl +Y3Q6OkZyb21JdGVyYXRvcjxUPj46OmZyb21faXRlcjo6aDBhNWQ4ZDM1MTYxNWQ4ZGH6E3s8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0OjpCVHJlZVNldDxUPiBhcyBjb3JlOjppdGVyOjp0 +cmFpdHM6OmNvbGxlY3Q6OkZyb21JdGVyYXRvcjxUPj46OmZyb21faXRlcjo6aDRhOGZhM2M3MDcz +NjMwNDn7E1c8c2VyZGU6OmRlOjppbXBsczo6U3RyaW5nVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZp +c2l0b3I+Ojp2aXNpdF9ieXRlczo6aGRiZDM3YjcxMDMxMzJkMzX8E248cnVtYV9ldmVudHM6Omtl +eTo6dmVyaWZpY2F0aW9uOjpNZXNzYWdlQXV0aGVudGljYXRpb25Db2RlIGFzIGNvcmU6OmNvbnZl +cnQ6OkZyb208VD4+Ojpmcm9tOjpoYjdiNDhhYzBlMDg1YWUwMP0TdDxydW1hX2NvbW1vbjo6aWRl +bnRpZmllcnM6OmNyeXB0b19hbGdvcml0aG1zOjpEZXZpY2VLZXlBbGdvcml0aG0gYXMgY29yZTo6 +Y29udmVydDo6RnJvbTxUPj46OmZyb206OmhlODRhNzFmNDI3YzEyYzAz/hNWPHJ1bWFfY29tbW9u +OjplbmNyeXB0aW9uOjpLZXlVc2FnZSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6 +aGNlNDlhYzYzYjNiOGM3ZDL/E2w8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVx +dWVzdHM6OlJlcXVlc3RTdGF0ZTxTPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDA5 +NDY1YmU5OWVkZjQ0ZjeAFNYBPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6 +Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjprZXk6OnZl +cmlmaWNhdGlvbjo6c3RhcnQ6Ol9DdXN0b21Db250ZW50Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRW +aXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2J5dGVzOjpoNmY4YjhmYjM5OTMy +ZmNjMYEUR3N0ZDo6aW86OmltcGxzOjo8aW1wbCBzdGQ6OmlvOjpSZWFkIGZvciAmW3U4XT46OnJl +YWQ6OmhkNzEwZGJhNzU1Y2MzMjMxghRyPG1hdHJpeF9zZGtfY29tbW9uOjpqc190cmFjaW5nOjpG +aW5kTWVzc2FnZVZpc2l0b3IgYXMgdHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ+OjpyZWNvcmRf +ZGVidWc6OmgxZGNmZTlkZjk2Mjc2OTI0gxRJPGJhc2U2NDo6ZGVjb2RlOjpEZWNvZGVFcnJvciBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDUwZmFlNTg0MmFlOTJkOYQUSzxiYXNlNjQ6OmRl +Y29kZTo6RGVjb2RlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQ1MGZhZTU4NDJh +ZTkyZDkuMYUUSzxiYXNlNjQ6OmRlY29kZTo6RGVjb2RlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aGQ1MGZhZTU4NDJhZTkyZDkuMoYUVzxzZXJkZTo6ZGU6OmltcGxzOjpTdHJpbmdW +aXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2J5dGVzOjpoYjc1OGE0ZDlkNjVk +NjhjZIcUSTxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3IgYXMgc2VyZGU6OmRlOjpFcnJvcj46OmN1 +c3RvbTo6aDgyOTUwZjM3YzQzNzc3ZTmIFEpjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10 +OjpMb3dlckhleCBmb3IgaTY0Pjo6Zm10OjpoOWJlMTU0OTNjZTNlNzhhM4kUSmNvcmU6OmZtdDo6 +bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OlVwcGVySGV4IGZvciBpNjQ+OjpmbXQ6OmhmYTgyZjlhODQ5 +NGNjOGIxihSlAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+OjpwdXNoOjpoMTZjZjZkN2MxMWRj +NjU1NIsUZjxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25TdG9y +ZSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDM0YWU1OGFhOGVlZGU1Y2MuMYwUbm1h +dHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0 +eTo6Y2FuX3NpZ25fZGV2aWNlczo6e3tjbG9zdXJlfX06Omg0MjJmZGJmNGZhZmM5OTQzjRRsbWF0 +cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5 +OjpjYW5fc2lnbl91c2Vyczo6e3tjbG9zdXJlfX06Omg4ZWQ3NmM3NDUzODcxYzczjhRsbWF0cml4 +X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5Ojpo +YXNfbWFzdGVyX2tleTo6e3tjbG9zdXJlfX06Omg4YTlmNTZkYTA4YmM4ODNjjxRubWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5OjpoYXNf +bWFzdGVyX2tleTo6e3tjbG9zdXJlfX06Omg4YTlmNTZkYTA4YmM4ODNjLjGQFGtjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6 +OlZlcmlmaWNhdGlvblJlcXVlc3Q+OjpoNjExM2M1OGFjN2JlNTkzMpEUfTxmdXR1cmVzX3V0aWw6 +OnN0cmVhbTo6ZnV0dXJlc191bm9yZGVyZWQ6OnRhc2s6OlRhc2s8RnV0PiBhcyBmdXR1cmVzX3Rh +c2s6OmFyY193YWtlOjpBcmNXYWtlPjo6d2FrZV9ieV9yZWY6Omg3MDU4Yzk2ZGU3YzkzMzE4khR9 +PGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6dGFzazo6VGFzazxGdXQ+ +IGFzIGZ1dHVyZXNfdGFzazo6YXJjX3dha2U6OkFyY1dha2U+Ojp3YWtlX2J5X3JlZjo6aDhhNjcw +NDNlZTYwNDg3MTaTFH08ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfdW5vcmRlcmVkOjp0 +YXNrOjpUYXNrPEZ1dD4gYXMgZnV0dXJlc190YXNrOjphcmNfd2FrZTo6QXJjV2FrZT46Ondha2Vf +YnlfcmVmOjpoOTE5NTc5MThiNzVmNjhiNZQUfTxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJl +c191bm9yZGVyZWQ6OnRhc2s6OlRhc2s8RnV0PiBhcyBmdXR1cmVzX3Rhc2s6OmFyY193YWtlOjpB +cmNXYWtlPjo6d2FrZV9ieV9yZWY6OmhkOWU5Y2RhNDNkM2JmYzRmlRR9PGZ1dHVyZXNfdXRpbDo6 +c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6dGFzazo6VGFzazxGdXQ+IGFzIGZ1dHVyZXNfdGFz +azo6YXJjX3dha2U6OkFyY1dha2U+Ojp3YWtlX2J5X3JlZjo6aGUzNzE5NWFkYmJlNjEzM2WWFEA8 +RCBhcyBkaWdlc3Q6OmRpZ2VzdDo6RGlnZXN0Pjo6ZmluYWxpemVfcmVzZXQ6OmhlMmE3YWI0ZDIy +MzE4YTIwlxQOc2FzX2NhbmNlbEluZm+YFA1xcl9jYW5jZWxJbmZvmRQedmVyaWZpY2F0aW9ucmVx +dWVzdF9jYW5jZWxJbmZvmhRGPHJtcF9zZXJkZTo6ZW5jb2RlOjpFcnJvciBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoNWEzMDVmYjVlMTczYjkyY5sURW1hdHJpeF9zZGtfc3RvcmVfZW5jcnlw +dGlvbjo6U3RvcmVDaXBoZXI6Omhhc2hfa2V5OjpoNDc0ZDU0MTA3MjI0NzQ4YZwUSmFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjppbnNlcnQ6Omg4NTEyMmZm +MTAyODdjZTQwnRRYPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3Jl +OjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMTgwMWM3YjVjNGU0NzIzMJ4URm1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6Y2FjaGVzOjpTZXNzaW9uU3RvcmU6OmdldDo6aGJiNjg1MzBmNTdmNDMx +MjifFLgBcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6Xzo6PGltcGwgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0 +YXJ0OjpUb0RldmljZUtleVZlcmlmaWNhdGlvblN0YXJ0RXZlbnRDb250ZW50Pjo6c2VyaWFsaXpl +OjpoNjMxYjQ3OTk4MDkxY2M5N6AUnwFydW1hX2V2ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpfOjo8 +aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpzZWNyZXQ6OnJlcXVl +c3Q6OlRvRGV2aWNlU2VjcmV0UmVxdWVzdEV2ZW50Q29udGVudD46OnNlcmlhbGl6ZTo6aDUyZTZm +N2RmZGFkZWM5ZTKhFEk8c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yIGFzIHNlcmRlOjpkZTo6RXJy +b3I+OjpjdXN0b206OmgwYTY5MjAwYjk4ZDRmNzdlohRJPHNlcmRlX2pzb246OmVycm9yOjpFcnJv +ciBhcyBzZXJkZTo6ZGU6OkVycm9yPjo6Y3VzdG9tOjpoZTQ2ODBjODI1NjJjMWY4M6MUoQE8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X291dGJvdW5kX2dy +b3VwX3Nlc3Npb246Ont7Y2xvc3VyZX19OjpoMWZmMjE2OTNmZTkwMDlmNKQUTjxieXRlczo6Ynl0 +ZXM6OkJ5dGVzIGFzIGJ5dGVzOjpidWY6OmJ1Zl9pbXBsOjpCdWY+OjphZHZhbmNlOjpoMThjZTg4 +MTQxNGUzMmZkMaUUZjxzZXJkZTo6ZGU6OnZhbHVlOjpTZXFEZXNlcmlhbGl6ZXI8SSxFPiBhcyBz +ZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoMDY1OWYzZDgwYTA2Y2U0 +YqYUPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpmbGF0X21hcF90YWtlX2VudHJ5OjpoN2VkMjczNjlh +NDAyNTlmNKcUSmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6Okxvd2VySGV4IGZvciBp +MzI+OjpmbXQ6Omg3ZDg4ZmZiMTIwZmJmMTllqBRJY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6 +OmZtdDo6VXBwZXJIZXggZm9yIGk4Pjo6Zm10OjpoYzY5YmY1NjAyZjNjYTZkNakUSWNvcmU6OmZt +dDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6Okxvd2VySGV4IGZvciBpOD46OmZtdDo6aDYyNzExMzdh +Yzc5ZTM2YWWqFEpjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpVcHBlckhleCBmb3Ig +aTMyPjo6Zm10OjpoMGZmMDViZWZhYWYyMWUwNqsUDV9fZmxvYXR1bnRpZGasFFdjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6Ok1lc3NhZ2VUeXBlPjo6 +aGIyYzE4NWVlNWI2YTExYzkuMTCtFLYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8bWF0cml4 +X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpSb29tS2V5V2l0 +aGhlbGRDb250ZW50Pj46OmhjZTIyYjM3ZmRkNjVkYzQwLjGuFPECY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6OnNlc3Npb25zOjpTZXNz +aW9uTWFuYWdlcjo6Z2V0X21pc3Npbmdfc2Vzc2lvbnM8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1h +cDo6TWFwPGNvcmU6OnNsaWNlOjppdGVyOjpJdGVyPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6 +dXNlcl9pZDo6T3duZWRVc2VySWQ+LDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6 +Ok93bmVkVXNlcklkIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHJ1bWFfY29tbW9uOjppZGVudGlm +aWVyczo6dXNlcl9pZDo6VXNlcklkPj46OmFzX3JlZj4+Ojp7e2Nsb3N1cmV9fT46Omg3MzVmY2Ey +M2YxMjFmM2RirxQVX193YmdfYmFja3Vwa2V5c19mcmVlsBSIAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9T +dG9yZTo6b3Blbl93aXRoX3Bhc3NwaHJhc2U6Ont7Y2xvc3VyZX19Pjo6aGVmMGU3ZDFmMmQ4NWVi +NWWxFGw8ZnV0dXJlc191dGlsOjpzdHJlYW06OnN0cmVhbTo6bWFwOjpNYXA8U3QsRj4gYXMgZnV0 +dXJlc19jb3JlOjpzdHJlYW06OlN0cmVhbT46OnBvbGxfbmV4dDo6aGFjZDYyMTUyZjhjMThhYzKy +FGM8d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlIGFzIGdsb29fdXRpbHM6OmZvcm1hdDo6anNvbjo6SnNW +YWx1ZVNlcmRlRXh0Pjo6aW50b19zZXJkZTo6aDNmMmYxYWYyMGRjN2YzOWSzFG5tYXRyaXhfc2Rr +X2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9uQ2Fj +aGU6Om1hcmtfYXNfYmVpbmdfc2hhcmVkOjpoYjY3NzcwNTU1ZmU3ZTRjZrQUXG1hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpWZXJpZmljYXRpb25SZXF1ZXN0Ojp0aW1l +ZF9vdXQ6OmgyMDllODlmMTAzZWJhOTNitRRbbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlv +bjo6cmVxdWVzdHM6OklubmVyUmVxdWVzdDo6b3RoZXJfZGV2aWNlX2lkOjpoYzllMDZkZTI5NTY3 +NWUyMrYUVm1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25p +bmdJZGVudGl0eTo6ZW1wdHk6OmhhYzAwOGZhY2JhYmFiYjI1txRbbWF0cml4X3Nka19jcnlwdG86 +OmJhY2t1cHM6OmtleXM6OmJhY2t1cDo6TWVnb2xtVjFCYWNrdXBLZXk6OnNldF92ZXJzaW9uOjpo +NjFkNWM0MWNiYzA0ZmQ5Y7gUPm1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Q2hhbmdlczo6aXNf +ZW1wdHk6Omg1ODBhZjE5YWE3ZTA4NDVjuRRSPHNlcmRlOjpfX3ByaXZhdGU6OnNlcjo6VW5zdXBw +b3J0ZWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYTVhNzhlYzMxZjM0MDFlYroUSTxj +b3JlOjpvcHRpb246Ok9wdGlvbjxUPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGIw +Njk3NzM2NGE5M2I1M2O7FGtjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpP +cHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudD4+OjpoZGY3NzFk +YWE3ZWM4ZTQ4NbwUM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoOTA4MTIyMGVl +ZDQ4OGZkYb0UXmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxbbWF0cml4X3Nka19jcnlwdG86Om9s +bTo6c2Vzc2lvbjo6UGlja2xlZFNlc3Npb25dPjo6aDU4MWY4YzRhYjBkNmVkMWS+FFE8aGFzaGJy +b3duOjpyYXc6OlJhd1RhYmxlPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6 +aDAxNzIyYjYwOGJmZWVkNzi/FGRjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6 +OnJvb206OmVuY3J5cHRlZDo6Um9vbUVuY3J5cHRlZEV2ZW50Q29udGVudD46OmhiZTllODY1NWFi +YmYyYmNhwBR0PHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6Y3J5cHRvX2FsZ29yaXRobXM6OkRl +dmljZUtleUFsZ29yaXRobSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDUyNTY1 +NzFiZGI3MDM3MjjBFN0CY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0 +dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6 +T2xtTWFjaGluZTo6Z2V0X2RldmljZTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNo +aW5lOjpPbG1NYWNoaW5lOjpnZXRfZGV2aWNlOjp7e2Nsb3N1cmV9fSxjb3JlOjpvcHRpb246Ok9w +dGlvbjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpkZXZpY2U6OkRldmljZT4+Ojp7e2Nsb3N1cmV9 +fT4+OjpoNDFiNzgyYzg5MGU0NjAxOMIU3AFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjpzcGxpdF9sZWFmX2RhdGE6 +OmgyNDI4OGZhMWRkOGFiMDFlwxRKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJl +ZU1hcDxLLFYsQT46Omluc2VydDo6aGIwM2MwNmU4ODNhZjQ1ODjEFMABbWF0cml4X3Nka19jcnlw +dG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3JlcXVlc3Q6Ol86OjxpbXBsIHNlcmRlOjpzZXI6 +OlNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5 +X3JlcXVlc3Q6OlJlcXVlc3RlZEtleUluZm9IZWxwZXI+OjpzZXJpYWxpemU6OmhhZDQwZWU1YjUx +MGMyZjNixRQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwYmJlMDVhNmM1ZWIyMDBh +xhQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhZTQwM2RlOWQ3ODI1YTI0xxRGc3Rk +Ojpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpFbnRyeTxLLFY+Ojpvcl9kZWZhdWx0OjpoNzRhZTcz +ZGFkYTRlZWY1N8gUYzx2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OlJh +dGNoZXRDb3VudCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTI0MWZmM2M1MDJiZmI3ZskU +PHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoZTMxMjZjNmE3ZmUx +ZmY5M8oUWDxhbGxvYzo6Ym94ZWQ6OkJveDxbdTg7IE5dPiBhcyBtYXRyaXhfcGlja2xlOjpkZWNv +ZGU6OkRlY29kZT46OmRlY29kZTo6aDljYTFmZGZjZTQ3OTA0YzbLFEZ4MjU1MTlfZGFsZWs6Ongy +NTUxOTo6U3RhdGljU2VjcmV0OjpyYW5kb21fZnJvbV9ybmc6Omg2MWQxMjkzNjRmMTc5MmYzzBSt +AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6Omg2OThhMzRmY2MyM2Fm +OGU1zRTcAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpLVj46OnNwbGl0X2xlYWZfZGF0YTo6aDM2Y2EwYzkwNGU2ZjlhNTXO +FEk8c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yIGFzIHNlcmRlOjpkZTo6RXJyb3I+OjpjdXN0b206 +OmhmZWMyOWNmOTE5MmRlNDcxzxStAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9o +YW5kbGU6OmhiM2JjODNlMjg1MzUzY2Y20BQ6Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdUdXBs +ZTo6ZmluaXNoOjpoNTJmNmYyMDIyN2U2NTY1ZtEUggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDc3N2I2MjI0NTI4 +MDZlYTTSFFJtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlQ2FjaGVHdWFyZDo6YWNjb3Vu +dDo6e3tjbG9zdXJlfX06OmhmMmQwMDdjMjdiYzYwOWJk0xSqAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6 +Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpoYW5kbGVfc2VjcmV0X3JlcXVlc3Q6 +Ont7Y2xvc3VyZX19Pj4+OjpoMzg1ZTZjNWE3YzZiZjM2Mi4z1BRMYWxsb2M6OmNvbGxlY3Rpb25z +OjpiaW5hcnlfaGVhcDo6QmluYXJ5SGVhcDxULEE+OjpzaWZ0X3VwOjpoYzk4NzJlZTZlODcxMWU3 +M9UUTGFsbG9jOjpjb2xsZWN0aW9uczo6YmluYXJ5X2hlYXA6OkJpbmFyeUhlYXA8VCxBPjo6c2lm +dF91cDo6aGM2MGI4OTIyYTA2MTM4MmHWFBxfX3diZ19iYXNlbWlncmF0aW9uZGF0YV9mcmVl1xRj +PCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2Vy +aWFsaXplcj46OnNlcmlhbGl6ZV9tYXA6Omg2OTUxZTI2Yjc1OWQwNDBl2BQwPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmgwMzNkNGQyZjNiZWVhMDdh2RQwPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6Omg0ZGE4ZWQzMmU1OGM0NmMw2hQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg2ZTZiZGEzODQyMDA2YjNl2xQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg3MDIwYmE5YWNmMGU1OTRi3BQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3ODI0 +Mjk1NTZiN2RlNGM03RQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ODUxMjE3ZGI0 +Nzg3NDdl3hQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5NWY4Nzc0NjAxOWY3YTY5 +3xQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5YzkwNzUzMzdhMmNjN2Jj4BQwPCZU +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhM2JlMmI0YTcxZmM0ZTcy4RQwPCZUIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhOGM3MTRlYTFlZjg4NWU54hQwPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmhhZmQwZjFmYjk2ZjA4NzE24xQwPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6OmhiMjg5OTM1NTBjNjczNTE45BQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmhlNTU3NjUyNTRlM2IyNmFi5RQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omhm +NzExOTgwNmJhYjA5OTI15hRjPCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4g +YXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zZXE6Omg5N2YxNzhjOGMyNTky +ZDg15xSYAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +bWVtb3J5c3RvcmU6Ok1lbW9yeVN0b3JlPj46OmhhZDdkN2IxYTU2MjJjOWU36BRlPCZtdXQgc2Vy +ZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplcj46 +OnNlcmlhbGl6ZV9tYXA6Omg2OTUxZTI2Yjc1OWQwNDBlLjHpFGU8Jm11dCBzZXJkZV9qc29uOjpz +ZXI6OlNlcmlhbGl6ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXpl +X21hcDo6aDY5NTFlMjZiNzU5ZDA0MGUuMuoUezxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpz +ZXQ6OkJUcmVlU2V0PFQ+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJh +dG9yPFQ+Pjo6ZnJvbV9pdGVyOjpoMDEzNGZhMGZhMjIxMTUzNusUezxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PFQ+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVj +dDo6RnJvbUl0ZXJhdG9yPFQ+Pjo6ZnJvbV9pdGVyOjpoMTZhMzUxMTIwZWZlYjdkZOwUezxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PFQ+IGFzIGNvcmU6Oml0ZXI6OnRy +YWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJhdG9yPFQ+Pjo6ZnJvbV9pdGVyOjpoMWRhYzg5NTA3ZGUw +NDgzZu0UezxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PFQ+IGFzIGNv +cmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJhdG9yPFQ+Pjo6ZnJvbV9pdGVyOjpo +ODk2NjliOGUyYjZiZTAyZO4UezxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6OkJUcmVl +U2V0PFQ+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJhdG9yPFQ+Pjo6 +ZnJvbV9pdGVyOjpoOWFkZDU5MGQzMDBiMDRkOe8UjgF3YXNtX2JpbmRnZW46OmNvbnZlcnQ6Omlt +cGxzOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6UmV0dXJuV2FzbUFiaSBm +b3IgY29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPj46OnJldHVybl9hYmk6OmgwNjM0NTJmMmEzMWQ5 +NTkz8BRmPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjp1c2VyOjpPd25Vc2VySWRlbnRp +dHkgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhmOGQyNmE0NjlhNjJlYmZj8RRlPCZt +dXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFs +aXplcj46OnNlcmlhbGl6ZV9tYXA6Omg2OTUxZTI2Yjc1OWQwNDBlLjPyFGU8Jm11dCBzZXJkZV9q +c29uOjpzZXI6OlNlcmlhbGl6ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2Vy +aWFsaXplX21hcDo6aDY5NTFlMjZiNzU5ZDA0MGUuNPMUYzwmbXV0IHNlcmRlX2pzb246OnNlcjo6 +U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfbWFw +OjpoZmVlZDFlNmFmNTk0ZGUwMvQUYzwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxX +LEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc2VxOjpoMWY5MWQ4N2Jm +ZTIyODVlN/UUP3NlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46OnBhcnNlX2lkZW50Ojpo +YTEyYmVhNDVkYmM1MTczY/YUaWluZGV4ZWRfZGJfZnV0dXJlczo6aWRiX2RhdGFiYXNlOjppZGJf +dmVyc2lvbl9jaGFuZ2VfZXZlbnQ6OklkYlZlcnNpb25DaGFuZ2VFdmVudDo6bmV3OjpoNjZhZmVm +NmNlOGJjYzNmNfcUYzwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNl +cmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfbWFwOjpoY2NmZThkMDE5ODgyNDZmOPgU +YzwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZXI+OjpzZXJpYWxpemVfc2VxOjpoMDUwMzFjMGI5ZjNlM2Y4MPkUZTwmbXV0IHNlcmRl +X2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+Ojpz +ZXJpYWxpemVfbWFwOjpoY2NmZThkMDE5ODgyNDZmOC4x+hRCaGFzaGJyb3duOjpyYXc6OlJhd1Rh +YmxlSW5uZXI6OmZpbmRfaW5zZXJ0X3Nsb3Q6Omg2ZjE4NjBlZGU1ZGVjMmIy+xRebWF0cml4X3Nk +a19jcnlwdG86OmJhY2t1cHM6OmtleXM6OmJhY2t1cDo6TWVnb2xtVjFCYWNrdXBLZXk6OmJhY2t1 +cF92ZXJzaW9uOjpoM2UzYzdmNGQxNDVhYjNjOPwUfDx0cmFjaW5nX3N1YnNjcmliZXI6OmZtdDo6 +Zm10X2xheWVyOjpMYXllcjxTLE4sRSxXPiBhcyB0cmFjaW5nX3N1YnNjcmliZXI6OmxheWVyOjpM +YXllcjxTPj46OmRvd25jYXN0X3Jhdzo6aDZmNzk4YTgxYjU1YTEzMTj9FGY8c2VyZGU6OmRlOjp2 +YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0 +X2VsZW1lbnRfc2VlZDo6aDJlNTU4MDY4Y2UyYmQ4ODX+FGM8Jm11dCBzZXJkZV9qc29uOjpzZXI6 +OlNlcmlhbGl6ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX21h +cDo6aGMxMzE2Y2NhYmNkMDY0NjP/FExjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpDb21wcmVz +c2VkRWR3YXJkc1k6OmRlY29tcHJlc3M6Omg1ZmFhNjk5MWYzZTRjMjJigBWCAmFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0 +LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0 +OjpoYTYyNDZjM2Q3Yzg3MmE0N4EVZDxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpT +dGF0aWNBY2NvdW50RGF0YSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDFhZGQ0YzUz +ODQ1MjliNWaCFWc8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9u +bHlEZXZpY2UgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhhMDYyOWNjNjM4MmU1N2Nj +gxU8PFQgYXMgYWxsb2M6OnN0cmluZzo6VG9TdHJpbmc+Ojp0b19zdHJpbmc6OmgzMjY5N2FlNzky +Y2VjMWNmhBWJAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRl +bnRpdGllczo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjpjaGVja19wcml2YXRlX2lkZW50aXR5 +Ojp7e2Nsb3N1cmV9fT46OmgyMzRlNzA0YTk1Y2JjZjY1hRU+PFQgYXMgYWxsb2M6OnN0cmluZzo6 +VG9TdHJpbmc+Ojp0b19zdHJpbmc6OmgzMjY5N2FlNzkyY2VjMWNmLjGGFT48VCBhcyBhbGxvYzo6 +c3RyaW5nOjpUb1N0cmluZz46OnRvX3N0cmluZzo6aDMyNjk3YWU3OTJjZWMxY2YuMocVPjxUIGFz +IGFsbG9jOjpzdHJpbmc6OlRvU3RyaW5nPjo6dG9fc3RyaW5nOjpoMzI2OTdhZTc5MmNlYzFjZi4z +iBU8PFQgYXMgYWxsb2M6OnN0cmluZzo6VG9TdHJpbmc+Ojp0b19zdHJpbmc6OmgzNDgzODM0N2Zm +MTU3MjlkiRU8PFQgYXMgYWxsb2M6OnN0cmluZzo6VG9TdHJpbmc+Ojp0b19zdHJpbmc6Omg3MDhi +NWE4MTAyZTcwNDNmihUXb2xtbWFjaGluZV90cmFja2VkVXNlcnOLFeMBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6YWJvcnRhYmxlOjpBYm9ydGFibGU8ZnV0dXJlc191dGls +OjpmdXR1cmU6OmZ1dHVyZTo6cmVtb3RlX2hhbmRsZTo6UmVtb3RlPG1hdHJpeF9zZGtfY3J5cHRv +OjppZGVudGl0aWVzOjptYW5hZ2VyOjpJZGVudGl0eU1hbmFnZXI6OnVwZGF0ZV9vcl9jcmVhdGVf +ZGV2aWNlOjp7e2Nsb3N1cmV9fT4+Pjo6aDhhNmMxMTE3ZjZkY2FlMmaMFTNhbGxvYzo6c3luYzo6 +QXJjPFQsQT46OmRyb3Bfc2xvdzo6aDc0ODFhNTM1NmViYTI4NTONFTNhbGxvYzo6c3luYzo6QXJj +PFQsQT46OmRyb3Bfc2xvdzo6aDkwMTQ2ZDk0ZDEwODQ3ODKOFX1jb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6bWlncmF0aW9uczo6b3Bl +bl9hbmRfdXBncmFkZV9kYjo6e3tjbG9zdXJlfX0+OjpoMzk3ZGU2ODFhYTZhNDkyZo8ViwFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFn +ZXI6OklkZW50aXR5TWFuYWdlcjo6Y2hlY2tfcHJpdmF0ZV9pZGVudGl0eTo6e3tjbG9zdXJlfX0+ +OjpoMjM0ZTcwNGE5NWNiY2Y2NS4xkBVEPHZvZG96ZW1hYzo6UGlja2xlRXJyb3IgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDE4ZjkwMjUzNDg5NTdlN2WRFVg8YWxsb2M6OnZlYzo6aW50b19p +dGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg0ZGM3 +ZTA2NjU5NDljZjRhkhUucm1wX3NlcmRlOjpkZWNvZGU6OnJlYWRfdTMyOjpoZmY2MDU3ZmRmYjlh +ZTFhZpMVpQFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVzaDo6aDE4NzM3ZTQxZTA2YzQ4 +M2KUFaUBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OnB1c2g6OmgyZTZmZTlkZTJmNzAxOGJl +lRWlAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+OjpwdXNoOjpoYTljNzg5NjMzZTlkYzZiM5YV +ajxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnJvb21faWQ6Ok93bmVkUm9vbUlkIGFzIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aDExNWRmNTVmYjJjM2JjMjCXFTNhbGxv +Yzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aDUwMzhmYzBkMmRiZDEyODWYFVltYXRyaXhf +c2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6b2xtX3YxOjpBbnlEZWNyeXB0ZWRPbG1FdmVudDo6 +c2VuZGVyOjpoNjg2Mzk0N2FkYjJhZGY0MpkVXG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZl +bnRzOjpvbG1fdjE6OkFueURlY3J5cHRlZE9sbUV2ZW50OjpyZWNpcGllbnQ6Omg4OWU2NGY4YzFl +ZDQ4NjAymhVGPHZvZG96ZW1hYzo6UGlja2xlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDE4ZjkwMjUzNDg5NTdlN2UuMZsVPDxUIGFzIGFsbG9jOjpzdHJpbmc6OlRvU3RyaW5nPjo6 +dG9fc3RyaW5nOjpoMWFhOWZkMWE2NGJkYjU2N5wVPDxUIGFzIGFsbG9jOjpzdHJpbmc6OlRvU3Ry +aW5nPjo6dG9fc3RyaW5nOjpoNDI0MmIzZTMwZjFhMzY4Y50Vdjx0cmFjaW5nX3N1YnNjcmliZXI6 +OnJlZ2lzdHJ5OjpzaGFyZGVkOjpSZWdpc3RyeSBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6 +OlN1YnNjcmliZXI+OjpuZXdfc3Bhbjo6aGYwN2Q0MzM3ZDQ2NWY2NTeeFa0BYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpMZWFmPjo6cHVzaF93aXRoX2hhbmRsZTo6aGRkMjZlZmNjMDkxNmYxODGfFUY8YWxsb2M6 +OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgxZDc2YWYzYzcy +ZjEwNzlloBVPPHNlcmRlX2pzb246OmVycm9yOjpFcnJvciBhcyBzZXJkZTo6ZGU6OkVycm9yPjo6 +aW52YWxpZF90eXBlOjpoNTc3NmRjMzU3NzVjMWE4ZaEVUDxzZXJkZV9qc29uOjplcnJvcjo6RXJy +b3IgYXMgc2VyZGU6OmRlOjpFcnJvcj46OmludmFsaWRfdmFsdWU6OmgzMWM1ZTMyOWNmNTE0ZWFj +ohWlAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+OjpwdXNoOjpoMzhhYjUzYjliZGJhZGRiNqMV +ZG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3luY2VkS2V5UXVlcnlNYW5hZ2VyOjp1c2Vyc19m +b3Jfa2V5X3F1ZXJ5Ojp7e2Nsb3N1cmV9fTo6aDk4YTg1MDVhMjM3YjBkNmSkFVZmdXR1cmVzX3V0 +aWw6OnN0cmVhbTo6ZnV0dXJlc191bm9yZGVyZWQ6OkZ1dHVyZXNVbm9yZGVyZWQ8RnV0Pjo6bmV3 +OjpoNzBhZTNmM2JhZjVlYzg5M6UVMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWQ4 +YWVmN2I3YTkyMGZlYqYVXzxoYXNoYnJvd246OnJhdzo6UmF3SXRlcjxUPiBhcyBjb3JlOjppdGVy +Ojp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhhZTM4MTExMWMxNjU0Y2JmpxVf +PGhhc2hicm93bjo6cmF3OjpSYXdJdGVyPFQ+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0 +b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDcxM2FjYmU1YzRkNjczM2KoFVE8aGFzaGJyb3duOjpyYXc6 +OlJhd1RhYmxlPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDM5MzMzZjgy +OTYwNzUyNmWpFVE8aGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT4gYXMgY29yZTo6b3BzOjpk +cm9wOjpEcm9wPjo6ZHJvcDo6aDNlM2NlZWI1NjIyMjk1NjWqFV88aGFzaGJyb3duOjpyYXc6OlJh +d0l0ZXI8VD4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0 +OjpoMjAzNTFiN2E0MzBkMjY2MasVUTxoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPiBhcyBj +b3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNDUzMjA4YWM0Y2U2NGZiNawVUTxoYXNoYnJv +d246OnJhdzo6UmF3VGFibGU8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpo +YTk2ZTVlNTMyODJmOThhN60VXzxoYXNoYnJvd246OnJhdzo6UmF3SXRlcjxUPiBhcyBjb3JlOjpp +dGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg4MGJmODljYzAyN2U1M2Vm +rhVRPGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6OmhiMTE2YTVjZGM2MzkwN2U4rxVRPGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxU +LEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhkZmM0ZjA4M2YzNGY0YTY4sBVs +PHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZXZlbnRfaWQ6Ok93bmVkRXZlbnRJZCBhcyBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmgwYWZiOTNkYWNmYzY1Zjk0sRVsPHJ1 +bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZXZlbnRfaWQ6Ok93bmVkRXZlbnRJZCBhcyBzZXJkZTo6 +ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6Omg0OWZkMjcyNTQwZmZkZjM4shXwATxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6Ol86OjxpbXBs +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZl +bnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhlbGRIZWxwZXI+OjpkZXNlcmlhbGl6ZTo6X19G +aWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoODcwYjQ1MGZi +YzIzYzU1MrMV0QI8PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6 +OlRvRGV2aWNlRXZlbnQ8Qz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXpl +OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciA8bWF0cml4X3Nka19jcnlwdG86 +OnR5cGVzOjpldmVudHM6OnRvX2RldmljZTo6VG9EZXZpY2VFdmVudDxDPiBhcyBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OkhlbHBlcjxDPj46OmRlc2VyaWFsaXplOjpfX0Zp +ZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhmMjk2ZGEyYjkz +MTFlMDg0tBVqPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6cm9vbV9pZDo6T3duZWRSb29tSWQg +YXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoNmQ3ODZlMzdhMjJiOTRm +ZrUVajxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnJvb21faWQ6Ok93bmVkUm9vbUlkIGFzIHNl +cmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aDdjZmI5ODdmMDQzZTA4OTW2FWo8 +cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCBhcyBzZXJkZTo6 +ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmhjYmViMGVmZWFmYWZlODkxtxVmPHNlcmRl +OjpkZTo6dmFsdWU6OlNlcURlc2VyaWFsaXplcjxJLEU+IGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNz +Pjo6bmV4dF9lbGVtZW50X3NlZWQ6OmgxZjEzMDNmNzAwYTg3YzA0uBXnATxtYXRyaXhfc2RrX2Ny +eXB0bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpzZWNyZXRfc2Vu +ZDo6U2VjcmV0U2VuZENvbnRlbnQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2Vy +ZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoMDEyMDQxNDA4ZDYzYzk4ZLkVogE8aW5kZXhl +ZF9kYl9mdXR1cmVzOjpyZXF1ZXN0OjpmdXR1cmVzOjpjdXJzb3I6OmlkYl9jdXJzb3JfYWR2YW5j +ZW1lbnRfZnV0dXJlOjpJZGJDdXJzb3JBZHZhbmNlbWVudEZ1dHVyZSBhcyBjb3JlOjpmdXR1cmU6 +OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aDMwOWRlY2ViODczMThjMTK6FaUBYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpJbnRlcm5hbD46OnB1c2g6Omg5OTgyZWM4N2QyNWJkNjkzuxVqPHJ1bWFfY29tbW9uOjpp +ZGVudGlmaWVyczo6cm9vbV9pZDo6T3duZWRSb29tSWQgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZT46OmRlc2VyaWFsaXplOjpoNjViZWM0Mjc0YWQ4YTE1MLwVX21hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6Y3Jvc3Nfc2lnbmluZzo6bWFzdGVyOjpNYXN0ZXJQdWJrZXk6OnZlcmlmeV9zdWJrZXk6 +OmgzYzI1ODExOWY2MGE2MGZmvRVuPHRyYWNpbmdfc3Vic2NyaWJlcjo6Zm10Ojpmb3JtYXQ6OkRl +ZmF1bHRWaXNpdG9yIGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZpc2l0Pjo6cmVjb3JkX3N0cjo6 +aDM0NmY0NjFiMDgxYjUxNmK+FTxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9l +bnRyeTo6aGIzYTlkZmY5MmE0ZTE2Nze/FT92b2RvemVtYWM6Om9sbTo6c2hhcmVkX3NlY3JldDo6 +bWVyZ2Vfc2VjcmV0czo6aDEyZDZiODdjZDRkODI0NTLAFUE8dTMyIGFzIG1hdHJpeF9waWNrbGU6 +OmRlY29kZTo6RGVjb2RlPjo6ZGVjb2RlOjpoMTI1OTAxMjk1M2NiYjI0YcEVajxydW1hX2NvbW1v +bjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkIGFzIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemU+OjpkZXNlcmlhbGl6ZTo6aDZiNjA0NDljMWY1ZTlmYmTCFWw8cnVtYV9jb21tb246Omlk +ZW50aWZpZXJzOjpldmVudF9pZDo6T3duZWRFdmVudElkIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emU+OjpkZXNlcmlhbGl6ZTo6aDUzZDI3NGE2YWRmNzg0MzDDFdYBPHJ1bWFfZXZlbnRzOjpyb29t +OjptZXNzYWdlOjphdWRpbzo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVt +YV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OmF1ZGlvOjpBdWRpb01lc3NhZ2VFdmVudENvbnRlbnQ+ +OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlz +aXRfc3RyOjpoMTFlOGNiMDUxOGVlNzkyNsQVdDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpt +YXA6OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVy +YXRvcj46Om5leHQ6OmgzZjU3OGY2Zjk3ZjNkODFjxRU2c2VyZGVfanNvbjo6ZGU6OlBhcnNlck51 +bWJlcjo6dmlzaXQ6OmgzODgyMWJkZDA2ODc1N2IwxhVsPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBh +cyBjb3JlOjpvcHM6OmluZGV4OjpJbmRleDxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4+ +Pjo6aW5kZXg6Omg1M2JmNzgzZDUxNmZhYTYzxxWBATw8c2VyZGU6OmRlOjpXaXRoRGVjaW1hbFBv +aW50IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6TG9va0ZvckRlY2ltYWxQb2ludCBhcyBj +b3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoMWI2NDAwNDNiYTM3ZTMxZsgVRG1hdHJpeF9z +ZGtfY3J5cHRvOjpyZXF1ZXN0czo6VG9EZXZpY2VSZXF1ZXN0OjpuZXc6OmhjOTdlY2RiYTVkZTQ1 +ZDEyyRUvc2VyZGVfanNvbjo6c2VyOjp0b19zdHJpbmc6OmhkMTYwNjM3YzgwMTVhMDk0LjLKFV08 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aGVmZTFkNmIyMGFmYzUzMDDLFX08dHJhY2luZ19zdWJzY3JpYmVy +OjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJl +cjo6U3Vic2NyaWJlcj46Om1heF9sZXZlbF9oaW50OjpoZmNiYjU4MDEzYzJlNzVlZcwVM2FsbG9j +OjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoZWU5MWVhYjk4NzlmZjQ5Nc0VM2FsbG9jOjpz +eW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoOGRiYTFkZTZjZmE2NjFkMc4VWDxhbGxvYzo6dmVj +OjppbnRvX2l0ZXI6OkludG9JdGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJv +cDo6aDdmNDZhNGI3NDI4MTdhYzHPFQ9kZXZpY2VrZXlpZF9uZXfQFRJldmVudGlkX3NlcnZlck5h +bWXRFS1zZXJkZV9qc29uOjpzZXI6OnRvX3N0cmluZzo6aDkxN2M5Y2M4ZDU0NWViMjbSFXU8Y29y +ZTo6aXRlcjo6YWRhcHRlcnM6OmZpbHRlcl9tYXA6OkZpbHRlck1hcDxJLEY+IGFzIGNvcmU6Oml0 +ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGFjMjA2MWI5NDQ0ZTRiZWbT +FWU8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNlcmlhbGl6ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpT +ZXJpYWxpemVyPjo6c2VyaWFsaXplX21hcDo6aGZlZWQxZTZhZjU5NGRlMDIuMdQVQXNlcmRlX3dh +c21fYmluZGdlbjo6ZGU6OkRlc2VyaWFsaXplcjo6YXNfYnl0ZXM6OmhhNjE1ODJhYzg0YTU1MGRl +1RVdPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiNTM3YjE0NTBjNDk4ZDM51hVdPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmgzZWMxMDM4YzdkZDdiNGI01xVdPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4NDE5MGEwNDY2ZmQ0 +NzAw2BVdPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5NzM4ZGI3NjZjNjhhNzBi2RUzYWxsb2M6OnN5bmM6 +OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmhmZDAzOWQ2N2NhZjVkNzEy2hVIPGNvcmU6Om9wdGlvbjo6 +T3B0aW9uPFQ+IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6Omg2ODBiODM2OTk2NjhhZGIz +2xVjPCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMgc2VyZGU6OnNlcjo6 +U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zZXE6OmhhMTcyNjM4ZjhiYzg1NmZk3BVOdm9kb3plbWFj +Ojp0eXBlczo6Y3VydmUyNTUxOTo6Q3VydmUyNTUxOVNlY3JldEtleTo6dG9fYnl0ZXM6OmgzZmYw +NmI1YzQ0NzQyMzJk3RVedm9kb3plbWFjOjptZWdvbG06OmluYm91bmRfZ3JvdXBfc2Vzc2lvbjo6 +SW5ib3VuZEdyb3VwU2Vzc2lvbjo6ZmluZF9yYXRjaGV0OjpoNWVmZThmYzRmNDZiY2E3Od4VRTxz +aWduYXR1cmU6OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMGNiODEx +YWE5NzEzY2NkM98VOXNoYTI6OnNoYTUxMjo6c29mdDo6c2hhNTEyX3NjaGVkdWxlX3gyOjpoN2Jj +YzUxMDVhM2YxNDBkYuAVXTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFw +PEssVixBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYWE1MThiMjY2ZTBiOTg5MeEVR2Nv +cmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkJpbmFyeSBmb3IgaTg+OjpmbXQ6Omg4N2Y1 +YTcwYWI0NzI1NGZj4hVIY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6QmluYXJ5IGZv +ciBpMzI+OjpmbXQ6OmgzMDk1NDJhODM4YWY3OGFh4xWlAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJu +YWw+OjpwdXNoOjpoYjU4ZjhiYmQ4MWJmYmU4ZuQVTGFsbG9jOjpjb2xsZWN0aW9uczo6YmluYXJ5 +X2hlYXA6OkJpbmFyeUhlYXA8VCxBPjo6c2lmdF91cDo6aDBlZGMwY2E1OGY0NzIzMjnlFUxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJpbmFyeV9oZWFwOjpCaW5hcnlIZWFwPFQsQT46OnNpZnRfdXA6Omhm +YzFhNTQzOTZmZTY1ZmVi5hUlYWxsb2M6OmZtdDo6Zm9ybWF0OjpoYjkwMGYzMDg3Yjc3NmI5OOcV +XzxoYXNoYnJvd246OnJhdzo6UmF3SXRlcjxUPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJh +dG9yOjpJdGVyYXRvcj46Om5leHQ6Omg2MmUxY2VjYmRjNTk4MjJl6BVfPGhhc2hicm93bjo6cmF3 +OjpSYXdJdGVyPFQ+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6 +bmV4dDo6aDBhNzQ3NTIyZTdiM2MzMGLpFWY8cnVtYV9ldmVudHM6OmR1bW15OjpUb0RldmljZUR1 +bW15RXZlbnRDb250ZW50IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZT46OnNlcmlhbGl6ZTo6aDZm +ZDQwNTkzNGI0YzVjYmTqFTdoYXNoYnJvd246OnJhdzo6UmF3VGFibGVJbm5lcjo6ZXJhc2U6Omg1 +MTYyNWFhZjMwMzEyZDA26xUTc2hpZWxkc3RhdGVfbWVzc2FnZewVEWRldmljZWtleV91bmtub3du +7RUlbWF5YmVzaWduYXR1cmVfaW52YWxpZFNpZ25hdHVyZVNvdXJjZe4VwgJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpleHBvcnRfcm9vbV9rZXlz +Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19w +cm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmV4cG9y +dF9yb29tX2tleXM6Ont7Y2xvc3VyZX19LGFsbG9jOjpzdHJpbmc6OlN0cmluZz46Ont7Y2xvc3Vy +ZX19Pj46Omg2MjZlOWViOWM2NWI4MGE07xUnYWxsb2M6OmZtdDo6Zm9ybWF0OjpoYjkwMGYzMDg3 +Yjc3NmI5OC4x8BU8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OlNlc3Npb246OmVuY3J5cHQ6Omhk +NzMwYjMzZjk1YWFhYTU18RVmc2VyZGU6OnNlcjo6aW1wbHM6OjxpbXBsIHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZSBmb3IgY29yZTo6dGltZTo6RHVyYXRpb24+OjpzZXJpYWxpemU6OmhhYjY0NWQ4NTMz +OGY3Y2Qw8hUnYWxsb2M6OmZtdDo6Zm9ybWF0OjpoYjkwMGYzMDg3Yjc3NmI5OC4y8xUnYWxsb2M6 +OmZtdDo6Zm9ybWF0OjpoYjkwMGYzMDg3Yjc3NmI5OC4z9BVmPCZtdXQgc2VyZGVfanNvbjo6ZGU6 +OkRlc2VyaWFsaXplcjxSPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXpl +X3VuaXQ6OmgxNTI5OThjODc3N2EyNDhl9RUnYWxsb2M6OmZtdDo6Zm9ybWF0OjpoYjkwMGYzMDg3 +Yjc3NmI5OC409hVpPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6S2V5QWdyZWVtZW50 +UHJvdG9jb2wgYXMgY29yZTo6Y29udmVydDo6RnJvbTxUPj46OmZyb206Omg3YzgwN2UzNGJlYWY2 +ZjY49xVnPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6RXZlbnRFbmNyeXB0aW9uQWxnb3JpdGht +IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208VD4+Ojpmcm9tOjpoZjdjMGM2ZGNkNTYwODZiYfgVJ2Fs +bG9jOjpmbXQ6OmZvcm1hdDo6aGI5MDBmMzA4N2I3NzZiOTguNfkVJ2FsbG9jOjpmbXQ6OmZvcm1h +dDo6aGI5MDBmMzA4N2I3NzZiOTguNvoVWWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +ZW50cnk6Ok9jY3VwaWVkRW50cnk8SyxWLEE+OjpyZW1vdmVfa3Y6OmgxNzA0YzQ5ZDE1OTlkY2U5 ++xU2ZGlnZXN0OjpGaXhlZE91dHB1dDo6ZmluYWxpemVfZml4ZWQ6OmgwN2ViODQwNDllZWUxMGEy +/BUnYWxsb2M6OmZtdDo6Zm9ybWF0OjpoYjkwMGYzMDg3Yjc3NmI5OC43/RVHdHJhY2luZ19zdWJz +Y3JpYmVyOjpsYXllcjo6Y29udGV4dDo6Q29udGV4dDxTPjo6c3Bhbjo6aDM3ZWU0ODBlOWM4NDBk +M2X+FURzaGFyZGVkX3NsYWI6OnBhZ2U6OnNsb3Q6OlNsb3Q8VCxDPjo6cmVsZWFzZV93aXRoOjpo +YjkxNGM3ODg2MmU3MjlhMP8VJWluc3RhbnQ6Ondhc206Om5vdzo6aDI3MmJiN2VkZmI0NDkxYzeA +FmY8Jm11dCBzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfdW5pdDo6aDc2OGZiMThkMGMxMmQ5YTaBFidhbGxvYzo6 +Zm10Ojpmb3JtYXQ6OmhiOTAwZjMwODdiNzc2Yjk4LjiCFkphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6aW5zZXJ0OjpoYWUxODI2YmYzMmVhMDFiMoMWJ2Fs +bG9jOjpmbXQ6OmZvcm1hdDo6aGI5MDBmMzA4N2I3NzZiOTguOYQWKGFsbG9jOjpmbXQ6OmZvcm1h +dDo6aGI5MDBmMzA4N2I3NzZiOTguMTCFFkh2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpFZDI1 +NTE5U2VjcmV0S2V5Ojp0b19ieXRlczo6aDJlZjM0Njg2YzFjZTM4NDCGFk50cmFjaW5nX2NvcmU6 +OmNhbGxzaXRlOjpkaXNwYXRjaGVyczo6RGlzcGF0Y2hlcnM6OnJlYnVpbGRlcjo6aGY2YjQ2ZDM5 +ZGNjODJhMjSHFkw8c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9ySW1wbCBhcyBjb3JlOjpmbXQ6OkRp +c3BsYXk+OjpmbXQ6OmhjNDE5ZWQ1ZDRlZGU5NjJiiBZ+Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OnJl +Y2VpdmVfc2VjcmV0Ojp7e2Nsb3N1cmV9fT46Omg1YTNiYjIzY2VjNTJhY2E2iRaAAWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpH +b3NzaXBNYWNoaW5lOjpyZWNlaXZlX3NlY3JldDo6e3tjbG9zdXJlfX0+OjpoNWEzYmIyM2NlYzUy +YWNhNi4xihYyY29yZTo6b3B0aW9uOjpPcHRpb248VD46Om1hcF9vcjo6aDhhNTdjNDczNDc2YTRm +NzSLFjxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDEzNzI0MzI0 +M2QxNjkzNmaMFiBfX3diZ19tZWdvbG1kZWNyeXB0aW9uZXJyb3JfZnJlZY0WUmFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om1hcDo6ZW50cnk6OkVudHJ5PEssVixBPjo6b3JfZGVmYXVsdDo6aDY1 +N2ViODUzMGZkNTYwMDmOFlZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OmVudHJ5OjpF +bnRyeTxLLFYsQT46Om9yX2luc2VydF93aXRoOjpoM2FmNzA3ZDc1OTAyM2FmYo8WSzxjb3JlOjpv +cHRpb246Ok9wdGlvbjxUPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDE0MGIxYTZi +MzFlZDFjOTUuMZAWZGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlFyVmVyaWZpY2F0aW9uPjo6aGI4N2QyMDRjZWNjMmJlMjSR +FhBkZXZpY2VsaXN0c19sZWZ0khbtAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0 +aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1h +Y2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9pZGVudGl0eTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpnZXRfaWRlbnRpdHk6Ont7Y2xvc3VyZX19LGNvcmU6 +Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmlkZW50aXRpZXM6OlVzZXJJ +ZGVudGl0aWVzPj46Ont7Y2xvc3VyZX19Pj46OmhmN2ZiZWRmYzVjNzcxZjlikxZrc2VyZGU6OmRl +OjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29yZTo6b3B0aW9uOjpP +cHRpb248VD4+OjpkZXNlcmlhbGl6ZTo6aDE2NGY0MjMzZTZlZjkzNjSUFmtzZXJkZTo6ZGU6Omlt +cGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjpvcHRpb246Ok9wdGlv +bjxUPj46OmRlc2VyaWFsaXplOjpoODQ0OTQ2MWNhOWIyMWI2OJUWa3NlcmRlOjpkZTo6aW1wbHM6 +OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+ +Pjo6ZGVzZXJpYWxpemU6OmhmOGIyNjVmMTYyYjBkYmU3lhZJPGJhc2U2NDo6ZGVjb2RlOjpEZWNv +ZGVFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGZjMjlkY2I1YjNmODE1MZcWTHJt +cF9zZXJkZTo6ZGVjb2RlOjpEZXNlcmlhbGl6ZXI8UixDPjo6cGVla19vcl9yZWFkX21hcmtlcjo6 +aDI4NDY0MTcwMTY0MmE4MmGYFi88QWxnIGFzIGFlYWQ6OkFlYWQ+OjpkZWNyeXB0OjpoNGNlZWJi +ZjlmZDc0NDIyMZkWbWluZGV4ZWRfZGJfZnV0dXJlczo6aWRiX3RyYW5zYWN0aW9uOjppZGJfdHJh +bnNhY3Rpb25fbGlzdGVuZXJzOjpiYXNlX2NhbGxiYWNrOjp7e2Nsb3N1cmV9fTo6aGZkOTM2ZjBk +MTBhYTEyMzOaFkphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixB +Pjo6cmVtb3ZlOjpoZGY2MWM4YTE0NzI5OTFlZZsWSzxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+ +IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYzFhNzQyODU4ZjA4NzYwOJwWNnNlcmRl +OjpzZXI6OlNlcmlhbGl6ZXI6OmNvbGxlY3RfbWFwOjpoZWIyNjhkMWE0ZDc5MjRlN50WUW1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OmNhY2hlOjpWZXJpZmljYXRpb25DYWNoZTo6Z2V0 +OjpoMjU2YTNiOTYzZmI0MjAyOJ4WbDxjb3JlOjppdGVyOjphZGFwdGVyczo6Y2xvbmVkOjpDbG9u +ZWQ8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0Ojpo +ZWY0YzRhYmY0OTRhM2RhMJ8WPGV5ZWJhbGw6OnNoYXJlZDo6U2hhcmVkT2JzZXJ2YWJsZTxUPjo6 +bmV3OjpoOTVmYjMzMGI3MGQxOWJkNqAWYDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246 +OnN0YXJ0OjpTdGFydE1ldGhvZCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjJlZTNjMGMy +ZGY5ZDA5Y6EWUmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6ZW50cnk6OkVudHJ5PEss +VixBPjo6b3JfZGVmYXVsdDo6aDRhMWNlYTYxZDY1ZDZkMjWiFjA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aGRhNTU0Yzk0MDZiMWMzNzKjFjtzaGFyZGVkX3NsYWI6OnBhZ2U6OnNsb3Q6 +OlNsb3Q8VCxDPjo6bmV3OjpoNGJjYTExZjU3NzJlNTRhN6QWSmFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpyZW1vdmU6Omg5MTMzNWRkNTAyNTA1M2YzpRZQ +Y3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjp1MzI6OnNjYWxhcjo6U2NhbGFyMjk6 +OmFkZDo6aGIzMzQyOWQyNDc1MGUwMzOmFls8cnVtYV9jb21tb246OnNlcmRlOjpiYXNlNjQ6OkJh +c2U2NERlY29kZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4Zjg4ZjdhNTA1OTkx +YzAypxZUPHJhbmRfY29yZTo6YmxvY2s6OkJsb2NrUm5nPFI+IGFzIHJhbmRfY29yZTo6Um5nQ29y +ZT46OmZpbGxfYnl0ZXM6Omg3MWM0M2ZkZmZkZDYwMzhkqBYzYnl0ZXM6OmJ5dGVzOjpzaGFyZWRf +dG9fdmVjX2ltcGw6Omg3OGQwOWYxNzNkYWRjMmJkqRZNPHN0ZDo6aW86OmVycm9yOjpFcnJvciBh +cyBjb3JlOjplcnJvcjo6RXJyb3I+OjpkZXNjcmlwdGlvbjo6aDliOWM1ZmM5MDgxNjc4NWSqFkk8 +Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omhl +NWZiYmIxNDdiNDU3NTg2qxZRPGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+IGFzIGNvcmU6 +Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgwYTg2MDVkMGRlMGJhMjEyrBZRPGhhc2hicm93bjo6 +cmF3OjpSYXdUYWJsZTxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgxM2Fl +M2VlZDQxYThkMjBkrRYWX193Ymdfc2hpZWxkc3RhdGVfZnJlZa4WO2FsbG9jOjpyYXdfdmVjOjpS +YXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmgwNjg3Y2FmMWE3ZWRhMmIyrxY7YWxsb2M6OnJhd192 +ZWM6OlJhd1ZlYzxULEE+OjphbGxvY2F0ZV9pbjo6aDA5ZTg2YzM4ZDQ5OGYxMGGwFjthbGxvYzo6 +cmF3X3ZlYzo6UmF3VmVjPFQsQT46OmFsbG9jYXRlX2luOjpoMTg2ODMyN2JmYTQyNTQ0NLEWO2Fs +bG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmgyMjQ3NjEzMGMzMmI0Y2Y5 +shY7YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjphbGxvY2F0ZV9pbjo6aDI3NmI5YzNjYWQx +ZDcwMWazFjthbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OmFsbG9jYXRlX2luOjpoMmI0ZWJi +Mjk5Y2Q0M2Q1Y7QWO2FsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46Omgy +YmI0ZTk4MDkxMWViZjU3tRY7YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjphbGxvY2F0ZV9p +bjo6aDJlMTk1ZWVmNWI2YjkwN2O2FjthbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OmFsbG9j +YXRlX2luOjpoNjEyMjk5YjI2M2I0MjhlOLcWO2FsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6 +YWxsb2NhdGVfaW46Omg2NmI2MzUxNDBjNzJmM2M1uBY7YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxU +LEE+OjphbGxvY2F0ZV9pbjo6aDk1MmMzZTMwZGU1MWVjODC5FjthbGxvYzo6cmF3X3ZlYzo6UmF3 +VmVjPFQsQT46OmFsbG9jYXRlX2luOjpoYjFmYzdmN2ViZjQ0N2ExMboWO2FsbG9jOjpyYXdfdmVj +OjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmhjOTkxZGZiNzdmZWY0ZDhjuxYgX193Ymdfc2ln +bmF0dXJldmVyaWZpY2F0aW9uX2ZyZWW8FkRzZXJkZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+ +OjpwYXJzZV93aGl0ZXNwYWNlOjpoMzQ0YjQzMGZmYjM1NmMxYr0WQTwmbXV0IEEgYXMgc2VyZGU6 +OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnQ6OmgwNWIwNjgzYTBiZjhiNDFhvhZabWF0cml4 +X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6RGV2aWNlOjppc19jcm9zc19zaWduZWRf +Ynlfb3duZXI6OmgyNTAyOTUzNDc4NjBiY2UwvxZZbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRp +ZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OnNldF90cnVzdF9zdGF0ZTo6aGEzMDRhNWQxMmYw +M2U3ZGXAFmBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6cXJjb2RlOjpJbm5lclN0YXRlPjo6aDk4MmYzZjZiNTRkN2QxNDXBFjNhbGxvYzo6 +c2xpY2U6OjxpbXBsIFtUXT46OnRvX3ZlYzo6aDc3ZDVlMzY1NGNkY2UxMjnCFk48cnVtYV9ldmVu +dHM6OnJvb206OkltYWdlSW5mbyBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDU3Mzhj +NDYyYjhmNDhiZDbDFjthbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OmFsbG9jYXRlX2luOjpo +MTA5MDNkYTJjODU2NzlmYsQWO2FsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVf +aW46OmgyYjk0NTMxOWY1YjE2M2M1xRY7YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjphbGxv +Y2F0ZV9pbjo6aDQxZTc0OTcyZTkwNGRkMjHGFjthbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46 +OmFsbG9jYXRlX2luOjpoN2U1MDVjNTc2OTIzOTc5ZccWO2FsbG9jOjpyYXdfdmVjOjpSYXdWZWM8 +VCxBPjo6YWxsb2NhdGVfaW46Omg5YWUzYzkxNDllNGM0YzgzyBY7YWxsb2M6OnJhd192ZWM6OlJh +d1ZlYzxULEE+OjphbGxvY2F0ZV9pbjo6aGJmZDNjZTIyYzY1YjJmMmLJFjthbGxvYzo6cmF3X3Zl +Yzo6UmF3VmVjPFQsQT46OmFsbG9jYXRlX2luOjpoZTBiYTJmYjdmYzE4ODhlY8oWO2FsbG9jOjpy +YXdfdmVjOjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmhmNjljMDMzNjI2OTg3NjVhyxZVPG1h +dHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3IgYXMgY29yZTo6ZXJyb3I6OkVycm9yPjo6 +c291cmNlOjpoOTQwNThlZjUyZjRmYTRiN8wWuwFydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRp +b246OmFjY2VwdDo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBydW1hX2V2ZW50 +czo6a2V5Ojp2ZXJpZmljYXRpb246OmFjY2VwdDo6VG9EZXZpY2VLZXlWZXJpZmljYXRpb25BY2Nl +cHRFdmVudENvbnRlbnQ+OjpzZXJpYWxpemU6OmhmYmY0YjM2MzRiMDEzMTM0zRZSbWF0cml4X3Nk +a19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpoZWxwZXJzOjplbW9qaV9mcm9tX2luZGV4Ojpo +NDkxNTMxZTBiNzQ4ODZmNs4WRXN0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxL +LFYsUz46OmVudHJ5OjpoNzVjY2E4YmJjOTkyNmFlZs8WRXN0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6 +Om1hcDo6SGFzaE1hcDxLLFYsUz46OmVudHJ5OjpoOGI4MmU4Y2RhMDBhMTgwY9AWO2FsbG9jOjpy +YXdfdmVjOjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmgyMGQyNTE3NGZkOTg2MjNi0RYnaXRv +YTo6QnVmZmVyOjpmb3JtYXQ6OmgzMTg4NTM1N2Q2NjhkZmY20hY6c2hhMjo6c2hhNTEyOjpzb2Z0 +OjpzaGE1MTJfZGlnZXN0X3JvdW5kOjpoZGEyZTMyMTVkMTQ0MDg5ZNMWO2FsbG9jOjpyYXdfdmVj +OjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmgyOTUzNjQ3NzhkZThiY2Ew1BZAYWxsb2M6OnN5 +bmM6OmFyY2lubmVyX2xheW91dF9mb3JfdmFsdWVfbGF5b3V0OjpoNThhN2E2NTk5MzI2ZTAzONUW +VWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50 +OjpBY2NvdW50Pjo6aDRlMTMzYmQwZDY4OGEwMGXWFnc8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZs +YXR0ZW46OkZsYXRNYXA8SSxVLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0 +ZXJhdG9yPjo6c2l6ZV9oaW50OjpoYmY5ZTJlNGU3MTk1YmViZNcWPHNlcmRlOjpzZXI6OlNlcmlh +bGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoZmI3MTYyNzZmNzdlMDQ2MtgWHF9fd2JnX2tleXNi +YWNrdXByZXF1ZXN0X2ZyZWXZFnk8dHJhY2luZ19zdWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6 +TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OmNs +b25lX3NwYW46OmhiMzI3ODUxNmUwMjg3MzJk2hZ4Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6Um9vbUtl +eVdpdGhoZWxkQ29udGVudD46Omg0MjM3MjgzN2U3Nzg1MTVj2xYdaW5ib3VuZGdyb3Vwc2Vzc2lv +bl9zZW5kZXJLZXncFkRoYXNoYnJvd246OnJhdzo6VGFibGVMYXlvdXQ6OmNhbGN1bGF0ZV9sYXlv +dXRfZm9yOjpoYTBhM2Q0ZmEyZGNhMGE3Nd0WMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoMWNlZGIxMzBjMTNkZTk0Nt4WMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjVj +MGMyNTdiZGFkNjFiZN8WMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWRjNTRlMTNh +NzBjMGMyMeAWMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjZlNWIwMmZkNzE3MTlj +OeEWMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDkwMzkxNDMxNmZiOWEyMuIWcmNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpy +ZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdFN0YXRlPjo6aDc2NzdiZWZjYTYxMzY4MDcuMeMW +vgJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1 +cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpk +aXNhYmxlX2JhY2t1cDo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJl +OjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1N +YWNoaW5lOjpkaXNhYmxlX2JhY2t1cDo6e3tjbG9zdXJlfX0sd2FzbV9iaW5kZ2VuOjpKc1ZhbHVl +Pjo6e3tjbG9zdXJlfX0+Pjo6aGJlNTU0YjMzZGQ0Y2JiZDXkFjo8VCBhcyBhbGxvYzo6Ym9ycm93 +OjpUb093bmVkPjo6dG9fb3duZWQ6Omg2MjBlNTYyYjUzMjA3MGZi5RaUAXZvZG96ZW1hYzo6dHlw +ZXM6OmN1cnZlMjU1MTk6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96 +ZW1hYzo6dHlwZXM6OmN1cnZlMjU1MTk6OkN1cnZlMjU1MTlQdWJsaWNLZXk+OjpkZXNlcmlhbGl6 +ZTo6aDU4MGJmMjY4NjJkZGIzNmXmFpkBdm9kb3plbWFjOjpvbG06OnNlc3Npb246OnJhdGNoZXQ6 +Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNz +aW9uOjpyYXRjaGV0OjpSZW1vdGVSYXRjaGV0S2V5Pjo6ZGVzZXJpYWxpemU6OmhlNjU5YWQ3Y2Nj +MGQyYjhj5xZGc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6cGFyc2Vfb2JqZWN0X2Nv +bG9uOjpoN2UwNjc5NzJiMmU2ZjRkMOgWPHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFs +aXplX2VudHJ5OjpoZjA4NjhlZWFmN2NhMzJlZekWSTxjb3JlOjpvcHRpb246Ok9wdGlvbjxaPiBh +cyB6ZXJvaXplOjpaZXJvaXplPjo6emVyb2l6ZTo6aGQ0ZDEyNGY3ODg4NDJiM2XqFmw8Y29yZTo6 +aXRlcjo6YWRhcHRlcnM6OmNsb25lZDo6Q2xvbmVkPEk+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6 +aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDEzMzliZTI5NjEzNGZhMDHrFjxleWViYWxsOjpz +aGFyZWQ6OlNoYXJlZE9ic2VydmFibGU8VD46Om5ldzo6aGQyYmUyOTlkYzBmODViYTDsFmJtYXRy +aXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpzZXNzaW9uczo6U2Vzc2lvbk1hbmFnZXI6 +OmlzX3VzZXJfdGltZWRfb3V0OjpoOTAzYzg0ZjQyMDY5NjNmY+0Wbzx2b2RvemVtYWM6Om1lZ29s +bTo6c2Vzc2lvbl9rZXlzOjpFeHBvcnRlZFNlc3Npb25LZXkgYXMgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZT46OmRlc2VyaWFsaXplOjpoYjRkYTg1ZDgzMzVlMjg4Nu4WRjxzdGQ6OmlvOjpjdXJzb3I6 +OkN1cnNvcjxUPiBhcyBzdGQ6OmlvOjpSZWFkPjo6cmVhZDo6aDI1NTFiZGQ3NzYwZTAwZjTvFkh3 +YXNtX2JpbmRnZW5fZnV0dXJlczo6dGFzazo6c2luZ2xldGhyZWFkOjpUYXNrOjpzcGF3bjo6aGU0 +M2NiNWIxMjRjMmQyZjTwFjhzdGQ6OnRocmVhZDo6bG9jYWw6OkxvY2FsS2V5PFQ+Ojp3aXRoOjpo +MDQwNjQ3ODhlOWFiZTcxY/EWZjxzZXJkZTo6ZGU6OnZhbHVlOjpTZXFEZXNlcmlhbGl6ZXI8SSxF +PiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoNTgwZGU1NDYy +ZDNlNDgxOPIWmQF2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6cmF0Y2hldDo6Xzo6PGltcGwgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNlc3Npb246OnJhdGNoZXQ6 +OlJlbW90ZVJhdGNoZXRLZXk+OjpkZXNlcmlhbGl6ZTo6aGU4ODRkNTMyODFkNjI2OGTzFpkBdm9k +b3plbWFjOjpvbG06OnNlc3Npb246OnJhdGNoZXQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyYXRjaGV0OjpSZW1vdGVSYXRjaGV0 +S2V5Pjo6ZGVzZXJpYWxpemU6OmhmY2U4YTkzMGU4NGVmYzdk9BalAWFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +SW50ZXJuYWw+OjpwdXNoOjpoNDVjNjVlMWQ1MDAyYzY5YfUWaDxjb3JlOjppdGVyOjphZGFwdGVy +czo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRv +cj46Om5leHQ6OmgzZmFlYjk0ZTJjMjBkYzZh9haUAXZvZG96ZW1hYzo6dHlwZXM6OmN1cnZlMjU1 +MTk6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6dHlwZXM6 +OmN1cnZlMjU1MTk6OkN1cnZlMjU1MTlQdWJsaWNLZXk+OjpkZXNlcmlhbGl6ZTo6aDYzMDJiMTJj +MTQ2NDg4ZTX3FlI8ZWQyNTUxOV9kYWxlazo6ZXJyb3JzOjpJbnRlcm5hbEVycm9yIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6Omg2YWE0ZTBmMGUwNTI0OGUz+BZfPHNlcmRlX2pzb246OnNlcjo6 +UHJldHR5Rm9ybWF0dGVyIGFzIHNlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyPjo6ZW5kX29iamVj +dDo6aDZkOWM5N2IxZjI1N2E2NjP5Fl48c2VyZGVfanNvbjo6c2VyOjpQcmV0dHlGb3JtYXR0ZXIg +YXMgc2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI+OjplbmRfYXJyYXk6OmhhMTU0ZDc2ZTI2MjZm +ODNk+hZhPHNlcmRlX2pzb246OnNlcjo6UHJldHR5Rm9ybWF0dGVyIGFzIHNlcmRlX2pzb246OnNl +cjo6Rm9ybWF0dGVyPjo6ZW5kX29iamVjdDo6aDZkOWM5N2IxZjI1N2E2NjMuMfsWQXNlcmRlX2pz +b246OnJlYWQ6OlNsaWNlUmVhZDo6cG9zaXRpb25fb2ZfaW5kZXg6Omg4NTUzNmFkODEzOTg2ZjI4 +/BY0Ynl0ZXM6OmJ5dGVzX211dDo6c2hhcmVkX3ZfdG9fdmVjOjpoYzNiMGIyNWQxZjM1N2I5Nf0W +Qzx3YXNtX2JpbmRnZW46OkpzVmFsdWUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY3Zjlh +Yjg4ODViNmMzMDX+Fj5ydXN0Y19kZW1hbmdsZTo6djA6OlByaW50ZXI6OnByaW50X3NlcF9saXN0 +OjpoNDE0YTg5YzJhMjRmMTM4Nf8WfGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlFyVmVyaWZpY2F0aW9uOjpmcm9tX3NjYW46 +Ont7Y2xvc3VyZX19Pjo6aGY3ZmU1YjZhMDNjZjE0NDCAFzxzZXJkZTo6c2VyOjpTZXJpYWxpemVN +YXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDVhOTFkMDNkODY5NGM4N2KBF3Rjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6Z2V0X2RldmljZV9mcm9t +X2N1cnZlX2tleTo6e3tjbG9zdXJlfX0+OjpoYjJjMjkxODBjN2U2NWU3MoIXWDxhbGxvYzo6dmVj +OjppbnRvX2l0ZXI6OkludG9JdGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJv +cDo6aGZjMDgyZTFlYWZjNGY5MmSDF35jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlvbjo6ZnJvbV9zY2Fu +Ojp7e2Nsb3N1cmV9fT46OmhmN2ZlNWI2YTAzY2YxNDQwLjGEF2g8Y29yZTo6aXRlcjo6YWRhcHRl +cnM6OmZ1c2U6OkZ1c2U8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0 +b3I+OjpuZXh0OjpoOTNlOGY4ODMyMTdlM2E4NIUXfmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlFyVmVyaWZpY2F0aW9uOjpm +cm9tX3NjYW46Ont7Y2xvc3VyZX19Pjo6aGY3ZmU1YjZhMDNjZjE0NDAuMoYXf2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6b2xt +OjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWduaW5nSWRlbnRpdHk+Pjo6aDk0MTdkNGE1Y2RiNDk5 +OTaHF2hzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBh +bGxvYzo6Ym94ZWQ6OkJveDxUPj46OmRlc2VyaWFsaXplOjpoMjEyM2ZkMDgzMWU3ZWY4N4gXaHNl +cmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpi +b3hlZDo6Qm94PFQ+Pjo6ZGVzZXJpYWxpemU6Omg2MmIzZjJkOWIzZDMwMGEyiRdWY29yZTo6c3Ry +Ojp0cmFpdHM6OjxpbXBsIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4PEk+IGZvciBzdHI+OjppbmRl +eDo6aGFhYmY3YzRiN2I0ZTdlNzSKFy88QWxnIGFzIGFlYWQ6OkFlYWQ+OjplbmNyeXB0OjpoMDlh +NDg5YmFjNWI3YzhjZIsXZ2FueWhvdzo6Y2hhaW46OjxpbXBsIGNvcmU6Oml0ZXI6OnRyYWl0czo6 +aXRlcmF0b3I6Okl0ZXJhdG9yIGZvciBhbnlob3c6OkNoYWluPjo6bmV4dDo6aGZlMjkwYTEyYWZm +M2EyNmKMF2Q8c2VyZGVfanNvbjo6dmFsdWU6OmRlOjpNYXBEZXNlcmlhbGl6ZXIgYXMgc2VyZGU6 +OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmhhNjdkODgzMjEyNzJlODE0jRdkPHNl +cmRlX2pzb246OnZhbHVlOjpkZTo6TWFwRGVzZXJpYWxpemVyIGFzIHNlcmRlOjpkZTo6TWFwQWNj +ZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoY2E5NDY1ZDY5YzdkYjZlNI4XZDxzZXJkZV9qc29uOjp2 +YWx1ZTo6ZGU6Ok1hcERlc2VyaWFsaXplciBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRf +dmFsdWVfc2VlZDo6aDY1NzA0NTQ3YWFhYjdiODePF2Q8c2VyZGVfanNvbjo6dmFsdWU6OmRlOjpN +YXBEZXNlcmlhbGl6ZXIgYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6 +Omg3NTc2NmNiNjFkNGM2NzA2kBdkPHNlcmRlX2pzb246OnZhbHVlOjpkZTo6TWFwRGVzZXJpYWxp +emVyIGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoN2Q4ZDA5Nzlh +ZDdkNjdlM5EXZDxzZXJkZV9qc29uOjp2YWx1ZTo6ZGU6Ok1hcERlc2VyaWFsaXplciBhcyBzZXJk +ZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDU2NjRkMTI5YWE3YWI4YjSSFzRj +b3JlOjppdGVyOjphZGFwdGVyczo6dHJ5X3Byb2Nlc3M6OmgxZGJlNmM2ZGE1YzFhN2NkkxdZPHNl +cmRlOjpkZTo6aW1wbHM6Ok9wdGlvblZpc2l0b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6 +dmlzaXRfc29tZTo6aDg2ODdjMTE0MTIzNDI5YzaUF1I8dm9kb3plbWFjOjpjaXBoZXI6OkRlY3J5 +cHRpb25FcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxOTkyYzlmOTY1MjJiMTg4 +lRdBdm9kb3plbWFjOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OmZhbGxiYWNrX2tleTo6aGY2MTVl +NzRjNDRhM2FmODWWF048dm9kb3plbWFjOjpvbG06OnNlc3Npb246OlNlc3Npb24gYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDhhMGY0ZmE5Njk4NDBlZTOXF2Q8c2VyZGVfanNvbjo6dmFsdWU6 +OmRlOjpNYXBEZXNlcmlhbGl6ZXIgYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVl +X3NlZWQ6OmhkY2U1NTZhMTdhYjcxZWEymBdkPHNlcmRlX2pzb246OnZhbHVlOjpkZTo6TWFwRGVz +ZXJpYWxpemVyIGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoZDVi +Njc2ZTY4YTljZTIxYZkXZDxzZXJkZV9qc29uOjp2YWx1ZTo6ZGU6Ok1hcERlc2VyaWFsaXplciBh +cyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGM0MWI2NmZlYTIzZWVj +ZDSaF2Q8c2VyZGVfanNvbjo6dmFsdWU6OmRlOjpNYXBEZXNlcmlhbGl6ZXIgYXMgc2VyZGU6OmRl +OjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmgxZjU3ZTI5MmUxOTFkNGJimxdnPHNlcmRl +OjpfX3ByaXZhdGU6OmRlOjpGbGF0U3RydWN0QWNjZXNzPEU+IGFzIHNlcmRlOjpkZTo6TWFwQWNj +ZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoZGU2NDc5NWIzZGI0NDI5YZwXbzxzdGQ6OnBhbmlja2lu +Zzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6Rm9ybWF0U3RyaW5nUGF5bG9hZCBhcyBjb3JlOjpwYW5p +Yzo6UGFuaWNQYXlsb2FkPjo6Z2V0OjpoMzZlYTdkNWM0MzFlMzEwYp0XjwNjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vz +c2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmNvbGxlY3Rfc2Vzc2lvbl9yZWNpcGllbnRzPGNv +cmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxjb3JlOjpzbGljZTo6aXRlcjo6SXRlcjxydW1h +X2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkPiw8cnVtYV9jb21tb246 +OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCBhcyBjb3JlOjpjb252ZXJ0OjpBc1Jl +ZjxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6OlVzZXJJZD4+Ojphc19yZWY+Pjo6 +e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDhiNWY3ZTNiZTZkMzRlYzWeFxJwaWNrbGVkc2Vz +c2lvbl9uZXefFzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDRj +MWE5MTAxNzAyNjJiNjSgFzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRy +eTo6aDU4MmY1MjBmOGQ1Njg4MmOhF3w8dHJhY2luZ19zdWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJl +ZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46 +OmV2ZW50X2VuYWJsZWQ6OmhiNDViODNlOWI4ODFmYWRjohdtPHNlcmRlOjpfX3ByaXZhdGU6OnNl +cjo6RmxhdE1hcFNlcmlhbGl6ZU1hcDxNPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+Ojpz +ZXJpYWxpemVfa2V5OjpoNTZmNGNjMDJhZmVmNTIzMaMXWDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6 +OkludG9JdGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDlkN2RhNjQ2 +MjIxNjcxYTekF3E8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmNoYWluOjpDaGFpbjxBLEI+IGFzIGNv +cmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6c2l6ZV9oaW50OjpoOWY5NTRj +NmNhNTBmOWM1OaUXLWNvcmU6Omhhc2g6OnNpcDo6dTh0bzY0X2xlOjpoNWQ1ZTFmZDQ5ZGMwODEy +NaYXE2RldmljZWxpc3RzX2NoYW5nZWSnF4ICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmgzZTk1NzlhYzRlY2ExNTM0 +qBc2cm1wOjpkZWNvZGU6OlJtcFJlYWQ6OnJlYWRfZGF0YV91MzI6OmgyYmU3ZmU1YzA2MmQ0MjY0 +qRczYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmhlOWExYTMzYjY0NmY3YmI2qhdD +PGFsbG9jOjpzeW5jOjpBcmM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWE3OGIx +OTYwNDU2NTQ2NKsXMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYTQ0MmVlMjYyOGY3 +YTMzY6wXSmhhc2hicm93bjo6cnVzdGNfZW50cnk6OlJ1c3RjVmFjYW50RW50cnk8SyxWLEE+Ojpp +bnNlcnQ6Omg3NzZhZGVhNDA2NDQyYmYzrRc+ZnV0dXJlc19jaGFubmVsOjpvbmVzaG90OjpJbm5l +cjxUPjo6ZHJvcF90eDo6aGY4MTQ1MDJlM2Y1MWJmMTWuF0Z2b2RvemVtYWM6Om9sbTo6bWVzc2Fn +ZXM6Om1lc3NhZ2U6Ok1lc3NhZ2U6OnNldF9tYWM6OmhkYjgzM2VkMDQ3NGJmNWRirxc2YWVzOjpz +b2Z0OjpmaXhzbGljZTo6c3ViX2J5dGVzX25vdHM6OmhlYmZjNTYzMDY3MGZjYzg1sBc5c2VyZGVf +anNvbjo6cmF3OjpSYXdWYWx1ZTo6ZnJvbV9zdHJpbmc6OmgwNzEyNzdmMmQwYzZhYzI4sRetAWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6Omg0ZDgzMDdlY2JkNGEzOGQz +shd8Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OlZlcmlmaWNhdGlvblN0b3JlOjpnZXRfaWRlbnRpdGllczo6e3tjbG9zdXJlfX0+OjpoOTA4 +YzkzMGQ3N2ZlYWViZrMXmQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5TWFuYWdlcjo6dXBkYXRlX29yX2NyZWF0 +ZV9pZGVudGl0eTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aGM4MGE2Y2VmNDMxMTg2NzO0 +FzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNjMTFhNjA1YjM1MDZmNjC1F2dhbGxv +Yzo6dmVjOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPGFsbG9jOjp2ZWM6OlZlYzxULEE+ +PiBmb3IgW1Q7IE5dPjo6dHJ5X2Zyb206Omg5ODZiNmY3NGY3ZjNiYmNlthd+Y29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlv +blN0b3JlOjpnZXRfaWRlbnRpdGllczo6e3tjbG9zdXJlfX0+OjpoOTA4YzkzMGQ3N2ZlYWViZi4z +txduPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkIGFz +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aGQzODVlNWQxN2ZkM2IxNjG4 +F2o8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpteGNfdXJpOjpPd25lZE14Y1VyaSBhcyBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmhhZGE0OWRhMTY4ZDc5NmI0uRdEaGFz +aGJyb3duOjpyYXc6OlJhd1RhYmxlSW5uZXI6OmZpbmRfaW5zZXJ0X3Nsb3Q6Omg2ZjE4NjBlZGU1 +ZGVjMmIyLjK6F1s8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0OjpCVHJlZVNldDxULEE+ +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3ZGU3YTZhODI3YTA2OTMzuxcRZGV2aWNlX2Vk +MjU1MTlLZXm8Fyd2ZXJpZmljYXRpb25yZXF1ZXN0X3RpbWVSZW1haW5pbmdNaWxsaXO9F35jb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6VmVy +aWZpY2F0aW9uU3RvcmU6OmdldF9pZGVudGl0aWVzOjp7e2Nsb3N1cmV9fT46Omg5MDhjOTMwZDc3 +ZmVhZWJmLjS+F35jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZl +cmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uU3RvcmU6OmdldF9pZGVudGl0aWVzOjp7e2Nsb3N1cmV9 +fT46Omg5MDhjOTMwZDc3ZmVhZWJmLjW/F19tYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0 +b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZTo6Z2V0X3N0YXRpY19hY2NvdW50OjpoMjljNThkZTFh +ZWY5MTcwZMAXyAE8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2Vzc2lvbjo6Xzo6PGltcGwgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2Vzc2lvbjo6 +UGlja2xlZFNlc3Npb24+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRl +OjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoNDllZjkyM2UyZmFhNTQyNMEX7gE8bWF0cml4X3Nka19j +cnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpfOjo8aW1wbCBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6 +b3V0Ym91bmQ6OkVuY3J5cHRpb25TZXR0aW5ncz46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRv +ciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmgyOWVhZGNiMzRiNDZiOTgwwhdj +PHdhc21fYmluZGdlbjo6SnNWYWx1ZSBhcyBnbG9vX3V0aWxzOjpmb3JtYXQ6Ompzb246OkpzVmFs +dWVTZXJkZUV4dD46OmZyb21fc2VyZGU6Omg0YjI1ZDZjNWI5YjZlYWNjwxczc2VyZGU6OmRlOjpF +cnJvcjo6aW52YWxpZF9sZW5ndGg6OmhlODQwOTJlNjI3ZDUxMGMzxBfZATxtYXRyaXhfc2RrX2Ny +eXB0bzo6aWRlbnRpdGllczo6dXNlcjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBm +b3IgbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNlcklk +ZW50aXR5Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRv +cj46OnZpc2l0X3N0cjo6aGZjOTAzMjc3NzllNzkwZjjFF9ABPG1hdHJpeF9zZGtfY3J5cHRvOjpp +ZGVudGl0aWVzOjpkZXZpY2U6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1h +dHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OkxvY2FsVHJ1c3Q+OjpkZXNlcmlh +bGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpo +MDdjYTVhYWM2NWUxZDM1N8YX1AE8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmlj +ZTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86 +OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U+OjpkZXNlcmlhbGl6ZTo6X19GaWVs +ZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoYmQ3YzliYzI4NGRi +MDI0NMcX4gE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6Om9sbV92MTo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6Om9sbV92MTo6RGVjcnlwdGVkT2xtVjFFdmVudDxDPj46OmRlc2VyaWFsaXplOjpfX0Zp +ZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhmZWI0MjI1NTdi +ZGI1MzYyyBczc2VyZGU6OmRlOjpFcnJvcjo6aW52YWxpZF9sZW5ndGg6OmgyYzdiOTExN2E5ZWRk +NGFkyRetAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6OmhlMmFlNTlm +ZjVjNjViODI2yhdiPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZGV2aWNlX2tleXM6OkRldmlj +ZUtleSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGZkMzUyNzllNDJhYWRmODLLF7UB +cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpkb25lOjpfOjo8aW1wbCBzZXJkZTo6c2Vy +OjpTZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6ZG9uZTo6VG9E +ZXZpY2VLZXlWZXJpZmljYXRpb25Eb25lRXZlbnRDb250ZW50Pjo6c2VyaWFsaXplOjpoNTdlOWJi +MjRhMGUyOWMxYswXPmV5ZWJhbGw6OnNoYXJlZDo6U2hhcmVkT2JzZXJ2YWJsZTxUPjo6d3JpdGU6 +OmgzMDJiZDRiODQ5ZWZhYzE0zRc+ZXllYmFsbDo6c2hhcmVkOjpTaGFyZWRPYnNlcnZhYmxlPFQ+ +Ojp3cml0ZTo6aDc4YWY2M2QwNDM4OGNlMWLOFz5leWViYWxsOjpzaGFyZWQ6OlNoYXJlZE9ic2Vy +dmFibGU8VD46OndyaXRlOjpoOGUyNTgzZWIzMGMzMmJhNs8XWzxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQx +OTY2YjJkZjcwY2QzZjHQF1JhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OmVudHJ5OjpF +bnRyeTxLLFYsQT46Om9yX2RlZmF1bHQ6OmgyY2NlMjNhOTFjMGQzMjJk0RfUATxydW1hX2V2ZW50 +czo6a2V5Ojp2ZXJpZmljYXRpb246OmFjY2VwdDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3IgcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OlNhc1YxQ29u +dGVudD46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+ +Ojp2aXNpdF9zdHI6OmhhNzRiM2ViNzViOWJkMmFm0hd0dG9raW86OnV0aWw6OmxpbmtlZF9saXN0 +OjpMaW5rZWRMaXN0PEwsPEwgYXMgdG9raW86OnV0aWw6OmxpbmtlZF9saXN0OjpMaW5rPjo6VGFy +Z2V0Pjo6cHVzaF9mcm9udDo6aGFhYTdhZDhjYjU0ZjZiZWTTF1xtYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6U2FzU3RhdGU8Uz46OmNoZWNrX2V2ZW50Ojpo +ZDAzYjllOGQxZGE5YTdlMtQXZGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxbbWF0cml4X3Nka19j +cnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2VdPjo6aDhlNzIxY2EzODE2 +YjYwOWTVF0Y8YWxsb2M6OnJjOjpSYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRy +b3A6Omg5ZDhmNDA2MDJmYzVlOTAw1hdBdm9kb3plbWFjOjpvbG06Om1lc3NhZ2VzOjpPbG1NZXNz +YWdlOjp0b19wYXJ0czo6aDc4OGRlMmYzNjQ5NjgwZjHXF1BhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6cmVtb3ZlX2VudHJ5OjpoY2JmMTZlZDJmOGY2NGE2 +ONgXM3NlcmRlOjpkZTo6RXJyb3I6OmludmFsaWRfbGVuZ3RoOjpoM2U4ZWJjN2Y4NjIwZDgzMNkX +MmFlczo6c29mdDo6Zml4c2xpY2U6Om1lbXNoaWZ0MzI6Omg0ZTE1OGFhMWIzOGQxMjM52hetAWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6OmgxYjUzMDNkNzk4ZDdmMzMy +2xerATxydW1hX2V2ZW50czo6cm9vbTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBm +b3IgcnVtYV9ldmVudHM6OnJvb206OkVuY3J5cHRlZEZpbGU+OjpkZXNlcmlhbGl6ZTo6X19GaWVs +ZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoNDQxN2RlOWMzODli +MTI2MNwXqAE8cnVtYV9ldmVudHM6OnJvb206Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emUgZm9yIHJ1bWFfZXZlbnRzOjpyb29tOjpKc29uV2ViS2V5Pjo6ZGVzZXJpYWxpemU6Ol9fRmll +bGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aDJlZGRhYWRlYjJm +YWEwMTTdF2Q8c2VyZGVfanNvbjo6dmFsdWU6OnNlcjo6U2VyaWFsaXplTWFwIGFzIHNlcmRlOjpz +ZXI6OlNlcmlhbGl6ZU1hcD46OnNlcmlhbGl6ZV9rZXk6OmhjZmU1OTA1ZGViY2QzMTIx3hczc2Vy +ZGU6OmRlOjpFcnJvcjo6aW52YWxpZF9sZW5ndGg6OmhhMzYwMzhjOGU0NTNiZmIx3xdtY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVl +c3RzOjpWZXJpZmljYXRpb25SZXF1ZXN0Pjo6aDYxMTNjNThhYzdiZTU5MzIuNOAXoQFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3Jv +dXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmdldF9vcl9jcmVhdGVfb3V0Ym91bmRf +c2Vzc2lvbjo6e3tjbG9zdXJlfX0+OjpoNGEzZjk0NDJjOGEzZDlhMOEXbDxjb3JlOjppdGVyOjph +ZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRv +cjo6SXRlcmF0b3I+OjpuZXh0OjpoODNiYWI2MTU2NDg2NDI5MuIXKnNlcmRlX2pzb246OnNlcjo6 +dG9fdmVjOjpoYTVmOGNlMDM1MTM5MDdhZeMXZTxzZXJkZV93YXNtX2JpbmRnZW46OmRlOjpEZXNl +cmlhbGl6ZXIgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHI6Omhi +MzYyNTIyNDVjMjIxNmY25Bd3PHRyYWNpbmdfc3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6Okxh +eWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+OjpuZXdf +c3Bhbjo6aDRlYzQ0NmQ1NWNhOGQ3MGTlFzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xv +dzo6aGMxMWNlZDA2ZDRkZGVmNDPmFzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6 +aDU5YmQ3MTc5ZDNhYTFlNWPnFyFfX3diZ19nZXRfaWRlbnRpdHlrZXlzX2N1cnZlMjU1MTnoF2s8 +bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXR5 +IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoOGE1N2JiNmE1NGEyNDM3M+kXZjwmbXV0 +IHNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZXI+OjpkZXNlcmlhbGl6ZV91bml0OjpoMDFmYTQxYmNmNDllNTBlZuoXKnNlcmRlX2pzb246OnNl +cjo6dG9fdmVjOjpoN2ZjNGViZDU5Zjk5MDUwMOsXKnNlcmRlX2pzb246OnNlcjo6dG9fdmVjOjpo +OGEwZmEzNGI4NzQ5OGJiNOwXKnNlcmRlX2pzb246OnNlcjo6dG9fdmVjOjpoZjJjZGNmYjY5ZmY1 +NzNjMO0XggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDc2YTkzNDUxMjAyZTM4ZTfuF1djb3JlOjpzbGljZTo6c29y +dDo6bWVyZ2Vfc29ydDo6UnVuVmVjPFJ1bkFsbG9jRixSdW5EZWFsbG9jRj46OnJlbW92ZTo6aDA2 +ZjIxMGM0MThjYmIwM2LvF7MBbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5n +OjptYXN0ZXI6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtf +Y3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6bWFzdGVyOjpNYXN0ZXJQdWJrZXk+OjpkZXNl +cmlhbGl6ZTo6aDRkZGRhZmQ5ODc4YTczMWLwF8QBbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpj +cm9zc19zaWduaW5nOjpzZWxmX3NpZ25pbmc6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6c2VsZl9zaWdu +aW5nOjpTZWxmU2lnbmluZ1B1YmtleT46OmRlc2VyaWFsaXplOjpoYzNmOTQ1YmJjM2MyNTI5M/EX +P3J1bWFfY29tbW9uOjpzZXJkZTo6Y293OjpkZXNlcmlhbGl6ZV9jb3dfc3RyOjpoZDYwOTE0ODUw +MzAwNjNkYfIXxAFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6OnVzZXJf +c2lnbmluZzo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjp1c2VyX3NpZ25pbmc6OlVzZXJTaWduaW5nUHVi +a2V5Pjo6ZGVzZXJpYWxpemU6OmhjNTMzYTM3YzNkYTJiZTk18xczc2VyZGU6OmRlOjpFcnJvcjo6 +aW52YWxpZF9sZW5ndGg6Omg0Zjk5ZWRkMzc0NGNiNGM19BdoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJz +Ojp6aXA6OlppcDxBLEI+IGFzIGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp6aXA6OlppcEltcGw8QSxC +Pj46Om5ldzo6aGQyZDIwZDc4YTI0YmE2NDn1F60BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11 +dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6cHVz +aF93aXRoX2hhbmRsZTo6aDI3MDU2MjFhZmU0MjMwNDH2F1djb3JlOjpzbGljZTo6c29ydDo6bWVy +Z2Vfc29ydDo6UnVuVmVjPFJ1bkFsbG9jRixSdW5EZWFsbG9jRj46OnJlbW92ZTo6aDAxNzUzOGE1 +OWNiNzYxMzj3F19hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixB +Pjo6YnVsa19idWlsZF9mcm9tX3NvcnRlZF9pdGVyOjpoMmU4YzJkZDliOTc5NWIyNfgXX2FsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpidWxrX2J1aWxkX2Zy +b21fc29ydGVkX2l0ZXI6Omg0MTNkMzk3OWNlNjAzNTk1+RdfYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46OmJ1bGtfYnVpbGRfZnJvbV9zb3J0ZWRfaXRlcjo6 +aDJjZGM1ZmYwMmY1Yzk1YWb6F19hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVl +TWFwPEssVixBPjo6YnVsa19idWlsZF9mcm9tX3NvcnRlZF9pdGVyOjpoOTA2M2YwMDYyMjhiMTVj +OfsXX2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpidWxr +X2J1aWxkX2Zyb21fc29ydGVkX2l0ZXI6Omg1MGM1NzhkNDAxMGI1OTkx/BdsPGNvcmU6Oml0ZXI6 +OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJh +dG9yOjpJdGVyYXRvcj46Om5leHQ6OmhkMTQ1YzgzNWUyYzdkMzBj/Rc/cnVtYV9jb21tb246OnNl +cmRlOjpjb3c6OmRlc2VyaWFsaXplX2Nvd19zdHI6Omg3YWE2NGFjMTY5NDZlOGE2/hdhPHJ1bWFf +Y29tbW9uOjpzZXJkZTo6YmFzZTY0OjpCYXNlNjQ8Qz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZT46OmRlc2VyaWFsaXplOjpoMzg4MmZhZGM5YTUwMTdkNP8XYTxydW1hX2NvbW1vbjo6c2VyZGU6 +OmJhc2U2NDo6QmFzZTY0PEM+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6 +ZTo6aDVhZGJmZmZmNmYyYzVkOTeAGEpoYXNoYnJvd246OnJ1c3RjX2VudHJ5OjpSdXN0Y1ZhY2Fu +dEVudHJ5PEssVixBPjo6aW5zZXJ0OjpoODBkNDFlOWM5NmYzNGYyZYEYPHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoZTdkZmFjYjUyOTM1ZDZiZYIYaDxjb3JlOjpp +dGVyOjphZGFwdGVyczo6emlwOjpaaXA8QSxCPiBhcyBjb3JlOjppdGVyOjphZGFwdGVyczo6emlw +OjpaaXBJbXBsPEEsQj4+OjpuZXc6Omg1MjFhNWIwNzcxNzkwYmY5gxhhPHJ1bWFfY29tbW9uOjpz +ZXJkZTo6YmFzZTY0OjpCYXNlNjQ8Qz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2Vy +aWFsaXplOjpoMjM3ZWNhODA4ZjI5NWJlYoQYYTxydW1hX2NvbW1vbjo6c2VyZGU6OmJhc2U2NDo6 +QmFzZTY0PEM+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aDczNjY4 +ZWM1Y2MzOGE4YWaFGHc8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnREZXNl +cmlhbGl6ZXI8RT4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9ib29s +OjpoZDg2MDIxOTI3ZmVkNmJiN4YYaDxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6VGFn +T3JDb250ZW50VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmgyMjIy +ZGIxZmJhY2FiOTdlhxhEdHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6RGVmYXVsdENhbGxzaXRlOjpy +ZWdpc3Rlcjo6aDg0MDAwOWJlNWI5ZTliYjaIGEdjb3JlOjpjaGFyOjptZXRob2RzOjo8aW1wbCBj +aGFyPjo6ZXNjYXBlX2RlYnVnX2V4dDo6aGJhMjhlMTJjZDAwYWNmNTAuMYkYLmNvcmU6OnJlc3Vs +dDo6dW53cmFwX2ZhaWxlZDo6aDYxODMzYmM3Njc2YzlhOGaKGEBhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpzbGljZV9pbnNlcnQ6Omg0ZTIyZmI4YWNiYzEyNmI1ixhpY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVD +cm9zc1NpZ25pbmdJZGVudGl0eT46OmhlZWFjMDRjZWMyNTQ0MzBijBiKAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNyeXB0b19zdG9yZV93cmFwcGVy +OjpDcnlwdG9TdG9yZVdyYXBwZXI6OnNhdmVfY2hhbmdlczo6e3tjbG9zdXJlfX0+OjpoZjlhNTg2 +MjdlM2Y4YWJjZo0YjAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjpjcnlwdG9fc3RvcmVfd3JhcHBlcjo6Q3J5cHRvU3RvcmVXcmFwcGVyOjpzYXZlX2No +YW5nZXM6Ont7Y2xvc3VyZX19Pjo6aGY5YTU4NjI3ZTNmOGFiY2YuMo4YeWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6cHJlcHJv +Y2Vzc19zeW5jX2NoYW5nZXM6Ont7Y2xvc3VyZX19Pjo6aGNiNGE3OTczZTEzMmU1NmKPGFlmdXR1 +cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJlc191bm9yZGVyZWQ6OkZ1dHVyZXNVbm9yZGVyZWQ8RnV0 +Pjo6dW5saW5rOjpoMWFkYmZkZjM3NWJmMWQwY5AYWWZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1 +cmVzX3Vub3JkZXJlZDo6RnV0dXJlc1Vub3JkZXJlZDxGdXQ+Ojp1bmxpbms6OmhkOTBhYmU2MWU3 +YWZjM2FjkRhsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3Jl +OjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg2NGQ3MzFmMmM2OTA0 +ZDIzkhhsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjpp +dGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhhY2QyNGM0NDZmNWViYjg1 +kxh+bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6aW5kZXhlZGRiX3NlcmlhbGl6 +ZXI6OkluZGV4ZWRkYlNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplX3ZhbHVlX2Zyb21fYnl0ZXM6Omhl +OWJhNmI4YjcyN2FhOGE2lBhoPHNlcmRlX3dhc21fYmluZGdlbjo6ZGU6OkRlc2VyaWFsaXplciBh +cyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cmluZzo6aGJjNGIxOTAw +ODU0NzYxYzWVGGg8c2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6RGVzZXJpYWxpemVyIGFzIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc3RyaW5nOjpoYTZkYjNmN2MwNjkzMjBk +NJYYYzxhbGxvYzo6dmVjOjpWZWM8VD4gYXMgYWxsb2M6OnZlYzo6c3BlY19mcm9tX2l0ZXI6OlNw +ZWNGcm9tSXRlcjxULEk+Pjo6ZnJvbV9pdGVyOjpoMDlkN2FhYzk2OGRiOWYxMpcYYzxhbGxvYzo6 +dmVjOjpWZWM8VD4gYXMgYWxsb2M6OnZlYzo6c3BlY19mcm9tX2l0ZXI6OlNwZWNGcm9tSXRlcjxU +LEk+Pjo6ZnJvbV9pdGVyOjpoYmJiOGQwZTI2OTk5OTZiNZgYIl9fd2JnX2dldF9iYXNlbWlncmF0 +aW9uZGF0YV91c2VySWSZGCRfX3diZ19nZXRfYmFzZW1pZ3JhdGlvbmRhdGFfZGV2aWNlSWSaGIIB +PHRyYWNpbmdfc3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFj +aW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+OjpyZWNvcmRfZm9sbG93c19mcm9tOjpo +ZmMxZTRiOTVmZjI0ZTg4N5sYdTx0cmFjaW5nX3N1YnNjcmliZXI6OmxheWVyOjpsYXllcmVkOjpM +YXllcmVkPEwsUz4gYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6cmVj +b3JkOjpoYTVmNDZhNzQ3OTNiN2IxMZwYe2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6cHJlcHJvY2Vzc19zeW5jX2NoYW5nZXM6 +Ont7Y2xvc3VyZX19Pjo6aGNiNGE3OTczZTEzMmU1NmIuMZ0YeXJ1bWFfZXZlbnRzOjpyZWxhdGlv +bjo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cmVsYXRp +b246OkluUmVwbHlUbz46OnNlcmlhbGl6ZTo6aDA5ZDE5YWIyMTIxYmJkNTKeGFZhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjptYXA6OmVudHJ5OjpFbnRyeTxLLFYsQT46Om9yX2luc2VydF93aXRo +OjpoMWM2MWQ5MjM1NDIzOTg3MZ8YczxydW1hX2NsaWVudF9hcGk6OmRlaHlkcmF0ZWRfZGV2aWNl +OjpEZXZpY2VEZWh5ZHJhdGlvbkFsZ29yaXRobSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6 +ZnJvbTo6aGU4YWQ0OTQ4ZDI5NTQwZjKgGHM8cnVtYV9jbGllbnRfYXBpOjprZXlzOjp1cGxvYWRf +c2lnbmF0dXJlczo6djM6OkZhaWx1cmVFcnJvckNvZGUgYXMgY29yZTo6Y29udmVydDo6RnJvbTxU +Pj46OmZyb206OmhhNDFmODAwYzc4NzU5OTg5oRh7PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +OnNldDo6QlRyZWVTZXQ8VD4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpjb2xsZWN0OjpGcm9tSXRl +cmF0b3I8VD4+Ojpmcm9tX2l0ZXI6Omg0ZTVmMjE4ZjRiNGFlY2Riohh7PGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6OnNldDo6QlRyZWVTZXQ8VD4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpjb2xs +ZWN0OjpGcm9tSXRlcmF0b3I8VD4+Ojpmcm9tX2l0ZXI6OmhiMDFmN2Q3NWU3NjVlNzFjoxh7PGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNldDo6QlRyZWVTZXQ8VD4gYXMgY29yZTo6aXRlcjo6 +dHJhaXRzOjpjb2xsZWN0OjpGcm9tSXRlcmF0b3I8VD4+Ojpmcm9tX2l0ZXI6OmhmNTkxNDY1N2Ji +MjQ1ZDg3pBhZPHJ1bWFfZXZlbnRzOjpzZWNyZXQ6OnJlcXVlc3Q6OlJlcXVlc3RBY3Rpb24gYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGMxMDEwOTY1M2UzY2IxMGOlGFdhbnlob3c6OmVycm9y +Ojo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPEU+IGZvciBhbnlob3c6OkVycm9yPjo6ZnJvbTo6 +aDFhZGU2YjQxZjBjNjAxZDimGBFzaWduYXR1cmVfZWQyNTUxOacYGV9fd2JnX21heWJlc2lnbmF0 +dXJlX2ZyZWWoGFk8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTZWNyZXRJbXBvcnRFcnJvciBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjkyMmRkNjNkYmJlNWI2YqkYVWNvcmU6OnNsaWNl +Ojpzb3J0OjptZXJnZV9zb3J0OjpSdW5WZWM8UnVuQWxsb2NGLFJ1bkRlYWxsb2NGPjo6cHVzaDo6 +aDE2Y2M3NjI3MDFjMDY3OTWqGDthbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OmFsbG9jYXRl +X2luOjpoOTNiNzkwNjc0YjJiNzY5ZasYpQFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEss +VixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVz +aDo6aDYzZDAyNzY5ZWEyZDM1NzmsGEBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpz +bGljZV9pbnNlcnQ6OmgxM2JlMTliY2QxOTc4NzFjrRjXAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixOb2RlVHlw +ZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OnJlcGxhY2Vf +a3Y6Omg1ZDJmYmUyNzJiZjU4MWFlrhhVY29yZTo6c2xpY2U6OnNvcnQ6Om1lcmdlX3NvcnQ6OlJ1 +blZlYzxSdW5BbGxvY0YsUnVuRGVhbGxvY0Y+OjpwdXNoOjpoMGM0NjJkM2RjY2U2MDQ5OK8YYjxy +dW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246Okhhc2hBbGdvcml0aG0gYXMgY29yZTo6Y29u +dmVydDo6RnJvbTxUPj46OmZyb206OmgxODQzNzg5NWJjOGRmMWUxsBhpY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1Np +Z25pbmdJZGVudGl0eT46Omg3NWJmMTIxM2Y3MmVjOWRmsRizAW1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6Y3Jvc3Nfc2lnbmluZzo6bWFzdGVyOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6Om1hc3Rlcjo6 +TWFzdGVyUHVia2V5Pjo6ZGVzZXJpYWxpemU6Omg0YTAzOTRiOWU1ZmRjMGVhshjEAW1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6c2VsZl9zaWduaW5nOjpfOjo8aW1wbCBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3Nz +X3NpZ25pbmc6OnNlbGZfc2lnbmluZzo6U2VsZlNpZ25pbmdQdWJrZXk+OjpkZXNlcmlhbGl6ZTo6 +aGMzYzkzZTYyMTU3YmRkNTSzGGE8cnVtYV9ldmVudHM6OnNlY3JldDo6cmVxdWVzdDo6U2VjcmV0 +TmFtZSBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6Omg0ZWIxZWM3MTBlNGJj +MmE5tBh3PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmbGF0dGVuOjpGbGF0TWFwPEksVSxGPiBhcyBj +b3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OnNpemVfaGludDo6aGE0NmQz +NWE3NDAxZTQ5OTK1GEg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aDQ5ZDllOThlOTM4YTljYzC2GMQBbWF0cml4X3Nka19jcnlwdG86OnR5cGVz +Ojpjcm9zc19zaWduaW5nOjp1c2VyX3NpZ25pbmc6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6dXNlcl9z +aWduaW5nOjpVc2VyU2lnbmluZ1B1YmtleT46OmRlc2VyaWFsaXplOjpoYmI3ZTA2YzM0MjZkMGU4 +NLcYQGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OnNsaWNlX2luc2VydDo6aDNmMDA4 +NjdjMzUzMTJjZDa4GHU8dm9kb3plbWFjOjpvbG06Om1lc3NhZ2VzOjpwcmVfa2V5OjpQcm90b0J1 +ZlByZUtleU1lc3NhZ2UgYXMgcHJvc3Q6Om1lc3NhZ2U6Ok1lc3NhZ2U+OjplbmNvZGVkX2xlbjo6 +aDY0OGU2YWQxZDc2OGIzYWO5GEw8c3RkOjppbzo6Y3Vyc29yOjpDdXJzb3I8VD4gYXMgc3RkOjpp +bzo6UmVhZD46OnJlYWRfZXhhY3Q6OmgwYmM2NzY0ZDMwYmMxZDNiuhhMPHN0ZDo6aW86OmN1cnNv +cjo6Q3Vyc29yPFQ+IGFzIHN0ZDo6aW86OlJlYWQ+OjpyZWFkX2V4YWN0OjpoNzRhYzUyMTI2ZDIz +MTZjObsYpQFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVzaDo6aGM4YTljMzk0NzY5Y2Zi +Mje8GGQ8c2VyZGVfanNvbjo6dmFsdWU6OmRlOjpNYXBEZXNlcmlhbGl6ZXIgYXMgc2VyZGU6OmRl +OjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmhlNzY2ZTU2YWI5MGY5MzNlvRiwATxzZXJk +ZV9qc29uOjpyYXc6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpib3hl +ZDo6Qm94PHNlcmRlX2pzb246OnJhdzo6UmF3VmFsdWU+Pjo6ZGVzZXJpYWxpemU6OkJveGVkVmlz +aXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9tYXA6Omg0YzEyNTU1YTA1YjNjMmE3 +vhg0cnl1OjpkMnNfaW50cmluc2ljczo6bXVsX3NoaWZ0XzY0OjpoODI1ZmM0Mzc2ODM2MTUwMr8Y +SzxzZXJkZTo6ZGU6OldpdGhEZWNpbWFsUG9pbnQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10 +OjpoMDQwM2JhMjViMjhiYjg5MsAYCF9fbXVsdGkzwRitAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46 +OnB1c2hfd2l0aF9oYW5kbGU6OmgwMjRjYjZiZDM2NjRiZWUwwhitAWFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6OmhmM2Q5OWViOTEwY2FlYjRjwxi0AWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoMDBhN2JiM2M2NDhhZGQwYsQY +tAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpmcm9tX25ld19pbnRlcm5hbDo6aDJiZmU5 +N2ZiZTYxZTg5NGTFGLQBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6ZnJvbV9uZXdfaW50 +ZXJuYWw6Omg0MzcyYTdlZjBlN2ViNTc5xhi0AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25l +ZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46 +OmZyb21fbmV3X2ludGVybmFsOjpoNzM4ZjQ1M2NlMjYzOGI5N8cYtAFhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6SW50ZXJuYWw+Ojpmcm9tX25ld19pbnRlcm5hbDo6aDc3YWRkNTgyYzU3MzFkNWHIGLQBYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkludGVybmFsPjo6ZnJvbV9uZXdfaW50ZXJuYWw6Omg4NTYzMzI4NWQ3 +ZGI3N2VmyRi0AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVybmFs +OjpoOTczMjE2MDFlNjc2NDdkNcoYtAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpO +b2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxW +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpmcm9t +X25ld19pbnRlcm5hbDo6aDliYmJmOTgxZDBmMDQ5Y2XLGLQBYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Oklu +dGVybmFsPjo6ZnJvbV9uZXdfaW50ZXJuYWw6OmhhNzhmMWIwZTE0YWYzMjdlzBi0AWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoYzViNzYxMzAzNmFlZThj +Zs0YtAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpmcm9tX25ld19pbnRlcm5hbDo6aGNh +ODhjYjYxZThjNGIwZTfOGGg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMg +Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+Ojpmb2xkOjpoZTJkOGRkMzVj +MGJhN2ViOc8YaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjpp +dGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhlMzRlNzQ4YmU4YjBiNmE2 +0Bh1PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmaWx0ZXJfbWFwOjpGaWx0ZXJNYXA8SSxGPiBhcyBj +b3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg2MTgzNjU1OGU5 +MWIxMTk30RhPY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlw +dGlvbjo6RXJyb3I+OjpoM2U0NjE4YWUyM2IwMGYyZNIYdDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9y +OjpJdGVyYXRvcj46Om5leHQ6OmgxOWYyNWMxMTE3YzQ4Yjg00xh0PGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8SyxWLEE+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRl +cmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGNjZDRjMzMyZDJiZDM2ZDXUGI4Bd2FzbV9iaW5kZ2Vu +Ojpjb252ZXJ0OjppbXBsczo6PGltcGwgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OlJl +dHVybldhc21BYmkgZm9yIGNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT4+OjpyZXR1cm5fYWJpOjpo +YzU1ZGQ5MjMyOGFjNzRkMdUYX2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVN +YXA8SyxWLEE+OjpidWxrX2J1aWxkX2Zyb21fc29ydGVkX2l0ZXI6OmhlMjBjNDVhNzk4MzFmZDcw +1hhfYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46OmJ1bGtf +YnVpbGRfZnJvbV9zb3J0ZWRfaXRlcjo6aGI2NDJkMTk2ZDcyMDdjNjjXGHM8dHJhY2luZ19zdWJz +Y3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6c3Vi +c2NyaWJlcjo6U3Vic2NyaWJlcj46OmV4aXQ6Omg3NTU4MDAxNmNhYjNhZTEy2Bh0PHRyYWNpbmdf +c3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6 +OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+OjplbnRlcjo6aGY4Yzc1MWVmNjVmNTA3NzXZGHQ8dHJh +Y2luZ19zdWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdf +Y29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OmV2ZW50OjpoZDllNGNjNDdkMjRmMmZhNdoY +UWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246OkVy +cm9yPjo6aDNlNDYxOGFlMjNiMDBmMmQuMdsYWDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9J +dGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDA1NDQ1NmQ5ZDI0NjY3 +OWXcGBFkZXZpY2VrZXlfZWQyNTUxOd0YO2FsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6YWxs +b2NhdGVfaW46OmgwMzQ3NTQ4NjYyZmQ2NjI53hgVcm9vbWtleWluZm9fc2VuZGVyS2V53xhkbWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpTYXM6OnJlZ2lzdGVyX2NoYW5nZXNf +Y2FsbGJhY2s6Ont7Y2xvc3VyZX19OjpoYzIxNmZkYTFjM2YxMTUxYeAYCHFyX3N0YXRl4RhjbWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpRcjo6cmVnaXN0ZXJfY2hhbmdlc19j +YWxsYmFjazo6e3tjbG9zdXJlfX06OmhkOWJjOGRkZDBjYjBmNjU24hh0bWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25SZXF1ZXN0OjpyZWdpc3Rlcl9jaGFu +Z2VzX2NhbGxiYWNrOjp7e2Nsb3N1cmV9fTo6aGVmMTkzMWNlMDU4NDRmZmHjGFs8cnVtYV9ldmVu +dHM6OmNhbGw6Omhhbmd1cDo6UmVhc29uIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHN0cj4+Ojph +c19yZWY6OmhlYTc4ZjEyYzQ0NDdkNzhm5BjLAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1 +cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmlkZW50aXRpZXM6Ok93blVzZXJJZGVudGl0eTo6dHJ1c3RzX291cl9vd25fZGV2aWNlOjp7 +e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9t +aXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmlkZW50aXRpZXM6Ok93blVzZXJJZGVudGl0eTo6 +dHJ1c3RzX291cl9vd25fZGV2aWNlOjp7e2Nsb3N1cmV9fSxib29sPjo6e3tjbG9zdXJlfX0+Pjo6 +aDZjMTUxOGE5ZDA5ODk4YjjlGPgCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRp +bDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRl +bnRpdGllczo6VXNlcklkZW50aXR5OjpyZXF1ZXN0X3ZlcmlmaWNhdGlvbjo6e3tjbG9zdXJlfX0s +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpVc2VySWRlbnRpdHk6OnJlcXVlc3RfdmVyaWZp +Y2F0aW9uOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb246 +OlZlcmlmaWNhdGlvblJlcXVlc3Q+Ojp7e2Nsb3N1cmV9fT4+OjpoNzMzODVjOTQ4OWJkY2I5YeYY +2AFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVz +dWx0OjpSZXN1bHQ8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Omdvc3Np +cGluZzo6R29zc2lwUmVxdWVzdD4sbWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6 +SW5kZXhlZGRiQ3J5cHRvU3RvcmVFcnJvcj4+Pjo6aDExOGRhZDMwZGI2MGE4NTnnGC5ybXBfc2Vy +ZGU6OmRlY29kZTo6cmVhZF91MTY6OmgxODRkZjUwMjU0MjU4NDZl6BhRYWxsb2M6OnZlYzo6c3Bs +aWNlOjo8aW1wbCBhbGxvYzo6dmVjOjpkcmFpbjo6RHJhaW48VCxBPj46OmZpbGw6OmhkZGNhMmZh +NTdiNDMzZWI06RitAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6Omg0 +ZTM0Y2U1YzA0ODE0MDRh6hitAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVS +ZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5k +bGU6Omg3YjIwYTllNTlhM2M5YjQ46xhfYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpC +VHJlZU1hcDxLLFYsQT46OmJ1bGtfYnVpbGRfZnJvbV9zb3J0ZWRfaXRlcjo6aGZmOWZjMTUzNDEy +Yjc2OWTsGIEBPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWPiBh +cyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkZyb21JdGVyYXRvcjwoSyxWKT4+Ojpmcm9t +X2l0ZXI6Omg3OGJjNWVmZjQwMjY5MDJh7RhfYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFw +OjpCVHJlZU1hcDxLLFYsQT46OmJ1bGtfYnVpbGRfZnJvbV9zb3J0ZWRfaXRlcjo6aDNiM2M4OTEz +M2U4NTlkMznuGF9hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixB +Pjo6YnVsa19idWlsZF9mcm9tX3NvcnRlZF9pdGVyOjpoNDQwZDBjNjVjNmZhNWRhY+8YX2FsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpidWxrX2J1aWxkX2Zy +b21fc29ydGVkX2l0ZXI6OmhmODJhMGQxZDEzYzJhYjZl8BhdPG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6U2lnbmF0dXJlcyBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6Omgx +YmI4OTgxNWU0ZTdlNDJj8RhhPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6U2lnbmluZ0tleXM8 +VD4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplPjo6c2VyaWFsaXplOjpoZGQ3MjkxMjU4ZTI2ZTM5 +MfIY7gE8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6Xzo6PGltcGwgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpz +dGFydDo6VG9EZXZpY2VLZXlWZXJpZmljYXRpb25TdGFydEV2ZW50Q29udGVudD46OmRlc2VyaWFs +aXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omhk +YTljMmUzYjZiMjlhMjE18xhSYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjplbnRyeTo6 +RW50cnk8SyxWLEE+Ojpvcl9kZWZhdWx0OjpoMTJjOTA2Y2E1ZTI3YmM3M/QYP2hhc2hicm93bjo6 +cmF3OjpSYXdUYWJsZUlubmVyOjpkcm9wX2VsZW1lbnRzOjpoOGU0NGEzZmM3Y2U4YWYxOfUYdjxz +ZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudERlc2VyaWFsaXplcjxFPiBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3NlcTo6aDFlN2EzY2MwMzU1MGRk +Yzb2GHc8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnREZXNlcmlhbGl6ZXI8 +RT4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV91bml0OjpoNTBiYmI4 +NzAyNWU4NjhmMvcYUjxhcnJheXZlYzo6YXJyYXl2ZWM6OkRyYWluPFQsXz4gYXMgY29yZTo6b3Bz +Ojpkcm9wOjpEcm9wPjo6ZHJvcDo6aDU3ZGJiZDQxNDRmMGIwMGH4GEp2b2RvemVtYWM6OnR5cGVz +OjplZDI1NTE5OjpFZDI1NTE5U2VjcmV0S2V5Ojpmcm9tX3NsaWNlOjpoNzNmNDdmNTA3MGYxZDY4 +YvkYdjxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudERlc2VyaWFsaXplcjxF +PiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3NlcTo6aDgzOTZjOTZl +MzM3M2U1MWP6GDFydW1hX2NvbW1vbjo6dGltZTo6ZjY0X3RvX3VpbnQ6Omg2MTU2Y2VmOWJmMWM3 +ZGEw+xhRdHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6cmVidWlsZF9jYWxsc2l0ZV9pbnRlcmVzdDo6 +e3tjbG9zdXJlfX06OmhjODM2MjhjNTU2Y2ZjNDE5/BjUAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlOjppbXBvcnRfcm9vbV9rZXlzPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmltcG9ydF9leHBvcnRlZF9y +b29tX2tleXNfaGVscGVyOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Ojp7e2Nsb3N1cmV9fT46 +OmgyZTU3OGQ5N2Y5MjAxOTdl/RhNPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6 +OldyaXRlPjo6d3JpdGVfY2hhcjo6aGQyMGE0YzI0MWU4ZDVlNzMuMjP+GClfX3diZ19nZXRfYmFz +ZW1pZ3JhdGlvbmRhdGFfYmFja3VwVmVyc2lvbv8YLV9fd2JnX2dldF9iYXNlbWlncmF0aW9uZGF0 +YV9iYWNrdXBSZWNvdmVyeUtleYAZOF9fd2JnX2dldF9iYXNlbWlncmF0aW9uZGF0YV9wcml2YXRl +Q3Jvc3NTaWduaW5nTWFzdGVyS2V5gRk9X193YmdfZ2V0X2Jhc2VtaWdyYXRpb25kYXRhX3ByaXZh +dGVDcm9zc1NpZ25pbmdTZWxmU2lnbmluZ0tleYIZPV9fd2JnX2dldF9iYXNlbWlncmF0aW9uZGF0 +YV9wcml2YXRlQ3Jvc3NTaWduaW5nVXNlclNpZ25pbmdLZXmDGS5fX3diZ19nZXRfcGlja2xlZGlu +Ym91bmRncm91cHNlc3Npb25fc2VuZGVyS2V5hBljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omgx +YjI3OWVhYWUwYzA2M2I2hRljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVN +YXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgyODQxZDNmNmM2YTRh +ODBlhhljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg1ZDE5ZGVhN2UxNmNkZDA3hxljPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcD46OmRyb3A6Omg3ZTA2NGM3ZDQyMDZlMzJhiBljPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46 +OmRyb3A6OmhjMzBjYjg5Mzg2YjFkNmRkiRljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1h +cDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhkYjNi +MGNmY2VkNzc1OWFiihljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8 +SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhlNDI4ZDEyZTQ5Y2FlODMy +ixljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNv +cmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhlYTg3NzE1ZTc0OTQwODJljBl7PHRyYWNpbmdf +c3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6 +OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+Ojpkb3duY2FzdF9yYXc6OmhkN2NhYjBkMjNlOGYzYjU3 +jRkzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg0Mzg3NWI3ZTU0YjU1MjY0jhkz +YWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmhkMzM4NGU5MmVkY2I3OGFljxkzYWxs +b2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg1OTViNDZiN2U2MWQ5OTlmkBkzYWxsb2M6 +OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg4NjM2OGFkNDUxYmVjNDI4kRkzYWxsb2M6OnN5 +bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmhlNmM5ZWUzMDQzM2I2MWY4khkZZGVjcnlwdGVkcm9v +bWV2ZW50X3NlbmRlcpMZSzxhbGxvYzo6YWxsb2M6Okdsb2JhbCBhcyBjb3JlOjphbGxvYzo6QWxs +b2NhdG9yPjo6c2hyaW5rOjpoN2ZhMDgzMmQ5YjBiNTViMJQZIF9fd2JnX2Nyb3Nzc2lnbmluZ2tl +eWV4cG9ydF9mcmVllRkVX193Ymdfc2lnbmF0dXJlc19mcmVllhk+c2VyZGU6OmRlOjp2YWx1ZTo6 +TWFwRGVzZXJpYWxpemVyPEksRT46OmVuZDo6aDBkMDlhYmJmMzk3ZTM0ZWGXGWM8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9w +OjpEcm9wPjo6ZHJvcDo6aDg4YzVjMDhjMjMxZTlkMWOYGW5pbmRleGVkX2RiX2Z1dHVyZXM6OnJl +cXVlc3Q6OmZ1dHVyZXM6OmlkYl9yZXF1ZXN0X2Z1dHVyZTo6Y3JlYXRlX2Vycm9yX2Nsb3N1cmU6 +Ont7Y2xvc3VyZX19OjpoMzU4NjgyYzUzN2FiNjk0N5kZdDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9y +OjpJdGVyYXRvcj46Om5leHQ6OmhlZjc0YjhlNTJkYjIxZjU4mhljPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46 +OmRyb3A6OmhkODVkYjM2ZWM2NDJlYjJjmxljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1h +cDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgwMzlj +NTc5ZDU3ZTQwOGNlnBljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8 +SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgxMDQwYjRjODQ5NDIzODhl +nRljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNv +cmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgxNTBkODFiNzNlN2JiNmVlnhljPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJv +cDo6RHJvcD46OmRyb3A6OmgxOTg0MjNlZWM1NGFjOTNmnxljPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRy +b3A6OmgxZTQ5ZDI3M2IxZWExYTJloBljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgzNGZkNmMz +MzQxOTZkYzk0oRljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxW +LEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgzNjRlNWEyNzI3NTlhZjdmohlj +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6 +Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgzODdmMWI5NDlkYzgyYjQxoxljPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6 +RHJvcD46OmRyb3A6OmgzYWQ3YjlmNWU2YzgzODcypBljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6 +Omg1MjE0YWM3MWVjNTY3NjlipRljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRy +ZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg1NzVkNzBkYzIw +MGQ4ZjUyphljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+ +IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg1YTQzMmIwNjdmOTdiNGJipxljPGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9w +czo6ZHJvcDo6RHJvcD46OmRyb3A6Omg1YzY5ZWJlMDBmN2EzMWZhqBljPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6Omg2NjUzMDdkNzYwNGUzOWVmqRljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg3 +M2JmYTIxODQ5ZDI2OTA2qhljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVN +YXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg3OTY3YTk1OTc2Y2M4 +OTM4qxljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg3ZTRiMGUyNGE4ZWMwYWM0rBljPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcD46OmRyb3A6Omg3ZWI4OTNjNWY4MjZiMjNkrRljPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46 +OmRyb3A6Omg5NGE1MmM0ZmFiYTc4NzRhrhljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1h +cDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg5N2M4 +M2I3NTdmZTBkMTE3rxljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8 +SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhiN2ZiMWY5Zjk0MDMzYmYy +sBljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNv +cmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhiZDdhYmJkYmQ1ZmZlZTQ5sRljPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJv +cDo6RHJvcD46OmRyb3A6OmhiZTg5NjI3YWY1NDI4YWFhshljPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRy +b3A6OmhjN2RlN2I2MDIxNjM3MWFksxljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhkNDMzZDkw +ZDEzNzEzNWU3tBlabWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6RGV2aWNl +Ojppc19kZXZpY2Vfb3duZXJfdmVyaWZpZWQ6OmhjYjNiYWU2YjdmMzk2MjEwtRlxPGNvcmU6Oml0 +ZXI6OmFkYXB0ZXJzOjpjbG9uZWQ6OkNsb25lZDxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0 +ZXJhdG9yOjpJdGVyYXRvcj46OnNpemVfaGludDo6aGQ1MjVkZjdjNTcwZTUxNzO2GXZzZXJkZV9q +c29uOjp2YWx1ZTo6ZGU6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyIGZvciBzZXJkZV9q +c29uOjp2YWx1ZTo6VmFsdWU+OjpkZXNlcmlhbGl6ZV9tYXA6Omg0MmRmY2RiMmQyYjdkNzg2txl2 +c2VyZGVfanNvbjo6dmFsdWU6OmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplciBmb3Ig +c2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPjo6ZGVzZXJpYWxpemVfbWFwOjpoMjdlMWQyNzljZjUx +YmI4Y7gZdnNlcmRlX2pzb246OnZhbHVlOjpkZTo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZXIgZm9yIHNlcmRlX2pzb246OnZhbHVlOjpWYWx1ZT46OmRlc2VyaWFsaXplX21hcDo6aDZkMWI3 +OTMyYzk2YmMyZGa5GWY8c2VyZGU6OmRlOjp2YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEksRT4gYXMg +c2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDE0M2NlMTEwZTY5YzNk +Mzm6GWY8c2VyZGU6OmRlOjp2YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRl +OjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDYxOTljMmMyYmFjOWM5Mje7GWY8c2Vy +ZGU6OmRlOjp2YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nl +c3M+OjpuZXh0X2VsZW1lbnRfc2VlZDo6aDhjMzU4ZDFlZjhhNWI0MDi8GWY8c2VyZGU6OmRlOjp2 +YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0 +X2VsZW1lbnRfc2VlZDo6aGM1ZjI5OWQ0NTNiYjJiOWS9GTNhbGxvYzo6c3luYzo6QXJjPFQsQT46 +OmRyb3Bfc2xvdzo6aDAyYWJmNmEwMjg0NTkxMDS+GTt0aW1lOjpmb3JtYXR0aW5nOjpmb3JtYXRf +bnVtYmVyX3BhZF96ZXJvOjpoNGVhYTNmNjViMDJkN2RlY78ZZTx2b2RvemVtYWM6Om1lZ29sbTo6 +bWVzc2FnZTo6TWVnb2xtTWVzc2FnZSBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJp +YWxpemU6OmhjMjQ1ZTM0NGQ5ZWU2M2MxwBlabWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlv +bjo6c2FzOjpzYXNfc3RhdGU6OlNhc1N0YXRlPFM+Ojp0aW1lZF9vdXQ6OmgwYTk3YzUyZmViYTlm +NTE0wRl7PHRyYWNpbmdfc3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBh +cyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+Ojpkb3duY2FzdF9yYXc6Omgx +ZTI1OTI5ZmUzN2RlYzk2whljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVN +YXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg5NzIzMmQyYmY0NmRh +MTUzwxljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg3OWJmYzJlOGQxYWQ5MTFmxBljPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcD46OmRyb3A6OmhhMDJhODk3NzllMDQxMWFjxRlHPHNpZ25hdHVyZTo6ZXJyb3I6 +OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDEwMjA1ZTQwNWZhNzg2NDPGGS5i +YXNlNjQ6OmVuY29kZTo6ZW5jb2RlZF9sZW46OmgyNDJmM2MxNTM5YjUwNWY1xxljPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJv +cDo6RHJvcD46OmRyb3A6OmgzMTRhMjZmZTA5ZGNkY2JhyBljPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRy +b3A6OmhjYjQ5NTcwNTFiMzcxMzIwyRljPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhkNzMwZTUx +NjI4MDFiYTRkyhl2c2VyZGVfanNvbjo6dmFsdWU6OmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2Vy +aWFsaXplciBmb3Igc2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPjo6ZGVzZXJpYWxpemVfc2VxOjpo +MTY1MDk0ODBjZmM2ZjYwOMsZYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVl +TWFwPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNWI2Mjk0OTc2MzEw +ZTgzN8wZYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBh +cyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNzVjNmNiNDFlNzRjOTQ2N80ZJ3N0ZDo6 +dGhyZWFkOjpjdXJyZW50OjpoZDI2NDYyOTg2MWZkMzEzN84ZbDxjb3JlOjppdGVyOjphZGFwdGVy +czo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRl +cmF0b3I+OjpuZXh0OjpoNmNjMGEwZDA0YTM4NGJhMM8ZIG9sbW1hY2hpbmVfYm9vdHN0cmFwQ3Jv +c3NTaWduaW5n0BkZb2xtbWFjaGluZV9leHBvcnRSb29tS2V5c9EZNW1hdHJpeF9zZGtfY29tbW9u +OjpleGVjdXRvcjo6c3Bhd246OmhmYTU0M2I2YTlkMzYxOGI20hlgbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6cmVzcG9uc2VzOjpFbmNyeXB0aW9uSW5mbzo6c2VuZGVyX2NsYWltZWRfZWQyNTUxOV9r +ZXk6OmhhM2ViODllOTA3YmFiMzVj0xkwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omgw +NmFmMjU0YjQwZDljNDIx1BkwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzMjA3ZTNi +MTcwM2ZmOTky1RkwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2M2U0Y2EzODdhYmUy +MDBj1hkwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2NzkyYjAxZTI1N2UwMDU41xkw +PCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5MDZlNzBhZTU4ODEyYjE42BkwPCZUIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5OTE3Yzc5ZjZmNTk3YmM52RkwPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmhhOGM4Y2EwZGFlYWRhODAz2hkwPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmhhYzNmZGY2ODdhNDUyZmYz2xkwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6OmhhZDRmYTNjYzAxNWE5MWM43BkwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +OmhkM2UzNWI2MGRmZTJiMGEx3RkwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlNGNm +OWVjODUzOWQ2MTI53hk0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoZDk5NDNi +MTk2ZGNhYWYxMt8ZgwE8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dm9kb3plbWFjOjpDdXJ2ZTI1 +NTE5UHVibGljS2V5IGFzIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpGcm9tV2FzbUFi +aT46OmZyb21fYWJpOjpoYTFkYzE3YTc5N2QzYjVmZeAZIV9fd2JnX3NldF9pZGVudGl0eWtleXNf +Y3VydmUyNTUxOeEZMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYWI4MTcxYzRmODMx +ZTJkY+IZiQNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRy +eV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNo +aW5lOjpleHBvcnRfY3Jvc3Nfc2lnbmluZ19rZXlzOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmV4cG9ydF9jcm9zc19zaWduaW5nX2tleXM6Ont7Y2xv +c3VyZX19LGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnN0b3Jl +OjpDcm9zc1NpZ25pbmdLZXlFeHBvcnQ+Pjo6e3tjbG9zdXJlfX0+Pjo6aGI4ODMzYzc3ZGFhMTdk +MzHjGbkBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5 +cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpyZXNldF9iYWNrdXBfc3RhdGU6Ont7Y2xvc3VyZX19 +Pjo6aGIzOTVhMTNmODQ4OWNiMjjkGURpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9jdXJzb3I6Oklk +YkN1cnNvcjxUPjo6a2V5OjpoZDgxMWIxNmIwNjZlMTRjYuUZRWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I+OjpoMzAyNmFhYmE3NTYwNDVjMeYZNWNvcmU6 +OnJlc3VsdDo6UmVzdWx0PFQsRT46Om1hcF9lcnI6OmgzM2YwMjI4MTY5MjM1MWE35xlMY2hhY2hh +MjBwb2x5MTMwNTo6Y2lwaGVyOjpDaXBoZXI8Qz46OmF1dGhlbnRpY2F0ZV9sZW5ndGhzOjpoZjFm +NGQ1NTdjOWQ0Yzg2Y+gZjgE8aW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfb2JqZWN0X3N0b3JlOjpJ +ZGJPYmplY3RTdG9yZSBhcyBpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9xdWVyeV9zb3VyY2U6Oklk +YlF1ZXJ5U291cmNlPjo6b3Blbl9jdXJzb3I6OmhlYjM1OGI3YjZiMjU4YjY26RmtAWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6OmgwNTRhN2M2YmIxMDQwMmZk6hmtAWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6Omg1NTNkMGRmOTY4MjE1ZTY3 +6xlKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46Omluc2Vy +dDo6aDdmNzhiNjZmNTBhYTVlZDPsGWw8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vz +c2lvbnM6OlNlc3Npb25DcmVhdGlvbkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6 +aDExYjUyMDBjNmUwYWExOGXtGU88cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpUaHJlYWQgYXMgY29y +ZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg0MGU1MmFjOGJjYzcwOGM37hk0Y29yZTo6aGFzaDo6 +QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoMDI0OTNjZTZlZjdkODQxMu8Zajx0cmFjaW5nX3N1YnNj +cmliZXI6OnJlZ2lzdHJ5OjpzaGFyZGVkOjpEYXRhSW5uZXIgYXMgc2hhcmRlZF9zbGFiOjpjbGVh +cjo6Q2xlYXI+OjpjbGVhcjo6aGRlNDkzZTM2ZGMxZDUwNDXwGWo8dm9kb3plbWFjOjpvbG06OnNl +c3Npb246OmRvdWJsZV9yYXRjaGV0OjpBY3RpdmVEb3VibGVSYXRjaGV0IGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmgxY2UxOGNhY2ZlZGU2NDkz8RlTdm9kb3plbWFjOjptZWdvbG06OnNlc3Np +b25fa2V5czo6RXhwb3J0ZWRTZXNzaW9uS2V5Ojpmcm9tX2Jhc2U2NDo6aGE1ZWUzNTU5YjdkMjUx +MDXyGUt2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9rZXlzOjpTZXNzaW9uS2V5Ojpmcm9tX2Jh +c2U2NDo6aGJmYmJlYTAwZWE2Yjc1MzbzGUx2b2RvemVtYWM6OnR5cGVzOjpjdXJ2ZTI1NTE5OjpD +dXJ2ZTI1NTE5UHVibGljS2V5Ojp0b192ZWM6Omg5MzVkOGI3NDgyNDk5ZWU49BlOdm9kb3plbWFj +OjptZWdvbG06Omdyb3VwX3Nlc3Npb246Okdyb3VwU2Vzc2lvbjo6c2Vzc2lvbl9rZXk6OmhmYTFk +Y2MyZDQ2NjQxYmRm9RlrPHJ1bWFfY29tbW9uOjp0b19kZXZpY2U6OkRldmljZUlkT3JBbGxEZXZp +Y2VzIGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208JnN0cj4+Ojp0cnlfZnJvbTo6aDI3NzEzN2Iz +NGM1ZDQ4Y2b2GaIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9u +PGNvcmU6OnJlc3VsdDo6UmVzdWx0PGNvcmU6OmNvbnZlcnQ6OkluZmFsbGlibGUscnVtYV9jb21t +b246OmNhbm9uaWNhbF9qc29uOjpDYW5vbmljYWxKc29uRXJyb3I+Pj46OmgwODdlNTUxNDljMzQ4 +NmJh9xlOcnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2Vfa2V5X2lkOjpEZXZpY2VLZXlJ +ZDo6cGFyc2U6OmhmNjUyYWM5OTI2NGFlM2I3+BlDcnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1 +c2VyX2lkOjpVc2VySWQ6OnBhcnNlOjpoYWEzNmFiNjZiOWM5NDNmMvkZRXJ1bWFfY29tbW9uOjpp +ZGVudGlmaWVyczo6ZXZlbnRfaWQ6OkV2ZW50SWQ6OnBhcnNlOjpoNDQ5Yzc2YmQxOGYxNDdiZPoZ +Q3J1bWFfY29tbW9uOjppZGVudGlmaWVyczo6cm9vbV9pZDo6Um9vbUlkOjpwYXJzZTo6aGI0ZWFk +OTc3MmQ4MTE2NzP7GTJ0cmFjaW5nOjpzcGFuOjpTcGFuOjpyZWNvcmRfYWxsOjpoZTRhNDc0ZDMz +ODdkNjhmMfwZPnNlcmRlX2pzb246OnZhbHVlOjpkZTo6TWFwRGVzZXJpYWxpemVyOjpuZXc6Omg1 +Y2QxZGE2YjJkOTU4ZDZl/Rn+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRs +ZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmhiOGVjY2E4ZGQ0NmJiMGNl/hkiX193YmdfZ2V0 +X2JhY2t1cGtleXNfYmFja3VwVmVyc2lvbv8ZKl9fd2JnX2dldF9iYXNlbWlncmF0aW9uZGF0YV9w +aWNrbGVkQWNjb3VudIAaIV9fd2JnX3NpZ25hdHVyZXVwbG9hZHJlcXVlc3RfZnJlZYEaHV9fd2Jn +X2RldmljZWtleWFsZ29yaXRobV9mcmVlghoRX193YmdfZGV2aWNlX2ZyZWWDGhZfX3diZ191c2Vy +ZGV2aWNlc19mcmVlhBomY3Jvc3NzaWduaW5na2V5ZXhwb3J0X3NlbGZfc2lnbmluZ19rZXmFGiRj +cm9zc3NpZ25pbmdrZXlleHBvcnRfdXNlclNpZ25pbmdLZXmGGhVyb29ta2V5aW5mb19zZXNzaW9u +SWSHGnA8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRv +U3RvcmVFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6OmgzMGQxNGQ0Y2M3NWNk +Y2E1iBphYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OkxhenlMZWFmUmFuZ2U8 +Qm9ycm93VHlwZSxLLFY+Ojppbml0X2Zyb250OjpoNDEzMGViZmQ0Y2U3ZWQ2Y4kaYWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjpMYXp5TGVhZlJhbmdlPEJvcnJvd1R5cGUsSyxW +Pjo6aW5pdF9mcm9udDo6aGI4Nzk0M2M1NTUyNjA1NTGKGj9jb3JlOjpzbGljZTo6c29ydDo6aW5z +ZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aDg2ODQ3NDk5NDIxZWRhMGWLGj9jb3JlOjpzbGljZTo6 +c29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aDIzM2E3NTQ0ZGU3MDQxYzWMGj9jb3Jl +OjpzbGljZTo6c29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aDFkMTU3MTY1NGNmZDE5 +MmGNGj9jb3JlOjpzbGljZTo6c29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aDBjMWU1 +ZTM4YzgyMjZiYTmOGj9jb3JlOjpzbGljZTo6c29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVm +dDo6aDRiMTAxY2E5MDBlOTg5NzaPGj9jb3JlOjpzbGljZTo6c29ydDo6aW5zZXJ0aW9uX3NvcnRf +c2hpZnRfbGVmdDo6aDMxNTFiZmQ2MTA3ODkwODaQGj9jb3JlOjpzbGljZTo6c29ydDo6aW5zZXJ0 +aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGM2MDFhOGZjY2M5MWYwNGaRGlJhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6bGFzdF9rZXlfdmFsdWU6OmgxOGZiMzky +ZjhkNWExZmUxkho8c2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwOjpzZXJpYWxpemVfZW50cnk6Omgx +ZWY0NzdhY2U1NzgxYzRjkxpHPGNvcmU6OnRpbWU6OkR1cmF0aW9uIGFzIGNvcmU6Om9wczo6YXJp +dGg6OlN1Yj46OnN1Yjo6aDg0ZDdiMjcwNTJjZDliOTCUGn5jb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OlRvRGV2aWNlS2V5VmVy +aWZpY2F0aW9uQWNjZXB0RXZlbnRDb250ZW50Pjo6aDVhNmJkMTY5NWNjNmZlMTeVGmFhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6TGF6eUxlYWZSYW5nZTxCb3Jyb3dUeXBlLEss +Vj46OmluaXRfZnJvbnQ6OmgwMTc2OTM4N2VmMDI2ZjhmlhphYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bmF2aWdhdGU6OkxhenlMZWFmUmFuZ2U8Qm9ycm93VHlwZSxLLFY+Ojppbml0X2Zyb250 +OjpoMDFmMTRkMTE2OWJkYWI4N5caYWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRl +OjpMYXp5TGVhZlJhbmdlPEJvcnJvd1R5cGUsSyxWPjo6aW5pdF9mcm9udDo6aDA0MWY1ZDZhNTU0 +MGIxNTSYGmFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6TGF6eUxlYWZSYW5n +ZTxCb3Jyb3dUeXBlLEssVj46OmluaXRfZnJvbnQ6OmgwN2I2YmE4M2Q4YjE2NzVjmRphYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OkxhenlMZWFmUmFuZ2U8Qm9ycm93VHlwZSxL +LFY+Ojppbml0X2Zyb250OjpoMTgwOGJkNDA4Mzc3Y2QyNZoaYWFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5hdmlnYXRlOjpMYXp5TGVhZlJhbmdlPEJvcnJvd1R5cGUsSyxWPjo6aW5pdF9mcm9u +dDo6aDI4MjJiNmMzMWI3NjVmMDmbGmFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0 +ZTo6TGF6eUxlYWZSYW5nZTxCb3Jyb3dUeXBlLEssVj46OmluaXRfZnJvbnQ6OmgzMjlmYzE0ZWE5 +NjhmMzE4nBphYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OkxhenlMZWFmUmFu +Z2U8Qm9ycm93VHlwZSxLLFY+Ojppbml0X2Zyb250OjpoM2E5Zjg3ZWZlNWUzMDc3Np0aYWFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjpMYXp5TGVhZlJhbmdlPEJvcnJvd1R5cGUs +SyxWPjo6aW5pdF9mcm9udDo6aDUxNTRlMTU0MDJiYjQ3ZTSeGmFhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpuYXZpZ2F0ZTo6TGF6eUxlYWZSYW5nZTxCb3Jyb3dUeXBlLEssVj46OmluaXRfZnJv +bnQ6Omg3NWIxMDk1NTQ0NzllNDUynxphYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdh +dGU6OkxhenlMZWFmUmFuZ2U8Qm9ycm93VHlwZSxLLFY+Ojppbml0X2Zyb250OjpoYTdjZTM4ZTky +OWQzM2RiMqAaYWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjpMYXp5TGVhZlJh +bmdlPEJvcnJvd1R5cGUsSyxWPjo6aW5pdF9mcm9udDo6aGViY2JiM2M3MjIwOGY1ZGWhGls8ZGln +ZXN0Ojpjb3JlX2FwaTo6d3JhcHBlcjo6Q29yZVdyYXBwZXI8VD4gYXMgY29yZTo6Y2xvbmU6OkNs +b25lPjo6Y2xvbmU6Omg1OGRkMTY0YTI4NzZlOGRmohpePG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9y +ZTo6U2VjcmV0SW1wb3J0RXJyb3IgYXMgY29yZTo6ZXJyb3I6OkVycm9yPjo6c291cmNlOjpoMDdk +ZmI0OGMwM2MzNGUyZqMagQE8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnRE +ZXNlcmlhbGl6ZXI8RT4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9u +ZXd0eXBlX3N0cnVjdDo6aDg5ZGNkMmM1ZjU4ZWZkZDCkGmFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpuYXZpZ2F0ZTo6TGF6eUxlYWZSYW5nZTxCb3Jyb3dUeXBlLEssVj46OmluaXRfZnJvbnQ6 +OmgxNjI0MGM1MjVmZDhkOGFkpRpAPHU4IGFzIG1hdHJpeF9waWNrbGU6OmVuY29kZTo6RW5jb2Rl +Pjo6ZW5jb2RlOjpoODU1MWI5YWI4ZjA3NDQ5NKYaP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRp +b25fc29ydF9zaGlmdF9sZWZ0OjpoNWUyOTlmZWY3ZDAwZjFhOKcaP3Rva2lvOjpzeW5jOjpiYXRj +aF9zZW1hcGhvcmU6OlNlbWFwaG9yZTo6bmV3OjpoZjFjMjhhYWVjYWExOGVjN6gaSmFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpyZW1vdmU6OmhlMTVmOGE3 +MzAzNzc5NWIwqRphYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OkxhenlMZWFm +UmFuZ2U8Qm9ycm93VHlwZSxLLFY+Ojppbml0X2Zyb250OjpoYTg3YWVjNWQ3YTE0ODM5N6oaP2Nv +cmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0OjpoMDQyZTdhODY3ZTA4 +MWI3MasaWjxzZXJkZV9qc29uOjp2YWx1ZTo6c2VyOjpTZXJpYWxpemVNYXAgYXMgc2VyZGU6OnNl +cjo6U2VyaWFsaXplTWFwPjo6ZW5kOjpoOGE1NTExZWRlZDdlMzllY6waOGNvcmU6OmZtdDo6YnVp +bGRlcnM6OkRlYnVnTWFwOjpmaW5pc2g6Omg3MGUzM2YyMDcwY2QxNTAxrRqtAWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6Omg4ZDY4ZmZjZDVlNzllNDQzrhqZAmFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9k +ZVJlZjxCb3Jyb3dUeXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OkxlYWZPckludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OktWPj46Om5leHRfYmFja19sZWFmX2VkZ2U6OmgzZDgwN2I5OWNjOTVmMzg4rxpvPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246Om1hY2hpbmU6OlZlcmlmaWNhdGlvbk1hY2hpbmUg +YXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg3Y2UwYWFlNGNhMmE5MTA5sBpgY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0 +b1N0b3JlRXJyb3I+OjpoMjgxOTRmZTg5ZWI0Y2RhYS44sRpRY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3I+OjpoYTAyMzU3NTdiMDI0ZGE2 +OS45shpSY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6 +T2xtRXJyb3I+OjpoYTAyMzU3NTdiMDI0ZGE2OS4xMLMaV2Z1dHVyZXNfdXRpbDo6c3RyZWFtOjpm +dXR1cmVzX3Vub3JkZXJlZDo6RnV0dXJlc1Vub3JkZXJlZDxGdXQ+OjpsaW5rOjpoNTY0MGNmNDY1 +ZWZjZTI5MrQaV2Z1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6RnV0dXJl +c1Vub3JkZXJlZDxGdXQ+OjpsaW5rOjpoYWVmNTU3YzI4MzFkNzYxYrUaL2NvcmU6Om9wdGlvbjo6 +T3B0aW9uPFQ+OjptYXA6OmgyNzhhZDY2OGM1MDI1ZDhlthpePHNlcmRlX2pzb246OnNlcjo6Q29t +cG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+OjpzZXJpYWxpemVfa2V5Ojpo +OWMwZTVmMzEwZWJjMmI1ZbcaTWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2RvemVtYWM6Om9s +bTo6YWNjb3VudDo6QWNjb3VudD46OmgxNjEzMjcxMDYxOGY2ZTRhuBpZYWxsb2M6OnZlYzo6aW50 +b19pdGVyOjpJbnRvSXRlcjxULEE+Ojpmb3JnZXRfYWxsb2NhdGlvbl9kcm9wX3JlbWFpbmluZzo6 +aDEzNmVkMjdhZjZmMGMzNze5GktydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnNlcnZlcl9uYW1l +OjpTZXJ2ZXJOYW1lOjpwYXJzZTo6aDJhMmE2ZmM3ODk4YWZhOGK6GjRjb3JlOjpoYXNoOjpCdWls +ZEhhc2hlcjo6aGFzaF9vbmU6OmgzMzVmMzc2Nzk0YWE0NTkyuxo0Y29yZTo6aGFzaDo6QnVpbGRI +YXNoZXI6Omhhc2hfb25lOjpoNjY3ZTkyMWNkNjNhZTM1NrwaFWRldmljZWtleWlkX2FsZ29yaXRo +bb0aSTxUIGFzIGNvcmU6OnNsaWNlOjpjbXA6OlNsaWNlQ29udGFpbnM+OjpzbGljZV9jb250YWlu +czo6aGQyYWZjOTkxNzE2MGVmZjm+GvoCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNf +dXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +bWFjaGluZTo6T2xtTWFjaGluZTo6Z2V0X3Jvb21fZXZlbnRfZW5jcnlwdGlvbl9pbmZvOjp7e2Ns +b3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNl +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9yb29tX2V2 +ZW50X2VuY3J5cHRpb25faW5mbzo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +cmVzcG9uc2VzOjpFbmNyeXB0aW9uSW5mbz46Ont7Y2xvc3VyZX19Pj46OmgyNTQwNDQwYmFlYzg4 +ZmJmvxpkPHNlcmRlX2pzb246OnZhbHVlOjpzZXI6OlNlcmlhbGl6ZU1hcCBhcyBzZXJkZTo6c2Vy +OjpTZXJpYWxpemVNYXA+OjpzZXJpYWxpemVfa2V5OjpoNWI2OTE0NzUwNjhmMmM0YcAaZDxzZXJk +ZV9qc29uOjp2YWx1ZTo6c2VyOjpTZXJpYWxpemVNYXAgYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXpl +TWFwPjo6c2VyaWFsaXplX2tleTo6aDA2ZmY4MmExNjk2YWZjYzPBGuUBPHJ1bWFfZXZlbnRzOjpy +b29tOjptZXNzYWdlOjpyZWxhdGlvbl9zZXJkZTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnJlbGF0aW9uX3NlcmRlOjpLbm93 +blJlbGF0aW9uRGVIZWxwZXI+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6 +OmRlOjpWaXNpdG9yPjo6dmlzaXRfdTY0OjpoODAxOGM2ODA2NjI5MWRjMMIaPGV5ZWJhbGw6OnNo +YXJlZDo6U2hhcmVkT2JzZXJ2YWJsZTxUPjo6Z2V0OjpoOTU5Mzg2NTE0MjY4ZjI1ZsMaXjxzZXJk +ZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwPjo6 +c2VyaWFsaXplX2tleTo6aDM4ZjcyOTEzY2E3OGI4MDDEGl48c2VyZGVfanNvbjo6c2VyOjpDb21w +b3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcD46OnNlcmlhbGl6ZV9rZXk6Omg5 +NjhkYThmNDcyZmVkY2I5xRoyc2VyZGU6OmRlOjpFcnJvcjo6aW52YWxpZF92YWx1ZTo6aGU4OWJi +YTgwZTQ1NTg2NjPGGmE8cnVtYV9ldmVudHM6OmVudW1zOjpUb0RldmljZUV2ZW50VHlwZSBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6Omg5Zjc5NjI5Mjk4MDA0NWVjxxox +c2VyZGU6OmRlOjpFcnJvcjo6aW52YWxpZF90eXBlOjpoNTcwZjc5NTM1YzcwMjI1N8gaXjxzZXJk +ZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwPjo6 +c2VyaWFsaXplX2tleTo6aDhmZGU2NzU0NmE1YjZmNjbJGl48c2VyZGVfanNvbjo6c2VyOjpDb21w +b3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcD46OnNlcmlhbGl6ZV9rZXk6Omhk +YjA3MWEwOGUwYzU0N2M1yhpfbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5n +OjptYXN0ZXI6Ok1hc3RlclB1YmtleTo6Z2V0X2ZpcnN0X2tleTo6aGQ4Y2JjNDhjYTllZDA0MDHL +GlZjaXBoZXI6OnN0cmVhbV93cmFwcGVyOjpTdHJlYW1DaXBoZXJDb3JlV3JhcHBlcjxUPjo6Y2hl +Y2tfcmVtYWluaW5nOjpoN2EyOThmN2RhOTQyNjAzOMwaZDxkaWdlc3Q6OmNvcmVfYXBpOjp3cmFw +cGVyOjpDb3JlV3JhcHBlcjxUPiBhcyBkaWdlc3Q6OkZpeGVkT3V0cHV0Pjo6ZmluYWxpemVfaW50 +bzo6aDRjYjEyOGYzMTlkZTAwMWLNGpABPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmbGF0dGVuOjpG +bGF0dGVuQ29tcGF0PEksVT4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0 +b3I+Ojp0cnlfZm9sZDo6ZmxhdHRlbjo6e3tjbG9zdXJlfX06OmgxNmNjZDdhZTE0ODRlYzEzzhpG +c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpFbnRyeTxLLFY+Ojpvcl9kZWZhdWx0OjpoYzVh +Njc0NzkzYWM3ZDhmNc8aNGNvcmU6Omhhc2g6OkJ1aWxkSGFzaGVyOjpoYXNoX29uZTo6aDJiYTli +NWQ3MjYwYmE2ZmHQGkNjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6YW5kX3RoZW5fb3Jf +Y2xlYXI6OmhjMWQ4NDU3MzY3Y2ZiYjk10RpePHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxG +PiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+OjpzZXJpYWxpemVfa2V5OjpoNmE2NGI2YzNl +MGY2ZjU4M9IaXjxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6 +U2VyaWFsaXplTWFwPjo6c2VyaWFsaXplX2tleTo6aGJmYTUxMTJmNWNlM2NhNDDTGnlzZXJkZV9q +c29uOjp2YWx1ZTo6ZGU6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyIGZvciBzZXJkZV9q +c29uOjp2YWx1ZTo6VmFsdWU+OjpkZXNlcmlhbGl6ZV9zdHJpbmc6OmhkNjMwNzdhYTBmYzgwNmFm +1Bp5c2VyZGVfanNvbjo6dmFsdWU6OmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplciBm +b3Igc2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPjo6ZGVzZXJpYWxpemVfc3RyaW5nOjpoZjNjZjAw +ZWI3Y2Y4ODg4YdUaZDxzZXJkZV9qc29uOjp2YWx1ZTo6c2VyOjpTZXJpYWxpemVNYXAgYXMgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplTWFwPjo6c2VyaWFsaXplX2tleTo6aDVhYmJmZWI4NTVhZmQ0NznW +Glhjb3JlOjpzdHI6OnRyYWl0czo6PGltcGwgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8ST4gZm9y +IHN0cj46OmluZGV4OjpoZTA2NGMwNThlZTQyZWU0Zi4x1xotYWxsb2M6OnZlYzo6VmVjPFQsQT46 +OnB1c2g6OmhhOTY2NjhmMTQ0ODEyNjhk2BpQY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6Q2hhbmdlcz46OmhkMjRmMDhlZjMxMzAxN2IxLjHZGmBjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OlJvb21NZXNz +YWdlRXZlbnRDb250ZW50Pjo6aGEwMmYxMzc0Zjc5MWFlNDHaGlBjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpDaGFuZ2VzPjo6aGQyNGYwOGVmMzEzMDE3 +YjEuM9saUmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+Ojps +YXN0X2tleV92YWx1ZTo6aDY0MjkzZjgzMzYzOTcwNTjcGhZvbG1tYWNoaW5lX2Rpc3BsYXlOYW1l +3Roab2xtbWFjaGluZV9pc0JhY2t1cEVuYWJsZWTeGiFlbmNyeXB0ZWRhdHRhY2htZW50X2VuY3J5 +cHRlZERhdGHfGh1fX3diZ19kZWNyeXB0ZWRyb29tZXZlbnRfZnJlZeAaR3dhc21fYmluZGdlbl9m +dXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06Omg2ZDU5Njk1NjAyYmQ5NDg4 +4RpHd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6 +aGUwYjVhYTEwMmY2M2JmNDfiGk48anNfaW50Ojp1aW50OjpVSW50IGFzIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aGQ0OGE0ZTU5MTU5ZmRlZmLjGmJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OlJvb21NZXNzYWdlRXZlbnRD +b250ZW50Pjo6aGEwMmYxMzc0Zjc5MWFlNDEuMeQaF2RldmljZWtleWFsZ29yaXRobV9uYW1l5RoZ +ZWQyNTUxOXB1YmxpY2tleV90b0Jhc2U2NOYaGWVkMjU1MTlzaWduYXR1cmVfdG9CYXNlNjTnGhRf +X3diZ19kZXZpY2VrZXlfZnJlZegaEmRldmljZWtleV90b0Jhc2U2NOkaH2Nyb3Nzc2lnbmluZ2tl +eWV4cG9ydF9tYXN0ZXJLZXnqGhJzaWduYXR1cmVfdG9CYXNlNjTrGhtzYXNfcmVnaXN0ZXJDaGFu +Z2VzQ2FsbGJhY2vsGhpxcl9yZWdpc3RlckNoYW5nZXNDYWxsYmFja+0aK3ZlcmlmaWNhdGlvbnJl +cXVlc3RfcmVnaXN0ZXJDaGFuZ2VzQ2FsbGJhY2vuGjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aGM3ZDEzZDdkZTliN2Q0YjXvGlBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjpDaGFuZ2VzPjo6aGQyNGYwOGVmMzEzMDE3YjEuNfAaZmNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlOjp0cmFu +c2FjdGlvbjo6e3tjbG9zdXJlfX0+OjpoNTkxMjIwMjk4OWM4ZTcwZfEawgJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjplbmFibGVfYmFja3VwX3Yx +Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19w +cm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmVuYWJs +ZV9iYWNrdXBfdjE6Ont7Y2xvc3VyZX19LHdhc21fYmluZGdlbjo6SnNWYWx1ZT46Ont7Y2xvc3Vy +ZX19Pj46Omg0ZWNhNWI1OGVjOTkxMzAw8hpfY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnFyY29kZTo6U2NhbkVycm9yPjo6aDM4Y2Y3NTMy +YWIyYTdlNTfzGk5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjpDaGFuZ2VzPjo6aGUzNzhiM2Q5Zjc0MWRlMGH0Gk48anNfaW50Ojp1aW50OjpVSW50IGFz +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aGJiYjFiNTcxNjdkYWUwZjP1 +GoUBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OkxhenlMZWFmUmFuZ2U8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFY+Ojp0YWtlX2Zy +b250OjpoYmJjM2EzOTcyZGU5ZDYxMvYaMWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46Om1hcDo6 +aGFhM2JkYzYyNzFkMGVkY2X3GmE8cnVtYV9ldmVudHM6OmVudW1zOjpUb0RldmljZUV2ZW50VHlw +ZSBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6Omg4ZmZiMjgzZmI5NDM1 +M2Ux+BphPHJ1bWFfZXZlbnRzOjplbnVtczo6VG9EZXZpY2VFdmVudFR5cGUgYXMgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoYjdiOWE1ZGYyY2RmZjk3ZPkaMnNlcmRlOjpk +ZTo6RXJyb3I6OmludmFsaWRfdmFsdWU6OmgyOGI0OWExZTBlMGYyYTQw+hoxc2VyZGU6OmRlOjpF +cnJvcjo6aW52YWxpZF90eXBlOjpoMzNkMmI3N2JkMThmZTIxYvsaP3VuaXZlcnNhbF9oYXNoOjpV +bml2ZXJzYWxIYXNoOjp1cGRhdGVfcGFkZGVkOjpoOTZmZDUxYzhkYzA5ZjI0Yfwaa2luZGV4ZWRf +ZGJfZnV0dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6Y3Vyc29yOjppZGJfY3Vyc29yX2Z1dHVyZTo6 +SWRiQ3Vyc29yRnV0dXJlPFQ+OjpuZXc6Omg2MzJiMTdjNTdkMzM0N2U4/RpkPHNlcmRlX2pzb246 +OnZhbHVlOjpzZXI6OlNlcmlhbGl6ZU1hcCBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+Ojpz +ZXJpYWxpemVfa2V5OjpoMDEwM2Y3ZmZmOTE2MGU3M/4aVG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06 +OnNpZ25pbmc6OnBrX3NpZ25pbmc6OlNpZ25pbmc6OmZyb21fYmFzZTY0OjpoYzVhMjNjZmNjNGNh +MmMzMv8aVG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OmNhY2hlOjpWZXJpZmljYXRp +b25DYWNoZTo6Z2V0X3FyOjpoNDllYWI3N2FiOTI2NTc5OIAbnQFtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmNyb3NzX3NpZ25pbmc6OjxpbXBsIGNvcmU6OmNtcDo6UGFydGlhbEVxIGZvciBtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6Om1hc3Rlcjo6TWFzdGVyUHVia2V5 +Pjo6ZXE6Omg0NTczZTVjOGI3ZTAwMmVhgRuFAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5h +dmlnYXRlOjpMYXp5TGVhZlJhbmdlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6RHlpbmcsSyxWPjo6dGFrZV9mcm9udDo6aDAwNWNmODcyMzQxNTE4N2KCG4UBYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OkxhenlMZWFmUmFuZ2U8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFY+Ojp0YWtlX2Zyb250OjpoMGVk +MjlkN2Y4MWVlYjk0OYMbhQFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6TGF6 +eUxlYWZSYW5nZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5n +LEssVj46OnRha2VfZnJvbnQ6OmhlY2VkOTg4MzU5MjAyNTI2hBswPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6Omg3MGRjYjk5MWUwYzNhNzExhRtsPG1hdHJpeF9zZGtfY3J5cHRvOjpiYWNr +dXBzOjprZXlzOjpkZWNyeXB0aW9uOjpEZWNvZGVFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+ +Ojpzb3VyY2U6OmhlOGE2Yjg1YTEzMjAyZTNhhhtQbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNh +dGlvbjo6c2FzOjpTYXM6OmNvbnRlbnRfdG9fcmVxdWVzdDo6aDFmOWIxMzkzY2Q0MTAzYTmHG0g8 +YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGY5 +OWE0MWI4YzM3MzVhOGOIGzRjb3JlOjpoYXNoOjpCdWlsZEhhc2hlcjo6aGFzaF9vbmU6Omg2ZjEw +NmZhODY5ZDZkZDBkiRs0Y29yZTo6aGFzaDo6QnVpbGRIYXNoZXI6Omhhc2hfb25lOjpoZDhmYzVl +ODY5ZDA0N2E5OYobPHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5Ojpo +NmE4ODg3NDBiMTI1YjdlMIsbNGNvcmU6Omhhc2g6OkJ1aWxkSGFzaGVyOjpoYXNoX29uZTo6aDEz +M2JmMjQ1MDYxMWYzZDiMGy1hbGxvYzo6dmVjOjpWZWM8VCxBPjo6cHVzaDo6aDU4NWE0YjI2NTkz +ZmY3OTmNG4UBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OkxhenlMZWFmUmFu +Z2U8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFY+Ojp0 +YWtlX2Zyb250OjpoZWFkYjAyMjJkYzg4MzcxZI4bTjxqc19pbnQ6OnVpbnQ6OlVJbnQgYXMgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoNDA5OGY4NmY3NTRlNTIwNY8bTjxq +c19pbnQ6OnVpbnQ6OlVJbnQgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXpl +OjpoZWIzYTQxNTgwOTJkYzE3NJAbM2FsbG9jOjpzdHJpbmc6OlN0cmluZzo6ZnJvbV91dGY4Ojpo +MTQxOWEwYzNiY2Q3OTJlNJEbZzxydW1hX2NvbW1vbjo6c2VyZGU6OmNvdzo6Q293U3RyVmlzaXRv +ciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9ib3Jyb3dlZF9ieXRlczo6aDc4NTIwZTJj +NWFmYThmNmKSG1Y8c3RkOjpiYWNrdHJhY2U6OkJhY2t0cmFjZSBhcyBjb3JlOjpmbXQ6OkRpc3Bs +YXk+OjpmbXQ6Ont7Y2xvc3VyZX19OjpoY2RhZTJlODc3NDYwYzBlZJMbO2NvcmU6OmZtdDo6YnVp +bGRlcnM6OkRlYnVnU3RydWN0OjpmaW5pc2g6OmgyNDkwNWNlZjU5MTY3OGM2lBuKAmFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJl +ZjxCb3Jyb3dUeXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+Ojpu +ZXh0X2JhY2tfa3Y6OmgyZmQ5OTVmZjk0MDA1MGFhlRuFAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5k +bGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEss +VixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpuZXh0X2t2OjpoMGNjYjUy +OTNkZTEwNGJmM5YbhQJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwg +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6OkVkZ2U+Pjo6bmV4dF9rdjo6aDBkMWVmYmM4OWU1MmYwN2aXG4UCYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2Rl +UmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPj46 +Om5leHRfa3Y6OmgzNGU4ZTJjOWQzYWFkYjM2mBuFAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpuZXh0X2t2OjpoMzlhOTM0ZWQ1 +OTFjOTZmZJkbhQJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6OkVkZ2U+Pjo6bmV4dF9rdjo6aDZjNzdjZjY5YTJiMmFiMjmaG4UCYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPj46Om5l +eHRfa3Y6OmhiNTY5ZmZiYmFlMTBlNzJmmxuFAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5h +dmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEssVixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpuZXh0X2t2OjpoZTY2ZjkxNDUxMWFm +ZTM1ZpwbhQJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6OkVkZ2U+Pjo6bmV4dF9rdjo6aGU5MThhN2JhYzU2ZmEwNWOdG2Zjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZl +cmlmaWNhdGlvbj46OmhiODdkMjA0Y2VjYzJiZTI0LjGeG5sBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGNvcmU6OnBpbjo6UGluPGFsbG9jOjpib3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5cHRvOjpv +bG06OmFjY291bnQ6OkFjY291bnQ6OmRlY3J5cHRfb2xtX2hlbHBlcjo6e3tjbG9zdXJlfX0+Pj46 +OmhkOTA2YTNjY2I2MWNmZWQ1LjGfGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6 +ZV9lbnRyeTo6aDExMGY4NDg3OTgyYWIyYzOgGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNl +cmlhbGl6ZV9lbnRyeTo6aDFmZmI0OTFhODYzYjg0NmGhGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVN +YXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDRjMGJlY2E0ODhkOTIyZTaiGzxzZXJkZTo6c2VyOjpTZXJp +YWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDUyYzIyMWNhZWRhMGFiMjWjGzxzZXJkZTo6c2Vy +OjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDU4MzljNTMzZTVmM2E5NzSkGzxzZXJk +ZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDhjMTMyMTM4NWY3ZThkZjKl +GzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aGI1YmJjMjliZDMx +Zjk3ZTKmG2Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlvbj46OmhiODdkMjA0Y2VjYzJiZTI0LjSnGxF1 +c2VyaWRfc2VydmVyTmFtZagbFGRldmljZWtleWlkX2RldmljZUlkqRtmY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnFyY29kZTo6UXJWZXJp +ZmljYXRpb24+OjpoYjg3ZDIwNGNlY2MyYmUyNC41qhu4AmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206OmRldmljZTo6RGV2aWNlOjpyZXF1ZXN0X3ZlcmlmaWNhdGlvbjo6e3tjbG9zdXJl +fX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjpkZXZpY2U6OkRldmljZTo6cmVxdWVzdF92ZXJpZmljYXRpb246 +Ont7Y2xvc3VyZX19LGpzX3N5czo6QXJyYXk+Ojp7e2Nsb3N1cmV9fT4+OjpoODMwNWY3YWZhYTgw +MDIyMqsb0gJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRy +eV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpPd25V +c2VySWRlbnRpdHk6OnJlcXVlc3RfdmVyaWZpY2F0aW9uOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmlkZW50aXRpZXM6Ok93blVzZXJJZGVudGl0eTo6cmVxdWVzdF92ZXJpZmljYXRpb246 +Ont7Y2xvc3VyZX19LGpzX3N5czo6QXJyYXk+Ojp7e2Nsb3N1cmV9fT4+OjpoYzExYTRiZjAxYmQz +ZWU2MqwbyAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpj +cnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmluYm91bmRfZ3JvdXBfc2Vzc2lvbnNfZm9yX2Jh +Y2t1cDo6e3tjbG9zdXJlfX0+OjpoNTk4NmQ1NTUzYjkwNTI4Ya0bhgNjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6ZmV0Y2hfYmF0Y2g8 +bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OkluYm91bmRH +cm91cFNlc3Npb24sPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRk +YkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9T +dG9yZT46OmdldF9pbmJvdW5kX2dyb3VwX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJl +fX0saW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfb2JqZWN0X3N0b3JlOjpJZGJPYmplY3RTdG9yZT46 +Ont7Y2xvc3VyZX19Pjo6aDFjM2QxYWZiZThiN2FkMmauGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVN +YXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDQ3MDk2MWExMWY1ZjhiOGGvGzxzZXJkZTo6c2VyOjpTZXJp +YWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDZmNjA3MmVlMjE5NGRhZmSwGzxzZXJkZTo6c2Vy +OjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDg4MjZmOGU5NTk0NjU3OWSxGzVjb3Jl +OjpyZXN1bHQ6OlJlc3VsdDxULEU+OjptYXBfZXJyOjpoNDcxZmNlOWZiYWE1MmZlN7IbOHJtcDo6 +ZW5jb2RlOjpSbXBXcml0ZTo6d3JpdGVfZGF0YV91MzI6OmgzM2JhYzI5OTk3OWE4Y2VjsxtnPCZt +dXQgcm1wX3NlcmRlOjplbmNvZGU6OlNlcmlhbGl6ZXI8VyxDPiBhcyBzZXJkZTo6c2VyOjpTZXJp +YWxpemVyPjo6c2VyaWFsaXplX3R1cGxlOjpoMWEzMjk4MDgwM2M5ZTcyY7QbhQJhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpM +ZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6bmV4 +dF9rdjo6aDUyY2U0ZjJmOTdjNDJmNmG1G4UCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2 +aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPj46Om5leHRfa3Y6OmgwMGI3ZGZhZTYzNTRl +NTE2thuFAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6RWRnZT4+OjpuZXh0X2t2OjpoMzgxOGUwZDhjZTI2ZDBmYbcbhQJhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9y +cm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFm +PixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6bmV4dF9r +djo6aDc4ODMzMDAwOTRjM2ZiZji4G4UCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdh +dGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPj46Om5leHRfa3Y6Omg5Yzk5N2FkZjY0NjUwOTVm +uRt0PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8SyxWLEE+IGFzIGNv +cmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDY4NTBmMWVjYTli +YWE2Mje6GzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDU0ODM5 +M2Y1YjIyNTViYzG7GzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6 +aGVmMzlkZTYwMWE0MmZjZDe8GzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9l +bnRyeTo6aDJhY2NjNmQ1YTkwNTA3MTe9GzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlh +bGl6ZV9lbnRyeTo6aGYzNGRmNWIyY2M2NTRmNTS+GzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6 +OnNlcmlhbGl6ZV9lbnRyeTo6aDhjMjZkNmRjMTlmY2E0ZDW/GzxzZXJkZTo6c2VyOjpTZXJpYWxp +emVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aGNkN2RkNjVkYTdlZTdjY2TAGzxzZXJkZTo6c2VyOjpT +ZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDYyYjcwYzk4NjMwMGYwMzDBGzxzZXJkZTo6 +c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aGJhNWYxMDA2MDA2YjkwN2LCGzxz +ZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDJmOWQzYmM2MWZlODM2 +MmPDGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDFhOWVlOTI2 +NmNlNTU5ZjHEGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDFh +ZWZmNTVhMjRlMTA5ZmXFGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRy +eTo6aDJjOGY3NzkzMzE2MzkwYzjGGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6 +ZV9lbnRyeTo6aDRhMjkxMzUzNDQ1MDEwOTfHGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNl +cmlhbGl6ZV9lbnRyeTo6aDY1YmNmZmNlNzA2M2ZkM2TIGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVN +YXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDY4YWY1NzQ3NjJkMDk1NWPJGzxzZXJkZTo6c2VyOjpTZXJp +YWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDc3OWU1ZjQxODhjZTQ5YjfKGzxzZXJkZTo6c2Vy +OjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDdlMmFkMjE5MWJjMGUzZTLLGzxzZXJk +ZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aDgwNDk2NDJmYmQ1Mjk0MmHM +GzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aGIzZWZkNzI4M2Rh +M2ZmY2HNGzxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRyeTo6aGJkZTUy +YzRiZGVmMDY5NTLOGzVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjptYXBfZXJyOjpoYmU4MDE4 +N2M3ZmFhNDM4MM8bVmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjpzYXM6OlNhcz46OmgxNWRhN2IwYTYzODYwNmI40Bt8PG1hdHJpeF9zZGtf +Y3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpNZWdvbG1WMUFlc1NoYTJD +b250ZW50IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMTRiZGE2M2E0NmI1Y2I4NdEb +8gE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjpjb21tb246Ol86Ojxp +bXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6 +Y3Jvc3Nfc2lnbmluZzo6Y29tbW9uOjpDcm9zc1NpZ25pbmdLZXk+OjpkZXNlcmlhbGl6ZTo6X19G +aWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYm9ycm93ZWRfc3RyOjpo +ZGRjZDMyNGY5ZWFmNmY1MNIbdTxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVyX21hcDo6Rmls +dGVyTWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+Ojpu +ZXh0OjpoMThiMDY0YjQwNjUzNTU1NtMbYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6 +OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoZWZiOTJk +YTE4Y2M3ZDMzNdQbPnNlcmRlOjpkZTo6dmFsdWU6Ok1hcERlc2VyaWFsaXplcjxJLEU+OjplbmQ6 +OmgwODNjYzM2MDI5Zjg5NjY01Rs8c2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwOjpzZXJpYWxpemVf +ZW50cnk6OmgwZWY2YzYxNGNjZGZkYTk41hs8c2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwOjpzZXJp +YWxpemVfZW50cnk6Omg0YTAzYmU2NmM1Y2JkYzI31xs8c2VyZGU6OnNlcjo6U2VyaWFsaXplTWFw +OjpzZXJpYWxpemVfZW50cnk6Omg5MDI2MTliMDYzMjY2YTdi2BuFAmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dU +eXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpuZXh0X2t2Ojpo +MGM1Y2QxNzdlMjhlYTk4NNkbaDwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+ +IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RydWN0OjpoOWZhZmNmYzhi +MmE4NmY2Yy4z2htfPHZvZG96ZW1hYzo6dHlwZXM6OmN1cnZlMjU1MTk6OkN1cnZlMjU1MTlQdWJs +aWNLZXkgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDMxOTRhZDg2MmMyNzdlOTXbG1k8dm9k +b3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6RWQyNTUxOVB1YmxpY0tleSBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoMTE4OGU3YjhlNDQ5NzIxNtwbaDwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2Vy +aWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RydWN0 +OjpoOWZhZmNmYzhiMmE4NmY2Yy403Rs3Z2VuZXJpY19hcnJheTo6ZnJvbV9pdGVyX2xlbmd0aF9m +YWlsOjpoZDhhNjM1YmYzZTFkYzU5Zt4bPnNlcmRlOjpkZTo6dmFsdWU6Ok1hcERlc2VyaWFsaXpl +cjxJLEU+OjplbmQ6OmgxN2NlNzJkNWQwYzdhMjIz3xtsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpH +ZW5lcmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRv +cj46Om5leHQ6Omg5MTZlNDZhZGE4ZTQxYmJl4BsnYnl0ZXM6OnBhbmljX2FkdmFuY2U6OmgzMzY5 +NDQ0MzU3NGNjNjdh4RtBY29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9zdGFydF9pbmRleF9sZW5f +ZmFpbDo6aGIyNDNiOTkwZjg1NWQzZDfiGzZjb3JlOjpwYW5pY2tpbmc6OnBhbmljX2JvdW5kc19j +aGVjazo6aDRiZWQ5NzA1MWQwZjQ2ZjXjGz9jb3JlOjpzbGljZTo6aW5kZXg6OnNsaWNlX2VuZF9p +bmRleF9sZW5fZmFpbDo6aGQ4NGU2ZTA4NzRkZjZjYzTkGz1jb3JlOjpzbGljZTo6aW5kZXg6OnNs +aWNlX2luZGV4X29yZGVyX2ZhaWw6OmgyMzM5OGU2ZmZkMzcxNGUx5RtJY29yZTo6Zm10OjpmbG9h +dDo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgZjY0Pjo6Zm10OjpoOWIxMzE0NjJkZjZhOWM2 +MOYbQGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OnNsaWNlX2luc2VydDo6aDVlMWIw +ZTQ2NDRhNjFkNDfnG0BhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpzbGljZV9pbnNl +cnQ6Omg3ODZkZDBjZTc1OTUyYzU26BtAYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +c2xpY2VfaW5zZXJ0OjpoODQwMTk4YmNkYjk3ZDg2ZukbYWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmFjY2VwdDo6QWNjZXB0TWV0aG9kPjo6 +aDY0YTlkMzJiNGFiOWJmNmPqG2xjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjpTdG9yZVRyYW5zYWN0aW9uOjpjb21taXQ6Ont7Y2xvc3VyZX19Pjo6aDk5 +ZTBjMmFiZTEzYjVhZTXrG6IBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnBpbjo6UGlu +PGFsbG9jOjpib3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnFyY29k +ZTo6UXJWZXJpZmljYXRpb246OnJlY2VpdmVfZG9uZTo6e3tjbG9zdXJlfX0+Pj46OmhlZTZkZmFi +NzFjNTQwOTcx7BukAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxv +Yzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlFy +VmVyaWZpY2F0aW9uOjpyZWNlaXZlX2RvbmU6Ont7Y2xvc3VyZX19Pj4+OjpoZWU2ZGZhYjcxYzU0 +MDk3MS4x7RukAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6 +Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlFyVmVy +aWZpY2F0aW9uOjpyZWNlaXZlX2RvbmU6Ont7Y2xvc3VyZX19Pj4+OjpoZWU2ZGZhYjcxYzU0MDk3 +MS4y7husAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94 +ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjptYWNoaW5lOjpWZXJpZmlj +YXRpb25NYWNoaW5lOjptYXJrX3Nhc19hc19kb25lOjp7e2Nsb3N1cmV9fT4+Pjo6aGMzYjFhMjI0 +OGU4NjliZmTvG3Z0cmFjaW5nOjppbnN0cnVtZW50OjpfOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6 +OkRyb3AgZm9yIHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPj46OmRyb3A6Omg4 +MDFlZjAwYWNjZjdkNGJi8BtyPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpUYWdDb250 +ZW50T3RoZXJGaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYnl0ZXM6 +Omg4OGMzYzU3OGNhNjMzMjA08RtoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+ +IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDM0MGI3 +M2YyZmFlYTY1OWHyG0g8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aGFmNThjNzc3NmM3ODNhZWPzGyJfX3diZ19zZXRfYmFzZW1pZ3JhdGlvbmRh +dGFfdXNlcklk9BskX193Ymdfc2V0X2Jhc2VtaWdyYXRpb25kYXRhX2RldmljZUlk9RsrX193Ymdf +Z2V0X3BpY2tsZWRpbmJvdW5kZ3JvdXBzZXNzaW9uX3Jvb21JZPYbK19fd2JnX3NldF9waWNrbGVk +aW5ib3VuZGdyb3Vwc2Vzc2lvbl9yb29tSWT3G1g8cnVtYV9jbGllbnRfYXBpOjpiYWNrdXA6OlJv +b21LZXlCYWNrdXAgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhiMWEzMTM2M2FiODcw +YWI3+BupATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpyZXF1ZXN0czo6U2lnbmF0dXJlVXBsb2Fk +UmVxdWVzdCBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPCZydW1hX2NsaWVudF9hcGk6OmtleXM6 +OnVwbG9hZF9zaWduYXR1cmVzOjp2Mzo6UmVxdWVzdD4+Ojp0cnlfZnJvbTo6aGExYTNiNGU3NDIw +ZDJiZjP5GxtvbG1tYWNoaW5lX291dGdvaW5nUmVxdWVzdHP6Gx1vbG1tYWNoaW5lX2Nyb3NzU2ln +bmluZ1N0YXR1c/sbIW9sbW1hY2hpbmVfZXhwb3J0Q3Jvc3NTaWduaW5nS2V5c/wbGG9sbW1hY2hp +bmVfZ2V0QmFja3VwS2V5c/0bGG9sbW1hY2hpbmVfZGlzYWJsZUJhY2t1cP4bGW9sbW1hY2hpbmVf +YmFja3VwUm9vbUtleXP/GxhvbG1tYWNoaW5lX3Jvb21LZXlDb3VudHOAHG5jb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZVRyYW5zYWN0aW9uOjpj +b21taXQ6Ont7Y2xvc3VyZX19Pjo6aDk5ZTBjMmFiZTEzYjVhZTUuM4EcrgFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6cGluOjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19j +cnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZpY2F0aW9uTWFjaGluZTo6bWFya19z +YXNfYXNfZG9uZTo6e3tjbG9zdXJlfX0+Pj46OmhjM2IxYTIyNDhlODY5YmZkLjGCHGM8c2VyZGVf +anNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46 +OnNlcmlhbGl6ZV9maWVsZDo6aGFkMWI0NTFmMmFjYWEyNzeDHGM8c2VyZGVfanNvbjo6c2VyOjpD +b21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9m +aWVsZDo6aGI4YjIzMmJhODAyN2VhN2OEHGNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9l +dmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OkFjY2VwdE1ldGhvZD46Omg2NGE5ZDMy +YjRhYjliZjZjLjaFHGU8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpz +ZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aGFkMWI0NTFmMmFjYWEyNzcu +MYYcUzxjb3JlOjpoYXNoOjpzaXA6OlNpcDEzUm91bmRzIGFzIGNvcmU6Omhhc2g6OnNpcDo6U2lw +Pjo6Y19yb3VuZHM6OmhlMWVhODY1OTQxMDM0Mzlmhxw2PFQgYXMgY29yZTo6Y29udmVydDo6SW50 +bzxVPj46OmludG86OmhlM2M2ZmQxNTEzM2M1OWU0iBwaX193Ymdfb3dudXNlcmlkZW50aXR5X2Zy +ZWWJHBdfX3diZ191c2VyaWRlbnRpdHlfZnJlZYocFl9fd2JnX3Jvb21rZXlpbmZvX2ZyZWWLHBVf +X3diZ19xcmNvZGVzY2FuX2ZyZWWMHG5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjpTdG9yZVRyYW5zYWN0aW9uOjpjb21taXQ6Ont7Y2xvc3VyZX19Pjo6 +aDk5ZTBjMmFiZTEzYjVhZTUuNI0cpAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cGlu +OjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +cXJjb2RlOjpRclZlcmlmaWNhdGlvbjo6cmVjZWl2ZV9kb25lOjp7e2Nsb3N1cmV9fT4+Pjo6aGVl +NmRmYWI3MWM1NDA5NzEuM44cpAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cGluOjpQ +aW48YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJj +b2RlOjpRclZlcmlmaWNhdGlvbjo6cmVjZWl2ZV9kb25lOjp7e2Nsb3N1cmV9fT4+Pjo6aGVlNmRm +YWI3MWM1NDA5NzEuNI8cuwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8PG1hdHJpeF9zZGtfaW5k +ZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNhdmVfcGVuZGluZ19jaGFuZ2Vz +Ojp7e2Nsb3N1cmV9fT46Omg5NmEzMjQxNTFkNWNkNTFhkBwxY29yZTo6b3B0aW9uOjpPcHRpb248 +VD46Om9rX29yOjpoNDc1MGI1NWYyNjA3N2M3Y5EcMWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46 +Om1hcDo6aGMwY2Q4ZjY5YTY5ZWUwMjKSHG52b2RvemVtYWM6OnR5cGVzOjpfOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6OnR5cGVzOjpLZXlJZD46OmRlc2VyaWFs +aXplOjpoNzQ3YzZmY2Q1MTk4MTdkZpMcSHNlcmRlX3dhc21fYmluZGdlbjo6ZGU6OkRlc2VyaWFs +aXplcjo6YXNfc2FmZV9pbnRlZ2VyOjpoMmExZjU5YTBkY2Y5NzRhMJQcLXJtcF9zZXJkZTo6ZGVj +b2RlOjpyZWFkX3U4OjpoMGY3OGZiMTBmYTZlNjIxN5UcPjxUIGFzIHJtcDo6ZGVjb2RlOjpSbXBS +ZWFkPjo6cmVhZF9leGFjdF9idWY6OmhjMDA2ZjYyMjQwN2YwMDBmlhw4Y29yZTo6c2xpY2U6Ojxp +bXBsIFtUXT46OnNwbGl0X2F0X211dDo6aDFmZTYwNTYwZDY2N2VmODeXHIEBPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6 +OmNvbGxlY3Q6OkZyb21JdGVyYXRvcjwoSyxWKT4+Ojpmcm9tX2l0ZXI6Omg1YjM2ZGY1NzdhZDJl +Yjk0mByBATxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVj4gYXMg +Y29yZTo6aXRlcjo6dHJhaXRzOjpjb2xsZWN0OjpGcm9tSXRlcmF0b3I8KEssVik+Pjo6ZnJvbV9p +dGVyOjpoNzZjYWZlYzE5ODJkMGFmNJkcgQE8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFw +OjpCVHJlZU1hcDxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJh +dG9yPChLLFYpPj46OmZyb21faXRlcjo6aGEwZTcwZGY4NDNjOWM5MDCaHFttYXRyaXhfc2RrX2Ny +eXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZTo6bG9jYWxfdHJ1c3Rfc3Rh +dGU6OmhkNTZkOTdjNTQ5ZWE5OTJkmxxsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1 +bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6 +OmgwMTk5Mzc1ZjVjNDEyMmRhnBxMbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6R29zc2lw +UmVxdWVzdDo6cmVxdWVzdF90eXBlOjpoMDlhODJiYmI0OGJiMmI3Zp0cSTx0aW1lOjplcnJvcjo6 +Zm9ybWF0OjpGb3JtYXQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDkwZDMyNmI0ZjI5MjI5 +YWaeHC5hbGxvYzo6dmVjOjpWZWM8VCxBPjo6ZHJhaW46Omg4YTk3YWRhY2M5MGEwOWRinxxRdHJh +Y2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6ZXh0ZW5zaW9uczo6RXh0ZW5zaW9uc0lubmVyOjpn +ZXQ6Omg0MTNhNWIyODQ3N2NjZDA2oBxRdHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6ZXh0 +ZW5zaW9uczo6RXh0ZW5zaW9uc0lubmVyOjpnZXQ6OmhiYmIwMWZkN2MzZjFlNDA2oRxJc2VyZGVf +anNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6ZGVzZXJpYWxpemVfcmF3X3ZhbHVlOjpoMGI0Mjdj +NmFhMDNlNDBiNKIcQTxUIGFzIGRpZ2VzdDo6bWFjOjpNYWM+Ojp2ZXJpZnlfdHJ1bmNhdGVkX2xl +ZnQ6Omg0NTM2NzllOGZhYTc1YjIzoxyBATxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6 +OkJUcmVlTWFwPEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpjb2xsZWN0OjpGcm9tSXRlcmF0 +b3I8KEssVik+Pjo6ZnJvbV9pdGVyOjpoNzExY2ViNDQxNDFhNGFkOKQcUDx2b2RvemVtYWM6OmNp +cGhlcjo6RGVjcnlwdGlvbkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlMjc3ZGI2 +YWY3Y2MxNmRkpRxudm9kb3plbWFjOjp0eXBlczo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3Igdm9kb3plbWFjOjp0eXBlczo6S2V5SWQ+OjpkZXNlcmlhbGl6ZTo6aGJhYzFjODgw +OWEyOGQ4MzamHGM8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6 +OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aDg3OTE3OTIxZGIwYmUyNjOnHHB0 +b2tpbzo6dXRpbDo6bGlua2VkX2xpc3Q6OkxpbmtlZExpc3Q8TCw8TCBhcyB0b2tpbzo6dXRpbDo6 +bGlua2VkX2xpc3Q6Okxpbms+OjpUYXJnZXQ+OjpyZW1vdmU6OmgwYTYxZDlmNzZjNjFiYjI0qBxT +dHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6Q2FsbHNpdGVzOjpyZWJ1aWxkX2ludGVyZXN0Ojp7e2Ns +b3N1cmV9fTo6aDM1Njg1ZTE2NzlhZGEwNmWpHDZzZXJkZV9qc29uOjpzZXI6OmZvcm1hdF9lc2Nh +cGVkX3N0cjo6aGE0N2FjYzMwNWIzMjc2YmGqHDQ8Jm11dCBUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg2MmVlYWFlYmY4ZWZlZjlkqxxoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmltcG9ydF9zZWNyZXQ6Ont7Y2xvc3VyZX19Pjo6 +aDg1YWNmYTZhZTk0NTMxMTisHIcBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OmFuc3dlcl9yb29tX2tl +eV9yZXF1ZXN0Ojp7e2Nsb3N1cmV9fT46OmgwZGY4YmU5MzU5NTM1ZDhkrRxqY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmltcG9ydF9zZWNy +ZXQ6Ont7Y2xvc3VyZX19Pjo6aDg1YWNmYTZhZTk0NTMxMTguMa4caDxjb3JlOjppdGVyOjphZGFw +dGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVy +YXRvcj46Om5leHQ6OmgzOGE3YmNmZTk1NjZlZjgyrxxlPHNlcmRlX3dhc21fYmluZGdlbjo6ZGU6 +OkRlc2VyaWFsaXplciBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0 +cjo6aGM2ZWNhMTM3MjU5MWI1NziwHB5iYWNrdXBrZXlzX2RlY3J5cHRpb25LZXlCYXNlNjSxHFpt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNyeXB0b19zdG9yZV93cmFwcGVyOjpDcnlwdG9TdG9y +ZVdyYXBwZXI6Om5ldzo6aGZjYTI1Yzc3MjRiMGNhNjWyHHpjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8W21hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpQaWNr +bGVkSW5ib3VuZEdyb3VwU2Vzc2lvbl0+OjpoMTQ0OTBkOWZjYjViNzUxObMcrgFtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb246OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb24+IGZvciB3 +YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojp0cnlfZnJvbTo6aGJiOGJlN2RhMjYxNGE5MTi0HDA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEzN2M1YmYxOTA2MzRlZmO1HDA8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgyOGRmYjUxOTJjMmY4NTG2HDtoYXNoYnJvd246Om1hcDo6 +SGFzaE1hcDxLLFYsUyxBPjo6cmVtb3ZlOjpoNmRiMzhhMzY2MTlhZWUxZbccFGRldmljZV9zZXRM +b2NhbFRydXN0uBwNZGV2aWNlX3VzZXJJZLkcD2RldmljZV9kZXZpY2VJZLocygE8cnVtYV9ldmVu +dHM6OnJvb206OmVuY3J5cHRlZDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Ig +cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6TWVnb2xtVjFBZXNTaGEyQ29udGVudD46OmRl +c2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9z +dHI6OmgwNWNjNTM1MzM0NDVmM2VmuxzlATxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6cmVs +YXRpb25fc2VyZGU6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZl +bnRzOjpyb29tOjptZXNzYWdlOjpyZWxhdGlvbl9zZXJkZTo6S25vd25SZWxhdGlvbkRlSGVscGVy +Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZp +c2l0X3N0cjo6aDJlMGVhODRmMWFkYjg3MzC8HDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aGRmZmM5MWZkZTA3NDQ1NTa9HLgBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpS +b29tU2V0dGluZ3M+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpW +aXNpdG9yPjo6dmlzaXRfc3RyOjpoZmQ1NWQzNjY5ZDg2NTAyM74cSDxhbGxvYzo6dmVjOjpWZWM8 +VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMTc4YzE5MzI0OTU1ZjAxOL8c +TmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8SyxWLEE+OjpkeWluZ19u +ZXh0OjpoZGE5NzRmMTU4YmJjNjQxOMAcLGNvcmU6OnRpbWU6OkR1cmF0aW9uOjpuZXc6OmgwN2Ey +MDcxMjA5YTZkOGRiwRytAW1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OnBrX3NpZ25p +bmc6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRv +OjpvbG06OnNpZ25pbmc6OnBrX3NpZ25pbmc6OlBpY2tsZWRTaWduaW5nPjo6ZGVzZXJpYWxpemU6 +OmgyYTgzOWUyNWI5NjRjNzczwhytAW1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OnBr +X3NpZ25pbmc6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtf +Y3J5cHRvOjpvbG06OnNpZ25pbmc6OnBrX3NpZ25pbmc6OlBpY2tsZWRTaWduaW5nPjo6ZGVzZXJp +YWxpemU6OmhlMjkwZDg1Yjk5ODYwMjk4wxzBATxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5n +OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6 +Z29zc2lwaW5nOjpHb3NzaXBSZXF1ZXN0Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFz +IHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aDZjYzRmNTFiN2VjYzdlNTbEHDZybXA6 +OmRlY29kZTo6Um1wUmVhZDo6cmVhZF9kYXRhX3UxNjo6aDk5ZjVhMWU5YThhMjE4YWHFHFU8bWF0 +cml4X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpz +b3VyY2U6OmhmNjYwODY1OTkzMzRkZDNixhxoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp6aXA6Olpp +cDxBLEI+IGFzIGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp6aXA6OlppcEltcGw8QSxCPj46Om5ldzo6 +aDkxOWE1NjZjZjJlYjE3MWPHHK0BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9k +ZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6cHVzaF93aXRoX2hh +bmRsZTo6aDNmNDZjODY1NzJhMjkyYzfIHK0BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxL +LFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6cHVzaF93 +aXRoX2hhbmRsZTo6aGU3MGMwNDk0ODU5MWEwNWLJHK0BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6 +cHVzaF93aXRoX2hhbmRsZTo6aGY3MDQ1YTFjMWVjZDJhYTTKHGRhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46Om1lcmdlX3RyYWNraW5nX2NoaWxk +X2VkZ2U6OmgxNGRhZmRiZjk2ODFjNjI3yxxkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjptZXJnZV90cmFja2luZ19jaGlsZF9lZGdlOjpoMTgy +MTY0ZDk0NmQyNjZmNswcZGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2lu +Z0NvbnRleHQ8SyxWPjo6bWVyZ2VfdHJhY2tpbmdfY2hpbGRfZWRnZTo6aDUyZWI2N2U1MzI2Y2Y4 +NTXNHGRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpCYWxhbmNpbmdDb250ZXh0PEss +Vj46Om1lcmdlX3RyYWNraW5nX2NoaWxkX2VkZ2U6Omg1YjJmNDA0YzMwYTc2ZmVhzhxkYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjptZXJnZV90 +cmFja2luZ19jaGlsZF9lZGdlOjpoODRmNTZjZTg4ZTFhOTdhMM8cZGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6bWVyZ2VfdHJhY2tpbmdfY2hp +bGRfZWRnZTo6aDkyOTE1ZTZjNGJiMjA5MDnQHGRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpCYWxhbmNpbmdDb250ZXh0PEssVj46Om1lcmdlX3RyYWNraW5nX2NoaWxkX2VkZ2U6Omg5 +ZjQ0YmQ0ZTQ3YzQyMzI10RxkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5j +aW5nQ29udGV4dDxLLFY+OjptZXJnZV90cmFja2luZ19jaGlsZF9lZGdlOjpoYzgwNmZiNTdlYTRh +OTVhYtIcZGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8 +SyxWPjo6bWVyZ2VfdHJhY2tpbmdfY2hpbGRfZWRnZTo6aGQ0YjI2MzFjNzg5OTlkYTLTHE5hbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6 +aDQwZTM4ZDkyYTc1YmUzZTPUHE5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9J +dGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6aDYwMGJmOTc5ZjcwZTI5M2bVHE5hbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6aDVjZDBlNDkw +ZmYyN2QzNjjWHE5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixB +Pjo6ZHlpbmdfbmV4dDo6aGUzY2RmYzBkNmM3MTFjY2TXHE5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6OkludG9JdGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6aDcyZTQ4MTNhODY1NDZiYmLY +HE5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPjo6ZHlpbmdf +bmV4dDo6aGI1N2UyM2I0Mzk1Y2ZhMTbZHE5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6 +OkludG9JdGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6aDcwNGVhMjUwNzkyYjI3NGPaHE5hbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPjo6ZHlpbmdfbmV4dDo6aDJm +YTQzZDNjMWJlNmEzYTPbHE5hbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVy +PEssVixBPjo6ZHlpbmdfbmV4dDo6aDY2MmJmOWQ5NTI5OGNlZDbcHPQBPG1hdHJpeF9zZGtfY3J5 +cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjpl +bmNyeXB0ZWQ6Ok1lZ29sbVYxQWVzU2hhMkNvbnRlbnQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZp +c2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoMDMwZDVkN2VjOTY5MzU2 +Md0c9AE8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0OjpfOjo8aW1wbCBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246 +OnJlcXVlc3Q6OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uUmVxdWVzdEV2ZW50Q29udGVudD46OmRl +c2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9z +dHI6OmhiYmFhYjcyZTgwOTBiYzI53hwuY29yZTo6dGltZTo6RHVyYXRpb246Om5ldzo6aDA3YTIw +NzEyMDlhNmQ4ZGIuMd8c0gE8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6 +Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OmtleTo6dmVy +aWZpY2F0aW9uOjpzdGFydDo6U2FzVjFDb250ZW50Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNp +dG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aDQwMzIyYTcwZWIzMmNkM2Tg +HC5jb3JlOjp0aW1lOjpEdXJhdGlvbjo6bmV3OjpoMDdhMjA3MTIwOWE2ZDhkYi4y4RxZPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OkZsb3dJZCBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+ +OjpjbG9uZTo6aGEwZmYzMjViNmRkN2E0ZTDiHG5tYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNy +b3NzX3NpZ25pbmc6OnVzZXJfc2lnbmluZzo6VXNlclNpZ25pbmdQdWJrZXk6OnZlcmlmeV9tYXN0 +ZXJfa2V5OjpoYzgzMTM2ZWE3ZmQzNjg5NuMcoQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpt +ZW1vcnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFp +dHM6OkNyeXB0b1N0b3JlPjo6Z2V0X2luYm91bmRfZ3JvdXBfc2Vzc2lvbnM6Ont7Y2xvc3VyZX19 +OjpoNTEyZDkzOGI5ZTQ5MjBkNeQcTmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50 +b0l0ZXI8SyxWLEE+OjpkeWluZ19uZXh0OjpoOGUxZTIyODkxZDgxYjFjZuUcM2FsbG9jOjpzeW5j +OjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoYzQ5NWY1YjBmMDcxMzMzOOYc3QE8dm9kb3plbWFjOjpv +bG06OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplIGZvciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OkFjdGl2ZURv +dWJsZVJhdGNoZXQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpW +aXNpdG9yPjo6dmlzaXRfc3RyOjpoNjk1MzkxNGYyYTk4NGNkMOccQWFycmF5dmVjOjphcnJheXZl +Yzo6QXJyYXlWZWM8VCxfPjo6ZHJhaW5fcmFuZ2U6OmgwMGMzYTU1NWU4OGQ2NzVj6BzXATx2b2Rv +emVtYWM6Om9sbTo6c2Vzc2lvbjo6cmVjZWl2ZXJfY2hhaW46Ol86OjxpbXBsIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyZWNlaXZlcl9jaGFpbjo6 +UmVjZWl2ZXJDaGFpbj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6 +OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg0Y2U5ZWY0ZmMwNmRmMDQx6RxkYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjptZXJnZV90cmFja2luZ19j +aGlsZF9lZGdlOjpoYWFkMmI2NmNlZTI1NTY5ZeocZGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6bWVyZ2VfdHJhY2tpbmdfY2hpbGRfZWRnZTo6 +aGZmNTgzZTgzZDU1ZTU3NzjrHEA8dTggYXMgbWF0cml4X3BpY2tsZTo6ZGVjb2RlOjpEZWNvZGU+ +OjpkZWNvZGU6OmgzM2JkMDZmMmE4OTE0ZjY27By3ATx2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6 +Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OmFjY291 +bnQ6OkFjY291bnRQaWNrbGU+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6 +OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoZTcwNDQ2OGI3MjYzMjIzZe0caDxjb3JlOjppdGVy +OjphZGFwdGVyczo6emlwOjpaaXA8QSxCPiBhcyBjb3JlOjppdGVyOjphZGFwdGVyczo6emlwOjpa +aXBJbXBsPEEsQj4+OjpuZXc6OmhiMjExNTU4MGExMjZiYjc07hzlATx2b2RvemVtYWM6Om1lZ29s +bTo6aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +IGZvciB2b2RvemVtYWM6Om1lZ29sbTo6aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpJbmJvdW5kR3Jv +dXBTZXNzaW9uUGlja2xlPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpk +ZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aGJmZmRkNmY3YzcxZDViMGXvHLcBPHZvZG96ZW1hYzo6 +b2xtOjpzZXNzaW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVt +YWM6Om9sbTo6c2Vzc2lvbjo6U2Vzc2lvblBpY2tsZT46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlz +aXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg5Y2IyOTQzNjI3OTk0MGYw +8Bx2PHgyNTUxOV9kYWxlazo6eDI1NTE5OjpQdWJsaWNLZXkgYXMgY29yZTo6Y29udmVydDo6RnJv +bTwmeDI1NTE5X2RhbGVrOjp4MjU1MTk6OlN0YXRpY1NlY3JldD4+Ojpmcm9tOjpoYzU4NGEwOTFi +MDQ3NmIxZvEcZGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRl +eHQ8SyxWPjo6bWVyZ2VfdHJhY2tpbmdfY2hpbGRfZWRnZTo6aDA2NTAwOWUwMzNiNDBjMDPyHE5y +dW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmljZV9rZXlfaWQ6OkRldmljZUtleUlkOjpwYXJz +ZTo6aGU5ZjA2OWE5NWUxMGY1YWTzHENydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnJvb21faWQ6 +OlJvb21JZDo6cGFyc2U6OmhiMDk5NGE5MDY0NTdlNzU29BwuY29yZTo6dGltZTo6RHVyYXRpb246 +Om5ldzo6aDA3YTIwNzEyMDlhNmQ4ZGIuM/UcXDxydW1hX2lkZW50aWZpZXJzX3ZhbGlkYXRpb246 +OmVycm9yOjpFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6OmgwZDUxMmI2OTNh +OTMzODM59hw4dHJhY2luZ19jb3JlOjpmaWVsZDo6VmFsdWVTZXQ6OnJlY29yZDo6aDhhMzgyMzc2 +M2M2ZjQ3ZmX3HD1zZXJkZV9qc29uOjpkZTo6UGFyc2VyTnVtYmVyOjppbnZhbGlkX3R5cGU6Omgz +MzVlNzA5YWVjMDdlZjc5+BxOYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRl +cjxLLFYsQT46OmR5aW5nX25leHQ6OmhiY2EwMGZjNWRiZTNkZjUx+RwoYWxsb2M6OnZlYzo6ZnJv +bV9lbGVtOjpoNzJkMWNlM2FiMWE3YjEwZvocN2pzX3N5czo6VWludDhDbGFtcGVkQXJyYXk6OmNv +cHlfZnJvbTo6aDEzYzcyMTk2OGE3ODJkMzL7HHBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8PHN0 +ZDo6YmFja3RyYWNlOjpCYWNrdHJhY2UgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10Ojp7e2Ns +b3N1cmV9fT46OmgzMjcwMzUzNGVmNGYwNmU1/BytAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpN +dXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1 +c2hfd2l0aF9oYW5kbGU6OmgwZTQ1OWFmNTI1MWI2Y2Zh/RxiY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudD46 +OmhhMDJmMTM3NGY3OTFhZTQxLjP+HF9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVu +dHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6U3RhcnRNZXRob2Q+OjpoZGIzMGQ1MTJiMjcy +MzZiZP8cU2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29u +dGVudDo6Q29udGVudD46OmgyZWNiNWNhMTJmNTgyZDJmgB1VY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6U2lnbmF0dXJlRXJyb3I+OjpoZmFiY2U0Yzgz +NzgzOWExNoEdMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzFmNDkyZDQ1MGMyZjQ3 +YYIdTTxhbGxvYzo6YWxsb2M6Okdsb2JhbCBhcyBjb3JlOjphbGxvYzo6QWxsb2NhdG9yPjo6c2hy +aW5rOjpoN2ZhMDgzMmQ5YjBiNTViMC4zgx0eX193YmdfZW5jcnlwdGVkYXR0YWNobWVudF9mcmVl +hB0fZGVjcnlwdGVkcm9vbWV2ZW50X3NlbmRlckRldmljZYUdR3dhc21fYmluZGdlbl9mdXR1cmVz +OjpmdXR1cmVfdG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06OmgyN2Y4M2E5ZDY0YWYyOTBlhh1Hd2Fz +bV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6aDRjNmMy +ODZkN2E0OTU4MTWHHUd3YXNtX2JpbmRnZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U6Ont7 +Y2xvc3VyZX19OjpoNWQyMzlmYWI3ODAxNmQ4NIgdR3dhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1 +cmVfdG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06Omg2MmJkMjhlOTZkMzc3NTFliR1Hd2FzbV9iaW5k +Z2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6aDc0ZWFiNzFjNWI2 +YWE2ZTiKHUd3YXNtX2JpbmRnZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U6Ont7Y2xvc3Vy +ZX19OjpoYTEyNmNlMDcxZTJjM2E3NIsdR3dhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9f +cHJvbWlzZTo6e3tjbG9zdXJlfX06OmhjZTRmMDBmYTJmMTNiZmRijB1Hd2FzbV9iaW5kZ2VuX2Z1 +dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6aGVmM2ZjMzM4ZDZhMGViZmKN +HVdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpTaWdu +YXR1cmVFcnJvcj46OmhmYWJjZTRjODM3ODM5YTE2LjOOHfcGY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpzdHJlYW06OmZvcl9lYWNoOjpGb3JFYWNoPGZ1dHVy +ZXNfdXRpbDo6c3RyZWFtOjpzdHJlYW06Om1hcDo6TWFwPGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpz +dHJlYW06OmZpbHRlcl9tYXA6OkZpbHRlck1hcDx0b2tpb19zdHJlYW06OndyYXBwZXJzOjpicm9h +ZGNhc3Q6OkJyb2FkY2FzdFN0cmVhbTwoY29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19j +cnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNlcklkZW50aXR5PixtYXRyaXhf +c2RrX2NyeXB0bzo6c3RvcmU6OklkZW50aXR5Q2hhbmdlcyxtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OkRldmljZUNoYW5nZXMpPixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNyeXB0b19zdG9y +ZV93cmFwcGVyOjpDcnlwdG9TdG9yZVdyYXBwZXI6OmlkZW50aXRpZXNfc3RyZWFtOjp7e2Nsb3N1 +cmV9fTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpjcnlwdG9fc3RvcmVf +d3JhcHBlcjo6Q3J5cHRvU3RvcmVXcmFwcGVyOjppZGVudGl0aWVzX3N0cmVhbTo6e3tjbG9zdXJl +fX0+LG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmlkZW50aXRpZXNfc3RyZWFtX3Jh +dzo6e3tjbG9zdXJlfX0+LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6OnNlbmRfdXNl +cl9pZGVudGl0aWVzX3RvX2NhbGxiYWNrOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyZWdpc3Rlcl91c2VyX2lkZW50aXR5X3VwZGF0ZWRf +Y2FsbGJhY2s6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Pjo6aDUzYTU2 +ZjYzNGU1MzFmOGGPHVdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OmVycm9yOjpTaWduYXR1cmVFcnJvcj46OmhmYWJjZTRjODM3ODM5YTE2LjSQHXc8cnVtYV9ldmVu +dHM6OnJvb206Om1lc3NhZ2U6OnNlcnZlcl9ub3RpY2U6OlNlcnZlck5vdGljZVR5cGUgYXMgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoMDZmMTA5MTg5ODE2YTMzOJEdYzxz +ZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3Ry +dWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoYTcwN2FmZWM1NjAyZGUyNJIdWm1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6Y3J5cHRvX3N0b3JlX3dyYXBwZXI6OkNyeXB0b1N0b3JlV3JhcHBlcjo6bmV3 +OjpoMjgxOWI0ZDMxOTg3ZjFiOJMdyAFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +Zm9yd2FyZGVkX3Jvb21fa2V5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6Zm9yd2FyZGVkX3Jvb21fa2V5OjpGb3J3 +YXJkZWRSb29tS2V5Q29udGVudD46OmRlc2VyaWFsaXplOjpoNGY4NGM2NzA2ZjVhOWYxMJQdqwFt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXk6Ol86OjxpbXBsIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpy +b29tX2tleTo6Um9vbUtleUNvbnRlbnQ+OjpkZXNlcmlhbGl6ZTo6aDExMDVlZTgyZTY0Mzg4MzWV +HVg8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJv +cDo6RHJvcD46OmRyb3A6Omg5Njk4OTI1OTQ4MDdhNDNllh1YPGFsbG9jOjp2ZWM6OmludG9faXRl +cjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoY2YwMTAy +Mjk4OTkwNTIzOJcdWDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPFQsQT4gYXMgY29y +ZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGY3ZTNlNzEyYjRmZGVmOTmYHRZlbmNyeXB0aW9u +c2V0dGluZ3NfbmV3mR16PHJ1bWFfY2xpZW50X2FwaTo6ZGVoeWRyYXRlZF9kZXZpY2U6OkRldmlj +ZURlaHlkcmF0aW9uQWxnb3JpdGhtIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlh +bGl6ZTo6aDg2MWJkNjE3MDQ5Y2Y4NGKaHXo8cnVtYV9jbGllbnRfYXBpOjprZXlzOjp1cGxvYWRf +c2lnbmF0dXJlczo6djM6OkZhaWx1cmVFcnJvckNvZGUgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZT46OmRlc2VyaWFsaXplOjpoNGJmZDdjZGExZTBhNmNkYZsdZTxzZXJkZV9qc29uOjpzZXI6OkNv +bXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2Zp +ZWxkOjpoYTcwN2FmZWM1NjAyZGUyNC4xnB0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg0MDFmNzE2NzI4ZmEyMGMxnR0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjNDg4 +YTA1MTllYWNmOTc1nh1jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9f +cHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06OmhiNmViNzc5Y2Q3MWZlY2Ez +nx1jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRo +X2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06OmhjZDcwNjRjNWUxOWVkZjYwoB1jbWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJv +cjo6e3tjbG9zdXJlfX06Omg2ZjI5OGExZWY5NTNkZDMyoR1jbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJl +fX06OmgwNTc0NGNhMTQyMTMwNzc5oh1jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpm +dXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06OmhjNWU0NTJl +MWI0ZmQ5NmY3ox1jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJv +bWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06OmhiNjE2MWViYTQ5MDY0ZjVmpB1j +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1 +c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06OmgzYmEwY2NjMjhmNDI1YzJlpR1jbWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6 +e3tjbG9zdXJlfX06OmgzZmNlOGVlNmM5Y2E2NGYyph1jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06 +OmgyOGI5N2VhZTc0OTMxZjBhpx1jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1 +cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Omg2MmRiYzA0OTZj +MDIyYTczqB1jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlz +ZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Omg5MGIxYTE0MWU3OWQ5YzQyqR1iY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpSb29tTWVz +c2FnZUV2ZW50Q29udGVudD46OmhhMDJmMTM3NGY3OTFhZTQxLjSqHVVjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+OjpoMmVjYjVj +YTEyZjU4MmQyZi4xqx1XY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjplcnJvcjo6U2lnbmF0dXJlRXJyb3I+OjpoZmFiY2U0YzgzNzgzOWExNi41rB1cPG1hdHJpeF9z +ZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OkNhbmNlbGxlZCBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+ +OjpjbG9uZTo6aDJhY2JiYTI0MzBkZmFhYWOtHVNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c2Vy +ZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+OjpoYmQxNmU3YWQ3YWUzNzE5Mq4d +VWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6 +Q29udGVudD46OmhiZDE2ZTdhZDdhZTM3MTkyLjGvHWhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXRp +ZXM+OjpoOWRmZDgxMGYxMmRmODc0MrAdnQFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmlj +ZV9rZXlzOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2Ny +eXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXlzPjo6ZGVzZXJpYWxpemU6OmhhYzUw +NjI4MGJhZDdlNTc1sR00Y29yZTo6c2xpY2U6OjxpbXBsIFtUXT46OnNwbGl0X2F0OjpoMWE4NDRl +OWIyNmY2ODM0MrIdLnJtcDo6ZW5jb2RlOjpzdHI6OndyaXRlX3N0cjo6aDY3MTJhMjFiYjM5YjIw +NjGzHWU8Jm11dCBybXBfc2VyZGU6OmVuY29kZTo6U2VyaWFsaXplcjxXLEM+IGFzIHNlcmRlOjpz +ZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfdTY0OjpoYWExMTgxNDA4NTU3N2MyOLQdNGNvcmU6 +OnNsaWNlOjo8aW1wbCBbVF0+OjpzcGxpdF9hdDo6aGM0YWY5NzFiMjdkZmY4YWS1Ha0BYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpMZWFmPjo6cHVzaF93aXRoX2hhbmRsZTo6aGQ2NDljZTMyNDFhNGY5OTm2HWk8 +cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpIYXNoQWxnb3JpdGhtIGFzIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aDBhZmI2MDU3ZjVlZjBlZTm3HTA8JlQgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY4YzkyYWExNzY1YTdhYTi4HTA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDcwOWFjZWI0YTU0YWU4MmK5HTA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aGU2MDRiMzg2NDNhYjg2M2S6HTNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRy +b3Bfc2xvdzo6aDE0NTIzOWU5YTk3ZmEyMjC7HTNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bf +c2xvdzo6aDkwN2RiNGMzZmQ1NWNhZmG8HVNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c2VyZGU6 +Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+OjpoMzIxOWY2NDQ4N2ZmZmFlY70dMDwm +VCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDY1YzA0NTYxYmFiYjZkNr4dMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGE5ODlkYWQ5Y2MyMzQ5Nr8dNGNvcmU6OnNsaWNlOjo8 +aW1wbCBbVF0+OjpzcGxpdF9hdDo6aGVjNDFiMjJmMTgwM2NkYTTAHVVjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+OjpoMzIxOWY2 +NDQ4N2ZmZmFlYy4xwR0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyYmI3Y2ViODVi +MDQzNjdjwh0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2MDE4MDE2YTg0OTMzOGJk +wx0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3MGZiMDc3MDk4YmExMTAyxB1VY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250 +ZW50Pjo6aDMyMTlmNjQ0ODdmZmZhZWMuMsUdaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpN +YXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6 +Omg3ZDA3ZmIwMGIwYWJmNmU4xh2QATxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6Rmxh +dHRlbkNvbXBhdDxJLFU+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9y +Pjo6dHJ5X2ZvbGQ6OmZsYXR0ZW46Ont7Y2xvc3VyZX19OjpoZjAzYzQ3NjZlNDY4M2ViMccdNGNv +cmU6OnNsaWNlOjo8aW1wbCBbVF0+OjpzcGxpdF9hdDo6aGRkNDkxNDhjNDhmOGMyZTfIHThjb3Jl +OjpzbGljZTo6PGltcGwgW1RdPjo6c3BsaXRfYXRfbXV0OjpoNzJiZTlkZDE4ODdiMzJkOckdQWZ1 +dHVyZXNfdXRpbDo6YWJvcnRhYmxlOjpBYm9ydEhhbmRsZTo6bmV3X3BhaXI6OmgwMDEyYTgxNjdk +YzUxZDVkyh1TY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpj +b250ZW50OjpDb250ZW50Pjo6aGJmNzY2YWM4ZTFkYmUzOTnLHVVjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+OjpoYmY3NjZhYzhl +MWRiZTM5OS4xzB00Y29yZTo6c2xpY2U6OjxpbXBsIFtUXT46OnNwbGl0X2F0OjpoYmI2ZmU4Mjkx +NjZmNDQ1Oc0dMWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46Om1hcDo6aDY0NzAzOGJlYjJmOTE3 +YWHOHTZjb3JlOjpzbGljZTo6PGltcGwgW1RdPjo6c3BsaXRfYXQ6OmhiYjZmZTgyOTE2NmY0NDU5 +LjHPHUN2b2RvemVtYWM6OmNpcGhlcjo6a2V5OjpFeHBhbmRlZEtleXM6Om5ld19oZWxwZXI6Omg0 +NWRiNWUwZThlOGNlZjY00B1VY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHNlcmRlOjpfX3ByaXZh +dGU6OmRlOjpjb250ZW50OjpDb250ZW50Pjo6aGJmNzY2YWM4ZTFkYmUzOTkuMtEdTXN0ZDo6aW86 +OmltcGxzOjo8aW1wbCBzdGQ6OmlvOjpSZWFkIGZvciAmW3U4XT46OnJlYWRfZXhhY3Q6OmhiYTBj +OGQyNDQwMTQyYzVh0h1Ldm9kb3plbWFjOjpvbG06OmFjY291bnQ6Om9uZV90aW1lX2tleXM6Ok9u +ZVRpbWVLZXlzOjpuZXc6OmhkNTRiNmJiOGMyMDMxZDIx0x09dG9raW86OnV0aWw6Ondha2VfbGlz +dDo6V2FrZUxpc3Q6Ondha2VfYWxsOjpoNzhlNTVjNTg1OWZmNTRhNtQdU2NvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD46OmhmNmNh +ZWE2NzYxNWY0N2Fl1R1VY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHNlcmRlOjpfX3ByaXZhdGU6 +OmRlOjpjb250ZW50OjpDb250ZW50Pjo6aGY2Y2FlYTY3NjE1ZjQ3YWUuMdYdVWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD46Omhm +NmNhZWE2NzYxNWY0N2FlLjLXHVVjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c2VyZGU6Ol9fcHJp +dmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+OjpoZjZjYWVhNjc2MTVmNDdhZS4z2B1nPHNlcmRl +OjpfX3ByaXZhdGU6OmRlOjpGbGF0U3RydWN0QWNjZXNzPEU+IGFzIHNlcmRlOjpkZTo6TWFwQWNj +ZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoMTE5ZTM2NzQ2MGVjZDA4NdkdZzxzZXJkZTo6X19wcml2 +YXRlOjpkZTo6RmxhdFN0cnVjdEFjY2VzczxFPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5l +eHRfdmFsdWVfc2VlZDo6aDY5NTFmNDU3NDJhOWM2YWXaHVVjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+OjpoZjZjYWVhNjc2MTVm +NDdhZS402x1pc2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBm +b3IgYWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6ZGVzZXJpYWxpemU6OmgyZWIwNmQ2M2Y2MjIwYjg3 +3B04Y29yZTo6c2xpY2U6OjxpbXBsIFtUXT46OnNwbGl0X2F0X211dDo6aGUzOGQ3MTQ4ZjRiYzRj +OWbdHWlzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBh +bGxvYzo6c3RyaW5nOjpTdHJpbmc+OjpkZXNlcmlhbGl6ZTo6aGFkODgwNDlmMDUwZThjNTfeHUo8 +Y29yZTo6b3BzOjpyYW5nZTo6UmFuZ2U8SWR4PiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +MmM4Y2U5YTBmOTgwMTVjOd8dRWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZV9qc29uOjpl +cnJvcjo6RXJyb3I+OjpoNjJhMWU3NWUzMGM1NzlkNOAd5gE8bWF0cml4X3Nka19jcnlwdG86OnR5 +cGVzOjpldmVudHM6OnJvb21fa2V5X3JlcXVlc3Q6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1 +ZXN0OjpBY3Rpb24+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpW +aXNpdG9yPjo6dmlzaXRfdTY0OjpoYzQwNzMwMmNjMTBlMjljMOEdkQVjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPGl0ZXJ0b29sczo6Z3JvdXBi +eWxhenk6OkNodW5rPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmaWx0ZXI6OkZpbHRlcjxzdGQ6OmNv +bGxlY3Rpb25zOjpoYXNoOjpzZXQ6OkludG9JdGVyPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6 +dXNlcl9pZDo6T3duZWRVc2VySWQ+LG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5h +Z2VyOjpJZGVudGl0eU1hbmFnZXI6OnVzZXJzX2Zvcl9rZXlfcXVlcnk6Ont7Y2xvc3VyZX19Ojp7 +e2Nsb3N1cmV9fT4+LG1hdHJpeF9zZGtfY3J5cHRvOjpyZXF1ZXN0czo6S2V5c1F1ZXJ5UmVxdWVz +dDo6bmV3PGl0ZXJ0b29sczo6Z3JvdXBieWxhenk6OkNodW5rPGNvcmU6Oml0ZXI6OmFkYXB0ZXJz +OjpmaWx0ZXI6OkZpbHRlcjxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjpzZXQ6OkludG9JdGVyPHJ1 +bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQ+LG1hdHJpeF9zZGtf +Y3J5cHRvOjppZGVudGl0aWVzOjptYW5hZ2VyOjpJZGVudGl0eU1hbmFnZXI6OnVzZXJzX2Zvcl9r +ZXlfcXVlcnk6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+Pjo6e3tjbG9zdXJlfX0+Pjo6aDZm +MGEyYTVjNzliMTVhYTTiHRFvbG1tYWNoaW5lX3VzZXJJZOMdE29sbW1hY2hpbmVfZGV2aWNlSWTk +HT9fX3diZ19nZXRfY3Jvc3NzaWduaW5nYm9vdHN0cmFwcmVxdWVzdHNfdXBsb2FkU2lnbmF0dXJl +c1JlcXVlc3TlHRppbmJvdW5kZ3JvdXBzZXNzaW9uX3Jvb21JZOYdCnNhc191c2VySWTnHQxzYXNf +ZGV2aWNlSWToHQ9zYXNfb3RoZXJVc2VySWTpHRFzYXNfb3RoZXJEZXZpY2VJZOodCnNhc19yb29t +SWTrHQlxcl91c2VySWTsHQ5xcl9vdGhlclVzZXJJZO0dEHFyX290aGVyRGV2aWNlSWTuHQlxcl9y +b29tSWTvHR12ZXJpZmljYXRpb25yZXF1ZXN0X293blVzZXJJZPAdGnZlcmlmaWNhdGlvbnJlcXVl +c3Rfcm9vbUlk8R0ZdmVyaWZpY2F0aW9ucmVxdWVzdF9waGFzZfIdyAE8cnVtYV9ldmVudHM6OnJv +b206OmVuY3J5cHRlZDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9l +dmVudHM6OnJvb206OmVuY3J5cHRlZDo6RW5jcnlwdGVkRXZlbnRTY2hlbWU+OjpkZXNlcmlhbGl6 +ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfdTY0OjpoMzVk +YmQ5ODU4M2IwMjllNfMdWjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrV3JpdGVHdWFyZDxUPiBh +cyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMjczODgxMTAyYjQ5ZGRlMPQdazxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVj4gYXMgY29yZTo6Y29udmVy +dDo6RnJvbTxbKEssVik7IE5dPj46OmZyb206OmhkMjY0OTA2OWJjMzI4MWNj9R1jPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJv +cDo6RHJvcD46OmRyb3A6OmhjNzJlZTMwYzY2YmQyMTFk9h1uPHJ1bWFfZXZlbnRzOjprZXk6OnZl +cmlmaWNhdGlvbjo6TWVzc2FnZUF1dGhlbnRpY2F0aW9uQ29kZSBhcyBjb3JlOjpjb252ZXJ0OjpG +cm9tPFQ+Pjo6ZnJvbTo6aGY4MzYyYzYyM2VkOGZiYzH3HWY8c2VyZGU6OmRlOjp2YWx1ZTo6U2Vx +RGVzZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+OjpuZXh0X2VsZW1lbnRf +c2VlZDo6aGE2MTJhOGQwM2NlZWU0MWX4HUJtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9u +OjpDYW5jZWxsZWQ6Om5ldzo6aGVjNTgwY2ZhMDVhM2E1MzD5HX1tYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6Ok1lZ29sbVYxQWVzU2hhMldpdGhoZWxk +Q29udGVudDo6ZnJvbV9jb2RlX2FuZF9jb250ZW50OjpoZTNjNTQxMjRlMTk1OTE2Y/odXW1hdHJp +eF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpvbG1fdjE6OkFueURlY3J5cHRlZE9sbUV2ZW50 +OjpldmVudF90eXBlOjpoNzQwMGI1ODlmMzM4MWQ5Y/sdRG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OkNhbmNlbGxlZDo6bmV3OjpoZWM1ODBjZmEwNWEzYTUzMC4x/B00Y29yZTo6cmVz +dWx0OjpSZXN1bHQ8VCxFPjo6ZXhwZWN0OjpoOGU4ZDgzYzQ1MGM0OGIzMv0dWjxzdGQ6OnN5bmM6 +OnJ3bG9jazo6UndMb2NrV3JpdGVHdWFyZDxUPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpk +cm9wOjpoNzRhZWQwNzBmYjM4YzJhYf4d1gE8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRvdWJs +ZV9yYXRjaGV0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6 +Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OlJhdGNoZXRDb3VudD46OmRlc2VyaWFsaXpl +OjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF91NjQ6Omg2MmUy +MDZlNDk4ZmU3ZTRj/x02Ynl0ZXM6OmJ1Zjo6YnVmX211dDo6QnVmTXV0OjpwdXRfdTg6OmgwNDli +MGM3YzJiMmQwMTNmgB5hPHZvZG96ZW1hYzo6dHlwZXM6OmN1cnZlMjU1MTk6OkN1cnZlMjU1MTlQ +dWJsaWNLZXkgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoM2ExNTE5ODA5YTQyNjEyNoEe +aDxjb3JlOjppdGVyOjphZGFwdGVyczo6emlwOjpaaXA8QSxCPiBhcyBjb3JlOjppdGVyOjphZGFw +dGVyczo6emlwOjpaaXBJbXBsPEEsQj4+OjpuZXc6OmhlMjhmNzFlMTVkMGU0Mzg0gh52PHNlcmRl +OjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50RGVzZXJpYWxpemVyPEU+IGFzIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfbWFwOjpoZDg2MmUwMzI2NWExMDZhOIMe +WjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrV3JpdGVHdWFyZDxUPiBhcyBjb3JlOjpvcHM6OmRy +b3A6OkRyb3A+Ojpkcm9wOjpoNmE0MDMyMDY3NWUyMDFjM4QeUDxzZXJkZTo6ZGU6OnZhbHVlOjpF +eHBlY3RlZEluU2VxIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgzOWU2YmZkMDZhZDkw +YjhmhR5QPHNlcmRlOjpkZTo6dmFsdWU6OkV4cGVjdGVkSW5NYXAgYXMgc2VyZGU6OmRlOjpFeHBl +Y3RlZD46OmZtdDo6aGIyMTc5ZGI5ZWFiOGNiNmOGHj93YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNs +b3N1cmVzOjppbnZva2UzX211dDo6aDRhYTRlYzRhYmRjZDliYmOHHq0BYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpMZWFmPjo6cHVzaF93aXRoX2hhbmRsZTo6aDRiYTU4OGFlY2QyZTRiNmWIHmptYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZDo6Y2FuX3NpZ25f +ZGV2aWNlczo6e3tjbG9zdXJlfX06OmgyYThiNzQ2MWMzMjQwNGMziR6nAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6Z2Vu +ZXJhdGVfcXJfY29kZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6 +UmVhZHk+Ojp7e2Nsb3N1cmV9fT46Omg3N2IwNThlMDkyODEzMTg2ih6hAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NvbW1vbjo6ZGVzZXJp +YWxpemVkX3Jlc3BvbnNlczo6VGltZWxpbmVFdmVudCxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6 +Ok1lZ29sbUVycm9yPj46Omg2MTBlM2E5MjdkZDZiN2Ziix5VY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50Pjo6aDJlY2I1Y2ExMmY1 +ODJkMmYuMoweR3dhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTo6e3tjbG9z +dXJlfX06OmgxOGMzZGZjOTQyMDNjZDY5jR5Hd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90 +b19wcm9taXNlOjp7e2Nsb3N1cmV9fTo6aGM5NTQyMWU0NmM4ZTgwN2SOHiF2ZXJpZmljYXRpb25y +ZXF1ZXN0X290aGVyRGV2aWNlSWSPHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1 +dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aDQ1OTMwZjA5 +M2UyZmY2NDOQHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9t +aXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aDQ1ZjAxMDI4MDE0NzE4ZTeRHmNt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3Vz +dG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aGYyNDVmYzQxZmE1OTg1MzeSHmNtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7 +e2Nsb3N1cmV9fTo6aDhlYzg0MWE2ZjJiMjE1MWSTHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpm +dXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6 +aGFmMzY4OWIxYWJiZThiMmaUHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVy +ZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aDg5MmRiMTllZWUz +ZTNjODSVHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNl +X3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aGRlOWQyZTI4MzU4ZmZlOWWWHmNtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9t +X2Vycm9yOjp7e2Nsb3N1cmV9fTo6aDZhODkyMGMwNzI4ZDk5ZjOXHmNtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Ns +b3N1cmV9fTo6aDEwNzI5NDc4NjIwMzkyMDiYHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1 +cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aGU1 +NzlmODA3N2JlMjdmYjeZHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90 +b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aDE5YzU1MmM1ZTg1YjJi +MWKaHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dp +dGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aGE2Y2NmMGYwOWI1M2Q1Y2SbHmNtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vy +cm9yOjp7e2Nsb3N1cmV9fTo6aGE4ZTBmNzI1NWFmNWQ1ZWacHmNtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1 +cmV9fTo6aDNiZmJhMDNhYTU0YjRkNjWdHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6 +OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aDU4NTZk +MTJlNDFiYTJjMjWeHmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19w +cm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aDc4ZWZhYTVmYmY3ZDI1OTaf +HmNtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhf +Y3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aDA0OGM3MGQ4ODhlNTk4MjKgHmNtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9y +Ojp7e2Nsb3N1cmV9fTo6aDllOTI4MTg3MjI4OGRmMTShHmNtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9 +fTo6aDliMzdlNDM1NWZmZGYzM2KiHmhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjpTdG9yZTo6ZXhwb3J0X3NlY3JldDo6e3tjbG9zdXJlfX0+OjpoMzIx +NDcwYmI1M2FmMmZlMaMeowFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpS +ZXN1bHQ8bWF0cml4X3Nka19jb21tb246OmRlc2VyaWFsaXplZF9yZXNwb25zZXM6OlRpbWVsaW5l +RXZlbnQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpNZWdvbG1FcnJvcj4+OjpoNjEwZTNhOTI3 +ZGQ2YjdmYi4xpB7eAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OmZ1dHVy +ZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9s +bU1hY2hpbmU6OmdldF9zZWNyZXRzX2Zyb21faW5ib3g6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9 +fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9zZWNyZXRzX2Zyb21f +aW5ib3g6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fSxqc19zeXM6OlNldD46Ont7Y2xvc3VyZX19 +Pj46OmgzMTM4OTRkY2I4ZTZjMWI3pR51PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmaWx0ZXJfbWFw +OjpGaWx0ZXJNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRv +cj46Om5leHQ6Omg2YjEzNTcwZmVjOWVhNDcwph5sPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5l +cmljU2h1bnQ8SSxSPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46 +Om5leHQ6OmgzNDAxMjhkZTY1ZmM1YmUypx5naW5kZXhlZF9kYl9mdXR1cmVzOjpyZXF1ZXN0Ojpm +dXR1cmVzOjpSZXNwb25zZUZvcm1hdHRpbmdGdXR1cmU6OnBvbGxfd2l0aF9mb3JtYXR0aW5nOjpo +ZGE2ZDg2MDBiMjkxYTc5N6geZ2luZGV4ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6 +UmVzcG9uc2VGb3JtYXR0aW5nRnV0dXJlOjpwb2xsX3dpdGhfZm9ybWF0dGluZzo6aGVlYzliN2Ex +MjFhOWNjODSpHowCPDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6b2xtX3YxOjpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlw +ZXM6OmV2ZW50czo6b2xtX3YxOjpPbG1WMUtleXM+OjpkZXNlcmlhbGl6ZTo6X19WaXNpdG9yIGFz +IHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X21hcDo6X19EZXNlcmlhbGl6ZVdpdGggYXMgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoOWJhMjRkZGY2NzI4N2RiNqoejAI8 +PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpvbG1fdjE6Ol86OjxpbXBsIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpv +bG1fdjE6Ok9sbVYxS2V5cz46OmRlc2VyaWFsaXplOjpfX1Zpc2l0b3IgYXMgc2VyZGU6OmRlOjpW +aXNpdG9yPjo6dmlzaXRfbWFwOjpfX0Rlc2VyaWFsaXplV2l0aCBhcyBzZXJkZTo6ZGU6OkRlc2Vy +aWFsaXplPjo6ZGVzZXJpYWxpemU6OmhiMmJhZTc0MDhkMzRjMzlhqx4wcm1wOjpkZWNvZGU6OlJt +cFJlYWQ6OnJlYWRfdTg6OmhiNjAwYzFkOTI2MTVmNjMxrB5oPGNvcmU6Oml0ZXI6OmFkYXB0ZXJz +Ojp6aXA6OlppcDxBLEI+IGFzIGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp6aXA6OlppcEltcGw8QSxC +Pj46Om5ldzo6aDFjN2Q0NWQwZDlmYjg3ZjStHjY8VCBhcyBjb3JlOjpjb252ZXJ0OjpJbnRvPFU+ +Pjo6aW50bzo6aGFlZGY3NTQ3OGIxZDRlZWWuHmA8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxX +LEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcD46OnNlcmlhbGl6ZV92YWx1ZTo6aGRiZTYx +YzQwYzJlMjNmZmOvHnE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5 +X3dpdGhoZWxkOjpXaXRoaGVsZENvZGUgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjYx +NjZkOGM4ZDNiMDBlZrAeSzxydW1hX2V2ZW50czo6cm9vbTo6SnNvbldlYktleSBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoMTJmNzMzMjI0YTJmMmZhYbEeMzwoVSxUKSBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoMjA4OTNmNTM5ZTg4NDNjZLIeb21hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6Y3Jvc3Nfc2lnbmluZzo6c2VsZl9zaWduaW5nOjpTZWxmU2lnbmluZ1B1YmtleTo6dmVyaWZ5 +X2RldmljZV9rZXlzOjpoMzFmMjBkMDI0NzU2ODc4NrMeeTxzZXJkZTo6X19wcml2YXRlOjpkZTo6 +Y29udGVudDo6Q29udGVudFJlZkRlc2VyaWFsaXplcjxFPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplcj46OmRlc2VyaWFsaXplX3NlcTo6aDBlMWY2NTJmMjc1OTgxZDO0Hnk8c2VyZGU6Ol9fcHJp +dmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnRSZWZEZXNlcmlhbGl6ZXI8RT4gYXMgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zZXE6OmhiYzhiMzExNjhlN2MwZDQ0tR55PHNl +cmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50UmVmRGVzZXJpYWxpemVyPEU+IGFz +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc2VxOjpoYzg3Y2EzMDEwNTBk +ZmFkN7YeeTxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudFJlZkRlc2VyaWFs +aXplcjxFPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3NlcTo6aGNl +YzJiMDI3YWZlMTgwMDa3HjdieXRlb3JkZXI6OmlvOjpSZWFkQnl0ZXNFeHQ6OnJlYWRfdTg6Omgz +NzZlZTc1OTg0NTE2N2VluB5GPGFsbG9jOjpyYzo6UmM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6 +OkRyb3A+Ojpkcm9wOjpoY2QzMDA5MzM2YjhmZGE2YbkeM3N0ZDo6c3luYzo6bXV0ZXg6Ok11dGV4 +PFQ+Ojpsb2NrOjpoZWVhNGM5NWE0N2ExM2NjZboeNnNlcmRlX2pzb246OnNlcjo6Zm9ybWF0X2Vz +Y2FwZWRfc3RyOjpoZWQyOWU5NjRiMzgwZTI2ZLselgE8PGVkMjU1MTlfZGFsZWs6OnNpZ25pbmc6 +OlNpZ25pbmdLZXkgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpTaWdu +aW5nS2V5VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9ieXRlczo6aDkxNjYy +YzBmMWFlNjI3Yzm8HjdhbGxvYzo6dmVjOjpWZWM8VCxBPjo6ZXh0ZW5kX3RydXN0ZWQ6OmhlNTk0 +MjUxMmVmMWM4YWM1vR5DPHVzaXplIGFzIG1hdHJpeF9waWNrbGU6OmRlY29kZTo6RGVjb2RlPjo6 +ZGVjb2RlOjpoN2M1YzdkOTJhNWRhOGUyYr4eWHZvZG96ZW1hYzo6bWVnb2xtOjppbmJvdW5kX2dy +b3VwX3Nlc3Npb246OkluYm91bmRHcm91cFNlc3Npb246OmltcG9ydDo6aDRlYTQ2NWZlMTRhYjcx +NDa/HtkBPHZvZG96ZW1hYzo6b2xtOjphY2NvdW50OjpvbmVfdGltZV9rZXlzOjpfOjo8aW1wbCBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6b25lX3Rp +bWVfa2V5czo6T25lVGltZUtleXNQaWNrbGU+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3Ig +YXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoMWQwZDUyZTg0ZWRjYWEzMsAeWWN1 +cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTMyOjpmaWVsZDo6RmllbGRFbGVtZW50 +MjYyNTo6cG93Mms6Omg3YjMwMTAxOTFiZDQ1OGEywR5AdG9raW86OnN5bmM6Om5vdGlmeTo6QXRv +bWljTm90aWZpY2F0aW9uOjpsb2FkOjpoOGViMDAwZjgwMGI3M2JiMsIeNjxUIGFzIGNvcmU6OmNv +bnZlcnQ6OkludG88VT4+OjppbnRvOjpoNmJjZTMwZWMyYjhmZTIyMsMecDxhbGxvYzo6c3RyaW5n +OjpTdHJpbmcgYXMgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8Y29yZTo6b3BzOjpyYW5nZTo6UmFu +Z2VGcm9tPHVzaXplPj4+OjppbmRleDo6aDBhMmE1ZjQzZDAwNzNjNzTEHlg8YWxsb2M6OnZlYzo6 +aW50b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6 +OmhhODgyNDM4N2FmYjJiYmNixR5HPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpjbG9u +ZTo6Q2xvbmU+OjpjbG9uZTo6aGM2NTU0MmYyNjlkZWMyNTHGHktjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8cnVtYV9ldmVudHM6OnJvb206Ok1lZGlhU291cmNlPjo6aDRjZWE5M2U0NzI4ZDUzYTfH +HipkZWNyeXB0ZWRyb29tZXZlbnRfc2VuZGVyQ2xhaW1lZEVkMjU1MTlLZXnIHns8aW5kZXhlZF9k +Yl9mdXR1cmVzOjpyZXF1ZXN0OjpmdXR1cmVzOjp2b2lkX2Z1dHVyZTo6Vm9pZEZ1dHVyZTxGPiBh +cyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aDdhNjkzZTAyZjRkMTY3YjnJ +Ht0BPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleTo6Xzo6PGltcGwg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVu +dHM6OnJvb21fa2V5OjpSb29tS2V5SGVscGVyPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9y +IGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aDVjZjI3MjU5Mjk4MTkxZTPKHgxk +ZXZpY2VpZF9uZXfLHldhbnlob3c6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPEU+ +IGZvciBhbnlob3c6OkVycm9yPjo6ZnJvbTo6aDVkMmY1N2QxNjA0YjAxMTnMHldhbnlob3c6OmVy +cm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPEU+IGZvciBhbnlob3c6OkVycm9yPjo6ZnJv +bTo6aDk1M2NkNDg5ZTE0ZmQ4MTPNHldhbnlob3c6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0 +OjpGcm9tPEU+IGZvciBhbnlob3c6OkVycm9yPjo6ZnJvbTo6aGE3OGJmMmVjNTJkOGUwMzXOHldh +bnlob3c6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPEU+IGZvciBhbnlob3c6OkVy +cm9yPjo6ZnJvbTo6aGQxMzk0MjdkNzkwOGE2OTfPHnJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF91c2VyX2RldmljZXM6 +Ont7Y2xvc3VyZX19Pjo6aDk5YmFkMWNhMGIzODhjNzHQHs0BPHJ1bWFfZXZlbnRzOjpyb29tOjpl +bmNyeXB0ZWQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRz +Ojpyb29tOjplbmNyeXB0ZWQ6OlJvb21FbmNyeXB0ZWRFdmVudENvbnRlbnQ+OjpkZXNlcmlhbGl6 +ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoM2Y5 +MWY4ZTAxZDUwMzIzYdEeMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYTIxZGI4ZWZj +OWJlODE1OdIeSXNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46OmRlc2VyaWFsaXplX3Jh +d192YWx1ZTo6aDU1YTliZmQ0NTQ0MTMyODTTHosBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlOjpw +cmVwYXJlX2Zvcl90cmFuc2FjdGlvbjo6e3tjbG9zdXJlfX0+OjpoY2Q4MTdkMDA2NTg5MmI0N9Qe +Y2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmlj +ZV9rZXlzOjpEZXZpY2VLZXlIZWxwZXI+OjpoZTc3YzM3YjhmOGQ1M2M4MdUe2AE8bWF0cml4X3Nk +a19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6VW5zaWduZWRE +ZXZpY2VJbmZvPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6Vmlz +aXRvcj46OnZpc2l0X3N0cjo6aGYxODFhNWZkZGU3MzY4MjjWHvYBPG1hdHJpeF9zZGtfY3J5cHRv +Ojp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRl +c2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlf +cmVxdWVzdDo6UmVxdWVzdGVkS2V5SW5mb0hlbHBlcj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlz +aXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhhZmUzZGQwNzU3MWE1ODQ0 +1x5kPHJtcF9zZXJkZTo6ZGVjb2RlOjpSZWFkUmVmUmVhZGVyPFQ+IGFzIHJtcF9zZXJkZTo6ZGVj +b2RlOjpSZWFkU2xpY2U+OjpyZWFkX3NsaWNlOjpoNWVkMDA4YWFhNzVmMTc2ZdgeO2NoYWNoYTIw +cG9seTEzMDU6OmNpcGhlcjo6Q2lwaGVyPEM+OjpuZXc6Omg0OWUyMTgyMWM1YWI1YWU32R5LPCZt +dXQgSSBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg5 +MDFkOTNjZjhkNDU2NjUx2h5xaW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfdHJhbnNhY3Rpb246Omlk +Yl90cmFuc2FjdGlvbl9yZXN1bHQ6OklkYlRyYW5zYWN0aW9uUmVzdWx0OjppbnRvX3Jlc3VsdDo6 +aGUzMTA2MDU1NDRkODJjYmPbHn88aW5kZXhlZF9kYl9mdXR1cmVzOjpkb21fc3RyaW5nX2l0ZXJh +dG9yOjpEb21TdHJpbmdJdGVyYXRvciBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJ +dGVyYXRvcj46Om5leHQ6Omg5NmNkMDhiNzQ3MzRjNjM53B5uPGNvcmU6Om9wczo6cmFuZ2U6OlJh +bmdlSW5jbHVzaXZlPHVzaXplPiBhcyBjb3JlOjpzbGljZTo6aW5kZXg6OlNsaWNlSW5kZXg8W1Rd +Pj46OmluZGV4X211dDo6aDI4OWM5NGM0NjZmNGQ1M2LdHjVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxU +LEU+OjptYXBfZXJyOjpoNDAzMjcyMGM3NzI0OTgwOd4eTGV5ZWJhbGw6OnN0YXRlOjpPYnNlcnZh +YmxlU3RhdGU8VD46OmluY3JfdmVyc2lvbl9hbmRfd2FrZTo6aDZiOGUyMmExZTlmOTg3NjjfHkxl +eWViYWxsOjpzdGF0ZTo6T2JzZXJ2YWJsZVN0YXRlPFQ+OjppbmNyX3ZlcnNpb25fYW5kX3dha2U6 +Omg4NjFlODBiN2VlNDBiZDQ04B5MZXllYmFsbDo6c3RhdGU6Ok9ic2VydmFibGVTdGF0ZTxUPjo6 +aW5jcl92ZXJzaW9uX2FuZF93YWtlOjpoZDJkMjQ4N2I1OGMxZGI2OOEe8QE8cnVtYV9ldmVudHM6 +OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emUgZm9yIHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6YWNjZXB0OjpUb0RldmljZUtl +eVZlcmlmaWNhdGlvbkFjY2VwdEV2ZW50Q29udGVudD46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlz +aXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg4YTAyZjU4M2YzZmMwYmVm +4h5LbWF0cml4X3Nka19jcnlwdG86OmRlaHlkcmF0ZWRfZGV2aWNlczo6ZXhwYW5kX3BpY2tsZV9r +ZXk6OmhiZDZkNzFjYzI1NjM5ZTQ44x5wPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVj +OjpzcGVjX2Zyb21faXRlcl9uZXN0ZWQ6OlNwZWNGcm9tSXRlck5lc3RlZDxULEk+Pjo6ZnJvbV9p +dGVyOjpoMDA5YzFmMzJkMzRiNDlkNuQeQ2NvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmbGF0dGVuOjph +bmRfdGhlbl9vcl9jbGVhcjo6aDkyZjllOWYyZWRmNWI4ODPlHkRzaGFyZGVkX3NsYWI6OnBhZ2U6 +OnNsb3Q6OlNsb3Q8VCxDPjo6bWFya19yZWxlYXNlOjpoYjQ0NDA3ZGQwMmJkZjA0OOYeaDxjb3Jl +OjppdGVyOjphZGFwdGVyczo6emlwOjpaaXA8QSxCPiBhcyBjb3JlOjppdGVyOjphZGFwdGVyczo6 +emlwOjpaaXBJbXBsPEEsQj4+OjpuZXc6Omg0NzVhN2RlNmU4OGJjY2Rh5x7TATxydW1hX2V2ZW50 +czo6cm9vbTo6bWVzc2FnZTo6dGV4dDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBm +b3IgcnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnRleHQ6OlRleHRNZXNzYWdlRXZlbnRDb250 +ZW50Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46 +OnZpc2l0X3N0cjo6aDFiYjFmNjQ1ZTBmMjRjNzfoHlJydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6 +OmRldmljZV9rZXlfaWQ6OkRldmljZUtleUlkOjpjb2xvbl9pZHg6Omg0ODU5MzliODhiY2U5NmRh +6R5ScnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2Vfa2V5X2lkOjpEZXZpY2VLZXlJZDo6 +ZGV2aWNlX2lkOjpoZTA3NWJlMjA3OTU5MDk1YeoeN3N0ZDo6YWxsb2M6OmRlZmF1bHRfYWxsb2Nf +ZXJyb3JfaG9vazo6aGEyYzhhOGE1NzIzM2JjZTHrHlZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +cnVtYV9jbGllbnRfYXBpOjplcnJvcjo6U3RhbmRhcmRFcnJvckJvZHk+OjpoNDc5MjY1MTY3ZWZi +OWNlNOweLWFsbG9jOjp2ZWM6OlZlYzxULEE+OjpwdXNoOjpoNzJhYmVkZDBlMzkzMTE1ZO0ecjxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6OmNvbW1vbjo6Q3Jvc3NTaWdu +aW5nS2V5IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoNjBmMzE3MjhmMDQ0NmQ4Y+4e +LWFsbG9jOjp2ZWM6OlZlYzxULEE+OjpwdXNoOjpoZDZjOTVlMDZlNjEzNTY3Nu8eqAFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb206 +OkV2ZW50PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6 +OlJvb21FbmNyeXB0ZWRFdmVudENvbnRlbnQ+Pjo6aGM5ZTZmYTc0NzM5NmQ4YznwHnZ0cmFjaW5n +OjppbnN0cnVtZW50OjpfOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRyb3AgZm9yIHRyYWNpbmc6 +Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPj46OmRyb3A6Omg3MjY0MjAwZGIzOWJmZjY08R52 +dHJhY2luZzo6aW5zdHJ1bWVudDo6Xzo6PGltcGwgY29yZTo6b3BzOjpkcm9wOjpEcm9wIGZvciB0 +cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8VD4+Ojpkcm9wOjpoNzlhNzZiYmNhYWUz +OWNkOfIeWjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrV3JpdGVHdWFyZDxUPiBhcyBjb3JlOjpv +cHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMmM3YzA1YzRmYjUyMjMwMfMeLWFsbG9jOjp2ZWM6OlZl +YzxULEE+OjpwdXNoOjpoMDgyMzEzNzQ4ZWZlOTk3ZfQeIl9fd2JnX3NldF9iYWNrdXBrZXlzX2Jh +Y2t1cFZlcnNpb271HipfX3diZ19zZXRfYmFzZW1pZ3JhdGlvbmRhdGFfcGlja2xlZEFjY291bnT2 +HilfX3diZ19zZXRfYmFzZW1pZ3JhdGlvbmRhdGFfYmFja3VwVmVyc2lvbvceLV9fd2JnX3NldF9i +YXNlbWlncmF0aW9uZGF0YV9iYWNrdXBSZWNvdmVyeUtlefgeOF9fd2JnX3NldF9iYXNlbWlncmF0 +aW9uZGF0YV9wcml2YXRlQ3Jvc3NTaWduaW5nTWFzdGVyS2V5+R49X193Ymdfc2V0X2Jhc2VtaWdy +YXRpb25kYXRhX3ByaXZhdGVDcm9zc1NpZ25pbmdTZWxmU2lnbmluZ0tlefoePV9fd2JnX3NldF9i +YXNlbWlncmF0aW9uZGF0YV9wcml2YXRlQ3Jvc3NTaWduaW5nVXNlclNpZ25pbmdLZXn7Hi5fX3di +Z19zZXRfcGlja2xlZGluYm91bmRncm91cHNlc3Npb25fc2VuZGVyS2V5/B4eX193YmdfaW5ib3Vu +ZGdyb3Vwc2Vzc2lvbl9mcmVl/R4ZX193YmdfZW5jcnlwdGlvbmluZm9fZnJlZf4eR3dhc21fYmlu +ZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06OmhhMzM1OGMxOGI0 +OTVmNTM2/x5Hd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlOjp7e2Nsb3N1 +cmV9fTo6aGNhYTBiMDYwNzQ1MDk2M2WAH7UCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9j +Ojp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVz +dWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vz +c2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3Vy +ZX19OjpEZXZpY2VSZXN1bHQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4sZnV0 +dXJlc191dGlsOjphYm9ydGFibGU6OkFib3J0ZWQ+Pj46OmhiY2RjNDRjNWNhY2ZhYzhmgR+BAmNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPGNv +cmU6OnJlc3VsdDo6UmVzdWx0PGNvcmU6OnJlc3VsdDo6UmVzdWx0PG1hdHJpeF9zZGtfY3J5cHRv +OjppZGVudGl0aWVzOjptYW5hZ2VyOjpEZXZpY2VDaGFuZ2UsbWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4sZnV0dXJlc191dGlsOjphYm9ydGFibGU6OkFi +b3J0ZWQ+Pj46OmgyZDkwNjMzNDY3ZmExZmZigh/HAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxj +b3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6cmVsYXRpb246 +OlJlbGF0aW9uPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjp3aXRob3V0X3JlbGF0aW9uOjpS +b29tTWVzc2FnZUV2ZW50Q29udGVudFdpdGhvdXRSZWxhdGlvbj4+Pjo6aGYyN2FkNzJhMmM1ZGMz +MzmDH1g8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcD46OmRyb3A6OmgyMmRkYmY2MGY4NWI3OGQ3hB9YPGFsbG9jOjp2ZWM6OmludG9f +aXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoOTEx +ZDdhNzkwZGEzOTIxY4UfFF9fd2JnX3NpZ25hdHVyZV9mcmVlhh9jbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9z +dXJlfX06OmhhNjEyODY1NTkyYTcyMjlihx9jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJl +OjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Omg2MDE2 +NGUwYWI2NWU4YzI1iB9jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9f +cHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06OmhhNmE0MjA1YzQxNzk0YzNh +iR9jbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRo +X2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJlfX06Omg1OTdkMmRhMTkyYjFkNGU4ih9jbWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJv +cjo6e3tjbG9zdXJlfX06Omg4NWIyNDY2NDM5NmIzMWQ0ix9jbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjo6e3tjbG9zdXJl +fX06OmgxMjgxNWNkNTU2NjA4MDJkjB+qAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbTo6RXZlbnQ8bWF0cml4X3Nka19jcnlwdG86 +OnR5cGVzOjpldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Um9vbUVuY3J5cHRlZEV2ZW50Q29udGVu +dD4+OjpoYzllNmZhNzQ3Mzk2ZDhjOS4xjR8wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +OmgzZjllZmM4ZjdkZjM3MjAyjh8wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZDVl +Mjg3MmY2YjMzM2M3jx9Ec2VyZGU6OmRlOjp2YWx1ZTo6TWFwRGVzZXJpYWxpemVyPEksRT46Om5l +eHRfcGFpcjo6aDczYmJiOGJkN2M3YTgxMjOQHz9jb3JlOjpzbGljZTo6c29ydDo6aW5zZXJ0aW9u +X3NvcnRfc2hpZnRfbGVmdDo6aGIzZGNhYWQwZjg5MWUwYzeRHz9jb3JlOjpzbGljZTo6c29ydDo6 +aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGVlYWNhODJiNzYxNzVmMmKSHz9jb3JlOjpzbGlj +ZTo6c29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGQ2MDg0NWRiYjVjODY1YjeTHzNy +bXBfc2VyZGU6OmRlY29kZTo6cmVhZF9iaW5fZGF0YTo6aDcyZDA5NTA4NjRmMmMyYzGUHzA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGJhZGI5ZDkxNzg5OTMzYzGVH0ppbmRleGVkX2Ri +X2Z1dHVyZXM6OmlkYl9kYXRhYmFzZTo6SWRiRGF0YWJhc2U6Om9wZW5fdTMyOjpoODRmYzcwZmM5 +NWU0YTNhYZYfP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0Ojpo +NThkY2JkODYxYTY3ZmVhOZcfP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25fc29ydF9zaGlm +dF9sZWZ0OjpoYzRlNjQ4YmEwMDAxYWU0MZgfP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25f +c29ydF9zaGlmdF9sZWZ0OjpoNzBjYWNkZTlmZTM5YWMxY5kfP2NvcmU6OnNsaWNlOjpzb3J0Ojpp +bnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0OjpoNmNkYTY0ZjA2Mzc4MmI0M5ofP2NvcmU6OnNsaWNl +Ojpzb3J0OjppbnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0OjpoZDFhNWRjOGIxNmJjYzBjY5sfP2Nv +cmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25fc29ydF9zaGlmdF9sZWZ0OjpoYzU2MGNkYmRlZTky +MDFiY5wfYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPiBh +cyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNDcwNjJkNTY3NGYyM2E4MJ0fMDwmVCBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTQxMzgxYmU4ZTI0YzY4NZ4fMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoZmY2OTQ4MWMwYzM0ZjY5Y58fWjxzdGQ6OnN5bmM6OnJ3bG9j +azo6UndMb2NrV3JpdGVHdWFyZDxUPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpo +MDFiMjYxNTUzYjkyZmE4YqAfYzxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoMmJhYTdhMmRiNTcw +NTM0ZKEfxwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVt +YV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnJlbGF0aW9uOjpSZWxhdGlvbjxydW1hX2V2ZW50czo6 +cm9vbTo6bWVzc2FnZTo6d2l0aG91dF9yZWxhdGlvbjo6Um9vbU1lc3NhZ2VFdmVudENvbnRlbnRX +aXRob3V0UmVsYXRpb24+Pj46OmgyMTk4MTNhNThlZDE2ODg4oh8wPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6Omg1MTQ0N2UzMzc5YzMzZWFlox8wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg0YzFjMjMwYTQ3N2M3NDNhpB8wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +OmhkNmFhZWIxM2ZkYWE0NDljpR8+Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0 +b3I6OmFueTo6aGYwZjBkMjBjNWNiMzZhNTWmH2Q8c2VyZGU6OmRlOjp2YWx1ZTo6TWFwRGVzZXJp +YWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6Omg5 +MjQ4ZDUwNDg0YmUzYzJkpx9CPGJvb2wgYXMgbWF0cml4X3BpY2tsZTo6ZGVjb2RlOjpEZWNvZGU+ +OjpkZWNvZGU6OmhkM2I4MDA5ODI4MmI0NGRkqB9nPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpGbGF0 +U3RydWN0QWNjZXNzPEU+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVk +OjpoZGI3NzQ2Y2UxOWUzZDc2Y6kfP2NvcmU6OnNsaWNlOjpzb3J0OjppbnNlcnRpb25fc29ydF9z +aGlmdF9sZWZ0OjpoOGMwYmQwYTM3OGQ5ZTczN6ofXzxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6 +OnNlc3Npb25faWQ6OlNlc3Npb25JZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxZjkw +OTBkYzJlODg2NTcyqx9ZPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6cm9vbV9pZDo6Um9vbUlk +IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGIyMzBkM2IzMzE2MDNmY2SsH0R0cmFjaW5n +X2NvcmU6OmV2ZW50OjpFdmVudDo6ZGlzcGF0Y2g6Ont7Y2xvc3VyZX19OjpoNWRiOTIwZTlmNWYx +ZjhiYa0fM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoMjlkYjhmMjE3YmMzZDEx +Za4fXTxzZXJkZV9qc29uOjp2YWx1ZTo6c2VyOjpTZXJpYWxpemVNYXAgYXMgc2VyZGU6OnNlcjo6 +U2VyaWFsaXplU3RydWN0Pjo6ZW5kOjpoMzdhY2M3NjNjNmNjYzk4OK8fCV9fYXNobHRpM7AflAJh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpLVj4+OjpuZXh0X2xlYWZfZWRnZTo6aDBiZjhlYWQxNjM5ZTE1YzKxH5QCYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2Rl +UmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TGVhZk9ySW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6S1Y+Pjo6bmV4dF9sZWFmX2VkZ2U6OmgyNzZlMzA1ZTU4ZTllZmFmsh+UAmFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxC +b3Jyb3dUeXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Okxl +YWZPckludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktW +Pj46Om5leHRfbGVhZl9lZGdlOjpoMjgzNWZlYzMzOTk5NGQ0YrMflAJhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93 +VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJ +bnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+Ojpu +ZXh0X2xlYWZfZWRnZTo6aDQzZmM0ZGQ0NjgzNDQ2ZjG0H5QCYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Okhh +bmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJu +YWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6bmV4dF9s +ZWFmX2VkZ2U6Omg1OTMwNmQ4ODk5OTFmNWE0tR+UAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46Om5leHRfbGVhZl9l +ZGdlOjpoNzdjMzQ4MDEzYmM0MGFmZLYflAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZp +Z2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4sYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+OjpuZXh0X2xlYWZfZWRnZTo6 +aGEwYmM2ZTMzNGI4NzM2MzO3H5QCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6 +OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+LGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6bmV4dF9sZWFmX2VkZ2U6OmhjYzgz +Mjc0NWNkNTc2ZTVluB9yPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjplbnVtZXJhdGU6OkVudW1lcmF0 +ZTxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omhm +NzIxODY2ODI2OGZlMjViuR+AAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OktleVF1ZXJ5TWFuYWdlcjo6ZW5zdXJlX3N5bmNfdHJhY2tlZF91c2Vyczo6 +e3tjbG9zdXJlfX0+OjpoOWY2ZDQ4NTVmYmJjZjQ3NC4xuh9PY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGdsb29fdGltZXJzOjpmdXR1cmU6OlRpbWVvdXRGdXR1cmU+OjpoOTJjOWVkODdjZjIzNjk3 +N7sfd2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6 +T2xtTWFjaGluZTo6ZGVjcnlwdF9tZWdvbG1fZXZlbnRzOjp7e2Nsb3N1cmV9fT46Omg3NjAxYTM0 +YTJmOTE4OGYyvB9fZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfdW5vcmRlcmVkOjpGdXR1 +cmVzVW5vcmRlcmVkPEZ1dD46OnJlbGVhc2VfdGFzazo6aDQ1NTgyYjQ1YzQ5YTk4NDO9H208Y29y +ZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpp +dGVyYXRvcjo6SXRlcmF0b3I+OjpzaXplX2hpbnQ6OmgxZWZlNzZiYjgxMTAwOTBjvh8iX193Ymdf +Z2V0X2JhY2t1cGtleXNfZGVjcnlwdGlvbktleb8fYzxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5k +PFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpo +N2Y4NTFhZGZhZDdmYTVjNcAfZTxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoN2Y4NTFhZGZhZDdm +YTVjNS4xwR8yc2VyZGU6OmRlOjpFcnJvcjo6bWlzc2luZ19maWVsZDo6aDJjMTM2NjkwZWE2NjQw +YzjCHzRzZXJkZTo6ZGU6OkVycm9yOjpkdXBsaWNhdGVfZmllbGQ6Omg5ZDNjNzJhOWJhNThjYzZm +wx95Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpP +bG1NYWNoaW5lOjpkZWNyeXB0X21lZ29sbV9ldmVudHM6Ont7Y2xvc3VyZX19Pjo6aDc2MDFhMzRh +MmY5MTg4ZjIuMcQf1gJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1 +cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpP +bG1NYWNoaW5lOjpzYXZlX2JhY2t1cF9kZWNyeXB0aW9uX2tleTo6e3tjbG9zdXJlfX0sbWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpzYXZlX2JhY2t1cF9kZWNyeXB0aW9uX2tl +eTo6e3tjbG9zdXJlfX0sd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6e3tjbG9zdXJlfX0+Pjo6aDY5 +ZjhmOGJiNmNmNmMzNmPFH5QCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6Ojxp +bXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6bmV4dF9sZWFmX2VkZ2U6OmhiOTE2NzNm +Njc5MzYzYWUyxh99PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93 +aXRoaGVsZDo6V2l0aGhlbGRDb2RlIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlh +bGl6ZTo6aDk4MDJhYTJkM2U0YjJiNjDHH2hzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6 +ZGU6OkRlc2VyaWFsaXplIGZvciBhbGxvYzo6Ym94ZWQ6OkJveDxUPj46OmRlc2VyaWFsaXplOjpo +NjRmMDRiYTVjNGE2MTg3NMgfMnNlcmRlOjpkZTo6RXJyb3I6Om1pc3NpbmdfZmllbGQ6OmhhMzdk +Zjk3MjViYzdlYzllyR80c2VyZGU6OmRlOjpFcnJvcjo6ZHVwbGljYXRlX2ZpZWxkOjpoYTA3ZDdl +OTg4NWM0NzE1N8ofVWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZTo6X19wcml2YXRlOjpk +ZTo6Y29udGVudDo6Q29udGVudD46OmhiZDE2ZTdhZDdhZTM3MTkyLjLLH2Q8cnVtYV9ldmVudHM6 +OnNlY3JldDo6cmVxdWVzdDo6U2VjcmV0TmFtZSBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6 +ZGVzZXJpYWxpemU6Omg2YTg3ZmIzNTg4YTI0ZDgzzB90PHJ1bWFfZXZlbnRzOjpyb29tOjpoaXN0 +b3J5X3Zpc2liaWxpdHk6Okhpc3RvcnlWaXNpYmlsaXR5IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emU+OjpkZXNlcmlhbGl6ZTo6aDcyODBmNWQ3MmQ4ZGE0ZmPNHzJzZXJkZTo6ZGU6OkVycm9yOjpt +aXNzaW5nX2ZpZWxkOjpoMDcyMWMwZGI5MDJlOTliN84fNHNlcmRlOjpkZTo6RXJyb3I6OmR1cGxp +Y2F0ZV9maWVsZDo6aDcyNWVkYzE1YzNlYjBkMDbPH0ZpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9k +YXRhYmFzZTo6SWRiRGF0YWJhc2U6Om9wZW46OmhiODk2MTI5MzAzOTAzOGUz0B+UAmFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJl +ZjxCb3Jyb3dUeXBlLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkxlYWZPckludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OktWPj46Om5leHRfbGVhZl9lZGdlOjpoNjkzYzY5OTEyZGQyNGE2MdEflAJhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9y +cm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFm +T3JJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+ +OjpuZXh0X2xlYWZfZWRnZTo6aDU5M2ZkYWE2NmIwZWZmNGXSH5QCYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5 +cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50 +ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6bmV4 +dF9sZWFmX2VkZ2U6OmgwNTJiNGZiY2JjZWI0NGIy0x+UAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5k +bGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEss +VixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFs +PixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46Om5leHRfbGVh +Zl9lZGdlOjpoNmY0NjRiMjNiYjk2ZmI2YdQflAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +YXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4sYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+OjpuZXh0X2xlYWZfZWRn +ZTo6aDkzNTU3MjFkODNjY2Q4ODLVH5QCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdh +dGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+LGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+Pjo6bmV4dF9sZWFmX2VkZ2U6Omhi +OTNkNzNlYmI1MTZjYjUz1h+UAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8 +aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEssVixhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPixhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46Om5leHRfbGVhZl9lZGdlOjpoY2E4YTcz +ZTUwZTYzNDMxMtcflAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwg +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj4+OjpuZXh0X2xlYWZfZWRnZTo6aGUyY2I5NjU1MWJm +NTVlZGHYH2M8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRlcjxLLFYsQT4g +YXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDQyYjI0NTJiMzI3ODQ0YmTZH0k8VCBh +cyBjb3JlOjpzbGljZTo6Y21wOjpTbGljZUNvbnRhaW5zPjo6c2xpY2VfY29udGFpbnM6OmgwY2Fl +ZTQ2ZjNkNDRhODYy2h9JPFQgYXMgY29yZTo6c2xpY2U6OmNtcDo6U2xpY2VDb250YWlucz46OnNs +aWNlX2NvbnRhaW5zOjpoNGZlMzI1ZWUzMTZkNGRjMtsfbjxydW1hX2V2ZW50czo6a2V5Ojp2ZXJp +ZmljYXRpb246OmNhbmNlbDo6Q2FuY2VsQ29kZSBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6 +ZGVzZXJpYWxpemU6OmhhMzFhOGNjYmEwMGY0ODIx3B9lPHNlcmRlX2pzb246OnNlcjo6Q29tcG91 +bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6 +OmgyYmFhN2EyZGI1NzA1MzRkLjHdH1g8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxU +LEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg0ZDFiNjQwZTY5MDBmNWZl3h9W +PGV5ZWJhbGw6OnNoYXJlZDo6V2Vha09ic2VydmFibGU8VCxMPiBhcyBjb3JlOjpjbG9uZTo6Q2xv +bmU+OjpjbG9uZTo6aGFlYjgxZDg4Y2UwOTMzOGbfH3s8bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +OjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpXaXRoaGVsZENvZGUgYXMgY29yZTo6Y29udmVy +dDo6QXNSZWY8c3RyPj46OmFzX3JlZjo6aDhlZjk0YzEwNzI5YjdlZTHgHzA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aGU5OGYzOTczNTA5MjJkMGHhH7gBPG1hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTdXBwb3J0ZWRNYWNNZXRob2QgYXMgY29y +ZTo6Y29udmVydDo6VHJ5RnJvbTwmcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpNZXNz +YWdlQXV0aGVudGljYXRpb25Db2RlPj46OnRyeV9mcm9tOjpoNDdhZDUyYzZkYzU1ZTFhZOIfOjxE +IGFzIGRpZ2VzdDo6ZGlnZXN0OjpEaWdlc3Q+OjpmaW5hbGl6ZTo6aDdhNGVhZDNlNDU2YzJjOTLj +H0o8Y29yZTo6b3BzOjpyYW5nZTo6UmFuZ2U8SWR4PiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoM2ZhZmIwNTc3YTY1ZDk0ZOQfMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGVk +M2FmMmY5MzQxMjA3ZuUfVWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZTo6X19wcml2YXRl +OjpkZTo6Y29udGVudDo6Q29udGVudD46OmhiZjc2NmFjOGUxZGJlMzk5LjPmH0FlZDI1NTE5X2Rh +bGVrOjpzaWduaW5nOjpTaWduaW5nS2V5Ojpmcm9tX2J5dGVzOjpoMTE1M2Q5MTAwMzE5YzkzOecf +aHNlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9j +Ojpib3hlZDo6Qm94PFQ+Pjo6ZGVzZXJpYWxpemU6Omg5ZTkwYzExMWRjODU0OTg26B8rdm9kb3pl +bWFjOjpzYXM6OlNhczo6bmV3OjpoYWQ2NTRhNDU0ZjI1ODY1ZOkfrQFhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkxlYWY+OjpwdXNoX3dpdGhfaGFuZGxlOjpoMDJkYjI3ODUxN2EzODNjZuoflAJhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpM +ZWFmT3JJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpL +Vj4+OjpuZXh0X2xlYWZfZWRnZTo6aDQwNDVkNWNjY2MxNThhNDLrHz52b2RvemVtYWM6Om9sbTo6 +c2Vzc2lvbjo6Y2hhaW5fa2V5OjphZHZhbmNlOjpoMzk3MWMwYzdkNGFiYTU5OewfMnNlcmRlOjpk +ZTo6RXJyb3I6Om1pc3NpbmdfZmllbGQ6Omg1YmQyZTNkNjExMzc2ZThh7R80c2VyZGU6OmRlOjpF +cnJvcjo6ZHVwbGljYXRlX2ZpZWxkOjpoYTk4OWE2M2U3Zjg4ODg5Nu4fO2FsbG9jOjpyYXdfdmVj +OjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmhjNDQxY2RmZDA3OGI2ZTdj7x96Y3VydmUyNTUx +OV9kYWxlazo6ZmllbGQ6OjxpbXBsIGN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6 +dTMyOjpmaWVsZDo6RmllbGRFbGVtZW50MjYyNT46OmludmVydDo6aDA1ZjU0ZGYzMDA1M2JmY2Xw +HzJzZXJkZTo6ZGU6OkVycm9yOjptaXNzaW5nX2ZpZWxkOjpoMWEyM2Q4NzI2N2RlNjA2OPEfNHNl +cmRlOjpkZTo6RXJyb3I6OmR1cGxpY2F0ZV9maWVsZDo6aDJlNWYyODgwZGQwNDE1M2HyH1Vjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRl +bnQ+OjpoZjZjYWVhNjc2MTVmNDdhZS418x+UAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5h +dmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEssVixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46Om5leHRfbGVhZl9lZGdl +OjpoMTYxODU4MjViZTM2OGEzZPQfSDxhbGxvYzo6Ym94ZWQ6OkJveDxzdHI+IGFzIGNvcmU6OmNs +b25lOjpDbG9uZT46OmNsb25lOjpoNDEzZWU0ZjI0N2VmMzIxNPUfvAFhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TGVhZk9ySW50ZXJuYWw+OjpwdXNoX2ludGVybmFsX2xldmVsOjpoMDQ0Mjk0OGI1NWI1MDgz +MfYfvAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpwdXNoX2ludGVybmFsX2xl +dmVsOjpoN2EzZjRkM2E5MjkxZDFhM/cfvAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJu +YWw+OjpwdXNoX2ludGVybmFsX2xldmVsOjpoOGRlYTgyODY3OGFlYmNkYvgfvAFhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpwdXNoX2ludGVybmFsX2xldmVsOjpoOWMyNDZjODQ2 +ZjFkNDY0MfkfvAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpwdXNoX2ludGVy +bmFsX2xldmVsOjpoYzY4NTcwZTRkMTNmNzg4ZPofQGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6OnNsaWNlX2luc2VydDo6aDA5ZmRmZmJkZDkxNGJkZTT7H2Jjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlE +ZXZpY2U+OjpoYzAzY2RhNzA3NzE3NDdhY/wfNGNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46OmV4 +cGVjdDo6aGZlZDdhOWJjMWVhOWY3MWb9H4UBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6S2V5UXVlcnlNYW5hZ2VyOjp3YWl0X2lmX3VzZXJfa2V5X3F1 +ZXJ5X3BlbmRpbmc6Ont7Y2xvc3VyZX19Pjo6aDcwOTdhZGU3MGUyYjJhOTUuMf4fTWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cm9vbTo6TWVkaWFTb3VyY2U+OjpoNGNlYTkz +ZTQ3MjhkNTNhNy4x/x8xY29yZTo6b3B0aW9uOjpPcHRpb248VD46Om9rX29yOjpoZmE5ZThkMDg0 +NTJiNjg5ZIAgxwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Omlk +ZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OmVuY3J5cHQ8bWF0cml4X3Nka19jcnlw +dG86OnR5cGVzOjpldmVudHM6OnNlY3JldF9zZW5kOjpTZWNyZXRTZW5kQ29udGVudD46Ont7Y2xv +c3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhkZGEzNzQxOWY2NzBiNDc0gSAzY29yZTo6b3B0aW9uOjpP +cHRpb248VD46Om9rX29yOjpoZmE5ZThkMDg0NTJiNjg5ZC4xgiCFAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OktleVF1ZXJ5TWFuYWdlcjo6d2FpdF9p +Zl91c2VyX2tleV9xdWVyeV9wZW5kaW5nOjp7e2Nsb3N1cmV9fT46Omg3MDk3YWRlNzBlMmIyYTk1 +LjKDIDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFjNzU5ZTZmYmFiM2NiYWWEIJYB +PGNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRj4gYXMgY29yZTo6b3BzOjp0cnlfdHJhaXQ6OkZyb21S +ZXNpZHVhbDxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpjb252ZXJ0OjpJbmZhbGxpYmxlLEU+ +Pj46OmZyb21fcmVzaWR1YWw6OmgzMzdhY2IwNzFmY2I5YWMzhSAcX193YmdfbWVnb2xtdjFiYWNr +dXBrZXlfZnJlZYYghQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjpLZXlRdWVyeU1hbmFnZXI6OndhaXRfaWZfdXNlcl9rZXlfcXVlcnlfcGVuZGluZzo6 +e3tjbG9zdXJlfX0+OjpoNzA5N2FkZTcwZTJiMmE5NS40hyBCbWF0cml4X3Nka19jb21tb246OmV4 +ZWN1dG9yOjpzcGF3bjo6e3tjbG9zdXJlfX06OmhhYmY5ZjY0ZjIzMWJhMDFkiCBCbWF0cml4X3Nk +a19jb21tb246OmV4ZWN1dG9yOjpzcGF3bjo6e3tjbG9zdXJlfX06OmhkNTllZTdiN2Y0YWRlZDZk +iSBWPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6OlNlY3JldEluZm8gYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aDE3MGZjYThkNWEyNDBkMmKKIBR0cmFjaW5nX3NldF9taW5MZXZlbIsg +cGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3Jl +Ojpjb21wYXJlX2dyb3VwX3Nlc3Npb246Ont7Y2xvc3VyZX19Pjo6aGQwNDcyNzA0ZWRjY2U5NzeM +IGM8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6 +ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aDc5OGVhYzE3MjM5ZjBkNGSNIGM8c2VyZGVfanNv +bjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNl +cmlhbGl6ZV9maWVsZDo6aDAyODBhZDc4OTU4ZDVhZTiOIE1jb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cnVtYV9ldmVudHM6OnJvb206Ok1lZGlhU291cmNlPjo6aDRjZWE5M2U0NzI4ZDUzYTcuNo8g +bjxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmNhbmNlbDo6Q2FuY2VsQ29kZSBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6Omg2ODQxOTBhMjE3ZDUyMWEwkCAP +c2VydmVybmFtZV9wb3J0kSB7PHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6Y3J5cHRvX2FsZ29y +aXRobXM6OkRldmljZUtleUFsZ29yaXRobSBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVz +ZXJpYWxpemU6Omg4YTNkYWQ1MzA4MzNjNGJikiAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmgwMDY1YmY5ZjM5NDQwM2ZjkyDHAW1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmVuY3J5cHRp +b246OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZW5j +cnlwdGlvbjo6RW5jcnlwdGlvbkFsZ29yaXRobT4gZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6RXZlbnRFbmNyeXB0aW9uQWxnb3JpdGhtPjo6ZnJvbTo6aDIyZTA0NWJmMmQwYTE4Y2aUIBFk +ZXZpY2VfYWxnb3JpdGhtc5UgDl9fd2JnX3Nhc19mcmVlliANX193YmdfcXJfZnJlZZcgMDwmVCBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTMzYzFlNmFlZDgwMWZkM5ggMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWNmNDkyOWM3MGY3MTBiMZkgY21hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xv +c3VyZX19OjpoZjFlM2NlZGVhYjQzNWE4MpogY21hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVy +ZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoN2Fl +M2M0NjBkZmFkNThjZZsgY21hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3Rv +X3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoYzg3YTQxM2MxZmM4Yzc4 +OJwgY21hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0 +aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoZDc1ODJjOGZlMGM1ZDE2Y50gY21hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJy +b3I6Ont7Y2xvc3VyZX19OjpoZTBiZDU3MDE5ZjExMGUzNp4gY21hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3Vy +ZX19OjpoMWMxZDZkYjg4Mjg5ZTVlMp8gY21hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6 +ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoZDkyNmM4 +MjRlODNlMGE1MKAgY21hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3By +b21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoNzk3YWE2YjA1ZGEwYTVlY6Eg +Y21hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9j +dXN0b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoNmJlYWYzZDU3NDRmMDQ2ZKIgY21hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I6 +Ont7Y2xvc3VyZX19OjpoMzBmMTNiNDE1OGM1NmRlZqMgeTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlw +ZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OlJvb21LZXlXaXRoaGVsZENvbnRlbnQgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDc2YzVhODQzOTRkNTY2ZjmkIDA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDY4NTMxNDg0OTZhNzUxMjelIDA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aGQzMGY1N2RiZWFlNzU0NzKmIF48dHJhY2luZ19jb3JlOjpmaWVsZDo6SXRl +ciBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhlZTU3 +NmQ0ZjMzN2M3OTE5pyDDAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTw8bWF0cml4X3Nka19pbmRl +eGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6aW5ib3VuZF9ncm91cF9zZXNzaW9u +X2NvdW50czo6e3tjbG9zdXJlfX0+OjpoMDU3NzAyZjJhOWEwMWU3ZqggemNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91 +bmQ6OlBpY2tsZWRPdXRib3VuZEdyb3VwU2Vzc2lvbj46OmhkY2IzNDU2OTgxMjQ5ZDY0qSB9PG1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhl +bGRDb2RlIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aGM2NGU5YjIz +ZDFkYzM1NmGqIH08bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dp +dGhoZWxkOjpXaXRoaGVsZENvZGUgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFs +aXplOjpoZTM3YjVjNGM4NWVhOTM3ZasgZDxydW1hX2V2ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpT +ZWNyZXROYW1lIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aDJlMmZm +MjhiNzM0ZjI5ZWWsIGQ8cnVtYV9ldmVudHM6OnNlY3JldDo6cmVxdWVzdDo6U2VjcmV0TmFtZSBh +cyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6Omg0M2YzYzBiZDM1YTc2ODMy +rSBuPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6RXZlbnRFbmNyeXB0aW9uQWxnb3JpdGhtIGFz +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aGRiMzMwM2M2ZTRkZDRlOTKu +IHQ8cnVtYV9ldmVudHM6OnJvb206Omhpc3RvcnlfdmlzaWJpbGl0eTo6SGlzdG9yeVZpc2liaWxp +dHkgYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoOTIxNGFkYTM1YzFl +MTNkNa8gdDxydW1hX2V2ZW50czo6cm9vbTo6aGlzdG9yeV92aXNpYmlsaXR5OjpIaXN0b3J5Vmlz +aWJpbGl0eSBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmhmM2JhMTFi +ZThhYWNhZDJksCA0c2VyZGU6OmRlOjpFcnJvcjo6ZHVwbGljYXRlX2ZpZWxkOjpoNWUzOWI4ZmNj +OTI1ZGQ5NbEgMnNlcmRlOjpkZTo6RXJyb3I6Om1pc3NpbmdfZmllbGQ6Omg4N2QxMGM0MjMzZGIx +MGJmsiBNPHJtcDo6ZW5jb2RlOjpWYWx1ZVdyaXRlRXJyb3I8RT4gYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aGViODMzYzg3NTY1ZmY5MzizIE88cm1wOjplbmNvZGU6OlZhbHVlV3JpdGVFcnJv +cjxFPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZWI4MzNjODc1NjVmZjkzOC4xtCBjaW5k +ZXhlZF9kYl9mdXR1cmVzOjpyZXF1ZXN0OjpmdXR1cmVzOjppZGJfcmVxdWVzdF9mdXR1cmU6OmV4 +dHJhY3Rfc3VjY2Vzc19yZXN1bHQ6OmhmMDgwNTg1NWFiZjVmOGQ4tSBAYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6c2xpY2VfaW5zZXJ0OjpoYjg4MDljM2M2OGVkYmVjMbYgdTxydW1h +X2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246Ok1lc3NhZ2VBdXRoZW50aWNhdGlvbkNvZGUgYXMg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoNjg4ZWQwZjU0M2FlNDA3Zrcg +bjxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmNhbmNlbDo6Q2FuY2VsQ29kZSBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6Omg0Y2Y1M2E1NzUwN2FlYWNkuCBw +PHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6S2V5QWdyZWVtZW50UHJvdG9jb2wgYXMg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoOGUyNjc5N2JiZTdkZDU0MLkg +bjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OkV2ZW50RW5jcnlwdGlvbkFsZ29yaXRobSBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmhhOTVmZTc4NmVhMjNmNWJhuiBV +PG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OkZsb3dJZCBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoZGVmODNlMWEzY2UyY2ZmObsgMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoM2U1NjUxNjNiMTZjMDI4ZrwgVzxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9u +OjpGbG93SWQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRlZjgzZTFhM2NlMmNmZjkuMb0g +O2FsbG9jOjpzeW5jOjpBcmM8VD46OmFsbG9jYXRlX2Zvcl9sYXlvdXQ6OmgwOWZlNDQ3Yjg0ZjZk +ZGE2viA7YWxsb2M6OnN5bmM6OkFyYzxUPjo6YWxsb2NhdGVfZm9yX2xheW91dDo6aDk5ODczMDE5 +OTA1NWRhNDS/IDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE4YzhkNTEyY2IyYmRi +NWPAIDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI4OTU5NTU5MjVlMmUyZWXBIDA8 +JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY1N2JjZWUzZTMxMGUyZWTCIGA8cnVtYV9l +dmVudHM6OnJvb206OmVuY3J5cHRlZDo6RW5jcnlwdGVkRXZlbnRTY2hlbWUgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aGY2MDBmNmM1NGE2MWRhYTPDIDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDNkOTE4MWI5MjQ2MjZjNTfEIDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDQyYWU5NDIzYTYzZTcxZWHFIDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE2 +NWExNDQzODVkNGFmNTXGIDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGY5NmFlMTc0 +Mjg5Y2MzYWPHIGI8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OkFjY2Vw +dE1ldGhvZCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjg2Nzc4NzIxMGZhM2QyYsggcDxh +bGxvYzo6dmVjOjpWZWM8VD4gYXMgYWxsb2M6OnZlYzo6c3BlY19mcm9tX2l0ZXJfbmVzdGVkOjpT +cGVjRnJvbUl0ZXJOZXN0ZWQ8VCxJPj46OmZyb21faXRlcjo6aGUxYjBmNTVhYmZhNzU4NGLJIHA8 +YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyX25lc3RlZDo6 +U3BlY0Zyb21JdGVyTmVzdGVkPFQsST4+Ojpmcm9tX2l0ZXI6OmhlYzFmMTI4ZTUzNWIxMzg1yiB6 +PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmaWx0ZXJfbWFwOjpGaWx0ZXJNYXA8SSxGPiBhcyBjb3Jl +OjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OnNpemVfaGludDo6aDIwYTU4Zjkw +MGY3YTA3ZjDLIDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA1MjY2NGJiNmVlOGU5 +Y2PMIDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEzZTZmYzQ4YjY3MjY0YzHNIDA8 +JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI2Yzc4NzhiZGNhNjNlODHOIDVjb3JlOjpy +ZXN1bHQ6OlJlc3VsdDxULEU+OjptYXBfZXJyOjpoOGUyYWM3YWU5ZTAxMTM5Zc8gUW1hdHJpeF9z +ZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OmV2ZW50X2VudW1zOjpBbnlFdmVudDo6c2VuZGVyOjpo +N2U0NzI4MjU4ZWIzNDUwNNAgPXRyYWNpbmdfY29yZTo6ZGlzcGF0Y2hlcjo6RW50ZXJlZDo6Y3Vy +cmVudDo6aGJhMzlmNjg4OWVmYTM3OTHRIGg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OmZ1c2U6OkZ1 +c2U8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0Ojpo +NTk4MTQxMzdiYjAwYjM3NNIgVzx2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpTaWduYXR1cmVF +cnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTQ0NTNhYjIwYzU5MGQzONMgWTx2b2Rv +emVtYWM6OnR5cGVzOjplZDI1NTE5OjpTaWduYXR1cmVFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoZTQ0NTNhYjIwYzU5MGQzOC4x1CBJdm9kb3plbWFjOjp0eXBlczo6Y3VydmUyNTUx +OTo6Q3VydmUyNTUxOVNlY3JldEtleTo6bmV3OjpoNWM1Y2ZmOWQ2ZGMxZDg0M9UgQXZvZG96ZW1h +Yzo6dHlwZXM6OmVkMjU1MTk6OkVkMjU1MTlLZXlwYWlyOjpuZXc6Omg2YWM4MDQ2OWYyZGYyOWEy +1iBCdm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6RWQyNTUxOUtleXBhaXI6OnNpZ246OmgwODRi +ZWIxZTZlM2Y3MDky1yBZPHZvZG96ZW1hYzo6dHlwZXM6OmVkMjU1MTk6OlNpZ25hdHVyZUVycm9y +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlNDQ1M2FiMjBjNTkwZDM4LjLYIFxydW1hX2Ns +aWVudF9hcGk6OmtleXM6OnVwbG9hZF9zaWduYXR1cmVzOjp2Mzo6U2lnbmVkS2V5czo6YWRkX2Rl +dmljZV9rZXlzOjpoM2Q0ZjA2OGYxMzc5NTRlM9kgNWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46 +Om1hcF9lcnI6OmgxYmM5ZGMyOTk4N2Y2YmZk2iBkPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6 +c2Vzc2lvbl9pZDo6T3duZWRTZXNzaW9uSWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10Ojpo +ODAxNDYxMWYxZTFkNWE3Y9sgYjxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmljZV9pZDo6 +T3duZWREZXZpY2VJZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg5NDM3MTFlMTVjMjJj +NGZl3CBePHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6cm9vbV9pZDo6T3duZWRSb29tSWQgYXMg +Y29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZTAxYTI1YmU2Yjk2ZDY0Zt0gYTxydW1hX2lkZW50 +aWZpZXJzX3ZhbGlkYXRpb246OmVycm9yOjpNYXRyaXhJZEVycm9yIGFzIGNvcmU6OmZtdDo6RGlz +cGxheT46OmZtdDo6aGMwZDdiM2I5MDBmZGMyNjneID90cmFjaW5nX2NvcmU6OmRpc3BhdGNoZXI6 +OkVudGVyZWQ6OmN1cnJlbnQ6OmhiYTM5ZjY4ODllZmEzNzkxLjHfID90cmFjaW5nX2NvcmU6OmRp +c3BhdGNoZXI6OkVudGVyZWQ6OmN1cnJlbnQ6OmhiYTM5ZjY4ODllZmEzNzkxLjLgIDxhbGxvYzo6 +dmVjOjpWZWM8VCxBPjo6cmV0YWluOjp7e2Nsb3N1cmV9fTo6aDJiOTgyNTcwNTQ3YWRmOTPhIGZj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Um9v +bUVuY3J5cHRlZEV2ZW50Q29udGVudD46OmhiZTllODY1NWFiYmYyYmNhLjHiIHZ0cmFjaW5nOjpp +bnN0cnVtZW50OjpfOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRyb3AgZm9yIHRyYWNpbmc6Omlu +c3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPj46OmRyb3A6Omg2ZGNkMGZlMWI4YjJmZTg24yBZPHNl +cmRlOjpkZTo6aW1wbHM6Ok9wdGlvblZpc2l0b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6 +dmlzaXRfc29tZTo6aDM4YzBjZmZlNmJjYmEyOTHkIF9mdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0 +dXJlc191bm9yZGVyZWQ6OkZ1dHVyZXNVbm9yZGVyZWQ8RnV0Pjo6cmVsZWFzZV90YXNrOjpoODJk +NGFlNzYwOWJmMDkzNuUgX2Z1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6 +RnV0dXJlc1Vub3JkZXJlZDxGdXQ+OjpyZWxlYXNlX3Rhc2s6OmgwYjNjNDUzM2FjMjRiZDZi5iBf +ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfdW5vcmRlcmVkOjpGdXR1cmVzVW5vcmRlcmVk +PEZ1dD46OnJlbGVhc2VfdGFzazo6aDEzYzhiZjdiMzI0NzgxZmPnIF9mdXR1cmVzX3V0aWw6OnN0 +cmVhbTo6ZnV0dXJlc191bm9yZGVyZWQ6OkZ1dHVyZXNVbm9yZGVyZWQ8RnV0Pjo6cmVsZWFzZV90 +YXNrOjpoYTJjNjZhNTQ4MWVkODFmNeggPnN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2tXcml0ZUd1 +YXJkPFQ+OjpuZXc6OmgxMGM4NDljYTVkY2UxNWU26SBlPG1hdHJpeF9zZGtfY29tbW9uOjpleGVj +dXRvcjo6Sm9pbkhhbmRsZTxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9s +bDo6aGE1MmQzOGRhMTZhMTI4OTnqIGU8bWF0cml4X3Nka19jb21tb246OmV4ZWN1dG9yOjpKb2lu +SGFuZGxlPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpoOGVhYmM3 +MzRiYzNmM2QyNesgZTxtYXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5kbGU8VD4g +YXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6Omg5OWJkYTU5N2I1NzRiMDk3 +7CAzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkb3duZ3JhZGU6OmgxNzgyYTk1ZjBjNThhMjQ47SBj +PHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVT +dHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6Omg4ZGM0NWJmMzY0ZjdiNTUz7iA6cnVtYV9jb21tb246 +OnNlcmRlOjpmcm9tX3Jhd19qc29uX3ZhbHVlOjpoMzA4NzNiYThiMDUyNmY4Ne8gV2FueWhvdzo6 +ZXJyb3I6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208RT4gZm9yIGFueWhvdzo6RXJyb3I+Ojpm +cm9tOjpoMDNjNDgxZTUzMzYzNTE4M/AgNF9fd2JnX2dldF9yb29tc2V0dGluZ3Nfc2Vzc2lvblJv +dGF0aW9uUGVyaW9kTWVzc2FnZXPxIHo8Y29yZTo6c2xpY2U6OnNvcnQ6Om1lcmdlX3NvcnQ6OlJ1 +blZlYzxSdW5BbGxvY0YsUnVuRGVhbGxvY0Y+IGFzIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4PHVz +aXplPj46OmluZGV4OjpoMGI2ZjE3NjlhMTEwODJmOfIgoAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdy +b3VwU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZV9vdXRib3VuZF9ncm91cF9zZXNzaW9uOjp7e2Nsb3N1 +cmV9fT46Omg2ZDI2NWQ0ODQ4YjVlOGZj8yBmY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFf +ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlJvb21FbmNyeXB0ZWRFdmVudENvbnRlbnQ+OjpoYmU5 +ZTg2NTVhYmJmMmJjYS4z9CBjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJk +ZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6Omg2YTZmZDIzMDQ3ZWY2 +ODM59SBjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJp +YWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhlZDNkM2QyZjYxYjI2ZTVk9iBjPHNlcmRl +X2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+ +OjpzZXJpYWxpemVfZmllbGQ6Omg2YTJiYWE2YjY0OGVkNWUw9yB6PGNvcmU6OnNsaWNlOjpzb3J0 +OjptZXJnZV9zb3J0OjpSdW5WZWM8UnVuQWxsb2NGLFJ1bkRlYWxsb2NGPiBhcyBjb3JlOjpvcHM6 +OmluZGV4OjpJbmRleDx1c2l6ZT4+OjppbmRleDo6aDExMDY5YTc5ZTBlODI3NjP4IGU8c2VyZGVf +anNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46 +OnNlcmlhbGl6ZV9maWVsZDo6aDZhNmZkMjMwNDdlZjY4MzkuMfkgNXJtcDo6ZGVjb2RlOjpSbXBS +ZWFkOjpyZWFkX2RhdGFfaTg6OmhmYmZkODU2MWI0YmQ5MTFj+iA4cm1wOjplbmNvZGU6OlJtcFdy +aXRlOjp3cml0ZV9kYXRhX3UxNjo6aDljNTU4MDM1ZTU1NDcwNDj7IFRpbmRleGVkX2RiX2Z1dHVy +ZXM6OmlkYl90cmFuc2FjdGlvbjo6SWRiVHJhbnNhY3Rpb246Om9iamVjdF9zdG9yZTo6aGEzNTM4 +NzRkMTE0NjQ0ZGP8IIICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmgwZGZlMjgwOWZkYzhkYTUy/SCCAmFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFs +PixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRf +Zml0OjpoMmQzMWRjMTRlOWY4MzQ0Of4gggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDJlOTJiYjRmNzkzYmFmM2T/ +IIICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRn +ZT46Omluc2VydF9maXQ6OmgzYTFmNzE4MjZiYzIzMzhigCGCAmFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2Rl +UmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoOTE4OTcw +YmNiZTQ2ZTQ2MoEhejxjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2Vfc29ydDo6UnVuVmVjPFJ1bkFs +bG9jRixSdW5EZWFsbG9jRj4gYXMgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8dXNpemU+Pjo6aW5k +ZXg6OmgwODM3ZTViNzRjNDM2OGNmgiFHYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpC +VHJlZU1hcDxLLFYsQT46OmdldDo6aDI3Y2FiYWM3OGI1YjYzNjeDIUdhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6Z2V0OjpoMzYyNmVlM2VmNWYwOWZlN4Qh +R2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpnZXQ6Omg0 +ZDhjNTAyZWYwNWFhZTkwhSFHYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1h +cDxLLFYsQT46OmdldDo6aDk3MTFkNTJkZDc2ZTBmYmWGIUdhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6Z2V0OjpoZGJkMGM4YWY5MjJkMTJiMIchR2FsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpnZXQ6OmhlODJmMTU1 +OWJkMGZkZTgwiCFMPHJ1bWFfZXZlbnRzOjpyb29tOjpNZWRpYVNvdXJjZSBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoNTQ5OTM4ZjM3NDUzMDdjNIkhVDxzdGQ6OnN5bmM6OnJ3bG9jazo6UndM +b2NrPFQ+IGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoMDNmNGIxYWUzZDVm +NGY5OIohM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZG93bmdyYWRlOjpoMjIwMDIyNzRmY2Q3ODg0 +ZYshYzxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFs +aXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoZGZjZjk1MzIyNjEyZWFmNowhZjxydW1hX2Nv +bW1vbjo6aWRlbnRpZmllcnM6OnZvaXBfdmVyc2lvbl9pZDo6Vm9pcFZlcnNpb25JZCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzkxMTEwODJhZmI3MzJhY40hTjxydW1hX2V2ZW50czo6cm9v +bTo6TWVkaWFTb3VyY2UgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDU0OTkzOGYzNzQ1MzA3 +YzQuMY4hWzxhZXM6OnNvZnQ6OkFlczI1NiBhcyBjaXBoZXI6OmJsb2NrOjpCbG9ja0VuY3J5cHQ+ +OjplbmNyeXB0X3dpdGhfYmFja2VuZDo6aDcwMmIxMDhhMWE1M2MxNDCPIU5tYXRyaXhfc2RrX2Ny +eXB0bzo6Y2lwaGVyczo6QWVzSG1hY1NoYTJLZXk6OmZyb21fcGFzc3BocmFzZTo6aDc5ODdiMGRm +OTRiMWQ0ODaQITtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6cmVtb3ZlOjpoMWE4 +ZmNiMGNkZDE1N2MxNpEhN3N0ZDo6c3luYzo6bXV0ZXg6Ok11dGV4R3VhcmQ8VD46Om5ldzo6aGIx +NWNlNDMzYjQ5MGE2NTWSIdwBPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6 +Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjprZXk6OnZl +cmlmaWNhdGlvbjo6c3RhcnQ6OlJlY2lwcm9jYXRlVjFDb250ZW50Pjo6ZGVzZXJpYWxpemU6Ol9f +RmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2J5dGVzOjpoYTYzMGNk +MzA0MDg5OTUwZZMhR21hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OmRl +ZXBfY2xvbmU6OmgwZmYwODZlYWNhZGRmNmM1lCF6PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmaWx0 +ZXJfbWFwOjpGaWx0ZXJNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJ +dGVyYXRvcj46OnNpemVfaGludDo6aDIxYWIxMWUyMWE0NmE5M2SVIWg8cnVtYV9jb21tb246Omlk +ZW50aWZpZXJzOjp2b2lwX3ZlcnNpb25faWQ6OlZvaXBWZXJzaW9uSWQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDM5MTExMDgyYWZiNzMyYWMuMZYhO2FsbG9jOjpyYXdfdmVjOjpSYXdWZWM8 +VCxBPjo6dHJ5X3Jlc2VydmU6OmgyYWY3YWZhNWFhODhlODY2lyFHPHFyY29kZTo6Y2FudmFzOjpN +b2R1bGUgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aGIyYzMyZjgyMDkzOGQ3ZWSYIVI8 +c2hhcmRlZF9zbGFiOjp0aWQ6OlJFR0lTVFJZIGFzIGNvcmU6Om9wczo6ZGVyZWY6OkRlcmVmPjo6 +ZGVyZWY6OmhkMDc5YzNhOTc5YWNlMjc4mSFbPFtjb3JlOjptZW06Om1heWJlX3VuaW5pdDo6TWF5 +YmVVbmluaXQ8Wj5dIGFzIHplcm9pemU6Olplcm9pemU+Ojp6ZXJvaXplOjpoNWJiOGQ2MmMwODhj +ZWIzMZohMnNpZ25hdHVyZTo6c2lnbmVyOjpTaWduZXI6OnNpZ246OmhkZmI3MjdlZjNkZjU3NzQ3 +myF6PGNvcmU6OnNsaWNlOjpzb3J0OjptZXJnZV9zb3J0OjpSdW5WZWM8UnVuQWxsb2NGLFJ1bkRl +YWxsb2NGPiBhcyBjb3JlOjpvcHM6OmluZGV4OjpJbmRleDx1c2l6ZT4+OjppbmRleDo6aDEzMDU2 +ODdjOTZkZTE4OTCcIXo8Y29yZTo6c2xpY2U6OnNvcnQ6Om1lcmdlX3NvcnQ6OlJ1blZlYzxSdW5B +bGxvY0YsUnVuRGVhbGxvY0Y+IGFzIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4PHVzaXplPj46Omlu +ZGV4OjpoMzUyN2E5ODExNmUwYjdmOJ0hejxjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2Vfc29ydDo6 +UnVuVmVjPFJ1bkFsbG9jRixSdW5EZWFsbG9jRj4gYXMgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8 +dXNpemU+Pjo6aW5kZXg6Omg0MzE3ZWM0NTQ3ZjcwNmY2niEwc2VyZGVfanNvbjo6cmVhZDo6bmV4 +dF9vcl9lb2Y6Omg2NDJiNmNjNjFlYzdiZTEwnyF0YWxsb2M6OnN0cmluZzo6PGltcGwgY29yZTo6 +Y29udmVydDo6RnJvbTxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+IGZvciBhbGxvYzo6Ym94ZWQ6OkJv +eDxzdHI+Pjo6ZnJvbTo6aDE5NjVkYTgyNjM4OWQ2ZTCgIdQBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNl +OjplbmNyeXB0PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpmb3J3YXJkZWRfcm9v +bV9rZXk6OkZvcndhcmRlZFJvb21LZXlDb250ZW50Pjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19 +Pjo6aGU1YTU1OWFjMzY0YjIyOTOhIYsBdm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6 +RWQyNTUxOVB1YmxpY0tleT46OmRlc2VyaWFsaXplOjpoZDhkZTU2MzRhM2MyNThlZaIhbG1hdHJp +eF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OmluZGV4ZWRkYl9zZXJpYWxpemVyOjpJbmRl +eGVkZGJTZXJpYWxpemVyOjplbmNvZGVfa2V5OjpoMzA5NzhjOWJhOGFiZTY4OaMhSDxhbGxvYzo6 +dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMjQ4MTMwNTAy +NmI5ZWZhNaQhSDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+ +Ojpkcm9wOjpoYmNjOTFiNmZhYmNjNzBkM6UhLl9fd2JnX2dldF9tZWdvbG1kZWNyeXB0aW9uZXJy +b3JfbWF5YmVfd2l0aGhlbGSmIYABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6S2V5UXVlcnlNYW5hZ2VyOjplbnN1cmVfc3luY190cmFja2VkX3VzZXJz +Ojp7e2Nsb3N1cmV9fT46Omg5ZjZkNDg1NWZiYmNmNDc0LjenIXg8dHJhY2luZ19zdWJzY3JpYmVy +OjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJl +cjo6U3Vic2NyaWJlcj46OnRyeV9jbG9zZTo6aGJkMjlmYjA2ZDg2MWNjYTSoIVk8bWF0cml4X3Nk +a19jcnlwdG86Omdvc3NpcGluZzo6R29zc2lwUmVxdWVzdCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoNDE5YjI3ZWQyYjgxYTY0ZakhZGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyPjo6aDc3MWVm +ZjQ1ODZjMGYyNTaqIYABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmxpYm9sbV9taWdyYXRpb246OmltcG9ydF9vbG1fc2Vzc2lvbnNfdG9fc3RvcmU6Ont7 +Y2xvc3VyZX19Pjo6aDdlZjk3NWQ3ZDJlODJiNmSrIfAGY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpzdHJlYW06OmZvcl9lYWNoOjpGb3JFYWNoPGZ1dHVyZXNf +dXRpbDo6c3RyZWFtOjpzdHJlYW06Om1hcDo6TWFwPGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpzdHJl +YW06OmZpbHRlcl9tYXA6OkZpbHRlck1hcDx0b2tpb19zdHJlYW06OndyYXBwZXJzOjpicm9hZGNh +c3Q6OkJyb2FkY2FzdFN0cmVhbTwoY29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlw +dG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNlcklkZW50aXR5PixtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OklkZW50aXR5Q2hhbmdlcyxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OkRldmljZUNoYW5nZXMpPixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNyeXB0b19zdG9yZV93 +cmFwcGVyOjpDcnlwdG9TdG9yZVdyYXBwZXI6OmlkZW50aXRpZXNfc3RyZWFtOjp7e2Nsb3N1cmV9 +fTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpjcnlwdG9fc3RvcmVfd3Jh +cHBlcjo6Q3J5cHRvU3RvcmVXcmFwcGVyOjppZGVudGl0aWVzX3N0cmVhbTo6e3tjbG9zdXJlfX0+ +LG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmlkZW50aXRpZXNfc3RyZWFtX3Jhdzo6 +e3tjbG9zdXJlfX0+LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6OnNlbmRfZGV2aWNl +X3VwZGF0ZXNfdG9fY2FsbGJhY2s6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnJlZ2lzdGVyX2RldmljZXNfdXBkYXRlZF9jYWxsYmFjazo6 +e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+OjpoY2UxYzM2YmY4NWYyOTE3 +OKwhwQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRp +ZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OmVuY3J5cHQ8bWF0cml4X3Nka19jcnlwdG86OnR5 +cGVzOjpldmVudHM6OnJvb21fa2V5OjpSb29tS2V5Q29udGVudD46Ont7Y2xvc3VyZX19Ojp7e2Ns +b3N1cmV9fT46Omg2ZGU2Yjc5ODY0ZjhlMzYxrSFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8 +VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6Omg5 +Yzg2NDI1NzM3YWFkNTI4riFIc2VyZGU6Ol9fcHJpdmF0ZTo6c2VyOjpGbGF0TWFwU2VyaWFsaXpl +cjxNPjo6YmFkX3R5cGU6Omg4ZDRjMTZmM2E3NDVjYjk2ryFjPHNlcmRlX2pzb246OnNlcjo6Q29t +cG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmll +bGQ6Omg0NTc1YmNmZWNiZDAyNGFjsCFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBh +cyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhiMWI3NGY2 +MTdlZGM4OTE0sSFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2Vy +OjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmgzODllNmFiMzlmOTM4ZDJlsiFj +PHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVT +dHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhjOWZkYjEzM2YzNDUxNjU1syFjPHNlcmRlX2pzb246 +OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJp +YWxpemVfZmllbGQ6OmhkMWVjNDVlNmQxYWYwMTY3tCFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91 +bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6 +OmgwYjUxYWJjZTc2NjBiOWM2tSFMbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5 +czo6RGV2aWNlS2V5czo6dG9fcmF3OjpoODdiYmU5ODc3ZDA4ODcwN7YhZTxzZXJkZV9qc29uOjpz +ZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFs +aXplX2ZpZWxkOjpoMzg5ZTZhYjM5ZjkzOGQyZS4xtyFlPHNlcmRlX2pzb246OnNlcjo6Q29tcG91 +bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6 +OmhjOWZkYjEzM2YzNDUxNjU1LjG4IWdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjpTdG9yZUNhY2hlOjphY2NvdW50Ojp7e2Nsb3N1cmV9fT46Omg2NTg2 +MDJlYWIyMzk1ZjAwuSHBAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OmZ1 +dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6 +Ok9sbU1hY2hpbmU6OmludmFsaWRhdGVfZ3JvdXBfc2Vzc2lvbjo6e3tjbG9zdXJlfX0sbWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjppbnZhbGlkYXRlX2dyb3VwX3Nlc3Npb246 +Ont7Y2xvc3VyZX19LGJvb2w+Ojp7e2Nsb3N1cmV9fT4+OjpoYjRjZTZhMDI3ZDBmODc3M7oh2AJj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6 +Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyb29t +X2tleV9jb3VudHM6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6 +ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFj +aGluZTo6cm9vbV9rZXlfY291bnRzOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjpiYWNrdXA6OlJvb21LZXlDb3VudHM+Ojp7e2Nsb3N1cmV9fT4+OjpoNWUyMzhkZGEwZDE4MDE4 +ZbshPnNlcmRlOjpkZTo6dmFsdWU6Ok1hcERlc2VyaWFsaXplcjxJLEU+OjplbmQ6Omg0NzhhMzE0 +YjVkZTM4NzIxvCFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2Vy +OjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhkODM2NWE2N2YyZjBlNTI5vSFj +PHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVT +dHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhmMzQxMmY0Y2ZmMTA2ZjdmviFjPHNlcmRlX2pzb246 +OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJp +YWxpemVfZmllbGQ6OmhjZTMzY2E1NjcyMjgwN2I4vyFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91 +bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6 +OmhkMjAyNDExMzRlMjkyOTljwCGCAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Okhh +bmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoNTgyODkwM2Q3Y2MzZmEzN8Eh+QE8 +bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpfOjo8 +aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6 +OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OldpdGhoZWxkSGVscGVyPjo6ZGVzZXJpYWxpemU6 +Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2JvcnJvd2VkX3N0 +cjo6aDEzYWRmMzllMGQ0MTE2NWLCIdoCPDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50 +czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50PEM+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+ +OjpkZXNlcmlhbGl6ZTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgPG1hdHJp +eF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8Qz4g +YXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpIZWxwZXI8Qz4+OjpkZXNl +cmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYm9y +cm93ZWRfc3RyOjpoMDc2ZGE4MWM1NjEzY2RjMcMhVm1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlw +dG9fc3RvcmU6Om1pZ3JhdGlvbnM6OmFkZF9ub251bmlxdWVfaW5kZXg6OmgyOTViODYxMjg1NjI1 +MjA3xCFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJp +YWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6Omg0M2U0ZTJmY2MyNzE3Njg4xSHwATxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6Ol86OjxpbXBsIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpz +ZWNyZXRfc2VuZDo6U2VjcmV0U2VuZENvbnRlbnQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0 +b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYm9ycm93ZWRfc3RyOjpoMTlhNjhjY2Zl +MWEwNmQyZsYhYzxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6 +U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoODllYjc5YTBjNjk5OWViNschZTxz +ZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3Ry +dWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoNDNlNGUyZmNjMjcxNzY4OC4xyCFjPHNlcmRlX2pzb246 +OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJp +YWxpemVfZmllbGQ6OmhjMTNmOWM3NzEyM2UyNDQ3ySFVY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6OlNlY3JldEluZm8+OjpoNGY3NzYyMWRkMjE4 +OTU2MsohiwE8c2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBm +b3IgdTMyPjo6ZGVzZXJpYWxpemU6OlByaW1pdGl2ZVZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNp +dG9yPjo6dmlzaXRfaTg6OmgwMmY1NmM2NTQ0YjZjM2ZkyyGCAmFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2Rl +UmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoMWM1MGNk +MzNiYmE0YTBmNMwhggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDJhMmZkMjFjODY0YmVlMWbNIYICYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpN +dXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+ +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9m +aXQ6OmgzODAzMjEyYjdhZjIxOWNiziGCAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoMzlmNmVmZDAwNzY5MWE1Y88h +ggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdl +Pjo6aW5zZXJ0X2ZpdDo6aDNiNjI2MjUzYTdhMjEzMjfQIYICYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVS +ZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6Omg4NGE2NjE0 +N2QxNTA2YmMw0SGCAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoYjZlODIzYzdlMjMzZGY2Y9IhggJhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11 +dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4s +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2Zp +dDo6aGMyNzgxOGQ1ZjllNjMzZTDTIUdhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJU +cmVlTWFwPEssVixBPjo6Z2V0OjpoYjc5ZDU2OGFhMTgyMTMwMtQhR2FsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpnZXQ6OmhmMDUwMTM3YjNmNTBmYTdj1SFI +c2VyZGU6Ol9fcHJpdmF0ZTo6c2VyOjpGbGF0TWFwU2VyaWFsaXplcjxNPjo6YmFkX3R5cGU6Omhl +OTE1NjM2ODM2YTc3NDRl1iFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJk +ZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmgzZjUwZWYyNjdkM2Fm +NWQ01yFjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJp +YWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhjZTNiMDViMmE4YWQyMjdk2CFjPHNlcmRl +X2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+ +OjpzZXJpYWxpemVfZmllbGQ6OmhmNGMyZmJjNGZlNzFkZTQw2SFlPHNlcmRlX2pzb246OnNlcjo6 +Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVf +ZmllbGQ6OmhkZmNmOTUzMjI2MTJlYWY2LjHaIWM8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxX +LEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aDdl +YzFmZDU0M2FhNDlhM2HbIWM8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRl +OjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aDYwZTM2ODFkYjBkNzc5 +YzncIWM8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlh +bGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aGViMWM5NzI3MGVjMjU5Y2HdIT5zZXJkZTo6 +ZGU6OnZhbHVlOjpNYXBEZXNlcmlhbGl6ZXI8SSxFPjo6ZW5kOjpoMWU2YWUwYzZiNWM1MGI5Zd4h +YWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246 +OnN0YXJ0OjpTdGFydE1ldGhvZD46OmgwNWZhZjM3NTFhY2RlMTc2LjPfIVFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8c2VyZGVfanNvbjo6dmFsdWU6OnNlcjo6U2VyaWFsaXplTWFwPjo6aGVhNWJm +ZjBjYjg0MzczZjXgIVVtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjptYWNoaW5lOjpW +ZXJpZmljYXRpb25NYWNoaW5lOjpuZXc6OmgzN2JmNTEwNGQ0YWI5Y2Fj4SFNbWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6RGV2aWNlS2V5czo6Z2V0X2tleTo6aDU3MjMwM2Qy +Y2JlZmFlN2TiIVFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VL +ZXlzOjplZDI1NTE5X2tleTo6aGMyMTM3NTgzOGNlY2E5MGTjIVh0cmFjaW5nX3N1YnNjcmliZXI6 +OmZpbHRlcjo6bGF5ZXJfZmlsdGVyczo6RmlsdGVyU3RhdGU6OnRha2VfaW50ZXJlc3Q6Omg4YzY2 +Yjg4OGQxZjFlNDgz5CFjPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGF5bG9hZDxBPiBh +cyBjb3JlOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6dGFrZV9ib3g6OmgwMzdiZDIyODMzMzQ3ZDJl +5SFHd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJSZXF1ZXN0OjpJZGJSZXF1ZXN0OjplcnJvcjo6 +aDU5ZWU3MjUzYzAyNGFiY2PmITh2b2RvemVtYWM6OmNpcGhlcjo6Q2lwaGVyOjp2ZXJpZnlfbWFj +OjpoZTNlMDhiZjYwYTcwNTViMechOXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyb290X2tleTo6 +a2RmOjpoNjU1ZDlkNWRmYmRiZjhkMughRTxbdTg7IE5dIGFzIG1hdHJpeF9waWNrbGU6OmVuY29k +ZTo6RW5jb2RlPjo6ZW5jb2RlOjpoYzliNzczMTEwMGIzMWEzZukhiwF2b2RvemVtYWM6OnR5cGVz +OjplZDI1NTE5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6 +OnR5cGVzOjplZDI1NTE5OjpFZDI1NTE5UHVibGljS2V5Pjo6ZGVzZXJpYWxpemU6Omg5ZWZjZWQ5 +NDdlZjQ3NDE16iHfATxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6YXVkaW86Ol86OjxpbXBs +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjph +dWRpbzo6QXVkaW9NZXNzYWdlRXZlbnRDb250ZW50Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNp +dG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2JvcnJvd2VkX3N0cjo6aGE3NWE5NjNh +ZGJkZTczOTbrIT5zZXJkZTo6ZGU6OnZhbHVlOjpNYXBEZXNlcmlhbGl6ZXI8SSxFPjo6ZW5kOjpo +MDhiZjI5NTkzMjE0OGQ3N+whPnNlcmRlOjpkZTo6dmFsdWU6OlNlcURlc2VyaWFsaXplcjxJLEU+ +OjplbmQ6Omg3YjIwZGY5YjZlMjBlOWFh7SFZPHNlcmRlOjpkZTo6aW1wbHM6Ok9wdGlvblZpc2l0 +b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc29tZTo6aDNlMzNjYmVjYWU0NWJm +ZTLuIVZjb3JlOjpzdHI6OnRyYWl0czo6PGltcGwgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8ST4g +Zm9yIHN0cj46OmluZGV4OjpoNGE3N2Y2OWUyODc2NmU2Mu8hOHN0ZDo6dGhyZWFkOjpsb2NhbDo6 +TG9jYWxLZXk8VD46OndpdGg6Omg1OWI3NTk4NzgxOTIzODcw8CFjPHN0ZDo6cGFuaWNraW5nOjpi +ZWdpbl9wYW5pYzo6UGF5bG9hZDxBPiBhcyBjb3JlOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6dGFr +ZV9ib3g6OmhlODM4ZTJiYjE2NGQ4NzYx8SFDc2VyZGVfanNvbjo6cmVhZDo6cGFyc2VfZXNjYXBl +OjplbmNvZGVfc3Vycm9nYXRlOjpoNmFmZTNiNzNmYjRiZmVlOfIhWjxzZXJkZV9qc29uOjp2YWx1 +ZTo6ZGU6OktleUNsYXNzaWZpZXIgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpo +YjlmNjgzMTI2MmFlYzE3NfMhUjxzZXJkZV9qc29uOjpyYXc6OlJhd1ZhbHVlIGFzIGFsbG9jOjpi +b3Jyb3c6OlRvT3duZWQ+Ojp0b19vd25lZDo6aDk4ZmI4NGZlOTI0YzAzYWb0IVY8c2VyZGVfanNv +bjo6cmF3OjpCb3hlZEZyb21TdHJpbmcgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3Ry +OjpoNzgyZDQ4ODdjY2UxZGNiMPUhYzxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWM6OlBheWxv +YWQ8QT4gYXMgY29yZTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OnRha2VfYm94OjpoYjhlZmI4Mjgx +NDVhNWM1ZfYhRzxzdGQ6OmlvOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6ZXJyb3I6OkVycm9yPjo6 +Y2F1c2U6Omg2NzQ2MTZjOWQxMjljMzM39yFIPHN0ZDo6aW86OmVycm9yOjpFcnJvciBhcyBjb3Jl +OjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6Omg3NjYzYzU1NzNhNWJhYTYz+CEyPCZUIGFzIGNvcmU6 +OmZtdDo6RGlzcGxheT46OmZtdDo6aGFmYjBmNjIxODk5Y2QyMDT5IYEBY29yZTo6aXRlcjo6cmFu +Z2U6OjxpbXBsIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yIGZvciBjb3Jl +OjpvcHM6OnJhbmdlOjpSYW5nZUluY2x1c2l2ZTxBPj46Om5leHQ6OmhkZGZhMGE1OTgzZTRmMmZi ++iG/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRf +bGlua3M6Omg0NDUwNTk3YWVlMTI1NTcw+yG/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpj +b3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6Omg2NTI2ODZjYzAyZGRjOTc1/CFRY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGdsb29fdGltZXJzOjpmdXR1cmU6OlRpbWVvdXRGdXR1cmU+Ojpo +OTJjOWVkODdjZjIzNjk3Ny4x/SGIAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWduaW5nSWRlbnRpdHk6OmNsZWFy +X2lmX2RpZmZlcnM6Ont7Y2xvc3VyZX19Pjo6aDliYzM4Y2EwYTUyMGQ2OWH+IY4BY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ6 +OmRlY3J5cHRfYW5kX3BhcnNlX29sbV9tZXNzYWdlOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+ +OjpoOWJiYTU3MGIzMzFhZjU2Nv8hkAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6ZGVjcnlwdF9hbmRfcGFyc2Vfb2xtX21l +c3NhZ2U6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46Omg5YmJhNTcwYjMzMWFmNTY2LjGAInQ8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRlcjxLLFYsQT4gYXMgY29yZTo6 +aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNTU3YzVmYzA3NDM1ODJm +YoEiU2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpmaXJz +dF9rZXlfdmFsdWU6OmgxMDU3NTg1MzU3ZDQ2MTM1giI1c3RkOjpzeW5jOjpyd2xvY2s6OlJ3TG9j +azxUPjo6cmVhZDo6aDVjYWQwOGFkYjgxNzJkOTaDIkJtYXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0 +b3I6OnNwYXduOjp7e2Nsb3N1cmV9fTo6aGNjMmU4ZWQ2NjU0YmMyODOEIkJtYXRyaXhfc2RrX2Nv +bW1vbjo6ZXhlY3V0b3I6OnNwYXduOjp7e2Nsb3N1cmV9fTo6aGQyZDYyY2I3MGY3MWIyMjKFImdj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6 +OnJvb21fa2V5OjpSb29tS2V5Q29udGVudD46Omg5MWI4ZWY0OGI4ZjhhZDVlhiIVZW5jcnlwdGlv +bmluZm9fc2VuZGVyhyINZGV2aWNlX3ZlcmlmeYgiFm93bnVzZXJpZGVudGl0eV92ZXJpZnmJIiJv +d251c2VyaWRlbnRpdHlfdHJ1c3RzT3VyT3duRGV2aWNliiIuX193YmdfZ2V0X3Jvb21zZXR0aW5n +c19zZXNzaW9uUm90YXRpb25QZXJpb2RNc4si4QJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0 +dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjppZGVudGl0aWVzOjpPd25Vc2VySWRlbnRpdHk6OnZlcmlmeTo6e3tjbG9zdXJlfX0sbWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpPd25Vc2VySWRlbnRpdHk6OnZlcmlmeTo6e3tjbG9z +dXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVyZVVwbG9hZFJl +cXVlc3Q+Ojp7e2Nsb3N1cmV9fT4+OjpoNzI1MjZiZDBmZjJmMjZhMYwi5QJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6ZmV0Y2hfZnJv +bV9vYmplY3Rfc3RvcmVfYmF0Y2hlZDxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNz +aW9uczo6aW5ib3VuZDo6SW5ib3VuZEdyb3VwU2Vzc2lvbiw8bWF0cml4X3Nka19pbmRleGVkZGI6 +OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X2luYm91bmRfZ3JvdXBfc2Vzc2lvbnM6 +Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46Ont7Y2xvc3VyZX19Pjo6aGRkYmFmOTg1OGY0YTNh +ZWGNIqIBPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0 +b1N0b3JlRXJyb3IgYXMgY29yZTo6Y29udmVydDo6RnJvbTx3ZWJfc3lzOjpmZWF0dXJlczo6Z2Vu +X0RvbUV4Y2VwdGlvbjo6RG9tRXhjZXB0aW9uPj46OmZyb206Omg3ODlhNjdlNGYyNmZjMTlhjiJ1 +PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmaWx0ZXJfbWFwOjpGaWx0ZXJNYXA8SSxGPiBhcyBjb3Jl +OjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg0MzVlNTE4MWMwODI0 +MDJjjyJnaW5kZXhlZF9kYl9mdXR1cmVzOjpyZXF1ZXN0OjpmdXR1cmVzOjpSZXNwb25zZUZvcm1h +dHRpbmdGdXR1cmU6OnBvbGxfd2l0aF9mb3JtYXR0aW5nOjpoYzcxNDBhYmRkZGRmYThlY5Aibjxz +ZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6T2JqZWN0U2VyaWFsaXplciBhcyBzZXJkZTo6c2VyOjpT +ZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmgwNTVmMzk5ZGZkYTE4Mjk2kSJjPHNl +cmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1 +Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhjNTZmMjA1NDE3NjJiMTNjkiJjPHNlcmRlX2pzb246OnNl +cjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxp +emVfZmllbGQ6OmhmNmRmYmY2MTJjY2IyNjU0kyJjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8 +VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6Omg5 +Yzc3ZDY5MzBjODRkZmQ1lCJyPHJ1bWFfZXZlbnRzOjpyb29tOjpoaXN0b3J5X3Zpc2liaWxpdHk6 +Okhpc3RvcnlWaXNpYmlsaXR5IGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHN0cj4+Ojphc19yZWY6 +OmgyZmU0Y2E4NTEzODNlNjYwlSIxY29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPjo6YW5kOjpoMmUz +MDE5MzU2ZWM4NjdkM5YiVWluZGV4ZWRfZGJfZnV0dXJlczo6aWRiX2RhdGFiYXNlOjpJZGJEYXRh +YmFzZTo6Y3JlYXRlX29iamVjdF9zdG9yZTo6aDY0ZDU4NjEzMDJlZWQxYjWXImFpbmRleGVkX2Ri +X2Z1dHVyZXM6OmlkYl9vYmplY3Rfc3RvcmU6OklkYk9iamVjdFN0b3JlOjpjcmVhdGVfaW5kZXhf +d2l0aF9wYXJhbXM6OmhmMzQ4NmJjM2VmNzA2OGY0mCK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJu +YWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6OmgwNDA1ZTg4ZTAxYjI4NGFlmSK/ +AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlu +a3M6OmgwNjc5NmYyYWI1NTZmOGFmmiK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxW +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3Jy +ZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6OmgxOGIwOTVlNjljYjQwZjgymyK/AWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6OmgyYTcy +MDExZDc3YmY5YjZjnCK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxk +cmVuc19wYXJlbnRfbGlua3M6OmgyYjJmZjI4NTY2MDVjZTVmnSK/AWFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6OmgyZGMzN2ViZjc3ZjBl +NjBkniK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJl +bnRfbGlua3M6Omg0NzI0N2I1MDNlYzFhZWVhnyK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpN +dXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+ +Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6Omg0ZDQ1NjE1Yjg5YjZjNGEwoCK/AWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6 +Omg1NzU5ZjQ3MzU0NDJhMDFjoSK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0 +X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6Omg2NzA1MjhmOWYyODM5ZjRloiK/AWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6Omg3MmFjNzIy +ODc5Y2Y5MjIyoyK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVu +c19wYXJlbnRfbGlua3M6Omg3YjY3NWE5NTMyMGE5NDA1pCK/AWFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50 +ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6OmhhMzg4NmZhZDZlYzdmOTIz +pSK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpjb3JyZWN0X2NoaWxkcmVuc19wYXJlbnRf +bGlua3M6OmhjOWMwNjBhMTQzZTI4OGY4piK/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpj +b3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6OmhmYWU0NjVlZWMwZTA1MjQ3pyKCAmFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVy +bmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNl +cnRfZml0OjpoNzNkZjk0NjNkZjQzMjc0MKgiggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDc1MGJlMzc4MTFlZDZl +NGKpIoICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +RWRnZT46Omluc2VydF9maXQ6OmhhMGM2MjE3Mjk2YzhmYTEzqiKCAmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpO +b2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoZDQ2 +Y2IyZjMwZWE0OWY0NKsidDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVy +PEssVixBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6 +Omg5NzA4YmRlYjdmOTRiZmJkrCJHYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJl +ZU1hcDxLLFYsQT46OmdldDo6aDQ4MDNlOWY4MDU0YzJhMjCtIkZtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OlNpZ25hdHVyZXM6OmFkZF9zaWduYXR1cmU6Omg4YTE3NWY3ZDU2MWM5MGEzriJYPGFs +bG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRy +b3A+Ojpkcm9wOjpoMWRiOThkNTg0YTRkMTdlMK8iWDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6Oklu +dG9JdGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDU3N2Y4MDUxZjhk +YzNkZDGwIlg8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9w +czo6ZHJvcDo6RHJvcD46OmRyb3A6OmhjZjE4ZDA3ZGUxM2Y5YzRhsSJbbWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlvbjo6Z2VuZXJhdGVfc2VjcmV0 +OjpoZjQwODM3NDgyNjBlMmQ5MbIiM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93Ojpo +MDI2ZmY0NTZjM2FjOGI4YbMiSjxhbGxvYzo6c3luYzo6V2VhazxULEE+IGFzIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcD46OmRyb3A6OmgzYmIzNjEwNmQ4ZGMxZTZktCJUPHNlcmRlX2pzb246OnNlcjo6 +Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+OjplbmQ6OmgxMDQ1YzA1 +YTJjYjMyZmJmtSJqPGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+IGFzIGNvcmU6Oml0ZXI6 +OnRyYWl0czo6Y29sbGVjdDo6SW50b0l0ZXJhdG9yPjo6aW50b19pdGVyOjpoNGI5ZmZjMjdmMDNj +ZTg2NrYiZTxoYXNoYnJvd246OnJhdzo6UmF3SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjppdGVyOjp0 +cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgyNDc3YjFhOWI3YTc5MDZhtyJWPHNl +cmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+ +OjplbmQ6OmgxMDQ1YzA1YTJjYjMyZmJmLjG4IjRjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+Ojpl +eHBlY3Q6Omg4NWFlMTQwMDcyYWM1YjFhuSJMbWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3Vu +dDo6QWNjb3VudDo6a2V5c19mb3JfdXBsb2FkOjpoYmQ5YzcwMzM3ZWVkMWViYboiUW1hdHJpeF9z +ZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6aGVscGVyczo6Z2V0X2Vtb2ppX2luZGV4Ojpo +ZjNjMjI1YmQ0MGQxMTkyMrsiTW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6 +aGVscGVyczo6Z2V0X2RlY2ltYWw6OmhiNjQ3YTc5MTQ3OTNmMTMzvCKBAWNvcmU6Oml0ZXI6OnJh +bmdlOjo8aW1wbCBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvciBmb3IgY29y +ZTo6b3BzOjpyYW5nZTo6UmFuZ2VJbmNsdXNpdmU8QT4+OjpuZXh0OjpoYTUyY2U4ZDg5NjE2MWJk +OL0iMmNvcmU6OnNsaWNlOjo8aW1wbCBbVF0+OjpjaHVua3M6OmgwODg0ZjI0YWYxZDM1MDM0viJB +dHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6TG9va3VwU3Bhbjo6c3Bhbjo6aDQ5NGFkMjJh +M2E3NDE3NWG/InE8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OlRhZ09yQ29udGVudFZp +c2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYm9ycm93ZWRfc3RyOjpoNjgwYzRm +YTE3YzAwNWZlMMAiYzxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNl +cjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoZDdhNmM4MDU0OGZjZGMzOMEi +YzxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXpl +U3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoYTBmNTgxZmY3NWM0YTVkYsIiZjxjb3JlOjppdGVy +OjphZGFwdGVyczo6cmV2OjpSZXY8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6 +SXRlcmF0b3I+OjpuZXh0OjpoMzdhY2QxZjE5NWM0ZDcwZsMivwFhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Oklu +dGVybmFsPjo6Y29ycmVjdF9jaGlsZHJlbnNfcGFyZW50X2xpbmtzOjpoMjRkNWZkODY4OWMwODMy +MsQiggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpF +ZGdlPjo6aW5zZXJ0X2ZpdDo6aDQzZjQzOTFmNTAxNzU5ZWbFIoICYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+LGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmhhZDc1 +ZjZjMDBhOWRjYmU4xiJjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6 +c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmgxNjgyNjU2NDEwYWVlZDIw +xyJjPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxp +emVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhlNmJiZDM0ODVhOTQ1ZjA2yCI4c3RkOjp0aHJl +YWQ6OmxvY2FsOjpMb2NhbEtleTxUPjo6d2l0aDo6aDkwYmI1ZjRlNmM1MTdhYmPJImM8c2VyZGVf +anNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46 +OnNlcmlhbGl6ZV9maWVsZDo6aDEyNjM4NGEwZDcwNDgzYWTKImM8c2VyZGVfanNvbjo6c2VyOjpD +b21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9m +aWVsZDo6aDFjMTQ4NDA4YjI0MzNmYWbLImU8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+ +IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aGU2YmJk +MzQ4NWE5NDVmMDYuMcwiaHNlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIGFsbG9jOjpib3hlZDo6Qm94PFQ+Pjo6ZGVzZXJpYWxpemU6Omg1MDYyZDJlODRi +NmE5YzE0zSJiPHJ1bWFfZXZlbnRzOjpzZWNyZXQ6OnJlcXVlc3Q6OlNlY3JldE5hbWUgYXMgY29y +ZTo6Y29udmVydDo6QXNSZWY8c3RyPj46OmFzX3JlZjo6aDA4ZDQ3ZWY2Yzk3MWUxMTjOIlg8YWxs +b2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6OmhlZDUwYzcyYjBmOTVjODIyzyJYPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50 +b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMjZmOTQxNzg5ZmEx +MDM2ZtAiWDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPFQsQT4gYXMgY29yZTo6b3Bz +Ojpkcm9wOjpEcm9wPjo6ZHJvcDo6aGY0MDA4Y2IzNzlhNTA5ZTPRIjhzdGQ6OnRocmVhZDo6bG9j +YWw6OkxvY2FsS2V5PFQ+Ojp3aXRoOjpoZWI1NzE5ZjYzNGY2ZTdkOdIivwFhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OkludGVybmFsPjo6Y29ycmVjdF9jaGlsZHJlbnNfcGFyZW50X2xpbmtzOjpoZWI1NDVlMDQw +ZTIxMTk3YtMiggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDdmN2IwY2EzYmIxNjQ2MjTUIjlzZXJkZV9qc29uOjpl +cnJvcjo6RXJyb3I6OmZpeF9wb3NpdGlvbjo6aDc2OWE0NTgzNzE5NGM0MjbVIipzZXJkZV9qc29u +OjpzZXI6OmluZGVudDo6aDA3YTAwODA2M2ZlNzg5MWHWIkdhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPjo6Z2V0OjpoNGQ2NDQ0YWI4M2I1ODQ1Y9ciLmNvcmU6 +Om9wdGlvbjo6ZXhwZWN0X2ZhaWxlZDo6aGQ4MmM2ZDY5MzNkYjI3MDnYIms8cnVtYV9jb21tb246 +OmlkZW50aWZpZXJzOjpjcnlwdG9fYWxnb3JpdGhtczo6RGV2aWNlS2V5QWxnb3JpdGhtIGFzIGNv +cmU6OmNtcDo6T3JkPjo6Y21wOjpoOTdkZmU1ODcxMzQxZWZkM9kiQGNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTx0cmFjaW5nOjpzcGFuOjpTcGFuPjo6aGNjZGZhNzI3YWQyNmUxZTPaIrMBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnBpbjo6UGluPGFsbG9jOjpib3hlZDo6Qm94PG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6S2V5UXVlcnlNYW5hZ2VyOjp3YWl0X2lmX3VzZXJfa2V5X3F1 +ZXJ5X3BlbmRpbmc6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+Pjo6aGQwNmVhMzI3OTMzNjUy +Y2XbImBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206OnJlZGFjdGlv +bjo6Um9vbVJlZGFjdGlvblVuc2lnbmVkPjo6aDgxZTQ5NjNiZTgyOWY5YTbcInpjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OmZvcndhcmRl +ZF9yb29tX2tleTo6Rm9yd2FyZGVkUm9vbUtleUNvbnRlbnQ+OjpoMmZlZTAzOGU3OGIzOGZjMd0i +hwF3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnNsaWNlczo6PGltcGwgd2FzbV9iaW5kZ2VuOjpjb252 +ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpIGZvciBhbGxvYzo6c3RyaW5nOjpTdHJpbmc+OjppbnRv +X2FiaTo6aGM5MjZhYzkwZjIyMmE0MjjeIlhtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpsaWJvbG1f +bWlncmF0aW9uOjpkYXRlX3RvX3NlY29uZHNfc2luY2VfZXBvY2g6Omg4NTc3ZmUyNTk5MzIwOGJl +3yIlYmFja3VwZGVjcnlwdGlvbmtleV9tZWdvbG1WMVB1YmxpY0tleeAiIl9fd2JnX3NldF9iYWNr +dXBrZXlzX2RlY3J5cHRpb25LZXnhImM8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJ +bnRvSXRlcjxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGU2OWFiYWY5 +MTQ2MmRkOGPiImM8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRlcjxLLFYs +QT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDFlZjI1MjEzN2Q5MzVmNzfjIiFj +b3JlOjpjbXA6Om1heDo6aDA2MDY5YTE2ZTZmOTlhYmbkIiZkZWNyeXB0ZWRyb29tZXZlbnRfc2Vu +ZGVyQ3VydmUyNTUxOUtleeUiJmVuY3J5cHRpb25pbmZvX3NlbmRlckNsYWltZWRFZDI1NTE5S2V5 +5iJ8Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZl +bnRzOjpmb3J3YXJkZWRfcm9vbV9rZXk6OkZvcndhcmRlZFJvb21LZXlDb250ZW50Pjo6aDJmZWUw +MzhlNzhiMzhmYzEuMuciOnJ1bWFfY29tbW9uOjpzZXJkZTo6ZnJvbV9yYXdfanNvbl92YWx1ZTo6 +aDg2MGFlMjdhNDAzOWZkYmHoIjFjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjptYXA6OmgwN2Uz +NmUxOTEzZjZmMTZi6SJiY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29t +OjpyZWRhY3Rpb246OlJvb21SZWRhY3Rpb25VbnNpZ25lZD46Omg4MWU0OTYzYmU4MjlmOWE2LjHq +IjtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6cmVtb3ZlOjpoNDRjYWY2ODM3YmE5 +N2YzY+siHl9fd2JnX2dldF9pZGVudGl0eWtleXNfZWQyNTUxOewiFXJvb21rZXlpbmZvX2FsZ29y +aXRobe0iYmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cm9vbTo6cmVkYWN0 +aW9uOjpSb29tUmVkYWN0aW9uVW5zaWduZWQ+OjpoODFlNDk2M2JlODI5ZjlhNi4y7iJiY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjpyZWRhY3Rpb246OlJvb21SZWRh +Y3Rpb25VbnNpZ25lZD46Omg4MWU0OTYzYmU4MjlmOWE2LjPvInc8dHJhY2luZ19zdWJzY3JpYmVy +OjpmbXQ6OlN1YnNjcmliZXI8TixFLEYsVz4gYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpT +dWJzY3JpYmVyPjo6ZG93bmNhc3RfcmF3OjpoMWExM2ZhMWNkNmE1MzQ5ZfAitQFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8Y29yZTo6cGluOjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjpLZXlRdWVyeU1hbmFnZXI6OndhaXRfaWZfdXNlcl9rZXlfcXVlcnlf +cGVuZGluZzo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pj4+OjpoZDA2ZWEzMjc5MzM2NTJjZS41 +8SLBATxtYXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjpyZXF1ZXN0czo6VG9EZXZpY2VSZXF1ZXN0 +Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZp +c2l0X3N0cjo6aDBkNjEwMWEzMTdhNmNmMjnyIsABPG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlv +bjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19zdG9yZV9l +bmNyeXB0aW9uOjpFbmNyeXB0ZWRWYWx1ZT46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBh +cyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhmODM4ZDBhZjgzYjhkM2Fm8yK0AWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoMmNhYzYxNWVk +NGYxNzIwM/QiO2FsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmhlZGU2 +YWQ1NDljMmU0NThk9SLWATxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6Xzo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OmlkZW50 +aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXR5Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRW +aXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aGNjZDMxMGQ2MmM3ZDU5 +YjL2IuEBPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OnBrX3NpZ25pbmc6Ol86Ojxp +bXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNp +Z25pbmc6OnBrX3NpZ25pbmc6OlBpY2tsZWRTaWduaW5ncz46OmRlc2VyaWFsaXplOjpfX0ZpZWxk +VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhhMWNkMzJiOGM0M2Vk +ZDc49yLDATxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpfOjo8aW1wbCBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBwZWRT +ZWNyZXQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9y +Pjo6dmlzaXRfc3RyOjpoYzBjYjY1NzFiYjI4YTVhMPgi1QE8bWF0cml4X3Nka19jcnlwdG86Om9s +bTo6c2lnbmluZzo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6c2lnbmluZzo6UGlja2xlZENyb3NzU2lnbmluZ0lkZW50aXR5Pjo6ZGVz +ZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0 +cjo6aDI0ZGIzOGYzOTQ0NzhhYzn5IooBPHNlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIHU4Pjo6ZGVzZXJpYWxpemU6OlByaW1pdGl2ZVZpc2l0b3IgYXMg +c2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfaTg6Omg3ZmEyYjA2YzNkNTkyMTRm+iI+Y29yZTo6 +aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I6OnppcDo6aDE0Y2YxYzQwMmJmNjNiM2L7 +Img8Jm11dCBybXBfc2VyZGU6OmVuY29kZTo6U2VyaWFsaXplcjxXLEM+IGFzIHNlcmRlOjpzZXI6 +OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RydWN0OjpoODQxNWMwNzMwMDA2NWU1MvwiRjxhbGxv +Yzo6cmM6OlJjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDRkYmIzZWM2 +YTk4MGU2MTf9Iq0BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6cHVzaF93aXRoX2hhbmRsZTo6aDEy +MGM1NDJjYWRjOTkwMjD+IrQBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJl +ZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6ZnJvbV9uZXdf +aW50ZXJuYWw6OmgxNzhmNTgwZmMxN2I2MDEx/yK0AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpP +d25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5h +bD46OmZyb21fbmV3X2ludGVybmFsOjpoMDg3YWQyYzVkYmYyNjM4ZIAjtAFhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6SW50ZXJuYWw+Ojpmcm9tX25ld19pbnRlcm5hbDo6aGVlODU3M2YwOTYyOGY3OTWBI7QB +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6ZnJvbV9uZXdfaW50ZXJuYWw6Omg2MGIzYzM1 +N2FiNWI2ZGJhgiO0AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVy +bmFsOjpoNDY0ZjY1ZDA1MjlhNTRkNoMjtAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpm +cm9tX25ld19pbnRlcm5hbDo6aDI2YmRmMDZmMGVmNmMyMDGEI7QBYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkludGVybmFsPjo6ZnJvbV9uZXdfaW50ZXJuYWw6Omg5ZjQwMjA0OGQ2MmU3MTg3hSO0AWFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoOTA2ZGI5YWMwOTlk +Mjk3MoYjtAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpmcm9tX25ld19pbnRlcm5hbDo6 +aDNlMjgxMzFjNjRkOTAzNWSHI7QBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9k +ZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6ZnJvbV9u +ZXdfaW50ZXJuYWw6Omg4YmE5OWM1YmY0YjEzNjNhiCO0AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRl +cm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoNjk1YzMyNWEzZjNiN2UyYYkjtAFhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6SW50ZXJuYWw+Ojpmcm9tX25ld19pbnRlcm5hbDo6aGIzMTJiZDQzM2I1MWY1MziK +I7QBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6ZnJvbV9uZXdfaW50ZXJuYWw6OmgxYWUx +NTUyNWI4ZDg0OGZiiyO0AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2lu +dGVybmFsOjpoMDFhNTg1ZWEzMjk2YWMxZowjtAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3du +ZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+ +Ojpmcm9tX25ld19pbnRlcm5hbDo6aDZjOThhM2EyZTNiYjVmOGGNI7QBYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OkludGVybmFsPjo6ZnJvbV9uZXdfaW50ZXJuYWw6OmhiNjE0NTIwZjJiZjcyNWEwjiO0AWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoMDA1YzM3ZGY4 +MzE2NThhMI8jggJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDU1NGJhOTg3MjVlZTVkNzeQIzBjb3JlOjpzbGljZTo6 +PGltcGwgW1RdPjo6c3dhcDo6aDAwZTE2MzQ2ODE4OGE1MTORI/EBPHJ1bWFfZXZlbnRzOjprZXk6 +OnZlcmlmaWNhdGlvbjo6Y2FuY2VsOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZv +ciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmNhbmNlbDo6VG9EZXZpY2VLZXlWZXJp +ZmljYXRpb25DYW5jZWxFdmVudENvbnRlbnQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3Ig +YXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoMjQxMGE3ZjA4NDMxMzdjOZIj5wE8 +bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6OnJvb206OmVuY3J5cHRlZDo6T2xtSGVscGVyPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRW +aXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aGQ5YjZmYmE4MjA5NzU0 +YjmTI/YBPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0 +OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfcmVxdWVzdDo6TWVnb2xtVjFBZXNTaGEyQ29udGVudD46 +OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNp +dF9zdHI6Omg4MTI0MjFlY2Q5N2ZjMjRhlCPuATxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRp +b246OnJlYWR5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50 +czo6a2V5Ojp2ZXJpZmljYXRpb246OnJlYWR5OjpUb0RldmljZUtleVZlcmlmaWNhdGlvblJlYWR5 +RXZlbnRDb250ZW50Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6 +VmlzaXRvcj46OnZpc2l0X3N0cjo6aDhhNDAzODVhMDg2MzY4NWWVI2I8bWF0cml4X3Nka19jcnlw +dG86Om9sbTo6c2lnbmluZzo6cGtfc2lnbmluZzo6U2lnbmluZyBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoYTk4NzcwNTExNzQxNzE3M5YjlQE8bWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3Rz +OjpPdXRnb2luZ1JlcXVlc3QgYXMgY29yZTo6Y29udmVydDo6RnJvbTxydW1hX2NsaWVudF9hcGk6 +OmtleXM6OnVwbG9hZF9zaWduYXR1cmVzOjp2Mzo6UmVxdWVzdD4+Ojpmcm9tOjpoNmQxZThkZDM5 +ODc0N2RjN5cj6AE8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjptYWM6Ol86OjxpbXBs +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlv +bjo6bWFjOjpUb0RldmljZUtleVZlcmlmaWNhdGlvbk1hY0V2ZW50Q29udGVudD46OmRlc2VyaWFs +aXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg4 +YjQwY2U2M2RiN2I1NjgxmCNkbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGlu +ZTo6VmVyaWZpY2F0aW9uTWFjaGluZTo6aXNfdGltZXN0YW1wX3ZhbGlkOjpoNWNjZDM1NDVkODBm +ZWRjYpkjP3J1bWFfY29tbW9uOjpzZXJkZTo6YmFzZTY0OjpCYXNlNjQ8Qz46OnBhcnNlOjpoMzI4 +ZGRiOWQzYjA5ZDRiYpojigE8dm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6RWQyNTUxOVB1Ymxp +Y0tleSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjp1dGlsaXR5OjpWZXJpZnlKc29uPjo6dmVy +aWZ5X2Nhbm9uaWNhbGl6ZWRfanNvbjo6aDBiNTY0ZDdjYjYxMDdkMjKbI0Y8YWxsb2M6OnZlYzo6 +VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg4OTQ4YzIxMDQ0MzlhYzNk +nCNWd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJPYmplY3RTdG9yZTo6SWRiT2JqZWN0U3RvcmU6 +OnB1dF93aXRoX2tleTo6aDdhNzJiYzc2N2Y3NDUyOWKdI1h3ZWJfc3lzOjpmZWF0dXJlczo6Z2Vu +X0lkYkluZGV4UGFyYW1ldGVyczo6SWRiSW5kZXhQYXJhbWV0ZXJzOjp1bmlxdWU6Omg0MjM5ODQ2 +NDdjZThmMjlkniM+c2VyZGU6OmRlOjp2YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEksRT46OmVuZDo6 +aDBlYTdhNjlmNGI5NmI5NDGfI98BPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0 +Y2hldDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06 +OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0OjpJbmFjdGl2ZURvdWJsZVJhdGNoZXQ+OjpkZXNlcmlh +bGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpo +ZjBjYjY3NmYxZTdjMDI1N6AjvwE8dm9kb3plbWFjOjpvbG06OnNlc3Npb25fa2V5czo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNlc3Npb25fa2V5 +czo6U2Vzc2lvbktleXM+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRl +OjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoNmNlMzJhY2JjZTA2ZDRjZKEjtAFhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6SW50ZXJuYWw+Ojpmcm9tX25ld19pbnRlcm5hbDo6aGY4NjJjNWQwZWI5MzFlYjSiI0d2 +b2RvemVtYWM6Om9sbTo6bWVzc2FnZXM6Om1lc3NhZ2U6Ok1lc3NhZ2U6OnRvX2J5dGVzOjpoMmZh +OTVjZTlkZmM0N2ZkZaMjNGNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46OmV4cGVjdDo6aDQ0OTZj +ODUwNWI5MDY0M2akI1B2b2RvemVtYWM6Om1lZ29sbTo6bWVzc2FnZTo6TWVnb2xtTWVzc2FnZTo6 +dG9fc2lnbmF0dXJlX2J5dGVzOjpoNzYyMThlZjlmNzIyMDk1ZaUjY2NvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTx2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OkRvdWJsZVJh +dGNoZXQ+OjpoYTFmY2MzMGVkMGJhMjNlOKYjzgE8dm9kb3plbWFjOjptZWdvbG06Omdyb3VwX3Nl +c3Npb246Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6bWVn +b2xtOjpncm91cF9zZXNzaW9uOjpHcm91cFNlc3Npb25QaWNrbGU+OjpkZXNlcmlhbGl6ZTo6X19G +aWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoYTE2ZjE1Njlh +M2RkMWQwOacj0wE8dm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmZhbGxiYWNrX2tleXM6Ol86Ojxp +bXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjphY2NvdW50Ojpm +YWxsYmFja19rZXlzOjpGYWxsYmFja0tleT46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBh +cyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhjNzFlOWU1Y2Q2YTliZGY5qCPUATx2 +b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6ZmFsbGJhY2tfa2V5czo6Xzo6PGltcGwgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmZhbGxiYWNrX2tleXM6 +OkZhbGxiYWNrS2V5cz46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6 +OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmgyYzNiOTgyZWVhMDI3NTVhqSMycHJvc3Q6OmVycm9yOjpE +ZWNvZGVFcnJvcjo6cHVzaDo6aGNiN2FlZGM3MmQ0MzE5NDiqI2RydW1hX2NsaWVudF9hcGk6OmRl +aHlkcmF0ZWRfZGV2aWNlOjpwdXRfZGVoeWRyYXRlZF9kZXZpY2U6OnVuc3RhYmxlOjpSZXF1ZXN0 +OjpuZXc6Omg5MjA3MDQzMTUxYjllYWRkqyOtAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hf +d2l0aF9oYW5kbGU6OmgwNzhjOTliYjIzNzU1MjZmrCO0AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRl +cm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoZTM2MTA3ZjBjOWJjNTgxYq0jPnNlcmRlOjpkZTo6 +dmFsdWU6OlNlcURlc2VyaWFsaXplcjxJLEU+OjplbmQ6OmgxNWE1OWFhZGFmMDU3ZDZmriM7YWxs +b2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjphbGxvY2F0ZV9pbjo6aGJiZDI5MDhlMGY4ZTNmODev +IzRjb3JlOjpzbGljZTo6bWVtY2hyOjptZW1jaHJfbmFpdmU6Omg1ZWJjYTdkOWE4YTQ2MWQzsCO0 +AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoZDgzZjlm +OWUwMzIyNTQyNrEjSzxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6ZXJyb3I6OkVy +cm9yPjo6c291cmNlOjpoMTBmZjY3NzVjMDEwNzVlNLIjS2FsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+OjpnZXRfbXV0OjpoYjMyMGQ2NDU1YzljOGQ4M7MjLXN0 +ZDo6aW86OmVycm9yOjpFcnJvcjo6bmV3OjpoODVmNjBjOTg1N2RmOTIxNrQjNmpzX3N5czo6VWlu +dDhBcnJheTo6cmF3X2NvcHlfdG9fcHRyOjpoYTAyMDE5ZTFjNDFkNmU5MbUjZGNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxzdGQ6OmlvOjpXcml0ZTo6d3JpdGVfZm10OjpBZGFwdGVyPGFsbG9jOjp2 +ZWM6OlZlYzx1OD4+Pjo6aGUzMDY2YjUwZDZjODI0MzK2I2ljb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6UmVs +YXRpb24+Pjo6aDYxM2Y1ODJiNDk0OTkxYjK3I1Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM+OjpoZjRiMjQ5OTFhOTQyY2Zl +OLgjjQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25f +bWFuYWdlcjo6c2Vzc2lvbnM6OlNlc3Npb25NYW5hZ2VyOjptYXJrX2RldmljZV9hc193ZWRnZWQ6 +Ont7Y2xvc3VyZX19Pjo6aDRlYmFlMjIzOTM3NTdhYza5I3Z0cmFjaW5nOjppbnN0cnVtZW50Ojpf +Ojo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRyb3AgZm9yIHRyYWNpbmc6Omluc3RydW1lbnQ6Oklu +c3RydW1lbnRlZDxUPj46OmRyb3A6Omg1YTc4ZTBkNmMyOGI2NTNkuiPmATxtYXRyaXhfc2RrX2Ny +eXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfcmVxdWVzdDo6Xzo6PGltcGwgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21f +a2V5X3JlcXVlc3Q6OkFjdGlvbj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJk +ZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmgzMmI1MjcwYzA0Zjg1ZWMwuyMjYmFja3VwZGVj +cnlwdGlvbmtleV9jcmVhdGVSYW5kb21LZXm8I2U8bWF0cml4X3Nka19jb21tb246OmV4ZWN1dG9y +OjpKb2luSGFuZGxlPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpo +NzNmNDQ3Y2RhMTU4YWFiNL0jWmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBwZWRTZWNyZXQ+OjpoYmFkMDA3N2NiYmNhNWI4N74jG2Vu +Y3J5cHRpb25pbmZvX3NlbmRlckRldmljZb8jGmVuY3J5cHRpb25pbmZvX3NoaWVsZFN0YXRlwCP7 +BGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6c3RyZWFtOjpt +YXA6Ok1hcDxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6c3RyZWFtOjpmaWx0ZXJfbWFwOjpGaWx0ZXJN +YXA8dG9raW9fc3RyZWFtOjp3cmFwcGVyczo6YnJvYWRjYXN0OjpCcm9hZGNhc3RTdHJlYW08KGNv +cmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjp1c2VyOjpS +ZWFkT25seU93blVzZXJJZGVudGl0eT4sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpJZGVudGl0 +eUNoYW5nZXMsbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpEZXZpY2VDaGFuZ2VzKT4sbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjpjcnlwdG9fc3RvcmVfd3JhcHBlcjo6Q3J5cHRvU3RvcmVXcmFw +cGVyOjppZGVudGl0aWVzX3N0cmVhbTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6Y3J5cHRvX3N0b3JlX3dyYXBwZXI6OkNyeXB0b1N0b3JlV3JhcHBl +cjo6aWRlbnRpdGllc19zdHJlYW06Ont7Y2xvc3VyZX19PixtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OlN0b3JlOjppZGVudGl0aWVzX3N0cmVhbV9yYXc6Ont7Y2xvc3VyZX19Pj46OmgwZWI0NjQx +NWNjNmZlNTRiwSNYY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2 +ZXJpZmljYXRpb246OnNhczo6U2FzPjo6aGY0YjI0OTkxYTk0MmNmZTguM8IjkANjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpzdHJlYW06OnN0cmVhbTo6ZmlsdGVyX21hcDo6 +RmlsdGVyTWFwPHRva2lvX3N0cmVhbTo6d3JhcHBlcnM6OmJyb2FkY2FzdDo6QnJvYWRjYXN0U3Ry +ZWFtPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Okdvc3NpcHBlZFNlY3JldD4sbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjpjcnlwdG9fc3RvcmVfd3JhcHBlcjo6Q3J5cHRvU3RvcmVXcmFw +cGVyOjpzZWNyZXRzX3N0cmVhbTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6Y3J5cHRvX3N0b3JlX3dyYXBwZXI6OkNyeXB0b1N0b3JlV3JhcHBlcjo6 +c2VjcmV0c19zdHJlYW06Ont7Y2xvc3VyZX19Pj46OmhjMmNlMjgwZTY2NjA0MmI2wyOvA2NvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6c3RyZWFtOjpmaWx0ZXJf +bWFwOjpGaWx0ZXJNYXA8dG9raW9fc3RyZWFtOjp3cmFwcGVyczo6YnJvYWRjYXN0OjpCcm9hZGNh +c3RTdHJlYW08YWxsb2M6OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Um9vbUtl +eUluZm8+PixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNyeXB0b19zdG9yZV93cmFwcGVyOjpD +cnlwdG9TdG9yZVdyYXBwZXI6OnJvb21fa2V5c19yZWNlaXZlZF9zdHJlYW06Ont7Y2xvc3VyZX19 +Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNyeXB0b19zdG9yZV93cmFw +cGVyOjpDcnlwdG9TdG9yZVdyYXBwZXI6OnJvb21fa2V5c19yZWNlaXZlZF9zdHJlYW06Ont7Y2xv +c3VyZX19Pj46Omg1NmMzNzYwYzllZDk4ZDBmxCP+ATw8cnVtYV9ldmVudHM6OnJvb206Om1lc3Nh +Z2U6OnZpZGVvOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50 +czo6cm9vbTo6bWVzc2FnZTo6dmlkZW86OlZpZGVvSW5mbz46OmRlc2VyaWFsaXplOjpfX1Zpc2l0 +b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfbWFwOjpfX0Rlc2VyaWFsaXplV2l0aCBh +cyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmhkNmQzYWZkM2Q2ZDM4ODM4 +xSMMdXNlcmlkX2Nsb25lxiM5Y29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2U6 +Omg2YmE2NmQ1MmFhMzE4MjQyxyMRZGV2aWNlX3NpZ25hdHVyZXPIIxN1c2VyaWRlbnRpdHlfdmVy +aWZ5ySMcdmVyaWZpY2F0aW9ucmVxdWVzdF9zdGFydFNhc8ojInZlcmlmaWNhdGlvbnJlcXVlc3Rf +Z2VuZXJhdGVRckNvZGXLI1hjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM+OjpoZjRiMjQ5OTFhOTQyY2ZlOC40zCOLAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6 +T3duVXNlcklkZW50aXR5OjpyZXF1ZXN0X3ZlcmlmaWNhdGlvbl9oZWxwZXI6Ont7Y2xvc3VyZX19 +Pjo6aDQxNWFjMDYwMjU0NzQyZTTNI7ICY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNf +dXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +bWFjaGluZTo6T2xtTWFjaGluZTo6dHJhY2tlZF91c2Vyczo6e3tjbG9zdXJlfX0sbWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjp0cmFja2VkX3VzZXJzOjp7e2Nsb3N1cmV9fSxq +c19zeXM6OlNldD46Ont7Y2xvc3VyZX19Pj46OmgxMDVkNWQ2YmEyN2M0YTcyziPIATxydW1hX2V2 +ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZv +ciBydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpFbmNyeXB0ZWRFdmVudFNjaGVtZT46OmRl +c2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9z +dHI6OmhiNWYyNTQ1ODNiZjI0NTQwzyNrY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmdldF91c2VyX2RldmljZXM6Ont7Y2xvc3VyZX19Pjo6 +aDU4Y2ZkNTg3NTM2N2JiMznQI05pbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9vYmplY3Rfc3RvcmU6 +OklkYk9iamVjdFN0b3JlOjppbmRleDo6aDgxNjM0MGM2MDIwNDAzZGHRI+UBPG1hdHJpeF9zZGtf +Y3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6Xzo6PGltcGwgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6 +Om91dGJvdW5kOjpTaGFyZUluZm8+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2Vy +ZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoNDllOTIwNjZmZGI2ZDQ2N9IjyQE8PHNlcmRl +OjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6OnRpbWU6 +OkR1cmF0aW9uPjo6ZGVzZXJpYWxpemU6OkZpZWxkIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+ +OjpkZXNlcmlhbGl6ZTo6RmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0 +X3N0cjo6aDk0YWVhZWNlMDQ0NTZhNWLTI9gBPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVz +Ojp1c2VyOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2Ny +eXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdGllcz46OmRlc2VyaWFs +aXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omhh +N2QwOWQ1YjE5MDk5OGEz1CO+ATxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpfOjo8aW1w +bCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5n +OjpTZWNyZXRJbmZvPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6 +VmlzaXRvcj46OnZpc2l0X3N0cjo6aDdlMTBlYWU5ZmUxY2FmODXVIzdzZXJkZV9qc29uOjpkZTo6 +RGVzZXJpYWxpemVyPFI+OjplbmQ6OmhhNzE5NWM4M2JhMTFiZTdm1iNFc2VyZGVfanNvbjo6ZGU6 +OkRlc2VyaWFsaXplcjxSPjo6bmV4dF9jaGFyX29yX251bGw6Omg2NWY4OGQ1ZDMxNzc1YzYz1yO5 +ATxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6S2RmSW5mbz46OmRlc2VyaWFs +aXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF91NjQ6Omg1 +ZjEyMWU3NmViY2UzY2Mx2CM5c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yOjpmaXhfcG9zaXRpb246 +OmgzMTA2YzRkNGNjZDFjYTU22SNlPCZtdXQgcm1wX3NlcmRlOjplbmNvZGU6OlNlcmlhbGl6ZXI8 +VyxDPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cjo6aDg0MzI0Y2Mw +MzgyMjUyODPaIzljb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZTo6aDE3OWI1 +MDkwMjAyOGY2N2XbIzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNkNTE0ZGJkZWQ4 +MDA3MjTcI1hjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6c2FzOjpTYXM+OjpoMTVkYTdiMGE2Mzg2MDZiOC4x3SNTbWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlvbjo6aXNfZG9uZTo6aDM1NTRj +NDgwZjNhN2M2ZTDeI11tYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6 +VmVyaWZpY2F0aW9uUmVxdWVzdDo6aXNfcGFzc2l2ZTo6aGRiMjQzNTIzYzA2NWYxYjPfI1ptYXRy +aXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVz +dDo6aXNfZG9uZTo6aDdjZmQ0NzI0OWYzNGJiMDngI19tYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZp +Y2F0aW9uOjpyZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdDo6aXNfY2FuY2VsbGVkOjpoOWI2 +MjA5OGM1NTAwODg0NOEjM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoMDM1ZTA3 +ODZlMTg2NGY2YuIjM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoZTVjODc2MGQy +YTVkZTNkMuMjPWV5ZWJhbGw6OnNoYXJlZDo6U2hhcmVkT2JzZXJ2YWJsZTxUPjo6cmVhZDo6aDg5 +ZTY4NGM3NDAxZjE3NTfkIz1leWViYWxsOjpzaGFyZWQ6OlNoYXJlZE9ic2VydmFibGU8VD46OnJl +YWQ6Omg5YjhlNGRiMjY2NTE5YmNm5SM9ZXllYmFsbDo6c2hhcmVkOjpTaGFyZWRPYnNlcnZhYmxl +PFQ+OjpyZWFkOjpoYTYzMjYwMGI3YjdmMWVlMeYjZTwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2Vy +aWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfbWFwOjpo +Y2NmZThkMDE5ODgyNDZmOC4y5yNJPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmNs +b25lOjpDbG9uZT46OmNsb25lOjpoMWFiMDYxMmJkNzZhOTEyMOgjOWNvcmU6Om9wczo6ZnVuY3Rp +b246OkZuT25jZTo6Y2FsbF9vbmNlOjpoNWFhODI1ZGQ0ZWQ1Y2E3Y+kjZTwmbXV0IHNlcmRlX2pz +b246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJp +YWxpemVfbWFwOjpoY2NmZThkMDE5ODgyNDZmOC4z6iM0Y29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxF +Pjo6ZXhwZWN0OjpoMTFmMWRhNTE0NmFkMDZjZusjOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25j +ZTo6Y2FsbF9vbmNlOjpoNzAzZWRkMmFkNGFmNDIwZuwjPnN0ZDo6aW86OmN1cnNvcjo6Q3Vyc29y +PFQ+OjpyZW1haW5pbmdfc2xpY2U6OmhjNTI1YTE1OWY3NzdmYTAw7SM2cXJjb2RlOjpjYW52YXM6 +OkNhbnZhczo6ZHJhd19udW1iZXI6Omg0ZTUzMmU1N2ZlYmUxZGNh7iM3Y29yZTo6b3BzOjpmdW5j +dGlvbjo6Rm5NdXQ6OmNhbGxfbXV0OjpoMmQ5MWM3ZTNlMzM0MDlmZe8jyQFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmJveGVkOjpCb3g8W3NoYXJk +ZWRfc2xhYjo6cGFnZTo6c2xvdDo6U2xvdDx0cmFjaW5nX3N1YnNjcmliZXI6OnJlZ2lzdHJ5Ojpz +aGFyZGVkOjpEYXRhSW5uZXIsc2hhcmRlZF9zbGFiOjpjZmc6OkRlZmF1bHRDb25maWc+XT4+Pjo6 +aGY5YjA2Y2Y1YTc3ZWFkMmHwI9wBPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0 +Y2hldDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06 +OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0OjpEb3VibGVSYXRjaGV0U3RhdGU+OjpkZXNlcmlhbGl6 +ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoMmI3 +Y2Y1YTFmNDhkM2M3YfEj1gE8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0 +OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6c2Vz +c2lvbjo6ZG91YmxlX3JhdGNoZXQ6OlJhdGNoZXRDb3VudD46OmRlc2VyaWFsaXplOjpfX0ZpZWxk +VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhhNTFhOTUyYTIwNDll +MDIz8iO/ATx2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbl9jb25maWc6Ol86OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uX2NvbmZpZzo6VmVyc2lv +bj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2 +aXNpdF9zdHI6Omg2ZGYwNDc5NGVkZTE4MjM08yPFATx2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lv +bl9jb25maWc6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6 +bWVnb2xtOjpzZXNzaW9uX2NvbmZpZzo6VmVyc2lvbj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlz +aXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhjOGI5M2Y3NGNlMTZhOGZi +9CNJPHZvZG96ZW1hYzo6UGlja2xlRXJyb3IgYXMgY29yZTo6ZXJyb3I6OkVycm9yPjo6c291cmNl +OjpoNjhiMWJmMDE5OWUyNDZjY/UjuAE8dm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6 +U2VjcmV0S2V5cz46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZp +c2l0b3I+Ojp2aXNpdF9zdHI6OmgzODYzZTZhM2VhMmQzOThm9iM2c2VyZGVfanNvbjo6c2VyOjpm +b3JtYXRfZXNjYXBlZF9zdHI6Omg5NmFkMWZkMjkxNjFkMDg49yNbPHJhbmRfY2hhY2hhOjpjaGFj +aGE6OkNoYUNoYTEyQ29yZSBhcyByYW5kX2NvcmU6OlNlZWRhYmxlUm5nPjo6ZnJvbV9zZWVkOjpo +ZTFmZGVjMzczNTdjZDlkOPgjRnRyYWNpbmc6Ol9fbWFjcm9fc3VwcG9ydDo6X19pc19lbmFibGVk +Ojp7e2Nsb3N1cmV9fTo6aGY2MzBiNjViMGNhZDBjNDL5I0J0cmFjaW5nX2NvcmU6OmRpc3BhdGNo +ZXI6OldlYWtEaXNwYXRjaDo6dXBncmFkZTo6aDI3OTMwZGJkYTA4Yzg2OWT6I0BhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpzbGljZV9pbnNlcnQ6OmgwNWY4YzVmN2M1Zjc4YzBi+yMt +YWxsb2M6OnZlYzo6VmVjPFQsQT46OnB1c2g6OmhlMTQ2MDI5ZTQyNjA3ZGM2/CMtYWxsb2M6OnZl +Yzo6VmVjPFQsQT46OnB1c2g6OmhiZTVjOTU3YWZjYzk1MTMz/SNpY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpTZXNzaW9uQ3Jl +YXRpb25FcnJvcj46Omg1ZGY4MDJjYWQzZDk5NmI2/iOtAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uOjplbmNyeXB0PG1hdHJp +eF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpzZWNyZXRfc2VuZDo6U2VjcmV0U2VuZENvbnRl +bnQ+Ojp7e2Nsb3N1cmV9fT46Omg1NDc1N2Y1NjYzYmJlMzc0/yOnAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0 +bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpoYW5kbGVfa2V5X3JlcXVlc3Q6 +Ont7Y2xvc3VyZX19Pj4+OjpoMzc3OWU5ZmU2Njg4MTQxNS4ygCSlAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0 +bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpyZXF1ZXN0X2tleV9oZWxwZXI6 +Ont7Y2xvc3VyZX19Pj4+OjpoYjUyMzU2MTM0Yzk3OWYxOIEkMDwmVCBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoOGYwOTM3OTZkZjZlMmQ4ZoIkuQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +ZnV0dXJlc191dGlsOjpmdXR1cmU6Om1heWJlX2RvbmU6Ok1heWJlRG9uZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjpnZXRfdXBkYXRlZF9r +ZXlzX2Zvcl91c2VyOjp7e2Nsb3N1cmV9fT4+OjpoN2E3ZTIyNTJlM2M5MjU2MoMkOWFsbG9jOjp2 +ZWM6OlZlYzxULEE+OjppbnRvX2JveGVkX3NsaWNlOjpoNGZiNGRlYzdlNmMxNTZiNYQkOWFsbG9j +Ojp2ZWM6OlZlYzxULEE+OjppbnRvX2JveGVkX3NsaWNlOjpoYTRkOTg3NzllZmI5NjhmMIUkLWFs +bG9jOjp2ZWM6OlZlYzxULEE+OjpwdXNoOjpoZGU3Mzk5ZWU5ODQ1Y2NiNYYkIW1lZ29sbXYxYmFj +a3Vwa2V5X3B1YmxpY0tleUJhc2U2NIckhQE8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bGlib2xt +X21pZ3JhdGlvbjo6UGlja2xlZFNlc3Npb24gYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFp +dHM6OkZyb21XYXNtQWJpPjo6ZnJvbV9hYmk6Omg5NjliZDU1MDk1YTBhYWI2iCSRATxtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjpsaWJvbG1fbWlncmF0aW9uOjpQaWNrbGVkSW5ib3VuZEdyb3VwU2Vz +c2lvbiBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6RnJvbVdhc21BYmk+Ojpmcm9t +X2FiaTo6aGIwZjFmZTRjZTc4N2Y3YzSJJFQ8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+ +IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcD46OmVuZDo6aDU3MjAxZTNkZDk2NjFjMWSKJFQ8 +c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVNl +cT46OmVuZDo6aDM1ZjAwZThhNGRhOTg2MDWLJGM8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bWFwOjpJbnRvSXRlcjxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDEz +ZDc4Y2QwZDFkOGNmNjKMJGM8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRl +cjxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGY3ZWQwOTBiZTYwMDg1 +MmWNJBxfX3diZ19rZXlzdXBsb2FkcmVxdWVzdF9mcmVljiSOATxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNhdmVfY2hhbmdlczo6aDA2M2JhYWU4 +M2M1ZTllMmaPJI4BPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0 +b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0 +b1N0b3JlPjo6c2F2ZV9jaGFuZ2VzOjpoOTYzMTE2MTVjNDEwMzU1Y5AkMDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoYWQwNTNiM2YwYmM3ZTE4YZEkcmNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6 +R3JvdXBTZXNzaW9uQ2FjaGU+OjpoOGUwMTMzNTExZWY5NjAxZpIkuQFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6aW5p +dF9mcm9tX3N0b3JlOjp7e2Nsb3N1cmV9fTo6Xzo6X193YXNtX2JpbmRnZW5fZ2VuZXJhdGVkX09s +bU1hY2hpbmVfaW5pdEZyb21TdG9yZTo6e3tjbG9zdXJlfX0+OjpoYzkxMGNkMDk3ODRkMTc5MpMk +vQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGlu +ZTo6T2xtTWFjaGluZTo6c2V0X3Jvb21fc2V0dGluZ3M6Ont7Y2xvc3VyZX19OjpfOjpfX3dhc21f +YmluZGdlbl9nZW5lcmF0ZWRfT2xtTWFjaGluZV9zZXRSb29tU2V0dGluZ3M6Ont7Y2xvc3VyZX19 +Pjo6aDc4MDU3N2ZmMDBlZTc3MWSUJFY8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFz +IHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcD46OmVuZDo6aDU3MjAxZTNkZDk2NjFjMWQuMZUklgJj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVzdWx0 +OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lv +bnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3VyZX19 +OjpEZXZpY2VSZXN1bHQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4sZnV0dXJl +c191dGlsOjphYm9ydGFibGU6OkFib3J0ZWQ+Pjo6aDEyODU3YzFkM2FlYjIwODIuMZYkMDwmVCBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDc5OGYxM2VlOWQ5ODRlNZckMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2QyMDQwMzA1NjZiODkzYpgkMDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoZDE4NWZjODIzYWY1ZGM0ZpkkSWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTx2b2RvemVtYWM6OkxpYm9sbVBpY2tsZUVycm9yPjo6aDEzZmQ2ZWQ3MTY3MmM3YTiaJFtjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8W21hdHJpeF9zZGtfY3J5cHRvOjpyZXF1ZXN0czo6T3V0Z29p +bmdSZXF1ZXN0XT46Omg3ZGJiNzk1NmQ3MGFiYzA1myRWPHNlcmRlX2pzb246OnNlcjo6Q29tcG91 +bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+OjplbmQ6Omg1NzIwMWUzZGQ5NjYx +YzFkLjKcJBZfX3diZ19kZXZpY2VrZXlpZF9mcmVlnSSAATxtYXRyaXhfc2RrX2NyeXB0b193YXNt +Ojp2b2RvemVtYWM6OkVkMjU1MTlQdWJsaWNLZXkgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0 +cmFpdHM6OkZyb21XYXNtQWJpPjo6ZnJvbV9hYmk6OmhkMzhhOGJlN2Y5ZDYxNDY1niQwPCZUIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0Y2I3ODc3ODNhNWNhNDE4nyRfY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlv +blN0b3JlPjo6aDg2NjEzMjUwYzM2MWUyMWWgJIcBPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnN0 +b3JlOjpTdG9yZUhhbmRsZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6SW50 +b0NyeXB0b1N0b3JlPjo6aW50b19jcnlwdG9fc3RvcmU6OmgzYTg0MWZjMGI3YmUyOGZhoSQbX193 +YmdfcmVoeWRyYXRlZGRldmljZV9mcmVloiQQdXNlcmRldmljZXNfa2V5c6MkVjxzZXJkZV9qc29u +OjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwPjo6ZW5kOjpo +NTcyMDFlM2RkOTY2MWMxZC4zpCR3PGZ1dHVyZXNfdXRpbDo6Zm5zOjpNYXBFcnJGbjxGPiBhcyBm +dXR1cmVzX3V0aWw6OmZuczo6Rm5PbmNlMTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+Pj46OmNh +bGxfb25jZTo6aDM0OTI4Yjg2MDZjNGY2ODalJDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDJjYTM5YmM5NzE1YTk4NDimJDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDVi +N2E3N2EyOGU5MTIyZmGnJDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDk3MDVkNzcy +MDFjYWRiMWSoJDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZiNDUyODVmODNkMmY5 +YzepJJABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNp +Z25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6Z2V0X3B1YmxpY19pZGVudGl0eV9k +aWZmOjp7e2Nsb3N1cmV9fT46Omg2MDc4ZGFhMDFkODJjYWM1qiRWPHNlcmRlX2pzb246OnNlcjo6 +Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+OjplbmQ6Omg1NzIwMWUz +ZGQ5NjYxYzFkLjSrJD13YXNtX2JpbmRnZW46OlVud3JhcFRocm93RXh0Ojp1bndyYXBfdGhyb3c6 +OmgyMzE4Nzc4OTNhNjMwMTIzrCQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkMGZk +NzdjYjgyYTNjZWYxrSRLY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6TGlib2xt +UGlja2xlRXJyb3I+OjpoMTNmZDZlZDcxNjcyYzdhOC4xriS3AWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTw8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRv +U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6 +bG9hZF9iYWNrdXBfa2V5czo6e3tjbG9zdXJlfX0+OjpoY2JmOWNiNDgzYjlhMzNiYa8kuQFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6 +OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpDcnlwdG9TdG9yZT46OmxvYWRfdHJhY2tlZF91c2Vyczo6e3tjbG9zdXJlfX0+OjpoNzg1ZDVi +ZWMxMTk3ZDJhOLAkXGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +b2xtOjpzZXNzaW9uOjpQaWNrbGVkU2Vzc2lvbj46OmhkYzFiYTRlYzYxMTQ0YTI3sSRUPHNlcmRl +X2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+Ojpl +bmQ6Omg0OTkxNWFmYWM0Y2Y3ZTAzsiRUPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBh +cyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTZXE+OjplbmQ6OmhiMjY5M2FhMTBiNWUyYjE2syQ7YWxs +b2M6OnN5bmM6OkFyYzxUPjo6YWxsb2NhdGVfZm9yX2xheW91dDo6aDg1OTAyODgzNzRlZmFlYzC0 +JG48c2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6Ok9iamVjdFNlcmlhbGl6ZXIgYXMgc2VyZGU6OnNl +cjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXplX2ZpZWxkOjpoYjNiNDgyMGM0N2U0ZjU3Y7Uk +bjxzZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6T2JqZWN0U2VyaWFsaXplciBhcyBzZXJkZTo6c2Vy +OjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6OmhjNDM0ZTVjNDE1NGM0YjgxtiQt +YWxsb2M6OnZlYzo6VmVjPFQsQT46OnB1c2g6OmgzZmUxMWQzZWY3OGI2YzcwtyRWPHNlcmRlX2pz +b246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA+OjplbmQ6 +Omg0OTkxNWFmYWM0Y2Y3ZTAzLjG4JHBpbmRleGVkX2RiX2Z1dHVyZXM6OnJlcXVlc3Q6OmZ1dHVy +ZXM6OmlkYl9yZXF1ZXN0X2Z1dHVyZTo6Y3JlYXRlX3N1Y2Nlc3NfY2xvc3VyZTo6e3tjbG9zdXJl +fX06Omg4ZjNmYTU1ZTQzM2ZkNzQ2uSRlaW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfdHJhbnNhY3Rp +b246OmlkYl90cmFuc2FjdGlvbl9saXN0ZW5lcnM6OnRyeV9nZXRfcmVzdWx0X3JlZjo6aGRmNjJk +Y2Q2ZDQ1NGExZTW6JFZhbGxvYzo6dmVjOjpzcGxpY2U6OjxpbXBsIGFsbG9jOjp2ZWM6OmRyYWlu +OjpEcmFpbjxULEE+Pjo6bW92ZV90YWlsOjpoZDUyYjY4YWIwYTQ0YjdhOLskYzxhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6 +OkRyb3A+Ojpkcm9wOjpoMjhmMDJmYjdmNDE5NzBmZLwkYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9w +OjpoZmM1Yzg5YmViMjk0Y2YyNb0kYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6Oklu +dG9JdGVyPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMWEyMjdhZDU2 +OTdhOTQ5NL4kYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixB +PiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMjVlZjFjYjNmNGFiOTg2Yb8kYzxh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjpv +cHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYTRhZmViNzNjYmEzMjU2YsAkVjxzZXJkZV9qc29uOjpz +ZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwPjo6ZW5kOjpoMTA0 +NWMwNWEyY2IzMmZiZi4ywSQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwYTZmMmRk +ZTg1OGJiYmQ4wiRUPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2Vy +OjpTZXJpYWxpemVTZXE+OjplbmQ6Omg0MzUxY2ZlZmYyNmNjOTdlwyQwPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6Omg0NWE2Mjk0ZGFiOTc5ZDllxCQwPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg1YTA1NzEwYTAxNDZjNjQyxSQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6Omg5NmZjNDgyOTEzOTI5MmZmxiQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omhj +Y2Q0NDVjNzNhMjM0NDVhxyRfY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlvblN0b3JlPjo6aDgzNDg4NjVhMmZhMDQ4OGXI +JDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI1MmY3NzRiMzE5ODRmMDjJJDA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI3MjJhOTNlM2EwMWY1NDDKJDA8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNkMzE0MGY4ZjVjMGZlZDbLJDA8JlQgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aGNiMjI1MTMxOGQzNjVkYzDMJFY8c2VyZGVfanNvbjo6c2VyOjpDb21w +b3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcD46OmVuZDo6aDEwNDVjMDVhMmNi +MzJmYmYuM80kMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTljNjlmMzI3YzFhNDY1 +MM4kMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjYwMjNiNTFhY2M5ZWY3Ys8kMDwm +VCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoODYzNmQwZDJhZTI5ZDNlN9AkMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoODk5OGIzNDFmMmNiMzJiMtEkMDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoZDQ0YzY4NjA4NTE5ODI3NNIkMDwmVCBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoZWNhNmRhMTg1MGFjYTBjM9MkkgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OlNhc1N0YXRl +PG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OkNhbmNlbGxlZD4+OjpoNDAzMzI3NWFl +MDRiOTE3ZdQkMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2M5YTljZWE0NGViZWQ3 +MdUkMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNmJhMDlkODdmNzA3ZjZkYdYkdDxt +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6QWNjZXB0ZWRQ +cm90b2NvbHMgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyYzU1NTc2MmNmNTM3YTdi +1yRhbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNlcklk +ZW50aXR5Ojppc19kZXZpY2Vfc2lnbmVkOjpoYmJiOWZkMGU2NjFkNzk3N9gkYWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRp +b25TdG9yZT46Omg4MzQ4ODY1YTJmYTA0ODhlLjHZJGpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZpY2F0aW9uTWFj +aGluZT46Omg1Y2I1ZWQ5ZmEzNWQ2YTAw2iQ1Y29yZTo6dGFzazo6d2FrZTo6V2FrZXI6OndpbGxf +d2FrZTo6aDk1ZDAyZjBiMDJmOTk4MzfbJEttYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9u +OjpzYXM6OlNhczo6c3RhcnRfaW5fcm9vbTo6aGJhZWE5NDQwYWFiNWJkNWbcJDA8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA4YjUyN2ZjNTAzYmMwZjjdJChhbGxvYzo6Zm10Ojpmb3Jt +YXQ6OmhiOTAwZjMwODdiNzc2Yjk4LjEy3iRGPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6 +OmNsb25lOjpDbG9uZT46OmNsb25lOjpoZDE3NzIxNThhZDRhZjRjZd8kQnRyYWNpbmdfc3Vic2Ny +aWJlcjo6Zm10Ojpmb3JtYXQ6OldyaXRlcjo6ZGltbWVkOjpoYmE3NTRmNmJmMGZmNjdkZuAkQnRy +YWNpbmdfc3Vic2NyaWJlcjo6Zm10Ojpmb3JtYXQ6OldyaXRlcjo6aXRhbGljOjpoYjI4YmM3MTQz +N2I0MWNiMeEkMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDRiZDMwYTE5ZjE1OWMx +N+IkUHdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fSWRiT2JqZWN0U3RvcmU6OklkYk9iamVjdFN0b3Jl +OjpkZWxldGU6Omg5NTFhZDNkZmY4OGRjZWJl4yRNd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJP +YmplY3RTdG9yZTo6SWRiT2JqZWN0U3RvcmU6OmdldDo6aGYzNDI1MzYyMTk1NzEyMmPkJEl3ZWJf +c3lzOjpmZWF0dXJlczo6Z2VuX0lkYktleVJhbmdlOjpJZGJLZXlSYW5nZTo6Ym91bmQ6OmhkOTli +NDJlY2YzMzhkN2U15SRUPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6 +c2VyOjpTZXJpYWxpemVNYXA+OjplbmQ6OmhmZWY2MjBlMTc3OTQwNTQz5iRUPHNlcmRlX2pzb246 +OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTZXE+OjplbmQ6Omg2 +MTk5YmU0ODVjYTU2NzRl5yRBPHUzMiBhcyBtYXRyaXhfcGlja2xlOjplbmNvZGU6OkVuY29kZT46 +OmVuY29kZTo6aDRkMzgwOWYyYjhjODJkYTLoJEd0b2tpbzo6c3luYzo6YmF0Y2hfc2VtYXBob3Jl +OjpXYWl0ZXI6OmFzc2lnbl9wZXJtaXRzOjpoNGVjMDE4Y2QyM2QxZmQ3MukkTXJ1bWFfY29tbW9u +OjppZGVudGlmaWVyczo6Y2xpZW50X3NlY3JldDo6Q2xpZW50U2VjcmV0OjpuZXc6Omg3MmI3NDQw +MTZkYTA2NzVi6iQwc2VyZGVfanNvbjo6cmVhZDo6cGVla19vcl9lb2Y6Omg1ODFiYjFlMDdhZGI3 +Y2U36yRjPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8SyxWLEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhkZmZiOTQxM2I2ZDU3NThm7CRWPGpzX3N5 +czo6QXJyYXlJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6 +bmV4dDo6aDhmMmZiZTFkNGVhZjQzMmHtJLQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjplbmNyeXB0 +PHJ1bWFfZXZlbnRzOjpkdW1teTo6VG9EZXZpY2VEdW1teUV2ZW50Q29udGVudD46Ont7Y2xvc3Vy +ZX19Ojp7e2Nsb3N1cmV9fT46Omg1NDg0YzA1YzM0OTYwZjA37iSGAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNo +aW5lOjpyZWNlaXZlX3N1cHBvcnRlZF9rZXlzOjp7e2Nsb3N1cmV9fT46Omg5ZDFlMGQ0MzQ3OWFm +NzM17yRRY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6 +RXZlbnRFcnJvcj46OmhiMGYwZmQzNWU1MDEzYzBk8CSeAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6bWFj +aGluZTo6T2xtTWFjaGluZTo6cmVjZWl2ZV90b19kZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19Pj4+ +OjpoN2NlYmZlMmFmNTJmZWY1NC4y8SRJPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6 +OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMmQwMTMzYTI3MDU1YWIxOfIkFW9sbW1hY2hpbmVfaW5p +dGlhbGl6ZfMkNjxUIGFzIGNvcmU6OmNvbnZlcnQ6OkludG88VT4+OjppbnRvOjpoNDUwMWM2MDcy +NTkwYTUyNvQkc2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFj +aGluZTo6T2xtTWFjaGluZTo6c2V0X3Jvb21fc2V0dGluZ3M6Ont7Y2xvc3VyZX19Pjo6aDUxZGQz +ZGFlMDVhYjgyOWT1JFNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OmVycm9yOjpFdmVudEVycm9yPjo6aGIwZjBmZDM1ZTUwMTNjMGQuMvYkNWNvcmU6OnJlc3VsdDo6 +UmVzdWx0PFQsRT46Om1hcF9lcnI6OmhiZGZhOGRiMjQyMjRhOGRj9yQ6cnVtYV9jb21tb246OnNl +cmRlOjpmcm9tX3Jhd19qc29uX3ZhbHVlOjpoYTQ4M2ZhYjY5ODJmODhiMPgkN3dhc21fYmluZGdl +bjo6Y2FzdDo6SnNDYXN0OjpkeW5faW50bzo6aDkwOGEzMWZkMjUyYTIwM2L5JDVjb3JlOjpyZXN1 +bHQ6OlJlc3VsdDxULEU+OjptYXBfZXJyOjpoMjNjM2YxNzEyOWZhNWNhZPokkAF3YXNtX2JpbmRn +ZW46OmNvbnZlcnQ6OmltcGxzOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6 +UmV0dXJuV2FzbUFiaSBmb3IgY29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPj46OnJldHVybl9hYmk6 +OmhjNTVkZDkyMzI4YWM3NGQxLjH7JBFjYW5jZWxpbmZvX3JlYXNvbvwkEWVtb2ppX2Rlc2NyaXB0 +aW9u/SQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiZDg4ZmE0YmJmYzI2MWFh/iQ1 +Y29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPjo6bWFwX2Vycjo6aGM0YzZhODBhMDI5NzQ1ZDT/JDA8 +JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFhMTA4ODZiOTNjMWQxYTiAJTA8JlQgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDc1ODNjMzM3YjcxZmQ2MjOBJTA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDlkMWY0NDUzZjE2ZDNiZDWCJTA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aGMxNTliNGFhZTYyZjNhYmWDJWQ8c2VyZGU6OmRlOjp2YWx1ZTo6TWFwRGVz +ZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6 +OmgxNjVhOTE5NzBhOWQyNzk2hCUzd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlOjphc19zdHJpbmc6Omhm +NmU3ZWZlYmVmNDcwZTFjhSVKbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmF0b21pY19i +b29sX2Rlc2VyaWFsaXplcjo6aGM5ZWE2MWY5MWRkMzI3NjWGJUptYXRyaXhfc2RrX2NyeXB0bzo6 +aWRlbnRpdGllczo6YXRvbWljX2Jvb2xfZGVzZXJpYWxpemVyOjpoZmE4NzUxZjA1NGQ5OGMzZIcl +ogE8aW5kZXhlZF9kYl9mdXR1cmVzOjpyZXF1ZXN0OjpmdXR1cmVzOjpjdXJzb3I6OmlkYl9jdXJz +b3Jfd2l0aF92YWx1ZV9mdXR1cmU6OklkYkN1cnNvcldpdGhWYWx1ZUZ1dHVyZTxUPiBhcyBjb3Jl +OjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aDc4ZjcxMTk2ZmFjODZiNWGIJURzZXJk +ZTo6ZGU6OnZhbHVlOjpNYXBEZXNlcmlhbGl6ZXI8SSxFPjo6bmV4dF9wYWlyOjpoMzE1ZmYyOWZi +NzQxYjk2MIklPXNlcmRlX2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46Om5leHRfY2hhcjo6aDY5 +NDI1NzA0YzBkYmEwMjOKJTVybXA6OmRlY29kZTo6Um1wUmVhZDo6cmVhZF9kYXRhX3U4OjpoN2Zi +ZGY1NzdmOTdlOTRmMYslRjxhbGxvYzo6cmM6OlJjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aGQ3MzVhZjAyMzI4NDA1MGOMJTtpbmRleGVkX2RiX2Z1dHVyZXM6OmludGVy +bmFsX3V0aWxzOjp3YWtlOjpoMDEwOWNjMzNhNjI3OGM4Mo0lNGNvcmU6OnJlc3VsdDo6UmVzdWx0 +PFQsRT46OmV4cGVjdDo6aDY3NDA2YWUwMTRlNGFjMjeOJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDZkM2MwODZmNWFlZDUwYjmPJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDkwN2M5NWI0NDNiYmU2NmaQJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE0 +MTc1YThlMzU4NjhmNTWRJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGFlNmRhYmUz +MWVmMDM3NTGSJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQyZGIwYzNiOTE2NDkw +ZjiTJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGVmMzhkNWYwM2IwZjI3OWSUJUNj +b3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6YW5kX3RoZW5fb3JfY2xlYXI6Omg2YmU1Mzg1 +N2U0YzgwYWM2lSUzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg5ODg5OGExYzk1 +OTc0YmVjliU2PFQgYXMgY29yZTo6Y29udmVydDo6SW50bzxVPj46OmludG86OmhmMTlkZTc5NWRj +NDJhYTY0lyVFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmgxNWY4NDlkMDY1MzY2ZWZlmCU/dG9raW86OnN5bmM6OmJyb2FkY2FzdDo6U2VuZGVyPFQ+ +OjpzdWJzY3JpYmU6OmgxMWJjN2I2ZDljZTljYTJkmSU4c3RkOjp0aHJlYWQ6OmxvY2FsOjpMb2Nh +bEtleTxUPjo6d2l0aDo6aDMxMTM2ZWNkMzdhYzA3NzOaJZYBPGNvcmU6OnJlc3VsdDo6UmVzdWx0 +PFQsRj4gYXMgY29yZTo6b3BzOjp0cnlfdHJhaXQ6OkZyb21SZXNpZHVhbDxjb3JlOjpyZXN1bHQ6 +OlJlc3VsdDxjb3JlOjpjb252ZXJ0OjpJbmZhbGxpYmxlLEU+Pj46OmZyb21fcmVzaWR1YWw6Omg2 +MTNkZDVjZGNiMGEyODZmmyVEPGFsbG9jOjp2ZWM6OlZlYzxaPiBhcyB6ZXJvaXplOjpaZXJvaXpl +Pjo6emVyb2l6ZTo6aDMyYmQ2Nzk4OTVmYTg2OGWcJUJ2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6 +QWNjb3VudDo6aWRlbnRpdHlfa2V5czo6aGViNDY4YjQ2OWE2OThlOTCdJTA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aGZiNWUwZjA3ZThlODRlMTCeJTA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDVhOTBmMDViMGExOWFkNGWfJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDNkZmE5NWZhYjFkMmNjNTmgJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDVkOTQ2NDU3NTdhYjRiYTahJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNlOTY4 +ZWI1M2FhNDBmYTGiJTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQ3NjViNDE2MjUw +OGVkOWWjJSpqc19zeXM6OkZ1bmN0aW9uOjpjYWxsMjo6aGMxZmQ1MGI3ZjkzOTZmOWKkJb4BYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6ZGVhbGxvY2F0ZV9hbmRfYXNjZW5kOjpo +MDAwNjAyMGExY2EzZWJmOaUlvgFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2Rl +UmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Ojpk +ZWFsbG9jYXRlX2FuZF9hc2NlbmQ6OmgwMGEwMTE4NDI4NDhkN2U5piW+AWFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpMZWFmT3JJbnRlcm5hbD46OmRlYWxsb2NhdGVfYW5kX2FzY2VuZDo6aDA0ZDcyNzU0ZGYw +MmUyNGGnJb4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6ZGVhbGxvY2F0ZV9h +bmRfYXNjZW5kOjpoMTM4NzQxM2I5MzA4ZjQ3NKglvgFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +RHlpbmcsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9y +SW50ZXJuYWw+OjpkZWFsbG9jYXRlX2FuZF9hc2NlbmQ6OmgxM2I3ZDljMzYzZTNjODZkqSW+AWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OmRlYWxsb2NhdGVfYW5kX2FzY2VuZDo6 +aDMwMGRjZGIwNzAxN2NlNDaqJb4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9k +ZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6 +ZGVhbGxvY2F0ZV9hbmRfYXNjZW5kOjpoM2I3NmFkMzRlYzViYzkzM6slvgFhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpkZWFsbG9jYXRlX2FuZF9hc2NlbmQ6Omg0ZGE4ZWVkYTZl +OTM3ZTM1rCW+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OmRlYWxsb2NhdGVf +YW5kX2FzY2VuZDo6aDU0OGFhZWYxOWRjZGY2M2WtJb4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZP +ckludGVybmFsPjo6ZGVhbGxvY2F0ZV9hbmRfYXNjZW5kOjpoNzU4MmJjM2E3OTcwNmQ1Oa4lvgFh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpkZWFsbG9jYXRlX2FuZF9hc2NlbmQ6 +Omg3OGQ5MmEyZDVlY2I2ZjBhryW+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYs +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46 +OmRlYWxsb2NhdGVfYW5kX2FzY2VuZDo6aDdhZGFlOTY4MjY0NjVlZDCwJb4BYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6OkxlYWZPckludGVybmFsPjo6ZGVhbGxvY2F0ZV9hbmRfYXNjZW5kOjpoYTA5ODgwYjE5 +NDVjZWVjOLElvgFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpkZWFsbG9jYXRl +X2FuZF9hc2NlbmQ6OmhiNzg2ZGEyNGYyNjRmZjZksiW+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpEeWluZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFm +T3JJbnRlcm5hbD46OmRlYWxsb2NhdGVfYW5kX2FzY2VuZDo6aGM0YjMxNmZlMDVhN2ZiYTSzJb4B +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6ZGVhbGxvY2F0ZV9hbmRfYXNjZW5k +OjpoY2ExNjFmNGZiZWFmMjVmYbQlQGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OnNs +aWNlX2luc2VydDo6aDQwYjFkYjk3OWUwNzQ5NTS1JUBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpzbGljZV9pbnNlcnQ6Omg4ZmY5YTY2YTRiZDQ3MTVitiVmY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlJvb21FbmNyeXB0ZWRFdmVu +dENvbnRlbnQ+OjpoYmU5ZTg2NTVhYmJmMmJjYS40tyVpY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleTo6Um9vbUtleUNvbnRl +bnQ+OjpoOTFiOGVmNDhiOGY4YWQ1ZS4xuCWCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1h +X2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OnN0aWNr +ZXI6OlN0aWNrZXJFdmVudENvbnRlbnQ+Pjo6aGQ2YjY3MWE3NGRiNjIxZjG5JYQBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25l +ZDxydW1hX2V2ZW50czo6cmVhY3Rpb246OlJlYWN0aW9uRXZlbnRDb250ZW50Pj46OmgzYjBkYWIy +M2MxNTZkMmUwuiWKAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWdu +ZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6OmFuc3dlcjo6Q2FsbEFu +c3dlckV2ZW50Q29udGVudD4+OjpoZjFkYzQ2NDUzN2JhOTBmM7sligFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFf +ZXZlbnRzOjpjYWxsOjpoYW5ndXA6OkNhbGxIYW5ndXBFdmVudENvbnRlbnQ+Pjo6aDBlYmYxMjYx +Nzg2MjZiZWG8JYoBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25l +ZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6aW52aXRlOjpDYWxsSW52 +aXRlRXZlbnRDb250ZW50Pj46OmgyOGJkNTAxYjFhN2FmMWVivSWKAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9l +dmVudHM6OmNhbGw6OnJlamVjdDo6Q2FsbFJlamVjdEV2ZW50Q29udGVudD4+OjpoNTk4YWYyYzNk +NzIxODJhMb4ljAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVk +OjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpfY3VzdG9tOjpDdXN0b21NZXNzYWdl +TGlrZUV2ZW50Q29udGVudD4+OjpoNWQ2MWNlYzc2NzFlN2E4Nr8ljAFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFf +ZXZlbnRzOjpyb29tOjptZXNzYWdlOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudD4+OjpoZTgxOGI1 +NThhZmMzYjBlY8AlkAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2ln +bmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpjYWxsOjpuZWdvdGlhdGU6OkNh +bGxOZWdvdGlhdGVFdmVudENvbnRlbnQ+Pjo6aGUzZmI3ZTc4NTBhOTYxNDfBJZABY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25l +ZDxydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpSb29tRW5jcnlwdGVkRXZlbnRDb250ZW50 +Pj46OmhkM2M5OTU5OGE2YzA4ZjJiwiWQAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2 +ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OnJvb206OnJl +ZGFjdGlvbjo6Um9vbVJlZGFjdGlvbkV2ZW50Q29udGVudD4+OjpoYzEwZThmYzhkOWYyNTI0M8Ml +kgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdl +TGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpjYWxsOjpjYW5kaWRhdGVzOjpDYWxsQ2FuZGlkYXRl +c0V2ZW50Q29udGVudD4+OjpoZTU3YTFlNTI5ZTE4YzM5NsQllwFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZl +bnRzOjpjYWxsOjpzZWxlY3RfYW5zd2VyOjpDYWxsU2VsZWN0QW5zd2VyRXZlbnRDb250ZW50Pj46 +OmhkNzFiOGVmNzIyMmE2MGY5xSWcAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50 +czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZp +Y2F0aW9uOjprZXk6OktleVZlcmlmaWNhdGlvbktleUV2ZW50Q29udGVudD4+OjpoOGY2NjZlOTA2 +MGQwM2ZmN8YlnAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVk +OjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6bWFj +OjpLZXlWZXJpZmljYXRpb25NYWNFdmVudENvbnRlbnQ+Pjo6aDA0YTM0NGVmMjlkYjhkOTXHJZ4B +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxp +a2VVbnNpZ25lZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmRvbmU6OktleVZlcmlm +aWNhdGlvbkRvbmVFdmVudENvbnRlbnQ+Pjo6aDNlMjkwZjlmNTM3ZTRiYjPIJaABY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25l +ZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnJlYWR5OjpLZXlWZXJpZmljYXRpb25S +ZWFkeUV2ZW50Q29udGVudD4+OjpoMjI0MjFiOGEzODNjZmE0M8kloAFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFf +ZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6OktleVZlcmlmaWNhdGlvblN0YXJ0RXZl +bnRDb250ZW50Pj46OmgwYjVlMWEyYTkwYzMwYTE0yiWiAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6 +OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OktleVZlcmlmaWNhdGlvbkFjY2VwdEV2ZW50Q29u +dGVudD4+OjpoODg1ZTUwYWMwZWRhNDNjNsslogFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVt +YV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6 +OnZlcmlmaWNhdGlvbjo6Y2FuY2VsOjpLZXlWZXJpZmljYXRpb25DYW5jZWxFdmVudENvbnRlbnQ+ +Pjo6aDQ2YzEzNTJhMmI1ZDVmZmHMJYwBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5hZ2VyOjpJZGVudGl0eU1hbmFnZXI6OnVwZGF0ZV9v +cl9jcmVhdGVfaWRlbnRpdHk6Ont7Y2xvc3VyZX19Pjo6aDYwMmFhYWNiOTcyMTEzYjjNJWFtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6b2xtX3YxOjpBbnlEZWNyeXB0ZWRPbG1FdmVu +dDo6cmVjaXBpZW50X2tleXM6OmgwODFhOTY0OWZhN2IyMWU1ziVXbWF0cml4X3Nka19jcnlwdG86 +OnR5cGVzOjpldmVudHM6Om9sbV92MTo6QW55RGVjcnlwdGVkT2xtRXZlbnQ6OmtleXM6OmgxNzI5 +NTAwZTdkNGYzZmZmzyWsAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxh +bGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0 +czo6VmVyaWZpY2F0aW9uUmVxdWVzdDo6cmVjZWl2ZV9zdGFydDo6e3tjbG9zdXJlfX0+Pj46Omhm +NGY4NmRjODFkNzZiOGVlLjTQJboBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvOjpvbG06OnNlc3Npb246OlNlc3Npb246OmVuY3J5cHQ8bWF0cml4X3Nka19jcnlwdG86 +OnR5cGVzOjpldmVudHM6OmZvcndhcmRlZF9yb29tX2tleTo6Rm9yd2FyZGVkUm9vbUtleUNvbnRl +bnQ+Ojp7e2Nsb3N1cmV9fT46Omg2YzE0MTVmMWYzNDhjOTg50SVpY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleTo6Um9vbUtl +eUNvbnRlbnQ+OjpoOTFiOGVmNDhiOGY4YWQ1ZS4y0iWnAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uOjplbmNyeXB0PG1hdHJp +eF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleTo6Um9vbUtleUNvbnRlbnQ+Ojp7 +e2Nsb3N1cmV9fT46Omg0MTM4N2QzMDMyNjE4MTA40yWIAXdhc21fYmluZGdlbjo6Y29udmVydDo6 +aW1wbHM6OjxpbXBsIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpJbnRvV2FzbUFiaSBm +b3IgY29yZTo6b3B0aW9uOjpPcHRpb248VD4+OjppbnRvX2FiaTo6aGJkMmI0MzY4NWU0NWQ1YTjU +JUg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6 +aDNiNTFjYjkzYmIyMTBiMTjVJUthbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVl +TWFwPEssVixBPjo6Z2V0X211dDo6aDhkOWQ0NGQ0NWVkY2Y2ZDTWJUBfX3diZ19nZXRfY3Jvc3Nz +aWduaW5nYm9vdHN0cmFwcmVxdWVzdHNfdXBsb2FkU2lnbmluZ0tleXNSZXF1ZXN01yWWATxtYXRy +aXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFz +IG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNhdmVfcGVu +ZGluZ19jaGFuZ2VzOjpoMjYyM2QwMGVhZjg3ZTBjM9gllgE8bWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpzYXZlX3BlbmRpbmdfY2hhbmdlczo6aGZk +ZDMzNWFiMmFlNWM5MWbZJd8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6 +UmVzdWx0PG1hdHJpeF9zZGtfY3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6Omdyb3VwX3Nlc3Npb25z +OjpHcm91cFNlc3Npb25NYW5hZ2VyOjplbmNyeXB0X3Nlc3Npb25fZm9yOjp7e2Nsb3N1cmV9fTo6 +RGV2aWNlUmVzdWx0LG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3I+Pjo6aDljMzlk +MjE4M2UzNzNiN2MuMdolU21hdHJpeF9zZGtfY3J5cHRvX3dhc206OnJlc3BvbnNlczo6RW5jcnlw +dGlvbkluZm86OnNlbmRlcl9kZXZpY2U6OmhkZGE2NjUzMzkyZWYzYjZi2yU/d2FzbV9iaW5kZ2Vu +Ojpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlMV9tdXQ6OmgyNzQ0OWVkNjVmNDU4ZGZk3CXIAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpkZWh5ZHJhdGVk +X2RldmljZXM6OkRlaHlkcmF0ZWREZXZpY2VzOjpyZWh5ZHJhdGU6Ont7Y2xvc3VyZX19OjpfOjpf +X3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfRGVoeWRyYXRlZERldmljZXNfcmVoeWRyYXRlOjp7e2Ns +b3N1cmV9fT46OmhhNTNiZTg0ZDYwN2VjZTQ43SW5AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50 +PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlRvRGV2 +aWNlRW5jcnlwdGVkRXZlbnRDb250ZW50Pj46Omg4OWVhNTVmMmI5ZmRjNzY13iWeAmNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTx3YXNtX2JpbmRnZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U8 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVxdWVzdF9taXNz +aW5nX3NlY3JldHNfaWZfbmVlZGVkOjp7e2Nsb3N1cmV9fTo6Xzo6X193YXNtX2JpbmRnZW5fZ2Vu +ZXJhdGVkX09sbU1hY2hpbmVfcmVxdWVzdE1pc3NpbmdTZWNyZXRzSWZOZWVkZWQ6Ont7Y2xvc3Vy +ZX19Pjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDNhNWRlNjUyZjM4YTgyNmXfJWA8c2Vy +ZGVfanNvbjo6dmFsdWU6OnNlcjo6U2VyaWFsaXplciBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVy +Pjo6c2VyaWFsaXplX3N0cjo6aGU5NmYxNWUyZGE3ODdmNDbgJWljb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5OjpSb29tS2V5 +Q29udGVudD46Omg5MWI4ZWY0OGI4ZjhhZDVlLjThJakBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNlc3Npb246OlNlc3Npb246OmVuY3J5cHQ8bWF0cml4 +X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5OjpSb29tS2V5Q29udGVudD46Ont7 +Y2xvc3VyZX19Pjo6aDQxMzg3ZDMwMzI2MTgxMDguMeIlhAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRz +OjpzdGlja2VyOjpTdGlja2VyRXZlbnRDb250ZW50Pj46OmhkNmI2NzFhNzRkYjYyMWYxLjHjJYYB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxp +a2VVbnNpZ25lZDxydW1hX2V2ZW50czo6cmVhY3Rpb246OlJlYWN0aW9uRXZlbnRDb250ZW50Pj46 +OmgzYjBkYWIyM2MxNTZkMmUwLjHkJYwBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZl +bnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6YW5z +d2VyOjpDYWxsQW5zd2VyRXZlbnRDb250ZW50Pj46OmhmMWRjNDY0NTM3YmE5MGYzLjHlJYwBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VV +bnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6aGFuZ3VwOjpDYWxsSGFuZ3VwRXZlbnRDb250ZW50 +Pj46OmgwZWJmMTI2MTc4NjI2YmVhLjHmJYwBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFf +ZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6 +aW52aXRlOjpDYWxsSW52aXRlRXZlbnRDb250ZW50Pj46OmgyOGJkNTAxYjFhN2FmMWViLjHnJYwB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxp +a2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6cmVqZWN0OjpDYWxsUmVqZWN0RXZlbnRDb250 +ZW50Pj46Omg1OThhZjJjM2Q3MjE4MmExLjHoJY4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1 +bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6X2N1 +c3RvbTo6Q3VzdG9tTWVzc2FnZUxpa2VFdmVudENvbnRlbnQ+Pjo6aDVkNjFjZWM3NjcxZTdhODYu +MekljgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNz +YWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpSb29tTWVzc2FnZUV2 +ZW50Q29udGVudD4+OjpoZTgxOGI1NThhZmMzYjBlYy4x6iWSAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVu +dHM6OmNhbGw6Om5lZ290aWF0ZTo6Q2FsbE5lZ290aWF0ZUV2ZW50Q29udGVudD4+OjpoZTNmYjdl +Nzg1MGE5NjE0Ny4x6yWSAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5z +aWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6 +Um9vbUVuY3J5cHRlZEV2ZW50Q29udGVudD4+OjpoZDNjOTk1OThhNmMwOGYyYi4x7CWSAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5z +aWduZWQ8cnVtYV9ldmVudHM6OnJvb206OnJlZGFjdGlvbjo6Um9vbVJlZGFjdGlvbkV2ZW50Q29u +dGVudD4+OjpoYzEwZThmYzhkOWYyNTI0My4x7SWUAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNh +bGw6OmNhbmRpZGF0ZXM6OkNhbGxDYW5kaWRhdGVzRXZlbnRDb250ZW50Pj46OmhlNTdhMWU1Mjll +MThjMzk2LjHuJZkBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25l +ZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6c2VsZWN0X2Fuc3dlcjo6 +Q2FsbFNlbGVjdEFuc3dlckV2ZW50Q29udGVudD4+OjpoZDcxYjhlZjcyMjJhNjBmOS4x7yWeAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtl +VW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjprZXk6OktleVZlcmlmaWNh +dGlvbktleUV2ZW50Q29udGVudD4+OjpoOGY2NjZlOTA2MGQwM2ZmNy4x8CWeAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8 +cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjptYWM6OktleVZlcmlmaWNhdGlvbk1hY0V2 +ZW50Q29udGVudD4+OjpoMDRhMzQ0ZWYyOWRiOGQ5NS4x8SWgAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVu +dHM6OmtleTo6dmVyaWZpY2F0aW9uOjpkb25lOjpLZXlWZXJpZmljYXRpb25Eb25lRXZlbnRDb250 +ZW50Pj46OmgzZTI5MGY5ZjUzN2U0YmIzLjHyJaIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1 +bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6a2V5 +Ojp2ZXJpZmljYXRpb246OnJlYWR5OjpLZXlWZXJpZmljYXRpb25SZWFkeUV2ZW50Q29udGVudD4+ +OjpoMjI0MjFiOGEzODNjZmE0My4x8yWiAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2 +ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVy +aWZpY2F0aW9uOjpzdGFydDo6S2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnQ+Pjo6aDBi +NWUxYTJhOTBjMzBhMTQuMfQlpAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6 +OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNh +dGlvbjo6YWNjZXB0OjpLZXlWZXJpZmljYXRpb25BY2NlcHRFdmVudENvbnRlbnQ+Pjo6aDg4NWU1 +MGFjMGVkYTQzYzYuMfUlpAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVu +c2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlv +bjo6Y2FuY2VsOjpLZXlWZXJpZmljYXRpb25DYW5jZWxFdmVudENvbnRlbnQ+Pjo6aDQ2YzEzNTJh +MmI1ZDVmZmEuMfYliAF3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmltcGxzOjo8aW1wbCB3YXNtX2Jp +bmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6RnJvbVdhc21BYmkgZm9yIGNvcmU6Om9wdGlvbjo6T3B0 +aW9uPFQ+Pjo6ZnJvbV9hYmk6OmhkM2NhOTY2NThhOWM3YzIx9yWAAWluZGV4ZWRfZGJfZnV0dXJl +czo6aWRiX2RhdGFiYXNlOjppZGJfdmVyc2lvbl9jaGFuZ2VfZXZlbnQ6OklkYlZlcnNpb25DaGFu +Z2VFdmVudDo6d3JhcF9jYWxsYmFjazo6e3tjbG9zdXJlfX06Omg5ODU3Y2JkN2FmYmRhZGY3+CWA +AWluZGV4ZWRfZGJfZnV0dXJlczo6aWRiX2RhdGFiYXNlOjppZGJfdmVyc2lvbl9jaGFuZ2VfZXZl +bnQ6OklkYlZlcnNpb25DaGFuZ2VFdmVudDo6d3JhcF9jYWxsYmFjazo6e3tjbG9zdXJlfX06Omg5 +YjUyMjYyZjNiNGM2ZTNh+SVUPFQgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OlJl +dHVybldhc21BYmk+OjpyZXR1cm5fYWJpOjpoZWM0N2MwMzViYTJhNWQ1Mi4x+iUTdXNlcmRldmlj +ZXNfZGV2aWNlc/slhAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2ln +bmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpzdGlja2VyOjpTdGlja2VyRXZl +bnRDb250ZW50Pj46OmhkNmI2NzFhNzRkYjYyMWYxLjL8JYYBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50 +czo6cmVhY3Rpb246OlJlYWN0aW9uRXZlbnRDb250ZW50Pj46OmgzYjBkYWIyM2MxNTZkMmUwLjL9 +JYwBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2Fn +ZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6YW5zd2VyOjpDYWxsQW5zd2VyRXZlbnRD +b250ZW50Pj46OmhmMWRjNDY0NTM3YmE5MGYzLjL+JYwBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6 +Y2FsbDo6aGFuZ3VwOjpDYWxsSGFuZ3VwRXZlbnRDb250ZW50Pj46OmgwZWJmMTI2MTc4NjI2YmVh +LjL/JYwBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVz +c2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6aW52aXRlOjpDYWxsSW52aXRlRXZl +bnRDb250ZW50Pj46OmgyOGJkNTAxYjFhN2FmMWViLjKAJowBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50 +czo6Y2FsbDo6cmVqZWN0OjpDYWxsUmVqZWN0RXZlbnRDb250ZW50Pj46Omg1OThhZjJjM2Q3MjE4 +MmExLjKBJo4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6 +TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6X2N1c3RvbTo6Q3VzdG9tTWVzc2FnZUxp +a2VFdmVudENvbnRlbnQ+Pjo6aDVkNjFjZWM3NjcxZTdhODYuMoImjgFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFf +ZXZlbnRzOjpyb29tOjptZXNzYWdlOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudD4+OjpoZTgxOGI1 +NThhZmMzYjBlYy4ygyaSAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5z +aWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6Om5lZ290aWF0ZTo6 +Q2FsbE5lZ290aWF0ZUV2ZW50Q29udGVudD4+OjpoZTNmYjdlNzg1MGE5NjE0Ny4yhCaSAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5z +aWduZWQ8cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Um9vbUVuY3J5cHRlZEV2ZW50Q29u +dGVudD4+OjpoZDNjOTk1OThhNmMwOGYyYi4yhSaSAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OnJv +b206OnJlZGFjdGlvbjo6Um9vbVJlZGFjdGlvbkV2ZW50Q29udGVudD4+OjpoYzEwZThmYzhkOWYy +NTI0My4yhiaUAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6 +Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6OmNhbmRpZGF0ZXM6OkNhbGxD +YW5kaWRhdGVzRXZlbnRDb250ZW50Pj46OmhlNTdhMWU1MjllMThjMzk2LjKHJpkBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25l +ZDxydW1hX2V2ZW50czo6Y2FsbDo6c2VsZWN0X2Fuc3dlcjo6Q2FsbFNlbGVjdEFuc3dlckV2ZW50 +Q29udGVudD4+OjpoZDcxYjhlZjcyMjJhNjBmOS4yiCaeAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6 +OmtleTo6dmVyaWZpY2F0aW9uOjprZXk6OktleVZlcmlmaWNhdGlvbktleUV2ZW50Q29udGVudD4+ +OjpoOGY2NjZlOTA2MGQwM2ZmNy4yiSaeAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2 +ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVy +aWZpY2F0aW9uOjptYWM6OktleVZlcmlmaWNhdGlvbk1hY0V2ZW50Q29udGVudD4+OjpoMDRhMzQ0 +ZWYyOWRiOGQ5NS4yiiagAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5z +aWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9u +Ojpkb25lOjpLZXlWZXJpZmljYXRpb25Eb25lRXZlbnRDb250ZW50Pj46OmgzZTI5MGY5ZjUzN2U0 +YmIzLjKLJqIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6 +TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnJlYWR5 +OjpLZXlWZXJpZmljYXRpb25SZWFkeUV2ZW50Q29udGVudD4+OjpoMjI0MjFiOGEzODNjZmE0My4y +jCaiAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3Nh +Z2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6S2V5 +VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnQ+Pjo6aDBiNWUxYTJhOTBjMzBhMTQuMo0mpAFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlr +ZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6YWNjZXB0OjpLZXlWZXJp +ZmljYXRpb25BY2NlcHRFdmVudENvbnRlbnQ+Pjo6aDg4NWU1MGFjMGVkYTQzYzYuMo4mpAFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVu +c2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6Y2FuY2VsOjpLZXlWZXJpZmlj +YXRpb25DYW5jZWxFdmVudENvbnRlbnQ+Pjo6aDQ2YzEzNTJhMmI1ZDVmZmEuMo8mhAFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2ln +bmVkPHJ1bWFfZXZlbnRzOjpzdGlja2VyOjpTdGlja2VyRXZlbnRDb250ZW50Pj46OmhkNmI2NzFh +NzRkYjYyMWYxLjOQJo4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNp +Z25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6Um9v +bU1lc3NhZ2VFdmVudENvbnRlbnQ+Pjo6aGU4MThiNTU4YWZjM2IwZWMuM5EmkgFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVk +PHJ1bWFfZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlJvb21FbmNyeXB0ZWRFdmVudENvbnRlbnQ+ +Pjo6aGQzYzk5NTk4YTZjMDhmMmIuM5ImhgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9l +dmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpyZWFjdGlv +bjo6UmVhY3Rpb25FdmVudENvbnRlbnQ+Pjo6aDNiMGRhYjIzYzE1NmQyZTAuM5MmoAFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2ln +bmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6ZG9uZTo6S2V5VmVyaWZpY2F0aW9u +RG9uZUV2ZW50Q29udGVudD4+OjpoM2UyOTBmOWY1MzdlNGJiMy4zlCaeAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVt +YV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjptYWM6OktleVZlcmlmaWNhdGlvbk1hY0V2ZW50 +Q29udGVudD4+OjpoMDRhMzQ0ZWYyOWRiOGQ5NS4zlSaeAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6 +OmtleTo6dmVyaWZpY2F0aW9uOjprZXk6OktleVZlcmlmaWNhdGlvbktleUV2ZW50Q29udGVudD4+ +OjpoOGY2NjZlOTA2MGQwM2ZmNy4zliakAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2 +ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVy +aWZpY2F0aW9uOjphY2NlcHQ6OktleVZlcmlmaWNhdGlvbkFjY2VwdEV2ZW50Q29udGVudD4+Ojpo +ODg1ZTUwYWMwZWRhNDNjNi4zlyakAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50 +czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZp +Y2F0aW9uOjpjYW5jZWw6OktleVZlcmlmaWNhdGlvbkNhbmNlbEV2ZW50Q29udGVudD4+OjpoNDZj +MTM1MmEyYjVkNWZmYS4zmCaiAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6 +dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0 +aW9uOjpzdGFydDo6S2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnQ+Pjo6aDBiNWUxYTJh +OTBjMzBhMTQuM5kmogFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2ln +bmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6 +cmVhZHk6OktleVZlcmlmaWNhdGlvblJlYWR5RXZlbnRDb250ZW50Pj46OmgyMjQyMWI4YTM4M2Nm +YTQzLjOaJpkBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6 +TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6c2VsZWN0X2Fuc3dlcjo6Q2Fs +bFNlbGVjdEFuc3dlckV2ZW50Q29udGVudD4+OjpoZDcxYjhlZjcyMjJhNjBmOS4zmyaMAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5z +aWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6OnJlamVjdDo6Q2FsbFJlamVjdEV2ZW50Q29udGVudD4+ +OjpoNTk4YWYyYzNkNzIxODJhMS4znCaSAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2 +ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6Om5l +Z290aWF0ZTo6Q2FsbE5lZ290aWF0ZUV2ZW50Q29udGVudD4+OjpoZTNmYjdlNzg1MGE5NjE0Ny4z +nSaUAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3Nh +Z2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6OmNhbmRpZGF0ZXM6OkNhbGxDYW5kaWRh +dGVzRXZlbnRDb250ZW50Pj46OmhlNTdhMWU1MjllMThjMzk2LjOeJowBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1h +X2V2ZW50czo6Y2FsbDo6aGFuZ3VwOjpDYWxsSGFuZ3VwRXZlbnRDb250ZW50Pj46OmgwZWJmMTI2 +MTc4NjI2YmVhLjOfJowBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNp +Z25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6aW52aXRlOjpDYWxs +SW52aXRlRXZlbnRDb250ZW50Pj46OmgyOGJkNTAxYjFhN2FmMWViLjOgJowBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxy +dW1hX2V2ZW50czo6Y2FsbDo6YW5zd2VyOjpDYWxsQW5zd2VyRXZlbnRDb250ZW50Pj46OmhmMWRj +NDY0NTM3YmE5MGYzLjOhJo4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1 +bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6X2N1c3RvbTo6Q3VzdG9t +TWVzc2FnZUxpa2VFdmVudENvbnRlbnQ+Pjo6aDVkNjFjZWM3NjcxZTdhODYuM6ImR3J1bWFfZXZl +bnRzOjpyb29tOjp0aHVtYm5haWxfc291cmNlX3NlcmRlOjpzZXJpYWxpemU6OmhjYTQ5ODYyOTg1 +YzQ5OGUwoyaSAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6 +Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OnJvb206OnJlZGFjdGlvbjo6Um9vbVJl +ZGFjdGlvbkV2ZW50Q29udGVudD4+OjpoYzEwZThmYzhkOWYyNTI0My4zpCZkPHNlcmRlOjpkZTo6 +dmFsdWU6Ok1hcERlc2VyaWFsaXplcjxJLEU+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4 +dF92YWx1ZV9zZWVkOjpoNGU0NWZjMmMxNGEyMGYxZqUmZDxzZXJkZTo6ZGU6OnZhbHVlOjpNYXBE +ZXNlcmlhbGl6ZXI8SSxFPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2Vl +ZDo6aDUwNWE1ZTRlMjRiZjE0YjGmJmQ8c2VyZGU6OmRlOjp2YWx1ZTo6TWFwRGVzZXJpYWxpemVy +PEksRT4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6Omg2YTZkOWZm +ZTc1NjEyZTQwpyZFaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlSW5uZXI6OnByZXBhcmVfaW5zZXJ0 +X3Nsb3Q6Omg5ODZlMTVkNjk3NTk4YzM5qCZQPGFycmF5dmVjOjplcnJvcnM6OkNhcGFjaXR5RXJy +b3I8VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDcxN2Y0OTk1OGUzNjlkYmSpJkY8YWxs +b2M6OnJjOjpSYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhiYTE2YTZj +ZTVlZDI0ZmI3qiZeaW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfZGF0YWJhc2U6OklkYkRhdGFiYXNl +Ojp0cmFuc2FjdGlvbl9vbl9vbmVfd2l0aF9tb2RlOjpoMzJlMGRiZjlhMzIyZTY2NKsmVWluZGV4 +ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6aWRiX3JlcXVlc3RfcmVmOjpJZGJSZXF1ZXN0UmVmOjpl +cnJvcjo6aDZmNDk2ZDQ2NTEyYzYwZDWsJr4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5n +LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVy +bmFsPjo6ZGVhbGxvY2F0ZV9hbmRfYXNjZW5kOjpoMTRkYTNiYTM3Nzk2ZWMyMK0mvgFhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpkZWFsbG9jYXRlX2FuZF9hc2NlbmQ6OmgxOTNl +NDZhOWI5YzEyNjcwria+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OmRlYWxs +b2NhdGVfYW5kX2FzY2VuZDo6aDM2ZGE0MjYyMTZmMjg2ZDSvJr4BYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkxlYWZPckludGVybmFsPjo6ZGVhbGxvY2F0ZV9hbmRfYXNjZW5kOjpoNTkxNDVhZDY5ODAyODc3 +NrAmvgFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpkZWFsbG9jYXRlX2FuZF9h +c2NlbmQ6Omg1ZDI0MDM1YWYyMjc3NDhksSa+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWlu +ZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRl +cm5hbD46OmRlYWxsb2NhdGVfYW5kX2FzY2VuZDo6aGQxYzdiMjI1NDdkNmU2OGayJr4BYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6ZGVhbGxvY2F0ZV9hbmRfYXNjZW5kOjpoZTdi +M2QzY2Y1NDBlNTJiZLMmvgFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpkZWFs +bG9jYXRlX2FuZF9hc2NlbmQ6OmhlZWY1NDI2NjRiYjllYmM0tCZAYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6c2xpY2VfaW5zZXJ0OjpoM2NjNmEwOTcwMGY5YWI1N7UmQGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OnNsaWNlX2luc2VydDo6aDRjOTA5N2M1NWI2OWQxYWW2 +JkBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpzbGljZV9pbnNlcnQ6Omg1MGEwYmQ4 +ODExOTQ0Mjc1tyZAYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6c2xpY2VfaW5zZXJ0 +OjpoNTc4YTRkZjFkNWE0ZTJjMbgmQGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OnNs +aWNlX2luc2VydDo6aGFmYjM2Nzg0MWE1NzFmMzi5JkBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpzbGljZV9pbnNlcnQ6OmhiYzA2ZjAxZjk0OWVmZDFkuiZKYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46OnJlbW92ZTo6aGM0MjJiYjBjYTZmODMw +NDC7JjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI4MDVmNzI1YTU5N2NmYzi8JmU8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpTY2FuRXJyb3IgYXMgY29y +ZTo6ZXJyb3I6OkVycm9yPjo6c291cmNlOjpoYTgwNTczNThkYzRjZTIzZr0mWjxleWViYWxsOjpz +aGFyZWQ6OlNoYXJlZE9ic2VydmFibGU8VCxMPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpk +cm9wOjpoZThkMzRjYmZhMDVkYWVlMr4mWjxleWViYWxsOjpzaGFyZWQ6OlNoYXJlZE9ic2VydmFi +bGU8VCxMPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYmUwYTYxZjgxMGJlOTdi +Mr8mWjxleWViYWxsOjpzaGFyZWQ6OlNoYXJlZE9ic2VydmFibGU8VCxMPiBhcyBjb3JlOjpvcHM6 +OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMzhmMWU5NzNjNjY3MjdiYcAmbDxjb3JlOjppdGVyOjphZGFw +dGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6 +SXRlcmF0b3I+OjpuZXh0OjpoNGQxZjBiZjViYzViZThlOcEmbDxjb3JlOjppdGVyOjphZGFwdGVy +czo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRl +cmF0b3I+OjpuZXh0OjpoOGQ0MjQ1OWJjNDE3NTVkZsImyQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnRv +X2RldmljZTo6VG9EZXZpY2VFdmVudDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +Zm9yd2FyZGVkX3Jvb21fa2V5OjpGb3J3YXJkZWRSb29tS2V5Q29udGVudD4+Pjo6aDUzNjc3Zjdk +NWM4NjY3ZmXDJjRjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjpleHBlY3Q6Omg0N2NhOGM1MjMw +ZWI4YmJmxCZ2PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRv +RGV2aWNlRXZlbnQ8Qz4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplPjo6c2VyaWFsaXplOjpoNDZk +YTg3Mzc2YmQ0NWY3ZcUmdjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2 +aWNlOjpUb0RldmljZUV2ZW50PEM+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZT46OnNlcmlhbGl6 +ZTo6aDliNDUzYWI4YzllM2ZhN2TGJnY8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6 +OnRvX2RldmljZTo6VG9EZXZpY2VFdmVudDxDPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+Ojpz +ZXJpYWxpemU6OmhlYzM0OGIwYzcwNTRiOWUzxyZHaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlSW5u +ZXI6OnByZXBhcmVfaW5zZXJ0X3Nsb3Q6Omg5ODZlMTVkNjk3NTk4YzM5LjLIJnl0b2tpbzo6dXRp +bDo6bGlua2VkX2xpc3Q6Okd1YXJkZWRMaW5rZWRMaXN0PEwsPEwgYXMgdG9raW86OnV0aWw6Omxp +bmtlZF9saXN0OjpMaW5rPjo6VGFyZ2V0Pjo6cG9wX2JhY2s6OmgyMmI2ZGQzNWQ1YTE5YTcwySY0 +Y29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPjo6ZXhwZWN0OjpoODcwOWY0YWNmZWFiOTQ3ZMomaDxj +b3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6 +Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg3ZmI4Njg3OGViMDAxOTU0yyZUbWF0cml4X3Nk +a19jcnlwdG86OnZlcmlmaWNhdGlvbjo6ZXZlbnRfZW51bXM6OkFueUV2ZW50Ojp0aW1lc3RhbXA6 +OmhjNTcwMmJhNmQ5NTMxMjIzzCaRATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0 +b3JlOjpNZW1vcnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5 +cHRvU3RvcmU+OjpnZXRfZGV2aWNlOjp7e2Nsb3N1cmV9fTo6aGUwMWIyNTY4MzYyZmU2M2TNJnc8 +dHJhY2luZ19zdWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNp +bmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46Om5ld19zcGFuOjpoODE5MGIzZGM2YTdi +MjQ0Y84mR3NoYXJkZWRfc2xhYjo6c2hhcmQ6OlNoYXJkPFQsQz46OmNsZWFyX2FmdGVyX3JlbGVh +c2U6Omg5MzkyYjVkMTBhMGMwMDUwzyZPd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJPYmplY3RT +dG9yZTo6SWRiT2JqZWN0U3RvcmU6OmNvdW50OjpoN2E0YjZjNTFkNGE4ZDZkNNAmRndlYl9zeXM6 +OmZlYXR1cmVzOjpnZW5fSWRiQ3Vyc29yOjpJZGJDdXJzb3I6OmRlbGV0ZTo6aGQ4MDZmZWU4MzI3 +MWUyNzjRJkh3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0lkYlJlcXVlc3Q6OklkYlJlcXVlc3Q6OnJl +c3VsdDo6aDA4ZTA1YjgwNjNlMWE4NjPSJmQ8c2VyZGU6OmRlOjp2YWx1ZTo6TWFwRGVzZXJpYWxp +emVyPEksRT4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmgyYjVl +YzQ2MmQwNGQyN2Fh0yZkPHNlcmRlOjpkZTo6dmFsdWU6Ok1hcERlc2VyaWFsaXplcjxJLEU+IGFz +IHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoNDk1MmRkYjM2ZTRlNjYy +NdQmUXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyZWNlaXZlcl9jaGFpbjo6TWVzc2FnZUtleVN0 +b3JlOjpwdXNoOjpoYTlkZjE0OWVkNzc3ZTBhM9UmUDxhcnJheXZlYzo6ZXJyb3JzOjpDYXBhY2l0 +eUVycm9yPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5NTI0YWUzYmIxZTYzMjkz1iZL +dm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6RXhwYW5kZWRTZWNyZXRLZXk6OmZyb21fYnl0ZXM6 +Omg3Zjc4NDQxMzRmNzY0ZjUz1yY0YWVzOjpzb2Z0OjpmaXhzbGljZTo6c2hpZnRfcm93c18yOjpo +ZTA1MmNlNmI5Y2Q3MDdmNtgmW2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6 +OlJlc3VsdDwoKSxzdGQ6OmlvOjplcnJvcjo6RXJyb3I+Pjo6aDkzY2M3NjIwZDRkMzFkMjDZJr4B +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6ZGVhbGxvY2F0ZV9hbmRfYXNjZW5k +OjpoNWJhMTU0MWZhMjFhNzJmZdomP3J1bWFfY29tbW9uOjpzZXJkZTo6YmFzZTY0OjpCYXNlNjQ8 +Qz46OnBhcnNlOjpoMDk2NDYwMTlhNzBlZDFmYdsmP3J1bWFfY29tbW9uOjpzZXJkZTo6YmFzZTY0 +OjpCYXNlNjQ8Qz46OnBhcnNlOjpoZThmMTZiODIwOWViY2QzMdwmYjxzZXJkZV9qc29uOjp2YWx1 +ZTo6c2VyOjpTZXJpYWxpemVyIGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVf +c3RyOjpoZTk2ZjE1ZTJkYTc4N2Y0Ni403SZkPHNlcmRlOjpkZTo6dmFsdWU6Ok1hcERlc2VyaWFs +aXplcjxJLEU+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoMTkx +NjcyMzI2NDhlNWRiMd4mZDxzZXJkZTo6ZGU6OnZhbHVlOjpNYXBEZXNlcmlhbGl6ZXI8SSxFPiBh +cyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDU0Y2VjNWYxZjVmNTcy +YjHfJlJydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmljZV9rZXlfaWQ6OkRldmljZUtleUlk +OjphbGdvcml0aG06Omg5ZjM0ZDQyZmJmNWVmNjMy4CYwcmFuZF9jaGFjaGE6Omd1dHM6OnJlYWRf +dTMybGU6Omg5MDdhNDFkNjA2ZmQzNGM34SZFPHJhbmRfY29yZTo6ZXJyb3I6OkVycm9yIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5YmQyNWM0MjVjMWIxMDY54iZHPHJhbmRfY29yZTo6ZXJy +b3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGFkNzk0ZmIyM2QyZDE2NmPj +JkI8anNfaW50Ojp1aW50OjpVSW50IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGUxZjcx +YWY3NjYyY2U5NDbkJkA8anNfaW50Ojp1aW50OjpVSW50IGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6Omg2YTUzMTc2MTQzYjk0NjNm5SZQPHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OklkZW50aWZp +ZXIgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE0ZGM5NjAxNDhiZDk4OWbmJjJjb3JlOjpm +NjQ6OjxpbXBsIGY2ND46OmNsYXNzaWZ5OjpoOTMzYTcwNzIxM2Y5NjU3YucmQWhhc2hicm93bjo6 +cmF3OjpGYWxsaWJpbGl0eTo6Y2FwYWNpdHlfb3ZlcmZsb3c6Omg1NTgwMGM4Y2ZhZWE1MTkz6Cb+ +AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omlu +c2VydF9maXQ6OmgwNzAyNmM3N2JkNjcwNjVl6Sb+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmgyMmNiOTE0MzVlNzUzOGFh +6ib+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46 +Omluc2VydF9maXQ6Omg0ZmFhMjkyYjdiOGYyZWMw6yb+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmhiODc1NzgwMDFkOWQ4 +OGFh7Cb+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRn +ZT46Omluc2VydF9maXQ6OmhiZmVlMjJmMTNmZWNmNzU47SYzc2VyZGU6OmRlOjpNYXBBY2Nlc3M6 +Om5leHRfdmFsdWU6OmgwYTkyODY1ZWUyN2NmMjkx7iYzc2VyZGU6OmRlOjpNYXBBY2Nlc3M6Om5l +eHRfdmFsdWU6Omg1YzZkNDEwMmYwMTRiM2Vh7yYzc2VyZGU6OmRlOjpNYXBBY2Nlc3M6Om5leHRf +dmFsdWU6Omg5NDI0Y2Q3MGJjNTFlMjhl8CadAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6UmVxdWVzdFN0YXRlPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpUcmFuc2l0aW9uZWQ+Pjo6aDc5 +N2ViNjZhMjc1YmYyOTPxJmVjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OnN0b3JlOjpTdG9yZTo6Z2V0X2RldmljZTo6e3tjbG9zdXJlfX0+OjpoMGU1ZTAxMDhkZDFh +ODI3M/ImcGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6YmFja3Vw +czo6QmFja3VwTWFjaGluZTo6YmFja3VwX2tleXM6Ont7Y2xvc3VyZX19Pjo6aDQ4YWNlYTcxZWQ1 +NGM0NznzJlg8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6Rmxvd0lkIGFzIGNvcmU6 +OmNtcDo6UGFydGlhbEVxPjo6ZXE6OmgxMTU1YjI2OGFjNjI4MWI59CaIAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpEZXZpY2U6 +OmVuY3J5cHRfcm9vbV9rZXlfZm9yX2ZvcndhcmRpbmc6Ont7Y2xvc3VyZX19Pjo6aGZlZDU2ZjIz +YzQwZWE1Yjj1Jmg8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OlNlc3Np +b25FeHBvcnRFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjA4Y2YzMWFmYjFlMDMz +NPYmajxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6U2Vzc2lvbkV4cG9y +dEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhmMDhjZjMxYWZiMWUwMzM0LjH3Jklh +bGxvYzo6Y29sbGVjdGlvbnM6OmJpbmFyeV9oZWFwOjpCaW5hcnlIZWFwPFQsQT46OnB1c2g6Omgz +ODdmNzJmNTcwZjc2YWY2+CZFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmhkMmZlMzU1MzRkNzFjMDFl+SaDATxhbGxvYzo6dmVjOjpWZWM8VCxBPiBh +cyBhbGxvYzo6dmVjOjpzcGVjX2V4dGVuZDo6U3BlY0V4dGVuZDxULGFsbG9jOjp2ZWM6OmludG9f +aXRlcjo6SW50b0l0ZXI8VD4+Pjo6c3BlY19leHRlbmQ6OmhhM2JlYWNiNjQ1NzlhZWU1+iY5Y29y +ZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2U6Omg5OTRjYjNhODIwMTM4MzVk+yYl +X193YmdfZ2V0X3BpY2tsZWRzZXNzaW9uX2NyZWF0aW9uVGltZfwmJF9fd2JnX2dldF9waWNrbGVk +c2Vzc2lvbl9sYXN0VXNlVGltZf0mK19fd2JnX2dldF9tZWdvbG1kZWNyeXB0aW9uZXJyb3JfZGVz +Y3JpcHRpb27+JiBfX3diZ19nZXRfa2V5c3VwbG9hZHJlcXVlc3RfYm9kef8mHl9fd2JnX2dldF90 +b2RldmljZXJlcXVlc3RfYm9keYAnIV9fd2JnX2dldF9yb29tbWVzc2FnZXJlcXVlc3RfYm9keYEn +MDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZmVlYWU1YzEyNzA3ZDVmMoInM2FsbG9j +OjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoMGJmZjZlYmIxZGMxNDI2ZIMnSDxhbGxvYzo6 +c3luYzo6QXJjPFQ+IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208VD4+Ojpmcm9tOjpoOTc4NzBlMzUy +NmI2ZTdjZoQneGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xt +Ojpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6UGlja2xlZEluYm91bmRHcm91cFNlc3Npb24+Ojpo +MzYxZjFjNzI5YmFlMDkwYYUnK2FsbG9jOjpzeW5jOjpBcmM8VD46Om5ldzo6aDI4MGMzMmVjOWE2 +OWNhNGOGJ5ABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06 +OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6aW1wb3J0X3NlY3JldHNfdW5j +aGVja2VkOjp7e2Nsb3N1cmV9fT46OmgxNTc0NzAzZTdkZTg0NDcyhye6Ajw8bWF0cml4X3Nka19p +bmRleGVkZGI6OmNyeXB0b19zdG9yZTo6bWlncmF0aW9uczo6djc6Ol86OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6Om1p +Z3JhdGlvbnM6OnY3OjpJbmJvdW5kR3JvdXBTZXNzaW9uSW5kZXhlZERiT2JqZWN0Mj46OmRlc2Vy +aWFsaXplOjpfX1Zpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfbWFwOjpfX0Rl +c2VyaWFsaXplV2l0aCBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6Omhk +YmY5ODkyN2E5YjEzNDA4iCc7Y29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2U6 +Omg5OTRjYjNhODIwMTM4MzVkLjGJJ58BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpSZXF1ZXN0U3RhdGU8bWF0cml4X3Nk +a19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlRyYW5zaXRpb25lZD4+OjpoNzk3ZWI2 +NmEyNzViZjI5My4ziidnY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6U3RvcmU6OmdldF9kZXZpY2U6Ont7Y2xvc3VyZX19Pjo6aDBlNWUwMTA4ZGQxYTgy +NzMuM4snJl9fd2JnX3NldF9lbmNyeXB0aW9uc2V0dGluZ3NfYWxnb3JpdGhtjCcuX193Ymdfc2V0 +X2VuY3J5cHRpb25zZXR0aW5nc19oaXN0b3J5VmlzaWJpbGl0eY0nG19fd2JnX3NldF9zaGllbGRz +dGF0ZV9jb2xvco4nE3VzZXJpZF9pc0hpc3RvcmljYWyPJxZzZXJ2ZXJuYW1lX2lzSXBMaXRlcmFs +kCeDATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2b2RvemVtYWM6OkN1cnZlMjU1MTlQdWJsaWNL +ZXkgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19h +Ymk6Omg3OTYzMzdjYzRkOGZjZWEwkSceX193Ymdfc2V0X2lkZW50aXR5a2V5c19lZDI1NTE5kid2 +PGluZGV4ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6bWFwOjpNYXBGdXR1cmU8RnV0 +LE0+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpoMmZiYTVjYmYwOTVm +NGZhNpMnUjxUIGFzIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpSZXR1cm5XYXNtQWJp +Pjo6cmV0dXJuX2FiaTo6aGYzZjMxMTFiMWI0OTQ5ZDGUJ0U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQyNTNkYjQxMzc5ZTE0YmWVJxZkZXZpY2Vf +bG9jYWxUcnVzdFN0YXRllicgX193Ymdfc2V0X3Jvb21zZXR0aW5nc19hbGdvcml0aG2XJzRfX3di +Z19zZXRfcm9vbXNldHRpbmdzX3Nlc3Npb25Sb3RhdGlvblBlcmlvZE1lc3NhZ2VzmCcMZW1vamlf +c3ltYm9smScyc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aDI2NDdlMjllODJmOTU0 +YTOaJ58BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmlj +YXRpb246OnJlcXVlc3RzOjpSZXF1ZXN0U3RhdGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNh +dGlvbjo6cmVxdWVzdHM6OlRyYW5zaXRpb25lZD4+OjpoNzk3ZWI2NmEyNzViZjI5My40myfHAmNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6 +TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRldmljZTo6RGV2aWNlOjp2ZXJpZnk6Ont7 +Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21p +c2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZGV2aWNlOjpEZXZpY2U6OnZlcmlmeTo6e3tjbG9z +dXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVyZVVwbG9hZFJl +cXVlc3Q+Ojp7e2Nsb3N1cmV9fT4+OjpoMDg4ZmYwYzQ0MDdmMWRhYpwn2wJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpVc2VySWRlbnRpdHk6OnZlcmlmeTo6e3tj +bG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlz +ZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpVc2VySWRlbnRpdHk6OnZlcmlm +eTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVy +ZVVwbG9hZFJlcXVlc3Q+Ojp7e2Nsb3N1cmV9fT4+OjpoYmE0NWNkZWM1ZDY2ZmU4ZJ0n5AJjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1h +cEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpjcm9zc19z +aWduaW5nX3N0YXR1czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJl +OjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1N +YWNoaW5lOjpjcm9zc19zaWduaW5nX3N0YXR1czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6b2xtOjpDcm9zc1NpZ25pbmdTdGF0dXM+Ojp7e2Nsb3N1cmV9fT4+OjpoZWI2OWI0 +ZDAwYTFkMTYzNp4nmAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1 +bHQ8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnJlbGF0aW9uX3NlcmRlOjpSZWxhdGlvbkRl +SGVscGVyLHNlcmRlX2pzb246OmVycm9yOjpFcnJvcj4+OjpoMzQwZjE5ZWE1OThjNTJhZJ8nMDwm +VCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTc1OTI0YzVhMGE3M2I0MKAnMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmM5NWIzNjZiM2RkNjI1ZqEnMDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoOWFkMmM3MDc1YjRiNTViNaInMDwmVCBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoZDA5NzJiMWFiNzViNDY2ZKMnMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoZGI4MDVmZTI2MGUyZTU4N6QnRTxjb3JlOjpvcHRpb246Ok9wdGlvbjxUPiBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2JhYjUwOTI3ZjFhNjE3YaUnWjxzZXJkZV9qc29uOjpkZTo6 +TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpo +MDQ4ZDUxMjM4ZjA3OTY4YqYnWjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRl +OjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoMDkxNWM1ZjVhMzgwMzY0OKcnWjxz +ZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4 +dF92YWx1ZV9zZWVkOjpoMmQzMGNhZTBiNjY0YzQ2ZagnWjxzZXJkZV9qc29uOjpkZTo6TWFwQWNj +ZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoMzc3MjQx +ZjNmNDEwODMyNKknWjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6 +TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoNTdmYTU0NjRjNTk0MTllYaonWjxzZXJkZV9q +c29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1 +ZV9zZWVkOjpoNjQ5ZDIzOWEzYzE4MmRjMqsnWjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+ +IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoNzAwMzA1ODliY2U1 +ZTE0NKwnWjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNj +ZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoNzYxZWExM2FiMWVkYTkyNK0nWjxzZXJkZV9qc29uOjpk +ZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVk +OjpoODJkMDUxOGVkYzQ3OTBiMa4nWjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNl +cmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoYTY1NjNiOWQ5NDBjNjUxYa8n +WjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6 +bmV4dF92YWx1ZV9zZWVkOjpoYTg0N2JkNTg0NTA4YjUzYrAnWjxzZXJkZV9qc29uOjpkZTo6TWFw +QWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoZWFk +MTgwYjk2ZmU0MzQyY7EniQF2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpfOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpFZDI1NTE5 +S2V5cGFpcj46OmRlc2VyaWFsaXplOjpoN2QxZjYxMWZmNjJkYzM0M7InamluZGV4ZWRfZGJfZnV0 +dXJlczo6aWRiX2RhdGFiYXNlOjpJZGJEYXRhYmFzZTo6dHJhbnNhY3Rpb25fb25fbXVsdGlfd2l0 +aF9tb2RlX2FuZF9hcnJheTo6aDRhZjNjMTIwYzkyN2FhNGWzJ2pqc19vcHRpb246OnNlcmRlOjo8 +aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBqc19vcHRpb246OkpzT3B0aW9uPFQ+Pjo6 +ZGVzZXJpYWxpemU6OmgyYzgxOWIxYjIxMTY1ZGQytCc5Y29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5P +bmNlOjpjYWxsX29uY2U6OmgxNzMwNGZjNTQ3NzhmOTVitSdmaW5kZXhlZF9kYl9mdXR1cmVzOjpp +ZGJfY3Vyc29yOjppZGJfY3Vyc29yX3dpdGhfdmFsdWU6OklkYkN1cnNvcldpdGhWYWx1ZTxUPjo6 +dmFsdWU6OmhjY2I3NWE3OTBmODVmYjZktic3c2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6Y29udmVy +dF9wYWlyOjpoMDIxZjRmMDFjMmQ5NWI3NLcnLGNvcmU6OmVycm9yOjpFcnJvcjo6Y2F1c2U6Omgz +ODRjZGM4ZGQxMDg4YTg0uCdLPHJtcF9zZXJkZTo6ZGVjb2RlOjpFcnJvciBhcyBjb3JlOjplcnJv +cjo6RXJyb3I+Ojpzb3VyY2U6Omg3NTE1OWI1NmQwYzJjMTVjuSfWAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpvcHRpb246Ok9wdGlvbjwocnVtYV9j +b21tb246OmlkZW50aWZpZXJzOjpjcnlwdG9fYWxnb3JpdGhtczo6RGV2aWNlS2V5QWxnb3JpdGht +LG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6Y29tbW9uOjpTaWduaW5n +S2V5KT4+Pjo6aDhhM2RlNzc1MzdjYTA1NTS6J/4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDk2OTg4ZmM0MmFkNzliYma7 +J/4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6 +aW5zZXJ0X2ZpdDo6aGM4NDkyOGQwMjAyMDAxZDK8J/4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aGY5NjMwZDM2OWE3M2Ex +OTW9J3M8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpNZXNzYWdlQXV0aGVudGljYXRp +b25Db2RlIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHN0cj4+Ojphc19yZWY6Omg5ZmQzYjBlZjE5 +YjQzOGE4vic2c2VyZGU6OnNlcjo6U2VyaWFsaXplcjo6Y29sbGVjdF9zZXE6OmgyODc3NzEzMzFm +OThhYTNivydbPHJ1bWFfY29tbW9uOjplbmNyeXB0aW9uOjpLZXlVc2FnZSBhcyBjb3JlOjpjb252 +ZXJ0OjpBc1JlZjxzdHI+Pjo6YXNfcmVmOjpoNGQ0ZTAyZGI3Njc0ODUyNMAnMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoMGJhOGVlYmE1NzRjZDNhYcEnMDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoMTUzYWU3NzJiMWYwNWU1ZMInMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoNTM0ZjA3ZmJmNzQxYzA2YcMnMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoNjM4ZmYzYWZlYjFhMjMxZMQnMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzM1 +MjkxOGUwNWFmMzM2N8UnRTxjb3JlOjpvcHRpb246Ok9wdGlvbjxUPiBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoYzg1ZTViNWRkYzk3YzU5OcYnMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoOTZlNjJjNzk3M2U1MjVjNMcnMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +YTYxMzVhMDE2ZDhmMjE0YcgnMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjUyYjg4 +MmZhYzc4YWQxYsknMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmVkNjIyNmE5MWQ4 +ZjdlNsonMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzliNTlhMGFjYjdkNjE3Zcsn +RTxjb3JlOjpvcHRpb246Ok9wdGlvbjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmU1 +NjFiMmRhZTdjYmQyOMwnbDxjb3JlOjppdGVyOjphZGFwdGVyczo6Y2xvbmVkOjpDbG9uZWQ8ST4g +YXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoY2FmZTM1 +ZTgwZWVmZTRlMM0nYzwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNl +cmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RyOjpoMDQwZjQ4OTFjOTU4MjFkZM4n +M2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoNGVlODk2OWVmZTM5YzM2Nc8nM2Fs +bG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoMTA2ZDk3NTExM2M4ODIxNdAnM2FsbG9j +OjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoNTExZDFkODFlYjk5OTM3MtEnM2FsbG9jOjpz +eW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoYjI5MGE3NWVhZWVlNTIyMNInWDxleWViYWxsOjpz +aGFyZWQ6OlNoYXJlZE9ic2VydmFibGU8VCxMPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9u +ZTo6aDEwYTMzNmVlZmI1NjM3OWLTJ0U8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDZlNDYxZjc2MWFiMDQyOTLUJ09jb3JlOjpjbXA6OmltcGxzOjo8 +aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6Omg5MjM5MGYxMjBmNDYx +YTQ11SdFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +OmgzNTFjODU4NGYzOWFhYTk21idFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6Omg0ZWFjMmEwNWQ5NDBmNzI21ydHPGNvcmU6Om9wdGlvbjo6T3B0aW9u +PFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2ZTQ2MWY3NjFhYjA0MjkyLjHYJ0c8Y29y +ZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGJlNTYxYjJk +YWU3Y2JkMjguMdknRzxjb3JlOjpvcHRpb246Ok9wdGlvbjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoYzg1ZTViNWRkYzk3YzU5OS4x2idFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjYjdmMjE1MzZhYThmMTEz2ycwPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmhlMjUzZDhkZDcyMjkxOGFm3CdHPGNvcmU6Om9wdGlvbjo6T3B0 +aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjODVlNWI1ZGRjOTdjNTk5LjLdJ05t +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OlNhczo6dmVyaWZpZWRfZGV2aWNl +czo6aDE3YWE1MzEzMThkMmUxZmTeJ1FtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpz +YXM6OlNhczo6dmVyaWZpZWRfaWRlbnRpdGllczo6aDFlYmRlZWI4YjI1YjNkZjPfJ2g8Y29yZTo6 +aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVy +YXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNGIzZjhkZTUyZjI3ZDA3MeAnaDxjb3JlOjppdGVyOjph +ZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJ +dGVyYXRvcj46Om5leHQ6Omg2ZGQ3YzE5NTYzZTgxODg14SeDATxhbGxvYzo6dmVjOjpWZWM8VCxB +PiBhcyBhbGxvYzo6dmVjOjpzcGVjX2V4dGVuZDo6U3BlY0V4dGVuZDxULGFsbG9jOjp2ZWM6Omlu +dG9faXRlcjo6SW50b0l0ZXI8VD4+Pjo6c3BlY19leHRlbmQ6OmgwYWU0ODgyZTI5MGNjZGY24idH +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiZTU2 +MWIyZGFlN2NiZDI4LjLjJ1o8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6 +ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDQ4MTI4NWM1OTcxMTZlMWHkJ1o8c2Vy +ZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRf +dmFsdWVfc2VlZDo6aDRlNTY1ODBlNjIxODNhNDjlJ0U8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4g +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDIyOTg2MmQxYjQzNDc2OTLmJ1t2b2RvemVtYWM6 +Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OkRvdWJsZVJhdGNoZXQ6Om5leHRfbWVzc2Fn +ZV9rZXk6OmhkZjljYWM3YmU3NmY0YjVj5ydlPCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxp +emVyPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9ieXRlczo6aDhk +OTQ0NTViMmYyMWY4MzXoJ0JhcnJheXZlYzo6YXJyYXl2ZWNfaW1wbDo6QXJyYXlWZWNJbXBsOjp0 +cnVuY2F0ZTo6aGMzYWVkOGM4ODhjYWI5ZjLpJ0JhcnJheXZlYzo6YXJyYXl2ZWNfaW1wbDo6QXJy +YXlWZWNJbXBsOjp0cnVuY2F0ZTo6aDBkY2NlODViZTVkN2M4MDjqJz5zdGQ6OmlvOjpjdXJzb3I6 +OkN1cnNvcjxUPjo6cmVtYWluaW5nX3NsaWNlOjpoYWEwMzIzODVlNmI5ODlmNesnQTwmbXV0IFQg +YXMgYnl0ZXM6OmJ1Zjo6YnVmX2ltcGw6OkJ1Zj46OmFkdmFuY2U6OmhkZDM3NWQ5MmEwNGI5ODEx +7CdDPCZtdXQgVCBhcyBieXRlczo6YnVmOjpidWZfaW1wbDo6QnVmPjo6YWR2YW5jZTo6aGRkMzc1 +ZDkyYTA0Yjk4MTEuMe0njAE8dm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6RWQyNTUxOUtleXBh +aXIgYXMgY29yZTo6Y29udmVydDo6RnJvbTx2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpFZDI1 +NTE5S2V5cGFpclBpY2tsZT4+Ojpmcm9tOjpoNWY2YTQzZThjMDk1ZTNkN+4niQF2b2RvemVtYWM6 +OnR5cGVzOjplZDI1NTE5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2Rv +emVtYWM6OnR5cGVzOjplZDI1NTE5OjpFZDI1NTE5S2V5cGFpcj46OmRlc2VyaWFsaXplOjpoOGQ5 +MDVmZWE1MzI5MDFjOe8nMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTQzYThlODk3 +YWIwMzNhYfAnMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYWRkNWY3MDAzOGEyN2E1 +M/EnMnNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfYnl0ZXM6Omg5ZjhhMThkM2NmZWY0YmI58icy +c2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aGRlOGYwMTdlZmNjMzFhYWPzJ3U8cnVt +YV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpNZXNzYWdlQXV0aGVudGljYXRpb25Db2RlIGFz +IGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHN0cj4+Ojphc19yZWY6Omg5ZmQzYjBlZjE5YjQzOGE4LjH0 +JzJzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2J5dGVzOjpoNDgxZjgyMGJhODIyYzIzYvUneTxy +dW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmNyeXB0b19hbGdvcml0aG1zOjpEZXZpY2VLZXlBbGdv +cml0aG0gYXMgY29yZTo6Y29udmVydDo6QXNSZWY8c3RyPj46OmFzX3JlZjo6aGU3MGYyMmI4Yjg1 +YjdmZjH2J108cnVtYV9jb21tb246OmVuY3J5cHRpb246OktleVVzYWdlIGFzIGNvcmU6OmNvbnZl +cnQ6OkFzUmVmPHN0cj4+Ojphc19yZWY6Omg0ZDRlMDJkYjc2NzQ4NTI0LjH3Jy5iYXNlNjQ6OmVu +Y29kZTo6YWRkX3BhZGRpbmc6OmhmMmY5ZDBhZWNhNjVkOGQw+Cc8dHJhY2luZ19jb3JlOjpkaXNw +YXRjaGVyOjpEaXNwYXRjaDo6ZW50ZXI6Omg5NmNiOWFmMmQ3OWQzYWE3+Sc7dHJhY2luZ19jb3Jl +OjpkaXNwYXRjaGVyOjpEaXNwYXRjaDo6ZXhpdDo6aDQyNDE1YWM0ZmZhYjM3MWT6J0B0cmFjaW5n +X2NvcmU6OmRpc3BhdGNoZXI6OkRpc3BhdGNoOjp0cnlfY2xvc2U6Omg2NzQzMjBlMzc5Y2JiM2Ri ++ycqanNfc3lzOjpGdW5jdGlvbjo6Y2FsbDE6Omg5YzQwNmYxYzk0NjUxYjIy/CdcPHJ1c3RjX2Rl +bWFuZ2xlOjpTaXplTGltaXRlZEZtdEFkYXB0ZXI8Rj4gYXMgY29yZTo6Zm10OjpXcml0ZT46Ondy +aXRlX3N0cjo6aDgzNTI4NmIwMzZjZDJmYmX9JzVjb3JlOjpjZWxsOjpwYW5pY19hbHJlYWR5X2Jv +cnJvd2VkOjpoYjMzZTFlMTdlZWFiYmMzOP4nPWNvcmU6OmNlbGw6OnBhbmljX2FscmVhZHlfbXV0 +YWJseV9ib3Jyb3dlZDo6aDRkYmViNjUxOTcyZmY4NGL/J0BhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpzbGljZV9pbnNlcnQ6OmhhNGI3MDE4YjcyY2E1MmQ5gCj+AWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0 +LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6Omgx +MTZlMjY2YzI1ODdlNGVkgSj+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRs +ZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmgxNDE2NjY4NGQzYmYzODlmgij+AWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6 +Omg1MThhZDE2MmJkNmUyMTg5gyj+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Okhh +bmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6Omg5MWIxYmUxNTgxNmVjZGE2hCj+AWFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+ +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9m +aXQ6OmhmNDY3OTE3ZjUxNzhiOTY3hShJPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6 +OmNsb25lOjpDbG9uZT46OmNsb25lOjpoNzg1ODhlNzkzMTcwYmU2MYYougFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9u +bHlEZXZpY2U6OmVuY3J5cHQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnNlY3Jl +dF9zZW5kOjpTZWNyZXRTZW5kQ29udGVudD46Ont7Y2xvc3VyZX19Pjo6aGUyMzYyNjA1ZTU2OWI5 +NWSHKEk8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xv +bmU6OmgzMGRmODI2ZGUwNzg4MzU0iChjPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +SW50b0l0ZXI8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg0NzI2MTk3 +NTFkMzg3NDY1iSiOAXdhc21fYmluZGdlbjo6Y29udmVydDo6aW1wbHM6OjxpbXBsIHdhc21fYmlu +ZGdlbjo6Y29udmVydDo6dHJhaXRzOjpSZXR1cm5XYXNtQWJpIGZvciBjb3JlOjpyZXN1bHQ6OlJl +c3VsdDxULEU+Pjo6cmV0dXJuX2FiaTo6aGYwN2Q4MTMzODRmOWU1ZDCKKIkBd2FzbV9iaW5kZ2Vu +Ojpjb252ZXJ0OjpzbGljZXM6OjxpbXBsIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpJ +bnRvV2FzbUFiaSBmb3IgYWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6aW50b19hYmk6OmhjOTI2YWM5 +MGYyMjJhNDI4LjKLKCJfX3diZ19nZXRfZGVjcnlwdGVkcm9vbWV2ZW50X2V2ZW50jCg4YWxsb2M6 +OnN0cmluZzo6U3RyaW5nOjppbnRvX2JveGVkX3N0cjo6aDc2YzM2ZWJjZjAzNTgyNDGNKC9jb3Jl +OjpvcHRpb246Ok9wdGlvbjxUPjo6bWFwOjpoNzg3MmNlZDNkOTViZWE5ZI4oG2RlaHlkcmF0ZWRk +ZXZpY2VzX3JlaHlkcmF0ZY8oczxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpkZXZpY2U6OkRldmlj +ZSBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6SW50b1dhc21BYmk+OjppbnRvX2Fi +aTo6aDM3YjVlYWNiM2ZlNTlhNGaQKHg8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6OlJv +b21TZXR0aW5ncyBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6SW50b1dhc21BYmk+ +OjppbnRvX2FiaTo6aGRmZmM2OGMyMjFlN2E3NTORKIYBPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uUmVxdWVzdCBhcyB3YXNtX2JpbmRnZW46OmNvbnZl +cnQ6OnRyYWl0czo6SW50b1dhc21BYmk+OjppbnRvX2FiaTo6aGMyOTQ2MjY0ZTUyMmRhYjSSKNoB +PDxydW1hX2V2ZW50czo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9l +dmVudHM6OkV2ZW50VHlwZURlSGVscGVyPjo6ZGVzZXJpYWxpemU6Ol9fVmlzaXRvciBhcyBzZXJk +ZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9tYXA6Ol9fRGVzZXJpYWxpemVXaXRoIGFzIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aGUzYjJmMDdjN2I2MzdhZGaTKI4CPDxtYXRy +aXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6Xzo6PGltcGwgc2VyZGU6OmRlOjpE +ZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OkV4 +cG9ydGVkUm9vbUtleT46OmRlc2VyaWFsaXplOjpfX1Zpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNp +dG9yPjo6dmlzaXRfbWFwOjpfX0Rlc2VyaWFsaXplV2l0aCBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplPjo6ZGVzZXJpYWxpemU6OmgzZGU5NzdjZTIxNjRjYzVilChoPGNvcmU6Oml0ZXI6OmFkYXB0 +ZXJzOjpmdXNlOjpGdXNlPEk+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJh +dG9yPjo6bmV4dDo6aGU5ZGFjYTg0MTMwYTI5ZGOVKGNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +dm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0OjpEb3VibGVSYXRjaGV0Pjo6 +aGI1MmEyMTYyZWIxOTg3MDOWKHJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6UGlja2xlZEFjY291bnQ+ +Pjo6aDJhOWQxNDUzMTM3NDIzOWWXKI8Bdm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6 +RWQyNTUxOUtleXBhaXJQaWNrbGU+OjpkZXNlcmlhbGl6ZTo6aGUxOGRlYWIzNGNmOWE5MmGYKFRz +ZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciB1OD46OnNl +cmlhbGl6ZTo6aGMzMDE3ZWVkODAyYzVkN2WZKEBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpzbGljZV9pbnNlcnQ6Omg2YzUxZmMyM2YxNjc3NzExmihjPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8SyxWLEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46 +OmRyb3A6OmgyNGJmZTIyOTBlNzkyZTJkmyiAAXJ1bWFfY29tbW9uOjp0aW1lOjpfOjo8aW1wbCBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2NvbW1vbjo6dGltZTo6U2Vjb25kc1NpbmNl +VW5peEVwb2NoPjo6ZGVzZXJpYWxpemU6OmhkODJiYjMzZWJiMjhiNzA5nChSbWF0cml4X3Nka19p +bmRleGVkZGI6OnNhZmVfZW5jb2RlOjpTYWZlRW5jb2RlOjphc19zZWN1cmVfc3RyaW5nOjpoYzI5 +NGViMzEzMTAxZjJmOJ0oUGluZGV4ZWRfZGJfZnV0dXJlczo6aWRiX2N1cnNvcjo6SWRiQ3Vyc29y +PFQ+Ojpjb250aW51ZV9jdXJzb3I6OmgyY2Y4Y2EzZGJiN2ZkZWQ0nihSbWF0cml4X3Nka19pbmRl +eGVkZGI6OnNhZmVfZW5jb2RlOjpTYWZlRW5jb2RlOjphc19zZWN1cmVfc3RyaW5nOjpoMTJmZTNl +ZjIwMzkzMmY5N58oPmhhc2hicm93bjo6cmF3OjpSYXdUYWJsZUlubmVyOjpmcmVlX2J1Y2tldHM6 +OmhlNzYyOTE1YjEzYWYxMDI2oCgyc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aDA0 +MjlmMTI0Y2Y4YjU2NjmhKDJzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2J5dGVzOjpoOWFkZDI3 +MTkyZTcxMmU2NaIoMnNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfYnl0ZXM6OmhiYWQzYmI3ZjY0 +ZjlkNWUzoygwc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9zdHI6OmgyNWRjOTQ1NTU0ZjkzOTIw +pCgwc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9zdHI6Omg3NTI0ZWMyZDVjODYxNDdjpSgwc2Vy +ZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9zdHI6Omg4N2VhZGJiNjIwYWQ2ZDQ1pigyc2VyZGU6OmRl +OjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aDRkMTBkN2ExM2Q0OGY0NzenKDJzZXJkZTo6ZGU6OlZp +c2l0b3I6OnZpc2l0X2J5dGVzOjpoNWE4ZDZhYjI0NzNjMzAwZKgoMHNlcmRlOjpkZTo6VmlzaXRv +cjo6dmlzaXRfc3RyOjpoMGE5MzlhYjdmOWVmN2IwZakoMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlz +aXRfc3RyOjpoOGRmZDRjNmM0YTQ4YTJjOKooLGNvcmU6OmVycm9yOjpFcnJvcjo6Y2F1c2U6Omgy +ZTFiZDdjZjBkM2ZmODkwqyi8AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVS +ZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OnB1 +c2hfaW50ZXJuYWxfbGV2ZWw6OmgwYWU4MmNkMDE3MTA1NjgyrCi8AWFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpMZWFmT3JJbnRlcm5hbD46OnB1c2hfaW50ZXJuYWxfbGV2ZWw6OmgwYmJhMjc5YTNiYWNiM2Ix +rSi8AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OnB1c2hfaW50ZXJuYWxfbGV2 +ZWw6OmgxMTA4NzUxNTFhZDhmNWJkrii8AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxL +LFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5h +bD46OnB1c2hfaW50ZXJuYWxfbGV2ZWw6OmgyM2U0YjBjY2U5NjgzNmVhryi8AWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OnB1c2hfaW50ZXJuYWxfbGV2ZWw6OmgzMGM4ZTY2OTQx +MDFiZmQ2sCi8AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OnB1c2hfaW50ZXJu +YWxfbGV2ZWw6OmgzNjIxMWJjMDM2MzljMDRisSi8AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpP +d25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJ +bnRlcm5hbD46OnB1c2hfaW50ZXJuYWxfbGV2ZWw6OmgzY2I2YTg5NjhiYTg1NmRhsii8AWFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OnB1c2hfaW50ZXJuYWxfbGV2ZWw6Omg1MWU3 +MjhlOTEzODJhM2Jmsyi8AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OnB1c2hf +aW50ZXJuYWxfbGV2ZWw6Omg3ZTc3YzczNzNkMThmNmM0tCi8AWFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpM +ZWFmT3JJbnRlcm5hbD46OnB1c2hfaW50ZXJuYWxfbGV2ZWw6OmhiY2QzMmNlZTRiZWJmMGFltSi8 +AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OnB1c2hfaW50ZXJuYWxfbGV2ZWw6 +OmhjNjEyYzhlMDFhODY3MmQ2tii8AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYs +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46 +OnB1c2hfaW50ZXJuYWxfbGV2ZWw6OmhlNTM1N2FhZTIyNDViODg2tyj+AWFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEss +VixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmgyMDg4 +MzFhN2ExOGY2N2M0uCj+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmgyYTMwMzdlODBhMTQwMTI4uSj+AWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0 +LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6Omg5 +YjdhOGYxMjkxMTJjZGI3uij+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRs +ZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmhkYTljMmViZjYyNDI0ZThiuyj+AWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6 +OmhlYWJhNzlkNmRkNmIxYjNivCj+AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Okhh +bmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9maXQ6OmhlYjY3ZWMxNmI5ODkzYmRlvSj+AWFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+ +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT46Omluc2VydF9m +aXQ6OmhmYjIxNDA0YzE2NTEyMDhkvig/Y29yZTo6c2xpY2U6OnNvcnQ6OmNob29zZV9waXZvdDo6 +e3tjbG9zdXJlfX06Omg1YzgxOWFjMWVhYjM4YTU5vyhUPGV5ZWJhbGw6OnNoYXJlZDo6U2hhcmVk +T2JzZXJ2YWJsZTxULEw+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxZmU3ODk2NWFiN2U2 +NzgywChianNfaW50Ojp1aW50OjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIGpz +X2ludDo6dWludDo6VUludD46OnNlcmlhbGl6ZTo6aGM1NmZjYzI5Y2E1MmNmNTPBKF88cnVtYV9l +dmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpIYXNoQWxnb3JpdGhtIGFzIGNvcmU6OmNsb25lOjpD +bG9uZT46OmNsb25lOjpoZGM0N2E1NDY1Yzg2ZTg5NcIoSW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OlZlcmlmaWNhdGlvbjo6Zmxvd19pZDo6aDc1ZGNiMTExYjNkZmUyNmPDKG48Y29y +ZTo6aXRlcjo6YWRhcHRlcnM6OmZpbHRlcjo6RmlsdGVyPEksUD4gYXMgY29yZTo6aXRlcjo6dHJh +aXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZDc4NGM4MzBmMWE3YTUzYsQoPmhhc2hi +cm93bjo6cmF3OjpSYXdUYWJsZUlubmVyOjpmcmVlX2J1Y2tldHM6OmhjNjRlNzZmMmFiNDJiMDBh +xShGPGFsbG9jOjpyYzo6UmM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpo +OGQwMDJhYzEzYWY4MjVhM8YoeDx0cmFjaW5nX3N1YnNjcmliZXI6OmZtdDo6Zm10X2xheWVyOjpM +YXllcjxTLE4sRSxXPiBhcyB0cmFjaW5nX3N1YnNjcmliZXI6OmxheWVyOjpMYXllcjxTPj46Om9u +X2V2ZW50OjpoMzAxODBkNjg0NDBjYmIyMMcoVjxNIGFzIHRyYWNpbmdfc3Vic2NyaWJlcjo6Zm10 +Ojpmb3JtYXQ6OkZvcm1hdEZpZWxkcz46OmZvcm1hdF9maWVsZHM6Omg3OTVjYmE4ZDRkNjRkNzg5 +yChsPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0Y2hldDo6SW5hY3RpdmVEb3Vi +bGVSYXRjaGV0IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkNGVmYzQ5MzFiYjkyYTUyySi8 +AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46OnB1c2hfaW50ZXJuYWxfbGV2ZWw6 +OmhhMWFmNGQ4OGMxZWM0NTFkyii8AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYs +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD46 +OnB1c2hfaW50ZXJuYWxfbGV2ZWw6OmhkNzJhNjFkMGU5YjVhYzQ0yyjXAWFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEss +VixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46 +OnJlcGxhY2Vfa3Y6OmhhZTc1YzczMzg2ZGIzN2FjzCiaATx2b2RvemVtYWM6Om9sbTo6YWNjb3Vu +dDo6bGlib2xtOjpPbmVUaW1lS2V5IGFzIGNvcmU6OmNvbnZlcnQ6OlRyeUZyb208JnZvZG96ZW1h +Yzo6b2xtOjphY2NvdW50OjpmYWxsYmFja19rZXlzOjpGYWxsYmFja0tleT4+Ojp0cnlfZnJvbTo6 +aGE0YmQyNjg1ZTM3ZWY4ZGLNKFc8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNl +cmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OmVuZDo6aDNkMjMyMDg5NWU2MzE0NjPOKEZ2b2Rv +emVtYWM6OnR5cGVzOjplZDI1NTE5OjpFZDI1NTE5UHVibGljS2V5Ojp2ZXJpZnk6Omg4OGQ4MWE3 +NmIzYWMwNjg4zyiPAXZvZG96ZW1hYzo6dHlwZXM6OmVkMjU1MTk6Ol86OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6dHlwZXM6OmVkMjU1MTk6OkVkMjU1MTlLZXlw +YWlyUGlja2xlPjo6ZGVzZXJpYWxpemU6OmhjMjNhNjg0YzhkZWU2MWVk0Cg8dm9kb3plbWFjOjpv +bG06OnNlc3Npb246OkNoYWluU3RvcmU6OnB1c2g6OmgxMGQwY2ViZmU2MTlkYTgw0ShEdm9kb3pl +bWFjOjpvbG06OnNlc3Npb246OkNoYWluU3RvcmU6OmZpbmRfcmF0Y2hldDo6aGMwMDg0NTc4MjUw +ZjM0ODbSKFk8c2VyZGVfanNvbjo6c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZVN0cnVjdD46OmVuZDo6aDNkMjMyMDg5NWU2MzE0NjMuMdMoL2VkMjU1MTk6OlNpZ25h +dHVyZTo6dG9fYnl0ZXM6OmhiZmQ5YjBjZmJiNDdkYjlk1ChoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJz +Ojp6aXA6OlppcDxBLEI+IGFzIGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp6aXA6OlppcEltcGw8QSxC +Pj46Om5ldzo6aDMzN2I0ZWMzYjlkODBhNTbVKFk8c2VyZGVfanNvbjo6cmF3OjpCb3hlZEZyb21T +dHJpbmcgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyaW5nOjpoMjZhMjAyNjBkMWJl +M2M5NdYovAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+OjpwdXNoX2ludGVybmFs +X2xldmVsOjpoY2FjYmI3ZGU5YzdiZjJjNdcovAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3du +ZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50 +ZXJuYWw+OjpwdXNoX2ludGVybmFsX2xldmVsOjpoYTU1ZDM5OWQwYjMwMjIzNNgoSTxjb3JlOjp0 +aW1lOjpEdXJhdGlvbiBhcyBjb3JlOjpvcHM6OmFyaXRoOjpTdWI+OjpzdWI6Omg4NGQ3YjI3MDUy +Y2Q5YjkwLjHZKLwBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPjo6cHVzaF9pbnRl +cm5hbF9sZXZlbDo6aDYxMmRhMjA2MjNiMDI2OGXaKCtzZXJkZV9qc29uOjpyZWFkOjphc19zdHI6 +OmhkZjU4NGQ2YzA5OGRlNzFi2ygyYnl0ZXM6OmJ5dGVzOjpwcm9tb3RhYmxlX3RvX3ZlYzo6aGZm +ODEzOTUyZDczZTEyNDbcKC1qc19zeXM6OlVpbnQ4QXJyYXk6OnRvX3ZlYzo6aDA1YjQxOGE2NmNh +NWE3NDDdKP4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpF +ZGdlPjo6aW5zZXJ0X2ZpdDo6aDMwNjNlNmZlMTkzMjQ1MTbeKP4BYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aGJjMmUwODkz +MzlmMWI2NTTfKP4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aGUxMzI0ZGRjZmY5Y2FhNjngKGpjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnJlbGF0aW9uX3NlcmRlOjpSZWxh +dGVzVG9EZUhlbHBlcj46OmhhN2MwNDhmZGIyZmU0ZDk14ShpY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleTo6Um9vbUtleUNv +bnRlbnQ+OjpoOTFiOGVmNDhiOGY4YWQ1ZS434ihgY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnFyY29kZTo6SW5uZXJTdGF0ZT46Omg1ZDJi +NGYwYjA0MDkzNDBk4yhFPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg5MTFjYmViNTQzMDU0Nzlm5CiLAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjpj +aGVja19wcml2YXRlX2lkZW50aXR5Ojp7e2Nsb3N1cmV9fT46OmgyMzRlNzA0YTk1Y2JjZjY1LjPl +KKQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnJlcXVlc3RzOjpyZWNlaXZlX3N0YXJ0PG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnJlcXVlc3RzOjpSZWFkeT46Ont7Y2xvc3VyZX19Pjo6aDZmNzllYzM5NmZlZTNjZTPmKJoB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNlc3Npb246 +OlNlc3Npb246OmVuY3J5cHQ8cnVtYV9ldmVudHM6OmR1bW15OjpUb0RldmljZUR1bW15RXZlbnRD +b250ZW50Pjo6e3tjbG9zdXJlfX0+OjpoMDQ1NjEyZmYwNjIyZmU5ZucoRzxjb3JlOjpvcHRpb246 +Ok9wdGlvbjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTExY2JlYjU0MzA1NDc5Zi4x +6ChfPHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPiBhcyBjb3JlOjpmdXR1cmU6 +OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aGFkZGUyN2UzMmFhNjMzYzfpKF88dHJhY2luZzo6aW5z +dHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+ +Ojpwb2xsOjpoNjU3Yzc3MmYyMzRlYzYxYuooXzx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVt +ZW50ZWQ8VD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6Omg5M2Y3MzZh +MmJlN2EyNjUy6yhfPHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPiBhcyBjb3Jl +OjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aDE2MDQwNmFkODYyNzJiODTsKF88dHJh +Y2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJl +OjpGdXR1cmU+Ojpwb2xsOjpoNGIwYmIzYmQzODkzNDYyYu0oU2NvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6OkV2ZW50RXJyb3I+OjpoYjBmMGZkMzVlNTAx +M2MwZC407ihHPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6Omg5MTFjYmViNTQzMDU0NzlmLjLvKF88dHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVu +dGVkPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpoMDczMzhkNjRj +ZmY2YjIxM/AoXzx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8VD4gYXMgY29yZTo6 +ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6Omg5ZDRlMjEyNDA0MGRiODY28ShfPHRyYWNp +bmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6 +RnV0dXJlPjo6cG9sbDo6aDc1NTM5NTljNTZiYjYyMmXyKF88dHJhY2luZzo6aW5zdHJ1bWVudDo6 +SW5zdHJ1bWVudGVkPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpo +YzUzMGFmNTMzNjEwNGJmYfMoXzx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8VD4g +YXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6OmhiOTBkNzA4OTAzZDdlZDdl +9ChfPHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPiBhcyBjb3JlOjpmdXR1cmU6 +OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aGZhYTlhMDVhNzYzMTc2NmX1KEU8Y29yZTo6b3B0aW9u +OjpPcHRpb248VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDc4ZjQxYmY0ZTM5ZDBmOWX2 +KEk8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6 +OmgzMGJmNjlhN2QwOTY3NDhi9ygeX193YmdfZ2V0X2tleXN1cGxvYWRyZXF1ZXN0X2lk+CiSATxt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+ +IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNldF9j +dXN0b21fdmFsdWU6Omg0OGFiZjM4OWJjNGY2NGQz+SiSATxtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNldF9jdXN0b21fdmFsdWU6OmhlZGRhZjQz +YTQ2MGU4ZWQ4+igzYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg1NDhiN2EwZjg1 +NmE4MWMz+yhmPHNlcmRlX2pzb246OnZhbHVlOjpzZXI6Ok1hcEtleVNlcmlhbGl6ZXIgYXMgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zdHI6Omg0OWIzMzNhOGE3NzI3MzVk/ChE +YW55aG93OjplcnJvcjo6PGltcGwgYW55aG93OjpFcnJvcj46OmZyb21fZGlzcGxheTo6aDljODQy +ZTA1ZmEwMTVjYjP9KBdkZXZpY2VfaXNMb2NhbGx5VHJ1c3RlZP4oFGRldmljZV9pc0JsYWNrbGlz +dGVk/ygQZGV2aWNlX2lzRGVsZXRlZIApLl9fd2JnX3NldF9yb29tc2V0dGluZ3Nfc2Vzc2lvblJv +dGF0aW9uUGVyaW9kTXOBKTdydW1hX2NvbW1vbjo6c2VyZGU6OnJhdzo6UmF3PFQ+OjpuZXc6Omg1 +NWExM2ZhOGEzYzJjZjg4gilbPHJ1bWFfY29tbW9uOjpzZXJkZTo6cmF3OjpSYXc8VD4gYXMgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpoMGJmZmE2YWNmNTM2NDdkNYMpWzxy +dW1hX2NvbW1vbjo6c2VyZGU6OnJhdzo6UmF3PFQ+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+ +OjpkZXNlcmlhbGl6ZTo6aDhhYmQ2NzVkNThhNDhjYjWEKVs8cnVtYV9jb21tb246OnNlcmRlOjpy +YXc6OlJhdzxUPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmhhZmJj +ODZlOTljYjg1ZmNjhSlgY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6U3RvcmU6OmNhY2hlOjp7e2Nsb3N1cmV9fT46Omg2MzIyYThjNGE4N2Y0YzEyhilH +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5MTFj +YmViNTQzMDU0NzlmLjOHKbQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2lu +ZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojpsb2FkX2lkZW50aXR5Ojp7e2Ns +b3N1cmV9fT46OmhjMGQ1YjhmZWU1YTg3YzI0iCnPAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTw8 +bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUg +YXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6bWFya19p +bmJvdW5kX2dyb3VwX3Nlc3Npb25zX2FzX2JhY2tlZF91cDo6e3tjbG9zdXJlfX0+OjpoMTNkNzBh +ZDg4YzkyMWJkM4kpgAFydW1hX2NvbW1vbjo6dGltZTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNl +cmlhbGl6ZSBmb3IgcnVtYV9jb21tb246OnRpbWU6OlNlY29uZHNTaW5jZVVuaXhFcG9jaD46OmRl +c2VyaWFsaXplOjpoMjA3Yjg4YzY3ZjE0YzhiMIopgAFydW1hX2NvbW1vbjo6dGltZTo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9jb21tb246OnRpbWU6OlNlY29uZHNT +aW5jZVVuaXhFcG9jaD46OmRlc2VyaWFsaXplOjpoNGU1M2Y2ZGE0ZTRkZWI2M4spW2luZGV4ZWRf +ZGJfZnV0dXJlczo6cmVxdWVzdDo6b3Blbl9kYl9yZXF1ZXN0OjpPcGVuRGJSZXF1ZXN0OjppbnN0 +YW50aWF0ZTo6aGUwNzdjNmZiM2M1NDZlNGWMKf4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDA2MGNjY2YxNjllMmIxYziN +Kf4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6 +aW5zZXJ0X2ZpdDo6aDE1ZWFhNTM4ZDZiZmVhOTSOKf4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPjo6aW5zZXJ0X2ZpdDo6aDdkNjkxMWJjZGRkOTEw +MjSPKf4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdl +Pjo6aW5zZXJ0X2ZpdDo6aGMwMjBlMjAwYzExYWFhMmaQKUU8Y29yZTo6b3B0aW9uOjpPcHRpb248 +VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDVjOGVhMTQ3NmY2OWIyNTmRKTNjb3JlOjpv +cHRpb246Ok9wdGlvbjwmVD46OmNsb25lZDo6aDU1YzA5MjVlMDkzYWUwM2KSKUU8Y29yZTo6b3B0 +aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA2ZjI1OTU0ZDk1NDNi +ODWTKUU8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDRjZDk1N2NkYzZmNDBkMWOUKUU8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aGUzZGJiMDViMTNjMTRlNTKVKV48cnVtYV9ldmVudHM6OmVudW1zOjpU +b0RldmljZUV2ZW50VHlwZSBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6Omg3 +MmM0MzUxYWM5MmI2YTlhlikrY29yZTo6Y21wOjpQYXJ0aWFsRXE6Om5lOjpoMGZhZjA5N2Y2YzBl +ZWVmY5cpM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoNzE2ODhmYzk3NmY5ZmQ0 +OZgpN3J1bWFfY29tbW9uOjpzZXJkZTo6cmF3OjpSYXc8VD46Om5ldzo6aGE5OTQ1MjhiNzA3N2Iy +Y2OZKUU8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDRiZjA1N2ExNjRlYmFjNTWaKUc8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aDVjOGVhMTQ3NmY2OWIyNTkuMZspRTxjb3JlOjpvcHRpb246Ok9wdGlv +bjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoODE3NzE0M2YxYjg2YzZkMJwpRTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2JhNjhkZmNm +ODhiZWFiZJ0pRTxjb3JlOjpvcHRpb246Ok9wdGlvbjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoZDdlODkxMGNjYzcwNjQ0ZZ4phQFydW1hX2NvbW1vbjo6dGltZTo6Xzo6PGltcGwgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9jb21tb246OnRpbWU6Ok1pbGxpU2Vjb25kc1Np +bmNlVW5peEVwb2NoPjo6ZGVzZXJpYWxpemU6Omg4OTcxYjk4MDU2YjE3NWFhnylHPGNvcmU6Om9w +dGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1YzhlYTE0NzZmNjli +MjU5LjKgKUc8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDVjOGVhMTQ3NmY2OWIyNTkuM6EpW21hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nf +c2lnbmluZzo6Y29tbW9uOjpDcm9zc1NpZ25pbmdLZXk6OnRvX3Jhdzo6aDc3OGZkODZkYWY1ZDZl +MjKiKWg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6 +dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNGRkNDliMjVmMWMwZDZiZaMpaDxj +b3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6 +Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg4MTU5OWM3NTk3MmUzNmIwpCloPGNvcmU6Oml0 +ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0 +b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDhkYjA2MTYyM2QwOWNlN2OlKWg8Y29yZTo6aXRlcjo6YWRh +cHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRl +cmF0b3I+OjpuZXh0OjpoZTM0NTY0NDAxNzYyMjVhMKYpRzxjb3JlOjpvcHRpb246Ok9wdGlvbjxU +PiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2JhNjhkZmNmODhiZWFiZC4xpymXAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTx0b2tpb19zdHJlYW06OndyYXBwZXJzOjpicm9hZGNhc3Q6Om1h +a2VfZnV0dXJlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Okdvc3NpcHBlZFNlY3JldD46 +Ont7Y2xvc3VyZX19Pjo6aGY1NTZjYmEwOTUxOTUxYjeoKaABY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHRva2lvX3N0cmVhbTo6d3JhcHBlcnM6OmJyb2FkY2FzdDo6bWFrZV9mdXR1cmU8YWxsb2M6 +OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Um9vbUtleUluZm8+Pjo6e3tjbG9z +dXJlfX0+OjpoMDUzMTk0NmYxOTExODgxOakpkAJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dG9r +aW9fc3RyZWFtOjp3cmFwcGVyczo6YnJvYWRjYXN0OjptYWtlX2Z1dHVyZTwoY29yZTo6b3B0aW9u +OjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3du +VXNlcklkZW50aXR5PixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OklkZW50aXR5Q2hhbmdlcyxt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkRldmljZUNoYW5nZXMpPjo6e3tjbG9zdXJlfX0+Ojpo +MTA0NTJiYWRjNjQwZjBmY6opXTxydW1hX2NvbW1vbjo6Y2Fub25pY2FsX2pzb246OkNhbm9uaWNh +bEpzb25FcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGFlM2ZiMjVmNzMxOTQxYasp +/gFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Ojpp +bnNlcnRfZml0OjpoODM0NWM0ZDE0ZTgxMTUwOawp/gFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfZml0OjpoYjQxMjI2NjE2MzBjYTUz +OK0pNnByb3N0OjplbmNvZGluZzo6Ynl0ZXM6OmVuY29kZWRfbGVuOjpoM2EyNjMzZTU0ZmRkZTJl +Ma4pUzxydW1hX2V2ZW50czo6ZW51bXM6OlRvRGV2aWNlRXZlbnRUeXBlIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmhlMGQ0NWNlNTViM2E5ZWQwrylKPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBj +b3JlOjpjb252ZXJ0OjpGcm9tPCZbVF0+Pjo6ZnJvbTo6aDlkNWM0YjBkMDkyY2Y0MzewKWg8c2Vy +ZGVfanNvbjo6dmFsdWU6OnNlcjo6U2VyaWFsaXplVmVjIGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6 +ZVNlcT46OnNlcmlhbGl6ZV9lbGVtZW50OjpoNjMwZjlhYWMxNTU4YWIzZLEpVzx0cmFjaW5nX2Nv +cmU6Om1ldGFkYXRhOjpLaW5kIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Ont7Y2xvc3VyZX19 +OjpoMWJmNzllODlkMjIwMDQyNbIpUGFsbG9jOjpzbGljZTo6PGltcGwgYWxsb2M6OmJvcnJvdzo6 +VG9Pd25lZCBmb3IgW1RdPjo6dG9fb3duZWQ6OmhkMzFjYTYwMTExNGZkMzRmsykuYnl0ZXM6OmJ5 +dGVzOjpzdGF0aWNfdG9fdmVjOjpoZWRiYTllMDE3YjYxMDgwMbQpKmpzX3N5czo6RnVuY3Rpb246 +OmNhbGwwOjpoYzhjMDBkNmMwYTQ3OTI1Y7UpJ2pzX3N5czo6UmVmbGVjdDo6Z2V0OjpoNmE4ZjQ0 +MzcyNDg5NzRkN7YpWTxzdGQ6OmlvOjpXcml0ZTo6d3JpdGVfZm10OjpBZGFwdGVyPFQ+IGFzIGNv +cmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6Omg1NjEwOGRmOGFlMmU3MmUxtylUPGNvcmU6OmZt +dDo6YnVpbGRlcnM6OlBhZEFkYXB0ZXIgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6 +OmgyMzMzOTk5OWUyZGNmZmM4uCmyAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRl +Ojo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +RWRnZT4+OjpkZWFsbG9jYXRpbmdfZW5kOjpoMDkwNzc5ZjBiNjYyYWMwMbkpsgJhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6ZGVhbGxvY2F0aW5nX2VuZDo6aDA5ODNl +NzI1N2RmMzg5Zma6KbICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBs +IGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpFZGdlPj46 +OmRlYWxsb2NhdGluZ19lbmQ6OmgwYTg4YjdlYWIzODM3NDIwuymyAmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpkZWFsbG9jYXRpbmdfZW5kOjpoMGIwYjdiYWI4OGE5 +ZTY3Y7wpsgJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpEeWluZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFm +PixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6ZGVhbGxv +Y2F0aW5nX2VuZDo6aDE5Y2M4YWM4ODM0NDJmNWO9KbICYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRs +ZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RHlpbmcsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpFZGdlPj46OmRlYWxsb2NhdGluZ19lbmQ6OmgzMDA5ZTQ2NGM1Yjk5MzZkvimy +AmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5n +LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpkZWFsbG9jYXRpbmdf +ZW5kOjpoNjlhYWVjZGRhZTMwOTU5Zr8psgJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZp +Z2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bWFya2VyOjpEeWluZyxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OkVkZ2U+Pjo6ZGVhbGxvY2F0aW5nX2VuZDo6aDk5NzdjZTlkYTM5Nzc3MWXAKX1jb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb206 +OmVuY3J5cHRlZDo6VG9EZXZpY2VFbmNyeXB0ZWRFdmVudENvbnRlbnQ+OjpoODA5YzYwOTJiYjZl +ZDNhYsEpTmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cm9vbTo6TWVkaWFT +b3VyY2U+OjpoNGNlYTkzZTQ3MjhkNTNhNy4xMMIpWzxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBj +b3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkV4dGVuZDxUPj46OmV4dGVuZDo6aDYzY2FhZjNl +MmY1OTdlYWPDKY0BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpp +ZGVudGl0aWVzOjp1c2VyOjpPd25Vc2VySWRlbnRpdHk6OnJlcXVlc3RfdmVyaWZpY2F0aW9uX2hl +bHBlcjo6e3tjbG9zdXJlfX0+OjpoNDE1YWMwNjAyNTQ3NDJlNC4yxClVY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNlc3Npb246OlNlc3Npb24+OjpoODRm +YjM3MTE4NTI4YTlkMsUpiQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5Ojphc191cGxvYWRf +cmVxdWVzdDo6e3tjbG9zdXJlfX0+OjpoMjhkN2JmMGE3NTY2NzIyZMYpWzxhbGxvYzo6dmVjOjpW +ZWM8VCxBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkV4dGVuZDxUPj46OmV4dGVu +ZDo6aDc2MTE3YWYxMTg2ZGVlY2THKW1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjpTdG9yZTo6Z2V0X3VzZXJfZGV2aWNlczo6e3tjbG9zdXJlfX0+Ojpo +NThjZmQ1ODc1MzY3YmIzOS4xyCm7AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50PG1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlRvRGV2aWNlRW5jcnlw +dGVkRXZlbnRDb250ZW50Pj46Omg4OWVhNTVmMmI5ZmRjNzY1LjHJKV9jb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6RW5jcnlwdGVkRXZlbnRTY2hl +bWU+OjpoMjI0MjNkYTQzNzkxY2M4YsopXmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXlzPjo6aGJhNDA2MTdhMDg2 +NzllMGTLKccBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVu +dGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjplbmNyeXB0PG1hdHJpeF9zZGtfY3J5cHRv +Ojp0eXBlczo6ZXZlbnRzOjpmb3J3YXJkZWRfcm9vbV9rZXk6OkZvcndhcmRlZFJvb21LZXlDb250 +ZW50Pjo6e3tjbG9zdXJlfX0+OjpoMTJjNjRlZjFiMjg2NGNjM8wpLWFsbG9jOjp2ZWM6OlZlYzxU +LEE+OjpwdXNoOjpoNmUwYzk1YWRhOGY4ODQ3M80pMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoNWEwNzYzZWU0ZTU1MDBmMc4pMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +Y2QxMDQ5Mzg2YzE0YzU3Ns8pggNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGls +OjpmdXR1cmU6Om1heWJlX2RvbmU6Ok1heWJlRG9uZTxtYXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0 +b3I6OkpvaW5IYW5kbGU8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8KGFsbG9jOjp2ZWM6OlZlYzxtYXRy +aXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uPixhbGxvYzo6dmVjOjpWZWM8KG1h +dHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlLG1hdHJp +eF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhlbGRD +b2RlKT4pLG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3I+Pj4+OjpoOGY0ZjhkMmE3 +OWEzNzQyOdApaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjpp +dGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgwYzcxYTJjNmNiMWE1ODBm +0SloPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRy +YWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDYxMTA5YjA0MjAwN2Y2NTfSKWg8Y29y +ZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpp +dGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNjQxMmI4YjQ3NTNiMjQ1ZtMpaDxjb3JlOjppdGVy +OjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9y +OjpJdGVyYXRvcj46Om5leHQ6OmhlNDYwNjJmODE3ZTFlZmEy1CkVYmFzZW1pZ3JhdGlvbmRhdGFf +bmV31SkwX193YmdfZ2V0X3BpY2tsZWRzZXNzaW9uX2NyZWF0ZWRVc2luZ0ZhbGxiYWNrS2V51ikt +X193YmdfZ2V0X3BpY2tsZWRpbmJvdW5kZ3JvdXBzZXNzaW9uX2ltcG9ydGVk1yktX193YmdfZ2V0 +X3BpY2tsZWRpbmJvdW5kZ3JvdXBzZXNzaW9uX2JhY2tlZFVw2CkkX193YmdfZ2V0X21lZ29sbWRl +Y3J5cHRpb25lcnJvcl9jb2Rl2Skcb2xtbWFjaGluZV9kZWh5ZHJhdGVkRGV2aWNlc9opI19fd2Jn +X3VwbG9hZHNpZ25pbmdrZXlzcmVxdWVzdF9mcmVl2yk2ZW5jcnlwdGVkYXR0YWNobWVudF9oYXNN +ZWRpYUVuY3J5cHRpb25JbmZvQmVlbkNvbnN1bWVk3CkSX193YmdfdHJhY2luZ19mcmVl3SlBdHJh +Y2luZ19zdWJzY3JpYmVyOjpsYXllcjo6TGF5ZXI6OmRvd25jYXN0X3Jhdzo6aDdjMmQxMTc3NWVm +NDgyODLeKYEBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpkZWh5 +ZHJhdGVkX2RldmljZXM6OlJlaHlkcmF0ZWREZXZpY2U6OnJlY2VpdmVfZXZlbnRzOjp7e2Nsb3N1 +cmV9fT46OmhkOWUxZGMzNWMzMDBlNTI13ymCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NyeXB0bzo6ZGVoeWRyYXRlZF9kZXZpY2VzOjpEZWh5ZHJhdGVkRGV2aWNlOjprZXlz +X2Zvcl91cGxvYWQ6Ont7Y2xvc3VyZX19Pjo6aDllZjNiYmM3MDY1Y2JhYTjgKZgBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjp3 +aXRoX3N0b3JlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnN0b3JlOjpTdG9yZUhhbmRsZT46Ont7 +Y2xvc3VyZX19Pjo6aDM1OGEyNWFiMzVlZWFmNzjhKaQFY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpzdHJlYW06OmZvcl9lYWNoOjpGb3JFYWNoPGZ1dHVyZXNf +dXRpbDo6c3RyZWFtOjpzdHJlYW06OmZpbHRlcl9tYXA6OkZpbHRlck1hcDx0b2tpb19zdHJlYW06 +OndyYXBwZXJzOjpicm9hZGNhc3Q6OkJyb2FkY2FzdFN0cmVhbTxhbGxvYzo6dmVjOjpWZWM8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjpSb29tS2V5SW5mbz4+LG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6Y3J5cHRvX3N0b3JlX3dyYXBwZXI6OkNyeXB0b1N0b3JlV3JhcHBlcjo6cm9vbV9rZXlz +X3JlY2VpdmVkX3N0cmVhbTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6Y3J5cHRvX3N0b3JlX3dyYXBwZXI6OkNyeXB0b1N0b3JlV3JhcHBlcjo6cm9v +bV9rZXlzX3JlY2VpdmVkX3N0cmVhbTo6e3tjbG9zdXJlfX0+LG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206Om1hY2hpbmU6OnNlbmRfcm9vbV9rZXlfaW5mb190b19jYWxsYmFjazo6e3tjbG9zdXJlfX0s +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVnaXN0ZXJfcm9v +bV9rZXlfdXBkYXRlZF9jYWxsYmFjazo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fT4+OjpoMmE1NTAzMWJmZjVjODRkMeIpYGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXlzPjo6aGJhNDA2MTdh +MDg2NzllMGQuM+MpV2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +b2xtOjpzZXNzaW9uOjpTZXNzaW9uPjo6aDg0ZmIzNzExODUyOGE5ZDIuNeQpMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTVlZjAxMmE5YmI5Y2NiMuUpMDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoZTZjMDE4NWM1YTJmMjE4MeYpYWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpFbmNyeXB0ZWRFdmVudFNjaGVtZT46Omgy +MjQyM2RhNDM3OTFjYzhiLjTnKVQ8aGFzaGJyb3duOjpyYXc6OlJhd0ludG9JdGVyPFQsQT4gYXMg +Y29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDQ5NTcyZjM4ODk1NGZjN2LoKVQ8aGFzaGJy +b3duOjpyYXc6OlJhd0ludG9JdGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJv +cDo6aGY3NDg3OTZhNDM4ZjM4NmTpKTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10Ojpo +MDM2Y2E1YTM2YjM5NWE2YuopJl9fd2JnX2dldF9lbmNyeXB0aW9uc2V0dGluZ3NfYWxnb3JpdGht +6ykuX193YmdfZ2V0X2VuY3J5cHRpb25zZXR0aW5nc19oaXN0b3J5VmlzaWJpbGl0eewpNF9fd2Jn +X2dldF9lbmNyeXB0aW9uc2V0dGluZ3Nfb25seUFsbG93VHJ1c3RlZERldmljZXPtKRVfX3diZ19z +ZXJ2ZXJuYW1lX2ZyZWXuKRxfX3diZ19kZWh5ZHJhdGVkZGV2aWNlc19mcmVl7ykbX193YmdfZGVo +eWRyYXRlZGRldmljZV9mcmVl8CkWX193Ymdfc3RvcmVoYW5kbGVfZnJlZfEpFm1heWJlc2lnbmF0 +dXJlX2lzVmFsaWTyKRhtYXliZXNpZ25hdHVyZV9pc0ludmFsaWTzKStfX3diZ19nZXRfcm9vbWtl +eWltcG9ydHJlc3VsdF9pbXBvcnRlZENvdW509CkoX193YmdfZ2V0X3Jvb21rZXlpbXBvcnRyZXN1 +bHRfdG90YWxDb3VudPUpIF9fd2JnX2dldF9yb29tc2V0dGluZ3NfYWxnb3JpdGht9ikuX193Ymdf +Z2V0X3Jvb21zZXR0aW5nc19vbmx5QWxsb3dUcnVzdGVkRGV2aWNlc/cpZTxjb3JlOjpvcHM6OnJh +bmdlOjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+ +OjppbmRleF9tdXQ6OmgwZTIzOTA4M2IyOWIzZWVi+CllPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdl +PHVzaXplPiBhcyBjb3JlOjpzbGljZTo6aW5kZXg6OlNsaWNlSW5kZXg8W1RdPj46OmluZGV4X211 +dDo6aDNhMjRkMGQ3YTEwY2I4N2X5KWU8Y29yZTo6b3BzOjpyYW5nZTo6UmFuZ2U8dXNpemU+IGFz +IGNvcmU6OnNsaWNlOjppbmRleDo6U2xpY2VJbmRleDxbVF0+Pjo6aW5kZXhfbXV0OjpoNmJmMzM4 +NWU0MWE4ZjMxNPopZTxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6c2xp +Y2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleF9tdXQ6Omg3NGQyODgzM2UzMTVjMDkx ++yllPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdlPHVzaXplPiBhcyBjb3JlOjpzbGljZTo6aW5kZXg6 +OlNsaWNlSW5kZXg8W1RdPj46OmluZGV4X211dDo6aDhiOThjNTNkMzgzMmUxMWX8KWU8Y29yZTo6 +b3BzOjpyYW5nZTo6UmFuZ2U8dXNpemU+IGFzIGNvcmU6OnNsaWNlOjppbmRleDo6U2xpY2VJbmRl +eDxbVF0+Pjo6aW5kZXhfbXV0OjpoYTI5ZjRkN2Q5MWRiYmZkYv0pZTxjb3JlOjpvcHM6OnJhbmdl +OjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+Ojpp +bmRleF9tdXQ6OmhiOTQ0ZDgyOTU3NzFmYWVk/illPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdlPHVz +aXplPiBhcyBjb3JlOjpzbGljZTo6aW5kZXg6OlNsaWNlSW5kZXg8W1RdPj46OmluZGV4X211dDo6 +aGM3ODE4MDhhODdhNDJhMjD/KTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA0NDc4 +ZmY3MGEzZGE5NTaAKi1hbGxvYzo6dmVjOjpWZWM8VCxBPjo6cHVzaDo6aDE1MTY2NjhiODg3MDQ5 +ODeBKnE8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp2b2lwX3ZlcnNpb25faWQ6OlZvaXBWZXJz +aW9uSWQgYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplPjo6c2VyaWFsaXplOjpoNWFiNjMzNjFlYWIw +N2U3MoIqMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoN2QwNWMwNTM1YmY4ZjgzNIMq +MDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjA4YzI2OTkxNDA0MjQ4NoQqMDwmVCBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2IyZWY5YmUzMmNmZTA4M4Uqa2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jv +c3NTaWduaW5nSWRlbnRpdHk+OjpoZWVhYzA0Y2VjMjU0NDMwYi42hiqLAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NT +aWduaW5nSWRlbnRpdHk6OmFzX3VwbG9hZF9yZXF1ZXN0Ojp7e2Nsb3N1cmV9fT46OmgyOGQ3YmYw +YTc1NjY3MjJkLjGHKqQCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0 +dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0 +aW9uOjpTYXM6OmNvbmZpcm06Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1 +dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0 +aW9uOjpTYXM6OmNvbmZpcm06Ont7Y2xvc3VyZX19LGpzX3N5czo6QXJyYXk+Ojp7e2Nsb3N1cmV9 +fT4+OjpoODY0NTZmODExNTA5MTg2MYgqMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +YjI5ODBkMjZmYzgxNGFiNIkqamNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2lu +ZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZUVycm9yPjo6aDY5NDIy +ZjNmYWFjNDk1ZjSKKnxhbnlob3c6OmNvbnRleHQ6OjxpbXBsIGFueWhvdzo6Q29udGV4dDxULGNv +cmU6OmNvbnZlcnQ6OkluZmFsbGlibGU+IGZvciBjb3JlOjpvcHRpb246Ok9wdGlvbjxUPj46OmNv +bnRleHQ6Omg5ZjUyOWY5MGI4MzEyNzVjiypqY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlRXJyb3I+ +OjpoMzBiMzZmMTI0OWRlOWIwZowqfmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWduaW5nSWRlbnRpdHk6OnBpY2ts +ZTo6e3tjbG9zdXJlfX0+OjpoYTU4N2MyOTQ1MzZhM2MxZY0qVWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50Pjo6aDY1YmU5MTk0 +NjkyNTA1NzGOKlJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjp0eXBlczo6ZWQy +NTUxOTo6U2VjcmV0S2V5cz46OmhkNjljMTc3MDQ3YWI0MGJjjyplPGNvcmU6Om9wczo6cmFuZ2U6 +OlJhbmdlPHVzaXplPiBhcyBjb3JlOjpzbGljZTo6aW5kZXg6OlNsaWNlSW5kZXg8W1RdPj46Omlu +ZGV4X211dDo6aDIyYjA2YWI0NjgzZDdiNDeQKmU8Y29yZTo6b3BzOjpyYW5nZTo6UmFuZ2U8dXNp +emU+IGFzIGNvcmU6OnNsaWNlOjppbmRleDo6U2xpY2VJbmRleDxbVF0+Pjo6aW5kZXhfbXV0Ojpo +YzYzYmE4ZDczOWY5NGYzYpEqbGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2lu +ZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZUVycm9yPjo6aDMwYjM2 +ZjEyNDlkZTliMGYuMZIqbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4g +YXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNjAyZmIx +OGVkOTFiZWY5MZMqbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMg +Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZDRhYTE5ZmQz +MTczM2M3Y5Qqa2luZGV4ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6anNjYXN0X3Jl +cXVlc3RfZnV0dXJlOjpKc0Nhc3RSZXF1ZXN0RnV0dXJlPFQ+OjpuZXc6Omg1ODdmMzI0NjM0M2Rj +OWQ2lSqkAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0Y2hldDo6Xzo6PGltcGwg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRvdWJs +ZV9yYXRjaGV0OjpEb3VibGVSYXRjaGV0Pjo6ZGVzZXJpYWxpemU6OmgxZWVlMTNiZTkwZDdiNzk5 +liqaAW1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZGV2aWNlX2tleXM6Ol86OjxpbXBsIHNlcmRl +OjpzZXI6OlNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5 +czo6RGV2aWNlS2V5cz46OnNlcmlhbGl6ZTo6aDRkMTljMzMwZTFiN2U0MTWXKkpoYXNoYnJvd246 +OnJ1c3RjX2VudHJ5OjpSdXN0Y1ZhY2FudEVudHJ5PEssVixBPjo6aW5zZXJ0OjpoYjcwNTNkMjI5 +YjU1NWJkNpgqMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDBlODhhNzM1MjM0ZTIz +ZZkqN2FsbG9jOjp2ZWM6OlZlYzxULEE+OjpleHRlbmRfdHJ1c3RlZDo6aDIzN2QwNjdiNzEyNWFl +YjKaKlg8cnVtYV9jb21tb246OnRvX2RldmljZTo6RGV2aWNlSWRPckFsbERldmljZXMgYXMgY29y +ZTo6Y21wOjpPcmQ+OjpjbXA6OmhiYjQ5ZTkyYjM0ZWRmMjFimyowPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6Omg3NDVlYmY4MGJjMjI3YTc4nCowPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg5ODZiZWUxZTBiMGQ0NjEwnSpoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1h +cDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6Zm9sZDo6 +aGIyYzRkMDY2YWFhNTg3OGaeKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDZkZWNk +NDAzYjYzNzBkNmGfKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDZmOTc0ZDgwNjY4 +N2Q0MzSgKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFmMDYxMmVkNDIzMjM2OTKh +KjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDIwYTRhN2RjN2JmZWNhYWKiKjA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDVjZDdhODJlMGU4ZWIyMzSjKmw8Y29yZTo6aXRl +cjo6YWRhcHRlcnM6OkdlbmVyaWNTaHVudDxJLFI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRl +cmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGI1ZjcyMzI3OWU4ZTM2NjCkKjA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDQxZTBlOGRkNzNkZDE3ODalKjA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDQ3MGVhZDczM2Y3YmFjOWWmKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDQ4MDU5YTdlYjAwZGI0ODSnKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDBjMWNjYjIzMGJhMDM0YWaoKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFkYWIy +NTMxMmZiZTBkOGapKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDJmZDM1ZmU1NmM2 +NjQyMDWqKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY1OTJmYjAxMzE3MTlkYWGr +KjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDdhNWI2MjFiYTQ0ODM2NDesKjA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDdjNTc1NjFmMThhMDZhMWStKjA8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgxN2YzOWFjNDA2YjA0OWOuKjA8JlQgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aGE5NmEzZGYwMzYyNTg4YTmvKjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aGVjN2MwNTYxZmE5NzhiOWawKkk8YWxsb2M6OmJveGVkOjpCb3g8VD4gYXMgY29y +ZTo6Y29udmVydDo6RnJvbTxUPj46OmZyb206Omg1MmIyNGNhNzA0ZmMzZGQ3sSpsY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpzZWNyZXQ6OnJlcXVlc3Q6OlRvRGV2aWNlU2Vj +cmV0UmVxdWVzdEV2ZW50Q29udGVudD46OmgzN2M3OTk1ODExNjAxZjJmsio0Y29yZTo6cmVzdWx0 +OjpSZXN1bHQ8VCxFPjo6ZXhwZWN0OjpoNTQ3ZGYxN2IxNTU3YjI4YrMqMDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoYjZjZGYwOGJjZGJkZmIwMLQqMDwmVCBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoYmQ2OWZhMjgzNjUxZmU1MLUqMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoZmUwY2I5YjZhODA0ZmNmMbYqN3Rva2lvOjpzeW5jOjpicm9hZGNhc3Q6OlJlY3Y8VD46 +Om5ldzo6aDEzOGQwZGE3MWYxMjE4MDm3Kmg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFw +PEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0Ojpo +MjEzZDdjOWY0MjA3OWM5YbgqaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBh +cyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgzOTQ4MDJk +ZTkwNzUwMTJmuSpoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxJLEY+IGFzIGNvcmU6 +Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDc2MmQxNTBjZmI3N2Uw +YjC6Kmg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6 +dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoYTFkMjI2ZTdiMzU1N2JhM7sqdTxj +b3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVyX21hcDo6RmlsdGVyTWFwPEksRj4gYXMgY29yZTo6 +aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMTYzODA2ODZlYzNjNTdi +MbwqWzxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6 +OkV4dGVuZDxUPj46OmV4dGVuZDo6aDAxODUzYjViNWVlODk1MjG9KlBxcmNvZGU6OmNhbnZhczo6 +Q2FudmFzOjpkcmF3X2Zvcm1hdF9pbmZvX3BhdHRlcm5zX3dpdGhfbnVtYmVyOjpoZjEzMWJmZmFj +MDMxNzJmMb4qYTxUIGFzIHdhc21fYmluZGdlbjo6Y2xvc3VyZTo6V2FzbUNsb3N1cmVGbk9uY2U8 +QSxSPj46OmludG9fZm5fbXV0Ojp7e2Nsb3N1cmV9fTo6aDhkZTMwYjljNmY5YTAxYja/KmE8VCBh +cyB3YXNtX2JpbmRnZW46OmNsb3N1cmU6Oldhc21DbG9zdXJlRm5PbmNlPEEsUj4+OjppbnRvX2Zu +X211dDo6e3tjbG9zdXJlfX06Omg4OGU4MTAwM2RmNzlmOGM1wCpGPGFsbG9jOjpyYzo6UmM8VCxB +PiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMjljMDczOTBiM2MzNzFmZMEqW3dh +c21fYmluZGdlbl9mdXR1cmVzOjp0YXNrOjpzaW5nbGV0aHJlYWQ6OlRhc2s6OmludG9fcmF3X3dh +a2VyOjpyYXdfd2FrZTo6aGU1ZDk0MjU3ZDI3ZTMxZGHCKqQBdm9kb3plbWFjOjpvbG06OnNlc3Np +b246OmRvdWJsZV9yYXRjaGV0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2 +b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OkRvdWJsZVJhdGNoZXQ+Ojpk +ZXNlcmlhbGl6ZTo6aDQzYzc2NzEzM2U2ODA4MDjDKkg8YWxsb2M6OmJveGVkOjpCb3g8VCxBPiBh +cyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDJlZDg2MWNjMWRkZGU5NmPEKkd2b2RvemVt +YWM6Om1lZ29sbTo6cmF0Y2hldDo6UmF0Y2hldEJ5dGVzOjpmcm9tX2J5dGVzOjpoYjQ3ZmE3NDQ3 +ZDAyZDU4ZcUqMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzZmZTkzNTk0M2Y0MDk3 +N8YqNGNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46OmV4cGVjdDo6aDQ3YjA4ZGRlMDRmMDI2ZDPH +KlB2b2RvemVtYWM6OnR5cGVzOjpjdXJ2ZTI1NTE5OjpDdXJ2ZTI1NTE5U2VjcmV0S2V5Ojpmcm9t +X3NsaWNlOjpoMWNmMDgyYmNhYTVmMThiM8gqNWFlczo6c29mdDo6Zml4c2xpY2U6OmFkZF9yb3Vu +ZF9rZXk6Omg4ZjJmMzdmMzdmNGI0ZWMxySqyAmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5h +dmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6RWRnZT4+OjpkZWFsbG9jYXRpbmdfZW5kOjpoYzhjYTRjZTNmNmM4NDk2YcoqZTxjb3Jl +OjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6c2xpY2U6OmluZGV4OjpTbGljZUlu +ZGV4PFtUXT4+OjppbmRleF9tdXQ6OmgxYTY1NmM3Y2Q5MGRiMDljyyowPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmgxNTdiMWQwMjE2YmQ1ZDdmzCpUc2VyZGVfanNvbjo6ZGU6OkRlc2Vy +aWFsaXplcjxzZXJkZV9qc29uOjpyZWFkOjpTdHJSZWFkPjo6ZnJvbV9zdHI6Omg1NzllNTMzMDll +N2Y2MGFkzSo4c2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6cGVlazo6aDE2YmNiYTg1 +YTcwNGE0MjjOKjNzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I6OnN5bnRheDo6aGNmOWViYmNjNzQy +N2M0NzHPKjFieXRlczo6Ynl0ZXM6OmZyZWVfYm94ZWRfc2xpY2U6Omg1NGQyODc3NWM5MzMxOTgw +0Co4c3RkOjp0aHJlYWQ6OmxvY2FsOjpMb2NhbEtleTxUPjo6d2l0aDo6aDVhZDI2YWM1ODUzMTE5 +NGHRKr8BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpsYXN0X2xl +YWZfZWRnZTo6aGI2YWYyNTAyNjMxMWViMmTSKr8BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8 +Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpM +ZWFmT3JJbnRlcm5hbD4+OjpsYXN0X2xlYWZfZWRnZTo6aDZkMGY2NWRlYmY3OWRhMDTTKr8BYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpsYXN0X2xlYWZfZWRnZTo6 +aDE2YTExNDdlMjIzMDM5ZmbUKr8BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6 +OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlw +ZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRl +cm5hbD4+OjpsYXN0X2xlYWZfZWRnZTo6aDU2MDkzZjAzNjRjMTBlZjbVKr8BYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpsYXN0X2xlYWZfZWRnZTo6aDA1OWNjOGU4 +ZmU0OTY5MzbWKr8BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4+Ojps +YXN0X2xlYWZfZWRnZTo6aGI1YjM5ZDcyYjk4MTUyNjjXKr8BYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bmF2aWdhdGU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFy +a2VyOjpMZWFmT3JJbnRlcm5hbD4+OjpsYXN0X2xlYWZfZWRnZTo6aDdlNTllOTY0YmZhOWEwNzPY +Kmxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnNlY3JldDo6cmVxdWVzdDo6 +VG9EZXZpY2VTZWNyZXRSZXF1ZXN0RXZlbnRDb250ZW50Pjo6aGI2OTNiN2IwZTUzOTg2MmTZKnZj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6 +OnJvb21fa2V5X3JlcXVlc3Q6OlJvb21LZXlSZXF1ZXN0Q29udGVudD46Omg4ZTIzM2MzYzY3OTU5 +ZDNk2iqWAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lv +bl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9uTWFuYWdlcjo6ZW5jcnlwdF9m +b3JfZGV2aWNlczo6e3tjbG9zdXJlfX0+OjpoNTIyOWQ4Y2M1Zjk4MTNjYtsqmAFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBf +c2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmVuY3J5cHRfZm9yX2RldmljZXM6Ont7Y2xv +c3VyZX19Pjo6aDUyMjlkOGNjNWY5ODEzY2IuMdwqdnRyYWNpbmc6Omluc3RydW1lbnQ6Ol86Ojxp +bXBsIGNvcmU6Om9wczo6ZHJvcDo6RHJvcCBmb3IgdHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1 +bWVudGVkPFQ+Pjo6ZHJvcDo6aDI1NjUxMGRhOWJjNTE5YmXdKnZ0cmFjaW5nOjppbnN0cnVtZW50 +OjpfOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRyb3AgZm9yIHRyYWNpbmc6Omluc3RydW1lbnQ6 +Okluc3RydW1lbnRlZDxUPj46OmRyb3A6OmgxOTVhNmJmNGQzOTc0NWNh3ip2dHJhY2luZzo6aW5z +dHJ1bWVudDo6Xzo6PGltcGwgY29yZTo6b3BzOjpkcm9wOjpEcm9wIGZvciB0cmFjaW5nOjppbnN0 +cnVtZW50OjpJbnN0cnVtZW50ZWQ8VD4+Ojpkcm9wOjpoZGM2ZTMzNDdhODNkOTk4Md8qdnRyYWNp +bmc6Omluc3RydW1lbnQ6Ol86OjxpbXBsIGNvcmU6Om9wczo6ZHJvcDo6RHJvcCBmb3IgdHJhY2lu +Zzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+Pjo6ZHJvcDo6aDZkZTkzMTA4N2EyZDQ5MjPg +KnZ0cmFjaW5nOjppbnN0cnVtZW50OjpfOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRyb3AgZm9y +IHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPj46OmRyb3A6OmgzZTNmMzUxMzVk +MjZjOTgz4Sp2dHJhY2luZzo6aW5zdHJ1bWVudDo6Xzo6PGltcGwgY29yZTo6b3BzOjpkcm9wOjpE +cm9wIGZvciB0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8VD4+Ojpkcm9wOjpoZWYy +NDk1MDgzOGNmZGU5MeIqdnRyYWNpbmc6Omluc3RydW1lbnQ6Ol86OjxpbXBsIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcCBmb3IgdHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+Pjo6ZHJv +cDo6aDY5MzI0MTg5MjQxMzEwOTLjKnZ0cmFjaW5nOjppbnN0cnVtZW50OjpfOjo8aW1wbCBjb3Jl +OjpvcHM6OmRyb3A6OkRyb3AgZm9yIHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxU +Pj46OmRyb3A6Omg5ZjdlYTc5MmVhY2VkZGE15Cp2dHJhY2luZzo6aW5zdHJ1bWVudDo6Xzo6PGlt +cGwgY29yZTo6b3BzOjpkcm9wOjpEcm9wIGZvciB0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVt +ZW50ZWQ8VD4+Ojpkcm9wOjpoNjEwMWIxNjc1ODczMzhhNuUqdnRyYWNpbmc6Omluc3RydW1lbnQ6 +Ol86OjxpbXBsIGNvcmU6Om9wczo6ZHJvcDo6RHJvcCBmb3IgdHJhY2luZzo6aW5zdHJ1bWVudDo6 +SW5zdHJ1bWVudGVkPFQ+Pjo6ZHJvcDo6aDQzOTIzNzY1NzhhNGFjN2XmKnZ0cmFjaW5nOjppbnN0 +cnVtZW50OjpfOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRyb3AgZm9yIHRyYWNpbmc6Omluc3Ry +dW1lbnQ6Okluc3RydW1lbnRlZDxUPj46OmRyb3A6OmhiNWI0ZGU4MGUxMTExMWU05yp2dHJhY2lu +Zzo6aW5zdHJ1bWVudDo6Xzo6PGltcGwgY29yZTo6b3BzOjpkcm9wOjpEcm9wIGZvciB0cmFjaW5n +OjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8VD4+Ojpkcm9wOjpoOTdmMzg4OTcxYzgzMDlkN+gq +dnRyYWNpbmc6Omluc3RydW1lbnQ6Ol86OjxpbXBsIGNvcmU6Om9wczo6ZHJvcDo6RHJvcCBmb3Ig +dHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+Pjo6ZHJvcDo6aGUxNWQyM2NlYTU0 +ZWYwMjXpKnZ0cmFjaW5nOjppbnN0cnVtZW50OjpfOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRy +b3AgZm9yIHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPj46OmRyb3A6OmhhNTUx +NmMxNmFkOGQ4MzAy6ip2dHJhY2luZzo6aW5zdHJ1bWVudDo6Xzo6PGltcGwgY29yZTo6b3BzOjpk +cm9wOjpEcm9wIGZvciB0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8VD4+Ojpkcm9w +OjpoMzMzMWNhMmUwZjA5OGFlMesqdnRyYWNpbmc6Omluc3RydW1lbnQ6Ol86OjxpbXBsIGNvcmU6 +Om9wczo6ZHJvcDo6RHJvcCBmb3IgdHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+ +Pjo6ZHJvcDo6aDdiNWFiODQ3YWQ5OWRiODDsKjBzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X3N0 +cjo6aDk4MGQ1NTMyNzFmN2JjODPtKjJzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2J5dGVzOjpo +MDdlMjM5MTY1MmUxMTdmOe4qG21lZ29sbXYxYmFja3Vwa2V5X2FsZ29yaXRobe8qHGJhY2t1cGRl +Y3J5cHRpb25rZXlfdG9CYXNlNjTwKiVfX3diZ19zZXRfcGlja2xlZHNlc3Npb25fY3JlYXRpb25U +aW1l8SokX193Ymdfc2V0X3BpY2tsZWRzZXNzaW9uX2xhc3RVc2VUaW1l8iofbWlncmF0aW9uX21p +Z3JhdGVNZWdvbG1TZXNzaW9uc/MqYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6Oklu +dG9JdGVyPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYWI3MDc4MWI3 +ZWVhNjRlN/QqYzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixB +PiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoZmUyMmU3NjFkNDZmNWYwYfUqIW9s +bW1hY2hpbmVfcm9vbUtleVJlcXVlc3RzRW5hYmxlZPYqI29sbW1hY2hpbmVfcm9vbUtleUZvcndh +cmRpbmdFbmFibGVk9yoWcm9vbW1lc3NhZ2VyZXF1ZXN0X25ld/gqgAE8dHJhY2luZ19zdWJzY3Jp +YmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6c3Vic2Ny +aWJlcjo6U3Vic2NyaWJlcj46OnJlZ2lzdGVyX2NhbGxzaXRlOjpoMGYxMjIyYTM3YjYxMDljY/kq +aGNvcmU6Om9wczo6ZnVuY3Rpb246OmltcGxzOjo8aW1wbCBjb3JlOjpvcHM6OmZ1bmN0aW9uOjpG +bk11dDxBPiBmb3IgJm11dCBGPjo6Y2FsbF9tdXQ6OmhhNTUyZDBjYjY0OGJmY2Fm+ioiZW5jcnlw +dGlvbmluZm9fc2VuZGVyQ3VydmUyNTUxOUtlefsqcWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjppbml0aWFsaXplOjp7 +e2Nsb3N1cmV9fT46Omg0MmJkNjg0NTE1OGJkNzQ2/CqGAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpsaWJvbG1fbWlncmF0aW9uOjpNaWdyYXRpb246Om1p +Z3JhdGVfbWVnb2xtX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fT46OmgzNjBiODJhMDE2ZGJjZDNj/SqD +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpsaWJvbG1f +bWlncmF0aW9uOjpNaWdyYXRpb246Om1pZ3JhdGVfb2xtX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fT46 +OmhjNTc5NDAzNDg3MjM1MTZl/ipYPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxB +PiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNTUxMjNiNzJjZGZiYWNkZv8qWDxh +bGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aDkwYTJkMDk5NTQxYjUyNTaAK1g8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJ +bnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg5YmFkMWRiZTRj +MTAxOGVhgStYPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpv +cHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYWJjZjFjMTdiYjhmOGQ3M4IrWDxhbGxvYzo6dmVjOjpp +bnRvX2l0ZXI6OkludG9JdGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6 +aGJkNGJjZTQwNGQ2NWNlZjWDK1g8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxULEE+ +IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhkYjI2Y2RlNTM4MGY4M2VjhCsRZGV2 +aWNlX2lzVmVyaWZpZWSFKxxkZXZpY2VfaXNDcm9zc1NpZ25pbmdUcnVzdGVkhisbZGV2aWNlX2lz +Q3Jvc3NTaWduZWRCeU93bmVyhysTZGV2aWNlX2lzRGVoeWRyYXRlZIgrGXVzZXJkZXZpY2VzX2lz +QW55VmVyaWZpZWSJKxpvd251c2VyaWRlbnRpdHlfaXNWZXJpZmllZIorF3VzZXJpZGVudGl0eV9p +c1ZlcmlmaWVkiysTZGV2aWNlbGlzdHNfaXNFbXB0eYwrEnNpZ25hdHVyZXNfaXNFbXB0eY0rEHNp +Z25hdHVyZXNfY291bnSOKx1zaWduYXR1cmV2ZXJpZmljYXRpb25fdHJ1c3RlZI8rEXNhc19zdXBw +b3J0c0Vtb2ppkCsWc2FzX3N0YXJ0ZWRGcm9tUmVxdWVzdJErFnNhc19pc1NlbGZWZXJpZmljYXRp +b26SKxNzYXNfaGF2ZVdlQ29uZmlybWVkkysTc2FzX2hhc0JlZW5BY2NlcHRlZJQrDHNhc190aW1l +ZE91dJUrEnNhc19jYW5CZVByZXNlbnRlZJYrCnNhc19pc0RvbmWXKw9zYXNfaXNDYW5jZWxsZWSY +KxFxcl9oYXNCZWVuU2Nhbm5lZJkrE3FyX2hhc0JlZW5Db25maXJtZWSaKwlxcl9pc0RvbmWbKw5x +cl9pc0NhbmNlbGxlZJwrFXFyX2lzU2VsZlZlcmlmaWNhdGlvbp0rD3FyX3JlY2lwcm9jYXRlZJ4r +HXZlcmlmaWNhdGlvbnJlcXVlc3RfaXNQYXNzaXZlnysbdmVyaWZpY2F0aW9ucmVxdWVzdF9pc1Jl +YWR5oCscdmVyaWZpY2F0aW9ucmVxdWVzdF90aW1lZE91dKErJnZlcmlmaWNhdGlvbnJlcXVlc3Rf +aXNTZWxmVmVyaWZpY2F0aW9uoisadmVyaWZpY2F0aW9ucmVxdWVzdF9pc0RvbmWjKx92ZXJpZmlj +YXRpb25yZXF1ZXN0X2lzQ2FuY2VsbGVkpCsFc3RhcnSlK0Jjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8c3RkOjppbzo6ZXJyb3I6OkVycm9yPjo6aGM2MmZiZmFmMTNkYmU5MWKmK9ACY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZGlzcGxheV9uYW1l +Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19w +cm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmRpc3Bs +YXlfbmFtZTo6e3tjbG9zdXJlfX0sY29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnN0cmluZzo6 +U3RyaW5nPj46Ont7Y2xvc3VyZX19Pj46OmhhOTUzMWJkNzQwMDQ5MGNipytOPGFueWhvdzo6ZXJy +b3I6OkVycm9ySW1wbDxFPiBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6OmgwMGM2NGFh +NjY5NWUyNjZiqCtXPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2Vy +OjpTZXJpYWxpemVTdHJ1Y3Q+OjplbmQ6OmgzMmRjY2JjNzQyZjE3NGRiqStnc2VyZGU6OmRlOjpp +bXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgYWxsb2M6OnN5bmM6OkFyYzxU +Pj46OmRlc2VyaWFsaXplOjpoYTFkYTFjYWVhMmNiYmRhMaorZ3NlcmRlOjpkZTo6aW1wbHM6Ojxp +bXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpzeW5jOjpBcmM8VD4+OjpkZXNl +cmlhbGl6ZTo6aGQ0Y2QyZjY1MmJiOTc2NzOrK2dzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBhbGxvYzo6c3luYzo6QXJjPFQ+Pjo6ZGVzZXJpYWxpemU6 +OmhmYjdlMWZjMjI1N2Q2ZDkwrCtXY29yZTo6c2xpY2U6OmluZGV4Ojo8aW1wbCBjb3JlOjpvcHM6 +OmluZGV4OjpJbmRleDxJPiBmb3IgW1RdPjo6aW5kZXg6Omg0MzkxYzNlYWI1NWVkYTdjrStZPHNl +cmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1 +Y3Q+OjplbmQ6OmgzMmRjY2JjNzQyZjE3NGRiLjGuK15jb3JlOjpzbGljZTo6aW5kZXg6OjxpbXBs +IGNvcmU6Om9wczo6aW5kZXg6OkluZGV4TXV0PEk+IGZvciBbVF0+OjppbmRleF9tdXQ6OmgwODli +YWNjMzllNDBkODk4ryu/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1w +bCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxW +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+ +Pjo6bGFzdF9sZWFmX2VkZ2U6OmgyMGU5MmVkZjA5OTQxYzZhsCu/AWFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6bGFzdF9sZWFmX2VkZ2U6OmgwOTlkMzg2NGJmYTE2 +YzBhsSu/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+Pjo6bGFzdF9s +ZWFmX2VkZ2U6OmhjYTY0ZmFiMzQyYmU4MTA5siu/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TGVhZk9ySW50ZXJuYWw+Pjo6bGFzdF9sZWFmX2VkZ2U6Omg5M2Q4MWQ4MTQyOWFlMGNlsytJYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT46OmNsZWFyOjpoNWVl +NzZkMzU3YWRlNjQ0YbQrNnNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI6OmNvbGxlY3Rfc2VxOjpoYzNl +NGMwNmZiOTk0ZmQyZLUrwwE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21f +a2V5X3JlcXVlc3Q6OlN1cHBvcnRlZEtleUluZm8gYXMgY29yZTo6Y29udmVydDo6VHJ5RnJvbTxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfcmVxdWVzdDo6UmVxdWVz +dGVkS2V5SW5mbz4+Ojp0cnlfZnJvbTo6aGQ4M2JkMDNhM2I2ODQ3YzO2K1c8c2VyZGVfanNvbjo6 +c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OmVuZDo6 +aDc4MTU1ZTU4MDQwN2JlNmW3KzFjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6b2tfb3I6Omg2YzAz +MWIxMmFiZTBlNTE1uCtPPGNvcmU6OnRpbWU6OkR1cmF0aW9uIGFzIGNvcmU6OmNtcDo6UGFydGlh +bE9yZD46OnBhcnRpYWxfY21wOjpoZTViM2FlZWQxNThiNDFlY7krWG1hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OnFyY29kZTo6UXJWZXJpZmljYXRpb246OmlzX2NhbmNlbGxlZDo6aDEy +NGMzYzg1YjJmMWJjODS6KzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aDVhZDcy +Yjg1YThiZWYwZjC7KzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aDY4NzIxYTg1 +ZTMxYWRjMDm8KzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aDlhYmRjYTdhMGMy +NTJhOWW9KzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aGE0MmQ5MjFmNTNiOGRj +ZjW+KzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aGFiY2JkODQxZmVjMDY1N2W/ +KzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aGIzYjRhYWU1NGZkNWQyMWbAKzNh +bGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aGQwNjI3ZDM3ZGU2YmM1NWXBK/cBPHJ1 +bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6OlRv +RGV2aWNlS2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnQ+OjpkZXNlcmlhbGl6ZTo6X19G +aWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYm9ycm93ZWRfc3RyOjpo +M2VmNDU5YjU1OGU3ZDkxZcIrqQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpldmVudHM6OnRvX2RldmljZTo6VG9EZXZpY2VFdmVudDxtYXRyaXhfc2Rr +X2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6OlNlY3JldFNlbmRDb250ZW50Pj46 +OmhlMmQ2NGVhZjllNmY5NGE1wyuSAXJ1bWFfZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6Ol86Ojxp +bXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRl +ZDo6RW5jcnlwdGVkRXZlbnRTY2hlbWU+OjpzZXJpYWxpemU6Omg5ODc1NGY0MjY0MGMwMzQ5xCtY +bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXRp +ZXM6OmludG9fb3duOjpoYzM2ODdhODY0NDYwYzYyYsUrSm1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnNhczo6U2FzOjppc19jYW5jZWxsZWQ6OmhiMDZiNTgyMmU1MDViNzYzxitFbWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM6OmlzX2RvbmU6Omg0ODUyOWRi +MDVhYjU3NTYwxytYY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpn +b3NzaXBpbmc6Okdvc3NpcFJlcXVlc3Q+OjpoODg3M2JhNDdhNDM0MTVjM8grkwE8bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3Nlc3Npb25zOjp7e2Nsb3N1 +cmV9fTo6aGE5ODdhNThjM2RiZDY1NTbJK6ABPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVt +b3J5c3RvcmU6Ok1lbW9yeVN0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpDcnlwdG9TdG9yZT46OmdldF9pbmJvdW5kX2dyb3VwX3Nlc3Npb246Ont7Y2xvc3VyZX19Ojpo +OWNmMTY5NGZkZWI2ZDU0NsorcmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246 +Ok9wdGlvbjx3YXNtX2JpbmRnZW5fZnV0dXJlczo6dGFzazo6c2luZ2xldGhyZWFkOjpJbm5lcj4+ +OjpoNDRjMWI4MzdlYzljYWU2ZssrN2NvcmU6OnBhbmlja2luZzo6dW5yZWFjaGFibGVfZGlzcGxh +eTo6aGRiOWUyMTZhMzBmMmRhOTPMK0x0cmFjaW5nX3N1YnNjcmliZXI6OnJlZ2lzdHJ5OjpTcGFu +UmVmPFI+Ojp0cnlfd2l0aF9maWx0ZXI6OmgwZjZhMWUyNzBjYzlkNjI4zSs7dGhyZWFkX2xvY2Fs +OjpUaHJlYWRMb2NhbDxUPjo6Z2V0X29yX3RyeTo6aDhmY2E2NTBmMGM2OGQ2NDDOK0E8ZHluIHRy +YWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OmlzOjpoMzdhNzMxMGFiN2RhYTc3 +M88rMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfc3RyOjpoZWEyYjZkMDQzYmI1MTZmNNArWTxz +ZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3Ry +dWN0Pjo6ZW5kOjpoM2QyMzIwODk1ZTYzMTQ2My4y0StZPHNlcmRlX2pzb246OnNlcjo6Q29tcG91 +bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjplbmQ6OmgzZDIzMjA4OTVl +NjMxNDYzLjPSK0J2b2RvemVtYWM6OmNpcGhlcjo6Q2lwaGVyOjp2ZXJpZnlfdHJ1bmNhdGVkX21h +Yzo6aDk1ZjJjOTFhNTNkODdlNznTKzVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjptYXBfZXJy +OjpoNTdjNDI1ZTUwNjdlODcwY9QrQmFycmF5dmVjOjphcnJheXZlY19pbXBsOjpBcnJheVZlY0lt +cGw6OnRyeV9wdXNoOjpoMThiMDVkYzVhZDI1NzcyZdUrWTxzZXJkZV9qc29uOjpzZXI6OkNvbXBv +dW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6ZW5kOjpoM2QyMzIwODk1 +ZTYzMTQ2My401itNPHZvZG96ZW1hYzo6dHlwZXM6OktleUVycm9yIGFzIGNvcmU6OmVycm9yOjpF +cnJvcj46OnNvdXJjZTo6aGRlZDNlNTI1YWExODJiZjDXK1k8c2VyZGVfanNvbjo6c2VyOjpDb21w +b3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OmVuZDo6aDNkMjMyMDg5 +NWU2MzE0NjMuNdgrhAE8YWxsb2M6OmJveGVkOjpCb3g8ZHluIGNvcmU6OmVycm9yOjpFcnJvcitj +b3JlOjptYXJrZXI6OlN5bmMrY29yZTo6bWFya2VyOjpTZW5kPiBhcyBjb3JlOjpjb252ZXJ0OjpG +cm9tPEU+Pjo6ZnJvbTo6aGY0ZDcyMzM3N2M4OTZmMzbZK19jdXJ2ZTI1NTE5X2RhbGVrOjpiYWNr +ZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6Q29tcGxldGVkUG9pbnQ6OmFzX2V4dGVuZGVkOjpo +MTZmNjRmZmQ5ZTYwY2NkM9orRDxhbGxvYzo6dmVjOjpWZWM8Wj4gYXMgemVyb2l6ZTo6WmVyb2l6 +ZT46Onplcm9pemU6Omg3ODFlYzdkNjAyZTRhZDMz2yu/AWFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2Rl +UmVmPEJvcnJvd1R5cGUsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6TGVhZk9ySW50ZXJuYWw+Pjo6bGFzdF9sZWFmX2VkZ2U6Omg0ZTA5ZjM5YmZmMjFiODEw3CtJ +cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpVc2VySWQ6OnNlcnZlcl9uYW1lOjpo +NzA2YjhiZDVlMDU5NDIwMt0rMmdldHJhbmRvbTo6ZXJyb3I6OmludGVybmFsX2Rlc2M6OmhhNTY2 +NDViMTI0OTlmM2I53is4dHJhY2luZzo6c3Bhbjo6U3Bhbjo6bmV3Ojp7e2Nsb3N1cmV9fTo6aDA0 +NTNkM2M5YTg5ZmZlZWbfK0dhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRvd25ncmFkZTo6cGFuaWNf +Y29sZF9kaXNwbGF5OjpoZWJlZTNkYzU5ZWM0ODY1N+ArK3NlcmRlX2pzb246OmRlOjpmcm9tX3N0 +cjo6aDBiOTUwZjgzNmJhZjU2ODThKyZqc19zeXM6OkpTT046OnBhcnNlOjpoZDk2YjYzMTkyMGNh +ODA5MOIrKmpzX3N5czo6SlNPTjo6c3RyaW5naWZ5OjpoNjk0MzZlZDMzMmY1MTEyZeMrSTxhbGxv +Yzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aDZkNzNi +NzdmMjY0MDRmMDjkK3E8c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6OlN0YXRp +Y1N0clBheWxvYWQgYXMgY29yZTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OnRha2VfYm94OjpoNGIy +N2Y0NGQ3NDA2YjVhYeUrSzxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0 +ZT46OndyaXRlX3N0cjo6aDZkNzNiNzdmMjY0MDRmMDguMeYrKWNvcmU6OnBhbmlja2luZzo6cGFu +aWM6Omg2NzJlZjIxOGM0YzJhM2Y15ysvYWxsb2M6OnZlYzo6VmVjPFQsQT46OmFwcGVuZDo6aDlj +OWRjNWUyODdiN2ZkZGLoK2Bjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6RGV2aWNlS2V5cz46OmhiYTQwNjE3YTA4Njc5ZTBkLjbp +K3Rjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9s +bU1hY2hpbmU6OmdldF91c2VyX2RldmljZXM6Ont7Y2xvc3VyZX19Pjo6aDk5YmFkMWNhMGIzODhj +NzEuMeorLWFsbG9jOjp2ZWM6OlZlYzxULEE+OjpwdXNoOjpoYWRmMTU0Nzk3ZmUzNjIxMOsreWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +cm9vbTo6ZW5jcnlwdGVkOjpSb29tRW5jcnlwdGVkRXZlbnRDb250ZW50Pjo6aDc1MGRiMDM0MDlj +OGVjMGTsKy1hbGxvYzo6dmVjOjpWZWM8VCxBPjo6cHVzaDo6aDU3MTkzYzYwZTc5ZDQ4ZjXtK2o8 +cnVtYV9ldmVudHM6OnJvb206Omhpc3RvcnlfdmlzaWJpbGl0eTo6SGlzdG9yeVZpc2liaWxpdHkg +YXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg4OWVmNTdjNzg3NDNhY2Y47itiPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpSZWFkeSBhcyBjb3JlOjpjbG9u +ZTo6Q2xvbmU+OjpjbG9uZTo6aGM0OGIxYzgzOGYzNTVjNDnvKy1hbGxvYzo6dmVjOjpWZWM8VCxB +Pjo6cHVzaDo6aDkzNjQ1Y2EyNTY5NjA0MDDwK31jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGluZTo6YWNjZXB0 +X3NlY3JldDo6e3tjbG9zdXJlfX0+OjpoZTA3YTA2MGE3MjU0NDI5NvErhAFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29zc2lw +TWFjaGluZTo6cmVjZWl2ZV9zZWNyZXRfZXZlbnQ6Ont7Y2xvc3VyZX19Pjo6aGMyMzk5ZDk2NTk2 +MTM2OTXyK2xjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hp +bmU6Ok9sbU1hY2hpbmU6OmhhbmRsZV9rZXk6Ont7Y2xvc3VyZX19Pjo6aGJlNTc3OGJmNmFlOTUy +ZTHzK25jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6 +Ok9sbU1hY2hpbmU6OmFkZF9yb29tX2tleTo6e3tjbG9zdXJlfX0+OjpoMjIzOGNmODY1MDg3ZGFk +M/QrgQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNj +b3VudDo6QWNjb3VudDo6ZGVjcnlwdF9hbmRfcGFyc2Vfb2xtX21lc3NhZ2U6Ont7Y2xvc3VyZX19 +Pjo6aDY3YzMyMmE2MjE5OGY3NGP1K4YBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OnJlY2VpdmVfc2Vj +cmV0X2V2ZW50Ojp7e2Nsb3N1cmV9fT46OmhjMjM5OWQ5NjU5NjEzNjk1LjH2K39jb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29z +c2lwTWFjaGluZTo6YWNjZXB0X3NlY3JldDo6e3tjbG9zdXJlfX0+OjpoZTA3YTA2MGE3MjU0NDI5 +Ni4x9yt0Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5l +OjpPbG1NYWNoaW5lOjpnZXRfdXNlcl9kZXZpY2VzOjp7e2Nsb3N1cmV9fT46Omg5OWJhZDFjYTBi +Mzg4YzcxLjL4K4sBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpn +b3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OmNyZWF0ZV9vdXRnb2luZ19rZXlfcmVx +dWVzdDo6e3tjbG9zdXJlfX0+OjpoOTBkYzk5YmVkYTY3Y2Y1OfkrjAFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5 +TWFuYWdlcjo6Z2V0X3VwZGF0ZWRfa2V5c19mb3JfdXNlcjo6e3tjbG9zdXJlfX0+OjpoNmI5MTgz +NzA5Y2RiN2UzNvorLWFsbG9jOjp2ZWM6OlZlYzxULEE+OjpwdXNoOjpoOTAyMzExZDM4ZGJmNGY4 +MPsrcTxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmNyeXB0b19hbGdvcml0aG1zOjpEZXZpY2VL +ZXlBbGdvcml0aG0gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgwMGNkOGMxMDdjNTUz +Mjg4/CswY29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPjo6b2s6OmhjNmI1OTQwYWNhZmYyNWZj/Ssl +b2xtbWFjaGluZV9zZXRfcm9vbUtleVJlcXVlc3RzRW5hYmxlZP4rJ29sbW1hY2hpbmVfc2V0X3Jv +b21LZXlGb3J3YXJkaW5nRW5hYmxlZP8rhAF3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnNsaWNlczo6 +PGltcGwgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpIGZvciBhbGxv +Yzo6dmVjOjpWZWM8VD4+OjppbnRvX2FiaTo6aDI3YjkwMjFkYjNhNWFmY2OALJYBPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6dHJ5X3Rha2VfbGVh +c2VkX2xvY2s6OmhjMjYxMzg2ZTQ0MzBhMDhigSyWATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnRyeV90YWtlX2xlYXNlZF9sb2NrOjpoZGZjNzBi +Y2I5ZGMzNjFiNoIsM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoYmM3NTgwMmJh +ODQ0YzdhNIMsHGNyb3Nzc2lnbmluZ3N0YXR1c19oYXNNYXN0ZXKELCFjcm9zc3NpZ25pbmdzdGF0 +dXNfaGFzU2VsZlNpZ25pbmeFLCFjcm9zc3NpZ25pbmdzdGF0dXNfaGFzVXNlclNpZ25pbmeGLCNp +bmJvdW5kZ3JvdXBzZXNzaW9uX2hhc0JlZW5JbXBvcnRlZIcsVGluZGV4ZWRfZGJfZnV0dXJlczo6 +aWRiX29iamVjdF9zdG9yZTo6SWRiT2JqZWN0U3RvcmU6OmFkZF9rZXlfdmFsOjpoMDA2YjY1NDhj +MjE2NzRlZYgsvQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6bWFjaGluZTo6T2xtTWFjaGluZTo6Z2V0X3Jvb21fc2V0dGluZ3M6Ont7Y2xvc3VyZX19Ojpf +OjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfT2xtTWFjaGluZV9nZXRSb29tU2V0dGluZ3M6Ont7 +Y2xvc3VyZX19Pjo6aDNjZDliODM1MmIwN2YzODSJLGk8aGFzaGJyb3duOjpyYXc6OmJpdG1hc2s6 +OkJpdE1hc2tJdGVyIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6 +bmV4dDo6aGFiYWY3MWViODEyNmYwMGOKLGQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpFdmVu +dEVuY3J5cHRpb25BbGdvcml0aG0gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhhYTBh +MGRkZGI1YjlmZWFliyx4PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmlkZW50aWZpZXJzOjpVc2Vy +SWQgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkZyb21XYXNtQWJpPjo6ZnJvbV9h +Ymk6Omg0ODU5MjA4MTFmOWViY2YzjCxSPFQgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFp +dHM6OlJldHVybldhc21BYmk+OjpyZXR1cm5fYWJpOjpoMTc3MDE5MDkzYTk2ZTU2No0sIXNpZ25h +dHVyZXZlcmlmaWNhdGlvbl9kZXZpY2VTdGF0ZY4sH3NpZ25hdHVyZXZlcmlmaWNhdGlvbl91c2Vy +U3RhdGWPLA1zYXNfd2VTdGFydGVkkCwMcXJfd2VTdGFydGVkkSwYY2FuY2VsaW5mb19jYW5jZWxs +ZWRieVVzkiwddmVyaWZpY2F0aW9ucmVxdWVzdF93ZVN0YXJ0ZWSTLGU8Y29yZTo6b3BzOjpyYW5n +ZTo6UmFuZ2U8dXNpemU+IGFzIGNvcmU6OnNsaWNlOjppbmRleDo6U2xpY2VJbmRleDxbVF0+Pjo6 +aW5kZXhfbXV0OjpoNTc1MjdiNDUyY2E2MzY0ZZQsdzxmdXR1cmVzX3V0aWw6OmZuczo6TWFwRXJy +Rm48Rj4gYXMgZnV0dXJlc191dGlsOjpmbnM6OkZuT25jZTE8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8 +VCxFPj4+OjpjYWxsX29uY2U6OmgzODI3YzBhY2YzZmM4YmZilSwxc2VyZGU6OmRlOjpWaXNpdG9y +Ojp2aXNpdF9ib29sOjpoMjdhMjQzNTE3MzhjOWI1MZYsMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlz +aXRfdTY0OjpoZGY1ZDg1NDFlM2NmMWJhNZcsjQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGluZTo6Y3JlYXRl +X291dGdvaW5nX2tleV9yZXF1ZXN0Ojp7e2Nsb3N1cmV9fT46Omg5MGRjOTliZWRhNjdjZjU5LjGY +LMICY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0 +dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6 +aW1wb3J0X3Jvb21fa2V5czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0 +dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpP +bG1NYWNoaW5lOjppbXBvcnRfcm9vbV9rZXlzOjp7e2Nsb3N1cmV9fSxhbGxvYzo6c3RyaW5nOjpT +dHJpbmc+Ojp7e2Nsb3N1cmV9fT4+OjpoNmJmOTM0MGQ1NzUwOTA3ZZks5AJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpVc2VySWRlbnRpdHk6OnZlcmlmaWNhdGlv +bl9yZXF1ZXN0X2NvbnRlbnQ6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1 +dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRlbnRpdGll +czo6VXNlcklkZW50aXR5Ojp2ZXJpZmljYXRpb25fcmVxdWVzdF9jb250ZW50Ojp7e2Nsb3N1cmV9 +fSxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+Ojp7e2Nsb3N1cmV9fT4+OjpoMGNkM2YxZTNhNDMxZGE4 +Y5osNjxUIGFzIGNvcmU6OmNvbnZlcnQ6OkludG88VT4+OjppbnRvOjpoMWViMTJhYTZiMDIxNDIx +ZpssQjxUIGFzIGZ1dHVyZXNfdXRpbDo6Zm5zOjpGbk9uY2UxPEE+Pjo6Y2FsbF9vbmNlOjpoMDM2 +ZTZhMjRhYTg5NTE4YZwsPXdhc21fYmluZGdlbjo6VW53cmFwVGhyb3dFeHQ6OnVud3JhcF90aHJv +dzo6aDI4NGU1MWU5M2Y5NzdjNDadLEo8YWxsb2M6OnN0cmluZzo6RnJvbVV0ZjhFcnJvciBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2UzZjU1N2Y4Mzg3NmY0M54sVGNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTx2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpTZWNyZXRLZXlzPjo6aGQ2OWMx +NzcwNDdhYjQwYmMuMZ8sbTxzZXJkZTo6X19wcml2YXRlOjpkZTo6RmxhdE1hcERlc2VyaWFsaXpl +cjxFPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX21hcDo6aDljNDBi +N2MzNWJmODdjZjagLGdzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplIGZvciBhbGxvYzo6c3luYzo6QXJjPFQ+Pjo6ZGVzZXJpYWxpemU6OmgxNDVmMDkzMWJmZDEx +MjMwoSxnc2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Ig +YWxsb2M6OnN5bmM6OkFyYzxUPj46OmRlc2VyaWFsaXplOjpoMTZiOWU2MDliMjZjMWM2NqIsZ3Nl +cmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpz +eW5jOjpBcmM8VD4+OjpkZXNlcmlhbGl6ZTo6aDJiMTUyMDY0YTNhYWQzZGGjLGdzZXJkZTo6ZGU6 +OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBhbGxvYzo6c3luYzo6QXJj +PFQ+Pjo6ZGVzZXJpYWxpemU6Omg0MzVkNmY1Mjg0Y2Y2ZDg1pCxnc2VyZGU6OmRlOjppbXBsczo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgYWxsb2M6OnN5bmM6OkFyYzxUPj46OmRl +c2VyaWFsaXplOjpoNjQwNWRlNWIzNDNlOWFmNKUsZ3NlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNl +cmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpzeW5jOjpBcmM8VD4+OjpkZXNlcmlhbGl6 +ZTo6aDc3MjQxNjAzZDY1NDk4NTmmLEk8Y29yZTo6c3RyOjplcnJvcjo6VXRmOEVycm9yIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxN2ZkODM4YTQxNzVhZjkwpyzAATxtYXRyaXhfc2RrX3N0 +b3JlX2VuY3J5cHRpb246Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJp +eF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6Q2lwaGVyVGV4dEluZm8+OjpkZXNlcmlhbGl6ZTo6X19G +aWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfdTY0OjpoNWY5MzI5NGQy +NDYxZWZmZKgsSzxjb3JlOjpzdHI6OmVycm9yOjpVdGY4RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDE3ZmQ4MzhhNDE3NWFmOTAuMaksTDxhbGxvYzo6c3RyaW5nOjpGcm9tVXRmOEVy +cm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjZTNmNTU3ZjgzODc2ZjQzLjGqLDo8VCBh +cyBhbGxvYzo6Ym9ycm93OjpUb093bmVkPjo6dG9fb3duZWQ6OmgzZDkyZDUxNjc1NjFkZDEyqyxE +bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpzZXJpYWxpemVfY3VydmVfa2V5X3ZlYzo6aGNhNjAy +OTU1MmNlYjlkOGGsLFo8bWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3RzOjpPdXRnb2luZ1JlcXVl +c3QgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDUyNWY3YTVhNDU0NmIzMTCtLMYBPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpSZXF1ZXN0SGFuZGxlIGFzIGNv +cmU6OmNvbnZlcnQ6OkZyb208ZXllYmFsbDo6c2hhcmVkOjpTaGFyZWRPYnNlcnZhYmxlPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpJbm5lclJlcXVlc3Q+Pj46OmZy +b206Omg2ODIxNjQwYTZmNzhjZDkzrixhY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZl +bnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6OlN0YXJ0TWV0aG9kPjo6aDA1ZmFmMzc1MWFj +ZGUxNzYuNK8sM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoZGUzZDA3Y2MwMmRi +MTM5NLAsM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoZTU0MDcxNDMzNDFkZGE5 +NLEsbDxjb3JlOjppdGVyOjphZGFwdGVyczo6R2VuZXJpY1NodW50PEksUj4gYXMgY29yZTo6aXRl +cjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMWQ5OGFjYmQwYjkxMmVlMrIs +czxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6Oldp +dGhoZWxkQ29kZSBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDk5MDI4NDhkMWYyMzA5 +MjGzLKMBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6 +ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +OjpldmVudHM6OnJvb21fa2V5OjpSb29tS2V5Q29udGVudD4+OjpoMzAzYmE0ZjNjY2E2Y2ZmZrQs +ejxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6Oldp +dGhoZWxkQ29kZSBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6OmgxZGYxYWUz +YzYxNWNkNzE0tSxKc3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNoTWFwPEssVixTPjo6 +dmFsdWVzX211dDo6aDZhZmRjNGU0OTdjYmI2NjS2LGhjb3JlOjpvcHM6OmZ1bmN0aW9uOjppbXBs +czo6PGltcGwgY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5NdXQ8QT4gZm9yICZtdXQgRj46OmNhbGxf +bXV0OjpoNWI3NzUxNTM3YjdkNmU2YrcsMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfZjY0Ojpo +Mzg5OGQ1YzJiZDhjYmU1YrgsR21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6 +U2FzOjp0aW1lZF9vdXQ6OmgzZjM3ODc1NzBhNzRkZmE2uSxTPHZvZG96ZW1hYzo6b2xtOjphY2Nv +dW50OjpJZGVudGl0eUtleXMgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDc2OWI0YzA1NjI4 +ZDM2MWS6LGg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRl +cjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoOWJjNDQxOGNkNDkzMmQ3Obss +UzxydW1hX2V2ZW50czo6Y2FsbDo6U2Vzc2lvbkRlc2NyaXB0aW9uIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6OmgwNjEwNWExZjc5NDdmZDNmvCxIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNv +cmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhiZTJhMjk4YTU0MDlkMzUxvSxIPGFsbG9jOjp2 +ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhjODE1N2Q3YjIy +NzQxOWZkvixsPHZvZG96ZW1hYzo6bWVnb2xtOjpzZXNzaW9uX2tleXM6OkV4cG9ydGVkU2Vzc2lv +bktleSBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6OmhhZTg1YjI4OWY0ODBl +MmZmvyxWPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmUgYXMgY29yZTo6b3BzOjpkZXJl +Zjo6RGVyZWY+OjpkZXJlZjo6aGU3YmUwMmQ1YTkxZDk3NmPALFs8bWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjpTZWNyZXRJbXBvcnRFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omhi +MmE4OWU2MmM3YzgyNzlmwSxUcXJjb2RlOjpjYW52YXM6OkNhbnZhczo6Y29tcHV0ZV9maW5kZXJf +cGVuYWx0eV9zY29yZTo6e3tjbG9zdXJlfX06OmhjZWUyNmU5MjIxN2U5ZjI1wixUcXJjb2RlOjpj +YW52YXM6OkNhbnZhczo6Y29tcHV0ZV9maW5kZXJfcGVuYWx0eV9zY29yZTo6e3tjbG9zdXJlfX06 +OmgxMWNkNWIzNzYxNzc0ZTdiwyxLPGNvcmU6OnN0cjo6ZXJyb3I6OlV0ZjhFcnJvciBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTdmZDgzOGE0MTc1YWY5MC4yxCyAATx0cmFjaW5nX3N1YnNj +cmliZXI6OmxheWVyOjpsYXllcmVkOjpMYXllcmVkPEwsUz4gYXMgdHJhY2luZ19jb3JlOjpzdWJz +Y3JpYmVyOjpTdWJzY3JpYmVyPjo6cmVnaXN0ZXJfY2FsbHNpdGU6OmgyMWNhYjM3YTgwMDU1OTE2 +xSxHPHRyYWNpbmdfY29yZTo6ZmllbGQ6Okl0ZXIgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDA5NWI2MmQzNDUxNjg4MTPGLDJ0aHJlYWRfbG9jYWw6OmRlYWxsb2NhdGVfYnVja2V0OjpoY2U5 +YzdiMjJiYTFiZmE4NccsYzxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6 +c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleDo6aGFmZDNhMDk2YTE0Nzk5ZTUu +MsgsRzxwcm9zdDo6ZXJyb3I6OkVuY29kZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg2N2ZmYmQyZTQzNWY0MzQxySxMPGFsbG9jOjpzdHJpbmc6OkZyb21VdGY4RXJyb3IgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNlM2Y1NTdmODM4NzZmNDMuMsosT2N1cnZlMjU1MTlfZGFs +ZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludDo6YXNfcHJvamVjdGl2ZV9uaWVsczo6aDRkODM3ZjIx +OTJmYWIzMDjLLHw8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6 +aXRlcjo6dHJhaXRzOjpkb3VibGVfZW5kZWQ6OkRvdWJsZUVuZGVkSXRlcmF0b3I+OjpuZXh0X2Jh +Y2s6Omg5NzE0ZjI4ZjQxM2JjNjMxzCw5dG9raW86OnV0aWw6Ondha2VfbGlzdDo6V2FrZUxpc3Q6 +OnB1c2g6OmhmMjY1YjEyZGMxNGU5YjljzSxIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6 +Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg4ZDZkMWI4ZTZhNjIyYTIyzixIPGFsbG9jOjp2ZWM6 +OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhhMGU5MmYyNGQyN2Fk +Yjlkzywwc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9mNjQ6OmgwOTUyMzVmN2UyYTJlZmM40CxM +PGFsbG9jOjpzdHJpbmc6OkZyb21VdGY4RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aGNlM2Y1NTdmODM4NzZmNDMuM9EsQGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OnNs +aWNlX3JlbW92ZTo6aDFmZWIyZDlmODg2OWRiZTfSLC1wcHZfbGl0ZTg2OjpnZW5lcmljOjpkbWFw +Mjo6aGIyM2YyNTQ1Yzc0NjlkZDjTLE08dHJhY2luZ19jb3JlOjpmaWVsZDo6RmllbGRTZXQgYXMg +Y29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZGM1MzYwYWZjNTU0YjRlM9QsiwE8PCZzZXJkZV9q +c29uOjpyYXc6OlJhd1ZhbHVlIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6 +ZTo6UmVmZXJlbmNlVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+OjpleHBlY3Rpbmc6Omg0 +NTY4NWYxMzQxOWM4Nzc11SxkPHNlcmRlX2pzb246OnJhdzo6Qm9ycm93ZWRSYXdEZXNlcmlhbGl6 +ZXIgYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X2tleV9zZWVkOjpoYzM0OGZmMDgwY2Q0 +YWQxMNYsL2J5dGVzOjpieXRlczo6cmVsZWFzZV9zaGFyZWQ6OmhjZDJiZTNjOWU4NmRmOWQ31yzL +AmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN5bmNl +ZEtleVF1ZXJ5TWFuYWdlcjo6bWFya190cmFja2VkX3VzZXJzX2FzX2NoYW5nZWQ8Y29yZTo6aXRl +cjo6YWRhcHRlcnM6Om1hcDo6TWFwPGNvcmU6OnNsaWNlOjppdGVyOjpJdGVyPHJ1bWFfY29tbW9u +OjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQ+LG1hdHJpeF9zZGtfY3J5cHRvOjpt +YWNoaW5lOjpPbG1NYWNoaW5lOjpwcmVwcm9jZXNzX3N5bmNfY2hhbmdlczo6e3tjbG9zdXJlfX06 +Ont7Y2xvc3VyZX19Pj46Ont7Y2xvc3VyZX19Pjo6aGY2ZTlmN2UyODllMzZiYjTYLDJjb3JlOjpv +cHRpb246Ok9wdGlvbjxUPjo6ZXhwZWN0OjpoZTdjNWUyYjEwZTM2MTljZNksiAFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVh +ZE9ubHlEZXZpY2U6OmdldF9tb3N0X3JlY2VudF9zZXNzaW9uOjp7e2Nsb3N1cmV9fT46OmgzN2Y2 +OTdhYzdhN2I1ZWIx2iw0Y29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6aGU3YzVlMmIx +MGUzNjE5Y2QuMdss8wNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjpTeW5jZWRLZXlRdWVyeU1hbmFnZXI6Om1hcmtfdHJhY2tlZF91c2Vyc19hc191cF90 +b19kYXRlPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjptYXA6OktleXM8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25l +ZFVzZXJJZCxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29t +bW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkLHJ1bWFfY29tbW9uOjpz +ZXJkZTo6cmF3OjpSYXc8cnVtYV9jb21tb246OmVuY3J5cHRpb246OkRldmljZUtleXM+Pj4sPHJ1 +bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQgYXMgY29yZTo6b3Bz +OjpkZXJlZjo6RGVyZWY+OjpkZXJlZj4+Ojp7e2Nsb3N1cmV9fT46OmhiMTgyMTE4YTM1NmQxNTA4 +3CyDAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2Nv +dW50OjpBY2NvdW50OjpwYXJzZV9kZWNyeXB0ZWRfdG9fZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9 +fT46OmhiMmQxZTNiMDA0ZGY3ZDA23Sw0Y29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6 +aGU3YzVlMmIxMGUzNjE5Y2QuMt4shQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6cGFyc2VfZGVjcnlwdGVkX3RvX2Rldmlj +ZV9ldmVudDo6e3tjbG9zdXJlfX0+OjpoYjJkMWUzYjAwNGRmN2QwNi4x3yxIPGNvcmU6Om9wdGlv +bjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6Omg5MTMzMGI4Yzg4YzAw +MjAz4Cw0Y29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6aGU3YzVlMmIxMGUzNjE5Y2Qu +M+EsaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0 +cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhjNDIzMTA0MTJjM2I3ZGM24iwdX193 +YmdfZ2V0X3Jvb21rZXljb3VudHNfdG90YWzjLCBfX3diZ19nZXRfcm9vbWtleWNvdW50c19iYWNr +ZWRVcOQsHG1pZ3JhdGlvbl9taWdyYXRlT2xtU2Vzc2lvbnPlLB9vbG1tYWNoaW5lX2RldmljZUNy +ZWF0aW9uVGltZU1z5iw0Y29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6aGU3YzVlMmIx +MGUzNjE5Y2QuNOcsL2RlY3J5cHRlZHJvb21ldmVudF9mb3J3YXJkaW5nQ3VydmUyNTUxOUtleUNo +YWlu6Cx6PGluZGV4ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6Y291bnRfZnV0dXJl +OjpDb3VudEZ1dHVyZSBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aDk1 +NzVmNTc1NDM5ODc0M2XpLDRjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6ZXhwZWN0OjpoZTdjNWUy +YjEwZTM2MTljZC416ixrY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyZWh5ZHJhdGU6Ont7Y2xvc3VyZX19Pjo6aGMxYWE3NDUy +YThjN2U5YTXrLHJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6bWFjaGluZTo6T2xtTWFjaGluZTo6aW5pdF9oZWxwZXI6Ont7Y2xvc3VyZX19Pjo6aDU1ZDM3 +NGQyM2Y1ZGNmYjHsLIoBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjpnZXRfbW9zdF9yZWNlbnRfc2Vz +c2lvbjo6e3tjbG9zdXJlfX0+OjpoMzdmNjk3YWM3YTdiNWViMS4z7Sw0Y29yZTo6b3B0aW9uOjpP +cHRpb248VD46OmV4cGVjdDo6aGU3YzVlMmIxMGUzNjE5Y2QuNu4sigFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlE +ZXZpY2U6OmdldF9tb3N0X3JlY2VudF9zZXNzaW9uOjp7e2Nsb3N1cmV9fT46OmgzN2Y2OTdhYzdh +N2I1ZWIxLjTvLD5oYXNoYnJvd246OnJhdzo6UmF3VGFibGVJbm5lcjo6ZnJlZV9idWNrZXRzOjpo +Mzc1NDk1ZTUzMjA1NDU5YvAsYTxkaWdlc3Q6OmNvcmVfYXBpOjp3cmFwcGVyOjpDb3JlV3JhcHBl +cjxUPiBhcyBjb3JlOjpkZWZhdWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aDFmMzI0NzI1YzcyN2U0 +ZTLxLCtfX3diZ19nZXRfZW5jcnlwdGlvbnNldHRpbmdzX3JvdGF0aW9uUGVyaW9k8iwzX193Ymdf +Z2V0X2VuY3J5cHRpb25zZXR0aW5nc19yb3RhdGlvblBlcmlvZE1lc3NhZ2Vz8yzJATxydW1hX2V2 +ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZv +ciBydW1hX2V2ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpSZXF1ZXN0QWN0aW9uSnNvblJlcHI+Ojpk +ZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRf +c3RyOjpoNzhhODI1ZGIwNWViNmZjMPQsL2NvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+OjptYXA6Omg4 +M2EzNTdkMDk3ZjYxY2Uy9SxVPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6U2lnbmF0dXJlIGFz +IGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYWFhYmQ1MGFmNDYzODY1NPYsEHN0b3JlaGFu +ZGxlX29wZW73LFtjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +c2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPj46Omg5OWJkNDFlZGU3ODU0ZDJj+Cx3PGZ1dHVyZXNf +dXRpbDo6Zm5zOjpNYXBFcnJGbjxGPiBhcyBmdXR1cmVzX3V0aWw6OmZuczo6Rm5PbmNlMTxjb3Jl +OjpyZXN1bHQ6OlJlc3VsdDxULEU+Pj46OmNhbGxfb25jZTo6aDBiNzQ0Y2NmMWMyZDAzYTL5LHc8 +ZnV0dXJlc191dGlsOjpmbnM6Ok1hcEVyckZuPEY+IGFzIGZ1dHVyZXNfdXRpbDo6Zm5zOjpGbk9u +Y2UxPGNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT4+Pjo6Y2FsbF9vbmNlOjpoNDY2Y2YyZjA5MmNh +MjllMPosNWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46Om1hcF9lcnI6OmhmZDI5ZGYyNTc3ZWUw +NDg2+yw0Y29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6aGU3YzVlMmIxMGUzNjE5Y2Qu +N/wswgE8cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpE +ZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Q2lwaGVydGV4dElu +Zm8+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6 +dmlzaXRfc3RyOjpoZjA0ZTU2MjZhYmNhYjNjN/0s0QE8cnVtYV9ldmVudHM6OnJvb206OmVuY3J5 +cHRlZDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJv +b206OmVuY3J5cHRlZDo6T2xtVjFDdXJ2ZTI1NTE5QWVzU2hhMkNvbnRlbnQ+OjpkZXNlcmlhbGl6 +ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoMjQy +ZTkwNWQ4YzQ5MTliNf4s3gE8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnJlbGF0aW9uX3Nl +cmRlOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cm9v +bTo6bWVzc2FnZTo6cmVsYXRpb25fc2VyZGU6OlRocmVhZERlSGVscGVyPjo6ZGVzZXJpYWxpemU6 +Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aDNhMThh +OWNkZWM0NGQ3Y2b/LOYBPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpyZWxhdGlvbl9zZXJk +ZTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206 +Om1lc3NhZ2U6OnJlbGF0aW9uX3NlcmRlOjpUaHJlYWRVbnN0YWJsZURlSGVscGVyPjo6ZGVzZXJp +YWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6 +aDAwYzQwM2MxNWM0NTM4ODaALTJjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6ZXhwZWN0OjpoNGU2 +ZjM2ZmMxMTkwYTc4MoEtnQM8PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6Oklu +ZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpD +cnlwdG9TdG9yZT46OnRyeV90YWtlX2xlYXNlZF9sb2NrOjp7e2Nsb3N1cmV9fTo6Xzo6PGltcGwg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9f +c3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +dHJhaXRzOjpDcnlwdG9TdG9yZT46OnRyeV90YWtlX2xlYXNlZF9sb2NrOjp7e2Nsb3N1cmV9fTo6 +TGVhc2U+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9y +Pjo6dmlzaXRfc3RyOjpoNDVlYzg3MTA2ZjU1NWRmZIIt5gE8bWF0cml4X3Nka19jcnlwdG86Om9s +bTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6 +OlNoYXJlZFdpdGg+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpW +aXNpdG9yPjo6dmlzaXRfc3RyOjpoMmFjMzA5Y2Q0MzZiODQ3NYMtMWNvcmU6OnJlc3VsdDo6UmVz +dWx0PFQsRT46Om1hcDo6aDBhNmRmNzhhNjk5YjE4NTaELTFjb3JlOjpyZXN1bHQ6OlJlc3VsdDxU +LEU+OjptYXA6OmhhMDI2Y2MzMDFiOWMzYWY5hS3kATxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpz +aWduaW5nOjpwa19zaWduaW5nOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBt +YXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5nOjpQaWNrbGVkU2VsZlNp +Z25pbmc+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9y +Pjo6dmlzaXRfc3RyOjpoYWY2YWNkZTk5YzI2YjdmNYYtR2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I+OjpoYTA1YWUwOGM2YTA2NThkZi4xhy0wc2VyZGU6 +OmRlOjpWaXNpdG9yOjp2aXNpdF9pNjQ6OmhlYmUzMDY0NGU1MjQ3NTNkiC0wc2VyZGU6OmRlOjpW +aXNpdG9yOjp2aXNpdF9pNjQ6OmhiYjRkOGQ5YmUwZmRhOGUyiS0wc2VyZGU6OmRlOjpWaXNpdG9y +Ojp2aXNpdF9pNjQ6OmgxOWE1MDQyMDE4MDVlZTAyii0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNp +dF91NjQ6Omg2Y2UxODkzNTY0Mjk3MzY2iy0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF91NjQ6 +OmhhYjVmMzY0ZGY1MTc3NWMyjC0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF91NjQ6Omg4NjM3 +NWVmNDk0YWQ1OWQ5jS0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9mNjQ6OmgyNzUyM2VjYjhh +ZWNjMTE5ji0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9mNjQ6Omg1ZGQ3OWYwNzY0ZDIxNjQ1 +jy0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9mNjQ6OmgxMTVkNGNiMmU0NjA0ZThikC3oATw8 +bWF0cml4X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplIGZvciBtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246OktkZkluZm8+OjpkZXNlcmlhbGl6 +ZTo6X19WaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2VudW06Ol9fRmllbGRW +aXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aDM0OTFmMmVmZWRhZWVl +YTWRLe8BPDxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246Ol86OjxpbXBsIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6Q2lwaGVyVGV4dElu +Zm8+OjpkZXNlcmlhbGl6ZTo6X19WaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0 +X2VudW06Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6 +aGRlMTYzNjQ0MzA3ZDdjMmOSLcYBPG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19zdG9yZV9lbmNyeXB0aW9u +OjpFbmNyeXB0ZWRTdG9yZUNpcGhlcj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBz +ZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhjYWQ4YTRiNTVlZDU5MTM2ky0yc2VyZGU6 +OmRlOjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aDIxODJiMGIwMDk2ZjJlM2KULTJzZXJkZTo6ZGU6 +OlZpc2l0b3I6OnZpc2l0X2J5dGVzOjpoNTkwZTdlYmZkNmJkOGQwNZUtMnNlcmRlOjpkZTo6Vmlz +aXRvcjo6dmlzaXRfYnl0ZXM6OmhjZjRlZDU2ZTUzNTNiMTEyli0wc2VyZGU6OmRlOjpWaXNpdG9y +Ojp2aXNpdF9pNjQ6Omg1NjljMWVhZjhkYTllMjIyly0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNp +dF9pNjQ6OmhjN2Q5ZTNmNjU2YTA2NmZhmC0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF91NjQ6 +Omg2ZTM0ZTZjYWFlOTZmNDc0mS0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF91NjQ6Omg2ZWM0 +MzBjZmYyMzk4MzQ5mi0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9mNjQ6OmgyZjRkYmM4NWJh +ZGQ0MjZkmy0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9mNjQ6Omg2ZjViZjVkMzcyNGVkYTQ0 +nC0wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9zdHI6OmgwMjU5ZDE4YTA3ODQ1ZWU3nS0wc2Vy +ZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9zdHI6OmgyNjNlNDBlNjkwOTVkZjNmni0wc2VyZGU6OmRl +OjpWaXNpdG9yOjp2aXNpdF9zdHI6Omg1M2U1ZjE5MmI3ZTg0ODM3ny1GPGFsbG9jOjpyYzo6UmM8 +VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoM2QxYTNiNTZkMmE1YmQ2MqAt +YWluZGV4ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6aWRiX29wZW5fZGJfcmVxdWVzdF9yZWY6Oklk +Yk9wZW5EYlJlcXVlc3RSZWY6Om5ldzo6aDdjM2M4YzRkOTE3YjdiNjmhLVlhbnlob3c6OmVycm9y +Ojo8aW1wbCBjb3JlOjpvcHM6OmRlcmVmOjpEZXJlZiBmb3IgYW55aG93OjpFcnJvcj46OmRlcmVm +OjpoMTc2NGY0MjBkMTY3NWNiZaItuwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpO +b2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxW +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+ +Ojpwb3BfaW50ZXJuYWxfbGV2ZWw6OmhiZTcxMzVhZjgyODYwY2Nmoy1tPG1hdHJpeF9zZGtfY3J5 +cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6Y29tbW9uOjpTaWduaW5nS2V5IGFzIGNvcmU6OmNs +b25lOjpDbG9uZT46OmNsb25lOjpoYjRkMmRiMjI0YzI0Mzc4ZKQtYzxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjptYXA6OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+ +Ojpkcm9wOjpoMzA1OWM3MzMwMjMzMGZiOKUtbjxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRp +b246OktleUFncmVlbWVudFByb3RvY29sIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHN0cj4+Ojph +c19yZWY6OmhlYjEzNjA0NDc5OGZiN2M5pi1zPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlv +bjo6U2hvcnRBdXRoZW50aWNhdGlvblN0cmluZyBhcyBjb3JlOjpjb252ZXJ0OjpBc1JlZjxzdHI+ +Pjo6YXNfcmVmOjpoNDJlMWQ0NjAzZThlZDRiY6ctZDwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2Vy +aWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfYm9vbDo6 +aGVhZWUzMGZjYjdjZGM5M2WoLWw8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpFdmVudEVuY3J5 +cHRpb25BbGdvcml0aG0gYXMgY29yZTo6Y29udmVydDo6QXNSZWY8c3RyPj46OmFzX3JlZjo6aGE5 +ZTE2ZjEwMGU3NzdhNmKpLegBPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6a2V5Ojpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJp +ZmljYXRpb246OmtleTo6VG9EZXZpY2VLZXlWZXJpZmljYXRpb25LZXlFdmVudENvbnRlbnQ+Ojpk +ZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRf +c3RyOjpoMjZmOTYwMmM5MjAwZDVjMaotMmNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+OjpleHBlY3Q6 +OmhjOWRjNzhiMWRjMjNjYTliqy1fPHJ1bWFfZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpBY3Rp +b24gYXMgY29yZTo6Y29udmVydDo6QXNSZWY8c3RyPj46OmFzX3JlZjo6aDIzZTQ3MTAxNWQxZDNj +ZTmsLTRjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6ZXhwZWN0OjpoYzlkYzc4YjFkYzIzY2E5Yi4x +rS1RbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlv +bjo6c3RhdGU6OmhiYWU3YjgzNzkyNzI0MDcyri1YbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNh +dGlvbjo6cmVxdWVzdHM6OlZlcmlmaWNhdGlvblJlcXVlc3Q6OnN0YXRlOjpoY2E1YjViMjNmMWVi +M2EwNa8tNGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+OjpleHBlY3Q6OmhjOWRjNzhiMWRjMjNjYTli +LjKwLZsBcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6Xzo6PGltcGwgc2Vy +ZGU6OnNlcjo6U2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0 +YXJ0OjpTdGFydE1ldGhvZD46OnNlcmlhbGl6ZTo6aDdkM2JjMjFkYjViMjczMjKxLZsBcnVtYV9l +dmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2Vy +aWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0YXJ0OjpTdGFydE1l +dGhvZD46OnNlcmlhbGl6ZTo6aGU4OTZlMTVhMzcyYjg5NGayLTRjb3JlOjpvcHRpb246Ok9wdGlv +bjxUPjo6ZXhwZWN0OjpoYzlkYzc4YjFkYzIzY2E5Yi4zsy00Y29yZTo6b3B0aW9uOjpPcHRpb248 +VD46OmV4cGVjdDo6aGM5ZGM3OGIxZGMyM2NhOWIuNLQtvgE8dm9kb3plbWFjOjpvbG06Om1lc3Nh +Z2VzOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6 +bWVzc2FnZXM6Ok1lc3NhZ2VTZXJkZUhlbHBlcj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRv +ciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhjMzI5NTI1MGUzZDJmZTgwtS00 +Y29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6aGM5ZGM3OGIxZGMyM2NhOWIuNbYtSTxU +IGFzIGNvcmU6OnNsaWNlOjpjbXA6OlNsaWNlQ29udGFpbnM+OjpzbGljZV9jb250YWluczo6aDll +ZDAwNmVkMzdjNjEyODW3LUltYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OlNh +czo6c3RhdGVfZGVidWc6OmhiOWMxNTQyODJlMzQ0YTNiuC01PEQgYXMgZGlnZXN0OjpkaWdlc3Q6 +OkRpZ2VzdD46Om5ldzo6aDIyZGZlNGFmYjhmMDgwYWO5LTRjb3JlOjpvcHRpb246Ok9wdGlvbjxU +Pjo6ZXhwZWN0OjpoYzlkYzc4YjFkYzIzY2E5Yi42ui00Y29yZTo6b3B0aW9uOjpPcHRpb248VD46 +OmV4cGVjdDo6aGM5ZGM3OGIxZGMyM2NhOWIuN7stMmNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Ojpl +eHBlY3Q6OmgwMmRjOGJjNDMwNmIyZTg4vC1SPGdsb29fdGltZXJzOjpjYWxsYmFjazo6VGltZW91 +dCBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMmU3ZWM2Nzk0MjBjOWQwM70twwE8 +dm9kb3plbWFjOjpvbG06OnNlc3Npb246OnJhdGNoZXQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyYXRjaGV0OjpSYXRjaGV0Pjo6 +ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0 +X3N0cjo6aGRjMmZlNzI1Y2MxNmNmMja+LbcBPHZvZG96ZW1hYzo6bWVnb2xtOjpyYXRjaGV0Ojpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om1lZ29sbTo6cmF0 +Y2hldDo6UmF0Y2hldD46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6 +OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhiZWJhYTk2N2Q0Nzg0MzNivy3IATx2b2RvemVtYWM6Om9s +bTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZv +ciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpDaGFpbktleT46OmRlc2VyaWFs +aXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omhj +NDhhYWRmODU5YmM3MTk2wC1rPGNiYzo6ZW5jcnlwdDo6RW5jcnlwdG9yPEM+IGFzIGNpcGhlcjo6 +YmxvY2s6OkJsb2NrRW5jcnlwdE11dD46OmVuY3J5cHRfd2l0aF9iYWNrZW5kX211dDo6aDVkMmVm +ZjU1ZjEwMWRlODPBLVt2b2RvemVtYWM6Om1lZ29sbTo6aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpJ +bmJvdW5kR3JvdXBTZXNzaW9uOjpleHBvcnRfYXQ6Omg2NTI0ZDcyZTIwODMzMGY5wi1Ydm9kb3pl +bWFjOjptZWdvbG06OmluYm91bmRfZ3JvdXBfc2Vzc2lvbjo6SW5ib3VuZEdyb3VwU2Vzc2lvbjo6 +cGlja2xlOjpoOTNhMmRlNjczMzJjZTgzMcMtazxjYmM6OmRlY3J5cHQ6OkRlY3J5cHRvcjxDPiBh +cyBjaXBoZXI6OmJsb2NrOjpCbG9ja0RlY3J5cHRNdXQ+OjpkZWNyeXB0X3dpdGhfYmFja2VuZF9t +dXQ6Omg3MmExNTNhOTJhYWU0N2NkxC29ATxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6Xzo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206Om1lc3Nh +Z2U6OkZvcm1hdHRlZEJvZHk+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6 +OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoZjY3MmEyNjcyYzE1MDFiNMUt/wE8cnVtYV9ldmVu +dHM6OnJvb206OnRodW1ibmFpbF9zb3VyY2Vfc2VyZGU6OmRlc2VyaWFsaXplOjpfOjo8aW1wbCBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cm9vbTo6dGh1bWJuYWlsX3Nv +dXJjZV9zZXJkZTo6ZGVzZXJpYWxpemU6OlRodW1ibmFpbFNvdXJjZUpzb25SZXByPjo6ZGVzZXJp +YWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6 +aGI0YjllOTY4NmM2MTJjOWbGLZ0CPDxydW1hX2V2ZW50czo6cm9vbTo6TWVkaWFTb3VyY2UgYXMg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpfOjo8aW1wbCBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplIGZvciA8cnVtYV9ldmVudHM6OnJvb206Ok1lZGlhU291cmNlIGFzIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6TWVkaWFTb3VyY2VKc29uUmVwcj46OmRl +c2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9z +dHI6OmgzZDRiM2UwMDgxMTgzOWRmxy1BPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpj +bXA6Ok9yZD46OmNtcDo6aDM3MDhkMzk0M2VhODMyODPILUdydW1hX2NvbW1vbjo6aWRlbnRpZmll +cnM6OnVzZXJfaWQ6OlVzZXJJZDo6bG9jYWxwYXJ0OjpoYjI3MDExNTI2ZjYyNTNmOcktN3NlcmRl +X2pzb246OmRlOjpEZXNlcmlhbGl6ZXI8Uj46Om5ldzo6aDY3ZGEwMDczNDdmMDU0MDLKLYgBd2Fz +bV9iaW5kZ2VuOjpjb252ZXJ0OjpzbGljZXM6OjxpbXBsIHdhc21fYmluZGdlbjo6Y29udmVydDo6 +dHJhaXRzOjpGcm9tV2FzbUFiaSBmb3IgYWxsb2M6OmJveGVkOjpCb3g8W1RdPj46OmZyb21fYWJp +OjpoNmQ1ZTZmN2U5YWY5YjMxNMstEV9fd2JpbmRnZW5fbWFsbG9jzC2LAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NT +aWduaW5nSWRlbnRpdHk6OmdldF9taXNzaW5nX3NlY3JldHM6Ont7Y2xvc3VyZX19Pjo6aGU2Yzkw +NWFmYzlhNWQxNDXNLYIDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjpzZXNzaW9uX21hbmFnZXI6Omdyb3VwX3Nlc3Npb25zOjpHcm91cFNlc3Npb25NYW5hZ2VyOjpj +b2xsZWN0X3Nlc3Npb25fcmVjaXBpZW50czxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8 +Y29yZTo6c2xpY2U6Oml0ZXI6Okl0ZXI8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lk +OjpPd25lZFVzZXJJZD4sPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRV +c2VySWQgYXMgY29yZTo6Y29udmVydDo6QXNSZWY8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1 +c2VyX2lkOjpVc2VySWQ+Pjo6YXNfcmVmPj46Ont7Y2xvc3VyZX19Pjo6aGEwZDJkZTZiOWI5NmE3 +ZDDOLacBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0 +aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjplbmNyeXB0PHJ1bWFfZXZlbnRzOjpkdW1teTo6 +VG9EZXZpY2VEdW1teUV2ZW50Q29udGVudD46Ont7Y2xvc3VyZX19Pjo6aDQ2ZDBhYzg4MGI0Yzli +YWbPLcgBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmlj +YXRpb246Om1hY2hpbmU6OlZlcmlmaWNhdGlvbk1hY2hpbmU6OnJlY2VpdmVfYW55X2V2ZW50PCZt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50 +cz46Ont7Y2xvc3VyZX19Pjo6aGZlYjU3MjBhYTgxM2RjODHQLZEBY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hp +bmU6OnJlY2VpdmVfc2VjcmV0X2V2ZW50Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoM2Ez +MDUyZDViOWQ2Mzg3NNEtcmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpkZWNyeXB0X29sbV92MTo6e3tjbG9zdXJlfX0+Ojpo +NjRmOTFjNjk5ZjljMjdjY9Ite2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpkZWNyeXB0X3RvX2RldmljZV9ldmVudDo6e3tj +bG9zdXJlfX0+OjpoZTUxNzc0NWQ2ZmM2ODVmNtMtggFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmhhbmRsZV9kZWNyeXB0ZWRf +dG9fZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fT46Omg4Yzc4ZDdiODg3N2JiNGJk1C2MAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5l +OjpHb3NzaXBNYWNoaW5lOjpoYW5kbGVfc3VwcG9ydGVkX2tleV9yZXF1ZXN0Ojp7e2Nsb3N1cmV9 +fT46OmgwNDAyYTQ0NTgzNjA3Yjk11S10Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OmRlY3J5cHRfb2xtX3YxOjp7e2Nsb3N1 +cmV9fT46Omg2NGY5MWM2OTlmOWMyN2NjLjHWLcoBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246Om1hY2hpbmU6OlZlcmlmaWNhdGlvbk1hY2hp +bmU6OnJlY2VpdmVfYW55X2V2ZW50PCZtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50cz46Ont7Y2xvc3VyZX19Pjo6aGZlYjU3MjBhYTgxM2Rj +ODEuMdctkwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Omdvc3Np +cGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGluZTo6cmVjZWl2ZV9zZWNyZXRfZXZlbnQ6Ont7Y2xv +c3VyZX19Ojp7e2Nsb3N1cmV9fT46OmgzYTMwNTJkNWI5ZDYzODc0LjHYLX1jb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6ZGVj +cnlwdF90b19kZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19Pjo6aGU1MTc3NDVkNmZjNjg1ZjYuMdkt +hAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9s +bU1hY2hpbmU6OmhhbmRsZV9kZWNyeXB0ZWRfdG9fZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fT46 +Omg4Yzc4ZDdiODg3N2JiNGJkLjHaLRltaWdyYXRpb25fbWlncmF0ZUJhc2VEYXRh2y0wX193Ymdf +c2V0X3BpY2tsZWRzZXNzaW9uX2NyZWF0ZWRVc2luZ0ZhbGxiYWNrS2V53C0tX193Ymdfc2V0X3Bp +Y2tsZWRpbmJvdW5kZ3JvdXBzZXNzaW9uX2ltcG9ydGVk3S0tX193Ymdfc2V0X3BpY2tsZWRpbmJv +dW5kZ3JvdXBzZXNzaW9uX2JhY2tlZFVw3i10PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1h +cDo6SW50b0l0ZXI8SyxWLEE+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJh +dG9yPjo6bmV4dDo6aDFjNDJjYTdiYTg2N2RhNDTfLXg8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +bWFjaGluZTo6T2xtTWFjaGluZSBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6RnJv +bVdhc21BYmk+Ojpmcm9tX2FiaTo6aDExMGE0OTE2ZTM5MTBiNzLgLR5vbG1tYWNoaW5lX2dldFNl +Y3JldHNGcm9tSW5ib3jhLSFvbG1tYWNoaW5lX2RlbGV0ZVNlY3JldHNGcm9tSW5ib3jiLRpvbG1t +YWNoaW5lX3NldFJvb21TZXR0aW5nc+MtFmtleXN1cGxvYWRyZXF1ZXN0X3R5cGXkLRVrZXlzcXVl +cnlyZXF1ZXN0X3R5cGXlLRVrZXlzY2xhaW1yZXF1ZXN0X3R5cGXmLRR0b2RldmljZXJlcXVlc3Rf +dHlwZectG3NpZ25hdHVyZXVwbG9hZHJlcXVlc3RfdHlwZegtF3Jvb21tZXNzYWdlcmVxdWVzdF90 +eXBl6S0Wa2V5c2JhY2t1cHJlcXVlc3RfdHlwZeotOnRva2lvOjpsb29tOjpzdGQ6Om11dGV4OjpN +dXRleDxUPjo6bG9jazo6aDRkOTVlMTM4MmVjNzA4M2PrLbEBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmluaXRpYWxp +emU6Ont7Y2xvc3VyZX19OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfT2xtTWFjaGluZV9p +bml0aWFsaXplOjp7e2Nsb3N1cmV9fT46Omg3MDk1ZmUxNzQ4NjQ1YTc57C3EAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpsaWJvbG1fbWlncmF0aW9uOjpN +aWdyYXRpb246Om1pZ3JhdGVfYmFzZV9kYXRhOjp7e2Nsb3N1cmV9fTo6Xzo6X193YXNtX2JpbmRn +ZW5fZ2VuZXJhdGVkX01pZ3JhdGlvbl9taWdyYXRlQmFzZURhdGE6Ont7Y2xvc3VyZX19Pjo6aDk1 +YjliNmFkZTVmN2M0YmTtLTRfX3diZ19zZXRfZW5jcnlwdGlvbnNldHRpbmdzX29ubHlBbGxvd1Ry +dXN0ZWREZXZpY2Vz7i0wYWxsb2M6OmFsbG9jOjpleGNoYW5nZV9tYWxsb2M6Omg4M2RkMzQwMzZl +YzkxOWMx7y1JPFQgYXMgY29yZTo6c2xpY2U6OmNtcDo6U2xpY2VDb250YWlucz46OnNsaWNlX2Nv +bnRhaW5zOjpoMGIxNmViYjAzYWRlYmUyZfAtHnJlaHlkcmF0ZWRkZXZpY2VfcmVjZWl2ZUV2ZW50 +c/EtHmRlaHlkcmF0ZWRkZXZpY2Vfa2V5c0ZvclVwbG9hZPItLl9fd2JnX3NldF9yb29tc2V0dGlu +Z3Nfb25seUFsbG93VHJ1c3RlZERldmljZXPzLUVjb3JlOjppbzo6Ym9ycm93ZWRfYnVmOjpCb3Jy +b3dlZEN1cnNvcjo6dW5pbml0X211dDo6aDM4ZWZiZWY2YjAzNDE2Y2H0LWw8Y29yZTo6aXRlcjo6 +YWRhcHRlcnM6OmNsb25lZDo6Q2xvbmVkPEk+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0 +b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGQ2ZDg2OTE1ODJmM2JmZTT1LXRjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmRlY3J5cHRf +cm9vbV9ldmVudDo6e3tjbG9zdXJlfX0+OjpoZWZkNDUwNDA2MzUxZTFmYvYtjQFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNy +b3NzU2lnbmluZ0lkZW50aXR5OjpnZXRfbWlzc2luZ19zZWNyZXRzOjp7e2Nsb3N1cmV9fT46Omhl +NmM5MDVhZmM5YTVkMTQ1LjL3LTFjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjptYXA6OmhlODY0 +YmMwM2FlYTdjOWY3+C1sPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpHZW5lcmljU2h1bnQ8SSxSPiBh +cyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhiOGVkMDZh +N2NiZDEyNmQ0+S1aY29yZTo6YXJyYXk6OjxpbXBsIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4TXV0 +PEk+IGZvciBbVDsgTl0+OjppbmRleF9tdXQ6Omg5MTI0YjQ1ZTQwNjI0OTI1+i1eY29yZTo6c2xp +Y2U6OmluZGV4Ojo8aW1wbCBjb3JlOjpvcHM6OmluZGV4OjpJbmRleE11dDxJPiBmb3IgW1RdPjo6 +aW5kZXhfbXV0OjpoN2IzMjc0ODU4Zjc4YTc3MfstSjxyYW5kX2NvcmU6OmVycm9yOjpFcnJvciBh +cyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6OmhjZDRlZDYxZTA5ZGZhOWMy/C25ATxtYXRy +aXhfc2RrX3N0b3JlX2VuY3J5cHRpb246Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUg +Zm9yIG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6S2RmSW5mbz46OmRlc2VyaWFsaXplOjpf +X0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhhMGZiYzJh +ODMxM2NmZTU1/S0scm1wOjplbmNvZGU6OndyaXRlX21hcmtlcjo6aGY5OWE2NDBkYzM3MzYwZmb+ +LTo8VCBhcyBhbGxvYzo6Ym9ycm93OjpUb093bmVkPjo6dG9fb3duZWQ6OmhhYzRkYTNjMzViMDMz +OWRi/y1JPFQgYXMgY29yZTo6c2xpY2U6OmNtcDo6U2xpY2VDb250YWlucz46OnNsaWNlX2NvbnRh +aW5zOjpoMjQ4M2M3MWQ1MTU5YmNkOIAubDxjb3JlOjppdGVyOjphZGFwdGVyczo6Y2xvbmVkOjpD +bG9uZWQ8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0 +OjpoYjI2MTc5NzBmNzkzMThkOIEuNXN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8VD46OnJlYWQ6 +OmgxOGRiMWMwYTJjNjkyY2Q5gi5JPFQgYXMgY29yZTo6c2xpY2U6OmNtcDo6U2xpY2VDb250YWlu +cz46OnNsaWNlX2NvbnRhaW5zOjpoOWMyMzFkNjljYjhkMzE2ZYMuU2NvcmU6OmFycmF5Ojo8aW1w +bCBjb3JlOjpvcHM6OmluZGV4OjpJbmRleDxJPiBmb3IgW1Q7IE5dPjo6aW5kZXg6OmhjYjU0ZGRj +ZGE4ZGQ5M2ZkhC5jPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGF5bG9hZDxBPiBhcyBj +b3JlOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6dGFrZV9ib3g6OmhhNThhZTAyNGVjYzA0YjY5hS5L +dHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6U3BhblJlZjxSPjo6ZXh0ZW5zaW9uc19tdXQ6 +OmgzMjZiZWQ1ODhhMTlhOTlhhi5QPHRocmVhZF9sb2NhbDo6VGhyZWFkTG9jYWw8VD4gYXMgY29y +ZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGE2OGMxYWNjYzQwZDIxZTeHLlJ0cmFjaW5nX3N1 +YnNjcmliZXI6OnJlZ2lzdHJ5OjpleHRlbnNpb25zOjpFeHRlbnNpb25zTXV0OjppbnNlcnQ6Omhk +ZDE4ZGE5OWEyOGM1MTcwiC5LPGR5biB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmli +ZXI+Ojpkb3duY2FzdF9yZWY6OmhiZjQ4ZmU0MTQ5YzBiNWM0iS5oc2VyZGU6OmRlOjppbXBsczo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgYWxsb2M6OmJveGVkOjpCb3g8VD4+Ojpk +ZXNlcmlhbGl6ZTo6aGI4YWFmNDU4NmI4YWNiZTCKLlRjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +dm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmxpYm9sbTo6UGlja2xlPjo6aGI5NzljNDc0ODAzN2Fj +NDiLLlpjb3JlOjphcnJheTo6PGltcGwgY29yZTo6b3BzOjppbmRleDo6SW5kZXhNdXQ8ST4gZm9y +IFtUOyBOXT46OmluZGV4X211dDo6aGZjMDE5MDM1Mjc1ZDNjOWKMLpgBdm9kb3plbWFjOjpvbG06 +OnNlc3Npb246OnJvb3Rfa2V5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2 +b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6cm9vdF9rZXk6OlJlbW90ZVJvb3RLZXk+OjpkZXNlcmlh +bGl6ZTo6aDEwY2I2MDJjMWNjZDhmYjONLkk8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29y +ZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg0NzhiOTc0MDNjYzRiYTQ1ji5Ldm9kb3plbWFjOjpt +ZWdvbG06OnNlc3Npb25fa2V5czo6RXhwb3J0ZWRTZXNzaW9uS2V5OjpuZXc6OmgwYjA0OWY3MWY4 +ODIwNzJjjy5lPGRpZ2VzdDo6Y29yZV9hcGk6OndyYXBwZXI6OkNvcmVXcmFwcGVyPFQ+IGFzIGRp +Z2VzdDo6VXBkYXRlPjo6dXBkYXRlOjp7e2Nsb3N1cmV9fTo6aGI0YTA0MDAwMzNhZDgwZmKQLll2 +b2RvemVtYWM6Om1lZ29sbTo6aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpJbmJvdW5kR3JvdXBTZXNz +aW9uOjpjb21wYXJlOjpoOGRhMDFkZWJlZTBiOTFmNZEutQE8JmN1cnZlMjU1MTlfZGFsZWs6OmJh +Y2tlbmQ6OnNlcmlhbDo6dTMyOjpmaWVsZDo6RmllbGRFbGVtZW50MjYyNSBhcyBjb3JlOjpvcHM6 +OmFyaXRoOjpBZGQ8JmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTMyOjpmaWVs +ZDo6RmllbGRFbGVtZW50MjYyNT4+OjphZGQ6OmhlYjZlNGRkYzk4ZWFkOGY3ki61ATwmY3VydmUy +NTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjp1MzI6OmZpZWxkOjpGaWVsZEVsZW1lbnQyNjI1 +IGFzIGNvcmU6Om9wczo6YXJpdGg6OlN1YjwmY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2Vy +aWFsOjp1MzI6OmZpZWxkOjpGaWVsZEVsZW1lbnQyNjI1Pj46OnN1Yjo6aGM1MmY0MGJkMmJiMDJi +ZTSTLldjb3JlOjpzbGljZTo6aW5kZXg6OjxpbXBsIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4PEk+ +IGZvciBbVF0+OjppbmRleDo6aGM4ZjBiOTNhZTRlNmJlOGGULlNjb3JlOjphcnJheTo6PGltcGwg +Y29yZTo6b3BzOjppbmRleDo6SW5kZXg8ST4gZm9yIFtUOyBOXT46OmluZGV4OjpoZjE1MmUzNjgz +YzdjOWE3MpUuNTxbWl0gYXMgemVyb2l6ZTo6WmVyb2l6ZT46Onplcm9pemU6OmgzNzgxNWVhZDk4 +NWZjM2Nmli46dG9raW86Omxvb206OnN0ZDo6bXV0ZXg6Ok11dGV4PFQ+Ojpsb2NrOjpoYzYzODU1 +ZjcyYzBmM2M2MZcueXRva2lvOjp1dGlsOjpsaW5rZWRfbGlzdDo6R3VhcmRlZExpbmtlZExpc3Q8 +TCw8TCBhcyB0b2tpbzo6dXRpbDo6bGlua2VkX2xpc3Q6Okxpbms+OjpUYXJnZXQ+Ojpwb3BfYmFj +azo6aGQzN2YwZDgxNjI0NDQzMGKYLkg8YWxsb2M6OmJveGVkOjpCb3g8VCxBPiBhcyBjb3JlOjpj +bG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDVlNjZjNjM5M2M4MjQ0ZjiZLkg8YWxsb2M6OnZlYzo6VmVj +PFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDFkZjkyZTFmYTY4YjMyZGSa +Lko8YWxsb2M6OmJveGVkOjpCb3g8VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6 +aDVlNjZjNjM5M2M4MjQ0ZjguMZsuhAE8PHNlcmRlX2pzb246OnJhdzo6UmF3S2V5IGFzIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6RmllbGRWaXNpdG9yIGFzIHNlcmRlOjpk +ZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aGQ1ZmU4YjgzOGVjMjdkNGWcLi5zdGQ6OmlvOjplcnJv +cjo6RXJyb3I6Ol9uZXc6OmhiZTJjYzFjZTE4M2Q3MDg1nS5qY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmV4cG9ydF9zZWNyZXQ6Ont7Y2xv +c3VyZX19Pjo6aDMyMTQ3MGJiNTNhZjJmZTEuMp4uNWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46 +Om1hcF9lcnI6Omg3YzBmY2NlNjQyNTQ0NWRmny4rY29yZTo6Y21wOjpQYXJ0aWFsRXE6Om5lOjpo +ZTM0MmVhZGM3MmU5NmIzMKAunQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFn +ZXI6Om1heWJlX3JvdGF0ZV9ncm91cF9zZXNzaW9uOjp7e2Nsb3N1cmV9fT46OmhlMTFkOWEwMDJk +NjZlOTEwoS5/Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlRvRGV2aWNlRW5jcnlwdGVkRXZlbnRDb250ZW50 +Pjo6aDgwOWM2MDkyYmI2ZWQzYWIuMaIueWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZGVjcnlwdF90b19kZXZpY2VfZXZlbnQ6 +Ont7Y2xvc3VyZX19Pjo6aGQzOTA5MGYxMTEyMmQ2MzmjLntjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmRlY3J5cHRfdG9fZGV2 +aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fT46OmhkMzkwOTBmMTExMjJkNjM5LjGkLitjb3JlOjpjbXA6 +OlBhcnRpYWxFcTo6bmU6OmgxOWQ5MTQyMGRhZWEwNjAzpS4yYWxsb2M6OmFsbG9jOjpleGNoYW5n +ZV9tYWxsb2M6Omg4M2RkMzQwMzZlYzkxOWMxLjOmLoEBPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +OnJlcXVlc3RzOjpSb29tTWVzc2FnZVJlcXVlc3QgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0 +cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6Omg1YWQ0M2YyMDY1YTA2NjY0py4yYWxsb2M6 +OmFsbG9jOjpleGNoYW5nZV9tYWxsb2M6Omg4M2RkMzQwMzZlYzkxOWMxLjSoLowBPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X2RldmljZTo6 +aGVkNDY4MTZiMjVjZGJmZWOpLowBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpF +cmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFp +dHM6OkNyeXB0b1N0b3JlPjo6Z2V0X2RldmljZTo6aGZiZDVmYTQ4ZjllNzc1MzOqLpMBPG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMg +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3dpdGho +ZWxkX2luZm86Omg0MzU1NDMyZWEwYWY5ZmI5qy6TATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF93aXRoaGVsZF9pbmZvOjpoNjU4YTIxZDMz +ZGVkMDg2N6wumwE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRv +U3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRv +U3RvcmU+OjpnZXRfaW5ib3VuZF9ncm91cF9zZXNzaW9uOjpoMjc2YmQzNWQ4MTdiZGZiMq0umwE8 +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxU +PiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpnZXRf +aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpoYjEwYzZjNTY5YTEwOGE1Nq4uamNvcmU6Om9wczo6ZnVu +Y3Rpb246OmltcGxzOjo8aW1wbCBjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U8QT4gZm9yICZt +dXQgRj46OmNhbGxfb25jZTo6aDRlZTllZGUxMTIxNGFmZTavLjhhbGxvYzo6Ym94ZWQ6OkJveDxU +LEE+OjpuZXdfdW5pbml0X2luOjpoMDMwODJhMjkwNmQyOGExNLAuOGFsbG9jOjpib3hlZDo6Qm94 +PFQsQT46Om5ld191bmluaXRfaW46OmgwZDQ5NGRiMmRjYTU1MDcysS44YWxsb2M6OmJveGVkOjpC +b3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aDE2MGVmNzYxNGI0ODhmZjGyLjhhbGxvYzo6Ym94ZWQ6 +OkJveDxULEE+OjpuZXdfdW5pbml0X2luOjpoNGNkNWNhZjVmNWMwMjM3MbMuOGFsbG9jOjpib3hl +ZDo6Qm94PFQsQT46Om5ld191bmluaXRfaW46Omg2MjY3MzJlYjg2MDM5NWJltC44YWxsb2M6OmJv +eGVkOjpCb3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aGM4ODJiZWQzMDZhNGVmM2W1LhVfX3diZ19h +dHRhY2htZW50X2ZyZWW2LpQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnJlZ2lzdGVyX3JlY2VpdmVfc2VjcmV0X2Nh +bGxiYWNrOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoNzM5NWZiYTk2YzAyNmIwZrcuf2Nv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +cm9vbTo6ZW5jcnlwdGVkOjpUb0RldmljZUVuY3J5cHRlZEV2ZW50Q29udGVudD46Omg4MDljNjA5 +MmJiNmVkM2FiLjK4LpIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0 +aW9uPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6c2VuZF9jaGFuZ2VfaW5m +b190b19jYWxsYmFjazo6e3tjbG9zdXJlfX0+Pjo6aGQ4N2Q5Mzk1NGFhYzA5NTC5LhRkZXZpY2Vf +Zmlyc3RUaW1lU2VlbrouU3J1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dm9pcF92ZXJzaW9uX2lk +OjpWb2lwVmVyc2lvbklkOjphc19zdHI6OmhmZTA3MDVhN2Q0NzdmYzgzuy44c3RkOjppbzo6ZXJy +b3I6OkVycm9yOjppc19pbnRlcnJ1cHRlZDo6aGM0YjdlNGU4ODExYjY1YmO8Lu4CY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZGVsZXRlX3NlY3Jl +dHNfZnJvbV9pbmJveDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +bWFjaGluZTo6T2xtTWFjaGluZTo6ZGVsZXRlX3NlY3JldHNfZnJvbV9pbmJveDo6e3tjbG9zdXJl +fX06Ont7Y2xvc3VyZX19LHdhc21fYmluZGdlbjo6SnNWYWx1ZT46Ont7Y2xvc3VyZX19Pj46Omhh +ZDVjZTM3ZDkwYzJjNTEyvS5qPHBpbl9wcm9qZWN0X2xpdGU6Ol9fcHJpdmF0ZTo6VW5zYWZlRHJv +cEluUGxhY2VHdWFyZDxUPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNTA4ZGRm +MGFiM2VhNmYwNL4ueGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfcmVxdWVzdDo6Um9vbUtleVJlcXVlc3RDb250ZW50Pjo6 +aDhlMjMzYzNjNjc5NTlkM2QuMb8uwQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8PG1hdHJpeF9z +ZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9vdXRib3VuZF9n +cm91cF9zZXNzaW9uOjp7e2Nsb3N1cmV9fT46OmgzYzA3MTkxMjFmM2FkODM0wC5nc2VyZGU6OnNl +cjo6aW1wbHM6OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgYWxsb2M6OnN0cmluZzo6 +U3RyaW5nPjo6c2VyaWFsaXplOjpoZjRjOTc0ZWI4N2JlMmI3NMEuMmFsbG9jOjphbGxvYzo6ZXhj +aGFuZ2VfbWFsbG9jOjpoODNkZDM0MDM2ZWM5MTljMS42wi4qc2VyZGVfanNvbjo6cmVhZDo6ZXJy +b3I6Omg4ZTU2YWNkYWJhOWY2YjU5wy4sYWxsb2M6OnZlYzo6VmVjPFQsQT46OnBvcDo6aDEyZTQz +ZDY1YzhlMDZkZjbELkVjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cm1wX3NlcmRlOjpkZWNvZGU6 +OkVycm9yPjo6aGE1ZDE2M2Q5MWNjMWMzZWHFLkdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cm1w +X3NlcmRlOjpkZWNvZGU6OkVycm9yPjo6aGE1ZDE2M2Q5MWNjMWMzZWEuMcYuOnJtcDo6ZW5jb2Rl +OjpSbXBXcml0ZTo6d3JpdGVfZGF0YV91MzI6OmgzM2JhYzI5OTk3OWE4Y2VjLjHHLjpybXA6OmVu +Y29kZTo6Um1wV3JpdGU6OndyaXRlX2RhdGFfdTE2OjpoOWM1NTgwMzVlNTU0NzA0OC4xyC4scm1w +OjplbmNvZGU6OndyaXRlX21hcmtlcjo6aGRiZjAzYWM2N2M2NGIzZjDJLlNjb3JlOjphcnJheTo6 +PGltcGwgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8ST4gZm9yIFtUOyBOXT46OmluZGV4OjpoMTEy +YWFlYmE3ZDk1MGIwNsouQDxhbGxvYzo6cmM6OlJjPFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDRlYzZlZTU4NmYyMTFhNjbLLjJhbnlob3c6OmVycm9yOjpFcnJvckltcGw6OmVycm9y +OjpoM2U4ZjgxMWMyMjQ2YTEwMswubDxjb3JlOjppdGVyOjphZGFwdGVyczo6Y29waWVkOjpDb3Bp +ZWQ8ST4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0Ojpo +NmVhYWIzMjYzOWQxZjYzMs0uWDxhbGxvYzo6Ym94ZWQ6OkJveDxbVF0+IGFzIGFsbG9jOjpib3hl +ZDo6Qm94RnJvbVNsaWNlPFQ+Pjo6ZnJvbV9zbGljZTo6aGJmZTA4ZWRiNjMxMjhkNDTOLjE8W1Rd +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzNWFlZDUyNDQyMjBkMTNjzy5rPHNlcmRlOjpf +X3ByaXZhdGU6OnNlcjo6VGFnZ2VkU2VyaWFsaXplcjxTPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxp +emVyPjo6c2VyaWFsaXplX3N0cnVjdDo6aGY0ODMyODlhYmRjYjRmNzLQLjE8W1RdIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmhkOWM4YjcxZDAwY2UyMDY40S4zYWxsb2M6OnN5bmM6OkFyYzxU +LEE+Ojpkcm9wX3Nsb3c6OmhmZDhiNWE3ODViN2IyNDJm0i4zYWxsb2M6OnN5bmM6OkFyYzxULEE+ +Ojpkcm9wX3Nsb3c6OmhhNjY2NGZkZGExYTYzNTEx0y4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpk +cm9wX3Nsb3c6OmgzNWFhNDIzMzk1ZTljMWVi1C4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9w +X3Nsb3c6OmgxNzJiZjY0ZDY2M2Y2OGIz1S4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Ns +b3c6Omg3ZWJiOTQ1MzIyZTU4MThl1i4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6 +Omg4NDNhNDQxNjgwOTk2NGI11y4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg5 +NTk0ZDNjMmFlYzZkYjM02C4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg5ZDg2 +Mjg2ODEwYzgzNWMx2S4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmhjMGYyMGI4 +NWQ1YjhlNWU02i4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmhjZWEzYzg3YWI1 +Nzg1MjNj2y4zYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6OmhlZGU0ZThmMTlmZDRm +ZDFk3C5yPHNlcmRlX2pzb246OnZhbHVlOjpkZTo6Qm9ycm93ZWRDb3dTdHJEZXNlcmlhbGl6ZXIg +YXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9hbnk6Omg1ZjY3YTY4OTA4 +YTU1OWQ23S4xPFtUXSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDNjZjNhNTMyZjc5MWM2 +Nd4uK2FsbG9jOjpzeW5jOjpBcmM8VD46Om5ldzo6aDcyYmE1ZGYxNzliZmU3NzHfLpUBbWF0cml4 +X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OlNhc1N0YXRlPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpEb25lPjo6dmVyaWZp +ZWRfZGV2aWNlczo6aDlmZmNhOWE0ZTE0YTRkYTTgLpgBbWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OlNhc1N0YXRlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpEb25lPjo6dmVyaWZpZWRfaWRlbnRpdGllczo6aDky +ZDAyMWFkMmMyZmFiNmXhLmNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjptZWdv +bG06OnNlc3Npb25fa2V5czo6U2Vzc2lvbktleURlY29kZUVycm9yPjo6aDg1NDM1YjY1OGFmNTg2 +YTHiLmJ3YXNtX2JpbmRnZW5fZnV0dXJlczo6dGFzazo6c2luZ2xldGhyZWFkOjpUYXNrOjppbnRv +X3Jhd193YWtlcjo6cmF3X3dha2VfYnlfcmVmOjpoZmNjNmNlYzFiZjQzYWRjMuMuVTx2b2RvemVt +YWM6OmNpcGhlcjo6RGVjcnlwdGlvbkVycm9yIGFzIGNvcmU6OmVycm9yOjpFcnJvcj46OnNvdXJj +ZTo6aDFlMjUxOGQyZmUxMDU4MjPkLipzZXJkZV9qc29uOjpyZWFkOjplcnJvcjo6aDM2NTdmZTNh +Zjk1NTM2ODblLlNjb3JlOjphcnJheTo6PGltcGwgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8ST4g +Zm9yIFtUOyBOXT46OmluZGV4OjpoMjg5YTFhOWQxNTAyMzBjMuYuMHNlcmRlOjpkZTo6VmlzaXRv +cjo6dmlzaXRfbWFwOjpoMTMxYjYyMjMwZjBlMWE2MucuMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlz +aXRfbWFwOjpoMjQ3MGJlOGNiZDUwZTRkM+guMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfbWFw +OjpoNmQ3NzY4ODRhNDU3YWVjZekuSXZvZG96ZW1hYzo6b2xtOjpzaGFyZWRfc2VjcmV0OjpTaGFy +ZWQzREhTZWNyZXQ6OmV4cGFuZDo6aGIzMDQ2NTAxZmZjYWIzMmPqLlF2b2RvemVtYWM6Om1lZ29s +bTo6c2Vzc2lvbl9rZXlzOjpFeHBvcnRlZFNlc3Npb25LZXk6OnRvX2Jhc2U2NDo6aGQ2NWY4Mzhl +YTlhYmYxMTjrLms8Y2JjOjplbmNyeXB0OjpFbmNyeXB0b3I8Qz4gYXMgY2lwaGVyOjpibG9jazo6 +QmxvY2tFbmNyeXB0TXV0Pjo6ZW5jcnlwdF93aXRoX2JhY2tlbmRfbXV0OjpoNjI1OGZlNTU2MGY0 +NGU2OOwuWzx2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6RGVjcnlwdGlvbkVycm9yIGFzIGNvcmU6 +OmVycm9yOjpFcnJvcj46OnNvdXJjZTo6aDZjMzNmYWZhZjNiZmI4YTHtLjBzZXJkZTo6ZGU6OlZp +c2l0b3I6OnZpc2l0X21hcDo6aDRhMTQwODVkMjM5ZDE0ZTDuLnM8JmN1cnZlMjU1MTlfZGFsZWs6 +OmJhY2tlbmQ6OnNlcmlhbDo6dTMyOjpmaWVsZDo6RmllbGRFbGVtZW50MjYyNSBhcyBjb3JlOjpv +cHM6OmFyaXRoOjpOZWc+OjpuZWc6Omg2MDhkNWNjYTA3MTJjM2Y07y5OPGFsbG9jOjpib3hlZDo6 +Qm94PHN0cj4gYXMgY29yZTo6Y29udmVydDo6RnJvbTwmc3RyPj46OmZyb206OmhjMjBjN2JkZjlh +NjU1M2M08C5IPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46 +OmRyb3A6Omg0ODg2NTBiNTg2M2VhNWQ38S5gPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dm9p +cF9pZDo6T3duZWRWb2lwSWQgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyZjliOGZi +NTdhOWE0OGIw8i4wY29yZTo6c3RyOjo8aW1wbCBzdHI+OjpmaW5kOjpoMmRlYzYwNmYwMjViODA3 +Zi4x8y41Y29yZTo6c3RyOjo8aW1wbCBzdHI+OjpzdGFydHNfd2l0aDo6aDc0ZjBmNjliZGM4OTJl +N2b0LkdydW1hX2lkZW50aWZpZXJzX3ZhbGlkYXRpb246OmRldmljZV9rZXlfaWQ6OnZhbGlkYXRl +OjpoOGY5NzA3ZDY1MWJjZjEzNPUuOXRyYWNpbmc6Ol9fbWFjcm9fc3VwcG9ydDo6X19pc19lbmFi +bGVkOjpoNTdmNWU2MzQzMDYyM2E3YvYuYDxzZXJkZV9qc29uOjp2YWx1ZTo6c2VyOjpTZXJpYWxp +emVyIGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc2VxOjpoOTk0YTM1YTJh +MzVkMTg1NPcuKnNlcmRlX2pzb246OnJlYWQ6OmVycm9yOjpoNDJlZGUwMTZiZmVkYzg1MvguKnNl +cmRlX2pzb246OnJlYWQ6OmVycm9yOjpoMWQ5MmU2ZmZjNTQxM2U5YvkudXNlcmRlX2pzb246OnJh +dzo6PGltcGwgY29yZTo6Y2xvbmU6OkNsb25lIGZvciBhbGxvYzo6Ym94ZWQ6OkJveDxzZXJkZV9q +c29uOjpyYXc6OlJhd1ZhbHVlPj46OmNsb25lOjpoYmRjZDY4ZTAyN2JkNTY3OPouMmJ5dGVzOjpi +eXRlczo6c2hhbGxvd19jbG9uZV9hcmM6OmhjNzVhNTMyZWYxYTM5ZjVl+y5VPGpzX3N5czo6SW50 +b0l0ZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0Ojpo +NTk3YTA3YWE1NThkMmRlMvwuQ2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpwYWRfaW50ZWdyYWw6Ondy +aXRlX3ByZWZpeDo6aDRiYWQxNGJhZjZjNzAzZDH9Lktjb3JlOjpmbXQ6OmZsb2F0Ojo8aW1wbCBj +b3JlOjpmbXQ6OkRpc3BsYXkgZm9yIGY2ND46OmZtdDo6aGJkOGJkZjNlMTE1YTkzODT+Lo8BY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hp +bmU6Okdvc3NpcE1hY2hpbmU6OmNvbGxlY3RfaW5jb21pbmdfa2V5X3JlcXVlc3RzOjp7e2Nsb3N1 +cmV9fT46OmhiYjhjY2EwYThiZDEwZTM3LjL/LoQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0 +eTo6d2l0aF9hY2NvdW50Ojp7e2Nsb3N1cmV9fT46Omg1OTk0ZWU5Mzc0NDhjMmFmgC80Y29yZTo6 +cmVzdWx0OjpSZXN1bHQ8VCxFPjo6ZXhwZWN0OjpoMWEzZmFkNWY5MTE4MTY3NoEvjwFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6 +R29zc2lwTWFjaGluZTo6Y29sbGVjdF9pbmNvbWluZ19rZXlfcmVxdWVzdHM6Ont7Y2xvc3VyZX19 +Pjo6aGJiOGNjYTBhOGJkMTBlMzcuM4IvtQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6 +cGluOjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpLZXlR +dWVyeU1hbmFnZXI6OndhaXRfaWZfdXNlcl9rZXlfcXVlcnlfcGVuZGluZzo6e3tjbG9zdXJlfX06 +Ont7Y2xvc3VyZX19Pj4+OjpoZDA2ZWEzMjc5MzM2NTJjZS42gy+PAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNo +aW5lOjpjb2xsZWN0X2luY29taW5nX2tleV9yZXF1ZXN0czo6e3tjbG9zdXJlfX0+OjpoYmI4Y2Nh +MGE4YmQxMGUzNy40hC8wc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9zdHI6OmgxZjIxZDlhODU1 +YzMzM2YxhS8yc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aDBmYjljZWFiN2FjNWU1 +ZWaGLzBzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X3U2NDo6aDQyZGExYTc2NWMzYzc4MGKHLzBz +ZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2k2NDo6aDE2NjJmZjRiYzdiZTViZjSILzBzZXJkZTo6 +ZGU6OlZpc2l0b3I6OnZpc2l0X2Y2NDo6aDU2YzkwY2IzYTc4M2Y3MziJL/IBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjptYXliZV9kb25lOjpNYXliZURvbmU8 +bWF0cml4X3Nka19jb21tb246OmV4ZWN1dG9yOjpKb2luSGFuZGxlPGNvcmU6OnJlc3VsdDo6UmVz +dWx0PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6RGV2aWNlQ2hhbmdlcyxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPj4+Pjo6aDUxNzA4MTc4ZjAwOTQx +NjGKL/8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjptYXli +ZV9kb25lOjpNYXliZURvbmU8bWF0cml4X3Nka19jb21tb246OmV4ZWN1dG9yOjpKb2luSGFuZGxl +PGNvcmU6OnJlc3VsdDo6UmVzdWx0PG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5h +Z2VyOjpEZXZpY2VDaGFuZ2UsbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRv +U3RvcmVFcnJvcj4+Pj46OmhkOGYwOTA3YTZkZDg5NzMziy+zAmNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6bWF5YmVfZG9uZTo6TWF5YmVEb25lPG1hdHJpeF9z +ZGtfY29tbW9uOjpleGVjdXRvcjo6Sm9pbkhhbmRsZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRy +aXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNz +aW9uTWFuYWdlcjo6ZW5jcnlwdF9zZXNzaW9uX2Zvcjo6e3tjbG9zdXJlfX06OkRldmljZVJlc3Vs +dCxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok9sbUVycm9yPj4+Pjo6aGIwMTM2NjNmM2U3NTcz +OTCMLx1fX3diZ19zZXRfcm9vbWtleWNvdW50c190b3RhbI0vIF9fd2JnX3NldF9yb29ta2V5Y291 +bnRzX2JhY2tlZFVwji+YATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpsaWJvbG1fbWlncmF0aW9u +OjpCYXNlTWlncmF0aW9uRGF0YSBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6TG9u +Z1JlZkZyb21XYXNtQWJpPjo6bG9uZ19yZWZfZnJvbV9hYmk6Omg1ZTVjN2FhMjkxNWE0NTQyjy+D +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2Rr +X2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6OmNvbW1vbjo6Q3Jvc3NTaWduaW5nS2V5Pj46 +OmhiYmY3ZjYzYTUzNDBmOWVkkC9hPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRy +ZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMjFmYTkyNDU5ZmZh +MjVkYpEvYTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBh +cyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDJlN2M0MjkyMzhlOGI5MGWSL2E8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6 +OkNsb25lPjo6Y2xvbmU6Omg0ZjZmY2NjOGE0NTllN2Nhky9hPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25l +OjpoZjU1ZTE3M2QwYmViMTlkOZQvYTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJU +cmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDAxYzZhZmFkNWU1 +YmZmYzWVLxhvbG1tYWNoaW5lX2luaXRGcm9tU3RvcmWWLxN0b2RldmljZXJlcXVlc3RfbmV3ly8z +YWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg0NjRmMzc5N2QwMjJlMTE2mC/yAmNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5nX3N1YnNjcmliZXI6OmxheWVyOjpsYXllcmVk +OjpMYXllcmVkPHRyYWNpbmdfc3Vic2NyaWJlcjo6Zm10OjpmbXRfbGF5ZXI6OkxheWVyPHRyYWNp +bmdfc3Vic2NyaWJlcjo6cmVnaXN0cnk6OnNoYXJkZWQ6OlJlZ2lzdHJ5LHRyYWNpbmdfc3Vic2Ny +aWJlcjo6Zm10Ojpmb3JtYXQ6OkRlZmF1bHRGaWVsZHMsbWF0cml4X3Nka19jb21tb246OmpzX3Ry +YWNpbmc6OkpzRXZlbnRGb3JtYXR0ZXIsbWF0cml4X3Nka19jb21tb246OmpzX3RyYWNpbmc6Ok1h +a2VKc0xvZ1dyaXRlcj4sdHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6c2hhcmRlZDo6UmVn +aXN0cnk+Pjo6aDNhZjNlNGQyNzFmYzEyYmWZLzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bf +c2xvdzo6aGNjMTQ3YWI4ZDg3OTVmZTiaLzNhbGxvYzo6c3luYzo6QXJjPFQsQT46OmRyb3Bfc2xv +dzo6aDE5NmFlNTlkOGVhNGNjYTSbL48BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OmNvbGxlY3RfaW5j +b21pbmdfa2V5X3JlcXVlc3RzOjp7e2Nsb3N1cmV9fT46OmhiYjhjY2EwYThiZDEwZTM3LjWcL4cB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRlaHlkcmF0 +ZWRfZGV2aWNlczo6RGVoeWRyYXRlZERldmljZTo6a2V5c19mb3JfdXBsb2FkOjp7e2Nsb3N1cmV9 +fT46Omg2ZGM2ZThmYjZhZmNkZmJhnS+GAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5kbGU8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0 +cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vz +c2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3VyZX19OjpEZXZpY2VSZXN1 +bHQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4+Pjo6aGY4NjU5ZmJlNTcwMzJk +MzWeLzd3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdDo6ZHluX2ludG86Omg2Y2Q3NTI0MzY2Y2Jj +ZDY2ny9lPGhhc2hicm93bjo6cmF3OjpSYXdJbnRvSXRlcjxULEE+IGFzIGNvcmU6Oml0ZXI6OnRy +YWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDg0MTQ2MTY4ZjllYjI0MzCgL4oBPG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmVuY3J5cHRpb246OkVuY3J5cHRpb25TZXR0aW5ncyBhcyB3 +YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6UmVmRnJvbVdhc21BYmk+OjpyZWZfZnJvbV9h +Ymk6OmgxYWZmYjFhY2M2NWQzOGI1oS8rX193Ymdfc2V0X2VuY3J5cHRpb25zZXR0aW5nc19yb3Rh +dGlvblBlcmlvZKIvM19fd2JnX3NldF9lbmNyeXB0aW9uc2V0dGluZ3Nfcm90YXRpb25QZXJpb2RN +ZXNzYWdlc6MvF2VkMjU1MTlwdWJsaWNrZXlfbGVuZ3RopC9VaW5kZXhlZF9kYl9mdXR1cmVzOjpp +ZGJfZGF0YWJhc2U6OklkYkRhdGFiYXNlOjpkZWxldGVfb2JqZWN0X3N0b3JlOjpoMmNhN2E0ZDEy +NDJiNDJkOaUvgAFpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9kYXRhYmFzZTo6aWRiX3ZlcnNpb25f +Y2hhbmdlX2V2ZW50OjpJZGJWZXJzaW9uQ2hhbmdlRXZlbnQ6OndyYXBfY2FsbGJhY2s6Ont7Y2xv +c3VyZX19OjpoN2FmZTExYjhiZDc1Y2VjOKYvTTxhbGxvYzo6YWxsb2M6Okdsb2JhbCBhcyBjb3Jl +OjphbGxvYzo6QWxsb2NhdG9yPjo6YWxsb2NhdGU6OmgyZDc4MGU0ZWNjMTY2NTAzpy9SPFQgYXMg +d2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OlJldHVybldhc21BYmk+OjpyZXR1cm5fYWJp +OjpoYTI2NGU1YmU2OWRlNzUwOagvhAE8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6OlNp +Z25hdHVyZXMgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OlJlZk11dEZyb21XYXNt +QWJpPjo6cmVmX211dF9mcm9tX2FiaTo6aDJhMmIyYzA3MTU4MWJkNDmpL4EBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpkZWNy +eXB0X3Jvb21fZXZlbnQ6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46Omg4ODhjNjgzYWY3NGFh +OGI2qi+MAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lv +bl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9uQ2FjaGU6OmdldF9vcl9sb2Fk +Ojp7e2Nsb3N1cmV9fT46Omg3MWI2YzI4MGRkMzMzY2Fmqy9lY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZGV2aWNlX2tleXM6OkRldmljZUtleUhlbHBl +cj46OmhlNzdjMzdiOGY4ZDUzYzgxLjGsL7MBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRy +aXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpnZXRfc2Vzc2lv +bnM6Ont7Y2xvc3VyZX19Pjo6aGQ2YjlhYmU3ZjlkNzFmYjatL09tYXRyaXhfc2RrX2luZGV4ZWRk +Yjo6Y3J5cHRvX3N0b3JlOjpQZW5kaW5nU3RvcmVDaGFuZ2VzOjpwdXQ6OmhlYWFhYzkxY2VhYTU2 +Njc5ri9hPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFz +IGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMDBhM2NiZDZlM2ZiY2RlM68vYTxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9uZTo6 +Q2xvbmU+OjpjbG9uZTo6aDg5OTQ3N2YxZDdmMjNjM2GwLzVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxU +LEU+OjptYXBfZXJyOjpoNzllZTdhODIwNDgwYTM1MbEvVHNlcmRlOjpzZXI6OmltcGxzOjo8aW1w +bCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIHU4Pjo6c2VyaWFsaXplOjpoN2U1YTgxZjI2YTdh +NTdhZLIvLWFsbG9jOjp2ZWM6OlZlYzxULEE+OjpwdXNoOjpoMjIwNGI2YmZiZjcwNGU1YbMvYjxz +ZXJkZV93YXNtX2JpbmRnZW46OmRlOjpPYmplY3RBY2Nlc3MgYXMgc2VyZGU6OmRlOjpNYXBBY2Nl +c3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmhkNzA1MWExNmQ2OWEzNmQ2tC81Y29yZTo6cmVzdWx0OjpS +ZXN1bHQ8VCxFPjo6bWFwX2Vycjo6aDdhYzZhYWM5NTA3NjVmM2K1Lz5zdGQ6OnN5bmM6OnJ3bG9j +azo6UndMb2NrV3JpdGVHdWFyZDxUPjo6bmV3OjpoMjU3MGQzM2FjODEzNjM3MbYvQm1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6c2VyaWFsaXplX2VkMjU1MTlfa2V5OjpoZGFmMDZkZGY4ZWZlM2Nh +NrcvQm1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6c2VyaWFsaXplX2VkMjU1MTlfa2V5OjpoZGNm +Njc4YmNlYjVhZjUyYbgvMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYTRjZmM0MWFk +NmJiNTZjOLkvOTxbVDsgMzJdIGFzIHJhbmQ6OnJuZzo6RmlsbD46OnRyeV9maWxsOjpoNjIwN2Jm +ZTEyMzRmZjcxObovMGFsbG9jOjpyYzo6V2VhazxULEE+Ojp1cGdyYWRlOjpoOWFlMjUyMDlkNGZj +NjE4ZLsvTmluZGV4ZWRfZGJfZnV0dXJlczo6aWRiX29iamVjdF9zdG9yZTo6SWRiT2JqZWN0U3Rv +cmU6OmNsZWFyOjpoNjdmMWMwMTA3ZGYxZWNiNbwvSzxhbnlob3c6OmVycm9yOjpFcnJvckltcGw8 +RT4gYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMjEwODM2YWI4ODJmODdiZL0vYTxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9u +ZTo6Q2xvbmU+OjpjbG9uZTo6aDg4ZWUzMzgyZDU2NDIxMji+L2E8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xv +bmU6Omg3OTg0NjVjODkyMzQ5ZTk2vy9hPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6 +QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMjBjYjUyZjA2 +ZmYxNDRjYsAvYTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixB +PiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDUzZWVmNTA2MWI3MGJhNWXBL2E8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxLLFYsQT4gYXMgY29yZTo6Y2xv +bmU6OkNsb25lPjo6Y2xvbmU6OmhlYjJlOWI3YzQxZDUyMGYxwi9hPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNs +b25lOjpoZjY1Yjc5MDIzOWRlNDE4NsMvPXN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2tSZWFkR3Vh +cmQ8VD46Om5ldzo6aDA3ODFiZTJkMTkzZGM4NzTELzRjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+ +OjpleHBlY3Q6OmgwNjY5ZTVjZDFlN2E3YmY0xS9YPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50 +b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMzc3YzRhZWI2ZTA3 +NTBjMsYvRW1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6OlJlcXVlc3RFdmVudDo6c2VuZGVy +OjpoMTQ3MDIwNDcyMzBkZTdmZccvU21hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6OlJlcXVl +c3RFdmVudDo6cmVxdWVzdGluZ19kZXZpY2VfaWQ6OmhjZTRkNjYwYmZmZTE4YTMxyC9JbWF0cml4 +X3Nka19jcnlwdG86Omdvc3NpcGluZzo6UmVxdWVzdEV2ZW50OjpyZXF1ZXN0X2lkOjpoNDE2ZjMx +NDZhODQwZDY0NMkvV21hdHJpeF9zZGtfY3J5cHRvOjpyZXF1ZXN0czo6T3V0Z29pbmdWZXJpZmlj +YXRpb25SZXF1ZXN0OjpyZXF1ZXN0X2lkOjpoMTg5NjIyNWEyNmE2MTVkYcovQ21hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6U2FzOjpzdGFydDo6aGY2YmRhMDAxN2EwOGVkOWXL +L0g8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6 +aDg4MzYxMGUwZDM4NTBhMjnMLzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgyOTI1 +MzRjNDM4YzkxZmXNL2A8cnVtYV9jb21tb246OnNlcmRlOjpiYXNlNjQ6OkJhc2U2NDxDLEI+IGFz +IHNlcmRlOjpzZXI6OlNlcmlhbGl6ZT46OnNlcmlhbGl6ZTo6aDMyYTQ2MGE3MTk5OThhYjbOL2A8 +cnVtYV9jb21tb246OnNlcmRlOjpiYXNlNjQ6OkJhc2U2NDxDLEI+IGFzIHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZT46OnNlcmlhbGl6ZTo6aDc2ZTFkODc0NTE2M2ZhYzfPLzA8JlQgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aGViZmYzYmNmNTQ5NWI1MTfQLzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aGY1OTI5YzE3YWM5YTY0MDPRL4MBPG1hdHJpeF9zZGtfY29tbW9uOjpqc190cmFj +aW5nOjpNYWtlSnNMb2dXcml0ZXIgYXMgdHJhY2luZ19zdWJzY3JpYmVyOjpmbXQ6OndyaXRlcjo6 +TWFrZVdyaXRlcj46Om1ha2Vfd3JpdGVyX2Zvcjo6aDY1ODQ0NGJiYjYxMzAzZGPSLyhhbGxvYzo6 +cmM6OlJjPFQ+OjpuZXc6OmgxNjM3NWE4NmY3ZDcyMmMy0y9HdHJhY2luZ19zdWJzY3JpYmVyOjpy +ZWdpc3RyeTo6U3BhblJlZjxSPjo6ZXh0ZW5zaW9uczo6aGM4ZTBhMDNkMzljNWE2OTbUL2U8dHJh +Y2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6c2hhcmRlZDo6Q2xvc2VHdWFyZCBhcyBjb3JlOjpv +cHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoN2MwNjU4ODkwOTA3NTA5ONUvN3N0ZDo6c3luYzo6bXV0 +ZXg6Ok11dGV4R3VhcmQ8VD46Om5ldzo6aDgwNjFmYzBiZDI4NjUyYTHWLzFzZXJkZTo6ZGU6OlZp +c2l0b3I6OnZpc2l0X2Jvb2w6Omg2OGVhNzIxYjdkOGQ4NzVh1y9YPGFsbG9jOjp2ZWM6OmludG9f +aXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNmUx +OTcwYjQ5NTIwMDVhMtgvWDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPFQsQT4gYXMg +Y29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGQzNTYwNmVjMGM0ODc0ZDnZL052b2RvemVt +YWM6Om9sbTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpSZW1vdGVDaGFpbktleTo6YWR2YW5jZTo6aGIz +NTA3YjdmYTdjYzYyNjLaL1Njb3JlOjphcnJheTo6PGltcGwgY29yZTo6b3BzOjppbmRleDo6SW5k +ZXg8ST4gZm9yIFtUOyBOXT46OmluZGV4OjpoMjQ2ZmMwNDE3ZWY0ZDY3NNsvU2NvcmU6OmFycmF5 +Ojo8aW1wbCBjb3JlOjpvcHM6OmluZGV4OjpJbmRleDxJPiBmb3IgW1Q7IE5dPjo6aW5kZXg6Omg1 +NTc5NjM4ZTg1MTY3ZjZi3C9hPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVN +YXA8SyxWLEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoNzY0NjA5ZTk5MWU3ZWQz +Od0vQnJ1bWFfZXZlbnRzOjpraW5kczo6TWVzc2FnZUxpa2VFdmVudDxDPjo6c2VuZGVyOjpoMGI5 +YTJjZDA4ZTFlNTY3NN4vQnJ1bWFfZXZlbnRzOjpraW5kczo6TWVzc2FnZUxpa2VFdmVudDxDPjo6 +c2VuZGVyOjpoMTUwMjQ2MGM3ZDZhMzY1MN8vQnJ1bWFfZXZlbnRzOjpraW5kczo6TWVzc2FnZUxp +a2VFdmVudDxDPjo6c2VuZGVyOjpoMTZjOTVkY2Q2NWFjY2I4ZeAvQnJ1bWFfZXZlbnRzOjpraW5k +czo6TWVzc2FnZUxpa2VFdmVudDxDPjo6c2VuZGVyOjpoNzAzNzk2NDdjOTI1ZWRhOOEvYTxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPEssVixBPiBhcyBjb3JlOjpjbG9u +ZTo6Q2xvbmU+OjpjbG9uZTo6aDViMmJkNTY1NWRiN2VjMGLiL1g8YWxsb2M6OnZlYzo6aW50b19p +dGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhmMzk2 +ODExZjRiNzY5MGY44y9HcnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpVc2VySWQ6 +OmNvbG9uX2lkeDo6aDkwZGM4ZmY2NzEyZjgyMTHkL4oBPHJ1bWFfY29tbW9uOjppZGVudGlmaWVy +czo6cm9vbV9pZDo6T3duZWRSb29tSWQgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE8cnVtYV9jb21t +b246OmlkZW50aWZpZXJzOjpyb29tX2lkOjpSb29tSWQ+Pjo6ZXE6OmgxMmVmOTMxODgxNjVhMDdi +5S9fPHJ1bWFfaWRlbnRpZmllcnNfdmFsaWRhdGlvbjo6ZXJyb3I6Ok14Y1VyaUVycm9yIGFzIGNv +cmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDhlMGEyZDM3MjcyMWYzMWPmLzA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDk4MDA2YWMxYmRhOWI3ZGXnLy9zZXJkZV9qc29uOjplcnJvcjo6 +RXJyb3I6OmlvOjpoOTNkNWY0NDRkMzJmN2I2Y+gvVDxzZXJkZV9qc29uOjpyZWFkOjpTbGljZVJl +YWQgYXMgc2VyZGVfanNvbjo6cmVhZDo6UmVhZD46OnBvc2l0aW9uOjpoYTJiOWU2NTY5NGM2NThh +NOkvOHJ5dTo6ZDJzX2ludHJpbnNpY3M6Om11bF9zaGlmdF9hbGxfNjQ6OmhhYWY5ODNkYTk1ZDMz +MGQw6i8yd2FzbV9iaW5kZ2VuOjpiaWdpbnRfZ2V0X2FzX2k2NDo6aDk2MTczNWJjY2YxYTE2Y2Pr +L2ljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9y +ZVRyYW5zYWN0aW9uOjpuZXc6Ont7Y2xvc3VyZX19Pjo6aGQ3YWJjZmMyZjA3ZTc1NWPsL2ljb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZUNhY2hl +OjphY2NvdW50Ojp7e2Nsb3N1cmV9fT46Omg2NTg2MDJlYWIyMzk1ZjAwLjLtL4cBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OlN0YXRpY0Fj +Y291bnREYXRhOjpjcmVhdGVfZ3JvdXBfc2Vzc2lvbl9wYWlyOjp7e2Nsb3N1cmV9fT46OmgxMGRl +YTk0MmYyMzliYzk07i9yY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6U3RvcmU6OmNvbXBhcmVfZ3JvdXBfc2Vzc2lvbjo6e3tjbG9zdXJlfX0+OjpoZDA0 +NzI3MDRlZGNjZTk3Ny4x7y9/Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246OnFyY29kZTo6UXJWZXJpZmljYXRpb246Om1hcmtfYXNfZG9uZTo6 +e3tjbG9zdXJlfX0+OjpoMDM3ZGMyYzU3ODgwYmQ4YvAvigFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5TWFuYWdl +cjo6aGFuZGxlX2NoYW5nZWRfaWRlbnRpdHk6Ont7Y2xvc3VyZX19Pjo6aGRkNzcwMDAyZDVmMDNl +MjXxL4kBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzZXNzaW9u +X21hbmFnZXI6OnNlc3Npb25zOjpTZXNzaW9uTWFuYWdlcjo6Y2hlY2tfaWZfdW53ZWRnZWQ6Ont7 +Y2xvc3VyZX19Pjo6aDE5ZmRkOTJmYTQxNWM3N2PyL4kBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OmFj +Y2VwdF9mb3J3YXJkZWRfcm9vbV9rZXk6Ont7Y2xvc3VyZX19Pjo6aDg2NzU5ODMxMTI0YTY5NWTz +L4EBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnFyY29kZTo6UXJWZXJpZmljYXRpb246Om1hcmtfYXNfZG9uZTo6e3tjbG9zdXJlfX0+Ojpo +MDM3ZGMyYzU3ODgwYmQ4Yi4x9C+ZAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpoYW5kbGVfc3VwcG9y +dGVkX2tleV9yZXF1ZXN0Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoNmFjMmNkMTk2NWE4 +NjdlOPUvgQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlvbjo6bWFya19hc19kb25lOjp7e2Nsb3N1cmV9 +fT46OmgwMzdkYzJjNTc4ODBiZDhiLjL2L2w8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OkdlbmVyaWNT +aHVudDxJLFI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4 +dDo6aDA1ZTkwMmQzZjhhMzZhODH3LzNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6 +aDM0ODhmNmE5NWJiZDVlNjP4L2M8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNlcmlhbGl6ZXI8VyxG +PiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cjo6aGQxMGU2MjY5MGQx +MjJmZDH5LxpzaWduYXR1cmV1cGxvYWRyZXF1ZXN0X25ld/ovFWtleXNiYWNrdXByZXF1ZXN0X25l +d/svNWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46Om1hcF9lcnI6Omg5MWJmYWU1MWYzMzlkYjBj +/C9rY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3Rv +cmVUcmFuc2FjdGlvbjo6bmV3Ojp7e2Nsb3N1cmV9fT46OmhkN2FiY2ZjMmYwN2U3NTVjLjP9L2Bp +bmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9kYXRhYmFzZTo6SWRiRGF0YWJhc2U6OnRyYW5zYWN0aW9u +X29uX211bHRpX3dpdGhfbW9kZTo6aDVlNTIwOTAwMTFmZjI0YjP+L4EBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnFyY29kZTo6UXJWZXJp +ZmljYXRpb246Om1hcmtfYXNfZG9uZTo6e3tjbG9zdXJlfX0+OjpoMDM3ZGMyYzU3ODgwYmQ4Yi4z +/y8wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyNzgwNDJmYWVkOGZmOTk0gDBYY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Okdvc3Np +cFJlcXVlc3Q+OjpoYTU2M2JkNWI0NGM0MzdiOIEwSGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25j +ZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoMGFjZjNkNmMxODAxYzhiMoIwSGNvcmU6Om9w +czo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoMjM5YjNiNjhk +ZGE5YmQ1NIMwSGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2dGFibGUu +c2hpbX19OjpoYTQ5ZDIxOGZiNWVkNmY5OIQwSGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6 +Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoZDI5YTFjYjE0MGFmYWYyM4UwSGNvcmU6Om9wczo6 +ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoZGFkZjNjOWRmYjU4 +ZDJkMoYwSGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hp +bX19OjpoZmMwMjlmMGRhYzM3MzkyM4cwWGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OlNhcz46OmhmNGIyNDk5MWE5NDJjZmU4LjaI +MDNhbGxvYzo6YWxsb2M6Okdsb2JhbDo6YWxsb2NfaW1wbDo6aDQ4NDVjN2IwYzlkODUyNGWJMBBy +b29tc2V0dGluZ3NfbmV3ijBsPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjbG9uZWQ6OkNsb25lZDxJ +PiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhmMmQ0 +ZjJhYzQxZGI2OWUzizBxY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OnNhczo6U2FzOjptYXJrX2FzX2RvbmU6Ont7Y2xvc3VyZX19Pjo6aDcz +ZGM5MDNhMTlhNmQ3MTaMMIEBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246OnFyY29kZTo6UXJWZXJpZmljYXRpb246Om1hcmtfYXNfZG9uZTo6 +e3tjbG9zdXJlfX0+OjpoMDM3ZGMyYzU3ODgwYmQ4Yi40jTCnAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6 +Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpyZXF1ZXN0X2tleV9oZWxwZXI6Ont7 +Y2xvc3VyZX19Pj4+OjpoYjUyMzU2MTM0Yzk3OWYxOC4xjjBzY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6U2FzOjptYXJrX2FzX2Rv +bmU6Ont7Y2xvc3VyZX19Pjo6aDczZGM5MDNhMTlhNmQ3MTYuMY8wMDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoN2Y3ZWExYjVkYzlmZGE1OJAwgQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlv +bjo6bWFya19hc19kb25lOjp7e2Nsb3N1cmV9fT46OmgwMzdkYzJjNTc4ODBiZDhiLjWRMGJpbmRl +eGVkX2RiX2Z1dHVyZXM6OmlkYl9kYXRhYmFzZTo6SWRiRGF0YWJhc2U6OnRyYW5zYWN0aW9uX29u +X211bHRpX3dpdGhfbW9kZTo6aDVlNTIwOTAwMTFmZjI0YjMuMZIwwQFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNy +eXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OmdldF9zZWNyZXRfcmVxdWVzdF9ieV9pbmZvOjp7e2Nsb3N1cmV9fT46OmgzZWI0ODdkYTMz +YWFmYzhkkzAsY29yZTo6Y2xvbmU6OkNsb25lOjpjbG9uZTo6aDY5Zjc1YzI0MTk0OWYyZWWUMDVj +b3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjptYXBfZXJyOjpoM2Y3NjI1Y2I2OWZhODNiZZUwMHNl +cmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfbWFwOjpoYjM4YzBjN2FhODBiNGNlNpYwOHNlcmRlX3dh +c21fYmluZGdlbjo6ZXJyb3I6OkVycm9yOjpuZXc6OmhlMzFhNmRjYmJlMTIxMGQ0lzAwPCZUIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ZDcyZmZiNWUzYzNlNDQymDAwPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmhiYWEwYzM0NTMzYzI5ZmQxmTAwPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmgwMDYzZTc3YmJmOTFhY2U4mjA4c2VyZGVfd2FzbV9iaW5kZ2VuOjplcnJv +cjo6RXJyb3I6Om5ldzo6aDE5ODI3NDBmNjc5OGU3OTabMDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDFkMzg5NDAyMTdmZjUxMDWcMFI8cnVtYV9jb21tb246OmVuY3J5cHRpb246Oktl +eVVzYWdlIGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6OmhmZDI0OGE2ZmQ2MWY3MTYznTBV +c2VyZGU6OnNlcjo6aW1wbHM6OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3Igc3RyPjo6 +c2VyaWFsaXplOjpoNjQ3MGZkMjcwZjhiNmJhNp4wMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoOGI0OGExOTBjNTkyODlhZJ8waDxjb3JlOjppdGVyOjphZGFwdGVyczo6ZnVzZTo6RnVz +ZTxJPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omhm +YmQ5NjkzMjBkMzgyNDA5oDAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1ZDJjYzE5 +ZmY5MTZkZDg1oTAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3YWUxMzMyMDcxNTc1 +ZDY5ojAwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MDk4YzkyZWZkOTAyNDU3ozAw +PCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhYTIzNGQ2NmMyZWQwNzA5pDAwPCZUIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiM2I2NDk5YTRmZTc0NWYypTAwPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmhjNWZlMDlhN2QwZjA3ZmIypjAwPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmhkNDc4NjM4YTU5MjI1ZWM3pzBLPGFsbG9jOjpzeW5jOjpBcmM8VD4gYXMg +Y29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6Omg3ZTUxYzY5ZjZkYmU0MGFiqDAwPCZU +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2OWNlOTIwMzQ0YWVmYjhjqTAwPCZUIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjYjM4MzI4ZjA4ZjM4NTdhqjAwPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmhkM2JhNmMyOTM5MTFkNmJkqzAwPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6OmhmMmJiOGM2NTFkMWIyOGJhrDBTPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QW5u +b3RhdGlvbiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGVlMGRmMWNhMzQ2ZjI5NzOt +MIUBPGRpZ2VzdDo6Y29yZV9hcGk6OmN0X3ZhcmlhYmxlOjpDdFZhcmlhYmxlQ29yZVdyYXBwZXI8 +VCxPdXRTaXplLE8+IGFzIGRpZ2VzdDo6Y29yZV9hcGk6OlVwZGF0ZUNvcmU+Ojp1cGRhdGVfYmxv +Y2tzOjpoNzI3ZTVjOWEyMGRjZjFlM64wMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +ZGVlYjU3ZjJhZmY5ODZmMq8wMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzJlNjMy +MTM5NjkzYjBjNrAwVTxydW1hX2NvbW1vbjo6c2VyZGU6OmJhc2U2NDo6QmFzZTY0PEMsQj4gYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDM0MzJhOTA4MDM1YmM3YWSxMFU8cnVtYV9jb21tb246 +OnNlcmRlOjpiYXNlNjQ6OkJhc2U2NDxDLEI+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omgz +YWEyMzI5ODdiY2E3YzEzsjCXATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6Om1lbW9yeXN0b3Jl +OjpNZW1vcnlTdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRv +U3RvcmU+OjpnZXRfdXNlcl9kZXZpY2VzOjp7e2Nsb3N1cmV9fTo6aGM3ZmU2Yzk3Zjc4ODNmYjWz +MC5xcmNvZGU6OmNhbnZhczo6Q2FudmFzOjpnZXQ6OmhiZTY0MTBlYTY3YWZkMTAwtDB5PHRyYWNp +bmdfc3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2Nv +cmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+OjpjbG9uZV9zcGFuOjpoZDdiMDNiMDE2YjljNmYz +ObUwczx0cmFjaW5nX3N1YnNjcmliZXI6OmxheWVyOjpsYXllcmVkOjpMYXllcmVkPEwsUz4gYXMg +dHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6ZXhpdDo6aGI4MjQ4ZTE4MDdk +M2UyYma2MHQ8dHJhY2luZ19zdWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+ +IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OmVudGVyOjpoMmZiNDdm +NGExZTkwZGIwMrcwQ3N0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxLLFYsUz46 +OmdldDo6aDA0Mjc1YTQxZTBiYjgzYze4MFJmdXR1cmVzX2NvcmU6OnRhc2s6Ol9faW50ZXJuYWw6 +OmF0b21pY193YWtlcjo6QXRvbWljV2FrZXI6Ondha2U6OmgyZmM3ODg2MjI0N2Y5Y2VjuTBpY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0 +Y2hldDo6QWN0aXZlRG91YmxlUmF0Y2hldD46Omg1NjY3Y2UzZTYyZjJhYzQzujA2c2VyZGU6Ol9f +cHJpdmF0ZTo6ZGU6Om1pc3NpbmdfZmllbGQ6OmgyOTcxNDQzMTg1YzJkOGI1uzBZPHZvZG96ZW1h +Yzo6b2xtOjphY2NvdW50OjpsaWJvbG06OlBpY2tsZSBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVy +b2l6ZTo6aGIwZDE2NGEwMDQ1OTkzOTC8MCpoa2RmOjpIa2RmPEgsST46OmV4cGFuZDo6aDVmMDg2 +MDg3ZGFhZDdlMTa9MDtoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPjo6cmVtb3ZlOjpo +NzIzNTljM2Y1YzY4NTBiOb4wMTxbVF0gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDk4ODM3 +NjI5ZWI3OTZmOWW/MEN0b2tpbzo6c3luYzo6YmF0Y2hfc2VtYXBob3JlOjpTZW1hcGhvcmU6OnJl +bGVhc2U6OmgwYjAxZGYwYWFhMDNhMTZhwDBUPHRva2lvOjp1dGlsOjp3YWtlX2xpc3Q6Oldha2VM +aXN0IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhiMDRlMWZjYWU0MGQ4YzQ3wTBV +PHJ1bWFfZXZlbnRzOjplbnVtczo6VG9EZXZpY2VFdmVudFR5cGUgYXMgY29yZTo6Zm10OjpEaXNw +bGF5Pjo6Zm10OjpoYmQwZmI0OThjMzAyODE2OMIwaDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6 +OnNlc3Npb25faWQ6OlNlc3Npb25JZCBhcyBhbGxvYzo6Ym9ycm93OjpUb093bmVkPjo6dG9fb3du +ZWQ6OmgzMzdmYjMwN2JjYWRiYzA4wzB7PHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNl +X2lkOjpPd25lZERldmljZUlkIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208YWxsb2M6OnN0cmluZzo6 +U3RyaW5nPj46OmZyb206OmhlZDE1NGRiZmZiYTQ3NTYyxDBGPGFsbG9jOjpyYzo6UmM8VCxBPiBh +cyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYTk5MWM2ZDJkOGQ1YjJmZMUwKGpzX2lu +dDo6aW50OjpJbnQ6Om5ldzo6aGQ0ODg2MTY1ZTY5OTBjMTbGMF08dHJhY2luZ19jb3JlOjpkaXNw +YXRjaGVyOjpTZXRHbG9iYWxEZWZhdWx0RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDE4NTMxNDFjZTcwM2JmNWPHMGM8c2VyZGVfanNvbjo6dmFsdWU6OnNlcjo6U2VyaWFsaXplciBh +cyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVjdDo6aGQxZGIzZmEyNDcw +YTg0ODjIMDd3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdDo6ZHluX2ludG86OmhjMmJhNjBhZmYy +Yjc2ZWE5yTAqc3RkOjp0aW1lOjpJbnN0YW50Ojpub3c6OmhjNzU4ZjY2OWFiYTc5NDc2yjA0YWxs +b2M6OnJhd192ZWM6OmNhcGFjaXR5X292ZXJmbG93OjpoOWViNjg0ZTFlYTZlZmRlMMswLWNvcmU6 +OnBhbmlja2luZzo6cGFuaWNfZm10OjpoN2QyMjY0M2IwYmVjZjU3N8wwRGNvcmU6OnNsaWNlOjpp +bmRleDo6c2xpY2VfZW5kX2luZGV4X292ZXJmbG93X2ZhaWw6Omg5ZmU3NDRkNTY0ZTFiY2Y2zTA9 +Y29yZTo6c3RyOjp0cmFpdHM6OnN0cl9pbmRleF9vdmVyZmxvd19mYWlsOjpoZDZlN2UxM2IxNDFm +MjNlYc4wRWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZV9qc29uOjp2YWx1ZTo6VmFsdWU+ +OjpoMWYwMDkxOTVkMzI3NDZkMs8wamNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjptYWNoaW5lOjpWZXJpZmljYXRpb25NYWNoaW5lPjo6aDJh +OGRiM2ZkZjhiYTJlNjDQMKABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpzdGFydF9zYXM8bWF0cml4X3Nka19jcnlwdG86 +OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlJlYWR5Pjo6e3tjbG9zdXJlfX0+OjpoOTRiNGZkMTE2 +NDkxZjYyZNEwiQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6bWFjaGluZTo6T2xtTWFjaGluZTo6aW1wb3J0X2V4cG9ydGVkX3Jvb21fa2V5c19oZWxwZXI6 +Ont7Y2xvc3VyZX19Pjo6aDkzODc3NDI2MTQ5ZDA3M2YuMtIwYWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25TdG9yZT46 +Omg4NjYxMzI1MGMzNjFlMjFlLjHTMGc8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +c2FzOjpoZWxwZXJzOjpTYXNJZHMgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg4N2Y2 +MTRlNDRlYTUyYzc51DB7Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRva2lvOjpzeW5jOjptdXRl +eDo6TXV0ZXg8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OlNlc3Npb24+Ojpsb2NrOjp7e2Nsb3N1 +cmV9fT46Omg4ZTc3MDI3N2VjNTY0YzIz1TCuAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0 +aW9uOjptYWNoaW5lOjpWZXJpZmljYXRpb25NYWNoaW5lOjptYXJrX3Nhc19hc19kb25lOjp7e2Ns +b3N1cmV9fT4+Pjo6aGMzYjFhMjI0OGU4NjliZmQuMtYwrgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8Y29yZTo6cGluOjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnZl +cmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZpY2F0aW9uTWFjaGluZTo6bWFya19zYXNfYXNfZG9u +ZTo6e3tjbG9zdXJlfX0+Pj46OmhjM2IxYTIyNDhlODY5YmZkLjPXMG08c3RkOjpjb2xsZWN0aW9u +czo6aGFzaDo6bWFwOjpWYWx1ZXM8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9y +OjpJdGVyYXRvcj46Om5leHQ6OmgyMDYxOWY1OTMwZDEzZWU42DAzYWxsb2M6OmFsbG9jOjpleGNo +YW5nZV9tYWxsb2M6Omg4M2RkMzQwMzZlYzkxOWMxLjEx2TAsY29yZTo6ZXJyb3I6OkVycm9yOjpj +YXVzZTo6aDZkMDlmNTM3NmU4NTcxZDbaMGE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVu +dHM6Om9sbV92MTo6T2xtVjFLZXlzIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5MzRhZjlm +ZmJhMWFiNTcw2zBIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6Omg2M2E5OGU2NmFjY2Y1MmI43DCHATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpi +YWNrdXA6OkJhY2t1cERlY3J5cHRpb25LZXkgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFp +dHM6OlJlZkZyb21XYXNtQWJpPjo6cmVmX2Zyb21fYWJpOjpoYmNhYjlkYWFjYzJiNWVhMd0wGF9f +d2JnX3Jvb21rZXljb3VudHNfZnJlZd4wWzxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNhY2hl +czo6RGV2aWNlU3RvcmUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZlYWZkYTc2MDZiN2M5 +ZDLfMFw8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpjYWNoZXM6OlNlc3Npb25TdG9yZSBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTRhYzdhZWViYzc2ZjhlZuAwYTxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OmNhY2hlczo6R3JvdXBTZXNzaW9uU3RvcmUgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDE4OWY2NWY3NjUyM2NiMDHhMB1fX3diZ19jcm9zc3NpZ25pbmdzdGF0dXNfZnJl +ZeIwhgE8aW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfb2JqZWN0X3N0b3JlOjpJZGJPYmplY3RTdG9y +ZSBhcyBpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9xdWVyeV9zb3VyY2U6OklkYlF1ZXJ5U291cmNl +Pjo6Z2V0OjpoMmNkY2Y4ZjY3ZDRkY2ZkMOMwYGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxpbmRl +eGVkX2RiX2Z1dHVyZXM6OmlkYl90cmFuc2FjdGlvbjo6SWRiVHJhbnNhY3Rpb24+OjpoYzg3ZTk2 +NWE0YzBiYTYyYuQwamNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjpzdG9yZTo6U3RvcmVIYW5kbGU6Om9wZW46Ont7Y2xvc3VyZX19Pjo6aDY4YTMwOTYwNzFh +NWIwNDTlMIABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +OmxpYm9sbV9taWdyYXRpb246Ok1pZ3JhdGlvbjo6bWlncmF0ZV9iYXNlX2RhdGE6Ont7Y2xvc3Vy +ZX19Pjo6aGQxN2MwMWNiY2RmNDM4NDTmMIkCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHdhc21f +YmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjptYWNoaW5lOjpPbG1NYWNoaW5lOjpnZXRfc2VjcmV0c19mcm9tX2luYm94Ojp7e2Nsb3N1cmV9 +fTo6Xzo6X193YXNtX2JpbmRnZW5fZ2VuZXJhdGVkX09sbU1hY2hpbmVfZ2V0U2VjcmV0c0Zyb21J +bmJveDo6e3tjbG9zdXJlfX0+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoNzQ4YjE5ODA3 +YTJiNDE4MucwbGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVy +aWZpY2F0aW9uOjptYWNoaW5lOjpWZXJpZmljYXRpb25NYWNoaW5lPjo6aDJhOGRiM2ZkZjhiYTJl +NjAuM+gwaTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OmhlbHBlcnM6OlNh +c0lkcyBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDg3ZjYxNGU0NGVhNTJjNzkuMekw +X2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50 +OjpTdGF0aWNBY2NvdW50RGF0YT46OmhiNzJhY2IwN2QyOWU5YTk16jBYY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpzZWNyZXQ6OnJlcXVlc3Q6OlJlcXVlc3RBY3Rpb24+Ojpo +NTJmZjE4NDJhM2VjNDdlZuswbGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6dmVyaWZpY2F0aW9uOjptYWNoaW5lOjpWZXJpZmljYXRpb25NYWNoaW5lPjo6aDJhOGRi +M2ZkZjhiYTJlNjAuNOwwXzxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpE +ZXZpY2UgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg5YjBiYjlmMmUzMDgzNDY37TAQ +c2lnbmF0dXJlc19jbGVhcu4wLGNvcmU6OmVycm9yOjpFcnJvcjo6Y2F1c2U6Omg4NWRiNmRkNTE3 +MjdlZTA57zCuAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpwaW46OlBpbjxhbGxvYzo6 +Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjptYWNoaW5lOjpWZXJp +ZmljYXRpb25NYWNoaW5lOjptYXJrX3Nhc19hc19kb25lOjp7e2Nsb3N1cmV9fT4+Pjo6aGMzYjFh +MjI0OGU4NjliZmQuNPAwxAJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpm +dXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5l +OjpPbG1NYWNoaW5lOjppc19iYWNrdXBfZW5hYmxlZDo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjppc19iYWNrdXBfZW5hYmxlZDo6e3tjbG9zdXJlfX0s +d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6e3tjbG9zdXJlfX0+Pjo6aGU0YmY2Y2ViNzNmOTRjZDTx +MNUCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0 +dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6 +Z2V0X2JhY2t1cF9rZXlzOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1 +cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9s +bU1hY2hpbmU6OmdldF9iYWNrdXBfa2V5czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6YmFja3VwOjpCYWNrdXBLZXlzPjo6e3tjbG9zdXJlfX0+Pjo6aGE5MGYwOTExMmIxN2I5 +NjbyMK4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnBpbjo6UGluPGFsbG9jOjpib3hl +ZDo6Qm94PG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246Om1hY2hpbmU6OlZlcmlmaWNh +dGlvbk1hY2hpbmU6Om1hcmtfc2FzX2FzX2RvbmU6Ont7Y2xvc3VyZX19Pj4+OjpoYzNiMWEyMjQ4 +ZTg2OWJmZC418zAsY29yZTo6ZXJyb3I6OkVycm9yOjpjYXVzZTo6aDA2ZDQ2NGM1MjEyMjgwOTX0 +MCxjb3JlOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoNGYwMThiN2YyYjFkMjQyZPUwLGNvcmU6OmVy +cm9yOjpFcnJvcjo6Y2F1c2U6Omg1YjMxZmEyNGE1N2M0Mjdl9jAsY29yZTo6ZXJyb3I6OkVycm9y +OjpjYXVzZTo6aGViMWJiMTdlYjIxOGI3MzH3MG1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjpjYWNoZXM6OlNlc3Npb25TdG9yZTo6YWRkOjp7e2Nsb3N1 +cmV9fT46OmhlYmM3MDA0NDQzMDBhYWQ5+DAsY29yZTo6ZXJyb3I6OkVycm9yOjpjYXVzZTo6aDA5 +ZjA5NzM4MDJhNTg0MDn5MGhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpTaGFyZUluZm8+OjpoMjBjODZkZjY2 +NDhiOTllYfowVTx3YXNtX2JpbmRnZW46OmNsb3N1cmU6OkNsb3N1cmU8VD4gYXMgY29yZTo6b3Bz +Ojpkcm9wOjpEcm9wPjo6ZHJvcDo6aDAyMjQ2NGQ4NThlYTUzZDf7MCxjb3JlOjplcnJvcjo6RXJy +b3I6OmNhdXNlOjpoMDVmYWQzNjljYjEyMmUwMPwwbG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlw +dG9fc3RvcmU6OmluZGV4ZWRkYl9zZXJpYWxpemVyOjpJbmRleGVkZGJTZXJpYWxpemVyOjplbmNv +ZGVfa2V5OjpoMTlkZmE3YWNlNzcxN2Y0ZP0wbG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9f +c3RvcmU6OmluZGV4ZWRkYl9zZXJpYWxpemVyOjpJbmRleGVkZGJTZXJpYWxpemVyOjplbmNvZGVf +a2V5OjpoMWY5NmQxNTY0NTA3OWIyM/4wbG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3Rv +cmU6OmluZGV4ZWRkYl9zZXJpYWxpemVyOjpJbmRleGVkZGJTZXJpYWxpemVyOjplbmNvZGVfa2V5 +OjpoNWZjY2ExODQ3MTU2M2MyOP8wQ3NlcmRlX3dhc21fYmluZGdlbjo6ZGU6OkRlc2VyaWFsaXpl +cjo6aXNfbnVsbGlzaDo6aDIxMzU4N2Q5N2Y2YmNkOTmAMT5zZXJkZV9qc29uOjpkZTo6RGVzZXJp +YWxpemVyPFI+OjpwZWVrX2Vycm9yOjpoMzJmY2ViODczZDIxMTMwZoExOXNlcmRlX2pzb246OmRl +OjpEZXNlcmlhbGl6ZXI8Uj46OmVycm9yOjpoNDdkN2FjOTdjNTExMDM1ZoIxMHNlcmRlOjpkZTo6 +VmlzaXRvcjo6dmlzaXRfaTY0OjpoOWNmYjkzNDA4NjgxMTY2N4MxMHNlcmRlOjpkZTo6VmlzaXRv +cjo6dmlzaXRfaTY0OjpoOGIyMjlkNjA5ZjQ0ZjFiMoQxMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlz +aXRfaTY0OjpoOGY4YmFkOWRlZTI3ZjI3ZYUxMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfaTY0 +OjpoNWM5OTQ1MGI1OTEzMGZkY4YxMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfaTY0OjpoYmQ4 +OWM1NWI1YzhlMDRiMocxMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfZjY0OjpoYzIyZjIyMWZm +MjMxNmQ3OYgxMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfZjY0OjpoOGFlZDU3NTNmYTFhOWM1 +MIkxMHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfZjY0OjpoY2MyMDBkZmQ1ZWM0NDRhOYoxMHNl +cmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfZjY0OjpoMDYxNzI5OGYzMjYzZTY5NYsxMHNlcmRlOjpk +ZTo6VmlzaXRvcjo6dmlzaXRfZjY0OjpoZTFkZGRhNjQ4ZWYzNzRiOIwxMWNvcmU6OnJlc3VsdDo6 +UmVzdWx0PFQsRT46OmFuZDo6aDc5MTBkYjA4YTRjYjlhNmWNMTBzZXJkZTo6ZGU6OlZpc2l0b3I6 +OnZpc2l0X2k2NDo6aDUzZjdjMjVlOWEyNWZhY2GOMTBzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0 +X3U2NDo6aGIzZWVkNmYyNWYyNDk4Y2aPMTBzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2Y2NDo6 +aGIyZDkxOWMwZjYxYjM0MmaQMTBzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2Y2NDo6aGRhMDNm +MjNkYjczMWNlOTeRMTBzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2Y2NDo6aDY5YjRhZjM0NGY5 +YzYyMTGSMVdjb3JlOjpzbGljZTo6aW5kZXg6OjxpbXBsIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4 +PEk+IGZvciBbVF0+OjppbmRleDo6aGVlNGNkZWZjZGIwZGJiN2aTMUtpbmRleGVkX2RiX2Z1dHVy +ZXM6OmlkYl90cmFuc2FjdGlvbjo6SWRiVHJhbnNhY3Rpb246Om5ldzo6aDFjNmE1YjYwMjJjNmYz +YmOUMUBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpzbGljZV9yZW1vdmU6OmgwN2Mx +MGU4NjUyNDgxZmE0lTFwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6VmFsdWVzPEss +Vj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoMTI3 +NjUzOTFiNTI3NDQ5M5YxcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OlZhbHVlczxL +LFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDFk +MTUwMGM5NmEzOWM3MTWXMXA8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpWYWx1ZXM8 +SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg0 +N2IxMzIxMzE5NWI2ZTg5mDFwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6VmFsdWVz +PEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0Ojpo +ODQ1YjRhMDc4ZjgwY2E0MZkxX2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6b2xtOjphY2NvdW50OjpTdGF0aWNBY2NvdW50RGF0YT46OmgzZTAwNDk1M2I0NzRhMzRh +mjFAbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpzZXJpYWxpemVfY3VydmVfa2V5OjpoZGRkZTcy +ZjM3ODQ1OGYyMJsxTW1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6RXZlbnRFbmNyeXB0aW9uQWxn +b3JpdGhtOjphc19zdHI6Omg4MmU0NTE1NWMwYTZhYzk4nDFTbWF0cml4X3Nka19jcnlwdG86Om9s +bTo6c2lnbmluZzo6cGtfc2lnbmluZzo6U2VsZlNpZ25pbmc6OnBpY2tsZTo6aGRmNGNiNGU1NDcw +N2RiMjKdMTo8VCBhcyBhbGxvYzo6Ym9ycm93OjpUb093bmVkPjo6dG9fb3duZWQ6OmhjZGZkNTUx +MTFiNjIwYzkznjFsY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2 +ZXJpZmljYXRpb246Om1hY2hpbmU6OlZlcmlmaWNhdGlvbk1hY2hpbmU+OjpoNWNiNWVkOWZhMzVk +NmEwMC4xnzE6PFQgYXMgYWxsb2M6OmJvcnJvdzo6VG9Pd25lZD46OnRvX293bmVkOjpoYjk3Nzc2 +OGZhM2NjMDk1NqAxK2FsbG9jOjpzeW5jOjpBcmM8VD46Om5ldzo6aGE1ZDE4MWFmNTcyYzBiMjSh +MSxjb3JlOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoNThiYThjZmY0YjFkNDU1OaIxLGNvcmU6OmVy +cm9yOjpFcnJvcjo6Y2F1c2U6OmhiMWIwMDMwNDIwNTFiMjk4ozEsY29yZTo6ZXJyb3I6OkVycm9y +OjpjYXVzZTo6aGY4NTVjMzRiOGQwMWIyMjekMWE8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpk +ZXZpY2VfaWQ6Ok93bmVkRGV2aWNlSWQgYXMgY29yZTo6aGFzaDo6SGFzaD46Omhhc2g6OmgxN2Y4 +MDRhZDFjN2Q4NTQ4pTGgAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6U2FzU3RhdGU8bWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OktleVNlbnQ+Pjo6aGEzMmQxYjQ1ODJi +N2QwNWKmMaEBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVy +aWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6QWNjZXB0ZWQ+Pjo6aDc5NGU0NDE2ZDA1MDlkNjSn +MaIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0 +aW9uOjpzYXM6OnNhc19zdGF0ZTo6Q29uZmlybWVkPj46OmhhYWJkNjE4YWEzNmI2ZTM2qDGjAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpz +YXM6OnNhc19zdGF0ZTo6U2FzU3RhdGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +c2FzOjpzYXNfc3RhdGU6OldlQWNjZXB0ZWQ+Pjo6aGU4YjcyOTY0YjI1YjdjN2SpMaYBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6 +c2FzX3N0YXRlOjpTYXNTdGF0ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6 +OnNhc19zdGF0ZTo6S2V5c0V4Y2hhbmdlZD4+OjpoZTE5NGJhN2JmNWMzYzRlMaoxpwFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpz +YXNfc3RhdGU6OlNhc1N0YXRlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6 +c2FzX3N0YXRlOjpXYWl0aW5nRm9yRG9uZT4+OjpoMzI4MTYwYTZmOTQ3YTk3M6sxaTxtYXRyaXhf +c2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OmhlbHBlcnM6OlNhc0lkcyBhcyBjb3JlOjpj +bG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDg3ZjYxNGU0NGVhNTJjNzkuMqwxLGNvcmU6OmVycm9yOjpF +cnJvcjo6Y2F1c2U6Omg1YjMzNTk2MGQxNTdhNjBmrTFoPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpt +YXA6Ok1hcDxJLEY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6 +bmV4dDo6aDZmZGFkYzliOTQ4ZTc2MjCuMTFjb3JlOjpjZWxsOjpSZWZDZWxsPFQ+Ojpib3Jyb3c6 +OmgyNGQ5MzdkZDc3OGRmYjlirzExY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoZmUx +M2JmYzE3ZWE0Y2NjMrAxOmdsb29fdGltZXJzOjpmdXR1cmU6OlRpbWVvdXRGdXR1cmU6Om5ldzo6 +aDgyZWM3YjczNzE4ZTgxZTSxMbcBd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJUcmFuc2FjdGlv +bk1vZGU6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208d2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9J +ZGJUcmFuc2FjdGlvbk1vZGU6OklkYlRyYW5zYWN0aW9uTW9kZT4gZm9yIHdhc21fYmluZGdlbjo6 +SnNWYWx1ZT46OmZyb206OmgzM2EzMDE1YmIyMTVkNzBmsjEsY29yZTo6ZXJyb3I6OkVycm9yOjpj +YXVzZTo6aGQwMDNiYzZjMmQ3ZWRhNTSzMUM8Jm11dCBUIGFzIGJ5dGVzOjpidWY6OmJ1Zl9pbXBs +OjpCdWY+OjphZHZhbmNlOjpoZGQzNzVkOTJhMDRiOTgxMS4ytDEzdm9kb3plbWFjOjpjaXBoZXI6 +Ok1hYzo6dHJ1bmNhdGU6OmhlY2VhNDY5MmZlYjI3MDc1tTEsY29yZTo6ZXJyb3I6OkVycm9yOjpj +YXVzZTo6aDViM2IzMjg4YmVmNTFhNTS2MSxjb3JlOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoNjEx +NmQ3Y2M2MTQwNmFlY7cxWzx2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbl9jb25maWc6OlNlc3Npb25D +b25maWcgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDBhMzkzYjYxZjFhYjZkMWG4MSxjb3Jl +OjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoMGRiNTc3OTE3ZWUyOGQwObkxjAFlZDI1NTE5X2RhbGVr +OjplcnJvcnM6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208ZWQyNTUxOV9kYWxlazo6ZXJyb3Jz +OjpJbnRlcm5hbEVycm9yPiBmb3Igc2lnbmF0dXJlOjplcnJvcjo6RXJyb3I+Ojpmcm9tOjpoODdk +MzM0YTdhNmFiM2ViY7oxlAFjdXJ2ZTI1NTE5X2RhbGVrOjpmaWVsZDo6PGltcGwgc3VidGxlOjpD +b25zdGFudFRpbWVFcSBmb3IgY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjp1MzI6 +OmZpZWxkOjpGaWVsZEVsZW1lbnQyNjI1Pjo6Y3RfZXE6Omg5YTVjMWMwMjNjZWJiZTE5uzFjPGN1 +cnZlMjU1MTlfZGFsZWs6Om1vbnRnb21lcnk6Ok1vbnRnb21lcnlQb2ludCBhcyBzdWJ0bGU6OkNv +bnN0YW50VGltZUVxPjo6Y3RfZXE6OmhhZTRkZGNmYWZmOTQyNzQ4vDFhY3VydmUyNTUxOV9kYWxl +azo6YmFja2VuZDo6c2VyaWFsOjpjdXJ2ZV9tb2RlbHM6OkNvbXBsZXRlZFBvaW50Ojphc19wcm9q +ZWN0aXZlOjpoMTFiNTYzMTJhOTYwYWFlZr0xR2N1cnZlMjU1MTlfZGFsZWs6OndpbmRvdzo6TmFm +TG9va3VwVGFibGU1PFQ+OjpzZWxlY3Q6OmgwYjQxNTkxOWRkYzQ4N2JivjFHY3VydmUyNTUxOV9k +YWxlazo6d2luZG93OjpOYWZMb29rdXBUYWJsZTg8VD46OnNlbGVjdDo6aDQyMWQ2ZjE1NGMwOTQx +YzW/MTFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6OmhjYTFjNmEzOTk1NGEzNzgzwDFj +cnVtYV9jbGllbnRfYXBpOjprZXlzOjp1cGxvYWRfc2lnbmF0dXJlczo6djM6OlNpZ25lZEtleXM6 +OmFkZF9jcm9zc19zaWduaW5nX2tleXM6OmhlZTNhMzE2NTY3MTljM2JjwTFNcnVtYV9ldmVudHM6 +OmtleTo6dmVyaWZpY2F0aW9uOjpjYW5jZWw6OkNhbmNlbENvZGU6OmFzX3N0cjo6aGFhMTE4ZDU4 +ZjQyOGYzYWbCMUNydW1hX2V2ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpTZWNyZXROYW1lOjphc19z +dHI6OmgzN2UwOWU5ZjA1M2Q0Zjk3wzFjY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfY29t +bW9uOjpjYW5vbmljYWxfanNvbjo6dmFsdWU6OkNhbm9uaWNhbEpzb25WYWx1ZT46OmhlOWUxNzNl +NzkwZDJlMTJmxDFtPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dHJhbnNhY3Rpb25faWQ6Ok93 +bmVkVHJhbnNhY3Rpb25JZCBhcyBjb3JlOjpjbXA6OlBhcnRpYWxFcT46OmVxOjpoOWE0MGJmYThi +NWIxNTMwYsUxX2pzX2ludDo6aW50OjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9y +IGpzX2ludDo6aW50OjpJbnQ+OjpzZXJpYWxpemU6Omg2NmU5NWIyZTAwZDU4YzJlxjEsY29yZTo6 +ZXJyb3I6OkVycm9yOjpjYXVzZTo6aDgyOGEwY2MxNWY1NzIwOGbHMU08Y29yZTo6bnVtOjplcnJv +cjo6UGFyc2VJbnRFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjA3MjFiZTc3MWU0 +ZjNmY8gxfTxiYXNlNjQ6OmVuZ2luZTo6Z2VuZXJhbF9wdXJwb3NlOjpHZW5lcmFsUHVycG9zZSBh +cyBiYXNlNjQ6OmVuZ2luZTo6RW5naW5lPjo6aW50ZXJuYWxfZGVjb2RlZF9sZW5fZXN0aW1hdGU6 +OmhhODUwNWFhYWQ0ZTk5ZmMwyTExY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoNGM4 +MjQwM2IzNGEzNmEyMMoxMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aGIzMTVhMGY1 +YzVmYjFlOWbLMTN0cmFjaW5nX2NvcmU6OmZpZWxkOjpGaWVsZDo6bmFtZTo6aGM5MDQzOTM2ZWNk +NzU1NDjMMTFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6Omg3YmM3Nzc1ZGZlZTYzYTNi +zTExY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoZGJkMmFiNDA0NDdlMWEwNM4xLGNv +cmU6OmVycm9yOjpFcnJvcjo6Y2F1c2U6Omg1MWEyMGJiZWJiYzA5MmMzzzExY29yZTo6cGFuaWNr +aW5nOjphc3NlcnRfZmFpbGVkOjpoYzFlZDc0MDg1Nzc2ZDdlONAxMWNvcmU6OnBhbmlja2luZzo6 +YXNzZXJ0X2ZhaWxlZDo6aGIxYTg1YjgwYjlkZGU5ZGHRMU88Y29yZTo6bnVtOjplcnJvcjo6UGFy +c2VJbnRFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYjA3MjFiZTc3MWU0ZjNmYy4x +0jE+PHU4IGFzIGNvcmU6OnNsaWNlOjpjbXA6OlNsaWNlT3JkPjo6Y29tcGFyZTo6aDJkZjhmMzRj +MDNmNTk5MmLTMX5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9s +bTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5OjpzdGF0dXM6Ont7Y2xvc3Vy +ZX19Pjo6aGE2ZGMwMzMzNjJhMTQ2NWTUMZIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6 +Z2V0X3B1YmxpY19pZGVudGl0eV9kaWZmOjp7e2Nsb3N1cmV9fT46Omg2MDc4ZGFhMDFkODJjYWM1 +LjLVMYUBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNp +Z25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6ZXhwb3J0X3NlY3JldDo6e3tjbG9z +dXJlfX0+OjpoNjdkOTQwOGFmZjg4MjEwNNYxSWNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpm +bXQ6OkRlYnVnIGZvciB1c2l6ZT46OmZtdDo6aGFjZGU5NjY2OWNjMTMzZDTXMUc8YWxsb2M6OnN5 +bmM6OkFyYzxULEE+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoMDE3Mjg0MWRhNGFk +OTNmMdgxhgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50 +aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5TWFuYWdlcjo6aGFuZGxlX25ld19pZGVudGl0eTo6e3tj +bG9zdXJlfX0+OjpoNzRjYWMxNjY0ZTVhMjVkMNkxWGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlNlY3JldEltcG9ydEVycm9yPjo6aDU2ODI1YzgwMDNi +ZDE3ZDDaMY8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNo +aW5lOjpPbG1NYWNoaW5lOjpoYW5kbGVfZGVjcnlwdGVkX3RvX2RldmljZV9ldmVudDo6e3tjbG9z +dXJlfX06Ont7Y2xvc3VyZX19Pjo6aDE5NDRkZTdhODk3OTZkYjDbMX9jb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb206OmVuY3J5cHRl +ZDo6VG9EZXZpY2VFbmNyeXB0ZWRFdmVudENvbnRlbnQ+OjpoODA5YzYwOTJiYjZlZDNhYi4z3DGR +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xt +TWFjaGluZTo6aGFuZGxlX2RlY3J5cHRlZF90b19kZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19Ojp7 +e2Nsb3N1cmV9fT46OmgxOTQ0ZGU3YTg5Nzk2ZGIwLjHdMZkBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5hZ2VyOjpJZGVudGl0eU1hbmFn +ZXI6OmdldF91cGRhdGVkX2tleXNfZm9yX3VzZXI6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46 +OmhjYTgyNjJjODI0NTk4MDli3jEwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkOGY0 +NGJjYjI4MGU5MDQ53zGbAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjpnZXRfdXBkYXRlZF9rZXlz +X2Zvcl91c2VyOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoY2E4MjYyYzgyNDU5ODA5Yi4x +4DGsAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDwoYWxsb2M6 +OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNlc3Npb246OlNlc3Npb24+LGFsbG9j +Ojp2ZWM6OlZlYzwobWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9u +bHlEZXZpY2UsbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGho +ZWxkOjpXaXRoaGVsZENvZGUpPiksbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4+ +OjpoNThmMGI3Y2NmZmVmZjc5MuExPXdhc21fYmluZGdlbjo6X19ydDo6V2FzbVJlZkNlbGw8VD46 +OmJvcnJvdzo6aDAwOGNiODk0MDczMTc3MWHiMT13YXNtX2JpbmRnZW46Ol9fcnQ6Oldhc21SZWZD +ZWxsPFQ+Ojpib3Jyb3c6OmgyOGE1NDA4NjA3MDM1YWI44zFGY29yZTo6Zm10OjpudW06OjxpbXBs +IGNvcmU6OmZtdDo6RGVidWcgZm9yIHU4Pjo6Zm10OjpoNjE5Y2Q5YTA0MWZlZjgwN+Qx0wFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVzdWx0OjpS +ZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpEZXZpY2VDaGFuZ2VzLG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+LGZ1dHVyZXNfdXRpbDo6YWJv +cnRhYmxlOjpBYm9ydGVkPj46Omg1MGUwYWZmN2NkNzFhODgy5TEecGlja2xlZGluYm91bmRncm91 +cHNlc3Npb25fbmV35jFEdHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6Q2FsbHNpdGU6OnByaXZhdGVf +dHlwZV9pZDo6aDQwNTdlY2I4OTg5YjdjNWLnMSlvbG1tYWNoaW5lX3JlZ2lzdGVyUm9vbUtleVVw +ZGF0ZWRDYWxsYmFja+gxLm9sbW1hY2hpbmVfcmVnaXN0ZXJVc2VySWRlbnRpdHlVcGRhdGVkQ2Fs +bGJhY2vpMSlvbG1tYWNoaW5lX3JlZ2lzdGVyRGV2aWNlc1VwZGF0ZWRDYWxsYmFja+oxKG9sbW1h +Y2hpbmVfcmVnaXN0ZXJSZWNlaXZlU2VjcmV0Q2FsbGJhY2vrMRpvbG1tYWNoaW5lX2dldFJvb21T +ZXR0aW5nc+wxmwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Omlk +ZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5TWFuYWdlcjo6Z2V0X3VwZGF0ZWRfa2V5c19mb3Jf +dXNlcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aGNhODI2MmM4MjQ1OTgwOWIuMu0xqAJj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0 +OjpSZXN1bHQ8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6OnRvX2RldmljZTo6VG9EZXZpY2VFdmVudDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6 +OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OlJvb21LZXlXaXRoaGVsZENvbnRlbnQ+PixtYXRy +aXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPj4+OjpoNzVmNmI2 +YWZjOTI3ZGRmN+4xdGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjpzdG9yZTo6U3RvcmVIYW5kbGU6Om9wZW5faW5kZXhlZGRiOjp7e2Nsb3N1cmV9fT46Omg1 +MjhiODQyOGVmNjEwYWZj7zGKAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2lu +ZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZTo6b3Blbl93aXRoX3N0 +b3JlX2NpcGhlcjo6e3tjbG9zdXJlfX0+OjpoOWEyNGVjMGQyNDljZTk4MPAxajxydW1hX2NvbW1v +bjo6aWRlbnRpZmllcnM6OnZvaXBfaWQ6Ok93bmVkVm9pcElkIGFzIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemU+OjpkZXNlcmlhbGl6ZTo6aGYyYjQ4ZWZjYmVkMzcwM2XxMT48USBhcyBoYXNoYnJvd246 +OkVxdWl2YWxlbnQ8Sz4+OjplcXVpdmFsZW50OjpoNjY3ZTY3MjllODFhM2E3ZfIxNWNvcmU6OnJl +c3VsdDo6UmVzdWx0PFQsRT46Om1hcF9lcnI6Omg0OTczNDUxZjIzZmI0MWJi8zFhPGNvcmU6Om9w +czo6cmFuZ2U6OlJhbmdlPHVzaXplPiBhcyBjb3JlOjpzbGljZTo6aW5kZXg6OlNsaWNlSW5kZXg8 +W1RdPj46OmluZGV4OjpoMjkxMzgxZWZkZDljYzg5MfQxdzxmdXR1cmVzX3V0aWw6OmZuczo6TWFw +RXJyRm48Rj4gYXMgZnV0dXJlc191dGlsOjpmbnM6OkZuT25jZTE8Y29yZTo6cmVzdWx0OjpSZXN1 +bHQ8VCxFPj4+OjpjYWxsX29uY2U6OmgzOTBhNjYwODE2Mzg4NTBl9TEyY29yZTo6b3B0aW9uOjpP +cHRpb248VD46OmV4cGVjdDo6aDRkNGNlYTVmYjM3OTMyMTn2MT08c3RyIGFzIHRyYWNpbmc6OmZp +ZWxkOjpBc0ZpZWxkPjo6YXNfZmllbGQ6OmhiZTM4NzcxN2NjOTE0YjM09zFeY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpjYWxsOjppbnZpdGU6OkNhbGxJbnZpdGVFdmVudENv +bnRlbnQ+OjpoZmQzNmQ1NjBlM2UyZjg3NfgxgAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5 +OjpzdGF0dXM6Ont7Y2xvc3VyZX19Pjo6aGE2ZGMwMzMzNjJhMTQ2NWQuMfkx2AJjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpnZXRfdXNlcl9kZXZp +Y2VzOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90 +b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Omdl +dF91c2VyX2RldmljZXM6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRldmlj +ZTo6VXNlckRldmljZXM+Ojp7e2Nsb3N1cmV9fT4+OjpoNDQ1OWUyY2U5MjQ2M2YzNvoxMDwmVCBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoODhiZTYzN2U3ZWEwZmVlOPsxMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoYTc0OGU3YTI5MzdhNDg0N/wxR2NvcmU6OmZtdDo6bnVtOjo8 +aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1MTY+OjpmbXQ6OmgxZmQ2YzBhNGFjZjE5ZTdk/TFJ +Y29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIHU2ND46OmZtdDo6aGU4 +MGU2MTJjYmRiODI4NTUuMf4xWmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OlNlY3JldEltcG9ydEVycm9yPjo6aDU2ODI1YzgwMDNiZDE3ZDAuMv8xMmNv +cmU6Om9wdGlvbjo6T3B0aW9uPFQ+OjpleHBlY3Q6Omg0NzQ3OTg1Y2EyYTgyY2RlgDJLPGFueWhv +dzo6ZXJyb3I6OkVycm9ySW1wbDxFPiBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgyYmY2 +MzRhNGM5MzExY2M5gTJrPHNlcmRlX2pzb246OmRlOjpVbml0VmFyaWFudEFjY2VzczxSPiBhcyBz +ZXJkZTo6ZGU6OlZhcmlhbnRBY2Nlc3M+OjpuZXd0eXBlX3ZhcmlhbnRfc2VlZDo6aDA0NTMwYjBm +ZGY1ODg0ZmKCMms8c2VyZGVfanNvbjo6ZGU6OlVuaXRWYXJpYW50QWNjZXNzPFI+IGFzIHNlcmRl +OjpkZTo6VmFyaWFudEFjY2Vzcz46Om5ld3R5cGVfdmFyaWFudF9zZWVkOjpoMTE2ZmUzZTAyNDk5 +OGMwYYMyazxzZXJkZV9qc29uOjpkZTo6VW5pdFZhcmlhbnRBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRl +OjpWYXJpYW50QWNjZXNzPjo6bmV3dHlwZV92YXJpYW50X3NlZWQ6OmgxM2EyNDQyMDg0OWJkYjkz +hDJrPHNlcmRlX2pzb246OmRlOjpVbml0VmFyaWFudEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlZh +cmlhbnRBY2Nlc3M+OjpuZXd0eXBlX3ZhcmlhbnRfc2VlZDo6aDU0MzQyYWI0YjdiZTViZDaFMms8 +c2VyZGVfanNvbjo6ZGU6OlVuaXRWYXJpYW50QWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6VmFyaWFu +dEFjY2Vzcz46Om5ld3R5cGVfdmFyaWFudF9zZWVkOjpoOTNhOWIwYTA3NWIwMDFjNYYykwE8aW5k +ZXhlZF9kYl9mdXR1cmVzOjppZGJfb2JqZWN0X3N0b3JlOjpJZGJPYmplY3RTdG9yZSBhcyBpbmRl +eGVkX2RiX2Z1dHVyZXM6OmlkYl9xdWVyeV9zb3VyY2U6OklkYlF1ZXJ5U291cmNlPjo6Z2V0X2Fs +bF93aXRoX2tleTo6aGU1NjEwZjQwZTgwYmFjMDWHMnhjb3JlOjppdGVyOjpyYW5nZTo6PGltcGwg +Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3IgZm9yIGNvcmU6Om9wczo6cmFu +Z2U6OlJhbmdlPEE+Pjo6bmV4dDo6aGRiMGQ5ZWY3ZjNiOTNhNTmIMmQ8Jm11dCBzZXJkZV9qc29u +OjpzZXI6OlNlcmlhbGl6ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFs +aXplX25vbmU6OmhlNzkwYTU2ZTBhOGM2YjE3iTJsbWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0 +b19zdG9yZTo6aW5kZXhlZGRiX3NlcmlhbGl6ZXI6OkluZGV4ZWRkYlNlcmlhbGl6ZXI6OmVuY29k +ZV9rZXk6OmhkMjEzYTA2MjMwODYyZTFhijJKc2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6RGVzZXJp +YWxpemVyOjphc19vYmplY3RfZW50cmllczo6aGE1OTYxOWUyMTU0OWY1MzeLMkxybXBfc2VyZGU6 +OmRlY29kZTo6RGVzZXJpYWxpemVyPFIsQz46OnRha2Vfb3JfcmVhZF9tYXJrZXI6OmgzNjk1MWNm +YTMyNWE4MjEyjDJOPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6aW5kZXg6Oklu +ZGV4PEk+Pjo6aW5kZXg6Omg3OTRkZGY3NTQ1MmRlYjhijTKJATw8YWxsb2M6OnZlYzo6aW50b19p +dGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OkRyb3BH +dWFyZDxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgwM2FjNjllMWU4ZWQy +ZTBjjjLFAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3Jl +OjpvcHRpb246Ok9wdGlvbjwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2Vfa2V5X2lk +OjpPd25lZERldmljZUtleUlkLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZGV2aWNlX2tleXM6 +OkRldmljZUtleSk+Pj46OmgxZjc4MzVmM2JhZTM2MDZhjzIyY29yZTo6b3B0aW9uOjpPcHRpb248 +VD46OmV4cGVjdDo6aDI3N2RjYTFiM2U5YTIzNjGQMlNtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpz +aWduaW5nOjpwa19zaWduaW5nOjpTaWduaW5nOjpuZXdfaGVscGVyOjpoMDljNDgyNjI3MzE2MDI1 +YZEyiQE8PGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6 +OmRyb3A6OkRyb3A+Ojpkcm9wOjpEcm9wR3VhcmQ8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRy +b3A+Ojpkcm9wOjpoMDA5M2RiZWNkZDQ1NDU5NZIyiQE8PGFsbG9jOjp2ZWM6OmludG9faXRlcjo6 +SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpEcm9wR3VhcmQ8 +VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMjkxZWE1ZjA1NGVmYmM5NZMy +iQE8PGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRy +b3A6OkRyb3A+Ojpkcm9wOjpEcm9wR3VhcmQ8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+ +Ojpkcm9wOjpoM2NhMWE0MDU2N2JmZDRjNJQyiQE8PGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50 +b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpEcm9wR3VhcmQ8VCxB +PiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNGZiZDU2ZGQzMGEwNTg1ZpUyiQE8 +PGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6 +OkRyb3A+Ojpkcm9wOjpEcm9wR3VhcmQ8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpk +cm9wOjpoNTU3NDcxMzFmMjg2MDRiZpYyiQE8PGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0 +ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpEcm9wR3VhcmQ8VCxBPiBh +cyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoOTc1Y2E2YjQzZjBhM2VlNJcyiQE8PGFs +bG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRy +b3A+Ojpkcm9wOjpEcm9wR3VhcmQ8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9w +OjpoYTJkMTc4YTE0ZGRjMmRlOJgyMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2M0 +NmI2NDAwNmJjOTUzMJkyMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMGU2ZjI3NjA1 +ZDVjMTEwZpoyMmNvcmU6OnRpbWU6OkR1cmF0aW9uOjpmcm9tX3NlY3M6OmhiZWViMWZjNGY4MjEy +YjRlmzJpbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpP +dXRib3VuZEdyb3VwU2Vzc2lvbjo6c2Vzc2lvbl9jb25maWc6OmgyMWE3N2E0ODQxZDVlZGI4nDIw +PCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiODRjMjJkZmY0M2Y0MjQ0nTI5aGFzaGJy +b3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmU6Omg5MDAxZWMzOTQ3ZDU5NDIxnjI5aGFz +aGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmU6Omg4MGFmYjU2ZjFiYWVkOWQznzI5 +aGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmU6OmgxNGQyZGNlNTJmYzJjZTg4 +oDJObWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6RGV2aWNlS2V5Ojp0b19i +YXNlNjQ6OmgwNGNkMmYwYmY3NDkzNTNjoTI1Y29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPjo6bWFw +X2Vycjo6aDczNTY2YWFhMGU4MThjYWSiMjloYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6 +cmVzZXJ2ZTo6aDBlNWRkMDI4OGE0NjVjMzajMjloYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxB +Pjo6cmVzZXJ2ZTo6aDY2YmRjYjE5YWI4OTNjZTmkMjloYXNoYnJvd246OnJhdzo6UmF3VGFibGU8 +VCxBPjo6cmVzZXJ2ZTo6aDM4MDNkYmZkZTc2NDA3ODClMmhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpp +bXBsczo6PGltcGwgY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5NdXQ8QT4gZm9yICZtdXQgRj46OmNh +bGxfbXV0OjpoMjkxZjI5ZDZmMzMxYmNjNaYyMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoMzA3MGYwNGQyNzg4MGUwY6cyOnFyY29kZTo6Y2FudmFzOjpDYW52YXM6OmNvb3Jkc190b19p +bmRleDo6aDgxYTlkZjJjM2RkMmViNTCoMkdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10 +OjpEZWJ1ZyBmb3IgaTY0Pjo6Zm10OjpoOGU3MjE0M2Y3OGMzYTQ1ZakySGNvcmU6OmZtdDo6bnVt +Ojo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciBpMTI4Pjo6Zm10OjpoMjkxODE5MjQ4NjQ2NTJl +YaoySGNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1MTI4Pjo6Zm10 +OjpoY2JkNjNjY2MzZTc5NDM3NqsyfTxkeW4gY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5NdXQ8KEEs +KT4rT3V0cHV0ID0gUiBhcyB3YXNtX2JpbmRnZW46OmNsb3N1cmU6Oldhc21DbG9zdXJlPjo6ZGVz +Y3JpYmU6OmRlc3Ryb3k6OmgxYzg4NzNiYTdkNDZhMGRkrDI6dGhyZWFkX2xvY2FsOjpUaHJlYWRM +b2NhbDxUPjo6Z2V0X2lubmVyOjpoOGMzNDNmOTlkYTMwZmVlYa0yMDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoNmUxNzQyYzBiYWIwMjYwNq4yNnNlcmRlX2pzb246OmRlOjpQYXJzZXJO +dW1iZXI6OnZpc2l0OjpoYzc4NmU5YjY5M2JmMGRhMK8yMXNlcmRlOjpkZTo6VmlzaXRvcjo6dmlz +aXRfdW5pdDo6aDlkNjE2Y2YwMGRlMzAyYmawMjJjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6ZXhw +ZWN0OjpoMGMxODEwMGYzNjMxNTFlMbEyZDwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXpl +cjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfbm9uZTo6aDk2Y2Zi +ODFhMjNmNjczNDeyMmY8c2VyZGVfanNvbjo6c2VyOjpSYXdWYWx1ZVN0ckVtaXR0ZXI8VyxGPiBh +cyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cjo6aDY5YmM0ZDQxODg0OTBi +NGGzMmhzZXJkZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBh +bGxvYzo6Ym94ZWQ6OkJveDxUPj46OmRlc2VyaWFsaXplOjpoMTUxYzkwYWZhM2YyNTliM7QyaHNl +cmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpi +b3hlZDo6Qm94PFQ+Pjo6ZGVzZXJpYWxpemU6OmgzNDMwYzgxYTkyY2IyZTYztTJoc2VyZGU6OmRl +OjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgYWxsb2M6OmJveGVkOjpC +b3g8VD4+OjpkZXNlcmlhbGl6ZTo6aDM2ZjIyNWMwZjcyYmVkNTW2MmhzZXJkZTo6ZGU6OmltcGxz +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBhbGxvYzo6Ym94ZWQ6OkJveDxUPj46 +OmRlc2VyaWFsaXplOjpoZTAwNWM3MjJjNjk3YjAzYrcyiQE8PGFsbG9jOjp2ZWM6OmludG9faXRl +cjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpEcm9wR3Vh +cmQ8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoZTNjNjllZjMxZDllZTM3 +ObgyiQE8PGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8VCxBPiBhcyBjb3JlOjpvcHM6 +OmRyb3A6OkRyb3A+Ojpkcm9wOjpEcm9wR3VhcmQ8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRy +b3A+Ojpkcm9wOjpoZjU2ZDUxMTFiZDIzMjg0NLkyQDwmW3U4XSBhcyBieXRlczo6YnVmOjpidWZf +aW1wbDo6QnVmPjo6YWR2YW5jZTo6aDNhZTg1NWExNzVlZTY3ZDm6Mjh2b2RvemVtYWM6Om9sbTo6 +YWNjb3VudDo6QWNjb3VudDo6bmV3OjpoZjlkMjNkZDhjZWI5NzA3ZrsyOWhhc2hicm93bjo6cmF3 +OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlOjpoZDIzZDJiNjJlNzZlMzljM7wyZDxzZXJkZTo6X19w +cml2YXRlOjpkZTo6RmxhdE1hcEFjY2VzczxFPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5l +eHRfdmFsdWVfc2VlZDo6aDQyOGE2NDAyNzU3MmE3ODS9MmQ8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6 +OkZsYXRNYXBBY2Nlc3M8RT4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3Nl +ZWQ6Omg2MzgyZjE0OTc3ZWYzMWVmvjIyY29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6 +aDFkYTQ0MmNlNGIwZDUxYzC/MjJjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6ZXhwZWN0OjpoZDE1 +ZDIxZmFiODhkMTY2NMAyYzwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFz +IHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RyOjpoOGM2NDFlN2IyYmYzOGU2 +NsEyNXRpbWU6OmRhdGU6OkRhdGU6OnRvX2NhbGVuZGFyX2RhdGU6OmhkMjJhYzkyNmM4NGNkZWY0 +wjJPPHJhbmRfY29yZTo6b3M6Ok9zUm5nIGFzIHJhbmRfY29yZTo6Um5nQ29yZT46OnRyeV9maWxs +X2J5dGVzOjpoMzc3N2NkNGJkYjkzMTBmZcMyR2NvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpm +bXQ6OkRlYnVnIGZvciBpMzI+OjpmbXQ6OmhhMTIxNjdhODBiNTljOGVmxDIrdHJhY2luZzo6c3Bh +bjo6U3Bhbjo6bmV3OjpoMDMzYWRjZDlhYTA2M2ZmOMUyYTxjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpE +ZWJ1Z1N0cnVjdCBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdD46OnJlY29yZF9kZWJ1Zzo6 +aDU4MmMzZjdhZGJkNjYwYWbGMjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRlZTk2 +OWJmNTQxMjc2MTHHMjdhbGxvYzo6dmVjOjpWZWM8VCxBPjo6ZXh0ZW5kX3RydXN0ZWQ6Omg4NDJm +ZjdjNjMzZDdkNzlmyDJjPCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMg +c2VyZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zdHI6OmhiNjFhYjM1MzQ3YTExZTA4 +yTI2Ynl0ZXM6OmJ5dGVzOjpwcm9tb3RhYmxlX2V2ZW5fY2xvbmU6OmgwMGFkZTZlZGFiOTQzODFl +yjI1Ynl0ZXM6OmJ5dGVzOjpwcm9tb3RhYmxlX2V2ZW5fZHJvcDo6aGQwNWEzM2U2NmU1ZjgzNzjL +MjRieXRlczo6Ynl0ZXM6OnByb21vdGFibGVfb2RkX2Ryb3A6OmhmYTZiYTcxZjUwNGFmZDE4zDIS +X193YmluZGdlbl9yZWFsbG9jzTIyY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX21hcDo6aDFj +NWE0MGVmM2QxNDQzMGbOMnpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJv +b206OnJlZGFjdGlvbjo6ZXZlbnRfc2VyZGU6Ok9yaWdpbmFsUm9vbVJlZGFjdGlvbkV2ZW50RGVI +ZWxwZXI+OjpoODU5NGIxYmUxMjNjNjQ3M88ybWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6OlNlY3JldFNlbmRDb250 +ZW50Pjo6aGQ0YWMyMDQ1ZjgwODAzMzLQMmRjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4 +X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OkV4cG9ydGVkUm9vbUtleT46OmgxMmQz +YmI5NTY3OWVmM2Y30TJWPHN0ZDo6aGFzaDo6cmFuZG9tOjpSYW5kb21TdGF0ZSBhcyBjb3JlOjpk +ZWZhdWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aGI2MGExODE5NDM0NzQ1YWXSMmZjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OkV4 +cG9ydGVkUm9vbUtleT46OmgxMmQzYmI5NTY3OWVmM2Y3LjHTMn5jb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmJhY2t1cHM6OmtleXM6OmJhY2t1cDo6TWVnb2xtVjFC +YWNrdXBLZXk6OmVuY3J5cHQ6Ont7Y2xvc3VyZX19Pjo6aDk5NDZiYjBkZWUzMTcxNDPUMk88Y29y +ZTo6bnVtOjplcnJvcjo6VHJ5RnJvbUludEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +OmhmM2ZkYjk0MjE5MDIwMDA21TKHAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjp0cnlfdG9fZm9yd2Fy +ZF9yb29tX2tleTo6e3tjbG9zdXJlfX0+OjpoZDRlOWIyNDhjNzUzODY0ONYyUTxjb3JlOjpudW06 +OmVycm9yOjpUcnlGcm9tSW50RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGYzZmRi +OTQyMTkwMjAwMDYuMdcyNGZ1dHVyZXNfdGFzazo6d2FrZXI6Ondha2VfYXJjX3Jhdzo6aDAzNTRj +MjRmMzNhY2Q5NWLYMjRmdXR1cmVzX3Rhc2s6Ondha2VyOjp3YWtlX2FyY19yYXc6OmgzOTcwZWM1 +NTBmMjZlOTA42TI0ZnV0dXJlc190YXNrOjp3YWtlcjo6d2FrZV9hcmNfcmF3OjpoNjM0YTJkMTRj +ZTVmZjE0ZNoyNGZ1dHVyZXNfdGFzazo6d2FrZXI6Ondha2VfYXJjX3Jhdzo6aDg1MzlmYzg2YjNk +NTdiZDnbMjRmdXR1cmVzX3Rhc2s6Ondha2VyOjp3YWtlX2FyY19yYXc6Omg5Y2IxMzM0NjEwNDMz +Yzk33DI1ZnV0dXJlc190YXNrOjp3YWtlcjo6Y2xvbmVfYXJjX3Jhdzo6aDEzM2IxZmIxYWQ0Mjc3 +YTPdMjVmdXR1cmVzX3Rhc2s6Ondha2VyOjpjbG9uZV9hcmNfcmF3OjpoMzg2NDkwNzVjNTU3ZDll +NN4yNWZ1dHVyZXNfdGFzazo6d2FrZXI6OmNsb25lX2FyY19yYXc6Omg3ZTBlYjhiYzRjMzljNjhh +3zI1ZnV0dXJlc190YXNrOjp3YWtlcjo6Y2xvbmVfYXJjX3Jhdzo6aDg2NTlhZmVkMzhkMDkyNjTg +MjVmdXR1cmVzX3Rhc2s6Ondha2VyOjpjbG9uZV9hcmNfcmF3OjpoZDBkZjJiYTk1NGExMGFkYuEy +UTxjb3JlOjpudW06OmVycm9yOjpUcnlGcm9tSW50RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aGYzZmRiOTQyMTkwMjAwMDYuMuIyRXNlcmRlX3dhc21fYmluZGdlbjo6ZGU6OkRlc2Vy +aWFsaXplcjo6aW52YWxpZF90eXBlOjpoNDI0YzQxODU4NzMzNjQzN+MyNWNvcmU6OnJlc3VsdDo6 +UmVzdWx0PFQsRT46Om1hcF9lcnI6OmgxMmNjNzVhOTcwZGJhZjI25DJIPGFsbG9jOjp2ZWM6OlZl +YzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgyNzFkYjQ2NDgzZmM2YWIy +5TLjAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpy +ZXN1bHQ6OlJlc3VsdDwoYWxsb2M6OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNl +c3Npb246OlNlc3Npb24+LGFsbG9jOjp2ZWM6OlZlYzwobWF0cml4X3Nka19jcnlwdG86OmlkZW50 +aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2UsbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpXaXRoaGVsZENvZGUpPiksbWF0cml4X3Nka19jcnlw +dG86OmVycm9yOjpPbG1FcnJvcj4sZnV0dXJlc191dGlsOjphYm9ydGFibGU6OkFib3J0ZWQ+Pjo6 +aGFmMGZhNTFjYjkyZDVlZjPmMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpk +cm9wOjpEcm9wPjo6ZHJvcDo6aGY2MzdlMmQyZWIyNzZjNDbnMkg8YWxsb2M6OnZlYzo6VmVjPFQs +QT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDAyZmZiMWJjZjQyNmM1ZjLoMkg8 +YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDAz +YjFhODNhYWUzMGE0OTHpMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9w +OjpEcm9wPjo6ZHJvcDo6aDA4NGFlNTdlNjM1Nzg0YTTqMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4g +YXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDM2NGE4OWE0MGViMDYyY2XrMkg8YWxs +b2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDNkYjhk +M2FiMjA5ZTAyNznsMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aDU0YmJiZTFkYWQwNjliOTntMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMg +Y29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDU4NmRmZmRlOWRkNWIzMTHuMkg8YWxsb2M6 +OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDY3N2Y1Mzk2 +NTExODU2YTnvMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9w +Pjo6ZHJvcDo6aDhjNTU4MzQyNzQ3NjBhMTLwMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29y +ZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGI4NTVmYWZmMmZjMTY1NDXxMkg8YWxsb2M6OnZl +Yzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGNlYzZiOTFlN2Fi +OTdhNDjyMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6 +ZHJvcDo6aGQ0N2VhZDMzY2U4MDcxODPzMkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6 +b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGQ0ZDkzZGNkNjA3ZGJiMzD0Mkg8YWxsb2M6OnZlYzo6 +VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGRjZmMzMThmODQ1OWY1 +NjT1Mkg8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJv +cDo6aGYzZDY2OWEyMmJmNDdkZmX2MmRjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OkJhY2tlZFVwUm9vbUtleT46OmgzNTkwMDVi +YTQ1N2E3YTRj9zIob2xtbWFjaGluZV9yZXF1ZXN0TWlzc2luZ1NlY3JldHNJZk5lZWRlZPgyNWNv +cmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46Om1hcF9lcnI6OmgzMDRhMGUxMDljYmZjMTBh+TIzYWxs +b2M6OnN5bmM6OkFyYzxULEE+Ojpkcm9wX3Nsb3c6Omg0OTQyYzNlOGQ4MGE3MDFl+jJOPHNlcmRl +X3dhc21fYmluZGdlbjo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3 +NTVhNzE4NzFhMzUxMTgw+zJRPGNvcmU6Om51bTo6ZXJyb3I6OlRyeUZyb21JbnRFcnJvciBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjNmZGI5NDIxOTAyMDAwNi4z/DKIATxpbmRleGVkX2Ri +X2Z1dHVyZXM6OmlkYl9vYmplY3Rfc3RvcmU6OklkYk9iamVjdFN0b3JlIGFzIGluZGV4ZWRfZGJf +ZnV0dXJlczo6aWRiX3F1ZXJ5X3NvdXJjZTo6SWRiUXVlcnlTb3VyY2U+Ojpjb3VudDo6aDU1ZDAx +N2NmZWNlZGM2ZTD9Ms8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmRlaHlkcmF0ZWRfZGV2aWNlczo6UmVoeWRyYXRlZERldmljZTo6cmVjZWl2ZV9ldmVu +dHM6Ont7Y2xvc3VyZX19OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfUmVoeWRyYXRlZERl +dmljZV9yZWNlaXZlRXZlbnRzOjp7e2Nsb3N1cmV9fT46Omg5NzU5MDk4YTM2OTMxYTg4/jKDAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpsaWJvbG1fbWln +cmF0aW9uOjppbXBvcnRfbWVnb2xtX3Nlc3Npb25zX3RvX3N0b3JlOjp7e2Nsb3N1cmV9fT46Omgz +NGMzY2U1NzZlM2NlYWM3/zJ5Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206Om1hY2hpbmU6OnNlbmRfc2VjcmV0X2dvc3NpcF90b19jYWxsYmFjazo6e3tjbG9z +dXJlfX0+OjpoMzg1NDY1M2QwOTU4MjFkOIAz7wFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8d2Fz +bV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OnN0b3JlOjpTdG9yZUhhbmRsZTo6b3Blbl9mb3JfanM6Ont7Y2xvc3VyZX19OjpfOjpfX3dh +c21fYmluZGdlbl9nZW5lcmF0ZWRfU3RvcmVIYW5kbGVfb3Blbjo6e3tjbG9zdXJlfX0+Ojp7e2Ns +b3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoNTZiNTExYTEyYTkxMDA4YYEz9AFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8d2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmluaXRpYWxpemU6Ont7Y2xv +c3VyZX19OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfT2xtTWFjaGluZV9pbml0aWFsaXpl +Ojp7e2Nsb3N1cmV9fT46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46Omg1ZWRmMmFiNjZjZjE5 +NjA5gjP8AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx3YXNtX2JpbmRnZW5fZnV0dXJlczo6ZnV0 +dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGlu +ZTo6aW5pdF9mcm9tX3N0b3JlOjp7e2Nsb3N1cmV9fTo6Xzo6X193YXNtX2JpbmRnZW5fZ2VuZXJh +dGVkX09sbU1hY2hpbmVfaW5pdEZyb21TdG9yZTo6e3tjbG9zdXJlfX0+Ojp7e2Nsb3N1cmV9fTo6 +e3tjbG9zdXJlfX0+OjpoNmY3Yjg1OWI5YzM2ODliNoMzgAJjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8d2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9yb29tX3NldHRpbmdzOjp7e2Nsb3N1 +cmV9fTo6Xzo6X193YXNtX2JpbmRnZW5fZ2VuZXJhdGVkX09sbU1hY2hpbmVfZ2V0Um9vbVNldHRp +bmdzOjp7e2Nsb3N1cmV9fT46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhjNGQyY2FhNjA5 +ZTgxOTQyhDOAAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx3YXNtX2JpbmRnZW5fZnV0dXJlczo6 +ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFj +aGluZTo6c2V0X3Jvb21fc2V0dGluZ3M6Ont7Y2xvc3VyZX19OjpfOjpfX3dhc21fYmluZGdlbl9n +ZW5lcmF0ZWRfT2xtTWFjaGluZV9zZXRSb29tU2V0dGluZ3M6Ont7Y2xvc3VyZX19Pjo6e3tjbG9z +dXJlfX06Ont7Y2xvc3VyZX19Pjo6aDYxMzFmMWEyOTUwYWJlNWGFM4UCY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHdhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjpkZWh5ZHJhdGVkX2RldmljZXM6OkRlaHlkcmF0ZWREZXZpY2VzOjpj +cmVhdGU6Ont7Y2xvc3VyZX19OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfRGVoeWRyYXRl +ZERldmljZXNfY3JlYXRlOjp7e2Nsb3N1cmV9fT46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46 +OmhmYmVmYzFjYzJkNTQ4NGQyhjOHAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx3YXNtX2JpbmRn +ZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bGli +b2xtX21pZ3JhdGlvbjo6TWlncmF0aW9uOjptaWdyYXRlX2Jhc2VfZGF0YTo6e3tjbG9zdXJlfX06 +Ol86Ol9fd2FzbV9iaW5kZ2VuX2dlbmVyYXRlZF9NaWdyYXRpb25fbWlncmF0ZUJhc2VEYXRhOjp7 +e2Nsb3N1cmV9fT46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhmYjY2YjVjZDdhNzIwYzgy +hzOLAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx3YXNtX2JpbmRnZW5fZnV0dXJlczo6ZnV0dXJl +X3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZGVoeWRyYXRlZF9kZXZpY2VzOjpE +ZWh5ZHJhdGVkRGV2aWNlczo6cmVoeWRyYXRlOjp7e2Nsb3N1cmV9fTo6Xzo6X193YXNtX2JpbmRn +ZW5fZ2VuZXJhdGVkX0RlaHlkcmF0ZWREZXZpY2VzX3JlaHlkcmF0ZTo6e3tjbG9zdXJlfX0+Ojp7 +e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoOTc2Y2IxNDU5ZTc0OTQ1NYgzjQJjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8d2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlPG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmxpYm9sbV9taWdyYXRpb246Ok1pZ3JhdGlvbjo6bWlncmF0 +ZV9vbG1fc2Vzc2lvbnM6Ont7Y2xvc3VyZX19OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRf +TWlncmF0aW9uX21pZ3JhdGVPbG1TZXNzaW9uczo6e3tjbG9zdXJlfX0+Ojp7e2Nsb3N1cmV9fTo6 +e3tjbG9zdXJlfX0+OjpoODAyN2M0MDMyZjZlY2E1N4kzkgJjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8d2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206OmRlaHlkcmF0ZWRfZGV2aWNlczo6UmVoeWRyYXRlZERldmljZTo6cmVjZWl2ZV9l +dmVudHM6Ont7Y2xvc3VyZX19OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfUmVoeWRyYXRl +ZERldmljZV9yZWNlaXZlRXZlbnRzOjp7e2Nsb3N1cmV9fT46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fT46Omg4MWZkNDFhZWVhY2VkYzcwijOTAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx3YXNt +X2JpbmRnZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZGVoeWRyYXRlZF9kZXZpY2VzOjpEZWh5ZHJhdGVkRGV2aWNlOjprZXlzX2Zvcl91cGxvYWQ6 +Ont7Y2xvc3VyZX19OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfRGVoeWRyYXRlZERldmlj +ZV9rZXlzRm9yVXBsb2FkOjp7e2Nsb3N1cmV9fT46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46 +OmhmOGQxMDgzYzAxZmMwMmJmizOTAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx3YXNtX2JpbmRn +ZW5fZnV0dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bGli +b2xtX21pZ3JhdGlvbjo6TWlncmF0aW9uOjptaWdyYXRlX21lZ29sbV9zZXNzaW9uczo6e3tjbG9z +dXJlfX06Ol86Ol9fd2FzbV9iaW5kZ2VuX2dlbmVyYXRlZF9NaWdyYXRpb25fbWlncmF0ZU1lZ29s +bVNlc3Npb25zOjp7e2Nsb3N1cmV9fT46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhkOTYy +YjkyMGM1NTBiMjI5jDOdAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx3YXNtX2JpbmRnZW5fZnV0 +dXJlczo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6 +T2xtTWFjaGluZTo6cmVnaXN0ZXJfcmVjZWl2ZV9zZWNyZXRfY2FsbGJhY2s6Ont7Y2xvc3VyZX19 +OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfT2xtTWFjaGluZV9yZWdpc3RlclJlY2VpdmVT +ZWNyZXRDYWxsYmFjazo6e3tjbG9zdXJlfX0+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Ojpo +MjM0YTBmMGFkYTVkYTljNY0zWDxzdGQ6Omhhc2g6OnJhbmRvbTo6UmFuZG9tU3RhdGUgYXMgY29y +ZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhiNjBhMTgxOTQzNDc0NWFlLjGOM2o8cnVt +YV9jb21tb246OmlkZW50aWZpZXJzOjp2b2lwX2lkOjpPd25lZFZvaXBJZCBhcyBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6Omg1ZGVmNjA4YWQ5MmM5NTEwjzNLY29yZTo6aGFz +aDo6aW1wbHM6OjxpbXBsIGNvcmU6Omhhc2g6Okhhc2ggZm9yIHN0cj46Omhhc2g6OmhiZGE5ZDAw +YmNhYTg2ZThmkDNMPGNvcmU6OmFycmF5OjpUcnlGcm9tU2xpY2VFcnJvciBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoZWIyMGI1OGEzMGQ5MTkxZZEzGGRlaHlkcmF0ZWRkZXZpY2VzX2NyZWF0 +ZZIzdzxmdXR1cmVzX3V0aWw6OmZuczo6TWFwRXJyRm48Rj4gYXMgZnV0dXJlc191dGlsOjpmbnM6 +OkZuT25jZTE8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPj4+OjpjYWxsX29uY2U6Omg0ZTlhZDc0 +NjBlMjkwODM4kzN3PGZ1dHVyZXNfdXRpbDo6Zm5zOjpNYXBFcnJGbjxGPiBhcyBmdXR1cmVzX3V0 +aWw6OmZuczo6Rm5PbmNlMTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+Pj46OmNhbGxfb25jZTo6 +aDU2ZTA0NWE1Mjg2ODM4ZmKUMy5pbnN0YW50Ojp3YXNtOjpJbnN0YW50Ojpub3c6OmhlNzI1ZmVm +ZTA3YjEwOTAxlTNPPHN0ZDo6c3luYzo6cG9pc29uOjpQb2lzb25FcnJvcjxUPiBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoMjQ5NzViMmNmODg4MjZkMZYztgJjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpkZXZpY2U6OkRldmljZTo6c2V0X2xvY2FsX3RydXN0Ojp7e2Nsb3N1cmV9 +fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OmRldmljZTo6RGV2aWNlOjpzZXRfbG9jYWxfdHJ1c3Q6Ont7Y2xv +c3VyZX19LHdhc21fYmluZGdlbjo6SnNWYWx1ZT46Ont7Y2xvc3VyZX19Pj46Omg0YjhlMmM4ZjY4 +YzY3ZTE4lzPDAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmRlY3J5cHRfcm9vbV9ldmVudDo6e3tj +bG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVzcG9uc2VzOjpEZWNyeXB0ZWRSb29t +RXZlbnQsbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZXJyb3I6Ok1lZ29sbURlY3J5cHRpb25FcnJv +cj46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46Omg5M2EzOTJmZjUxNDA4OWQ5mDOnA2NvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVy +ZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlf +ZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpTYXM6 +OmNvbmZpcm06Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0 +dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpTYXM6 +OmNvbmZpcm06Ont7Y2xvc3VyZX19LGpzX3N5czo6QXJyYXk+Ojp7e2Nsb3N1cmV9fT4sanNfc3lz +OjpBcnJheSx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+ +OjpoNzVhZjQ1NzIxZTVhYjMzYpkzswNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJv +cjxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Om1hcmtfcmVxdWVzdF9hc19zZW50Ojp7e2Ns +b3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNl +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Om1hcmtfcmVxdWVz +dF9hc19zZW50Ojp7e2Nsb3N1cmV9fSxib29sPjo6e3tjbG9zdXJlfX0+LGJvb2wsd2FzbV9iaW5k +Z2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aGNkM2Q4YTc2ZTRiM2Vh +NDSaM7MDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1 +dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpm +dXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5l +OjpPbG1NYWNoaW5lOjp0cmFja2VkX3VzZXJzOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnRyYWNrZWRfdXNlcnM6Ont7Y2xvc3VyZX19LGpzX3N5czo6 +U2V0Pjo6e3tjbG9zdXJlfX0+LGpzX3N5czo6U2V0LHdhc21fYmluZGdlbjo6SnNFcnJvcj46Ont7 +Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46Omg0ZDlhNDE0OGM1M2U5YWFjmzO5A2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19w +cm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJl +OjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6c2hh +cmVfcm9vbV9rZXk6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6 +ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFj +aGluZTo6c2hhcmVfcm9vbV9rZXk6Ont7Y2xvc3VyZX19LGpzX3N5czo6QXJyYXk+Ojp7e2Nsb3N1 +cmV9fT4sanNfc3lzOjpBcnJheSx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6 +e3tjbG9zdXJlfX0+OjpoOTcxNmVlZmIyNDlkMjVkZZwzuwNjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRo +X2N1c3RvbV9lcnJvcjxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmRldmljZTo6RGV2aWNlOjpyZXF1ZXN0X3ZlcmlmaWNhdGlv +bjo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9f +cHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpkZXZpY2U6OkRldmljZTo6cmVxdWVzdF92 +ZXJpZmljYXRpb246Ont7Y2xvc3VyZX19LGpzX3N5czo6QXJyYXk+Ojp7e2Nsb3N1cmV9fT4sanNf +c3lzOjpBcnJheSx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJl +fX0+OjpoNzA1YmI1ZThhYzQ4ZjZmN50zuwNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9l +cnJvcjxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmludmFsaWRhdGVfZ3JvdXBfc2Vzc2lv +bjo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9f +cHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjppbnZh +bGlkYXRlX2dyb3VwX3Nlc3Npb246Ont7Y2xvc3VyZX19LGJvb2w+Ojp7e2Nsb3N1cmV9fT4sYm9v +bCx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoYWMz +ZTJiNTQxMDEzN2NjM54zvwNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjxmdXR1 +cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Om91dGdvaW5nX3JlcXVlc3RzOjp7e2Nsb3N1cmV9fSxt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9z +ZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Om91dGdvaW5nX3JlcXVlc3RzOjp7 +e2Nsb3N1cmV9fSxqc19zeXM6OkFycmF5Pjo6e3tjbG9zdXJlfX0+LGpzX3N5czo6QXJyYXksd2Fz +bV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDc0ZWM1YWFj +NjhiZTViODSfM8EDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191 +dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpk +ZXZpY2U6OkRldmljZTo6c2V0X2xvY2FsX3RydXN0Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmRldmljZTo6RGV2aWNlOjpzZXRfbG9jYWxfdHJ1c3Q6Ont7Y2xvc3VyZX19LHdhc21fYmlu +ZGdlbjo6SnNWYWx1ZT46Ont7Y2xvc3VyZX19Pix3YXNtX2JpbmRnZW46OkpzVmFsdWUsd2FzbV9i +aW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aGY3ZTA0ZDM5ZDg2 +ZDI5NmGgM8UDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGls +OjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVu +dGl0aWVzOjpPd25Vc2VySWRlbnRpdHk6OnRydXN0c19vdXJfb3duX2RldmljZTo6e3tjbG9zdXJl +fX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpPd25Vc2VySWRlbnRpdHk6OnRydXN0c19v +dXJfb3duX2RldmljZTo6e3tjbG9zdXJlfX0sYm9vbD46Ont7Y2xvc3VyZX19Pixib29sLHdhc21f +YmluZGdlbjo6SnNFcnJvcj46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhkY2Y5NWU0OGY2 +ODViNTVkoTPJA2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRp +bDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFj +aGluZTo6T2xtTWFjaGluZTo6ZGlzYWJsZV9iYWNrdXA6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZGlzYWJsZV9iYWNrdXA6Ont7Y2xvc3VyZX19LHdh +c21fYmluZGdlbjo6SnNWYWx1ZT46Ont7Y2xvc3VyZX19Pix3YXNtX2JpbmRnZW46OkpzVmFsdWUs +d2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDJjZjZl +NTA1MGVkYTQxZWaiM80DY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJl +c191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjptYWNoaW5lOjpPbG1NYWNoaW5lOjplbmFibGVfYmFja3VwX3YxOjp7e2Nsb3N1cmV9fSxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmVuYWJsZV9iYWNrdXBfdjE6Ont7Y2xv +c3VyZX19LHdhc21fYmluZGdlbjo6SnNWYWx1ZT46Ont7Y2xvc3VyZX19Pix3YXNtX2JpbmRnZW46 +OkpzVmFsdWUsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19 +Pjo6aDBkNzkzYTg0NDNhYWVmMWWjM80DY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJy +b3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpleHBvcnRfcm9vbV9rZXlzOjp7e2Nsb3N1 +cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmV4cG9ydF9yb29tX2tl +eXM6Ont7Y2xvc3VyZX19LGFsbG9jOjpzdHJpbmc6OlN0cmluZz46Ont7Y2xvc3VyZX19PixhbGxv +Yzo6c3RyaW5nOjpTdHJpbmcsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7 +Y2xvc3VyZX19Pjo6aGE5MWYzNmY0NTU3ZWQ2N2KkM80DY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9j +dXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjppbXBvcnRfcm9vbV9rZXlz +Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19w +cm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmltcG9y +dF9yb29tX2tleXM6Ont7Y2xvc3VyZX19LGFsbG9jOjpzdHJpbmc6OlN0cmluZz46Ont7Y2xvc3Vy +ZX19PixhbGxvYzo6c3RyaW5nOjpTdHJpbmcsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9z +dXJlfX06Ont7Y2xvc3VyZX19Pjo6aGRkY2JmY2ZjMDM1YmJhZmGlM88DY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21p +c2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1h +cEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjppc19iYWNr +dXBfZW5hYmxlZDo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpm +dXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNo +aW5lOjppc19iYWNrdXBfZW5hYmxlZDo6e3tjbG9zdXJlfX0sd2FzbV9iaW5kZ2VuOjpKc1ZhbHVl +Pjo6e3tjbG9zdXJlfX0+LHdhc21fYmluZGdlbjo6SnNWYWx1ZSx3YXNtX2JpbmRnZW46OkpzRXJy +b3I+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoOTcwNmRiNzUzYmU2YjhmOKYz0QNjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1 +cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5 +X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hp +bmU6OmVuY3J5cHRfcm9vbV9ldmVudDo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNo +aW5lOjpPbG1NYWNoaW5lOjplbmNyeXB0X3Jvb21fZXZlbnQ6Ont7Y2xvc3VyZX19LGFsbG9jOjpz +dHJpbmc6OlN0cmluZz46Ont7Y2xvc3VyZX19PixhbGxvYzo6c3RyaW5nOjpTdHJpbmcsd2FzbV9i +aW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aGExNTE2NzVkYTEx +ZTUzNzanM9UDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206 +OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGls +OjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVu +dGl0aWVzOjpPd25Vc2VySWRlbnRpdHk6OnJlcXVlc3RfdmVyaWZpY2F0aW9uOjp7e2Nsb3N1cmV9 +fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OmlkZW50aXRpZXM6Ok93blVzZXJJZGVudGl0eTo6cmVxdWVzdF92 +ZXJpZmljYXRpb246Ont7Y2xvc3VyZX19LGpzX3N5czo6QXJyYXk+Ojp7e2Nsb3N1cmV9fT4sanNf +c3lzOjpBcnJheSx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJl +fX0+OjpoMTE4NTgyYTk2OGIzMjFlMagz1QNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9l +cnJvcjxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9taXNzaW5nX3Nlc3Npb25zOjp7 +e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9t +aXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9taXNz +aW5nX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fSx3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojp7e2Nsb3N1 +cmV9fT4sd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlLHdhc21fYmluZGdlbjo6SnNFcnJvcj46Ont7Y2xv +c3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhkNGJmODQwNDY0MDI5MDE5qTPVA2NvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9t +aXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpN +YXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVjZWl2 +ZV9zeW5jX2NoYW5nZXM6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVy +ZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xt +TWFjaGluZTo6cmVjZWl2ZV9zeW5jX2NoYW5nZXM6Ont7Y2xvc3VyZX19LGFsbG9jOjpzdHJpbmc6 +OlN0cmluZz46Ont7Y2xvc3VyZX19PixhbGxvYzo6c3RyaW5nOjpTdHJpbmcsd2FzbV9iaW5kZ2Vu +OjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDA4YmViZjVkMGM3MThjZjiq +M9UDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVy +ZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1 +cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpP +bG1NYWNoaW5lOjp1cGRhdGVfdHJhY2tlZF91c2Vyczo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193 +YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjp1cGRhdGVfdHJhY2tlZF91c2Vyczo6e3tjbG9zdXJl +fX0sd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6e3tjbG9zdXJlfX0+LHdhc21fYmluZGdlbjo6SnNW +YWx1ZSx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Ojpo +NmYxYTBhMDFjZDAwNzQ4Mqsz3QNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjxm +dXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnNpZ246Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6c2lnbjo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6dHlwZXM6OlNpZ25hdHVyZXM+Ojp7e2Nsb3N1cmV9fT4sbWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6dHlwZXM6OlNpZ25hdHVyZXMsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tj +bG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDk4NDM3MWNkZDI1NzY3NTesM+EDY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3By +b21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6 +Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyZWNl +aXZlX3ZlcmlmaWNhdGlvbl9ldmVudDo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNo +aW5lOjpPbG1NYWNoaW5lOjpyZWNlaXZlX3ZlcmlmaWNhdGlvbl9ldmVudDo6e3tjbG9zdXJlfX0s +d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6e3tjbG9zdXJlfX0+LHdhc21fYmluZGdlbjo6SnNWYWx1 +ZSx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoNmFi +ODU4ZTdmYjE3NDYzNq0z4QNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjxmdXR1 +cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnNhdmVfYmFja3VwX2RlY3J5cHRpb25fa2V5Ojp7e2Ns +b3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNl +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnNhdmVfYmFja3Vw +X2RlY3J5cHRpb25fa2V5Ojp7e2Nsb3N1cmV9fSx3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojp7e2Ns +b3N1cmV9fT4sd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlLHdhc21fYmluZGdlbjo6SnNFcnJvcj46Ont7 +Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmgyYjEzZGFjMWVjY2Q3Y2I5rjPvA2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19w +cm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJl +OjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6aWRlbnRpdGllczo6VXNlcklkZW50aXR5 +Ojp2ZXJpZmljYXRpb25fcmVxdWVzdF9jb250ZW50Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmlkZW50aXRpZXM6OlVzZXJJZGVudGl0eTo6dmVyaWZpY2F0aW9uX3JlcXVlc3RfY29udGVu +dDo6e3tjbG9zdXJlfX0sYWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6e3tjbG9zdXJlfX0+LGFsbG9j +OjpzdHJpbmc6OlN0cmluZyx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX0+OjpoZjBkMTY0NTEzN2ZiZTA1M68z9QNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1 +c3RvbV9lcnJvcjxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OmRldmljZTo6RGV2aWNlOjp2ZXJpZnk6Ont7Y2xvc3VyZX19LG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6ZGV2aWNlOjpEZXZpY2U6OnZlcmlmeTo6e3tjbG9zdXJlfX0sbWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVyZVVwbG9hZFJlcXVlc3Q+Ojp7e2Ns +b3N1cmV9fT4sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVyZVVwbG9h +ZFJlcXVlc3Qsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19 +Pjo6aDhmNmMyYTYyM2FhYTNkN2KwM/UDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJy +b3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpnZXRfYmFja3VwX2tleXM6Ont7Y2xvc3Vy +ZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6Z2V0X2JhY2t1cF9rZXlz +Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpiYWNrdXA6OkJhY2t1cEtleXM+ +Ojp7e2Nsb3N1cmV9fT4sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6YmFja3VwOjpCYWNrdXBLZXlz +LHdhc21fYmluZGdlbjo6SnNFcnJvcj46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhkYWU5 +OTNmZDU0ZjU4NmVksTP5A2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1dHVy +ZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2Fz +bTo6bWFjaGluZTo6T2xtTWFjaGluZTo6Z2V0X3VzZXJfZGV2aWNlczo6e3tjbG9zdXJlfX0sbWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpnZXRfdXNlcl9kZXZpY2VzOjp7e2Ns +b3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpkZXZpY2U6OlVzZXJEZXZpY2VzPjo6e3tj +bG9zdXJlfX0+LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRldmljZTo6VXNlckRldmljZXMsd2Fz +bV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDQ0ODQ3Mzhj +Yzc1NzRiNTKyM/sDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191 +dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpt +YWNoaW5lOjpPbG1NYWNoaW5lOjpyb29tX2tleV9jb3VudHM6Ont7Y2xvc3VyZX19LG1hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cm9vbV9rZXlfY291bnRzOjp7e2Nsb3N1cmV9 +fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpiYWNrdXA6OlJvb21LZXlDb3VudHM+Ojp7e2Nsb3N1 +cmV9fT4sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6YmFja3VwOjpSb29tS2V5Q291bnRzLHdhc21f +YmluZGdlbjo6SnNFcnJvcj46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhlNGE0NWM4YjIw +ZjllZTNhszPxA2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRp +bDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFj +aGluZTo6T2xtTWFjaGluZTo6ZGlzcGxheV9uYW1lOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmRpc3BsYXlfbmFtZTo6e3tjbG9zdXJlfX0sY29yZTo6 +b3B0aW9uOjpPcHRpb248YWxsb2M6OnN0cmluZzo6U3RyaW5nPj46Ont7Y2xvc3VyZX19Pixjb3Jl +OjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+LHdhc21fYmluZGdlbjo6SnNF +cnJvcj46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmgyYTM0YmVjZjk0MjVhODFltDPfA2Nv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1 +dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0 +cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFj +aGluZTo6Z2V0X3NlY3JldHNfZnJvbV9pbmJveDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6Z2V0X3NlY3JldHNfZnJvbV9pbmJv +eDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LGpzX3N5czo6U2V0Pjo6e3tjbG9zdXJlfX0+LGpz +X3N5czo6U2V0LHdhc21fYmluZGdlbjo6SnNFcnJvcj46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9 +fT46OmhhNzJlM2UzMGU3ZjU5OGIwtTP3A2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vy +cm9yPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25SZXF1ZXN0OjpzdGFydF9zYXM6 +Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3By +b21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25S +ZXF1ZXN0OjpzdGFydF9zYXM6Ont7Y2xvc3VyZX19LGNvcmU6Om9wdGlvbjo6T3B0aW9uPGpzX3N5 +czo6QXJyYXk+Pjo6e3tjbG9zdXJlfX0+LGNvcmU6Om9wdGlvbjo6T3B0aW9uPGpzX3N5czo6QXJy +YXk+LHdhc21fYmluZGdlbjo6SnNFcnJvcj46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46Omhj +ZWJiN2RiMGFjMDQwMDVmtjOFBGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhfY3VzdG9tX2Vycm9yPGZ1 +dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6dmVyaWZ5X2JhY2t1cDo6e3tjbG9zdXJlfX0sbWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjp2ZXJpZnlfYmFja3VwOjp7e2Nsb3N1 +cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp0eXBlczo6U2lnbmF0dXJlVmVyaWZpY2F0aW9u +Pjo6e3tjbG9zdXJlfX0+LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnR5cGVzOjpTaWduYXR1cmVW +ZXJpZmljYXRpb24sd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3Vy +ZX19Pjo6aGNkNjA2N2M1YzBkNWVjYmK3M4kEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21f +ZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpVc2VySWRlbnRpdHk6OnZlcmlmeTo6e3tjbG9zdXJl +fX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpVc2VySWRlbnRpdHk6OnZlcmlmeTo6e3tj +bG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVyZVVwbG9h +ZFJlcXVlc3Q+Ojp7e2Nsb3N1cmV9fT4sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6 +OlNpZ25hdHVyZVVwbG9hZFJlcXVlc3Qsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJl +fX06Ont7Y2xvc3VyZX19Pjo6aDE5ZmI5ZGM1YzcyMmFhZjK4M4kEY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vf +d2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVy +cjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpjcm9zc19zaWdu +aW5nX3N0YXR1czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpm +dXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNo +aW5lOjpjcm9zc19zaWduaW5nX3N0YXR1czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6b2xtOjpDcm9zc1NpZ25pbmdTdGF0dXM+Ojp7e2Nsb3N1cmV9fT4sbWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6b2xtOjpDcm9zc1NpZ25pbmdTdGF0dXMsd2FzbV9iaW5kZ2VuOjpKc0Vycm9y +Pjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDg0NGMzMjM5OTgyZjI4NDC5M48EY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJl +X3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9m +dXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpPd25Vc2Vy +SWRlbnRpdHk6OnZlcmlmeTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0 +dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVz +OjpPd25Vc2VySWRlbnRpdHk6OnZlcmlmeTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVyZVVwbG9hZFJlcXVlc3Q+Ojp7e2Nsb3N1cmV9fT4sbWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVyZVVwbG9hZFJlcXVlc3Qsd2Fz +bV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aGQ4M2EzOTc2 +ZWZhYzdmNzS6M5MEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191 +dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpt +YWNoaW5lOjpPbG1NYWNoaW5lOjppbXBvcnRfY3Jvc3Nfc2lnbmluZ19rZXlzOjp7e2Nsb3N1cmV9 +fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmltcG9ydF9jcm9zc19zaWdu +aW5nX2tleXM6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om9sbTo6Q3Jvc3NT +aWduaW5nU3RhdHVzPjo6e3tjbG9zdXJlfX0+LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om9sbTo6 +Q3Jvc3NTaWduaW5nU3RhdHVzLHdhc21fYmluZGdlbjo6SnNFcnJvcj46Ont7Y2xvc3VyZX19Ojp7 +e2Nsb3N1cmV9fT46Omg5ZWFlNDA4YjUwODQ2MjVkuzP5A2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhf +Y3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8bWF0 +cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZGVsZXRlX3NlY3JldHNf +ZnJvbV9pbmJveDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFj +aGluZTo6T2xtTWFjaGluZTo6ZGVsZXRlX3NlY3JldHNfZnJvbV9pbmJveDo6e3tjbG9zdXJlfX06 +Ont7Y2xvc3VyZX19LHdhc21fYmluZGdlbjo6SnNWYWx1ZT46Ont7Y2xvc3VyZX19Pix3YXNtX2Jp +bmRnZW46OkpzVmFsdWUsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xv +c3VyZX19Pjo6aDllOGY5M2MyYjM0ODdiYjO8M48EY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0 +b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpnZXRfZGV2aWNlOjp7e2Nsb3N1 +cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9kZXZpY2U6Ont7 +Y2xvc3VyZX19LGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRl +dmljZTo6RGV2aWNlPj46Ont7Y2xvc3VyZX19Pixjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjpkZXZpY2U6OkRldmljZT4sd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6 +e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDBjYzJjZDJiYjgwNzViZmW9M5sEY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3Rv +X3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1 +cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpp +bXBvcnRfYmFja2VkX3VwX3Jvb21fa2V5czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpt +YWNoaW5lOjpPbG1NYWNoaW5lOjppbXBvcnRfYmFja2VkX3VwX3Jvb21fa2V5czo6e3tjbG9zdXJl +fX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6OlJvb21LZXlJbXBvcnRSZXN1bHQ+Ojp7 +e2Nsb3N1cmV9fT4sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dHlwZXM6OlJvb21LZXlJbXBvcnRS +ZXN1bHQsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6 +aDc2Y2Q5ZDEwODI3MTczZma+M6EEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8 +ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpnZXRfcm9vbV9ldmVudF9lbmNyeXB0aW9uX2lu +Zm86Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3Rv +X3Byb21pc2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6Z2V0 +X3Jvb21fZXZlbnRfZW5jcnlwdGlvbl9pbmZvOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0 +b193YXNtOjpyZXNwb25zZXM6OkVuY3J5cHRpb25JbmZvPjo6e3tjbG9zdXJlfX0+LG1hdHJpeF9z +ZGtfY3J5cHRvX3dhc206OnJlc3BvbnNlczo6RW5jcnlwdGlvbkluZm8sd2FzbV9iaW5kZ2VuOjpK +c0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDc5ODk5MzlmYTI3NGY5YTO/M6cE +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6 +ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6 +OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0aWVzOjpV +c2VySWRlbnRpdHk6OnJlcXVlc3RfdmVyaWZpY2F0aW9uOjp7e2Nsb3N1cmV9fSxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OmlkZW50aXRpZXM6OlVzZXJJZGVudGl0eTo6cmVxdWVzdF92ZXJpZmljYXRpb246Ont7 +Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0 +aW9uUmVxdWVzdD46Ont7Y2xvc3VyZX19PixtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmlj +YXRpb246OlZlcmlmaWNhdGlvblJlcXVlc3Qsd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9z +dXJlfX06Ont7Y2xvc3VyZX19Pjo6aDE4NmY5ODczYjU1ODlhMGTAM4kEY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21p +c2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1h +cEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyZXF1ZXN0 +X21pc3Npbmdfc2VjcmV0c19pZl9uZWVkZWQ6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fSxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnJlcXVlc3RfbWlzc2luZ19zZWNyZXRz +X2lmX25lZWRlZDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19LHdhc21fYmluZGdlbjo6SnNWYWx1 +ZT46Ont7Y2xvc3VyZX19Pix3YXNtX2JpbmRnZW46OkpzVmFsdWUsd2FzbV9iaW5kZ2VuOjpKc0Vy +cm9yPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aGM4ZTYzYjAxNDU1NzA1ZjnBM68EY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0 +dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRy +eV9mdXR1cmU6Ok1hcEVycjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNo +aW5lOjpib290c3RyYXBfY3Jvc3Nfc2lnbmluZzo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjptYWNoaW5lOjpPbG1NYWNoaW5lOjpib290c3RyYXBfY3Jvc3Nfc2lnbmluZzo6e3tjbG9zdXJl +fX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OkNyb3NzU2lnbmluZ0Jvb3RzdHJh +cFJlcXVlc3RzPjo6e3tjbG9zdXJlfX0+LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnJlcXVlc3Rz +OjpDcm9zc1NpZ25pbmdCb290c3RyYXBSZXF1ZXN0cyx3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7 +e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoMjg4NTNmY2IwNzQyZjE2McIzqwRjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9f +cHJvbWlzZV93aXRoX2N1c3RvbV9lcnJvcjxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVy +ZTo6TWFwRXJyPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Omdl +dF9pZGVudGl0eTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpm +dXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNo +aW5lOjpnZXRfaWRlbnRpdHk6Ont7Y2xvc3VyZX19LGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OmlkZW50aXRpZXM6OlVzZXJJZGVudGl0aWVzPj46Ont7Y2xvc3Vy +ZX19Pixjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGl0 +aWVzOjpVc2VySWRlbnRpdGllcz4sd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06 +Ont7Y2xvc3VyZX19Pjo6aGYzMGNkNTg4NjViMGMyYzHDM7MEY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0 +aF9jdXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlvblJlcXVlc3Q6 +OnNjYW5fcXJfY29kZTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJl +OjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb246 +OlZlcmlmaWNhdGlvblJlcXVlc3Q6OnNjYW5fcXJfY29kZTo6e3tjbG9zdXJlfX0sY29yZTo6b3B0 +aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpRcj4+Ojp7 +e2Nsb3N1cmV9fT4sY29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +dmVyaWZpY2F0aW9uOjpRcj4sd2FzbV9iaW5kZ2VuOjpKc0Vycm9yPjo6e3tjbG9zdXJlfX06Ont7 +Y2xvc3VyZX19Pjo6aDgwZGY2ODUyMjAxOTdkMzjEM7UEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9j +dXN0b21fZXJyb3I8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcEVycjxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpiYWNrdXBfcm9vbV9rZXlz +Ojp7e2Nsb3N1cmV9fSxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19w +cm9taXNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmJhY2t1 +cF9yb29tX2tleXM6Ont7Y2xvc3VyZX19LGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OnJlcXVlc3RzOjpLZXlzQmFja3VwUmVxdWVzdD4+Ojp7e2Nsb3N1cmV9fT4s +Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6Oktl +eXNCYWNrdXBSZXF1ZXN0Pix3YXNtX2JpbmRnZW46OkpzRXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX0+OjpoOTEzYjFlN2M2OWUyYzE2McUzuwRjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJlOjpmdXR1cmVfdG9fcHJvbWlzZV93aXRoX2N1 +c3RvbV9lcnJvcjxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6dHJ5X2Z1dHVyZTo6TWFwRXJyPG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uUmVxdWVzdDo6Z2Vu +ZXJhdGVfcXJfY29kZTo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJl +OjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb246 +OlZlcmlmaWNhdGlvblJlcXVlc3Q6OmdlbmVyYXRlX3FyX2NvZGU6Ont7Y2xvc3VyZX19LGNvcmU6 +Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6UXI+ +Pjo6e3tjbG9zdXJlfX0+LGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OnZlcmlmaWNhdGlvbjo6UXI+LHdhc21fYmluZGdlbjo6SnNFcnJvcj46Ont7Y2xvc3VyZX19 +Ojp7e2Nsb3N1cmV9fT46OmgxYTZhMTY3YTg5ZTliYmMyxjPJBGNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dp +dGhfY3VzdG9tX2Vycm9yPGZ1dHVyZXNfdXRpbDo6ZnV0dXJlOjp0cnlfZnV0dXJlOjpNYXBFcnI8 +bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZXhwb3J0X2Nyb3Nz +X3NpZ25pbmdfa2V5czo6e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZnV0dXJl +OjpmdXR1cmVfdG9fcHJvbWlzZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1N +YWNoaW5lOjpleHBvcnRfY3Jvc3Nfc2lnbmluZ19rZXlzOjp7e2Nsb3N1cmV9fSxjb3JlOjpvcHRp +b246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpzdG9yZTo6Q3Jvc3NTaWduaW5nS2V5 +RXhwb3J0Pj46Ont7Y2xvc3VyZX19Pixjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2Ny +eXB0b193YXNtOjpzdG9yZTo6Q3Jvc3NTaWduaW5nS2V5RXhwb3J0Pix3YXNtX2JpbmRnZW46Okpz +RXJyb3I+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoMWZlNzg4MTRhYzVmZTI5MsczUTxj +b3JlOjpudW06OmVycm9yOjpUcnlGcm9tSW50RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aGYzZmRiOTQyMTkwMjAwMDYuNMgzUjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OlNpZ25h +dHVyZXMgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhmMDRjY2RlMDVkOGQwNjDJM7EBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3Jl +OjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6Q3J5cHRvU3RvcmU+OjpnZXRfZGV2aWNlOjp7e2Nsb3N1cmV9fT46OmgyYzJkNDU2Mjg5NGNh +NDdjyjOzAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTw8bWF0cml4X3Nka19pbmRleGVkZGI6OmNy +eXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6bG9hZF9hY2NvdW50Ojp7e2Nsb3N1cmV9fT46Omg2 +NWFkMGFlY2FjMjI4N2FjyzO3AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTw8bWF0cml4X3Nka19p +bmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRvU3RvcmUgYXMgbWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X2N1c3RvbV92YWx1ZTo6 +e3tjbG9zdXJlfX0+OjpoYWFiYjZhMTQ3ODdkYTg4ZcwztwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0 +b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Omdl +dF91c2VyX2RldmljZXM6Ont7Y2xvc3VyZX19Pjo6aDIwOTdjZDEzODVlMGY4ZGLNM7sBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJ +bmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +Q3J5cHRvU3RvcmU+Ojp0cnlfdGFrZV9sZWFzZWRfbG9jazo6e3tjbG9zdXJlfX0+OjpoMTRmNzNm +MDRkNGQ3NDEyZc4zvQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8PG1hdHJpeF9zZGtfaW5kZXhl +ZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9zZWNyZXRzX2Zyb21faW5ib3g6 +Ont7Y2xvc3VyZX19Pjo6aGVjNTgwNDYzMmIxNWQ4OTbPM8EBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPDxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9T +dG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojpn +ZXRfdW5zZW50X3NlY3JldF9yZXF1ZXN0czo6e3tjbG9zdXJlfX0+OjpoMTNiZGM1MGQ3ZDZmMTI2 +NNAzU21hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OlBlbmRpbmdJbmRleGVkZGJD +aGFuZ2VzOjpnZXQ6OmhkMjQ4ZTNhMTM2NGQyNzYz0TNIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg4ZGEzMmU5YjU1MmQ0MjM40jM1Y29yZTo6 +cmVzdWx0OjpSZXN1bHQ8VCxFPjo6bWFwX2Vycjo6aDQ0OGY5M2NmMTAxYmEzYmHTM088c3RkOjpz +eW5jOjpwb2lzb246OlBvaXNvbkVycm9yPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omgx +ZjEyYzVkYThmZDIzZWFi1DN4PHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dHJhbnNhY3Rpb25f +aWQ6Ok93bmVkVHJhbnNhY3Rpb25JZCBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJp +YWxpemU6Omg0ZGY4OGI1ODFiNTlmYWJi1TNFc2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6RGVzZXJp +YWxpemVyOjppbnZhbGlkX3R5cGU6Omg0NjdhYzYzZDMxYzc4MDdj1jMvc2VyZGVfd2FzbV9iaW5k +Z2VuOjp0b192YWx1ZTo6aDg5ZDIxYzc5ZDc4ZDA0YjbXMzVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxU +LEU+OjptYXBfZXJyOjpoODhiNjlkMmY1NjFhNmM2Y9gzcTxydW1hX2V2ZW50czo6cm9vbTo6aGlz +dG9yeV92aXNpYmlsaXR5OjpIaXN0b3J5VmlzaWJpbGl0eSBhcyBzZXJkZTo6c2VyOjpTZXJpYWxp +emU+OjpzZXJpYWxpemU6Omg2MWQ4MDQ0MzllZDZiZGYx2TM3c2VyZGVfd2FzbV9iaW5kZ2VuOjpz +dGF0aWNfc3RyX3RvX2pzOjpoZjZmZjc1ZjUxMDlkMmJiY9ozN3JtcDo6ZW5jb2RlOjpSbXBXcml0 +ZTo6d3JpdGVfZGF0YV91ODo6aDU4YmExMDJjZjI5YjI5MmPbM048Y29yZTo6YXJyYXk6OlRyeUZy +b21TbGljZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlYjIwYjU4YTMwZDkxOTFl +LjHcM1Njb3JlOjphcnJheTo6PGltcGwgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8ST4gZm9yIFtU +OyBOXT46OmluZGV4OjpoODhhNTgwNTA5ZTAyMGI1ON0zXGNvcmU6OmFycmF5Ojo8aW1wbCBjb3Jl +OjpvcHM6OmluZGV4OjpJbmRleE11dDxJPiBmb3IgW1Q7IE5dPjo6aW5kZXhfbXV0OjpoZTZkMDdi +NDZhMzQ5ZTFjYi4x3jNIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0 +YWJsZS5zaGltfX06OmgxNzQ0MWJiNzQ0MWI1MTJk3zM3c2VyZGVfd2FzbV9iaW5kZ2VuOjpzdGF0 +aWNfc3RyX3RvX2pzOjpoNTIyYjM1MjU4YjNiMzM2M+AzVGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpGbG93SWQ+OjpoNWE0NDM0ODhhOTg3 +NWZhMuEzfjxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmNyeXB0b19hbGdvcml0aG1zOjpFdmVu +dEVuY3J5cHRpb25BbGdvcml0aG0gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplPjo6c2VyaWFsaXpl +OjpoMzI5MWYzMmEyMTRmYTU3NOIzfjxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmNyeXB0b19h +bGdvcml0aG1zOjpFdmVudEVuY3J5cHRpb25BbGdvcml0aG0gYXMgc2VyZGU6OnNlcjo6U2VyaWFs +aXplPjo6c2VyaWFsaXplOjpoYWFlYmU1MWYxMDBiOWNlMeMzazxydW1hX2V2ZW50czo6a2V5Ojp2 +ZXJpZmljYXRpb246OmNhbmNlbDo6Q2FuY2VsQ29kZSBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+ +OjpzZXJpYWxpemU6OmgwNDVhZTYzZmNiZTU5NjVh5DNgPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6RXZlbnRFbmNyeXB0aW9uQWxnb3JpdGhtIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omhl +NDY1ZTYzZWQ2YmQ5ZmU35TNiPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6RXZlbnRFbmNyeXB0 +aW9uQWxnb3JpdGhtIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDZjZmMxNTJiZGI5Mjhk +YTbmM208cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpLZXlBZ3JlZW1lbnRQcm90b2Nv +bCBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6OmhmNGI4ODUyMDNhYzMxZTg2 +5zNyPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6TWVzc2FnZUF1dGhlbnRpY2F0aW9u +Q29kZSBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6Omg4ZGU3MzJjZjM5NmUw +OTcw6DNPPHN0ZDo6c3luYzo6cG9pc29uOjpQb2lzb25FcnJvcjxUPiBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoMGVhNTIzMWZjYWEwZjY0ZekzWDxzdGQ6Omhhc2g6OnJhbmRvbTo6UmFuZG9t +U3RhdGUgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhiNjBhMTgxOTQzNDc0 +NWFlLjLqM1ZtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURl +dmljZTo6ZGlzcGxheV9uYW1lOjpoOGFjZGE5MTBjNmMxMjAxOeszWW1hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OmNhY2hlOjpWZXJpZmljYXRpb25DYWNoZTo6cmVwbGFjZV9zYXM6Omg2 +YmI3ZjFhYWM3MDJjNWJj7DODAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxleWViYWxsOjpzaGFy +ZWQ6OlNoYXJlZE9ic2VydmFibGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJj +b2RlOjpJbm5lclN0YXRlPj46OmhmMjE3YWIxMWIxZDM4ODYw7TOHAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxleWViYWxsOjpzaGFyZWQ6OlNoYXJlZE9ic2VydmFibGU8bWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OklubmVyUmVxdWVzdD4+OjpoODhiMWRiMDQ2MGRi +YjU2Y+4zM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoM2FjMGI4MzRlZjg4ZTRj +M+8zM2FsbG9jOjpzeW5jOjpBcmM8VCxBPjo6ZHJvcF9zbG93OjpoZjdlMjg4YzVhZjRhNmRmMfAz +YGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246 +OnN0YXJ0OjpTYXNWMUNvbnRlbnQ+OjpoZmUzYzVkMTMwMzBiMWFiM/EzVDxtYXRyaXhfc2RrX2Ny +eXB0bzo6dHlwZXM6OlNpZ25hdHVyZXMgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhmMDRj +Y2RlMDVkOGQwNjAuMfIzVjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OlNpZ25pbmdLZXlzPFQ+ +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ZjQ4N2I3ZDY5ZDk0MjU28zNvPG1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhlbGRDb2Rl +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1NzM3MjkwODI5NjlhNTc39DOMAjxtYXRyaXhf +c2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6SW5ib3VuZEdyb3VwU2Vz +c2lvbiBhcyBjb3JlOjpjb252ZXJ0OjpUcnlGcm9tPCZtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6 +OmV2ZW50czo6b2xtX3YxOjpEZWNyeXB0ZWRPbG1WMUV2ZW50PG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6ZXZlbnRzOjpmb3J3YXJkZWRfcm9vbV9rZXk6OkZvcndhcmRlZFJvb21LZXlDb250ZW50 +Pj4+Ojp0cnlfZnJvbTo6aGE4NDk0N2RlMWRmODE1MDf1M1Q8bWF0cml4X3Nka19jcnlwdG86OnR5 +cGVzOjpTaWduYXR1cmVzIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ZjA0Y2NkZTA1ZDhk +MDYwLjL2M1g8c3RkOjpoYXNoOjpyYW5kb206OlJhbmRvbVN0YXRlIGFzIGNvcmU6OmRlZmF1bHQ6 +OkRlZmF1bHQ+OjpkZWZhdWx0OjpoYjYwYTE4MTk0MzQ3NDVhZS4z9zNOPGNvcmU6OmFycmF5OjpU +cnlGcm9tU2xpY2VFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZWIyMGI1OGEzMGQ5 +MTkxZS4y+DNYPHN0ZDo6aGFzaDo6cmFuZG9tOjpSYW5kb21TdGF0ZSBhcyBjb3JlOjpkZWZhdWx0 +OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aGI2MGExODE5NDM0NzQ1YWUuNPkzS2hhc2hicm93bjo6cmF3 +OjpSYXdUYWJsZUlubmVyOjpmaW5kX2luc2VydF9zbG90X2luX2dyb3VwOjpoOGFlNzM3NzJkNTNl +ZmZmZPozazxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6Om1hc3Rlcjo6 +TWFzdGVyUHVia2V5IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkNjM0ODIxYmI1MDU0NDRj ++zN2PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6c2VsZl9zaWduaW5n +OjpTZWxmU2lnbmluZ1B1YmtleSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNmJhMDc3Yjhk +YTBlODIyZfwzdjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6OnVzZXJf +c2lnbmluZzo6VXNlclNpZ25pbmdQdWJrZXkgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE3 +MWRlMTc0OGU5Y2U3ZjP9MzRjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjpleHBlY3Q6OmhiNmRm +YmM4YWYxNzU5YjEz/jNLbWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6 +d2l0aF9kZXZpY2VfaWQ6OmhiYjg1YTg5NDBhNmM3NDhh/zNIPGFsbG9jOjp2ZWM6OlZlYzxULEE+ +IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgyNzM3ZWQ1ZTc0MTgzZGQ5gDRIPGFs +bG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg0ZGI0 +MTVhZmE1NmYxYTVigTRIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6 +RHJvcD46OmRyb3A6Omg0ZjJhYmQzNzhjYTdiM2FigjRIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg2OGYxNDM0OTU5YWY3Y2VigzRIPGFsbG9j +Ojp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg3ZGM5ZGVl +Zjk1MDZhOTUwhDRIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6Omg4NDZlZmViNTJlYzJmNjgwhTRIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNv +cmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhiMzU2MjdhMGFhZGIzNzU0hjR4PHJ1bWFfY29t +bW9uOjppZGVudGlmaWVyczo6dHJhbnNhY3Rpb25faWQ6Ok93bmVkVHJhbnNhY3Rpb25JZCBhcyBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OmhmZDY5NzA1Zjc3OGRlMDE4hzRW +PHN0ZDo6aGFzaDo6cmFuZG9tOjpEZWZhdWx0SGFzaGVyIGFzIGNvcmU6Omhhc2g6Okhhc2hlcj46 +OndyaXRlX3N0cjo6aDc4ODEzYWI4NzBjYzYxYmKINDVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+ +OjptYXBfZXJyOjpoMGFkMjE0NGEzMDIxMzkyNok0NWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46 +Om1hcF9lcnI6Omg2M2M4YjBkNDljZWE4OWQ3ijRYPHN0ZDo6aGFzaDo6cmFuZG9tOjpSYW5kb21T +dGF0ZSBhcyBjb3JlOjpkZWZhdWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aGI2MGExODE5NDM0NzQ1 +YWUuNYs0XG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OmV2ZW50X2VudW1zOjpSZXF1 +ZXN0Q29udGVudDo6ZnJvbV9kZXZpY2U6OmgzM2VmNGU3YmM1Nzk1ZTkwjDRIPGFsbG9jOjp2ZWM6 +OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgzNmQ3ZGYyMzcwNGMy +NmVjjTQycXJjb2RlOjpjYW52YXM6OkNhbnZhczo6Z2V0X211dDo6aDNmNzVjMmQwOGVhNWUzZjiO +NHU8dHJhY2luZ19zdWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRy +YWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OnJlY29yZDo6aDI5M2RiYzIzZDY2 +NGJiZDCPNDl0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX3N0cjo6aDhjMzA2ZDIx +MDliYzQ2ODOQNDl0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX3N0cjo6aGZjZjM2 +Nzg1YmNkNTg3YWSRNDt0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX2Vycm9yOjpo +NzRlOWI0ZmEyNmMxNjMwOZI0O3RyYWNpbmdfY29yZTo6ZmllbGQ6OlZpc2l0OjpyZWNvcmRfZXJy +b3I6OmhiMmExMTE5MmUwMTQ5ZjY1kzQ5Y29yZTo6Y2VsbDo6UmVmQ2VsbDxUPjo6dHJ5X2JvcnJv +d19tdXQ6OmhhYmU2OWFlMjExODYzNzM5lDRIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpj +YWxsX29uY2V7e3Z0YWJsZS5zaGltfX06OmgyODdmNGUzNzdjZTFlYTE3lTRIY29yZTo6b3BzOjpm +dW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5zaGltfX06OmhjNWRkZmIwZTI2NmNk +YTU2ljRIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5zaGlt +fX06Omg1OTMzMGI3MWY2ZWRlODcxlzREPHRyYWNpbmdfY29yZTo6c3Bhbjo6SWQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDRiNTZlNTA5YWI3MDlmYWSYNE88c3RkOjpzeW5jOjpwb2lzb246 +OlBvaXNvbkVycm9yPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2OWEzNzgxNGY3MTE2 +ZjM0mTRPPHN0ZDo6c3luYzo6cG9pc29uOjpQb2lzb25FcnJvcjxUPiBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoNDE5MTlhYTFiMzc4NTAzMZo0YDx2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6 +cmF0Y2hldDo6UmF0Y2hldFB1YmxpY0tleSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDhm +NWE1ZjVjZTMwMGMwOZs0MXByb3N0OjplbmNvZGluZzo6ZW5jb2RlX3ZhcmludDo6aGQ5ZmZkZWQw +YTFiN2I3ZWacNDdzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6d3JpdGVfdTg6Omg3ODdkYmYx +MWRlMGZhZDYxnTQ4c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OndyaXRlX3U2NDo6aGExZDYy +Zjk4Yzc5YWYzYzeeNFRzZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFs +aXplIGZvciB1OD46OnNlcmlhbGl6ZTo6aGJkODhiMjA3YjhhYTFhNDGfNERjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8c2lnbmF0dXJlOjplcnJvcjo6RXJyb3I+OjpoYjRkYWZhOTNiNjE1OTExMKA0 +NGNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46OmV4cGVjdDo6aDRlNjJkZWU5ZDA0Yzk3MjmhNDFw +cm9zdDo6ZXJyb3I6OkRlY29kZUVycm9yOjpuZXc6Omg3MWQ1NTQ1MjJjYWI0OTlkojRwY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPFt2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6U2Vzc2lvbjo6ZnJv +bV9saWJvbG1fcGlja2xlOjpTZW5kZXJDaGFpbl0+OjpoN2U2MWJiOWNmOGM2YzRkZqM0WDxzdGQ6 +Omhhc2g6OnJhbmRvbTo6UmFuZG9tU3RhdGUgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRl +ZmF1bHQ6OmhiNjBhMTgxOTQzNDc0NWFlLjakNCdoa2RmOjpIa2RmPEgsST46Om5ldzo6aDljYmUx +ZWM5YjEyNjZjYzmlNEZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c2lnbmF0dXJlOjplcnJvcjo6 +RXJyb3I+OjpoYjRkYWZhOTNiNjE1OTExMC4xpjRJPHNlcmRlX2pzb246OmVycm9yOjpFcnJvciBh +cyBzZXJkZTo6ZGU6OkVycm9yPjo6Y3VzdG9tOjpoZTgyNzJhMTRkZTVjZjU5NKc0Tjxjb3JlOjph +cnJheTo6VHJ5RnJvbVNsaWNlRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGViMjBi +NThhMzBkOTE5MWUuM6g0RHN1YnRsZTo6Q29uZGl0aW9uYWxseVNlbGVjdGFibGU6OmNvbmRpdGlv +bmFsX3N3YXA6OmgwMTViOWJlMzk4ZDBiZTU0qTROPGNvcmU6OmFycmF5OjpUcnlGcm9tU2xpY2VF +cnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZWIyMGI1OGEzMGQ5MTkxZS40qjROPGNv +cmU6OmFycmF5OjpUcnlGcm9tU2xpY2VFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +ZWIyMGI1OGEzMGQ5MTkxZS41qzRDdG9raW86OnN5bmM6OmJhdGNoX3NlbWFwaG9yZTo6U2VtYXBo +b3JlOjphY3F1aXJlOjpoZDVlYjNmMmM0Yjg4MzJiMaw0SDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBh +cyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoODBmZjFkZjY0M2E2Mzc2M600SDxhbGxv +Yzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoY2FhODBi +M2Q0ZDcwMTE0OK40SDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRy +b3A+Ojpkcm9wOjpoOGQzZGZjNzEwZWM1Y2RjMa80ajxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6 +Om14Y191cmk6Ok93bmVkTXhjVXJpIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlh +bGl6ZTo6aDZkYzNjMmI0NDZhYTJkNWOwNGA8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9u +OjpjYW5jZWw6OkNhbmNlbENvZGUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY3M2IzMjA2 +ZDk4MTcyY2KxNFg8cnVtYV9ldmVudHM6OnNlY3JldDo6cmVxdWVzdDo6U2VjcmV0TmFtZSBhcyBj +b3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhjNGUxMmQ1ZDkxNjA3NmU2sjRWPHJ1bWFfZXZlbnRz +OjpzZWNyZXQ6OnJlcXVlc3Q6OlNlY3JldE5hbWUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDIwMWY3OGEzYTkzODFjNGKzNGI8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpLZXlB +Z3JlZW1lbnRQcm90b2NvbCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDM0ZjI2NDU5OTY4 +NGUwYbQ0ZzxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246Ok1lc3NhZ2VBdXRoZW50aWNh +dGlvbkNvZGUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGMyNzdlY2JjZTFmYjFmYWG1NGA8 +cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25NZXRob2QgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI3Y2I2MGMwODU1MDU4OTC2NGY8cnVtYV9ldmVudHM6OnJv +b206Omhpc3RvcnlfdmlzaWJpbGl0eTo6SGlzdG9yeVZpc2liaWxpdHkgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDI1YjE1MWM3ZWQ0ZjcxYTm3NFM8cnVtYV9ldmVudHM6OnJvb21fa2V5X3Jl +cXVlc3Q6OkFjdGlvbiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoODkzODJkNzYzY2VlNDEz +NLg0SDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9w +OjpoYjM1ZTY2NmFmNjUzYmQyYbk0bzxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmNyeXB0b19h +bGdvcml0aG1zOjpEZXZpY2VLZXlBbGdvcml0aG0gYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10 +OjpoYzNlNTViODI0YjYzZjg2Nbo0czxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmNyeXB0b19h +bGdvcml0aG1zOjpFdmVudEVuY3J5cHRpb25BbGdvcml0aG0gYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aGQ2OGYxYzJjMzgxMDc3Mzi7NFE8cnVtYV9jb21tb246OmVuY3J5cHRpb246OktleVVz +YWdlIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDdjYzAyNTc1NmI0NDI1NTK8NFE8Y29y +ZTo6bnVtOjplcnJvcjo6VHJ5RnJvbUludEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +OmhmM2ZkYjk0MjE5MDIwMDA2LjW9NE48Y29yZTo6YXJyYXk6OlRyeUZyb21TbGljZUVycm9yIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlYjIwYjU4YTMwZDkxOTFlLja+NDNhbGxvYzo6c3lu +Yzo6QXJjPFQsQT46OmRyb3Bfc2xvdzo6aDYyZGMyMjM0MGYyMWI0MDa/NIoBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6OnJlc3VsdDo6UmVzdWx0PGdl +dHJhbmRvbTo6aW1wOjpSbmdTb3VyY2UsZ2V0cmFuZG9tOjplcnJvcjo6RXJyb3I+Pj46Omg2ZjFj +NzQxMzRjN2QwNDQxwDQyZ2V0cmFuZG9tOjppbXA6OmdldHJhbmRvbV9pbm5lcjo6aGM4MTk1YTlj +NjQwMDgxMDPBNE9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dHJhY2luZ19jb3JlOjpkaXNwYXRj +aGVyOjpEaXNwYXRjaD46OmhhMzQ1NzYyN2ZlMjc2MTE5wjRPPHN0ZDo6c3luYzo6cG9pc29uOjpQ +b2lzb25FcnJvcjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzJjYzU4MmIzN2Y3MTNl +McM0Szx0cmFjaW5nX2NvcmU6Om1ldGFkYXRhOjpMZXZlbCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoNjMxZThmYjA0YmUwZWQxNcQ0N3RyYWNpbmdfY29yZTo6ZXZlbnQ6OkV2ZW50OjpkaXNw +YXRjaDo6aGVjMTZmYmY5YTMxMTY0ZjPFNDl0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVj +b3JkX3N0cjo6aGU4Y2MyODJjYTZkMmM5Y2bGNDt0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6 +cmVjb3JkX2Vycm9yOjpoNjBkYzFhZDY5ZDMyY2U1Occ0VTxodHRwOjpoZWFkZXI6OnZhbHVlOjpJ +bnZhbGlkSGVhZGVyVmFsdWUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDllOWI0ZjA0Nzky +MDY1MzHINE08aHR0cDo6c3RhdHVzOjpJbnZhbGlkU3RhdHVzQ29kZSBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoOTQwNjE1NjIzNDkyOWI0Yck0UzxodHRwOjpoZWFkZXI6Om5hbWU6OkludmFs +aWRIZWFkZXJOYW1lIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ZTk2YTBkMDNlNjM4Mzk3 +yjRPPGh0dHA6OmhlYWRlcjo6bWFwOjpNYXhTaXplUmVhY2hlZCBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoZjIyMTM2ZmEwNzVkNGEzZMs0QzxodHRwOjp1cmk6OkludmFsaWRVcmkgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDU1YjE0NGU5Y2U3YmI0NzLMNEg8aHR0cDo6dXJpOjpJbnZh +bGlkVXJpUGFydHMgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDJiOGIzOWM2NmRiYjc5NTjN +NEk8aHR0cDo6bWV0aG9kOjpJbnZhbGlkTWV0aG9kIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +OmgxODE0NmViMWRmYWY3MmY0zjRIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcD46OmRyb3A6OmgyMTVjNTljMzY1MWU2Nzg5zzQqc2VyZGVfanNvbjo6cmVhZDo6 +ZXJyb3I6OmgzNjdiYzdlZWUxMmQ0NDI50DRdPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIHdh +c21fYmluZGdlbjo6VW53cmFwVGhyb3dFeHQ8VD4+OjpleHBlY3RfdGhyb3c6OmgzOGQxYzc4YTU5 +Y2U1OWZm0TQvY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfY2hhcjo6aDk4YjliYTFiYzJmODAyMWbS +NE08c3RkOjp0aHJlYWQ6OmxvY2FsOjpBY2Nlc3NFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoYjk5M2JlNjAzOGJkNzk0N9M0WTxzdGQ6OmlvOjpXcml0ZTo6d3JpdGVfZm10OjpBZGFw +dGVyPFQ+IGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmgxNDIyYWI4NTUzMWQ3NTk2 +1DQ0Y29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3R1cGxlOjpoZWY5NDE5MWJlZjUwZGE4MtU0 +eWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50 +czo6cm9vbTo6ZW5jcnlwdGVkOjpSb29tRXZlbnRFbmNyeXB0aW9uU2NoZW1lPjo6aDQ2ZDRjNGJm +OGUxNmYyNmbWNGdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjpTdG9yZTo6Z2V0X2lkZW50aXR5Ojp7e2Nsb3N1cmV9fT46OmgzZTEwNjRkODcwZTgzOTZh +1zTMAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGll +czo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjpyZWNlaXZlX2RldmljZV9jaGFuZ2VzPGNvcmU6 +Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxjb3JlOjpzbGljZTo6aXRlcjo6SXRlcjxydW1hX2Nv +bW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkPixtYXRyaXhfc2RrX2NyeXB0 +bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6cHJlcHJvY2Vzc19zeW5jX2NoYW5nZXM6Ont7Y2xvc3Vy +ZX19Ojp7e2Nsb3N1cmV9fT4+Ojp7e2Nsb3N1cmV9fT46Omg2ZWU2N2JkYTE4YzE1ODRk2DSLAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpJ +ZGVudGl0aWVzQmVpbmdWZXJpZmllZDo6cmVxdWVzdF9taXNzaW5nX3NlY3JldHM6Ont7Y2xvc3Vy +ZX19Pjo6aDI5ODRkMWRmY2YzZWIyYTPZNIcBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJbmJvdW5kR3JvdXBT +ZXNzaW9uOjpjb21wYXJlOjp7e2Nsb3N1cmV9fT46Omg5NDI1YjFiMDliNGYxNmNh2jRHY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPHNlcmRlX2pzb246OmVycm9yOjpFcnJvcj46Omg2MmExZTc1ZTMw +YzU3OWQ0LjHbNIIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpn +b3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OnNob3VsZF9yZXF1ZXN0X2tleTo6e3tj +bG9zdXJlfX0+OjpoM2EzNGViMWFhNzhhNWFlYtw0WmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBSZXF1ZXN0Pjo6aGE1NjNiZDViNDRj +NDM3YjguMd00MHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfdTY0OjpoNTVkOWI5MjlmMTQ0OTg0 +Nt40MHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfaTY0OjpoMWYzZDU3ODFkYmQwODYyOd80MHNl +cmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfZjY0OjpoYjIzZjFiNmQyNzM2NGY2MOA0nAFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjpEZXZpY2VDaGFuZ2VzLG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNy +eXB0b1N0b3JlRXJyb3I+Pjo6aDgwOGRmNTgyNjk4MzExYznhNGg8Y29yZTo6aXRlcjo6YWRhcHRl +cnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0 +b3I+OjpuZXh0OjpoYzA5MmUwMTkyZjkwZGZhZOI0aDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFw +OjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5l +eHQ6OmhlYmFiZDZhNzdhYTJmNDRj4zQ1d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlOjphc19zdHJpbmc6 +OmhmNmU3ZWZlYmVmNDcwZTFjLjLkNIcBd2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpzbGljZXM6Ojxp +bXBsIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpGcm9tV2FzbUFiaSBmb3IgYWxsb2M6 +OnN0cmluZzo6U3RyaW5nPjo6ZnJvbV9hYmk6OmgzMDJlNTI0ZmM2MTI0OGQ35TSEAXdhc21fYmlu +ZGdlbjo6Y29udmVydDo6c2xpY2VzOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0 +czo6RnJvbVdhc21BYmkgZm9yIGFsbG9jOjp2ZWM6OlZlYzxUPj46OmZyb21fYWJpOjpoNWUzYjEy +YmRhZjZmZTAzYeY0R2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZV9qc29uOjplcnJvcjo6 +RXJyb3I+OjpoNjJhMWU3NWUzMGM1NzlkNC415zRHY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHNl +cmRlX2pzb246OnZhbHVlOjpWYWx1ZT46OmgxZjAwOTE5NWQzMjc0NmQyLjfoNEk8Y29yZTo6b3B0 +aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg1Yzg0NjcwNGRl +MDFlYmU16TQ5Y29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2U6Omg0MTdkZmVj +ZjA3YjA0YjVh6jSOATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlw +dG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlw +dG9TdG9yZT46OmdldF9zZXNzaW9uczo6aDMzODMyMTkyZDUxYTVmMTXrNI4BPG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3Nlc3Npb25zOjpo +NmVlM2M0YWI2Yjk0YWRlYuw0yQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4 +X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNjb3VudD4sbWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4+Pjo6aDRhZmI0YTcxNjE5NmY4MjTtNJIBPG1h +dHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4g +YXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X2N1 +c3RvbV92YWx1ZTo6aDRkN2RhZDcwZTliYjJkZDnuNJIBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9y +ZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X2N1c3RvbV92YWx1ZTo6aDVlNjZiM2Zk +ODUzYjZkYWTvNJIBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0 +b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0 +b1N0b3JlPjo6Z2V0X3VzZXJfZGV2aWNlczo6aDBhODUxY2VkNDA2M2VmZTHwNJIBPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3VzZXJfZGV2 +aWNlczo6aDQ4YTMxMjcxYzNiOWExYzjxNJMBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJh +aXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +Ojp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3Jvb21fc2V0dGluZ3M6OmgzMThlMGIzNDgxZGQy +ODNk8jSTATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9y +ZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OmdldF9yb29tX3NldHRpbmdzOjpoNDdhMjJjOThhNjFkYzY3OPM0kwE8bWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhf +c2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpnZXRfdXNlcl9pZGVudGl0 +eTo6aDVkNmRlMGY2ZjBmMTg5OTH0NJMBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3VzZXJfaWRlbnRpdHk6Omg2YThmMjUzNThmYmZjNzE1 +9TSUATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVy +cm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46 +OnNhdmVfdHJhY2tlZF91c2Vyczo6aDJmYzY1NzFmMmNmNzVmZjH2NJQBPG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6c2F2ZV90cmFja2VkX3VzZXJz +OjpoYjhmNjlkMGEwMWU1NDJmMPc0lQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6 +OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRy +YWl0czo6Q3J5cHRvU3RvcmU+OjpyZW1vdmVfY3VzdG9tX3ZhbHVlOjpoYzQ3ZGM5YWE4MjlkYjA0 +Zfg0lQE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVF +cnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+ +OjpyZW1vdmVfY3VzdG9tX3ZhbHVlOjpoZTk3MjJmYTE2NTA3MTViZfk0nAE8bWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhf +c2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjpnZXRfb3V0Ym91bmRfZ3Jv +dXBfc2Vzc2lvbjo6aGI3MWZiODZhYWI3MGMwYmL6NJwBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9y +ZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X291dGJvdW5kX2dyb3VwX3Nlc3Npb246 +OmhmOTRhNjUyYTgzYWZjYTkx+zSeATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJh +aXRzOjpDcnlwdG9TdG9yZT46OmdldF9vdXRnb2luZ19zZWNyZXRfcmVxdWVzdHM6OmhiYjMwMDA1 +MDg4Yjc0ZDI2/DSeATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlw +dG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlw +dG9TdG9yZT46OmdldF9vdXRnb2luZ19zZWNyZXRfcmVxdWVzdHM6OmhlMDI5MTUwOWVjZjkyN2E3 +/TShATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVy +cm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46 +OmRlbGV0ZV9vdXRnb2luZ19zZWNyZXRfcmVxdWVzdHM6OmgxMzI0NDkzMDkzZTBiMjhk/jShATxt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+ +IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmRlbGV0 +ZV9vdXRnb2luZ19zZWNyZXRfcmVxdWVzdHM6OmgzMDU3MjcxYzNkNzg5ZDFh/zSqATxtYXRyaXhf +c2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1h +dHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Om1hcmtfaW5ib3Vu +ZF9ncm91cF9zZXNzaW9uc19hc19iYWNrZWRfdXA6Omg4ZmVhNTQ0MTk4NzE1NDkxgDWqATxtYXRy +aXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFz +IG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46Om1hcmtfaW5i +b3VuZF9ncm91cF9zZXNzaW9uc19hc19iYWNrZWRfdXA6OmhhYjlmZTM2ODk4YTdlODNhgTWVAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpP +bG1NYWNoaW5lOjpyZWdpc3Rlcl9kZXZpY2VzX3VwZGF0ZWRfY2FsbGJhY2s6Ont7Y2xvc3VyZX19 +Ojp7e2Nsb3N1cmV9fT46Omg3MzNjZWI2YmYyYzg5ZjUzgjWWAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpyZWdpc3Rl +cl9yb29tX2tleV91cGRhdGVkX2NhbGxiYWNrOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Ojpo +YjJhM2EwZDgxYzNlNDgxY4M1mwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVnaXN0ZXJfdXNlcl9pZGVudGl0eV91 +cGRhdGVkX2NhbGxiYWNrOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoODhkYjY5Y2FiMjdi +ZTdmY4Q1WDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPFQsQT4gYXMgY29yZTo6b3Bz +Ojpkcm9wOjpEcm9wPjo6ZHJvcDo6aDAyMjE3ZmEyZWEyMGJhNTKFNVg8YWxsb2M6OnZlYzo6aW50 +b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omhl +NDM5N2Y0MDNkMzZiNWM3hjVAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zv +cl9wdXNoOjpoNmI1YmRmZjJhYjIxMDE3Noc1QGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6 +cmVzZXJ2ZV9mb3JfcHVzaDo6aDlmYWY2NTBiOTAwY2ZkMGWINUBhbGxvYzo6cmF3X3ZlYzo6UmF3 +VmVjPFQsQT46OnJlc2VydmVfZm9yX3B1c2g6OmhkMjMyZGNmMGQ1NjM1Mjc1iTVAYWxsb2M6OnJh +d192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoZDUzMDNhYjgzMDc3ZGQyMYo1 +TmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFu +ZGxlOjpoMzNhMDQxOGU4ZjAyNzBiNYs1TmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVz +ZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoYTc1MWQzMGM3YTBlZThjZIw1SGNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I+OjpoNjJhMWU3NWUzMGM1 +NzlkNC4xMY01ZmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6YmFj +a3Vwczo6a2V5czo6ZGVjcnlwdGlvbjo6RGVjb2RlRXJyb3I+OjpoZDY3ZDA5YTFlYzMwYWVmOI41 +fDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2V4dGVuZDo6U3BlY0V4 +dGVuZDwmVCxjb3JlOjpzbGljZTo6aXRlcjo6SXRlcjxUPj4+OjpzcGVjX2V4dGVuZDo6aDhhOTIx +Nzg4OTA1YzI1YjmPNS1zZXJkZV9qc29uOjpkZTo6ZnJvbV9zbGljZTo6aDM2OTEwN2Q3MTAyMmE0 +OGWQNS1zZXJkZV9qc29uOjpkZTo6ZnJvbV9zbGljZTo6aGYyMDJiMjMxN2Y1NWRlYzGRNS1zZXJk +ZV9qc29uOjpkZTo6ZnJvbV9zbGljZTo6aGY1MDllMjQxOTIxNzM5ZjaSNWs8c2VyZGVfanNvbjo6 +ZGU6OlVuaXRWYXJpYW50QWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6VmFyaWFudEFjY2Vzcz46Om5l +d3R5cGVfdmFyaWFudF9zZWVkOjpoN2VlODEyOWU2NWMzZDgzYpM1QGFsbG9jOjpyYXdfdmVjOjpS +YXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDNkYjUzODNhNTIxOGRiYjmUNWQ8c2VyZGVf +d2FzbV9iaW5kZ2VuOjpkZTo6RGVzZXJpYWxpemVyIGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVy +Pjo6ZGVzZXJpYWxpemVfdTg6Omg4OWM1ZmIxZWNiMzI1ZTgzlTU4PFtaOyBOXSBhcyB6ZXJvaXpl +OjpaZXJvaXplPjo6emVyb2l6ZTo6aDkzODg2OTg1MjhmNWE0NWKWNTg8W1o7IE5dIGFzIHplcm9p +emU6Olplcm9pemU+Ojp6ZXJvaXplOjpoOTc2NDFjZmRlNTYzYjdhNJc1aTxwb2x5MTMwNTo6YmFj +a2VuZDo6c29mdDo6U3RhdGUgYXMgdW5pdmVyc2FsX2hhc2g6OlVuaXZlcnNhbEhhc2g+Ojp1cGRh +dGVfd2l0aF9iYWNrZW5kOjpoNzFlYzE2YTM0MzZmNTA3ZZg1O2FueWhvdzo6ZXJyb3I6OjxpbXBs +IGFueWhvdzo6RXJyb3I+Ojptc2c6Omg0YjI3YmNmYzk1MmUzYmE4mTV8PGFsbG9jOjp2ZWM6OlZl +YzxULEE+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZXh0ZW5kOjpTcGVjRXh0ZW5kPCZULGNvcmU6OnNs +aWNlOjppdGVyOjpJdGVyPFQ+Pj46OnNwZWNfZXh0ZW5kOjpoZGNkNDVjZDVhYTdlODkyN5o1WWFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsVHlw +ZT46Omxhc3Rfa3Y6OmgyMDk2ODIwNTZmYzEyNTI2mzVZYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6Tm9kZVJlZjxCb3Jyb3dUeXBlLEssVixUeXBlPjo6bGFzdF9rdjo6aDBmYWI3NmY1 +NGRlOTdmZmWcNVlhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJv +d1R5cGUsSyxWLFR5cGU+OjpsYXN0X2t2OjpoMTgxNWEzM2YwNGJiMTRlMZ01Z2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6Ok91dGdvaW5nVmVyaWZp +Y2F0aW9uUmVxdWVzdD46Omg4MGY0M2NlZTQyNGY4MDM4LjGeNVZtYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlFyU3RhdGU8Uz46OmludG9fY2FuY2VsbGVkOjpoNTBjYzQx +YWQyYWFhZGIwMZ81QGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVz +aDo6aDBiNDI1OGI2OWQ5ZjNhMjCgNUBhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2Vy +dmVfZm9yX3B1c2g6Omg0MmM3ZDQ0OGNjNTA1ZGNkoTVAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxU +LEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoNmI5OGNiMWRkMGY5YTRlZqI1QGFsbG9jOjpyYXdfdmVj +OjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aGY3NzYwNGUwYzU1M2RmMDejNXM8Y29y +ZTo6aXRlcjo6YWRhcHRlcnM6OmZpbHRlcjo6RmlsdGVyPEksUD4gYXMgY29yZTo6aXRlcjo6dHJh +aXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpzaXplX2hpbnQ6Omg5MTU5ZjcxYTc4ZTJkNDVkpDV2 +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6bXV0ZXg6Ok11dGV4R3VhcmQ8Y29y +ZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnN0cmluZzo6U3RyaW5nPj4+OjpoYmZiNTMxNDUxMmJh +ZTg4MqU1e2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +Om1lbW9yeXN0b3JlOjpNZW1vcnlTdG9yZTo6c2F2ZV9zZXNzaW9uczo6e3tjbG9zdXJlfX0+Ojpo +MTRhZmZhMjk1MjJlOGYxOaY1dDx0cmFjaW5nX3N1YnNjcmliZXI6OmxheWVyOjpsYXllcmVkOjpM +YXllcmVkPEwsUz4gYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6ZXZl +bnQ6Omg1ZGE4MTUxNWQwNGMxN2VmpzVAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNl +cnZlX2Zvcl9wdXNoOjpoMDBmZDAxODgxNWU2NTllYqg1MDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoMTk5N2IzOGJiZWFhYjY5Oak1SGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6 +Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoZWE5NTllZDZiZWE5ZjBkZqo1sAFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8PGdsb29fdGltZXJzOjpmdXR1cmU6OlRpbWVvdXRGdXR1cmU6Om5ldzo6 +e3tjbG9zdXJlfX0gYXMgd2FzbV9iaW5kZ2VuOjpjbG9zdXJlOjpXYXNtQ2xvc3VyZUZuT25jZTwo +KSwoKT4+OjppbnRvX2ZuX211dDo6e3tjbG9zdXJlfX0+OjpoMzViYzVkZGFkYTM0ZTVkZKs1azxz +ZXJkZV9qc29uOjpkZTo6VW5pdFZhcmlhbnRBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpWYXJpYW50 +QWNjZXNzPjo6bmV3dHlwZV92YXJpYW50X3NlZWQ6OmhiOGYxM2Q5MmUxYzljZjVhrDVAYWxsb2M6 +OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoNWIyNjc4ZmYzMTQzNDJj +Ma01QGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aGEyYmYw +MzJjYmZkOGEzYTSuNTg8W1o7IE5dIGFzIHplcm9pemU6Olplcm9pemU+Ojp6ZXJvaXplOjpoN2Fh +OTM2YjI4ZWNlN2JlOa81W2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5nX2NvcmU6OmNh +bGxzaXRlOjpkaXNwYXRjaGVyczo6UmVidWlsZGVyPjo6aGU1YmM5MGIwOTg2M2ViMTiwNTdzZXJk +ZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjpuZXc6OmhkOTY2NGI5ZTcwYmJlMzZlsTVAYWxs +b2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoMWFlMjY5YjE4MmQw +NTU5YbI1NWJ5dGVzOjpieXRlczo6cHJvbW90YWJsZV9vZGRfY2xvbmU6Omg2NzExMjcxYTIwM2Qw +YTk3szVnanNfc3lzOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGpzX3N5czo6SnNTdHJpbmc+ +IGZvciBhbGxvYzo6c3RyaW5nOjpTdHJpbmc+Ojpmcm9tOjpoOGY5OTkxYTY1MmZhMmY2ObQ1NnNl +cmRlX2pzb246OmRlOjpQYXJzZXJOdW1iZXI6OnZpc2l0OjpoYmUwZmM5ZTZiNGJiZTI3MrU1jgFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlw +dG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpDb21tb25XaXRoaGVsZENvZGVD +b250ZW50Pj46Omg4YjVmMzc4MDkxOTFlYjNltjWMAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlOjppbXBvcnRfcm9vbV9rZXlzOjp7e2Nsb3N1 +cmV9fTo6bmV3X3Nlc3Npb25fYmV0dGVyOjp7e2Nsb3N1cmV9fT46Omg5NTYwMDlkM2FhOTEwM2E4 +tzVtY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jv +c3Nfc2lnbmluZzo6Y29tbW9uOjpDcm9zc1NpZ25pbmdLZXk+OjpoNTNmMTA0ZDM2NmM1Y2IzOLg1 +XmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6Y2FsbDo6aGFuZ3VwOjpDYWxs +SGFuZ3VwRXZlbnRDb250ZW50Pjo6aDdmYWEzNzhlM2Y3ZDhmNjW5NVljb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3RzOjpPdXRnb2luZ1JlcXVlc3Q+Ojpo +Y2M2NDBkZThlZGZlMTA0N7o14AFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0 +OjpSZXN1bHQ8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRp +ZXM6Om1hbmFnZXI6OkRldmljZUNoYW5nZSxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9y +OjpDcnlwdG9TdG9yZUVycm9yPixmdXR1cmVzX3V0aWw6OmFib3J0YWJsZTo6QWJvcnRlZD4+Ojpo +ZDJmNmFlZDA5OGY5ZTRiOLs1UW1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmJhY2t1cDo6QmFja3Vw +RGVjcnlwdGlvbktleTo6dG9fYmFzZTY0OjpoN2RhMTJhNDE2NGJiY2E1Ybw1ZDwmbXV0IHNlcmRl +X2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+Ojpz +ZXJpYWxpemVfdW5pdDo6aDZkN2MyYzExNWExNjgxNmG9NWhjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50 +aXRpZXM+OjpoNDA3ZmU3YzI3NGM1N2VlMr41tAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29y +ZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6b3B0aW9uOjpPcHRp +b248YWxsb2M6OnZlYzo6VmVjPHU4Pj4sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6 +Q3J5cHRvU3RvcmVFcnJvcj4+Pjo6aDU1MmYzYjc4YzMyYTUzOGa/NYcBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjpmaWxlX2Vu +Y3J5cHRpb246OmF0dGFjaG1lbnRzOjpNZWRpYUVuY3J5cHRpb25JbmZvPj46OmgyYTZjNWI1Zjdm +YjMyODJiwDVbbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVzcG9uc2VzOjpFbmNyeXB0aW9uSW5m +bzo6c2VuZGVyX2N1cnZlMjU1MTlfa2V5OjpoNDYyNTA3ZWZiNzJlOTgxN8E1d2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxpbmRleGVkX2RiX2Z1dHVyZXM6OnJlcXVlc3Q6OmZ1dHVyZXM6OmlkYl9y +ZXF1ZXN0X2Z1dHVyZTo6SWRiUmVxdWVzdEZ1dHVyZT46OmgwODRhYjE0MWUyNjI0MjhiwjVzY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6 +OkluYm91bmRHcm91cFNlc3Npb25JbmRleGVkRGJPYmplY3Q+OjpoNjgzMTQwY2FjYjE0MTc0ZsM1 +2gFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGlu +ZTo6T2xtTWFjaGluZTo6cmVnaXN0ZXJfcmVjZWl2ZV9zZWNyZXRfY2FsbGJhY2s6Ont7Y2xvc3Vy +ZX19OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfT2xtTWFjaGluZV9yZWdpc3RlclJlY2Vp +dmVTZWNyZXRDYWxsYmFjazo6e3tjbG9zdXJlfX0+OjpoOGE2OWU2Y2M1MTA1ZTQyMMQ1xgFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xt +TWFjaGluZTo6Z2V0X3NlY3JldHNfZnJvbV9pbmJveDo6e3tjbG9zdXJlfX06Ol86Ol9fd2FzbV9i +aW5kZ2VuX2dlbmVyYXRlZF9PbG1NYWNoaW5lX2dldFNlY3JldHNGcm9tSW5ib3g6Ont7Y2xvc3Vy +ZX19Pjo6aDU4NzhhNGIzZmQ2MWI2NDDFNeYBPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZl +bnRzOjpyb29tX2tleTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4 +X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5OjpSb29tS2V5SGVscGVyPjo6ZGVz +ZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2Jv +cnJvd2VkX3N0cjo6aDIxZjIwZTg5MTAzOGI0NmPGNV5jb3JlOjpzbGljZTo6aW5kZXg6OjxpbXBs +IGNvcmU6Om9wczo6aW5kZXg6OkluZGV4TXV0PEk+IGZvciBbVF0+OjppbmRleF9tdXQ6OmgwYjI4 +YTlmOTRmMDVhNjg1xzVqY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0 +aW9uPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6UmVkYWN0ZWRVbnNpZ25lZD4+OjpoZThmODViOWEx +MmJlM2MwMcg1NWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46Om1hcF9lcnI6OmhkNTc3ZWQ2ZmE1 +ZmY1MWQyyTVIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5z +aGltfX06OmgyNzRiNzBkN2MyZGFmOTI2yjVIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpj +YWxsX29uY2V7e3Z0YWJsZS5zaGltfX06Omg1MWJkYTA1NTMwNWI5M2Y0yzVIY29yZTo6b3BzOjpm +dW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5zaGltfX06Omg2YTg4YTA2ZmJiM2Jl +NTcxzDVIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5zaGlt +fX06Omg4Nzk5NDI0NjY2NTUzODhjzTURX193YmdfdXNlcmlkX2ZyZWXONX1jb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpRcjo6cmVn +aXN0ZXJfY2hhbmdlc19jYWxsYmFjazo6e3tjbG9zdXJlfX0+OjpoNGRmNzAzMGUzNmVkZGE4M881 +fmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmlj +YXRpb246OlNhczo6cmVnaXN0ZXJfY2hhbmdlc19jYWxsYmFjazo6e3tjbG9zdXJlfX0+OjpoYWNl +OTQ2YjNjZGFmYWVkNdA1jgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25SZXF1ZXN0OjpyZWdpc3Rlcl9jaGFu +Z2VzX2NhbGxiYWNrOjp7e2Nsb3N1cmV9fT46OmhiNjQ1OGEzZjFiNWE0OTYx0TUOc2lnbmF0dXJl +c19uZXfSNXljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +bWFjaGluZTo6T2xtTWFjaGluZTo6ZGVjcnlwdF9yb29tX2V2ZW50Ojp7e2Nsb3N1cmV9fT46Omg3 +NzFlMmJjZThjMzBmMzE40zXWATxydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpfOjo8aW1w +bCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVk +OjpSb29tRW5jcnlwdGVkRXZlbnRDb250ZW50Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9y +IGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2JvcnJvd2VkX3N0cjo6aDJjZThjNjI4Y2M5 +YmVmZWLUNXJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVt +YV9ldmVudHM6OnJvb21fa2V5X3JlcXVlc3Q6OlJlcXVlc3RlZEtleUluZm8+Pjo6aDE5Nzg2MDU2 +NWJiMmI1ZWbVNStzZXJkZV9qc29uOjpkZTo6ZnJvbV9zdHI6OmgyOWVhZTI3M2FkMDdlZmZl1jWs +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2Rr +X2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjppbmRleGVkZGJfc2VyaWFsaXplcjo6TWF5YmVFbmNy +eXB0ZWQsc2VyZGVfd2FzbV9iaW5kZ2VuOjplcnJvcjo6RXJyb3I+Pjo6aDk0ZTQ4MTQ2NzJmODUx +NTHXNXZtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjppbmRleGVkZGJfc2VyaWFs +aXplcjo6SW5kZXhlZGRiU2VyaWFsaXplcjo6ZW5jb2RlX2tleV9hc19zdHJpbmc6Omg2MDRlMTU3 +ODYxOTIyMjdk2DUrYWxsb2M6OnN5bmM6OkFyYzxUPjo6bmV3OjpoZTAwN2M0YzExYjY1MjBkNNk1 +4QE8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6Xzo6PGltcGwgc2VyZGU6 +OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5 +czo6VW5zaWduZWREZXZpY2VJbmZvPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNl +cmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X2JvcnJvd2VkX3N0cjo6aDgxNzRlMWVlYzJjZDgwMWHa +Nf8BPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0Ojpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlw +ZXM6OmV2ZW50czo6cm9vbV9rZXlfcmVxdWVzdDo6UmVxdWVzdGVkS2V5SW5mb0hlbHBlcj46OmRl +c2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9i +b3Jyb3dlZF9zdHI6OmhkOGZhM2VjZWE3ZWE2YjI12zVeY29yZTo6c2xpY2U6OmluZGV4Ojo8aW1w +bCBjb3JlOjpvcHM6OmluZGV4OjpJbmRleE11dDxJPiBmb3IgW1RdPjo6aW5kZXhfbXV0OjpoMTU1 +OWNhNTdmNzA0NGYzNdw1SDxhbGxvYzo6cmM6OldlYWs8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6 +OkRyb3A+Ojpkcm9wOjpoMTE2ZTAwNmZhYWEyN2VhOd01SmNvcmU6OnR1cGxlOjo8aW1wbCBjb3Jl +OjpjbXA6OlBhcnRpYWxPcmQgZm9yIChVLFQpPjo6bHQ6OmgxZjMwNTkyNWM4NTkxNjc33jVPY29y +ZTo6c2xpY2U6OnNvcnQ6Om1lcmdlX3NvcnQ6OkJ1Zkd1YXJkPFQsRWxlbURlYWxsb2NGPjo6bmV3 +OjpoMDY4ZDNjYmJjNjMyNjFkM981T2NvcmU6OnNsaWNlOjpzb3J0OjptZXJnZV9zb3J0OjpCdWZH +dWFyZDxULEVsZW1EZWFsbG9jRj46Om5ldzo6aDM2MjZjMTRhZmYwMjk4OTXgNU9jb3JlOjpzbGlj +ZTo6c29ydDo6bWVyZ2Vfc29ydDo6QnVmR3VhcmQ8VCxFbGVtRGVhbGxvY0Y+OjpuZXc6OmgwYThl +OTZjMDQzMzllOWQ14TUvY29yZTo6c2xpY2U6OnNvcnQ6OnF1aWNrc29ydDo6aGU1Y2I3OGRkOWFm +NDE4ZDDiNWQ8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNlcmlhbGl6ZXI8VyxGPiBhcyBzZXJkZTo6 +c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3VuaXQ6Omg2ZTRjNzE3ZjJmNWVlODk24zVrPG1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6RXZlbnRFbmNyeXB0aW9uQWxnb3JpdGhtIGFzIHNlcmRl +OjpzZXI6OlNlcmlhbGl6ZT46OnNlcmlhbGl6ZTo6aDkwNWQ5NTEyM2UwNDQ5Y2bkNUk8Y29yZTo6 +b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6Omg1M2FiNDcy +ZWVkNDYyNGY55TV5PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Y3J5cHRvX3N0b3JlX3dyYXBw +ZXI6OkNyeXB0b1N0b3JlV3JhcHBlciBhcyBjb3JlOjpvcHM6OmRlcmVmOjpEZXJlZj46OmRlcmVm +OjpoNjAyMGVkZGIxNmUwMGJiM+Y1amNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdGllcz46OmgzMWQx +NTVmMWIyNDcyNWJhLjPnNUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7 +dnRhYmxlLnNoaW19fTo6aDA0ZjIyYmY3NjI2YTA1MDjoNUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpG +bk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDMyMjBiZDhmYjAxOWY1MTbpNUhjb3Jl +OjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDQ2Yzdk +NjkxMDJhNjg3YjjqNUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRh +YmxlLnNoaW19fTo6aDUyYmI4OTlmYzUxMmU3ZmPrNUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9u +Y2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDYxMzdkZDA2ZDM5MzNjZjHsNUhjb3JlOjpv +cHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDhhMTFiOTRh +N2IxOTg1NTbtNUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxl +LnNoaW19fTo6aDkwODRiYTFkYmRlNmUzNjnuNUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6 +OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGM5ODFhMWMyYjYxN2RkMGbvNUhjb3JlOjpvcHM6 +OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGNhMjEzMzY1ODAy +ZTc1YjnwNUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNo +aW19fTo6aGZlOTA5MTRlZmU1NmFiMmHxNZABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9j +Ojpib3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93 +aXRoaGVsZDo6Q29tbW9uV2l0aGhlbGRDb2RlQ29udGVudD4+OjpoMzdhY2QxODBkNzY4YzAxNi4x +8jVBaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlSW5uZXI6OmZpeF9pbnNlcnRfc2xvdDo6aGJmOTU0 +YjI5MDdiZjk5ZDLzNfoBPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6YWNjZXB0Ojpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5Ojp2ZXJp +ZmljYXRpb246OmFjY2VwdDo6VG9EZXZpY2VLZXlWZXJpZmljYXRpb25BY2NlcHRFdmVudENvbnRl +bnQ+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6 +dmlzaXRfYm9ycm93ZWRfc3RyOjpoZWQwMTBjZjlmYjU0ODUyNfQ1Qm1hdHJpeF9zZGtfY3J5cHRv +Ojp2ZXJpZmljYXRpb246OkZsb3dJZDo6YXNfc3RyOjpoYmU0OWZmNGYxOTU4OWVhZvU1K3NlcmRl +X2pzb246OmRlOjpmcm9tX3N0cjo6aDliZTAzNTczNTNjYmYxYmL2NUo8c2VyZGVfanNvbjo6ZXJy +b3I6OkVycm9yIGFzIHNlcmRlOjpzZXI6OkVycm9yPjo6Y3VzdG9tOjpoNzc2OTY2MzgxODdkNTEy +NPc1pQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8KHJ1bWFfY29tbW9uOjp0b19kZXZpY2U6OkRl +dmljZUlkT3JBbGxEZXZpY2VzLHJ1bWFfY29tbW9uOjpzZXJkZTo6cmF3OjpSYXc8cnVtYV9ldmVu +dHM6OmVudW1zOjpBbnlUb0RldmljZUV2ZW50Q29udGVudD4pPjo6aGYwNmE1MDgwNDZkOTA0MDL4 +NUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6 +aGM1MDZmYzQ1YTJkNTU5MjL5NUhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25j +ZXt7dnRhYmxlLnNoaW19fTo6aGU0OTY4YzQxMGYwNGRmN2P6NXw8dHJhY2luZ19zdWJzY3JpYmVy +OjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJl +cjo6U3Vic2NyaWJlcj46OmV2ZW50X2VuYWJsZWQ6OmhiMWFmYTA1ZWIyNjhmZWU1+zU6dHJhY2lu +Z19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF9pMTI4OjpoMGMzYjM2MzU1OGZiYjQzYfw1OnRy +YWNpbmdfY29yZTo6ZmllbGQ6OlZpc2l0OjpyZWNvcmRfaTEyODo6aGJlMmZhZDY4MTQxNjcxMTj9 +NTp0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX3UxMjg6Omg2ZGZhYmZlMjFiMDBi +OThj/jU6dHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF91MTI4OjpoODBjY2QyN2U5 +NzhhMDBjM/81XHdhc21fYmluZGdlbl9mdXR1cmVzOjp0YXNrOjpzaW5nbGV0aHJlYWQ6OlRhc2s6 +OmludG9fcmF3X3dha2VyOjpyYXdfY2xvbmU6OmgzYmI5Yjk3YzRmZDQ3ZGZjgDY6dHJhY2luZ19j +b3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF9pMTI4OjpoZWE4ZmQzOWIzODJmOTNkNIE2OnRyYWNp +bmdfY29yZTo6ZmllbGQ6OlZpc2l0OjpyZWNvcmRfdTEyODo6aGY1MzcyMmE0OWQ1OGNhMzKCNmN3 +ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0lkYlZlcnNpb25DaGFuZ2VFdmVudDo6SWRiVmVyc2lvbkNo +YW5nZUV2ZW50OjpvbGRfdmVyc2lvbjo6aDAxMTMwZjlmMGFiZGU3MmGDNlZzZXJkZTo6X19wcml2 +YXRlOjpkZTo6Y29udGVudDo6Q29udGVudERlc2VyaWFsaXplcjxFPjo6aW52YWxpZF90eXBlOjpo +ODU3YzJlODIyMGMzMDE1Y4Q2YXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0Y2hl +dDo6QWN0aXZlRG91YmxlUmF0Y2hldDo6bmV4dF9tZXNzYWdlX2tleTo6aDI2ODgyNjVlMGFlMDhj +ZTmFNpwBPDxlZDI1NTE5X2RhbGVrOjp2ZXJpZnlpbmc6OlZlcmlmeWluZ0tleSBhcyBzZXJkZTo6 +ZGU6OkRlc2VyaWFsaXplPjo6ZGVzZXJpYWxpemU6OlZlcmlmeWluZ0tleVZpc2l0b3IgYXMgc2Vy +ZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfYnl0ZXM6OmhkZTg0YjFhZDllYjgxMjQ5hjZ+Y29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPFsoc2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRl +bnQsc2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQpXT46OmhhYTYwN2QwZWY0 +MDliNzJmhzZgY29yZTo6c2xpY2U6OmluZGV4Ojo8aW1wbCBjb3JlOjpvcHM6OmluZGV4OjpJbmRl +eE11dDxJPiBmb3IgW1RdPjo6aW5kZXhfbXV0OjpoNTA5ZTQ4MjQ0OWJmNDA4Yi40iDZIY29yZTo6 +b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5zaGltfX06OmhmMjJmNjVm +NDMxZmU0YWYyiTaNATxjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21v +ZGVsczo6QWZmaW5lTmllbHNQb2ludCBhcyBzdWJ0bGU6OkNvbmRpdGlvbmFsbHlTZWxlY3RhYmxl +Pjo6Y29uZGl0aW9uYWxfYXNzaWduOjpoMjdlNjlmODM4NzFlN2ZhOIo23AE8cnVtYV9ldmVudHM6 +OnJvb206Om1lc3NhZ2U6OnRleHQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9y +IHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjp0ZXh0OjpUZXh0TWVzc2FnZUV2ZW50Q29udGVu +dD46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2 +aXNpdF9ib3Jyb3dlZF9zdHI6OmgyMDhmMDU3YmJjMWEyZWU5izZWc2VyZGU6Ol9fcHJpdmF0ZTo6 +ZGU6OmNvbnRlbnQ6OkNvbnRlbnREZXNlcmlhbGl6ZXI8RT46OmludmFsaWRfdHlwZTo6aDA3ZDM5 +MDMwNzA5ZGVlNDCMNpcBPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6c2Vzc2lvbl9pZDo6T3du +ZWRTZXNzaW9uSWQgYXMgY29yZTo6Y21wOjpQYXJ0aWFsRXE8JnJ1bWFfY29tbW9uOjppZGVudGlm +aWVyczo6c2Vzc2lvbl9pZDo6U2Vzc2lvbklkPj46OmVxOjpoZGU2MDA0MGFkM2M4MmRlMY02kwE8 +JnJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2lkOjpEZXZpY2VJZCBhcyBjb3JlOjpj +bXA6OlBhcnRpYWxFcTxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmljZV9pZDo6T3duZWRE +ZXZpY2VJZD4+OjplcTo6aGEwMGY5YWUzZmM5NTQ4YmSONmI8cnVtYV9pZGVudGlmaWVyc192YWxp +ZGF0aW9uOjplcnJvcjo6TWF0cml4VXJpRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10 +OjpoZTg1NDQ5ZWE4NWEzOWZlNI82YTxydW1hX2lkZW50aWZpZXJzX3ZhbGlkYXRpb246OmVycm9y +OjpNYXRyaXhUb0Vycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDJjM2E0YTg5NGZl +MDA2ZjiQNjp0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX2kxMjg6Omg4ZjIzYTY4 +ODlhMDU5YTcxkTY6dHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF91MTI4OjpoYmZj +NzUxNjQ5NjdlNzE3NJI2PHNlcmRlX2pzb246OnZhbHVlOjpzZXI6OmludmFsaWRfcmF3X3ZhbHVl +OjpoNmE3OTg1ODEyZjNlMzNhNZM2PnNlcmRlX2pzb246OnZhbHVlOjpkZTo6U2VxRGVzZXJpYWxp +emVyOjpuZXc6OmhmMjA0YmE3Zjg1ZTFkM2JilDY4Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdT +ZXQ6OmZpbmlzaDo6aDNjOWM1Njc3YWQzZTEyZmSVNjljb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1 +Z0xpc3Q6OmZpbmlzaDo6aGEwZWU2MDJmYjgzMzE1YzKWNjVjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6 +ZGVidWdfc3RydWN0OjpoNjZiOTIxYzNlOTAzOGNiOJc2M2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpk +ZWJ1Z19saXN0OjpoYTI2YmNmNTcxMTcyYTU1MZg2MmNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1 +Z19zZXQ6OmgwN2JiNmZmOGM3MzlkMjBkmTbEAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxkeW4gY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1 +dHVyZStPdXRwdXQgPSBjb3JlOjpyZXN1bHQ6OlJlc3VsdDwoKSxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPj4+Pjo6aGIxYTQ2NjE0NTFjMDBjYWGaNmlj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +cXJjb2RlOjpRclZlcmlmaWNhdGlvblN0YXRlPjo6aDM1YmRjODc4ZDhjMGY2ZTmbNmdjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21f +a2V5X3JlcXVlc3Q6OkFjdGlvbj46OmhhZWNiZTI3NzQ3YzFhNzJmnDapAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRp +dGllczo6bWFuYWdlcjo6RGV2aWNlQ2hhbmdlLG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJy +b3I6OkNyeXB0b1N0b3JlRXJyb3I+Pjo6aDE4YTBkZjZiZWFlYzBmZjWdNjVjb3JlOjpjZWxsOjpS +ZWZDZWxsPFQ+Ojpib3Jyb3dfbXV0OjpoNmM3ZWI4ZmI3MWRjZjg3M542fmNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxkeW4gY29yZTo6ZXJyb3I6OkVycm9yK2NvcmU6 +Om1hcmtlcjo6U3luYytjb3JlOjptYXJrZXI6OlNlbmQ+Pjo6aDIzZmEwNzliZjg0ZmVjOWUuNJ82 +fjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpyZXF1ZXN0czo6VG9EZXZpY2VSZXF1ZXN0IGFzIHdh +c21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpJbnRvV2FzbUFiaT46OmludG9fYWJpOjpoMGY4 +NGE5NjVhNWYwOTVlMqA2gAE8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OktleXNC +YWNrdXBSZXF1ZXN0IGFzIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpJbnRvV2FzbUFi +aT46OmludG9fYWJpOjpoNzBiMzFhZjljZDYyYmU5NKE2hwJjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6b3B0aW9u +OjpPcHRpb248YWxsb2M6OnN5bmM6OkFyYzx0b2tpbzo6c3luYzo6bXV0ZXg6Ok11dGV4PGFsbG9j +Ojp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uPj4+Pixt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPj4+OjpoOTJl +NTY3Y2JjZjMyZTVmYaI25wFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpP +cHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpPdXRib3VuZEdyb3VwU2Vz +c2lvbj4sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4+ +Pjo6aDJjYjVlNzU1ZTMzNzVlNmWjNiJjb3JlOjptZW06OmRyb3A6Omg1NmU2NzE4MmZlZTBlZWM2 +pDarAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhf +c2RrX2NyeXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6RGV2aWNlQ2hhbmdlLG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+Pjo6aDE4YTBkZjZiZWFlYzBm +ZjUuMaU2XjxUIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpJbnRvQ3J5cHRv +U3RvcmU+OjppbnRvX2NyeXB0b19zdG9yZTo6aDA3NzBlOGE3MTRjZDQyNzamNo0BPGluZGV4ZWRf +ZGJfZnV0dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6b3B0aW9uYWxfanN2YWxfZnV0dXJlOjpPcHRp +b25hbEpzVmFsdWVGdXR1cmUgYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6 +Omg1MmFiYmJlZTg0N2EzNDAxpzaWATxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEY+IGFzIGNvcmU6 +Om9wczo6dHJ5X3RyYWl0OjpGcm9tUmVzaWR1YWw8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6 +Y29udmVydDo6SW5mYWxsaWJsZSxFPj4+Ojpmcm9tX3Jlc2lkdWFsOjpoZTQzZTI2NzFiMDNhOWEz +ZKg2fWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6 +c3luYzo6QXJjPG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6U3RvcmVDaXBoZXI+Pj46Omhj +ZDYwNWQxYmU5NDUwMmE0qTZ9Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjpkZWh5ZHJhdGVkX2RldmljZXM6OkRlaHlkcmF0ZWREZXZpY2VzOjpyZWh5ZHJhdGU6Ont7 +Y2xvc3VyZX19Pjo6aGVhMDlmYzU0ZTljMDI2YmKqNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9u +Y2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDBlNDJhNTEwOTJiMGZjNDWrNkhjb3JlOjpv +cHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDExMGJlOWI0 +NDQ5YWY1OTCsNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxl +LnNoaW19fTo6aDEzNTE3MjQwZTc0N2VlN2GtNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6 +OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDE2Y2I4ZjAyOGU3MzljNmauNkhjb3JlOjpvcHM6 +OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDE3YWNlYzg3Zjlh +MjExZTSvNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNo +aW19fTo6aDI0ODViMDU4NDQxOWJjMDSwNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNh +bGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDUzMzM4ZjkzOTg4ZTU0ZjOxNkhjb3JlOjpvcHM6OmZ1 +bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDY5ZTIyNjA1NTYwMGFm +YjSyNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19 +fTo6aDdhZTdmNGM3ZmI4YmM4ODOzNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxf +b25jZXt7dnRhYmxlLnNoaW19fTo6aDg1M2ZmZTY5MTUwNTYzODi0Nkhjb3JlOjpvcHM6OmZ1bmN0 +aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGEyNTY0YWUyMmY4NDA3Nzi1 +Nkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6 +aGM1YzYxNjEwMDc5YTFiYjW2Nkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25j +ZXt7dnRhYmxlLnNoaW19fTo6aGQ0ZjNiOGJhYjQxY2EyMGa3Nkhjb3JlOjpvcHM6OmZ1bmN0aW9u +OjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGQ4NDNmYTU0NGU0MDQzZWW4Nkhj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGUy +YjM3Njc1NzdjNTViNWa5Nkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7 +dnRhYmxlLnNoaW19fTo6aGVmZDgwZWU0ZDBkNDc2MmO6Nkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpG +bk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGYxMTAyMzdlYTIxZDNkMjm7Nkhjb3Jl +OjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGYyMDZk +MzFiNTJmNTY4NWO8Nkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRh +YmxlLnNoaW19fTo6aGZhYjY0MGY1MDcyZGY0ODK9NmY8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNl +cmlhbGl6ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVj +dDo6aGJjYWI4YWU4ZDdjMzBlNze+Njljb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxf +b25jZTo6aDZhYjcxMzg4MzliZWI0NWW/Nmg8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNlcmlhbGl6 +ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVjdDo6aGJj +YWI4YWU4ZDdjMzBlNzcuMcA2fDxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjplbmNyeXB0aW9uOjpT +aGllbGRTdGF0ZSBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6SW50b1dhc21BYmk+ +OjppbnRvX2FiaTo6aDVhOWY5ZmJkNWU1MDEzMTDBNn5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6 +OlJlYWRPbmx5VXNlcklkZW50aXRpZXM+Pjo6aGZkOWY4NjhhMGU3MjdjNDnCNnY8bWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6dHlwZXM6OlNpZ25hdHVyZXMgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0 +Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6OmhiMWI4ZWY4NTMwOTY1MGM5wzZ4PG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6RW1vamkgYXMgd2FzbV9iaW5kZ2Vu +Ojpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6OmhkZWMyNjAzZmViZmJk +NDZhxDZoPCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMgc2VyZGU6OnNl +cjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zdHJ1Y3Q6OmhiY2FiOGFlOGQ3YzMwZTc3LjLFNkhj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDAy +ZDE3NGQ5NTQ0ZWJjNDDGNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7 +dnRhYmxlLnNoaW19fTo6aDA1NTgyMGEwNDhmMmMyZTTHNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpG +bk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDA3ZTRhNGFhYmUyNzMyMTbINkhjb3Jl +OjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDBiMzg5 +YWFmNGJiZWY5YzLJNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRh +YmxlLnNoaW19fTo6aDExZThkNjE2ZjEyMGU3OWTKNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9u +Y2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDE0YjM2YjE2M2FkZDFjM2TLNkhjb3JlOjpv +cHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDE3YTEzYTk3 +ZTEwYjhhMWPMNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxl +LnNoaW19fTo6aDFiOTQxNjRhMzkzZjBhYjbNNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6 +OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDFlOGIwMDcxNzE5ZTRhMWPONkhjb3JlOjpvcHM6 +OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDI2ZTI1YzE5NzY1 +N2RlMTPPNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNo +aW19fTo6aDI3NDBjYWNiNjkwYjM1YzTQNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNh +bGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDJiYjc0YmFlOGYzNzg5MjDRNkhjb3JlOjpvcHM6OmZ1 +bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDMwMWJkY2I0NzFhNzQ3 +YmTSNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19 +fTo6aDM3NjBlYjY1MmEyNjI5ZWHTNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxf +b25jZXt7dnRhYmxlLnNoaW19fTo6aDM5NGNmNjczNTFmNWIxOTbUNkhjb3JlOjpvcHM6OmZ1bmN0 +aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDQ0NzUyOTNlYWViNDAyMDfV +Nkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6 +aDRkMWI1NGMwMWUwY2YxMTHWNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25j +ZXt7dnRhYmxlLnNoaW19fTo6aDVkZTIzZDVjZmFlNGY2NjPXNkhjb3JlOjpvcHM6OmZ1bmN0aW9u +OjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDYwY2Q4OTZiYTk2ODU5M2PYNkhj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDY0 +OWVmM2MyNzI5MjA2NWTZNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7 +dnRhYmxlLnNoaW19fTo6aDY3N2Q0Yzc4MTY5YmYzYznaNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpG +bk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDY5NDA0NDA1MjU0NmRjNDTbNkhjb3Jl +OjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDZmYTVl +N2EwMjM0YWEwYmPcNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRh +YmxlLnNoaW19fTo6aDczOWI5Y2JhNmM4YTgzYWPdNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9u +Y2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDc2ZWM2ZmNjYTFkZmE4ODTeNkhjb3JlOjpv +cHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDdiMWQ0Yzlh +MDYxNTE4MTXfNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxl +LnNoaW19fTo6aDgyZGE5NDI4ODE0MGVlOWHgNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6 +OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDgzZTg4MzJmMmFhNTRkZjThNkhjb3JlOjpvcHM6 +OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDhkNTY0ZjhiMTli +YWFkMGXiNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNo +aW19fTo6aDhlOTVmNjBkM2RmNjAyZTLjNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNh +bGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDhmOGNmMDdmZTY3NjUwNGXkNkhjb3JlOjpvcHM6OmZ1 +bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDk1N2ViMmY3Mzk0MGY1 +Y2blNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19 +fTo6aDk2Zjg0Y2JkYjVlMTg3MGPmNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxf +b25jZXt7dnRhYmxlLnNoaW19fTo6aDlmZjE1NjFhYTdkODFjNmPnNkhjb3JlOjpvcHM6OmZ1bmN0 +aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGE2ZGQwZTFlY2IyOTY0Yzfo +Nkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6 +aGFmZDI1ODM4Njg3MzdkM2LpNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25j +ZXt7dnRhYmxlLnNoaW19fTo6aGFmZjdiNjJjMWRlNTU1NDDqNkhjb3JlOjpvcHM6OmZ1bmN0aW9u +OjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGIxYmFiMjBhMzI3MjViZjjrNkhj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGI0 +MmY4NDkzZTliMGEyZTXsNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7 +dnRhYmxlLnNoaW19fTo6aGJjNGNiMWYxM2U3ZjQwYzXtNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpG +bk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGM4ZjkwYmQ4NWJhYjg4YmbuNkhjb3Jl +OjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGQyNWQ0 +NjNmYjY5OTZkOWTvNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRh +YmxlLnNoaW19fTo6aGQzMjA4MzE1MThlZDIxZjDwNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9u +Y2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGQzOGFjODcyN2M5ZTA4YmPxNkhjb3JlOjpv +cHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGUxNmI4N2Y4 +M2U4MGFhOWHyNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxl +LnNoaW19fTo6aGU1Y2ZkMGFkNjEwYmI4YTbzNkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6 +OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGU5ZWRiYjg4ODRiYTQ0MzH0Nkhjb3JlOjpvcHM6 +OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aGVhN2YyOWZiYmY5 +MGFiMjj1Nkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNo +aW19fTo6aGY5ZTA4OTU3ODRkZWY4MDX2Nmg8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNlcmlhbGl6 +ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVjdDo6aGJj +YWI4YWU4ZDdjMzBlNzcuM/c2UDxhbGxvYzo6YWxsb2M6Okdsb2JhbCBhcyBjb3JlOjphbGxvYzo6 +QWxsb2NhdG9yPjo6YWxsb2NhdGU6OmgyZDc4MGU0ZWNjMTY2NTAzLjE3+DZqc2VyZGU6OmRlOjpp +bXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgYWxsb2M6OmJveGVkOjpCb3g8 +c3RyPj46OmRlc2VyaWFsaXplOjpoMDljYzBiN2VkN2ZlZDMyYfk2NmFsbG9jOjphbGxvYzo6R2xv +YmFsOjphbGxvY19pbXBsOjpoNDg0NWM3YjBjOWQ4NTI0ZS4xN/o2aDwmbXV0IHNlcmRlX2pzb246 +OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxp +emVfc3RydWN0OjpoNmJjMjY2M2Q2MWE3NGYzYS4y+zYyY29yZTo6Y2VsbDo6UmVmQ2VsbDxUPjo6 +cmVwbGFjZTo6aDhkZTM3ZjVhOGNmOWY4MWX8Nmg8Jm11dCBzZXJkZV9qc29uOjpzZXI6OlNlcmlh +bGl6ZXI8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVjdDo6 +aGQ1NjA5NmI1NDQ2NDQwYmQuMf02ZGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6VHJhbnNpdGlvbmVkPjo6aDVmZjc1YmYw +ZDU4YzZjMzD+Nks8YWxsb2M6OnN5bmM6OkFyYzxUPiBhcyBjb3JlOjpkZWZhdWx0OjpEZWZhdWx0 +Pjo6ZGVmYXVsdDo6aDFhYTE5NzM5MTJjNzdiNzP/Nkg8YWxsb2M6OnN5bmM6OkFyYzxUPiBhcyBj +b3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDE4OTRiMTBlMTMwN2Y3NDeAN0g8YWxsb2M6 +OnN5bmM6OkFyYzxUPiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDM2ZGNjZTBk +YzQxZjJhY2WBN2VtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBN +YWNoaW5lOjpyZWNlaXZlX2luY29taW5nX2tleV9yZXF1ZXN0OjpoZWEyOTIxZGI0MGU3MTY2NII3 +aDwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RydWN0OjpoZDU2MDk2YjU0NDY0NDBiZC4ygzciY29yZTo6 +bWVtOjpkcm9wOjpoZmU5MTQxZTA1NzJmOWMwOYQ3VTx0b2tpbzo6c3luYzo6YnJvYWRjYXN0OjpT +ZW5kZXI8VD4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDRlZGU2NWYwMGFmZDg1 +MziFN0ttYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6VXNlcklkZW50aXRpZXM6 +Om93bjo6aDJmMDIzMTY2NzYyZjExMDmGN2FtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9u +OjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZDo6aXNfc2VsZl92ZXJpZmljYXRpb246OmgzYjhkNGM5 +YTliNWNjMjY0hzdEbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6cHJpdmF0ZV9pZGVu +dGl0eTo6aDMxNzk5YWJmODZiYTZiYWaINyJjb3JlOjptZW06OmRyb3A6OmgxZWYyMTI4ZWQyOWRl +ZGU3iTdcY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRyYWNpbmdfc3Vic2NyaWJlcjo6cmVnaXN0 +cnk6OnNoYXJkZWQ6OlJlZ2lzdHJ5Pjo6aDJkNjk5MmJjMzNjNDIyZDaKNzl0cmFjaW5nX2NvcmU6 +OmZpZWxkOjpWaXNpdDo6cmVjb3JkX2Y2NDo6aGE2MDIwNTM0MTk1NTgxZTGLNzl0cmFjaW5nX2Nv +cmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX2Y2NDo6aGYzYjdlYjBkODZhMjcxMzOMNzl0cmFjaW5n +X2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX2k2NDo6aDAyZWQ5ZTdhNTQzZWY5OWWNNzl0cmFj +aW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX2k2NDo6aDI4ZDA0NDFlZTBlZWVjOTKONzl0 +cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX3U2NDo6aDM5MDE1NWU3OTdmOTY4ODWP +Nzl0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX3U2NDo6aGU3M2M4Mzg2NWQ2NDJm +ODCQNzp0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX2Jvb2w6Omg0OTU3ZWVlY2Vj +MTgzYzlikTc6dHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF9ib29sOjpoODhkYzMy +NzE3MzBlZmE5MJI3NWNvcmU6OmNlbGw6OlJlZkNlbGw8VD46OmJvcnJvd19tdXQ6OmgyNzE1YTgw +M2Q1ODQ0ZGIxkzc5dHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF9mNjQ6OmhkMzNl +ZmRiMTNmOWFlYWVhlDc5dHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF9pNjQ6Omgz +ZTc0Nzc5YmYyNzExOThklTc5dHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF91NjQ6 +OmgxN2ViN2JlNDgwZTY2NDRmljc6dHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF9i +b29sOjpoMDkwZjY5NTkxY2QxYTUxNZc3R3ZvZG96ZW1hYzo6bWVnb2xtOjptZXNzYWdlOjpNZWdv +bG1NZXNzYWdlOjp0b19iYXNlNjQ6OmgxYWNkZjQzYTg2MTVhMTZmmDd/Y3VydmUyNTUxOV9kYWxl +azo6ZmllbGQ6OjxpbXBsIGN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTMyOjpm +aWVsZDo6RmllbGRFbGVtZW50MjYyNT46OmlzX25lZ2F0aXZlOjpoOGRhYjc3NGY5MmNhMTZhZpk3 +RnN1YnRsZTo6Q29uZGl0aW9uYWxseVNlbGVjdGFibGU6OmNvbmRpdGlvbmFsX2Fzc2lnbjo6aDVi +MzAwYzUzMTYzZDg4YmWaN088Y29yZTo6c2xpY2U6Oml0ZXI6Okl0ZXJNdXQ8Wj4gYXMgemVyb2l6 +ZTo6WmVyb2l6ZT46Onplcm9pemU6OmhjODRkZjM0NmYxYjdlZTM4mzciY29yZTo6bWVtOjpkcm9w +OjpoNjViZGM3OWU3YmI3YjVmYpw3anNlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpib3hlZDo6Qm94PHN0cj4+OjpkZXNlcmlhbGl6ZTo6aGQ1 +MTQzMDJiZGQzMWY4OWKdN3w8cnVtYV9ldmVudHM6Ol9jdXN0b206OkN1c3RvbVN0YXRlRXZlbnRD +b250ZW50IGFzIHJ1bWFfZXZlbnRzOjpjb250ZW50OjpFdmVudENvbnRlbnRGcm9tVHlwZT46OmZy +b21fcGFydHM6OmhhYTY3Y2EzYjI5YmZmNDk5njcwdGltZV9jb3JlOjp1dGlsOjppc19sZWFwX3ll +YXI6OmhkYWExZTNkMWU5ZDU2NDdlnzcuc3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljOjpoYjQ0 +Y2Q1ZDc4MzdjNjkwM6A3OXRyYWNpbmdfY29yZTo6ZmllbGQ6OlZpc2l0OjpyZWNvcmRfZjY0Ojpo +MWU2NzM1OTc3N2RhMmZlNKE3OXRyYWNpbmdfY29yZTo6ZmllbGQ6OlZpc2l0OjpyZWNvcmRfaTY0 +OjpoMGMzMTI5ZDNmZWEzZDhlMqI3OXRyYWNpbmdfY29yZTo6ZmllbGQ6OlZpc2l0OjpyZWNvcmRf +dTY0OjpoMzlkY2Y5ZDViZDA4YzI1MKM3OnRyYWNpbmdfY29yZTo6ZmllbGQ6OlZpc2l0OjpyZWNv +cmRfYm9vbDo6aGFmMjBkYjNiY2MzMDkzMGKkN1A8YWxsb2M6OmFsbG9jOjpHbG9iYWwgYXMgY29y +ZTo6YWxsb2M6OkFsbG9jYXRvcj46OmFsbG9jYXRlOjpoMmQ3ODBlNGVjYzE2NjUwMy4xOKU3LnN0 +ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6aDRmN2YzOTFlNTE4MGE4ZGOmN2xjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpjcnlwdG9fYWxnb3JpdGht +czo6RGV2aWNlS2V5QWxnb3JpdGhtPjo6aGZiNzMyMjM1NmU0OWQ4YWSnN15jb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8cnVtYV9jbGllbnRfYXBpOjprZXlzOjpnZXRfa2V5czo6djM6OlJlc3BvbnNl +Qm9keT46Omg1M2ExNWVlOGE0ZjRkZjEyqDdoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFf +ZXZlbnRzOjpyb29tOjptZXNzYWdlOjppbWFnZTo6SW1hZ2VNZXNzYWdlRXZlbnRDb250ZW50Pjo6 +aDA4MWFlNmU2MzljNDc2M2apN3pjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OlBpY2tsZWRJbmJvdW5kR3JvdXBT +ZXNzaW9uPjo6aDM2MWYxYzcyOWJhZTA5MGEuMao3aGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6dmlkZW86OlZpZGVvTWVzc2FnZUV2ZW50Q29udGVu +dD46OmhmMGYxMzg5OWVjOGZlYzU1qzdmY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZl +bnRzOjpyb29tOjptZXNzYWdlOjpmaWxlOjpGaWxlTWVzc2FnZUV2ZW50Q29udGVudD46Omg4YWQy +MzE1YzIwNzNiNWRjrDeqAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6dHlwZXM6OmV2ZW50czo6cm9vbTo6RXZlbnQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6OnJvb206OmVuY3J5cHRlZDo6Um9vbUVuY3J5cHRlZEV2ZW50Q29udGVudD4+OjpoYzll +NmZhNzQ3Mzk2ZDhjOS4yrTdoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpy +b29tOjptZXNzYWdlOjphdWRpbzo6QXVkaW9NZXNzYWdlRXZlbnRDb250ZW50Pjo6aDM3M2E0MDMx +OGMzYTcyNGauN2Bjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmNhbGw6Omlu +dml0ZTo6Q2FsbEludml0ZUV2ZW50Q29udGVudD46OmhmZDM2ZDU2MGUzZTJmODc1LjKvN4cBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjprZXlfdmVy +aWZpY2F0aW9uX3JlcXVlc3Q6OktleVZlcmlmaWNhdGlvblJlcXVlc3RFdmVudENvbnRlbnQ+Ojpo +NDY2NWJlYWI3YmY5ZjJjMC4xsDdpY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRz +Ojpyb29tOjpyZWRhY3Rpb246Ok9yaWdpbmFsU3luY1Jvb21SZWRhY3Rpb25FdmVudD46Omg1MWNk +YzMyZjUwMDU3NTk0sTdpY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjppZGVudGl0aWVzOjp1c2VyOjpSZWFkT25seU93blVzZXJJZGVudGl0eT46OmhkM2Y4NGE5ZjBh +NzUxOTdksjenAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxj +b3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OlNpZ25hdHVyZSxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OkludmFsaWRTaWduYXR1cmU+Pj46OmgyNmNjZGNkNTAx +MDUzOTI5szeWAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVy +aWZpY2F0aW9uOjpyZXF1ZXN0czo6UmVxdWVzdFN0YXRlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnJlcXVlc3RzOjpSZWFkeT4+OjpoMDIwZjZiYmM5YjcyNDliNLQ3qgFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb206 +OkV2ZW50PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6 +OlJvb21FbmNyeXB0ZWRFdmVudENvbnRlbnQ+Pjo6aGM5ZTZmYTc0NzM5NmQ4YzkuM7U3Z2NvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpJZGVu +dGl0aWVzQmVpbmdWZXJpZmllZD46OmgwZThkNDcyMTU1OWUxYzZjLjG2N0w8YWxsb2M6OnN5bmM6 +OkFyYzxULEE+IGFzIGNvcmU6Om9wczo6ZGVyZWY6OkRlcmVmPjo6ZGVyZWY6OmhjNDFlNDMzMGI0 +ZDYxMzY4tzc7ZnV0dXJlc190YXNrOjp3YWtlcjo6d2FrZV9ieV9yZWZfYXJjX3Jhdzo6aDQ3OGE4 +OWU1MGQxMDQwZGa4NztmdXR1cmVzX3Rhc2s6Ondha2VyOjp3YWtlX2J5X3JlZl9hcmNfcmF3Ojpo +NGQ0ZTE0NmI2NDM2ZWMyZrk3O2Z1dHVyZXNfdGFzazo6d2FrZXI6Ondha2VfYnlfcmVmX2FyY19y +YXc6Omg0ZGZmMDU3YmJmNDFkMGJmujc7ZnV0dXJlc190YXNrOjp3YWtlcjo6d2FrZV9ieV9yZWZf +YXJjX3Jhdzo6aDY0YjFmZTY4ZmYyYWE0YmW7NztmdXR1cmVzX3Rhc2s6Ondha2VyOjp3YWtlX2J5 +X3JlZl9hcmNfcmF3OjpoZjBjYjc5OWY0MDdmMGZjObw3QXdhc21fYmluZGdlbjo6X19ydDo6V2Fz +bVJlZkNlbGw8VD46OmJvcnJvd19tdXQ6OmgwMWU2ZWE2MTg5OWJlMGQ1vTdBd2FzbV9iaW5kZ2Vu +OjpfX3J0OjpXYXNtUmVmQ2VsbDxUPjo6Ym9ycm93X211dDo6aDJjNzk2Y2RjYzNjZWMzY2G+Nzlj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZTo6aDJlM2Q3ZWVlZmVlOWM3Yzi/ +N8YCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PGNvcmU6Om9w +dGlvbjo6T3B0aW9uPCgmcnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpVc2VySWQs +c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNoTWFwPHJ1bWFfY29tbW9uOjppZGVudGlm +aWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkLG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0 +aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlPik+LG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+Pjo6aGE4M2RiYjJjM2NlYWE5NjDAN0Njb3JlOjppdGVy +OjphZGFwdGVyczo6ZmxhdHRlbjo6YW5kX3RoZW5fb3JfY2xlYXI6OmgyMTRiOTEzMDdhY2JjMmQ0 +wTcZX193YmdfcGlja2xlZHNlc3Npb25fZnJlZcI3YzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +OjptYXA6OkludG9JdGVyPEssVixBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpo +NmJlNjc1Y2IxZmNlODJmMsM3EG9sbW1hY2hpbmVfY2xvc2XEN5IBPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6aXNfbWVzc2FnZV9rbm93bjo6aDM2 +ZGM0YWZmYjRkNTc2ZjHFN5IBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFz +ZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6 +OkNyeXB0b1N0b3JlPjo6aXNfbWVzc2FnZV9rbm93bjo6aDg5YmQyZDJiMDAyYzU4MTHGN5gBPG1h +dHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4g +YXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3Nl +Y3JldHNfZnJvbV9pbmJveDo6aDU0NDNiZWE5NGY0NGYwNjnHN5gBPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0X3NlY3JldHNfZnJvbV9pbmJv +eDo6aDY4MTFjYjJlMzQ3NzVjMWHIN5sBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkNyeXB0b1N0b3JlPjo6ZGVsZXRlX3NlY3JldHNfZnJvbV9pbmJveDo6aDBmYjBkMjIy +MzJjMGFlZmHJN5sBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0 +b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0 +b1N0b3JlPjo6ZGVsZXRlX3NlY3JldHNfZnJvbV9pbmJveDo6aDJkYjViMTYxMTdmZDE5ZjLKN5wB +PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8 +VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0 +X3NlY3JldF9yZXF1ZXN0X2J5X2luZm86Omg4YWE0MzczMWFlN2Y1YmEzyzecATxtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9zZWNyZXRfcmVx +dWVzdF9ieV9pbmZvOjpoYjBlY2Q5NmY5ZWI3NzJiMcw3owE8bWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjppbmJvdW5kX2dyb3VwX3Nlc3Npb25zX2Zv +cl9iYWNrdXA6OmgzZjg4NTM2ZDE2M2ZmZWExzTejATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmluYm91bmRfZ3JvdXBfc2Vzc2lvbnNfZm9yX2Jh +Y2t1cDo6aGJiZGNlNDA3MzBmMTBkNWPON2djb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4 +X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6SWRlbnRpdGllc0JlaW5nVmVyaWZpZWQ+OjpoMGU4 +ZDQ3MjE1NTllMWM2Yy40zzd9PGR5biBjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk11dDwoQSwpPitP +dXRwdXQgPSBSIGFzIHdhc21fYmluZGdlbjo6Y2xvc3VyZTo6V2FzbUNsb3N1cmU+OjpkZXNjcmli +ZTo6ZGVzdHJveTo6aDM3MTY3ZTNlNTllZTQyOWTQN8IBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRlaHlkcmF0ZWRfZGV2aWNlczo6RGVoeWRyYXRlZERl +dmljZXM6OmNyZWF0ZTo6e3tjbG9zdXJlfX06Ol86Ol9fd2FzbV9iaW5kZ2VuX2dlbmVyYXRlZF9E +ZWh5ZHJhdGVkRGV2aWNlc19jcmVhdGU6Ont7Y2xvc3VyZX19Pjo6aGU5NzhjY2VmNmU2NWUwMTnR +N8oBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmxpYm9s +bV9taWdyYXRpb246Ok1pZ3JhdGlvbjo6bWlncmF0ZV9vbG1fc2Vzc2lvbnM6Ont7Y2xvc3VyZX19 +OjpfOjpfX3dhc21fYmluZGdlbl9nZW5lcmF0ZWRfTWlncmF0aW9uX21pZ3JhdGVPbG1TZXNzaW9u +czo6e3tjbG9zdXJlfX0+OjpoN2FhOWNkOTE0YmI1NzE1N9I30AFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bGlib2xtX21pZ3JhdGlvbjo6TWlncmF0aW9u +OjptaWdyYXRlX21lZ29sbV9zZXNzaW9uczo6e3tjbG9zdXJlfX06Ol86Ol9fd2FzbV9iaW5kZ2Vu +X2dlbmVyYXRlZF9NaWdyYXRpb25fbWlncmF0ZU1lZ29sbVNlc3Npb25zOjp7e2Nsb3N1cmV9fT46 +Omg2ZmNkZTk1MTA1YTZiZDMx0zfQAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpkZWh5ZHJhdGVkX2RldmljZXM6OkRlaHlkcmF0ZWREZXZpY2U6OmtleXNf +Zm9yX3VwbG9hZDo6e3tjbG9zdXJlfX06Ol86Ol9fd2FzbV9iaW5kZ2VuX2dlbmVyYXRlZF9EZWh5 +ZHJhdGVkRGV2aWNlX2tleXNGb3JVcGxvYWQ6Ont7Y2xvc3VyZX19Pjo6aDYzZDZiMTlkZjYxZjVh +MDTUN5gBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmlj +YXRpb246OnJlcXVlc3RzOjpSZXF1ZXN0U3RhdGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNh +dGlvbjo6cmVxdWVzdHM6OlJlYWR5Pj46OmgwMjBmNmJiYzliNzI0OWI0LjPVN1ljb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3RzOjpUb0RldmljZVJlcXVl +c3Q+OjpoOWNhYWZhNDhhMjI2NjAxZdY3SGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2Fs +bF9vbmNle3t2dGFibGUuc2hpbX19OjpoMGI0ZDM5MDAxYjk3ZDlkY9c3a2NvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlP +d25Vc2VySWRlbnRpdHk+OjpoZDNmODRhOWYwYTc1MTk3ZC422DdnY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OklkZW50aXRpZXNCZWluZ1Zl +cmlmaWVkPjo6aDBlOGQ0NzIxNTU5ZTFjNmMuNtk3fGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6OlBpY2tsZWRP +dXRib3VuZEdyb3VwU2Vzc2lvbj46OmhkY2IzNDU2OTgxMjQ5ZDY0LjHaN3hjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91 +bmQ6OlBpY2tsZWRJbmJvdW5kR3JvdXBTZXNzaW9uPjo6aGRlMDBlNDRjOThlYjM0YTfbN8MBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3Jl +OjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6Q3J5cHRvU3RvcmU+OjpnZXRfb3V0Z29pbmdfc2VjcmV0X3JlcXVlc3RzOjp7e2Nsb3N1cmV9 +fT46Omg2ZDkwNzdhOTY1NzM1OGY03Dc5Y29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxs +X29uY2U6OmhiMzAyYTE0MDM0ZWJhNGNk3TdZc2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6 +OkNvbnRlbnRSZWZEZXNlcmlhbGl6ZXI8RT46OmludmFsaWRfdHlwZTo6aGE4ODUwMDYyMTc4Njc1 +MWbeNzxzZXJkZV93YXNtX2JpbmRnZW46OmRlOjpPYmplY3RBY2Nlc3M6Om5ldzo6aGUyYjk3MzM2 +MmMyMWRmNjPfN2U8JnNlcmRlX3dhc21fYmluZGdlbjo6c2VyOjpTZXJpYWxpemVyIGFzIHNlcmRl +OjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RydWN0OjpoOTdlYmY1MDEwOWE5ZjAwNOA3 +bjxnZW5lcmljX2FycmF5OjpHZW5lcmljQXJyYXk8VCxOPiBhcyBnZW5lcmljX2FycmF5OjpzZXF1 +ZW5jZTo6R2VuZXJpY1NlcXVlbmNlPFQ+Pjo6Z2VuZXJhdGU6OmhlNWEwNmFiNWYxOTIxNGJi4Tco +YWxsb2M6OnJjOjpSYzxUPjo6bmV3OjpoMmJjM2RjZWQ0MWY3YWU3MuI3tgFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29y +ZTo6b3B0aW9uOjpPcHRpb248d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPix3ZWJfc3lzOjpmZWF0dXJl +czo6Z2VuX0RvbUV4Y2VwdGlvbjo6RG9tRXhjZXB0aW9uPj4+OjpoYTZlNGY5YmYzODFhMjQ1N+M3 +bjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OktleXM8SyxWPiBhcyBjb3JlOjppdGVy +Ojp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgzZjEyODk0NzAwYzMzNTQz5Ddu +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6S2V5czxLLFY+IGFzIGNvcmU6Oml0ZXI6 +OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aGI4ZGIwZGNmZDAzOTM4NTDlN2M8 +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRlcjxLLFYsQT4gYXMgY29yZTo6 +b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGJjYWY5ZTdkYzgwN2QzYzHmN2M8YWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bWFwOjpJbnRvSXRlcjxLLFYsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aGYzMDFiZjMyNGI0Njc1YzHnN2Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpRclZlcmlmaWNhdGlvbj46 +OmhjZjM4ODBkOTM3NjZlNzU1LjHoN1JtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpx +cmNvZGU6OlFyVmVyaWZpY2F0aW9uOjpjYW5jZWw6Omg0ZWYxZGMxM2NhZGJmNzcz6TdZbWF0cml4 +X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlZlcmlmaWNhdGlvblJlcXVlc3Q6 +OmNhbmNlbDo6aGQxZGFjZWQ4ODU3ZWUxMWbqN2djb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6SWRlbnRpdGllc0JlaW5nVmVyaWZpZWQ+Ojpo +YTlmMzQ4MWM3NGExYmMzMi406zeCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6Zm9yd2FyZGVkX3Jvb21fa2V5OjpGb3J3YXJkZWRNZWdv +bG1WMUFlc1NoYTJDb250ZW50Pjo6aDMwNTZiZjgwOGEzYWYxOTbsN1Q8aGFzaGJyb3duOjpyYXc6 +OlJhd0ludG9JdGVyPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGQzMGRi +ZmUyNWRkZTAyYjLtN2Fjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtleTo6 +dmVyaWZpY2F0aW9uOjphY2NlcHQ6OlNhc1YxQ29udGVudD46OmhiMzYxYTg1NjM5NmJjNTdk7jdX +bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXRp +ZXM6OnVzZXJfaWQ6OmhlMmRiOTM2MmUxNDBhOTZh7zdEbWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6c2FzOjpTYXM6OmNhbmNlbDo6aDg0OTY0NDYyYWE4YjNhZjXwN21jb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjpj +b21tb246OkNyb3NzU2lnbmluZ0tleT46OmhmZGI1NWVjMjU3N2RjNWVh8TdEbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjpEZXZpY2VDaGFuZ2VzOjppc19lbXB0eTo6aDRkZmM1ZDg1YWE1YWE1MzDy +NzpxcmNvZGU6OmJpdHM6OkJpdHM6OnB1c2hfbnVtYmVyX2NoZWNrZWQ6OmgyZTkyYTY4NGZjOGNk +MmMy8zdbd2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OnRhc2s6OnNpbmdsZXRocmVhZDo6VGFzazo6aW50 +b19yYXdfd2FrZXI6OnJhd19kcm9wOjpoZmJmYmNjYzc0NzViZTJjOfQ3NWNvcmU6OnNsaWNlOjo8 +aW1wbCBbVF0+OjplbmRzX3dpdGg6OmgyZTI2ZDQwOWJjYTQwMDIz9Tc/ZWQyNTUxOV9kYWxlazo6 +c2lnbmluZzo6U2lnbmluZ0tleTo6Z2VuZXJhdGU6OmhlN2VlZmQyNDM2MTg5ZDMx9jdOPGFsbG9j +Ojp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4PEk+Pjo6aW5kZXg6Omgw +ZDhmNGUyODIxYzdjNDQ59zdOPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6aW5k +ZXg6OkluZGV4PEk+Pjo6aW5kZXg6Omg3MWRkYzUxYjI5YTFjYzk0+DdaY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPFt2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6bGlib2xtOjpPbmVUaW1lS2V5XT46 +Omg4NjI1ZjBhM2JhNzRiYzNh+TdvY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPFt2b2RvemVtYWM6 +Om9sbTo6c2Vzc2lvbjo6U2Vzc2lvbjo6ZnJvbV9saWJvbG1fcGlja2xlOjpNZXNzYWdlS2V5XT46 +OmhlZmY2NDBiNmY3NTA4OTNh+jdNdm9kb3plbWFjOjptZWdvbG06Omdyb3VwX3Nlc3Npb246Okdy +b3VwU2Vzc2lvbjo6c2Vzc2lvbl9pZDo6aDJhZmVhZGJmNmE3Yzg0NTT7N01jdXJ2ZTI1NTE5X2Rh +bGVrOjptb250Z29tZXJ5OjpNb250Z29tZXJ5UG9pbnQ6Om11bF9jbGFtcGVkOjpoZmNhOTBlYzM3 +YWE1NTVmNPw3RnJ1bWFfY2xpZW50X2FwaTo6a2V5czo6Y2xhaW1fa2V5czo6djM6OlJlcXVlc3Q6 +Om5ldzo6aGM0ZGFjNDE0Y2FhYTNiZjP9N2w8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0 +OjpJdGVyPFQ+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4 +dDo6aDIyMjg3NmU4ODBkODQ1OGH+N1lzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29u +dGVudFJlZkRlc2VyaWFsaXplcjxFPjo6aW52YWxpZF90eXBlOjpoZmIwYzUzMGUxNjk3OWQ2Y/83 +TWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cm9vbTo6RW5jcnlwdGVkRmls +ZT46OmhmZWU0MTExYmZhMGJhNTBhgDgzc2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlOjphc19zdHI6 +Omg0M2E0MmUzZTY0YzA4MTdmgThXc2VyZGVfanNvbjo6dmFsdWU6OmRlOjo8aW1wbCBzZXJkZV9q +c29uOjp2YWx1ZTo6VmFsdWU+OjppbnZhbGlkX3R5cGU6OmhhMTcwNDVjY2MyNWM0YzExgjgzYnl0 +ZXM6OmJ5dGVzX211dDo6cmVsZWFzZV9zaGFyZWQ6Omg1Y2M2N2JmMjUwNjAzYjc4gzg6d2FzbV9i +aW5kZ2VuOjpfX3J0Ojp0YWtlX2xhc3RfZXhjZXB0aW9uOjpoMjk5ZTdkYWQ5MTRiNDQzNoQ4TmNv +cmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgaTMyPjo6Zm10 +OjpoYzlkNGFhOWY3MDZiMDFjMYU4ZTxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMg +Y29yZTo6c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleF9tdXQ6OmgwNGM1ODgy +N2I2NmVjYmRihjhlPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdlPHVzaXplPiBhcyBjb3JlOjpzbGlj +ZTo6aW5kZXg6OlNsaWNlSW5kZXg8W1RdPj46OmluZGV4X211dDo6aDI1YjY2ZWIxZDc4NjZkMTGH +OGU8Y29yZTo6b3BzOjpyYW5nZTo6UmFuZ2U8dXNpemU+IGFzIGNvcmU6OnNsaWNlOjppbmRleDo6 +U2xpY2VJbmRleDxbVF0+Pjo6aW5kZXhfbXV0OjpoNmIxMTk2YzZiODMxNWNiN4g4QWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1vdmVfdG9fc2xpY2U6OmgwMmUxZTRlOGE5ODI0ZWQ3 +iThBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bW92ZV90b19zbGljZTo6aDA0YWE5 +MTk3OGI5MzZkNzKKOEFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptb3ZlX3RvX3Ns +aWNlOjpoMGFjMDU0NGI0YTIwNTFiZYs4QWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1vdmVfdG9fc2xpY2U6OmgxOTBjOThlMWY2YzhjMDMwjDhBYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6bW92ZV90b19zbGljZTo6aDE5N2VjZWZkYjgyYWQ2ZDSNOEFhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptb3ZlX3RvX3NsaWNlOjpoNmY1MzQ3NDdhNmI2ZDNmZY44 +QWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1vdmVfdG9fc2xpY2U6Omg5ODdiMTkx +MDIwNzhkMTYyjzhBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bW92ZV90b19zbGlj +ZTo6aGE0NGEzYjBiMWIzOGY5N2WQOGxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0 +aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OkZvcm1hdHRlZEJvZHk+Pjo6 +aGJlZDIzNDFmODZhYTg1MzORODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDE4 +MWM0MDkyNmQxMThkZjCSODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDQ3NjJh +MjlkMTYyMzQ0YziTODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDUwMTRlMGRl +ZmU1MzJjYjWUODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDUzNjYxNjRmMmI3 +M2JmMzKVODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDZjMGMyNzNjYTgyZGFk +OGWWODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDcxOWEwN2I5MDQ1NDcwNGKX +ODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDdhMjIyMDc4ZDQ3YWZkZmWYODNz +ZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDdjYzhhNDBiMTg0MTUyYzKZODNzZXJk +ZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDdmODE3YmQxNWMwODE2ZDWaODNzZXJkZTo6 +ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDhiNWZjY2IxNGUzMGQ2ZGGbODNzZXJkZTo6ZGU6 +Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6aDkwN2E5YTk2YmVmNTQxMTScODNzZXJkZTo6ZGU6Ok1h +cEFjY2Vzczo6bmV4dF92YWx1ZTo6aDllMTRmYmEyNDc0ZTc3ZDmdODNzZXJkZTo6ZGU6Ok1hcEFj +Y2Vzczo6bmV4dF92YWx1ZTo6aGJjNjg1OGM3NTYxODczZTaeODNzZXJkZTo6ZGU6Ok1hcEFjY2Vz +czo6bmV4dF92YWx1ZTo6aGMxMTMzYTdlYWFmMjNkMTWfODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6 +bmV4dF92YWx1ZTo6aGM3NWU1MGE1MWEyNTg1YzmgODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4 +dF92YWx1ZTo6aGQ0ZTgxMmUyOTU3ZDdhZGShODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92 +YWx1ZTo6aGUwNTQwNjljYmUyNTUzM2GiODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1 +ZTo6aGY3ZDE1NmZlYmRhZWI4NjmjODNzZXJkZTo6ZGU6Ok1hcEFjY2Vzczo6bmV4dF92YWx1ZTo6 +aGZiODUzMjkzYmU4NGYyOWSkOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJk +ZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDM2YzQ0OWNkOGY2NzlhMmGlOFo8 +c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5l +eHRfdmFsdWVfc2VlZDo6aGE5OWRkYzQ2MGQ0NjAxMjimOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFj +Y2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGMxOTc4 +ZGJlYTRkYzUxNzenOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6 +Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGNjNWRlOTVlNzAzZjQxMzmoOFo8c2VyZGVf +anNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFs +dWVfc2VlZDo6aGYwY2FlMGFhYzc1ZjliMzOpOH9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjpTeW5jZWRLZXlRdWVyeU1hbmFnZXI6Om1hcmtfdXNlcl9h +c19jaGFuZ2VkOjp7e2Nsb3N1cmV9fT46OmgyMmE5ZmE0ZmViNjJiNzg3qjgxY29yZTo6b3B0aW9u +OjpPcHRpb248VD46Om9rX29yOjpoYzZmMzdkOTkyYWRiMGJmNqs4dmNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6d2FpdF9pZl91 +c2VyX3BlbmRpbmc6Ont7Y2xvc3VyZX19Pjo6aGI3ZTIwYTNjNWM2ODA5NjKsOIQBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpn +ZXRfaW5ib3VuZF9ncm91cF9zZXNzaW9uX29yX2Vycm9yOjp7e2Nsb3N1cmV9fT46OmgzNDZlZmYy +ZDc3ODBkYzhjrThtY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6U3RvcmVUcmFuc2FjdGlvbjo6YWNjb3VudDo6e3tjbG9zdXJlfX0+OjpoNmEwZmY4Mjg3 +MzQyZjI3Zq44f2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFj +aGluZTo6T2xtTWFjaGluZTo6Z2V0X3VzZXJfZGV2aWNlczo6e3tjbG9zdXJlfX06Ont7Y2xvc3Vy +ZX19Pjo6aGY3NDVlY2IwMTM0YzQ0YzmvOHxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4 +X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGluZTo6bWFya19hc19k +b25lOjp7e2Nsb3N1cmV9fT46OmgxYTU3ZWE2OTY3YTI3MDk3sDhmY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPHJ1bWFfZXZlbnRzOjpjYWxsOjpjYW5kaWRhdGVzOjpDYWxsQ2FuZGlkYXRlc0V2ZW50 +Q29udGVudD46Omg3YmE5NDJmNzU4OTc2NzYxsThKY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRv +a2lvOjpzeW5jOjpub3RpZnk6Ok5vdGlmaWVkPjo6aGE2NTJmYWNmYWRjY2RiMmWyOJABY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5hZ2Vy +OjpJZGVudGl0eU1hbmFnZXI6OmhhbmRsZV9kZXZpY2VzX2Zyb21fa2V5X3F1ZXJ5Ojp7e2Nsb3N1 +cmV9fT46Omg0YjkzYjVlYTY0ZGYwZGYzszh5Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpoYW5kbGVfa2V5Ojp7e2Nsb3N1cmV9 +fTo6e3tjbG9zdXJlfX0+OjpoNmI0M2U2ZjY4ZWIyMTEwYbQ4eGNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6d2FpdF9pZl91c2Vy +X3BlbmRpbmc6Ont7Y2xvc3VyZX19Pjo6aGI3ZTIwYTNjNWM2ODA5NjIuMbU4gQFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Omdl +dF91c2VyX2RldmljZXM6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhmNzQ1ZWNiMDEzNGM0 +NGM5LjG2ODo8VCBhcyBhbGxvYzo6Ym9ycm93OjpUb093bmVkPjo6dG9fb3duZWQ6Omg4YTA1MTZk +MmVjMmE1MDY3tzg6PFQgYXMgYWxsb2M6OmJvcnJvdzo6VG9Pd25lZD46OnRvX293bmVkOjpoYjMw +ZTAwZjk2NzBiYWY0M7g4bmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9w +dGlvbjxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6Rm9ybWF0dGVkQm9keT4+OjpoYmVkMjM0 +MWY4NmFhODUzMy41uTiAATxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpiYWNrdXA6OkJhY2t1cERl +Y3J5cHRpb25LZXkgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkZyb21XYXNtQWJp +Pjo6ZnJvbV9hYmk6Omg4MzhlNmJkNTNhNTM3MjYxujgeX193YmdfYmFja3VwZGVjcnlwdGlvbmtl +eV9mcmVluzgUX193YmdfbWlncmF0aW9uX2ZyZWW8ODVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+ +OjptYXBfZXJyOjpoZjc4NWU4NTM0MGU1NDYyN704xwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6b3B0aW9uOjpP +cHRpb248bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpSb29tU2V0dGluZ3M+LG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+Pj46OmgzMDI3YTc4ZWVhNDM1 +NDFjvjhKY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjpKc29uV2Vi +S2V5Pjo6aDY5ZjJkMjgxNDUyYzU1Y2W/OIsBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRva2lv +OjpzeW5jOjpyd2xvY2s6OlJ3TG9jazx2b2RvemVtYWM6Om1lZ29sbTo6Z3JvdXBfc2Vzc2lvbjo6 +R3JvdXBTZXNzaW9uPjo6cmVhZDo6e3tjbG9zdXJlfX0+OjpoNzU2YzY3NzVlZWUyZjE2NMA4VWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpTZWNy +ZXRJbmZvPjo6aGI3ZmU4YmEwNzE5OWE2ZTnBODZhbGxvYzo6YWxsb2M6Okdsb2JhbDo6YWxsb2Nf +aW1wbDo6aDQ4NDVjN2IwYzlkODUyNGUuMTnCOKwDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGlu +ZGV4ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6bWFwOjpNYXBGdXR1cmU8aW5kZXhl +ZF9kYl9mdXR1cmVzOjpyZXF1ZXN0OjpmdXR1cmVzOjppZGJfb3Blbl9kYl9yZXF1ZXN0X2Z1dHVy +ZTo6SWRiT3BlbkRiUmVxdWVzdEZ1dHVyZSxmbihjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpv +cHRpb246Ok9wdGlvbjx3YXNtX2JpbmRnZW46OkpzVmFsdWU+LHdlYl9zeXM6OmZlYXR1cmVzOjpn +ZW5fRG9tRXhjZXB0aW9uOjpEb21FeGNlcHRpb24+KSAuPiBjb3JlOjpyZXN1bHQ6OlJlc3VsdDxp +bmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9kYXRhYmFzZTo6SWRiRGF0YWJhc2Usd2ViX3N5czo6ZmVh +dHVyZXM6Omdlbl9Eb21FeGNlcHRpb246OkRvbUV4Y2VwdGlvbj4+Pjo6aGQ0NmQzNDYwN2FmM2Rl +YmLDOHFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6c3Rv +cmU6OlN0b3JlSGFuZGxlOjpvcGVuX2Zvcl9qczo6e3tjbG9zdXJlfX0+OjpoM2JhZjE3ZjI1OTU3 +OTAzYsQ4UWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZV9qc29uOjp2YWx1ZTo6c2VyOjpT +ZXJpYWxpemVNYXA+OjpoNmQzYzViY2NkMGM0Y2QwM8U4ZTxoYXNoYnJvd246OnJhdzo6UmF3SW50 +b0l0ZXI8VCxBPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5l +eHQ6Omg4ZWJhNGIxMjlkZWFiYTQxxjhhPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdlPHVzaXplPiBh +cyBjb3JlOjpzbGljZTo6aW5kZXg6OlNsaWNlSW5kZXg8W1RdPj46OmluZGV4OjpoMDk1YWVmODEx +ZDlkZDg4Zsc4YzxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6VXNlcklkZW50 +aXR5IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoYWJiMmY1OTE2ZmE3NjRkMcg4Yzxj +b3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6c2xpY2U6OmluZGV4OjpTbGlj +ZUluZGV4PFtUXT4+OjppbmRleDo6aDA5NWFlZjgxMWQ5ZGQ4OGYuMck4N2NvcmU6Om9wczo6ZnVu +Y3Rpb246OkZuTXV0OjpjYWxsX211dDo6aGVlZTFiMzBhODQ4ZDIxMGHKOFNjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8c2VyZGVfanNvbjo6dmFsdWU6OnNlcjo6U2VyaWFsaXplTWFwPjo6aDZkM2M1 +YmNjZDBjNGNkMDMuMcs4b2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OlN0b3JlVHJhbnNhY3Rpb246OmFjY291bnQ6Ont7Y2xvc3VyZX19Pjo6aDZhMGZm +ODI4NzM0MmYyN2YuNMw4YGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6dHlwZXM6OmJhY2t1cDo6Um9vbUtleUJhY2t1cEluZm8+OjpoYTRiM2JmZmYzYTE5YTUwYs04 ++wFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjpTdG9yZTo6ZXhwb3J0X3Jvb21fa2V5c19zdHJlYW08bWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZXhwb3J0X3Jvb21fa2V5czo6e3tj +bG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fT4+OjpoMjczMDU3ZmY5MTQwYTFkNM44gQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjpTeW5jZWRLZXlRdWVyeU1hbmFnZXI6Om1hcmtfdXNlcl9h +c19jaGFuZ2VkOjp7e2Nsb3N1cmV9fT46OmgyMmE5ZmE0ZmViNjJiNzg3LjXPOHhjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6Ondh +aXRfaWZfdXNlcl9wZW5kaW5nOjp7e2Nsb3N1cmV9fT46OmhiN2UyMGEzYzVjNjgwOTYyLjPQOFo8 +c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5l +eHRfdmFsdWVfc2VlZDo6aDAzOWQ5MjhhODZkZTUwMWXROFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFj +Y2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDAzYTYx +ZjU5ODZhMWU0YjbSOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6 +Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDA5MzZhOGE4N2ExMGE1MTPTOFo8c2VyZGVf +anNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFs +dWVfc2VlZDo6aDExMDQ2NjRiZjE5MDYwZjjUOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxS +PiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDFjODM2YzI0ODc0 +OWI0ZmPVOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFj +Y2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDM2NzJmYThlOGVhNjhhMTHWOFo8c2VyZGVfanNvbjo6 +ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2Vl +ZDo6aDM4ZjBlNjM0ZDdkYmEwOTDXOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBz +ZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDM5MzBhODYzNDkwMzhhMDnY +OFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46 +Om5leHRfdmFsdWVfc2VlZDo6aDNkOGRiNjY3NWVlNzcwMjjZOFo8c2VyZGVfanNvbjo6ZGU6Ok1h +cEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDRk +OWY0OGE0NDAwNzY3MjjaOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6 +ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDczYzk0Mzg3NjA5YWVjYTTbOFo8c2Vy +ZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRf +dmFsdWVfc2VlZDo6aDdmMjYyN2UwYzg3ZmVkNTTcOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2Vz +czxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDgyZGU3ZjY0 +YjIzOGIyMjfdOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1h +cEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDk4NzYyZGIzNTUzMThiZDTeOFo8c2VyZGVfanNv +bjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVf +c2VlZDo6aGEyZDVmYTUyYTc3ZDgxODPfOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBh +cyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGI1MmNkMDMwNzdkNWE0 +MjDgOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vz +cz46Om5leHRfdmFsdWVfc2VlZDo6aGJkZGI5ODJlOTc2YTBlMDXhOFo8c2VyZGVfanNvbjo6ZGU6 +Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6 +aGMxZjhmZmIxZDAwOTliZjniOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJk +ZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGU4YTczMDVhYmVkMmM5OWbjOLkB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0 +b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZSBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRy +YWl0czo6Q3J5cHRvU3RvcmU+OjpzYXZlX3RyYWNrZWRfdXNlcnM6Ont7Y2xvc3VyZX19Pjo6aDRl +ZWQ4YzY5ZGJkZGU2MzHkOGU8Y29yZTo6b3BzOjpyYW5nZTo6UmFuZ2U8dXNpemU+IGFzIGNvcmU6 +OnNsaWNlOjppbmRleDo6U2xpY2VJbmRleDxbVF0+Pjo6aW5kZXhfbXV0OjpoMDRhZmJlMjEyOTZl +MmZkZOU4ZTxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6c2xpY2U6Omlu +ZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleF9tdXQ6Omg0NTZhMjM1ZjU0M2U1OTcz5jh4c2Vy +ZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29yZTo6dGlt +ZTo6RHVyYXRpb24+OjpkZXNlcmlhbGl6ZTo6Y2hlY2tfb3ZlcmZsb3c6Omg0YjY1NzAyZjQ4Mzgz +Yzg25zg1c3RkOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxUPjo6cmVhZDo6aDhjZDI0MGRiMThjZWUy +ZGXoOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vz +cz46Om5leHRfdmFsdWVfc2VlZDo6aDdjODE1OWI5YTcyMjQ3M2LpOFo8c2VyZGVfanNvbjo6ZGU6 +Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6 +aDlmODdiYzQ5YTAzYmRmYjnqOFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJk +ZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGM0NThhNDAwM2NiZjk2NTDrOMAB +PG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3IgbWF0cml4X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpDaXBoZXJUZXh0SW5mbz46OmRl +c2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9z +dHI6OmgyMDMyNzVhZWFhOTQxMTgz7DhlPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdlPHVzaXplPiBh +cyBjb3JlOjpzbGljZTo6aW5kZXg6OlNsaWNlSW5kZXg8W1RdPj46OmluZGV4X211dDo6aDAxN2Y0 +Y2FkNzMzNzQyNTDtOGU8Y29yZTo6b3BzOjpyYW5nZTo6UmFuZ2U8dXNpemU+IGFzIGNvcmU6OnNs +aWNlOjppbmRleDo6U2xpY2VJbmRleDxbVF0+Pjo6aW5kZXhfbXV0OjpoMGY0NWJjYWViMTYyMzY2 +M+44QWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1vdmVfdG9fc2xpY2U6OmgwN2Vi +ODA5MTZiMWVmYTc17zhBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bW92ZV90b19z +bGljZTo6aDA4NWE1ZTdiN2NiYzg1YTHwOEFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +Ojptb3ZlX3RvX3NsaWNlOjpoMjI0NDYzYmQ2YzE0ODZjMfE4QWFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1vdmVfdG9fc2xpY2U6OmgyYzk5NDk1OWExYTFkYzA48jhBYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bW92ZV90b19zbGljZTo6aDMyNjMzNjQwNWY3YjdmMzLz +OEFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptb3ZlX3RvX3NsaWNlOjpoNTM5OGY2 +YTc4MTEzZmZlNvQ4QWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1vdmVfdG9fc2xp +Y2U6Omg3NjEzM2U3NTMxYTNhZDZm9ThBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bW92ZV90b19zbGljZTo6aDc4Yjk4N2YyYzZhMjdiMjj2OEFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptb3ZlX3RvX3NsaWNlOjpoN2UzYWIzNTgxYmNmZTc3Zfc4QWFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1vdmVfdG9fc2xpY2U6OmhjYTAzZTBhOGJjMDNiN2U3+DhB +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bW92ZV90b19zbGljZTo6aGRlNWFhY2Y5 +MTI4MzdhZjD5OGpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZl +cmlmaWNhdGlvbjo6ZXZlbnRfZW51bXM6Ok91dGdvaW5nQ29udGVudD46OmgwNWQ4MjYwODExNGVj +ZjA1+jhEY29yZTo6dHVwbGU6OjxpbXBsIGNvcmU6OmNtcDo6T3JkIGZvciAoVSxUKT46OmNtcDo6 +aDQ2ZWViZWQ3ZTM1ZDkzZmX7OGNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6 +OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OkFjY2VwdE1ldGhvZD46Omg4N2I4NmJkODZkNDgy +ZWFkLjP8OEhtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb246OmNh +bmNlbDo6aDVhMDY0ODVjMWRkZTYyZWH9OFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBh +cyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDEzNjY3NzI4YTNiOTFi +Njb+OFo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vz +cz46Om5leHRfdmFsdWVfc2VlZDo6aGQ5ODJkMzQzYzlkNjYzMGP/OFo8c2VyZGVfanNvbjo6ZGU6 +Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6 +aGRhMzY0YmE2ZjIxMjg0YziAOVo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJk +ZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGRlMjJiMDcyYzQwY2Q0YWWBOVo8 +c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5l +eHRfdmFsdWVfc2VlZDo6aGUzN2RmODYyY2M1ZTE4YjaCOVo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFj +Y2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGVlZWQ0 +MGJkZmE5MWYwZTGDOTlxcmNvZGU6OmNhbnZhczo6bWFza19mdW5jdGlvbnM6OmZpZWxkczo6aDQw +ZGIyNTE3MDFlOWQxYjWEOdYBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxl +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbW11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6S1Y+OjppbnRvX2t2OjpoYmU3YjE0ZmY3Njlk +NzVjZIU5WjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNj +ZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoMGFlZDAzNWQwZWI5Zjc0OYY5WjxzZXJkZV9qc29uOjpk +ZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVk +OjpoMTVlZGIyNGFhZWI4NTg0NYc5WjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNl +cmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoM2MyNzNiZjc1MDk2YmRkZog5 +WjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6 +bmV4dF92YWx1ZV9zZWVkOjpoODUwMDM4YmY5ODQ2ZWEyN4k5WjxzZXJkZV9qc29uOjpkZTo6TWFw +QWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoOGMz +YWNkNTljMmYzOGUxYoo5WjxzZXJkZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpk +ZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoYjk4ZTQwNWJkMzViYTRhZIs5WjxzZXJk +ZV9qc29uOjpkZTo6TWFwQWNjZXNzPFI+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92 +YWx1ZV9zZWVkOjpoYmY5Yjc1NGQ0ZGM1MmViZIw5ZTxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1 +c2l6ZT4gYXMgY29yZTo6c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleF9tdXQ6 +OmgwNTA1YjU0ZmQ0YzMzNGY2jTllPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdlPHVzaXplPiBhcyBj +b3JlOjpzbGljZTo6aW5kZXg6OlNsaWNlSW5kZXg8W1RdPj46OmluZGV4X211dDo6aDgxYmRkNjU3 +Y2E4YmUwZjOOOUFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptb3ZlX3RvX3NsaWNl +OjpoMGY0MTJhZDQxYzRlNjgyOI85QWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1v +dmVfdG9fc2xpY2U6OmgzOTJjYmYxZTQ1MjBhNGNikDlBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bW92ZV90b19zbGljZTo6aGZjMWRlMTVkMmQ0YTkxMziROUhjb3JlOjpvcHM6OmZ1 +bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDA5NWJlMGJkYWNmZTAw +MDKSOUFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptb3ZlX3RvX3NsaWNlOjpoYjEy +ZmE2OWE3NjljY2ExYpM5ZTxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6 +c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleF9tdXQ6OmgzY2JhZjVhYzhlNTc1 +NGQ4lDllPGNvcmU6Om9wczo6cmFuZ2U6OlJhbmdlPHVzaXplPiBhcyBjb3JlOjpzbGljZTo6aW5k +ZXg6OlNsaWNlSW5kZXg8W1RdPj46OmluZGV4X211dDo6aDU0OGNkMTdlZTc1MGU5ZjaVOUFhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptb3ZlX3RvX3NsaWNlOjpoMDNjZDc2YzZlYzVi +NWEwM5Y5QWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1vdmVfdG9fc2xpY2U6Omg5 +ZmYyMTI5ZTk2NWI1YzExlzlaPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6 +OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmgyMDdmYmMwMDM3ZjgxNWVlmDlaPHNl +cmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0 +X3ZhbHVlX3NlZWQ6OmgyOWU2YjZhYzJiZmY4ZWIxmTlaPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nl +c3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmgzN2E4ODVk +MTVjMDFkZjBimjlaPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpN +YXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6Omg1NGFkYzIwOGM5ZGU0NTJmmzlaPHNlcmRlX2pz +b246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVl +X3NlZWQ6Omg1NTZiN2RiODI4NzQ2MjBinDlaPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4g +YXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6Omg2MDllN2M2ZTdiOTM3 +N2I1nTlaPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nl +c3M+OjpuZXh0X3ZhbHVlX3NlZWQ6Omg5YTJlNTA2NWU4YmI1MGQwnjlaPHNlcmRlX2pzb246OmRl +OjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6 +Omg5YzQ4ZWJmZTNkM2IyMzhinzlaPHNlcmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2Vy +ZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmhiZGRiNmJkYmViOWQwZjNmoDlJ +PCZzdHIgYXMgY29yZTo6c3RyOjpwYXR0ZXJuOjpQYXR0ZXJuPjo6c3RyaXBfc3VmZml4X29mOjpo +NjRjNWU2ODRlMGFjZTU5OKE5QXJ1bWFfaWRlbnRpZmllcnNfdmFsaWRhdGlvbjo6cm9vbV9pZDo6 +dmFsaWRhdGU6OmhlYTVlMWU4ZmIwZmI1MWQ3ojlBdHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6cmVi +dWlsZF9pbnRlcmVzdF9jYWNoZTo6aDgzNjE2ZGViODE4NTBkN2KjOUFhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjptb3ZlX3RvX3NsaWNlOjpoNmY4Y2EzOTdjZDUzNmViOKQ5QWFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1vdmVfdG9fc2xpY2U6Omg5N2RkNTFlMjY0MTBh +NDQwpTlBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bW92ZV90b19zbGljZTo6aGZk +OWI0NjU2ZTk0ZjhiOTamOVo8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6 +ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDEyZDJjMWE3OWM0OWJjY2WnOTFzZXJk +ZV9qc29uOjpyZWFkOjpTdHJSZWFkOjpuZXc6Omg0ZjgzMTFhYTAxMTAwYzM0qDk+cnl1OjpkMnNf +aW50cmluc2ljczo6bXVsdGlwbGVfb2ZfcG93ZXJfb2ZfNTo6aGJjNTYzNGE3MzdkOTI5N2GpOckB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5 +cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpldmVudHM6OmZvcndhcmRlZF9yb29tX2tleTo6Rm9yd2FyZGVkUm9vbUtl +eUNvbnRlbnQ+Pj46OmgyMDBjNmYyNjdmNmY4YmFjqjl7Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpyb29tOjpoaXN0b3J5X3Zpc2liaWxp +dHk6Okhpc3RvcnlWaXNpYmlsaXR5Pj46OmgzYzhlNjJiNGE5ODFjZGZhqzkzYWxsb2M6OmFsbG9j +OjpleGNoYW5nZV9tYWxsb2M6Omg4M2RkMzQwMzZlYzkxOWMxLjEzrDlTY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lPjo6aDY3NmU1 +ZDUwMWI2NTc1ZjmtOX9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5bmM6OkFyYzxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6OmNvbW1vbjo6Q3Jvc3NTaWdu +aW5nS2V5Pj46OmgwNzdmNzA1MTY4MjQ5NmM4rjlMY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU+OjpoYzhkMTYzZGM5MjI0OTE0ZK85kwFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5bmM6OkFyYzx0b2tpbzo6c3luYzo6bXV0ZXg6 +Ok11dGV4PGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpT +ZXNzaW9uPj4+Pjo6aDIwOTkyODFlOThiNTg5N2SwOXNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM6Om1hcmtfYXNfZG9uZTo6 +e3tjbG9zdXJlfX0+OjpoNzNkYzkwM2ExOWE2ZDcxNi4ysTmAAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxhbGxvYzo6c3luYzo6QXJjPHRva2lvOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxtYXRyaXhf +c2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlQ2FjaGU+Pj46OmhlOTAzMWUwYTNlYzQ0ZGY2sjloY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpiYWNrdXBzOjprZXlzOjpi +YWNrdXA6Ok1lZ29sbVYxQmFja3VwS2V5Pjo6aDAwYmIzN2RiMDkyNzJiNTizOV1jb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5bmM6OkFyYzxjb3JlOjpzeW5jOjphdG9taWM6OkF0b21p +Y0Jvb2w+Pjo6aGM5YzYwYzAwNjI2MzJkZjW0OVFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0 +dXJlc191dGlsOjphYm9ydGFibGU6OkFib3J0SGFuZGxlPjo6aDY3ZTA4MGZkNjIwZDQxY2O1OWxj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19j +cnlwdG86OmJhY2t1cHM6OlBlbmRpbmdCYWNrdXA+Pjo6aGJiYjNmNTcyMmE3YmFiMTG2OZABY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Np +b25zOjpvdXRib3VuZDo6T3V0Ym91bmRHcm91cFNlc3Npb246OmVuY3J5cHRfaGVscGVyOjp7e2Ns +b3N1cmV9fT46OmgyMDZmNTkwMDVmNmM4YzJitzmBAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxh +bGxvYzo6c3luYzo6QXJjPHN0ZDo6c3luYzo6bXV0ZXg6Ok11dGV4PGNvcmU6Om9wdGlvbjo6T3B0 +aW9uPHZvZG96ZW1hYzo6c2FzOjpTYXM+Pj4+OjpoZDM1NjYwMzk0OWY3OWUyNbg5VWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPGluc3RhbnQ6Ondhc206Okluc3RhbnQ+ +Pjo6aDQyZTI5M2ZjYmQwNzRkODG5OWZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5 +bmM6OkFyYzxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpGbG93SWQ+Pjo6aDhjOGFj +OWYzOWQwNjU1NWG6OXBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5bmM6OkFyYzxt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNhY2hlczo6S2V5c1F1ZXJ5V2FpdGVyPj46Omg3M2U2 +Y2U0MTk1YTIxNmJmuzl2Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzeW5jOjpBcmM8 +W21hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlXT4+ +OjpoYjFiMzlkYmMyZjYwOWNlNbw5fGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3lu +Yzo6QXJjPFttYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2Vy +SWRlbnRpdGllc10+Pjo6aDViMDNlZWIyYjRkNWE1Nma9OZYBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGFsbG9jOjpzeW5jOjpBcmM8dG9raW86OnN5bmM6Om11dGV4OjpNdXRleDxtYXRyaXhfc2Rr +X2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWduaW5nSWRlbnRpdHk+Pj46Omhi +Zjc4ZjY2YzgzMzY4OGE1vjlmY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246OmNhY2hlOjpWZXJpZmljYXRpb25DYWNoZT46OmhhNGVjZmVlMjIy +YmE0NzdlvzlCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzeW5jOjpBcmM8c3RyPj46 +Omg2NGEwNWY2NTRmNjI4MDFjwDmMAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjpoYW5kbGVfY3Jv +c3Nfc2lnbmluZ19rZXlzOjp7e2Nsb3N1cmV9fT46Omg3ODAzNjJiYTAxM2NmZDc3wTlTbWF0cml4 +X3Nka19jcnlwdG86Om9sbTo6c2Vzc2lvbjo6U2Vzc2lvbjo6YWxnb3JpdGhtOjp7e2Nsb3N1cmV9 +fTo6aGY0OTg2NjRlODA5NzA1NjHCOTNhbGxvYzo6YWxsb2M6OmV4Y2hhbmdlX21hbGxvYzo6aDgz +ZGQzNDAzNmVjOTE5YzEuMTTDOW9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpldmVudHM6OnNlY3JldF9zZW5kOjpTZWNyZXRTZW5kQ29udGVudD46Omhk +NGFjMjA0NWY4MDgwMzMyLjXEOXNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM6Om1hcmtfYXNfZG9uZTo6e3tjbG9zdXJlfX0+ +OjpoNzNkYzkwM2ExOWE2ZDcxNi4zxTlfY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6Ok9sbURlY3J5cHRpb25JbmZvPjo6aGQ3ZWQ0YzhlYWFh +ZTllOTnGOVVtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uOjphbGdvcml0 +aG06Ont7Y2xvc3VyZX19OjpoZjQ5ODY2NGU4MDk3MDU2MS4xxzlhY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6Ok9sbURlY3J5cHRpb25JbmZv +Pjo6aGQ3ZWQ0YzhlYWFhZTllOTkuMcg5qgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6 +OnN5bmM6OkFyYzxkeW4gbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0 +b3JlK0Vycm9yID0gbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVF +cnJvcj4+OjpoYTdiZGIzZGY5MjFjYjQ1Nck5ImNvcmU6Om1lbTo6ZHJvcDo6aDFkNzc3YWJlNmUx +MzliMGPKOSJjb3JlOjptZW06OmRyb3A6OmgxMmU4ZGQwMjZkMDgzZmE5yzkiY29yZTo6bWVtOjpk +cm9wOjpoZTE0MTk0NGYzYWZkMWVjOMw5ImNvcmU6Om1lbTo6ZHJvcDo6aGI0OGIyYTdmMzIxZDcx +MTHNOSJjb3JlOjptZW06OmRyb3A6OmhhMzQyYTNkMWIyODY5ODNhzjnOAmNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVz +X3Vub3JkZXJlZDo6dGFzazo6VGFzazxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJlc19vcmRl +cmVkOjpPcmRlcldyYXBwZXI8bWF0cml4X3Nka19jb21tb246OmV4ZWN1dG9yOjpKb2luSGFuZGxl +PGNvcmU6OnJlc3VsdDo6UmVzdWx0PG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5h +Z2VyOjpEZXZpY2VDaGFuZ2UsbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRv +U3RvcmVFcnJvcj4+Pj4+Pjo6aGNhNWE5MjU5MmU3ZTRkOWbPOcECY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPGFsbG9jOjpzeW5jOjpBcmM8ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfdW5v +cmRlcmVkOjp0YXNrOjpUYXNrPGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX29yZGVyZWQ6 +Ok9yZGVyV3JhcHBlcjxtYXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5kbGU8Y29y +ZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpEZXZpY2VDaGFuZ2Vz +LG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+Pj4+Pj46 +Omg0NjVmYjQwYzE5YjRkZjk20DnRA2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3lu +Yzo6QXJjPGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6dGFzazo6VGFz +azxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJlc19vcmRlcmVkOjpPcmRlcldyYXBwZXI8bWF0 +cml4X3Nka19jb21tb246OmV4ZWN1dG9yOjpKb2luSGFuZGxlPGNvcmU6OnJlc3VsdDo6UmVzdWx0 +PChhbGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2Vzc2lvbjo6U2Vzc2lv +bj4sYWxsb2M6OnZlYzo6VmVjPChtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNl +OjpSZWFkT25seURldmljZSxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9r +ZXlfd2l0aGhlbGQ6OldpdGhoZWxkQ29kZSk+KSxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok9s +bUVycm9yPj4+Pj4+OjpoNDZkMGY3OWI1OWZiNzdiMdE5iAJjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8YWxsb2M6OnN5bmM6OkFyYzxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJlc191bm9yZGVy +ZWQ6OnRhc2s6OlRhc2s8ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfb3JkZXJlZDo6T3Jk +ZXJXcmFwcGVyPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5hZ2VyOjpJZGVudGl0 +eU1hbmFnZXI6OmdldF91cGRhdGVkX2tleXNfZm9yX3VzZXI6Ont7Y2xvc3VyZX19Pj4+Pjo6aDgx +MzhjYTZhZmRmYzlhNTnSOYIDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzeW5jOjpB +cmM8ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfdW5vcmRlcmVkOjp0YXNrOjpUYXNrPGZ1 +dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX29yZGVyZWQ6Ok9yZGVyV3JhcHBlcjxtYXRyaXhf +c2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5kbGU8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0 +cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vz +c2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3VyZX19OjpEZXZpY2VSZXN1 +bHQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4+Pj4+Pjo6aDk4ZjYzNGE5Mzlm +Y2MyMjfTOZ4CY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzeW5jOjpBcmM8ZnV0dXJl +c19jaGFubmVsOjpvbmVzaG90OjpJbm5lcjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpyZXN1 +bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkRldmljZUNoYW5nZXMsbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4sYWxsb2M6OmJveGVk +OjpCb3g8ZHluIGNvcmU6OmFueTo6QW55K2NvcmU6Om1hcmtlcjo6U2VuZD4+Pj4+OjpoMmM3NzI0 +YWZjYTQzODkwOdQ5rgNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5bmM6OkFyYzxm +dXR1cmVzX2NoYW5uZWw6Om9uZXNob3Q6OklubmVyPGNvcmU6OnJlc3VsdDo6UmVzdWx0PGNvcmU6 +OnJlc3VsdDo6UmVzdWx0PChhbGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6 +c2Vzc2lvbjo6U2Vzc2lvbj4sYWxsb2M6OnZlYzo6VmVjPChtYXRyaXhfc2RrX2NyeXB0bzo6aWRl +bnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZSxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6 +OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OldpdGhoZWxkQ29kZSk+KSxtYXRyaXhfc2RrX2Ny +eXB0bzo6ZXJyb3I6Ok9sbUVycm9yPixhbGxvYzo6Ym94ZWQ6OkJveDxkeW4gY29yZTo6YW55OjpB +bnkrY29yZTo6bWFya2VyOjpTZW5kPj4+Pj46Omg5MzJkNjUwNzcyNDhhYWI11TmrAmNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPGZ1dHVyZXNfY2hhbm5lbDo6b25lc2hv +dDo6SW5uZXI8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4 +X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OkRldmljZUNoYW5nZSxtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPixhbGxvYzo6Ym94ZWQ6OkJv +eDxkeW4gY29yZTo6YW55OjpBbnkrY29yZTo6bWFya2VyOjpTZW5kPj4+Pj46OmhkNWU3ZWMyZDA2 +NjYzZjZk1jnfAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPGZ1dHVy +ZXNfY2hhbm5lbDo6b25lc2hvdDo6SW5uZXI8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVz +dWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vz +c2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3Vy +ZX19OjpEZXZpY2VSZXN1bHQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4sYWxs +b2M6OmJveGVkOjpCb3g8ZHluIGNvcmU6OmFueTo6QW55K2NvcmU6Om1hcmtlcjo6U2VuZD4+Pj4+ +OjpoZjcwNDliYmRiYTMxNDNmNtc5ImNvcmU6Om1lbTo6ZHJvcDo6aDEzMjU3NzVkNzI0MDIwNTfY +OdAJY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpmbGF0dGVu +OjpGbGF0TWFwPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6SW50b0l0ZXI8cnVtYV9j +b21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCxhbGxvYzo6dmVjOjpWZWM8 +bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U+Pixj +b3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVyOjpGaWx0ZXI8YWxsb2M6OnZlYzo6aW50b19pdGVy +OjpJbnRvSXRlcjxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25s +eURldmljZT4sbWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lv +bnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OnNoYXJlX3Jvb21fa2V5PGNvcmU6Oml0ZXI6OmFkYXB0 +ZXJzOjptYXA6Ok1hcDxjb3JlOjpzbGljZTo6aXRlcjo6SXRlcjxydW1hX2NvbW1vbjo6aWRlbnRp +ZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkPiw8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1 +c2VyX2lkOjpPd25lZFVzZXJJZCBhcyBjb3JlOjpjb252ZXJ0OjpBc1JlZjxydW1hX2NvbW1vbjo6 +aWRlbnRpZmllcnM6OnVzZXJfaWQ6OlVzZXJJZD4+Ojphc19yZWY+LG1hdHJpeF9zZGtfY3J5cHRv +OjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6RW5jcnlwdGlvblNldHRpbmdzPjo6e3tj +bG9zdXJlfX06Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+LG1hdHJpeF9z +ZGtfY3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6Omdyb3VwX3Nlc3Npb25zOjpHcm91cFNlc3Npb25N +YW5hZ2VyOjpzaGFyZV9yb29tX2tleTxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8Y29y +ZTo6c2xpY2U6Oml0ZXI6Okl0ZXI8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpP +d25lZFVzZXJJZD4sPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2Vy +SWQgYXMgY29yZTo6Y29udmVydDo6QXNSZWY8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2Vy +X2lkOjpVc2VySWQ+Pjo6YXNfcmVmPixtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNz +aW9uczo6b3V0Ym91bmQ6OkVuY3J5cHRpb25TZXR0aW5ncz46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fTo6e3tjbG9zdXJlfX0+Pjo6aDM2NTJlOTNlMGM0MjMwYTbZOTFhbGxvYzo6cmF3X3ZlYzo6 +aGFuZGxlX3Jlc2VydmU6OmgxZWRhNjQwODFkMWEzYTAw2jmBAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxhbGxvYzo6c3luYzo6QXJjPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Y3J5cHRvX3N0 +b3JlX3dyYXBwZXI6OkNyeXB0b1N0b3JlV3JhcHBlcj4+OjpoMTMwZTFkY2ZmOTU4ODUxOds5fWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPHN0ZDo6c3luYzo6cndsb2Nr +OjpSd0xvY2s8dHJhY2luZ19jb3JlOjptZXRhZGF0YTo6TGV2ZWxGaWx0ZXI+Pj46OmhiZjg4MzE1 +NDliYzZiN2Uw3DmVAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NvbW1vbjo6 +ZmFpbHVyZXNfY2FjaGU6OkZhaWx1cmVzQ2FjaGU8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpz +ZXJ2ZXJfbmFtZTo6T3duZWRTZXJ2ZXJOYW1lPj46OmhiNjIzNTRiMDAyZTE0MmM23TlbY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Y2FjaGVzOjpTZXNz +aW9uU3RvcmU+OjpoMjgwYzJjNmRlNTZhNTc0M945lwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +dG9raW9fc3RyZWFtOjp3cmFwcGVyczo6YnJvYWRjYXN0OjptYWtlX2Z1dHVyZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBwZWRTZWNyZXQ+Ojp7e2Nsb3N1cmV9fT46OmhiNzQ2 +ODIzZjAxNzJiMTBl3zmgAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0b2tpb19zdHJlYW06Ondy +YXBwZXJzOjpicm9hZGNhc3Q6Om1ha2VfZnV0dXJlPGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OlJvb21LZXlJbmZvPj46Ont7Y2xvc3VyZX19Pjo6aDQxZjNlMDgzNGZh +ZjA5NGTgOY8CY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzeW5jOjpBcmM8c3RkOjpz +eW5jOjpyd2xvY2s6OlJ3TG9jazxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVl +TWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQsYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0OjpCVHJlZVNldDxydW1hX2NvbW1vbjo6aWRlbnRpZmll +cnM6OmRldmljZV9pZDo6T3duZWREZXZpY2VJZD4+Pj4+OjpoZGIyYmYxMGE4NjFkYWRmMuE5kAJj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dG9raW9fc3RyZWFtOjp3cmFwcGVyczo6YnJvYWRjYXN0 +OjptYWtlX2Z1dHVyZTwoY29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Omlk +ZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNlcklkZW50aXR5PixtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OklkZW50aXR5Q2hhbmdlcyxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkRldmlj +ZUNoYW5nZXMpPjo6e3tjbG9zdXJlfX0+OjpoOWJjMjAyOGFjZjA1ZTExNOI5VWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp0cmFjaW5nOjpUcmFjaW5nPjo6 +aDdiMWE5OWZkMzg3NWI5ZDjjOWFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86Omdvc3NpcGluZzo6bWFjaGluZTo6R29zc2lwTWFjaGluZT46OmhhMTA5Y2Q1NjljY2Rj +ZjQ55DlaY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPFttYXRyaXhfc2RrX2NyeXB0b193YXNtOjpp +ZGVudGlmaWVyczo6VXNlcklkXT46Omg2YmIxNDliOWY1NzU2NGYw5TlDaGFzaGJyb3duOjpyYXc6 +OlJhd1RhYmxlPFQsQT46OmZpbmQ6Ont7Y2xvc3VyZX19OjpoODZjNjE5Yjg1MzAzMTJkNOY5Xjxo +YXNoYnJvd246Om1hcDo6SXRlcjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6 +Okl0ZXJhdG9yPjo6bmV4dDo6aDQzZTQ5NjI4OWQxZTdlOTLnOV48aGFzaGJyb3duOjptYXA6Okl0 +ZXI8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6 +Omg4N2YxMTI1ZjM0OTcyYzBi6DmuAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3lu +Yzo6QXJjPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8ZXllYmFsbDo6c3RhdGU6Ok9ic2VydmFi +bGVTdGF0ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OklubmVyU3Rh +dGU+Pj4+OjpoZDNkMzgwMTU5MzY3ZmJjYek5tAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxs +b2M6OnN5bmM6OkFyYzxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrPGV5ZWJhbGw6OnN0YXRlOjpP +YnNlcnZhYmxlU3RhdGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjppbm5l +cl9zYXM6OklubmVyU2FzPj4+Pjo6aDRhNDU2YWZjY2U2NmE0MzTqObIBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGFsbG9jOjpzeW5jOjpBcmM8c3RkOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxleWVi +YWxsOjpzdGF0ZTo6T2JzZXJ2YWJsZVN0YXRlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnJlcXVlc3RzOjpJbm5lclJlcXVlc3Q+Pj4+OjpoNmQ2MjcxZGQ2NDM2YTJmZes5qAFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5bmM6OkFyYzx0b2tpbzo6c3luYzo6bXV0ZXg6 +Ok11dGV4PGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25p +bmc6OnBrX3NpZ25pbmc6OlVzZXJTaWduaW5nPj4+Pjo6aGM1NTQwODQwMDNhYzY1YzDsOVxjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248c3RkOjpiYWNrdHJhY2U6 +OkJhY2t0cmFjZT4+OjpoODFiNDBiOGM5MjY1MmZkYe05YmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZT46 +OmgyZjdkOWJhMzRjYTZmZjdj7jmDAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3lu +Yzo6QXJjPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6 +RW5jcnlwdGlvblNldHRpbmdzPj46Omg4NjYzNjIzNDNhYWIwMGQ27zlwY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGFsbG9jOjpzeW5jOjpBcmM8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZp +Y2Vfa2V5czo6RGV2aWNlS2V5cz4+OjpoM2ViOTM3YzU4OWZmZWFmY/A5a2NvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPG1hdHJpeF9zZGtfY3J5cHRvOjpyZXF1ZXN0czo6 +VG9EZXZpY2VSZXF1ZXN0Pj46OmhjODU2MjYyMjE3OWQ2MjU18TlePGhhc2hicm93bjo6bWFwOjpJ +dGVyPEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0 +OjpoODJmMDg0MjE0YmVlOGVjNfI5dWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRp +b246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OkV2ZW50RW5jcnlwdGlvbkFsZ29y +aXRobT4+OjpoMmM2YzI1MzMxYTI4NmRhY/M5XzxoYXNoYnJvd246OnJhdzo6UmF3SXRlcjxUPiBh +cyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhlMTk0MGQx +MDNmNzA5N2M59DlgY29yZTo6c2xpY2U6OmluZGV4Ojo8aW1wbCBjb3JlOjpvcHM6OmluZGV4OjpJ +bmRleE11dDxJPiBmb3IgW1RdPjo6aW5kZXhfbXV0OjpoN2IzMjc0ODU4Zjc4YTc3MS4x9TlPY29y +ZTo6aXRlcjo6YWRhcHRlcnM6OnppcDo6VHJ1c3RlZFJhbmRvbUFjY2Vzc05vQ29lcmNlOjpzaXpl +OjpoZDJjZTBkNGQzMWQ2OGFlYvY5M2FsbG9jOjphbGxvYzo6ZXhjaGFuZ2VfbWFsbG9jOjpoODNk +ZDM0MDM2ZWM5MTljMS4yMPc5WDxhbGxvYzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPFQsQT4g +YXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDJiNDBlNGU2YzA4NDVkNmH4OVg8YWxs +b2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6Omg3MmM5OGJhYzRiNTczMGFi+TlrY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFs +bG9jOjpzeW5jOjpBcmM8bWF0cml4X3Nka19xcmNvZGU6OnR5cGVzOjpRclZlcmlmaWNhdGlvbkRh +dGE+Pjo6aGUwNTNhY2IzNDhmMTcwZjX6OXZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6 +OnN5bmM6OkFyYzxzdGQ6OnN5bmM6Om11dGV4OjpNdXRleDx2b2RvemVtYWM6OnNhczo6RXN0YWJs +aXNoZWRTYXM+Pj46OmgwYjcxMmQ3ZWE2OGYxZWM1+zl+Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGFsbG9jOjpzeW5jOjpBcmM8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6ZXZlbnRf +ZW51bXM6Ok93bmVkU3RhcnRDb250ZW50Pj46Omg0ZDQ4ZTBhMDg4MDFkNjFm/DltbWF0cml4X3Nk +a19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpSb29tS2V5V2l0aGhl +bGRDb250ZW50Ojp3aXRoaGVsZF9jb2RlOjpoZTEwYWE2M2NlY2E5Mjc3Zv05XzxoYXNoYnJvd246 +OnJhdzo6UmF3SXRlcjxUPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRv +cj46Om5leHQ6OmgxYzNiNzZmZWZlN2VkOTc0/jlfPGhhc2hicm93bjo6cmF3OjpSYXdJdGVyPFQ+ +IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dDo6aDFkMGUx +YTMxMDMzNGVkOTP/OV88aGFzaGJyb3duOjpyYXc6OlJhd0l0ZXI8VD4gYXMgY29yZTo6aXRlcjo6 +dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNDM4ZjI1Mjg2Y2ExM2E2NYA6Xzxo +YXNoYnJvd246OnJhdzo6UmF3SXRlcjxUPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9y +OjpJdGVyYXRvcj46Om5leHQ6Omg2YmE0ZDBkZWFkZWI4MWQ1gTpfPGhhc2hicm93bjo6cmF3OjpS +YXdJdGVyPFQ+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4 +dDo6aDc4ZjZiYzgzZmQwMzkwZGKCOl48aGFzaGJyb3duOjptYXA6Okl0ZXI8SyxWPiBhcyBjb3Jl +OjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgxMjhmYTk5OGFmZTdi +MGQygzpePGhhc2hicm93bjo6bWFwOjpJdGVyPEssVj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpp +dGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoODdmNTBmNDNhNjc3ZWYwYYQ6XjxoYXNoYnJvd246 +Om1hcDo6SXRlcjxLLFY+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9y +Pjo6bmV4dDo6aGEwYzg3YjkyNDg3YTZkY2GFOl48aGFzaGJyb3duOjptYXA6Okl0ZXI8SyxWPiBh +cyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhiMzlmZjg3 +NzE4MjU3MjZjhjpePGhhc2hicm93bjo6bWFwOjpJdGVyPEssVj4gYXMgY29yZTo6aXRlcjo6dHJh +aXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoZDczYmFmZGQxNThmZDdmMIc6d2NvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPG1hdHJpeF9zZGtfY3J5cHRvOjp2 +ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpDcmVhdGVkPj46OmhhZGZmNWI3NGUzYjFmZWNm +iDp3Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzeW5jOjpBcmM8bWF0cml4X3Nka19j +cnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpzYXNfc3RhdGU6OktleVNlbnQ+Pjo6aDZkZTU4MmY2 +Mzg1Y2UxY2GJOndjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN5bmM6OkFyYzxtYXRy +aXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6U3RhcnRlZD4+Ojpo +MmI2ZDIyMjcyYThlY2IwZoo6eGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6 +QXJjPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpBY2Nl +cHRlZD4+OjpoOTBhNTUxZDc2NWU0OTliNos6eWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxv +Yzo6c3luYzo6QXJjPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0 +YXRlOjpDb25maXJtZWQ+Pjo6aDViNDc2MzRiODkwOTZkNTGMOnpjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8YWxsb2M6OnN5bmM6OkFyYzxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpz +YXM6OnNhc19zdGF0ZTo6V2VBY2NlcHRlZD4+OjpoZTcwNzlkN2FmZTdlZWZmYo06e2NvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpLZXlSZWNlaXZlZD4+OjpoYmIwMjllNzY3YmNmNWI0 +NY46e2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJjPG1hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpNYWNSZWNlaXZlZD4+OjpoYzY1 +NDE2NGFkNjY5NGRhMY86fWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6c3luYzo6QXJj +PG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpLZXlzRXhj +aGFuZ2VkPj46OmgzMzIzYTQ1MmIzY2JlYjQzkDo6PFQgYXMgYWxsb2M6OmJvcnJvdzo6VG9Pd25l +ZD46OnRvX293bmVkOjpoNmQ4ZWRmNWI3MjQ5YTdhMpE6bGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxbbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50 +aXRpZXNdPjo6aDdiZGY2Y2RkZGEwNjYyZTAuMZI6O2NvcmU6OnNsaWNlOjo8aW1wbCBbVF0+Ojpj +b3B5X2Zyb21fc2xpY2U6OmhkMTcxNmFjOWNlNTFmMzkwkzpVPGFsbG9jOjp2ZWM6OlZlYzxULEE+ +IGFzIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4TXV0PEk+Pjo6aW5kZXhfbXV0OjpoY2FhOTQzMWNk +M2Y0NjE3MZQ6ZWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjx3 +YXNtX2JpbmRnZW5fZnV0dXJlczo6cXVldWU6OlF1ZXVlPj46OmhmNTFkZmU0Y2ZkZDg0YzMylTps +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPFthbGxvYzo6cmM6OlJjPHdhc21fYmluZGdlbl9mdXR1 +cmVzOjp0YXNrOjpzaW5nbGV0aHJlYWQ6OlRhc2s+XT46Omg1MjExZmI3M2MxNzk1MTBlljo0dGhy +ZWFkX2xvY2FsOjpUaHJlYWRMb2NhbDxUPjo6Z2V0OjpoY2M4NmE2ZTk2NGQyM2MwN5c6YXdlYl9z +eXM6OmZlYXR1cmVzOjpnZW5fSWRiT3BlbkRiUmVxdWVzdDo6SWRiT3BlbkRiUmVxdWVzdDo6c2V0 +X29udXBncmFkZW5lZWRlZDo6aGY0Y2VkYzNhOTlhYTM5ZjKYOk93ZWJfc3lzOjpmZWF0dXJlczo6 +Z2VuX0lkYlJlcXVlc3Q6OklkYlJlcXVlc3Q6OnNldF9vbnN1Y2Nlc3M6OmhjMzJhOTc1ZDlkOTYx +YjdlmTpNd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJSZXF1ZXN0OjpJZGJSZXF1ZXN0OjpzZXRf +b25lcnJvcjo6aGMyNTI3MTFjODMzMjliOWWaOlV3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX0lkYlRy +YW5zYWN0aW9uOjpJZGJUcmFuc2FjdGlvbjo6c2V0X29uYWJvcnQ6OmhkOTY1ZDA1YjAxOTA5YmYz +mzpYd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJUcmFuc2FjdGlvbjo6SWRiVHJhbnNhY3Rpb246 +OnNldF9vbmNvbXBsZXRlOjpoNGI3YTNlOGJlNGRmMDU4ZZw6VXdlYl9zeXM6OmZlYXR1cmVzOjpn +ZW5fSWRiVHJhbnNhY3Rpb246OklkYlRyYW5zYWN0aW9uOjpzZXRfb25lcnJvcjo6aGY3ZTIyOTVi +YjYwOTgyYzOdOkhmdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJlc191bm9yZGVyZWQ6OmFib3J0 +OjphYm9ydDo6aDViNTc2MmFhMjllNDEyYTSeOjFwcm9zdDo6ZW5jb2Rpbmc6OmJ5dGVzOjplbmNv +ZGU6OmhlNTg0ZGRkNDEzYmI5ZDBlnzo4dm9kb3plbWFjOjpjaXBoZXI6OkNpcGhlcjo6bmV3X21l +Z29sbTo6aDM3Y2JhODlhOTQ3NjE1ZTagOjFwcm9zdDo6ZXJyb3I6OkRlY29kZUVycm9yOjpuZXc6 +Omg1ZDJkMWY4NTU1NmZkYTMxoTpVY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPFtzZXJkZTo6X19w +cml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudF0+OjpoOWE1ZmFlMDAzMGE3NDA0ZKI6M2FsbG9j +OjphbGxvYzo6ZXhjaGFuZ2VfbWFsbG9jOjpoODNkZDM0MDM2ZWM5MTljMS4zNqM6NTxEIGFzIGRp +Z2VzdDo6ZGlnZXN0OjpEaWdlc3Q+OjpuZXc6OmgxNDBhMDk4NGVmN2E5MDY1pDpLdm9kb3plbWFj +Ojp0eXBlczo6ZWQyNTUxOTo6RXhwYW5kZWRTZWNyZXRLZXk6OnB1YmxpY19rZXk6Omg3ZmUwZTQ0 +ZmY3MTgwYmQ1pTpPY29yZTo6aXRlcjo6YWRhcHRlcnM6OnppcDo6VHJ1c3RlZFJhbmRvbUFjY2Vz +c05vQ29lcmNlOjpzaXplOjpoOTkyN2NhZGY1NzQwMTU4N6Y6djxjdXJ2ZTI1NTE5X2RhbGVrOjpi +YWNrZW5kOjpzZXJpYWw6OnUzMjo6c2NhbGFyOjpTY2FsYXIyOSBhcyBjb3JlOjpvcHM6OmluZGV4 +OjpJbmRleDx1c2l6ZT4+OjppbmRleDo6aDZiNzM1Y2QxMzgzYzQ3MzSnOnJ0b2tpbzo6dXRpbDo6 +bGlua2VkX2xpc3Q6OkxpbmtlZExpc3Q8TCw8TCBhcyB0b2tpbzo6dXRpbDo6bGlua2VkX2xpc3Q6 +Okxpbms+OjpUYXJnZXQ+Ojppc19lbXB0eTo6aDAwNmQ3OTU2ODk3MzlhMzeoOl48c2VyZGU6OmRl +Ojp2YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpTZXFBY2Nlc3M+Ojpz +aXplX2hpbnQ6OmhhYjRkYWJmMjFkZTRhNWFiqTpHY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPFtz +ZXJkZV9qc29uOjp2YWx1ZTo6VmFsdWVdPjo6aGY5OGE3NmMzZjhmM2ZlMTmqOkBjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8c3RkOjp0aHJlYWQ6OlRocmVhZD46Omg0MDlmMGVmYThhM2FiZDAzqzoz +Ynl0ZXM6OmJ5dGVzX211dDo6c2hhcmVkX3ZfY2xvbmU6OmhjMmM1ZTIxZjRkZjBiMTM4rDpBYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bW92ZV90b19zbGljZTo6aDAxN2JiMThjNmJm +ZDVmYzatOrwBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6 +QnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxT +eW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6c3RpY2tlcjo6U3RpY2tlckV2ZW50Q29u +dGVudD4+Pjo6aDIzZTIyM2Q5MDQ0ZDVkZDCuOr4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1 +bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPHJ1bWFfZXZl +bnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6cmVh +Y3Rpb246OlJlYWN0aW9uRXZlbnRDb250ZW50Pj4+OjpoYmE1MzVkMDQzNTEzM2I5Nq86xAFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2Fn +ZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlr +ZUV2ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjphbnN3ZXI6OkNhbGxBbnN3ZXJFdmVudENvbnRlbnQ+ +Pj46Omg2YTQ1NjQwNDA2Y2Y4MjU0sDrEAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2 +ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6 +a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmNhbGw6Omhh +bmd1cDo6Q2FsbEhhbmd1cEV2ZW50Q29udGVudD4+Pjo6aDI5M2ZlOWExNGNlMjJkMmKxOsQBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1lc3Nh +Z2VMaWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxp +a2VFdmVudDxydW1hX2V2ZW50czo6Y2FsbDo6aW52aXRlOjpDYWxsSW52aXRlRXZlbnRDb250ZW50 +Pj4+OjpoZWZlMzg0M2YxZGY3YzFjNLI6xAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9l +dmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6 +OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjpy +ZWplY3Q6OkNhbGxSZWplY3RFdmVudENvbnRlbnQ+Pj46Omg3OWYzNDQ1ODU4YTFhNjA0szrGAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNz +YWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VM +aWtlRXZlbnQ8cnVtYV9ldmVudHM6Ol9jdXN0b206OkN1c3RvbU1lc3NhZ2VMaWtlRXZlbnRDb250 +ZW50Pj4+OjpoNjliMGM3MTE1OWJkM2RmYbQ6xgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVt +YV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVu +dHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpyb29t +OjptZXNzYWdlOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudD4+Pjo6aDI1Mzc5ZTQzY2E2ZTkwZTi1 +OsoBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxl +ZE1lc3NhZ2VMaWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVz +c2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6Y2FsbDo6bmVnb3RpYXRlOjpDYWxsTmVnb3RpYXRl +RXZlbnRDb250ZW50Pj4+OjpoMDBmODNmNTEwY2I4MmU0ObY6ygFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8 +cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZl +bnRzOjpyb29tOjplbmNyeXB0ZWQ6OlJvb21FbmNyeXB0ZWRFdmVudENvbnRlbnQ+Pj46OmgyNDM4 +MjllZDk5ODFjYzU4tzrKAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cmVs +YXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6a2luZHM6Ok9y +aWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OnJvb206OnJlZGFjdGlvbjo6 +Um9vbVJlZGFjdGlvbkV2ZW50Q29udGVudD4+Pjo6aDIyNDBlZGQyNzBmZjQzZGa4OswBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VM +aWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VF +dmVudDxydW1hX2V2ZW50czo6Y2FsbDo6Y2FuZGlkYXRlczo6Q2FsbENhbmRpZGF0ZXNFdmVudENv +bnRlbnQ+Pj46Omg1ODczZWJjYjQwNGVlNDRluTrRAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2 +ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmNh +bGw6OnNlbGVjdF9hbnN3ZXI6OkNhbGxTZWxlY3RBbnN3ZXJFdmVudENvbnRlbnQ+Pj46OmhhOTZl +MTFlNmZjZmZjMzMyujrWAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cmVs +YXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6a2luZHM6Ok9y +aWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9u +OjprZXk6OktleVZlcmlmaWNhdGlvbktleUV2ZW50Q29udGVudD4+Pjo6aGJhMjA4YWQwNzdlOWIx +ZmW7OtYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVu +ZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5j +TWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246Om1hYzo6S2V5 +VmVyaWZpY2F0aW9uTWFjRXZlbnRDb250ZW50Pj4+OjpoOWE4MDQ1YzZkY2Q3NzU1M7w6nQFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2Fn +ZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6OnJvb206OnJlZGFjdGlvbjo6T3JpZ2luYWxTeW5j +Um9vbVJlZGFjdGlvbkV2ZW50Pj46OmhmYmEyY2ZlZWY0ZGEyOWMxvTrYAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0 +aW9uczxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVt +YV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpkb25lOjpLZXlWZXJpZmljYXRpb25Eb25lRXZl +bnRDb250ZW50Pj4+OjpoNzg5OWRhMzJlYWM4YTI2Zr462gFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVt +YV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRz +OjprZXk6OnZlcmlmaWNhdGlvbjo6cmVhZHk6OktleVZlcmlmaWNhdGlvblJlYWR5RXZlbnRDb250 +ZW50Pj4+OjpoNTVkZWI4MGZkMWFjODkyMb862gFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVt +YV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVu +dHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjprZXk6 +OnZlcmlmaWNhdGlvbjo6c3RhcnQ6OktleVZlcmlmaWNhdGlvblN0YXJ0RXZlbnRDb250ZW50Pj4+ +OjpoODdmNTRlZDNjMTczODhhZcA63AFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVu +dHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6Omtp +bmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlm +aWNhdGlvbjo6YWNjZXB0OjpLZXlWZXJpZmljYXRpb25BY2NlcHRFdmVudENvbnRlbnQ+Pj46Omgw +NGMzNjA2OTUxMTRkNzFiwTrcAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6 +cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6a2luZHM6 +Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0 +aW9uOjpjYW5jZWw6OktleVZlcmlmaWNhdGlvbkNhbmNlbEV2ZW50Q29udGVudD4+Pjo6aGNlNDRj +MzNmYmIxZWNhM2XCOkNzdGQ6OnN5czo6cGFsOjp3YXNtOjpsb2Nrczo6cndsb2NrOjpSd0xvY2s6 +OnJlYWQ6Omg1ZWY0OWExNzY1YmZiOGUwwzpSY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRva2lv +OjpzeW5jOjpiYXRjaF9zZW1hcGhvcmU6OkFjcXVpcmU+OjpoMGY2ZTM4ZDI4NGU4MTM1MMQ66AFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jb21tb246OnRpbWVvdXQ6OnRpbWVv +dXQ8Y29yZTo6cGluOjpQaW48YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjpLZXlRdWVyeU1hbmFnZXI6OndhaXRfaWZfdXNlcl9rZXlfcXVlcnlfcGVuZGluZzo6e3tj +bG9zdXJlfX06Ont7Y2xvc3VyZX19Pj4sKCk+Ojp7e2Nsb3N1cmV9fT46OmgyOWFiZGJhMTYyOTVm +OTIzxTrqAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NvbW1vbjo6dGltZW91 +dDo6dGltZW91dDxjb3JlOjpwaW46OlBpbjxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OktleVF1ZXJ5TWFuYWdlcjo6d2FpdF9pZl91c2VyX2tleV9xdWVyeV9wZW5k +aW5nOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+PiwoKT46Ont7Y2xvc3VyZX19Pjo6aDI5YWJk +YmExNjI5NWY5MjMuMcY6kQNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpP +cHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8KGFsbG9jOjp2 +ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uPixhbGxvYzo6 +dmVjOjpWZWM8KG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5 +RGV2aWNlLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVs +ZDo6V2l0aGhlbGRDb2RlKT4pLG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3I+LGFs +bG9jOjpib3hlZDo6Qm94PGR5biBjb3JlOjphbnk6OkFueStjb3JlOjptYXJrZXI6OlNlbmQ+Pj4+ +OjpoYmVhYWEwODk1N2UwYWRhNcc6wgJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0 +aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0 +cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vz +c2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3VyZX19OjpEZXZpY2VSZXN1 +bHQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4sYWxsb2M6OmJveGVkOjpCb3g8 +ZHluIGNvcmU6OmFueTo6QW55K2NvcmU6Om1hcmtlcjo6U2VuZD4+Pj46OmhmNmU5MzA1NmMzNzAw +ZDg5yDqOAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3Jl +OjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6 +aWRlbnRpdGllczo6bWFuYWdlcjo6RGV2aWNlQ2hhbmdlLG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9y +ZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+LGFsbG9jOjpib3hlZDo6Qm94PGR5biBjb3JlOjph +bnk6OkFueStjb3JlOjptYXJrZXI6OlNlbmQ+Pj4+OjpoZTE5M2Q5NzU3Zjk3NTMzZMk6gQJjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0OjpS +ZXN1bHQ8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpEZXZp +Y2VDaGFuZ2VzLG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJy +b3I+LGFsbG9jOjpib3hlZDo6Qm94PGR5biBjb3JlOjphbnk6OkFueStjb3JlOjptYXJrZXI6OlNl +bmQ+Pj4+OjpoMmU1ZjBkYTQxYzk3MTY2Mso6ZDxzZXJkZTo6X19wcml2YXRlOjpkZTo6RmxhdE1h +cEFjY2VzczxFPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDhi +N2FjZTc1NWEyYWRlNjnLOmg8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMg +Y29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoNWJkZWE4Y2Rk +YzU4NzZjMsw6c2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0b193YXNt +OjptYWNoaW5lOjpwcm9taXNlX3Jlc3VsdF90b19mdXR1cmU6Ont7Y2xvc3VyZX19Pjo6aGYzMzFk +ZmZkMDhhMGEyY2LNOoEBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRva2lvOjpzeW5jOjpicm9h +ZGNhc3Q6OlJlY3Y8YWxsb2M6OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Um9v +bUtleUluZm8+Pj46OmgzOTBkYzhkZjE0YjM0NzBjzjrWAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpvcHRpb246 +Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURl +dmljZT4sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4+ +Pjo6aDQ1ZGI0MGQ2YTYzMmI5M2bPOo4BPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkNyeXB0b1N0b3JlPjo6bG9hZF9hY2NvdW50OjpoMzExYTkwMTk4ODE5YmY1NNA6jgE8 +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxU +PiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojpsb2Fk +X2FjY291bnQ6OmhmMTAwMmRiY2NmNGViYTRm0TqPATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmxvYWRfaWRlbnRpdHk6OmgxYzIxYWU5ZmFlMjM1 +YzVl0jqPATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9y +ZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OmxvYWRfaWRlbnRpdHk6OmgzMjljODA3YmFiODg5Y2Iw0zrdAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpv +cHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jv +c3NTaWduaW5nSWRlbnRpdHk+LG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0 +b1N0b3JlRXJyb3I+Pj46Omg3NDhlMjNmOWEwNTI2MDc21DqZAmNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxzdGQ6OmNvbGxl +Y3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZp +Y2VfaWQ6Ok93bmVkRGV2aWNlSWQsbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmlj +ZTo6UmVhZE9ubHlEZXZpY2U+LG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0 +b1N0b3JlRXJyb3I+Pj46OmhlNjdjYjEwMjNhYjYzZmYy1TqSATxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmxvYWRfYmFja3VwX2tleXM6Omg0MWI5 +ZjA2NWUyYTdiZDRi1jqSATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VD +cnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpD +cnlwdG9TdG9yZT46OmxvYWRfYmFja3VwX2tleXM6OmhlYmVkNmUwYTE5Mjk1ZDBh1zqvAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJl +c3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkJhY2t1cEtleXMsbWF0cml4X3Nka19jcnlw +dG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4+Pjo6aDdjZmM2ODNlMTg0NTQwNDHY +OpIBPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJy +b3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6 +bmV4dF9iYXRjaF90b2tlbjo6aDcwZWNkZDNjNzc1ZmVjMjPZOpIBPG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6bmV4dF9iYXRjaF90b2tlbjo6aGM2 +Mzg1MDRkNmExYzMzMzjaOrYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6 +T3B0aW9uPGNvcmU6OnJlc3VsdDo6UmVzdWx0PGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjpz +dHJpbmc6OlN0cmluZz4sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3Rv +cmVFcnJvcj4+Pjo6aGU3OTA3NWJkMmRhOTZlOGLbOtwBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6OnJlc3VsdDo6UmVzdWx0PGNvcmU6Om9wdGlvbjo6 +T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjp1c2VyOjpSZWFkT25seVVzZXJJ +ZGVudGl0aWVzPixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVy +cm9yPj4+OjpoYzg4MzMyNTdkNTE5NmExYtw6lAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojpsb2FkX3RyYWNrZWRfdXNlcnM6Omg4Y2VlODlhZTY1 +MTFjYmQ03TqUATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9T +dG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9T +dG9yZT46OmxvYWRfdHJhY2tlZF91c2Vyczo6aGY3YTZlMmE5NTA4NDZkYjTeOsEBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6OnJlc3VsdDo6UmVzdWx0 +PGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlRyYWNrZWRVc2VyPixt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPj4+OjpoZTdm +NmMzNTZlOTAxNGM5NN86lAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNl +Q3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +Q3J5cHRvU3RvcmU+OjpyZXNldF9iYWNrdXBfc3RhdGU6OmgxZjY2OTA2NmM0NzhmMTU44DqUATxt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+ +IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnJlc2V0 +X2JhY2t1cF9zdGF0ZTo6aDNlN2FjYWNhZTMxZTM4OGbhOskBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6OnJlc3VsdDo6UmVzdWx0PGFsbG9jOjp2ZWM6 +OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBwZWRTZWNyZXQ+LG1hdHJp +eF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+Pj46Omg5YTRkNTI2 +NWQ5ZTgyODM14jqcATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlw +dG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlw +dG9TdG9yZT46OmdldF9pbmJvdW5kX2dyb3VwX3Nlc3Npb25zOjpoNzQzNjE3ZGYxM2ViYWZjZOM6 +nAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJv +cjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojpn +ZXRfaW5ib3VuZF9ncm91cF9zZXNzaW9uczo6aGJlZDdkMTgzMmQ4MDEwZDDkOuABY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6OnJlc3VsdDo6UmVzdWx0 +PGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6 +aW5ib3VuZDo6SW5ib3VuZEdyb3VwU2Vzc2lvbj4sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpl +cnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4+Pjo6aGRkYmYxMDQ5MTQyNWRmMTblOswBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6OnJlc3VsdDo6UmVzdWx0 +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Okdvc3Np +cFJlcXVlc3Q+LG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJy +b3I+Pj46OmgyMTlkNGE4ZmRhMDYxNDI55jqcATxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRy +YWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9y +ZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF91bnNlbnRfc2VjcmV0X3JlcXVlc3RzOjpoMmY5 +ZjU5ZDU2NmQ3MjI0MOc6nAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNl +Q3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +Q3J5cHRvU3RvcmU+OjpnZXRfdW5zZW50X3NlY3JldF9yZXF1ZXN0czo6aDVmMDkxMWU4YjNhODNj +MTjoOscBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6 +OnJlc3VsdDo6UmVzdWx0PGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lw +aW5nOjpHb3NzaXBSZXF1ZXN0PixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlw +dG9TdG9yZUVycm9yPj4+OjpoNWVjN2E0NzI3ZWNmNDU5Y+k6ngE8bWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjppbmJvdW5kX2dyb3VwX3Nlc3Npb25f +Y291bnRzOjpoMWI4MWNmNjM1ZDQwYTI0Neo6ngE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+OjppbmJvdW5kX2dyb3VwX3Nlc3Npb25fY291bnRzOjpo +OTVlNTlhMDI3Mzg5ZjVkMOs6MDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTQ0ZWQw +OWFjNmQ4OTM1Zew6VHNlcmRlOjpzZXI6OmltcGxzOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxp +emUgZm9yICZUPjo6c2VyaWFsaXplOjpoYzE4NjYzMzUwYWQ3YWVlNe06V2hhc2hicm93bjo6cmF3 +OjpSYXdUYWJsZTxULEE+OjpmaW5kX29yX2ZpbmRfaW5zZXJ0X3Nsb3Q6Ont7Y2xvc3VyZX19Ojpo +MTNkYjU3NDkwYTI1ODI0NO46V2hhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpmaW5kX29y +X2ZpbmRfaW5zZXJ0X3Nsb3Q6Ont7Y2xvc3VyZX19OjpoM2IxODY0ODIxNDcxYmJkN+86bmNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2NsaWVudF9hcGk6 +OmVycm9yOjpraW5kX3NlcmRlOjpFcnJDb2RlPj46Omg4OWI2Y2M5ZjI3Yzk4NjA28Do9d2FzbV9i +aW5kZ2VuOjpVbndyYXBUaHJvd0V4dDo6dW53cmFwX3Rocm93OjpoMjA2ZjBjYWE3MTE3ZjRhOPE6 +PXdhc21fYmluZGdlbjo6VW53cmFwVGhyb3dFeHQ6OnVud3JhcF90aHJvdzo6aGE3YTFlY2Q5NTZl +MjdlYTjyOj13YXNtX2JpbmRnZW46OlVud3JhcFRocm93RXh0Ojp1bndyYXBfdGhyb3c6OmhkYWFi +ZmY1ZDNmNmQ0YTUz8zrsAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9w +dGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxhbGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlw +dG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OkluYm91bmRHcm91cFNlc3Npb24+LG1h +dHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlRXJy +b3I+Pj46OmhjMGQwMjUwMzQ3YjFjOTAy9DqQAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwocnVt +YV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCxydW1hX2NvbW1vbjo6 +aWRlbnRpZmllcnM6OmRldmljZV9pZDo6T3duZWREZXZpY2VJZCk+OjpoOTU2MjZiMjQxZWFhZWVi +MvU6jQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4 +X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpFbmNyeXB0ZWRTdG9yZUNpcGhlcixybXBfc2VyZGU6OmRl +Y29kZTo6RXJyb3I+Pjo6aGZiNmYzNzljOTQxOWI2N2P2Oo8BY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6RW5j +cnlwdGVkU3RvcmVDaXBoZXIscm1wX3NlcmRlOjpkZWNvZGU6OkVycm9yPj46OmhmYjZmMzc5Yzk0 +MTliNjdjLjH3OkVjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cm1wX3NlcmRlOjplbmNvZGU6OkVy +cm9yPjo6aDMyZTk5MmU4MzVkNjQ3M2P4OmBpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl90cmFuc2Fj +dGlvbjo6aWRiX3RyYW5zYWN0aW9uX2xpc3RlbmVyczo6YmFzZV9jYWxsYmFjazo6aDkzYTQ0OGZj +ZDdlMzk0MGL5Oq4BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5hbD46OmVkZ2VfYXJlYV9tdXQ6Omgw +OTNmNGQ0OWJkMjdhOWU3+jrWAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRs +ZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW1tdXQsSyxWLE5vZGVUeXBlPixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPjo6aW50b19rdjo6aDRkYWE5NzA2OGUx +ZGFjNGL7OkFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OlNpZ25hdHVyZTo6dG9fYmFzZTY0Ojpo +ZDIwZDRjOWI0MmZlMWIyN/w6am1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29t +OjplbmNyeXB0ZWQ6OlJvb21FdmVudEVuY3J5cHRpb25TY2hlbWU6OmFsZ29yaXRobTo6aGVkMjc2 +MzgyZTk4ZTFmOGX9OjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRiYjQyYmQ1Yjky +ZmJiZmX+Olpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6VmVyaWZpY2F0aW9uPjo6aDgzNjNiMGM5ZWQxYjc3ZTf/OjZzdGQ6OnN5bmM6OnJ3 +bG9jazo6UndMb2NrPFQ+Ojp3cml0ZTo6aDhiMTdiNmVjNmYxMTAyZjKAOzZ0b2tpbzo6c3luYzo6 +cndsb2NrOjpSd0xvY2s8VD46Om5ldzo6aGM5ZWQyMDdlYTkzNjUwMzKBO1doYXNoYnJvd246OnJh +dzo6UmF3VGFibGU8VCxBPjo6ZmluZF9vcl9maW5kX2luc2VydF9zbG90Ojp7e2Nsb3N1cmV9fTo6 +aDZiMjQxNzE3OTFkZWFhYmOCO1doYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6ZmluZF9v +cl9maW5kX2luc2VydF9zbG90Ojp7e2Nsb3N1cmV9fTo6aDYyOWIxMGU0M2M2MTE2NzmDO1doYXNo +YnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6ZmluZF9vcl9maW5kX2luc2VydF9zbG90Ojp7e2Ns +b3N1cmV9fTo6aGFiNWUwMDYwMTIxYWVjZmaEO1doYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxB +Pjo6ZmluZF9vcl9maW5kX2luc2VydF9zbG90Ojp7e2Nsb3N1cmV9fTo6aGExODRmMGJkMmYwODhk +ZjeFO54BcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6Ol86OjxpbXBsIHNl +cmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjph +Y2NlcHQ6OkFjY2VwdE1ldGhvZD46OnNlcmlhbGl6ZTo6aGMwYjdiNTEyZmYxNmMzZWKGOzA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA2ZWQ0Y2MyMDhhYmMwZjeHO05tYXRyaXhfc2Rr +X2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb246OmlzX2NhbmNlbGxlZDo6aDJlNzQy +MzkzYTJlMmE3ZmSIO1ltYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3NzX3NpZ25pbmc6OmNv +bW1vbjo6U2lnbmluZ0tleTo6dG9fYmFzZTY0OjpoM2M3NmJkM2M1MjFjMWIyMYk7Tmhhc2hicm93 +bjo6cnVzdGNfZW50cnk6OlJ1c3RjT2NjdXBpZWRFbnRyeTxLLFYsQT46OmludG9fbXV0OjpoMjAw +NTZkYzE1MDVlM2VlY4o7lAE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6 +TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0 +b3JlPjo6Z2V0X2luYm91bmRfZ3JvdXBfc2Vzc2lvbnM6OmhjMTU0YWRjNGI3ZmVmMWQ3izt/PHRy +YWNpbmdfc3Vic2NyaWJlcjo6cmVnaXN0cnk6OnNoYXJkZWQ6OlJlZ2lzdHJ5IGFzIHRyYWNpbmdf +Y29yZTo6c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OnJlZ2lzdGVyX2NhbGxzaXRlOjpoNDAwMmMw +NzJlMDlkNTMzZYw7eWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OnN5bmM6Om11dGV4OjpN +dXRleEd1YXJkPGFsbG9jOjpjb2xsZWN0aW9uczo6dmVjX2RlcXVlOjpWZWNEZXF1ZTx1c2l6ZT4+ +Pjo6aGUzYjBmMzcxODk2MWYzZDGNO108dm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmxpYm9sbTo6 +T25lVGltZUtleSBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVyb2l6ZTo6aDcwZmU4NGY1NTI2N2Vh +NzWOO1l2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpSZW1vdGVDaGFpbktleTo6 +Y3JlYXRlX21lc3NhZ2Vfa2V5OjpoMjczZjFmMTlmNDdmODllMo87SXZvZG96ZW1hYzo6dHlwZXM6 +OmVkMjU1MTk6OkVkMjU1MTlTaWduYXR1cmU6OnRvX2Jhc2U2NDo6aDUyZDYyZjVmMGY5ODg5ODCQ +O7oBdm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmxpYm9sbTo6PGltcGwgY29yZTo6Y29udmVydDo6 +RnJvbTwmdm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmxpYm9sbTo6T25lVGltZUtleT4gZm9yIHZv +ZG96ZW1hYzo6b2xtOjphY2NvdW50OjpmYWxsYmFja19rZXlzOjpGYWxsYmFja0tleT46OmZyb206 +OmhjYjlmMTk0MmY0NWNhMDFmkTuDATxlZDI1NTE5X2RhbGVrOjp2ZXJpZnlpbmc6OlZlcmlmeWlu +Z0tleSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPCZlZDI1NTE5X2RhbGVrOjpoYXptYXQ6OkV4cGFu +ZGVkU2VjcmV0S2V5Pj46OmZyb206OmhkNjQ1MWI5YmVhOTRjNTM4kjtaY3VydmUyNTUxOV9kYWxl +azo6YmFja2VuZDo6c2VyaWFsOjp1MzI6OmZpZWxkOjpGaWVsZEVsZW1lbnQyNjI1OjpzcXVhcmU6 +OmhlMjZlNWMwMzdmODg1ZGZikztvY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlv +bjo6T3B0aW9uPGFsbG9jOjpib3hlZDo6Qm94PHNlcmRlX2pzb246OnJhdzo6UmF3VmFsdWU+Pj46 +OmgzMWM4ZTkwNzg0MDg1YTMzlDs+c2VyZGU6OmRlOjp2YWx1ZTo6U2VxRGVzZXJpYWxpemVyPEks +RT46Om5ldzo6aGQyNGRkNWRiNTBjOTA5YziVO4ABYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11 +dCxLLFYsVHlwZT46OmtleV9hcmVhX211dDo6aGQ2MmI2YjhkMGU0MzRjOWKWOzA8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDM1MzNhYjlhOTBiMTY2NjaXOzA8JlQgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aDZkYjVjNWU5Y2FkYjU2M2OYOzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aGM1YWZlMzk2YzRhNDA0ZTeZOzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aGVlOGY5YTVkZDU1M2RkMzaaOzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA5 +MzE1MzRlMmFlM2I1YjKbO1E8anNfaW50Ojp1aW50OjpVSW50IGFzIGNvcmU6OmNvbnZlcnQ6OlRy +eUZyb208dTEyOD4+Ojp0cnlfZnJvbTo6aDU5OGQ4MmViMWYwOTcyMTWcOzA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDM4NDY2MmY4MjE1ZGU4MDKdOzA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDRiYjgzMjMzZTM3OTJjOWGeO64BYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbnRlcm5h +bD46OmVkZ2VfYXJlYV9tdXQ6OmhlYTRjN2JjNWE0ODVhYjRjnzs1Ynl0ZXM6OmJ5dGVzOjpwcm9t +b3RhYmxlX2lzX3VuaXF1ZTo6aDA2NjExODI2MWNlYmQyZDmgOz93YXNtX2JpbmRnZW46OmNvbnZl +cnQ6OmNsb3N1cmVzOjppbnZva2U0X211dDo6aGM5MDU4NDE4MjhiNmQyZGOhOzA8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA0OWRlNWU2NmUxOTA0NDGiO05jb3JlOjpmbXQ6Om51bTo6 +aW1wOjo8aW1wbCBjb3JlOjpmbXQ6OkRpc3BsYXkgZm9yIGk2ND46OmZtdDo6aDNlYzEzZjNkNTE5 +YjFkNWKjO21jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +OjpldmVudHM6OnRvX2RldmljZTo6VG9EZXZpY2VDdXN0b21FdmVudD46Omg1MGFiNTQzN2MwYTVi +ZDVipDuoAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdp +bmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpj +YW5jZWw6OktleVZlcmlmaWNhdGlvbkNhbmNlbEV2ZW50Q29udGVudD4+OjpoNDJhOTZhN2Y5YWY5 +MTg3MKU7kgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmln +aW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpfY3VzdG9tOjpDdXN0b21NZXNz +YWdlTGlrZUV2ZW50Q29udGVudD4+OjpoZGU0ZTBjYmU2ZGI4ZmViYqY7cWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6ZmlsZV9lbmNyeXB0aW9uOjphdHRhY2htZW50 +czo6TWVkaWFFbmNyeXB0aW9uSW5mbz46Omg2M2Y1ZjUxMDc1MDI0MTIypzt3Y29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpzZXJ2ZXJfbm90aWNlOjpT +ZXJ2ZXJOb3RpY2VNZXNzYWdlRXZlbnRDb250ZW50Pjo6aDUyZjk0MWVhNmYwMjlhZWaoO5ABY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVz +c2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6Y2FsbDo6cmVqZWN0OjpDYWxsUmVqZWN0RXZlbnRD +b250ZW50Pj46OmhkNzQzY2ZkMTFlYTg0YzYxqTuYAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVu +dHM6OmNhbGw6OmNhbmRpZGF0ZXM6OkNhbGxDYW5kaWRhdGVzRXZlbnRDb250ZW50Pj46OmgwZDFj +MDZlZTVlMGNmY2I1qjtrY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpjYWxs +OjpzZWxlY3RfYW5zd2VyOjpDYWxsU2VsZWN0QW5zd2VyRXZlbnRDb250ZW50Pjo6aGM1NTgxYmVh +NGZkNzA5ZTOrO6YBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6 +T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRp +b246OnN0YXJ0OjpLZXlWZXJpZmljYXRpb25TdGFydEV2ZW50Q29udGVudD4+OjpoYmZkZDNhMGQ4 +NTdjM2IxYaw7pAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtpbmRzOjpP +cmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlv +bjo6ZG9uZTo6S2V5VmVyaWZpY2F0aW9uRG9uZUV2ZW50Q29udGVudD4+OjpoNTUyZTI2ZTM0Y2Fk +ZGEzMa07YGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6Y2FsbDo6aGFuZ3Vw +OjpDYWxsSGFuZ3VwRXZlbnRDb250ZW50Pjo6aDdmYWEzNzhlM2Y3ZDhmNjUuNK47ogFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdl +TGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6a2V5OjpLZXlWZXJpZmlj +YXRpb25LZXlFdmVudENvbnRlbnQ+Pjo6aDk1YzdjYmYxOTM3OWJiODmvO6YBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VF +dmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnJlYWR5OjpLZXlWZXJpZmljYXRp +b25SZWFkeUV2ZW50Q29udGVudD4+OjpoM2E0ZmY0ZGE5ZDJkYTY5ZrA7kgFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtpbmRzOjpSZWRhY3RlZFN5bmNNZXNzYWdlTGlrZUV2 +ZW50PHJ1bWFfZXZlbnRzOjpfY3VzdG9tOjpDdXN0b21NZXNzYWdlTGlrZUV2ZW50Q29udGVudD4+ +OjpoY2EyN2E2ODgwOWE5MGQ2MLE7igFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVu +dHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpyZWFj +dGlvbjo6UmVhY3Rpb25FdmVudENvbnRlbnQ+Pjo6aDRjNzU2NWRmZjA3OTg3YTSyO15jb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmNhbGw6OmFuc3dlcjo6Q2FsbEFuc3dlckV2 +ZW50Q29udGVudD46OmhiYWQ1OTc2ZTAxNzQzZWVmszuoAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9l +dmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OktleVZlcmlmaWNhdGlvbkFjY2VwdEV2 +ZW50Q29udGVudD4+OjpoMmJjNDQ4ZDVjYzBhNzg4MbQ7aGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6Y2FsbDo6Y2FuZGlkYXRlczo6Q2FsbENhbmRpZGF0ZXNFdmVudENvbnRl +bnQ+OjpoN2JhOTQyZjc1ODk3Njc2MS40tTuQAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1h +X2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6 +OmNhbGw6Omludml0ZTo6Q2FsbEludml0ZUV2ZW50Q29udGVudD4+OjpoODExOTUxMmQ0YmVlMGQ0 +NrY7nQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5h +bFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjpzZWxlY3RfYW5zd2VyOjpD +YWxsU2VsZWN0QW5zd2VyRXZlbnRDb250ZW50Pj46OmgxN2I4MzU1ZDE2OGU5YWY4tzuiAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3Nh +Z2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjptYWM6OktleVZlcmlm +aWNhdGlvbk1hY0V2ZW50Q29udGVudD4+OjpoOTYzZDkzYmI5MjIxYTJiM7g7ZGNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6Y2FsbDo6bmVnb3RpYXRlOjpDYWxsTmVnb3RpYXRl +RXZlbnRDb250ZW50Pjo6aGI4ZjNkMTk4OTY3Y2JiODO5O2ljb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cnVtYV9ldmVudHM6OnJvb206OnJlZGFjdGlvbjo6UmVkYWN0ZWRTeW5jUm9vbVJlZGFjdGlv +bkV2ZW50Pjo6aGU3MDU5Yjc3ZjQ2MmUzMmG6O5ABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1 +bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50 +czo6Y2FsbDo6YW5zd2VyOjpDYWxsQW5zd2VyRXZlbnRDb250ZW50Pj46OmhiODJiYjUyMzNkNGRh +ZDZkuzuWAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdp +bmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmNhbGw6Om5lZ290aWF0ZTo6Q2Fs +bE5lZ290aWF0ZUV2ZW50Q29udGVudD4+OjpoZTcwNDdiZGIyZWVjMjk1MLw7lgFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlr +ZUV2ZW50PHJ1bWFfZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlJvb21FbmNyeXB0ZWRFdmVudENv +bnRlbnQ+Pjo6aDQ1MWJjNDZiM2M2MjA0YTG9O5ABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1 +bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50 +czo6Y2FsbDo6aGFuZ3VwOjpDYWxsSGFuZ3VwRXZlbnRDb250ZW50Pj46OmgwZWEwY2RlNTMyMzNj +ZDZhvjuSAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdp +bmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OlJvb21N +ZXNzYWdlRXZlbnRDb250ZW50Pj46OmgzNjk3ZDFlNGViODBjMWEyvzuIAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZl +bnQ8cnVtYV9ldmVudHM6OnN0aWNrZXI6OlN0aWNrZXJFdmVudENvbnRlbnQ+Pjo6aGU2OWU2ZWQ0 +ZWU5NGI1YjDAO3Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6OnJvb206OlRodW1ibmFpbEluZm8+Pj46Omgx +Mjc0OTFlNjMyYmFlYTI0wTuCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246 +Ok9wdGlvbjxhbGxvYzo6Ym94ZWQ6OkJveDxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6YXVk +aW86OkF1ZGlvSW5mbz4+Pjo6aGU5MzZkMTcxOTEwY2UzMTTCO5YBY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxy +dW1hX2V2ZW50czo6cm9vbTo6cmVkYWN0aW9uOjpSb29tUmVkYWN0aW9uRXZlbnRDb250ZW50Pj46 +Omg4MWExZjllZWQwYjU1MTYzwztMY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRz +Ojpyb29tOjpKc29uV2ViS2V5Pjo6aDY5ZjJkMjgxNDUyYzU1Y2UuMcQ7XGNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpEZXZpY2U+ +OjpoZWQ3OTFjZmZlYTcyNWNhZC4xxTsrYWxsb2M6OnN5bmM6OkFyYzxUPjo6bmV3OjpoNTU5NDJh +ODRlODQyNmI4MsY7NGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+Ojphc19kZXJlZjo6aDM4YmFiYTNm +YmMxM2JiZmXHO3tjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmJh +Y2t1cHM6OkJhY2t1cE1hY2hpbmU6OnRlc3RfZGV2aWNlX3NpZ25hdHVyZXM6Ont7Y2xvc3VyZX19 +Pjo6aGQzMWIyMGQ5ZDY4MjQ1ZjXIO4MBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6c2ln +bl9kZXZpY2U6Ont7Y2xvc3VyZX19Pjo6aDEwMmVjNmMyOTVlMDU0OTHJO4kBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRi +b3VuZDo6T3V0Ym91bmRHcm91cFNlc3Npb246OmVuY3J5cHQ6Ont7Y2xvc3VyZX19Pjo6aDc2Yjc5 +YmEyNTkzYzUxMjbKO2Jjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OnZlcmlmaWNhdGlvbjo6c2FzOjpoZWxwZXJzOjpTYXNJZHM+OjpoOTc5YWFmZGE0NjVkMDZjZcs7 +e2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6Ym94 +ZWQ6OkJveDxydW1hX2V2ZW50czo6cmVsYXRpb246OlJlZmVyZW5jZUNodW5rPj4+OjpoZjE5YjZj +YWU2ZjhkMjE4Msw7RGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OmlvOjplcnJvcjo6RXJy +b3I+OjpoYzYyZmJmYWYxM2RiZTkxYi4xzTtUY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFf +ZXZlbnRzOjp1bnNpZ25lZDo6UmVkYWN0ZWRVbnNpZ25lZD46Omg1NTAyZWUwMjU1OTQ2ZWVkzjuF +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5n +OjpQcml2YXRlQ3Jvc3NTaWduaW5nSWRlbnRpdHk6OnNpZ25fZGV2aWNlOjp7e2Nsb3N1cmV9fT46 +OmgxMDJlYzZjMjk1ZTA1NDkxLjHPO6cBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnBp +bjo6UGluPGFsbG9jOjpib3hlZDo6Qm94PG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1h +Y2hpbmU6Okdvc3NpcE1hY2hpbmU6OmhhbmRsZV9rZXlfcmVxdWVzdDo6e3tjbG9zdXJlfX0+Pj46 +OmgzNzc5ZTlmZTY2ODgxNDE1LjPQO3Vjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6RGV2aWNlOjpnZXRfc2Vzc2lvbnM6Ont7Y2xv +c3VyZX19Pjo6aGFhNDA0ZTJiMGJlNjJjZWLRO3Jjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxs +b2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpvbmVfdGltZV9rZXlzOjpT +aWduZWRLZXk+Pjo6aGJkNjFhMGVjNjNhMzA5MWbSO19jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6VXNlckRldmljZXM+OjpoOGVk +NmRmNWQyZDlkMTVkM9M7YWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cm9v +bTo6ZW5jcnlwdGVkOjpNZWdvbG1WMUFlc1NoYTJDb250ZW50Pjo6aDE4YzdhYWE0NWRjOGQ3ZTXU +OythbGxvYzo6c3luYzo6QXJjPFQ+OjpuZXc6OmgwYTg4NGU2MGFhOGVmZDc41TsrYWxsb2M6OnN5 +bmM6OkFyYzxUPjo6bmV3OjpoMzNhMzk3MTIxYjljYzhlMdY7MGFsbG9jOjp2ZWM6OlZlYzxULEE+ +OjpyZXNlcnZlOjpoNjQzN2VkYzQ5Yjc2MDQzN9c7RGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxz +dGQ6OmlvOjplcnJvcjo6RXJyb3I+OjpoYzYyZmJmYWYxM2RiZTkxYi412DtlY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmxpYm9sbV9taWdyYXRpb246OlBp +Y2tsZWRTZXNzaW9uPjo6aDYwYTIyZTBiNjc5Mzg5MDnZO3Fjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bGlib2xtX21pZ3JhdGlvbjo6UGlja2xlZEluYm91 +bmRHcm91cFNlc3Npb24+OjpoMzJlMjE4NzkwZTg1NjVkOdo7MGFsbG9jOjp2ZWM6OlZlYzxULEE+ +OjpyZXNlcnZlOjpoMmNmODBkMmIzOGFmNTI3NNs7MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNl +cnZlOjpoMzM5YWUwZjk3ZTBkZTU0ONw7MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpo +NDA1Nzc2Mzg0OGJlZDYxM907MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoODgxYmU5 +YTA5YTI3YjVmZN47MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoOTM2M2MyOTI1Yjhk +YTMzY987MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoYTRlODliMGZkNzJiYWUxM+A7 +MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoYzEzNjAzZTI1NTJjMTJjZuE7JV9fd2Jn +X3BpY2tsZWRpbmJvdW5kZ3JvdXBzZXNzaW9uX2ZyZWXiO15jb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVzcG9uc2VzOjpFbmNyeXB0aW9uSW5mbz46Omg3 +OGVjYjhlMjY4MzdiZjFl4zsyYWxsb2M6OnN5bmM6OldlYWs8VCxBPjo6dXBncmFkZTo6aDA4MjI5 +ZTkwZDcwZTQ1Y2TkO3hjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6bWFjaGluZTo6T2xtTWFjaGluZTo6c2V0X3Jvb21fc2V0dGluZ3M6Ont7Y2xvc3VyZX19 +Pjo6aDNiYmEzOTdiZGJlZjA1N2PlO3pjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OmRlaHlkcmF0ZWRfZGV2aWNlczo6RGVoeWRyYXRlZERldmljZXM6OmNyZWF0ZTo6 +e3tjbG9zdXJlfX0+OjpoODEyMDI2MjgzYTI1ZjZmNuY7XGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpEZXZpY2U+OjpoZWQ3OTFj +ZmZlYTcyNWNhZC405ztNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVo +YXNoOjp7e2Nsb3N1cmV9fTo6aGFjZGI3OGIzOGQwZjgwNWboO01oYXNoYnJvd246OnJhdzo6UmF3 +VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoYjg5NDg2YTNiN2VmZDBh +Yuk7ZTxkaWdlc3Q6OmNvcmVfYXBpOjp3cmFwcGVyOjpDb3JlV3JhcHBlcjxUPiBhcyBkaWdlc3Q6 +OlVwZGF0ZT46OnVwZGF0ZTo6e3tjbG9zdXJlfX06OmgzMzQ5MzEyYzNkZWZhODVl6judATxtYXRy +aXhfc2RrX2NyeXB0b193YXNtOjplbmNyeXB0aW9uOjpFbmNyeXB0aW9uQWxnb3JpdGhtIGFzIGNv +cmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpFdmVudEVuY3J5cHRp +b25BbGdvcml0aG0+Pjo6ZnJvbTo6aDAxODQyMTI2OTJhYWFmNWTrO4ABPG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206OnZvZG96ZW1hYzo6RWQyNTUxOVB1YmxpY0tleSBhcyB3YXNtX2JpbmRnZW46OmNv +bnZlcnQ6OnRyYWl0czo6SW50b1dhc21BYmk+OjppbnRvX2FiaTo6aDA1NWM1N2I1MmQ4NjdhZGXs +O4ABPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnZvZG96ZW1hYzo6RWQyNTUxOVNpZ25hdHVyZSBh +cyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6SW50b1dhc21BYmk+OjppbnRvX2FiaTo6 +aDI0Yjc4OGIyNWRmZDAyZDHtO3k8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dm9kb3plbWFjOjpE +ZXZpY2VLZXkgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6 +aW50b19hYmk6OmhkZmQxN2JhNmRiNzUwNjkz7jt6PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnR5 +cGVzOjpNYXliZVNpZ25hdHVyZSBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6SW50 +b1dhc21BYmk+OjppbnRvX2FiaTo6aDYyMmEyYjZjMTk1NTI3NDTvO6IBPHJ1bWFfZXZlbnRzOjpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6VW5zaWduZWRE +ZUhlbHBlcj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0 +b3I+Ojp2aXNpdF9zdHI6Omg1Y2Q0NmFlNDRhM2QwODg18DuFAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWduaW5n +SWRlbnRpdHk6OnNpZ25fZGV2aWNlOjp7e2Nsb3N1cmV9fT46OmgxMDJlYzZjMjk1ZTA1NDkxLjLx +O1Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpSZWRhY3Rl +ZFVuc2lnbmVkPjo6aDU1MDJlZTAyNTU5NDZlZWQuMfI7VmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6OlJlZGFjdGVkVW5zaWduZWQ+OjpoNTUwMmVlMDI1NTk0 +NmVlZC4y8zvjATxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6cmVsYXRpb25fc2VyZGU6Ol86 +OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyb29tOjptZXNz +YWdlOjpyZWxhdGlvbl9zZXJkZTo6UmVwbGFjZW1lbnRKc29uUmVwcj46OmRlc2VyaWFsaXplOjpf +X0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmgwODc3MGYw +NjA2MGY1NTJh9Dsvc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF91ODo6aGIwN2Q3ODIzY2E0MmRk +MWP1OzBhbGxvYzo6dmVjOjpWZWM8VCxBPjo6cmVzZXJ2ZTo6aGE0MTIxZThhZmZlMmRmNTT2O+gB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50 +czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50PEM+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemU+ +OjpkZXNlcmlhbGl6ZTo6SGVscGVyPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpy +b29tX2tleV93aXRoaGVsZDo6Um9vbUtleVdpdGhoZWxkQ29udGVudD4+OjpoMWNkMTNmNmY3NzE4 +ZGIwN/c7U2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6 +QWNjb3VudFBpY2tsZT46Omg0NTE1MzFiZmMxOTg2YzZm+DtwY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6 +V2l0aGhlbGRIZWxwZXI+OjpoMzVkYTkzZTMyNDVkMDMxYvk7aWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQaWNrbGVkQ3Jvc3NTaWduaW5n +SWRlbnRpdHk+OjpoNzZmMDZlYmNhYWIzYmVlYfo7wQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3Jl +IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmdldF9p +bmJvdW5kX2dyb3VwX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fT46OmhhODNjZTU3YjJhY2Q2NDU5+zsw +YWxsb2M6OnZlYzo6VmVjPFQsQT46OnJlc2VydmU6Omg5YTIzYWI5NWEwYjYzNGZk/Dsvc2VyZGU6 +OmRlOjpWaXNpdG9yOjp2aXNpdF91ODo6aDY2NmU3MzY5ODIyZmNmMmL9O1Rjb3JlOjpzbGljZTo6 +c29ydDo6bWVyZ2Vfc29ydDo6UnVuVmVjPFJ1bkFsbG9jRixSdW5EZWFsbG9jRj46Om5ldzo6aDYz +ZGIxNGFkM2I3MzIxZWH+O9UBPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpvbG1f +djE6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRv +Ojp0eXBlczo6ZXZlbnRzOjpvbG1fdjE6Ok9sbVYxS2V5cz46OmRlc2VyaWFsaXplOjpfX0ZpZWxk +VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg5YWUyNjBhZTY4OWY0 +NGEw/zs3Y29yZTo6c2xpY2U6OjxpbXBsIFtUXT46OnN0YXJ0c193aXRoOjpoOGQ4ZDI2NTIxOTc1 +YTY5OIA8RjxbQV0gYXMgY29yZTo6c2xpY2U6OmNtcDo6U2xpY2VQYXJ0aWFsRXE8Qj4+OjplcXVh +bDo6aDVhOGE1Njk2MzBmNGFmMDaBPFRjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2Vfc29ydDo6UnVu +VmVjPFJ1bkFsbG9jRixSdW5EZWFsbG9jRj46Om5ldzo6aDAzZjA1YjI1OGY5ZGZlYWWCPD9jb3Jl +OjpzbGljZTo6c29ydDo6Y2hvb3NlX3Bpdm90Ojp7e2Nsb3N1cmV9fTo6aGFiMTUzZjFmYTExMzg4 +MmKDPFA8c3RkOjpzeW5jOjpwb2lzb246OlRyeUxvY2tFcnJvcjxUPiBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoMjdhYzU3M2ZhNTA1OWNmYYQ86wE8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZp +Y2F0aW9uOjpkb25lOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2 +ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmRvbmU6OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uRG9u +ZUV2ZW50Q29udGVudD46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6 +OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg5ZmNiODhmOTczZjczNjhjhTwvY29yZTo6b3B0aW9uOjpP +cHRpb248VD46Om1hcDo6aGVmYmU1MWExYzQ0OTQwYTOGPEljb3JlOjp0dXBsZTo6PGltcGwgY29y +ZTo6Y21wOjpQYXJ0aWFsRXEgZm9yIChVLFQpPjo6bmU6OmhhMjFmNGM2NGIzMjQ3ZWYwhzyqAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpjcnlwdG9f +YWxnb3JpdGhtczo6RGV2aWNlS2V5QWxnb3JpdGhtLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6 +Y3Jvc3Nfc2lnbmluZzo6Y29tbW9uOjpTaWduaW5nS2V5KT46Omg2ZmM5ZjdhMGU4YjdhNTcxiDxk +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246 +OnNhczo6aGVscGVyczo6U2FzSWRzPjo6aDg3ZmIyNjdhNjIxNGUyNTQuMYk8MmFsbG9jOjpzeW5j +OjpXZWFrPFQsQT46OnVwZ3JhZGU6OmgwODA0Y2Y5MjhiMjk3Y2Q3ijxIPGFsbG9jOjpzeW5jOjpB +cmM8VD4gYXMgY29yZTo6Y29udmVydDo6RnJvbTxUPj46OmZyb206Omg0MDQ0OTczMWJiMmMyYTY4 +izxIPGFsbG9jOjpzeW5jOjpBcmM8VD4gYXMgY29yZTo6Y29udmVydDo6RnJvbTxUPj46OmZyb206 +Omg1OGZmNmYyYTdiMWUyNmI1jDxIPGFsbG9jOjpzeW5jOjpBcmM8VD4gYXMgY29yZTo6Y29udmVy +dDo6RnJvbTxUPj46OmZyb206Omg5YzZiY2U2MjBmNmZhM2FhjTxIPGFsbG9jOjpzeW5jOjpBcmM8 +VD4gYXMgY29yZTo6Y29udmVydDo6RnJvbTxUPj46OmZyb206OmhiMWQ0Mzc5NjcyY2ZiOTlmjjxI +PGFsbG9jOjpzeW5jOjpBcmM8VD4gYXMgY29yZTo6Y29udmVydDo6RnJvbTxUPj46OmZyb206Omhk +M2I1MzI0YmEyMzg0Y2FhjzxIPGFsbG9jOjpzeW5jOjpBcmM8VD4gYXMgY29yZTo6Y29udmVydDo6 +RnJvbTxUPj46OmZyb206OmhlNmNhMDE2OThmOTA1MzAzkDxIPGFsbG9jOjpzeW5jOjpBcmM8VD4g +YXMgY29yZTo6Y29udmVydDo6RnJvbTxUPj46OmZyb206OmhmNjk2NzQ1OTJlN2UzYjljkTxCZXll +YmFsbDo6c2hhcmVkOjpPYnNlcnZhYmxlV3JpdGVHdWFyZDxULEw+OjpzZXQ6Omg5YWZjZmMxYzBh +Yjk4NGRjkjx7Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6Q29tbW9uV2l0aGhlbGRDb2RlQ29udGVudD46 +OmgxYzY4YjAxMGFkMzI3YTRlkzxvY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleTo6TWVnb2xtVjFBZXNTaGEyQ29udGVudD46 +OmhiY2RiOTM4ZWNiOTUzZDIxlDzaATxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0 +YXJ0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6a2V5 +Ojp2ZXJpZmljYXRpb246OnN0YXJ0OjpSZWNpcHJvY2F0ZVYxQ29udGVudD46OmRlc2VyaWFsaXpl +OjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmhmNTVj +ZDAxM2U5MzE5MTdllTwrYWxsb2M6OnN5bmM6OkFyYzxUPjo6bmV3OjpoNmRjOGIxZWZmMTFhYjI1 +YpY8ODx1OCBhcyBzdWJ0bGU6OkNvbnN0YW50VGltZUVxPjo6Y3RfZXE6OmhlYmY3YjJiYTkwZjhl +OTkylzxXaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OmZpbmRfb3JfZmluZF9pbnNlcnRf +c2xvdDo6e3tjbG9zdXJlfX06OmhjZGY2ZDc5YWY1ZWVjMmVimDxXaGFzaGJyb3duOjpyYXc6OlJh +d1RhYmxlPFQsQT46OmZpbmRfb3JfZmluZF9pbnNlcnRfc2xvdDo6e3tjbG9zdXJlfX06OmgxNDli +NmMxZTgxMDYyMWRhmTxXaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OmZpbmRfb3JfZmlu +ZF9pbnNlcnRfc2xvdDo6e3tjbG9zdXJlfX06OmhmOTFkODJhZTY1ZWFiYzEymjxNaGFzaGJyb3du +OjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aDAxYjJi +MDFmNGRmOThhY2KbPE1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhh +c2g6Ont7Y2xvc3VyZX19OjpoYWQ3NTVlNzM2ODVjYzkzY5w8TWhhc2hicm93bjo6cmF3OjpSYXdU +YWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmhjMTBlOTFhOTZkMTdiOGFk +nTxNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1 +cmV9fTo6aDJjMGJlZDEzOTRmMTVjOTaePE1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6 +cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoMDBiMWE0Y2FkOTcxZTZjN588TWhhc2hicm93 +bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmhkOTdm +OGQ1NzRkZjYxMWJloDxNaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVo +YXNoOjp7e2Nsb3N1cmV9fTo6aDM5ZmM1NDI0NGU1Zjg5ZDGhPE1oYXNoYnJvd246OnJhdzo6UmF3 +VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoMGQxYmI2MDYxMTRjNmMz +NKI8ZGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0 +aW9uOjpzYXM6OmhlbHBlcnM6OlNhc0lkcz46Omg4N2ZiMjY3YTYyMTRlMjU0LjKjPGJjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6 +U2FzVjFDb250ZW50Pjo6aGZlM2M1ZDEzMDMwYjFhYjMuMaQ8K2FsbG9jOjpzeW5jOjpBcmM8VD46 +Om5ldzo6aDEyODliNzAwMmVmY2Q5ZjClPCthbGxvYzo6c3luYzo6QXJjPFQ+OjpuZXc6Omg1OWNk +YTkxZTdjMTgzYjVkpjwrYWxsb2M6OnN5bmM6OkFyYzxUPjo6bmV3OjpoN2FhMTliYzRhZWIwYmQ2 +NKc8K2FsbG9jOjpzeW5jOjpBcmM8VD46Om5ldzo6aDdjOTcwZTgwOTVmNzFiMmKoPC9zZXJkZTo6 +ZGU6OlZpc2l0b3I6OnZpc2l0X3U4OjpoMmQ3ODMwYmFlNzY5MTQxY6k8zQFtYXRyaXhfc2RrX2Ny +eXB0bzo6dmVyaWZpY2F0aW9uOjpldmVudF9lbnVtczo6PGltcGwgY29yZTo6Y29udmVydDo6VHJ5 +RnJvbTwmbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6ZXZlbnRfZW51bXM6OkFueUV2 +ZW50PiBmb3IgbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6Rmxvd0lkPjo6dHJ5X2Zy +b206Omg5NWNjZDQzNDA4ZGJiNDlhqjxxPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246 +OnNhczo6c2FzX3N0YXRlOjpTdXBwb3J0ZWRNYWNNZXRob2QgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDNhMjg3YmE3M2RlN2I5MjirPCthbGxvYzo6c3luYzo6QXJjPFQ+OjpuZXc6OmgwZmU3 +Y2Y2OWJmZThmZWFjrDwrYWxsb2M6OnN5bmM6OkFyYzxUPjo6bmV3OjpoMTRkMDZhY2IwNzMwOWNi +Mq08MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoZjA0NDBiZDA5NjFjOTM1MK48MGFs +bG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoOWVjNGY1ZTNlNDY0NGRjOK88MGFsbG9jOjp2 +ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoZTk0ZmFkNDY0ZDRjNjcwN7A8MGFsbG9jOjp2ZWM6OlZl +YzxULEE+OjpyZXNlcnZlOjpoNDhlOGRjMzA3MTdjYzE2ObE8MGFsbG9jOjp2ZWM6OlZlYzxULEE+ +OjpyZXNlcnZlOjpoZTEyMTM2M2Y1NTJhMjcxMLI8MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNl +cnZlOjpoZjVlYjcyNTZjNDNkMzZlObM8MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpo +NzYxMTBjMDM5NDk4MWFjMbQ8MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoZThlNjRk +NTJlZTQ0MzhiNLU8MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoYTBiNTUzMzNjNmYw +YzU2NLY8MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoMDZkOTJjM2YxOTEzNDI0Y7c8 +MGFsbG9jOjp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoNTFjMDUzNTRjYmEzYTUxYbg8MGFsbG9j +Ojp2ZWM6OlZlYzxULEE+OjpyZXNlcnZlOjpoYjExZTBlMmYwZjllYTM1Y7k8ggE8dHJhY2luZ19z +dWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6 +c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OnJlY29yZF9mb2xsb3dzX2Zyb206Omg3OTFmY2EzN2Y4 +MzViNjM4ujwpc3RkOjp0aHJlYWQ6OnBhbmlja2luZzo6aDJkYzFmYmQyOGQ1MmRhNmO7PDBhbGxv +Yzo6dmVjOjpWZWM8VCxBPjo6cmVzZXJ2ZTo6aGQ2MWZkZmMzNWMxMTdjMDO8PFNjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjpvbG06OmFjY291bnQ6OkFjY291bnRQaWNrbGU+Ojpo +OTkyNmUzMzNmNzA5OTlkOL08Rzxwcm9zdDo6ZW5jb2Rpbmc6OldpcmVUeXBlIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6Omg3MjFmM2Q3YTk2ZGVhM2UwvjzFATx2b2RvemVtYWM6Om9sbTo6c2Vz +c2lvbl9jb25maWc6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1h +Yzo6b2xtOjpzZXNzaW9uX2NvbmZpZzo6U2Vzc2lvbkNvbmZpZz46OmRlc2VyaWFsaXplOjpfX0Zp +ZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg2YTJlZDQxYzhl +NzcwZGE2vzzLATx2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9jb25maWc6Ol86OjxpbXBsIHNl +cmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6bWVnb2xtOjpzZXNzaW9uX2NvbmZp +Zzo6U2Vzc2lvbkNvbmZpZz46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6 +ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmgzNzg2NzFjZGMzOTdjOGZjwDzZATx2b2RvemVtYWM6 +Om9sbTo6c2Vzc2lvbjo6cmVjZWl2ZXJfY2hhaW46Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyZWNlaXZlcl9jaGFpbjo6TWVzc2Fn +ZUtleVN0b3JlPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6Vmlz +aXRvcj46OnZpc2l0X3N0cjo6aGRlODMzODFiNWNlYzFmMmPBPMsBPHZvZG96ZW1hYzo6b2xtOjpz +ZXNzaW9uOjpyb290X2tleTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9k +b3plbWFjOjpvbG06OnNlc3Npb246OnJvb3Rfa2V5OjpSZW1vdGVSb290S2V5Pjo6ZGVzZXJpYWxp +emU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0cjo6aGYy +YzUyZmM0ODU2Mzg1MjPCPGVjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjpvbG06 +Om1lc3NhZ2VzOjpwcmVfa2V5OjpQcm90b0J1ZlByZUtleU1lc3NhZ2U+OjpoMDUyMzI0Y2FiYTZh +YTZhOMM8STxwcm9zdDo6ZW5jb2Rpbmc6OldpcmVUeXBlIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6Omg3MjFmM2Q3YTk2ZGVhM2UwLjHEPEk8cHJvc3Q6OmVuY29kaW5nOjpXaXJlVHlwZSBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzIxZjNkN2E5NmRlYTNlMC4yxTy0ATx2b2RvemVtYWM6 +Om9sbTo6c2Vzc2lvbjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3pl +bWFjOjpvbG06OnNlc3Npb246OkNoYWluU3RvcmU+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0 +b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoODNkY2UzNGM2Y2FlMWEyM8Y8 +czx2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6U2Vzc2lvbjo6ZnJvbV9saWJvbG1fcGlja2xlOjpT +ZW5kZXJDaGFpbiBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVyb2l6ZTo6aGEyZDQ2NDUzYWZhNmUw +ZTDHPFdoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6ZmluZF9vcl9maW5kX2luc2VydF9z +bG90Ojp7e2Nsb3N1cmV9fTo6aGNlNzI0ZTBjNTI1NWQ0YjHIPE1oYXNoYnJvd246OnJhdzo6UmF3 +VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoZDI0NWFiNjJiMDQxYmRh +Mck8TWhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9z +dXJlfX06OmgwYjhjODFjM2FkZjcyZjE4yjxePGN1cnZlMjU1MTlfZGFsZWs6OnNjYWxhcjo6U2Nh +bGFyIGFzIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4PHVzaXplPj46OmluZGV4OjpoYzQ3ZjI0MmZi +NjVhMDFhZss8T2NvcmU6Oml0ZXI6OmFkYXB0ZXJzOjp6aXA6OlRydXN0ZWRSYW5kb21BY2Nlc3NO +b0NvZXJjZTo6c2l6ZTo6aDZmNGU2NmJmNGRhNmIzNDHMPH9zZXJkZV9qc29uOjpyYXc6OjxpbXBs +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpib3hlZDo6Qm94PHNlcmRlX2pzb246 +OnJhdzo6UmF3VmFsdWU+Pjo6ZGVzZXJpYWxpemU6Omg0OTg3MDdjZWQzODA3NTMwzTxLcnVtYV9l +dmVudHM6OnJvb206OnJlZGFjdGlvbjo6Um9vbVJlZGFjdGlvblVuc2lnbmVkOjpuZXc6Omg1Mzdm +M2NjMmQ1OWZhZDA5zjxdPHJ1bWFfaWRlbnRpZmllcnNfdmFsaWRhdGlvbjo6ZXJyb3I6Ok14Y1Vy +aUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MTUyM2YxYTFjMjZhNjNizzxfPHJ1 +bWFfaWRlbnRpZmllcnNfdmFsaWRhdGlvbjo6ZXJyb3I6Ok1hdHJpeElkRXJyb3IgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aGMzYmRmOTA5ZWM1YzlkNmLQPF88cnVtYV9pZGVudGlmaWVyc192 +YWxpZGF0aW9uOjplcnJvcjo6TWF0cml4VG9FcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoM2U1OTdjYjBhZDhmOWVhONE8YDxydW1hX2lkZW50aWZpZXJzX3ZhbGlkYXRpb246OmVycm9y +OjpNYXRyaXhVcmlFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDRiNDUwOTYyZDJk +ODRlZtI8NWpzX2ludDo6dWludDo6VUludDo6c2F0dXJhdGluZ19zdWI6OmhlY2U3NjQzYTcwMWNj +ODg40zxuPHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OkRlZmF1bHRDYWxsc2l0ZSBhcyB0cmFjaW5n +X2NvcmU6OmNhbGxzaXRlOjpDYWxsc2l0ZT46OnNldF9pbnRlcmVzdDo6aGUyNDZiODIyZDIyMmFk +ODLUPFQ8c3RkOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxUPiBhcyBjb3JlOjpkZWZhdWx0OjpEZWZh +dWx0Pjo6ZGVmYXVsdDo6aDliMGJkMjRmYzE2N2Q3YjHVPEU8aHR0cDo6dXJpOjpJbnZhbGlkVXJp +IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGQxNjA5OWQ2OGZhMTVlZTXWPIIBPDxzZXJk +ZTo6ZGU6OldpdGhEZWNpbWFsUG9pbnQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpMb29r +Rm9yRGVjaW1hbFBvaW50IGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoYTM1MDdh +OTMzNjI2YzgwNdc8P3dhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Omludm9rZTNfbXV0 +OjpoMTAxNWI3Y2ZhYTM1MDQ2Ndg8P3dhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Omlu +dm9rZTNfbXV0OjpoNTA0ZTY4N2U1YjE4MDc4Zdk8P3dhc21fYmluZGdlbjo6Y29udmVydDo6Y2xv +c3VyZXM6Omludm9rZTNfbXV0OjpoODVmMTk3YzVkM2Y0OWE3Ydo8P3dhc21fYmluZGdlbjo6Y29u +dmVydDo6Y2xvc3VyZXM6Omludm9rZTNfbXV0OjpoOWIwNjJhYTJlYmRlZjEyMts8P3dhc21fYmlu +ZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Omludm9rZTNfbXV0OjpoZGE2M2RhMWRjNGU0ZDNkYtw8 +ZWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFu +ZGxlcjo6Rm9ybWF0U3RyaW5nUGF5bG9hZD46Omg3YWE2NDc5NzMwMThkM2Vh3TxHPHN0ZDo6aW86 +OmVycm9yOjpFcnJvcktpbmQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGUwNjVhZDg2YWM4 +MDk1MjnePDloYXNoYnJvd246OnJhdzo6RmFsbGliaWxpdHk6OmFsbG9jX2Vycjo6aDNkNmJjNGZj +ZDI2ZWZiNGLfPKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDBiMGMwM2Ni +MWYxNGMwNTDgPKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDIwMDMyMmU5 +MTdiOGEzMjThPKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDM2NTBmYjc5 +MzliOWQ5MGHiPKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDc0Y2FiNzY2 +MjYyNGYwOWLjPKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDhkMTlkMjcw +ZTE4NmY4YjXkPIoBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6 +U3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6Ol9jdXN0b206OkN1c3RvbU1lc3NhZ2VM +aWtlRXZlbnRDb250ZW50Pj46Omg4MjdiY2QyNDUyZjVhYjZm5TyIAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZl +bnRzOjpjYWxsOjphbnN3ZXI6OkNhbGxBbnN3ZXJFdmVudENvbnRlbnQ+Pjo6aDMzNjA3MGE2YjA0 +MWM4Y2LmPIgBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6U3lu +Y01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmNhbGw6Omludml0ZTo6Q2FsbEludml0ZUV2 +ZW50Q29udGVudD4+OjpoNTZjNmVjYTQ5N2YxNzdiMuc8iAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cnVtYV9ldmVudHM6OmtpbmRzOjpTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6 +Y2FsbDo6aGFuZ3VwOjpDYWxsSGFuZ3VwRXZlbnRDb250ZW50Pj46OmhmOTY3MmViMmYxZWMyNzI5 +6DyQAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlN5bmNNZXNz +YWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjpjYW5kaWRhdGVzOjpDYWxsQ2FuZGlkYXRl +c0V2ZW50Q29udGVudD4+OjpoZjgxMTY5ZTliMGYxZDZiNuk8jgFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8cnVtYV9ldmVudHM6OmtpbmRzOjpTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50 +czo6Y2FsbDo6bmVnb3RpYXRlOjpDYWxsTmVnb3RpYXRlRXZlbnRDb250ZW50Pj46Omg3ZmRjOTBk +NzMxMDdjZWU26jyIAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6 +OlN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjpyZWplY3Q6OkNhbGxSZWpl +Y3RFdmVudENvbnRlbnQ+Pjo6aGQ3YjAxZTMyZjAzZjFmMDDrPJUBY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6U3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVu +dHM6OmNhbGw6OnNlbGVjdF9hbnN3ZXI6OkNhbGxTZWxlY3RBbnN3ZXJFdmVudENvbnRlbnQ+Pjo6 +aDhlNTYxZWFhOWFhM2I1MTXsPJ4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRz +OjpraW5kczo6U3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0 +aW9uOjpyZWFkeTo6S2V5VmVyaWZpY2F0aW9uUmVhZHlFdmVudENvbnRlbnQ+Pjo6aDBkZjQ0OWZk +YjdmYTg3NTDtPJ4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6 +U3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFy +dDo6S2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnQ+Pjo6aDNhMmNhMDExNDNkOTc5NmLu +PKABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6U3luY01lc3Nh +Z2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpjYW5jZWw6OktleVZl +cmlmaWNhdGlvbkNhbmNlbEV2ZW50Q29udGVudD4+OjpoNzgzOGNhZTc0ZWY5ZTVjZu88oAFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtpbmRzOjpTeW5jTWVzc2FnZUxpa2VF +dmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmFjY2VwdDo6S2V5VmVyaWZpY2F0 +aW9uQWNjZXB0RXZlbnRDb250ZW50Pj46OmhjZjExZDdhMTM3YjJjYzcw8DyaAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1 +bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6a2V5OjpLZXlWZXJpZmljYXRpb25LZXlFdmVu +dENvbnRlbnQ+Pjo6aDUxOTc1OTJiNGQxMGUwZWbxPJoBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHJ1bWFfZXZlbnRzOjpraW5kczo6U3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6Omtl +eTo6dmVyaWZpY2F0aW9uOjptYWM6OktleVZlcmlmaWNhdGlvbk1hY0V2ZW50Q29udGVudD4+Ojpo +MTM1MDg5MzY5NTJkOWE3MfI8nAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6 +OmtpbmRzOjpTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRp +b246OmRvbmU6OktleVZlcmlmaWNhdGlvbkRvbmVFdmVudENvbnRlbnQ+Pjo6aGYwNmQ4YjFkMDhi +MjMyNDfzPIIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6U3lu +Y01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OnJlYWN0aW9uOjpSZWFjdGlvbkV2ZW50Q29u +dGVudD4+OjpoZTAwOTE0MzRmNWY3NGM3N/Q8jgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVt +YV9ldmVudHM6OmtpbmRzOjpTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6cm9vbTo6 +ZW5jcnlwdGVkOjpSb29tRW5jcnlwdGVkRXZlbnRDb250ZW50Pj46OmgzMDcwZDI1N2RhZGRiNmRh +9TyKAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlN5bmNNZXNz +YWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpSb29tTWVzc2FnZUV2ZW50 +Q29udGVudD4+OjpoZmUxOTAyN2EzNzUzYjlkN/Y8YWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6cm9vbTo6cmVkYWN0aW9uOjpTeW5jUm9vbVJlZGFjdGlvbkV2ZW50Pjo6aGQ0 +ZDcxZjZlMGEyMGM3OTj3PIABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpr +aW5kczo6U3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OnN0aWNrZXI6OlN0aWNrZXJF +dmVudENvbnRlbnQ+Pjo6aGVhYTIyMjJkMjA3M2VkOGL4PHdjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnNlcnZl +cl9ub3RpY2U6OkxpbWl0VHlwZT4+OjpoY2U5MjM3YzM4MmQ3MjliNvk8emNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25T +dG9yZTo6c2F2ZV9jaGFuZ2VzOjp7e2Nsb3N1cmV9fT46OmhmMmZiZWNmZjA4MGUyNTY5+jyEAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2 +aWNlOjpEZXZpY2U6OnJlcXVlc3RfdmVyaWZpY2F0aW9uX2hlbHBlcjo6e3tjbG9zdXJlfX0+Ojpo +Mzk0ZDlhZGY4OTA2ZWVjNvs8hwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dG9raW86OnN5bmM6 +OnJ3bG9jazo6UndMb2NrPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmVDYWNoZT46OnJl +YWRfb3duZWQ6Ont7Y2xvc3VyZX19Pjo6aGYwMDExNDUxYjMwNmQwMzD8PFRjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6Rmxvd0lkPjo6aGEz +MjQ5NTVjOTA4NTBjODH9PKIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjpzZXNzaW9uX21hbmFnZXI6Omdyb3VwX3Nlc3Npb25zOjpHcm91cFNlc3Npb25NYW5hZ2Vy +OjpjcmVhdGVfb3V0Ym91bmRfZ3JvdXBfc2Vzc2lvbjo6e3tjbG9zdXJlfX0+OjpoNmQyNjVkNDg0 +OGI1ZThmYy4y/jzdAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OlN0b3JlOjppbXBvcnRfZXhwb3J0ZWRfcm9vbV9rZXlzPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmltcG9ydF9leHBvcnRlZF9yb29tX2tleXNfaGVs +cGVyOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Ojp7e2Nsb3N1cmV9fT46OmgzYjQ3ZWQ1M2Ri +MDY5YzA4/zxXY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3Nz +aXBpbmc6OlNlY3JldEluZm8+OjpoYjdmZThiYTA3MTk5YTZlOS4xgD21AWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6UmVx +dWVzdFN0YXRlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpSZWFk +eT46OmdlbmVyYXRlX3FyX2NvZGU6Ont7Y2xvc3VyZX19Pjo6aDYxM2JhMWUxOTFjOWMxYmWBPVZj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6U2lnbmF0 +dXJlRXJyb3I+OjpoZjg4MThhOWQ1OTY2NGViOYI9sgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlJlcXVlc3RTdGF0ZTxt +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6UmVhZHk+OjpyZWNlaXZl +X3N0YXJ0Ojp7e2Nsb3N1cmV9fT46Omg2NTE4YzkyZDYyOTc3N2Yxgz0tYWxsb2M6OnN5bmM6OkFy +YzxUPjo6bmV3OjpoNTU5NDJhODRlODQyNmI4Mi4yhD2FAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWduaW5nSWRl +bnRpdHk6OmltcG9ydF9zZWNyZXQ6Ont7Y2xvc3VyZX19Pjo6aGRmMTU4ZjAzMGY1MzIxYzSFPbIB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpk +ZXZpY2U6OkRldmljZTo6ZW5jcnlwdDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +c2VjcmV0X3NlbmQ6OlNlY3JldFNlbmRDb250ZW50Pjo6e3tjbG9zdXJlfX0+OjpoNDAxNTBjYmUx +M2NjY2M0YYY9fGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Z29z +c2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpzaGFyZV9zZWNyZXQ6Ont7Y2xvc3VyZX19 +Pjo6aDZjMTc1NzdlYTU5NDAzOTWHPb8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OkRldmljZTo6ZW5jcnlwdDxtYXRyaXhfc2Rr +X2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6Zm9yd2FyZGVkX3Jvb21fa2V5OjpGb3J3YXJkZWRSb29t +S2V5Q29udGVudD46Ont7Y2xvc3VyZX19Pjo6aGQxMDZjZmE3Y2M3NjljNDmIPYYBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdv +c3NpcE1hY2hpbmU6OnNhdmVfb3V0Z29pbmdfa2V5X2luZm86Ont7Y2xvc3VyZX19Pjo6aGE5YmUy +MmYwNDllNGQ1OWWJPWljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjpTdG9yZTo6c2F2ZV9jaGFuZ2VzOjp7e2Nsb3N1cmV9fT46Omg5MGNiMTEwZmI2YTY3 +YjI2LjGKPUNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dHJhY2luZzo6c3Bhbjo6RW50ZXJlZD46 +OmhlZWEyZWI3NDFlMTEwOThjiz1hY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRz +Ojpyb29tOjplbmNyeXB0ZWQ6OkVuY3J5cHRlZEV2ZW50U2NoZW1lPjo6aDIyNDIzZGE0Mzc5MWNj +OGIuN4w9STxjb3JlOjpvcHRpb246Ok9wdGlvbjxUPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+Ojpj +bG9uZTo6aGE4MmRhZmY4NTMyYzAzM2WNPVhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3pl +bWFjOjp0eXBlczo6ZWQyNTUxOTo6U2lnbmF0dXJlRXJyb3I+OjpoZjg4MThhOWQ1OTY2NGViOS40 +jj02YWxsb2M6OmFsbG9jOjpHbG9iYWw6OmFsbG9jX2ltcGw6Omg0ODQ1YzdiMGM5ZDg1MjRlLjI1 +jz0Ob2xtbWFjaGluZV9uZXeQPX88bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6Oktl +eXNDbGFpbVJlcXVlc3QgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNt +QWJpPjo6aW50b19hYmk6OmgyYjYyNTliMDY0NTVkMjJjkT12PHRyYWNpbmdfc3Vic2NyaWJlcjo6 +bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6 +OlN1YnNjcmliZXI+OjplbmFibGVkOjpoYTkyMmRlNDU0ZjJhZDk4OJI9NWNvcmU6OnJlc3VsdDo6 +UmVzdWx0PFQsRT46Om1hcF9lcnI6Omg1MTM5MGI4NDA0NjNmMDU1kz3lAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3Jl +OjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6 +aW5ib3VuZDo6SW5ib3VuZEdyb3VwU2Vzc2lvbj4sbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpl +cnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4+Pjo6aDgxOTNjM2EwMGVlNTJmODmUPWhjb3JlOjpvcHM6 +OmZ1bmN0aW9uOjppbXBsczo6PGltcGwgY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5NdXQ8QT4gZm9y +ICZtdXQgRj46OmNhbGxfbXV0OjpoNzAwOGNkMWMwMDk0ZTk4M5U95gFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0 +b3JlRXJyb3I8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6TWVtb3J5U3Rv +cmU+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNh +dmVfY2hhbmdlczo6e3tjbG9zdXJlfX0+OjpoYjE3MWU0MjQxZjZlMDM2ZZY96gFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNy +eXB0b1N0b3JlRXJyb3I8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1vcnlzdG9yZTo6TWVt +b3J5U3RvcmU+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9y +ZT46OnNldF9jdXN0b21fdmFsdWU6Ont7Y2xvc3VyZX19Pjo6aDRjNWQ5ZTRlM2M1Y2EwMjCXPe4B +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6bWVtb3J5 +c3RvcmU6Ok1lbW9yeVN0b3JlPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6 +Q3J5cHRvU3RvcmU+OjpzYXZlX3BlbmRpbmdfY2hhbmdlczo6e3tjbG9zdXJlfX0+OjpoMmVmNGJi +OTQ4NDc3YTljZpg9Ondhc21fYmluZGdlbjo6Y2xvc3VyZTo6Q2xvc3VyZTxUPjo6d3JhcDo6aGZm +MTY0ZWRjYzU3MmYzZTmZPdsBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfaW5k +ZXhlZGRiOjpjcnlwdG9fc3RvcmU6Om1pZ3JhdGlvbnM6OmRvX3NjaGVtYV91cGdyYWRlPG1hdHJp +eF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6Om1pZ3JhdGlvbnM6OnYwX3RvX3Y1OjpzY2hl +bWFfYWRkOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Ojp7e2Nsb3N1cmV9fT46OmhkOWY1ZWEx +OWIzOTFiZTc3mj1XaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OmZpbmRfb3JfZmluZF9p +bnNlcnRfc2xvdDo6e3tjbG9zdXJlfX06OmhmOWIxZDdjZWQ4YzBkZmFhmz14PG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OmlkZW50aWZpZXJzOjpSb29tSWQgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0 +Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6Omg5OGU0NjJjMzhiOTVmYmM2nD1PPGFs +bG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9w +OjpoMDdiMTFiZWJjYjc4ZjBjMp09TzxhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT4gYXMgY29y +ZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDJhNjY3OWQwNzkwZTc3MmKePVpjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8aW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfZGF0YWJhc2U6OklkYkRhdGFi +YXNlPjo6aDY2YTFkODA2ZmUwOTZmMzSfPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgwMGJiOGZlOWNhZDk5YTAxoD1PPGFsbG9j +OjpyYXdfdmVjOjpSYXdWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpo +MGI2MDAzODVlNDI2MWEwZKE9TzxhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT4gYXMgY29yZTo6 +b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDExZjAwOGZlNDA0YTUxN2GiPU88YWxsb2M6OnJhd192 +ZWM6OlJhd1ZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgxZTY3Mjhl +MTEyNGVjNjI5oz1PPGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRy +b3A6OkRyb3A+Ojpkcm9wOjpoMjA0NjkwMDZmNzg3ZjNlYqQ9TzxhbGxvYzo6cmF3X3ZlYzo6UmF3 +VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDI3OWM4NzM5NmJjMTUw +MTGlPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6OmgyZGRjYTczZmI2NDUzNWU5pj1PPGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxB +PiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNDJiM2Q1NTA5NDcwZDE3Yqc9Tzxh +bGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJv +cDo6aDVhNmY4Y2UyNGY4NjE3YTCoPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFzIGNv +cmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg2ZGMzODg5OGE0M2ZjZmFlqT1PPGFsbG9jOjpy +YXdfdmVjOjpSYXdWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNzQ0 +OTVjZDhkYzc3ZTk4Zao9TzxhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT4gYXMgY29yZTo6b3Bz +Ojpkcm9wOjpEcm9wPjo6ZHJvcDo6aDdlMzdhZWI4ZDY2NTM2ZjSrPU88YWxsb2M6OnJhd192ZWM6 +OlJhd1ZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhhMTY0MzYxMjAw +YjVhOGExrD1PPGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6 +OkRyb3A+Ojpkcm9wOjpoYTMwNWI5NTQyMjEwYWNjMK09TzxhbGxvYzo6cmF3X3ZlYzo6UmF3VmVj +PFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGEzOGI4NWMxYjhjMmY0NmOu +PU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46 +OmRyb3A6OmhhM2E4MDljY2IyZmY1MWUwrz1PPGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPiBh +cyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYWZlMDczNDc5NTZjZmEyMLA9TzxhbGxv +Yzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6 +aGIyNWJjOTYzY2UzMzMyY2SxPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFzIGNvcmU6 +Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhjMDNkN2QxMDBlYzJjNGU2sj2JATxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpkZWh5ZHJhdGVkX2RldmljZXM6OlJlaHlkcmF0ZWREZXZpY2UgYXMgd2Fz +bV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6Omg4MjEx +MjE1Y2I1MGE0NjQ0sz1QY29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6Y21wOjpQYXJ0aWFs +T3JkPCZCPiBmb3IgJkE+OjpsdDo6aDY2Y2JhYjhlMmRmNDIyYTS0PXxjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uU3Rv +cmU6OnNhdmVfY2hhbmdlczo6e3tjbG9zdXJlfX0+OjpoZjJmYmVjZmYwODBlMjU2OS4xtT2IAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNo +aW5lOjpHb3NzaXBNYWNoaW5lOjpzYXZlX291dGdvaW5nX2tleV9pbmZvOjp7e2Nsb3N1cmV9fT46 +OmhhOWJlMjJmMDQ5ZTRkNTllLjG2PS5zZXJkZV9qc29uOjp2YWx1ZTo6dG9fdmFsdWU6OmhjY2Rh +NGUyYjRiZGIwZTEytz0xYW55aG93OjplcnJvcjo6b2JqZWN0X2Rvd25jYXN0OjpoMGM3YzMyNmIw +MGE3NTlhMbg9MWFueWhvdzo6ZXJyb3I6Om9iamVjdF9kb3duY2FzdDo6aDFhYjAxMDI5ZWQwNTA1 +Zjm5PTFhbnlob3c6OmVycm9yOjpvYmplY3RfZG93bmNhc3Q6Omg0NDVlNTljNTc0MWFlMTE5uj0x +YW55aG93OjplcnJvcjo6b2JqZWN0X2Rvd25jYXN0OjpoNDQ2Y2Y5NjFiZTFiYjg2OLs9MWFueWhv +dzo6ZXJyb3I6Om9iamVjdF9kb3duY2FzdDo6aDUxZGQ3MjEzYjQ0NGMzZmG8PTFhbnlob3c6OmVy +cm9yOjpvYmplY3RfZG93bmNhc3Q6Omg2M2Q3YjYxYTg4ZmQxYzc4vT0xYW55aG93OjplcnJvcjo6 +b2JqZWN0X2Rvd25jYXN0OjpoODU2ZDZmZWM3YmQ2NmYwZL49MWFueWhvdzo6ZXJyb3I6Om9iamVj +dF9kb3duY2FzdDo6aDhhMDA3Y2RhMjI5NTNlMmW/PTFhbnlob3c6OmVycm9yOjpvYmplY3RfZG93 +bmNhc3Q6OmhjZGMzM2Y1Yzc2Y2FmMDkwwD0xYW55aG93OjplcnJvcjo6b2JqZWN0X2Rvd25jYXN0 +OjpoZTYwOTc1YzZlYmNhYmVjY8E9MWFueWhvdzo6ZXJyb3I6Om9iamVjdF9kb3duY2FzdDo6aGVj +ZjUxNDlkNGVhYWQ2ZjfCPTFhbnlob3c6OmVycm9yOjpvYmplY3RfZG93bmNhc3Q6OmhmNmY2N2Iw +ZmViNTBhNmUxwz0xY29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPjo6bWFwOjpoM2NiNWJlNjkxMDhl +MmZkYcQ9NWNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46Om1hcF9lcnI6Omg2MTMwMDczMDU1ZTM1 +N2I3xT1YY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHdhc21f +YmluZGdlbjo6SnNWYWx1ZT4+OjpoMmJhMTVjNWJhZTIyNzNiZcY9TzxhbGxvYzo6cmF3X3ZlYzo6 +UmF3VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDdhNTlkYjk3MzA3 +YjE0ZWXHPW9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8YWxs +b2M6OnZlYzo6VmVjPHU4PixybXBfc2VyZGU6OmRlY29kZTo6RXJyb3I+Pjo6aGQ1YjlkYWYyNmQ1 +ODkzMTHIPYcBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PG1h +dHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6Q2lwaGVyVGV4dEluZm8scm1wX3NlcmRlOjpkZWNv +ZGU6OkVycm9yPj46OmhlMTM1MTYwZTFmNmQ5NDdlyT07d2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojpj +bG9zdXJlczo6aW52b2tlMTo6aGMxNDk1NDNmNjA2NDQ3ZGLKPXk8ZHluIGNvcmU6Om9wczo6ZnVu +Y3Rpb246OkZuPChBLCk+K091dHB1dCA9IFIgYXMgd2FzbV9iaW5kZ2VuOjpjbG9zdXJlOjpXYXNt +Q2xvc3VyZT46OmRlc2NyaWJlOjppbnZva2U6Omg3NjlkODIwZGUxODkxMTA1yz0xYW55aG93Ojpl +cnJvcjo6b2JqZWN0X2Rvd25jYXN0OjpoZGY0N2Q1NTVjYzc0MzA3Ocw9TzxhbGxvYzo6cmF3X3Zl +Yzo6UmF3VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDU5OGQ4OTY0 +MTIxMzUxM2TNPWY8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpIYXNoQWxnb3JpdGht +IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZT46OnNlcmlhbGl6ZTo6aDFjNGFhYWUyMzM0ZjgxNGXO +PWttYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6Zm9yd2FyZGVkX3Jvb21fa2V5OjpG +b3J3YXJkZWRSb29tS2V5Q29udGVudDo6YWxnb3JpdGhtOjpoOTQ2MzcyZWU5MGJjN2FkYs89bm1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlRvRGV2aWNl +RW5jcnlwdGVkRXZlbnRDb250ZW50OjphbGdvcml0aG06OmgzMTFhMzBkNDA5ZGYyNjZi0D3GAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OnN5bmM6OnBvaXNvbjo6VHJ5TG9ja0Vycm9yPHN0 +ZDo6c3luYzo6cndsb2NrOjpSd0xvY2tSZWFkR3VhcmQ8ZXllYmFsbDo6c3RhdGU6Ok9ic2VydmFi +bGVTdGF0ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OklubmVyU3Rh +dGU+Pj4+OjpoMGQ0NDU2OTJiZDdmZjExY9E9XjxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0 +aW9uOjpDYW5jZWxsZWQgYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyYWNiYmEyNDMw +ZGZhYWFjLjHSPVZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZl +cmlmaWNhdGlvbjo6Rmxvd0lkPjo6aDVhNDQzNDg4YTk4NzVmYTIuNNM9SDxhbGxvYzo6c3luYzo6 +QXJjPFQ+IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208VD4+Ojpmcm9tOjpoNTM3YTE1N2RhZTU1NGY3 +OdQ9jgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8cnVtYV9l +dmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6U3RhcnRNZXRob2Qsc2VyZGVfanNvbjo6 +ZXJyb3I6OkVycm9yPj46OmhkNTY3ODlhNWJhNmRiOTQ11T1PPGFsbG9jOjpyYXdfdmVjOjpSYXdW +ZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoM2M2MjE1ZDYzMTJjNDNi +MNY9TzxhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9w +Pjo6ZHJvcDo6aDNlMjg4NzZhMGQzMWQ5MGbXPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+ +IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg1Y2ZkYWQ3NTM4YjlmZTFk2D1PPGFs +bG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9w +OjpoNjYxMGQ3MzM2ZmFlMmM3Mtk9TzxhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT4gYXMgY29y +ZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDg2YjJlZTA2ODQxZmVmNTPaPU88YWxsb2M6OnJh +d192ZWM6OlJhd1ZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg4YWE1 +ZGM3ZTgyMTNmZmVm2z1PPGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPiBhcyBjb3JlOjpvcHM6 +OmRyb3A6OkRyb3A+Ojpkcm9wOjpoYTYwYjA4MGU1ZWJhOTAwY9w9TzxhbGxvYzo6cmF3X3ZlYzo6 +UmF3VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGI4ODU2YTQyNWQ0 +NDA3M2XdPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6 +RHJvcD46OmRyb3A6OmhjYTk3MDJhNGNmNjcyMTE53j1PPGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8 +VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoZjhmOTJlN2Q4NDU0MDZiON89 +V2hhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpmaW5kX29yX2ZpbmRfaW5zZXJ0X3Nsb3Q6 +Ont7Y2xvc3VyZX19OjpoMWU5MjA0YWMwOWFhNThmNuA9V2hhc2hicm93bjo6cmF3OjpSYXdUYWJs +ZTxULEE+OjpmaW5kX29yX2ZpbmRfaW5zZXJ0X3Nsb3Q6Ont7Y2xvc3VyZX19OjpoMGIwMjA0ODZj +ZTQ4NjExMOE9V2hhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpmaW5kX29yX2ZpbmRfaW5z +ZXJ0X3Nsb3Q6Ont7Y2xvc3VyZX19OjpoNThhZjIxODVhMTZmMWMwOeI9kAFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZp +Y2F0aW9uOjphY2NlcHQ6OkFjY2VwdE1ldGhvZCxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I+Pjo6 +aGIxODMzYjU0YTZiNTA3MDDjPSthbGxvYzo6c3luYzo6QXJjPFQ+OjpuZXc6Omg0N2Y3M2JjMTc4 +ZmVkODQ55D0+PEQgYXMgZGlnZXN0OjpkaWdlc3Q6OkRpZ2VzdD46OmNoYWluX3VwZGF0ZTo6aGNj +ODU2ZmYxOGU4OGQ5MjjlPUx0b2tpb191dGlsOjpzeW5jOjpyZXVzYWJsZV9ib3g6OlJldXNhYmxl +Qm94RnV0dXJlPFQ+OjpuZXc6OmhiMjBhN2Y4YmVkMjUyMTYw5j1MdG9raW9fdXRpbDo6c3luYzo6 +cmV1c2FibGVfYm94OjpSZXVzYWJsZUJveEZ1dHVyZTxUPjo6bmV3OjpoYmE4YTgyMDllNjQ4YTAz +Zuc9THRva2lvX3V0aWw6OnN5bmM6OnJldXNhYmxlX2JveDo6UmV1c2FibGVCb3hGdXR1cmU8VD46 +Om5ldzo6aGUwMjhiMTAxNDQ5MjFlOWHoPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhjNjZjYzFmMGUyYjY0ZTcx6T05cXJjb2Rl +OjpjYW52YXM6Om1hc2tfZnVuY3Rpb25zOjptZWFkb3c6OmgzYjUyMmJhYWI0YTEwZmUw6j0/d2Fz +bV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlMV9tdXQ6OmhiZDQ0ZGVlM2JhZGI5 +OWQw6z06d2FzbV9iaW5kZ2VuOjpjbG9zdXJlOjpDbG9zdXJlPFQ+Ojp3cmFwOjpoMDI2NDBiOGJl +YTNhOWVkOew9fDxkeW4gY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5NdXQ8KEEsKT4rT3V0cHV0ID0g +UiBhcyB3YXNtX2JpbmRnZW46OmNsb3N1cmU6Oldhc21DbG9zdXJlPjo6ZGVzY3JpYmU6Omludm9r +ZTo6aDBhYjAxOTkwYjdmOTE1YWTtPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFzIGNv +cmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg4MmY3MDcwYTc0YTBiOWI37j1FdHJhY2luZ19j +b3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyOjpkb3duY2FzdF9yYXc6OmgzNGE1MmExZWI1NGU3 +ZDk27z1Rc3RkOjpzeXM6OnBhbDo6Y29tbW9uOjp0aHJlYWRfbG9jYWw6OnN0YXRpY19sb2NhbDo6 +S2V5PFQ+OjpnZXQ6Omg4ZDIxODc0OGIyOTU1OWY08D1oY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0Y2hldDo6RG91YmxlUmF0Y2hldFN0 +YXRlPjo6aDdhMDEwODViMzBlOTkzMDLxPU88YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg4YWE0NTQzNGE2MjQwZmQ58j2nAXZvZG96 +ZW1hYzo6bWVnb2xtOjpsaWJvbG06OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208JnZvZG96ZW1h +Yzo6bWVnb2xtOjpsaWJvbG06OkxpYm9sbVJhdGNoZXRQaWNrbGU+IGZvciB2b2RvemVtYWM6Om1l +Z29sbTo6cmF0Y2hldDo6UmF0Y2hldD46OmZyb206OmgxMDNlMjBhYzYyOWVhMzJl8z1GY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6Y2lwaGVyOjpDaXBoZXI+OjpoMGQ0NTRkYjg3 +NTViMDNkZPQ9VzxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6TWVzc2FnZUZvcm1hdCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2Q1ZGJjNWU0MGQxMzlmYvU9PHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoZDUyYzFlZWMxMGUxY2RhZvY9WzxydW1hX2V2 +ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246Okhhc2hBbGdvcml0aG0gYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDhhZGE4OGU0NGVhZThkZTn3PWk8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6 +OnNlcnZlcl9ub3RpY2U6OlNlcnZlck5vdGljZVR5cGUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDU5NGMzZDIyZjNhNzdjNTj4PYABYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYs +VHlwZT46OnZhbF9hcmVhX211dDo6aDg2NzI2ZGY1M2I3YWIxMGH5PUV0cmFjaW5nX2NvcmU6OnN1 +YnNjcmliZXI6OlN1YnNjcmliZXI6OmRvd25jYXN0X3Jhdzo6aDFmYzJmZWE4ZjgyNjk3YjH6PW5z +ZXJkZV9qc29uOjp2YWx1ZTo6ZnJvbTo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxpNjQ+IGZv +ciBzZXJkZV9qc29uOjp2YWx1ZTo6VmFsdWU+Ojpmcm9tOjpoZTUxOTM1M2M1ODk2OTY4MPs9P3dh +c21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Omludm9rZTJfbXV0OjpoMWE0NWE1MmNlNGEx +MjU0ZPw9NWNvcmU6OmNoYXI6OkVzY2FwZURlYnVnOjpiYWNrc2xhc2g6OmgyMDIwNTE1Yzg3NzEy +MjIz/T1MPGNvcmU6OnN5bmM6OmF0b21pYzo6QXRvbWljQm9vbCBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoZjhhNmI3Y2MwNzNkNzljM/49cmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6Ym94ZWQ6OkJveDxydW1hX2V2ZW50czo6cm9vbTo6SW1h +Z2VJbmZvPj4+OjpoNDE3MTJhZmFiY2IxNDZjYf89SWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6cm9vbTo6SW1hZ2VJbmZvPjo6aDgxOTY5NTU5OTI0ZWI1NDaAPnNjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248KGFsbG9jOjpzdHJpbmc6OlN0 +cmluZyxzZXJkZV9qc29uOjp2YWx1ZTo6VmFsdWUpPj46OmhhODMwNjBhMjQ0ZmVkZTg5gT56Y29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjpib3hlZDo6 +Qm94PHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZFRocmVhZD4+Pjo6aGI3YTRlMzBhY2I5 +NjgzZmKCPn1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxs +b2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpSZWZlcmVuY2VDaHVuaz4+Pjo6 +aGYxOWI2Y2FlNmY4ZDIxODIuNIM+gAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0 +aW9uOjpPcHRpb248YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6 +OmZpbGU6OkZpbGVJbmZvPj4+OjpoNzA5ZjY3MTEwMjVmOWJjY4Q+V2NvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6ZmlsZTo6RmlsZUluZm8+OjpoMTE5 +MTU5OTdlMzc3MTI2ZYU+ggFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpP +cHRpb248YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnZpZGVv +OjpWaWRlb0luZm8+Pj46OmgyZGZhZDYxNjYxNjUyODNihj5ZY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjp2aWRlbzo6VmlkZW9JbmZvPjo6aGVjMjEy +MmI0MDVkMmU0NGOHPogBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0 +aW9uPGFsbG9jOjpib3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpsb2NhdGlv +bjo6TG9jYXRpb25JbmZvPj4+OjpoN2UwY2IxZmIyODA1MDFmNYg+XGNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkNyb3NzU2lnbmluZ0tleUV4cG9ydD46 +Omg4ZTZmMmY1OGJmYzg5ZmE0iT5Ec3RkOjpzeXM6OnBhbDo6d2FzbTo6bG9ja3M6OnJ3bG9jazo6 +UndMb2NrOjp3cml0ZTo6aDc1NWYyN2EyMjRhZTE1NjWKPpQBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHRva2lvOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OlN0b3JlQ2FjaGU+OjpyZWFkX293bmVkOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoMDJm +OTMwMDdlY2IwMWVmNos+amNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdGllcz46Omg0MDdmZTdjMjc0 +YzU3ZWUyLjKMPlFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjpvbG06Om1lc3Nh +Z2VzOjpPbG1NZXNzYWdlPjo6aGM1ODQ5YjVkMTYyMGRjM2ONPpcBY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246Om1hY2hpbmU6OlZlcmlmaWNh +dGlvbk1hY2hpbmU6OnJlcXVlc3RfdG9fZGV2aWNlX3ZlcmlmaWNhdGlvbjo6e3tjbG9zdXJlfX0+ +OjpoZjI4OTQwYzc1YmYxZDIyMo4+/AFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZnV0dXJlc191 +dGlsOjpmdXR1cmU6OnNlbGVjdDo6U2VsZWN0PGNvcmU6OnBpbjo6UGluPGFsbG9jOjpib3hlZDo6 +Qm94PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6S2V5UXVlcnlNYW5hZ2VyOjp3YWl0X2lmX3Vz +ZXJfa2V5X3F1ZXJ5X3BlbmRpbmc6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+LGdsb29fdGlt +ZXJzOjpmdXR1cmU6OlRpbWVvdXRGdXR1cmU+Pjo6aGYwNDIxMjI5ZjM2MjRkOTKPPswBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChtYXRyaXhfc2RrX2NyeXB0 +bzo6dmVyaWZpY2F0aW9uOjpldmVudF9lbnVtczo6T3V0Z29pbmdDb250ZW50LGNvcmU6Om9wdGlv +bjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OmNhY2hlOjpSZXF1ZXN0 +SW5mbz4pPj46Omg3ZGIzNTEyOTlhYjM0ZDllkD5LY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1 +bWFfZXZlbnRzOjpyb29tOjpJbWFnZUluZm8+OjpoODE5Njk1NTk5MjRlYjU0Ni4xkT7OAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjwobWF0cml4X3Nka19jcnlw +dG86OnZlcmlmaWNhdGlvbjo6ZXZlbnRfZW51bXM6Ok91dGdvaW5nQ29udGVudCxjb3JlOjpvcHRp +b246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpjYWNoZTo6UmVxdWVz +dEluZm8+KT4+OjpoN2RiMzUxMjk5YWIzNGQ5ZS4xkj7+AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6c2VsZWN0OjpTZWxlY3Q8Y29yZTo6cGluOjpQaW48YWxs +b2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpLZXlRdWVyeU1hbmFnZXI6 +OndhaXRfaWZfdXNlcl9rZXlfcXVlcnlfcGVuZGluZzo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19 +Pj4sZ2xvb190aW1lcnM6OmZ1dHVyZTo6VGltZW91dEZ1dHVyZT4+OjpoZjA0MjEyMjlmMzYyNGQ5 +Mi4xkz6SAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjwoc2Vy +ZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQsc2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6 +OmNvbnRlbnQ6OkNvbnRlbnQpPj46OmgwYWJhNDFhODM3OWJhNmVhlD6aAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjwocnVtYV9jb21tb246OmlkZW50aWZpZXJz +OjpjcnlwdG9fYWxnb3JpdGhtczo6RGV2aWNlS2V5QWxnb3JpdGhtLGFsbG9jOjpzdHJpbmc6OlN0 +cmluZyk+Pjo6aDhjZjU5OGJlYjdjYzFhMTOVPnI8ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVy +ZXNfdW5vcmRlcmVkOjpGdXR1cmVzVW5vcmRlcmVkPEZ1dD4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aDA2OGJlMWIwNDczMDFlNmWWPnI8ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1 +dHVyZXNfdW5vcmRlcmVkOjpGdXR1cmVzVW5vcmRlcmVkPEZ1dD4gYXMgY29yZTo6b3BzOjpkcm9w +OjpEcm9wPjo6ZHJvcDo6aDA3ZTAwM2Q3MjljYmRmMzKXPnI8ZnV0dXJlc191dGlsOjpzdHJlYW06 +OmZ1dHVyZXNfdW5vcmRlcmVkOjpGdXR1cmVzVW5vcmRlcmVkPEZ1dD4gYXMgY29yZTo6b3BzOjpk +cm9wOjpEcm9wPjo6ZHJvcDo6aDUzNjg4OWY0OWMyNGFhNjiYPnI8ZnV0dXJlc191dGlsOjpzdHJl +YW06OmZ1dHVyZXNfdW5vcmRlcmVkOjpGdXR1cmVzVW5vcmRlcmVkPEZ1dD4gYXMgY29yZTo6b3Bz +Ojpkcm9wOjpEcm9wPjo6ZHJvcDo6aGEwOWQ5ZjhiNzk2ZGU3MzGZPnI8ZnV0dXJlc191dGlsOjpz +dHJlYW06OmZ1dHVyZXNfdW5vcmRlcmVkOjpGdXR1cmVzVW5vcmRlcmVkPEZ1dD4gYXMgY29yZTo6 +b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGQwNmE3ODczZTQwY2I3YjSaPogCY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY29tbW9uOjpleGVjdXRvcjo6Sm9pbkhhbmRsZTxjb3Jl +OjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91 +cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9uTWFuYWdlcjo6ZW5jcnlwdF9zZXNzaW9uX2Zvcjo6e3tj +bG9zdXJlfX06OkRldmljZVJlc3VsdCxtYXRyaXhfc2RrX2NyeXB0bzo6ZXJyb3I6Ok9sbUVycm9y +Pj4+OjpoZjg2NTlmYmU1NzAzMmQzNS4xmz7VAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5kbGU8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8 +KGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9u +PixhbGxvYzo6dmVjOjpWZWM8KG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6 +OlJlYWRPbmx5RGV2aWNlLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tl +eV93aXRoaGVsZDo6V2l0aGhlbGRDb2RlKT4pLG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xt +RXJyb3I+Pj46OmgxYTVlZTczNGJlZjlhNDNinD7SAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5kbGU8Y29yZTo6cmVzdWx0OjpSZXN1 +bHQ8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OkRldmljZUNoYW5nZSxt +YXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPj4+OjpoZDA4 +MGM4ZDk4M2RiOTA3YZ0+xQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jb21t +b246OmV4ZWN1dG9yOjpKb2luSGFuZGxlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6RGV2aWNlQ2hhbmdlcyxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVy +cm9yOjpDcnlwdG9TdG9yZUVycm9yPj4+OjpoM2I0ZDYxMGY4ODcxODNiZp4+/QNjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8PGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6 +RnV0dXJlc1Vub3JkZXJlZDxGdXQ+IGFzIGZ1dHVyZXNfY29yZTo6c3RyZWFtOjpTdHJlYW0+Ojpw +b2xsX25leHQ6OkJvbWI8ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfb3JkZXJlZDo6T3Jk +ZXJXcmFwcGVyPG1hdHJpeF9zZGtfY29tbW9uOjpleGVjdXRvcjo6Sm9pbkhhbmRsZTxjb3JlOjpy +ZXN1bHQ6OlJlc3VsdDwoYWxsb2M6OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNl +c3Npb246OlNlc3Npb24+LGFsbG9jOjp2ZWM6OlZlYzwobWF0cml4X3Nka19jcnlwdG86OmlkZW50 +aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2UsbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpXaXRoaGVsZENvZGUpPiksbWF0cml4X3Nka19jcnlw +dG86OmVycm9yOjpPbG1FcnJvcj4+Pj4+OjpoODIxYjBmOWZkNWY2YTU2NZ8++gJjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8PGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6 +RnV0dXJlc1Vub3JkZXJlZDxGdXQ+IGFzIGZ1dHVyZXNfY29yZTo6c3RyZWFtOjpTdHJlYW0+Ojpw +b2xsX25leHQ6OkJvbWI8ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfb3JkZXJlZDo6T3Jk +ZXJXcmFwcGVyPG1hdHJpeF9zZGtfY29tbW9uOjpleGVjdXRvcjo6Sm9pbkhhbmRsZTxjb3JlOjpy +ZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6RGV2 +aWNlQ2hhbmdlLG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJy +b3I+Pj4+Pjo6aDgxZjU4NzIzYmUzYTdkN2SgPu0CY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxm +dXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJlc191bm9yZGVyZWQ6OkZ1dHVyZXNVbm9yZGVyZWQ8 +RnV0PiBhcyBmdXR1cmVzX2NvcmU6OnN0cmVhbTo6U3RyZWFtPjo6cG9sbF9uZXh0OjpCb21iPGZ1 +dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX29yZGVyZWQ6Ok9yZGVyV3JhcHBlcjxtYXRyaXhf +c2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5kbGU8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjpEZXZpY2VDaGFuZ2VzLG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJyb3I+Pj4+Pjo6aDgxMzc1YTZjM2EzODkwNjmhPq4D +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0dXJlc191 +bm9yZGVyZWQ6OkZ1dHVyZXNVbm9yZGVyZWQ8RnV0PiBhcyBmdXR1cmVzX2NvcmU6OnN0cmVhbTo6 +U3RyZWFtPjo6cG9sbF9uZXh0OjpCb21iPGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX29y +ZGVyZWQ6Ok9yZGVyV3JhcHBlcjxtYXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0b3I6OkpvaW5IYW5k +bGU8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25fbWFuYWdl +cjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OmVuY3J5cHRfc2Vzc2lvbl9m +b3I6Ont7Y2xvc3VyZX19OjpEZXZpY2VSZXN1bHQsbWF0cml4X3Nka19jcnlwdG86OmVycm9yOjpP +bG1FcnJvcj4+Pj4+OjpoNzRkMDFhMjQwNmM0NjE4OaI+tAJjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8PGZ1dHVyZXNfdXRpbDo6c3RyZWFtOjpmdXR1cmVzX3Vub3JkZXJlZDo6RnV0dXJlc1Vub3Jk +ZXJlZDxGdXQ+IGFzIGZ1dHVyZXNfY29yZTo6c3RyZWFtOjpTdHJlYW0+Ojpwb2xsX25leHQ6OkJv +bWI8ZnV0dXJlc191dGlsOjpzdHJlYW06OmZ1dHVyZXNfb3JkZXJlZDo6T3JkZXJXcmFwcGVyPG1h +dHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5hZ2VyOjpJZGVudGl0eU1hbmFnZXI6Omdl +dF91cGRhdGVkX2tleXNfZm9yX3VzZXI6Ont7Y2xvc3VyZX19Pj4+OjpoNmIwMTk2ZmIzZTk1Yjll +NaM+PXN0ZDo6cGFuaWNraW5nOjpwYW5pY19jb3VudDo6Y291bnRfaXNfemVybzo6aDFjOTllNzEy +ZGEzODk0YTakPogBd2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjppbXBsczo6PGltcGwgd2FzbV9iaW5k +Z2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkZyb21XYXNtQWJpIGZvciBjb3JlOjpvcHRpb246Ok9wdGlv +bjxUPj46OmZyb21fYWJpOjpoYWRhZjU5OGY5ZDU2N2EyMaU+S2NvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxydW1hX2V2ZW50czo6cm9vbTo6SW1hZ2VJbmZvPjo6aDgxOTY5NTU5OTI0ZWI1NDYuNaY+ +XzxzZXJkZV93YXNtX2JpbmRnZW46OmRlOjpNYXBBY2Nlc3MgYXMgc2VyZGU6OmRlOjpNYXBBY2Nl +c3M+OjpuZXh0X3ZhbHVlX3NlZWQ6OmhiMjNhNjBmNjIxOTQyODIxpz4/c2VyZGVfanNvbjo6c2Vy +OjpGb3JtYXR0ZXI6OmJlZ2luX29iamVjdF9rZXk6Omg0ODA1NmY4N2NmMjA1MTIzqD6PAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJl +c3VsdDxib29sLG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0b3JlRXJy +b3I+Pj46OmgxZDQ1ZDNhOGU1OWU4Y2NiqT68AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjwobWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6 +UmVhZE9ubHlEZXZpY2UsbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5 +X3dpdGhoZWxkOjpXaXRoaGVsZENvZGUpPj46OmgwNGZhMGZiNWRkMGUxZTcyqj54Y29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6bXV0ZXg6Ok11dGV4R3VhcmQ8bWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6dHJhY2luZzo6VHJhY2luZ0lubmVyPj46OmgyM2MwZjQ3MDk5ZTJmNzdiqz6n +AmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0b3I6OnNw +YXduPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5hZ2VyOjpJZGVudGl0eU1hbmFn +ZXI6OnVwZGF0ZV91c2VyX2RldmljZXM6Ont7Y2xvc3VyZX19LGNvcmU6OnJlc3VsdDo6UmVzdWx0 +PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6RGV2aWNlQ2hhbmdlcyxtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPj46Ont7Y2xvc3VyZX19Pjo6aGFiY2Iz +YWY1MzI1MWEyOGasPrgCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY29tbW9u +OjpleGVjdXRvcjo6c3Bhd248bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6 +OklkZW50aXR5TWFuYWdlcjo6dXBkYXRlX29yX2NyZWF0ZV9kZXZpY2U6Ont7Y2xvc3VyZX19LGNv +cmU6OnJlc3VsdDo6UmVzdWx0PG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjptYW5hZ2Vy +OjpEZXZpY2VDaGFuZ2UsbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3Rv +cmVFcnJvcj4+Ojp7e2Nsb3N1cmV9fT46OmgwYmNkMzM4N2FmMDY3YjMyrT6SA2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NvbW1vbjo6ZXhlY3V0b3I6OnNwYXduPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6Omdyb3VwX3Nlc3Npb25zOjpHcm91cFNlc3Npb25N +YW5hZ2VyOjplbmNyeXB0X3Nlc3Npb25fZm9yOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX06Ont7 +Y2xvc3VyZX19LGNvcmU6OnJlc3VsdDo6UmVzdWx0PG1hdHJpeF9zZGtfY3J5cHRvOjpzZXNzaW9u +X21hbmFnZXI6Omdyb3VwX3Nlc3Npb25zOjpHcm91cFNlc3Npb25NYW5hZ2VyOjplbmNyeXB0X3Nl +c3Npb25fZm9yOjp7e2Nsb3N1cmV9fTo6RGV2aWNlUmVzdWx0LG1hdHJpeF9zZGtfY3J5cHRvOjpl +cnJvcjo6T2xtRXJyb3I+Pjo6e3tjbG9zdXJlfX0+OjpoZmZmY2VmNWM1Y2FlNmM0Zq4+wwNjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jb21tb246OmV4ZWN1dG9yOjpzcGF3bjxt +YXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBT +ZXNzaW9uTWFuYWdlcjo6ZW5jcnlwdF9yZXF1ZXN0Ojp7e2Nsb3N1cmV9fSxjb3JlOjpyZXN1bHQ6 +OlJlc3VsdDwoYWxsb2M6OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNlc3Npb246 +OlNlc3Npb24+LGFsbG9jOjp2ZWM6OlZlYzwobWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6 +OmRldmljZTo6UmVhZE9ubHlEZXZpY2UsbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6 +OnJvb21fa2V5X3dpdGhoZWxkOjpXaXRoaGVsZENvZGUpPiksbWF0cml4X3Nka19jcnlwdG86OmVy +cm9yOjpPbG1FcnJvcj4+Ojp7e2Nsb3N1cmV9fT46OmgwODMyZTZiMjJiMGI3NzI3rz5XY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291 +bnQ+OjpoNGUxMzNiZDBkNjg4YTAwZS41sD5LY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFf +ZXZlbnRzOjpyb29tOjpJbWFnZUluZm8+OjpoODE5Njk1NTk5MjRlYjU0Ni43sT5NaGFzaGJyb3du +OjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1cmV9fTo6aGNiMDY2 +OTQ0NzYwZTMyYjSyPk1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhh +c2g6Ont7Y2xvc3VyZX19OjpoZjBjNWU2N2ExZTA3YTZmNLM+TWhhc2hicm93bjo6cmF3OjpSYXdU +YWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmgxNGMxMzFkMWJkZmNlMWVk +tD5XaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OmZpbmRfb3JfZmluZF9pbnNlcnRfc2xv +dDo6e3tjbG9zdXJlfX06OmhlODUzNGRkMDM1N2M3ODRmtT4bX193YmdfZWQyNTUxOXB1YmxpY2tl +eV9mcmVltj4eX193YmdfY3VydmUyNTUxOXB1YmxpY2tleV9mcmVltz6IAXdhc21fYmluZGdlbjo6 +Y29udmVydDo6aW1wbHM6OjxpbXBsIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpGcm9t +V2FzbUFiaSBmb3IgY29yZTo6b3B0aW9uOjpPcHRpb248VD4+Ojpmcm9tX2FiaTo6aDEzMDQyYzNi +MTM4NTYzMze4PnVjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +KGFsbG9jOjpzdHJpbmc6OlN0cmluZyxzZXJkZV9qc29uOjp2YWx1ZTo6VmFsdWUpPj46OmhhODMw +NjBhMjQ0ZmVkZTg5LjG5Plxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86Om9sbTo6YWNjb3VudDo6UGlja2xlZEFjY291bnQ+OjpoNDI4Zjg1MmY0MWI2YTc5NLo+swFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248KHJ1bWFfY29tbW9u +OjppZGVudGlmaWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkLG1hdHJpeF9zZGtfY3J5cHRv +OjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6U2hhcmVJbmZvKT4+OjpoOTEyNDM5ZmUy +MTUxNjI1Zrs+mwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Ym9vbCxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0 +b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZUVycm9yPj4+OjpoMWRlZWJkZWEzYmIxYjNlN7w+P3Nl +cmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjpiZWdpbl9vYmplY3Rfa2V5OjpoY2M0ZWMzODM5YzJj +ZmRkZL0+lAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248KHJ1 +bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2tleV9pZDo6T3duZWREZXZpY2VLZXlJZCxh +bGxvYzo6c3RyaW5nOjpTdHJpbmcpPj46OmhlMzIyN2E4ZWUxMGY1YzQyvj4xY29yZTo6cmVzdWx0 +OjpSZXN1bHQ8VCxFPjo6bWFwOjpoMGE1YzlhYjNiNjg3YWIxY78+MWNvcmU6OnJlc3VsdDo6UmVz +dWx0PFQsRT46Om1hcDo6aDFhZDYwYjM5OTIyNjBmY2bAPjFjb3JlOjpyZXN1bHQ6OlJlc3VsdDxU +LEU+OjptYXA6OmhiNjk0MGYwMzFkMjg5ZDI4wT4xY29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPjo6 +bWFwOjpoZmY5ZTNhMGIxMjk5ODQ4YcI+YjxzZXJkZV93YXNtX2JpbmRnZW46OmRlOjpPYmplY3RB +Y2Nlc3MgYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3NlZWQ6Omg0M2I2YjU5 +ODZjMmNhZmE1wz5iPHNlcmRlX3dhc21fYmluZGdlbjo6ZGU6Ok9iamVjdEFjY2VzcyBhcyBzZXJk +ZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aGEwMTc0MTdjNjk2ZjY0ZTLEPpIB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChzZXJkZTo6X19w +cml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudCxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVu +dDo6Q29udGVudCk+Pjo6aGVlZjk4MDgwYzhiYmZlMWLFPks8cm1wX3NlcmRlOjplbmNvZGU6OkVy +cm9yIGFzIGNvcmU6OmVycm9yOjpFcnJvcj46OnNvdXJjZTo6aDU5ZTEwYWEwN2M4NjNjMDDGPixj +b3JlOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoNTZiNTEwNjRmYmZhMTg0Ncc+O3dhc21fYmluZGdl +bjo6Y29udmVydDo6Y2xvc3VyZXM6Omludm9rZTA6Omg3ZDU2YmUyMWJjYTJmYTllyD53PGR5biBj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbjwoKT4rT3V0cHV0ID0gUiBhcyB3YXNtX2JpbmRnZW46OmNs +b3N1cmU6Oldhc21DbG9zdXJlPjo6ZGVzY3JpYmU6Omludm9rZTo6aGVlMzJhNTc3MWQ5MTRiZDnJ +PtABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6Om9w +dGlvbjo6T3B0aW9uPChydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmljZV9rZXlfaWQ6Ok93 +bmVkRGV2aWNlS2V5SWQsbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjpj +b21tb246OlNpZ25pbmdLZXkpPj4+OjpoYzc5OTg2NzFjMjI5ZmI2Mco+P3NlcmRlX2pzb246OnNl +cjo6Rm9ybWF0dGVyOjpiZWdpbl9vYmplY3Rfa2V5OjpoMzhjYzVjNzJkNzkzZTJkYcs+PHNlcmRl +OjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoMDg3MDAzYmFmMDdkNWIwNcw+ +PHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoNDU0ZDBkNjNlMTA4 +NjlmZc0+PHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoNGY4MWQ5 +MTYzNmJlYmMxYc4+PHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5Ojpo +NjBjNWZlNzY2Yjk1YmVmMc8+VW1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6 +OlJlYWRPbmx5RGV2aWNlOjppc192ZXJpZmllZDo6aDM2MzdhYTExYzU0MjBkY2LQPlZtYXRyaXhf +c2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZTo6c3VwcG9ydHNf +b2xtOjpoMzg2MjE2OTBiOWU5ODZkZdE+xwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6 +b3B0aW9uOjpPcHRpb248Y29yZTo6b3B0aW9uOjpPcHRpb248KHJ1bWFfY29tbW9uOjppZGVudGlm +aWVyczo6ZGV2aWNlX2tleV9pZDo6T3duZWREZXZpY2VLZXlJZCxtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXkpPj4+OjpoMWY3ODM1ZjNiYWUzNjA2YS4x0j6Z +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZp +Y2Vfa2V5X2lkOjpPd25lZERldmljZUtleUlkLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZGV2 +aWNlX2tleXM6OkRldmljZUtleSk+OjpoNWE5YTQwNTViNGVmY2NiM9M+bmNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2Fn +ZTo6Rm9ybWF0dGVkQm9keT4+OjpoMDYxZWZlODRkMTUyNzA4MS421D5jbWF0cml4X3Nka19jcnlw +dG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OkluYm91bmRHcm91cFNlc3Npb246OnNl +c3Npb25faWQ6OmhiNTljZTNkYjU1MzcxMmFm1T5lbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3Jv +dXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpPdXRib3VuZEdyb3VwU2Vzc2lvbjo6c2Vzc2lvbl9pZDo6 +aGY1N2UxNzg1YTY2MDZiNjfWPkdtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpTZXNz +aW9uOjpzZXNzaW9uX2lkOjpoMzNlZDllYmQyNDIzMWQ5Ztc+TWhhc2hicm93bjo6cmF3OjpSYXdU +YWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmhhMzU0NmQxNWEyYThlZDQ4 +2D5NaGFzaGJyb3duOjpyYXc6OlJhd1RhYmxlPFQsQT46OnJlc2VydmVfcmVoYXNoOjp7e2Nsb3N1 +cmV9fTo6aDMyY2NhNzk1NzU5ZGUyMTPZPk1oYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6 +cmVzZXJ2ZV9yZWhhc2g6Ont7Y2xvc3VyZX19OjpoYjRmM2Q2NGJmNjUwYThiMto+TWhhc2hicm93 +bjo6cmF3OjpSYXdUYWJsZTxULEE+OjpyZXNlcnZlX3JlaGFzaDo6e3tjbG9zdXJlfX06OmhjYjgx +ZTcxNzJhZDZiZTlj2z4wc2VyZGU6OnNlcjo6aXRlcmF0b3JfbGVuX2hpbnQ6OmgxZmU0ZjJhNTgz +MzM2NTYw3D5FcXJjb2RlOjpjYW52YXM6Om1hc2tfZnVuY3Rpb25zOjpsYXJnZV9jaGVja2VyYm9h +cmQ6OmhiMjVhMTQzMzZkODA4Y2Ey3T47cXJjb2RlOjpjYW52YXM6Om1hc2tfZnVuY3Rpb25zOjpk +aWFtb25kczo6aDgwMWUzY2ViNDkyYzEyMmPePl48c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3Bhbmlj +OjpQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpQYW5pY1BheWxvYWQ+OjpnZXQ6OmhiNTZhYTBk +M2MyMzhmY2E13z5Rc3RkOjpzeXM6OnBhbDo6Y29tbW9uOjp0aHJlYWRfbG9jYWw6OnN0YXRpY19s +b2NhbDo6S2V5PFQ+OjpnZXQ6OmhiZWIzNzY0NDQ3MjAxNjI24D5Rc3RkOjpzeXM6OnBhbDo6Y29t +bW9uOjp0aHJlYWRfbG9jYWw6OnN0YXRpY19sb2NhbDo6S2V5PFQ+OjpnZXQ6Omg5MWUxMWU1OWQz +YTkzNDZh4T4/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlMF9tdXQ6Omhi +MzAwYjU2ZWFmMjBkYjE44j5iPFQgYXMgd2FzbV9iaW5kZ2VuOjpjbG9zdXJlOjpXYXNtQ2xvc3Vy +ZUZuT25jZTwoKSxSPj46OmludG9fZm5fbXV0Ojp7e2Nsb3N1cmV9fTo6aGM3OGI5ODBlNTJmNDc3 +N2TjPl48c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljOjpQYXlsb2FkPEE+IGFzIGNvcmU6OnBh +bmljOjpQYW5pY1BheWxvYWQ+OjpnZXQ6OmgzYmFjMGY5M2JjOWIxYjYz5D4+d2ViX3N5czo6ZmVh +dHVyZXM6Omdlbl9FdmVudDo6RXZlbnQ6OnRhcmdldDo6aDcxZjAyOTM0NDU1ZTA1NGblPpIBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChzZXJkZTo6X19wcml2 +YXRlOjpkZTo6Y29udGVudDo6Q29udGVudCxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6 +Q29udGVudCk+Pjo6aGE3NWYzYmQ5MWU4ZTE3NzjmPj9zZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRl +cjo6YmVnaW5fb2JqZWN0X2tleTo6aDI2OWQ1OTE3N2FjY2YyNGbnPixjb3JlOjplcnJvcjo6RXJy +b3I6OmNhdXNlOjpoMGM2MjNkMDdhYjAzNjY0Yug+Y2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2 +b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6cmVjZWl2ZXJfY2hhaW46OlJlY2VpdmVyQ2hhaW4+Ojpo +MjcyN2IxNDI0ODE1MThhMOk+NnNlcmRlX2J5dGVzOjpieXRlYnVmOjpCeXRlQnVmOjpmcm9tOjpo +YzRkMzhkMDhjN2NlNjNmNuo+8wFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpt +dXRleDo6TXV0ZXhHdWFyZDx0b2tpbzo6dXRpbDo6bGlua2VkX2xpc3Q6OkxpbmtlZExpc3Q8dG9r +aW86OnJ1bnRpbWU6OnRhc2s6OlRhc2s8YWxsb2M6OnN5bmM6OkFyYzx0b2tpbzo6cnVudGltZTo6 +c2NoZWR1bGVyOjpjdXJyZW50X3RocmVhZDo6SGFuZGxlPj4sdG9raW86OnJ1bnRpbWU6OnRhc2s6 +OmNvcmU6OkhlYWRlcj4+Pjo6aDU2Y2FlY2Q5ZDE0Mzg3NTfrPpIBY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVu +dDo6Q29udGVudCxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudCk+Pjo6aGMy +Yzc0NmIwZDI3ZTNjNzfsPjxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6ZV9lbnRy +eTo6aDFiNWNjMDQzMjA5MjQxNmPtPjxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNlcmlhbGl6 +ZV9lbnRyeTo6aDU2M2MyZGRmNjhkNDVkMTXuPjxzZXJkZTo6c2VyOjpTZXJpYWxpemVNYXA6OnNl +cmlhbGl6ZV9lbnRyeTo6aGEyYTBhZTZiZmQ5ZjU3YTHvPpQBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6 +Q29udGVudCxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudCk+Pjo6aGMyYzc0 +NmIwZDI3ZTNjNzcuMfA+XjxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWM6OlBheWxvYWQ8QT4g +YXMgY29yZTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OmdldDo6aDUzOTU2NzBkMTZiMjFmMjbxPlFz +dGQ6OnN5czo6cGFsOjpjb21tb246OnRocmVhZF9sb2NhbDo6c3RhdGljX2xvY2FsOjpLZXk8VD46 +OmdldDo6aDk3ZGZiOTFhODVlYzdkMWLyPkBvbmNlX2NlbGw6OnN5bmM6Ok9uY2VDZWxsPFQ+Ojpn +ZXRfb3JfdHJ5X2luaXQ6OmgxMjgzNmFjMGY5NzkzNjdm8z5ePHNlcmRlX2pzb246OnZhbHVlOjpk +ZTo6U2VxRGVzZXJpYWxpemVyIGFzIHNlcmRlOjpkZTo6U2VxQWNjZXNzPjo6c2l6ZV9oaW50Ojpo +ODFkMjBlOGY2NGNjMDJlOfQ+MHNlcmRlOjpzZXI6Oml0ZXJhdG9yX2xlbl9oaW50OjpoZWMwYjg4 +MDhhM2UwMWI3MfU+XjxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWM6OlBheWxvYWQ8QT4gYXMg +Y29yZTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OmdldDo6aGJlNWE2NGQyMDY1OTBhZjT2Pi1ieXRl +czo6Ynl0ZXM6OnN0YXRpY19jbG9uZTo6aGZmYjQ4ZWU1YTcxMmFlNzP3PiZqc19zeXM6OkFycmF5 +OjppdGVyOjpoZmY0NGJlYjgzOTYxMmUxZPg+P3dhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3Vy +ZXM6Omludm9rZTFfbXV0OjpoOGIxZjgwNTU5MTJjYjE3Yvk+bjxzdGQ6OnBhbmlja2luZzo6cnVz +dF9wYW5pY193aXRob3V0X2hvb2s6OlJld3JhcEJveCBhcyBjb3JlOjpwYW5pYzo6UGFuaWNQYXls +b2FkPjo6dGFrZV9ib3g6Omg5ZTQ4MjVkM2IyYjI3MDY2+j5bY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQ+OjpoMzUz +N2NlMmJiODMwOGI0OPs+RHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OkRlZmF1bHRDYWxsc2l0ZTo6 +aW50ZXJlc3Q6Omg2YzgyOTkxMzJhMTc0Y2Uw/D52Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNv +cmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OmNhY2hl +OjpSZXF1ZXN0SW5mbz4+OjpoZjE0NGEyZjFmYjVhOGVjYv0+SmNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxydW1hX2V2ZW50czo6cmVsYXRpb246OlRocmVhZD46OmgzNzhkMDdhM2EwYTc5YWQ2/j5J +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpo +OWMwNmY0YzI1YjE4NWVmNP8+T2NvcmU6OmNtcDo6aW1wbHM6OjxpbXBsIGNvcmU6OmNtcDo6UGFy +dGlhbEVxPCZCPiBmb3IgJkE+OjpuZTo6aDhhYTdkOTRkNWI1Njg0ODOAPzFzdGQ6OnN5bmM6OnBv +aXNvbjo6RmxhZzo6Z3VhcmQ6Omg0MjI5M2ExYTM5MzE0OTY3gT9dY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6cm9vbV9pZDo6T3duZWRSb29tSWQ+Ojpo +MTcyZGI5OGRmNDRiZmExYy4zgj95PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnRyYWNpbmc6Okxv +Z2dlckxldmVsIGFzIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpGcm9tV2FzbUFiaT46 +OmZyb21fYWJpOjpoZjYzMGE1ODQ4MDRmNWUyZYM/TGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6cmVsYXRpb246OlRocmVhZD46OmgzNzhkMDdhM2EwYTc5YWQ2LjWEPzloYXNo +YnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZTo6aDFjOTU4ZTVmMzExOWY5MzSFPzlo +YXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZTo6aGIzMGE2NjBiNThiNjUzNTKG +PzloYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZTo6aGU3MjAyZTNiYzVmNWM0 +NGSHP3tjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4 +X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlJlcXVlc3RIYW5kbGU+Pjo6aDI1 +OWI4ZmI4YmNiNTcwZTiIP088YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+IGFzIGNvcmU6Om9w +czo6ZHJvcDo6RHJvcD46OmRyb3A6OmgyMjVlYWRhMmUyOTljZDcxiT+7AWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjwocnVtYV9jb21tb246OnRvX2RldmljZTo6 +RGV2aWNlSWRPckFsbERldmljZXMscnVtYV9jb21tb246OnNlcmRlOjpyYXc6OlJhdzxydW1hX2V2 +ZW50czo6ZW51bXM6OkFueVRvRGV2aWNlRXZlbnRDb250ZW50Pik+Pjo6aDYwZjhmOTYyYjUxYjI4 +NjSKP4wCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChydW1h +X2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZp +Y2VfaWQ6Ok93bmVkRGV2aWNlSWQsbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lv +bnM6Om91dGJvdW5kOjpTaGFyZUluZm8+KT4+OjpoMTI0ZTZhZTY0ZDJmNzM0N4s/lAJjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248KHJ1bWFfY29tbW9uOjppZGVu +dGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6dG9fZGV2aWNlOjpEZXZpY2VJZE9yQWxsRGV2aWNl +cyxydW1hX2NvbW1vbjo6c2VyZGU6OnJhdzo6UmF3PHJ1bWFfZXZlbnRzOjplbnVtczo6QW55VG9E +ZXZpY2VFdmVudENvbnRlbnQ+Pik+Pjo6aGNkMTRjOWFhZmQ0ODc0NjmMP7QDY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChydW1hX2NvbW1vbjo6aWRlbnRpZmll +cnM6OnRyYW5zYWN0aW9uX2lkOjpPd25lZFRyYW5zYWN0aW9uSWQsKGFsbG9jOjpzeW5jOjpBcmM8 +bWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3RzOjpUb0RldmljZVJlcXVlc3Q+LGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1 +c2VyX2lkOjpPd25lZFVzZXJJZCxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVl +TWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkLG1h +dHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6U2hhcmVJbmZv +Pj4pKT4+OjpoYmE0OWIwMjQwMDYzNzk4NY0/ggFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29y +ZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6cGtfc2ln +bmluZzo6UGlja2xlZFNlbGZTaWduaW5nPj46OmhhNzc2OTdkOGIwZDBjYjQxjj/FAWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6 +b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6SW5ib3VuZEdyb3VwU2Vzc2lvbixtYXRyaXhf +c2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZUVycm9yPj46 +OmgyNTY0NzM2OWQ0YjY3YzIzjz9iPCZzZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6U2VyaWFsaXpl +ciBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3NlcTo6aGJkZWFiNjM2N2E3 +ZDFmYzKQP1o8c2VyZGVfanNvbjo6ZGU6Ok1hcEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFj +Y2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDcyMzEwYTE5ZDI2M2NjY2ORP4UBPGRpZ2VzdDo6Y29y +ZV9hcGk6OmN0X3ZhcmlhYmxlOjpDdFZhcmlhYmxlQ29yZVdyYXBwZXI8VCxPdXRTaXplLE8+IGFz +IGRpZ2VzdDo6Y29yZV9hcGk6OlVwZGF0ZUNvcmU+Ojp1cGRhdGVfYmxvY2tzOjpoNGUwOTE2ODgy +OTFlOGNmM5I/aDxjaXBoZXI6OnN0cmVhbV93cmFwcGVyOjpTdHJlYW1DaXBoZXJDb3JlV3JhcHBl +cjxUPiBhcyBjcnlwdG9fY29tbW9uOjpLZXlJdkluaXQ+OjpuZXc6Omg4MDU5MGY0YjJlMDU4NTVi +kz9aPGNvcmU6OnNsaWNlOjpzb3J0OjptZXJnZTo6TWVyZ2VIb2xlPFQ+IGFzIGNvcmU6Om9wczo6 +ZHJvcDo6RHJvcD46OmRyb3A6OmgwZmYwMGIzZjljYmFlZWYwlD88c2VyZGU6OnNlcjo6U2VyaWFs +aXplTWFwOjpzZXJpYWxpemVfZW50cnk6Omg0NDEyNzRiZjliYzJhNjA0lT84YWxsb2M6OmJveGVk +OjpCb3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aDJjNjc2YmExN2Y2MjIzNDWWPzhhbGxvYzo6Ym94 +ZWQ6OkJveDxULEE+OjpuZXdfdW5pbml0X2luOjpoMmQ0ZGY2MDRiYjZlODczYZc/OGFsbG9jOjpi +b3hlZDo6Qm94PFQsQT46Om5ld191bmluaXRfaW46OmgzMWQwZWRjZTFjYTBhMGY3mD84YWxsb2M6 +OmJveGVkOjpCb3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aDQwZDVjNzUxZDQ0MWU0YmSZPzhhbGxv +Yzo6Ym94ZWQ6OkJveDxULEE+OjpuZXdfdW5pbml0X2luOjpoNTQ4MmQxMGY3ZTA3YTRiMZo/OGFs +bG9jOjpib3hlZDo6Qm94PFQsQT46Om5ld191bmluaXRfaW46Omg1ZTZlMDhjZjQyMDIyYzQzmz84 +YWxsb2M6OmJveGVkOjpCb3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aDYyODM0M2RiZTM5Yjg1Y2Gc +P0JoYXNoYnJvd246OnJhdzo6UmF3VGFibGVJbm5lcjo6ZHJvcF9pbm5lcl90YWJsZTo6aGYzOWNi +MGE3OTNmOTEwYzadP0JoYXNoYnJvd246OnJhdzo6UmF3VGFibGVJbm5lcjo6ZHJvcF9pbm5lcl90 +YWJsZTo6aDI0Y2RmNDhkN2E0YzZhNmaeP0JoYXNoYnJvd246OnJhdzo6UmF3VGFibGVJbm5lcjo6 +ZHJvcF9pbm5lcl90YWJsZTo6aDExMzhmNDdmODk3MWI0MjWfP1tjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmJhY2t1cHM6OmtleXM6OmNvbXBhdDo6S2V5cz46Omhk +ODE1MDU3MWMzZGU4NmVjoD/NAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwocnVtYV9jb21tb246 +OmlkZW50aWZpZXJzOjpkZXZpY2Vfa2V5X2lkOjpPd25lZERldmljZUtleUlkLGNvcmU6OnJlc3Vs +dDo6UmVzdWx0PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6U2lnbmF0dXJlLG1hdHJpeF9zZGtf +Y3J5cHRvOjp0eXBlczo6SW52YWxpZFNpZ25hdHVyZT4pPjo6aGZkN2RkYzZiMmFiZTk4NzGhP44C +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPCh3YXNtX2JpbmRn +ZW46OmNsb3N1cmU6OkNsb3N1cmU8ZHluIGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuTXV0PCh3YXNt +X2JpbmRnZW46OkpzVmFsdWUsKT4rT3V0cHV0ID0gKCk+LHdhc21fYmluZGdlbjo6Y2xvc3VyZTo6 +Q2xvc3VyZTxkeW4gY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5NdXQ8KHdhc21fYmluZGdlbjo6SnNW +YWx1ZSwpPitPdXRwdXQgPSAoKT4pPj46Omg0NDkyZmU5NTAwYWJhMmNmoj9CaGFzaGJyb3duOjpy +YXc6OlJhd1RhYmxlSW5uZXI6OmRyb3BfaW5uZXJfdGFibGU6OmhjODk0OTA1YWVkNmQwZTFioz9P +dHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6c2hhcmRlZDo6UmVnaXN0cnk6OnN0YXJ0X2Ns +b3NlOjpoNjg3YTI2ODI4M2M1YzQ3ZqQ/UDxzaGFyZGVkX3NsYWI6OnBvb2w6OlJlZjxULEM+IGFz +IGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhhZDY0ZjBmMWIwYTY3OWMxpT85Y29yZTo6 +b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2U6OmgwMTk5MGFlYjFjNTEzZDAypj9aPHNl +cmRlX2pzb246OmRlOjpNYXBBY2Nlc3M8Uj4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0 +X3ZhbHVlX3NlZWQ6OmhiMjRiNmQ4YzhiNjFjMmNhpz8wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6OmgyNmZmOWVhOGZjMzAwYjc0qD84YWxsb2M6OmJveGVkOjpCb3g8VCxBPjo6bmV3X3Vu +aW5pdF9pbjo6aDljNzBmNjRiYmE1OTcxZGWpPzhhbGxvYzo6Ym94ZWQ6OkJveDxULEE+OjpuZXdf +dW5pbml0X2luOjpoYTE1ZTY1ODdmY2U0YzNiNqo/cjx2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6 +U2Vzc2lvbjo6ZnJvbV9saWJvbG1fcGlja2xlOjpNZXNzYWdlS2V5IGFzIHplcm9pemU6Olplcm9p +emU+Ojp6ZXJvaXplOjpoNWU3YmYxZmM0NzhiZTZlZqs/N2Jhc2U2NDo6ZGVjb2RlOjpkZWNvZGVk +X2xlbl9lc3RpbWF0ZTo6aDgxMGE1ZmVjZGJiZTVjNGWsP1o8c2VyZGVfanNvbjo6ZGU6Ok1hcEFj +Y2VzczxSPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDhlYjgw +ZmQ2ZjBhZTNhNjWtP148cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Q2lwaGVydGV4dElu +Zm8gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmhkMmQ5ZjA0NTBlMjliOTcwrj84YWxs +b2M6OmJveGVkOjpCb3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aDA0MTYxOWNkMTdjYThlYjSvPzhh +bGxvYzo6Ym94ZWQ6OkJveDxULEE+OjpuZXdfdW5pbml0X2luOjpoMzgwMDE3N2ZkMTdhOTA3ObA/ +OGFsbG9jOjpib3hlZDo6Qm94PFQsQT46Om5ld191bmluaXRfaW46Omg1MDg4NDE3N2UzMTdhNjkx +sT84YWxsb2M6OmJveGVkOjpCb3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aDVlYTk4MDk1YTRiYzFm +YzCyPzhhbGxvYzo6Ym94ZWQ6OkJveDxULEE+OjpuZXdfdW5pbml0X2luOjpoYzdmMDI0M2M2NmZi +ZDEwZbM/PHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcDo6c2VyaWFsaXplX2VudHJ5OjpoMzkzMTY5 +Y2JkOTQyNzdlYrQ/UjxzdGQ6OnN5bmM6Om11dGV4OjpNdXRleDxUPiBhcyBjb3JlOjpkZWZhdWx0 +OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aGU4ZjRlZjA4OWJlYzk3ZWK1PzN0cmFjaW5nX2NvcmU6OnNw +YW46OklkOjpmcm9tX3U2NDo6aGMxOTZiY2EyNTc5OWU1ZGS2P0Bjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8Ynl0ZXM6OmJ5dGVzOjpCeXRlcz46OmgyNzc4YzBkMDBhOTMyMmI4tz8wPCZUIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhNjk5OWIyNGEzY2FiNzI0uD+yAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpU +b0RldmljZUV2ZW50PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9y +ZXF1ZXN0OjpSb29tS2V5UmVxdWVzdENvbnRlbnQ+Pjo6aGViNWM1YWYyMTNiNDIwMTm5P5ABY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpraW5kczo6UmVkYWN0ZWRTeW5jTWVz +c2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6c3RpY2tlcjo6UmVkYWN0ZWRTdGlja2VyRXZlbnRD +b250ZW50Pj46OmhmZDM5ODViNjlmNTI2NjUzuj+jAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50 +PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpkdW1teTo6RHVtbXlFdmVudENvbnRl +bnQ+Pjo6aGVjYzU4YmU1MmNlZTZjM2O7P3Rjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9l +dmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpzdGFydDo6S2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVu +dENvbnRlbnQ+OjpoNzFmOGQyMzk4YTU0NmFiN7w/VmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6c3RpY2tlcjo6U3RpY2tlckV2ZW50Q29udGVudD46OmgyYTdlMjIwYjliMGRm +NGIwvT9bY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdl +OjpDdXN0b21FdmVudENvbnRlbnQ+OjpoN2IyZDVkNWFjZDQ2ZTc1N74/eGNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246Om1hYzo6VG9EZXZpY2VL +ZXlWZXJpZmljYXRpb25NYWNFdmVudENvbnRlbnQ+OjpoZmExYjY4ZmU2ZTYzMWU1NL8/X2NvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OkV2ZW50RW5jcnlw +dGlvbkFsZ29yaXRobT46Omg5ODE5MDQyZmNiNTgxZjVlwD+7AWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0Rldmlj +ZUV2ZW50PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6 +OlRvRGV2aWNlRW5jcnlwdGVkRXZlbnRDb250ZW50Pj46Omg4OWVhNTVmMmI5ZmRjNzY1LjPBP6MB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRz +Ojp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVu +dHM6OnJvb21fa2V5OjpSb29tS2V5Q29udGVudD4+OjpoMjVlZDBiYjkzYjA3YWFjN8I/qQFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnRv +X2RldmljZTo6VG9EZXZpY2VFdmVudDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +c2VjcmV0X3NlbmQ6OlNlY3JldFNlbmRDb250ZW50Pj46OmhjYmQwNzIzOGI3MDg1YWExwz+mAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +b2xtX3YxOjpEZWNyeXB0ZWRPbG1WMUV2ZW50PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZl +bnRzOjpyb29tX2tleTo6Um9vbUtleUNvbnRlbnQ+Pjo6aGIxM2M1NmI2YjhlZDg1OGLEP7kBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpv +bG1fdjE6OkRlY3J5cHRlZE9sbVYxRXZlbnQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVu +dHM6OmZvcndhcmRlZF9yb29tX2tleTo6Rm9yd2FyZGVkUm9vbUtleUNvbnRlbnQ+Pjo6aDg1NTdj +MDlmMDAxNTM0MWLFP6wBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +Ojp0eXBlczo6ZXZlbnRzOjpvbG1fdjE6OkRlY3J5cHRlZE9sbVYxRXZlbnQ8bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpldmVudHM6OnNlY3JldF9zZW5kOjpTZWNyZXRTZW5kQ29udGVudD4+Ojpo +MzdmZjFlMDM0ZTkzYTdlYcY/pgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpldmVudHM6Om9sbV92MTo6RGVjcnlwdGVkT2xtVjFFdmVudDxtYXRyaXhf +c2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6ZHVtbXk6OkR1bW15RXZlbnRDb250ZW50Pj46Omgx +YmI5NGExY2ZiZTU1ZjAzxz9+Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpr +ZXk6OnZlcmlmaWNhdGlvbjo6Y2FuY2VsOjpUb0RldmljZUtleVZlcmlmaWNhdGlvbkNhbmNlbEV2 +ZW50Q29udGVudD46Omg1ZGY2OTBkZDRmZWZhYWY2yD9wY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6bWFjOjpLZXlWZXJpZmljYXRpb25NYWNF +dmVudENvbnRlbnQ+OjpoMTZhZDExOTU1YzEwYWRjNsk/bmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6bG9jYXRpb246OkxvY2F0aW9uTWVzc2FnZUV2 +ZW50Q29udGVudD46Omg2ZWE1OGQwZDdlOWM5MzY5yj+AAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnJlcXVlc3Q6OlRvRGV2aWNlS2V5VmVy +aWZpY2F0aW9uUmVxdWVzdEV2ZW50Q29udGVudD46OmgxMjdjMjcxNjQ5MjZiYjJhyz92Y29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6Y2FuY2Vs +OjpLZXlWZXJpZmljYXRpb25DYW5jZWxFdmVudENvbnRlbnQ+OjpoZGRjMWJiMjg0ZTJkOTRmNsw/ +XmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6Y2FsbDo6cmVqZWN0OjpDYWxs +UmVqZWN0RXZlbnRDb250ZW50Pjo6aDdlYTUxNGJjNTYzMjE1MGHNP3xjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpyZWFkeTo6VG9EZXZpY2VL +ZXlWZXJpZmljYXRpb25SZWFkeUV2ZW50Q29udGVudD46Omg2MDYzNGY4YmJmZjdlM2I4zj98Y29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3Rh +cnQ6OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENvbnRlbnQ+OjpoOTQyMzMyNzRl +NzU2ZTllN88/X2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2V5Ojp2ZXJp +ZmljYXRpb246OmNhbmNlbDo6Q2FuY2VsQ29kZT46Omg4MzA3NmEwN2Q0ODljY2Zk0D9qY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpvbG1f +djE6OlRvRGV2aWNlQ3VzdG9tRXZlbnQ+OjpoY2JkM2NhZTRkZDJkMGNmZdE/e2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbTo6ZW5j +cnlwdGVkOjpSb29tRW5jcnlwdGVkRXZlbnRDb250ZW50Pjo6aDc1MGRiMDM0MDljOGVjMGQuMdI/ +sAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpyZWxfc2Vy +ZGU6OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uc0pzb25SZXByPHJ1bWFfZXZlbnRzOjpyb29t +OjpyZWRhY3Rpb246Ok9yaWdpbmFsU3luY1Jvb21SZWRhY3Rpb25FdmVudD4+OjpoNTFmNDhiZTFm +OWViNTA0YtM/TmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6Y2FsbDo6aGFu +Z3VwOjpSZWFzb24+OjpoM2VjMjYyNzFiYjFhYjFmZtQ/VWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpTZWNyZXROYW1lPjo6aDk4YmU1MTZjYmQ1 +MjFjMDfVP25jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9jb21tb246OmlkZW50aWZpZXJz +OjpjcnlwdG9fYWxnb3JpdGhtczo6RGV2aWNlS2V5QWxnb3JpdGhtPjo6aGZiNzMyMjM1NmU0OWQ4 +YWQuMdY/VGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OkRldmljZUNoYW5nZXM+OjpoMWE1MGRmYzNjOTEwN2EyZdc/YmNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlOjpjYWNoZTo6e3tjbG9zdXJlfX0+ +OjpoNjMyMmE4YzRhODdmNGMxMi4x2D9sY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmVDYWNoZUd1YXJkOjphY2NvdW50Ojp7e2Nsb3N1cmV9fT46 +OmgzODM4YmUxOWNiZTJhNWQ52T+PAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0b2tpbzo6c3lu +Yzo6bXV0ZXg6Ok11dGV4PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Y2FjaGVzOjpVc2Vyc0Zv +cktleVF1ZXJ5Pjo6bG9jazo6e3tjbG9zdXJlfX0+OjpoNWJhNDllZjc5YTM0ODcwMi4x2j9rY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6S2V5UXVlcnlN +YW5hZ2VyOjpzeW5jZWQ6Ont7Y2xvc3VyZX19Pjo6aDk1MGNkYTZlOTNjZDhlODTbP35jb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTeW5jZWRLZXlRdWVy +eU1hbmFnZXI6OnVzZXJzX2Zvcl9rZXlfcXVlcnk6Ont7Y2xvc3VyZX19Pjo6aDQ3OTI0MzVlOGZi +N2UzMmLcP4YBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3Nz +aXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OmxvYWRfb3V0Z29pbmdfcmVxdWVzdHM6Ont7 +Y2xvc3VyZX19Pjo6aGUyMmVmNDY3NDliOTk5YjjdP2Fjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6Ok93blVzZXJJZGVudGl0eT46Omg1 +YTkzYjZhOGNjNmIxMDAx3j+EAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2Ny +eXB0bzo6dmVyaWZpY2F0aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZDo6Y2FuX3NpZ25fZGV2 +aWNlczo6e3tjbG9zdXJlfX0+OjpoNmI5NmUyYmNjZTZjZTIyZN8/fGNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2YXRlQ3Jvc3NTaWdu +aW5nSWRlbnRpdHk6OnNpZ246Ont7Y2xvc3VyZX19Pjo6aDI2YjhkMWIwZGQ5ZmVkYzfgP15jb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6 +OlVzZXJJZGVudGl0eT46Omg5NGM2YjViOWZlN2IyNTNm4T+QAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTx0b2tpbzo6c3luYzo6bXV0ZXg6Ok11dGV4PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +Y2FjaGVzOjpVc2Vyc0ZvcktleVF1ZXJ5Pjo6YWNxdWlyZTo6e3tjbG9zdXJlfX0+OjpoMzI3ZWQ0 +ZWEwZWVmYTg2M+I/mgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dG9raW86OnN5bmM6Om11dGV4 +OjpNdXRleDxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmNhY2hlczo6VXNlcnNGb3JLZXlRdWVy +eT46OmxvY2s6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46OmhjOTQ3ZmNkMmUyOWQ2MWFm4z9c +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Okdv +c3NpcHBlZFNlY3JldD46OmhiYWQwMDc3Y2JiY2E1Yjg3LjHkP4EBY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpiYWNrdXBzOjpCYWNrdXBNYWNoaW5lOjpjaGVja19v +d25faWRlbnRpdHlfc2lnbmF0dXJlOjp7e2Nsb3N1cmV9fT46OmhmYjVlZTBmNGVlMGEzMDc25T+C +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6YmFja3Vwczo6QmFj +a3VwTWFjaGluZTo6dGVzdF9lZDI1NTE5X2RldmljZV9zaWduYXR1cmU6Ont7Y2xvc3VyZX19Pjo6 +aDdmOWUxYTg1NzU0OWMzODfmP3hjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjpTdG9yZTo6Z2V0X3JlYWRvbmx5X2RldmljZXNfZmlsdGVyZWQ6Ont7Y2xv +c3VyZX19Pjo6aDA2YjA5ZGRjNTRiZDVmMTHnP3hjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF92ZXJpZmljYXRpb25fc3Rh +dGU6Ont7Y2xvc3VyZX19Pjo6aGU1YjcyYTQzNDBjMjk4MWboP3Vjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9lbmNyeXB0 +aW9uX2luZm86Ont7Y2xvc3VyZX19Pjo6aDVkYjRjNzM1ZmQ4NmRmYzfpP1Zjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpJZGVudGl0eUNoYW5nZXM+Ojpo +OGM5MmNiZjU3ZDU4NjY5NOo/jQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dG9raW86OnN5bmM6 +OnJ3bG9jazo6UndMb2NrPHZvZG96ZW1hYzo6bWVnb2xtOjpncm91cF9zZXNzaW9uOjpHcm91cFNl +c3Npb24+OjpyZWFkOjp7e2Nsb3N1cmV9fT46Omg3NTZjNjc3NWVlZTJmMTY0LjHrP1djb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZVRyYW5zYWN0 +aW9uPjo6aDA1ZDY3YmYwMTRhMDFhMGbsP4EBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6 +c2lnbl91c2VyOjp7e2Nsb3N1cmV9fT46Omg3NGJhMTYzZjU4ODc0ODdj7T+GAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5i +b3VuZDo6SW5ib3VuZEdyb3VwU2Vzc2lvbjo6ZXhwb3J0Ojp7e2Nsb3N1cmV9fT46Omg1OGI5YWFk +YzEyNTQ4MDE47j9yY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpv +bG06OnNlc3Npb246OlNlc3Npb246OmVuY3J5cHRfaGVscGVyOjp7e2Nsb3N1cmV9fT46Omg4YzE4 +MmRlZjRhNDk1ZDlm7z9aY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +Ojpnb3NzaXBpbmc6Okdvc3NpcFJlcXVlc3Q+OjpoYTU2M2JkNWI0NGM0MzdiOC4y8D+IAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQcml2 +YXRlQ3Jvc3NTaWduaW5nSWRlbnRpdHk6OnNpZ25fZGV2aWNlX2tleXM6Ont7Y2xvc3VyZX19Pjo6 +aDMyNDVhNGRjMTQyNTc5N2LxP4kBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJbmJvdW5kR3JvdXBTZXNzaW9u +Ojp0b19iYWNrdXA6Ont7Y2xvc3VyZX19Pjo6aDYyNDhlOGE1ZmJlMDQxZGXyP2A8bWF0cml4X3Nk +a19jcnlwdG86OnJlcXVlc3RzOjpLZXlzQmFja3VwUmVxdWVzdCBhcyBjb3JlOjpjbG9uZTo6Q2xv +bmU+OjpjbG9uZTo6aDM1NmRkZDBkN2IyZGViZGHzP2Jjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3RzOjpVcGxvYWRTaWduaW5nS2V5c1JlcXVlc3Q+Ojpo +NDY0N2NhZDdhZDY4MDg1ZvQ/bmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0b2tpbzo6c3luYzo6 +cndsb2NrOjpSd0xvY2s8Ym9vbD46OnJlYWQ6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT46Omgy +OGFkMWRiMjhlM2IyMTk59T96Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6U3RvcmU6OmdldF9yZWFkb25seV9kZXZpY2VzX3VuZmlsdGVyZWQ6Ont7Y2xv +c3VyZX19Pjo6aGQ4NzIxMDkzZmNmZjFkNmL2P4sBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OklkZW50aXRpZXNCZWluZ1ZlcmlmaWVkOjpt +YXJrX2RldmljZV9hc192ZXJpZmllZDo6e3tjbG9zdXJlfX0+OjpoMGZiNDgwM2ZlN2E0NzhlNvc/ +jQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlv +bjo6SWRlbnRpdGllc0JlaW5nVmVyaWZpZWQ6Om1hcmtfaWRlbnRpdHlfYXNfdmVyaWZpZWQ6Ont7 +Y2xvc3VyZX19Pjo6aDdiODQxN2VlMWRlMjBiZWP4P40BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6T3V0Ym91 +bmRHcm91cFNlc3Npb246OnNlc3Npb25fa2V5Ojp7e2Nsb3N1cmV9fT46OmhjZTM1MzY0OWFiMWVm +Zjk2+T9uY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6 +ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhlbGRDb2RlPjo6aGMxMDlhMDRhYTk0YTNl +Zmb6P3Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248dm9kb3pl +bWFjOjpvbG06OmFjY291bnQ6OmZhbGxiYWNrX2tleXM6OkZhbGxiYWNrS2V5Pj46OmhlNGFmMjgz +MjU1ZTVkNGZj+z92Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6U3RvcmU6OmdldF9kZXZpY2VfZnJvbV9jdXJ2ZV9rZXk6Ont7Y2xvc3VyZX19Pjo6aGIy +YzI5MTgwYzdlNjVlNzIuMfw/WGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6 +c3RpY2tlcjo6U3RpY2tlckV2ZW50Q29udGVudD46OmgyYTdlMjIwYjliMGRmNGIwLjH9P11jb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVx +dWVzdHM6OlJlYWR5Pjo6aDQ0NTcwNDc1NzdiZGJiN2X+P2tjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2Vzc2lvbjo6U2Vzc2lvbjo6ZGVjcnlwdDo6e3tj +bG9zdXJlfX0+OjpoZDIyMjFiNWRjZTYyM2NiZP8/R2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2 +b2RvemVtYWM6OnR5cGVzOjpLZXlFcnJvcj46Omg1NWM4ZGU0ZDc2MzJhZGY4gEBhY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OlN0YXRpY0Fj +Y291bnREYXRhPjo6aGI3MmFjYjA3ZDI5ZTlhOTUuMYFAZmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRp +dHk+OjpoNGIzMmNlNWNlZjE0YTVjY4JAbmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlOjpnZXRfcmVhZG9ubHlfZGV2aWNlOjp7e2Nsb3N1cmV9 +fT46OmgzZTVhMmFkYWZkMGFhMjk2g0B0Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06OnNlc3Npb246OlNlc3Npb246OmVuY3J5cHRfaGVscGVyOjp7e2Nsb3N1 +cmV9fT46Omg4YzE4MmRlZjRhNDk1ZDlmLjGEQJ8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OkRldmljZTo6ZW5jcnlwdDxydW1h +X2V2ZW50czo6ZHVtbXk6OlRvRGV2aWNlRHVtbXlFdmVudENvbnRlbnQ+Ojp7e2Nsb3N1cmV9fT46 +OmgxYjgzZWE2MzNkZjhjZWM0hUBcY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvOjpnb3NzaXBpbmc6Okdvc3NpcHBlZFNlY3JldD46OmhiYWQwMDc3Y2JiY2E1Yjg3LjKG +QIUBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6 +Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OnNob3VsZF9hY2NlcHRfZm9yd2FyZDo6e3tjbG9zdXJl +fX0+OjpoYjljZDU0YjZmNDhiNDIxOIdAfmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjptYXJrX2FzX2Rv +bmU6Ont7Y2xvc3VyZX19Pjo6aDFhNTdlYTY5NjdhMjcwOTcuNIhAqwFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnRvX2RldmljZTo6VG9E +ZXZpY2VFdmVudDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6 +OlNlY3JldFNlbmRDb250ZW50Pj46OmhjYmQwNzIzOGI3MDg1YWExLjGJQIoBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3Np +cE1hY2hpbmU6OnJlY2VpdmVfZm9yd2FyZGVkX3Jvb21fa2V5Ojp7e2Nsb3N1cmV9fT46Omg5MDlj +ZjVjM2MxNTgzMjAxikB7Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +OjptYWNoaW5lOjpPbG1NYWNoaW5lOjphZGRfcm9vbV9rZXk6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fT46Omg5NTgxMjFlNzZmMTk3ZDVki0CAAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjpmb3J3YXJk +X3Jvb21fa2V5Ojp7e2Nsb3N1cmV9fT46Omg0Yzc5MGQyYTExMmI4MmY5jEB/Y29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OmRl +Y3J5cHRfb2xtX3YxOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoZDA1M2FjNGVkZjhlNmMx +NI1ArgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6Om9sbV92MTo6RGVjcnlwdGVkT2xtVjFFdmVudDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlw +ZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6OlNlY3JldFNlbmRDb250ZW50Pj46OmgzN2ZmMWUwMzRl +OTNhN2VhLjKOQHpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1h +Y2hpbmU6Ok9sbU1hY2hpbmU6OmhhbmRsZV90b19kZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19Pjo6 +aGI4YWY0M2E0OWQ4YTYzMjQuNI9AaGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OlN0b3JlOjpzYXZlX3Nlc3Npb25zOjp7e2Nsb3N1cmV9fT46Omg2MDYw +ZDM3MWE2MzAwYzE5kEC7AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50PG1hdHJpeF9zZGtfY3J5 +cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlRvRGV2aWNlRW5jcnlwdGVkRXZl +bnRDb250ZW50Pj46Omg4OWVhNTVmMmI5ZmRjNzY1LjSRQIEBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OmRlY3J5cHRfb2xt +X3YxOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+OjpoZDA1M2FjNGVkZjhlNmMxNC4xkkB3Y29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNo +aW5lOjpnZXRfZW5jcnlwdGlvbl9pbmZvOjp7e2Nsb3N1cmV9fT46Omg1ZGI0YzczNWZkODZkZmM3 +LjGTQHpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6 +Ok9sbU1hY2hpbmU6OmdldF92ZXJpZmljYXRpb25fc3RhdGU6Ont7Y2xvc3VyZX19Pjo6aGU1Yjcy +YTQzNDBjMjk4MWYuMZRAdmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OlN0b3JlOjpzYXZlX2luYm91bmRfZ3JvdXBfc2Vzc2lvbnM6Ont7Y2xvc3VyZX19 +Pjo6aDc1ZWIzOGJiNGVlNjBkNWaVQIcBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJbmJvdW5kR3JvdXBTZXNz +aW9uOjpkZWNyeXB0Ojp7e2Nsb3N1cmV9fT46Omg0N2M5ZjIyZGVmNDRkMWZhlkB6Y29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjptYWNoaW5lOjpPbG1NYWNoaW5lOjpo +YW5kbGVfdG9fZGV2aWNlX2V2ZW50Ojp7e2Nsb3N1cmV9fT46OmhiOGFmNDNhNDlkOGE2MzI0LjWX +QLsBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZl +bnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpl +dmVudHM6OnJvb206OmVuY3J5cHRlZDo6VG9EZXZpY2VFbmNyeXB0ZWRFdmVudENvbnRlbnQ+Pjo6 +aDg5ZWE1NWYyYjlmZGM3NjUuNZhAbmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRp +b246Ok9wdGlvbjxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6VGFnT3JDb250ZW50Pj46 +OmhmMDE2YmRlMDQwZmZmZTZimUBDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6 +UGlja2xlRXJyb3I+OjpoNjQ0YTIyM2VkZmIyZWZkZppAhAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8d2FzbV9iaW5kZ2Vu +OjpKc1ZhbHVlLHdhc21fYmluZGdlbjo6SnNWYWx1ZT4+Pjo6aGJiOGU4MTc3ZDA0Zjc4ZjCbQG5j +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpjcnlwdG9f +YWxnb3JpdGhtczo6RGV2aWNlS2V5QWxnb3JpdGhtPjo6aGZiNzMyMjM1NmU0OWQ4YWQuNJxAcGNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +cm9vbV9rZXlfd2l0aGhlbGQ6OldpdGhoZWxkQ29kZT46OmhjMTA5YTA0YWE5NGEzZWZmLjOdQElj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjp0eXBlczo6S2V5RXJyb3I+OjpoNTVj +OGRlNGQ3NjMyYWRmOC40nkBhY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjp0eXBlczo6RXZlbnRFbmNyeXB0aW9uQWxnb3JpdGhtPjo6aDk4MTkwNDJmY2I1ODFmNWUu +NZ9AgAE8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6YmFja3VwOjpCYWNrdXBEZWNyeXB0aW9uS2V5 +IGFzIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpJbnRvV2FzbUFiaT46OmludG9fYWJp +OjpoODcwODk4ZmE4YTVlZGNjZKBAK2FsbG9jOjpzeW5jOjpBcmM8VD46Om5ldzo6aDhkMzM5YTky +ZDg2ZWQ4ZGKhQGRjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnJl +cXVlc3RzOjpVcGxvYWRTaWduaW5nS2V5c1JlcXVlc3Q+OjpoNDY0N2NhZDdhZDY4MDg1Zi4xokB4 +PG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmUgYXMgd2FzbV9iaW5k +Z2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6Omg2MjQ2ZGRlN2Vi +N2YzMWM0o0DTAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwoY29yZTo6b3B0aW9uOjpPcHRpb248 +bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNlcklkZW50 +aXR5PixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OklkZW50aXR5Q2hhbmdlcyxtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OkRldmljZUNoYW5nZXMpPjo6aDcwY2VlNjI5ODkzMTJhMTekQJgBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRva2lvOjpzeW5jOjpicm9hZGNhc3Q6OlJlY2VpdmVyPGFs +bG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlJvb21LZXlJbmZvPj46OnJl +Y3Y6Ont7Y2xvc3VyZX19Pjo6aGI4OTcxZTQwNmI4NzI0NGOlQFpjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6R29zc2lwUmVxdWVzdD46OmhhNTYz +YmQ1YjQ0YzQzN2I4LjWmQOYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPDxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6bWVtb3J5c3RvcmU6Ok1lbW9yeVN0b3JlPiBhcyBtYXRyaXhfc2RrX2NyeXB0 +bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojpsb2FkX2FjY291bnQ6Ont7Y2xvc3VyZX19 +Pjo6aGIzMTllYTIzZTdkNTFlMTCnQGFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uU3RvcmU+OjpoODY2MTMyNTBjMzYx +ZTIxZS42qEB0Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpj +cnlwdG9fc3RvcmU6Om1pZ3JhdGlvbnM6OmRiX3ZlcnNpb246Ont7Y2xvc3VyZX19Pjo6aGM3YzAw +ZDEzNTlhMmEzNDKpQH5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19pbmRleGVk +ZGI6OmNyeXB0b19zdG9yZTo6bWlncmF0aW9uczo6djBfdG9fdjU6OnNjaGVtYV9hZGQ6Ont7Y2xv +c3VyZX19Pjo6aDUwYjc0ZDMzOGE4M2FiNWKqQHpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6bWlncmF0aW9uczo6TWlncmF0aW9uRGI6 +Om5ldzo6e3tjbG9zdXJlfX0+OjpoNTU4OTY0OTJmNDAwOWE0MKtAhgFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6 +OkluYm91bmRHcm91cFNlc3Npb246OnBpY2tsZTo6e3tjbG9zdXJlfX0+OjpoNWFlN2E3ODBjOTFh +ZTc1OaxArAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6 +c3RvcmU6OlN0b3JlSGFuZGxlOjpvcGVuX2Zvcl9qczo6e3tjbG9zdXJlfX06Ol86Ol9fd2FzbV9i +aW5kZ2VuX2dlbmVyYXRlZF9TdG9yZUhhbmRsZV9vcGVuOjp7e2Nsb3N1cmV9fT46Omg3Nzg5NDA3 +ODMzZmZiODIzrUB4Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9yb29tX3NldHRpbmdzOjp7e2Nsb3N1cmV9fT46 +Omg2ZmMxNmVjNTc1NGIyYzA2rkCCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpkZWh5ZHJhdGVkX2RldmljZXM6OkRlaHlkcmF0ZWREZXZpY2VzOjpyZWh5 +ZHJhdGU6Ont7Y2xvc3VyZX19Pjo6aGZmYTYxZTliYWZkZDkyNTavQFljb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZVRyYW5zYWN0aW9uPjo6aDA1 +ZDY3YmYwMTRhMDFhMGYuM7BAhgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG9fd2FzbTo6ZGVoeWRyYXRlZF9kZXZpY2VzOjpSZWh5ZHJhdGVkRGV2aWNlOjpyZWNlaXZl +X2V2ZW50czo6e3tjbG9zdXJlfX0+OjpoMTIxODUwMGQxYzEzM2VmMLFAaWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OlJvb21TZXR0aW5ncz4+OjpoODJlNTc0MjU0NzI5NDFjNrJAggFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19pbmRleGVkZGI6OmNyeXB0b19zdG9yZTo6SW5kZXhlZGRiQ3J5cHRv +U3RvcmU6Om9wZW5fd2l0aF9uYW1lOjp7e2Nsb3N1cmV9fT46Omg3YzBhMTgzMzY1OGIzNDU0s0Bj +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjp1 +c2VyOjpPd25Vc2VySWRlbnRpdHk+OjpoNWE5M2I2YThjYzZiMTAwMS4ztEBXPHNlcmRlX2pzb246 +OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjplbmQ6 +OmhmNDZkM2UwYzI2NWIzMmE0tUBXY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRz +OjpzZWNyZXQ6OnJlcXVlc3Q6OlNlY3JldE5hbWU+OjpoOThiZTUxNmNiZDUyMWMwNy43tkBhY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6Y2Fu +Y2VsOjpDYW5jZWxDb2RlPjo6aDgzMDc2YTA3ZDQ4OWNjZmQuNrdAXGNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6OlJvb21NZXNzYWdlUmVxdWVzdD46 +OmhhZWYyZTJlMzI4MjRmOTkxuEBZPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8VyxGPiBhcyBz +ZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjplbmQ6OmhmNDZkM2UwYzI2NWIzMmE0LjG5QH5j +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aW5kZXhlZF9kYl9mdXR1cmVzOjppZGJfZGF0YWJhc2U6 +OmlkYl92ZXJzaW9uX2NoYW5nZV9ldmVudDo6SWRiVmVyc2lvbkNoYW5nZUV2ZW50Pjo6aDRlNzAw +NzEzZTQxMWVlMGG6QGhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXR5Pjo6aDRiMzJjZTVjZWYxNGE1 +Y2MuM7tAiQE8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6ZGVoeWRyYXRlZF9kZXZpY2VzOjpEZWh5 +ZHJhdGVkRGV2aWNlIGFzIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpJbnRvV2FzbUFi +aT46OmludG9fYWJpOjpoNDE2OTY4MDBhN2Y1MWY5MbxAWTxzZXJkZV9qc29uOjpzZXI6OkNvbXBv +dW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6ZW5kOjpoZjQ2ZDNlMGMy +NjViMzJhNC4yvUBuY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6U3RvcmVDYWNoZUd1YXJkOjphY2NvdW50Ojp7e2Nsb3N1cmV9fT46OmgzODM4YmUxOWNi +ZTJhNWQ5LjG+QIgBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpv +bG06OnNpZ25pbmc6OlByaXZhdGVDcm9zc1NpZ25pbmdJZGVudGl0eTo6Y2FuX3NpZ25fdXNlcnM6 +Ont7Y2xvc3VyZX19Pjo6aGNkYmRlNTlmYTY1M2RlMzMuMb9AgwFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmlu +Z0lkZW50aXR5OjpzaWduX3VzZXI6Ont7Y2xvc3VyZX19Pjo6aDc0YmExNjNmNTg4NzQ4N2MuMsBA +hgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlv +bjo6SWRlbnRpdGllc0JlaW5nVmVyaWZpZWQ6OmNhbl9zaWduX2RldmljZXM6Ont7Y2xvc3VyZX19 +Pjo6aDZiOTZlMmJjY2U2Y2UyMmQuMcFAbWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6c3RvcmU6OktleVF1ZXJ5TWFuYWdlcjo6c3luY2VkOjp7e2Nsb3N1cmV9fT46 +Omg5NTBjZGE2ZTkzY2Q4ZTg0LjXCQHZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nk +a19jcnlwdG86OnN0b3JlOjpTdG9yZTo6Z2V0X2RldmljZV9mcm9tX2N1cnZlX2tleTo6e3tjbG9z +dXJlfX0+OjpoYjJjMjkxODBjN2U2NWU3Mi41w0BZPHNlcmRlX2pzb246OnNlcjo6Q29tcG91bmQ8 +VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjplbmQ6OmhmNDZkM2UwYzI2NWIz +MmE0LjPEQDNjb3JlOjpvcHRpb246Ok9wdGlvbjwmVD46OmNsb25lZDo6aDM3MjM1ZjQzOTNkYjQ4 +YWPFQLQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6 +ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +OjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpSb29tS2V5V2l0aGhlbGRDb250ZW50Pj46Omhj +MmFlYmM4ZjYwNzg4ODY3xkBaY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5 +cHRvOjpnb3NzaXBpbmc6Okdvc3NpcHBlZFNlY3JldD46Omg4OWVhODlkNzJmMDU2N2M4x0BpY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OnBr +X3NpZ25pbmc6OlBpY2tsZWRTaWduaW5ncz46OmhjMWM0MTFkMWE1NGE4OGI1yEDeAWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmRldmljZV9rZXlzOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpVbnNpZ25lZERldmljZUluZm8+ +OjpkZXNlcmlhbGl6ZTo6X19GaWVsZD4+OjpoYTIwYTcwMzFkNGFkNWY0OMlAUmNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6ZW51bXM6OlRvRGV2aWNlRXZlbnRUeXBlPjo6aDk5 +ZDM2N2QxNDgxMjUyNWHKQFljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OnJlcXVlc3RzOjpUb0RldmljZVJlcXVlc3Q+OjpoZjIxYmZmZjI5YWVkZmJjMstAiAFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lv +bnM6Om91dGJvdW5kOjpPdXRib3VuZEdyb3VwU2Vzc2lvbjo6cGlja2xlOjp7e2Nsb3N1cmV9fT46 +Omg3OTc4YzRlZWEyZGJhZTM4zECTAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZTo6c2VyaWFsaXpl +X2luYm91bmRfZ3JvdXBfc2Vzc2lvbjo6e3tjbG9zdXJlfX0+OjpoNGJiMjViMzZiNGE0ZmY1Ys1A +xgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9f +c3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlIGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +dHJhaXRzOjpDcnlwdG9TdG9yZT46OmRlbGV0ZV9vdXRnb2luZ19zZWNyZXRfcmVxdWVzdHM6Ont7 +Y2xvc3VyZX19Pjo6aDhhNjVmMzk1OWQxOGU2YWbOQIEBPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpt +aXNzaW5nX2ZpZWxkOjpNaXNzaW5nRmllbGREZXNlcmlhbGl6ZXI8RT4gYXMgc2VyZGU6OmRlOjpE +ZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9hbnk6OmgxM2VhY2VjNjI5MzAyMGRmz0BkPHNlcmRl +OjpkZTo6dmFsdWU6Ok1hcERlc2VyaWFsaXplcjxJLEU+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNz +Pjo6bmV4dF92YWx1ZV9zZWVkOjpoMjM1MjUwYTcyZDE5MjRjNNBAWTxzZXJkZV9qc29uOjpzZXI6 +OkNvbXBvdW5kPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6ZW5kOjpoMzJk +Y2NiYzc0MmYxNzRkYi4y0UBiY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6 +UmVzdWx0PHUzMixybXA6OmRlY29kZTo6VmFsdWVSZWFkRXJyb3I+Pjo6aDM0ZjNkNTc2NDE1NDBk +ZmLSQIABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PG1hdHJp +eF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6S2RmSW5mbyxybXBfc2VyZGU6OmRlY29kZTo6RXJyb3I+ +Pjo6aDlhZWY3YWY3MGY2Y2ZlMzjTQDBzZXJkZTo6c2VyOjppdGVyYXRvcl9sZW5faGludDo6aDI1 +ZjhlZGNiMTU1Njc2ZjbUQIoBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGluZGV4ZWRfZGJfZnV0 +dXJlczo6cmVxdWVzdDo6ZnV0dXJlczo6aWRiX3JlcXVlc3RfZnV0dXJlOjpjcmVhdGVfc3VjY2Vz +c19jbG9zdXJlOjp7e2Nsb3N1cmV9fT46OmhmNjYyNWE4MzA0N2FiYzZh1UCHAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl90cmFuc2FjdGlvbjo6aWRiX3Ry +YW5zYWN0aW9uX2xpc3RlbmVyczo6YmFzZV9jYWxsYmFjazo6e3tjbG9zdXJlfX0+OjpoMTFlNzM1 +NzJhMzkzMThkNdZAfmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxpbmRleGVkX2RiX2Z1dHVyZXM6 +OmlkYl90cmFuc2FjdGlvbjo6aWRiX3RyYW5zYWN0aW9uX3Jlc3VsdDo6SWRiVHJhbnNhY3Rpb25S +ZXN1bHQ+OjpoYTFlODEyZjhmNjczMWY1MddAWTxzZXJkZV9qc29uOjpzZXI6OkNvbXBvdW5kPFcs +Rj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6ZW5kOjpoNzgxNTVlNTgwNDA3YmU2 +ZS4x2ECBAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxv +Yzo6Ym94ZWQ6OkJveDx2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5OjpFZDI1NTE5UHVibGljS2V5 +Pj4+OjpoYjY0OGMyOTJjMWNmZGFlY9lAK2FsbG9jOjpzeW5jOjpBcmM8VD46Om5ldzo6aGM1MjYz +YjhlMDg5NzcyMDTaQFI8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgdHJhY2luZ19jb3JlOjpm +aWVsZDo6VmFsdWU+OjpyZWNvcmQ6Omg4YzkxMGJjYzg3NWQ3ZjVk20BNbWF0cml4X3Nka19jcnlw +dG86OmlkZW50aXRpZXM6OmRldmljZTo6RGV2aWNlOjppc192ZXJpZmllZDo6aDUxODBlYzVlMjg2 +OGU1NjPcQC5zZXJkZV9qc29uOjp2YWx1ZTo6dG9fdmFsdWU6Omg5YjBmNzRkMzcxYjlhYzQ13UBk +PHNlcmRlOjpkZTo6dmFsdWU6Ok1hcERlc2VyaWFsaXplcjxJLEU+IGFzIHNlcmRlOjpkZTo6TWFw +QWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoMGM2MzM5NmExMGUwOTkyYd5AZDxzZXJkZTo6ZGU6 +OnZhbHVlOjpNYXBEZXNlcmlhbGl6ZXI8SSxFPiBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5l +eHRfdmFsdWVfc2VlZDo6aDZiMzVkYzAxNDNmNGQ1MjnfQGQ8c2VyZGU6OmRlOjp2YWx1ZTo6TWFw +RGVzZXJpYWxpemVyPEksRT4gYXMgc2VyZGU6OmRlOjpNYXBBY2Nlc3M+OjpuZXh0X3ZhbHVlX3Nl +ZWQ6Omg4MGZhODI4NWY2ZmY2YTlm4EBkPHNlcmRlOjpkZTo6dmFsdWU6Ok1hcERlc2VyaWFsaXpl +cjxJLEU+IGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZV9zZWVkOjpoZGQ4MTk4 +MTNiODhjNDAzZOFAX2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjpyZXF1ZXN0czo6UmVhZHk+OjpoY2MwMDRiYWRkYzVkMTk3OS4x4kBhY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OlZl +cmlmaWNhdGlvblN0b3JlPjo6aDgzNDg4NjVhMmZhMDQ4OGUuMuNAb2NvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6 +QWNjZXB0ZWRQcm90b2NvbHM+OjpoYzc2YzI1OTk5MGNhYjNkN+RAdmNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0YXJ0OjpLZXlWZXJpZmlj +YXRpb25TdGFydEV2ZW50Q29udGVudD46Omg1NTVhY2IyYmRlMDllNDhlLjHlQEg8YWxsb2M6OnN5 +bmM6OkFyYzxUPiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDc2NWE3NDA3NTRi +YTY0MTjmQHZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +OjpldmVudHM6OnJvb206OmVuY3J5cHRlZDo6TWVnb2xtVjFBZXNTaGEyQ29udGVudD46OmgzODIw +NDkzZjMyZWZlZGRj50B+Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjprZXk6 +OnZlcmlmaWNhdGlvbjo6c3RhcnQ6OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENv +bnRlbnQ+OjpoY2IyZDMyNDVjYzg5MmVhOS4x6ECyAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50 +PG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpSb29t +S2V5UmVxdWVzdENvbnRlbnQ+Pjo6aGFjZjc1NzllYzcyYjE5ZTPpQFk8c2VyZGVfanNvbjo6c2Vy +OjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZVN0cnVjdD46OmVuZDo6aDc4 +MTU1ZTU4MDQwN2JlNmUuMupALWFsbG9jOjpzeW5jOjpBcmM8VD46Om5ldzo6aGM1MjYzYjhlMDg5 +NzcyMDQuMetAVzxydW1hX2V2ZW50czo6Y2FsbDo6U2Vzc2lvbkRlc2NyaXB0aW9uIGFzIGNvcmU6 +OmNsb25lOjpDbG9uZT46OmNsb25lOjpoZTk1NzQ1MWNhNzE2NjM1OexAYm1hdHJpeF9zZGtfY3J5 +cHRvOjp2ZXJpZmljYXRpb246Om1hY2hpbmU6OlZlcmlmaWNhdGlvbk1hY2hpbmU6OnF1ZXVlX3Vw +X2NvbnRlbnQ6OmhkYjg3N2Y5YjUyYWM0YTAw7UBIY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRp +bWU6OmVycm9yOjpmb3JtYXQ6OkZvcm1hdD46OmhkNWVhNjY5ODRiMzI0ODY47kA0dG9raW86OnN5 +bmM6Om11dGV4OjpNdXRleDxUPjo6bmV3OjpoM2I3YjQ4YTE1OGIxOWM4Ne9AMmhhc2hicm93bjo6 +cmF3OjpCdWNrZXQ8VD46OmRyb3A6Omg0ZjQ2ZTk2YzVlZjE5MTkz8EB9Y29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHRva2lvOjpzeW5jOjpicm9hZGNhc3Q6OlJlY3ZHdWFyZDxtYXRyaXhfc2RrX2Ny +eXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBwZWRTZWNyZXQ+Pjo6aGQ0ZTJhZDRkOWFmYTU4OWTxQIYB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRva2lvOjpzeW5jOjpicm9hZGNhc3Q6OlJlY3ZHdWFy +ZDxhbGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpSb29tS2V5SW5mbz4+ +Pjo6aGViNDQ1YzkxYmJmZTkxMjnyQL8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OnJl +c3VsdDo6UmVzdWx0PHRva2lvOjpzeW5jOjpicm9hZGNhc3Q6OlJlY3ZHdWFyZDxtYXRyaXhfc2Rr +X2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBwZWRTZWNyZXQ+LHRva2lvOjpzeW5jOjpicm9hZGNh +c3Q6OmVycm9yOjpUcnlSZWN2RXJyb3I+Pjo6aGIwYmVmMWMwNGI4ZDM1YzTzQMgBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PHRva2lvOjpzeW5jOjpicm9hZGNh +c3Q6OlJlY3ZHdWFyZDxhbGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpS +b29tS2V5SW5mbz4+LHRva2lvOjpzeW5jOjpicm9hZGNhc3Q6OmVycm9yOjpUcnlSZWN2RXJyb3I+ +Pjo6aGU4ZTUwNzFlOGRmNThkZTb0QPYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRva2lvOjpz +eW5jOjpicm9hZGNhc3Q6OlJlY3ZHdWFyZDwoY29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nk +a19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNlcklkZW50aXR5PixtYXRy +aXhfc2RrX2NyeXB0bzo6c3RvcmU6OklkZW50aXR5Q2hhbmdlcyxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OkRldmljZUNoYW5nZXMpPj46Omg1NDAzOThhM2M4MjhmZTIx9UC4AmNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDx0b2tpbzo6c3luYzo6YnJvYWRjYXN0 +OjpSZWN2R3VhcmQ8KGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVu +dGl0aWVzOjp1c2VyOjpSZWFkT25seU93blVzZXJJZGVudGl0eT4sbWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjpJZGVudGl0eUNoYW5nZXMsbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpEZXZpY2VD +aGFuZ2VzKT4sdG9raW86OnN5bmM6OmJyb2FkY2FzdDo6ZXJyb3I6OlRyeVJlY3ZFcnJvcj4+Ojpo +MGJlYThiZGZkOGMwNDAxZfZAhAFtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6 +OnNhc19zdGF0ZTo6U2FzU3RhdGU8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6Q2Fu +Y2VsbGVkPjo6YXNfY29udGVudDo6aGZhODNlZDk4OWUxYjE5ZGX3QJUBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPCgmcnVtYV9jb21tb246OmlkZW50aWZpZXJz +OjpkZXZpY2Vfa2V5X2lkOjpPd25lZERldmljZUtleUlkLGFsbG9jOjpzdHJpbmc6OlN0cmluZyk+ +Pjo6aGU0YWEyMzAwNzg1MzE2ZGP4QGE8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpDcm9zc1Np +Z25pbmdLZXlFeHBvcnQgYXMgemVyb2l6ZTo6WmVyb2l6ZT46Onplcm9pemU6OmhlZjBiZjJlMjBi +YzViYTc5+UAucXJjb2RlOjpjYW52YXM6OkNhbnZhczo6cHV0OjpoOWU2YTdiODg4OWQ0MjkzMvpA +uAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6Y2Vs +bDo6UmVmQ2VsbDxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8dTMyLGFsbG9j +OjpyYzo6UmM8bWF0cml4X3Nka19jb21tb246OmpzX3RyYWNpbmc6OkpzTG9nZ2VyPj4+Pj46Omg5 +MDMxYjc5MTU1ZjY5NmJk+0BaY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG51X2Fuc2lfdGVybTo6 +ZGlzcGxheTo6QW5zaUdlbmVyaWNTdHJpbmc8c3RyPj46Omg1NGU3OTU4NGY2ZjhiZTc2/EBUdHJh +Y2luZ19zdWJzY3JpYmVyOjpmbXQ6OmZtdF9sYXllcjo6Rm9ybWF0dGVkRmllbGRzPEU+Ojphc193 +cml0ZXI6Omg1NTc5ZjU2OTkwMTRjOTcy/UA7ZnV0dXJlc19jaGFubmVsOjpsb2NrOjpMb2NrPFQ+ +Ojp0cnlfbG9jazo6aDFhM2NmZGM5MmFmYTBlODf+QKQBdm9kb3plbWFjOjpvbG06OnNlc3Npb246 +OmRvdWJsZV9yYXRjaGV0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2Rv +emVtYWM6Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3JhdGNoZXQ6OkRvdWJsZVJhdGNoZXQ+OjpkZXNl +cmlhbGl6ZTo6aDVlNzE4MmFiOWYzNGM5MTf/QG5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29y +ZTo6b3B0aW9uOjpPcHRpb248dm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmxpYm9sbTo6T25lVGlt +ZUtleT4+OjpoNTBhYjE0NjMyOGQ4M2M0NIBBiQF2b2RvemVtYWM6OnR5cGVzOjplZDI1NTE5Ojpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6OnR5cGVzOjplZDI1 +NTE5OjpFZDI1NTE5S2V5cGFpcj46OmRlc2VyaWFsaXplOjpoY2JhZjlhNThkODIyMTYzMIFBVTx2 +b2RvemVtYWM6Om1lZ29sbTo6cmF0Y2hldDo6UmF0Y2hldCBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+ +OjpjbG9uZTo6aDA5ZWYxN2ZmOGZlNmRjYmOCQYEBPGVkMjU1MTlfZGFsZWs6OnZlcmlmeWluZzo6 +VmVyaWZ5aW5nS2V5IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208Y3VydmUyNTUxOV9kYWxlazo6ZWR3 +YXJkczo6RWR3YXJkc1BvaW50Pj46OmZyb206OmhmYjNlZWRkNzdhN2VhZmYxg0FBYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bW92ZV90b19zbGljZTo6aDE0MmM5YjRmMDI0OGYyYmWE +QVg8cmFuZDo6cm5nczo6dGhyZWFkOjpUaHJlYWRSbmcgYXMgcmFuZF9jb3JlOjpSbmdDb3JlPjo6 +dHJ5X2ZpbGxfYnl0ZXM6Omg4MmMwYjY2Yjc5NDlkMjk3hUFFPGNvcmU6OmNlbGw6OkJvcnJvd0Vy +cm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhODRkMzUxMDkzMzc5NmRlhkFIPGNvcmU6 +OmNlbGw6OkJvcnJvd011dEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzYTA0ZWRj +MTU4MTU0YWVih0EyY29yZTo6Zm10OjpGb3JtYXR0ZXI6OndyaXRlX3N0cjo6aDA0ZGNkZTQ2YjY3 +ODQ5YWaIQUZjb3JlOjpjbXA6OmltcGxzOjo8aW1wbCBjb3JlOjpjbXA6Ok9yZCBmb3IgJkE+Ojpj +bXA6OmgxYjNiOTcxNTAwYjkyMzY5iUFDPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpj +bXA6Ok9yZD46OmNtcDo6aDM3MDhkMzk0M2VhODMyODMuMYpBfWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50 +czo6ZHVtbXk6OkR1bW15RXZlbnRDb250ZW50Pj46OmhjOGI1ZjhjODMyNGI3NWNhi0GHAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpvcHRpb246Ok9w +dGlvbjxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnZvaXBfaWQ6Ok93bmVkVm9pcElkPj4+Ojpo +OTJmMGM5ZjhmOGYwMGI2N4xBjAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVu +dHM6OnJvb206OlRodW1ibmFpbEluZm8+Pj4+OjpoMzJmNjRjZGJiZDU3NmQyYY1BkAFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6b3B0aW9uOjpPcHRp +b248YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkVGhyZWFk +Pj4+Pjo6aGNiNmRjZTVhMjgxMGRmNDiOQZEBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6 +Om9wdGlvbjo6T3B0aW9uPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjpib3hlZDo6Qm94PHJ1 +bWFfZXZlbnRzOjpyZWxhdGlvbjo6UmVmZXJlbmNlQ2h1bms+Pj4+OjpoZjAzZmI4MzliMTY3ZWZk +Zo9BmwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0OjpCVHJlZVNldDxydW1hX2NvbW1vbjo6aWRlbnRpZmll +cnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkPj4+OjpoYWYyOGUwNjY2NjE1NmEwYpBBpQFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bWFwOjpCVHJlZU1hcDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcscnVtYV9jb21tb246 +OnNlcmRlOjpiYXNlNjQ6OkJhc2U2ND4+Pjo6aDJmMWI5OGNkMmU1YTQ0NziRQakBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6U2lnbmluZ0tleXM8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpjcnlwdG9fYWxnb3Jp +dGhtczo6RGV2aWNlS2V5QWxnb3JpdGhtPj4+OjpoZTMxNzA4NzMyNWM1MmIxZJJB4gFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6 +Ok93bmVkVXNlcklkLHJ1bWFfY29tbW9uOjpzZXJkZTo6cmF3OjpSYXc8cnVtYV9jb21tb246OmVu +Y3J5cHRpb246OkNyb3NzU2lnbmluZ0tleT4+Pj46Omg0ZTc3ZDJiZjI1ZDZhYmEwk0GRAmNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9p +ZDo6T3duZWRVc2VySWQsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxh +bGxvYzo6c3RyaW5nOjpTdHJpbmcscnVtYV9jbGllbnRfYXBpOjprZXlzOjp1cGxvYWRfc2lnbmF0 +dXJlczo6djM6OkZhaWx1cmU+Pj4+OjpoMGVmYmM4YWM4ZmQ0NDg1MZRBugJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVk +VXNlcklkLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8cnVtYV9jb21t +b246OmlkZW50aWZpZXJzOjpkZXZpY2VfaWQ6Ok93bmVkRGV2aWNlSWQscnVtYV9jb21tb246OnNl +cmRlOjpyYXc6OlJhdzxydW1hX2NvbW1vbjo6ZW5jcnlwdGlvbjo6RGV2aWNlS2V5cz4+Pj4+Ojpo +YTZiY2Y0NzU4N2U4NGI0YZVBYWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246 +Ok9wdGlvbjxydW1hX2V2ZW50czo6cm9vbTo6TWVkaWFTb3VyY2U+Pjo6aGQ1ZjQ2MDIzZGQwYzg1 +MziWQUJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6aDZj +YjIxN2I4OTViYzlhNzeXQU9jb3JlOjpjbXA6OmltcGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBhcnRp +YWxFcTwmQj4gZm9yICZBPjo6ZXE6Omg3MTM1OTBjMjVkYjE2MWFjmEGAAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRp +dGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdGllcz4+OjpoZmQ5Zjg2OGEwZTcyN2M0OS4x +mUF4Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfY2xp +ZW50X2FwaTo6a2V5czo6dXBsb2FkX3NpZ25hdHVyZXM6OnYzOjpSZXF1ZXN0Pj46OmhiMGExMjYx +ODNjZjJiZTExmkFjY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9u +PHJ1bWFfZXZlbnRzOjpyb29tOjpNZWRpYVNvdXJjZT4+OjpoZDVmNDYwMjNkZDBjODUzOC4xm0GI +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1 +bHQ6OlJlc3VsdDxjb3JlOjpjb252ZXJ0OjpJbmZhbGxpYmxlLHdhc21fYmluZGdlbjo6SnNFcnJv +cj4+Pjo6aDFjMmIxODIzMTRkYTdlZTWcQXRjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6 +cmVzdWx0OjpSZXN1bHQ8Y29yZTo6b3B0aW9uOjpPcHRpb248dTg+LHNlcmRlX2pzb246OmVycm9y +OjpFcnJvcj4+OjpoYzMxMzFhNmVhMWFmN2YzMp1BbDxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6ZnV0 +dXJlc191bm9yZGVyZWQ6OnRhc2s6OlRhc2s8RnV0PiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+ +Ojpkcm9wOjpoNjE0NTYzMzhiZTdjOWRiZp5BMnN0ZDo6c3luYzo6cG9pc29uOjpGbGFnOjpkb25l +OjpoNjE5Y2FkZmEyMDM4NjdmNi4yn0FPY29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6Y21w +OjpQYXJ0aWFsRXE8JkI+IGZvciAmQT46OmVxOjpoMDcyMWU5MWNmMzMxZGFkNKBBcGNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6 +c3RvcmU6OkJhY2t1cERlY3J5cHRpb25LZXk+Pjo6aDM1YTYwYmExZThjN2ZkMTahQaEBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPChydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93 +bmVkVXNlcklkLGFsbG9jOjp2ZWM6OlZlYzxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmlj +ZV9pZDo6T3duZWREZXZpY2VJZD4pPjo6aDEwNDY4NTZjOWMzMDQ4NDaiQU9jb3JlOjpjbXA6Omlt +cGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6OmhhNjRkNGQz +MTQ1NzM3Yzczo0FoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6Y3Jvc3Nfc2lnbmluZzo6Y29tbW9uOjpTaWduaW5nS2V5Pjo6aDdlZjdjZWI3Y2JkNTJh +ZTCkQWNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9l +dmVudHM6OnJvb206Ok1lZGlhU291cmNlPj46OmhkNWY0NjAyM2RkMGM4NTM4LjWlQTZzZXJkZTo6 +c2VyOjpTZXJpYWxpemVyOjpjb2xsZWN0X3NlcTo6aDdlZDdmYWRiNjVjYzgyMDSmQUY8YWxsb2M6 +OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6Omg2YmVmMmZkNDYz +ZjYyYjBlp0GAAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxt +YXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdGll +cz4+OjpoZmQ5Zjg2OGEwZTcyN2M0OS40qEFoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6U2hhcmVJbmZvPjo6 +aGM3ZjljNDY0NmNiMjY0M2SpQWpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpTaGFyZUluZm8+OjpoYzdmOWM0 +NjQ2Y2IyNjQzZC4xqkFRPGhhc2hicm93bjo6cmF3OjpSYXdUYWJsZTxULEE+IGFzIGNvcmU6Om9w +czo6ZHJvcDo6RHJvcD46OmRyb3A6OmgwNThjNTI3ZDE3NWNmMDlkq0FjY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpyb29tOjpNZWRpYVNv +dXJjZT4+OjpoZDVmNDYwMjNkZDBjODUzOC43rEFQY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6U2lnbmF0dXJlPjo6aDE1ZjJjYWZmOTYzZDRjM2WtQTdj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk11dDo6Y2FsbF9tdXQ6OmgwNTljNTMzOWVjNDA1MTIwrkFB +YWxsb2M6OnNsaWNlOjo8aW1wbCBbVF0+Ojpzb3J0X2J5Ojp7e2Nsb3N1cmV9fTo6aDliZjYzNzYz +NmU2ODhiMTivQTY8VCBhcyBjb3JlOjpjb252ZXJ0OjpJbnRvPFU+Pjo6aW50bzo6aDg3N2FmNWQx +NjZmNzllZmSwQUw8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmNtcDo6UGFydGlhbEVx +PCZzdHI+Pjo6ZXE6Omg2ODYzMTU5OGNkZDE1NjE1sUEyY29yZTo6b3B0aW9uOjpPcHRpb248VD46 +OmV4cGVjdDo6aGZiMDVmYWIyN2IzOTMzOTGyQX9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29y +ZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6cGtfc2ln +bmluZzo6UGlja2xlZFNpZ25pbmdzPj46OmhkMTI1N2JkNDljYmQ4YjU1s0GYAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpvcHRpb246Ok9wdGlvbjxt +YXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5nOjpQaWNrbGVkU2VsZlNp +Z25pbmc+Pj46Omg0YzY4ZGJiMmE1N2JlZTdktEG8AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxj +b3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVl +TWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2tleV9pZDo6T3duZWREZXZpY2VL +ZXlJZCxhbGxvYzo6c3RyaW5nOjpTdHJpbmc+Pj46Omg2MWFhNmNhODdjMmMzMzlhtUHbAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNl +X2lkOjpPd25lZERldmljZUlkLG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25z +OjpvdXRib3VuZDo6U2hhcmVJbmZvPj4+OjpoODZlNTI0YWQxNWQzMTgwM7ZB4wFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6dG9fZGV2aWNlOjpEZXZpY2VJZE9yQWxs +RGV2aWNlcyxydW1hX2NvbW1vbjo6c2VyZGU6OnJhdzo6UmF3PHJ1bWFfZXZlbnRzOjplbnVtczo6 +QW55VG9EZXZpY2VFdmVudENvbnRlbnQ+Pj4+OjpoMGU4NmEzNjA0YTdlNzc3MbdBtAJjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6 +Ok93bmVkVXNlcklkLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8cnVt +YV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2VfaWQ6Ok93bmVkRGV2aWNlSWQsbWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpTaGFyZUluZm8+Pj4+Ojpo +Y2M0YWU3NjczOGQyNWFiM7hBvAJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxydW1hX2Nv +bW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkLGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8cnVtYV9jb21tb246OnRvX2RldmljZTo6RGV2aWNlSWRP +ckFsbERldmljZXMscnVtYV9jb21tb246OnNlcmRlOjpyYXc6OlJhdzxydW1hX2V2ZW50czo6ZW51 +bXM6OkFueVRvRGV2aWNlRXZlbnRDb250ZW50Pj4+Pj46Omg5NDYwYzliMTk3MzhlZTk5uUHcA2Nv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dHJh +bnNhY3Rpb25faWQ6Ok93bmVkVHJhbnNhY3Rpb25JZCwoYWxsb2M6OnN5bmM6OkFyYzxtYXRyaXhf +c2RrX2NyeXB0bzo6cmVxdWVzdHM6OlRvRGV2aWNlUmVxdWVzdD4sYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6 +Ok93bmVkVXNlcklkLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8cnVt +YV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2VfaWQ6Ok93bmVkRGV2aWNlSWQsbWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpTaGFyZUluZm8+Pik+Pj46 +Omg2MzQ5MzJmMjVkZjZmNTEwukFnY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlv +bjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6U2lnbmF0dXJlcz4+OjpoNTMxODk3 +ZmYwNDA0MjdkNbtBSzxhbGxvYzo6c3luYzo6QXJjPFQ+IGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1 +bHQ+OjpkZWZhdWx0OjpoYmNhNmU4MDVjYmU4MDBhOLxBMmNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+ +OjpleHBlY3Q6OmhkOTkwMDA0YWMxODEyOWYzvUHpAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxj +b3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpjZWxsOjpSZWZDZWxsPHN0ZDo6Y29sbGVjdGlvbnM6 +Omhhc2g6Om1hcDo6SGFzaE1hcDwqY29uc3Qgc3RyLGpzX3N5czo6SnNTdHJpbmcsY29yZTo6aGFz +aDo6QnVpbGRIYXNoZXJEZWZhdWx0PHNlcmRlX3dhc21fYmluZGdlbjo6c3RhdGljX3N0cl90b19q +czo6UHRySGFzaGVyPj4+Pj46OmhjNjllZDlkZTU1MjA3ODQ2vkE8c2VyZGVfanNvbjo6ZGU6OkRl +c2VyaWFsaXplcjxSPjo6ZWF0X2NoYXI6Omg3ZTRjYWM1MGVmZmZkMjQ1v0FkY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PFt1ODsgMjRdLHJtcF9zZXJkZTo6ZGVj +b2RlOjpFcnJvcj4+OjpoYjZjNzM1NzE5OGFiNmZmNcBBMWJhc2U2NDo6ZW5naW5lOjpFbmdpbmU6 +OmRlY29kZTo6aGFmZDc0ZmE2M2E2MTg2NDjBQTFzZXJkZTo6ZGU6OnNpemVfaGludDo6Y2F1dGlv +dXM6OmhjNzEyZjIxODZjNTZjNGQ2wkGBATxzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19m +aWVsZDo6TWlzc2luZ0ZpZWxkRGVzZXJpYWxpemVyPEU+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emVyPjo6ZGVzZXJpYWxpemVfYW55OjpoYzYyYjlkZTliMGRhYzA5MMNBQjxhbGxvYzo6dmVjOjpW +ZWM8dTg+IGFzIGFlYWQ6OkJ1ZmZlcj46OnRydW5jYXRlOjpoMGUwNjdmODI5MDQwZTZiNsRBKGFs +bG9jOjpyYzo6UmM8VD46Om5ldzo6aDQxMjlmNzNmMjdlYTkyNjHFQa4BYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpJbnRlcm5hbD46OmVkZ2VfYXJlYV9tdXQ6Omg1Njg5MzZmYjA2NzFmMzYwxkGuAWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6SW50ZXJuYWw+OjplZGdlX2FyZWFfbXV0OjpoODU1MGQ2NzlhZmYwY2NlZMdB2QFh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6Ok11dCxLLFYsTm9kZVR5cGU+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Om1hcmtlcjo6S1Y+OjppbnRvX3ZhbF9tdXQ6OmgyMjdhZWI0N2NhYjcwNThhyEHZAWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpLVj46OmludG9fdmFsX211dDo6aDU2ZmMyZDgzMDk0YTM1ODnJQdQBPG1hdHJpeF9zZGtfY3J5 +cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlRvRGV2aWNlRW5jcnlwdGVkRXZl +bnRDb250ZW50IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +OjpldmVudHM6OnJvb206OmVuY3J5cHRlZDo6T2xtVjFDdXJ2ZTI1NTE5QWVzU2hhMkNvbnRlbnQ+ +Pjo6ZnJvbTo6aDk0NTBjNDYzZjRlMjFmZjnKQSxjb3JlOjpjbXA6OlBhcnRpYWxPcmQ6OmxlOjpo +ZGI1MDk1MjNiOWY4ZjcxMMtBMmNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+OjpleHBlY3Q6OmhmNmI0 +ZTY3Mzc2NDk1YjZlzEFZbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cXJjb2RlOjpR +clZlcmlmaWNhdGlvbjo6b3RoZXJfdXNlcl9pZDo6aDQyM2E4ZmViNGUxNjYyOTPNQYABY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRv +OjppZGVudGl0aWVzOjp1c2VyOjpSZWFkT25seVVzZXJJZGVudGl0aWVzPj46Omg1YjhjZmUwZjZm +MjAzN2MxLjHOQVBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjptZWdvbG06OnJh +dGNoZXQ6OlJhdGNoZXQ+OjpoYTczYTYzNDI5NzE4MjdiYs9BZjxjaXBoZXI6OnN0cmVhbV93cmFw +cGVyOjpTdHJlYW1DaXBoZXJDb3JlV3JhcHBlcjxUPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+ +Ojpkcm9wOjpoZDgyYzdlN2FhMjVmZmVkOdBBYm1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246Om1hY2hpbmU6OlZlcmlmaWNhdGlvbk1hY2hpbmU6OmdldF92ZXJpZmljYXRpb246OmhjYzI3 +NzU2YzMwZGQzYzRk0UFZbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6 +VmVyaWZpY2F0aW9uTWFjaGluZTo6Z2V0X3Nhczo6aDMyNTA5MmQ3YjJlYTM3ZWPSQTFzZXJkZTo6 +ZGU6OnNpemVfaGludDo6Y2F1dGlvdXM6OmgyNzA3YzhjOGQ2ZmEyMjRi00FCaGFzaGJyb3duOjpy +YXc6OlJhd1RhYmxlSW5uZXI6OmRyb3BfaW5uZXJfdGFibGU6OmhmZmM4NTI1NjMzYzc3ZmEx1EE7 +dHJhY2luZ19jb3JlOjpmaWVsZDo6RmllbGRTZXQ6OnZhbHVlX3NldDo6aDM3Y2Y2NjFhNjgzMDVl +MDHVQTt0cmFjaW5nX2NvcmU6OmZpZWxkOjpGaWVsZFNldDo6dmFsdWVfc2V0OjpoNGVkYmY4OGYz +NGQ0ZDdlNdZBO3RyYWNpbmdfY29yZTo6ZmllbGQ6OkZpZWxkU2V0Ojp2YWx1ZV9zZXQ6OmhhOWIy +NTA1MjQ0NjEyM2Qx10FabWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRP +bmx5VXNlcklkZW50aXRpZXM6Om1hc3Rlcl9rZXk6Omg4ODUwZjcxNGNhMDIyMzU22EFLbWF0cml4 +X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM6Om90aGVyX3VzZXJfaWQ6OmhhOTI5 +M2UzODU4NzQ5Njkx2UFNbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM6 +Om90aGVyX2RldmljZV9pZDo6aGQwODk0NTUzNmEyNTU3MjnaQVptYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZDo6b3RoZXJfdXNlcl9pZDo6aGJk +OWUzOTJhYjMxZjI4MjHbQVxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpJZGVudGl0 +aWVzQmVpbmdWZXJpZmllZDo6b3RoZXJfZGV2aWNlX2lkOjpoYTU5YWI4OGQ3OWM5MDRmNtxBSW1h +dHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmlkZW50aXRpZXNfc3RyZWFtX3Jhdzo6aDk4 +ZjAwZGYwODE3MmYyOTfdQZkBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6 +T3B0aW9uPHRyYWNpbmdfc3Vic2NyaWJlcjo6cmVnaXN0cnk6OlNwYW5SZWY8dHJhY2luZ19zdWJz +Y3JpYmVyOjpyZWdpc3RyeTo6c2hhcmRlZDo6UmVnaXN0cnk+Pj46OmgyOTU5ZjIyMTJkMjg3NTI5 +3kH1A2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmxhdHRl +bjo6RmxhdE1hcDxjb3JlOjpvcHRpb246OkludG9JdGVyPHRyYWNpbmdfc3Vic2NyaWJlcjo6cmVn +aXN0cnk6OlNwYW5SZWY8dHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6c2hhcmRlZDo6UmVn +aXN0cnk+Pix0cmFjaW5nX3N1YnNjcmliZXI6OnJlZ2lzdHJ5OjpTY29wZTx0cmFjaW5nX3N1YnNj +cmliZXI6OnJlZ2lzdHJ5OjpzaGFyZGVkOjpSZWdpc3RyeT4sPG1hdHJpeF9zZGtfY29tbW9uOjpq +c190cmFjaW5nOjpKc0V2ZW50Rm9ybWF0dGVyIGFzIHRyYWNpbmdfc3Vic2NyaWJlcjo6Zm10Ojpm +b3JtYXQ6OkZvcm1hdEV2ZW50PHRyYWNpbmdfc3Vic2NyaWJlcjo6cmVnaXN0cnk6OnNoYXJkZWQ6 +OlJlZ2lzdHJ5LHRyYWNpbmdfc3Vic2NyaWJlcjo6Zm10Ojpmb3JtYXQ6OkRlZmF1bHRGaWVsZHM+ +Pjo6Zm9ybWF0X2V2ZW50Ojp7e2Nsb3N1cmV9fT4+OjpoMTc2NmFlOWI4NjM2YThiNt9BV2NvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NvbW1vbjo6anNfdHJhY2luZzo6SnNMb2dX +cml0ZXI+OjpoN2M1YTg3Y2UyOGM1Y2ZlM+BBO3RyYWNpbmdfY29yZTo6ZmllbGQ6OkZpZWxkU2V0 +Ojp2YWx1ZV9zZXQ6Omg2ZmE5MTE4YzQ0YWUxZjU04UE7dHJhY2luZ19jb3JlOjpmaWVsZDo6Rmll +bGRTZXQ6OnZhbHVlX3NldDo6aGYxYTczZDE0NmM1NWMxZjniQW1jb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6Y2VsbDo6UmVmQ2VsbDxhbGxvYzo6c3Ry +aW5nOjpTdHJpbmc+Pj46Omg1ZjZkOTY4MmE1MTE2NGZl40EybnVfYW5zaV90ZXJtOjpzdHlsZTo6 +U3R5bGU6Om5ldzo6aGM0YTQxMmMwMmMwOTdhMTTkQT13YXNtX2JpbmRnZW46OlVud3JhcFRocm93 +RXh0Ojp1bndyYXBfdGhyb3c6OmhmMWFhNTEwZDM4NjUxNjIy5UE2ZnV0dXJlc19jaGFubmVsOjps +b2NrOjpMb2NrPFQ+OjpuZXc6Omg2MzgxYTY0MzQ4YzczOGRk5kF0Y29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPGNvcmU6OnJlc3VsdDo6UmVzdWx0PGNvcmU6Om9wdGlvbjo6T3B0aW9uPHU4PixzZXJk +ZV9qc29uOjplcnJvcjo6RXJyb3I+Pjo6aDg5ZTExMjA4MDg1NzY5NWbnQTZ2b2RvemVtYWM6OnV0 +aWxpdGllczo6YmFzZTY0X2VuY29kZTo6aDUyOGZjNzdiMzJiNWQxNWXoQVQ8dm9kb3plbWFjOjpj +aXBoZXI6OmtleTo6Q2lwaGVyS2V5cyBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVyb2l6ZTo6aDdi +Nzg1NmM3M2E1ZjNhMzLpQWlhbGxvYzo6dmVjOjpwYXJ0aWFsX2VxOjo8aW1wbCBjb3JlOjpjbXA6 +OlBhcnRpYWxFcTwmW1VdPiBmb3IgYWxsb2M6OnZlYzo6VmVjPFQsQT4+OjpuZTo6aGIzYmYzYjFm +YmIxNGUyZGHqQVhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjp0eXBlczo6ZWQy +NTUxOTo6U2lnbmF0dXJlRXJyb3I+OjpoZjk5MWRlN2I4YzhkODNmYS4x60EyPCZUIGFzIGNvcmU6 +OmZtdDo6RGlzcGxheT46OmZtdDo6aGI0Zjc0MTgyY2I1ZTUyYmXsQYwBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9j +Ojpib3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpyb29tOjpFbmNyeXB0ZWRGaWxlPj4+Pjo6aGVlYmUy +NjZmOGFjNGI5MTDtQTJjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6ZXhwZWN0OjpoZTA3YmUyZjZh +MmRkMTFlNe5BPnNlcmRlOjpkZTo6dmFsdWU6OlNlcURlc2VyaWFsaXplcjxJLEU+OjpuZXc6Omgy +ZWMyMDU1NWMwOWVjNTM570Exc2VyZGU6OmRlOjpzaXplX2hpbnQ6OmNhdXRpb3VzOjpoNGViNmRm +NWY4YjNjMGY1MfBBMXNlcmRlOjpkZTo6c2l6ZV9oaW50OjpjYXV0aW91czo6aGU0ZmFhZWUxMzdl +MTQ0ZWTxQYABYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsVHlwZT46OmtleV9hcmVh +X211dDo6aDYzNWZjNDg2MDIxY2I1N2HyQTt0cmFjaW5nX2NvcmU6OmZpZWxkOjpGaWVsZFNldDo6 +dmFsdWVfc2V0OjpoZDQyZmI3YjkzN2RiMTg0ZPNBTjxqc19pbnQ6OmludDo6SW50IGFzIGNvcmU6 +OmNvbnZlcnQ6OlRyeUZyb208dTY0Pj46OnRyeV9mcm9tOjpoOGFiNjdkMzNlMGVkZDk3YvRBUDxh +bGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgdHJhY2luZ19jb3JlOjpmaWVsZDo6VmFsdWU+OjpyZWNv +cmQ6Omg4NDdiMWJmNGJhZDU4OWFk9UFQY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRyYWNpbmdf +Y29yZTo6ZGlzcGF0Y2hlcjo6UmVnaXN0cmFyPjo6aGE1ZmQ5MmU1ZDgxOGZjY2T2Qa4BYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpJbnRlcm5hbD46OmVkZ2VfYXJlYV9tdXQ6OmhkMzRlNmZmNTlkMjAyOTEz90FC +d2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6Oldhc21SZXQ8VD46OmpvaW46OmhmNzk4MzE2 +ZGExNTFhZjY5+EFgPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208 +YWxsb2M6OmJveGVkOjpCb3g8W1RdLEE+Pj46OmZyb206OmhhY2I0OGVlNDI5NDdjODFj+UFJPGNv +cmU6OmZtdDo6Rm9ybWF0dGVyIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoNTc1 +OGVmMDFmZGJjY2YxNvpBpwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46Om5ld19sZWFmOjpoMGFk +YmU2ZWU3MmUwNGY5ZPtBRmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2Rl +PEssVj46Om5ldzo6aGU2YjM5ZTFlNzhhYmMzYTH8QacBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+ +OjpuZXdfbGVhZjo6aDQwNDY5MTk4NTM4MzQ4MDP9QUZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6OmhjZDI1OTgxYjM0ZjIzZTFk/kFGYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoZWM5NjNhZDhhOTUx +MTIxYv9BpwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46Om5ld19sZWFmOjpoN2JlNjllOGVmNmQ3 +ZTVjN4BCRmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5l +dzo6aDcyMzE4ZGU2NDJiODA3MGWBQkZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpM +ZWFmTm9kZTxLLFY+OjpuZXc6OmhjNjQ2YjA2NGZhNzVlOWIwgkKnAWFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpMZWFmPjo6bmV3X2xlYWY6Omg5NTg1MDU5NjQ0OTJjMjU5g0JGYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoMmQ2NzA0N2IyMTFjOGUxN4RCpwFh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46Om5ld19sZWFmOjpoYjFjM2U0Mjg3MGUwZjY2N4VCRmFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aDYwMWJk +ZjBkMzU0MjllNDCGQkZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxL +LFY+OjpuZXc6OmhkZmJjNjJmODkwNmJjYWFmh0JGYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoN2I2NDM3ZmJiNjFmYjIzZYhCRmFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aGQ5YjU3NTBkYzVmYmIx +OTCJQkZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6 +Omg2NWZmZDEzZTMyNzcyZmZiikJKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50 +ZXJuYWxOb2RlPEssVj46Om5ldzo6aDljMzkwYzg4NDlhNjZhMGSLQkphbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpJbnRlcm5hbE5vZGU8SyxWPjo6bmV3OjpoZDkxOGUwNzFjMTY5N2Yw +N4xCSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkludGVybmFsTm9kZTxLLFY+Ojpu +ZXc6OmgyMTU5MDllNDNjZTcwZGI3jUJKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aGY4MDEzNjQ5ZGEyZmY4ODmOQkphbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpJbnRlcm5hbE5vZGU8SyxWPjo6bmV3OjpoYzhlODZkMTVhODIx +MzM0M49CSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkludGVybmFsTm9kZTxLLFY+ +OjpuZXc6Omg1NzRlYTQ1NzFmNDgxZmMzkEJKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aDQ0N2VhNWNhN2RmY2FhMzGRQkphbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpJbnRlcm5hbE5vZGU8SyxWPjo6bmV3OjpoMGUyNjY4OWVl +MDA2NWNkZJJCSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkludGVybmFsTm9kZTxL +LFY+OjpuZXc6Omg1ODcxYzQ3YTJjNWQzYjVik0JKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aDM4YWJkY2NkNTg1NTQ5NzGUQkphbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpJbnRlcm5hbE5vZGU8SyxWPjo6bmV3OjpoM2ViZjM0 +MTA0YzE4NWVlN5VCmwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8 +cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZl +bnRzOjpzdGlja2VyOjpTdGlja2VyRXZlbnRDb250ZW50Pj4+OjpoZDkwMjY2Zjk1ZGQzOGQ0NpZC +pQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6 +OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpyb29tOjpt +ZXNzYWdlOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudD4+Pjo6aGI2ZDE0ZTk2NjIxZjA5YzKXQrcB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpr +aW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJp +ZmljYXRpb246OmRvbmU6OktleVZlcmlmaWNhdGlvbkRvbmVFdmVudENvbnRlbnQ+Pj46Omg4YTQy +NmIzN2E2MmJhODQzmEKpAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJv +eDxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9l +dmVudHM6OnJvb206OnJlZGFjdGlvbjo6Um9vbVJlZGFjdGlvbkV2ZW50Q29udGVudD4+Pjo6aGI2 +MjdmZmQ5YzBlMGUxMTiZQqkBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6 +Qm94PHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1h +X2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpSb29tRW5jcnlwdGVkRXZlbnRDb250ZW50Pj4+Ojpo +ZDIwNzA3MjA5YjY1M2FhN5pCfGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6 +OkJveDxydW1hX2V2ZW50czo6cm9vbTo6cmVkYWN0aW9uOjpPcmlnaW5hbFN5bmNSb29tUmVkYWN0 +aW9uRXZlbnQ+Pjo6aDBlOTI5MjJiZjE0ZWIzYWSbQrABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGFsbG9jOjpib3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2Fn +ZUxpa2VFdmVudDxydW1hX2V2ZW50czo6Y2FsbDo6c2VsZWN0X2Fuc3dlcjo6Q2FsbFNlbGVjdEFu +c3dlckV2ZW50Q29udGVudD4+Pjo6aGYxZmM3N2MzZTM0ODUzMTicQn1jb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVu +dHM6Om9sbV92MTo6VG9EZXZpY2VDdXN0b21FdmVudD4+OjpoYmYxYzM2MmEwMjI2MmM1OZ1CnQFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6Omtp +bmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpyZWFjdGlvbjo6 +UmVhY3Rpb25FdmVudENvbnRlbnQ+Pj46Omg1N2VkMTZlMzk2ZTE0YzA4nkKjAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdp +bmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmNhbGw6Omhhbmd1cDo6Q2FsbEhh +bmd1cEV2ZW50Q29udGVudD4+Pjo6aDQ0ODYxMjhkYWI2ZWVjYWOfQrUBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxT +eW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmtleTo6 +S2V5VmVyaWZpY2F0aW9uS2V5RXZlbnRDb250ZW50Pj4+OjpoMDcyYTVlZTlmNWZjMjc4YqBCWGNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6 +TWVudGlvbnM+Pjo6aDdhOWRjODNjMmU5MWJjOWOhQqUBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGFsbG9jOjpib3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2Fn +ZUxpa2VFdmVudDxydW1hX2V2ZW50czo6X2N1c3RvbTo6Q3VzdG9tTWVzc2FnZUxpa2VFdmVudENv +bnRlbnQ+Pj46OmhjNjdmNjkyZjdmNjA2N2M5okK1AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxh +bGxvYzo6Ym94ZWQ6OkJveDxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VM +aWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjptYWM6OktleVZlcmlmaWNh +dGlvbk1hY0V2ZW50Q29udGVudD4+Pjo6aGY5ZmMyNzE4ZDVmYWM0MGKjQqMBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2lu +YWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6Y2FsbDo6aW52aXRlOjpDYWxsSW52 +aXRlRXZlbnRDb250ZW50Pj4+OjpoMzkyMDcxMmFkMWEzMWJjZKRCqwFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5 +bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjpjYW5kaWRhdGVzOjpDYWxsQ2Fu +ZGlkYXRlc0V2ZW50Q29udGVudD4+Pjo6aDdmOWM0ZjhmZDQ5NTliM2GlQrkBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2lu +YWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0 +YXJ0OjpLZXlWZXJpZmljYXRpb25TdGFydEV2ZW50Q29udGVudD4+Pjo6aGY4MjdmOTZkNGMxOTJm +YTOmQrsBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PHJ1bWFfZXZl +bnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6a2V5 +Ojp2ZXJpZmljYXRpb246OmNhbmNlbDo6S2V5VmVyaWZpY2F0aW9uQ2FuY2VsRXZlbnRDb250ZW50 +Pj4+OjpoMTYwMzczZjFiYWVjNDM0NadCqQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6 +OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2 +ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjpuZWdvdGlhdGU6OkNhbGxOZWdvdGlhdGVFdmVudENvbnRl +bnQ+Pj46Omg0MTFhZTdjZDkyMDcxN2ZlqEKjAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxv +Yzo6Ym94ZWQ6OkJveDxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtl +RXZlbnQ8cnVtYV9ldmVudHM6OmNhbGw6OmFuc3dlcjo6Q2FsbEFuc3dlckV2ZW50Q29udGVudD4+ +Pjo6aGQzZTNhZDRlMjllNjBhZTKpQqMBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpi +b3hlZDo6Qm94PHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVu +dDxydW1hX2V2ZW50czo6Y2FsbDo6cmVqZWN0OjpDYWxsUmVqZWN0RXZlbnRDb250ZW50Pj4+Ojpo +M2Y5MTIxNzBhODUzNmQwM6pCuwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVk +OjpCb3g8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1 +bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6YWNjZXB0OjpLZXlWZXJpZmljYXRpb25BY2Nl +cHRFdmVudENvbnRlbnQ+Pj46OmgwZGJjNjFjOTU2MGIzNmY4q0K5AWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3lu +Y01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpyZWFkeTo6 +S2V5VmVyaWZpY2F0aW9uUmVhZHlFdmVudENvbnRlbnQ+Pj46Omg3YTJmMDkxM2Q2MzYxMDQwrEJ2 +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRz +Ojpyb29tOjpyZWRhY3Rpb246OlJvb21SZWRhY3Rpb25VbnNpZ25lZD4+OjpoYmI5NDAzYzM3OWI5 +ZGVjNK1CYmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cm9vbTo6cmVkYWN0 +aW9uOjpSb29tUmVkYWN0aW9uVW5zaWduZWQ+OjpoODFlNDk2M2JlODI5ZjlhNi40rkJ6Y29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpyb29t +OjpyZWRhY3Rpb246OlJvb21SZWRhY3Rpb25FdmVudENvbnRlbnQ+Pjo6aGI0NGQ3NjhkMjMzNGNm +NDSvQntjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9j +b21tb246OmlkZW50aWZpZXJzOjp2b2lwX3ZlcnNpb25faWQ6OlZvaXBWZXJzaW9uSWQ+Pjo6aGM2 +MGM3YmFiZDE1ZjljMzWwQn1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpP +cHRpb248bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5OjpSb29tS2V5 +Q29udGVudD4+OjpoMmU2ZWJlNTU4ZGJiOTczMbFCgAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OnJlbGF0aW9u +X3NlcmRlOjpSZWxhdGVzVG9EZUhlbHBlcj4+OjpoNTNmNTExOGVkMWJlN2QxM7JChAFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2ln +bmVkPHJ1bWFfZXZlbnRzOjpzdGlja2VyOjpTdGlja2VyRXZlbnRDb250ZW50Pj46OmhkNmI2NzFh +NzRkYjYyMWYxLjSzQoYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNp +Z25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6cmVhY3Rpb246OlJlYWN0aW9u +RXZlbnRDb250ZW50Pj46OmgzYjBkYWIyM2MxNTZkMmUwLjS0QowBY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2 +ZW50czo6Y2FsbDo6YW5zd2VyOjpDYWxsQW5zd2VyRXZlbnRDb250ZW50Pj46OmhmMWRjNDY0NTM3 +YmE5MGYzLjS1QowBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25l +ZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6aGFuZ3VwOjpDYWxsSGFu +Z3VwRXZlbnRDb250ZW50Pj46OmgwZWJmMTI2MTc4NjI2YmVhLjS2QowBY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1h +X2V2ZW50czo6Y2FsbDo6aW52aXRlOjpDYWxsSW52aXRlRXZlbnRDb250ZW50Pj46OmgyOGJkNTAx +YjFhN2FmMWViLjS3QowBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNp +Z25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6cmVqZWN0OjpDYWxs +UmVqZWN0RXZlbnRDb250ZW50Pj46Omg1OThhZjJjM2Q3MjE4MmExLjS4QoUBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjp2ZWM6OlZlYzx2b2RvemVt +YWM6OnR5cGVzOjpjdXJ2ZTI1NTE5OjpDdXJ2ZTI1NTE5UHVibGljS2V5Pj4+OjpoNTFiMDVmNjk1 +MDdjNTc3M7lChgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +YWxsb2M6OnZlYzo6VmVjPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0 +aW9uTWV0aG9kPj4+OjpoMWUyNDdkYmRjODEyNGMyYbpCjgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRz +OjpfY3VzdG9tOjpDdXN0b21NZXNzYWdlTGlrZUV2ZW50Q29udGVudD4+OjpoNWQ2MWNlYzc2NzFl +N2E4Ni40u0KOAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6 +Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OlJvb21NZXNz +YWdlRXZlbnRDb250ZW50Pj46OmhlODE4YjU1OGFmYzNiMGVjLjS8QpABY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6 +ZXZlbnRzOjpmb3J3YXJkZWRfcm9vbV9rZXk6OkZvcndhcmRlZFJvb21LZXlDb250ZW50Pj46Omgx +NjBhNjNjNjdmY2IwMDBlvUKSAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6 +dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6Om5lZ290aWF0 +ZTo6Q2FsbE5lZ290aWF0ZUV2ZW50Q29udGVudD4+OjpoZTNmYjdlNzg1MGE5NjE0Ny40vkKSAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtl +VW5zaWduZWQ8cnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6Um9vbUVuY3J5cHRlZEV2ZW50 +Q29udGVudD4+OjpoZDNjOTk1OThhNmMwOGYyYi40v0KSAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6 +OnJvb206OnJlZGFjdGlvbjo6Um9vbVJlZGFjdGlvbkV2ZW50Q29udGVudD4+OjpoYzEwZThmYzhk +OWYyNTI0My40wEKUAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWdu +ZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6OmNhbmRpZGF0ZXM6OkNh +bGxDYW5kaWRhdGVzRXZlbnRDb250ZW50Pj46OmhlNTdhMWU1MjllMThjMzk2LjTBQpcBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpyb29t +OjptZXNzYWdlOjp3aXRob3V0X3JlbGF0aW9uOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudFdpdGhv +dXRSZWxhdGlvbj4+OjpoMTJhMWM0ZDViZDhmODcxNsJCmQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRz +OjpjYWxsOjpzZWxlY3RfYW5zd2VyOjpDYWxsU2VsZWN0QW5zd2VyRXZlbnRDb250ZW50Pj46Omhk +NzFiOGVmNzIyMmE2MGY5LjTDQp4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRz +Ojp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmlj +YXRpb246OmtleTo6S2V5VmVyaWZpY2F0aW9uS2V5RXZlbnRDb250ZW50Pj46Omg4ZjY2NmU5MDYw +ZDAzZmY3LjTEQp4BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25l +ZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246Om1h +Yzo6S2V5VmVyaWZpY2F0aW9uTWFjRXZlbnRDb250ZW50Pj46OmgwNGEzNDRlZjI5ZGI4ZDk1LjTF +QqABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2Fn +ZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmRvbmU6OktleVZl +cmlmaWNhdGlvbkRvbmVFdmVudENvbnRlbnQ+Pjo6aDNlMjkwZjlmNTM3ZTRiYjMuNMZCogFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVu +c2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6cmVhZHk6OktleVZlcmlmaWNh +dGlvblJlYWR5RXZlbnRDb250ZW50Pj46OmgyMjQyMWI4YTM4M2NmYTQzLjTHQqIBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25l +ZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OnN0YXJ0OjpLZXlWZXJpZmljYXRpb25T +dGFydEV2ZW50Q29udGVudD4+OjpoMGI1ZTFhMmE5MGMzMGExNC40yEKkAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVt +YV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OktleVZlcmlmaWNhdGlvbkFjY2Vw +dEV2ZW50Q29udGVudD4+OjpoODg1ZTUwYWMwZWRhNDNjNi40yUKkAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9l +dmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpjYW5jZWw6OktleVZlcmlmaWNhdGlvbkNhbmNlbEV2 +ZW50Q29udGVudD4+OjpoNDZjMTM1MmEyYjVkNWZmYS40ykKmAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1lc3NhZ2VM +aWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OnJvb206OnJlZGFjdGlvbjo6Um9vbVJlZGFjdGlvbkV2 +ZW50Q29udGVudD4+Pjo6aGZmNzMxZDgxYmViZTMwYjnLQrMBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1l +c3NhZ2VMaWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpyb29tOjpyZWRhY3Rpb246Ok9yaWdpbmFs +U3luY1Jvb21SZWRhY3Rpb25FdmVudD4+Pjo6aGEzM2JiNjY1YjdiMDM5NjbMQtIBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpyZWxhdGlv +bjo6QnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2lu +YWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6c3RpY2tlcjo6U3RpY2tlckV2ZW50 +Q29udGVudD4+Pj46OmhhZDU5ZGIyYWJmMWM3YzlhzULUAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNz +YWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VM +aWtlRXZlbnQ8cnVtYV9ldmVudHM6OnJlYWN0aW9uOjpSZWFjdGlvbkV2ZW50Q29udGVudD4+Pj46 +OmhkOGNlYjYyZjk2NGQ0MTM3zkLaAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRp +b246Ok9wdGlvbjxydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0 +aW9uczxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVt +YV9ldmVudHM6OmNhbGw6OmFuc3dlcjo6Q2FsbEFuc3dlckV2ZW50Q29udGVudD4+Pj46OmhhNzdh +YTBkMWIzOWEzNTBiz0LaAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9w +dGlvbjxydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxy +dW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVu +dHM6OmNhbGw6Omhhbmd1cDo6Q2FsbEhhbmd1cEV2ZW50Q29udGVudD4+Pj46Omg3ZGJmZWJjNjE3 +NGU4ZDA00ELaAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxy +dW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2 +ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmNh +bGw6Omludml0ZTo6Q2FsbEludml0ZUV2ZW50Q29udGVudD4+Pj46OmhlYTQ1NGNjNDY2ZDgzMDY3 +0ULaAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2 +ZW50czo6cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6 +a2luZHM6Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmNhbGw6OnJl +amVjdDo6Q2FsbFJlamVjdEV2ZW50Q29udGVudD4+Pj46Omg0MzI2YzczYThjMzg1YmE50kLcAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6 +cmVsYXRpb246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6a2luZHM6 +Ok9yaWdpbmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6Ol9jdXN0b206OkN1c3Rv +bU1lc3NhZ2VMaWtlRXZlbnRDb250ZW50Pj4+Pjo6aDRkOTYwNzY0Y2JmYjIwNDfTQtwBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpyZWxh +dGlvbjo6QnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpraW5kczo6T3Jp +Z2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6cm9vbTo6bWVzc2FnZTo6Um9v +bU1lc3NhZ2VFdmVudENvbnRlbnQ+Pj4+OjpoN2M2ZTZkNTE4ZTlhYzYzZtRC4AFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJlbGF0aW9u +OjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5h +bFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjpuZWdvdGlhdGU6OkNhbGxO +ZWdvdGlhdGVFdmVudENvbnRlbnQ+Pj4+OjpoYWNkOGU1YmE1Nzk1NTY1NtVC4AFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJlbGF0aW9u +OjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5h +bFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6OlJvb21F +bmNyeXB0ZWRFdmVudENvbnRlbnQ+Pj4+OjpoMGQ2ODQxZmVkYjBlNmE4NtZC4AFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJlbGF0aW9u +OjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5h +bFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpyb29tOjpyZWRhY3Rpb246OlJvb21S +ZWRhY3Rpb25FdmVudENvbnRlbnQ+Pj4+OjpoYzhjM2FiOTM4YjQ1NjEzY9dC4gFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJlbGF0aW9u +OjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5h +bFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpjYWxsOjpjYW5kaWRhdGVzOjpDYWxs +Q2FuZGlkYXRlc0V2ZW50Q29udGVudD4+Pj46OmgxNjUwOGE2ODE4OTNlNGM22ELnAWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6cmVsYXRp +b246OkJ1bmRsZWRNZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdp +bmFsU3luY01lc3NhZ2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmNhbGw6OnNlbGVjdF9hbnN3ZXI6 +OkNhbGxTZWxlY3RBbnN3ZXJFdmVudENvbnRlbnQ+Pj4+OjpoZjJmMmVkMTgxNDY2ZDc1MtlC7AFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6 +OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6OmtpbmRz +OjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNh +dGlvbjo6a2V5OjpLZXlWZXJpZmljYXRpb25LZXlFdmVudENvbnRlbnQ+Pj4+OjpoNTg3OGRmMjJk +ZGZiZWZmYdpC7AFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9l +dmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjpr +ZXk6OnZlcmlmaWNhdGlvbjo6bWFjOjpLZXlWZXJpZmljYXRpb25NYWNFdmVudENvbnRlbnQ+Pj4+ +OjpoN2M5Y2YxMDdjNjkwMDZhNNtC7gFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0 +aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxh +dGlvbnM8cnVtYV9ldmVudHM6OmtpbmRzOjpPcmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1 +bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6ZG9uZTo6S2V5VmVyaWZpY2F0aW9uRG9uZUV2 +ZW50Q29udGVudD4+Pj46Omg2ZDU4M2U2YTY4NzcyYjI53ELwAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6cmVsYXRpb246OkJ1bmRsZWRN +ZXNzYWdlTGlrZVJlbGF0aW9uczxydW1hX2V2ZW50czo6a2luZHM6Ok9yaWdpbmFsU3luY01lc3Nh +Z2VMaWtlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpyZWFkeTo6S2V5VmVy +aWZpY2F0aW9uUmVhZHlFdmVudENvbnRlbnQ+Pj4+OjpoZDM0MzRjOWY2ZGRlNjIwZd1C8AFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnJl +bGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8cnVtYV9ldmVudHM6OmtpbmRzOjpP +cmlnaW5hbFN5bmNNZXNzYWdlTGlrZUV2ZW50PHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlv +bjo6c3RhcnQ6OktleVZlcmlmaWNhdGlvblN0YXJ0RXZlbnRDb250ZW50Pj4+Pjo6aGJmZTcwMzBk +MWI1YTg1MjHeQvIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9u +PHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VMaWtlUmVsYXRpb25zPHJ1bWFf +ZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VFdmVudDxydW1hX2V2ZW50czo6 +a2V5Ojp2ZXJpZmljYXRpb246OmFjY2VwdDo6S2V5VmVyaWZpY2F0aW9uQWNjZXB0RXZlbnRDb250 +ZW50Pj4+Pjo6aDI3NzIzMzM2ODBmNjdhYjDfQvIBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNv +cmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QnVuZGxlZE1lc3NhZ2VM +aWtlUmVsYXRpb25zPHJ1bWFfZXZlbnRzOjpraW5kczo6T3JpZ2luYWxTeW5jTWVzc2FnZUxpa2VF +dmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmNhbmNlbDo6S2V5VmVyaWZpY2F0 +aW9uQ2FuY2VsRXZlbnRDb250ZW50Pj4+Pjo6aGJhNzNmMTE3NzdmMjE3YTTgQtcCY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPDxtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmV2ZW50czo6dG9fZGV2aWNlOjpUb0RldmljZUV2ZW50PEM+IGFzIHNlcmRlOjpkZTo6 +RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6 +ZSBmb3IgPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2 +aWNlRXZlbnQ8Qz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZT46OmRlc2VyaWFsaXplOjpIZWxw +ZXI8Qz4+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZD4+OjpoZDAzY2YyZTY2Njk4MGQ3NeFCZmNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxzZXJkZTo6X19wcml2YXRlOjpk +ZTo6Y29udGVudDo6Q29udGVudD4+OjpoN2U1OWZmZmMwZmRmNTkzOeJCVWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxydW1hX2V2ZW50czo6Y2FsbDo6Y2FuZGlkYXRlczo6Q2FuZGlkYXRlPjo6aDNi +ZTc2YjlmN2Y5ZWM4YzTjQl1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpP +cHRpb248c2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPj46Omg5OWJkNDFlZGU3ODU0ZDJjLjHkQmRj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6 +OmNhbGw6Omhhbmd1cDo6UmVhc29uPj46Omg5NzQ1ZjU0MjlhNDE1NDVl5UJoY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjpjYWxsOjpTZXNz +aW9uRGVzY3JpcHRpb24+Pjo6aDdlOWM2OWIxODU1NTdiYjDmQm5jb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnN0 +cmluZzo6U3RyaW5nPj4+OjpoNDQxMGM2YmI0NmNmMmZlZOdCdWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246 +OmNhbmNlbDo6Q2FuY2VsQ29kZT4+OjpoOTU1ODNjY2I0Mzc4NTFmMehCWWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX3FyY29kZTo6dHlwZXM6OlFyVmVyaWZpY2F0aW9uRGF0YT46 +OmhmYjBmNmFiNDUwNzU2MmQw6UJfY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtf +Y3J5cHRvOjp0eXBlczo6YmFja3VwOjpNZWdvbG1WMUF1dGhEYXRhPjo6aGE4YjJkZjFmZjFmYTRm +YjHqQjlzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6aGJkYTQ3ZjMwNTE4 +NjQ5OWLrQmhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +OjpTdG9yZTo6dHJhbnNhY3Rpb246Ont7Y2xvc3VyZX19Pjo6aDU5MTIyMDI5ODljOGU3MGUuMuxC +bWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2Rr +X2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50Pj46OmhkZjc3MWRhYTdlYzhlNDg1LjHtQnFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vz +c2lvbnM6Om91dGJvdW5kOjpFbmNyeXB0aW9uU2V0dGluZ3M+OjpoNDQ5Y2UzYWYyZTM4MzgzMO5C +hwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OkluYm91bmRHcm91cFNlc3Np +b24+Pjo6aDE1ZTM1ZDRiNzNjNzRjNGPvQl5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3pl +bWFjOjp0eXBlczo6Y3VydmUyNTUxOTo6Q3VydmUyNTUxOVNlY3JldEtleT46Omg1Nzk0MmUwNTA3 +YzBkNjky8EKCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxt +YXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpldmVudF9lbnVtczo6T3V0Z29pbmdDb250 +ZW50Pj46OmhlYzFmYTZlZDNhNzRiN2RhLjTxQoUBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNv +cmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmlu +Zzo6Y29tbW9uOjpDcm9zc1NpZ25pbmdLZXk+Pjo6aGJiZjdmNjNhNTM0MGY5ZWQuM/JCyQFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpwb2lzb246OlBvaXNvbkVycm9yPHN0ZDo6 +c3luYzo6cndsb2NrOjpSd0xvY2tSZWFkR3VhcmQ8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +c2V0OjpCVHJlZVNldDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNl +cklkPj4+Pjo6aDgwMTE0OTEzMDZiMjMwYjfzQmJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxs +b2M6OmJveGVkOjpCb3g8ZWQyNTUxOV9kYWxlazo6c2lnbmluZzo6U2lnbmluZ0tleT4+OjpoOTNk +MDY5YWY5ZWQ4NGRiZfRCbGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9w +dGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OlNhcz4+OjpoNmM1YWM2 +OGM0YjAwMzMxOPVCTnN0ZDo6aW86OmltcGxzOjo8aW1wbCBzdGQ6OmlvOjpXcml0ZSBmb3IgJm11 +dCBXPjo6d3JpdGVfYWxsOjpoYjk5NzYyODQ0YzMyYzdhZPZCe2NvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6aGFuZGxlX3Zlcmlm +aWNhdGlvbl9ldmVudDo6e3tjbG9zdXJlfX0+OjpoY2MwNmU2Nzk4MDU5Yjc5MvdCa2NvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6c2VjcmV0 +OjpyZXF1ZXN0OjpTZWNyZXROYW1lPj46Omg4MzIyYjBlYmExNGJmODBk+EJwY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjppZGVu +dGl0aWVzOjpkZXZpY2U6OkRldmljZT4+OjpoNzQ4Zjg5ZDM5OWI0YThmYflCggFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OnZl +cmlmaWNhdGlvbjo6ZXZlbnRfZW51bXM6Ok91dGdvaW5nQ29udGVudD4+OjpoZWMxZmE2ZWQzYTc0 +YjdkYS41+kKIAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xt +OjphY2NvdW50OjpBY2NvdW50OjpkZWNyeXB0X3RvX2RldmljZV9ldmVudDo6e3tjbG9zdXJlfX06 +Ont7Y2xvc3VyZX19Pjo6aDU5MmVjZGY0MjNlYzVmNDj7Qm1jb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +Rmxvd0lkLCgpPj46Omg4YWM5YmI2N2NkMzBiMjA5/EKBAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpy +ZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdD4+OjpoOTM0ZTYwZDcwNTEzMTYxMv1CfWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGlu +ZTo6aGFuZGxlX3ZlcmlmaWNhdGlvbl9ldmVudDo6e3tjbG9zdXJlfX0+OjpoY2MwNmU2Nzk4MDU5 +Yjc5Mi4x/kJuY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1h +dHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Okdvc3NpcFJlcXVlc3Q+Pjo6aDJiNTZlODlhNDM5 +NzQzZWb/QoQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhl +bGRDb2RlPj46Omg1YTQ0MGQ5YTM4YzJhYTVigEOKAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxt +YXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpkZWNyeXB0X3RvX2Rldmlj +ZV9ldmVudDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pjo6aDU5MmVjZGY0MjNlYzVmNDguMYFD +jQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVz +dWx0OjpSZXN1bHQ8Y29yZTo6Y29udmVydDo6SW5mYWxsaWJsZSx2b2RvemVtYWM6OnR5cGVzOjpL +ZXlFcnJvcj4+Pjo6aGEzYjhkY2JhNWJkYjUyOGOCQ48BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250 +ZW50RGVzZXJpYWxpemVyPHNlcmRlX2pzb246OmVycm9yOjpFcnJvcj4+Pjo6aGRjZTM1M2U1Njlh +ZTNkOTWDQzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYTE4N2YyMWU0ODk1OTNj +MIRDvgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248KG1hdHJp +eF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlLG1hdHJpeF9z +ZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhlbGRDb2Rl +KT4+OjpoMDRmYTBmYjVkZDBlMWU3Mi4xhUPAAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpjcnlwdG9fYWxnb3Jp +dGhtczo6RGV2aWNlS2V5QWxnb3JpdGhtLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nf +c2lnbmluZzo6Y29tbW9uOjpTaWduaW5nS2V5KT4+OjpoOWM5MWM1ODQ3MTA4NTBmNoZDMDwmVCBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTRhY2M0NTBkNzkwNjAwY4dDMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoM2U2ZmI5ZjAyNmZkZDAyMYhDMDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoNDhlNTJkZTAzOTU1YWRhYYlDMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoYmEwN2JlMTMyOTkzMzMyZIpDMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoZGFhYWI4ZGQyMTFiMjE4M4tDMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTNj +NjhhOGE4NmM3NDcxZIxDMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZThiZTcwMmU5 +NDE0ZGE0NY1De2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxt +YXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6Ok91dGdvaW5nVmVyaWZpY2F0aW9uUmVxdWVzdD4+ +OjpoN2Y2MWZhOTQzNjFiZWQwNY5DTzxhbGxvYzo6YWxsb2M6Okdsb2JhbCBhcyBjb3JlOjphbGxv +Yzo6QWxsb2NhdG9yPjo6ZGVhbGxvY2F0ZTo6aDhlNmEwMjBhOTIyODg5NzaPQ5wBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPChydW1hX2NvbW1vbjo6aWRlbnRp +ZmllcnM6OmNyeXB0b19hbGdvcml0aG1zOjpEZXZpY2VLZXlBbGdvcml0aG0sYWxsb2M6OnN0cmlu +Zzo6U3RyaW5nKT4+OjpoOGNmNTk4YmViN2NjMWExMy4xkEPpAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpyZXN1 +bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkRldmljZUNoYW5nZXMsbWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjplcnJvcjo6Q3J5cHRvU3RvcmVFcnJvcj4sZnV0dXJlc191dGls +OjphYm9ydGFibGU6OkFib3J0ZWQ+Pj46Omg3M2M0OGFmZjRkYWM2OTExkUP2AWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxj +b3JlOjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6bWFuYWdl +cjo6RGV2aWNlQ2hhbmdlLG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6ZXJyb3I6OkNyeXB0b1N0 +b3JlRXJyb3I+LGZ1dHVyZXNfdXRpbDo6YWJvcnRhYmxlOjpBYm9ydGVkPj4+OjpoZTEyYjI4M2U4 +N2JkMjdkOJJDqgJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4X3Nka19jcnlw +dG86OnNlc3Npb25fbWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6 +OmVuY3J5cHRfc2Vzc2lvbl9mb3I6Ont7Y2xvc3VyZX19OjpEZXZpY2VSZXN1bHQsbWF0cml4X3Nk +a19jcnlwdG86OmVycm9yOjpPbG1FcnJvcj4sZnV0dXJlc191dGlsOjphYm9ydGFibGU6OkFib3J0 +ZWQ+Pj46OmhlYWQ4NGM4Mjg0ZGI1Zjg5k0PcAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpvcHRpb246Ok9wdGlv +bjwoJnJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6VXNlcklkLHN0ZDo6Y29sbGVj +dGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmlj +ZV9pZDo6T3duZWREZXZpY2VJZCxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNl +OjpSZWFkT25seURldmljZT4pPixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlw +dG9TdG9yZUVycm9yPj4+OjpoZDhkODQwMGE5ODhmYWNlN5RD+QJjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248Y29yZTo6cmVzdWx0OjpSZXN1bHQ8Y29yZTo6cmVz +dWx0OjpSZXN1bHQ8KGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNz +aW9uOjpTZXNzaW9uPixhbGxvYzo6dmVjOjpWZWM8KG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0 +aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZl +bnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhlbGRDb2RlKT4pLG1hdHJpeF9zZGtfY3J5cHRv +OjplcnJvcjo6T2xtRXJyb3I+LGZ1dHVyZXNfdXRpbDo6YWJvcnRhYmxlOjpBYm9ydGVkPj4+Ojpo +ZjMxOGJiMWY3NWRiZjc1MZVDXWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246 +Ok9wdGlvbjxzZXJkZV9qc29uOjp2YWx1ZTo6VmFsdWU+Pjo6aDk5YmQ0MWVkZTc4NTRkMmMuNZZD +dGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjx0cmFjaW5nX3N1 +YnNjcmliZXI6OnJlZ2lzdHJ5OjpzaGFyZGVkOjpDbG9zZUd1YXJkPj46OmhiMzFmNmQ4MTJmYjYw +YjZml0OWAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjwobWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjpJZGVudGl0eUNoYW5nZXMsbWF0cml4X3Nka19jcnlwdG86 +OnN0b3JlOjpEZXZpY2VDaGFuZ2VzKT4+OjpoNTJlZjFiMDg1Mjc5MGRhZZhDeWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6dmVjOjpWZWM8bWF0cml4 +X3Nka19jcnlwdG86OnN0b3JlOjpSb29tS2V5SW5mbz4+Pjo6aDJiMzRiM2RjNmI5NTI2OWGZQ3Bj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19j +cnlwdG86Omdvc3NpcGluZzo6R29zc2lwcGVkU2VjcmV0Pj46OmhmNDBjODQyOGUwZjI5ZDllmkPp +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjwoY29yZTo6b3B0 +aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5 +T3duVXNlcklkZW50aXR5PixtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OklkZW50aXR5Q2hhbmdl +cyxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkRldmljZUNoYW5nZXMpPj46OmgwOTFhMmY0NGFm +ZmE0ZmI4m0ORAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6Zmls +ZV9lbmNyeXB0aW9uOjphdHRhY2htZW50czo6QXR0YWNobWVudERlY3J5cHRvcjxzdGQ6OmlvOjpj +dXJzb3I6OkN1cnNvcjwmW3U4XT4+Pjo6aDUyNDY0NDFmYWQ2NGMxZTecQ1I8VCBhcyB3YXNtX2Jp +bmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6UmV0dXJuV2FzbUFiaT46OnJldHVybl9hYmk6OmhhYmNm +ZDRmMzk1OTcwMWYznUNtY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0 +aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ+Pjo6aGRmNzcxZGFh +N2VjOGU0ODUuNJ5DXGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxpbmRleGVkX2RiX2Z1dHVyZXM6 +OmlkYl9kYXRhYmFzZTo6SWRiRGF0YWJhc2U+OjpoNjZhMWQ4MDZmZTA5NmYzNC4xn0OsAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9jdXJzb3I6OmlkYl9j +dXJzb3Jfd2l0aF92YWx1ZTo6SWRiQ3Vyc29yV2l0aFZhbHVlPGluZGV4ZWRfZGJfZnV0dXJlczo6 +aWRiX29iamVjdF9zdG9yZTo6SWRiT2JqZWN0U3RvcmU+Pjo6aDVjMGIxYjA1Zjg1MzY1YzegQ4cB +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dhc206Om1hY2hpbmU6 +Ok9sbU1hY2hpbmU6OnJlZ2lzdGVyX3JlY2VpdmVfc2VjcmV0X2NhbGxiYWNrOjp7e2Nsb3N1cmV9 +fT46Omg5NjdmNTkzODk5NmQzZTQ1oUNtY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OnJlaHlkcmF0ZTo6e3tjbG9zdXJlfX0+ +OjpoZTI0NjFjNzQ3ZGE3Mzk0MaJDaGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OlN0b3JlOjp0cmFuc2FjdGlvbjo6e3tjbG9zdXJlfX0+OjpoNTkxMjIw +Mjk4OWM4ZTcwZS41o0N2Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +X3dhc206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmluaXRfZnJvbV9zdG9yZTo6e3tjbG9zdXJlfX0+ +OjpoNTBkZDIzYTRiNDVhY2I5ZaRDf2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2Rr +X2NyeXB0b193YXNtOjpkZWh5ZHJhdGVkX2RldmljZXM6OkRlaHlkcmF0ZWREZXZpY2VzOjpjcmVh +dGU6Ont7Y2xvc3VyZX19Pjo6aDk4MmNkMWRhOWE5NmZlMzelQ1Vjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpTdG9yZUNpcGhlcj46Omg4MjEyZGFl +MzhmMDUyNjI3pkMwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzODBmYTU0M2Y4MDRk +MTM0p0NQc3RkOjppbzo6aW1wbHM6OjxpbXBsIHN0ZDo6aW86OldyaXRlIGZvciAmbXV0IFc+Ojp3 +cml0ZV9hbGw6OmhiOTk3NjI4NDRjMzJjN2FkLjSoQ6YBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VV +bnNpZ25lZDxydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpSb29tRW5jcnlwdGVkRXZlbnRD +b250ZW50Pj4+OjpoZTk3ZTgwNzNmZGJkNWZmZalDqAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVu +c2lnbmVkPHJ1bWFfZXZlbnRzOjpyb29tOjpyZWRhY3Rpb246OlJvb21SZWRhY3Rpb25FdmVudENv +bnRlbnQ+Pj46OmhmZjczMWQ4MWJlYmUzMGI5LjGqQ7gBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VV +bnNpZ25lZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmNhbmNlbDo6S2V5VmVyaWZp +Y2F0aW9uQ2FuY2VsRXZlbnRDb250ZW50Pj4+OjpoMDhlYTRiMWExNzFiMjM2Y6tDqAFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnVuc2ln +bmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpjYWxsOjpjYW5kaWRhdGVzOjpD +YWxsQ2FuZGlkYXRlc0V2ZW50Q29udGVudD4+Pjo6aDc3YjBlMjIwZTY2NWEwMmOsQ5oBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjp1bnNp +Z25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6cmVhY3Rpb246OlJlYWN0aW9u +RXZlbnRDb250ZW50Pj4+OjpoMTk4NmRlNjZmYTJmODRhN61DrQFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdl +TGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpjYWxsOjpzZWxlY3RfYW5zd2VyOjpDYWxsU2VsZWN0 +QW5zd2VyRXZlbnRDb250ZW50Pj4+OjpoOWQxODZiMzNlMTUzM2U2Za5DmAFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpN +ZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpzdGlja2VyOjpTdGlja2VyRXZlbnRDb250 +ZW50Pj4+OjpoMWZiNTU3NjQ3YWRhZGY0Na9DogFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29y +ZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2ln +bmVkPHJ1bWFfZXZlbnRzOjpfY3VzdG9tOjpDdXN0b21NZXNzYWdlTGlrZUV2ZW50Q29udGVudD4+ +Pjo6aDM1YTU4YTI0ZmE4Yzg3NmSwQ7IBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9w +dGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxy +dW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmtleTo6S2V5VmVyaWZpY2F0aW9uS2V5RXZl +bnRDb250ZW50Pj4+OjpoMzljMDgyZGRiOWQ5ZDk3M7FDtgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlr +ZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6c3RhcnQ6OktleVZlcmlm +aWNhdGlvblN0YXJ0RXZlbnRDb250ZW50Pj4+OjpoM2FhODFiMDAzNTAwYzkyOLJDoAFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnVuc2ln +bmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpjYWxsOjppbnZpdGU6OkNhbGxJ +bnZpdGVFdmVudENvbnRlbnQ+Pj46OmhkNWJkZmUyMmQ2ZGZlYWJls0O4AWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6dW5zaWduZWQ6Ok1l +c3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6 +OktleVZlcmlmaWNhdGlvbkFjY2VwdEV2ZW50Q29udGVudD4+Pjo6aGJkODgzNGJjMzZjN2Y3YmS0 +Q6ABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZl +bnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6Y2FsbDo6aGFu +Z3VwOjpDYWxsSGFuZ3VwRXZlbnRDb250ZW50Pj4+OjpoM2NiOTA1NjQ1MTA2NjQxMbVDoAFjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVudHM6OnVu +c2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpjYWxsOjpyZWplY3Q6OkNh +bGxSZWplY3RFdmVudENvbnRlbnQ+Pj46OmhhNWVjZTI4ZmJiMDUxNmFmtkO0AWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6dW5zaWduZWQ6 +Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpkb25l +OjpLZXlWZXJpZmljYXRpb25Eb25lRXZlbnRDb250ZW50Pj4+OjpoZDE3OTcxMzg0NWIxMGI3MLdD +oAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9ldmVu +dHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFfZXZlbnRzOjpjYWxsOjphbnN3 +ZXI6OkNhbGxBbnN3ZXJFdmVudENvbnRlbnQ+Pj46OmgyYzU2MTgxZjMxNGRhYmU2uEOmAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6dW5z +aWduZWQ6Ok1lc3NhZ2VMaWtlVW5zaWduZWQ8cnVtYV9ldmVudHM6OmNhbGw6Om5lZ290aWF0ZTo6 +Q2FsbE5lZ290aWF0ZUV2ZW50Q29udGVudD4+Pjo6aGZhMWQ2YzE5NjVjNWZjMzi5Q7YBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1bWFfZXZlbnRzOjp1bnNp +Z25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246 +OnJlYWR5OjpLZXlWZXJpZmljYXRpb25SZWFkeUV2ZW50Q29udGVudD4+Pjo6aDc0NjEyYmJhOGVj +Y2MxNma6Q7IBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHJ1 +bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VVbnNpZ25lZDxydW1hX2V2ZW50czo6a2V5 +Ojp2ZXJpZmljYXRpb246Om1hYzo6S2V5VmVyaWZpY2F0aW9uTWFjRXZlbnRDb250ZW50Pj4+Ojpo +MTM0MDE3NGU4N2RlNjc5NrtDogFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248cnVtYV9ldmVudHM6OnVuc2lnbmVkOjpNZXNzYWdlTGlrZVVuc2lnbmVkPHJ1bWFf +ZXZlbnRzOjpyb29tOjptZXNzYWdlOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudD4+Pjo6aDU1NDE4 +NTU1MTJiNGQzODW8Q148aGFzaGJyb3duOjptYXA6OktleXM8SyxWPiBhcyBjb3JlOjppdGVyOjp0 +cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgyNDU0Y2FiM2EzZTlkN2YzvUPWA2Nv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6c3RyZWFtOjpmb3Jf +ZWFjaDo6Rm9yRWFjaDxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6c3RyZWFtOjptYXA6Ok1hcDxleWVi +YWxsOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnFyY29kZTo6SW5uZXJTdGF0ZT4sbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6 +cXJjb2RlOjpRclZlcmlmaWNhdGlvbjo6Y2hhbmdlczo6e3tjbG9zdXJlfX0+LG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6c2VuZF9jaGFuZ2VfaW5mb190b19jYWxsYmFjazo6 +e3tjbG9zdXJlfX0sbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpRcjo6cmVn +aXN0ZXJfY2hhbmdlc19jYWxsYmFjazo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pj46OmhlMjI4 +MGU3M2NmMDFiYWFlvkPPA2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxmdXR1cmVzX3V0aWw6OnN0 +cmVhbTo6c3RyZWFtOjpmb3JfZWFjaDo6Rm9yRWFjaDxmdXR1cmVzX3V0aWw6OnN0cmVhbTo6c3Ry +ZWFtOjptYXA6Ok1hcDxleWViYWxsOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPG1hdHJpeF9zZGtf +Y3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6aW5uZXJfc2FzOjpJbm5lclNhcz4sbWF0cml4X3Nk +a19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2FzOjpTYXM6OmNoYW5nZXM6Ont7Y2xvc3VyZX19Pixt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJpZmljYXRpb246OnNlbmRfY2hhbmdlX2luZm9fdG9f +Y2FsbGJhY2s6Ont7Y2xvc3VyZX19LG1hdHJpeF9zZGtfY3J5cHRvX3dhc206OnZlcmlmaWNhdGlv +bjo6U2FzOjpyZWdpc3Rlcl9jaGFuZ2VzX2NhbGxiYWNrOjp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJl +fX0+Pjo6aGNmNjRjMWQ0OTVmMzZlYWK/Q/IDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGZ1dHVy +ZXNfdXRpbDo6c3RyZWFtOjpzdHJlYW06OmZvcl9lYWNoOjpGb3JFYWNoPGZ1dHVyZXNfdXRpbDo6 +c3RyZWFtOjpzdHJlYW06Om1hcDo6TWFwPGV5ZWJhbGw6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI8 +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OklubmVyUmVxdWVzdD4s +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlZlcmlmaWNhdGlvblJl +cXVlc3Q6OmNoYW5nZXM6Ont7Y2xvc3VyZX19PixtYXRyaXhfc2RrX2NyeXB0b193YXNtOjp2ZXJp +ZmljYXRpb246OnNlbmRfY2hhbmdlX2luZm9fdG9fY2FsbGJhY2s6Ont7Y2xvc3VyZX19LG1hdHJp +eF9zZGtfY3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uUmVxdWVzdDo6cmVn +aXN0ZXJfY2hhbmdlc19jYWxsYmFjazo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pj46OmgzNDkz +N2FjYzQxOWFhZjg0wEPYATxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6 +Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6b2xt +Ojpncm91cF9zZXNzaW9uczo6QmFja2VkVXBSb29tS2V5Pjo6c2VyaWFsaXplOjpfX1NlcmlhbGl6 +ZVdpdGggYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplPjo6c2VyaWFsaXplOjpoOWExMmE3NTI1MDE0 +MjgxZMFDXmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpyZXN1bHQ6OlJlc3VsdDx1c2l6 +ZSxzdGQ6OmlvOjplcnJvcjo6RXJyb3I+Pjo6aDVlYWJkZjE2MzRlNTMyZTTCQzlhbGxvYzo6c2xp +Y2U6OnN0YWJsZV9zb3J0Ojp7e2Nsb3N1cmV9fTo6aDA3YTVlYTdlM2RhNDc5MzDDQz13YXNtX2Jp +bmRnZW46OlVud3JhcFRocm93RXh0Ojp1bndyYXBfdGhyb3c6Omg1NjU0NWZmNzBmNzczMWE0xEN4 +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFueWhvdzo6ZXJyb3I6OkVycm9ySW1wbDxtYXRyaXhf +c2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVycm9yPj46Omg5ZTE2Zjc3MmZl +ODEzOWQxxUN5Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFueWhvdzo6ZXJyb3I6OkVycm9ySW1w +bDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpxcmNvZGU6OlNjYW5FcnJvcj4+Ojpo +YTRlMjZkYmFjZTY0YzVmNsZDgAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YW55aG93OjplcnJv +cjo6RXJyb3JJbXBsPG1hdHJpeF9zZGtfY3J5cHRvOjpiYWNrdXBzOjprZXlzOjpkZWNyeXB0aW9u +OjpEZWNvZGVFcnJvcj4+OjpoYWQ4MGYzNWNiMGVlZGQ5M8dDhAFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8YW55aG93OjplcnJvcjo6RXJyb3JJbXBsPG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlw +dG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3JlRXJyb3I+Pjo6aDgyNTAwMDJhOWU2N2U5MDXI +Q5EBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHNlcmRlOjpf +X3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50RGVzZXJpYWxpemVyPHNlcmRlX2pzb246OmVy +cm9yOjpFcnJvcj4+Pjo6aGRjZTM1M2U1NjlhZTNkOTUuMclDaGNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29u +dGVudD4+OjpoN2U1OWZmZmMwZmRmNTkzOS4xykNdY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFu +eWhvdzo6ZXJyb3I6OkVycm9ySW1wbDx2b2RvemVtYWM6OlBpY2tsZUVycm9yPj46Omg3NjUyMjM4 +NzFlMjBkMzlly0NfY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFueWhvdzo6ZXJyb3I6OkVycm9y +SW1wbDxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I+Pjo6aDIzODBkNjZmMTE3NzgxYWHMQ2Njb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8YW55aG93OjplcnJvcjo6RXJyb3JJbXBsPGFsbG9jOjpzdHJp +bmc6OkZyb21VdGY4RXJyb3I+Pjo6aDk1Y2M3NGZiODJlM2JmOTfNQ2Njb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8YW55aG93OjplcnJvcjo6RXJyb3JJbXBsPHZvZG96ZW1hYzo6TGlib2xtUGlja2xl +RXJyb3I+Pjo6aGJkMjZlMWQ1NTZjZWVhNzfOQ2ljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YW55 +aG93OjplcnJvcjo6RXJyb3JJbXBsPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6T2xtRXJyb3I+ +Pjo6aDJlZjNhZDliYTFiNzM0NDLPQ2xjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YW55aG93Ojpl +cnJvcjo6RXJyb3JJbXBsPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6TWVnb2xtRXJyb3I+Pjo6 +aGZiNWQxNDUzZWVhMGQwMjXQQ29jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YW55aG93OjplcnJv +cjo6RXJyb3JJbXBsPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6U2lnbmF0dXJlRXJyb3I+Pjo6 +aDA5NTcyOTIwZTBiMWY2NDjRQ3Jjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YW55aG93OjplcnJv +cjo6RXJyb3JJbXBsPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U2VjcmV0SW1wb3J0RXJyb3I+ +Pjo6aDE2MzQ3NWYyMTFhOGIwMGHSQyxhbnlob3c6OmVycm9yOjpvYmplY3RfcmVmOjpoMWM3MDlh +MzYwMmU4MjE2MtNDLGFueWhvdzo6ZXJyb3I6Om9iamVjdF9yZWY6OmgyMDRkZjEyY2M0MTUyNmY4 +1EMsYW55aG93OjplcnJvcjo6b2JqZWN0X3JlZjo6aDI2Njc3NjliN2NmY2NlMzHVQyxhbnlob3c6 +OmVycm9yOjpvYmplY3RfcmVmOjpoNDk3ZTc3Nzc1YjQ3NDdjYtZDLGFueWhvdzo6ZXJyb3I6Om9i +amVjdF9yZWY6Omg0OTkxMzYwYWMwZWI0NGZi10MsYW55aG93OjplcnJvcjo6b2JqZWN0X3JlZjo6 +aDVjYWVhZjU3M2JkZWQxYmPYQyxhbnlob3c6OmVycm9yOjpvYmplY3RfcmVmOjpoNjI1OThjZTVh +NzViY2JmMtlDLGFueWhvdzo6ZXJyb3I6Om9iamVjdF9yZWY6Omg2ODY5MDk0MTQ3NDQxMjA02kMs +YW55aG93OjplcnJvcjo6b2JqZWN0X3JlZjo6aDgzMjUyMzQxYjczNzA5NGXbQyxhbnlob3c6OmVy +cm9yOjpvYmplY3RfcmVmOjpoOGFhZTViZGM4NTI1MmE0MdxDLGFueWhvdzo6ZXJyb3I6Om9iamVj +dF9yZWY6Omg5NWZkZWNkNWY1YmU2Y2Yy3UMsYW55aG93OjplcnJvcjo6b2JqZWN0X3JlZjo6aGI5 +OTVhZGJjMjIyN2U0MGHeQyxhbnlob3c6OmVycm9yOjpvYmplY3RfcmVmOjpoYjllOTk5YmExZmYw +MmUwNN9DLWFueWhvdzo6ZXJyb3I6Om9iamVjdF9kcm9wOjpoMjI2NTViOGZlMDk0M2ZkYeBDM2Fu +eWhvdzo6ZXJyb3I6Om9iamVjdF9kcm9wX2Zyb250OjpoMWJmYjIyODEzM2MxMjY4ZeFDDl9fcnVz +dF9yZWFsbG9j4kN3Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9u +PHZvZG96ZW1hYzo6bWVnb2xtOjpncm91cF9zZXNzaW9uOjpHcm91cFNlc3Npb25QaWNrbGU+Pjo6 +aDc0NTIzMDFkMDVmNWUzNDXjQ3xjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6VW5zaWduZWRE +ZXZpY2VJbmZvPj46OmgwMDRhNWI3MTA5OGQ0YWJm5EN+Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Np +b25zOjpvdXRib3VuZDo6U2hhcmVJbmZvPj46OmhhYzYwNmMwODFlZGNlNzIw5UODAWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6OlNlY3JldFNlbmRDb250ZW50Pj46OmhlMzI3ZjFi +NGQzZWFlODI35kOBAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlv +bjxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpTZWNy +ZXROYW1lPj4+OjpoZWE3NWFjNzFjNWUzMDVkM+dDhgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnZlYzo6VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6RXZlbnRFbmNyeXB0aW9uQWxnb3JpdGhtPj4+OjpoYzU4NDBjYWE1YWUyYzA4YehDjgFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpSb29tS2V5V2l0aGhlbGRD +b250ZW50Pj46OmgxNTk5NjJmOGNmNTg4MWRh6UOMAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxj +b3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpvcHRpb246Ok9wdGlvbjx2b2RvemVtYWM6Om9sbTo6 +YWNjb3VudDo6ZmFsbGJhY2tfa2V5czo6RmFsbGJhY2tLZXk+Pj46OmhhZWNhM2M0MjIzOWMzNWNj +6kPCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhf +c2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6b2xtX3YxOjpEZWNyeXB0ZWRPbG1WMUV2ZW50PG1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpzZWNyZXRfc2VuZDo6U2VjcmV0U2VuZENv +bnRlbnQ+Pj46OmhkZmQxN2UwZTRkYmI5Y2Q160PbAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxj +b3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlz +OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6 +dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXlIZWxwZXI+OjpkZXNlcmlhbGl6ZTo6X19GaWVs +ZD4+OjpoYjI3MDA3MjkyNjUwM2QzOexDZmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6 +Ym94ZWQ6OkJveDxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD4+OjpoZTdj +Nzk1MTFlMTI2ZDIzMO1DZmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2RvemVtYWM6Om9sbTo6 +YWNjb3VudDo6b25lX3RpbWVfa2V5czo6T25lVGltZUtleXNQaWNrbGU+OjpoZTkzZGZjOTc3ZWYz +YjUwZu5DYWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6 +ZmFsbGJhY2tfa2V5czo6RmFsbGJhY2tLZXlzPjo6aDE1MGZkZjc2ZWMwMWNjNjDvQ2Vjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OnJlY2VpdmVyX2NoYWlu +OjpSZWNlaXZlckNoYWluPjo6aGM3YjY0ZjE4NGM0N2Q5ZmQuMfBDaGNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxydW1hX2V2ZW50czo6ZW51bXM6OlRvRGV2aWNl +RXZlbnRUeXBlPj46Omg1YmIxZjQ2ZmY2NWZhNDhh8UNpY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPHZvZG96ZW1hYzo6b2xtOjphY2NvdW50OjpBY2NvdW50UGlj +a2xlPj46OmhiNGIxYzZiOWVlYmExMDE58kNpY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6 +Om9wdGlvbjo6T3B0aW9uPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uUGlja2xlPj46 +OmgxOTgyYzEzYWU3OWEwMGEy80NrY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlv +bjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6OlNlY3JldEluZm8+Pjo6aDk5 +ZWJiMzQ1YTQ5YjNlM2X0Q25jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpP +cHRpb248bWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6R29zc2lwUmVxdWVzdD4+OjpoYjM3 +NzRjZTk0NTA1MDFjNvVDf2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9w +dGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpQaWNrbGVkQ3Jvc3NTaWduaW5n +SWRlbnRpdHk+Pjo6aDAzZDI3OTI2ZjQyODk4MzP2Q2tjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNj +b3VudD4+OjpoZjdjNWRhYTI0YWYyMjliYfdDdWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpTdGF0aWNB +Y2NvdW50RGF0YT4+OjpoMjhjNmFkNGJmOWZjZDBiZPhDPXdhc21fYmluZGdlbjo6VW53cmFwVGhy +b3dFeHQ6OnVud3JhcF90aHJvdzo6aGViNWY0N2QxZDhhZDBlMTH5Q4EBPHNlcmRlOjpfX3ByaXZh +dGU6OmRlOjptaXNzaW5nX2ZpZWxkOjpNaXNzaW5nRmllbGREZXNlcmlhbGl6ZXI8RT4gYXMgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9hbnk6OmhjZTFmYjlhNTU5ZTZkYjc2 ++kNGYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3Ojpo +MzUwYmY3ZWY4NDQ1Nzc0OPtDSmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkludGVy +bmFsTm9kZTxLLFY+OjpuZXc6OmhjZDc2NjY1N2NiMWU1ZDNj/ENrPGNvcmU6OnNsaWNlOjpzb3J0 +OjptZXJnZV9zb3J0OjpCdWZHdWFyZDxULEVsZW1EZWFsbG9jRj4gYXMgY29yZTo6b3BzOjpkcm9w +OjpEcm9wPjo6ZHJvcDo6aDI3ODg0OGVmNWY4NjMwNGL9Q2hjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8YWxsb2M6OmJveGVkOjpCb3g8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRl +bnQ+Pjo6aGU3Yzc5NTExZTEyNmQyMzAuMf5DnQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29y +ZTo6cmVzdWx0OjpSZXN1bHQ8KCksYXJyYXl2ZWM6OmVycm9yczo6Q2FwYWNpdHlFcnJvcjx2b2Rv +emVtYWM6Om9sbTo6c2Vzc2lvbjo6cmVjZWl2ZXJfY2hhaW46OlJlY2VpdmVyQ2hhaW4+Pj46Omgx +MDk0ZjljNTg3MDQ3YjBk/0NoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6 +Qm94PHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50Pj46OmhlN2M3OTUxMWUx +MjZkMjMwLjKARGljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+Pjo6aGQ2ZjllOTMwY2IyMjdh +MTWBRGI8JnNlcmRlX3dhc21fYmluZGdlbjo6c2VyOjpTZXJpYWxpemVyIGFzIHNlcmRlOjpzZXI6 +OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RyOjpoMWNlNmY5MTcxZWJhMWQ3ZYJE2AFjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8bWF0cml4X3Nka19zdG9yZV9l +bmNyeXB0aW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2Rr +X3N0b3JlX2VuY3J5cHRpb246OktkZkluZm8+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZCxybXBfc2Vy +ZGU6OmRlY29kZTo6RXJyb3I+Pjo6aDBmMGU2MThjZDE0NWRlYmODRFI8cm1wOjplbmNvZGU6OlZh +bHVlV3JpdGVFcnJvcjxFPiBhcyBjb3JlOjplcnJvcjo6RXJyb3I+Ojpzb3VyY2U6Omg5YjkyMzA1 +YmZmNTg5MjdihEQsY29yZTo6ZXJyb3I6OkVycm9yOjpjYXVzZTo6aDcxM2Y3YThkN2ZiY2RkMzmF +RFQ8cm1wOjplbmNvZGU6OlZhbHVlV3JpdGVFcnJvcjxFPiBhcyBjb3JlOjplcnJvcjo6RXJyb3I+ +Ojpzb3VyY2U6Omg5YjkyMzA1YmZmNTg5MjdiLjGGRG48Z2VuZXJpY19hcnJheTo6R2VuZXJpY0Fy +cmF5PFQsTj4gYXMgZ2VuZXJpY19hcnJheTo6c2VxdWVuY2U6OkdlbmVyaWNTZXF1ZW5jZTxUPj46 +OmdlbmVyYXRlOjpoY2RkZjI2NjIxYmYyOTg3ZIdEYTxpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl9k +YXRhYmFzZTo6SWRiRGF0YWJhc2UgYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDhk +YjlkZjJlMWEzMGQ3MDmIRJQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6 +T3B0aW9uPGluZGV4ZWRfZGJfZnV0dXJlczo6aWRiX3RyYW5zYWN0aW9uOjppZGJfdHJhbnNhY3Rp +b25fcmVzdWx0OjpJZGJUcmFuc2FjdGlvblJlc3VsdD4+OjpoOWY1ZDYwYmJmOTAxNjFiOYlELGFu +eWhvdzo6ZXJyb3I6Om9iamVjdF9yZWY6OmhiN2I3OTEwYmRlZjkwZjczikRGYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoZmQyNmNkZGE5ODYxY2Zm +NItEpwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46Om5ld19sZWFmOjpoMDhmN2UwNmU5NjMyZjY0 +MoxERmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6 +aGExY2FmMDU4NDM4OGM1NziNRKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9k +ZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6 +aDBkN2NiOGU4MTVlMTMzOWKOREZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFm +Tm9kZTxLLFY+OjpuZXc6OmhmZjgyNjM3MGJiNWVmNWQ5j0RGYWxsb2M6OmNvbGxlY3Rpb25zOjpi +dHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoM2QzN2M0NjM5Y2Y4MzY1MpBEpwFhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TGVhZj46Om5ld19sZWFmOjpoMTI4NjFjMmQ1MWUwMzBiMJFERmFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aDJiMGUxMTQ3 +YWExMTA4ZmGSRKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDIyNzFlODhm +ZDA4ZWI3ZTCTRKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDMyZTJmNjNl +YWQyOTdkZGWUREZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+ +OjpuZXc6Omg1YjJhMGMyODRhZjlhMDZjlUSnAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25l +ZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6bmV3 +X2xlYWY6OmgzNThlNjY4YmNhMTAyNWI1lkRGYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoZTJmZTViYTY0M2ViZmJlZpdEpwFhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6TGVhZj46Om5ld19sZWFmOjpoNmJiYTMzYjk0ODg2YmIxNZhERmFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aDNhZGM0MGMwYzBkZjU2MmSZ +REZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6Omgy +MmE2ZWE4MTUyNWU3NjNjmkRGYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5v +ZGU8SyxWPjo6bmV3OjpoMWMyMDA0NDY1N2FmOGMxMptEpwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtl +cjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVh +Zj46Om5ld19sZWFmOjpoODkzMTI1ZjAyMzc3ZDZiMZxERmFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aGE4NTY3YTAyNzczZDA4MDidRKcBYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDlhN2Q2MmZlZDAwNDY3NTaeREZhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6Omg2MTI5NTFiZGM3 +OWFkNWM5n0RGYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6 +bmV3OjpoNjcxODc3NWM5YjE0NDFkYqBERmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +OkxlYWZOb2RlPEssVj46Om5ldzo6aGEyZDg5MDI1ZjhkZjBkMjShRKcBYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OkxlYWY+OjpuZXdfbGVhZjo6aGIyMjljYzE2Njk1Y2QzNmGiRKcBYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJr +ZXI6OkxlYWY+OjpuZXdfbGVhZjo6aGM3ODFiZDgxYzdmYjg1OWajREZhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6Omg2ZTRlMGRlMzU4NDQ1YjczpERG +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoNDgy +ZDdkMjAwNTc5NGUyMqVEpwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVm +PGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46Om5ld19sZWFmOjpoZDlm +NTgwYzljOWQzNTA4N6ZERmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2Rl +PEssVj46Om5ldzo6aGFhZTg5YjQ2NDI2NzI0NmGnREZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6OmhjN2EwNzNmNWY1OTRiZTM2qERKYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aDIxZmYwZThm +NDQyYjhjMjSpREphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpJbnRlcm5hbE5vZGU8 +SyxWPjo6bmV3OjpoMzgxYWQzZTYzMWI5MDEwYqpESmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6OkludGVybmFsTm9kZTxLLFY+OjpuZXc6OmhmODUwMDEwNmIzMjk5YjRhq0RKYWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aGQ3NjJh +YzhhMWY2NDFlZjGsREphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpJbnRlcm5hbE5v +ZGU8SyxWPjo6bmV3OjpoMmY0Zjk3ZWQzYzBjZGM0Y61ESmFsbG9jOjpjb2xsZWN0aW9uczo6YnRy +ZWU6Om5vZGU6OkludGVybmFsTm9kZTxLLFY+OjpuZXc6Omg2NmM2MzRiZDMzOWQ3MTkwrkRKYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aGRl +MzFkYjU0MGQ5ZjY2ZjevREphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpJbnRlcm5h +bE5vZGU8SyxWPjo6bmV3OjpoMjg4Mjc2MTNmZGFmMDk5NbBESmFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6OkludGVybmFsTm9kZTxLLFY+OjpuZXc6OmhjNjc2MDc3MTZmMWM2MDljsURK +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6 +aDlmMDQ4ZjdiNzM0Yzk3NDOyREphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpJbnRl +cm5hbE5vZGU8SyxWPjo6bmV3OjpoOTcyNzJlMTFmZTE0Y2Y5MrNESmFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6OkludGVybmFsTm9kZTxLLFY+OjpuZXc6OmgyZmVhNzg4MmM4ZDJlYWIw +tERKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5l +dzo6aGRiNGU2NThjZTJmMDljNWa1REphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpJ +bnRlcm5hbE5vZGU8SyxWPjo6bmV3OjpoZmU3ZWFjMmM3MTYxNmVkYrZESmFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6OkludGVybmFsTm9kZTxLLFY+OjpuZXc6OmhmYTBjZmQ3NDNlYzYz +ZTcxt0RKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46 +Om5ldzo6aGNiM2YwMzU1NTllYmQ0NzW4REphbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpJbnRlcm5hbE5vZGU8SyxWPjo6bmV3OjpoYWEyNTVlYTE2NzM1Yjk1NrlESmFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6OkludGVybmFsTm9kZTxLLFY+OjpuZXc6Omg4YjhjZGE3Njc1 +MDhiZTFmukSAAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLFR5cGU+Ojp2YWxfYXJl +YV9tdXQ6OmgwYWJlY2RjZDg2MTlmNzAzu0RwY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6 +OnJlc3VsdDo6UmVzdWx0PCgpLG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6U2lnbmF0dXJlRXJy +b3I+Pjo6aDFmNDIzZmQ2YjRlODk5YjEuMbxEcGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpWZXJpZmlj +YXRpb24+Pjo6aGQ5YWQ3ZTMwY2Y0OGZkNDC9RE5tYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGll +czo6ZGV2aWNlOjpVc2VyRGV2aWNlczo6ZGV2aWNlczo6aDg3Mjg2NmE5YzQxYmJkMmG+RHtjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlw +dG86OnJlcXVlc3RzOjpPdXRnb2luZ1ZlcmlmaWNhdGlvblJlcXVlc3Q+Pjo6aGU0ZWFmODVjYTdj +OWE0OTa/RNgBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNv +cmU6Om9wdGlvbjo6T3B0aW9uPChydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmNyeXB0b19hbGdv +cml0aG1zOjpEZXZpY2VLZXlBbGdvcml0aG0sbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpjcm9z +c19zaWduaW5nOjpjb21tb246OlNpZ25pbmdLZXkpPj4+OjpoOGEzZGU3NzUzN2NhMDU1NC4xwETS +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpvcHRp +b246Ok9wdGlvbjwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2Vfa2V5X2lkOjpPd25l +ZERldmljZUtleUlkLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6Y29t +bW9uOjpTaWduaW5nS2V5KT4+Pjo6aGM3OTk4NjcxYzIyOWZiNjEuMcFEQzxhbGxvYzo6c3luYzo6 +QXJjPFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDkyMWJmMWY4ZmVmMjQzOGPCRFBt +YXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjptYWNoaW5lOjpHb3NzaXBNYWNoaW5lOjp1c2Vy +X2lkOjpoYzA2Zjg0NjdkZWE3NTVlMcNEUm1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1h +Y2hpbmU6Okdvc3NpcE1hY2hpbmU6OmRldmljZV9pZDo6aDJjNzM4MTI1M2U2ZmMzOWHERHZjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJv +b21fa2V5X3dpdGhoZWxkOjpOb09sbVdpdGhoZWxkQ29udGVudD46OmhkM2IxZjA3NzcxYzJmOWY4 +xUSQAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxtYXRyaXhfc2Rr +X2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OkNvbW1vbldpdGhoZWxk +Q29kZUNvbnRlbnQ+Pjo6aDM3YWNkMTgwZDc2OGMwMTYuM8ZEZmNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29u +dGVudD4+OjpoMDUzZjcxODljZjRmMzliMcdEgQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29y +ZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVz +dHM6OlZlcmlmaWNhdGlvblJlcXVlc3Q+Pjo6aDNlZDg0MTk0MzY4MzI2NjbIREw8Y29yZTo6cGlu +OjpQaW48UD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6Omg0NGM2OGFi +ZDg2NTYzZWZjyURoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PHNl +cmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50Pj46OmgwNTNmNzE4OWNmNGYzOWIx +LjHKRI0BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9j +Ojp2ZWM6OlZlYzxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OlNob3J0QXV0aGVudGlj +YXRpb25TdHJpbmc+Pj46OmgyOTg1ZjFlZTljMjYyM2Qzy0RoY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGFsbG9jOjpib3hlZDo6Qm94PHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250 +ZW50Pj46OmgwNTNmNzE4OWNmNGYzOWIxLjLMRFRtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2Nv +dW50OjpTdGF0aWNBY2NvdW50RGF0YTo6aWRlbnRpdHlfa2V5czo6aDE1ZGY3MTg1NzNlMWE2NGTN +RIcBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9z +ZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJbmJvdW5kR3JvdXBTZXNz +aW9uPj46Omg2MGM5MDA4YTg5OTIyMDRkzkS/BGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjppdGVyOjphZGFwdGVyczo6ZmxhdHRlbjo6RmxhdE1hcDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6Okl0ZXI8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVz +ZXJJZCxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29tbW9u +OjppZGVudGlmaWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkLHJ1bWFfY29tbW9uOjppZGVu +dGlmaWVyczo6Y3J5cHRvX2FsZ29yaXRobXM6OkRldmljZUtleUFsZ29yaXRobT4+LGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6OnNldDo6QlRyZWVTZXQ8KCZydW1hX2NvbW1vbjo6aWRlbnRpZmll +cnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkLCZydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmlj +ZV9pZDo6T3duZWREZXZpY2VJZCk+LG1hdHJpeF9zZGtfY3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6 +OnNlc3Npb25zOjpTZXNzaW9uTWFuYWdlcjo6aGFuZGxlX290a19leGhhdXN0aW9uX2ZhaWx1cmU6 +Ont7Y2xvc3VyZX19Pj46Omg3MTcxODQyMDBhNzdlMDhkz0TSAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6 +OkludG9JdGVyPCgmcnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJ +ZCwmcnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2VfaWQ6Ok93bmVkRGV2aWNlSWQpPj4+ +OjpoMTBlNzI5OGY5YTM1ZjM4MdBEfWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRp +b246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6Ok91dGdvaW5nVmVyaWZpY2F0 +aW9uUmVxdWVzdD4+OjpoZTRlYWY4NWNhN2M5YTQ5Ni4x0US0AWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxjb3JlOjpvcHRp +b246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBSZXF1ZXN0Pixj +b3JlOjpjb252ZXJ0OjpJbmZhbGxpYmxlPj4+OjpoZWQzMjQ5M2E3MTgyOTE2MNJEbmNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6 +Z29zc2lwaW5nOjpHb3NzaXBSZXF1ZXN0Pj46OmgwMDJiNTcwNDRhYzQ5YjYx00TIAWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjpyZXN1bHQ6OlJlc3Vs +dDxhbGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6 +OmluYm91bmQ6OkluYm91bmRHcm91cFNlc3Npb24+LGNvcmU6OmNvbnZlcnQ6OkluZmFsbGlibGU+ +Pj46Omg4YTlmMjU2ZjU5MjE0YzJh1ERGbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpJZGVudGl0 +eUNoYW5nZXM6OmlzX2VtcHR5OjpoMGNmZmUwMzJmN2RjOGY3ZNVEMjwmVCBhcyBjb3JlOjpmbXQ6 +OkRpc3BsYXk+OjpmbXQ6OmhkZGM3ZWE3MTViZmJlYWNl1kR9PHRyYWNpbmdfc3Vic2NyaWJlcjo6 +bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6 +OlN1YnNjcmliZXI+OjptYXhfbGV2ZWxfaGludDo6aDBkMzQ3OTEzNDdlMzc3OGbXRFs8dHJhY2lu +Z19zdWJzY3JpYmVyOjpmbXQ6OmZvcm1hdDo6V3JpdGVyIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3 +cml0ZV9zdHI6OmgwMjg3ZTM2OWQwODIxOTdk2ERdPGNvcmU6Om9wdGlvbjo6T3B0aW9uPFQ+IGFz +IHdhc21fYmluZGdlbjo6VW53cmFwVGhyb3dFeHQ8VD4+OjpleHBlY3RfdGhyb3c6OmgwMDdhM2I4 +ODEyM2FjZjYw2URVPHdhc21fYmluZGdlbjo6Y2xvc3VyZTo6Q2xvc3VyZTxUPiBhcyBjb3JlOjpv +cHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoY2NmZjZkZTdlZWM4YmEwY9pEPTwmVCBhcyB0cmFjaW5n +X2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGNkYmMyMzdiNWFmMGQwNTjbRD13YXNtX2Jp +bmRnZW46OlVud3JhcFRocm93RXh0Ojp1bndyYXBfdGhyb3c6OmgxMWJjYTdiNTYyMTJkZDM33ERm +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PHNlcmRlOjpfX3ByaXZh +dGU6OmRlOjpjb250ZW50OjpDb250ZW50Pj46OmhmY2U0MTM3ZWQ5NjE1NWRj3URlY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyZWNlaXZlcl9jaGFpbjo6 +UmVjZWl2ZXJDaGFpbj46OmgyNzI3YjE0MjQ4MTUxOGEwLjHeRGtjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0OjpBY3RpdmVEb3Vi +bGVSYXRjaGV0Pjo6aDU2NjdjZTNlNjJmMmFjNDMuMd9EaWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29u +dGVudD4+OjpoN2U5ODMxMDQ5ZDI4YjgzNuBEjwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29y +ZTo6b3B0aW9uOjpPcHRpb248c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnRE +ZXNlcmlhbGl6ZXI8c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yPj4+OjpoZDIxZjVjZDg3NzgwNzIx +Y+FEaGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxzZXJkZTo6X19w +cml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD4+OjpoZmNlNDEzN2VkOTYxNTVkYy4x4kR5Y29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHZvZG96ZW1hYzo6b2xt +OjpzZXNzaW9uOjpyZWNlaXZlcl9jaGFpbjo6UmVjZWl2ZXJDaGFpbj4+OjpoOWFjMzk4YzQ0MmFl +OGU3YeNEZDx2b2RvemVtYWM6Om1lZ29sbTo6cmF0Y2hldDo6UmF0Y2hldEJ5dGVzIGFzIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aDRhZDA4NmRjOTExODhjZjnkRKcBYWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDJhYTkxZGUwYzVlYjU4OWLlREZhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6OmgyNmMxZmJi +MTJiZTQ1ODc05kSnAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6bmV3X2xlYWY6OmgyZTkyMGM1 +ZWVhMzE5NTQ150RGYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxW +Pjo6bmV3OjpoNzJmYjc0NmUxNDIzNGRiMOhESmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6OkludGVybmFsTm9kZTxLLFY+OjpuZXc6OmhlZDU2MjYwYjVhMDExNmU26URKYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aGY0YmE5MDc0 +YTlhZWU4ZWPqRGhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8c2Vy +ZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+Pjo6aGZjZTQxMzdlZDk2MTU1ZGMu +MutEX2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6bGli +b2xtOjpGYWxsYmFja0tleXNBcnJheT46Omg1MDFkOWI5NDk2YTExYTIz7ERwY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHZvZG96ZW1hYzo6b2xtOjphY2NvdW50 +OjpsaWJvbG06Ok9uZVRpbWVLZXk+Pjo6aDUwYWIxNDYzMjhkODNjNDQuMe1EXDxzdGQ6OmlvOjpj +dXJzb3I6OkN1cnNvcjxhbGxvYzo6dmVjOjpWZWM8dTgsQT4+IGFzIHN0ZDo6aW86OldyaXRlPjo6 +d3JpdGU6OmhiMDhhZGFlNmVlNmU5NjI07kRfY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96 +ZW1hYzo6b2xtOjptZXNzYWdlczo6bWVzc2FnZTo6UHJvdG9CdWZNZXNzYWdlPjo6aGY4NzZkMTBm +MWUzYmJjZGTvRDJjaXBoZXI6OmJsb2NrOjphbGxvY2F0ZV9vdXRfdmVjOjpoNTIyZGQwMzE2NTc4 +MzhlMPBEeDx2b2RvemVtYWM6Om9sbTo6bWVzc2FnZXM6Om1lc3NhZ2U6Ok1lc3NhZ2UgYXMgY29y +ZTo6Y29udmVydDo6VHJ5RnJvbTxhbGxvYzo6dmVjOjpWZWM8dTg+Pj46OnRyeV9mcm9tOjpoYzc5 +YzhhNjk0ZjE0NTg3MPFEhgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjptZWdv +bG06OmluYm91bmRfZ3JvdXBfc2Vzc2lvbjo6SW5ib3VuZEdyb3VwU2Vzc2lvbjo6ZnJvbV9saWJv +bG1fcGlja2xlOjpQaWNrbGU+OjpoYjQ3ZmQ1MzE5MmJmNmIwNfJEJHN1YnRsZTo6YmxhY2tfYm94 +OjpoODRiY2U0MzUxMTdlMjYyY/NEhwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0 +aW9uOjpPcHRpb248c3RkOjpzeW5jOjptdXRleDo6TXV0ZXhHdWFyZDx0b2tpbzo6c3luYzo6YmF0 +Y2hfc2VtYXBob3JlOjpXYWl0bGlzdD4+Pjo6aDBmMTY0ODAxNzc5OGQ2Zjn0REZhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6OmhiODUxMzQxYzYxMWJh +NDMy9URKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46 +Om5ldzo6aDQxZmZhOGRkNWM5N2RmOTH2RKcBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVk +LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdf +bGVhZjo6aGJkODNiNWM4M2NlNzg3YTD3REZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjpMZWFmTm9kZTxLLFY+OjpuZXc6Omg4ZWVmMDA5Y2M5MmI4YTYw+ERKYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aDgwZjU1NjQwOGFiN2I5 +MTb5RIABYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsVHlwZT46OmtleV9hcmVhX211 +dDo6aDI2MDVkZmY3OWQ3M2I0MDH6RGZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJv +eGVkOjpCb3g8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+Pjo6aGNkNTUy +OGNjYWM1MjhlNTL7RGhjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8 +c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+Pjo6aGNkNTUyOGNjYWM1Mjhl +NTIuMfxEaGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxzZXJkZTo6 +X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD4+OjpoY2Q1NTI4Y2NhYzUyOGU1Mi4y/URo +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PHNlcmRlOjpfX3ByaXZh +dGU6OmRlOjpjb250ZW50OjpDb250ZW50Pj46OmhjZDU1MjhjY2FjNTI4ZTUyLjP+RGljb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248c2VyZGU6Ol9fcHJpdmF0ZTo6 +ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+Pjo6aDExMTA3YzliMzc1MjQ1Mjf/RG08cnVtYV9ldmVudHM6 +OnJlbGF0aW9uOjpCdW5kbGVkTWVzc2FnZUxpa2VSZWxhdGlvbnM8RT4gYXMgY29yZTo6ZGVmYXVs +dDo6RGVmYXVsdD46OmRlZmF1bHQ6OmgyNWIwODlmMGQ2Y2I0NWRkgEWPAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29u +dGVudDo6Q29udGVudERlc2VyaWFsaXplcjxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I+Pj46Omgz +N2VjOTFlZjlhNjllYjUwgUVoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6 +Qm94PHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50Pj46OmhjZDU1MjhjY2Fj +NTI4ZTUyLjSCRWtjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248 +c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+Pjo6aDExMTA3YzliMzc1MjQ1 +MjcuMYNFpwFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZj46Om5ld19sZWFmOjpoNTQyMjY1NTA1M2Zj +MjkwYYRFOXNlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0OjpoYzNiZTJiNzhl +OGFlNjc2NoVFQzxhbGxvYzo6c3luYzo6QXJjPFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aGY5OGM5OWNkMmQ2OTRjZTGGRTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDE2 +YjA5YmNlOTQ5N2E1NmKHRacBYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJl +ZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok93bmVkLEssVixhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpuZXdfbGVhZjo6aDJi +YWFmYWNhMDM3ZDQ5MTmIRUZhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9k +ZTxLLFY+OjpuZXc6Omg2ZWIwMDlhMjY3NzY4N2UxiUVKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6SW50ZXJuYWxOb2RlPEssVj46Om5ldzo6aDFmNzc5MWQ2MTNlNTUwYzeKRTVyeXU6 +OmJ1ZmZlcjo6QnVmZmVyOjpmb3JtYXRfZmluaXRlOjpoZmYzN2U5ODIxZWQ5MDk2M4tFD19fd2Jp +bmRnZW5fZnJlZYxFKXN0ZDo6aW86OnN0ZGlvOjpzdGRvdXQ6Omg0ZDcyNzY3YzMyMTZiMTA1jUUx +Y29yZTo6Y2hhcjo6RXNjYXBlRGVidWc6OmNsZWFyOjpoZGFjYWU1MjIxNjliZWI2OY5FRDxjb3Jl +OjpmbXQ6OkFyZ3VtZW50cyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxZjU4ZWJlNTRi +Y2VlNGIyj0UyY29yZTo6Zm10OjpGb3JtYXR0ZXI6OndyaXRlX2ZtdDo6aDBiNmUyM2I4ZTY5Njli +MTOQRX9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248cnVtYV9j +b21tb246OmlkZW50aWZpZXJzOjp0cmFuc2FjdGlvbl9pZDo6T3duZWRUcmFuc2FjdGlvbklkPj46 +Omg5NTY4MTcyMWZlNTgyNjQwkUWCAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRp +b246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6bWFuYWdlcjo6S2V5c1F1 +ZXJ5UmVxdWVzdERldGFpbHM+Pjo6aDIwZjc0MGI0ZDVkZjBjNjmSRVpjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpCYWNrdXBEZWNyeXB0aW9uS2V5Pjo6 +aDg0MmExY2UyYWRjYjE2YmOTRXtjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6cGtfc2lnbmluZzo6U2Vs +ZlNpZ25pbmc+Pjo6aDY0ZWVhMzAwNzU4ZmQ2NjKURX9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJp +dmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5Pj46OmhiYWFlMWE5Y2EzYTgwZGFmlUV4Y29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtfY3J5cHRvOjpp +ZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlPj46Omg0YjU3ZTM5ZDAyMTllYTVjlkVy +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtf +Y3J5cHRvOjpzdG9yZTo6QmFja3VwRGVjcnlwdGlvbktleT4+OjpoMzVhNjBiYTFlOGM3ZmQxNi4y +l0V/Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9z +ZGtfY3J5cHRvOjppZGVudGl0aWVzOjp1c2VyOjpSZWFkT25seU93blVzZXJJZGVudGl0eT4+Ojpo +NzI1MGZjZDJkYzcyNzkwZZhFfmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246 +Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6YmFja3Vwczo6a2V5czo6YmFja3VwOjpNZWdvbG1W +MUJhY2t1cEtleT4+OjpoZjMxMmYyNzI2NTg2ZTU1MJlFYGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTx2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9rZXlzOjpFeHBvcnRlZFNlc3Npb25LZXk+Ojpo +NjgxYTMwNjhiZTVlOWM2MZpFkgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248YWxsb2M6OnN5bmM6OkFyYzxbbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6 +OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXRpZXNdPj4+OjpoYTY2N2U2NTNlYWFjNGYwM5tFjAFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OnN5bmM6 +OkFyYzxbbWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZp +Y2VdPj4+OjpoOTEzMDg5NWRkNTIxMDg0YZxFfWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpyZXF1ZXN0 +czo6UmVxdWVzdEhhbmRsZT4+OjpoMjU5YjhmYjhiY2I1NzBlOC4xnUWJAWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpn +cm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6Ok91dGJvdW5kR3JvdXBTZXNzaW9uPj46OmhmOTE4ZTE3 +MDA4MjcwOGYwnkVPY29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6Y21wOjpQYXJ0aWFsRXE8 +JkI+IGZvciAmQT46Om5lOjpoZmFmMzA5YWNhMGU3MzhmOJ9FgQFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmJveGVkOjpCb3g8dm9kb3plbWFjOjp0 +eXBlczo6ZWQyNTUxOTo6RWQyNTUxOVB1YmxpY0tleT4+Pjo6aGNhMWEzMGMwNGI2ZjNjZTagRTdj +b3JlOjpzeW5jOjphdG9taWM6OkF0b21pY0Jvb2w6OmxvYWQ6Omg5YjFjZjZmNTRjMmFhZTJloUVx +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPG1hdHJpeF9zZGtf +Y3J5cHRvOjpyZXF1ZXN0czo6T3V0Z29pbmdSZXF1ZXN0Pj46Omg5ZTA3ZDVhZDZhYjExNmViLjGi +RdEBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHN0ZDo6Y29s +bGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRl +dmljZV9pZDo6T3duZWREZXZpY2VJZCxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2 +aWNlOjpSZWFkT25seURldmljZT4+Pjo6aDZiMDFkMTIwYTQzMDU2ZjmjRXJjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +OjpCYWNrdXBEZWNyeXB0aW9uS2V5Pj46OmgzNWE2MGJhMWU4YzdmZDE2LjSkRYsBY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGNvcmU6OnJlc3VsdDo6UmVzdWx0 +PGNvcmU6OmNvbnZlcnQ6OkluZmFsbGlibGUsc2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yPj4+Ojpo +ZmYxMTUxZTkyNDg1YjcxYqVFogJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c2VyZGU6OmRlOjp2 +YWx1ZTo6U2VxRGVzZXJpYWxpemVyPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxhbGxv +Yzo6dmVjOjppbnRvX2l0ZXI6OkludG9JdGVyPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50 +OjpDb250ZW50PixzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudERlc2VyaWFs +aXplcjxzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I+OjpuZXc+LHNlcmRlX2pzb246OmVycm9yOjpF +cnJvcj4+OjpoMWM4NDY5OGJiMjRiOTVlOKZFOWNvcmU6OnN5bmM6OmF0b21pYzo6QXRvbWljQm9v +bDo6bG9hZDo6aDliMWNmNmY1NGMyYWFlMmUuMadFbmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxj +b3JlOjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGlmaWVyczo6 +Um9vbUlkPj46OmgzMmEwNjBkMmM2NGVmM2U3qEX1BGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxj +b3JlOjpvcHRpb246Ok9wdGlvbjxjb3JlOjppdGVyOjphZGFwdGVyczo6ZmlsdGVyOjpGaWx0ZXI8 +YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRp +dGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZT4sbWF0cml4X3Nka19jcnlwdG86OnNlc3Npb25f +bWFuYWdlcjo6Z3JvdXBfc2Vzc2lvbnM6Okdyb3VwU2Vzc2lvbk1hbmFnZXI6OnNoYXJlX3Jvb21f +a2V5PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjptYXA6Ok1hcDxjb3JlOjpzbGljZTo6aXRlcjo6SXRl +cjxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkPiw8cnVtYV9j +b21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCBhcyBjb3JlOjpjb252ZXJ0 +OjpBc1JlZjxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6OlVzZXJJZD4+Ojphc19y +ZWY+LG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6RW5j +cnlwdGlvblNldHRpbmdzPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fTo6 +e3tjbG9zdXJlfX0+Pj46Omg5ODc4NjdlZGJmYjhiOTc5qUU2d2FzbV9iaW5kZ2VuOjpfX3J0Ojph +c3NlcnRfbm90X251bGw6OmgwNjQ3YTdiNGRhMTg5ZWEyqkUvd2FzbV9iaW5kZ2VuOjpKc1ZhbHVl +Ojpqc19pbjo6aDY4OGQ1NzVmOWNjOWVlZjmrRZ8BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNv +cmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8bWF0cml4 +X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXRpZXM+Pj46 +OmgyMDhlMDgxMDdhMjIzN2FlrEUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjMDUz +ZGU2ZGIzYjNmODhirUUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlNjljN2NkMzkx +MjAxNWQxrkUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlZDY4Yjg0NTg0ZjBmNmM0 +r0Uxc2VyZGVfd2FzbV9iaW5kZ2VuOjpmcm9tX3ZhbHVlOjpoYmE5ZjlmNWZjNDk2ZDBlZrBFgQJj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248d2FzbV9iaW5kZ2Vu +OjpjbG9zdXJlOjpDbG9zdXJlPGR5biBjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk11dDwod2ViX3N5 +czo6ZmVhdHVyZXM6Omdlbl9JZGJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklkYlZlcnNpb25DaGFuZ2VF +dmVudCwpPitPdXRwdXQgPSBjb3JlOjpyZXN1bHQ6OlJlc3VsdDwoKSx3YXNtX2JpbmRnZW46Okpz +VmFsdWU+Pj4+OjpoYzhlOTMxODY3MDdhMTlhM7FFT2NvcmU6OmNtcDo6aW1wbHM6OjxpbXBsIGNv +cmU6OmNtcDo6UGFydGlhbEVxPCZCPiBmb3IgJkE+OjplcTo6aDkyZDk0MjRiZTJmYTllNTmyRXVy +dW1hX2V2ZW50czo6cm9vbTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVt +YV9ldmVudHM6OnJvb206Okpzb25XZWJLZXk+OjpkZXNlcmlhbGl6ZTo6aGZiMzU4NTkzNzgxYWRm +MDOzRX1ydW1hX2V2ZW50czo6Y2FsbDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBm +b3IgcnVtYV9ldmVudHM6OmNhbGw6OlNlc3Npb25EZXNjcmlwdGlvbj46OmRlc2VyaWFsaXplOjpo +YjhlNDk4NGYwYTZkZjBkZLRFUWNvcmU6OmNtcDo6aW1wbHM6OjxpbXBsIGNvcmU6OmNtcDo6UGFy +dGlhbEVxPCZCPiBmb3IgJkE+OjplcTo6aDkyZDk0MjRiZTJmYTllNTkuMbVFlgFydW1hX2V2ZW50 +czo6cm9vbTo6cmVkYWN0aW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBy +dW1hX2V2ZW50czo6cm9vbTo6cmVkYWN0aW9uOjpSb29tUmVkYWN0aW9uVW5zaWduZWQ+OjpkZXNl +cmlhbGl6ZTo6aDI2MTU5Yjg5ODM4Mjc0NjS2RZoBcnVtYV9ldmVudHM6OnJvb206OnJlZGFjdGlv +bjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206 +OnJlZGFjdGlvbjo6Um9vbVJlZGFjdGlvbkV2ZW50Q29udGVudD46OmRlc2VyaWFsaXplOjpoMDIx +ZmU5YTdmZWZlNmZhMLdFgQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpP +cHRpb248bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNl +cklkZW50aXR5Pj46Omg3MjUwZmNkMmRjNzI3OTBlLja4RV08dHJhY2luZ19jb3JlOjpmaWVsZDo6 +RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDAx +ZjBjMzdmZGQ3N2YyZWG5RV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0 +cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDAzZTYzYjkxNTg3NjBhOTa6RV08 +dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxk +OjpWYWx1ZT46OnJlY29yZDo6aDBiMTRhZjJiODczYzk0ZmG7RV08dHJhY2luZ19jb3JlOjpmaWVs +ZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6 +aDE4YTZlODJmOGQ2NDYyNDC8RV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBh +cyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDJjZWM0NmQ3ODYzOGRhZjm9 +RV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZp +ZWxkOjpWYWx1ZT46OnJlY29yZDo6aDMwODNmYjM4OWZhMmFkOWS+RV08dHJhY2luZ19jb3JlOjpm +aWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29y +ZDo6aDM3MGQ2YzRmMmE0NzVjYWS/RV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxU +PiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDNkMmVkNmZhZjk4OThh +MDnARV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6 +OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDQzZDU5YmM2Nzc2YzZjYzfBRV08dHJhY2luZ19jb3Jl +OjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJl +Y29yZDo6aDQ5Y2EzNGIwNzQ5YjBkYzXCRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1 +ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDRjY2JiNzBlMjcx +ZmM5NmXDRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2Nv +cmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDRlOWM4YTcxNDAxODJhYzXERV08dHJhY2luZ19j +b3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46 +OnJlY29yZDo6aDUyYzA0MWFiMjRhMmNhNzPFRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdW +YWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDU4NjEzYWVk +YjY0MjI5MWLGRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5n +X2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDY0MzAyZDUwZjc3OGRlMzjHRV08dHJhY2lu +Z19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1 +ZT46OnJlY29yZDo6aDZhOWMxZjY4ZDQzODRkMWbIRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVi +dWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDczOWM5 +MDJjYzJjZTQwN2XJRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFj +aW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDc0MWI5NTZkOGZmM2M5N2LKRV08dHJh +Y2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpW +YWx1ZT46OnJlY29yZDo6aDc3ZDI0NmQ4MTVjZTJkYzfLRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6 +RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDdk +ZDg5MjM5ZTIxMjIxN2bMRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0 +cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDdmNTljZDc3YzhlZTFjNzfNRV08 +dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxk +OjpWYWx1ZT46OnJlY29yZDo6aDgxNjNiNjBhMDIwZTYxNTPORV08dHJhY2luZ19jb3JlOjpmaWVs +ZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6 +aDg2MDMyOTJjYWY4YmFhM2TPRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBh +cyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDhlMzUzNGExNDUxZThhNTHQ +RV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZp +ZWxkOjpWYWx1ZT46OnJlY29yZDo6aDkxMjI5YTRlYmU3YmFmNTnRRV08dHJhY2luZ19jb3JlOjpm +aWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29y +ZDo6aDkzOWY5YzY3OTUxNWRjOWTSRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxU +PiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDk0ODNlNzBlMjIyMzMy +ZTDTRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6 +OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aDk0OGYxZjkxM2YyYWRhYTTURV08dHJhY2luZ19jb3Jl +OjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJl +Y29yZDo6aDk4YThiNDI0OTM5YWViMDTVRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1 +ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGE2NjU3YTg2NDA1 +MDY3OWLWRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2Nv +cmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGE3NzgwOWRmMzJlMTQyNTLXRV08dHJhY2luZ19j +b3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46 +OnJlY29yZDo6aGFiYTJiNmNkZmU0NzhmZTXYRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdW +YWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGFiZDE4NmRj +NWIyNzg5NWXZRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5n +X2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGFkM2I1MmMwZjE4Mzg1ZWPaRV08dHJhY2lu +Z19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1 +ZT46OnJlY29yZDo6aGIxMGE1MzFiMTFiMjczZDDbRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVi +dWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGIzMjk4 +ZTk2MjNlZGIyYzTcRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFj +aW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGJhMTM0NjE4NDlkMDZlNWLdRV08dHJh +Y2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpW +YWx1ZT46OnJlY29yZDo6aGMxNmZlZDgzM2MxODFlZjjeRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6 +RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGNl +YzE3NTBhODQ1ZTdhMjbfRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0 +cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGQ5Njk2YWQ5Y2ExMTFjODfgRV08 +dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxk +OjpWYWx1ZT46OnJlY29yZDo6aGUwODRmNzc1NDU0ZmQyNTThRV08dHJhY2luZ19jb3JlOjpmaWVs +ZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6 +aGUwZWJmZmNhYmM0YjU3ZTniRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBh +cyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGUxYWM3OTk3NTkwNzhiNzHj +RV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZp +ZWxkOjpWYWx1ZT46OnJlY29yZDo6aGUyMDU2M2JhOTAyOWE0NGbkRV08dHJhY2luZ19jb3JlOjpm +aWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29y +ZDo6aGU2YjAxNDJmMDY0MGFjZDjlRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxU +PiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGU3YzNiOGMzMzMyOThk +NmHmRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6 +OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGVhNDBkOGQ5NGQxNTFlZmbnRV08dHJhY2luZ19jb3Jl +OjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJl +Y29yZDo6aGVjY2RkNDNiZDBjNjhlN2boRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1 +ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGYxNjNmZjhjMmEz +ZmFmNjnpRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2Nv +cmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGYyYTU3ZjAyODA0M2UzMWPqRV08dHJhY2luZ19j +b3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46 +OnJlY29yZDo6aGY1YjgzZTY5ZGI5MWE0MDDrRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdW +YWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGY2MmJhMjVh +OGMwZDI0MWLsRV08dHJhY2luZ19jb3JlOjpmaWVsZDo6RGVidWdWYWx1ZTxUPiBhcyB0cmFjaW5n +X2NvcmU6OmZpZWxkOjpWYWx1ZT46OnJlY29yZDo6aGY4MzhiY2E2OGRmYjY4NzPtRV88dHJhY2lu +Z19jb3JlOjpmaWVsZDo6RGlzcGxheVZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZh +bHVlPjo6cmVjb3JkOjpoMWRiZGFlM2M2Y2Q3NjZkZO5FXzx0cmFjaW5nX2NvcmU6OmZpZWxkOjpE +aXNwbGF5VmFsdWU8VD4gYXMgdHJhY2luZ19jb3JlOjpmaWVsZDo6VmFsdWU+OjpyZWNvcmQ6Omg3 +MWVjODcwNjdkMTZlNzJj70VRY29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6Y21wOjpQYXJ0 +aWFsRXE8JkI+IGZvciAmQT46OmVxOjpoOTJkOTQyNGJlMmZhOWU1OS4y8EWNAXJ1bWFfZXZlbnRz +Ojp1bnNpZ25lZDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVu +dHM6OnVuc2lnbmVkOjpVbnNpZ25lZFJvb21SZWRhY3Rpb25FdmVudD46OmRlc2VyaWFsaXplOjpo +NTJlOGYxNjUwZDNkMmM1YvFFiQFydW1hX2V2ZW50czo6dW5zaWduZWQ6Ol86OjxpbXBsIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjp1bnNpZ25lZDo6TWVzc2FnZUxpa2VV +bnNpZ25lZDxDPj46OmRlc2VyaWFsaXplOjpoOGE5OTYzMGViZTIzYjkwMPJFOWNvcmU6OnN5bmM6 +OmF0b21pYzo6QXRvbWljQm9vbDo6bG9hZDo6aDliMWNmNmY1NGMyYWFlMmUuMvNFUWNvcmU6OmNt +cDo6aW1wbHM6OjxpbXBsIGNvcmU6OmNtcDo6UGFydGlhbEVxPCZCPiBmb3IgJkE+OjplcTo6aDky +ZDk0MjRiZTJmYTllNTkuM/RFgQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9u +OjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2ln +bmluZ0lkZW50aXR5Pj46OmhiYWFlMWE5Y2EzYTgwZGFmLjX1RXQ8Y29yZTo6b3B0aW9uOjpPcHRp +b248VD4gYXMgaW5kZXhlZF9kYl9mdXR1cmVzOjppbnRlcm5hbF91dGlsczo6TmlnaHRseVVud3Jh +cDxUPj46Om5pZ2h0bHlfdW53cmFwOjpoMWExODZhZjIxODRiNTA4M/ZFUWNvcmU6OmNtcDo6aW1w +bHM6OjxpbXBsIGNvcmU6OmNtcDo6UGFydGlhbEVxPCZCPiBmb3IgJkE+OjplcTo6aDkyZDk0MjRi +ZTJmYTllNTkuNPdFsgF2b2RvemVtYWM6Om1lZ29sbTo6aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om1lZ29sbTo6aW5i +b3VuZF9ncm91cF9zZXNzaW9uOjpJbmJvdW5kR3JvdXBTZXNzaW9uUGlja2xlPjo6ZGVzZXJpYWxp +emU6Omg0YmM3ZDllNDY1ODM3ZTU4+EVzY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9w +dGlvbjo6T3B0aW9uPGFsbG9jOjpzeW5jOjpBcmM8Y29yZTo6c3luYzo6YXRvbWljOjpBdG9taWNC +b29sPj4+OjpoNmJmMmU1NjE2MWU0YWI5YflFfmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3Jl +OjpvcHRpb246Ok9wdGlvbjxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWdu +aW5nOjpQaWNrbGVkU2lnbmluZz4+OjpoZGE4YjFkZWY0NGEzZmQxZfpFgAFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +Ojpjcm9zc19zaWduaW5nOjptYXN0ZXI6Ok1hc3RlclB1YmtleT4+OjpoNTVkNzUyMGY5OTA4Nzgy +YvtFhAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4 +X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6cGtfc2lnbmluZzo6UGlja2xlZFNlbGZTaWduaW5n +Pj46OmhhNzc2OTdkOGIwZDBjYjQxLjH8RYYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6 +Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjpzeW5jOjpBcmM8bWF0cml4X3Nka19jcnlwdG86OnR5cGVz +OjpkZXZpY2Vfa2V5czo6RGV2aWNlS2V5cz4+Pjo6aGUwMDEwZGQxYWQ3ZDFjMzD9RZkBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjpzeW5jOjpBcmM8 +bWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpFbmNyeXB0 +aW9uU2V0dGluZ3M+Pj46Omg2Y2MwODdiNGQ5MTk4OTk1/kX1AmNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjwoYWxsb2M6OnN5bmM6OkFyYzxtYXRyaXhfc2RrX2Ny +eXB0bzo6cmVxdWVzdHM6OlRvRGV2aWNlUmVxdWVzdD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93bmVk +VXNlcklkLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8cnVtYV9jb21t +b246OmlkZW50aWZpZXJzOjpkZXZpY2VfaWQ6Ok93bmVkRGV2aWNlSWQsbWF0cml4X3Nka19jcnlw +dG86Om9sbTo6Z3JvdXBfc2Vzc2lvbnM6Om91dGJvdW5kOjpTaGFyZUluZm8+Pik+Pjo6aDg4MWMz +MDcyYTkxZTAwM2P/RVVjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjptZWdvbG06 +OnJhdGNoZXQ6OlJhdGNoZXRCeXRlcz46Omg1YmZlMGI5ZGU3N2Y4ZDQ2gEZ0Y29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPHZvZG96ZW1hYzo6dHlwZXM6OmN1cnZl +MjU1MTk6OkN1cnZlMjU1MTlTZWNyZXRLZXk+Pjo6aGY3ZjFhZmJlOTQ1ZjExMzWBRk9jb3JlOjpj +bXA6OmltcGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6Omhj +NzRiMDVjMjhmMTQ0NDEzgkavAW1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6Ol86 +OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpj +cnlwdG9fc3RvcmU6OkluYm91bmRHcm91cFNlc3Npb25JbmRleGVkRGJPYmplY3Q+OjpkZXNlcmlh +bGl6ZTo6aGEzMGMzNTZkM2Y5OTA2ZDWDRlFjb3JlOjpjbXA6OmltcGxzOjo8aW1wbCBjb3JlOjpj +bXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6OmhjNzRiMDVjMjhmMTQ0NDEzLjGERmhzZXJk +ZTo6ZGU6OmltcGxzOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBjb3JlOjp0aW1l +OjpEdXJhdGlvbj46OmRlc2VyaWFsaXplOjpoODY1MTQyNGNmOGI2YzUyOIVGaHNlcmRlOjpkZTo6 +aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGNvcmU6OnRpbWU6OkR1cmF0 +aW9uPjo6ZGVzZXJpYWxpemU6OmhkN2JiNGEyODBkZDNhNDMwhkabAXZvZG96ZW1hYzo6bWVnb2xt +Ojpncm91cF9zZXNzaW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2Rv +emVtYWM6Om1lZ29sbTo6Z3JvdXBfc2Vzc2lvbjo6R3JvdXBTZXNzaW9uUGlja2xlPjo6ZGVzZXJp +YWxpemU6Omg2NGE4NDhhMTIxODAzNzhhh0ZRY29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6 +Y21wOjpQYXJ0aWFsRXE8JkI+IGZvciAmQT46OmVxOjpoYzc0YjA1YzI4ZjE0NDQxMy4yiEaEAXZv +ZG96ZW1hYzo6bWVnb2xtOjpyYXRjaGV0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +IGZvciB2b2RvemVtYWM6Om1lZ29sbTo6cmF0Y2hldDo6UmF0Y2hldD46OmRlc2VyaWFsaXplOjpo +YmJjMTk2MjIzYzJkNDVjN4lGjAF2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbl9rZXlzOjpfOjo8aW1w +bCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbl9rZXlz +OjpTZXNzaW9uS2V5cz46OmRlc2VyaWFsaXplOjpoMWIwYzBiODczODU0MTc3NopGoQF2b2RvemVt +YWM6Om9sbTo6YWNjb3VudDo6ZmFsbGJhY2tfa2V5czo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNl +cmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmZhbGxiYWNrX2tleXM6OkZhbGxi +YWNrS2V5cz46OmRlc2VyaWFsaXplOjpoOTBhYzUyNzI4NmRjZGE4OYtGmwF2b2RvemVtYWM6Om9s +bTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZv +ciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpSZW1vdGVDaGFpbktleT46OmRl +c2VyaWFsaXplOjpoOGUzZGFmODljMjIyZjI0MYxGnQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6cmVzdWx0OjpSZXN1bHQ8KCksYXJyYXl2ZWM6OmVycm9yczo6Q2FwYWNpdHlFcnJvcjx2 +b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6bWVzc2FnZV9rZXk6OlJlbW90ZU1lc3NhZ2VLZXk+Pj46 +OmhhOTA4MTg2NDg0ZmQ2MmZljUZRY29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6Y21wOjpQ +YXJ0aWFsRXE8JkI+IGZvciAmQT46OmVxOjpoYzc0YjA1YzI4ZjE0NDQxMy4zjkbaATxtYXRyaXhf +c2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFs +aXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlPd25V +c2VySWRlbnRpdHk+OjpzZXJpYWxpemU6Ol9fU2VyaWFsaXplV2l0aCBhcyBzZXJkZTo6c2VyOjpT +ZXJpYWxpemU+OjpzZXJpYWxpemU6Omg0YjZhMTc0NWI3NzRkZWM4j0auAW1hdHJpeF9zZGtfY3J5 +cHRvOjpvbG06OnNpZ25pbmc6OnBrX3NpZ25pbmc6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OnNpZ25pbmc6OnBrX3NpZ25pbmc6OlBp +Y2tsZWRTaWduaW5ncz46OmRlc2VyaWFsaXplOjpoNWIzZDFjOWJlYTA4NGZkMpBGrgFtYXRyaXhf +c2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5nOjpfOjo8aW1wbCBzZXJkZTo6ZGU6 +OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWdu +aW5nOjpQaWNrbGVkU2lnbmluZ3M+OjpkZXNlcmlhbGl6ZTo6aGMzM2FkZGNjMGMyNDI5M2ORRoQB +dm9kb3plbWFjOjpvbG06OmFjY291bnQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUg +Zm9yIHZvZG96ZW1hYzo6b2xtOjphY2NvdW50OjpBY2NvdW50UGlja2xlPjo6ZGVzZXJpYWxpemU6 +Omg3MWJlYmNhOTQ2YWZiOGUxkkaBAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpfOjo8aW1wbCBz +ZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Q2hhaW5T +dG9yZT46OmRlc2VyaWFsaXplOjpoNTE1YTE4MDYyNGU5YWJmM5NGhAF2b2RvemVtYWM6Om9sbTo6 +c2Vzc2lvbjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpv +bG06OnNlc3Npb246OlNlc3Npb25QaWNrbGU+OjpkZXNlcmlhbGl6ZTo6aGJhODA2OGZlNThjNWU4 +MmSURpgBdm9kb3plbWFjOjptZWdvbG06OnNlc3Npb25fY29uZmlnOjpfOjo8aW1wbCBzZXJkZTo6 +ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9jb25maWc6OlNl +c3Npb25Db25maWc+OjpkZXNlcmlhbGl6ZTo6aDY1MDVhZGFhYjRiNTQyNWGVRlFjb3JlOjpjbXA6 +OmltcGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6OmhjNzRi +MDVjMjhmMTQ0NDEzLjSWRqIBbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6Om9sbV92 +MTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86 +OnR5cGVzOjpldmVudHM6Om9sbV92MTo6T2xtVjFLZXlzPjo6ZGVzZXJpYWxpemU6OmgwZGIzMGUw +NmY2MDUzNTJhl0aiAW1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpvbG1fdjE6Ol86 +OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBl +czo6ZXZlbnRzOjpvbG1fdjE6Ok9sbVYxS2V5cz46OmRlc2VyaWFsaXplOjpoMTNmMzNhMTNkN2Qx +Mzc2ZZhGrwFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6b2xtX3YxOjpfOjo8aW1w +bCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2 +ZW50czo6b2xtX3YxOjpEZWNyeXB0ZWRPbG1WMUV2ZW50PEM+Pjo6ZGVzZXJpYWxpemU6OmhhNDlk +MjM3OGQyNWY3NDRhmUavAW1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpvbG1fdjE6 +Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6ZXZlbnRzOjpvbG1fdjE6OkRlY3J5cHRlZE9sbVYxRXZlbnQ8Qz4+OjpkZXNlcmlhbGl6 +ZTo6aGFjYjA1MjA0ZDRkMDM0MzSaRo4BbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6Xzo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Omdvc3Np +cGluZzo6R29zc2lwUmVxdWVzdD46OmRlc2VyaWFsaXplOjpoNTRhNTQwZmZjNTI1YTE1Y5tGjgFt +YXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBSZXF1ZXN0Pjo6ZGVz +ZXJpYWxpemU6Omg4YTEyYmMzZDViYTNkNGNjnEYwc2VyZGU6OnNlcjo6aXRlcmF0b3JfbGVuX2hp +bnQ6OmgzOTkwMTdlMmQ3MTRhNTkxnUaSAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uX2NvbmZpZzo6 +Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNlc3Np +b25fY29uZmlnOjpTZXNzaW9uQ29uZmlnPjo6ZGVzZXJpYWxpemU6Omg1MzE4Y2RhZTA2OTg1M2Iw +nkamAXZvZG96ZW1hYzo6b2xtOjphY2NvdW50OjpvbmVfdGltZV9rZXlzOjpfOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6b25lX3RpbWVf +a2V5czo6T25lVGltZUtleXNQaWNrbGU+OjpkZXNlcmlhbGl6ZTo6aDNjYTQxYThhMzYzODAzZGKf +RqYBdm9kb3plbWFjOjpvbG06OnNlc3Npb246OnJlY2VpdmVyX2NoYWluOjpfOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6cmVjZWl2ZXJf +Y2hhaW46Ok1lc3NhZ2VLZXlTdG9yZT46OmRlc2VyaWFsaXplOjpoOTJhYjg0MjZiYmQ4NjdmNKBG +XjxzZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6QXJyYXlTZXJpYWxpemVyIGFzIHNlcmRlOjpzZXI6 +OlNlcmlhbGl6ZVNlcT46OmVuZDo6aGY3YWVjZjRmMTFmYzEyZjehRl5jb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8KCksc2VyZGVfanNvbjo6ZXJyb3I6OkVycm9y +Pj46OmhhMzkyZGZkOTkwN2FjZTg4okaGAW1hdHJpeF9zZGtfc3RvcmVfZW5jcnlwdGlvbjo6Xzo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19zdG9yZV9lbmNyeXB0 +aW9uOjpLZGZJbmZvPjo6ZGVzZXJpYWxpemU6OmhhOWQ3ZDM5ODQ1MWZmOGYzo0aNAW1hdHJpeF9z +ZGtfc3RvcmVfZW5jcnlwdGlvbjo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Ig +bWF0cml4X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpDaXBoZXJUZXh0SW5mbz46OmRlc2VyaWFsaXpl +OjpoOTI5NTAyNTc5NWQ5ODM1NaRGzAJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y2hhY2hhMjBw +b2x5MTMwNTo6Y2lwaGVyOjpDaXBoZXI8Y2lwaGVyOjpzdHJlYW1fd3JhcHBlcjo6U3RyZWFtQ2lw +aGVyQ29yZVdyYXBwZXI8Y2hhY2hhMjA6OnhjaGFjaGE6OlhDaGFDaGFDb3JlPHR5cGVudW06OnVp +bnQ6OlVJbnQ8dHlwZW51bTo6dWludDo6VUludDx0eXBlbnVtOjp1aW50OjpVSW50PHR5cGVudW06 +OnVpbnQ6OlVJbnQ8dHlwZW51bTo6dWludDo6VVRlcm0sdHlwZW51bTo6Yml0OjpCMT4sdHlwZW51 +bTo6Yml0OjpCMD4sdHlwZW51bTo6Yml0OjpCMT4sdHlwZW51bTo6Yml0OjpCMD4+Pj4+OjpoNDM1 +YzA4YTVmYjM0NDFmYaVGZDwmbXV0IHJtcF9zZXJkZTo6ZW5jb2RlOjpTZXJpYWxpemVyPFcsQz4g +YXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV91ODo6aDE1ZDc5ZjA0MzQwYmU1 +ZDOmRkVpbmRleGVkX2RiX2Z1dHVyZXM6OmludGVybmFsX3V0aWxzOjphcnJheWlmeV9zbGljZTo6 +aGFkZGU5NTQ5OGE0YTU1NTOnRnQ8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgaW5kZXhlZF9k +Yl9mdXR1cmVzOjppbnRlcm5hbF91dGlsczo6TmlnaHRseVVud3JhcDxUPj46Om5pZ2h0bHlfdW53 +cmFwOjpoNzE1MDg2ZDk4YTIwNjk4ZKhGOmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbnlob3c6 +OkNoYWluPjo6aDdiMDkzZTRiN2I0Nzg5YjWpRlZhbnlob3c6OmVycm9yOjo8aW1wbCBjb3JlOjpv +cHM6OmRyb3A6OkRyb3AgZm9yIGFueWhvdzo6RXJyb3I+Ojpkcm9wOjpoZjRkZjA2ZmQxMjNjOWQy +MqpGMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg2ODNhYjVmMThkNzM3ZDAyq0Ys +Y29yZTo6Y21wOjpQYXJ0aWFsT3JkOjpsdDo6aGNlNDJhYWRhZjQ4NGFmNjCsRnU8c2VyZGU6Ol9f +cHJpdmF0ZTo6c2VyOjpGbGF0TWFwU2VyaWFsaXplU3RydWN0PE0+IGFzIHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZVN0cnVjdD46OnNlcmlhbGl6ZV9maWVsZDo6aDc0N2RkZTVhNzU1OWU2ZjStRlFjb3Jl +OjpjbXA6OmltcGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6 +OmhlOWU4MTc0ZDlhYTIzM2I1LjGuRnFtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +cm9vbTo6ZW5jcnlwdGVkOjpTdXBwb3J0ZWRFdmVudEVuY3J5cHRpb25TY2hlbWVzOjpzZXNzaW9u +X2lkOjpoYjg5OWZmNWU3ZGU5MzZkMK9GUWNvcmU6OmNtcDo6aW1wbHM6OjxpbXBsIGNvcmU6OmNt +cDo6UGFydGlhbEVxPCZCPiBmb3IgJkE+OjplcTo6aGU5ZTgxNzRkOWFhMjMzYjUuMrBGOWNvcmU6 +OnN5bmM6OmF0b21pYzo6QXRvbWljQm9vbDo6bG9hZDo6aDliMWNmNmY1NGMyYWFlMmUuM7FGUW1h +dHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjp1c2Vy +X2lkOjpoMWE1N2MwMzQwNmQ0YmYzYrJGU21hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpk +ZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjpkZXZpY2VfaWQ6Omg1M2NjMGY3NmNhOWRjZjY1s0ZUbWF0 +cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OmFsZ29y +aXRobXM6Omg0NmM2ZjdjNmNjMjE3YzZktEYsY29yZTo6Y21wOjpQYXJ0aWFsT3JkOjpndDo6aGZl +MGJkNGMwMmQwOGZhZDW1RnBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpyd2xv +Y2s6OlJ3TG9jazxhbGxvYzo6dmVjOjpWZWM8Y29yZTo6dGFzazo6d2FrZTo6V2FrZXI+Pj46Omg0 +NmU5MTRlMThhZGY4NGE0tkZRY29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6Y21wOjpQYXJ0 +aWFsRXE8JkI+IGZvciAmQT46OmVxOjpoZTllODE3NGQ5YWEyMzNiNS4zt0Y5Y29yZTo6c3luYzo6 +YXRvbWljOjpBdG9taWNCb29sOjpsb2FkOjpoOWIxY2Y2ZjU0YzJhYWUyZS40uEZZbWF0cml4X3Nk +a19jcnlwdG86OnR5cGVzOjpjcm9zc19zaWduaW5nOjptYXN0ZXI6Ok1hc3RlclB1YmtleTo6dXNl +cl9pZDo6aGM5YjhjYTk3MTU0NTgxZjK5RlNtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6 +bWFuYWdlcjo6SWRlbnRpdHlNYW5hZ2VyOjp1c2VyX2lkOjpoNDc3NmNjZjFlYzc3ZjIyMbpGK2Nv +cmU6OmNtcDo6UGFydGlhbEVxOjpuZTo6aDFjNGNlZjYwMGIxMDUwZTC7Rjljb3JlOjpzeW5jOjph +dG9taWM6OkF0b21pY0Jvb2w6OmxvYWQ6Omg5YjFjZjZmNTRjMmFhZTJlLjW8Rj48USBhcyBoYXNo +YnJvd246OkVxdWl2YWxlbnQ8Sz4+OjplcXVpdmFsZW50OjpoNDBhZGU3NjZjYjlhYTkzNL1GXTx0 +cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6 +OlZhbHVlPjo6cmVjb3JkOjpoMDEzMGQ0OTIyN2JhMTNjY75GXTx0cmFjaW5nX2NvcmU6OmZpZWxk +OjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpo +MGVhYjlhYjkwMDhhOTM0NL9GXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFz +IHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoMjExOGU4ZTRlNWU3N2ZiOMBG +XTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6Zmll +bGQ6OlZhbHVlPjo6cmVjb3JkOjpoMzliMzQ1ZGJlODRjMWUzYcFGXTx0cmFjaW5nX2NvcmU6OmZp +ZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3Jk +OjpoM2Q2MmE3NDg3NjY3ZDg1ZsJGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+ +IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoNTdmOWQ0NDU3ZGQ4NWY1 +NMNGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6 +ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoNWRlZjNhY2FlOWM0NjZmZsRGXTx0cmFjaW5nX2NvcmU6 +OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVj +b3JkOjpoNjRlYTA3YmZkMmU3NmIzN8VGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVl +PFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoNmFjMjdkYWVhNzEx +MjAzNMZGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29y +ZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoNzczMGRhN2U5ZDMzMTIxM8dGXTx0cmFjaW5nX2Nv +cmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6 +cmVjb3JkOjpoNzlhM2VmMzIwMjNjMTI4OMhGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1Zh +bHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoODE2ZGMzMTgz +ODM0YzkyY8lGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdf +Y29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoOGU2MmNlMjhjNmM4YTc3YspGXTx0cmFjaW5n +X2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVl +Pjo6cmVjb3JkOjpoOTM4ZGJmMjYxZDVkNmIzNctGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1 +Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoYTIxNTcx +ZGYyMzI2ZjkzZsxGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNp +bmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoYTRiYTA5NTdmZDhlOWZkOM1GXTx0cmFj +aW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZh +bHVlPjo6cmVjb3JkOjpoYTkwNTE1MDI3ZjUwYzM3Zc5GXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpE +ZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoYWU0 +ZmNkN2E3MzZjNGI1Nc9GXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRy +YWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoYjI3OGZmYTJmNGEzMzNiNNBGXTx0 +cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6 +OlZhbHVlPjo6cmVjb3JkOjpoYzFiMmNhYTEwZWFmZGZmM9FGXTx0cmFjaW5nX2NvcmU6OmZpZWxk +OjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpo +ZDA1ODYzNzBhNTZmY2Y5ZNJGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFz +IHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoZDRkOWM0M2M2Y2I5NzM5MNNG +XTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6Zmll +bGQ6OlZhbHVlPjo6cmVjb3JkOjpoZTE2NzIyNzRkMWFhYzIwYtRGXTx0cmFjaW5nX2NvcmU6OmZp +ZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3Jk +OjpoZTRjZjMwNDhmNzE4YjFiZdVGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+ +IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoZTU3N2NhOGU4MzAwMDRi +YtZGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6 +ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoZWVmZWQxYzBlYTExNjc5ONdGXTx0cmFjaW5nX2NvcmU6 +OmZpZWxkOjpEZWJ1Z1ZhbHVlPFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVj +b3JkOjpoZjIyMGZiYjI3MTFmYzFlNNhGXTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEZWJ1Z1ZhbHVl +PFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoZjc5N2ExNjgzMzky +NGZkMtlGXzx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEaXNwbGF5VmFsdWU8VD4gYXMgdHJhY2luZ19j +b3JlOjpmaWVsZDo6VmFsdWU+OjpyZWNvcmQ6Omg1ZTkxNzQ5NmU2MWY4NGZm2kZfPHRyYWNpbmdf +Y29yZTo6ZmllbGQ6OkRpc3BsYXlWYWx1ZTxUPiBhcyB0cmFjaW5nX2NvcmU6OmZpZWxkOjpWYWx1 +ZT46OnJlY29yZDo6aGYxNzk2MjliZTc3MzA3ZmXbRsYBbWF0cml4X3Nka19jcnlwdG86Om1hY2hp +bmU6Ok9sbU1hY2hpbmU6OnJlY29yZF9tZXNzYWdlX2lkOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRl +c2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6cmVj +b3JkX21lc3NhZ2VfaWQ6OkNvbnRlbnRTdHViPjo6ZGVzZXJpYWxpemU6Omg0NDU3MzU2YjI2OWVj +Y2M03EZCbWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OnVzZXJfaWQ6Omg2 +ZWY4OTRkMDFkYzM1Njcz3UZEbWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6 +OmRldmljZV9pZDo6aGI0ODE4ZWUzYjY5YzkxNWLeRrsBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGNvcmU6Om9wdGlvbjo6T3B0aW9uPChydW1hX2NvbW1vbjo6dG9fZGV2aWNlOjpEZXZpY2VJZE9y +QWxsRGV2aWNlcyxydW1hX2NvbW1vbjo6c2VyZGU6OnJhdzo6UmF3PHJ1bWFfZXZlbnRzOjplbnVt +czo6QW55VG9EZXZpY2VFdmVudENvbnRlbnQ+KT4+OjpoNDVjODliMWEwNzhkYTMyMd9GlAJjb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248KHJ1bWFfY29tbW9uOjpp +ZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6dG9fZGV2aWNlOjpEZXZpY2VJZE9yQWxsRGV2 +aWNlcyxydW1hX2NvbW1vbjo6c2VyZGU6OnJhdzo6UmF3PHJ1bWFfZXZlbnRzOjplbnVtczo6QW55 +VG9EZXZpY2VFdmVudENvbnRlbnQ+Pik+Pjo6aDc3ZDU0OGM1NjY1NzZkYzLgRlxjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8cnVtYV9jb21tb246OmNhbm9uaWNhbF9qc29uOjpDYW5vbmljYWxKc29u +RXJyb3I+OjpoNjg1YWMzY2Y5NjljYzgwZOFGPW1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3Rv +cmU6OmRldmljZV9pZDo6aDk2ZmI1M2QyZWY3OTEwNjLiRkFxcmNvZGU6OmNhbnZhczo6bWFza19m +dW5jdGlvbnM6OmRpYWdvbmFsX2xpbmVzOjpoN2NlOTJmM2FkZTM2YTBkMONGjQE8dHJhY2luZ19z +dWJzY3JpYmVyOjpsYXllcjo6bGF5ZXJlZDo6TGF5ZXJlZDxMLFM+IGFzIHRyYWNpbmdfY29yZTo6 +c3Vic2NyaWJlcjo6U3Vic2NyaWJlcj46OnJlZ2lzdGVyX2NhbGxzaXRlOjp7e2Nsb3N1cmV9fTo6 +aDM4ODE0YWZmMGU1NWJjNzTkRk9jb3JlOjpjbXA6OmltcGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBh +cnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6OmhmY2IxNDgwMjJiMDk5Mzc35UZ5Y29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjpyYzo6UmM8bWF0cml4X3Nk +a19jb21tb246OmpzX3RyYWNpbmc6OkpzTG9nZ2VyPj4+OjpoYjI3MTUwNGI5MTJlZTdhZeZG6gFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8PDx3YXNtX2JpbmRnZW5fZnV0dXJlczo6SnNGdXR1cmUg +YXMgY29yZTo6Y29udmVydDo6RnJvbTxqc19zeXM6OlByb21pc2U+Pjo6ZnJvbTo6e3tjbG9zdXJl +fX0gYXMgd2FzbV9iaW5kZ2VuOjpjbG9zdXJlOjpXYXNtQ2xvc3VyZUZuT25jZTx3YXNtX2JpbmRn +ZW46OkpzVmFsdWUsKCk+Pjo6aW50b19mbl9tdXQ6Ont7Y2xvc3VyZX19Pjo6aDFhNDA3MTk0YjI5 +MmMwM2bnRkV0cmFjaW5nX3N1YnNjcmliZXI6OmZtdDo6Zm9ybWF0OjpXcml0ZXI6OndyaXRlX2Zt +dDo6aGNhNTRiY2JjMTQwMjczNjToRl88dHJhY2luZ19jb3JlOjpmaWVsZDo6RGlzcGxheVZhbHVl +PFQ+IGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoZDNkZDQzM2ZmZjlj +ZTBkN+lGdTx0cmFjaW5nX3N1YnNjcmliZXI6OnJlZ2lzdHJ5OjpzaGFyZGVkOjpSZWdpc3RyeSBh +cyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+OjplbmFibGVkOjpoZTk4ZjQw +MWJiYTEwMGY3NOpGVDx0cmFjaW5nX3N1YnNjcmliZXI6OnV0aWw6OlRyeUluaXRFcnJvciBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzIzZjAxYzZjNDE5MjVhZOtGQ2Z1dHVyZXNfdXRpbDo6 +YWJvcnRhYmxlOjpBYm9ydEhhbmRsZTo6aXNfYWJvcnRlZDo6aDgzMzQ2NzYyMzliNDI0YWPsRmZj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6b3B0aW9uOjpPcHRpb248dm9kb3plbWFjOjpt +ZWdvbG06OnJhdGNoZXQ6OlJhdGNoZXQ+Pjo6aDRiN2M1OTc4ZmY0NmNkYjLtRqICY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHNlcmRlOjpkZTo6dmFsdWU6OlNlcURlc2VyaWFsaXplcjxjb3JlOjpp +dGVyOjphZGFwdGVyczo6bWFwOjpNYXA8YWxsb2M6OnZlYzo6aW50b19pdGVyOjpJbnRvSXRlcjxz +ZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD4sc2VyZGU6Ol9fcHJpdmF0ZTo6 +ZGU6OmNvbnRlbnQ6OkNvbnRlbnREZXNlcmlhbGl6ZXI8c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9y +Pjo6bmV3PixzZXJkZV9qc29uOjplcnJvcjo6RXJyb3I+Pjo6aGNhZWQ4ZGE2ODEyNDM0MTTuRlFj +b3JlOjpjbXA6OmltcGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6 +ZXE6OmhkMDk2M2VjMGNiYTU0MzM3LjHvRmtjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3pl +bWFjOjpvbG06OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0OjpJbmFjdGl2ZURvdWJsZVJhdGNoZXQ+ +OjpoYzRlNDRlMjA0YzBmYTRkN/BGowF2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6ZG91YmxlX3Jh +dGNoZXQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xt +OjpzZXNzaW9uOjpkb3VibGVfcmF0Y2hldDo6UmF0Y2hldENvdW50Pjo6ZGVzZXJpYWxpemU6Omhl +OTVjYzQ5ZDM1YmZiMDg58UY2dm9kb3plbWFjOjp1dGlsaXRpZXM6OmJhc2U2NF9lbmNvZGU6Omhm +YWQ2MTZkMTVhNWUyMzQ38kaqAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0Y2hl +dDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNl +c3Npb246OmRvdWJsZV9yYXRjaGV0OjpBY3RpdmVEb3VibGVSYXRjaGV0Pjo6ZGVzZXJpYWxpemU6 +OmgzNjM1NGFkMDg5MDI3Yzg580asAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpkb3VibGVfcmF0 +Y2hldDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06 +OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0OjpJbmFjdGl2ZURvdWJsZVJhdGNoZXQ+OjpkZXNlcmlh +bGl6ZTo6aDBhMWNiYmUyYWJhNjdmNTL0RlFjb3JlOjpjbXA6OmltcGxzOjo8aW1wbCBjb3JlOjpj +bXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6OmhkMDk2M2VjMGNiYTU0MzM3LjL1RpABdm9k +b3plbWFjOjpvbG06OnNlc3Npb246OnJhdGNoZXQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJp +YWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyYXRjaGV0OjpSYXRjaGV0Pjo6ZGVz +ZXJpYWxpemU6Omg0YWI3MzhlOTU5NjMwODVj9kaSAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uX2Nv +bmZpZzo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06 +OnNlc3Npb25fY29uZmlnOjpTZXNzaW9uQ29uZmlnPjo6ZGVzZXJpYWxpemU6Omg3NDc0ZTU1YzUx +ZGU5YmQ390aMAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uX2tleXM6Ol86OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uX2tleXM6OlNlc3Npb25L +ZXlzPjo6ZGVzZXJpYWxpemU6OmhhMTMyNDQwMzc5ZjRlYWQx+EaYAXZvZG96ZW1hYzo6bWVnb2xt +OjpzZXNzaW9uX2NvbmZpZzo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9k +b3plbWFjOjptZWdvbG06OnNlc3Npb25fY29uZmlnOjpTZXNzaW9uQ29uZmlnPjo6ZGVzZXJpYWxp +emU6Omg4YTRmNWExOGFkYjFmMTNm+UZgPHZvZG96ZW1hYzo6bWVnb2xtOjpsaWJvbG06OkxpYm9s +bVJhdGNoZXRQaWNrbGUgYXMgemVyb2l6ZTo6WmVyb2l6ZT46Onplcm9pemU6Omg5ZmZjNWVhZGNm +Y2E4NjFm+kZRY29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6Y21wOjpQYXJ0aWFsRXE8JkI+ +IGZvciAmQT46OmVxOjpoZDA5NjNlYzBjYmE1NDMzNy4z+0aEAXZvZG96ZW1hYzo6bWVnb2xtOjpy +YXRjaGV0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om1l +Z29sbTo6cmF0Y2hldDo6UmF0Y2hldD46OmRlc2VyaWFsaXplOjpoM2QwZjlkMDkxZjUwOGQ3MfxG +pgF2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6cmVjZWl2ZXJfY2hhaW46Ol86OjxpbXBsIHNlcmRl +OjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpyZWNlaXZlcl9j +aGFpbjo6TWVzc2FnZUtleVN0b3JlPjo6ZGVzZXJpYWxpemU6Omg4NTM3ZTgyNWMwN2M0MjA3/UZR +Y29yZTo6Y21wOjppbXBsczo6PGltcGwgY29yZTo6Y21wOjpQYXJ0aWFsRXE8JkI+IGZvciAmQT46 +OmVxOjpoZDA5NjNlYzBjYmE1NDMzNy40/kZrPHZvZG96ZW1hYzo6dXRpbGl0aWVzOjpsaWJvbG1f +Y29tcGF0OjpMaWJvbG1FZDI1NTE5S2V5cGFpciBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVyb2l6 +ZTo6aDI5ZjRiZDhhZDYzM2QyOTf/Rjp2b2RvemVtYWM6OmNpcGhlcjo6a2V5OjpDaXBoZXJLZXlz +OjpuZXc6Omg3MGQ1YzkzNTdhYWUxMDA1gEdBdm9kb3plbWFjOjpjaXBoZXI6OmtleTo6Q2lwaGVy +S2V5czo6bmV3X3BpY2tsZTo6aDIwMjhiOTI1NTgzYTViOTCBR1Fjb3JlOjpjbXA6OmltcGxzOjo8 +aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6OmhkMDk2M2VjMGNiYTU0 +MzM3LjWCR0d2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6QWNjb3VudDo6ZnJvbV9saWJvbG1fcGlj +a2xlOjpoY2Q3YjJhNjJlYmNhYzRhNYNHhAF2b2RvemVtYWM6Om9sbTo6YWNjb3VudDo6Xzo6PGlt +cGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OmFjY291bnQ6OkFj +Y291bnRQaWNrbGU+OjpkZXNlcmlhbGl6ZTo6aGI1OGViYWU5OGVjNDRmZTiER1Fjb3JlOjpjbXA6 +OmltcGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6OmhkMDk2 +M2VjMGNiYTU0MzM3LjaFR2U8dm9kb3plbWFjOjptZWdvbG06OnNlc3Npb25fa2V5czo6RXhwb3J0 +ZWRTZXNzaW9uS2V5IGFzIHplcm9pemU6Olplcm9pemU+Ojp6ZXJvaXplOjpoYzY2ZDIzYzNhNDAw +ODhkYoZHlQF2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpfOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Y2hhaW5fa2V5 +OjpDaGFpbktleT46OmRlc2VyaWFsaXplOjpoYmI3YjQyY2QyYTE3MWNmZYdHmwF2b2RvemVtYWM6 +Om9sbTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +IGZvciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Y2hhaW5fa2V5OjpSZW1vdGVDaGFpbktleT46 +OmRlc2VyaWFsaXplOjpoMjM3YmEyZjIxMDk1YzU0Y4hHUWNvcmU6OmNtcDo6aW1wbHM6OjxpbXBs +IGNvcmU6OmNtcDo6UGFydGlhbEVxPCZCPiBmb3IgJkE+OjplcTo6aGQwOTYzZWMwY2JhNTQzMzcu +N4lHmwF2b2RvemVtYWM6Om1lZ29sbTo6Z3JvdXBfc2Vzc2lvbjo6Xzo6PGltcGwgc2VyZGU6OmRl +OjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjptZWdvbG06Omdyb3VwX3Nlc3Npb246Okdyb3Vw +U2Vzc2lvblBpY2tsZT46OmRlc2VyaWFsaXplOjpoNjM1NjcxZjllZjJiMzg5MopHsgF2b2RvemVt +YWM6Om1lZ29sbTo6aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRl +c2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om1lZ29sbTo6aW5ib3VuZF9ncm91cF9zZXNzaW9uOjpJ +bmJvdW5kR3JvdXBTZXNzaW9uUGlja2xlPjo6ZGVzZXJpYWxpemU6OmhhN2M5YmU2ZWQxMGE0YzVh +i0eBAXZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFs +aXplIGZvciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Q2hhaW5TdG9yZT46OmRlc2VyaWFsaXpl +OjpoNzE4MjdjMzRlZTBiZWU1OIxHhAF2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6Xzo6PGltcGwg +c2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNlc3Npb246OlNlc3Np +b25QaWNrbGU+OjpkZXNlcmlhbGl6ZTo6aDI0NjVhNWM2MDc5MDVhZDKNR1Fjb3JlOjpjbXA6Omlt +cGxzOjo8aW1wbCBjb3JlOjpjbXA6OlBhcnRpYWxFcTwmQj4gZm9yICZBPjo6ZXE6OmhkMDk2M2Vj +MGNiYTU0MzM3LjiOR6EBdm9kb3plbWFjOjpvbG06OmFjY291bnQ6OmZhbGxiYWNrX2tleXM6Ol86 +OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjphY2NvdW50 +OjpmYWxsYmFja19rZXlzOjpGYWxsYmFja0tleXM+OjpkZXNlcmlhbGl6ZTo6aDk5MWQ3OGEwYWMx +MDlhMWKPR6YBdm9kb3plbWFjOjpvbG06OmFjY291bnQ6Om9uZV90aW1lX2tleXM6Ol86OjxpbXBs +IHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHZvZG96ZW1hYzo6b2xtOjphY2NvdW50OjpvbmVf +dGltZV9rZXlzOjpPbmVUaW1lS2V5c1BpY2tsZT46OmRlc2VyaWFsaXplOjpoNDlmODUyY2FlN2Zj +MzBjMJBHXjxjdXJ2ZTI1NTE5X2RhbGVrOjptb250Z29tZXJ5OjpNb250Z29tZXJ5UG9pbnQgYXMg +Y29yZTo6Y21wOjpQYXJ0aWFsRXE+OjplcTo6aDg3NjJlYzczM2E1NGNlYWORR09jb3JlOjppdGVy +OjphZGFwdGVyczo6emlwOjpUcnVzdGVkUmFuZG9tQWNjZXNzTm9Db2VyY2U6OnNpemU6OmhmMDM2 +OWVhZWUyNzE2ZWQxkkfZAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9u +czo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpLVj46OmludG9fdmFsX211dDo6aDVhYzI5MTc2Zjc1 +NmMzNjGTR0JydW1hX2NvbW1vbjo6c2VyZGU6OmJhc2U2NDo6QmFzZTY0PEMsQj46OmVuY29kZTo6 +aDIxMTQ3ZDE4ZjVhNzZjY2WUR0JydW1hX2NvbW1vbjo6c2VyZGU6OmJhc2U2NDo6QmFzZTY0PEMs +Qj46OmVuY29kZTo6aDVjYTNkNmQzNjY4MWM0MWGVR3Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +Y29yZTo6b3B0aW9uOjpPcHRpb248YWxsb2M6OmJveGVkOjpCb3g8cnVtYV9ldmVudHM6OnJvb206 +OkVuY3J5cHRlZEZpbGU+Pj46OmhmMjczN2FhOTA0Mzc3MTU0lkd1cnVtYV9ldmVudHM6OnJvb206 +Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyb29tOjpK +c29uV2ViS2V5Pjo6ZGVzZXJpYWxpemU6OmhlNjhkNDYyOTZjYTEwNzM0l0dRY29yZTo6Y21wOjpp +bXBsczo6PGltcGwgY29yZTo6Y21wOjpQYXJ0aWFsRXE8JkI+IGZvciAmQT46OmVxOjpoYmExMDAy +Mzk4YWE0MzA2Yi4xmEd1PHNlcmRlOjpfX3ByaXZhdGU6OnNlcjo6RmxhdE1hcFNlcmlhbGl6ZVN0 +cnVjdDxNPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjpzZXJpYWxpemVfZmllbGQ6 +Omg1YTQ4MjlmNGFhMGYwYjdmmUd9cnVtYV9ldmVudHM6OnJlbGF0aW9uOjpfOjo8aW1wbCBzZXJk +ZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6cmVsYXRpb246OkFubm90YXRpb24+ +OjpkZXNlcmlhbGl6ZTo6aGNhZjg3MDlmZTc3NmZlZjWaR3xydW1hX2V2ZW50czo6cmVsYXRpb246 +Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyZWxhdGlv +bjo6UmVmZXJlbmNlPjo6ZGVzZXJpYWxpemU6Omg0NzA3M2E0ODgzZDk0Yzllm0eAAWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLFR5cGU+Ojp2YWxfYXJlYV9tdXQ6OmgxYzZiMzMwZmQ1 +YTk1NzEznEfOAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxh +bGxvYzo6cmM6OlJjPGNvcmU6OmNlbGw6OlVuc2FmZUNlbGw8cmFuZDo6cm5nczo6YWRhcHRlcjo6 +cmVzZWVkaW5nOjpSZXNlZWRpbmdSbmc8cmFuZF9jaGFjaGE6OmNoYWNoYTo6Q2hhQ2hhMTJDb3Jl +LHJhbmRfY29yZTo6b3M6Ok9zUm5nPj4+Pj46Omg2N2IyNjNmNTYwMWJhMGFlnUdUPHJhbmQ6OnJu +Z3M6OnRocmVhZDo6VGhyZWFkUm5nIGFzIHJhbmRfY29yZTo6Um5nQ29yZT46OmZpbGxfYnl0ZXM6 +OmgxZjEyZjljMzY4N2IxMjBhnkdPPGNvcmU6OmZtdDo6QXJndW1lbnRzIGFzIHRyYWNpbmdfY29y +ZTo6ZmllbGQ6OlZhbHVlPjo6cmVjb3JkOjpoY2M0MjllNzEzNDk1NzlmMp9HPjx1MzIgYXMgdHJh +Y2luZ19jb3JlOjpmaWVsZDo6VmFsdWU+OjpyZWNvcmQ6Omg3NTA4ZTI1MzkyODIxNDMwoEc/PGJv +b2wgYXMgdHJhY2luZ19jb3JlOjpmaWVsZDo6VmFsdWU+OjpyZWNvcmQ6OmgzYTJlZDE5NjM3YTFl +NzVjoUdDY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG9uY2VfY2VsbDo6aW1wOjpXYWl0ZXI+Ojpo +OGM5NjBlNWI0MjhhOWM5YqJHT2NvcmU6OmNtcDo6aW1wbHM6OjxpbXBsIGNvcmU6OmNtcDo6UGFy +dGlhbEVxPCZCPiBmb3IgJkE+OjplcTo6aDk2MzllYmRmOTZhYzk1MjmjRyNqc19zeXM6Ok1hcDo6 +c2V0OjpoODFmNjc5M2Q0YmE4MWI4N6RHN2NvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnTWFwOjpl +bnRyeTo6aDM3MWU4ZTM1ZGRjYmRhZmOlRy5jb3JlOjpzdHI6OnNsaWNlX2Vycm9yX2ZhaWw6Omg3 +Mjg5ZjdmNjIwMDU0OGE3pkdgY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfY2xpZW50X2Fw +aTo6a2V5czo6Y2xhaW1fa2V5czo6djM6OlJlc3BvbnNlQm9keT46OmhiYjU4NDhiNWQ3NjQ3ZGI3 +p0ebAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlRvRGV2aWNl +RXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjptYWM6OlRvRGV2aWNlS2V5VmVy +aWZpY2F0aW9uTWFjRXZlbnRDb250ZW50Pj46Omg0MTQ5N2E5YmFlYTUxMGU5qEdmY29yZTo6cHRy +Ojpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjp0ZXh0OjpUZXh0TWVz +c2FnZUV2ZW50Q29udGVudD46Omg0YmE2NDFhOTI3MGFlZTFjqUdOY29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6QW5ub3RhdGlvbj46Omg1NmYwNmE4ODhmOGE3 +ZWQxqkehAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlRvRGV2 +aWNlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6OlRvRGV2aWNl +S2V5VmVyaWZpY2F0aW9uQWNjZXB0RXZlbnRDb250ZW50Pj46Omg5YzNhNGIzY2E1OWVjOWFlq0eh +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlRvRGV2aWNlRXZl +bnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpjYW5jZWw6OlRvRGV2aWNlS2V5VmVy +aWZpY2F0aW9uQ2FuY2VsRXZlbnRDb250ZW50Pj46OmhmZGI4ODVlYzU3MmVlMmY0rEebAWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlRvRGV2aWNlRXZlbnQ8cnVt +YV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjprZXk6OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9u +S2V5RXZlbnRDb250ZW50Pj46OmgwZjk2NGZlMGE4MzJiMmM4rUedAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlRvRGV2aWNlRXZlbnQ8cnVtYV9ldmVudHM6Omtl +eTo6dmVyaWZpY2F0aW9uOjpkb25lOjpUb0RldmljZUtleVZlcmlmaWNhdGlvbkRvbmVFdmVudENv +bnRlbnQ+Pjo6aDY2YWY3ODZmYmVmODU5NjWuR58BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1 +bWFfZXZlbnRzOjpraW5kczo6VG9EZXZpY2VFdmVudDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmlj +YXRpb246OnN0YXJ0OjpUb0RldmljZUtleVZlcmlmaWNhdGlvblN0YXJ0RXZlbnRDb250ZW50Pj46 +OmgwZDFmOTFlNzMwNDcwMGE4r0efAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50 +czo6a2luZHM6OlRvRGV2aWNlRXZlbnQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpy +ZWFkeTo6VG9EZXZpY2VLZXlWZXJpZmljYXRpb25SZWFkeUV2ZW50Q29udGVudD4+OjpoNjVlNDQ4 +MmYxOGIwMjdjZLBHowFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtpbmRz +OjpUb0RldmljZUV2ZW50PHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6cmVxdWVzdDo6 +VG9EZXZpY2VLZXlWZXJpZmljYXRpb25SZXF1ZXN0RXZlbnRDb250ZW50Pj46OmgzOTg1NTg1NDA0 +OGM4N2QysUePAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2luZHM6OlRv +RGV2aWNlRXZlbnQ8cnVtYV9ldmVudHM6OnNlY3JldDo6cmVxdWVzdDo6VG9EZXZpY2VTZWNyZXRS +ZXF1ZXN0RXZlbnRDb250ZW50Pj46Omg2ZGZlN2MxMjA0ZGIwNzE5skdwY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6a2V5OjpLZXlWZXJpZmlj +YXRpb25LZXlFdmVudENvbnRlbnQ+OjpoZDJlMzRhY2Q4NDJiMjFjOLNHdmNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OmFjY2VwdDo6S2V5VmVy +aWZpY2F0aW9uQWNjZXB0RXZlbnRDb250ZW50Pjo6aDhjZGMxYTQwZGZlOTdkNTm0R35jb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjphY2NlcHQ6 +OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uQWNjZXB0RXZlbnRDb250ZW50Pjo6aDk2ZWI3M2EyMmM2 +MTUwNDe1R2Rjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206OnJlZGFj +dGlvbjo6Um9vbVJlZGFjdGlvbkV2ZW50Q29udGVudD46OmhiZDI4NzQ0Y2U0NTI0MWEztkd3Y29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpy +b29tOjplbmNyeXB0ZWQ6OlVua25vd25FbmNyeXB0ZWRDb250ZW50Pjo6aDdkY2UyNzM1NWQyZWEz +YmG3R4EBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdl +Ojp3aXRob3V0X3JlbGF0aW9uOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudFdpdGhvdXRSZWxhdGlv +bj46OmgzNjk5YTU5MDlmYTMxOWQyuEdfY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZl +bnRzOjpyb29tOjptZXNzYWdlOjpsb2NhdGlvbjo6TG9jYXRpb25JbmZvPjo6aDZkN2RkOTRjYzE4 +NGVjODK5R8kBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNz +YWdlOjpyZWxhdGlvbl9zZXJkZTo6RXZlbnRXaXRoUmVsYXRlc1RvRGVIZWxwZXI8cnVtYV9ldmVu +dHM6OnJvb206Om1lc3NhZ2U6OndpdGhvdXRfcmVsYXRpb246OlJvb21NZXNzYWdlRXZlbnRDb250 +ZW50V2l0aG91dFJlbGF0aW9uPj46Omg5MTQ5Mjk0MzRlY2EzYjQ5ukdMY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyZWxhdGlvbjo6VGhyZWFkPjo6aDM3OGQwN2EzYTBhNzlh +ZDYuOLtHUGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2RvemVtYWM6Om1lZ29sbTo6cmF0Y2hl +dDo6UmF0Y2hldD46Omg1M2UyYzhmMzA0OWVmMmU2vEdSY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHJ1bWFfZXZlbnRzOjpjYWxsOjpTZXNzaW9uRGVzY3JpcHRpb24+OjpoZmNjZDlmMzczNzE3ODA3 +Y71HV2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2NsaWVudF9hcGk6OmRlaHlkcmF0ZWRf +ZGV2aWNlOjpIZWxwZXI+OjpoMTk4YTliNjlhNWJhZmQ2Yr5HZWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5nOjpTZWxmU2ln +bmluZz46Omg0ZWYxZGRkYmJjZTYyNTM1v0dlY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJp +eF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpSZXF1ZXN0SGFuZGxlPjo6aDlk +MjQyYWNkM2ZjNzRhNmTAR1Fjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlw +dG86OnN0b3JlOjpCYWNrdXBLZXlzPjo6aDEzNzRmYjMxYjA3MGU1MGPBR1tjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnJlcXVlc3RzOjpLZXlzQmFja3VwUmVxdWVz +dD46OmhhOGQ0ZDVlZjk5N2U0ODA5wkeaAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhf +c2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9u +TWFuYWdlcjo6aGFuZGxlX3dpdGhoZWxkX2RldmljZXM6Ont7Y2xvc3VyZX19Pjo6aDNkZjIzNTdj +ZTdlZDlmMWbDR4QBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjp2 +ZXJpZmljYXRpb246OnFyY29kZTo6UXJTdGF0ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0 +aW9uOjpEb25lPj46Omg2MGQ4ODY2ODdlYmUxZTM0xEdeY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6OkRlY3J5cHRpb25SZXN1bHQ+OjpoNThh +MjE4OTk5NGVlZDM2NMVHY2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0 +bzo6b2xtOjphY2NvdW50OjpJbmJvdW5kQ3JlYXRpb25SZXN1bHQ+OjpoMzRiZTYwZWUyZWRmY2Fj +M8ZHYGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2Nv +dW50OjpEZWNyeXB0aW9uUmVzdWx0Pjo6aDU4YTIxODk5OTRlZWQzNjQuMcdHXmNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6RW5jcnlwdGlvblN5bmND +aGFuZ2VzPjo6aGZmYWRmZWZiYjcxZjYwMTjIR2Bjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6RGVjcnlwdGlvblJlc3VsdD46Omg1OGEyMTg5 +OTk0ZWVkMzY0LjLJR1xjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVtYV9jbGllbnRfYXBpOjpz +eW5jOjpzeW5jX2V2ZW50czo6RGV2aWNlTGlzdHM+OjpoYTJjOWE1OGJhMWZhZTBmOcpHaGNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpPbG1WMUN1 +cnZlMjU1MTlBZXNTaGEyQ29udGVudD46OmgyMTljNWNjOWMyZjU2Mjgwy0cxPFQgYXMgY29yZTo6 +YW55OjpBbnk+Ojp0eXBlX2lkOjpoNzBkMzA2ZmY5YzczNWJmMsxHLmNvcmU6OmVycm9yOjpFcnJv +cjo6dHlwZV9pZDo6aGRmMDE5NmFjOTg5NTRkMmPNR6YBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PChtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZSxt +YXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OldpdGho +ZWxkQ29kZSk+OjpoNDBkNDZjZDY2NmYyY2JmNc5HTGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxy +dW1hX2V2ZW50czo6cmVsYXRpb246OlRocmVhZD46OmgzNzhkMDdhM2EwYTc5YWQ2LjnPR4MBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjp3aXRob3V0 +X3JlbGF0aW9uOjpSb29tTWVzc2FnZUV2ZW50Q29udGVudFdpdGhvdXRSZWxhdGlvbj46OmgzNjk5 +YTU5MDlmYTMxOWQyLjHQR6EBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPChydW1hX2NvbW1vbjo6 +aWRlbnRpZmllcnM6OmRldmljZV9pZDo6T3duZWREZXZpY2VJZCxydW1hX2NvbW1vbjo6aWRlbnRp +ZmllcnM6OmNyeXB0b19hbGdvcml0aG1zOjpEZXZpY2VLZXlBbGdvcml0aG0pPjo6aDFlYWYzZmJk +MjBmNWI3MjfRR/oBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPChydW1hX2NvbW1vbjo6aWRlbnRp +ZmllcnM6OnVzZXJfaWQ6Ok93bmVkVXNlcklkLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1h +cDo6QlRyZWVNYXA8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2VfaWQ6Ok93bmVkRGV2 +aWNlSWQscnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpjcnlwdG9fYWxnb3JpdGhtczo6RGV2aWNl +S2V5QWxnb3JpdGhtPik+OjpoNzM5MWNkYjM3YzA5YjdjMdJHmQFjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8KHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dHJhbnNhY3Rpb25faWQ6Ok93bmVkVHJh +bnNhY3Rpb25JZCxtYXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6OktleXNRdWVyeVJlcXVlc3Qp +Pjo6aGM5M2E2NDc2YTVlZWVkOWLTR4QBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPChydW1hX2Nv +bW1vbjo6aWRlbnRpZmllcnM6OmNyeXB0b19hbGdvcml0aG1zOjpEZXZpY2VLZXlBbGdvcml0aG0s +YWxsb2M6OnN0cmluZzo6U3RyaW5nKT46Omg3NWMxNTRkMDBiYzZlOThh1EeSAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVz +ZXJJZCxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmljZV9pZDo6T3duZWREZXZpY2VJZCk+ +OjpoYmZiZmE3MjkyZDNlNmM0Yi401UdQY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1bWFfZXZl +bnRzOjpyZWxhdGlvbjo6QW5ub3RhdGlvbj46Omg1NmYwNmE4ODhmOGE3ZWQxLjLWR1Fjb3JlOjpw +dHI6OmRyb3BfaW5fcGxhY2U8c2VyZGVfd2FzbV9iaW5kZ2VuOjpkZTo6T2JqZWN0QWNjZXNzPjo6 +aDZkOTk3OGEzMDQ0YjI3NWHXR1Njb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjpv +bG06OnNlc3Npb246OlNlc3Npb25QaWNrbGU+OjpoMmZkMDZkYzc2MTgxY2U3YthHMmNvcmU6OmVy +cm9yOjpFcnJvcjo6ZGVzY3JpcHRpb246OmgzMjAxYTYyMGE4MmNjNjNm2UdCPGFsbG9jOjp2ZWM6 +OlZlYzxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiOWQ5ZGU0MDYzNjg0ZmIy2keU +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c2Vzc2lvbl9tYW5h +Z2VyOjpzZXNzaW9uczo6U2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZV9zZXNzaW9uczo6e3tjbG9zdXJl +fX06OlNlc3Npb25JbmZvPjo6aDc5ZmQ5ZmUwZTYwOTllODbbR2Vjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlNpZ25hdHVyZVVwbG9hZFJl +cXVlc3Q+OjpoNDVmMmM1YmZhNWM4NjhiNdxHUGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1h +cDo6QlRyZWVNYXA8SyxWLEE+Ojpjb250YWluc19rZXk6OmhkODdlYWI5NWExYWFiZDY53UeAAWNv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwobWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpJZGVudGl0 +eUNoYW5nZXMsbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpEZXZpY2VDaGFuZ2VzKT46Omg3MGVh +OTkwNTc1MDQ0OTY23keKAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjppdGVyOjphZGFw +dGVyczo6Y2hhaW46OkNoYWluPGFsbG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8bWF0cml4 +X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXRpZXM+LGFs +bG9jOjp2ZWM6OmludG9faXRlcjo6SW50b0l0ZXI8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRp +ZXM6OnVzZXI6OlJlYWRPbmx5VXNlcklkZW50aXRpZXM+Pj46OmgyNDQwNDhhM2FmYTA0NTNm30dT +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6QmFja3Vw +S2V5cz46OmgxMzc0ZmIzMWIwNzBlNTBjLjHgR84EY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRy +YWNpbmdfc3Vic2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8dHJhY2luZ19zdWJzY3Jp +YmVyOjpyZWxvYWQ6OkxheWVyPHRyYWNpbmdfY29yZTo6bWV0YWRhdGE6OkxldmVsRmlsdGVyLHRy +YWNpbmdfc3Vic2NyaWJlcjo6Zm10OjpTdWJzY3JpYmVyPHRyYWNpbmdfc3Vic2NyaWJlcjo6Zm10 +Ojpmb3JtYXQ6OkRlZmF1bHRGaWVsZHMsbWF0cml4X3Nka19jb21tb246OmpzX3RyYWNpbmc6Okpz +RXZlbnRGb3JtYXR0ZXIsdHJhY2luZ19jb3JlOjptZXRhZGF0YTo6TGV2ZWxGaWx0ZXIsbWF0cml4 +X3Nka19jb21tb246OmpzX3RyYWNpbmc6Ok1ha2VKc0xvZ1dyaXRlcj4+LHRyYWNpbmdfc3Vic2Ny +aWJlcjo6Zm10OjpTdWJzY3JpYmVyPHRyYWNpbmdfc3Vic2NyaWJlcjo6Zm10Ojpmb3JtYXQ6OkRl +ZmF1bHRGaWVsZHMsbWF0cml4X3Nka19jb21tb246OmpzX3RyYWNpbmc6OkpzRXZlbnRGb3JtYXR0 +ZXIsdHJhY2luZ19jb3JlOjptZXRhZGF0YTo6TGV2ZWxGaWx0ZXIsbWF0cml4X3Nka19jb21tb246 +OmpzX3RyYWNpbmc6Ok1ha2VKc0xvZ1dyaXRlcj4+Pjo6aDYxMjNhNDBmMGQ0OTdiOGXhR0M8YWxs +b2M6OnN5bmM6OkFyYzxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0YWIxODhiM2Yz +Mjc4ZDY54kdDPGFsbG9jOjpzeW5jOjpBcmM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoNmI2MTJhN2IzYzI0NTMxZONHxwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aW5kZXhlZF9k +Yl9mdXR1cmVzOjpyZXF1ZXN0OjpmdXR1cmVzOjpjdXJzb3I6OmlkYl9jdXJzb3Jfd2l0aF92YWx1 +ZV9mdXR1cmU6OklkYkN1cnNvcldpdGhWYWx1ZUZ1dHVyZTxpbmRleGVkX2RiX2Z1dHVyZXM6Omlk +Yl9vYmplY3Rfc3RvcmU6OklkYk9iamVjdFN0b3JlPj46OmhkOGU5NWY2YmNkZWIxOWE35EdFPGFs +bG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzYmJhZmQz +ZTRiNTIyM2E05Ud9Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmdldF9zZWNyZXRzX2Zyb21faW5ib3g6Ont7Y2xvc3Vy +ZX19Pjo6aGZlMjQ2YmE2ODBkM2Y0YjbmR2Bjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4 +X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6RGVjcnlwdGlvblJlc3VsdD46Omg1OGEyMTg5OTk0 +ZWVkMzY0LjPnRzJjb3JlOjplcnJvcjo6RXJyb3I6OmRlc2NyaXB0aW9uOjpoZTVlYmIzZWU5ZTli +ODZmYuhHazxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmljZV9pZDo6T3duZWREZXZpY2VJ +ZCBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6OmgzYzM4YTBiN2QxY2JlMjhi +6UdrPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkIGFz +IHNlcmRlOjpzZXI6OlNlcmlhbGl6ZT46OnNlcmlhbGl6ZTo6aDA0NTI5ZDY1Yjc3M2VjODPqR2c8 +cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpteGNfdXJpOjpPd25lZE14Y1VyaSBhcyBzZXJkZTo6 +c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6Omg3Nzg3NTY5ZWY4YTRlYzYy60dnPHJ1bWFfY29t +bW9uOjppZGVudGlmaWVyczo6bXhjX3VyaTo6T3duZWRNeGNVcmkgYXMgc2VyZGU6OnNlcjo6U2Vy +aWFsaXplPjo6c2VyaWFsaXplOjpoYzY4MmYyZjhiMThiMThlYexH7AFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8KHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQs +c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNoTWFwPHJ1bWFfY29tbW9uOjppZGVudGlm +aWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkLG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0 +aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlPik+OjpoMDI3MzA3OWI5NWZlNzQ0NO1HQzxhbGxv +Yzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDNmMDc0OGVlMjA3 +NDdmZTjuR388c2hhMjo6Y29yZV9hcGk6OlNoYTI1NlZhckNvcmUgYXMgZGlnZXN0Ojpjb3JlX2Fw +aTo6VmFyaWFibGVPdXRwdXRDb3JlPjo6ZmluYWxpemVfdmFyaWFibGVfY29yZTo6e3tjbG9zdXJl +fX06OmhjNTllNjQ1YTIwZGIxNTE070daY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGh0dHA6OnJl +c3BvbnNlOjpSZXNwb25zZTxhbGxvYzo6dmVjOjpWZWM8dTg+Pj46OmgyNDBjNTdjZTllY2Q5Yzk5 +8EdIYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0OjpCVHJlZVNldDxULEE+OjppbnNlcnQ6 +OmhkNjZjZmQ3NWQ1NWM0YzNk8UdKYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6c2V0OjpCVHJl +ZVNldDxULEE+Ojpjb250YWluczo6aDYxZTU3NTFmNTk5ZjFjZGXyRz9ydW1hX2NvbW1vbjo6c2Vy +ZGU6OnJhdzo6UmF3PFQ+OjpkZXNlcmlhbGl6ZTo6aDJjY2UwNGZjN2ZiMDRhY2LzR0JydW1hX2Nv +bW1vbjo6c2VyZGU6OnJhdzo6UmF3PFQ+OjpkZXNlcmlhbGl6ZV9hczo6aDVkODViNDcyN2NiZWJi +ZDf0Ry5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6Omg3ZDk5Y2UwYmY3ZDg5Yjcz9Udmc2Vy +ZGU6OnNlcjo6aW1wbHM6OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgYWxsb2M6OmJv +eGVkOjpCb3g8VD4+OjpzZXJpYWxpemU6Omg1M2E0NmJlOTRkYzE0NzU09kdmc2VyZGU6OnNlcjo6 +aW1wbHM6OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3IgYWxsb2M6OmJveGVkOjpCb3g8 +VD4+OjpzZXJpYWxpemU6OmhmZDQ5YmU0MWZjYTY5NTcw90dYPHJ1bWFfY29tbW9uOjpzZXJkZTo6 +cmF3OjpSYXc8VD4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplPjo6c2VyaWFsaXplOjpoOGRkYmUx +MTdjMzI0YzFiNvhHRGZ1dHVyZXNfdXRpbDo6YWJvcnRhYmxlOjpBYm9ydGFibGU8VD46OmlzX2Fi +b3J0ZWQ6Omg1YjQ4MGIxNGYzZmM1YjY4+UdEZnV0dXJlc191dGlsOjphYm9ydGFibGU6OkFib3J0 +YWJsZTxUPjo6aXNfYWJvcnRlZDo6aDYyMzI4NjU5M2I1MTVkYjP6R0RmdXR1cmVzX3V0aWw6OmFi +b3J0YWJsZTo6QWJvcnRhYmxlPFQ+Ojppc19hYm9ydGVkOjpoOGE1ZDhmNmU3MDQ3NTQ0M/tHRGZ1 +dHVyZXNfdXRpbDo6YWJvcnRhYmxlOjpBYm9ydGFibGU8VD46OmlzX2Fib3J0ZWQ6OmhhYWFhNWQ2 +NjNhMzFiODZm/EdgY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRvOjpv +bG06OmFjY291bnQ6OkRlY3J5cHRpb25SZXN1bHQ+OjpoNThhMjE4OTk5NGVlZDM2NC40/Ucuc2Vy +ZGVfanNvbjo6dmFsdWU6OnRvX3ZhbHVlOjpoN2FkYTE2NzhjMGE1MjI4Zf5HgwFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6OndpdGhvdXRfcmVsYXRp +b246OlJvb21NZXNzYWdlRXZlbnRDb250ZW50V2l0aG91dFJlbGF0aW9uPjo6aDM2OTlhNTkwOWZh +MzE5ZDIuMv9HMmNvcmU6OmVycm9yOjpFcnJvcjo6ZGVzY3JpcHRpb246OmgxM2JmYzA3MWJiMTZl +MmNhgEguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoMWRhMzAxMmU4MjBlYjIxNIFILmNv +cmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDIyNTAyZjA0ZTVjZjYwOGOCSC5jb3JlOjplcnJv +cjo6RXJyb3I6OnR5cGVfaWQ6OmgyZGRiZmFhYzA0ZDNjMDlkg0guY29yZTo6ZXJyb3I6OkVycm9y +Ojp0eXBlX2lkOjpoMzEyMjJiMDEwMGZhOTE1NIRILmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9p +ZDo6aDU5MTRmYmNiZDc3YWUxNDmFSC5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6Omg2YThj +MDRlYzAyYjdhNjc2hkguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoNzYzZDQ4MTU1MmFh +ZTE0ZYdILmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDgyNjNiMTE5NTVkMDY4NjaISC5j +b3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmhhMDNkNGQzN2YyNDkyZDNkiUguY29yZTo6ZXJy +b3I6OkVycm9yOjp0eXBlX2lkOjpoYTA3Y2FlNDkxOTIxMTcxN4pILmNvcmU6OmVycm9yOjpFcnJv +cjo6dHlwZV9pZDo6aGIzYzE2ZGY5MmQxMzkzZWWLSC5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVf +aWQ6OmhiNWY5Y2ZlY2I1OWE2OTExjEguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoYjg5 +MzdkZWU4YjVmYmNjY41ILmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGM2MmExMjllOTBl +MDQ4Y2OOSC5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmhjYjE2NzAzN2U4MmVmOTE0j0gu +Y29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoZDRmNjc4Y2VjZTBmNjYxYpBILmNvcmU6OmVy +cm9yOjpFcnJvcjo6dHlwZV9pZDo6aGU2YTQyMWVhNzJlMDJjYzeRSFQ8YWxsb2M6OnN0cmluZzo6 +RnJvbVV0ZjhFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+OjpkZXNjcmlwdGlvbjo6aDgyZTYx +MDJiOThlMzY1ZGaSSC1hbnlob3c6OmVycm9yOjpvYmplY3RfZHJvcDo6aDIwYjNhYTBhYWI4MTMz +YziTSC1hbnlob3c6OmVycm9yOjpvYmplY3RfZHJvcDo6aDJlNjVlZWI0NGEwMzY2NjaUSC1hbnlo +b3c6OmVycm9yOjpvYmplY3RfZHJvcDo6aDQ0ODI5Mjg4NTEwZjUxYjCVSC1hbnlob3c6OmVycm9y +OjpvYmplY3RfZHJvcDo6aDU3ZTQ3MTQ0ZmMwZTMxMTSWSC1hbnlob3c6OmVycm9yOjpvYmplY3Rf +ZHJvcDo6aDYwN2Q1ZDI4NzlmMjkxMTiXSC1hbnlob3c6OmVycm9yOjpvYmplY3RfZHJvcDo6aDk0 +NDNmZGY0YmVmMTMxNGSYSC1hbnlob3c6OmVycm9yOjpvYmplY3RfZHJvcDo6aDk4YTI0Yjk4NWQ3 +YmU4NjWZSC1hbnlob3c6OmVycm9yOjpvYmplY3RfZHJvcDo6aDlhYTFmYjQyYWRmZjM4MmKaSC1h +bnlob3c6OmVycm9yOjpvYmplY3RfZHJvcDo6aGE1NmY0YzBkN2MxOTMwYjSbSC1hbnlob3c6OmVy +cm9yOjpvYmplY3RfZHJvcDo6aGI4ZjE1ZjE1NjNkODU5YzCcSC1hbnlob3c6OmVycm9yOjpvYmpl +Y3RfZHJvcDo6aGQ2OTNmZjk1OTAzNmE2MGWdSC1hbnlob3c6OmVycm9yOjpvYmplY3RfZHJvcDo6 +aGU0ZTVmYjQ0NDhmNzQyMDaeSC5hbnlob3c6OmVycm9yOjpvYmplY3RfYm94ZWQ6OmgxYzljOWJl +YmYyMmU3NTQ4n0guYW55aG93OjplcnJvcjo6b2JqZWN0X2JveGVkOjpoMjM3OWQ0NGMwYWM5ZTgw +OKBILmFueWhvdzo6ZXJyb3I6Om9iamVjdF9ib3hlZDo6aDI3ODAyYjA2N2NkZDA2OGGhSC5hbnlo +b3c6OmVycm9yOjpvYmplY3RfYm94ZWQ6OmgyODkzN2JhYzU3NDgyNTQ1okguYW55aG93OjplcnJv +cjo6b2JqZWN0X2JveGVkOjpoMmU1YmM4ZTgzNTY2N2ZjYqNILmFueWhvdzo6ZXJyb3I6Om9iamVj +dF9ib3hlZDo6aDdiZjgzNWFlOTdhNTI4MjKkSC5hbnlob3c6OmVycm9yOjpvYmplY3RfYm94ZWQ6 +Omg5MmNjMmQ0ZDBkZGViNmQypUguYW55aG93OjplcnJvcjo6b2JqZWN0X2JveGVkOjpoYWNkYzgz +ZWI5MDY3MDY0ZqZILmFueWhvdzo6ZXJyb3I6Om9iamVjdF9ib3hlZDo6aGQ4OTViODU3MWZmZWY0 +MTWnSC5hbnlob3c6OmVycm9yOjpvYmplY3RfYm94ZWQ6OmhkYjcwOGNiM2ZkZjFjNTBhqEguYW55 +aG93OjplcnJvcjo6b2JqZWN0X2JveGVkOjpoZjM1ZjQwMzNhNDRmZWQ4NalILmFueWhvdzo6ZXJy +b3I6Om9iamVjdF9ib3hlZDo6aGZjZmVlMDRkMDcyNWJkM2aqSC5hbnlob3c6OmVycm9yOjpvYmpl +Y3RfYm94ZWQ6OmhmZjljZDc0NDcxN2QxMWIyq0gMX19ydXN0X2FsbG9jrEiIAXdhc21fYmluZGdl +bjo6Y29udmVydDo6c2xpY2VzOjo8aW1wbCB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6 +SW50b1dhc21BYmkgZm9yIGFsbG9jOjpib3hlZDo6Qm94PFtUXT4+OjppbnRvX2FiaTo6aDA5NWRi +YTMyYzExM2M5NTWtSDphbGxvYzo6dmVjOjpWZWM8VCxBPjo6ZXh0ZW5kX2Zyb21fc2xpY2U6Omgy +NzQyNzdhM2Q5MWFhMGZjrkhTY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6b2xt +OjpzZXNzaW9uOjpTZXNzaW9uUGlja2xlPjo6aGM4ZDQyODg3YWU3NjZhNGSvSGtjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6UGlja2xlZENy +b3NzU2lnbmluZ0lkZW50aXR5Pjo6aDc2ZjA2ZWJjYWFiM2JlZWEuMbBIYWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTx2b2RvemVtYWM6Om1lZ29sbTo6Z3JvdXBfc2Vzc2lvbjo6R3JvdXBTZXNzaW9u +UGlja2xlPjo6aDY0NmVjNTM3YWQzNzQ3NGOxSGZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0 +cml4X3Nka19jcnlwdG86OnR5cGVzOjpkZXZpY2Vfa2V5czo6VW5zaWduZWREZXZpY2VJbmZvPjo6 +aDAwNWQ5MmFhNTM1NTY5ZjmySGxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19j +cnlwdG86Om9sbTo6c2lnbmluZzo6cGtfc2lnbmluZzo6UGlja2xlZFNlbGZTaWduaW5nPjo6aGM1 +OGExNzFmYWM2MDdhMGGzSN8CY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPChhbGxvYzo6c3luYzo6 +QXJjPG1hdHJpeF9zZGtfY3J5cHRvOjpyZXF1ZXN0czo6VG9EZXZpY2VSZXF1ZXN0PixhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVy +czo6dXNlcl9pZDo6T3duZWRVc2VySWQsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpC +VHJlZU1hcDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OmRldmljZV9pZDo6T3duZWREZXZpY2VJ +ZCxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6OlNoYXJl +SW5mbz4+KT46OmgzMjUzMjVkOWU0YWU3NzhitEhfY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZv +ZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpjaGFpbl9rZXk6OlJlbW90ZUNoYWluS2V5Pjo6aGEzODcw +YzhmODg5NThlODW1SGNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjpvbG06OnNl +c3Npb246Om1lc3NhZ2Vfa2V5OjpSZW1vdGVNZXNzYWdlS2V5Pjo6aDBiN2ZhZmNjNDlmMzA2NzO2 +SHdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVu +dHM6OnJvb21fa2V5X3JlcXVlc3Q6OlJlcXVlc3RlZEtleUluZm9IZWxwZXI+OjpoMjY1MDM5NDM0 +OWIzZWI0MrdIgwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9s +bTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5Ojpmcm9tX3BpY2tsZTo6e3tj +bG9zdXJlfX0+OjpoMzA4MjY0ODQ1ZWQ0MDVhNrhItwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +PG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpjcnlwdG9fc3RvcmU6OkluZGV4ZWRkYkNyeXB0b1N0b3Jl +IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNldF9j +dXN0b21fdmFsdWU6Ont7Y2xvc3VyZX19Pjo6aGNlZjFlMGUyNmE0MDQwMje5SC5jb3JlOjplcnJv +cjo6RXJyb3I6OnR5cGVfaWQ6Omg2OTBjZWMzNmNiMGU1ZDdmukguY29yZTo6ZXJyb3I6OkVycm9y +Ojp0eXBlX2lkOjpoY2NiYzA2ZmY4MzdhOWM5N7tIMmNvcmU6OmVycm9yOjpFcnJvcjo6ZGVzY3Jp +cHRpb246OmgwMmI4OTZjZDFlYjQ4MTJmvEguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpo +MzgxNjMxNTk0NDM2YTRhN71IMmNvcmU6OmVycm9yOjpFcnJvcjo6ZGVzY3JpcHRpb246OmgwZWUy +YTczNTc1ZjBlNjhivkhbPCZUIGFzIG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpzYWZlX2VuY29kZTo6 +U2FmZUVuY29kZT46OmFzX2VuY29kZWRfc3RyaW5nOjpoYjRmMjE5ZTZmMWM4MDllML9IWzwmVCBh +cyBtYXRyaXhfc2RrX2luZGV4ZWRkYjo6c2FmZV9lbmNvZGU6OlNhZmVFbmNvZGU+Ojphc19lbmNv +ZGVkX3N0cmluZzo6aGE1ZDU1OWU2Y2NjMGU1OWHASG48YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFz +IG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpzYWZlX2VuY29kZTo6U2FmZUVuY29kZT46OmFzX2VuY29k +ZWRfc3RyaW5nOjpoYzM0YTc3OGUwYTM5M2IwM8FIYjxzZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6 +T2JqZWN0U2VyaWFsaXplciBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjplbmQ6Omhk +MjJjZTM2M2JjMWVmNDUywkhCc2VyZGVfd2FzbV9iaW5kZ2VuOjpPYmplY3RFeHQ6OmdldF93aXRo +X3JlZl9rZXk6OmhiODQzZDJiYjQ4MTlmYThmw0guY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lk +OjpoOWFiNjk3NWNjZjlhYTYyZMRIUzxjb3JlOjpzdHI6OmVycm9yOjpVdGY4RXJyb3IgYXMgY29y +ZTo6ZXJyb3I6OkVycm9yPjo6ZGVzY3JpcHRpb246OmgzNDc0OTZhZDlmYWVkMWQ4xUgyY29yZTo6 +ZXJyb3I6OkVycm9yOjpkZXNjcmlwdGlvbjo6aDQ4YjcxZDViOGZjMGJlMDnGSC9zZXJkZTo6ZGU6 +OlZpc2l0b3I6OnZpc2l0X3U4OjpoNDhlNGNlMDA4MjNiMTY4McdIL3NlcmRlOjpkZTo6VmlzaXRv +cjo6dmlzaXRfdTg6Omg5Yzc1NGU3MmUzMWM1N2E0yEgvc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNp +dF91ODo6aGJjMDQ3NjYyM2JhZGY1MDLJSC9zZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X3U4Ojpo +YzY3M2MxZDIzODRkYjY2ZcpIL3NlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfdTg6OmhlNTE1ZWRj +NTJmMTkyNjZky0hVPGNvcmU6OnN0cjo6ZXJyb3I6OlV0ZjhFcnJvciBhcyBjb3JlOjplcnJvcjo6 +RXJyb3I+OjpkZXNjcmlwdGlvbjo6aDM0NzQ5NmFkOWZhZWQxZDguMcxIZTxkaWdlc3Q6OmNvcmVf +YXBpOjp3cmFwcGVyOjpDb3JlV3JhcHBlcjxUPiBhcyBkaWdlc3Q6OlVwZGF0ZT46OnVwZGF0ZTo6 +e3tjbG9zdXJlfX06OmgwNzJkNzAyZGFmYTliMzIzzUhTPG1hdHJpeF9zZGtfc3RvcmVfZW5jcnlw +dGlvbjo6S2V5cyBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVyb2l6ZTo6aDViNDhjZmY1MDk2ZGM3 +ZGPOSGY8cm1wX3NlcmRlOjplbmNvZGU6OkNvbXBvdW5kPFcsQz4gYXMgc2VyZGU6OnNlcjo6U2Vy +aWFsaXplVHVwbGU+OjpzZXJpYWxpemVfZWxlbWVudDo6aDkxNzZjMmYxZGUzMDU0YjHPSC5jb3Jl +OjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmhhNmUzMzZhZGE5NTk3YWFk0Egvc2VyZGU6OmRlOjpW +aXNpdG9yOjp2aXNpdF91ODo6aGMzNGMxODQ3ZGRiYjBiZjTRSC9zZXJkZTo6ZGU6OlZpc2l0b3I6 +OnZpc2l0X3U4OjpoZjQyZmJiNGQzMTVjNTBmNNJIL3NlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRf +dTg6OmhmNjI2YWZmOWI3MWFjMTQ000guY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoNzk5 +YzliNDVmN2ZmZWI2YtRILmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGZmMDZlOTk5NTY3 +ODM3MmTVSEI8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDdmYjFlNzFlN2QzODdhZDnWSDRjb3JlOjplcnJvcjo6RXJyb3I6OmRlc2NyaXB0aW9uOjpoNDhi +NzFkNWI4ZmMwYmUwOS4x10guY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoNjEzMjhhNWRh +ZDlmYjBkMdhILmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGZhODIzYjMwNjY5NThjNTHZ +SFVjb3JlOjphcnJheTo6PGltcGwgY29yZTo6b3BzOjppbmRleDo6SW5kZXg8ST4gZm9yIFtUOyBO +XT46OmluZGV4OjpoZTIzNGVjMWEzMWQzYjJmYy4x2kiIAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxpbmRleGVkX2RiX2Z1dHVyZXM6OmlkYl90cmFuc2FjdGlvbjo6aWRiX3RyYW5zYWN0aW9uX2xp +c3RlbmVyczo6ZXJyb3JfY2FsbGJhY2s6Ont7Y2xvc3VyZX19Pjo6aDU0MDY4NTdkYWIwMzk2M2Lb +SIYBPGluZGV4ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6b3Blbl9kYl9yZXF1ZXN0OjpPcGVuRGJS +ZXF1ZXN0IGFzIGNvcmU6OmZ1dHVyZTo6aW50b19mdXR1cmU6OkludG9GdXR1cmU+OjppbnRvX2Z1 +dHVyZTo6aDc2OWY3OTQ3ZTIzMmJiZDLcSEJzZXJkZV93YXNtX2JpbmRnZW46Ok9iamVjdEV4dDo6 +Z2V0X3dpdGhfcmVmX2tleTo6aDNhOGMwNDVkYjkwYmYzMmHdSDJjb3JlOjplcnJvcjo6RXJyb3I6 +OmRlc2NyaXB0aW9uOjpoMWRjZGVjMDk0YjAzZjUzNN5ILmNvcmU6OmVycm9yOjpFcnJvcjo6dHlw +ZV9pZDo6aDdkZjczMDllODVmZTNiMGHfSC5hbnlob3c6OmVycm9yOjpvYmplY3RfYm94ZWQ6Omg1 +NDQ1Y2NjZDllZDljOGNl4EguY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoOGU5YzY0YWI5 +ZjMxNWZlNeFIOmFsbG9jOjp2ZWM6OlZlYzxULEE+OjpleHRlbmRfZnJvbV9zbGljZTo6aDAwMjI5 +Y2FhMTY2ODA3ZmPiSDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDBkMTE3MWRiODA4 +Zjg5ZWTjSDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNGZiZjZkNzJlYTY2YWYw +ZeRIgAFhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixUeXBlPjo6a2V5X2FyZWFfbXV0 +OjpoMTI1Y2E4NTEyNGFlZTY3YeVIdTxzZXJkZTo6X19wcml2YXRlOjpzZXI6OkZsYXRNYXBTZXJp +YWxpemVTdHJ1Y3Q8TT4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplU3RydWN0Pjo6c2VyaWFsaXpl +X2ZpZWxkOjpoYTA0ZGI5Y2NkMTA2Mjk4MuZIZmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXk6OlJvb21LZXlIZWxwZXI+Ojpo +Yjg2ODU0MzFkMjhiNjI0OOdIZ3NlcmRlOjpzZXI6OmltcGxzOjo8aW1wbCBzZXJkZTo6c2VyOjpT +ZXJpYWxpemUgZm9yIGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OnNlcmlhbGl6ZTo6aDE3OWQ2Yzg1 +ZGQ3YjI3YTnoSDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OlNpZ25hdHVyZXM6Om5ldzo6aGIx +ZGU3MjU5Mjk3MTFhZjbpSFVtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNlOjpS +ZWFkT25seURldmljZTo6ZWQyNTUxOV9rZXk6OmhlNDkyNDhlODFkZDk0NDg26khYbWF0cml4X3Nk +a19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OmN1cnZlMjU1MTlf +a2V5OjpoYzRhM2ViODFlZDI0ZDViZutIWG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpk +ZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjppc19ibGFja2xpc3RlZDo6aDQ3MDg5OGMzNzc4YzNlYjjs +SGFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlv +bjo6cmVxdWVzdHM6OlJlcXVlc3RlZD46OmgwYzFlZjYxMTk0MThmMzM47UikAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2Vfa2V5X2lkOjpP +d25lZERldmljZUtleUlkLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6 +Y29tbW9uOjpTaWduaW5nS2V5KT46OmgwY2ZmMGViYmExNzgzZjAy7khDPGFsbG9jOjpzeW5jOjpB +cmM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjIyOTU3Y2Q5NGEyODVjMe9IQzxh +bGxvYzo6c3luYzo6QXJjPFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDFkYjY0MDZl +MjA4NTA4MTLwSEM8YWxsb2M6OnN5bmM6OkFyYzxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6Omg3ZWM5YzRjMjFlMzYzZjkz8UhDPGFsbG9jOjpzeW5jOjpBcmM8VCxBPiBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoYzI4ZTdlNjU5OTVlYjhkOPJIRWV5ZWJhbGw6OnNoYXJlZDo6U2hh +cmVkT2JzZXJ2YWJsZTxULEw+Ojpmcm9tX2lubmVyOjpoOGM3NTM1OGVjOWI5ZDliNfNIaWNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9v +bTo6ZW5jcnlwdGVkOjpPbG1IZWxwZXI+OjpoNjM4YjNkYTliNzgzN2EyMPRIU2NvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxzZXJkZV9qc29uOjp2YWx1ZTo6ZGU6Ok1hcERlc2VyaWFsaXplcj46Omhh +NmQ5ZWZkMWRlZmM4YTUy9Ug9PCZUIGFzIHRyYWNpbmdfY29yZTo6ZmllbGQ6OlZhbHVlPjo6cmVj +b3JkOjpoYmQ1MjgzOGFkOThjYjQwZvZISGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6OnNldDo6 +QlRyZWVTZXQ8VCxBPjo6aW5zZXJ0OjpoNzNkZTZmOTFjYmJjOGJhYvdISTxhbGxvYzo6Ym94ZWQ6 +OkJveDxUPiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDEzNjNhODc5MmE1NmMx +NGT4SEk8YWxsb2M6OmJveGVkOjpCb3g8VD4gYXMgY29yZTo6Y29udmVydDo6RnJvbTxUPj46OmZy +b206OmgzODIzMzNmOGVmMTk2MDUx+UhJPGFsbG9jOjpib3hlZDo6Qm94PFQ+IGFzIGNvcmU6OmNv +bnZlcnQ6OkZyb208VD4+Ojpmcm9tOjpoNGRmYmEyNWEwNjRlMGNlYfpISTxhbGxvYzo6Ym94ZWQ6 +OkJveDxUPiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDk5NDVjMTBkZmI0MGQw +Zmb7SEk8YWxsb2M6OmJveGVkOjpCb3g8VD4gYXMgY29yZTo6Y29udmVydDo6RnJvbTxUPj46OmZy +b206OmhjNGQ3NGEyZjk5NzRmNTMx/EhibWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vz +c2lvbnM6OmluYm91bmQ6OkluYm91bmRHcm91cFNlc3Npb246OmJhY2tlZF91cDo6aGE4ODZhYWQ5 +NWMwNDE0Mzf9SGZtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91 +bmQ6Ok91dGJvdW5kR3JvdXBTZXNzaW9uOjppbnZhbGlkYXRlZDo6aDcyOTM4MTIwNDJjODc2MDT+ +SGFtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6Ok91dGJv +dW5kR3JvdXBTZXNzaW9uOjpzaGFyZWQ6Omg5MGI1N2VkODRjM2RiMDgw/0gwPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmhjMjdiZjNmZmU5ZWU3ODUxgEmAATxydW1hX2NvbW1vbjo6aWRl +bnRpZmllcnM6OmRldmljZV9rZXlfaWQ6Ok93bmVkRGV2aWNlS2V5SWQgYXMgbWF0cml4X3Nka19j +cnlwdG86OnR5cGVzOjpBbGdvcml0aG0+OjphbGdvcml0aG06OmgxNjgyZjkzNTIyMmY2YTc5gUlm +bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGluZTo6VmVyaWZpY2F0aW9uTWFj +aGluZTo6bWFya19yZXF1ZXN0X2FzX3NlbnQ6Omg0ODMzNjY2MzVjOWE5N2Figkl/PHNoYTI6OmNv +cmVfYXBpOjpTaGE1MTJWYXJDb3JlIGFzIGRpZ2VzdDo6Y29yZV9hcGk6OlZhcmlhYmxlT3V0cHV0 +Q29yZT46OmZpbmFsaXplX3ZhcmlhYmxlX2NvcmU6Ont7Y2xvc3VyZX19OjpoZjBhYTA2ZDZjMjYy +N2MwMINJZTxkaWdlc3Q6OmNvcmVfYXBpOjp3cmFwcGVyOjpDb3JlV3JhcHBlcjxUPiBhcyBkaWdl +c3Q6OlVwZGF0ZT46OnVwZGF0ZTo6e3tjbG9zdXJlfX06OmhlMjNiMDI5MGM0MTAwNjYzhEkyPCZU +IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDYzOTM1ZWJjM2I3OTNlYzOFSYQBY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPChydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnJvb21faWQ6Ok93 +bmVkUm9vbUlkLG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6Um9vbVNldHRpbmdzKT46OmgyMTk5 +ZGZmMjJmOTY5MDE1hknYAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwocnVtYV9jb21tb246Omlk +ZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjpt +YXA6Okhhc2hNYXA8YWxsb2M6OnN0cmluZzo6U3RyaW5nLG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnJlcXVlc3RzOjpWZXJpZmljYXRpb25SZXF1ZXN0Pik+OjpoZjRhNGI4Y2U0Y2E1 +ZDAzZYdJMmNvcmU6OmVycm9yOjpFcnJvcjo6ZGVzY3JpcHRpb246OmgwMDkzOTA2NjhhYjY5NWYy +iEkuY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoNDc2MmJmMmJhY2YyM2Q0NIlJLmNvcmU6 +OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGE2NjliYjY4YjRhZTIyZTaKSS5jb3JlOjplcnJvcjo6 +RXJyb3I6OnR5cGVfaWQ6OmhkMmY4ZWMwMTEwZmU2NTlji0lcbWF0cml4X3Nka19jcnlwdG86Omlk +ZW50aXRpZXM6OnVzZXI6OlJlYWRPbmx5T3duVXNlcklkZW50aXR5Ojppc192ZXJpZmllZDo6aDI4 +ZDI5NDdkZWVhNmNjZmaMSW9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjpvbG06 +OmFjY291bnQ6Om9uZV90aW1lX2tleXM6Ok9uZVRpbWVLZXlHZW5lcmF0aW9uUmVzdWx0Pjo6aDVi +OWQ4ZDAyNWZmNmRhYjmNSS5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmhhYmNmZTQ4ZDRm +YzE3OGJmjklCPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg0ZmY3YzdjNzk5M2NjODM3j0n+AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwocnVtYV9jb21t +b246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCxhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29tbW9uOjp0b19kZXZpY2U6OkRldmljZUlkT3JB +bGxEZXZpY2VzLHJ1bWFfY29tbW9uOjpzZXJkZTo6cmF3OjpSYXc8cnVtYV9ldmVudHM6OmVudW1z +OjpBbnlUb0RldmljZUV2ZW50Q29udGVudD4+KT46OmhlYzc4NTBjZDNjNTg2NWY4kEmmAmNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpP +d25lZFVzZXJJZCxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFf +Y29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2tleV9pZDo6T3duZWREZXZpY2VLZXlJZCxjb3Jl +OjpyZXN1bHQ6OlJlc3VsdDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OlNpZ25hdHVyZSxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OkludmFsaWRTaWduYXR1cmU+Pik+OjpoOWU5MGVkYzM0ZTQy +MzE0YZFJQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +M2IyZmZiNWU5ZGRmYjFkYZJJQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoNDU3YzRkNTU0NjUwM2YxN5NJQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTY5MDMyNjFmODZjOGQ2N5RJQjxhbGxvYzo6dmVjOjpW +ZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWJkZDNhYmMzZjhiYWUxNJVJQjxh +bGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWNkMzlmMDJi +NTM4M2I2NJZJQjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoZjhkZjg1ZTRmYWM5M2UzMJdJWW1hdHJpeF9zZGtfY3J5cHRvOjpiYWNrdXBzOjprZXlzOjpi +YWNrdXA6Ok1lZ29sbVYxQmFja3VwS2V5Ojp0b19iYXNlNjQ6OmhlMTA2NTY3YjNmZGQyZWJmmEm1 +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTw8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjptZW1v +cnlzdG9yZTo6TWVtb3J5U3RvcmUgYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6 +OkNyeXB0b1N0b3JlPjo6c2F2ZV9wZW5kaW5nX2NoYW5nZXM6Ont7Y2xvc3VyZX19Pjo6aDAzN2U3 +YmIyY2MwNGIzMWSZSWdzZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFs +aXplIGZvciBhbGxvYzo6c3RyaW5nOjpTdHJpbmc+OjpzZXJpYWxpemU6OmgwMmYxZTgyNTk3M2Qx +MDAymklIbWF0cml4X3Nka19xcmNvZGU6OnR5cGVzOjpRclZlcmlmaWNhdGlvbkRhdGE6OmZsb3df +aWQ6Omg3MTFhZjkzZjE0MWVjN2Vjm0kuY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoZGNh +MTQyNGI4YWVjZjQ5NpxJP3FyY29kZTo6Y2FudmFzOjptYXNrX2Z1bmN0aW9uczo6Y2hlY2tlcmJv +YXJkOjpoMjFiMzUxMDQxYWQyMzQ4N51JRDxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6Omg1OTkwZDQ3N2Q2YTY3OTkwnklVPGNvcmU6OnN0cjo6ZXJyb3I6 +OlV0ZjhFcnJvciBhcyBjb3JlOjplcnJvcjo6RXJyb3I+OjpkZXNjcmlwdGlvbjo6aDM0NzQ5NmFk +OWZhZWQxZDguMp9JTnRyYWNpbmdfc3Vic2NyaWJlcjo6Zm10Ojpmb3JtYXQ6OkZtdFNwYW5Db25m +aWc6OnRyYWNlX2VudGVyOjpoNzcyMjBiMmMwZDkyNTU0ZqBJTXRyYWNpbmdfc3Vic2NyaWJlcjo6 +Zm10Ojpmb3JtYXQ6OkZtdFNwYW5Db25maWc6OnRyYWNlX2V4aXQ6Omg2ZDNiMmUwMmY1NmJjYWI4 +oUlOdHJhY2luZ19zdWJzY3JpYmVyOjpmbXQ6OmZvcm1hdDo6Rm10U3BhbkNvbmZpZzo6dHJhY2Vf +Y2xvc2U6OmhmZjBiZDgzZjIzNDhiODdjokk7PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6 +d3JpdGVfY2hhcjo6aGYxYTI2Zjc2ZWU1YjUzMzajSTo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3Jp +dGU+Ojp3cml0ZV9zdHI6Omg2MGEyNjE2NDljODIyNzg0pEl/PHRyYWNpbmdfc3Vic2NyaWJlcjo6 +cmVnaXN0cnk6OnNoYXJkZWQ6OlJlZ2lzdHJ5IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6 +U3Vic2NyaWJlcj46OmV4aXQ6Ont7Y2xvc3VyZX19OjpoZjY0NWUyMzYyZjk3N2E3OKVJLmNvcmU6 +OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGQyMDdjYTdhNWMzMWVhMzCmSUZ0cmFjaW5nX3N1YnNj +cmliZXI6OmxheWVyOjpjb250ZXh0OjpDb250ZXh0PFM+OjpuZXc6OmgzMDQ3N2FiNDJlNmZhNmQz +p0kxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoMzkxZGRhMTI3MTRjNGIxZahJKGNv +cmU6OmFueTo6VHlwZUlkOjpvZjo6aDg5ZTRiMjkxOTQyMTNkN2apSShjb3JlOjphbnk6OlR5cGVJ +ZDo6b2Y6OmhhZGE1NTAxNmE2YmY4YWQ4qkkoY29yZTo6YW55OjpUeXBlSWQ6Om9mOjpoZWI5YTdj +ZWEwM2Q0N2I1Y6tJRHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OkNhbGxzaXRlOjpwcml2YXRlX3R5 +cGVfaWQ6OmhhNTA2ZDJjZjE4N2E4OTU3rEkxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lk +OjpoN2YzMTFmOTFjZmJhOGUxYa1JMTxUIGFzIGNvcmU6OmFueTo6QW55Pjo6dHlwZV9pZDo6aGQ3 +NjQ3NmY0MzNlNjQ2YTiuSTJjb3JlOjplcnJvcjo6RXJyb3I6OmRlc2NyaXB0aW9uOjpoYzVhMjg2 +OGRmZjNjZGE4Ma9JOWFsbG9jOjp2ZWM6OlZlYzxULEE+OjppbnRvX2JveGVkX3NsaWNlOjpoMGI4 +Yzg0OThmODY4NTFkZrBJOWFsbG9jOjp2ZWM6OlZlYzxULEE+OjppbnRvX2JveGVkX3NsaWNlOjpo +NmIxNTRkMDc1YmM0NWQwObFJJ2NvcmU6OmFueTo6dHlwZV9uYW1lOjpoYzFiYTE2MzI0ZTI5ZjY4 +NLJJcTxmdXR1cmVzX2NvcmU6OnRhc2s6Ol9faW50ZXJuYWw6OmF0b21pY193YWtlcjo6QXRvbWlj +V2FrZXIgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhhYjg2MDE2Njk1YWUw +ODdks0lTY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpT +ZXNzaW9uUGlja2xlPjo6aGM5NDJkMjJhZGU0NDZhMzW0SWFjb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8dm9kb3plbWFjOjptZWdvbG06Omdyb3VwX3Nlc3Npb246Okdyb3VwU2Vzc2lvblBpY2tsZT46 +OmgyNWMyZDczODE4OTc5YWIwtUlWY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6 +b2xtOjpzZXNzaW9uOjpyYXRjaGV0OjpSYXRjaGV0Pjo6aDEwZjI4ZmUzMWZlZmFmZDC2SUVnZW5l +cmljX2FycmF5OjpmdW5jdGlvbmFsOjpGdW5jdGlvbmFsU2VxdWVuY2U6Om1hcDo6aDhiOWM1NDc2 +N2RkMTBjNjC3SUVnZW5lcmljX2FycmF5OjpmdW5jdGlvbmFsOjpGdW5jdGlvbmFsU2VxdWVuY2U6 +Om1hcDo6aDk1OTNiYTc3MGNhMjhlNmS4STJjb3JlOjplcnJvcjo6RXJyb3I6OmRlc2NyaXB0aW9u +OjpoNzE2NTI4NTI5MmQ4M2QxMLlJLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDEzOWI5 +NzliMmY4MGY2NDi6SS5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6Omg5NWQzZmFlOGU2ODc1 +ODEwu0kuY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoYjdkNWRhY2UyYjNkM2Y0NLxJSTxh +bGxvYzo6Ym94ZWQ6OkJveDxUPiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aDQ1 +NGU4NDM5N2ZjNGQyZTm9SVU8dm9kb3plbWFjOjptZWdvbG06OnJhdGNoZXQ6OlJhdGNoZXQgYXMg +emVyb2l6ZTo6WmVyb2l6ZT46Onplcm9pemU6OmhiMjM5NWI1MTM2NDJjOTkwvkk7dm9kb3plbWFj +OjpzYXM6OkVzdGFibGlzaGVkU2FzOjpnZXRfaGtkZjo6aDFmNjBhYzc3YzgyZjgxOWa/SUY8YWxs +b2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgyZWU2Mjdk +YmMxZDYwMjIwwElkPHZvZG96ZW1hYzo6b2xtOjphY2NvdW50OjpsaWJvbG06OkZhbGxiYWNrS2V5 +c0FycmF5IGFzIHplcm9pemU6Olplcm9pemU+Ojp6ZXJvaXplOjpoMzIxNjI4ZmExZmQyYjA2ZcFJ +MmNvcmU6OmVycm9yOjpFcnJvcjo6ZGVzY3JpcHRpb246Omg4ZjE1YmVkYTRjN2NhYzNlwklLdm9k +b3plbWFjOjpvbG06OmFjY291bnQ6OkFjY291bnQ6OmdlbmVyYXRlX29uZV90aW1lX2tleXM6Omhh +Njk0YmMyMjk4N2I4Mjg2w0ldY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6b2xt +OjpzZXNzaW9uOjptZXNzYWdlX2tleTo6TWVzc2FnZUtleT46OmhiZThjMmZlOWY3YWFlMWU5xEky +Y29yZTo6ZXJyb3I6OkVycm9yOjpkZXNjcmlwdGlvbjo6aDEwM2FjM2JiYmQwODEyZWTFSV48dm9k +b3plbWFjOjpvbG06OnNlc3Npb246OmNoYWluX2tleTo6Q2hhaW5LZXkgYXMgemVyb2l6ZTo6WmVy +b2l6ZT46Onplcm9pemU6OmhiMzMxNDZlYzc5NzBlNmVixkkyY29yZTo6ZXJyb3I6OkVycm9yOjpk +ZXNjcmlwdGlvbjo6aDNjMTEzMGM5ODQ0ZDY0YmLHSS5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVf +aWQ6OmhjY2JiMGJhMmZmZmM1MzlkyElKdm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6RWQyNTUx +OVNlY3JldEtleTo6cHVibGljX2tleTo6aGUzMzNkMjg1ZWQ3OTQyNmPJSUR2b2RvemVtYWM6OnR5 +cGVzOjplZDI1NTE5OjpFZDI1NTE5U2VjcmV0S2V5OjpzaWduOjpoMTY5M2NjNmVlODY4ZWVlYcpJ +NGNvcmU6OmVycm9yOjpFcnJvcjo6ZGVzY3JpcHRpb246OmgzYzExMzBjOTg0NGQ2NGJiLjHLSS5j +b3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmgwODFmMTI4ODFkZWJjOGY0zEkuY29yZTo6ZXJy +b3I6OkVycm9yOjp0eXBlX2lkOjpoMmVhYzRlY2RhMDAzNzM4Ms1JLmNvcmU6OmVycm9yOjpFcnJv +cjo6dHlwZV9pZDo6aGMzMmRmNGIzOWI4NWNlZjjOSS5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVf +aWQ6OmhhOGE0MDZiNTUwMjZlMGFjz0lCPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmhiYjY3MzRkM2UxNDUzM2Zi0ElCPGFsbG9jOjp2ZWM6OlZlYzxULEE+ +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwMWU2NGFmYmJhZDliYzcw0UkyY29yZTo6ZXJy +b3I6OkVycm9yOjpkZXNjcmlwdGlvbjo6aGU0MWQ3YTdmYmYyY2ExMzTSSS5jb3JlOjplcnJvcjo6 +RXJyb3I6OnR5cGVfaWQ6OmhlYThhNDQyNWM3NTYwYjc200lcPGVkMjU1MTlfZGFsZWs6Omhhem1h +dDo6RXhwYW5kZWRTZWNyZXRLZXkgYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDlk +OWI4ZjczNjY2ZjkyYjnUSVk8c3RkOjppbzo6V3JpdGU6OndyaXRlX2ZtdDo6QWRhcHRlcjxUPiBh +cyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoNTkxZGU1MDJjYmE1Mzk2ZNVJUDxhbGxv +Yzo6YWxsb2M6Okdsb2JhbCBhcyBjb3JlOjphbGxvYzo6QWxsb2NhdG9yPjo6YWxsb2NhdGU6Omgy +ZDc4MGU0ZWNjMTY2NTAzLjE51kmAAWFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5v +ZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLFR5 +cGU+Ojp2YWxfYXJlYV9tdXQ6OmgxNjY5ZjcyNWM0MjBkY2E410l8Y29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPChzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudCxzZXJkZTo6X19w +cml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudCk+OjpoZWIxYmQ5OTM0ZDA5ZGY4YthJZ3NlcmRl +OjpzZXI6OmltcGxzOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIGFsbG9jOjpzdHJp +bmc6OlN0cmluZz46OnNlcmlhbGl6ZTo6aGZlYTlkY2M5Y2I2OTlmN2TZSVRzZXJkZTo6c2VyOjpp +bXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciAmVD46OnNlcmlhbGl6ZTo6aGVh +ZGZhYzg2ODU0NjEwZTnaSTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNDY5MjE4 +OGYzYjg1MjdhZttJZ3NlcmRlOjpzZXI6OmltcGxzOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxp +emUgZm9yIGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OnNlcmlhbGl6ZTo6aGIxMTc0Yjc5ZWZmYWFk +N2HcSX5jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8KHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250 +ZW50OjpDb250ZW50LHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50KT46Omhl +YjFiZDk5MzRkMDlkZjhiLjHdSUhhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6OkJUcmVl +U2V0PFQsQT46Omluc2VydDo6aGMxZTZjYjk4NDg2YzA4NTLeSXtjb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8KGFsbG9jOjpzdHJpbmc6OlN0cmluZyxydW1hX2NvbW1vbjo6Y2Fub25pY2FsX2pzb246 +OnZhbHVlOjpDYW5vbmljYWxKc29uVmFsdWUpPjo6aGIzNWVkOTI3MDE3NmQyZTbfSVA8YWxsb2M6 +OmFsbG9jOjpHbG9iYWwgYXMgY29yZTo6YWxsb2M6OkFsbG9jYXRvcj46OmFsbG9jYXRlOjpoMmQ3 +ODBlNGVjYzE2NjUwMy4yMOBJLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGJkMTc4ZWQ1 +M2FhZjRjODXhSUI8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDM4M2ZhYmY1N2U5N2E4MmHiSUI8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aDQ2ZDg1MGRmNTBhYjQ3YTjjSTJjb3JlOjplcnJvcjo6RXJyb3I6OmRl +c2NyaXB0aW9uOjpoYzA3N2NhNjNiZDFkZWNiYuRJLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9p +ZDo6aDk0ZjFkN2UzOWEwNzAxYmPlSS5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6Omg1NTIx +Yjc0NDRlZjE5MmE45kkyY29yZTo6ZXJyb3I6OkVycm9yOjpkZXNjcmlwdGlvbjo6aDAxMDE1OTRh +NzRjN2M4ZTnnSS5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmgwYzE1YzA1OTgxZmM2NzEy +6EkuY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoYTk4YTJlM2UxM2JhMjEyMelJLmNvcmU6 +OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aGIxNWZlNTVmZTQ3NWEyNDLqSS5jb3JlOjplcnJvcjo6 +RXJyb3I6OnR5cGVfaWQ6OmhiY2E1OTZlNGFmMmQ2NmVh60kuY29yZTo6ZXJyb3I6OkVycm9yOjp0 +eXBlX2lkOjpoZGNjODdlNmQ2MGE2ZDI3NOxJRHRyYWNpbmdfY29yZTo6Y2FsbHNpdGU6OkNhbGxz +aXRlOjpwcml2YXRlX3R5cGVfaWQ6Omg3YmM5YWVlNmM2NjQ4NTM57UkwPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmhlOWQ1NmRjZmI4MjBjNmZm7kk6YWxsb2M6OnZlYzo6VmVjPFQsQT46 +OmV4dGVuZF9mcm9tX3NsaWNlOjpoZDE3NGQzNTRhODUyNzE1Zu9JLmNvcmU6OmVycm9yOjpFcnJv +cjo6dHlwZV9pZDo6aGVlZWQ3Y2RmMzgxODliY2bwSS5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVf +aWQ6OmhjMGJmMjdhYzk5OWY0ZjVl8UkuY29yZTo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoMmMy +MGI3YjA0MGM3NGEyNfJJLmNvcmU6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDVhMTljZmZmMThl +Nzg3NzfzSS5jb3JlOjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6Omg2ZjUxYTM4YzA4ZDc1Y2Yx9Eky +Y29yZTo6ZXJyb3I6OkVycm9yOjpkZXNjcmlwdGlvbjo6aDFlMTZiMTI2ZGQwNDcyMmb1SS5jb3Jl +OjplcnJvcjo6RXJyb3I6OnR5cGVfaWQ6OmgwN2NiZTM4NTM0NzFkOGY59kkuY29yZTo6ZXJyb3I6 +OkVycm9yOjp0eXBlX2lkOjpoZDFjOGNjN2U5N2I1NjZhNvdJLmNvcmU6OmVycm9yOjpFcnJvcjo6 +dHlwZV9pZDo6aGFjOWQwMjlhYzZjOGJhY2L4SU5zdGQ6OmlvOjppbXBsczo6PGltcGwgc3RkOjpp +bzo6V3JpdGUgZm9yICZtdXQgVz46OndyaXRlX2FsbDo6aDE3M2EwMzA2MDg3YTU0Nzj5STlhbGxv +Yzo6dmVjOjpWZWM8VCxBPjo6aW50b19ib3hlZF9zbGljZTo6aDU0YzhiMGNhNjJhNGI4NmX6SWA8 +c2VyZGVfanNvbjo6dmFsdWU6OnNlcjo6U2VyaWFsaXplciBhcyBzZXJkZTo6c2VyOjpTZXJpYWxp +emVyPjo6c2VyaWFsaXplX21hcDo6aDM1ZTBmMjZjOGU3ZTJmZmb7SS5jb3JlOjplcnJvcjo6RXJy +b3I6OnR5cGVfaWQ6OmhiMzZkNzg5MDIzMTY4YzA0/Ek1PCZzdHIgYXMgc2VyZGU6OmRlOjpFeHBl +Y3RlZD46OmZtdDo6aDYxNWRhOTJhOTJiYzZlNTX9STdieXRlczo6Ynl0ZXM6OnByb21vdGFibGVf +ZXZlbl90b192ZWM6OmhlZGUyYTJhMjI1ZGY2OWI5/kk2Ynl0ZXM6OmJ5dGVzOjpwcm9tb3RhYmxl +X29kZF90b192ZWM6Omg3MjI0OWZlMWZlNGMzMzI3/0ktYnl0ZXM6OmJ5dGVzOjpzaGFyZWRfY2xv +bmU6OmhmODNiOGEzMzVhYThiNDM4gEouYnl0ZXM6OmJ5dGVzOjpzaGFyZWRfdG9fdmVjOjpoNzIx +YjNkZmNhYmVjNGQzZYFKXTxqc19zeXM6Okl0ZXJhdG9yIGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6 +Y29sbGVjdDo6SW50b0l0ZXJhdG9yPjo6aW50b19pdGVyOjpoMDY4MTc4NGFjNDk3YjgyYoJKMWpz +X3N5czo6VWludDhDbGFtcGVkQXJyYXk6OnNldDo6aGMzYmM3MjUwYjIyYjAyN2WDSjlhbGxvYzo6 +dmVjOjpWZWM8VCxBPjo6aW50b19ib3hlZF9zbGljZTo6aDdiYjJhMzU2MDczYzFiYjKESjlhbGxv +Yzo6dmVjOjpWZWM8VCxBPjo6aW50b19ib3hlZF9zbGljZTo6aDgyMjRkZWEwOTdmNGEwYTWFShRf +X3diaW5kZ2VuX2V4bl9zdG9yZYZKMTxUIGFzIGNvcmU6OmFueTo6QW55Pjo6dHlwZV9pZDo6aGM0 +MjJjYTk1NzUxZDdlNDOHSjE8VCBhcyBjb3JlOjphbnk6OkFueT46OnR5cGVfaWQ6OmhkNTY4N2Rl +OTEyNWI5NTdliEoxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoZWQ4OTZmZWI1NWY2 +Yjg5NIlKbDxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6U3RhdGljU3RyUGF5 +bG9hZCBhcyBjb3JlOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6Z2V0OjpoMGZjMzc3NGNlNzQ2Y2M4 +YopKMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg2ZGY4YjljY2ZmYTY4ZDYyi0pJ +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PFt1ODsgMTI4XT4+Ojpo +NzdjYjMyZTk4OGIxOWM4ZIxKNnN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8VD46OndyaXRlOjpo +ZGUyZThlYmNlNDg5NDYzY41KNXN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8VD46OnJlYWQ6Omhh +NDEyODFkZjk0MmUwNWZkjkorY29yZTo6Y21wOjpQYXJ0aWFsRXE6Om5lOjpoYWYwZGJiNDEzNDI4 +N2RkOY9KSzxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRl +X3N0cjo6aDZkNzNiNzdmMjY0MDRmMDguMpBKO3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjpl +bmRfb2JqZWN0OjpoYmRhNDdmMzA1MTg2NDk5Yi4xkUo5c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0 +ZXI6OndyaXRlX251bGw6Omg2ZjZhNzQ4Y2VkNjdiOGU4kkpMPGNvcmU6OnBpbjo6UGluPFA+IGFz +IGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsOjpoZDY4MjNmMDJhZmVjYzNhOZNK +K2NvcmU6OmNtcDo6UGFydGlhbEVxOjpuZTo6aDIxNmUwMGZmMTI1NjJjNziUSkw8Y29yZTo6cGlu +OjpQaW48UD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6OmgwNmJhMDU1 +MzMxNjYxNzJhlUo7c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmVuZF9vYmplY3Q6OmhiZGE0 +N2YzMDUxODY0OTliLjKWSjtzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6d3JpdGVfbnVsbDo6 +aDZmNmE3NDhjZWQ2N2I4ZTguMZdKaGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94 +ZWQ6OkJveDxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD4+OjpoN2U1OWZm +ZmMwZmRmNTkzOS4ymEo2d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlOjppc191bmRlZmluZWQ6OmhiYjkz +MzMyYzE5ZDEwNGRmmUozd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlOjppc19vYmplY3Q6OmgwOGM4ODkx +NTNkMTA0MGQ0mkorY29yZTo6Y21wOjpQYXJ0aWFsRXE6Om5lOjpoNmVlM2JhZjY0YWE1ZTgxN5tK +T2NvcmU6OmNtcDo6aW1wbHM6OjxpbXBsIGNvcmU6OmNtcDo6UGFydGlhbEVxPCZCPiBmb3IgJkE+ +OjpuZTo6aGIzMjMyZWYyMmQ3MjFhOWacSjtzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5k +X29iamVjdDo6aGJkYTQ3ZjMwNTE4NjQ5OWIuM51KO3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVy +Ojp3cml0ZV9udWxsOjpoNmY2YTc0OGNlZDY3YjhlOC4ynkpBc2VyZGVfanNvbjo6c2VyOjpGb3Jt +YXR0ZXI6OmJlZ2luX29iamVjdF92YWx1ZTo6aGEwZDQ4ZjhmYjM5OTc2YWKfSjhzZXJkZV9qc29u +OjpzZXI6OkZvcm1hdHRlcjo6ZW5kX2FycmF5OjpoNzAyMTFlMjJjOWFhNzE3ZqBKMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjAyNTIwOWExZWVlZTQxMaFKezx0cmFjaW5nX3N1YnNj +cmliZXI6OmxheWVyOjpsYXllcmVkOjpMYXllcmVkPEwsUz4gYXMgdHJhY2luZ19jb3JlOjpzdWJz +Y3JpYmVyOjpTdWJzY3JpYmVyPjo6Y3VycmVudF9zcGFuOjpoMGQyZGFiZWViZDUwOGM0ZKJKMDwm +VCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDhiZmE4NTUzNmU5OThkMKNKMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTFmOWE3MjgyMmI4NTcwNqRKO3NlcmRlX2pzb246OnNl +cjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0OjpoYmRhNDdmMzA1MTg2NDk5Yi40pUpDc2VyZGVfanNv +bjo6c2VyOjpGb3JtYXR0ZXI6OmJlZ2luX29iamVjdF92YWx1ZTo6aGEwZDQ4ZjhmYjM5OTc2YWIu +MaZKMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTNkOTY3MWVjNDQzYWU3ZadKMWJh +c2U2NDo6ZW5naW5lOjpFbmdpbmU6OmVuY29kZTo6aGM4NTI2MjRiMGY5NzU5YzOoSqoBbWF0cml4 +X3Nka19jcnlwdG9fd2FzbTo6ZW5jcnlwdGlvbjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxt +YXRyaXhfc2RrX2NyeXB0b193YXNtOjplbmNyeXB0aW9uOjpFbmNyeXB0aW9uQWxnb3JpdGhtPiBm +b3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDFjMzhkOGFkYTY3YTgzNjOpSmk8dG9r +aW86OnN5bmM6OnJ3bG9jazo6d3JpdGVfZ3VhcmQ6OlJ3TG9ja1dyaXRlR3VhcmQ8VD4gYXMgY29y +ZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDBiNWQyODc3YjkxYzk0MzeqSjA8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgyZjYwYzM4MTNlZDFmMWSrSkhhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PFQsQT46Omluc2VydDo6aGI2ODE0NmM4ODdmNTcyZTCs +SjtzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6aGJkYTQ3ZjMwNTE4NjQ5 +OWIuNa1KRmNvcmU6OmNtcDo6aW1wbHM6OjxpbXBsIGNvcmU6OmNtcDo6T3JkIGZvciAmQT46OmNt +cDo6aDY3NDljNWE1M2ZlZjgxMGWuSjdjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk11dDo6Y2FsbF9t +dXQ6OmhjMWMyNDY4MjI2ZjUwNmY1r0pMPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpm +bXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoNmQ3M2I3N2YyNjQwNGYwOC4xMbBKNnN0ZDo6c3luYzo6 +cndsb2NrOjpSd0xvY2s8VD46OndyaXRlOjpoMzkyZWMxNDVlNjJkYzg2Y7FKOXNlcmRlX2pzb246 +OnNlcjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0OjpoMGVjZTU0Yzg5OWMyZmQyNbJKO3NlcmRlX2pz +b246OnNlcjo6Rm9ybWF0dGVyOjpiZWdpbl9vYmplY3Q6OmhlNDhkZTJjYjUxOWI3MmQ2s0pBc2Vy +ZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmJlZ2luX29iamVjdF92YWx1ZTo6aDFjNzVkYjI4NjVl +ZGVlYji0SjtzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6aDBlY2U1NGM4 +OTljMmZkMjUuMbVKQ3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjpiZWdpbl9vYmplY3RfdmFs +dWU6OmgxYzc1ZGIyODY1ZWRlZWI4LjG2SjhzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5k +X2FycmF5OjpoZGI1MGQ2YmRlYzA3MTE5YrdKZTwmbXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFs +aXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfdHVwbGU6Omg0 +MjYwYTg3MzA5MTA2MGQ3uEo2d2FzbV9iaW5kZ2VuOjpjYXN0OjpKc0Nhc3Q6OmR5bl9yZWY6Omgz +M2UwMWJlM2I2YTEyM2Y2uUoxYmFzZTY0OjplbmdpbmU6OkVuZ2luZTo6ZW5jb2RlOjpoYjkyY2Rl +ZmRkMGE1NWRiOLpKM2Jhc2U2NDo6ZW5naW5lOjpFbmdpbmU6OmVuY29kZTo6aGI5MmNkZWZkZDBh +NTVkYjguMbtKPXdhc21fYmluZGdlbjo6VW53cmFwVGhyb3dFeHQ6OnVud3JhcF90aHJvdzo6aGRj +NjI3MTg2YmEwYzI4Nzi8SjF3YXNtX2JpbmRnZW46OkpzVmFsdWU6OmlzX251bGw6OmhkZDNkMTE3 +ZTEyNmU5NzQ3vUo1c2VyZGVfd2FzbV9iaW5kZ2VuOjpPYmplY3RFeHQ6OnNldDo6aGZiMWY5YTVj +NzMxZjg0Mjm+Sj88Jm11dCBBIGFzIHNlcmRlOjpkZTo6TWFwQWNjZXNzPjo6bmV4dF92YWx1ZTo6 +aDI0YjJjOGI0MmEyNTA5OGa/Si9zZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2k4OjpoMDgwZDhm +MWRhMGE0OGZlMMBKL3NlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfaTg6OmgzNjc5MTEwMTgxYmUy +MTA1wUovc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9pODo6aDM5MzA5MDI0MmFkMjQ1ZjXCSi9z +ZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2k4OjpoNjg3OTdiNGFhNzA3YjdkYsNKL3NlcmRlOjpk +ZTo6VmlzaXRvcjo6dmlzaXRfaTg6Omg2OWI1ZmVmMWQ0ZDAxZDE4xEovc2VyZGU6OmRlOjpWaXNp +dG9yOjp2aXNpdF9pODo6aDcxMGE1MmUxNzAyMmNkZDXFSi9zZXJkZTo6ZGU6OlZpc2l0b3I6OnZp +c2l0X2k4OjpoYzVkNmNlZjZkMjA0M2FlNcZKL3NlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfaTg6 +OmhmYWNjMDczNmFhMzM2MmU1x0ovc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9pODo6aGE1ZDUz +ZWY5NjZhNjE1NGTISi9zZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2k4OjpoYzYwMTUwN2E4Mjhj +NjlkMclKL3NlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfaTg6OmhlMmI2NjBiNzM5NWVlOTAyykpL +PGFsbG9jOjp2ZWM6OlZlYzx1OD4gYXMgYWVhZDo6QnVmZmVyPjo6ZXh0ZW5kX2Zyb21fc2xpY2U6 +Omg2ZWEyZTNlZDNmZDlhYzBhy0qBATxpbmRleGVkX2RiX2Z1dHVyZXM6OnJlcXVlc3Q6OnZvaWRf +cmVxdWVzdDo6Vm9pZFJlcXVlc3QgYXMgY29yZTo6ZnV0dXJlOjppbnRvX2Z1dHVyZTo6SW50b0Z1 +dHVyZT46OmludG9fZnV0dXJlOjpoMTU0ZjM1NjU3ZDYyNWQ3YcxKRmNvcmU6OmNtcDo6aW1wbHM6 +OjxpbXBsIGNvcmU6OmNtcDo6T3JkIGZvciAmQT46OmNtcDo6aGZhYTBkZDIzNDU0MTgxMmPNSjdj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk11dDo6Y2FsbF9tdXQ6OmhhY2E3ZWYxZTRkZjYxMmY2zko5 +c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmVuZF9vYmplY3Q6OmgwNmJhYjRlZjk5NDQ3NGVk +z0o5c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OndyaXRlX251bGw6Omg2OGZkNTcyYmY4ODM5 +MWM20EpBc2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmJlZ2luX29iamVjdF92YWx1ZTo6aGY0 +NDc1ZmI3OGUwYjlmYzXRSjhzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX2FycmF5Ojpo +MWE5M2U5YWQ1NzliNjU2ONJKbzxzZXJkZTo6X19wcml2YXRlOjpzZXI6OkZsYXRNYXBTZXJpYWxp +emVNYXA8TT4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplTWFwPjo6c2VyaWFsaXplX2VudHJ5Ojpo +ZmNjZjFhM2IyNjJjMWEzZtNKXG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6 +OlJlYWRPbmx5RGV2aWNlOjppc19sb2NhbGx5X3RydXN0ZWQ6OmhhOTRkY2QwMmQ3ZTM2OGM11Eou +c2VyZGVfanNvbjo6dmFsdWU6OnRvX3ZhbHVlOjpoYjcyMDZmOWYyMzQ2ODVkM9VKUTxoYXNoYnJv +d246OnJhdzo6UmF3VGFibGU8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpo +MTRmNDc5ZjRkNDAwNWYwYdZKUTxoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPiBhcyBjb3Jl +OjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoY2I1NTVhNzA1NjA0YjE0ZddKRm1hdHJpeF9zZGtf +Y3J5cHRvOjpiYWNrdXBzOjpTaWduYXR1cmVTdGF0ZTo6dHJ1c3RlZDo6aDZkZmNiMDczZjViNmM1 +OGXYSjNzdGQ6OnN5bmM6Om11dGV4OjpNdXRleDxUPjo6bG9jazo6aDdmNjBiMWFlZmE3NjE4MDnZ +SkZtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpzaWduX2pzb246Omg0 +N2VkZDU0YzM5MTJiY2M42kpIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJv +cDo6RHJvcD46OmRyb3A6OmgxZmEzN2Q1YjdjMWExMjJl20pIPGFsbG9jOjp2ZWM6OlZlYzxULEE+ +IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg0OWRlMzhlOGNjNjViNjQx3EpIPGFs +bG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg5MDll +Mzg5MjAzNWEzNjNh3UpIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6 +RHJvcD46OmRyb3A6OmhlZDhmOThiMDBjYzRiM2Q13kpLbWF0cml4X3Nka19jcnlwdG86OnN0b3Jl +OjpCYWNrdXBEZWNyeXB0aW9uS2V5Ojp0b19iYXNlNjQ6OmhkYzY5ZTkzY2U3MjZkYjdl30pabWF0 +cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6ZXZlbnRfZW51bXM6OlN0YXJ0Q29udGVudDo6 +ZnJvbV9kZXZpY2U6OmhjYWE0NTAzYzdjMDY4NDRm4EpWbWF0cml4X3Nka19jcnlwdG86OnZlcmlm +aWNhdGlvbjo6ZXZlbnRfZW51bXM6OlN0YXJ0Q29udGVudDo6Zmxvd19pZDo6aDY3ZTJjMDQxNzIz +OTlhZWThSkFxcmNvZGU6OmNhbnZhczo6bWFza19mdW5jdGlvbnM6OnZlcnRpY2FsX2xpbmVzOjpo +MGYyMDA3YWZmYWM3NzA2NeJKNXRyYWNpbmdfY29yZTo6ZXZlbnQ6OkV2ZW50OjpyZWNvcmQ6Omhj +ODZmY2I2MmZlMmNhMjZi40o+d2FzbV9iaW5kZ2VuX2Z1dHVyZXM6OnF1ZXVlOjpRVUVVRTo6X19n +ZXRpdDo6aGEyOWVkMTQzNTViNTQxOTbkSkw8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6 +OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6Omg2ZDczYjc3ZjI2NDA0ZjA4LjIy5UpDdHJhY2luZ19z +dWJzY3JpYmVyOjpyZWdpc3RyeTo6c2hhcmRlZDo6aWRfdG9faWR4OjpoZGMwYzNmNDAxYWJmMzgx +NeZKR3RyYWNpbmdfc3Vic2NyaWJlcjo6cmVnaXN0cnk6OnNoYXJkZWQ6OlJlZ2lzdHJ5OjpnZXQ6 +OmgyMzg5ODRiY2IwODdhZWU250pTdHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6ZXh0ZW5z +aW9uczo6RXh0ZW5zaW9uc011dDo6Z2V0X211dDo6aDI1N2I5OGY4YTdmNzRhOGXoSlN0cmFjaW5n +X3N1YnNjcmliZXI6OnJlZ2lzdHJ5OjpleHRlbnNpb25zOjpFeHRlbnNpb25zTXV0OjpnZXRfbXV0 +OjpoNGQ0YmViY2I3MGMxZmRjZOlKNWNvcmU6OnN0cjo6PGltcGwgc3RyPjo6c3RhcnRzX3dpdGg6 +Omg2MjA3ZWE0YTI2OTcyNWQ46kpoY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hl +ZDo6Qm94PHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50Pj46OmhmY2U0MTM3 +ZWQ5NjE1NWRjLjPrSjlzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6aDNi +ZTY4MWY4MmM1M2RhNzbsSjtzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6YmVnaW5fb2JqZWN0 +OjpoYzZhY2I2M2U2ZWY3YzAxMO1KQXNlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjpiZWdpbl9v +YmplY3RfdmFsdWU6OmhhOTg4MTgxYWFiMDNkZmNl7ko2dm9kb3plbWFjOjp1dGlsaXRpZXM6OmJh +c2U2NF9kZWNvZGU6Omg0NjBiYjdiMzZkYmQ2OGIz70o2dm9kb3plbWFjOjp1dGlsaXRpZXM6OmJh +c2U2NF9lbmNvZGU6OmgxMTk0MmFhMGQ1NDZiMzI28Eo2dm9kb3plbWFjOjp1dGlsaXRpZXM6OmJh +c2U2NF9lbmNvZGU6Omg0YjgwNjhiOGExYWVmZGIz8UphPGJsb2NrX2J1ZmZlcjo6QmxvY2tCdWZm +ZXI8QmxvY2tTaXplLEtpbmQ+IGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0Ojpo +OWVkNzVjYzE4NmVkMzgyM/JKOXNlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfc3RyaW5n +OjpoYWRhYjFlMWI3MTE5OWYzMPNKO3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfb2Jq +ZWN0OjpoM2JlNjgxZjgyYzUzZGE3Ni4x9Eo6c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmJl +Z2luX2FycmF5OjpoMDc4MDVhNWM5YWMxYWZmMvVKOHNlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVy +OjplbmRfYXJyYXk6OmgyYjliYjlmNjI1YjdlNGY09kpDc2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0 +ZXI6OmJlZ2luX29iamVjdF92YWx1ZTo6aGE5ODgxODFhYWIwM2RmY2UuMfdKTzxhcnJheXZlYzo6 +YXJyYXl2ZWM6OkFycmF5VmVjPFQsXz4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDcyYTYw +YWU1Zjk3YWZiOGT4Sk88YXJyYXl2ZWM6OmFycmF5dmVjOjpBcnJheVZlYzxULF8+IGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6Omg3ODhhZjViMDlmZWE5M2Q0+UpIPGFsbG9jOjp2ZWM6OlZlYzxU +LEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg5ZjkzM2I2YjgxMTU0ZGZl+kpI +PGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg4 +MDI1YmRmOTgwMmI2Njc0+0pIPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJv +cDo6RHJvcD46OmRyb3A6OmgyNDc0NTNjMjRkNzFkMmE3/EpIPGFsbG9jOjp2ZWM6OlZlYzxULEE+ +IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omg5MTg4OTZlY2Q1MzY1MTE5/UpIPGFs +bG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmhjMDYy +ZTZlNjMwNzIyYzRl/kpPdm9kb3plbWFjOjpvbG06Om1lc3NhZ2VzOjpwcmVfa2V5OjpQcmVLZXlN +ZXNzYWdlOjpzZXNzaW9uX2lkOjpoMzgxMTYxNmIwNjc2OTQ0Nf9KOXZvZG96ZW1hYzo6b2xtOjph +Y2NvdW50OjpBY2NvdW50OjpzaWduOjpoNTg2OTJhOGM3NDU0ODJiNIBLVHZvZG96ZW1hYzo6dHlw +ZXM6OmN1cnZlMjU1MTk6OkN1cnZlMjU1MTlTZWNyZXRLZXk6OmRpZmZpZV9oZWxsbWFuOjpoOGY3 +MTA5ZDdkZjNhMzcyOIFLO3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0Ojpo +M2JlNjgxZjgyYzUzZGE3Ni4ygktIPGFsbG9jOjpib3hlZDo6Qm94PFQsQT4gYXMgY29yZTo6Y2xv +bmU6OkNsb25lPjo6Y2xvbmU6Omg0NWYxNmFiZGUzMTAzYzMxg0s/dm9kb3plbWFjOjpvbG06OnNl +c3Npb246OlNlc3Npb246OnNlc3Npb25faWQ6OmhjNmQwN2VjN2ZkNjE4ZWEwhEszYXJyYXl2ZWM6 +OmFycmF5dmVjOjpleHRlbmRfcGFuaWM6Omg4MjY2M2Y3OTU0ZWYyNDcwhUtuPGdlbmVyaWNfYXJy +YXk6OkdlbmVyaWNBcnJheTxULE4+IGFzIGdlbmVyaWNfYXJyYXk6OnNlcXVlbmNlOjpHZW5lcmlj +U2VxdWVuY2U8VD4+OjpnZW5lcmF0ZTo6aDc5NjZkOTZmNWVmY2FjNTCGS248Z2VuZXJpY19hcnJh +eTo6R2VuZXJpY0FycmF5PFQsTj4gYXMgZ2VuZXJpY19hcnJheTo6c2VxdWVuY2U6OkdlbmVyaWNT +ZXF1ZW5jZTxUPj46OmdlbmVyYXRlOjpoZWJkYjllOTFjNjM5YzFmModLSjxUIGFzIGNvcmU6OmFy +cmF5OjplcXVhbGl0eTo6U3BlY0FycmF5RXE8VSxfPj46OnNwZWNfZXE6OmgxNmYyOWUzMzU4OTYx +ZGQwiEthPGJsb2NrX2J1ZmZlcjo6QmxvY2tCdWZmZXI8QmxvY2tTaXplLEtpbmQ+IGFzIGNvcmU6 +OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoZTkzOTJkYzVlNWM0MjMxMYlLT2NvcmU6Oml0 +ZXI6OmFkYXB0ZXJzOjp6aXA6OlRydXN0ZWRSYW5kb21BY2Nlc3NOb0NvZXJjZTo6c2l6ZTo6aGE2 +ZDNjNTRmYjkzNTVmN2KKS2hjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpC +b3g8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRlbnQ+Pjo6aGNkNTUyOGNjYWM1 +MjhlNTIuNYtLcjxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6VGFnT3JDb250ZW50Vmlz +aXRvciBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplU2VlZD46OmRlc2VyaWFsaXplOjpoYWZhMTdh +YTI3MzYyMWNiN4xLO3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0OjpoYzNi +ZTJiNzhlOGFlNjc2Ni4xjUs4c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmVuZF9hcnJheTo6 +aDFiYmI2NGQ0ZmRmOWVmYjaOS1Fjb3JlOjpzbGljZTo6Y21wOjo8aW1wbCBjb3JlOjpjbXA6OlBh +cnRpYWxFcTxbQl0+IGZvciBbQV0+OjplcTo6aDM2MDkyMGIyN2QxNThhYmWPSz5yYW5kOjpybmdz +Ojp0aHJlYWQ6OlRIUkVBRF9STkdfS0VZOjpfX2dldGl0OjpoNjYzMjFiNTY5ZGNkNTBlZJBLNmdl +dHJhbmRvbTo6aW1wOjpSTkdfU09VUkNFOjpfX2dldGl0OjpoNjk1NDBlYzU3YjJjN2IzOJFLOXNl +cmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjp3cml0ZV9udWxsOjpoMzA0NThlNmU5ZWRiNzg5N5JL +OXNlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0OjpoYjE1YmVkNGQ3MzkyNzA2 +NZNLOHNlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfYXJyYXk6OmgwMGVkYTYzNjBjMzc0 +ZTlllEs7c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OndyaXRlX251bGw6OmgzMDQ1OGU2ZTll +ZGI3ODk3LjGVSztzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6aGIxNWJl +ZDRkNzM5MjcwNjUuMZZLMWJ5dGVzOjpieXRlczo6c2hhcmVkX2lzX3VuaXF1ZTo6aDY1NjIyN2I0 +YTZiNmIzMDOXSyVqc19zeXM6OkFycmF5OjpzZXQ6OmgxNDJlOGQ3NGM3ZGIyZDBjmEsqanNfc3lz +OjpBcnJheTo6aXNfYXJyYXk6OmhhNTViNzk4YzMxM2RmNzVjmUsmanNfc3lzOjpBcnJheTo6cHVz +aDo6aDBlZTE3MjUxNDY0OGExMDmaS1tqc19zeXM6Ol86OjxpbXBsIHdhc21fYmluZGdlbjo6Y2Fz +dDo6SnNDYXN0IGZvciBqc19zeXM6Ok1hcD46Omluc3RhbmNlb2Y6OmhkMmI3MzVhZGExMzM2MjM1 +m0syanNfc3lzOjpOdW1iZXI6OmlzX3NhZmVfaW50ZWdlcjo6aGZiNmM0M2JlY2NjOWJkYzScSyNq +c19zeXM6OlNldDo6YWRkOjpoOTc3ODIwMjY3MTFiM2E0ZZ1LX2pzX3N5czo6Xzo6PGltcGwgd2Fz +bV9iaW5kZ2VuOjpjYXN0OjpKc0Nhc3QgZm9yIGpzX3N5czo6UHJvbWlzZT46Omluc3RhbmNlb2Y6 +OmgwODNkNjlkZDg1MGJiODI0nktMPGFsbG9jOjpzdHJpbmc6OkZyb21VdGY4RXJyb3IgYXMgY29y +ZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNDMxYjNjZjlkYzYxMmY4N59LOWNvcmU6Om9wczo6ZnVu +Y3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoN2QyODcyNDg3YWM2MzU0MaBLTmNvcmU6OmZtdDo6 +bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgdTMyPjo6Zm10OjpoZDgyMTI2 +NTljMmE5NGFhNaFLTWNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxh +eSBmb3IgdTg+OjpmbXQ6OmhlNTZjOGNiZTc2OTVhNDhloktOY29yZTo6Zm10OjpudW06OmltcDo6 +PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciB1MTY+OjpmbXQ6OmhhYTdkYTk4MmU3MmVhN2Yz +o0suY29yZTo6b3B0aW9uOjp1bndyYXBfZmFpbGVkOjpoZGI3MmNjNzc4ZDhkNmU0OaRLTmNvcmU6 +OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgdTY0Pjo6Zm10Ojpo +ZWYyNzE3Njk3ZDczYjU3NKVLMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGFmMzIz +NDU5MmIzNDYwY6ZLH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXKnS0Bjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPHU4Pj46OmhlNmEwM2E4MTQ5NmEzYjljqEt1 +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0 +bzo6b2xtOjpncm91cF9zZXNzaW9uczo6RXhwb3J0ZWRSb29tS2V5Pj46OmhhMmU4NGNlNDdkYTA4 +OWJmqUuAAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8cnVtYV9jb21t +b246OnNlcmRlOjpyYXc6OlJhdzxydW1hX2V2ZW50czo6ZW51bXM6OkFueVRvRGV2aWNlRXZlbnQ+ +Pj46OmhiYzkxODlmOWQwZTk0OTFlqktwY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2 +ZWM6OlZlYzxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OlZlcmlmaWNhdGlvbk1ldGhv +ZD4+OjpoNmYwYjkyZTU1ODc3NGRkNKtLd2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6 +dmVjOjpWZWM8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpTaG9ydEF1dGhlbnRpY2F0 +aW9uU3RyaW5nPj46OmgxYzcyMzQzMDMzNzA2ZjQ3rEujAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFj +ZTxhbGxvYzo6dmVjOjpWZWM8Y29yZTo6b3B0aW9uOjpPcHRpb248KHNlcmRlOjpfX3ByaXZhdGU6 +OmRlOjpjb250ZW50OjpDb250ZW50LHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250 +ZW50KT4+Pjo6aDY2NzY3NzU1YWUyZjVjOGStS1Njb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxs +b2M6OnZlYzo6VmVjPGFsbG9jOjpzdHJpbmc6OlN0cmluZz4+OjpoYWNiNTZmYTE3YmRlNjRlZq5L +YmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9rZXlz +OjpFeHBvcnRlZFNlc3Npb25LZXk+OjpoNjgxYTMwNjhiZTVlOWM2MS41r0tmY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxydW1hX2V2ZW50czo6Y2FsbDo6Y2FuZGlkYXRl +czo6Q2FuZGlkYXRlPj46OmgwM2MwMGZjYmJkYmQwMmY0sEtzY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2aWNl +OjpSZWFkT25seURldmljZT4+OjpoYTBlYjlkNTgzYmZjZDZjMbFLVmNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OlN0b3JlQ2FjaGVHdWFyZD46OmhiYzJj +NzVkNjQwYzk2OWFmsktqY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxt +YXRyaXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6Ok91dGdvaW5nUmVxdWVzdD4+OjpoYjFmOTg2MjNk +MjkzMTYwNbNLbGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8cnVtYV9j +b21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZD4+OjpoYTYzMTAxOGQ5NjAx +M2VlZrRLcGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nk +a19jcnlwdG86OnR5cGVzOjpFdmVudEVuY3J5cHRpb25BbGdvcml0aG0+Pjo6aGYyYWMyNTc2ODNj +OTgzZDC1S3Zjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPG1hdHJpeF9z +ZGtfY3J5cHRvOjpyZXF1ZXN0czo6T3V0Z29pbmdWZXJpZmljYXRpb25SZXF1ZXN0Pj46OmhkOWQx +MzYwODk4Mzc1OWZktktpY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxt +YXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBSZXF1ZXN0Pj46Omg2Nzc2ZGRlMWRj +YTAxNTk2t0tmY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxydW1hX2V2 +ZW50czo6c2VjcmV0OjpyZXF1ZXN0OjpTZWNyZXROYW1lPj46Omg1Mjc3NGJhOWFkMmVjYjU4uEtm +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0 +bzo6b2xtOjpzZXNzaW9uOjpTZXNzaW9uPj46Omg4ODBhZjhiZGU0MWRkOTY1uUuQAWNvcmU6OnB0 +cjo6ZHJvcF9pbl9wbGFjZTx0b2tpbzo6c3luYzo6cndsb2NrOjpvd25lZF93cml0ZV9ndWFyZDo6 +T3duZWRSd0xvY2tXcml0ZUd1YXJkPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmVDYWNo +ZT4+OjpoMDI3MzIzYzI1OGMwMzM0Y7pLY2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6 +dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpSb29tS2V5SW5mbz4+OjpoMzQxYTlh +ODc2NTM2NzIyNbtLggFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPG1h +dHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJbmJvdW5kR3Jv +dXBTZXNzaW9uPj46Omg2MjBkMDA4MjY3N2I3YTk1vEt5Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6dXNlcjo6UmVh +ZE9ubHlVc2VySWRlbnRpdGllcz4+OjpoMzgzYTVhZDJmYjc2MzU1Y71L6wNjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8dHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPG1hdHJpeF9zZGtf +Y3J5cHRvOjpzZXNzaW9uX21hbmFnZXI6Omdyb3VwX3Nlc3Npb25zOjpHcm91cFNlc3Npb25NYW5h +Z2VyOjpzaGFyZV9yb29tX2tleTxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8Y29yZTo6 +c2xpY2U6Oml0ZXI6Okl0ZXI8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25l +ZFVzZXJJZD4sPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQg +YXMgY29yZTo6Y29udmVydDo6QXNSZWY8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lk +OjpVc2VySWQ+Pjo6YXNfcmVmPixtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9u +czo6b3V0Ym91bmQ6OkVuY3J5cHRpb25TZXR0aW5ncz46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9 +fT4+OjpoZmI0OWZlODQ0MzhlMDVhZb5LbWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6 +dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6T2xtTWVzc2FnZUhhc2g+ +Pjo6aGEwMGEwMTBhZjgwNmFlMWG/S4QBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2 +ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6b3V0Ym91bmQ6 +Ok91dGJvdW5kR3JvdXBTZXNzaW9uPj46Omg5NTY2ZTdiMDMyNDE3OTM5wEtrY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5n +OjpHb3NzaXBwZWRTZWNyZXQ+Pjo6aDU5ODBiNmEwNzA5NWYxMTHBS7IDY29yZTo6cHRyOjpkcm9w +X2luX3BsYWNlPHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxtYXRyaXhfc2RrX2Ny +eXB0bzo6c2Vzc2lvbl9tYW5hZ2VyOjpncm91cF9zZXNzaW9uczo6R3JvdXBTZXNzaW9uTWFuYWdl +cjo6Y29sbGVjdF9zZXNzaW9uX3JlY2lwaWVudHM8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6 +TWFwPGNvcmU6OnNsaWNlOjppdGVyOjpJdGVyPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNl +cl9pZDo6T3duZWRVc2VySWQ+LDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnVzZXJfaWQ6Ok93 +bmVkVXNlcklkIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHJ1bWFfY29tbW9uOjppZGVudGlmaWVy +czo6dXNlcl9pZDo6VXNlcklkPj46OmFzX3JlZj4+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+ +Pjo6aGM0YjVlM2YwNDNjOGE4OTbCS7cBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2 +ZWM6OlZlYzwobWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlE +ZXZpY2UsbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxk +OjpXaXRoaGVsZENvZGUpPj46Omg1ZGQ5OTQ5NzBhYzYzN2Y2w0t8Y29yZTo6cHRyOjpkcm9wX2lu +X3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxhbGxvYzo6c3luYzo6QXJjPG1hdHJpeF9zZGtfY3J5cHRv +OjpyZXF1ZXN0czo6VG9EZXZpY2VSZXF1ZXN0Pj4+OjpoMGMwZDBiMzRjMjNiM2QyN8RLWGNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2RvemVtYWM6Om1lZ29sbTo6c2Vzc2lvbl9rZXlzOjpTZXNz +aW9uS2V5Pjo6aDk5NDhmNDhiZWM2ZDhjN2HFS6IBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRy +YWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGlu +ZTo6T2xtTWFjaGluZTo6Z2V0X3VzZXJfZGV2aWNlczo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19 +Pj46OmgwZjQ0ZjE2NDU3ZmUzMjU5xkvkAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5n +OjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlv +bjo6bWFjaGluZTo6VmVyaWZpY2F0aW9uTWFjaGluZTo6cmVjZWl2ZV9hbnlfZXZlbnQ8JnJ1bWFf +ZXZlbnRzOjplbnVtczo6QW55TWVzc2FnZUxpa2VFdmVudD46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1 +cmV9fT4+OjpoOWMxMmY2OTllYjUyMmFhMMdLPjxjb3JlOjpmbXQ6OkVycm9yIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmgxMDA3NGQ1ZDUxMTU4YzI0yEtOPGZ1dHVyZXNfdXRpbDo6YWJvcnRh +YmxlOjpBYm9ydGVkIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiYTU0M2Y1NmNlNWY0MWEz +yUu8AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVt +ZW50ZWQ8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5TWFu +YWdlcjo6dXBkYXRlX29yX2NyZWF0ZV9pZGVudGl0eTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19 +Pj46OmhmZmYwZDQxOWExMWM5NTYzykvXAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5n +OjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6 +OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OmVuY3J5cHQ8cnVtYV9ldmVudHM6OmR1bW15OjpUb0Rl +dmljZUR1bW15RXZlbnRDb250ZW50Pjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pj46OmgzMTli +MDUzMTJmZGNiNGY3y0v4AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5nOjppbnN0cnVt +ZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6bWFjaGlu +ZTo6VmVyaWZpY2F0aW9uTWFjaGluZTo6cmVjZWl2ZV9hbnlfZXZlbnQ8Jm1hdHJpeF9zZGtfY3J5 +cHRvOjp0eXBlczo6ZXZlbnRzOjp0b19kZXZpY2U6OlRvRGV2aWNlRXZlbnRzPjo6e3tjbG9zdXJl +fX06Ont7Y2xvc3VyZX19Pj46Omg1MjNiMjA3YjEzNjcwZjM5zEueAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nka19jcnlw +dG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmFkZF9yb29tX2tleTo6e3tjbG9zdXJlfX06Ont7Y2xv +c3VyZX19Pj46Omg1MjY2OTQxNTdiZmM1MWY2zUucAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0 +cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nka19jcnlwdG86Om1hY2hp +bmU6Ok9sbU1hY2hpbmU6OmhhbmRsZV9rZXk6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+Ojpo +ZDFlZGNjOGE1MWNlOTFhYs5LtAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dHJhY2luZzo6aW5z +dHJ1bWVudDo6SW5zdHJ1bWVudGVkPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hp +bmU6Okdvc3NpcE1hY2hpbmU6OnJlY2VpdmVfc2VjcmV0X2V2ZW50Ojp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX0+Pjo6aDk4ZjIzNzEwMzE0NDRmYTXPS+oBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxtYXRyaXhfc2RrX2NyeXB0bzo6aWRl +bnRpdGllczo6ZGV2aWNlOjpSZWFkT25seURldmljZTo6ZW5jcnlwdDxtYXRyaXhfc2RrX2NyeXB0 +bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6OlNlY3JldFNlbmRDb250ZW50Pjo6e3tjbG9z +dXJlfX06Ont7Y2xvc3VyZX19Pj46OmgxZDhhMTI3YWJmYWVkZGZl0Ev3AWNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nka19j +cnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6OmVuY3J5cHQ8bWF0cml4 +X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OmZvcndhcmRlZF9yb29tX2tleTo6Rm9yd2FyZGVk +Um9vbUtleUNvbnRlbnQ+Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Pjo6aGM2MGRiYThkMGU4 +OWNkY2XRS6IBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRyYWNpbmc6Omluc3RydW1lbnQ6Oklu +c3RydW1lbnRlZDxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjphY2NvdW50OjpBY2NvdW50OjpkZWNy +eXB0X29sbV92MTo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pj46Omg5ODU5MWY5ODMzMGJkYWY3 +0kt+Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzwoYWxsb2M6OnN0cmlu +Zzo6U3RyaW5nLHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpEZWNyeXB0aW9uRXJyb3IpPj46Omhi +NDI0ODRlNDMzYTFlZjVj00urAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5nOjppbnN0 +cnVtZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6QWNj +b3VudDo6ZGVjcnlwdF90b19kZXZpY2VfZXZlbnQ6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+ +OjpoZDBlNTk1NTdkNjhjZWU4NtRLsQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dHJhY2luZzo6 +aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06OmFjY291bnQ6 +OkFjY291bnQ6OmRlY3J5cHRfYW5kX3BhcnNlX29sbV9tZXNzYWdlOjp7e2Nsb3N1cmV9fTo6e3tj +bG9zdXJlfX0+Pjo6aGQ5MzBkOWU2ZWJkMzhlNmPVS7IBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxtYXRyaXhfc2RrX2NyeXB0bzo6bWFj +aGluZTo6T2xtTWFjaGluZTo6aGFuZGxlX2RlY3J5cHRlZF90b19kZXZpY2VfZXZlbnQ6Ont7Y2xv +c3VyZX19Ojp7e2Nsb3N1cmV9fT4+OjpoMWY5NDVhYTU4ZTY0OTc4ZtZLvAFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8dHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPG1hdHJpeF9zZGtf +Y3J5cHRvOjpnb3NzaXBpbmc6Om1hY2hpbmU6Okdvc3NpcE1hY2hpbmU6OmhhbmRsZV9zdXBwb3J0 +ZWRfa2V5X3JlcXVlc3Q6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+OjpoMjAxMmRlNjNmMjQ2 +ODU5MNdLQDxjb3JlOjpmbXQ6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxMDA3 +NGQ1ZDUxMTU4YzI0LjHYS1A8ZnV0dXJlc191dGlsOjphYm9ydGFibGU6OkFib3J0ZWQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGJhNTQzZjU2Y2U1ZjQxYTMuMdlLXGNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkJhY2t1cERlY3J5cHRpb25LZXk+ +OjpoODQyYTFjZTJhZGNiMTZiYy4z2ktAPGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDEwMDc0ZDVkNTExNThjMjQuMttLUDxmdXR1cmVzX3V0aWw6OmFib3J0YWJs +ZTo6QWJvcnRlZCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmE1NDNmNTZjZTVmNDFhMy4y +3EuNAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8KHNlcmRlOjpfX3By +aXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50LHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50 +OjpDb250ZW50KT4+OjpoMGNhZDIwZGRkMDg2ZmEzZN1LNGZ1dHVyZXNfdGFzazo6d2FrZXI6OmRy +b3BfYXJjX3Jhdzo6aDI0Yzc4MzQzZjUyYTljM2TeSzRmdXR1cmVzX3Rhc2s6Ondha2VyOjpkcm9w +X2FyY19yYXc6Omg4ZmM0ZDc2N2UxNzIyZWE030s0ZnV0dXJlc190YXNrOjp3YWtlcjo6ZHJvcF9h +cmNfcmF3OjpoOTNkNzUyOWZjZTgyNjc4YeBLNGZ1dHVyZXNfdGFzazo6d2FrZXI6OmRyb3BfYXJj +X3Jhdzo6aDllNzFkNWJhZDBlZDA0N2bhSzRmdXR1cmVzX3Rhc2s6Ondha2VyOjpkcm9wX2FyY19y +YXc6OmhiYzRkMzJlMzUwNGY0NzNk4ksyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6 +aDFhOTRlM2YwZjhkNTM3ODTjSzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMjcw +MThjNjQ1MDA4M2Q5MORLMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgyY2E0ODQ0 +ZGZlMDY5Yzkz5UswPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5YzMyNDQ1NzkwYWFl +NDEx5ku8AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0 +cnVtZW50ZWQ8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6Om1hbmFnZXI6OklkZW50aXR5 +TWFuYWdlcjo6Z2V0X3VwZGF0ZWRfa2V5c19mb3JfdXNlcjo6e3tjbG9zdXJlfX06Ont7Y2xvc3Vy +ZX19Pj46OmhmOTU2YjVkZDRiOTAwYTM250tAPGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aDEwMDc0ZDVkNTExNThjMjQuM+hLVmNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxhbGxvYzo6dmVjOjpWZWM8c2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPj46OmgxZDU4MTUy +YzJkOTA1MjIx6UuyAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8KHJ1 +bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQsYWxsb2M6OnZlYzo6 +VmVjPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2lkOjpPd25lZERldmljZUlkPik+ +Pjo6aDFhZTVkZDE4OGZlZDY4MjbqS7sBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2 +ZWM6OlZlYzwocnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpjcnlwdG9fYWxnb3JpdGhtczo6RGV2 +aWNlS2V5QWxnb3JpdGhtLG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6Y3Jvc3Nfc2lnbmluZzo6 +Y29tbW9uOjpTaWduaW5nS2V5KT4+OjpoYzY2MThkODlkNzM2ZThmOetLQDxjb3JlOjpmbXQ6OkVy +cm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxMDA3NGQ1ZDUxMTU4YzI0LjTsSxRrZXlz +Y2xhaW1yZXF1ZXN0X25ld+1Lfjx0cmFjaW5nX3N1YnNjcmliZXI6OmZtdDo6U3Vic2NyaWJlcjxO +LEUsRixXPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI+OjpyZWNvcmRf +Zm9sbG93c19mcm9tOjpoYzE3ZDFhN2VjYTc4ZTA1N+5LcTx0cmFjaW5nX3N1YnNjcmliZXI6OmZt +dDo6U3Vic2NyaWJlcjxOLEUsRixXPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNj +cmliZXI+OjpyZWNvcmQ6OmhkYmYwZWZhYmI2MTk3NGE270t4PHRyYWNpbmdfc3Vic2NyaWJlcjo6 +bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6 +OlN1YnNjcmliZXI+Ojpkcm9wX3NwYW46OmgwMTQyMjFjYzI1NTY4NWQw8Et4PHRyYWNpbmdfc3Vi +c2NyaWJlcjo6bGF5ZXI6OmxheWVyZWQ6OkxheWVyZWQ8TCxTPiBhcyB0cmFjaW5nX2NvcmU6OnN1 +YnNjcmliZXI6OlN1YnNjcmliZXI+Ojpkcm9wX3NwYW46OmhhYTFiYWY0MDU1OWNkNTg08UswPCZU +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzNDhjZTAyZjg0YjljZTdj8ktEPGFsbG9jOjpi +b3hlZDo6Qm94PFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDQ4YjNiZjgzNDdhZTA2 +NmbzSzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGE3NjRiNTIxOWNjNGQ1MDn0S3Vj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dG9raW86OnN5bmM6OnJ3bG9jazo6UndMb2NrPGNvcmU6 +Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjpzdHJpbmc6OlN0cmluZz4+Pjo6aDA3OGMwZWNkODA0OTFl +YTL1S35jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxh +bGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpUcmFja2VkVXNlcj4+Pjo6 +aGMxMTlhMDc4NjQwOGIzMzH2S2Njb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6 +VmVjPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6VHJhY2tlZFVzZXI+Pjo6aDIyM2E2MzU2MGNh +MTcyNWH3S4YBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xv +Y2s8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3VudDo6 +QWNjb3VudD4+Pjo6aGFkNThhOTM3MGFlOGFlNTP4S5oBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNl +PHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nk +a19jcnlwdG86Om9sbTo6c2lnbmluZzo6UHJpdmF0ZUNyb3NzU2lnbmluZ0lkZW50aXR5Pj4+Ojpo +ZTk3NjYyMTMxZTNmYzE5ZvlLlwFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpy +d2xvY2s6OlJ3TG9jazxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8YWxsb2M6 +OnN0cmluZzo6U3RyaW5nLGFsbG9jOjp2ZWM6OlZlYzx1OD4+Pj46OmgxODc4MjkzZDc3YTAyZGI2 ++kuuAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrPHN0 +ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcs +KGFsbG9jOjpzdHJpbmc6OlN0cmluZyxzdGQ6OnRpbWU6Okluc3RhbnQpPj4+OjpoNmYwNTZkNjNk +ZWI0Yjg5YvtLwAFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpyd2xvY2s6OlJ3 +TG9jazxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8YWxsb2M6OnN0cmluZzo6 +U3RyaW5nLHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dHJhbnNhY3Rpb25faWQ6Ok93bmVkVHJh +bnNhY3Rpb25JZD4+Pjo6aGE5NjFmMTZhZGQ1NDllNWX8S78BY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFw +OjpIYXNoTWFwPGFsbG9jOjpzdHJpbmc6OlN0cmluZyxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjpz +ZXQ6Okhhc2hTZXQ8YWxsb2M6OnN0cmluZzo6U3RyaW5nPj4+Pjo6aGYwNmFhZDYzZTE4YTE2NWL9 +S8IBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8c3Rk +Ojpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNoTWFwPGFsbG9jOjpzdHJpbmc6OlN0cmluZyxh +bGxvYzo6dmVjOjpWZWM8bWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6R29zc2lwcGVkU2Vj +cmV0Pj4+Pjo6aGViOGNhY2JjYmUxMTAwYjb+S9YBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0 +ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8c3RkOjpjb2xsZWN0aW9uczo6aGFzaDo6bWFwOjpIYXNo +TWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6dHJhbnNhY3Rpb25faWQ6Ok93bmVkVHJhbnNh +Y3Rpb25JZCxtYXRyaXhfc2RrX2NyeXB0bzo6Z29zc2lwaW5nOjpHb3NzaXBSZXF1ZXN0Pj4+Ojpo +NWZlY2U0NGZjZDNiNzM2Nv9L2AFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpy +d2xvY2s6OlJ3TG9jazxzdGQ6OmNvbGxlY3Rpb25zOjpoYXNoOjptYXA6Okhhc2hNYXA8cnVtYV9j +b21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVzZXJJZCxtYXRyaXhfc2RrX2NyeXB0 +bzo6aWRlbnRpdGllczo6dXNlcjo6UmVhZE9ubHlVc2VySWRlbnRpdGllcz4+Pjo6aDJiZmY4ODg4 +ZWI0NmEyMTmATOcBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6cndsb2NrOjpS +d0xvY2s8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1v +bjo6aWRlbnRpZmllcnM6OnJvb21faWQ6Ok93bmVkUm9vbUlkLG1hdHJpeF9zZGtfY3J5cHRvOjpv +bG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6T3V0Ym91bmRHcm91cFNlc3Npb24+Pj46Omg3 +YzU2OGI4YTkyZWUwM2E4gUzgAmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OnN5bmM6OnJ3 +bG9jazo6UndMb2NrPHN0ZDo6Y29sbGVjdGlvbnM6Omhhc2g6Om1hcDo6SGFzaE1hcDxydW1hX2Nv +bW1vbjo6aWRlbnRpZmllcnM6OnJvb21faWQ6Ok93bmVkUm9vbUlkLHN0ZDo6Y29sbGVjdGlvbnM6 +Omhhc2g6Om1hcDo6SGFzaE1hcDxhbGxvYzo6c3RyaW5nOjpTdHJpbmcsbWF0cml4X3Nka19jcnlw +dG86OnR5cGVzOjpldmVudHM6OnRvX2RldmljZTo6VG9EZXZpY2VFdmVudDxtYXRyaXhfc2RrX2Ny +eXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OlJvb21LZXlXaXRoaGVsZENv +bnRlbnQ+Pj4+Pjo6aDljNmY4OTJkMDc1YjE5OGWCTFpjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpjYWNoZXM6OkRldmljZVN0b3JlPjo6aGQ5NTI1YWM4 +MmViZTcxZDCDTGBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86OnN0 +b3JlOjpjYWNoZXM6Okdyb3VwU2Vzc2lvblN0b3JlPjo6aGYyMTcyN2Q5YjJhMGYyM2aETG5jb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8dG9raW86OnN5bmM6OnJ3bG9jazo6UndMb2NrPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6QmFja3VwS2V5cz4+OjpoMzA1YmMzNDYyNmYyNTY4YYVMaGNvcmU6 +OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpt +aWdyYXRpb25zOjpNaWdyYXRpb25EYj46OmhjZDY1ODYwY2MzNjQyNWRjhkyxAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nk +a19jcnlwdG86OmRlaHlkcmF0ZWRfZGV2aWNlczo6UmVoeWRyYXRlZERldmljZTo6cmVjZWl2ZV9l +dmVudHM6Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+OjpoZjc2NGUwZDBjZGZmZDI3M4dMsgFj +b3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVk +PG1hdHJpeF9zZGtfY3J5cHRvOjpkZWh5ZHJhdGVkX2RldmljZXM6OkRlaHlkcmF0ZWREZXZpY2U6 +OmtleXNfZm9yX3VwbG9hZDo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pj46Omg2YWM1Y2FlNmU1 +MzUxZjBjiExtY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhf +c2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpQaWNrbGVkU2Vzc2lvbj4+OjpoYjQ0ZTViMmU4ZTNm +NWI4MolMygE8PGFsbG9jOjpib3hlZDo6Qm94PGR5biBjb3JlOjplcnJvcjo6RXJyb3IrY29yZTo6 +bWFya2VyOjpTeW5jK2NvcmU6Om1hcmtlcjo6U2VuZD4gYXMgY29yZTo6Y29udmVydDo6RnJvbTxh +bGxvYzo6c3RyaW5nOjpTdHJpbmc+Pjo6ZnJvbTo6U3RyaW5nRXJyb3IgYXMgY29yZTo6ZXJyb3I6 +OkVycm9yPjo6ZGVzY3JpcHRpb246OmhhOTE5MzQ1NjY5N2MyYTA5ikwwPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmgwMjNjNzRkNzBjNzc3YTMwi0wwPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg3MmJlNmY4ODQ2M2NlNzA2jEwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmhlODRjNWNhOTk4YzE2ZjM1jUzIAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5n +OjppbnN0cnVtZW50OjpJbnN0cnVtZW50ZWQ8bWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9s +bU1hY2hpbmU6OndpdGhfc3RvcmU8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6c3RvcmU6OlN0b3Jl +SGFuZGxlPjo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19Pj46OmhmOTIyZjRmODI1NzhhMjNmjkzk +AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx0cmFjaW5nOjppbnN0cnVtZW50OjpJbnN0cnVtZW50 +ZWQ8bWF0cml4X3Nka19jcnlwdG86OmlkZW50aXRpZXM6OmRldmljZTo6UmVhZE9ubHlEZXZpY2U6 +OmVuY3J5cHQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5OjpSb29t +S2V5Q29udGVudD46Ont7Y2xvc3VyZX19Ojp7e2Nsb3N1cmV9fT4+OjpoOGE0ZWQzY2NmNDU1M2E5 +Y49McXJ1bWFfZXZlbnRzOjpyb29tOjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9y +IHJ1bWFfZXZlbnRzOjpyb29tOjpJbWFnZUluZm8+OjpzZXJpYWxpemU6OmgxMTUyM2I0YjM1NGQy +MDM3kEz1ATxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbTo6ZW5jcnlwdGVk +OjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0 +eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6Ok1lZ29sbVYxQWVzU2hhMkNvbnRlbnQ+Ojpz +ZXJpYWxpemU6Ol9fU2VyaWFsaXplV2l0aCBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemU+OjpzZXJp +YWxpemU6OmgzMTQwOGVlNTI2MTU4MGZjkUz1ATxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2 +ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9y +IG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tOjplbmNyeXB0ZWQ6Ok1lZ29s +bVYxQWVzU2hhMkNvbnRlbnQ+OjpzZXJpYWxpemU6Ol9fU2VyaWFsaXplV2l0aCBhcyBzZXJkZTo6 +c2VyOjpTZXJpYWxpemU+OjpzZXJpYWxpemU6OmhiMTBjMzA3MGIyZGI4MzUykkwwPCZUIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwNzFiMmM1YjNhYzg1NDQ4k0wwPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmgxZmI3OTI3MDYyOTc0ZTVmlEwwPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg2ZjA4MGMzZjE0MzI1NTM2lUwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6Omg3MjFmYmE2MjA4Y2Y0OTY5lkwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omhi +MDE2ZWNjMzQ1YTRiODdkl0wwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkMzA5MjM3 +YjEyMDFkYzI0mExAPGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDEwMDc0ZDVkNTExNThjMjQuNZlMUDxmdXR1cmVzX3V0aWw6OmFib3J0YWJsZTo6QWJvcnRlZCBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmE1NDNmNTZjZTVmNDFhMy4zmkxVPHRva2lvOjpz +eW5jOjptdXRleDo6TXV0ZXhHdWFyZDxUPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9w +OjpoMzA5NmJhNmJkMDg4NzNhZJtMnwFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVudGlmaWVy +czo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjppZGVu +dGlmaWVyczo6VXNlcklkPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDdiY2M5 +NzRmZWNjY2RmNGOcTKMBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OjxpbXBsIGNv +cmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OktleXND +bGFpbVJlcXVlc3Q+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpoN2FkZjUyNTAz +ZjVjZmIyYZ1MO3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0OjpoYmRhNDdm +MzA1MTg2NDk5Yi42nkwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ZTM2Y2RiZjMw +NWNiM2Jln0wwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5NTRkZjg5ZjVlNTk2ZGEy +oEwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjMDQ3NmZmODE5ZDkwNDExoUxAPGNv +cmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEwMDc0ZDVkNTExNThj +MjQuNqJMTzxjaXBoZXI6OmVycm9yczo6U3RyZWFtQ2lwaGVyRXJyb3IgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDA3NDYyMGEwMDI1ZTVmYjGjTDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDg4NWZmZGQ0YTJiZDQ2MDCkTDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aGUzYjU2YmI1ZjEyNzc4ZmalTEA8Y29yZTo6Zm10OjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoMTAwNzRkNWQ1MTE1OGMyNC43pkzYATxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpn +cm91cF9zZXNzaW9uczo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBtYXRyaXhf +c2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6QmFja2VkVXBSb29tS2V5Pjo6c2VyaWFs +aXplOjpfX1NlcmlhbGl6ZVdpdGggYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplPjo6c2VyaWFsaXpl +OjpoMzhlNDQyMzg2YzgzYjVmNadMMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omgw +MjRkMmYyODQxNmM1MzI1qEwyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGY1MzBj +ZDAyMmNiNzdhMTWpTDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGI5MDUyNDVkZmQz +NjY5YjSqTDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGU1NTUzZWIwY2UxODdlODCr +TDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGU4MmZiYWNmMjI2YWM4MTKsTKQBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxt +YXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6ZGVjcnlwdF9yb29tX2V2ZW50 +Ojp7e2Nsb3N1cmV9fTo6e3tjbG9zdXJlfX0+Pjo6aDYzMjRmNWU5NmI1YWRiZGatTEA8Y29yZTo6 +Zm10OjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTAwNzRkNWQ1MTE1OGMyNC44 +rkw7c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmVuZF9vYmplY3Q6OmhiZGE0N2YzMDUxODY0 +OTliLjevTDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMDM5ODEyMDVkNzNlZjVh +OLBMMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgwYzE2NzEzNGY4MWNkZjY3sUwy +PFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDUwNTYxYTBhNTlkNGQ4MDGyTDI8VCBh +cyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZmUwOWZmZWFhODE3MDZjObNMMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmNhZWVmY2NmNmY4MDNmYrRMMDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoNGRjNTIyMzdmMDI5OTU2YbVMMDwmVCBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoNWZiMDI1YjgwZTJlOGVlN7ZMMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoZDhhNjU4M2MxZWI0MmY0ZbdMMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +ZjU4NjRmMjU4Yjc1ZjIxNLhMMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzNDBh +ZmI3ZTc0ZmVhMmU3uUxqY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFueWhvdzo6ZXJyb3I6OkVy +cm9ySW1wbDxhbnlob3c6OndyYXBwZXI6OkRpc3BsYXlFcnJvcjwmc3RyPj4+OjpoMGMzNjBjZDNi +ZDk5OGRiNbpMLmNvcmU6OmZtdDo6V3JpdGU6OndyaXRlX2ZtdDo6aDEzYzc1YTJhODE4MDk0ZWS7 +TEA8Y29yZTo6Zm10OjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTAwNzRkNWQ1 +MTE1OGMyNC45vExQY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6bWVnb2xtOjpy +YXRjaGV0OjpSYXRjaGV0Pjo6aDI4YTk2NjdjMDI1YTFiNjK9TF9jb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8YWxsb2M6OnZlYzo6VmVjPHJ1bWFfY29tbW9uOjplbmNyeXB0aW9uOjpLZXlVc2FnZT4+ +OjpoMWEyOTdmYzU0Yjc3YmJmZb5MU2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVj +OjpWZWM8d2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPj46Omg2MDRmNDI0NmU4MzBjZDg4v0xyY29yZTo6 +cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2luZGV4ZWRkYjo6 +Y3J5cHRvX3N0b3JlOjpQZW5kaW5nT3BlcmF0aW9uPj46Omg3NmE1NzVjMmVjY2Q3MjY4wExBPGNv +cmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEwMDc0ZDVkNTExNThj +MjQuMTDBTDZzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19maWVsZDo6aDM4NzZhMTNiYjQ5 +MjYxYjDCTFRzZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZv +ciAmVD46OnNlcmlhbGl6ZTo6aGRmYjgyYzRjNmYxNTY0ZGHDTFRzZXJkZTo6c2VyOjppbXBsczo6 +PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciAmVD46OnNlcmlhbGl6ZTo6aDM5ZDI4ZmIx +MjUxYmExZjHETFRzZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXpl +IGZvciAmVD46OnNlcmlhbGl6ZTo6aDFmNmRhMmIwY2Q4YmNhZjLFTFRzZXJkZTo6c2VyOjppbXBs +czo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciAmVD46OnNlcmlhbGl6ZTo6aDhjNDQ4 +ODg4YjI1MTA4ZjTGTFRzZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFs +aXplIGZvciAmVD46OnNlcmlhbGl6ZTo6aDJkODBkNGM3ZTkwNDQ3YzfHTFRzZXJkZTo6c2VyOjpp +bXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciAmVD46OnNlcmlhbGl6ZTo6aGQ1 +NjJlZjk4YzRhNDE3OGPITFRzZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2Vy +aWFsaXplIGZvciAmVD46OnNlcmlhbGl6ZTo6aDA2ZTY3ZDc2NGVkNzdiMzfJTFRzZXJkZTo6c2Vy +OjppbXBsczo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciAmVD46OnNlcmlhbGl6ZTo6 +aDc4ODU0ZjdkMzkxNmE1ZmXKTDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjY2 +ZmNiMjE5ODE5Mjg4M8tMQTxjb3JlOjpmbXQ6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmgxMDA3NGQ1ZDUxMTU4YzI0LjExzExbPCZUIGFzIG1hdHJpeF9zZGtfaW5kZXhlZGRiOjpz +YWZlX2VuY29kZTo6U2FmZUVuY29kZT46OmFzX2VuY29kZWRfc3RyaW5nOjpoYjM0NzlhYmVkMzk4 +MDJjNM1MWzwmVCBhcyBtYXRyaXhfc2RrX2luZGV4ZWRkYjo6c2FmZV9lbmNvZGU6OlNhZmVFbmNv +ZGU+Ojphc19lbmNvZGVkX3N0cmluZzo6aGE3M2NlZDg5ZjM3YjY2Y2TOTFs8JlQgYXMgbWF0cml4 +X3Nka19pbmRleGVkZGI6OnNhZmVfZW5jb2RlOjpTYWZlRW5jb2RlPjo6YXNfZW5jb2RlZF9zdHJp +bmc6Omg0NjE2N2EyNWU3NGFmM2U5z0xkY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2 +ZWM6OlZlYzxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD4+OjpoYTBiZWRm +NGVmNmI4YjE0NNBMO3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0OjpoMGVj +ZTU0Yzg5OWMyZmQyNS4y0Uw9c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmJlZ2luX29iamVj +dDo6aGU0OGRlMmNiNTE5YjcyZDYuMdJMQ3NlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjpiZWdp +bl9vYmplY3RfdmFsdWU6OmgxYzc1ZGIyODY1ZWRlZWI4LjLTTDA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aGQzMDRjZjFhNTAxZDIwZTTUTFg8dG9raW86OnN5bmM6Om11dGV4OjpNdXRl +eEd1YXJkPFQ+IGFzIGNvcmU6Om9wczo6ZGVyZWY6OkRlcmVmPjo6ZGVyZWY6OmgxMGNlNjQ4ODgy +Mzg0N2Q51UxYPHRva2lvOjpzeW5jOjptdXRleDo6TXV0ZXhHdWFyZDxUPiBhcyBjb3JlOjpvcHM6 +OmRlcmVmOjpEZXJlZj46OmRlcmVmOjpoODFmYzVkZDgyMmRmYTdjOdZMO3NlcmRlX2pzb246OnNl +cjo6Rm9ybWF0dGVyOjplbmRfb2JqZWN0OjpoMGVjZTU0Yzg5OWMyZmQyNS4z10w9c2VyZGVfanNv +bjo6c2VyOjpGb3JtYXR0ZXI6OmJlZ2luX29iamVjdDo6aGU0OGRlMmNiNTE5YjcyZDYuMthMQ3Nl +cmRlX2pzb246OnNlcjo6Rm9ybWF0dGVyOjpiZWdpbl9vYmplY3RfdmFsdWU6OmgxYzc1ZGIyODY1 +ZWRlZWI4LjPZTDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDIzZmE5NGJmNDFhMzdj +NTjaTDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNmVjZmRlZTNmMjVkNDRlMNtM +xgE8bWF0cml4X3Nka19zdG9yZV9lbmNyeXB0aW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2Vy +aWFsaXplIGZvciBtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246OkVuY3J5cHRlZFN0b3JlQ2lw +aGVyPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46 +OmV4cGVjdGluZzo6aGRhODJjYjE4ZTJhNWQxN2HcTDk8YWVhZDo6RXJyb3IgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aGM1ODc3MzU3NTMxNTAxMTTdTEljb3JlOjpwdHI6OmRyb3BfaW5fcGxh +Y2U8cm1wOjplbmNvZGU6OlZhbHVlV3JpdGVFcnJvcj46Omg0OTRjYzE5Njk2YTQ3MGFj3kwwPCZU +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjZTdmNTcyY2ZhNTBjZDAz30wyPCZUIGFzIGNv +cmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGY1Zjg5MDU1YmU5MDA4ZTjgTFE8Y2lwaGVyOjplcnJv +cnM6OlN0cmVhbUNpcGhlckVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwNzQ2MjBh +MDAyNWU1ZmIxLjHhTDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMGRlNDgyMzFi +NmMxZWE5YeJMMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzZjZhMzQ4ZDc0N2Rj +Y2Qw40xRPGNpcGhlcjo6ZXJyb3JzOjpTdHJlYW1DaXBoZXJFcnJvciBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoMDc0NjIwYTAwMjVlNWZiMS4y5EwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6OmgxZWQyZWEzOGQyYzZkN2Vm5UwyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZt +dDo6aDA2MzdiMTViNDAzYWQ4OGbmTDI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10Ojpo +ODZlNmJiNWVlMTc3Yzg0NedMS2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxybXA6OmVuY29kZTo6 +VmFsdWVXcml0ZUVycm9yPjo6aDQ5NGNjMTk2OTZhNDcwYWMuMehMNnNlcmRlOjpfX3ByaXZhdGU6 +OmRlOjptaXNzaW5nX2ZpZWxkOjpoYjFjNmZhMjNjNzlmMTYzMulMMDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoYjk4NjExMTMwMzUxZWY0YepMOzxhZWFkOjpFcnJvciBhcyBjb3JlOjpm +bXQ6OkRpc3BsYXk+OjpmbXQ6Omg3ODk0YWEzZjEwODM1YzQz60wwPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6Omg4YjQ0ZWE2NjcxMzhiNGMz7ExNd2FzbV9iaW5kZ2VuOjpjbG9zdXJlOjpD +bG9zdXJlPFQ+Ojp3cmFwOjpicmVha3NfaWZfaW5saW5lZDo6aGVjNTM3NjE5ZGIwNjVhYmPtTEhj +b3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDJl +ZDAyZmE3MzlmYzE4MWbuTEhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7 +dnRhYmxlLnNoaW19fTo6aGFhZjQzNjRlNTQ4ZDZmZGTvTEhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpG +bk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDUzN2YxZjk0MjYyNWU4ZWLwTC5jb3Jl +OjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6Omg4MTJhZDMwOWExYWVmMGY08UxBPGNvcmU6OmZtdDo6 +RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEwMDc0ZDVkNTExNThjMjQuMTLyTC5j +b3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6Omg1YWQ0MDJmZjVjMDJjYjQ480zZAWFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6 +TXV0LEssVixOb2RlVHlwZT4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2Vy +OjpLVj46OmludG9fdmFsX211dDo6aDA1M2JlOTMyZTJlMTE1MmH0TIABYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2Rl +OjptYXJrZXI6Ok11dCxLLFYsVHlwZT46OnZhbF9hcmVhX211dDo6aDExMWQ2MWY5NWUwNWYwOWX1 +TLYBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzwocnVtYV9jb21tb246 +OnRvX2RldmljZTo6RGV2aWNlSWRPckFsbERldmljZXMscnVtYV9jb21tb246OnNlcmRlOjpyYXc6 +OlJhdzxydW1hX2V2ZW50czo6ZW51bXM6OkFueVRvRGV2aWNlRXZlbnRDb250ZW50Pik+Pjo6aDli +YWI2Mjg2YWIxNmZiNjH2TJABY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZl +YzwoJnJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNlX2tleV9pZDo6T3duZWREZXZpY2VL +ZXlJZCxhbGxvYzo6c3RyaW5nOjpTdHJpbmcpPj46Omg3ZjY1ZjAxOTRiODZkNWY390wwPCZUIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyODVkYTRiNjI0OGQxMzVm+EwwPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmgyYmU1NGRkMzAyNGI0NjQ0+UwwPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmgyYzAzOThhNjI3ZmVhYjll+kwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6OmgzMTlhNjcyMzZmZGUyMGIy+0wwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg1OGJlODZkZDk3YjdlM2Nk/EwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2NjRl +MzExYmMzZDQwYmZl/UwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2ODI2ZjcwZDEy +ZmI3Njk2/kwwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3NGJlMzIxODIzMjNiYTZm +/0wwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MWFiZGQyZmFhNjZiY2ZigE0wPCZU +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiN2VhMTc0M2NjOGQzNmMygU0wPCZUIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkNGI5ODJjYTU0Y2Y5NTUxgk0wPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmhkNTcyYmYxNGUwNTk4YjUxg00wPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6OmhlYTM2Y2I0ZGE3MTRjYWY4hE0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmgzMjY4MzA2YTgzYThlZWE0hU0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omgz +OTcxZTEwNWY3NWE0N2Qyhk0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0MzE3MzEy +ZmFjNWVmZThhh00wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2NDE3MjU1M2FmN2Nm +NDUziE0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3YjA1ODMxNzliODFkNzE0iU0w +PCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5OWJmMWYzOWZjZWUwNjMyik0wPCZUIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhNTJlOWYxZmY5N2JhOTM2i00wPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmhlNTM1ZjAyYTEzNmY4OWVljE0yPCZUIGFzIGNvcmU6OmZtdDo6 +RGlzcGxheT46OmZtdDo6aDRjYTYxNWE4MDFmMGVkMmWNTVRzZXJkZTo6c2VyOjppbXBsczo6PGlt +cGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciAmVD46OnNlcmlhbGl6ZTo6aGU4YzQ5OTQ5MTEy +NTg4YTSOTTZzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19maWVsZDo6aDE1OTUyYjk2NWVj +YTA2NzGPTTZzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19maWVsZDo6aDE4Yzc5OGFjOWRl +MTQwNzaQTTZzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19maWVsZDo6aDFmNTQxMGVjYTg4 +Nzc4YTeRTTZzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19maWVsZDo6aDIyN2FmYTQzMGRl +NzY0MziSTTZzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19maWVsZDo6aDNiYzA2YzBhY2Ri +ZWYyMmaTTTZzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19maWVsZDo6aDViYjk0MDFkYWY2 +ZWMwMDSUTTZzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19maWVsZDo6aGEwNGQyNzJkYzg1 +NTYxZDiVTWBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfcmVxdWVz +dDo6U3VwcG9ydGVkS2V5SW5mbzo6cm9vbV9pZDo6aDc3YTA4MTg0ZjI3MGNhNWKWTTxtYXRyaXhf +c2RrX2NyeXB0bzo6dHlwZXM6OlNpZ25hdHVyZXM6OmdldDo6aDg3YmFkODUzNGM4YThhMTaXTTtz +ZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6aDA2YmFiNGVmOTk0NDc0ZWQu +MZhNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTU2NWIxMTg1Mjc3ZDQxN5lNMDwm +VCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjQzMDgyNWE5NmJmYzczOJpNMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTMwMjMyMTkzYzExMGY3M5tNMDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoNzNiNzUyM2I2NTZiYzlhY5xNTm1hdHJpeF9zZGtfY3J5cHRvOjpp +ZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjprZXlzOjpoMDZjOWI2Mzk2ZGJjMjVj +Yp1NVG1hdHJpeF9zZGtfY3J5cHRvOjppZGVudGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNl +OjpzaWduYXR1cmVzOjpoNmUxNWI2ZTVhNWZhNGJlMJ5NZG1hdHJpeF9zZGtfY3J5cHRvOjppZGVu +dGl0aWVzOjpkZXZpY2U6OlJlYWRPbmx5RGV2aWNlOjptYXJrX3dpdGhoZWxkX2NvZGVfYXNfc2Vu +dDo6aDEwYmFkOTVkODcxM2QyZDWfTVhtYXRyaXhfc2RrX2NyeXB0bzo6aWRlbnRpdGllczo6ZGV2 +aWNlOjpSZWFkT25seURldmljZTo6YXNfZGV2aWNlX2tleXM6Omg3NWM3ZmFmYjg3MGFjY2RloE1s +PGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjbG9uZWQ6OkNsb25lZDxJPiBhcyBjb3JlOjppdGVyOjp0 +cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg5NWQyZmIxOTc3MDFmMmQ4oU0uc2Vy +ZGVfanNvbjo6dmFsdWU6OnRvX3ZhbHVlOjpoNDU0ZDFlMmNhY2ZhNDE2ZKJNLnNlcmRlX2pzb246 +OnZhbHVlOjp0b192YWx1ZTo6aDg2MjQ0MTQxMTRiZTVmOGSjTTA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDJmYjUzNzk0OGE0MTkwYzSkTTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDQyZjRlMzAwY2Y5OTc0NGKlTTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDlmMjM5Y2Y1YzNiY2Y5YTemTTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRjMzlj +YTEwMjNiYTlhY2GnTTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTJlZTMzZGU1 +NTQ4YWFjN6hNQTxjb3JlOjpmbXQ6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omgx +MDA3NGQ1ZDUxMTU4YzI0LjEzqU1OPGNvcmU6OmFsbG9jOjpsYXlvdXQ6OkxheW91dEVycm9yIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyZWFkMDIwODA2NTQzMWMzqk1ebWF0cml4X3Nka19j +cnlwdG86OnZlcmlmaWNhdGlvbjo6cmVxdWVzdHM6OlZlcmlmaWNhdGlvblJlcXVlc3Q6Om93bl91 +c2VyX2lkOjpoZTUwZWU0NDNmMmMzNGJlMKtNXW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OnJlcXVlc3RzOjpWZXJpZmljYXRpb25SZXF1ZXN0OjpvdGhlcl91c2VyOjpoMmFjYTRlMGZj +MWM2MzYwZaxNWm1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnJlcXVlc3RzOjpWZXJp +ZmljYXRpb25SZXF1ZXN0OjpmbG93X2lkOjpoYTlmMTA5NTExOGFiZGJmZq1NMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTQ2ZGFlZjg4YjdkZjNhMa5NMDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoNmE1OTUxMDEzOGE5MjMzOK9NMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoOWI3M2U0YWMyNTdjODk5MbBNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoOWZiMDAyM2ZhOTY1OGYzMrFNQzxhbGxvYzo6c3luYzo6QXJjPFQsQT4gYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aDU0MmFhOTRiYjRlNmJlMTiyTWE8ZXllYmFsbDo6c2hhcmVkOjpPYnNl +cnZhYmxlV3JpdGVHdWFyZDxULEw+IGFzIGNvcmU6Om9wczo6ZGVyZWY6OkRlcmVmPjo6ZGVyZWY6 +OmgxOGJhYWE3MGQ2YjZlMDc5s01ZbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6bWFjaGlu +ZTo6R29zc2lwTWFjaGluZTo6aWRlbnRpdHlfbWFuYWdlcjo6aDFiYjE5NGY3ZDVjZWI0OWa0TTA8 +JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDBlZTM0ZTJjZThmYTk4NDG1TTA8JlQgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDM1ZTdiOWZhY2Y0MzFhNzK2TTA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDQxZjM1NzQwZDVjMTM2MTG3TTA8JlQgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDRiZjQ5ZjMxODljYTAwNjO4TTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDUxYTY2MGY0YTcyYmZiMzm5TTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDY0Yjg3NzM3YzZjNmYyMmS6TTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDcyN2Qz +MmY3OThiMmEzN2a7TTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgxYTdjOTkwMzcz +ZGVhOGS8TTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGEzNzY5YzgwNDEzMzcyMja9 +TTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQ4NGNlYzdlZTViMDQyZDW+TTA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGUwMTYwYzc2NmNiOGRiZjK/TXdjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNh +dGlvbjo6TWVzc2FnZUF1dGhlbnRpY2F0aW9uQ29kZT4+OjpoYWUzNDQ4NjY3MTczNDNjOMBNa2Nv +cmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6dmVjOjpWZWM8cnVtYV9ldmVudHM6OmtleTo6 +dmVyaWZpY2F0aW9uOjpIYXNoQWxnb3JpdGhtPj46Omg4NjJkZDViYmI5ODc4Y2Q3wU1BPGNvcmU6 +OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEwMDc0ZDVkNTExNThjMjQu +MTTCTUhhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PFQsQT46OnJlbW92 +ZTo6aDI5ZTJiMzc4MmYxMzAxMTTDTVRzZXJkZTo6c2VyOjppbXBsczo6PGltcGwgc2VyZGU6OnNl +cjo6U2VyaWFsaXplIGZvciAmVD46OnNlcmlhbGl6ZTo6aDZiMDdiZTFlN2U2OTI1NDfETUttYXRy +aXhfc2RrX2NyeXB0bzo6cmVxdWVzdHM6Ok91dGdvaW5nUmVxdWVzdDo6cmVxdWVzdF9pZDo6aDFl +OWVlODY3ZDI0M2I5MzbFTTtzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6 +aDA2YmFiNGVmOTk0NDc0ZWQuMsZNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDE2 +MTg1MjAxMzU2MGExMMdNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDI0Mjc4ZmZl +OGJlNjkxYshNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTE5NzdlMTA1MWM0M2Nj +NMlNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMThmN2YwYTNjZGEwMmY2M8pNMDwm +VCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWExMDJiZDM4NzRiMzkzOMtNMDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWYzOWQ3ODMwNGQxOGFiYcxNMDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoMjdiZDA5OTU2ZTM2OTMxOc1NMDwmVCBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoYTA0NDI1NjZlMGMyN2EwMs5NMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6 +Zm10OjpoMjkxNTZjMzQ2YzE2ZThkYs9NRDxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6Omg3NjFmMjBkNjc5MDZiNzQ20E0wPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6Omg1MWY5MDY2NDc2NzFiZTI40U0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg3MTg1OWYxNWVmOTIxMmQx0k0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg4MTQ4NTU1ZmMwMzM4NmVk000wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5Yzg0 +OWNhMmM4YmEzOGRm1E0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiZjk1ZDk0YWI3 +MDhlMjZj1U0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjZjNiOGI1Njg2NDE4ZmM3 +1k0yPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDY5OTgyMmM5MzE2NTg0ZjPXTUY8 +YWxsb2M6OmJveGVkOjpCb3g8VCxBPiBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhlNDA5 +ODYyNmM4ZTQwODRk2E1BPGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDEwMDc0ZDVkNTExNThjMjQuMTXZTWptYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9z +ZXNzaW9uczo6aW5ib3VuZDo6SW5ib3VuZEdyb3VwU2Vzc2lvbjo6bWFya19hc19iYWNrZWRfdXA6 +OmhhYTFhZDVmOWJiNjgwOGFm2k1lbWF0cml4X3Nka19jcnlwdG86Om9sbTo6Z3JvdXBfc2Vzc2lv +bnM6OmluYm91bmQ6OkluYm91bmRHcm91cFNlc3Npb246OnNpZ25pbmdfa2V5czo6aDRiYzVjZjNm +MzcwMjU2ZDXbTWBtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3Vu +ZDo6SW5ib3VuZEdyb3VwU2Vzc2lvbjo6cm9vbV9pZDo6aDQ3ODc2MDAzN2RlZmYzMGPcTWJtYXRy +aXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6SW5ib3VuZEdyb3Vw +U2Vzc2lvbjo6YWxnb3JpdGhtOjpoZGY3MGM1OWQ1NTVjMTBjZt1NaW1hdHJpeF9zZGtfY3J5cHRv +OjpvbG06Omdyb3VwX3Nlc3Npb25zOjpvdXRib3VuZDo6T3V0Ym91bmRHcm91cFNlc3Npb246Om1h +cmtfYXNfc2hhcmVkOjpoNmU4NDQyZTk3OTBjMTIyYd5NMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVn +Pjo6Zm10OjpoNGQwZWU4NDRjNzYxZWU4N99NMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoYTY3NmFiODg1NTFjN2Q4Y+BNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGRm +MTlkMzJjNGNmMzNjNOFNX21hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246Om1hY2hpbmU6 +OlZlcmlmaWNhdGlvbk1hY2hpbmU6Om93bl9kZXZpY2VfaWQ6Omg0MzhhMThjOTIxMjlmY2Ew4k1J +PGhrZGY6OmVycm9yczo6SW52YWxpZExlbmd0aCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +NGI4YThkMTc1MGFlYjQ5NONNUTxjaXBoZXI6OmVycm9yczo6U3RyZWFtQ2lwaGVyRXJyb3IgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDA3NDYyMGEwMDI1ZTVmYjEuM+RNPmhhc2hicm93bjo6 +bWFwOjplcXVpdmFsZW50X2tleTo6e3tjbG9zdXJlfX06Omg1NDVmYzM1ZTA2NDE2YTE45U0wPCZU +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1OGEwMTJiMzFlNzk5NDdl5k0wPCZUIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2ZTE0OTQxOWJlNTgzZGVl500wPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmhmM2I5MDUwM2MxODBiYjY46E1HY29yZTo6YXJyYXk6OjxpbXBsIGNv +cmU6OmZtdDo6RGVidWcgZm9yIFtUOyBOXT46OmZtdDo6aDJiMTlmMGQxNjFhMzM4YzXpTT5oYXNo +YnJvd246Om1hcDo6ZXF1aXZhbGVudF9rZXk6Ont7Y2xvc3VyZX19OjpoYjI1OWQyMjJkZWZmNjFi +NOpNMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzAxZjljMGViMGU3NzZkOetNMDwm +VCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjkxM2ZmMjYyODA5ZGRhMuxNMjwmVCBhcyBj +b3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0YTg3Y2I0NzY3NjE3MWQw7U0yPCZUIGFzIGNvcmU6 +OmZtdDo6RGlzcGxheT46OmZtdDo6aDg0NTAwY2VkNDM5ZTA2YzbuTVA8Y29yZTo6YWxsb2M6Omxh +eW91dDo6TGF5b3V0RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDJlYWQwMjA4MDY1 +NDMxYzMuMe9NcjxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6c2VjcmV0X3NlbmQ6 +OlNlY3JldFNlbmRDb250ZW50IGFzIHplcm9pemU6Olplcm9pemU+Ojp6ZXJvaXplOjpoMzEwOWFi +MzEwZDYzNGUzY/BNRW1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6U2FzOjpm +bG93X2lkOjpoYWZkZTU1MjI3MmNhNDgxYvFNTG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRp +b246OlZlcmlmaWNhdGlvblN0b3JlOjppbm5lcjo6aDM5NGJmMDQwNmFjNWM5NznyTVRtYXRyaXhf +c2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpJZGVudGl0aWVzQmVpbmdWZXJpZmllZDo6dXNlcl9p +ZDo6aDk0OTNkOWY5NjYyYWRiYWXzTTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10Ojpo +MGZiZDMzMGRmODUyZTI1NvRNMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg5ZGIw +NWRjNjQ4YmFiNGE09U1BPGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDEwMDc0ZDVkNTExNThjMjQuMTb2TUU8aW5vdXQ6OmVycm9yczo6UGFkRXJyb3IgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY3YTc0NTZmNDQ1YTk0YzT3TUs8aGtkZjo6ZXJyb3JzOjpJ +bnZhbGlkTGVuZ3RoIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0YjhhOGQxNzUwYWViNDk0 +LjH4TUBtYXRyaXhfc2RrX2NyeXB0bzo6bWFjaGluZTo6T2xtTWFjaGluZTo6c3RvcmU6OmhmZjgz +ZDQ5Zjc1Y2JmYjY5+U1JbWF0cml4X3Nka19jcnlwdG86Om1hY2hpbmU6Ok9sbU1hY2hpbmU6OmJh +Y2t1cF9tYWNoaW5lOjpoYjNjNWJiYjUzZmUyZDhjOPpNSm1hdHJpeF9zZGtfY3J5cHRvOjpvbG06 +OmFjY291bnQ6OkFjY291bnQ6Om9uZV90aW1lX2tleXM6Omg4MDk0NzgxZWMzYmQwNWY5+00wPCZU +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwNWM5NzhiNDg3YWM5NGU4/E0wPCZUIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxOGFmNTVlZjg4MDIxN2Vi/U0wPCZUIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6Omg0MzU1MWY2MzNmOWY4Yjky/k0wPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg0Y2ZiOWMyMzZiOTliZWQ4/00wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6Omg1MzRmNWI3YzI1MmNjYzdjgE4wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1 +OWVkNzBhOTMzNGI0NDZkgU4wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3MjU3Nzhl +M2VmNGNmNDFigk4wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4NjUyZjJlNzJjMTJk +NmM3g04wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkNWQyNzU0YzFmMjY3Mzc4hE4w +PCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlNTgxOGVkMzJjNjc3ODgwhU4wPCZUIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwNGRmYmZlNjQxYjQ5M2Zlhk4wPCZUIGFzIGNvcmU6 +OmZtdDo6RGVidWc+OjpmbXQ6OmgxMTViYjY2NjQyNzAyOTBmh04wPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6Omg1OTQ3OTJmZjhjNjUyMTdiiE4wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg5N2MxNGNmZjdhMTdkYjYxiU5NPGNvcmU6OnB0cjo6bm9uX251bGw6Ok5vbk51bGw8 +VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDk2NTJjN2ZmMWVkZmNkOGKKTjA8JlQgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGM3MjM0MDA5NWE0MmRkZjmLTjA8JlQgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aGUxYTRkMGY0Yjg4MmFjYjOMTkE8Y29yZTo6Zm10OjpFcnJvciBh +cyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTAwNzRkNWQ1MTE1OGMyNC4xN41OiAFtYXRyaXhf +c2RrX2NyeXB0bzo6YmFja3Vwczo6a2V5czo6ZGVjcnlwdGlvbjo6PGltcGwgbWF0cml4X3Nka19j +cnlwdG86OnN0b3JlOjpCYWNrdXBEZWNyeXB0aW9uS2V5Pjo6Z2V0X3BrX2RlY3J5cHRpb246Omg2 +YjRkZDNjMzMwNGE5MDg3jk5EbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZVRyYW5zYWN0 +aW9uOjpjYWNoZTo6aGQ4ZTVlNzkxMmU1MGJkZjGPTkVtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6 +OlBlbmRpbmdDaGFuZ2VzOjppc19lbXB0eTo6aDEwNmQ5Mjg2MTAwOWUyNTOQTkJtYXRyaXhfc2Rr +X2NyeXB0bzo6c3RvcmU6OlN0b3JlOjpzdGF0aWNfYWNjb3VudDo6aGM2OTAxNzYwNDhkNDEyOTiR +TjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoM2Y0ZTMwZDJmYTk2ZDhiZZJOTzxy +bXA6OmVuY29kZTo6VmFsdWVXcml0ZUVycm9yPEU+IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZt +dDo6aDczMTFjMzg1MmFjYjIyZTWTTjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10Ojpo +YzA2ZWM0NWI2OGY5Y2I3YZROMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg5NjFh +ZGQ5N2MyMWJmOTE0lU5DcXJjb2RlOjpjYW52YXM6Om1hc2tfZnVuY3Rpb25zOjpob3Jpem9udGFs +X2xpbmVzOjpoZTlhMDFjM2M4YzNlOWY1ZZZOM2FsbG9jOjpzbGljZTo6PGltcGwgW1RdPjo6Y29u +Y2F0OjpoMGMwMDFjYjAzZWNiYjlmN5dOMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +N2IzZDE5M2Y5MmRmYzExZZhOMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjM0ZmNi +YzRhZTdjYWY1ZplOMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzNzE0M2Q1MGNk +MTMyYTYxmk4wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2OTMzNmJiMjk1ZjQ2NWEw +m04uY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfZm10OjpoNzFmMjJiMjZkZjU1ZDMxYpxOOjwmbXV0 +IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2ZtdDo6aDA5YjM0MDYxZjk2ZDQ5MGSdTjA8 +JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDIyN2Y4NjFhMGI0NWNkOGaeTjA8JlQgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDdkOTk3M2MwOTU3N2E0MGGfTqoBPDx0cmFjaW5nX3N1 +YnNjcmliZXI6OnJlZ2lzdHJ5OjpzaGFyZGVkOjpEYXRhSW5uZXIgYXMgY29yZTo6ZGVmYXVsdDo6 +RGVmYXVsdD46OmRlZmF1bHQ6Ok51bGxDYWxsc2l0ZSBhcyB0cmFjaW5nX2NvcmU6OmNhbGxzaXRl +OjpDYWxsc2l0ZT46OnNldF9pbnRlcmVzdDo6aDVhMjllNjAwN2UyMzYxOWKgTqYBPDx0cmFjaW5n +X3N1YnNjcmliZXI6OnJlZ2lzdHJ5OjpzaGFyZGVkOjpEYXRhSW5uZXIgYXMgY29yZTo6ZGVmYXVs +dDo6RGVmYXVsdD46OmRlZmF1bHQ6Ok51bGxDYWxsc2l0ZSBhcyB0cmFjaW5nX2NvcmU6OmNhbGxz +aXRlOjpDYWxsc2l0ZT46Om1ldGFkYXRhOjpoZDFhM2RmOTY2Y2NmYWUyMKFOMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGE5MTQ0YzllYmFiNTZiY6JOWHRyYWNpbmdfc3Vic2NyaWJl +cjo6ZmlsdGVyOjpsYXllcl9maWx0ZXJzOjpGaWx0ZXJTdGF0ZTo6Y2xlYXJfZW5hYmxlZDo6aGYy +NWNkNDE5NDg4MTExODKjTjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZmYyODU0 +M2UyYmNlYWI2ZKROXTxudV9hbnNpX3Rlcm06OmRpc3BsYXk6OkFuc2lHZW5lcmljU3RyaW5nPHN0 +cj4gYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOGRkY2Y4MTFmOWQyNjE0OKVOSjxudV9h +bnNpX3Rlcm06OmFuc2k6OlByZWZpeCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhMmQ5 +ZjE1MDE3N2I2NDk4pk5KPG51X2Fuc2lfdGVybTo6YW5zaTo6U3VmZml4IGFzIGNvcmU6OmZtdDo6 +RGlzcGxheT46OmZtdDo6aDM5NWU4NmNhMmNhZjlhMDCnTjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1 +Zz46OmZtdDo6aDZmNDZmNzI2N2I2OTBjMTWoTkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6 +OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDE0OTQ2ZDYwZGY3ODEzOGKpTlU8ZnV0dXJlc19j +aGFubmVsOjpsb2NrOjpUcnlMb2NrPFQ+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6 +OmhmYzc4ZDFhZmYyYjJmZjRlqk5Wd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJEYXRhYmFzZTo6 +SWRiRGF0YWJhc2U6Om9iamVjdF9zdG9yZV9uYW1lczo6aGY2MWQ0N2Q4M2EzN2NiNGarTo0BY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZlYzwoc2VyZGU6Ol9fcHJpdmF0ZTo6 +ZGU6OmNvbnRlbnQ6OkNvbnRlbnQsc2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6OmNvbnRlbnQ6OkNvbnRl +bnQpPj46OmgxZTI3MzcxN2I3NmE1YjVlrE5kY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9j +Ojp2ZWM6OlZlYzxzZXJkZTo6X19wcml2YXRlOjpkZTo6Y29udGVudDo6Q29udGVudD4+OjpoMDkz +ZmEwMzU0YzYxM2JiOK1OMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2ZhZjRlMTZi +ZmJhYzIzOK5OMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTI4MzAwOTFhZDk3ZTcx +NK9ORDx1MzIgYXMgdm9kb3plbWFjOjp1dGlsaXRpZXM6OlZhckludD46OnRvX3Zhcl9pbnQ6Omg1 +ZGY4YzE5YjhmMGNhOGFmsE47c2VyZGVfanNvbjo6c2VyOjpGb3JtYXR0ZXI6OmVuZF9vYmplY3Q6 +OmgzYmU2ODFmODJjNTNkYTc2LjOxTkM8ZGlnZXN0OjptYWM6Ok1hY0Vycm9yIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmgxYzFiMGJkNGEwYWI1YzI2sk4yPCZUIGFzIGNvcmU6OmZtdDo6RGlz +cGxheT46OmZtdDo6aDdlNThlOWJhYjM2Yzg3ODmzTjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5 +Pjo6Zm10OjpoZjZkM2I3ODkyZjBlNDJhMbRORzxpbm91dDo6ZXJyb3JzOjpQYWRFcnJvciBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjdhNzQ1NmY0NDVhOTRjNC4xtU5HPGJsb2NrX3BhZGRp +bmc6OlVucGFkRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDM2NWJkYmQ0OGI1ODMz +NDW2TjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDVlMjRmODA3OGFiZWQ1NmW3Tjtz +ZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6aDNiZTY4MWY4MmM1M2RhNzYu +NLhOMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDMyMTc5MDA4OTVjNzVkMblONnNl +cmRlOjpfX3ByaXZhdGU6OmRlOjptaXNzaW5nX2ZpZWxkOjpoMTRiODk2YTQ4MWM4NDBlNLpONnNl +cmRlOjpfX3ByaXZhdGU6OmRlOjptaXNzaW5nX2ZpZWxkOjpoMThmNDQ4OWY1ODQwZDViY7tONnNl +cmRlOjpfX3ByaXZhdGU6OmRlOjptaXNzaW5nX2ZpZWxkOjpoOGM2MmU5NmFlODAyMDk3ObxOSzxo +a2RmOjplcnJvcnM6OkludmFsaWRMZW5ndGggYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDRi +OGE4ZDE3NTBhZWI0OTQuMr1OjwF2b2RvemVtYWM6Om9sbTo6c2Vzc2lvbjo6cm9vdF9rZXk6Ol86 +OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3Igdm9kb3plbWFjOjpvbG06OnNlc3Npb246 +OnJvb3Rfa2V5OjpSb290S2V5Pjo6c2VyaWFsaXplOjpoNGI0MWRiOGY2MWEyNjg4Yr5OSjx2b2Rv +emVtYWM6OnNhczo6SW52YWxpZENvdW50IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhmN2Iz +ZDU4ZDIyMjVhOWRmv05DPCZtdXQgVCBhcyBieXRlczo6YnVmOjpidWZfaW1wbDo6QnVmPjo6YWR2 +YW5jZTo6aGRkMzc1ZDkyYTA0Yjk4MTEuM8BOWGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx2b2Rv +emVtYWM6Om9sbTo6YWNjb3VudDo6bGlib2xtOjpPbmVUaW1lS2V5Pjo6aDkzM2FjYTYwZTdiMjI3 +YmTBTmZjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dm9kb3plbWFjOjp1dGlsaXRpZXM6OmxpYm9s +bV9jb21wYXQ6OkxpYm9sbUVkMjU1MTlLZXlwYWlyPjo6aDgxOTUxZDQyMzEwZDg2YzLCTmljb3Jl +OjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPHZvZG96ZW1hYzo6b2xtOjphY2Nv +dW50OjpsaWJvbG06Ok9uZVRpbWVLZXk+Pjo6aDIyZjRkZTdjMGJjNGE4M2HDTjA8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDAyYWY1YTYxOTQ2MzViOWHETjA8JlQgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aGYzNWEyMDMwNjM5MjcyOWbFTjI8JlQgYXMgY29yZTo6Zm10OjpEaXNw +bGF5Pjo6Zm10OjpoNjQ5NWRhZmZiOWE2Njg3OcZOM2FsbG9jOjpzbGljZTo6PGltcGwgW1RdPjo6 +Y29uY2F0OjpoYjgzZWVlMjFmZDEyYTAwMcdOSjxjcnlwdG9fY29tbW9uOjpJbnZhbGlkTGVuZ3Ro +IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxOWUwNmJhNmRlMjlhMWQ5yE5MPGhrZGY6OmVy +cm9yczo6SW52YWxpZFBya0xlbmd0aCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTYzNTEz +NTcwY2JlYTg3NclOUnZvZG96ZW1hYzo6bWVnb2xtOjpzZXNzaW9uX2tleXM6OlNlc3Npb25LZXk6 +OnRvX3NpZ25hdHVyZV9ieXRlczo6aGM0MjAzNDMxY2Q3YzhjNWLKTjtzZXJkZV9qc29uOjpzZXI6 +OkZvcm1hdHRlcjo6ZW5kX29iamVjdDo6aDNiZTY4MWY4MmM1M2RhNzYuNctOPXNlcmRlX2pzb246 +OnNlcjo6Rm9ybWF0dGVyOjpiZWdpbl9vYmplY3Q6OmhjNmFjYjYzZTZlZjdjMDEwLjHMTkNzZXJk +ZV9qc29uOjpzZXI6OkZvcm1hdHRlcjo6YmVnaW5fb2JqZWN0X3ZhbHVlOjpoYTk4ODE4MWFhYjAz +ZGZjZS4yzU44PEQgYXMgZGlnZXN0OjpkaWdlc3Q6OkRpZ2VzdD46OnVwZGF0ZTo6aDQ1M2Y1MTQx +NjllN2M2YjnOTjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDZlMjQxZjhhOTdmNzA4 +MjHPTjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOWRlYTBiNjNjNTgwNjhiN9BO +MjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhNDhmYzBhNjg2OTYwMDdh0U6XATx2 +b2RvemVtYWM6OnR5cGVzOjpjdXJ2ZTI1NTE5OjpDdXJ2ZTI1NTE5UHVibGljS2V5IGFzIGNvcmU6 +OmNvbnZlcnQ6OkZyb208JnZvZG96ZW1hYzo6dHlwZXM6OmN1cnZlMjU1MTk6OkN1cnZlMjU1MTlT +ZWNyZXRLZXk+Pjo6ZnJvbTo6aDM4MTE2NGI5MDc2MmI4MjjSTkl2b2RvemVtYWM6Om1lZ29sbTo6 +bWVzc2FnZTo6TWVnb2xtTWVzc2FnZTo6ZnJvbV9iYXNlNjQ6OmgzOTMxZTZhMzViMTYzYjdj004w +PCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2NWYwZGJiMjk0MGQ2ODYx1E4yPCZUIGFz +IGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDk2ZTNiZDg2YjcwMzBkYTjVTn9jb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpT +ZXNzaW9uOjpmcm9tX2xpYm9sbV9waWNrbGU6OlNlbmRlckNoYWluPj46Omg0NDY2YmQxNmI3YWQ2 +ZjYy1k5bY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHZvZG96ZW1hYzo6bWVnb2xtOjpsaWJvbG06 +OkxpYm9sbVJhdGNoZXRQaWNrbGU+OjpoNzBiNWRmNWE5ZGVhMmQ4MtdOggFjb3JlOjpwdHI6OmRy +b3BfaW5fcGxhY2U8YWxsb2M6OnZlYzo6VmVjPHZvZG96ZW1hYzo6b2xtOjpzZXNzaW9uOjpTZXNz +aW9uOjpmcm9tX2xpYm9sbV9waWNrbGU6OlJlY2VpdmluZ0NoYWluPj46OmgzMmZlNWFjZGY0ZDQ1 +MWNi2E5BPGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEwMDc0 +ZDVkNTExNThjMjQuMTjZTkU8ZGlnZXN0OjptYWM6Ok1hY0Vycm9yIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6OmgxYzFiMGJkNGEwYWI1YzI2LjHaTkk8YmxvY2tfcGFkZGluZzo6VW5wYWRFcnJv +ciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzY1YmRiZDQ4YjU4MzM0NS4x205Qdm9kb3pl +bWFjOjptZWdvbG06Omdyb3VwX3Nlc3Npb246Okdyb3VwU2Vzc2lvbjo6bWVzc2FnZV9pbmRleDo6 +aGExZWE0ZmMyYmJhMDg5OTLcTmN2b2RvemVtYWM6Om1lZ29sbTo6aW5ib3VuZF9ncm91cF9zZXNz +aW9uOjpJbmJvdW5kR3JvdXBTZXNzaW9uOjpmaXJzdF9rbm93bl9pbmRleDo6aDFmNGQ1NzBlOTlj +MzE4ZDndTjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDMwM2YzZTJkNGIzNmJlMjne +TjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOWE3MzliYmIzOWNlZmVmZd9OMDwm +VCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDczMmY3MTI0OTk2MjQxZOBOODxEIGFzIGRp +Z2VzdDo6ZGlnZXN0OjpEaWdlc3Q+Ojp1cGRhdGU6OmhkYmU2N2E0NTcyNWE3MTUx4U5WPGVkMjU1 +MTlfZGFsZWs6OnNpZ25pbmc6OlNpZ25pbmdLZXkgYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6 +ZHJvcDo6aDE4MDI1ZDIwNTBhNzk2MGXiTjo8RCBhcyBkaWdlc3Q6OmRpZ2VzdDo6RGlnZXN0Pjo6 +dXBkYXRlOjpoZGJlNjdhNDU3MjVhNzE1MS4x405SPGVkMjU1MTk6OlNpZ25hdHVyZSBhcyBjb3Jl +Ojpjb252ZXJ0OjpUcnlGcm9tPCZbdThdPj46OnRyeV9mcm9tOjpoMjk5MGM0YjIzZTBhNDVlN+RO +djwmY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjpTY2FsYXIgYXMgY29yZTo6b3BzOjphcml0aDo6 +TXVsPGN1cnZlMjU1MTlfZGFsZWs6OnNjYWxhcjo6U2NhbGFyPj46Om11bDo6aDA0NjNkN2UzNzFj +ZjliMjDlTnY8JmN1cnZlMjU1MTlfZGFsZWs6OnNjYWxhcjo6U2NhbGFyIGFzIGNvcmU6Om9wczo6 +YXJpdGg6OkFkZDxjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcj4+OjphZGQ6Omg2OWIy +MjYxZTZhYzdiZjRj5k5EY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6RWR3YXJkc1BvaW50Ojpt +dWxfYmFzZTo6aGY3NjIwNTllMjAwZWQyZjjnTjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aDRiMDVhM2Y2MDk3NTJhYTToTjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10Ojpo +MzUwOWQ3NGVlYzk3NjhhY+lOMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNmRjZTlh +MWM2OWUzNGVmNOpOMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg5MDc3ODkyYjhh +ZjQxNjMx604sc2hhMjo6c2hhNTEyOjpjb21wcmVzczUxMjo6aDY3ZjZiODE5MTY5MTA0MWTsTkU8 +ZGlnZXN0OjptYWM6Ok1hY0Vycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDU4NTdi +MGI1NDkzZGY4MjLtTjA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDMwZDYwNWEzMzNk +OTdhYTfuTkk8YmxvY2tfcGFkZGluZzo6VW5wYWRFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+ +OjpmbXQ6OmhhZjYwMDU0NTYyZWMyOTdi704wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg4YzYyMjllNDMzNDA0NmVm8E4wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4ZTRl +N2E3ZTM3ZmVkNjc38U4uY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfZm10OjpoNmY5OGM2NDlmYzRj +YzE0OPJOMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg5ZDQ3ZWE1YmQyMDVlZDFk +804yPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGZjYWViM2I1YWE3MGU2YzP0TkE8 +Y29yZTo6Zm10OjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTAwNzRkNWQ1MTE1 +OGMyNC4xOfVOvQE8cnVtYV9ldmVudHM6OnJvb206Om1lc3NhZ2U6Ol86OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIHJ1bWFfZXZlbnRzOjpyb29tOjptZXNzYWdlOjpGb3JtYXR0ZWRC +b2R5Pjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46 +OmV4cGVjdGluZzo6aDAyMTM3MTEyMjMxMjRkNzj2TpgBPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlm +aWNhdGlvbjo6YWNjZXB0OjpUb0RldmljZUtleVZlcmlmaWNhdGlvbkFjY2VwdEV2ZW50Q29udGVu +dCBhcyBydW1hX2V2ZW50czo6Y29udGVudDo6RXZlbnRDb250ZW50Pjo6ZXZlbnRfdHlwZTo6aDkx +Y2EwNWExYmRmOTQ4YTX3TpgBPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6Y2FuY2Vs +OjpUb0RldmljZUtleVZlcmlmaWNhdGlvbkNhbmNlbEV2ZW50Q29udGVudCBhcyBydW1hX2V2ZW50 +czo6Y29udGVudDo6RXZlbnRDb250ZW50Pjo6ZXZlbnRfdHlwZTo6aDcxMGI5MTkwNjc5ZjVmZTD4 +TpQBPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6ZG9uZTo6VG9EZXZpY2VLZXlWZXJp +ZmljYXRpb25Eb25lRXZlbnRDb250ZW50IGFzIHJ1bWFfZXZlbnRzOjpjb250ZW50OjpFdmVudENv +bnRlbnQ+OjpldmVudF90eXBlOjpoZWMxMDBkMGU1NWY2YzIxMPlOkgE8cnVtYV9ldmVudHM6Omtl +eTo6dmVyaWZpY2F0aW9uOjprZXk6OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uS2V5RXZlbnRDb250 +ZW50IGFzIHJ1bWFfZXZlbnRzOjpjb250ZW50OjpFdmVudENvbnRlbnQ+OjpldmVudF90eXBlOjpo +MjA1MjhmZjhkMGNiMjdiOfpOkgE8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjptYWM6 +OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uTWFjRXZlbnRDb250ZW50IGFzIHJ1bWFfZXZlbnRzOjpj +b250ZW50OjpFdmVudENvbnRlbnQ+OjpldmVudF90eXBlOjpoOGFiZDAyZGJhYmVmYWI3OftOlgE8 +cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpyZWFkeTo6VG9EZXZpY2VLZXlWZXJpZmlj +YXRpb25SZWFkeUV2ZW50Q29udGVudCBhcyBydW1hX2V2ZW50czo6Y29udGVudDo6RXZlbnRDb250 +ZW50Pjo6ZXZlbnRfdHlwZTo6aDRiOTA0OGJjZTUwM2Q0MjT8TpYBPHJ1bWFfZXZlbnRzOjprZXk6 +OnZlcmlmaWNhdGlvbjo6c3RhcnQ6OlRvRGV2aWNlS2V5VmVyaWZpY2F0aW9uU3RhcnRFdmVudENv +bnRlbnQgYXMgcnVtYV9ldmVudHM6OmNvbnRlbnQ6OkV2ZW50Q29udGVudD46OmV2ZW50X3R5cGU6 +OmgyZWUyNzFjYmUzNzQzYzc0/U6oATxydW1hX2V2ZW50czo6cm9vbTo6Xzo6PGltcGwgc2VyZGU6 +OmRlOjpEZXNlcmlhbGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206Okpzb25XZWJLZXk+OjpkZXNl +cmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6ZXhwZWN0aW5n +OjpoMjdlNzk5ZDVjN2Y3ODRkY/5ONnNlcmRlOjpfX3ByaXZhdGU6OmRlOjptaXNzaW5nX2ZpZWxk +OjpoNDM5ODcxNmQ5NDQ4YTE4Nf9OhgE8cnVtYV9ldmVudHM6OnNlY3JldDo6cmVxdWVzdDo6VG9E +ZXZpY2VTZWNyZXRSZXF1ZXN0RXZlbnRDb250ZW50IGFzIHJ1bWFfZXZlbnRzOjpjb250ZW50OjpF +dmVudENvbnRlbnQ+OjpldmVudF90eXBlOjpoNWY4YTU4YjFlYzYzNGE4NIBPVHNlcmRlOjpzZXI6 +OmltcGxzOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yICZUPjo6c2VyaWFsaXplOjpo +NDIyZjNhYzg2MGU0ZjhiM4FPP3J1bWFfY29tbW9uOjpzZXJkZTo6Y293OjpkZXNlcmlhbGl6ZV9j +b3dfc3RyOjpoODg5M2UyMDlkZmJhOWM3ZYJPQTxjb3JlOjpmbXQ6OkVycm9yIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6OmgxMDA3NGQ1ZDUxMTU4YzI0LjIwg0/lATxydW1hX2V2ZW50czo6cm9v +bTo6ZW5jcnlwdGVkOjpyZWxhdGlvbl9zZXJkZTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3IgcnVtYV9ldmVudHM6OnJvb206OmVuY3J5cHRlZDo6cmVsYXRpb25fc2VyZGU6OlRo +cmVhZFVuc3RhYmxlRGVIZWxwZXI+OjpkZXNlcmlhbGl6ZTo6X19WaXNpdG9yIGFzIHNlcmRlOjpk +ZTo6VmlzaXRvcj46OmV4cGVjdGluZzo6aDY0ODRiZmE1OGY2NmEzMGSET5oBPHJ1bWFfZXZlbnRz +OjprZXk6OnZlcmlmaWNhdGlvbjo6cmVxdWVzdDo6VG9EZXZpY2VLZXlWZXJpZmljYXRpb25SZXF1 +ZXN0RXZlbnRDb250ZW50IGFzIHJ1bWFfZXZlbnRzOjpjb250ZW50OjpFdmVudENvbnRlbnQ+Ojpl +dmVudF90eXBlOjpoNDJiMzg0YTU0NzRlNzdkZIVPMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+ +OjpmbXQ6OmgyNWM5MjdlYzQ3MTM2ZGU2hk9AcnVtYV9jb21tb246OnRpbWU6OlNlY29uZHNTaW5j +ZVVuaXhFcG9jaDo6bm93OjpoODc2NzM3MDI2OWI4Mzc3NIdPQTxjb3JlOjpmbXQ6OkVycm9yIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxMDA3NGQ1ZDUxMTU4YzI0LjIxiE9dPHJ1bWFfY29t +bW9uOjppZGVudGlmaWVyczo6c2Vzc2lvbl9pZDo6U2Vzc2lvbklkIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg0M2U1MzQwMmRhYzQwMDgwiU8yPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46 +OmZtdDo6aDNjYjA0ZDcyNzZmMDUwY2KKTzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10 +OjpoYjM4NDA5MDQxMzY2NTIzMYtPMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omgx +YTUyZjQxYjBiMWJkMDUwjE90Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjp2ZWM6OlZl +YzxydW1hX2NvbW1vbjo6Y2Fub25pY2FsX2pzb246OnZhbHVlOjpDYW5vbmljYWxKc29uVmFsdWU+ +Pjo6aDNkOWE5NmY5NTk1OTBlYzaNTzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRl +ZjBiY2ViZGNhN2JlYTSOTzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDE3YzFkYTky +YzIzZGQ1MTGPTzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGIzOWRkMzZjYTFiNGI2 +NjOQT0t0aW1lOjpvZmZzZXRfZGF0ZV90aW1lOjpPZmZzZXREYXRlVGltZTo6dG9fY2FsZW5kYXJf +ZGF0ZTo6aDJjZjY3MjFiZTlhMmI4ZjGRTzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDRkNDAzZDk0MTE5NmY1OWWST1A8Y29yZTo6YWxsb2M6OmxheW91dDo6TGF5b3V0RXJyb3IgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDJlYWQwMjA4MDY1NDMxYzMuMpNPMDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoNmI1NmE2MWQ0MDVlNDhmYZRPLmNvcmU6OmZtdDo6V3JpdGU6 +OndyaXRlX2ZtdDo6aDhiZDEwYzNhNTgyZDJhODmVTzA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46 +OmZtdDo6aDI5Njg2MTg3MmJiZmFhNTeWTzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10 +OjpoNTRhOTc4NmU5ZTYwNDE3NJdPMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg2 +M2NmMGEwMTMxNDhiYWIxmE8yPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDc0ODI5 +MDA2MWY0NzI4NDaZTzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOWNiYmEzMzdl +MTQxNzljZJpPZjxydW1hX2lkZW50aWZpZXJzX3ZhbGlkYXRpb246OmVycm9yOjpWb2lwVmVyc2lv +bklkRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoODY5NjQxZTkzNDQyMWJlY5tP +ZDxydW1hX2lkZW50aWZpZXJzX3ZhbGlkYXRpb246OmVycm9yOjpWb2lwVmVyc2lvbklkRXJyb3Ig +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDRmMWNjODgxMGMxZTIxZTWcT048anNfaW50Ojpl +cnJvcjo6VHJ5RnJvbUludEVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDc3OTU2 +N2UwMmJlOThjNzadT0w8anNfaW50OjplcnJvcjo6VHJ5RnJvbUludEVycm9yIGFzIGNvcmU6OmZt +dDo6RGVidWc+OjpmbXQ6Omg3OWZiMzM2Yzk4MTBhZDA2nk8yPCZUIGFzIGNvcmU6OmZtdDo6RGlz +cGxheT46OmZtdDo6aDZiMGVjNGM1Y2U5MDQzZDafT188dHJhY2luZ19jb3JlOjpkaXNwYXRjaGVy +OjpTZXRHbG9iYWxEZWZhdWx0RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYzZj +ODkzNGMzZTE5YWNlY6BPSGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2 +dGFibGUuc2hpbX19OjpoMjFmOGNhYmYyNWExMGRmN6FPSGNvcmU6Om9wczo6ZnVuY3Rpb246OkZu +T25jZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoODEzMzJmOTMyNjU1N2ZkMaJPVzxodHRw +OjpoZWFkZXI6OnZhbHVlOjpJbnZhbGlkSGVhZGVyVmFsdWUgYXMgY29yZTo6Zm10OjpEaXNwbGF5 +Pjo6Zm10OjpoODdlOTZiMjYxZTA3ZTA5YqNPTzxodHRwOjpzdGF0dXM6OkludmFsaWRTdGF0dXND +b2RlIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDM5MmFjM2Y1Zjc5MWIxZTikT1U8aHR0 +cDo6aGVhZGVyOjpuYW1lOjpJbnZhbGlkSGVhZGVyTmFtZSBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+ +OjpmbXQ6OmgyYTg2ZjhlMTkwODZmMTc5pU9RPGh0dHA6OmhlYWRlcjo6bWFwOjpNYXhTaXplUmVh +Y2hlZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzYTkyYjgzMWE4ZmUzNzA0pk9LPGh0 +dHA6Om1ldGhvZDo6SW52YWxpZE1ldGhvZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0 +MGE3MzEzNzVmYmM0YmUwp09Ec2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxSPjo6cGFyc2Vf +YW55X251bWJlcjo6aDljMjc2ZjQ3NDZhNGQ0ODSoT0E8Y29yZTo6Zm10OjpFcnJvciBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTAwNzRkNWQ1MTE1OGMyNC4yMqlPSDxzZXJkZV9qc29uOjpl +cnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZDFiYWMzYTIxMWIyZTNk +Y6pPMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWZmMTlhODJjMTYzNTJiNqtPYjxh +bGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2V4dGVuZDo6U3BlY0V4dGVu +ZDxULEk+Pjo6c3BlY19leHRlbmQ6OmhlYzQ5YzJlYzAzYWI1MDI0rE9lPHNlcmRlX2pzb246OnZh +bHVlOjpzZXI6OlJhd1ZhbHVlRW1pdHRlciBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVyPjo6c2Vy +aWFsaXplX3N0cjo6aGZmZmJlZjEzZmFkYzM1ZTKtT1c8c2VyZGVfanNvbjo6cmVhZDo6U3RyUmVh +ZCBhcyBzZXJkZV9qc29uOjpyZWFkOjpSZWFkPjo6cGFyc2Vfc3RyX3Jhdzo6aDgxM2ZhN2VmZGMw +NTZiYTKuT108c2VyZGVfanNvbjo6cmVhZDo6U3RyUmVhZCBhcyBzZXJkZV9qc29uOjpyZWFkOjpS +ZWFkPjo6YmVnaW5fcmF3X2J1ZmZlcmluZzo6aDY3OTBlMjc0OTlkZWNlZDGvTzI8JlQgYXMgY29y +ZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZGZmMTVjYjgxNDlkMWZkZrBPLmNvcmU6OmZtdDo6V3Jp +dGU6OndyaXRlX2ZtdDo6aDYzYTRlMzk5NDcyODNkZjOxTy5jb3JlOjpmbXQ6OldyaXRlOjp3cml0 +ZV9mbXQ6Omg4MjIwNTk0ZDY5Mzk3OTlksk88c2VyZGU6Ol9fcHJpdmF0ZTo6c3RyaW5nOjpmcm9t +X3V0ZjhfbG9zc3k6OmhlODE1YzcxMTY4OTJjMTQzs09QPGNvcmU6OmFsbG9jOjpsYXlvdXQ6Okxh +eW91dEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgyZWFkMDIwODA2NTQzMWMzLjO0 +TyVqc19zeXM6OkFycmF5OjpnZXQ6OmgxMzE0MDQwMmQwMWVlZTQwtU8kanNfc3lzOjpBcnJheTo6 +YXQ6Omg5NWQ3OTVlNzAzYjA5Yjc5tk8qd2FzbV9iaW5kZ2VuOjp0aHJvd19zdHI6OmgzZTQxNDhl +MzY2MmZlYjJkt08xd2FzbV9iaW5kZ2VuOjpfX3J0Ojp0aHJvd19udWxsOjpoODEyMDQxMzFlM2Q2 +NDI0ZLhPMndhc21fYmluZGdlbjo6X19ydDo6Ym9ycm93X2ZhaWw6OmgxMTIwZTJkZDFjMTZmN2Y2 +uU8uY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfZm10OjpoM2M0M2U0MGUxYzU1YmVjObpPLmNvcmU6 +OmZtdDo6V3JpdGU6OndyaXRlX2ZtdDo6aDllYWM0M2EzNWZiNzVlMDK7Ty5jb3JlOjpmbXQ6Oldy +aXRlOjp3cml0ZV9mbXQ6OmhmYWNkYTEyMTk2N2Y4ODJhvE8sc3RkOjpwYW5pYzo6cmVzdW1lX3Vu +d2luZDo6aGU1M2I5ZjQ3ODM5MzBmZji9TzA8KCkgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDFjY2YxMDA3NmMxZmU4ZTW+Ty5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6OmhhNDA2MDYz +YWM1NDlmODJjv09BPGNvcmU6OmZtdDo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDEwMDc0ZDVkNTExNThjMjQuMjPAT1A8cnVzdGNfZGVtYW5nbGU6OlNpemVMaW1pdEV4aGF1c3Rl +ZCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYWY2NTM0NDNhZmRjMmNiZsFPLmNvcmU6OmZt +dDo6V3JpdGU6OndyaXRlX2ZtdDo6aDM0ZDFlN2JmNjk0M2Y0OWLCT0E8Y29yZTo6Zm10OjpFcnJv +ciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTAwNzRkNWQ1MTE1OGMyNC4yNMNPUDxjb3Jl +OjphbGxvYzo6bGF5b3V0OjpMYXlvdXRFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +MmVhZDAyMDgwNjU0MzFjMy40xE8zYWxsb2M6OmFsbG9jOjpoYW5kbGVfYWxsb2NfZXJyb3I6Omg5 +YjJkZGI4NTA1ZTZkOTc3xU9NPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6Oldy +aXRlPjo6d3JpdGVfY2hhcjo6aGQyMGE0YzI0MWU4ZDVlNzMuMzDGT1E8Y29yZTo6bnVtOjplcnJv +cjo6VHJ5RnJvbUludEVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDAzMDBmZmRm +ZDcwYTgyYTPHTy5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6OmgyZTJlYjdmZTQxMDRmZjI3 +yE8zPHN0ciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwZTc0OTMzZTQzYmI2ZmQ4yU9L +PGNvcmU6OnN5bmM6OmF0b21pYzo6QXRvbWljVTY0IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +Omg3MDFiYzhmNGFlNDI0ODRmyk8wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxOTIw +OGJkOWMzY2Q2N2Uzy08GbWVtc2V0zE8GbWVtY21wzU8GbWVtY3B5zk8HbWVtbW92Zc9PTjx3YXNt +X2JpbmRnZW46OkpzVmFsdWUgYXMgY29yZTo6Y29udmVydDo6RnJvbTx1c2l6ZT4+Ojpmcm9tOjpo +MWYzNTZiYTBlYmQ0NmFiMNBPRXN0ZDo6aGFzaDo6cmFuZG9tOjpSYW5kb21TdGF0ZTo6bmV3OjpL +RVlTOjpfX2dldGl0OjpoOTJiM2VkNDE5MmIwNDliONFPMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0 +ZWQ+OjpmbXQ6OmgwYTIzMWY0MWRhYzhmYjAx0k8yPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46 +OmZtdDo6aDBkNjI1MWEyMzk2MzcxMzfTTzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10 +OjpoNDkyMWM5ZTk3MGZiMzVkN9RPMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg0 +YTE2NmQ2NGMzMGU4NmQ11U8yPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDVjZDZl +OWU2NDliMzJlYmHWTzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNjIyNDQyNWMw +ZTMyZmNiN9dPMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg4YzZmYjhhMjU0Nzg4 +OGMy2E8yPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGQwZDc3MTM4MjllMDFiNjjZ +TzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZTFlNjkzMzRlNTJhMzUwMdpPMjxU +IGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhmMGZiZDUyYTc1MzNkN2Vi208yPGJvb2wg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDZhMjExYjRkNTU0MmZjNTDcTz48anNfc3lzOjpE +YXRlIGFzIGNvcmU6OmNsb25lOjpDbG9uZT46OmNsb25lOjpoODE5ZDg4ZWRmMzQxNGNlNt1PHHVw +bG9hZHNpZ25pbmdrZXlzcmVxdWVzdF9uZXfeT2g8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoZmRiMDEzYTdlMjY0OGRmON9PK3N0ZDo6dGhyZWFkOjpwYW5pY2tpbmc6OmgyZGMxZmJkMjhk +NTJkYTZjLjHgT3U8dHJhY2luZ19zdWJzY3JpYmVyOjpmbXQ6OlN1YnNjcmliZXI8TixFLEYsVz4g +YXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6Y2xvbmVfc3Bhbjo6aDI5 +NWRhNWZiMzdmNmEzNDDhT3g8dHJhY2luZ19zdWJzY3JpYmVyOjpmbXQ6OlN1YnNjcmliZXI8TixF +LEYsVz4gYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6ZXZlbnRfZW5h +YmxlZDo6aDEzOWFmNTQ4ZDI1N2MzYjjiT3w8dHJhY2luZ19zdWJzY3JpYmVyOjpmbXQ6OlN1YnNj +cmliZXI8TixFLEYsVz4gYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6 +cmVnaXN0ZXJfY2FsbHNpdGU6OmgzZDU5OGIwMmUyOGJjNmM3409vPHRyYWNpbmdfc3Vic2NyaWJl +cjo6Zm10OjpTdWJzY3JpYmVyPE4sRSxGLFc+IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6 +U3Vic2NyaWJlcj46OmV4aXQ6OmhkYWQxMjIyOGFjMjNiN2Vh5E9wPHRyYWNpbmdfc3Vic2NyaWJl +cjo6Zm10OjpTdWJzY3JpYmVyPE4sRSxGLFc+IGFzIHRyYWNpbmdfY29yZTo6c3Vic2NyaWJlcjo6 +U3Vic2NyaWJlcj46OmVudGVyOjpoYTZjNzBmMDk4OTExMTI0NuVPcDx0cmFjaW5nX3N1YnNjcmli +ZXI6OmZtdDo6U3Vic2NyaWJlcjxOLEUsRixXPiBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6 +OlN1YnNjcmliZXI+OjpldmVudDo6aDlmNTRiOGNhZjFmODIyMDHmT3I8dHJhY2luZ19zdWJzY3Jp +YmVyOjpmbXQ6OlN1YnNjcmliZXI8TixFLEYsVz4gYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVy +OjpTdWJzY3JpYmVyPjo6ZW5hYmxlZDo6aGE1M2ZkNzVlMmZlZDMzMWPnT3M8dHJhY2luZ19zdWJz +Y3JpYmVyOjpmbXQ6OlN1YnNjcmliZXI8TixFLEYsVz4gYXMgdHJhY2luZ19jb3JlOjpzdWJzY3Jp +YmVyOjpTdWJzY3JpYmVyPjo6bmV3X3NwYW46Omg3NGI1NTI2YzRmNGJmZWMx6E90PHRyYWNpbmdf +c3Vic2NyaWJlcjo6Zm10OjpTdWJzY3JpYmVyPE4sRSxGLFc+IGFzIHRyYWNpbmdfY29yZTo6c3Vi +c2NyaWJlcjo6U3Vic2NyaWJlcj46OnRyeV9jbG9zZTo6aGQ2ZmU5NWU4NzFkY2I1NGXpT1w8Y29y +ZTo6ZnV0dXJlOjpwZW5kaW5nOjpQZW5kaW5nPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpG +dXR1cmU+Ojpwb2xsOjpoY2ZkNDEzNDIzZWUwNTgzY+pPXDxjb3JlOjpmdXR1cmU6OnBlbmRpbmc6 +OlBlbmRpbmc8VD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6OmhmMGMw +ODBmNWQ4MjZhOGQz609cPGNvcmU6OmZ1dHVyZTo6cGVuZGluZzo6UGVuZGluZzxUPiBhcyBjb3Jl +OjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbDo6aGZmOWRlZmUzNjU4YzZiMGTsTzI8VCBh +cyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYzBjZGI5MzlhNmRiOTlmY+1PLWNvcmU6OmVy +cm9yOjpFcnJvcjo6c291cmNlOjpoYzNiOTdhMmQzY2NjYmJkMu5PMjxUIGFzIHNlcmRlOjpkZTo6 +RXhwZWN0ZWQ+OjpmbXQ6OmgwNmQwYTVmY2ZlMmVmZWM0708yPFQgYXMgc2VyZGU6OmRlOjpFeHBl +Y3RlZD46OmZtdDo6aDEyMDlhM2NiNzU3OWYyYTjwTzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVk +Pjo6Zm10OjpoMTc2NjMwODNhNWNkMTA4ZvFPMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+Ojpm +bXQ6OmgxZGY5NTk0MDFjZGM2ZjM08k8yPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6 +aDI5Y2FlYzQyOGJhY2ZlODPzTzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMzMx +Yjg0Y2Y3MjdhNDczY/RPMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg0NmZkNDgz +NjIyMjJlODI39U8yPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDU0ZmVlNGQzYTMw +ZDEyMWL2TzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNWM5N2Y2ZDJlYTMzZjdh +MPdPMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg1ZjY3M2MzMTE4NDQ2YTYx+E8y +PFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDY1ZTIxNzJiZDMxMDZhMzn5TzI8VCBh +cyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoODU5Y2FiMjYwYjAxMzg4ZfpPMjxUIGFzIHNl +cmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg4NjY4ODI4M2RiOTY4NDJm+08yPFQgYXMgc2VyZGU6 +OmRlOjpFeHBlY3RlZD46OmZtdDo6aDhjYmE4MmFlNjY3M2Q0MjD8TzI8VCBhcyBzZXJkZTo6ZGU6 +OkV4cGVjdGVkPjo6Zm10OjpoOTE3ZDZmZGYwMmIyOGQ0NP1PMjxUIGFzIHNlcmRlOjpkZTo6RXhw +ZWN0ZWQ+OjpmbXQ6Omg5YmMzOGZhMzI0ZTUyOThj/k8yPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3Rl +ZD46OmZtdDo6aGE5OWY1ZmE4ZTI1MTNjYTn/TzI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6 +Zm10OjpoYjQyOWNhYzY0YzlhNTk3N4BQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6 +OmhjMDVkOGEwMmZmY2ZhMTA0gVAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGMy +YWFhODE1ZjhmZjBiMjCCUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYzVjZWI4 +ZGQ1YjY3NWQ2OINQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhjNWZiYTcxNTk1 +NjBkYjMxhFAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGM3ZDVmMThkZDNlY2Rm +N2aFUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYzgzYjY2ZmNmMjhlNTgzZoZQ +MjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhjZDMzNmIyYWZlZjBhYWYyh1AyPFQg +YXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGQyYjI0OWMyNjMxYmRmNWWIUDI8VCBhcyBz +ZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZGYyODkxZDIxNmFmYTJhZYlQMjxUIGFzIHNlcmRl +OjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhlZjU0YTM5YmUyZTY0MDU4ilAyPFQgYXMgc2VyZGU6OmRl +OjpFeHBlY3RlZD46OmZtdDo6aGY3ZDRhMjI0Mjg5MzY3OTeLUJ4BbWF0cml4X3Nka19jcnlwdG9f +d2FzbTo6dmVyaWZpY2F0aW9uOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtf +Y3J5cHRvX3dhc206OnZlcmlmaWNhdGlvbjo6U2FzPiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVl +Pjo6ZnJvbTo6aDkyYmU5MGUzNDhlNWE0NmKMUJ0BbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6dmVy +aWZpY2F0aW9uOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5cHRvX3dh +c206OnZlcmlmaWNhdGlvbjo6UXI+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpo +MTY0ODI0YmVkYTQxN2Q4OI1QogFtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpyZXF1ZXN0czo6PGlt +cGwgY29yZTo6Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpyZXF1ZXN0czo6 +VG9EZXZpY2VSZXF1ZXN0PiBmb3Igd2FzbV9iaW5kZ2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aDM5ZGQw +OTExMDI2NDYxZGWOUKUBbWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OjxpbXBsIGNv +cmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6cmVxdWVzdHM6OlJvb21N +ZXNzYWdlUmVxdWVzdD4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206OmhiZDU5NmY2 +OTcxOWI4NDM5j1CVAW1hdHJpeF9zZGtfY3J5cHRvX3dhc206OmRldmljZTo6PGltcGwgY29yZTo6 +Y29udmVydDo6RnJvbTxtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpkZXZpY2U6OkRldmljZT4gZm9y +IHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Omg2MTA1OTc0MGJkZjVmYTg4kFCbAW1hdHJp +eF9zZGtfY3J5cHRvX3dhc206Om9sbTo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxtYXRyaXhf +c2RrX2NyeXB0b193YXNtOjpvbG06OkNyb3NzU2lnbmluZ1N0YXR1cz4gZm9yIHdhc21fYmluZGdl +bjo6SnNWYWx1ZT46OmZyb206OmhlMjdmZWY2YThmODU1ZWQ1kVCpAW1hdHJpeF9zZGtfY3J5cHRv +X3dhc206OnJlcXVlc3RzOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPG1hdHJpeF9zZGtfY3J5 +cHRvX3dhc206OnJlcXVlc3RzOjpTaWduYXR1cmVVcGxvYWRSZXF1ZXN0PiBmb3Igd2FzbV9iaW5k +Z2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aGUyMjE1YjExZmYxYmVlYmSSUKABbWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6dHlwZXM6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6dHlwZXM6OlJvb21LZXlJbXBvcnRSZXN1bHQ+IGZvciB3YXNtX2JpbmRnZW46Okpz +VmFsdWU+Ojpmcm9tOjpoZmNkOTA0NTJjMTRlZDdlOJNQrgFtYXRyaXhfc2RrX2NyeXB0b193YXNt +Ojp2ZXJpZmljYXRpb246OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208bWF0cml4X3Nka19jcnlw +dG9fd2FzbTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25SZXF1ZXN0PiBmb3Igd2FzbV9iaW5k +Z2VuOjpKc1ZhbHVlPjo6ZnJvbTo6aGU5YmMxYzlhYzk4Y2FjMjeUUDI8VCBhcyBzZXJkZTo6ZGU6 +OkV4cGVjdGVkPjo6Zm10OjpoMWNkNDFkMjA1NWQ1NGNhZJVQMjxUIGFzIHNlcmRlOjpkZTo6RXhw +ZWN0ZWQ+OjpmbXQ6OmgyNTVmYTk4MjJmNGUwYmE3llAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3Rl +ZD46OmZtdDo6aDM4NjU3NTgyNzE2Yzc1Y2WXUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6 +Zm10OjpoNTVmYTQ5ZWUxYTNiN2I3OZhQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6 +Omg1YmVmMGMxZTgyYWQyODk2mVAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGFh +ZGRhNmNkYTcyYTE4M2GaUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZGU2NTFk +NDUwZjY5OTFkOZtQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhlMzAzNWM0Zjll +NzU2MDhhnFAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDJlOWI4OWU3MjI3OGUw +MDGdUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMzFjYTA5MWNkNTdlMDU2NZ5Q +MjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg0MTA1ZTA5MTQzMzRhMDhhn1AyPFQg +YXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDRkODc2ZDk4ZTAyZDdiNWOgUDI8VCBhcyBz +ZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNTgyMDFkZWY2NmVhMWI3NaFQMjxUIGFzIHNlcmRl +OjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg2YzI3NTQ5MjY4MWVhMzU2olAyPFQgYXMgc2VyZGU6OmRl +OjpFeHBlY3RlZD46OmZtdDo6aDgyY2JjODY3ZTE3NzRhOGKjUDI8VCBhcyBzZXJkZTo6ZGU6OkV4 +cGVjdGVkPjo6Zm10OjpoY2I3YTBmNmE3YTVmYjRhMqRQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0 +ZWQ+OjpmbXQ6OmhlNGE4MTRjZmU5Nzc0NWQ3pVAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46 +OmZtdDo6aGVjZDA1ZWY2ZjRlNDdmZDWmUFI8dHJhY2luZ19jb3JlOjpmaWVsZDo6RGlzcGxheVZh +bHVlPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2YThhYTAyNDk2ZDliMzVip1AyPFQg +YXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDAzZDBkMzc2ZjFjYjI0ZDGoUDI8VCBhcyBz +ZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMGVhYzllYzMyNGIwNzk5OKlQMjxUIGFzIHNlcmRl +OjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgxYzE0MzFkMmMzZDc4NjY5qlAyPFQgYXMgc2VyZGU6OmRl +OjpFeHBlY3RlZD46OmZtdDo6aDU2OWJiM2Y0MGRmYzg4NTWrUDI8VCBhcyBzZXJkZTo6ZGU6OkV4 +cGVjdGVkPjo6Zm10OjpoNTg4NzJiNmVhNTljNjBmMKxQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0 +ZWQ+OjpmbXQ6Omg1YTMwOThiZjQ5ZjY2OGUzrVAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46 +OmZtdDo6aDVjNTMzODY5NWRhODAzYTWuUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10 +OjpoNmI0NGVlMTg0ZDg5MGEyZK9QMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg4 +OWU2Mjg4OWVlYjVkN2M3sFAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDkzYWU1 +OTI3MTg3NGFlNTaxUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYTM5MTI1YTRk +YTk0ZWJjZbJQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhhOGY3NWFmOGE3NzQy +YjJhs1AyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGFjNmY5NThlYjZkNDIyYTm0 +UDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYWQ2ZjYwMzljYWVlZjdhZrVQMjxU +IGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhiNThkNWRmMzk4ZDYyZTVitlAyPFQgYXMg +c2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGI2OWNmNjY1ODQxMjEzYzC3UDI8VCBhcyBzZXJk +ZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYzAzOGFiZjQ3NDk3NjQ1YrhQMjxUIGFzIHNlcmRlOjpk +ZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhjY2E1MGRmMjYzZWQ0OTUxuVAyPFQgYXMgc2VyZGU6OmRlOjpF +eHBlY3RlZD46OmZtdDo6aGVmZWUyMmQ2ZDIzNmJjZDO6UDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVj +dGVkPjo6Zm10OjpoZjZkNThlMjg4MDBjOTk4MbtQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+ +OjpmbXQ6OmhmNDRlMTdjMWQ5ZmM5ZDEwvFAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZt +dDo6aDFhZjNiYmU2NzgxNjU3MTO9UDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10Ojpo +MzMzODFlODBmMGEwYWM5Ob5QMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgzNGI0 +ZDBkMWYzYjczMjAwv1AyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDQ3OGRiZDkz +NzE3ZGIxZTbAUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNGUzZjBhY2Q5YTE4 +ZDQ4YsFQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg1MjNiZDA1MWY3NzU1Mjlj +wlAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDU5OTIwYjE1NDZkY2VhMznDUDI8 +VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNzFlYjUwOGM5OWM2OTFkM8RQMjxUIGFz +IHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg3Nzc2MzFiYzIxNzAyMWRlxVAyPFQgYXMgc2Vy +ZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDc5Y2ZiYTNmYWM0NWFkYjjGUDI8VCBhcyBzZXJkZTo6 +ZGU6OkV4cGVjdGVkPjo6Zm10OjpoOTZiOTk4ZWVjODdjZmVhMsdQMjxUIGFzIHNlcmRlOjpkZTo6 +RXhwZWN0ZWQ+OjpmbXQ6Omg5YTQ0Mzg3YTEwOWM0NzY4yFAyPFQgYXMgc2VyZGU6OmRlOjpFeHBl +Y3RlZD46OmZtdDo6aGEwMDg0YzI5NGUzNmJhMjHJUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVk +Pjo6Zm10OjpoYWFiZWQyM2Q5OWQwOGJiM8pQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+Ojpm +bXQ6OmhiNjViYTU2MjBiOWYzN2Jhy1AyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6 +aGUzMjI0MzY0NmM1YzMyMjPMUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZWI5 +M2ExMjQ5OTNjMzZlM81QMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhmMTE5MGUy +N2M3YzZkZjQyzlBJPGFueWhvdzo6ZXJyb3I6OkVycm9ySW1wbDxFPiBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoMDM2ZWZiMTdhNzRiZDlmNs9QTjxhbnlob3c6OndyYXBwZXI6OkRpc3BsYXlF +cnJvcjxNPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTgxYWFkY2QwZDAzYjdkYtBQMjxU +IGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgyMzYyOTIzMDllNDI3NjFh0VAyPFQgYXMg +c2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDRlMWMxOWM3NjdiMWI4ZWbSUDI8VCBhcyBzZXJk +ZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZjQ1OGU0YWVlOTQ2NjBhM9NQMjxUIGFzIHNlcmRlOjpk +ZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgxMTU2MzM5YzQwZTZlODll1FAyPFQgYXMgc2VyZGU6OmRlOjpF +eHBlY3RlZD46OmZtdDo6aDI0ZjkyMmIxYzU3NWI4NzDVUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVj +dGVkPjo6Zm10OjpoNTAzZDUzM2YzYzY4ZTE0OdZQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+ +OjpmbXQ6Omg1OTg4NmFiNTI0MDU3MDg311AyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZt +dDo6aDY2N2EyMDkzMDY2ZTJlZmXYUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10Ojpo +NmEyOTQ0YTIzMTE5MDQ5NdlQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg3YjE5 +ZjEwODk3MmM2NmIw2lAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGEwY2Y5NTk4 +ZmRhNWM4YzbbUIQBPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjptaXNzaW5nX2ZpZWxkOjpNaXNzaW5n +RmllbGREZXNlcmlhbGl6ZXI8RT4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlh +bGl6ZV9vcHRpb246Omg0YTE1NjViZDg0YWU2NzE43FBtPHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpG +bGF0TWFwRGVzZXJpYWxpemVyPEU+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJp +YWxpemVfYW55OjpoMmI0MDUwMmU3NjI1NGU1Yt1QMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+ +OjpmbXQ6OmgwMzMzMTdmNWRkZTFjNTdj3lAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZt +dDo6aDNmNmU1YmFlYjAzNWU5MTLfUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10Ojpo +NDdmYjlkNzcyM2E2OTQyMOBQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg0OTZi +NzVlZjcxODVkYzQx4VAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGE3ZmY2MGM2 +MmJkOTk0NDPiUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMTgyNjYyODM4OWQ3 +ZWIxMONQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg0MmFjN2NlY2I4YjE0NGFi +5FAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDQ0NGIxYzA1NDVkYzgwODnlUDI8 +VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNzhhMWRjMGMyZDgwYmI5M+ZQMjxUIGFz +IHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhiOWI4MjJhYjgwZWJmNzdm51AyPFQgYXMgc2Vy +ZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGRjMTk0OTQ2OWUwZDY1YzboUDI8VCBhcyBzZXJkZTo6 +ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMTQyNWVmN2YzN2U1MmQyYelQMjxUIGFzIHNlcmRlOjpkZTo6 +RXhwZWN0ZWQ+OjpmbXQ6Omg0ZTU0NjVlODE2YmFjMzg36lAyPFQgYXMgc2VyZGU6OmRlOjpFeHBl +Y3RlZD46OmZtdDo6aDUxNDZiZDFlYWY3Mzc3YznrUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVk +Pjo6Zm10OjpoNTdjYjQzZDQ2NTUwMmQ0OexQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+Ojpm +bXQ6Omg2MWJmOTdlOGJjMmRhOTAx7VAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6 +aDY2MzMwYzlhMzkzMDBjYzTuUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoN2Qz +ZDg5OTNiYTcwMGUzMe9QMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg4NzY0NGZl +ZTQ1YzIwZTBk8FAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDg3Nzk3YzE2Mzg3 +ZDljMjPxUDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoOGJhYjcxYWE1NjFmY2Mz +M/JQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhiNDFjNGIzYzhiNjE1ZTg181Ay +PFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGMzYzNlOTk4YmVjYWMzNTD0UDI8VCBh +cyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMDE1ZThkZDY0MTI0NzdkN/VQMjxUIGFzIHNl +cmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgxNGM2MWVjMjBiNjY1OGY39lAyPFQgYXMgc2VyZGU6 +OmRlOjpFeHBlY3RlZD46OmZtdDo6aDM4YzFiYzAxYWIyZDAyMjb3UDI8VCBhcyBzZXJkZTo6ZGU6 +OkV4cGVjdGVkPjo6Zm10OjpoM2VkYjA5Nzc1NWVjMzU0ZvhQMjxUIGFzIHNlcmRlOjpkZTo6RXhw +ZWN0ZWQ+OjpmbXQ6Omg1YmE5ZDY4MWU4OGZmZmI0+VAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3Rl +ZD46OmZtdDo6aDY5NGM2MGU4Mjc3NDYxZTf6UDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6 +Zm10OjpoY2M2MGI0MWMxMzJmNWU4ZvtQMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6 +OmhjYzhhODE4MGUzOTE3ODg2/FAyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGQ5 +YmY5ZTllZTRkZGEzZDb9UDI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMzZjNDA0 +MzdhNWRlNDk3N/5QR3NlcmRlX3dhc21fYmluZGdlbjo6c3RhdGljX3N0cl90b19qczo6Q0FDSEU6 +Ol9fZ2V0aXQ6Omg1ODM3MzRmM2I2ZGQyYTlk/1BAc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXpl +cjxSPjo6Zml4X3Bvc2l0aW9uOjpoMjRlZjQ3MGU5MTUzNWUzM4BRMjxUIGFzIHNlcmRlOjpkZTo6 +RXhwZWN0ZWQ+OjpmbXQ6OmgwZGQzN2IzMjVhYmYyNDgzgVEyPFQgYXMgc2VyZGU6OmRlOjpFeHBl +Y3RlZD46OmZtdDo6aDE1MjU1YTIwZWM0NTRlOTCCUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVk +Pjo6Zm10OjpoNDdmNjE1ZDRjZjhkODk5ZINRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+Ojpm +bXQ6Omg5OWFhMzY2ZTMxMDM3OGIzhFEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6 +aDBiNjczNGVjY2Y2MmU1NTiFUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYTEy +NjhkMzM4MWU2N2NhN4ZRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhhNzNhNjBk +YTk3MTE4NDE0h1EyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGIwOTAwMTUxYmY0 +MzgzMmOIUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZjlmNThiOTRkZDU2OWQy +Y4lRKWFlYWQ6OkJ1ZmZlcjo6aXNfZW1wdHk6OmgzM2VkMmRmMjYwZWUyNmUwilFZPGNoYWNoYTIw +cG9seTEzMDU6OkNoYUNoYVBvbHkxMzA1PEMsTj4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6 +ZHJvcDo6aDYxOWQyMTkyZGZlMWJhZWGLUVI8cG9seTEzMDU6OlBvbHkxMzA1IGFzIHVuaXZlcnNh +bF9oYXNoOjpVbml2ZXJzYWxIYXNoPjo6ZmluYWxpemU6Omg4Y2I2M2M3M2UxNzI4ODU2jFFHc2Vy +ZGVfd2FzbV9iaW5kZ2VuOjpzdGF0aWNfc3RyX3RvX2pzOjpDQUNIRTo6X19nZXRpdDo6aDM0MWQ4 +ZTEwOGUxYWJmZTONUU48YW55aG93Ojp3cmFwcGVyOjpNZXNzYWdlRXJyb3I8TT4gYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aGZiMzJhZTI0Y2M4MzQyMTKOUYEBc2VyZGU6OmRlOjppbXBsczo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bWFwOjpCVHJlZU1hcDxLLFY+Pjo6ZGVzZXJpYWxpemU6OmhhNDE2NzVhOGI2MTQ0N2Vij1Ey +PFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDVmZDYyYjkwNjM5ZDJhNTaQUTI8VCBh +cyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoODRmOTkwZDZkYjk5YTMwYZFRMjxUIGFzIHNl +cmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg4ZTc0YmU2ZTMyMGVjOTFhklEyPFQgYXMgc2VyZGU6 +OmRlOjpFeHBlY3RlZD46OmZtdDo6aDlkOWRiMTFhMWI5OTYwNWGTUTI8VCBhcyBzZXJkZTo6ZGU6 +OkV4cGVjdGVkPjo6Zm10OjpoYmJjMGNlMzEyNzE4ZWE5OJRROjxUIGFzIGFsbG9jOjpib3Jyb3c6 +OlRvT3duZWQ+Ojp0b19vd25lZDo6aGU2MThhOGNmNDIxMzEzZWSVUWptYXRyaXhfc2RrX2NyeXB0 +bzo6dHlwZXM6OmV2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpSb29tRW5jcnlwdGVkRXZlbnRDb250 +ZW50OjphbGdvcml0aG06OmhiYTU4NGU3MmM0M2MzMWE1llGGATxydW1hX2NvbW1vbjo6aWRlbnRp +ZmllcnM6OmNyeXB0b19hbGdvcml0aG1zOjpEZXZpY2VLZXlBbGdvcml0aG0gYXMgbWF0cml4X3Nk +a19jcnlwdG86OnR5cGVzOjpBbGdvcml0aG0+OjphbGdvcml0aG06Omg3ODNhYWI2MDlhMDRmN2Jm +l1EyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDJlNjI4YWNhZDRhNzdhZWKYUTI8 +VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMzQ1MWFmOTYxMDA3ZWU0ZZlRMjxUIGFz +IHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg0M2ExYjdhYmRlZWY5Zjc4mlEyPFQgYXMgc2Vy +ZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDgxMzIzMjBjN2ZiMGIwNmObUTI8VCBhcyBzZXJkZTo6 +ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZTRiMDBjMGQ2OTA3YTdlNJxRTG1hdHJpeF9zZGtfY3J5cHRv +OjpvbG06OnNpZ25pbmc6OnBrX3NpZ25pbmc6OlNpZ25pbmc6Om5ldzo6aDIyZjgzMDVjYjg5NzIw +NmOdUVhtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpzaWduaW5nOjpwa19zaWduaW5nOjpTZWxmU2ln +bmluZzo6ZXhwb3J0X3NlZWQ6Omg2YjFlNDQ4NjQyZjdlMThmnlEyPFQgYXMgc2VyZGU6OmRlOjpF +eHBlY3RlZD46OmZtdDo6aDBiOTkzNmUxODIyZmM2ZDafUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVj +dGVkPjo6Zm10OjpoNDNjZDU2ZGUzZmNkYjgzY6BRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+ +OjpmbXQ6Omg2M2ZmN2YwM2JmNmZhYzk1oVEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZt +dDo6aDczMDUxOTc0YzRhNWY0NmGiUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10Ojpo +ODE3NWMzOWZlZGM2MDI4M6NRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhjZWQ3 +ODljYTMzYzNiMzk1pFEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGVjOWIxN2U3 +MDA4ZmQ2MWKlUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZjQyMTZhZTkwYjVh +Zjg0OKZROjxUIGFzIGFsbG9jOjpib3Jyb3c6OlRvT3duZWQ+Ojp0b19vd25lZDo6aDRjOTQ5MjRh +MDFmNTBjYWSnUTo8VCBhcyBhbGxvYzo6Ym9ycm93OjpUb093bmVkPjo6dG9fb3duZWQ6OmhiZGY4 +YTZlYWRiOTg4OGFiqFFpc2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlh +bGl6ZSBmb3IgYWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6ZGVzZXJpYWxpemU6Omg2N2M0Nzc5MzEw +NmExYTRjqVEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDQ5YTM3YzMxZTdmNTg3 +MjeqUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNzllMzMyZjM2YTE2NTJhOatR +ZG1hdHJpeF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjppbmJvdW5kOjpJbmJvdW5k +R3JvdXBTZXNzaW9uOjpmcm9tX2V4cG9ydDo6aDI0YmNiZjEzNWMxYjY3YzOsUT9ydW1hX2NvbW1v +bjo6c2VyZGU6OmNvdzo6ZGVzZXJpYWxpemVfY293X3N0cjo6aDU5ZDhjMjBkOWE5ZTVkY2OtUT9y +dW1hX2NvbW1vbjo6c2VyZGU6OmNvdzo6ZGVzZXJpYWxpemVfY293X3N0cjo6aGM5YmQzZjZmMDhi +MDM0ZGKuUT48USBhcyBoYXNoYnJvd246OkVxdWl2YWxlbnQ8Sz4+OjplcXVpdmFsZW50OjpoYzQy +NTI3MzIyN2ZlNjAzOK9RbTxoYXNoYnJvd246Om1hcDo6SGFzaE1hcDxLLFYsUyxBPiBhcyBjb3Jl +OjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkludG9JdGVyYXRvcj46OmludG9faXRlcjo6aDM5NzA1 +YmUwZTM1NDkyMjSwUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNTkwZmQwNTNl +ZmRlODVjOLFRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgwZTk2YmNiOWVjMmEy +MDhislEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDY3OTExMmZjMGM5YjRhMjaz +UTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoODE2NTM4YWMwYTU1ZThmMbRRMjxU +IGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg5Njk3OTUwNTNjNzRjNjQytVEyPFQgYXMg +c2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGNjZDg1YjdhOWM2ZTNlOTe2UTo8VCBhcyBhbGxv +Yzo6Ym9ycm93OjpUb093bmVkPjo6dG9fb3duZWQ6OmhhN2JhYzI5ZmFkNDg5NGZlt1FSPHRyYWNp +bmdfY29yZTo6ZmllbGQ6OkRpc3BsYXlWYWx1ZTxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10 +OjpoNGM0YmU1ZDA0NjYxMjM1ZrhRUjx0cmFjaW5nX2NvcmU6OmZpZWxkOjpEaXNwbGF5VmFsdWU8 +VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGJhNDYwNTk0ZTgxMTA3YzK5UTI8VCBhcyBz +ZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYjU4MjU5MDJiYzg3M2U5MLpRMjxUIGFzIHNlcmRl +OjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhiOTczN2U4NzA0NzJiODVlu1EyPFQgYXMgc2VyZGU6OmRl +OjpFeHBlY3RlZD46OmZtdDo6aGZhZmY0N2M1MGQ4ZjIwODC8UTo8VCBhcyBhbGxvYzo6Ym9ycm93 +OjpUb093bmVkPjo6dG9fb3duZWQ6OmhkYTIxZDk4NzZiYTEyOGM3vVFfPG1hdHJpeF9zZGtfY3J5 +cHRvOjpzdG9yZTo6QmFja3VwRGVjcnlwdGlvbktleSBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVy +b2l6ZTo6aDU0ZWVjY2E4OGRiY2I1ZDC+UTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10 +OjpoNDdkNWY2MmVmNmI2YmI3Zb9RhgE8dHJhY2luZ19zdWJzY3JpYmVyOjpmbXQ6OmZtdF9sYXll +cjo6TGF5ZXI8UyxOLEUsVz4gYXMgdHJhY2luZ19zdWJzY3JpYmVyOjpsYXllcjo6TGF5ZXI8Uz4+ +Ojpvbl9ldmVudDo6QlVGOjpfX2dldGl0OjpoYTUyNWUxMGVlYjI4Yzc3YcBRWzx0cmFjaW5nX3N1 +YnNjcmliZXI6OmZtdDo6Zm9ybWF0OjpXcml0ZXIgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRl +X2ZtdDo6aDVlMDNmYzM5Y2Y0OGZiNTbBUUVtYXRyaXhfc2RrX2NvbW1vbjo6anNfdHJhY2luZzo6 +TE9HR0VSX01BUDo6X19nZXRpdDo6aDU4ODE5MTU1MGU4MmMxZDbCUVI8dHJhY2luZ19jb3JlOjpm +aWVsZDo6RGlzcGxheVZhbHVlPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlMDllMTg3 +NmFkOGFmNzljw1FFdHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6U3BhblJlZjxSPjo6bWV0 +YWRhdGE6OmhlZGRjZjEyOWFiZWQzOTk5xFFOdHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeTo6 +c2hhcmRlZDo6Q0xPU0VfQ09VTlQ6Ol9fZ2V0aXQ6OmhhNTc4OWUyMmIzMWU0ODg1xVFQdHJhY2lu +Z19zdWJzY3JpYmVyOjpmaWx0ZXI6OmxheWVyX2ZpbHRlcnM6OkZJTFRFUklORzo6X19nZXRpdDo6 +aGQwMTE4OWFmZDJmODY2MmPGUTQ8Km11dCBUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2 +YTU1OWM4MWM0ZWMyNzg1x1FJd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9JZGJEYXRhYmFzZTo6SWRi +RGF0YWJhc2U6OmNsb3NlOjpoNDVlMGRiNmQwNzc3NWFiN8hRMjxUIGFzIHNlcmRlOjpkZTo6RXhw +ZWN0ZWQ+OjpmbXQ6Omg1M2E5NTFhYTc5NjE2YTdmyVEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3Rl +ZD46OmZtdDo6aDEzYzAwODU3YTY0OGNiYjbKUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6 +Zm10OjpoMWFkM2Y4NDA0NDQ1NWRjY8tRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6 +OmgzMjUyMWZkNTRlMDk2ZTdmzFEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGJm +YjM3MGFlZTY3YWU1ZjjNUW5nZW5lcmljX2FycmF5OjppbXBsczo6PGltcGwgY29yZTo6Y2xvbmU6 +OkNsb25lIGZvciBnZW5lcmljX2FycmF5OjpHZW5lcmljQXJyYXk8VCxOPj46OmNsb25lOjpoNzQw +ZWU4ZDc2OTAzOGM3Ns5RMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgzNWEyMTcy +NTQzY2RmYjFlz1EyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDRlM2RjNTBkYmU3 +YzE0ODbQUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoODNmYzY0MjdmNmJlOTY5 +NtFRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhlN2Y1MTQ0YWY2MWE0ZDI30lEy +PFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGVmNTdkNWFlNDk0NDIzY2PTUTA8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEwYjYwZTEyNTQ5MDI3ZTTUUWA8dm9kb3plbWFj +OjpvbG06OnNlc3Npb246OnJhdGNoZXQ6OlJlbW90ZVJhdGNoZXRLZXkgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDg4M2MzNWU0NDllOTc0MzPVUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVk +Pjo6Zm10OjpoNzczNzkzMDUxYTE3MzZlMdZRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+Ojpm +bXQ6OmhkYTQ2OGMwZWNkM2Y5NTE011FmPHNlcmRlX2pzb246OnNlcjo6UmF3VmFsdWVTdHJFbWl0 +dGVyPFcsRj4gYXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9tYXA6Omg4OWNh +NTRlMjBiM2VmMDk42FFmPHNlcmRlX2pzb246OnNlcjo6UmF3VmFsdWVTdHJFbWl0dGVyPFcsRj4g +YXMgc2VyZGU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV91NjQ6Omg3YzY2MWI4NWE4MDU3 +Mjhk2VFnPHNlcmRlX2pzb246OnNlcjo6UmF3VmFsdWVTdHJFbWl0dGVyPFcsRj4gYXMgc2VyZGU6 +OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9ub25lOjpoYzgwZGEzZjNmYjYwNGMwMtpRbzxz +ZXJkZV9qc29uOjpzZXI6OlJhd1ZhbHVlU3RyRW1pdHRlcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNl +cmlhbGl6ZXI+OjpzZXJpYWxpemVfdW5pdF92YXJpYW50OjpoOWI0MjY1MmRlZGFhNTc1N9tRMjxU +IGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg1NzEyNGQ1ZGM4MDE2NGI13FEyPFQgYXMg +c2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGYwMDc0MjM5NDM4ZTJlNzjdUT9hcnJheXZlYzo6 +YXJyYXl2ZWNfaW1wbDo6QXJyYXlWZWNJbXBsOjpjbGVhcjo6aDg0ZmVlZDRkOGQzOWNhMDjeUT9h +cnJheXZlYzo6YXJyYXl2ZWNfaW1wbDo6QXJyYXlWZWNJbXBsOjpjbGVhcjo6aDlmYzhkZjUwNGE3 +OTUxYmbfUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNWE0MDNmNGE4Y2EwMjk0 +NOBRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg3N2Y2ZDE5ZjY3NDQyODcx4VEy +PFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDhiMmJlZDBkNjM2Njg4MzjiUTI8VCBh +cyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYzJhZjRhMzE2YzM5ZWFjM+NRMjxUIGFzIHNl +cmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhlZmQ2ZDc5N2VmOGM2MjQ15FFaPHZvZG96ZW1hYzo6 +bWVnb2xtOjpyYXRjaGV0OjpSYXRjaGV0Qnl0ZXMgYXMgemVyb2l6ZTo6WmVyb2l6ZT46Onplcm9p +emU6OmhlYTA0OWY3NzliODY3NzUy5VGEATxzZXJkZTo6X19wcml2YXRlOjpkZTo6bWlzc2luZ19m +aWVsZDo6TWlzc2luZ0ZpZWxkRGVzZXJpYWxpemVyPEU+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emVyPjo6ZGVzZXJpYWxpemVfb3B0aW9uOjpoYzVjNTAwYzkwODUyMGE1MuZRMjxUIGFzIHNlcmRl +OjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg0MWUwOGQzNzkyOThkNDU151EyPFQgYXMgc2VyZGU6OmRl +OjpFeHBlY3RlZD46OmZtdDo6aDZlYjQwZmRjZWFhYmJmM2LoUTI8VCBhcyBzZXJkZTo6ZGU6OkV4 +cGVjdGVkPjo6Zm10OjpoYTJjZTgwMDUyYWY2NmRjNelRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0 +ZWQ+OjpmbXQ6OmhhZjNlOWI1Mjg4MjEzMTFh6lEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46 +OmZtdDo6aGJiY2QxYzEwOWMwYTVjNTXrUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10 +OjpoOTRmMjg3MTczYmM4NDJjYexRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omgw +M2QzOWE2YzMwMjcxYzA07VEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDU1ZTcy +NmRjNDUwZThjODfuUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoOWI3NTBjNTQ3 +ZjgxNmU3M+9RMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhiZWMxM2NmOGY2NTcy +ZTFm8FEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDI5MWFlNjYwYjZmM2RmNWHx +UU92b2RvemVtYWM6OnR5cGVzOjpjdXJ2ZTI1NTE5OjpDdXJ2ZTI1NTE5UHVibGljS2V5Ojp0b19i +YXNlNjQ6OmhjMGJjYmE2ZWYxZGU2MWEw8lEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZt +dDo6aDAwYTU1ODNkMjUyMjI3ZWTzUTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10Ojpo +MDEwNWY4OTQ4MjRlNGU1YfRRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgyZWEw +ZTVkY2VlN2RlZjQw9VEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDgwNGNjOTk4 +MjI3YWRjNzH2UTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoOTk2ODdkNGFjMjRj +NjIzOfdRMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg5ZTFkMGY0ZDY4MDcyYmY3 ++FEyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDllZWM1NTU3MzZmNzI0NDD5UTI8 +VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoYjc3NDhiYjFhNTlkYmU1OPpRMjxUIGFz +IHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhlNDcxMzBjNzcwYjE5OTZh+1EyPFQgYXMgc2Vy +ZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGU1ZjYwMjc0YWRiNzY0NDT8UTI8VCBhcyBzZXJkZTo6 +ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZWRjOGU2MjIwYjMxZjI2ZP1RWHNlcmRlOjpkZTo6aW1wbHM6 +OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIGJvb2w+OjpkZXNlcmlhbGl6ZTo6aDAy +YjFlNGYwNjI4MGIxM2X+UTI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMDg3NGM4 +Y2QwYmQ3ODlmZP9RMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhhODU2MjY3NWEx +ZDhlN2ZhgFIyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGIwNTY0ODJkNWI2YTIx +MGOBUlc8ZWQyNTUxOV9kYWxlazo6dmVyaWZ5aW5nOjpWZXJpZnlpbmdLZXkgYXMgY29yZTo6Y21w +OjpQYXJ0aWFsRXE+OjplcTo6aGEzNzE3MDA3YzlkYjJiMWWCUi9zaWduYXR1cmU6OmVycm9yOjpF +cnJvcjo6bmV3OjpoMzMyMTU3OWVjNDU3ZDliZINSMzxaIGFzIHplcm9pemU6Olplcm9pemU+Ojp6 +ZXJvaXplOjpoZGEzMGE5ZDA4YWFhMGY1YYRSjQE8dG9raW86OnV0aWw6OmxpbmtlZF9saXN0OjpM +aW5rZWRMaXN0PEwsPEwgYXMgdG9raW86OnV0aWw6OmxpbmtlZF9saXN0OjpMaW5rPjo6VGFyZ2V0 +PiBhcyBjb3JlOjpkZWZhdWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aGFjNWY5NWNiZDc3ODg3MjaF +Ul88dG9raW86OnN5bmM6OmJyb2FkY2FzdDo6V2FpdGVyIGFzIHRva2lvOjp1dGlsOjpsaW5rZWRf +bGlzdDo6TGluaz46OnBvaW50ZXJzOjpoYWUyMjczZTAxNjZiN2U1NoZSMjxUIGFzIHNlcmRlOjpk +ZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgxYTM4YjVmNGZiMDRjZDA0h1IyPFQgYXMgc2VyZGU6OmRlOjpF +eHBlY3RlZD46OmZtdDo6aGI5MDdkMmQ5NDBhZGExNzWIUmU8Jm11dCBzZXJkZV9qc29uOjpkZTo6 +RGVzZXJpYWxpemVyPFI+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVf +dTY0OjpoN2IwNzkzYzk4YjBiNGRmYolSaXNlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmRlc2VyaWFsaXplOjpo +OGQwMTI4ZTMxODc0NGIzNIpSaXNlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemUgZm9yIGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmRlc2VyaWFsaXplOjpoOGQ0ZTVl +MGRmNWMxYjhhZItSaXNlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxp +emUgZm9yIGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmRlc2VyaWFsaXplOjpoOGRkNmY1YTU0Yzkw +MjExM4xSaXNlcmRlOjpkZTo6aW1wbHM6OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9y +IGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmRlc2VyaWFsaXplOjpoZDVhZTE5NmM0OWY4MDNiMI1S +hAE8c2VyZGU6Ol9fcHJpdmF0ZTo6ZGU6Om1pc3NpbmdfZmllbGQ6Ok1pc3NpbmdGaWVsZERlc2Vy +aWFsaXplcjxFPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX29wdGlv +bjo6aGY0NDFmOGQ5MTZhYzVkNzWOUjI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10Ojpo +MDc0MzE1ODNhYmZjMmIyMI9SMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg0MmMz +MzY0NTdkNDY5N2U5kFIyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDRiMDA2NDcy +MGY5NTUyZjORUjI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNmJhNTY2YmEyYWI4 +NzZkZZJSMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhiMjI1YmU3ZGYxOWNhZGQ5 +k1IyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aGJkMDc0Y2M3MTRhZDBlMzmUUjI8 +VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoZWRiNWVjZjViNzY2OWM0NZVSMjxUIGFz +IHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhmYTA1YzFmMjdhNmU2ZjczllJrc2VyZGU6OmRl +OjppbXBsczo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgY29yZTo6b3B0aW9uOjpP +cHRpb248VD4+OjpkZXNlcmlhbGl6ZTo6aDE5MzM5ODNkYzA5MTZmODmXUi5zZXJkZV9qc29uOjp2 +YWx1ZTo6dG9fdmFsdWU6Omg2YTg1MmM3ZWU2NGIxMjZjmFIuc2VyZGVfanNvbjo6dmFsdWU6OnRv +X3ZhbHVlOjpoODQ1Y2FiYzlkN2VmYTQ0OJlSMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+Ojpm +bXQ6Omg1YmViM2ZkZjQ4OGYxNTI2mlIxcnVtYV9jb21tb246OnNlcmRlOjppc19kZWZhdWx0Ojpo +MmQ3MzFjMjViNWJiOTg3MJtSP3J1bWFfY29tbW9uOjpzZXJkZTo6Y293OjpkZXNlcmlhbGl6ZV9j +b3dfc3RyOjpoNGM2OTdjYWU5M2FmZjQ1Y5xSP3J1bWFfY29tbW9uOjpzZXJkZTo6Y293OjpkZXNl +cmlhbGl6ZV9jb3dfc3RyOjpoYjBlOTIwM2Y1ZDM4N2JjZp1SP3J1bWFfY29tbW9uOjpzZXJkZTo6 +Y293OjpkZXNlcmlhbGl6ZV9jb3dfc3RyOjpoZGUwZWJiZGJjZTk1YzNiZJ5SMjxUIGFzIHNlcmRl +OjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6Omg1NTQxZGNlZTU5YTUyNjQ1n1IyPFQgYXMgc2VyZGU6OmRl +OjpFeHBlY3RlZD46OmZtdDo6aDgwYjc3NmFiMWE4NTk1NmWgUjI8VCBhcyBzZXJkZTo6ZGU6OkV4 +cGVjdGVkPjo6Zm10OjpoYTg2ZGQ1MGQ5ZTg3MmM0MKFSMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0 +ZWQ+OjpmbXQ6OmhiY2Y5MDQwNmFkZmNiNTYyolJYc2VyZGU6OmRlOjppbXBsczo6PGltcGwgc2Vy +ZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgYm9vbD46OmRlc2VyaWFsaXplOjpoMGZjZDlhNzhiNjYz +YTRlN6NSMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgwM2VhNzZhNWExN2IzMTg1 +pFIyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDA1NDYzNzZjZGFlOGMxODClUjI8 +VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMGQ4OWUzMGQwNWVlMDI4ZqZSMjxUIGFz +IHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgyMDI5NDhiNTdjZTE3OGJjp1IyPFQgYXMgc2Vy +ZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDJjZThlYzNiNjZkZGU2ZjeoUjI8VCBhcyBzZXJkZTo6 +ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNDg0YjczOTBjYmUxNzdhYqlSMjxUIGFzIHNlcmRlOjpkZTo6 +RXhwZWN0ZWQ+OjpmbXQ6Omg1Mjk2YmI0YTAzZmM2OGNmqlIyPFQgYXMgc2VyZGU6OmRlOjpFeHBl +Y3RlZD46OmZtdDo6aDg0YzYyNWQ3MTE1YWM4YzmrUjI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVk +Pjo6Zm10OjpoOTFmY2ZhNWI4NDk4M2Y2NaxSMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+Ojpm +bXQ6OmhkNjY3NTAzMjNlMTJjYjczrVIyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6 +aDAxZDc4YzNiMzhhMjYyYTGuUjI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMDRm +YWI2ZGQ4YzViM2E4MK9SMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgxOTU5ZWM0 +NzZkY2QyM2ZisFIyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDYyYTc3NDI5Nzg1 +NzVlMDOxUjI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMjYxODllZDlmNjU2NmQ1 +MbJSXzxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PFQsQT4gYXMgY29y +ZTo6Y2xvbmU6OkNsb25lPjo6Y2xvbmU6OmgxY2QzODljNjUyMWYwNmU5s1J/PHNlcmRlOjpfX3By +aXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50UmVmRGVzZXJpYWxpemVyPEU+IGFzIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemVyPjo6X19kZXNlcmlhbGl6ZV9jb250ZW50OjpoZjYxNTU5N2Y5ODQ2ZTVl +Y7RSMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmhiMjhmNTJjZDJkNzIwMjlltVJi +PHNlcmRlOjpfX3ByaXZhdGU6OmRlOjpjb250ZW50OjpDb250ZW50IGFzIHNlcmRlOjpkZTo6RGVz +ZXJpYWxpemU+OjpkZXNlcmlhbGl6ZTo6aDVlMTNmZjVmODM4OTY5NjC2Um08cnVtYV9jb21tb246 +OmlkZW50aWZpZXJzOjpkZXZpY2VfaWQ6Ok93bmVkRGV2aWNlSWQgYXMgY29yZTo6Y21wOjpQYXJ0 +aWFsT3JkPjo6cGFydGlhbF9jbXA6Omg3YTFmYmUyNGRlZDk2MzQ4t1IyPFQgYXMgbnVtX2NvbnY6 +OkV4dGVuZD46OmV4dGVuZDo6aDQ5YzcwODMzZTk3YTBlODS4UjI8JlQgYXMgY29yZTo6Zm10OjpE +aXNwbGF5Pjo6Zm10OjpoZDc4ZGZmODNhZjBjNmE4ZrlSRXRyYWNpbmdfY29yZTo6c3Vic2NyaWJl +cjo6U3Vic2NyaWJlcjo6Y3VycmVudF9zcGFuOjpoOWJmMDE3NTk4YTA1MjAwNLpSUjx0cmFjaW5n +X2NvcmU6OmZpZWxkOjpEaXNwbGF5VmFsdWU8VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aGMwYTJiMTA4NzY2OGE1OTa7Uko8aHR0cDo6dXJpOjpJbnZhbGlkVXJpUGFydHMgYXMgY29yZTo6 +Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNTRjMDJlOTQxYmU2YTIxY7xSQHNlcmRlX2pzb246OmRlOjpE +ZXNlcmlhbGl6ZXI8Uj46OmZpeF9wb3NpdGlvbjo6aDE1MjRhODkwMjQ0MWIwMWW9UjI8VCBhcyBz +ZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoMzJmNDRlNzAyMzk1ODg3Yr5SOWNvcmU6Om9wczo6 +ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoYTQ2MGRlNThmODUxMTgwZr9STTxqc19zeXM6 +OkpzU3RyaW5nIGFzIGNvcmU6OnN0cjo6dHJhaXRzOjpGcm9tU3RyPjo6ZnJvbV9zdHI6Omg4NGJl +NmNlYTM1YmE4NTcwwFInanNfc3lzOjpNYXA6OmVudHJpZXM6OmhlMWEzN2IyNWM5YTAzZmMxwVIk +anNfc3lzOjpEYXRlOjpuZXc6OmhiYTE0MzYzYTgyOTY1MDU5wlIjanNfc3lzOjpTZXQ6Om5ldzo6 +aDFlZDZhYmJhY2NjNDM2MDPDUidqc19zeXM6OlByb21pc2U6Om5ldzo6aGJmOGY0Y2E4ZDBkNDlh +NzPEUjJqc19zeXM6Omdsb2JhbDo6R0xPQkFMOjpfX2dldGl0OjpoMGI1ODYwMmI5NzBiZmVlN8VS +LWpzX3N5czo6VWludDhBcnJheTo6bGVuZ3RoOjpoNjZjNWMyYWIyYzM2YmY4McZSNGpzX3N5czo6 +VWludDhDbGFtcGVkQXJyYXk6Omxlbmd0aDo6aDMxNTE4ZTFkMWEwYjI4NGLHUks8KCkgYXMgd2Fz +bV9iaW5kZ2VuOjpfX3J0OjpJbnRvSnNSZXN1bHQ+OjppbnRvX2pzX3Jlc3VsdDo6aDRmZTI1NzI2 +NzM0MTRkMTXIUkFzdGQ6OnBhbmlja2luZzo6cGFuaWNfY291bnQ6OmlzX3plcm9fc2xvd19wYXRo +OjpoZmIwYmUzYTQwZjBmMjMxNclSQzxzdGQ6OmlvOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aDRiZTk0YjYxMjA0ZmRiMzfKUsoBY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPHN0ZDo6c3luYzo6cG9pc29uOjpQb2lzb25FcnJvcjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndM +b2NrV3JpdGVHdWFyZDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpzZXQ6OkJUcmVlU2V0PHJ1 +bWFfY29tbW9uOjppZGVudGlmaWVyczo6dXNlcl9pZDo6T3duZWRVc2VySWQ+Pj4+OjpoYzA3Mzhj +YWI2MzVlZGNkMstS8AFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpwb2lzb246 +OlBvaXNvbkVycm9yPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2tXcml0ZUd1YXJkPGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8bWF0cml4X3Nka19jcnlwdG86Omdvc3Np +cGluZzo6UmVxdWVzdEluZm8sbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6UmVxdWVzdEV2 +ZW50Pj4+Pjo6aDZlNGZlMjg4YzBlM2NiMDnMUkRjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cmFu +ZF9jb3JlOjplcnJvcjo6RXJyb3I+OjpoZTgxNGU0NzU0MjdmMWFlMs1Sajx0cmFjaW5nX2NvcmU6 +OmNhbGxzaXRlOjpEZWZhdWx0Q2FsbHNpdGUgYXMgdHJhY2luZ19jb3JlOjpjYWxsc2l0ZTo6Q2Fs +bHNpdGU+OjptZXRhZGF0YTo6aDFkNGI3NzFjZDRiNDEyYjDOUnk8dHJhY2luZ19zdWJzY3JpYmVy +OjpmbXQ6OlN1YnNjcmliZXI8TixFLEYsVz4gYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpT +dWJzY3JpYmVyPjo6bWF4X2xldmVsX2hpbnQ6OmgwNjVmZmMwNjg3ODFiYjJlz1IwY29yZTo6b3Bz +OjpmdW5jdGlvbjo6Rm46OmNhbGw6OmgwYTg0ODZlZTMwYTgwZjA10FKFAmNvcmU6OnB0cjo6ZHJv +cF9pbl9wbGFjZTx0cmFjaW5nX3N1YnNjcmliZXI6OmZtdDo6U3Vic2NyaWJlcjx0cmFjaW5nX3N1 +YnNjcmliZXI6OmZtdDo6Zm9ybWF0OjpEZWZhdWx0RmllbGRzLG1hdHJpeF9zZGtfY29tbW9uOjpq +c190cmFjaW5nOjpKc0V2ZW50Rm9ybWF0dGVyLHRyYWNpbmdfY29yZTo6bWV0YWRhdGE6OkxldmVs +RmlsdGVyLG1hdHJpeF9zZGtfY29tbW9uOjpqc190cmFjaW5nOjpNYWtlSnNMb2dXcml0ZXI+Pjo6 +aDcyNmZkYWQ3ZTc2Nzc5MGUuMdFSTWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZV93YXNt +X2JpbmRnZW46OmVycm9yOjpFcnJvcj46Omg2YzQyZjhmZWNmZGZmY2Iz0lJTY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPHRyYWNpbmdfc3Vic2NyaWJlcjo6dXRpbDo6VHJ5SW5pdEVycm9yPjo6aDc4 +YjI3NDU3ZjY2NDdkYznTUhN0cmFjaW5nX2lzQXZhaWxhYmxl1FKPAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPGFsbG9jOjpz +dHJpbmc6OlN0cmluZyxydW1hX2NvbW1vbjo6c2VyZGU6OmJhc2U2NDo6QmFzZTY0Pj46Omg0NDJm +YWI3N2NjNmUzYmRl1VLNAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Y29sbGVjdGlv +bnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29tbW9uOjppZGVudGlmaWVyczo6ZGV2aWNl +X2lkOjpPd25lZERldmljZUlkLGFsbG9jOjp2ZWM6OlZlYzxtYXRyaXhfc2RrX2NyeXB0bzo6dHlw +ZXM6OkV2ZW50RW5jcnlwdGlvbkFsZ29yaXRobT4+Pjo6aGFjMzU2MjRkZWIxMDgzNGbWUoABY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHRyYWNpbmdfY29yZTo6ZmllbGQ6OkRlYnVnVmFsdWU8bWF0 +cml4X3Nka19jcnlwdG86OnR5cGVzOjpFdmVudEVuY3J5cHRpb25BbGdvcml0aG0+Pjo6aDVlZjAw +MzlmYWNjMzJhYWLXUlFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86 +OnR5cGVzOjpTaWduYXR1cmVzPjo6aDdkMWE2MWZjNmQwZDg1MGXYUmFjb3JlOjpwdHI6OmRyb3Bf +aW5fcGxhY2U8bWF0cml4X3Nka19jcnlwdG86Om9sbTo6c2lnbmluZzo6cGtfc2lnbmluZzo6U2ln +bmluZz46OmgwMmEyNGI2ZDc2OTU4NjU42VK6AWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6 +OnN5bmM6OnBvaXNvbjo6UG9pc29uRXJyb3I8c3RkOjpzeW5jOjpyd2xvY2s6OlJ3TG9ja1dyaXRl +R3VhcmQ8Y29yZTo6b3B0aW9uOjpPcHRpb248bWF0cml4X3Nka19jcnlwdG86Om9sbTo6YWNjb3Vu +dDo6U3RhdGljQWNjb3VudERhdGE+Pj4+OjpoMzg4NTIwMmU5ZThmMjI0NdpSJGFlYWQ6OkJ1ZmZl +cjo6bGVuOjpoZmNmNTMxMjk4NDY3NGIyZdtSd2NvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxv +Yzo6cmM6OlJjPGluZGV4ZWRfZGJfZnV0dXJlczo6cmVxdWVzdDo6aWRiX3JlcXVlc3RfcmVmOjpJ +ZGJSZXF1ZXN0UmVmPj46Omg2OWIyYWJkZWFhYmVjMDZh3FLBAWNvcmU6OnB0cjo6ZHJvcF9pbl9w +bGFjZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPHJ1bWFfY29tbW9u +OjppZGVudGlmaWVyczo6ZGV2aWNlX2tleV9pZDo6T3duZWREZXZpY2VLZXlJZCxtYXRyaXhfc2Rr +X2NyeXB0bzo6dHlwZXM6OmRldmljZV9rZXlzOjpEZXZpY2VLZXk+Pjo6aDEzZWM3OWE4MjViYTEz +ZWbdUoUBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +OnNldDo6QlRyZWVTZXQ8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjp1c2VyX2lkOjpPd25lZFVz +ZXJJZD4+OjpoYzQ2NmY5NGI0NGExYWQ4M95S0gFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxs +b2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpCVHJlZU1hcDxydW1hX2NvbW1vbjo6aWRlbnRp +ZmllcnM6OmRldmljZV9rZXlfaWQ6Ok93bmVkRGV2aWNlS2V5SWQscnVtYV9jb21tb246OnNlcmRl +OjpyYXc6OlJhdzxydW1hX2NvbW1vbjo6ZW5jcnlwdGlvbjo6T25lVGltZUtleT4+Pjo6aGM2NWY2 +OWE2ZDY0NzQwNjbfUo0BY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPG1hdHJpeF9zZGtfY3J5cHRv +Ojp0eXBlczo6U2lnbmluZ0tleXM8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpkZXZpY2Vfa2V5 +X2lkOjpPd25lZERldmljZUtleUlkPj46Omg1M2FkODQ3MzNmZjU0Y2Fj4FKZAWNvcmU6OnB0cjo6 +ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6OkJUcmVlTWFwPGFs +bG9jOjpzdHJpbmc6OlN0cmluZyxydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpDaXBoZXJ0 +ZXh0SW5mbz4+OjpoNTNhNjY4YWZkYjE2YzRkN+FSiQFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8 +c3RkOjpzeW5jOjpwb2lzb246OlBvaXNvbkVycm9yPHN0ZDo6c3luYzo6bXV0ZXg6Ok11dGV4R3Vh +cmQ8dm9kb3plbWFjOjpzYXM6OkVzdGFibGlzaGVkU2FzPj4+OjpoNjZhZDZhY2I0NjEwZmZhNeJS +amNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmNyb3Nz +X3NpZ25pbmc6Om1hc3Rlcjo6TWFzdGVyUHVia2V5Pjo6aDNhYTFiODY2ZjQ5NWRkZWHjUpYBY29y +ZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6cG9pc29uOjpQb2lzb25FcnJvcjxzdGQ6 +OnN5bmM6Om11dGV4OjpNdXRleEd1YXJkPGNvcmU6Om9wdGlvbjo6T3B0aW9uPGFsbG9jOjpzdHJp +bmc6OlN0cmluZz4+Pj46OmhhZDY3MTJlMTY5MTY4MmMy5FJeY29yZTo6cHRyOjpkcm9wX2luX3Bs +YWNlPG1hdHJpeF9zZGtfY29tbW9uOjpqc190cmFjaW5nOjpGaW5kTWVzc2FnZVZpc2l0b3I+Ojpo +MmRjMzJlZjE1MjdlMzhhNOVSYWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTx3YXNtX2JpbmRnZW5f +ZnV0dXJlczo6cXVldWU6OlF1ZXVlOjpuZXc6Ont7Y2xvc3VyZX19Pjo6aDgwZmZkZGZiYzgzMDkx +NTDmUqsBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6cG9pc29uOjpQb2lzb25F +cnJvcjxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrV3JpdGVHdWFyZDx0cmFjaW5nX3N1YnNjcmli +ZXI6OnJlZ2lzdHJ5OjpleHRlbnNpb25zOjpFeHRlbnNpb25zSW5uZXI+Pj46Omg4NmRlNDY1Zjhj +ZDAwOWJi51KTAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OnN5bmM6OnBvaXNvbjo6UG9p +c29uRXJyb3I8c3RkOjpzeW5jOjptdXRleDo6TXV0ZXhHdWFyZDx0aHJlYWRfbG9jYWw6OnRocmVh +ZF9pZDo6VGhyZWFkSWRNYW5hZ2VyPj4+OjpoNzFjYWExMmYzNGY2YjM0NehShAFjb3JlOjpwdHI6 +OmRyb3BfaW5fcGxhY2U8YXJyYXl2ZWM6OmVycm9yczo6Q2FwYWNpdHlFcnJvcjx2b2RvemVtYWM6 +Om9sbTo6c2Vzc2lvbjo6bWVzc2FnZV9rZXk6OlJlbW90ZU1lc3NhZ2VLZXk+Pjo6aDMzMTFjNTc0 +YmJhOWJiMmbpUoQBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFycmF5dmVjOjplcnJvcnM6OkNh +cGFjaXR5RXJyb3I8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OnJlY2VpdmVyX2NoYWluOjpSZWNl +aXZlckNoYWluPj46Omg1MWM0MDg0MDk5ZDc3ZjRm6lJVPGFycmF5dmVjOjphcnJheXZlYzo6QXJy +YXlWZWM8VCxfPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoOTI3OGVmODdmMmRi +MDAzNOtSVTxhcnJheXZlYzo6YXJyYXl2ZWM6OkFycmF5VmVjPFQsXz4gYXMgY29yZTo6b3BzOjpk +cm9wOjpEcm9wPjo6ZHJvcDo6aGU3MDgyOTY4NGQyZTcyOWLsUkljb3JlOjpwdHI6OmRyb3BfaW5f +cGxhY2U8YWxsb2M6OnZlYzo6VmVjPCgmc3RyLCZzdHIpPj46OmgzODdkNDdhZDM3NzYyMTI37VJk +Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6aW86OldyaXRlOjp3cml0ZV9mbXQ6OkFkYXB0 +ZXI8YWxsb2M6OnZlYzo6VmVjPHU4Pj4+OjpoMGFkZWE0Y2Q0MWNiZTk3OO5SL3RyYWNpbmc6OnNw +YW46OlNwYW46OmN1cnJlbnQ6OmhjNzc5ZmRmZTU0YmE5YjVi71KmAWNvcmU6OnB0cjo6ZHJvcF9p +bl9wbGFjZTxzdGQ6OnN5bmM6OnBvaXNvbjo6UG9pc29uRXJyb3I8c3RkOjpzeW5jOjpyd2xvY2s6 +OlJ3TG9ja1dyaXRlR3VhcmQ8YWxsb2M6OnZlYzo6VmVjPHRyYWNpbmdfY29yZTo6ZGlzcGF0Y2hl +cjo6UmVnaXN0cmFyPj4+Pjo6aDdmZTFiYmRhMGIyYjQ0NWPwUkN0cmFjaW5nX2NvcmU6OnN1YnNj +cmliZXI6OlN1YnNjcmliZXI6OmNsb25lX3NwYW46OmhhOTAzZjc0OTE3MWExYWYz8VIsYnl0ZXM6 +OmJ5dGVzOjpzaGFyZWRfZHJvcDo6aDE5OWEzNDgzNmQwN2M0MznyUjJieXRlczo6Ynl0ZXNfbXV0 +OjpzaGFyZWRfdl9kcm9wOjpoOWI2MzllOTA3ODg0MTBmZfNSLmFueWhvdzo6ZXJyb3I6Om5vX2Jh +Y2t0cmFjZTo6aGZjMzc5MjdlNzFjMzc4Y2X0Ujx3YXNtX2JpbmRnZW46OmNhc3Q6OkpzQ2FzdDo6 +dW5jaGVja2VkX3JlZjo6aDNiN2QxZmRhZWUzYmU3YTX1Ukd0cmFjaW5nX2NvcmU6OnN1YnNjcmli +ZXI6OlN1YnNjcmliZXI6Om1heF9sZXZlbF9oaW50OjpoZDdjZTc4MmY4YmIxZDc3M/ZSO3RocmVh +ZF9sb2NhbDo6dGhyZWFkX2lkOjpUSFJFQUQ6Ol9fZ2V0aXQ6OmgwYWQxYTQ2MzFjMzA5NDkx91JB +dGhyZWFkX2xvY2FsOjp0aHJlYWRfaWQ6OlRIUkVBRF9HVUFSRDo6X19nZXRpdDo6aDdlNWM4ZGNj +M2JmYzEyNWH4UkJ0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI6OnRyeV9jbG9z +ZTo6aGFiNDNjZmRlNjZkMDJhNGX5Um08dHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpOb1N1YnNj +cmliZXIgYXMgdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVyPjo6bmV3X3NwYW46 +OmgwZWIxODI0ZmI3YTU2ZTY1+lJGdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVyOjpTdWJzY3JpYmVy +OjpldmVudF9lbmFibGVkOjpoMTZjYjBlZTQzNjFmNDg0NPtSdjx0cmFjaW5nX2NvcmU6OnN1YnNj +cmliZXI6Ok5vU3Vic2NyaWJlciBhcyB0cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmli +ZXI+OjpyZWdpc3Rlcl9jYWxsc2l0ZTo6aDBjYmUyYTU0NjIxOTU4MmX8UoUBY29yZTo6cHRyOjpk +cm9wX2luX3BsYWNlPHJ1bWFfY29tbW9uOjpzZXJkZTo6cmF3OjpSYXc8VD46OmdldF9maWVsZDo6 +U2luZ2xlRmllbGRWaXNpdG9yPHNlcmRlX2pzb246OnZhbHVlOjpWYWx1ZT4+OjpoZWQ2ZTJlM2Iy +NDY4MzNmNf1SVTx0cmFjaW5nX2NvcmU6OmZpZWxkOjpFbXB0eSBhcyB0cmFjaW5nX2NvcmU6OmZp +ZWxkOjpWYWx1ZT46OnJlY29yZDo6aDU4NGIxMWE4MzkxYWI2Mzf+Ui5jb3JlOjplcnJvcjo6RXJy +b3I6OnByb3ZpZGU6OmgxNmZmNmYzZTQ0YzA1ZTEz/1JNdHJhY2luZ19jb3JlOjpzdWJzY3JpYmVy +OjpTdWJzY3JpYmVyOjpvbl9yZWdpc3Rlcl9kaXNwYXRjaDo6aGUzZjQ3MTQwZDRkMWY2MTiAU0J0 +cmFjaW5nX2NvcmU6OnN1YnNjcmliZXI6OlN1YnNjcmliZXI6OmRyb3Bfc3Bhbjo6aGYyZDFiZTkz +MmRmNjNhNTKBU0BieW4kbWdmbi1zaGFyZWQkPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6 +OmgwYmJlMDVhNmM1ZWIyMDBhglNAYnluJG1nZm4tc2hhcmVkJDwmVCBhcyBjb3JlOjpmbXQ6OkRl +YnVnPjo6Zm10OjpoMGVlMzRlMmNlOGZhOTg0MYNTQGJ5biRtZ2ZuLXNoYXJlZCQ8JlQgYXMgY29y +ZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDEzN2M1YmYxOTA2MzRlZmOEU0BieW4kbWdmbi1zaGFyZWQk +PCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxNGFjYzQ1MGQ3OTA2MDBjhVNAYnluJG1n +Zm4tc2hhcmVkJDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMTc1OTI0YzVhMGE3M2I0 +MIZTQGJ5biRtZ2ZuLXNoYXJlZCQ8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI3ODA0 +MmZhZWQ4ZmY5OTSHU0BieW4kbWdmbi1zaGFyZWQkPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmgyYmU1NGRkMzAyNGI0NjQ0iFNAYnluJG1nZm4tc2hhcmVkJDwmVCBhcyBjb3JlOjpmbXQ6 +OkRlYnVnPjo6Zm10OjpoM2QyMDQwMzA1NjZiODkzYolTQGJ5biRtZ2ZuLXNoYXJlZCQ8JlQgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDNmOWVmYzhmN2RmMzcyMDKKU0BieW4kbWdmbi1zaGFy +ZWQkPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1MTIxNGFiMmZkYzJiOWI0i1NAYnlu +JG1nZm4tc2hhcmVkJDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTFhNjYwZjRhNzJi +ZmIzOYxTQGJ5biRtZ2ZuLXNoYXJlZCQ8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDU0 +NGVkMDlhYzZkODkzNWWNU0BieW4kbWdmbi1zaGFyZWQkPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg1YTA3NjNlZTRlNTUwMGYxjlNAYnluJG1nZm4tc2hhcmVkJDwmVCBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoNjNlNGNhMzg3YWJlMjAwY49TQGJ5biRtZ2ZuLXNoYXJlZCQ8JlQg +YXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY1YzBjMjU3YmRhZDYxYmSQU0BieW4kbWdmbi1z +aGFyZWQkPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2ZDNjMDg2ZjVhZWQ1MGI5kVNA +YnluJG1nZm4tc2hhcmVkJDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzgyNDI5NTU2 +YjdkZTRjNJJTQGJ5biRtZ2ZuLXNoYXJlZCQ8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6 +aDhmMDkzNzk2ZGY2ZTJkOGaTU0BieW4kbWdmbi1zaGFyZWQkPCZUIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6Omg5NWY4Nzc0NjAxOWY3YTY5lFNAYnluJG1nZm4tc2hhcmVkJDwmVCBhcyBjb3Jl +OjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTkxN2M3OWY2ZjU5N2JjOZVTQGJ5biRtZ2ZuLXNoYXJlZCQ8 +JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDlkMWY0NDUzZjE2ZDNiZDWWU0BieW4kbWdm +bi1zaGFyZWQkPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhZDA1M2IzZjBiYzdlMThh +l1NAYnluJG1nZm4tc2hhcmVkJDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYWU2ZGFi +ZTMxZWYwMzc1MZhTQGJ5biRtZ2ZuLXNoYXJlZCQ8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aGMwNTNkZTZkYjNiM2Y4OGKZU0BieW4kbWdmbi1zaGFyZWQkPCZUIGFzIGNvcmU6OmZtdDo6 +RGVidWc+OjpmbXQ6OmhjZDEwNDkzODZjMTRjNTc2mlNAYnluJG1nZm4tc2hhcmVkJDwmVCBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDhmNDRiY2IyODBlOTA0OZtTQGJ5biRtZ2ZuLXNoYXJl +ZCQ8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRhYWFiOGRkMjExYjIxODOcU0BieW4k +bWdmbi1zaGFyZWQkPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlNTU3NjUyNTRlM2Iy +NmFinVNRYnluJG1nZm4tc2hhcmVkJDwmbXV0IFQgYXMgYnl0ZXM6OmJ1Zjo6YnVmX2ltcGw6OkJ1 +Zj46OmFkdmFuY2U6OmhkZDM3NWQ5MmEwNGI5ODExnlN1YnluJG1nZm4tc2hhcmVkJDwmbXV0IHNl +cmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+ +OjpzZXJpYWxpemVfbWFwOjpoY2NmZThkMDE5ODgyNDZmOC4yn1N0YnluJG1nZm4tc2hhcmVkJDwm +bXV0IHNlcmRlX2pzb246OnNlcjo6U2VyaWFsaXplcjxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlh +bGl6ZXI+OjpzZXJpYWxpemVfbm9uZTo6aGU3OTBhNTZlMGE4YzZiMTegU3hieW4kbWdmbi1zaGFy +ZWQkPCZtdXQgc2VyZGVfanNvbjo6c2VyOjpTZXJpYWxpemVyPFcsRj4gYXMgc2VyZGU6OnNlcjo6 +U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zdHJ1Y3Q6Omg5ZmFmY2ZjOGIyYTg2ZjZjLjOhU0xieW4k +bWdmbi1zaGFyZWQkPFQgYXMgYWxsb2M6OnN0cmluZzo6VG9TdHJpbmc+Ojp0b19zdHJpbmc6Omgz +MjY5N2FlNzkyY2VjMWNmolNGYnluJG1nZm4tc2hhcmVkJDxUIGFzIGNvcmU6OmNvbnZlcnQ6Oklu +dG88VT4+OjppbnRvOjpoNDgxNWQ3OTc5M2Q2NzhjM6NTRmJ5biRtZ2ZuLXNoYXJlZCQ8VCBhcyBj +b3JlOjpjb252ZXJ0OjpJbnRvPFU+Pjo6aW50bzo6aDU1MjJiNDYyM2E1OGE1MjKkU0JieW4kbWdm +bi1zaGFyZWQkPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDAzNmNhNWEzNmIzOTVh +NmKlU0JieW4kbWdmbi1zaGFyZWQkPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDBk +NjI1MWEyMzk2MzcxMzemU0JieW4kbWdmbi1zaGFyZWQkPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3Rl +ZD46OmZtdDo6aDU3MTI0ZDVkYzgwMTY0YjWnU3FieW4kbWdmbi1zaGFyZWQkPFQgYXMgd2FzbV9i +aW5kZ2VuOjpjbG9zdXJlOjpXYXNtQ2xvc3VyZUZuT25jZTxBLFI+Pjo6aW50b19mbl9tdXQ6Ont7 +Y2xvc3VyZX19OjpoOGRlMzBiOWM2ZjlhMDFiNqhTQWJ5biRtZ2ZuLXNoYXJlZCQ8W1RdIGFzIGNv +cmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzNWFlZDUyNDQyMjBkMTNjqVNIYnluJG1nZm4tc2hhcmVk +JDxbWjsgTl0gYXMgemVyb2l6ZTo6WmVyb2l6ZT46Onplcm9pemU6Omg5NzY0MWNmZGU1NjNiN2E0 +qlNgYnluJG1nZm4tc2hhcmVkJDxhbGxvYzo6YWxsb2M6Okdsb2JhbCBhcyBjb3JlOjphbGxvYzo6 +QWxsb2NhdG9yPjo6YWxsb2NhdGU6OmgyZDc4MGU0ZWNjMTY2NTAzLjE3q1N+YnluJG1nZm4tc2hh +cmVkJDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6Okl0ZXI8SyxWPiBhcyBjb3JlOjpp +dGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmgxZGI1YzBjYTE4MGQxMmFh +rFN+YnluJG1nZm4tc2hhcmVkJDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6Okl0ZXI8 +SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6Omg1 +MzU2N2YxMTg2ZTRlN2E0rVN+YnluJG1nZm4tc2hhcmVkJDxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjptYXA6Okl0ZXI8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVy +YXRvcj46Om5leHQ6Omg3NDQ2ZjM2ZDExYjU5MTQ1rlN+YnluJG1nZm4tc2hhcmVkJDxhbGxvYzo6 +Y29sbGVjdGlvbnM6OmJ0cmVlOjptYXA6Okl0ZXI8SyxWPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6 +Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5leHQ6OmhkY2NjYWRiODRjMGY2M2Rhr1NfYnluJG1nZm4t +c2hhcmVkJDxhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT4gYXMgY29yZTo6b3BzOjpkcm9wOjpE +cm9wPjo6ZHJvcDo6aDBiNjAwMzg1ZTQyNjFhMGSwU1pieW4kbWdmbi1zaGFyZWQkPGFsbG9jOjpz +dHJpbmc6OkZyb21VdGY4RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGNlM2Y1NTdm +ODM4NzZmNDOxU1xieW4kbWdmbi1zaGFyZWQkPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3Jl +OjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aGQyMGE0YzI0MWU4ZDVlNzMuMrJTWGJ5biRtZ2Zu +LXNoYXJlZCQ8YWxsb2M6OnN5bmM6OkFyYzxUPiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6 +ZnJvbTo6aDQwNDQ5NzMxYmIyYzJhNjizU1NieW4kbWdmbi1zaGFyZWQkPGFsbG9jOjpzeW5jOjpB +cmM8VCxBPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGFiMTg4YjNmMzI3OGQ2ObRTU2J5 +biRtZ2ZuLXNoYXJlZCQ8YWxsb2M6OnN5bmM6OkFyYzxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+ +OjpmbXQ6Omg3ZWM5YzRjMjFlMzYzZjkztVNaYnluJG1nZm4tc2hhcmVkJDxhbGxvYzo6dmVjOjpW +ZWM8VD4gYXMgY29yZTo6Y29udmVydDo6RnJvbTwmW1RdPj46OmZyb206OmhhZDgyNDUyODk0OTJl +NmU4tlNWYnluJG1nZm4tc2hhcmVkJDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpjbG9u +ZTo6Q2xvbmU+OjpjbG9uZTo6aDE0YjI3ZDFkYzY1N2ZiYWO3U1JieW4kbWdmbi1zaGFyZWQkPGFs +bG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZmY3YzdjNzk5 +M2NjODM3uFNSYnluJG1nZm4tc2hhcmVkJDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpm +bXQ6OkRlYnVnPjo6Zm10OjpoN2ZiMWU3MWU3ZDM4N2FkOblTUmJ5biRtZ2ZuLXNoYXJlZCQ8YWxs +b2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDliZGQzYWJjM2Y4 +YmFlMTS6U1hieW4kbWdmbi1zaGFyZWQkPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9w +czo6ZHJvcDo6RHJvcD46OmRyb3A6OmgwM2IxYTgzYWFlMzBhNDkxu1NYYnluJG1nZm4tc2hhcmVk +JDxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpo +MDg0YWU1N2U2MzU3ODRhNLxTWGJ5biRtZ2ZuLXNoYXJlZCQ8YWxsb2M6OnZlYzo6VmVjPFQsQT4g +YXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aDM2NGE4OWE0MGViMDYyY2W9U1hieW4k +bWdmbi1zaGFyZWQkPGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJv +cD46OmRyb3A6OmgzZGI4ZDNhYjIwOWUwMjc5vlNYYnluJG1nZm4tc2hhcmVkJDxhbGxvYzo6dmVj +OjpWZWM8VCxBPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoNTRiYmJlMWRhZDA2 +OWI5Ob9TWGJ5biRtZ2ZuLXNoYXJlZCQ8YWxsb2M6OnZlYzo6VmVjPFQsQT4gYXMgY29yZTo6b3Bz +Ojpkcm9wOjpEcm9wPjo6ZHJvcDo6aDhjNTU4MzQyNzQ3NjBhMTLAU1hieW4kbWdmbi1zaGFyZWQk +PGFsbG9jOjp2ZWM6OlZlYzxULEE+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6Omhk +NGQ5M2RjZDYwN2RiYjMwwVNgYnluJG1nZm4tc2hhcmVkJDxhcnJheXZlYzo6ZXJyb3JzOjpDYXBh +Y2l0eUVycm9yPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg3MTdmNDk5NThlMzY5ZGJk +wlNZYnluJG1nZm4tc2hhcmVkJDxiYXNlNjQ6OmRlY29kZTo6RGVjb2RlRXJyb3IgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aGQ1MGZhZTU4NDJhZTkyZDnDU1lieW4kbWdmbi1zaGFyZWQkPGJh +c2U2NDo6ZGVjb2RlOjpEZWNvZGVFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGZj +MjlkY2I1YjNmODE1McRTX2J5biRtZ2ZuLXNoYXJlZCQ8Y29yZTo6bnVtOjplcnJvcjo6VHJ5RnJv +bUludEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhmM2ZkYjk0MjE5MDIwMDA2xVN1 +YnluJG1nZm4tc2hhcmVkJDxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMgY29yZTo6 +c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleF9tdXQ6OmgwNGM1ODgyN2I2NmVj +YmRixlN1YnluJG1nZm4tc2hhcmVkJDxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6ZT4gYXMg +Y29yZTo6c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleF9tdXQ6OmgwZTIzOTA4 +M2IyOWIzZWVix1N1YnluJG1nZm4tc2hhcmVkJDxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTx1c2l6 +ZT4gYXMgY29yZTo6c2xpY2U6OmluZGV4OjpTbGljZUluZGV4PFtUXT4+OjppbmRleF9tdXQ6Omgz +YTI0ZDBkN2ExMGNiODdlyFNVYnluJG1nZm4tc2hhcmVkJDxjb3JlOjpvcHRpb246Ok9wdGlvbjxU +PiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTExY2JlYjU0MzA1NDc5ZslTVWJ5biRtZ2Zu +LXNoYXJlZCQ8Y29yZTo6b3B0aW9uOjpPcHRpb248VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZt +dDo6aGQyNTNkYjQxMzc5ZTE0YmXKU1VieW4kbWdmbi1zaGFyZWQkPGNvcmU6Om9wdGlvbjo6T3B0 +aW9uPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkMmZlMzU1MzRkNzFjMDFly1OKAWJ5 +biRtZ2ZuLXNoYXJlZCQ8Y29yZTo6c2xpY2U6OnNvcnQ6Om1lcmdlX3NvcnQ6OlJ1blZlYzxSdW5B +bGxvY0YsUnVuRGVhbGxvY0Y+IGFzIGNvcmU6Om9wczo6aW5kZXg6OkluZGV4PHVzaXplPj46Omlu +ZGV4OjpoMGI2ZjE3NjlhMTEwODJmOcxTogFieW4kbWdmbi1zaGFyZWQkPGRpZ2VzdDo6Y29yZV9h +cGk6OmN0X3ZhcmlhYmxlOjpDdFZhcmlhYmxlQ29yZVdyYXBwZXI8VCxPdXRTaXplLE8+IGFzIGRp +Z2VzdDo6Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6Omg4 +YjQ2OWIxMWI3ZTEyZjBlLjHNU2hieW4kbWdmbi1zaGFyZWQkPGRpZ2VzdDo6Y29yZV9hcGk6Ondy +YXBwZXI6OkNvcmVXcmFwcGVyPFQ+IGFzIGRpZ2VzdDo6VXBkYXRlPjo6dXBkYXRlOjpoYTJjN2Q1 +ZWIxZWRjMWE5Mc5TaWJ5biRtZ2ZuLXNoYXJlZCQ8ZnV0dXJlc19jaGFubmVsOjpvbmVzaG90OjpS +ZWNlaXZlcjxUPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoZmU0NzQxNTY2NGJm +YTViNs9TZ2J5biRtZ2ZuLXNoYXJlZCQ8ZnV0dXJlc19jaGFubmVsOjpvbmVzaG90OjpTZW5kZXI8 +VD4gYXMgY29yZTo6b3BzOjpkcm9wOjpEcm9wPjo6ZHJvcDo6aGM5ZTkyMTQ4Y2Y4NTM3Y2HQU4cB +YnluJG1nZm4tc2hhcmVkJDxmdXR1cmVzX3V0aWw6OmZuczo6TWFwRXJyRm48Rj4gYXMgZnV0dXJl +c191dGlsOjpmbnM6OkZuT25jZTE8Y29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPj4+OjpjYWxsX29u +Y2U6OmgwYjc0NGNjZjFjMmQwM2Ey0VNvYnluJG1nZm4tc2hhcmVkJDxoYXNoYnJvd246OnJhdzo6 +UmF3SXRlcjxUPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5l +eHQ6OmhhZTM4MTExMWMxNjU0Y2Jm0lNvYnluJG1nZm4tc2hhcmVkJDxoYXNoYnJvd246OnJhdzo6 +UmF3SXRlcjxUPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46Om5l +eHQ6OmhlMTk0MGQxMDNmNzA5N2M501NlYnluJG1nZm4tc2hhcmVkJDxodHRwOjpoZWFkZXI6OnZh +bHVlOjpJbnZhbGlkSGVhZGVyVmFsdWUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDllOWI0 +ZjA0NzkyMDY1MzHUU2BieW4kbWdmbi1zaGFyZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6 +T2xtRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGUzYmY1NWY4NzlhMmI1YjjVU2xi +eW4kbWdmbi1zaGFyZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6U2Vzc2lvbkNyZWF0aW9u +RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGM1NWJjN2NmYTQ5ODEyYmbWU2ZieW4k +bWdmbi1zaGFyZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjplcnJvcjo6U2lnbmF0dXJlRXJyb3IgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDhlODRlYTc3YjViNGUwZDPXU2ZieW4kbWdmbi1zaGFy +ZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjpnb3NzaXBpbmc6OlNlY3JldEluZm8gYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aDE3MGZjYThkNWEyNDBkMmLYU3hieW4kbWdmbi1zaGFyZWQkPG1hdHJp +eF9zZGtfY3J5cHRvOjpvbG06Omdyb3VwX3Nlc3Npb25zOjpTZXNzaW9uRXhwb3J0RXJyb3IgYXMg +Y29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGYwOGNmMzFhZmIxZTAzMzTZU4QCYnluJG1nZm4tc2hh +cmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6b2xtOjpncm91cF9zZXNzaW9uczo6aW5ib3VuZDo6Xzo6 +PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86Om9sbTo6 +Z3JvdXBfc2Vzc2lvbnM6OmluYm91bmQ6OlBpY2tsZWRJbmJvdW5kR3JvdXBTZXNzaW9uPjo6ZGVz +ZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0X3N0 +cjo6aDU0YWUwYjM5ZGFhOTYyMDjaU9gBYnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0 +bzo6b2xtOjpzZXNzaW9uOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRy +aXhfc2RrX2NyeXB0bzo6b2xtOjpzZXNzaW9uOjpQaWNrbGVkU2Vzc2lvbj46OmRlc2VyaWFsaXpl +OjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg0OWVm +OTIzZTJmYWE1NDI021PRAWJ5biRtZ2ZuLXNoYXJlZCQ8bWF0cml4X3Nka19jcnlwdG86OnJlcXVl +c3RzOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBtYXRyaXhfc2RrX2NyeXB0 +bzo6cmVxdWVzdHM6OlRvRGV2aWNlUmVxdWVzdD46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRv +ciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmgwZDYxMDFhMzE3YTZjZjI53FNp +YnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OkNoYW5nZXMgYXMgY29y +ZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmgxMjA1NTY1ZDdlMjM3NTg23VNvYnluJG1n +Zm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OmVycm9yOjpDcnlwdG9TdG9yZUVy +cm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjN2MwMzcyYjE3MzQzNmVk3lOcAWJ5biRt +Z2ZuLXNoYXJlZCQ8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkVyYXNlQ3J5cHRv +U3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0czo6Q3J5cHRv +U3RvcmU+OjpnZXRfZGV2aWNlOjpoZWQ0NjgxNmIyNWNkYmZlY99TngFieW4kbWdmbi1zaGFyZWQk +PG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8 +VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6Z2V0 +X3Nlc3Npb25zOjpoMzM4MzIxOTJkNTFhNWYxNeBTogFieW4kbWdmbi1zaGFyZWQkPG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0 +cml4X3Nka19jcnlwdG86OnN0b3JlOjp0cmFpdHM6OkNyeXB0b1N0b3JlPjo6aXNfbWVzc2FnZV9r +bm93bjo6aDM2ZGM0YWZmYjRkNTc2ZjHhU54BYnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2Ny +eXB0bzo6c3RvcmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OmxvYWRfYWNjb3VudDo6aDMx +MWE5MDE5ODgxOWJmNTTiU54BYnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNhdmVfY2hhbmdlczo6aDA2M2JhYWU4M2M1 +ZTllMmbjU6YBYnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6c3RvcmU6OnRyYWl0 +czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNhdmVfcGVuZGluZ19jaGFuZ2VzOjpoMjYyM2QwMGVhZjg3 +ZTBjM+RTsQFieW4kbWdmbi1zaGFyZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6dHJhaXRz +OjpFcmFzZUNyeXB0b1N0b3JlRXJyb3I8VD4gYXMgbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkNyeXB0b1N0b3JlPjo6c2F2ZV90cmFja2VkX3VzZXJzOjp7e2Nsb3N1cmV9fTo6aDZh +MWZkOWQzMDAwNDY5MjflU6IBYnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OnRyYWl0czo6RXJhc2VDcnlwdG9TdG9yZUVycm9yPFQ+IGFzIG1hdHJpeF9zZGtfY3J5cHRv +OjpzdG9yZTo6dHJhaXRzOjpDcnlwdG9TdG9yZT46OnNldF9jdXN0b21fdmFsdWU6Omg0OGFiZjM4 +OWJjNGY2NGQz5lOmAWJ5biRtZ2ZuLXNoYXJlZCQ8bWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjp0 +cmFpdHM6OkVyYXNlQ3J5cHRvU3RvcmVFcnJvcjxUPiBhcyBtYXRyaXhfc2RrX2NyeXB0bzo6c3Rv +cmU6OnRyYWl0czo6Q3J5cHRvU3RvcmU+Ojp0cnlfdGFrZV9sZWFzZWRfbG9jazo6aGMyNjEzODZl +NDQzMGEwOGLnU3FieW4kbWdmbi1zaGFyZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZl +bnRzOjpvbG1fdjE6Ok9sbVYxS2V5cyBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTM0YWY5 +ZmZiYTFhYjU3MOhT9gFieW4kbWdmbi1zaGFyZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6 +ZXZlbnRzOjpyb29tX2tleTo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0 +cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5OjpSb29tS2V5SGVscGVyPjo6 +ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0 +X2JvcnJvd2VkX3N0cjo6aDIxZjIwZTg5MTAzOGI0NmPpU+0BYnluJG1nZm4tc2hhcmVkJDxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXk6Ol86OjxpbXBsIHNlcmRlOjpk +ZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29t +X2tleTo6Um9vbUtleUhlbHBlcj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJk +ZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6Omg1Y2YyNzI1OTI5ODE5MWUz6lP2AWJ5biRtZ2Zu +LXNoYXJlZCQ8bWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3JlcXVl +c3Q6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1hdHJpeF9zZGtfY3J5cHRv +Ojp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpBY3Rpb24+OjpkZXNlcmlhbGl6ZTo6 +X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoMzJiNTI3 +MGMwNGY4NWVjMOtT9gFieW4kbWdmbi1zaGFyZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6 +ZXZlbnRzOjpyb29tX2tleV9yZXF1ZXN0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXpl +IGZvciBtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfcmVxdWVzdDo6 +QWN0aW9uPjo6ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRv +cj46OnZpc2l0X3U2NDo6aGM0MDczMDJjYzEwZTI5YzDsU4kBYnluJG1nZm4tc2hhcmVkJDxtYXRy +aXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6cm9vbV9rZXlfd2l0aGhlbGQ6OlJvb21LZXlX +aXRoaGVsZENvbnRlbnQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDc2YzVhODQzOTRkNTY2 +ZjntU4kCYnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6 +cm9vbV9rZXlfd2l0aGhlbGQ6Ol86OjxpbXBsIHNlcmRlOjpkZTo6RGVzZXJpYWxpemUgZm9yIG1h +dHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVsZDo6V2l0aGhl +bGRIZWxwZXI+OjpkZXNlcmlhbGl6ZTo6X19GaWVsZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNp +dG9yPjo6dmlzaXRfYm9ycm93ZWRfc3RyOjpoMTNhZGYzOWUwZDQxMTY1Yu5TgAJieW4kbWdmbi1z +aGFyZWQkPG1hdHJpeF9zZGtfY3J5cHRvOjp0eXBlczo6ZXZlbnRzOjpyb29tX2tleV93aXRoaGVs +ZDo6Xzo6PGltcGwgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZSBmb3IgbWF0cml4X3Nka19jcnlwdG86 +OnR5cGVzOjpldmVudHM6OnJvb21fa2V5X3dpdGhoZWxkOjpXaXRoaGVsZEhlbHBlcj46OmRlc2Vy +aWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6 +Omg4NzBiNDUwZmJjMjNjNTUy71NlYnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6 +dmVyaWZpY2F0aW9uOjpGbG93SWQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGRlZjgzZTFh +M2NlMmNmZjnwU4EBYnluJG1nZm4tc2hhcmVkJDxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0 +aW9uOjpzYXM6OnNhc19zdGF0ZTo6U3VwcG9ydGVkTWFjTWV0aG9kIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6OmgzYTI4N2JhNzNkZTdiOTI48VODAWJ5biRtZ2ZuLXNoYXJlZCQ8bWF0cml4X3Nk +a19jcnlwdG9fd2FzbTo6ZGV2aWNlOjpEZXZpY2UgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0 +cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6OmgzN2I1ZWFjYjNmZTU5YTRm8lOVAWJ5biRt +Z2ZuLXNoYXJlZCQ8bWF0cml4X3Nka19jcnlwdG9fd2FzbTo6bGlib2xtX21pZ3JhdGlvbjo6UGlj +a2xlZFNlc3Npb24gYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkZyb21XYXNtQWJp +Pjo6ZnJvbV9hYmk6Omg5NjliZDU1MDk1YTBhYWI281N7YnluJG1nZm4tc2hhcmVkJDxtYXRyaXhf +c2RrX2luZGV4ZWRkYjo6Y3J5cHRvX3N0b3JlOjpJbmRleGVkZGJDcnlwdG9TdG9yZUVycm9yIGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0YzI3OTUzMDRhNmIyOWNl9FNgYnluJG1nZm4tc2hh +cmVkJDxtYXRyaXhfc2RrX3N0b3JlX2VuY3J5cHRpb246OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVi +dWc+OjpmbXQ6OmgyYmU0ZGNkNjIwOTAwYzg39VNVYnluJG1nZm4tc2hhcmVkJDxyYW5kX2NvcmU6 +OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWJkMjVjNDI1YzFiMTA2 +OfZTXWJ5biRtZ2ZuLXNoYXJlZCQ8cm1wOjplbmNvZGU6OlZhbHVlV3JpdGVFcnJvcjxFPiBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZWI4MzNjODc1NjVmZjkzOPdTgwFieW4kbWdmbi1zaGFy +ZWQkPHJ1bWFfY2xpZW50X2FwaTo6ZGVoeWRyYXRlZF9kZXZpY2U6OkRldmljZURlaHlkcmF0aW9u +QWxnb3JpdGhtIGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208VD4+Ojpmcm9tOjpoZThhZDQ5NDhkMjk1 +NDBmMvhTdGJ5biRtZ2ZuLXNoYXJlZCQ8cnVtYV9jb21tb246OmlkZW50aWZpZXJzOjpzZXNzaW9u +X2lkOjpPd25lZFNlc3Npb25JZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg4MDE0NjEx +ZjFlMWQ1YTdj+VNvYnluJG1nZm4tc2hhcmVkJDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnNl +c3Npb25faWQ6OlNlc3Npb25JZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgxZjkwOTBk +YzJlODg2NTcy+lN2YnluJG1nZm4tc2hhcmVkJDxydW1hX2NvbW1vbjo6aWRlbnRpZmllcnM6OnZv +aXBfdmVyc2lvbl9pZDo6Vm9pcFZlcnNpb25JZCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10Ojpo +MzkxMTEwODJhZmI3MzJhY/tTsgFieW4kbWdmbi1zaGFyZWQkPHJ1bWFfZXZlbnRzOjpfOjo8aW1w +bCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6VW5zaWduZWREZUhlbHBl +cj46OmRlc2VyaWFsaXplOjpfX0ZpZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2 +aXNpdF9zdHI6Omg1Y2Q0NmFlNDRhM2QwODg1/FN+YnluJG1nZm4tc2hhcmVkJDxydW1hX2V2ZW50 +czo6a2V5Ojp2ZXJpZmljYXRpb246OktleUFncmVlbWVudFByb3RvY29sIGFzIGNvcmU6OmNvbnZl +cnQ6OkFzUmVmPHN0cj4+Ojphc19yZWY6OmhlYjEzNjA0NDc5OGZiN2M5/VN5YnluJG1nZm4tc2hh +cmVkJDxydW1hX2V2ZW50czo6a2V5Ojp2ZXJpZmljYXRpb246OktleUFncmVlbWVudFByb3RvY29s +IGFzIGNvcmU6OmNvbnZlcnQ6OkZyb208VD4+Ojpmcm9tOjpoN2M4MDdlMzRiZWFmNmY2OP5TcmJ5 +biRtZ2ZuLXNoYXJlZCQ8cnVtYV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpLZXlBZ3JlZW1l +bnRQcm90b2NvbCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZDM0ZjI2NDU5OTY4NGUwYf9T +gwFieW4kbWdmbi1zaGFyZWQkPHJ1bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6TWVzc2Fn +ZUF1dGhlbnRpY2F0aW9uQ29kZSBhcyBjb3JlOjpjb252ZXJ0OjpBc1JlZjxzdHI+Pjo6YXNfcmVm +OjpoOWZkM2IwZWYxOWI0MzhhOIBUfmJ5biRtZ2ZuLXNoYXJlZCQ8cnVtYV9ldmVudHM6OmtleTo6 +dmVyaWZpY2F0aW9uOjpNZXNzYWdlQXV0aGVudGljYXRpb25Db2RlIGFzIGNvcmU6OmNvbnZlcnQ6 +OkZyb208VD4+Ojpmcm9tOjpoYjdiNDhhYzBlMDg1YWUwMIFUcGJ5biRtZ2ZuLXNoYXJlZCQ8cnVt +YV9ldmVudHM6OmtleTo6dmVyaWZpY2F0aW9uOjpWZXJpZmljYXRpb25NZXRob2QgYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDI3Y2I2MGMwODU1MDU4OTCCVHxieW4kbWdmbi1zaGFyZWQkPHJ1 +bWFfZXZlbnRzOjprZXk6OnZlcmlmaWNhdGlvbjo6Y2FuY2VsOjpDYW5jZWxDb2RlIGFzIGNvcmU6 +OmNvbnZlcnQ6OkFzUmVmPHN0cj4+Ojphc19yZWY6OmgzMjBjNTdjZjI3YTNjNjVlg1RcYnluJG1n +Zm4tc2hhcmVkJDxydW1hX2V2ZW50czo6cm9vbTo6TWVkaWFTb3VyY2UgYXMgY29yZTo6Zm10OjpE +ZWJ1Zz46OmZtdDo6aDU0OTkzOGYzNzQ1MzA3YzSEVNoBYnluJG1nZm4tc2hhcmVkJDxydW1hX2V2 +ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZv +ciBydW1hX2V2ZW50czo6cm9vbTo6ZW5jcnlwdGVkOjpNZWdvbG1WMUFlc1NoYTJDb250ZW50Pjo6 +ZGVzZXJpYWxpemU6Ol9fRmllbGRWaXNpdG9yIGFzIHNlcmRlOjpkZTo6VmlzaXRvcj46OnZpc2l0 +X3N0cjo6aDA1Y2M1MzUzMzQ0NWYzZWaFVHpieW4kbWdmbi1zaGFyZWQkPHJ1bWFfZXZlbnRzOjpy +b29tOjpoaXN0b3J5X3Zpc2liaWxpdHk6Okhpc3RvcnlWaXNpYmlsaXR5IGFzIGNvcmU6OmNsb25l +OjpDbG9uZT46OmNsb25lOjpoODllZjU3Yzc4NzQzYWNmOIZUggFieW4kbWdmbi1zaGFyZWQkPHJ1 +bWFfZXZlbnRzOjpyb29tOjpoaXN0b3J5X3Zpc2liaWxpdHk6Okhpc3RvcnlWaXNpYmlsaXR5IGFz +IGNvcmU6OmNvbnZlcnQ6OkFzUmVmPHN0cj4+Ojphc19yZWY6OmgyZmU0Y2E4NTEzODNlNjYwh1R9 +YnluJG1nZm4tc2hhcmVkJDxydW1hX2V2ZW50czo6cm9vbTo6aGlzdG9yeV92aXNpYmlsaXR5OjpI +aXN0b3J5VmlzaWJpbGl0eSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPFQ+Pjo6ZnJvbTo6aGY0ZTI2 +MTlkNWYwOTk5OTWIVNkBYnluJG1nZm4tc2hhcmVkJDxydW1hX2V2ZW50czo6c2VjcmV0OjpyZXF1 +ZXN0OjpfOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciBydW1hX2V2ZW50czo6c2Vj +cmV0OjpyZXF1ZXN0OjpSZXF1ZXN0QWN0aW9uSnNvblJlcHI+OjpkZXNlcmlhbGl6ZTo6X19GaWVs +ZFZpc2l0b3IgYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc3RyOjpoNzhhODI1ZGIwNWVi +NmZjMIlUZ2J5biRtZ2ZuLXNoYXJlZCQ8cnVtYV9pZGVudGlmaWVyc192YWxpZGF0aW9uOjplcnJv +cjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDM1YTJlOTFkMTQyYTE1YzWKVGBi +eW4kbWdmbi1zaGFyZWQkPHNlcmRlOjpkZTo6dmFsdWU6OkV4cGVjdGVkSW5TZXEgYXMgc2VyZGU6 +OmRlOjpFeHBlY3RlZD46OmZtdDo6aDM5ZTZiZmQwNmFkOTBiOGaLVHtieW4kbWdmbi1zaGFyZWQk +PHNlcmRlX2pzb246OmRlOjpVbml0VmFyaWFudEFjY2VzczxSPiBhcyBzZXJkZTo6ZGU6OlZhcmlh +bnRBY2Nlc3M+OjpuZXd0eXBlX3ZhcmlhbnRfc2VlZDo6aDA0NTMwYjBmZGY1ODg0ZmKMVHtieW4k +bWdmbi1zaGFyZWQkPHNlcmRlX2pzb246OmRlOjpVbml0VmFyaWFudEFjY2VzczxSPiBhcyBzZXJk +ZTo6ZGU6OlZhcmlhbnRBY2Nlc3M+OjpuZXd0eXBlX3ZhcmlhbnRfc2VlZDo6aDdlZTgxMjllNjVj +M2Q4M2KNVF9ieW4kbWdmbi1zaGFyZWQkPHNlcmRlX2pzb246OmVycm9yOjpFcnJvciBhcyBzZXJk +ZTo6ZGU6OkVycm9yPjo6aW52YWxpZF90eXBlOjpoNTc3NmRjMzU3NzVjMWE4ZY5UWmJ5biRtZ2Zu +LXNoYXJlZCQ8c2VyZGVfanNvbjo6ZXJyb3I6OkVycm9yIGFzIHNlcmRlOjpzZXI6OkVycm9yPjo6 +Y3VzdG9tOjpoYzYwOGZiZDJiZTdjMmY0MY9UZGJ5biRtZ2ZuLXNoYXJlZCQ8c2VyZGVfanNvbjo6 +c2VyOjpDb21wb3VuZDxXLEY+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZU1hcD46OmVuZDo6aDEw +NDVjMDVhMmNiMzJmYmaQVGdieW4kbWdmbi1zaGFyZWQkPHNlcmRlX2pzb246OnNlcjo6Q29tcG91 +bmQ8VyxGPiBhcyBzZXJkZTo6c2VyOjpTZXJpYWxpemVTdHJ1Y3Q+OjplbmQ6OmgzZDIzMjA4OTVl +NjMxNDYzkVRvYnluJG1nZm4tc2hhcmVkJDxzZXJkZV9qc29uOjpzZXI6OlByZXR0eUZvcm1hdHRl +ciBhcyBzZXJkZV9qc29uOjpzZXI6OkZvcm1hdHRlcj46OmVuZF9vYmplY3Q6Omg2ZDljOTdiMWYy +NTdhNjYzklR0YnluJG1nZm4tc2hhcmVkJDxzZXJkZV9qc29uOjp2YWx1ZTo6ZGU6Ok1hcERlc2Vy +aWFsaXplciBhcyBzZXJkZTo6ZGU6Ok1hcEFjY2Vzcz46Om5leHRfdmFsdWVfc2VlZDo6aDc1NzY2 +Y2I2MWQ0YzY3MDaTVHhieW4kbWdmbi1zaGFyZWQkPHNlcmRlX3dhc21fYmluZGdlbjo6ZGU6OkRl +c2VyaWFsaXplciBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cmlu +Zzo6aGJjNGIxOTAwODU0NzYxYzWUVGZieW4kbWdmbi1zaGFyZWQkPHN0ZDo6aGFzaDo6cmFuZG9t +OjpSYW5kb21TdGF0ZSBhcyBjb3JlOjpkZWZhdWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aGI2MGEx +ODE5NDM0NzQ1YWWVVHNieW4kbWdmbi1zaGFyZWQkPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5p +Yzo6UGF5bG9hZDxBPiBhcyBjb3JlOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6dGFrZV9ib3g6Omgw +MzdiZDIyODMzMzQ3ZDJlllRfYnluJG1nZm4tc2hhcmVkJDxzdGQ6OnN5bmM6OnBvaXNvbjo6UG9p +c29uRXJyb3I8VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI0OTc1YjJjZjg4ODI2ZDGX +VFpieW4kbWdmbi1zaGFyZWQkPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8VD4gYXMgY29yZTo6 +Zm10OjpEZWJ1Zz46OmZtdDo6aDE3NGM0NGMxYjAwZmQwYTWYVFpieW4kbWdmbi1zaGFyZWQkPHN0 +ZDo6c3luYzo6cndsb2NrOjpSd0xvY2s8VD4gYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDNi +Njk1MzI5ZTkwYjE4YmWZVGpieW4kbWdmbi1zaGFyZWQkPHN0ZDo6c3luYzo6cndsb2NrOjpSd0xv +Y2tXcml0ZUd1YXJkPFQ+IGFzIGNvcmU6Om9wczo6ZHJvcDo6RHJvcD46OmRyb3A6OmgyNzM4ODEx +MDJiNDlkZGUwmlRqYnluJG1nZm4tc2hhcmVkJDxzdGQ6OnN5bmM6OnJ3bG9jazo6UndMb2NrV3Jp +dGVHdWFyZDxUPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMmM3YzA1YzRmYjUy +MjMwMZtUXGJ5biRtZ2ZuLXNoYXJlZCQ8dG9raW86OnN5bmM6OnJ3bG9jazo6UndMb2NrPFQ+IGFz +IGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0NWRhOGNlMTBiOTY3YjUynFRaYnluJG1nZm4tc2hh +cmVkJDx2b2RvemVtYWM6OkxpYm9sbVBpY2tsZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+Ojpm +bXQ6OmgyNjI1NzljMDY5OGI2MzUwnVRUYnluJG1nZm4tc2hhcmVkJDx2b2RvemVtYWM6OlBpY2ts +ZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxOGY5MDI1MzQ4OTU3ZTdlnlTsAWJ5 +biRtZ2ZuLXNoYXJlZCQ8dm9kb3plbWFjOjpvbG06OnNlc3Npb246OmRvdWJsZV9yYXRjaGV0Ojpf +Ojo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplIGZvciB2b2RvemVtYWM6Om9sbTo6c2Vzc2lv +bjo6ZG91YmxlX3JhdGNoZXQ6OkRvdWJsZVJhdGNoZXRTdGF0ZT46OmRlc2VyaWFsaXplOjpfX0Zp +ZWxkVmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zdHI6OmgyYjdjZjVhMWY0 +OGQzYzdhn1RYYnluJG1nZm4tc2hhcmVkJDx2b2RvemVtYWM6OnR5cGVzOjpLZXlFcnJvciBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTczMzljYTgyMmU4NWUwNKBUb2J5biRtZ2ZuLXNoYXJl +ZCQ8dm9kb3plbWFjOjp0eXBlczo6Y3VydmUyNTUxOTo6Q3VydmUyNTUxOVB1YmxpY0tleSBhcyBj +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzE5NGFkODYyYzI3N2U5NaFUZ2J5biRtZ2ZuLXNoYXJl +ZCQ8dm9kb3plbWFjOjp0eXBlczo6ZWQyNTUxOTo6U2lnbmF0dXJlRXJyb3IgYXMgY29yZTo6Zm10 +OjpEZWJ1Zz46OmZtdDo6aGU0NDUzYWIyMGM1OTBkMziiVFpieW4kbWdmbi1zaGFyZWQkPHdhc21f +YmluZGdlbjo6SnNFcnJvciBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPEU+Pjo6ZnJvbTo6aDA5MWJl +ZDE1OGNkZTZiMjCjVFpieW4kbWdmbi1zaGFyZWQkPHdhc21fYmluZGdlbjo6SnNFcnJvciBhcyBj +b3JlOjpjb252ZXJ0OjpGcm9tPEU+Pjo6ZnJvbTo6aGY3YWNiNDA2NjEyMDM4ZDOkVDlieW4kbWdm +bi1zaGFyZWQkX193YmdfZ2V0X2Jhc2VtaWdyYXRpb25kYXRhX2JhY2t1cFZlcnNpb26lVDVieW4k +bWdmbi1zaGFyZWQkX193YmdfZ2V0X3BpY2tsZWRzZXNzaW9uX2NyZWF0aW9uVGltZaZUQ2J5biRt +Z2ZuLXNoYXJlZCRhbGxvYzo6YWxsb2M6OmV4Y2hhbmdlX21hbGxvYzo6aDgzZGQzNDAzNmVjOTE5 +YzEuMTSnVEhieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmJveGVkOjpCb3g8VCxBPjo6bmV3X3VuaW5p +dF9pbjo6aDAzMDgyYTI5MDZkMjhhMTSoVEhieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmJveGVkOjpC +b3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aDJjNjc2YmExN2Y2MjIzNDWpVEhieW4kbWdmbi1zaGFy +ZWQkYWxsb2M6OmJveGVkOjpCb3g8VCxBPjo6bmV3X3VuaW5pdF9pbjo6aDljNzBmNjRiYmE1OTcx +ZGWqVF5ieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjpJbnRv +SXRlcjxLLFYsQT46OmR5aW5nX25leHQ6OmhkYTk3NGYxNThiYmM2NDE4q1SkAmJ5biRtZ2ZuLXNo +YXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNv +bGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Ok5vZGVSZWY8Qm9ycm93VHlwZSxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpMZWFmT3JJbnRlcm5hbD4sYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpLVj4+OjpuZXh0X2xlYWZfZWRnZTo6aDBiZjhlYWQxNjM5ZTE1YzKsVM8B +YnluJG1nZm4tc2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1w +bCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPEJvcnJvd1R5cGUsSyxW +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TGVhZk9ySW50ZXJuYWw+ +Pjo6bGFzdF9sZWFmX2VkZ2U6OmhiNmFmMjUwMjYzMTFlYjJkrVRxYnluJG1nZm4tc2hhcmVkJGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjpMYXp5TGVhZlJhbmdlPEJvcnJvd1R5 +cGUsSyxWPjo6aW5pdF9mcm9udDo6aDQxMzBlYmZkNGNlN2VkNmOuVFZieW4kbWdmbi1zaGFyZWQk +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoMWMy +MDA0NDY1N2FmOGMxMq9UVmJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVl +Ojpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6OmgyMmE2ZWE4MTUyNWU3NjNjsFRWYnluJG1nZm4t +c2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5l +dzo6aDI2YzFmYmIxMmJlNDU4NzSxVFZieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoMmIwZTExNDdhYTExMDhmYbJUVmJ5 +biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxL +LFY+OjpuZXc6OmgyZDY3MDQ3YjIxMWM4ZTE3s1RWYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aDM1MGJmN2VmODQ0NTc3 +NDi0VFZieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVh +Zk5vZGU8SyxWPjo6bmV3OjpoM2FkYzQwYzBjMGRmNTYyZLVUVmJ5biRtZ2ZuLXNoYXJlZCRhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6OmgzZDM3YzQ2 +MzljZjgzNjUytlRWYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aDQ4MmQ3ZDIwMDU3OTRlMjK3VFZieW4kbWdmbi1zaGFy +ZWQkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3Ojpo +NjEyOTUxYmRjNzlhZDVjObhUVmJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0 +cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6Omg2NWZmZDEzZTMyNzcyZmZiuVRWYnluJG1n +Zm4tc2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46 +Om5ldzo6aDY3MTg3NzVjOWIxNDQxZGK6VFZieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxlY3Rp +b25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoNmU0ZTBkZTM1ODQ0NWI3M7tU +VmJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9k +ZTxLLFY+OjpuZXc6Omg2ZWIwMDlhMjY3NzY4N2UxvFRWYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aDcyMzE4ZGU2NDJi +ODA3MGW9VFZieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +TGVhZk5vZGU8SyxWPjo6bmV3OjpoNzJmYjc0NmUxNDIzNGRiML5UVmJ5biRtZ2ZuLXNoYXJlZCRh +bGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6Omg3YjY0 +MzdmYmI2MWZiMjNlv1RWYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aGFhZTg5YjQ2NDI2NzI0NmHAVFZieW4kbWdmbi1z +aGFyZWQkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3 +OjpoYjg1MTM0MWM2MTFiYTQzMsFUVmJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6 +OmJ0cmVlOjpub2RlOjpMZWFmTm9kZTxLLFY+OjpuZXc6OmhjNjQ2YjA2NGZhNzVlOWIwwlRWYnlu +JG1nZm4tc2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEss +Vj46Om5ldzo6aGM3YTA3M2Y1ZjU5NGJlMzbDVFZieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxl +Y3Rpb25zOjpidHJlZTo6bm9kZTo6TGVhZk5vZGU8SyxWPjo6bmV3OjpoY2QyNTk4MWIzNGYyM2Ux +ZMRUVmJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpMZWFm +Tm9kZTxLLFY+OjpuZXc6OmhkZmJjNjJmODkwNmJjYWFmxVRWYnluJG1nZm4tc2hhcmVkJGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkxlYWZOb2RlPEssVj46Om5ldzo6aGZkMjZjZGRh +OTg2MWNmZjTGVM8BYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5v +ZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQs +SyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpj +b3JyZWN0X2NoaWxkcmVuc19wYXJlbnRfbGlua3M6Omg0NDUwNTk3YWVlMTI1NTcwx1S1AWJ5biRt +Z2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVzaDo6aDA5MGNiNmMzODgw +M2QxZTHIVLUBYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6 +Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxW +LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+OjpwdXNo +OjpoMGUzYjhjYmIzYmJjNmQ5NclUtQFieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpt +YXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJ +bnRlcm5hbD46OnB1c2g6OmgzOGFiNTNiOWJkYmFkZGI2ylS1AWJ5biRtZ2ZuLXNoYXJlZCRhbGxv +Yzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6 +YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpu +b2RlOjptYXJrZXI6OkludGVybmFsPjo6cHVzaDo6aDYzZDAyNzY5ZWEyZDM1NznLVLUBYnluJG1n +Zm4tc2hhcmVkJGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6 +OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0 +aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+OjpwdXNoOjpoZWVkZjBkZWMwYjcx +MjdmMsxUvQFieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6 +Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYs +YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6cHVzaF93aXRo +X2hhbmRsZTo6aDAyNGNiNmJkMzY2NGJlZTDNVL0BYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpjb2xs +ZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6 +bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1h +cmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6OmgwZTQ1OWFmNTI1MWI2Y2ZhzlS9AWJ5biRt +Z2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9j +Ojpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVj +dGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+OjpwdXNoX3dpdGhfaGFuZGxlOjpoMTIw +YzU0MmNhZGM5OTAyMM9UvQFieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6 +Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPjo6 +cHVzaF93aXRoX2hhbmRsZTo6aDRkODMwN2VjYmQ0YTM4ZDPQVL0BYnluJG1nZm4tc2hhcmVkJGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25z +OjpidHJlZTo6bm9kZTo6bWFya2VyOjpNdXQsSyxWLGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6 +Om5vZGU6Om1hcmtlcjo6TGVhZj46OnB1c2hfd2l0aF9oYW5kbGU6Omg2OThhMzRmY2MyM2FmOGU1 +0VTEAWJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2Rl +UmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6T3duZWQsSyxWLGFs +bG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6SW50ZXJuYWw+Ojpmcm9tX25l +d19pbnRlcm5hbDo6aDAwYTdiYjNjNjQ4YWRkMGLSVMQBYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpj +b2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJl +ZTo6bm9kZTo6bWFya2VyOjpPd25lZCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9k +ZTo6bWFya2VyOjpJbnRlcm5hbD46OmZyb21fbmV3X2ludGVybmFsOjpoMWFlMTU1MjViOGQ4NDhm +YtNUUWJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptb3Zl +X3RvX3NsaWNlOjpoMDJlMWU0ZThhOTgyNGVkN9RUUWJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29s +bGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptb3ZlX3RvX3NsaWNlOjpoMDRhYTkxOTc4YjkzNmQ3MtVU +UGJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpzbGljZV9p +bnNlcnQ6Omg0MGIxZGI5NzllMDc0OTU01lQ1YnluJG1nZm4tc2hhcmVkJGFsbG9jOjpmbXQ6OmZv +cm1hdDo6aGI5MDBmMzA4N2I3NzZiOTjXVDdieW4kbWdmbi1zaGFyZWQkYWxsb2M6OmZtdDo6Zm9y +bWF0OjpoYjkwMGYzMDg3Yjc3NmI5OC4z2FRLYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpyYXdfdmVj +OjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmgwNjg3Y2FmMWE3ZWRhMmIy2VRLYnluJG1nZm4t +c2hhcmVkJGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6YWxsb2NhdGVfaW46OmgwOWU4NmMz +OGQ0OThmMTBh2lRLYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6 +YWxsb2NhdGVfaW46OmgxMDkwM2RhMmM4NTY3OWZi21ROYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpy +YXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19hbW9ydGl6ZWQ6OmgxYTIwNmY1NjMzODZiZTc53FRO +YnluJG1nZm4tc2hhcmVkJGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19hbW9ydGl6 +ZWQ6OmhkZTBmODYxYzNmNmQ5OWM13VROYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpyYXdfdmVjOjpS +YXdWZWM8VCxBPjo6Z3Jvd19hbW9ydGl6ZWQ6OmhlMzM0OGM2ZGUxMjY4OWVi3lReYnluJG1nZm4t +c2hhcmVkJGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9h +bmRfaGFuZGxlOjpoMDA5ODRjY2ZlMTIzZTNmZN9UUGJ5biRtZ2ZuLXNoYXJlZCRhbGxvYzo6cmF3 +X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmVfZm9yX3B1c2g6OmgwNDMzNTQ0ZWY1N2FiZmIx4FQ7 +YnluJG1nZm4tc2hhcmVkJGFsbG9jOjpzeW5jOjpBcmM8VD46Om5ldzo6aDEyODliNzAwMmVmY2Q5 +ZjDhVENieW4kbWdmbi1zaGFyZWQkYWxsb2M6OnN5bmM6OkFyYzxULEE+Ojpkb3duZ3JhZGU6Omgx +NzgyYTk1ZjBjNThhMjQ44lRCYnluJG1nZm4tc2hhcmVkJGFsbG9jOjpzeW5jOjpXZWFrPFQsQT46 +OnVwZ3JhZGU6OmgwODIyOWU5MGQ3MGU0NWNk41RJYnluJG1nZm4tc2hhcmVkJGFsbG9jOjp2ZWM6 +OlZlYzxULEE+OjppbnRvX2JveGVkX3NsaWNlOjpoMGI4Yzg0OThmODY4NTFkZuRUQGJ5biRtZ2Zu +LXNoYXJlZCRhbGxvYzo6dmVjOjpWZWM8VCxBPjo6cmVzZXJ2ZTo6aDc2MTEwYzAzOTQ5ODFhYzHl +VEBieW4kbWdmbi1zaGFyZWQkYWxsb2M6OnZlYzo6VmVjPFQsQT46OnJlc2VydmU6Omg5ZWM0ZjVl +M2U0NjQ0ZGM45lRnYnluJG1nZm4tc2hhcmVkJGFueWhvdzo6ZXJyb3I6OjxpbXBsIGNvcmU6OmNv +bnZlcnQ6OkZyb208RT4gZm9yIGFueWhvdzo6RXJyb3I+Ojpmcm9tOjpoNWQyZjU3ZDE2MDRiMDEx +OedUQ2J5biRtZ2ZuLXNoYXJlZCRjaGFjaGEyMDo6eGNoYWNoYTo6cXVhcnRlcl9yb3VuZDo6aDBj +MTJiODRmOTQ0NDBjYmPoVGpieW4kbWdmbi1zaGFyZWQkY29yZTo6YXJyYXk6OjxpbXBsIGNvcmU6 +Om9wczo6aW5kZXg6OkluZGV4TXV0PEk+IGZvciBbVDsgTl0+OjppbmRleF9tdXQ6Omg5MTI0YjQ1 +ZTQwNjI0OTI16VRFYnluJG1nZm4tc2hhcmVkJGNvcmU6OmNlbGw6OlJlZkNlbGw8VD46OmJvcnJv +d19tdXQ6Omg2YzdlYjhmYjcxZGNmODcz6lRFYnluJG1nZm4tc2hhcmVkJGNvcmU6OmNlbGw6OnBh +bmljX2FscmVhZHlfYm9ycm93ZWQ6OmhiMzNlMWUxN2VlYWJiYzM461Q7YnluJG1nZm4tc2hhcmVk +JGNvcmU6OmNtcDo6UGFydGlhbEVxOjpuZTo6aGUzNDJlYWRjNzJlOTZiMzDsVDxieW4kbWdmbi1z +aGFyZWQkY29yZTo6ZXJyb3I6OkVycm9yOjpjYXVzZTo6aDM4NGNkYzhkZDEwODhhODTtVENieW4k +bWdmbi1zaGFyZWQkY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX2xpc3Q6OmhhMjZiY2Y1NzEx +NzJhNTUx7lRIYnluJG1nZm4tc2hhcmVkJGNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnU2V0Ojpm +aW5pc2g6OmgzYzljNTY3N2FkM2UxMmZk71RbYnluJG1nZm4tc2hhcmVkJGNvcmU6OmZtdDo6bnVt +Ojo8aW1wbCBjb3JlOjpmbXQ6Okxvd2VySGV4IGZvciBpMTI4Pjo6Zm10OjpoNjZkY2EwYjFhYzYw +YmQxMfBUWmJ5biRtZ2ZuLXNoYXJlZCRjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpM +b3dlckhleCBmb3IgaTMyPjo6Zm10OjpoN2Q4OGZmYjEyMGZiZjE5ZfFUWmJ5biRtZ2ZuLXNoYXJl +ZCRjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpMb3dlckhleCBmb3IgaTY0Pjo6Zm10 +OjpoOWJlMTU0OTNjZTNlNzhhM/JUWWJ5biRtZ2ZuLXNoYXJlZCRjb3JlOjpmbXQ6Om51bTo6PGlt +cGwgY29yZTo6Zm10OjpVcHBlckhleCBmb3IgaTg+OjpmbXQ6OmhjNjliZjU2MDJmM2NhNmQ181RJ +YnluJG1nZm4tc2hhcmVkJGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpo +MmUzZDdlZWVmZWU5YzdjOPRUSWJ5biRtZ2ZuLXNoYXJlZCRjb3JlOjpvcHM6OmZ1bmN0aW9uOjpG +bk9uY2U6OmNhbGxfb25jZTo6aDk5NGNiM2E4MjAxMzgzNWT1VEJieW4kbWdmbi1zaGFyZWQkY29y +ZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6aDQ3NDc5ODVjYTJhODJjZGX2VEJieW4kbWdm +bi1zaGFyZWQkY29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6aDRkNGNlYTVmYjM3OTMy +MTn3VEJieW4kbWdmbi1zaGFyZWQkY29yZTo6b3B0aW9uOjpPcHRpb248VD46OmV4cGVjdDo6aGU3 +YzVlMmIxMGUzNjE5Y2T4VEFieW4kbWdmbi1zaGFyZWQkY29yZTo6cGFuaWNraW5nOjphc3NlcnRf +ZmFpbGVkOjpoZmUxM2JmYzE3ZWE0Y2NjMvlUR2J5biRtZ2ZuLXNoYXJlZCRjb3JlOjpwYW5pY2tp +bmc6OnVucmVhY2hhYmxlX2Rpc3BsYXk6OmhkYjllMjE2YTMwZjJkYTkz+lREYnluJG1nZm4tc2hh +cmVkJGNvcmU6OnJlc3VsdDo6UmVzdWx0PFQsRT46OmV4cGVjdDo6aGI2ZGZiYzhhZjE3NTliMTP7 +VEVieW4kbWdmbi1zaGFyZWQkY29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxFPjo6bWFwX2Vycjo6aDBh +ZDIxNDRhMzAyMTM5Mjb8VEVieW4kbWdmbi1zaGFyZWQkY29yZTo6cmVzdWx0OjpSZXN1bHQ8VCxF +Pjo6bWFwX2Vycjo6aDQ0OGY5M2NmMTAxYmEzYmH9VEVieW4kbWdmbi1zaGFyZWQkY29yZTo6cmVz +dWx0OjpSZXN1bHQ8VCxFPjo6bWFwX2Vycjo6aDQ3MWZjZTlmYmFhNTJmZTf+VERieW4kbWdmbi1z +aGFyZWQkY29yZTo6c2xpY2U6OjxpbXBsIFtUXT46OnNwbGl0X2F0OjpoMWE4NDRlOWIyNmY2ODM0 +Mv9URGJ5biRtZ2ZuLXNoYXJlZCRjb3JlOjpzbGljZTo6PGltcGwgW1RdPjo6c3BsaXRfYXQ6Omhl +YzQxYjIyZjE4MDNjZGE0gFVUYnluJG1nZm4tc2hhcmVkJGNvcmU6OnNsaWNlOjppbmRleDo6c2xp +Y2VfZW5kX2luZGV4X292ZXJmbG93X2ZhaWw6Omg5ZmU3NDRkNTY0ZTFiY2Y2gVVRYnluJG1nZm4t +c2hhcmVkJGNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2Vfc3RhcnRfaW5kZXhfbGVuX2ZhaWw6Omhi +MjQzYjk5MGY4NTVkM2Q3glVBYnluJG1nZm4tc2hhcmVkJGNvcmU6OnNsaWNlOjpzb3J0OjpmaW5k +X3N0cmVhazo6aGZjMzNmMjhiYzliNDhjYzWDVUFieW4kbWdmbi1zaGFyZWQkY29yZTo6c2xpY2U6 +OnNvcnQ6Omluc2VydF90YWlsOjpoMzQwMTQ1YTE4M2RkNGUwYoRVT2J5biRtZ2ZuLXNoYXJlZCRj +b3JlOjpzbGljZTo6c29ydDo6aW5zZXJ0aW9uX3NvcnRfc2hpZnRfbGVmdDo6aGQ2MDg0NWRiYjVj +ODY1YjeFVV9ieW4kbWdmbi1zaGFyZWQkY29yZTo6c2xpY2U6OnNvcnQ6Om1lcmdlX3NvcnQ6OkJ1 +Zkd1YXJkPFQsRWxlbURlYWxsb2NGPjo6bmV3OjpoMDY4ZDNjYmJjNjMyNjFkM4ZVZWJ5biRtZ2Zu +LXNoYXJlZCRjb3JlOjpzbGljZTo6c29ydDo6bWVyZ2Vfc29ydDo6UnVuVmVjPFJ1bkFsbG9jRixS +dW5EZWFsbG9jRj46OnB1c2g6OmgxNmNjNzYyNzAxYzA2Nzk1h1VnYnluJG1nZm4tc2hhcmVkJGNv +cmU6OnNsaWNlOjpzb3J0OjptZXJnZV9zb3J0OjpSdW5WZWM8UnVuQWxsb2NGLFJ1bkRlYWxsb2NG +Pjo6cmVtb3ZlOjpoMDZmMjEwYzQxOGNiYjAzYohVR2J5biRtZ2ZuLXNoYXJlZCRjb3JlOjpzeW5j +OjphdG9taWM6OkF0b21pY0Jvb2w6OmxvYWQ6Omg5YjFjZjZmNTRjMmFhZTJliVU8YnluJG1nZm4t +c2hhcmVkJGNvcmU6OnRpbWU6OkR1cmF0aW9uOjpuZXc6OmgwN2EyMDcxMjA5YTZkOGRiilU2Ynlu +JG1nZm4tc2hhcmVkJGNyb3Nzc2lnbmluZ2tleWV4cG9ydF9zZWxmX3NpZ25pbmdfa2V5i1VNYnlu +JG1nZm4tc2hhcmVkJGV5ZWJhbGw6OnNoYXJlZDo6U2hhcmVkT2JzZXJ2YWJsZTxUPjo6cmVhZDo6 +aDg5ZTY4NGM3NDAxZjE3NTeMVU5ieW4kbWdmbi1zaGFyZWQkZXllYmFsbDo6c2hhcmVkOjpTaGFy +ZWRPYnNlcnZhYmxlPFQ+Ojp3cml0ZTo6aDMwMmJkNGI4NDllZmFjMTSNVUVieW4kbWdmbi1zaGFy +ZWQkZnV0dXJlc190YXNrOjp3YWtlcjo6Y2xvbmVfYXJjX3Jhdzo6aDEzM2IxZmIxYWQ0Mjc3YTOO +VVFieW4kbWdmbi1zaGFyZWQkaGFzaGJyb3duOjpyYXc6OkZhbGxpYmlsaXR5OjpjYXBhY2l0eV9v +dmVyZmxvdzo6aDU1ODAwYzhjZmFlYTUxOTOPVZABYnluJG1nZm4tc2hhcmVkJGluZGV4ZWRfZGJf +ZnV0dXJlczo6aWRiX2RhdGFiYXNlOjppZGJfdmVyc2lvbl9jaGFuZ2VfZXZlbnQ6OklkYlZlcnNp +b25DaGFuZ2VFdmVudDo6d3JhcF9jYWxsYmFjazo6e3tjbG9zdXJlfX06Omg5ODU3Y2JkN2FmYmRh +ZGY3kFUmYnluJG1nZm4tc2hhcmVkJGtleXN1cGxvYWRyZXF1ZXN0X3R5cGWRVVVieW4kbWdmbi1z +aGFyZWQkbWF0cml4X3Nka19jcnlwdG86Omdvc3NpcGluZzo6UmVxdWVzdEV2ZW50OjpzZW5kZXI6 +OmgxNDcwMjA0NzIzMGRlN2ZlklVWYnluJG1nZm4tc2hhcmVkJG1hdHJpeF9zZGtfY3J5cHRvOjpz +dG9yZTo6U3RvcmU6OmNhY2hlOjp7e2Nsb3N1cmV9fTo6aDBjMDMwNzdiN2JjYjIzYmSTVVtieW4k +bWdmbi1zaGFyZWQkbWF0cml4X3Nka19jcnlwdG86OnN0b3JlOjpTdG9yZTo6Z2V0X2RldmljZTo6 +e3tjbG9zdXJlfX06Omg5OTc4MWQxMzRkMGYwMmFhlFVdYnluJG1nZm4tc2hhcmVkJG1hdHJpeF9z +ZGtfY3J5cHRvOjpzdG9yZTo6U3RvcmU6OmdldF9pZGVudGl0eTo6e3tjbG9zdXJlfX06OmhkMTk1 +OTg1YzFkZjc3MWNjlVVcYnluJG1nZm4tc2hhcmVkJG1hdHJpeF9zZGtfY3J5cHRvOjpzdG9yZTo6 +U3RvcmU6OnRyYW5zYWN0aW9uOjp7e2Nsb3N1cmV9fTo6aDNmY2ZmZmFlYzNmNjMzNDeWVXFieW4k +bWdmbi1zaGFyZWQkbWF0cml4X3Nka19jcnlwdG86OnR5cGVzOjpldmVudHM6Om9sbV92MTo6QW55 +RGVjcnlwdGVkT2xtRXZlbnQ6OnJlY2lwaWVudF9rZXlzOjpoMDgxYTk2NDlmYTdiMjFlNZdVaWJ5 +biRtZ2ZuLXNoYXJlZCRtYXRyaXhfc2RrX2NyeXB0bzo6dHlwZXM6OmV2ZW50czo6b2xtX3YxOjpB +bnlEZWNyeXB0ZWRPbG1FdmVudDo6c2VuZGVyOjpoNjg2Mzk0N2FkYjJhZGY0MphVUmJ5biRtZ2Zu +LXNoYXJlZCRtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpDYW5jZWxsZWQ6Om5ldzo6 +aGVjNTgwY2ZhMDVhM2E1MzCZVW5ieW4kbWdmbi1zaGFyZWQkbWF0cml4X3Nka19jcnlwdG86OnZl +cmlmaWNhdGlvbjo6VmVyaWZpY2F0aW9uU3RvcmU6OmdldF9kZXZpY2U6Ont7Y2xvc3VyZX19Ojpo +OTE5NmRhOTI1ZTE2MGVmOJpVdWJ5biRtZ2ZuLXNoYXJlZCRtYXRyaXhfc2RrX2NyeXB0bzo6dmVy +aWZpY2F0aW9uOjpWZXJpZmljYXRpb25TdG9yZTo6Z2V0X3VzZXJfaWRlbnRpdHk6Ont7Y2xvc3Vy +ZX19OjpoNTc1NTEzMjgyOWM2N2I1NptVaGJ5biRtZ2ZuLXNoYXJlZCRtYXRyaXhfc2RrX2NyeXB0 +bzo6dmVyaWZpY2F0aW9uOjpjYWNoZTo6VmVyaWZpY2F0aW9uQ2FjaGU6Omluc2VydF9zYXM6Omg1 +NTU5ZmJlOWQxODhkYTIznFVkYnluJG1nZm4tc2hhcmVkJG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJp +ZmljYXRpb246OnFyY29kZTo6UXJWZXJpZmljYXRpb246Om5ld19zZWxmOjpoOGNjNDc4NTY3NTVl +YzdiN51VbWJ5biRtZ2ZuLXNoYXJlZCRtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpy +ZXF1ZXN0czo6VmVyaWZpY2F0aW9uUmVxdWVzdDo6aXNfcGFzc2l2ZTo6aGRiMjQzNTIzYzA2NWYx +YjOeVVpieW4kbWdmbi1zaGFyZWQkbWF0cml4X3Nka19jcnlwdG86OnZlcmlmaWNhdGlvbjo6c2Fz +OjpTYXM6OmlzX2NhbmNlbGxlZDo6aGIwNmI1ODIyZTUwNWI3NjOfVaUBYnluJG1nZm4tc2hhcmVk +JG1hdHJpeF9zZGtfY3J5cHRvOjp2ZXJpZmljYXRpb246OnNhczo6c2FzX3N0YXRlOjpTYXNTdGF0 +ZTxtYXRyaXhfc2RrX2NyeXB0bzo6dmVyaWZpY2F0aW9uOjpzYXM6OnNhc19zdGF0ZTo6RG9uZT46 +OnZlcmlmaWVkX2RldmljZXM6Omg5ZmZjYTlhNGUxNGE0ZGE0oFVzYnluJG1nZm4tc2hhcmVkJG1h +dHJpeF9zZGtfY3J5cHRvX3dhc206OmZ1dHVyZTo6ZnV0dXJlX3RvX3Byb21pc2Vfd2l0aF9jdXN0 +b21fZXJyb3I6Ont7Y2xvc3VyZX19OjpoYTYxMjg2NTU5MmE3MjI5YqFVc2J5biRtZ2ZuLXNoYXJl +ZCRtYXRyaXhfc2RrX2NyeXB0b193YXNtOjpmdXR1cmU6OmZ1dHVyZV90b19wcm9taXNlX3dpdGhf +Y3VzdG9tX2Vycm9yOjp7e2Nsb3N1cmV9fTo6aGQxYjRhYWJmMGI2ODg1N2aiVS5ieW4kbWdmbi1z +aGFyZWQkb2xtbWFjaGluZV9nZXRTZWNyZXRzRnJvbUluYm94o1UpYnluJG1nZm4tc2hhcmVkJG9s +bW1hY2hpbmVfaW1wb3J0Um9vbUtleXOkVTlieW4kbWdmbi1zaGFyZWQkb2xtbWFjaGluZV9yZWdp +c3RlclJvb21LZXlVcGRhdGVkQ2FsbGJhY2ulVTFieW4kbWdmbi1zaGFyZWQkb2xtbWFjaGluZV9y +b29tS2V5UmVxdWVzdHNFbmFibGVkplU1YnluJG1nZm4tc2hhcmVkJG9sbW1hY2hpbmVfc2V0X3Jv +b21LZXlSZXF1ZXN0c0VuYWJsZWSnVSlieW4kbWdmbi1zaGFyZWQkb3dudXNlcmlkZW50aXR5X21h +c3RlcktleahVIWJ5biRtZ2ZuLXNoYXJlZCRxcl9oYXNCZWVuU2Nhbm5lZKlVPWJ5biRtZ2ZuLXNo +YXJlZCRybXA6OmVuY29kZTo6d3JpdGVfbWFwX2xlbjo6aGNkNGEyOTY0MWUzYzNjY2aqVU9ieW4k +bWdmbi1zaGFyZWQkcnVtYV9jb21tb246OnNlcmRlOjpiYXNlNjQ6OkJhc2U2NDxDPjo6cGFyc2U6 +OmgwOTY0NjAxOWE3MGVkMWZhq1VUYnluJG1nZm4tc2hhcmVkJHJ1bWFfZXZlbnRzOjplbnVtczo6 +VG9EZXZpY2VFdmVudFR5cGU6OnRvX2Nvd19zdHI6Omg0ZTQ2ZWVmYzc3MzM5YjlkrFVSYnluJG1n +Zm4tc2hhcmVkJHJ1bWFfZXZlbnRzOjpraW5kczo6TWVzc2FnZUxpa2VFdmVudDxDPjo6c2VuZGVy +OjpoMGI5YTJjZDA4ZTFlNTY3NK1VJmJ5biRtZ2ZuLXNoYXJlZCRzYXNfaXNTZWxmVmVyaWZpY2F0 +aW9urlVYYnluJG1nZm4tc2hhcmVkJHNlcmRlOjpfX3ByaXZhdGU6OnNlcjo6RmxhdE1hcFNlcmlh +bGl6ZXI8TT46OmJhZF90eXBlOjpoOGQ0YzE2ZjNhNzQ1Y2I5Nq9VRGJ5biRtZ2ZuLXNoYXJlZCRz +ZXJkZTo6ZGU6OkVycm9yOjpkdXBsaWNhdGVfZmllbGQ6Omg1ZTM5YjhmY2M5MjVkZDk1sFVDYnlu +JG1nZm4tc2hhcmVkJHNlcmRlOjpkZTo6RXJyb3I6OmludmFsaWRfbGVuZ3RoOjpoMmM3YjkxMTdh +OWVkZDRhZLFVQmJ5biRtZ2ZuLXNoYXJlZCRzZXJkZTo6ZGU6OkVycm9yOjppbnZhbGlkX3ZhbHVl +OjpoMjhiNDlhMWUwZTBmMmE0MLJVQmJ5biRtZ2ZuLXNoYXJlZCRzZXJkZTo6ZGU6OkVycm9yOjpp +bnZhbGlkX3ZhbHVlOjpoZTg5YmJhODBlNDU1ODY2M7NVQmJ5biRtZ2ZuLXNoYXJlZCRzZXJkZTo6 +ZGU6OkVycm9yOjptaXNzaW5nX2ZpZWxkOjpoMDcyMWMwZGI5MDJlOTliN7RVQmJ5biRtZ2ZuLXNo +YXJlZCRzZXJkZTo6ZGU6OkVycm9yOjptaXNzaW5nX2ZpZWxkOjpoMmMxMzY2OTBlYTY2NDBjOLVV +QmJ5biRtZ2ZuLXNoYXJlZCRzZXJkZTo6ZGU6OkVycm9yOjptaXNzaW5nX2ZpZWxkOjpoYTM3ZGY5 +NzI1YmM3ZWM5ZbZVRGJ5biRtZ2ZuLXNoYXJlZCRzZXJkZTo6ZGU6OkVycm9yOjp1bmtub3duX3Zh +cmlhbnQ6OmhkM2YxYzBlYjE2YjQ1MTM5t1VBYnluJG1nZm4tc2hhcmVkJHNlcmRlOjpkZTo6TWFw +QWNjZXNzOjpuZXh0X2tleTo6aDkwMDA4MWU4MDJjMzcwNTa4VUJieW4kbWdmbi1zaGFyZWQkc2Vy +ZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aDA0MjlmMTI0Y2Y4YjU2Njm5VUJieW4kbWdm +bi1zaGFyZWQkc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aDIxODJiMGIwMDk2ZjJl +M2K6VUJieW4kbWdmbi1zaGFyZWQkc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9ieXRlczo6aDI2 +NDdlMjllODJmOTU0YTO7VUJieW4kbWdmbi1zaGFyZWQkc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNp +dF9ieXRlczo6aDRkMTBkN2ExM2Q0OGY0Nze8VUBieW4kbWdmbi1zaGFyZWQkc2VyZGU6OmRlOjpW +aXNpdG9yOjp2aXNpdF9mNjQ6OmgyNzUyM2VjYjhhZWNjMTE5vVVAYnluJG1nZm4tc2hhcmVkJHNl +cmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfZjY0OjpoMmY0ZGJjODViYWRkNDI2ZL5VQGJ5biRtZ2Zu +LXNoYXJlZCRzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X2Y2NDo6aDM4OThkNWMyYmQ4Y2JlNWK/ +VUBieW4kbWdmbi1zaGFyZWQkc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9mNjQ6OmhjMjJmMjIx +ZmYyMzE2ZDc5wFVAYnluJG1nZm4tc2hhcmVkJHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfaTY0 +OjpoNTY5YzFlYWY4ZGE5ZTIyMsFVQGJ5biRtZ2ZuLXNoYXJlZCRzZXJkZTo6ZGU6OlZpc2l0b3I6 +OnZpc2l0X2k2NDo6aDljZmI5MzQwODY4MTE2NjfCVUBieW4kbWdmbi1zaGFyZWQkc2VyZGU6OmRl +OjpWaXNpdG9yOjp2aXNpdF9pNjQ6OmhlYmUzMDY0NGU1MjQ3NTNkw1VAYnluJG1nZm4tc2hhcmVk +JHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRfbWFwOjpoMTMxYjYyMjMwZjBlMWE2MsRVQGJ5biRt +Z2ZuLXNoYXJlZCRzZXJkZTo6ZGU6OlZpc2l0b3I6OnZpc2l0X3N0cjo6aDFmMjFkOWE4NTVjMzMz +ZjHFVUBieW4kbWdmbi1zaGFyZWQkc2VyZGU6OmRlOjpWaXNpdG9yOjp2aXNpdF9zdHI6Omg5ODBk +NTUzMjcxZjdiYzgzxlVAYnluJG1nZm4tc2hhcmVkJHNlcmRlOjpkZTo6VmlzaXRvcjo6dmlzaXRf +dTY0OjpoNDJkYTFhNzY1YzNjNzgwYsdVQGJ5biRtZ2ZuLXNoYXJlZCRzZXJkZTo6ZGU6OlZpc2l0 +b3I6OnZpc2l0X3U2NDo6aDU1ZDliOTI5ZjE0NDk4NDbIVT9ieW4kbWdmbi1zaGFyZWQkc2VyZGU6 +OmRlOjpWaXNpdG9yOjp2aXNpdF91ODo6aGIwN2Q3ODIzY2E0MmRkMWPJVU5ieW4kbWdmbi1zaGFy +ZWQkc2VyZGU6OmRlOjp2YWx1ZTo6TWFwRGVzZXJpYWxpemVyPEksRT46OmVuZDo6aDQ3OGEzMTRi +NWRlMzg3MjHKVVBieW4kbWdmbi1zaGFyZWQkc2VyZGVfanNvbjo6ZGU6OkRlc2VyaWFsaXplcjxS +Pjo6aWdub3JlX3ZhbHVlOjpoOTUzMjc2ODE2ZTkyYjczN8tVVWJ5biRtZ2ZuLXNoYXJlZCRzZXJk +ZV9qc29uOjpkZTo6RGVzZXJpYWxpemVyPFI+OjpwZWVrX2ludmFsaWRfdHlwZTo6aDcxOTQ2ZjRm +MTk1YjUxOTnMVTpieW4kbWdmbi1zaGFyZWQkc2VyZGVfanNvbjo6cmVhZDo6ZXJyb3I6Omg4ZTU2 +YWNkYWJhOWY2YjU5zVVPYnluJG1nZm4tc2hhcmVkJHNlcmRlX2pzb246OnNlcjo6Rm9ybWF0dGVy +OjpiZWdpbl9vYmplY3Rfa2V5OjpoNDgwNTZmODdjZjIwNTEyM85ViQFieW4kbWdmbi1zaGFyZWQk +c2VyZGVfanNvbjo6dmFsdWU6OmRlOjo8aW1wbCBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplciBmb3Ig +c2VyZGVfanNvbjo6dmFsdWU6OlZhbHVlPjo6ZGVzZXJpYWxpemVfc3RyaW5nOjpoZDYzMDc3YWEw +ZmM4MDZhZs9VV2J5biRtZ2ZuLXNoYXJlZCRzZXJkZV93YXNtX2JpbmRnZW46OnN0YXRpY19zdHJf +dG9fanM6OkNBQ0hFOjpfX2dldGl0OjpoNTgzNzM0ZjNiNmRkMmE5ZNBVR2J5biRtZ2ZuLXNoYXJl +ZCRzZXJkZV93YXNtX2JpbmRnZW46OnN0YXRpY19zdHJfdG9fanM6OmhmNmZmNzVmNTEwOWQyYmJj +0VU+YnluJG1nZm4tc2hhcmVkJHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6aGI0NGNkNWQ3 +ODM3YzY5MDPSVUhieW4kbWdmbi1zaGFyZWQkc3RkOjp0aHJlYWQ6OmxvY2FsOjpMb2NhbEtleTxU +Pjo6d2l0aDo6aDkwYmI1ZjRlNmM1MTdhYmPTVVJieW4kbWdmbi1zaGFyZWQkdG9raW86OnN5bmM6 +Om11dGV4OjpNdXRleDxUPjo6bG9jazo6e3tjbG9zdXJlfX06Omg0OWY2MGNkMWFmZTAxYzA41FVU +YnluJG1nZm4tc2hhcmVkJHRva2lvOjpzeW5jOjpyd2xvY2s6OlJ3TG9jazxUPjo6cmVhZDo6e3tj +bG9zdXJlfX06Omg1NjJkNjlhYmI4OWFkZDhj1VVVYnluJG1nZm4tc2hhcmVkJHRva2lvOjpzeW5j +Ojpyd2xvY2s6OlJ3TG9jazxUPjo6d3JpdGU6Ont7Y2xvc3VyZX19OjpoMGM5ZTUzY2QyMjBiMTA3 +ZtZVXGJ5biRtZ2ZuLXNoYXJlZCR0b2tpb191dGlsOjpzeW5jOjpyZXVzYWJsZV9ib3g6OlJldXNh +YmxlQm94RnV0dXJlPFQ+OjpuZXc6OmhiMjBhN2Y4YmVkMjUyMTYw11U+YnluJG1nZm4tc2hhcmVk +JHRyYWNpbmc6OnNwYW46OlNwYW46OnJlY29yZDo6aDAwYTliMTVlY2IwMjM0ZTTYVT5ieW4kbWdm +bi1zaGFyZWQkdHJhY2luZzo6c3Bhbjo6U3Bhbjo6cmVjb3JkOjpoOTMxNTgyYzA5NmExMzM2MNlV +TWJ5biRtZ2ZuLXNoYXJlZCR0cmFjaW5nX2NvcmU6OmRpc3BhdGNoZXI6OkVudGVyZWQ6OmN1cnJl +bnQ6OmhiYTM5ZjY4ODllZmEzNzkx2lVJYnluJG1nZm4tc2hhcmVkJHRyYWNpbmdfY29yZTo6Zmll +bGQ6OlZpc2l0OjpyZWNvcmRfc3RyOjpoOGMzMDZkMjEwOWJjNDY4M9tVSWJ5biRtZ2ZuLXNoYXJl +ZCR0cmFjaW5nX2NvcmU6OmZpZWxkOjpWaXNpdDo6cmVjb3JkX3N0cjo6aGU4Y2MyODJjYTZkMmM5 +Y2bcVUlieW4kbWdmbi1zaGFyZWQkdHJhY2luZ19jb3JlOjpmaWVsZDo6VmlzaXQ6OnJlY29yZF9z +dHI6OmhmY2YzNjc4NWJjZDU4N2Fk3VVhYnluJG1nZm4tc2hhcmVkJHRyYWNpbmdfc3Vic2NyaWJl +cjo6cmVnaXN0cnk6OmV4dGVuc2lvbnM6OkV4dGVuc2lvbnNJbm5lcjo6Z2V0OjpoNDEzYTViMjg0 +NzdjY2QwNt5VTWJ5biRtZ2ZuLXNoYXJlZCR3YXNtX2JpbmRnZW46Ol9fcnQ6Oldhc21SZWZDZWxs +PFQ+Ojpib3Jyb3c6OmgwMDhjYjg5NDA3MzE3NzFh31VRYnluJG1nZm4tc2hhcmVkJHdhc21fYmlu +ZGdlbjo6X19ydDo6V2FzbVJlZkNlbGw8VD46OmJvcnJvd19tdXQ6OmgwMWU2ZWE2MTg5OWJlMGQ1 +4FVXYnluJG1nZm4tc2hhcmVkJHdhc21fYmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlz +ZTo6e3tjbG9zdXJlfX06Omg2ZDU5Njk1NjAyYmQ5NDg44VVXYnluJG1nZm4tc2hhcmVkJHdhc21f +YmluZGdlbl9mdXR1cmVzOjpmdXR1cmVfdG9fcHJvbWlzZTo6e3tjbG9zdXJlfX06Omg5ZjVmOWVm +YzQxMjRmZTU2AHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0 +Yx0xLjc3LjAgKGFlZGQxNzNhMiAyMDI0LTAzLTE3KQZ3YWxydXMGMC4yMC4zDHdhc20tYmluZGdl +bhIwLjIuOTIgKDJhNGE0OTM2MikANQ90YXJnZXRfZmVhdHVyZXMDKw9tdXRhYmxlLWdsb2JhbHMr +B3NpbWQxMjgrCHNpZ24tZXh0 +`; + +/***/ }), + +/***/ 334: +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + createTokenAuth: () => createTokenAuth +}); +module.exports = __toCommonJS(dist_src_exports); + +// pkg/dist-src/auth.js +var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +var REGEX_IS_INSTALLATION = /^ghs_/; +var REGEX_IS_USER_TO_SERVER = /^ghu_/; +async function auth(token) { + const isApp = token.split(/\./).length === 3; + const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); + const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); + const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; + return { + type: "token", + token, + tokenType + }; +} + +// pkg/dist-src/with-authorization-prefix.js +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + return `token ${token}`; +} + +// pkg/dist-src/hook.js +async function hook(token, request, route, parameters) { + const endpoint = request.endpoint.merge( + route, + parameters + ); + endpoint.headers.authorization = withAuthorizationPrefix(token); + return request(endpoint); +} + +// pkg/dist-src/index.js +var createTokenAuth = function createTokenAuth2(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } + if (typeof token !== "string") { + throw new Error( + "[@octokit/auth-token] Token passed to createTokenAuth is not a string" + ); + } + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 6762: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + Octokit: () => Octokit +}); +module.exports = __toCommonJS(dist_src_exports); +var import_universal_user_agent = __nccwpck_require__(5030); +var import_before_after_hook = __nccwpck_require__(3682); +var import_request = __nccwpck_require__(6234); +var import_graphql = __nccwpck_require__(8467); +var import_auth_token = __nccwpck_require__(334); + +// pkg/dist-src/version.js +var VERSION = "5.0.1"; + +// pkg/dist-src/index.js +var Octokit = class { + static { + this.VERSION = VERSION; + } + static defaults(defaults) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + if (typeof defaults === "function") { + super(defaults(options)); + return; + } + super( + Object.assign( + {}, + defaults, + options, + options.userAgent && defaults.userAgent ? { + userAgent: `${options.userAgent} ${defaults.userAgent}` + } : null + ) + ); + } + }; + return OctokitWithDefaults; + } + static { + this.plugins = []; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + static plugin(...newPlugins) { + const currentPlugins = this.plugins; + const NewOctokit = class extends this { + static { + this.plugins = currentPlugins.concat( + newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) + ); + } + }; + return NewOctokit; + } + constructor(options = {}) { + const hook = new import_before_after_hook.Collection(); + const requestDefaults = { + baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; + requestDefaults.headers["user-agent"] = [ + options.userAgent, + `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` + ].filter(Boolean).join(" "); + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; + } + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; + } + if (options.timeZone) { + requestDefaults.headers["time-zone"] = options.timeZone; + } + this.request = import_request.request.defaults(requestDefaults); + this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults); + this.log = Object.assign( + { + debug: () => { + }, + info: () => { + }, + warn: console.warn.bind(console), + error: console.error.bind(console) + }, + options.log + ); + this.hook = hook; + if (!options.authStrategy) { + if (!options.auth) { + this.auth = async () => ({ + type: "unauthenticated" + }); + } else { + const auth = (0, import_auth_token.createTokenAuth)(options.auth); + hook.wrap("request", auth.hook); + this.auth = auth; + } + } else { + const { authStrategy, ...otherOptions } = options; + const auth = authStrategy( + Object.assign( + { + request: this.request, + log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. + octokit: this, + octokitOptions: otherOptions + }, + options.auth + ) + ); + hook.wrap("request", auth.hook); + this.auth = auth; + } + const classConstructor = this.constructor; + classConstructor.plugins.forEach((plugin) => { + Object.assign(this, plugin(this, options)); + }); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 9440: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + endpoint: () => endpoint +}); +module.exports = __toCommonJS(dist_src_exports); + +// pkg/dist-src/defaults.js +var import_universal_user_agent = __nccwpck_require__(5030); + +// pkg/dist-src/version.js +var VERSION = "9.0.1"; + +// pkg/dist-src/defaults.js +var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; +var DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "" + } +}; + +// pkg/dist-src/util/lowercase-keys.js +function lowercaseKeys(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} + +// pkg/dist-src/util/merge-deep.js +var import_is_plain_object = __nccwpck_require__(3287); +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach((key) => { + if ((0, import_is_plain_object.isPlainObject)(options[key])) { + if (!(key in defaults)) + Object.assign(result, { [key]: options[key] }); + else + result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { [key]: options[key] }); + } + }); + return result; +} + +// pkg/dist-src/util/remove-undefined-properties.js +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === void 0) { + delete obj[key]; + } + } return obj; } -module.exports = _defineProperty; - -/***/ }), - -/***/ 3298: -/***/ ((module) => { - -function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - "default": obj - }; +// pkg/dist-src/merge.js +function merge(defaults, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { method, url } : { url: method }, options); + } else { + options = Object.assign({}, route); + } + options.headers = lowercaseKeys(options.headers); + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); + if (options.url === "/graphql") { + if (defaults && defaults.mediaType.previews?.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter( + (preview) => !mergedOptions.mediaType.previews.includes(preview) + ).concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); + } + return mergedOptions; } -module.exports = _interopRequireDefault; - -/***/ }), - -/***/ 8429: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var _typeof = __webpack_require__(1042); - -function _getRequireWildcardCache() { - if (typeof WeakMap !== "function") return null; - var cache = new WeakMap(); - - _getRequireWildcardCache = function _getRequireWildcardCache() { - return cache; - }; - - return cache; +// pkg/dist-src/util/add-query-parameters.js +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + if (names.length === 0) { + return url; + } + return url + separator + names.map((name) => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); } -function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { +// pkg/dist-src/util/extract-url-variable-names.js +var urlVariableRegex = /\{[^}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + if (!matches) { + return []; + } + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} + +// pkg/dist-src/util/omit.js +function omit(object, keysToOmit) { + return Object.keys(object).filter((option) => !keysToOmit.includes(option)).reduce((obj, key) => { + obj[key] = object[key]; return obj; - } + }, {}); +} - if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { - return { - "default": obj - }; - } - - var cache = _getRequireWildcardCache(); - - if (cache && cache.has(obj)) { - return cache.get(obj); - } - - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - - for (var key in obj) { - if (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]; - } +// pkg/dist-src/util/url-template.js +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); } - } - - newObj["default"] = obj; - - if (cache) { - cache.set(obj, newObj); - } - - return newObj; + return part; + }).join(""); } - -module.exports = _interopRequireWildcard; - -/***/ }), - -/***/ 1042: -/***/ ((module) => { - -function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - module.exports = _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - module.exports = _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); -} - -module.exports = _typeof; - -/***/ }), - -/***/ 4941: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var compileSchema = __webpack_require__(875) - , resolve = __webpack_require__(3896) - , Cache = __webpack_require__(3679) - , SchemaObject = __webpack_require__(7605) - , stableStringify = __webpack_require__(969) - , formats = __webpack_require__(6627) - , rules = __webpack_require__(8561) - , $dataMetaSchema = __webpack_require__(1412) - , util = __webpack_require__(6578); - -module.exports = Ajv; - -Ajv.prototype.validate = validate; -Ajv.prototype.compile = compile; -Ajv.prototype.addSchema = addSchema; -Ajv.prototype.addMetaSchema = addMetaSchema; -Ajv.prototype.validateSchema = validateSchema; -Ajv.prototype.getSchema = getSchema; -Ajv.prototype.removeSchema = removeSchema; -Ajv.prototype.addFormat = addFormat; -Ajv.prototype.errorsText = errorsText; - -Ajv.prototype._addSchema = _addSchema; -Ajv.prototype._compile = _compile; - -Ajv.prototype.compileAsync = __webpack_require__(890); -var customKeyword = __webpack_require__(3297); -Ajv.prototype.addKeyword = customKeyword.add; -Ajv.prototype.getKeyword = customKeyword.get; -Ajv.prototype.removeKeyword = customKeyword.remove; -Ajv.prototype.validateKeyword = customKeyword.validate; - -var errorClasses = __webpack_require__(5726); -Ajv.ValidationError = errorClasses.Validation; -Ajv.MissingRefError = errorClasses.MissingRef; -Ajv.$dataMetaSchema = $dataMetaSchema; - -var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema'; - -var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ]; -var META_SUPPORT_DATA = ['/properties']; - -/** - * Creates validator instance. - * Usage: `Ajv(opts)` - * @param {Object} opts optional options - * @return {Object} ajv instance - */ -function Ajv(opts) { - if (!(this instanceof Ajv)) return new Ajv(opts); - opts = this._opts = util.copy(opts) || {}; - setLogger(this); - this._schemas = {}; - this._refs = {}; - this._fragments = {}; - this._formats = formats(opts.format); - - this._cache = opts.cache || new Cache; - this._loadingSchemas = {}; - this._compilations = []; - this.RULES = rules(); - this._getId = chooseGetId(opts); - - opts.loopRequired = opts.loopRequired || Infinity; - if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; - if (opts.serialize === undefined) opts.serialize = stableStringify; - this._metaOpts = getMetaSchemaOptions(this); - - if (opts.formats) addInitialFormats(this); - if (opts.keywords) addInitialKeywords(this); - addDefaultMetaSchema(this); - if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta); - if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}}); - addInitialSchemas(this); -} - - - -/** - * Validate data using schema - * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize. - * @this Ajv - * @param {String|Object} schemaKeyRef key, ref or schema object - * @param {Any} data to be validated - * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). - */ -function validate(schemaKeyRef, data) { - var v; - if (typeof schemaKeyRef == 'string') { - v = this.getSchema(schemaKeyRef); - if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); - } else { - var schemaObj = this._addSchema(schemaKeyRef); - v = schemaObj.validate || this._compile(schemaObj); - } - - var valid = v(data); - if (v.$async !== true) this.errors = v.errors; - return valid; -} - - -/** - * Create validating function for passed schema. - * @this Ajv - * @param {Object} schema schema object - * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords. - * @return {Function} validating function - */ -function compile(schema, _meta) { - var schemaObj = this._addSchema(schema, undefined, _meta); - return schemaObj.validate || this._compile(schemaObj); -} - - -/** - * Adds schema to the instance. - * @this Ajv - * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. - * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. - * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. - * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. - * @return {Ajv} this for method chaining - */ -function addSchema(schema, key, _skipValidation, _meta) { - if (Array.isArray(schema)){ - for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {Object} options optional options with properties `separator` and `dataVar`. - * @return {String} human readable string with all errors descriptions - */ -function errorsText(errors, options) { - errors = errors || this.errors; - if (!errors) return 'No errors'; - options = options || {}; - var separator = options.separator === undefined ? ', ' : options.separator; - var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; - - var text = ''; - for (var i=0; i { - -"use strict"; - - -var MissingRefError = __webpack_require__(5726).MissingRef; - -module.exports = compileAsync; - - -/** - * Creates validating function for passed schema with asynchronous loading of missing schemas. - * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema. - * @this Ajv - * @param {Object} schema schema object - * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped - * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function. - * @return {Promise} promise that resolves with a validating function. - */ -function compileAsync(schema, meta, callback) { - /* eslint no-shadow: 0 */ - /* global Promise */ - /* jshint validthis: true */ - var self = this; - if (typeof this._opts.loadSchema != 'function') - throw new Error('options.loadSchema should be a function'); - - if (typeof meta == 'function') { - callback = meta; - meta = undefined; - } - - var p = loadMetaSchemaOf(schema).then(function () { - var schemaObj = self._addSchema(schema, undefined, meta); - return schemaObj.validate || _compileAsync(schemaObj); - }); - - if (callback) { - p.then( - function(v) { callback(null, v); }, - callback - ); - } - - return p; - - - function loadMetaSchemaOf(sch) { - var $schema = sch.$schema; - return $schema && !self.getSchema($schema) - ? compileAsync.call(self, { $ref: $schema }, true) - : Promise.resolve(); - } - - - function _compileAsync(schemaObj) { - try { return self._compile(schemaObj); } - catch(e) { - if (e instanceof MissingRefError) return loadMissingSchema(e); - throw e; - } - - - function loadMissingSchema(e) { - var ref = e.missingSchema; - if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved'); - - var schemaPromise = self._loadingSchemas[ref]; - if (!schemaPromise) { - schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref); - schemaPromise.then(removePromise, removePromise); +function isDefined(value) { + return value !== void 0 && value !== null; +} +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} +function getValues(context, operator, key, modifier) { + var value = context[key], result = []; + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); } - - return schemaPromise.then(function (sch) { - if (!added(ref)) { - return loadMetaSchemaOf(sch).then(function () { - if (!added(ref)) self.addSchema(sch, ref, undefined, meta); + result.push( + encodeValue(operator, value, isKeyOperator(operator) ? key : "") + ); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + result.push( + encodeValue(operator, value2, isKeyOperator(operator) ? key : "") + ); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } }); } - }).then(function() { - return _compileAsync(schemaObj); - }); - - function removePromise() { - delete self._loadingSchemas[ref]; - } - - function added(ref) { - return self._refs[ref] || self._schemas[ref]; - } - } - } -} - - -/***/ }), - -/***/ 5726: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var resolve = __webpack_require__(3896); - -module.exports = { - Validation: errorSubclass(ValidationError), - MissingRef: errorSubclass(MissingRefError) -}; - - -function ValidationError(errors) { - this.message = 'validation failed'; - this.errors = errors; - this.ajv = this.validation = true; -} - - -MissingRefError.message = function (baseId, ref) { - return 'can\'t resolve reference ' + ref + ' from id ' + baseId; -}; - - -function MissingRefError(baseId, ref, message) { - this.message = message || MissingRefError.message(baseId, ref); - this.missingRef = resolve.url(baseId, ref); - this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef)); -} - - -function errorSubclass(Subclass) { - Subclass.prototype = Object.create(Error.prototype); - Subclass.prototype.constructor = Subclass; - return Subclass; -} - - -/***/ }), - -/***/ 6627: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var util = __webpack_require__(6578); - -var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/; -var DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31]; -var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i; -var HOSTNAME = /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i; -var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; -var URIREF = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; -// uri-template: https://tools.ietf.org/html/rfc6570 -var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; -// For the source: https://gist.github.com/dperini/729294 -// For test cases: https://mathiasbynens.be/demo/url-regex -// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. -// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; -var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; -var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; -var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; -var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; -var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; - - -module.exports = formats; - -function formats(mode) { - mode = mode == 'full' ? 'full' : 'fast'; - return util.copy(formats[mode]); -} - - -formats.fast = { - // date: http://tools.ietf.org/html/rfc3339#section-5.6 - date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, - // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 - time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, - 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, - // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, - 'uri-reference': /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, - 'uri-template': URITEMPLATE, - url: URL, - // email (sources from jsen validator): - // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 - // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') - email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, - hostname: HOSTNAME, - // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - // uuid: http://tools.ietf.org/html/rfc4122 - uuid: UUID, - // JSON-pointer: https://tools.ietf.org/html/rfc6901 - // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A - 'json-pointer': JSON_POINTER, - 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, - // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -formats.full = { - date: date, - time: time, - 'date-time': date_time, - uri: uri, - 'uri-reference': URIREF, - 'uri-template': URITEMPLATE, - url: URL, - email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, - hostname: HOSTNAME, - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - uuid: UUID, - 'json-pointer': JSON_POINTER, - 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, - 'relative-json-pointer': RELATIVE_JSON_POINTER -}; - - -function isLeapYear(year) { - // https://tools.ietf.org/html/rfc3339#appendix-C - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); -} - - -function date(str) { - // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 - var matches = str.match(DATE); - if (!matches) return false; - - var year = +matches[1]; - var month = +matches[2]; - var day = +matches[3]; - - return month >= 1 && month <= 12 && day >= 1 && - day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]); -} - - -function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return ((hour <= 23 && minute <= 59 && second <= 59) || - (hour == 23 && minute == 59 && second == 60)) && - (!full || timeZone); -} - - -var DATE_TIME_SEPARATOR = /t|\s/i; -function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); -} - - -var NOT_URI_FRAGMENT = /\/|:/; -function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); -} - - -var Z_ANCHOR = /[^\\]\\Z/; -function regex(str) { - if (Z_ANCHOR.test(str)) return false; - try { - new RegExp(str); - return true; - } catch(e) { - return false; - } -} - - -/***/ }), - -/***/ 875: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var resolve = __webpack_require__(3896) - , util = __webpack_require__(6578) - , errorClasses = __webpack_require__(5726) - , stableStringify = __webpack_require__(969); - -var validateGenerator = __webpack_require__(9585); - -/** - * Functions below are used inside compiled validations function - */ - -var ucs2length = util.ucs2length; -var equal = __webpack_require__(8206); - -// this error is thrown by async schemas to return validation errors via exception -var ValidationError = errorClasses.Validation; - -module.exports = compile; - - -/** - * Compiles schema to validation function - * @this Ajv - * @param {Object} schema schema object - * @param {Object} root object with information about the root schema for this schema - * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution - * @param {String} baseId base ID for IDs in the schema - * @return {Function} validation function - */ -function compile(schema, root, localRefs, baseId) { - /* jshint validthis: true, evil: true */ - /* eslint no-shadow: 0 */ - var self = this - , opts = this._opts - , refVal = [ undefined ] - , refs = {} - , patterns = [] - , patternsHash = {} - , defaults = [] - , defaultsHash = {} - , customRules = []; - - root = root || { schema: schema, refVal: refVal, refs: refs }; - - var c = checkCompiling.call(this, schema, root, baseId); - var compilation = this._compilations[c.index]; - if (c.compiling) return (compilation.callValidate = callValidate); - - var formats = this._formats; - var RULES = this.RULES; - - try { - var v = localCompile(schema, root, localRefs, baseId); - compilation.validate = v; - var cv = compilation.callValidate; - if (cv) { - cv.schema = v.schema; - cv.errors = null; - cv.refs = v.refs; - cv.refVal = v.refVal; - cv.root = v.root; - cv.$async = v.$async; - if (opts.sourceCode) cv.source = v.source; - } - return v; - } finally { - endCompiling.call(this, schema, root, baseId); - } - - /* @this {*} - custom context, see passContext option */ - function callValidate() { - /* jshint validthis: true */ - var validate = compilation.validate; - var result = validate.apply(this, arguments); - callValidate.errors = validate.errors; - return result; - } - - function localCompile(_schema, _root, localRefs, baseId) { - var isRoot = !_root || (_root && _root.schema == _schema); - if (_root.schema != root.schema) - return compile.call(self, _schema, _root, localRefs, baseId); - - var $async = _schema.$async === true; - - var sourceCode = validateGenerator({ - isTop: true, - schema: _schema, - isRoot: isRoot, - baseId: baseId, - root: _root, - schemaPath: '', - errSchemaPath: '#', - errorPath: '""', - MissingRefError: errorClasses.MissingRef, - RULES: RULES, - validate: validateGenerator, - util: util, - resolve: resolve, - resolveRef: resolveRef, - usePattern: usePattern, - useDefault: useDefault, - useCustomRule: useCustomRule, - opts: opts, - formats: formats, - logger: self.logger, - self: self - }); - - sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode) - + vars(defaults, defaultCode) + vars(customRules, customRuleCode) - + sourceCode; - - if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema); - // console.log('\n\n\n *** \n', JSON.stringify(sourceCode)); - var validate; - try { - var makeValidate = new Function( - 'self', - 'RULES', - 'formats', - 'root', - 'refVal', - 'defaults', - 'customRules', - 'equal', - 'ucs2length', - 'ValidationError', - sourceCode - ); - - validate = makeValidate( - self, - RULES, - formats, - root, - refVal, - defaults, - customRules, - equal, - ucs2length, - ValidationError - ); - - refVal[0] = validate; - } catch(e) { - self.logger.error('Error compiling schema, function code:', sourceCode); - throw e; - } - - validate.schema = _schema; - validate.errors = null; - validate.refs = refs; - validate.refVal = refVal; - validate.root = isRoot ? validate : _root; - if ($async) validate.$async = true; - if (opts.sourceCode === true) { - validate.source = { - code: sourceCode, - patterns: patterns, - defaults: defaults - }; - } - - return validate; - } - - function resolveRef(baseId, ref, isRoot) { - ref = resolve.url(baseId, ref); - var refIndex = refs[ref]; - var _refVal, refCode; - if (refIndex !== undefined) { - _refVal = refVal[refIndex]; - refCode = 'refVal[' + refIndex + ']'; - return resolvedRef(_refVal, refCode); - } - if (!isRoot && root.refs) { - var rootRefId = root.refs[ref]; - if (rootRefId !== undefined) { - _refVal = root.refVal[rootRefId]; - refCode = addLocalRef(ref, _refVal); - return resolvedRef(_refVal, refCode); - } - } - - refCode = addLocalRef(ref); - var v = resolve.call(self, localCompile, root, ref); - if (v === undefined) { - var localSchema = localRefs && localRefs[ref]; - if (localSchema) { - v = resolve.inlineRef(localSchema, opts.inlineRefs) - ? localSchema - : compile.call(self, localSchema, root, localRefs, baseId); - } - } - - if (v === undefined) { - removeLocalRef(ref); - } else { - replaceLocalRef(ref, v); - return resolvedRef(v, refCode); - } - } - - function addLocalRef(ref, v) { - var refId = refVal.length; - refVal[refId] = v; - refs[ref] = refId; - return 'refVal' + refId; - } - - function removeLocalRef(ref) { - delete refs[ref]; - } - - function replaceLocalRef(ref, v) { - var refId = refs[ref]; - refVal[refId] = v; - } - - function resolvedRef(refVal, code) { - return typeof refVal == 'object' || typeof refVal == 'boolean' - ? { code: code, schema: refVal, inline: true } - : { code: code, $async: refVal && !!refVal.$async }; - } - - function usePattern(regexStr) { - var index = patternsHash[regexStr]; - if (index === undefined) { - index = patternsHash[regexStr] = patterns.length; - patterns[index] = regexStr; - } - return 'pattern' + index; - } - - function useDefault(value) { - switch (typeof value) { - case 'boolean': - case 'number': - return '' + value; - case 'string': - return util.toQuotedString(value); - case 'object': - if (value === null) return 'null'; - var valueStr = stableStringify(value); - var index = defaultsHash[valueStr]; - if (index === undefined) { - index = defaultsHash[valueStr] = defaults.length; - defaults[index] = value; - } - return 'default' + index; - } - } - - function useCustomRule(rule, schema, parentSchema, it) { - if (self._opts.validateSchema !== false) { - var deps = rule.definition.dependencies; - if (deps && !deps.every(function(keyword) { - return Object.prototype.hasOwnProperty.call(parentSchema, keyword); - })) - throw new Error('parent schema must have all required keywords: ' + deps.join(',')); - - var validateSchema = rule.definition.validateSchema; - if (validateSchema) { - var valid = validateSchema(schema); - if (!valid) { - var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors); - if (self._opts.validateSchema == 'log') self.logger.error(message); - else throw new Error(message); - } - } - } - - var compile = rule.definition.compile - , inline = rule.definition.inline - , macro = rule.definition.macro; - - var validate; - if (compile) { - validate = compile.call(self, schema, parentSchema, it); - } else if (macro) { - validate = macro.call(self, schema, parentSchema, it); - if (opts.validateSchema !== false) self.validateSchema(validate, true); - } else if (inline) { - validate = inline.call(self, it, rule.keyword, schema, parentSchema); - } else { - validate = rule.definition.validate; - if (!validate) return; - } - - if (validate === undefined) - throw new Error('custom keyword "' + rule.keyword + '"failed to compile'); - - var index = customRules.length; - customRules[index] = validate; - - return { - code: 'customRule' + index, - validate: validate - }; - } -} - - -/** - * Checks if the schema is currently compiled - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean) - */ -function checkCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var index = compIndex.call(this, schema, root, baseId); - if (index >= 0) return { index: index, compiling: true }; - index = this._compilations.length; - this._compilations[index] = { - schema: schema, - root: root, - baseId: baseId - }; - return { index: index, compiling: false }; -} - - -/** - * Removes the schema from the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - */ -function endCompiling(schema, root, baseId) { - /* jshint validthis: true */ - var i = compIndex.call(this, schema, root, baseId); - if (i >= 0) this._compilations.splice(i, 1); -} - - -/** - * Index of schema compilation in the currently compiled list - * @this Ajv - * @param {Object} schema schema to compile - * @param {Object} root root object - * @param {String} baseId base schema ID - * @return {Integer} compilation index - */ -function compIndex(schema, root, baseId) { - /* jshint validthis: true */ - for (var i=0; i { - -"use strict"; - - -var URI = __webpack_require__(20) - , equal = __webpack_require__(8206) - , util = __webpack_require__(6578) - , SchemaObject = __webpack_require__(7605) - , traverse = __webpack_require__(2533); - -module.exports = resolve; - -resolve.normalizeId = normalizeId; -resolve.fullPath = getFullPath; -resolve.url = resolveUrl; -resolve.ids = resolveIds; -resolve.inlineRef = inlineRef; -resolve.schema = resolveSchema; - -/** - * [resolve and compile the references ($ref)] - * @this Ajv - * @param {Function} compile reference to schema compilation funciton (localCompile) - * @param {Object} root object with information about the root schema for the current schema - * @param {String} ref reference to resolve - * @return {Object|Function} schema object (if the schema can be inlined) or validation function - */ -function resolve(compile, root, ref) { - /* jshint validthis: true */ - var refVal = this._refs[ref]; - if (typeof refVal == 'string') { - if (this._refs[refVal]) refVal = this._refs[refVal]; - else return resolve.call(this, compile, root, refVal); - } - - refVal = refVal || this._schemas[ref]; - if (refVal instanceof SchemaObject) { - return inlineRef(refVal.schema, this._opts.inlineRefs) - ? refVal.schema - : refVal.validate || this._compile(refVal); - } - - var res = resolveSchema.call(this, root, ref); - var schema, v, baseId; - if (res) { - schema = res.schema; - root = res.root; - baseId = res.baseId; - } - - if (schema instanceof SchemaObject) { - v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId); - } else if (schema !== undefined) { - v = inlineRef(schema, this._opts.inlineRefs) - ? schema - : compile.call(this, schema, root, undefined, baseId); - } - - return v; -} - - -/** - * Resolve schema, its root and baseId - * @this Ajv - * @param {Object} root root object with properties schema, refVal, refs - * @param {String} ref reference to resolve - * @return {Object} object with properties schema, root, baseId - */ -function resolveSchema(root, ref) { - /* jshint validthis: true */ - var p = URI.parse(ref) - , refPath = _getFullPath(p) - , baseId = getFullPath(this._getId(root.schema)); - if (Object.keys(root.schema).length === 0 || refPath !== baseId) { - var id = normalizeId(refPath); - var refVal = this._refs[id]; - if (typeof refVal == 'string') { - return resolveRecursive.call(this, root, refVal, p); - } else if (refVal instanceof SchemaObject) { - if (!refVal.validate) this._compile(refVal); - root = refVal; - } else { - refVal = this._schemas[id]; - if (refVal instanceof SchemaObject) { - if (!refVal.validate) this._compile(refVal); - if (id == normalizeId(ref)) - return { schema: refVal, root: root, baseId: baseId }; - root = refVal; } else { - return; - } - } - if (!root.schema) return; - baseId = getFullPath(this._getId(root.schema)); - } - return getJsonPointer.call(this, p, baseId, root.schema, root); -} - - -/* @this Ajv */ -function resolveRecursive(root, ref, parsedRef) { - /* jshint validthis: true */ - var res = resolveSchema.call(this, root, ref); - if (res) { - var schema = res.schema; - var baseId = res.baseId; - root = res.root; - var id = this._getId(schema); - if (id) baseId = resolveUrl(baseId, id); - return getJsonPointer.call(this, parsedRef, baseId, schema, root); - } -} - - -var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']); -/* @this Ajv */ -function getJsonPointer(parsedRef, baseId, schema, root) { - /* jshint validthis: true */ - parsedRef.fragment = parsedRef.fragment || ''; - if (parsedRef.fragment.slice(0,1) != '/') return; - var parts = parsedRef.fragment.split('/'); - - for (var i = 1; i < parts.length; i++) { - var part = parts[i]; - if (part) { - part = util.unescapeFragment(part); - schema = schema[part]; - if (schema === undefined) break; - var id; - if (!PREVENT_SCOPE_CHANGE[part]) { - id = this._getId(schema); - if (id) baseId = resolveUrl(baseId, id); - if (schema.$ref) { - var $ref = resolveUrl(baseId, schema.$ref); - var res = resolveSchema.call(this, root, $ref); - if (res) { - schema = res.schema; - root = res.root; - baseId = res.baseId; - } - } - } - } - } - if (schema !== undefined && schema !== root.schema) - return { schema: schema, root: root, baseId: baseId }; -} - - -var SIMPLE_INLINED = util.toHash([ - 'type', 'format', 'pattern', - 'maxLength', 'minLength', - 'maxProperties', 'minProperties', - 'maxItems', 'minItems', - 'maximum', 'minimum', - 'uniqueItems', 'multipleOf', - 'required', 'enum' -]); -function inlineRef(schema, limit) { - if (limit === false) return false; - if (limit === undefined || limit === true) return checkNoRef(schema); - else if (limit) return countKeys(schema) <= limit; -} - - -function checkNoRef(schema) { - var item; - if (Array.isArray(schema)) { - for (var i=0; i { - -"use strict"; - - -var ruleModules = __webpack_require__(5810) - , toHash = __webpack_require__(6578).toHash; - -module.exports = function rules() { - var RULES = [ - { type: 'number', - rules: [ { 'maximum': ['exclusiveMaximum'] }, - { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] }, - { type: 'string', - rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, - { type: 'array', - rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] }, - { type: 'object', - rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames', - { 'properties': ['additionalProperties', 'patternProperties'] } ] }, - { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] } - ]; - - var ALL = [ 'type', '$comment' ]; - var KEYWORDS = [ - '$schema', '$id', 'id', '$data', '$async', 'title', - 'description', 'default', 'definitions', - 'examples', 'readOnly', 'writeOnly', - 'contentMediaType', 'contentEncoding', - 'additionalItems', 'then', 'else' - ]; - var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; - RULES.all = toHash(ALL); - RULES.types = toHash(TYPES); - - RULES.forEach(function (group) { - group.rules = group.rules.map(function (keyword) { - var implKeywords; - if (typeof keyword == 'object') { - var key = Object.keys(keyword)[0]; - implKeywords = keyword[key]; - keyword = key; - implKeywords.forEach(function (k) { - ALL.push(k); - RULES.all[k] = true; - }); - } - ALL.push(keyword); - var rule = RULES.all[keyword] = { - keyword: keyword, - code: ruleModules[keyword], - implements: implKeywords - }; - return rule; - }); - - RULES.all.$comment = { - keyword: '$comment', - code: ruleModules.$comment - }; - - if (group.type) RULES.types[group.type] = group; - }); - - RULES.keywords = toHash(ALL.concat(KEYWORDS)); - RULES.custom = {}; - - return RULES; -}; - - -/***/ }), - -/***/ 7605: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var util = __webpack_require__(6578); - -module.exports = SchemaObject; - -function SchemaObject(obj) { - util.copy(obj, this); -} - - -/***/ }), - -/***/ 4580: -/***/ ((module) => { - -"use strict"; - - -// https://mathiasbynens.be/notes/javascript-encoding -// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode -module.exports = function ucs2length(str) { - var length = 0 - , len = str.length - , pos = 0 - , value; - while (pos < len) { - length++; - value = str.charCodeAt(pos++); - if (value >= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate - } - } - return length; -}; - - -/***/ }), - -/***/ 6578: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - - -module.exports = { - copy: copy, - checkDataType: checkDataType, - checkDataTypes: checkDataTypes, - coerceToTypes: coerceToTypes, - toHash: toHash, - getProperty: getProperty, - escapeQuotes: escapeQuotes, - equal: __webpack_require__(8206), - ucs2length: __webpack_require__(4580), - varOccurences: varOccurences, - varReplace: varReplace, - schemaHasRules: schemaHasRules, - schemaHasRulesExcept: schemaHasRulesExcept, - schemaUnknownRules: schemaUnknownRules, - toQuotedString: toQuotedString, - getPathExpr: getPathExpr, - getPath: getPath, - getData: getData, - unescapeFragment: unescapeFragment, - unescapeJsonPointer: unescapeJsonPointer, - escapeFragment: escapeFragment, - escapeJsonPointer: escapeJsonPointer -}; - - -function copy(o, to) { - to = to || {}; - for (var key in o) to[key] = o[key]; - return to; -} - - -function checkDataType(dataType, data, strictNumbers, negate) { - var EQUAL = negate ? ' !== ' : ' === ' - , AND = negate ? ' || ' : ' && ' - , OK = negate ? '!' : '' - , NOT = negate ? '' : '!'; - switch (dataType) { - case 'null': return data + EQUAL + 'null'; - case 'array': return OK + 'Array.isArray(' + data + ')'; - case 'object': return '(' + OK + data + AND + - 'typeof ' + data + EQUAL + '"object"' + AND + - NOT + 'Array.isArray(' + data + '))'; - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + - (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; - case 'number': return '(typeof ' + data + EQUAL + '"' + dataType + '"' + - (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; - } -} - - -function checkDataTypes(dataTypes, data, strictNumbers) { - switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, strictNumbers, true); - default: - var code = ''; - var types = toHash(dataTypes); - if (types.array && types.object) { - code = types.null ? '(': '(!' + data + ' || '; - code += 'typeof ' + data + ' !== "object")'; - delete types.null; - delete types.array; - delete types.object; - } - if (types.number) delete types.integer; - for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true); - - return code; - } -} - - -var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); -function coerceToTypes(optionCoerceTypes, dataTypes) { - if (Array.isArray(dataTypes)) { - var types = []; - for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } - - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - data = 'data' + ((lvl - up) || ''); - if (!jsonPointer) return data; - } - - var expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + if (!isBinaryRequest) { + if (options.mediaType.format) { + headers.accept = headers.accept.split(/,/).map( + (format) => format.replace( + /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, + `application/vnd$1$2.${options.mediaType.format}` + ) + ).join(","); + } + if (url.endsWith("/graphql")) { + if (options.mediaType.previews?.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } + } + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } + } + } + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } + return Object.assign( + { method, url, headers }, + typeof body !== "undefined" ? { body } : null, + options.request ? { request: options.request } : null + ); } - -function unescapeFragment(str) { - return unescapeJsonPointer(decodeURIComponent(str)); +// pkg/dist-src/endpoint-with-defaults.js +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); } - -function escapeFragment(str) { - return encodeURIComponent(escapeJsonPointer(str)); +// pkg/dist-src/with-defaults.js +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS2 = merge(oldDefaults, newDefaults); + const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); + return Object.assign(endpoint2, { + DEFAULTS: DEFAULTS2, + defaults: withDefaults.bind(null, DEFAULTS2), + merge: merge.bind(null, DEFAULTS2), + parse + }); } - -function escapeJsonPointer(str) { - return str.replace(/~/g, '~0').replace(/\//g, '~1'); -} - - -function unescapeJsonPointer(str) { - return str.replace(/~1/g, '/').replace(/~0/g, '~'); -} +// pkg/dist-src/index.js +var endpoint = withDefaults(null, DEFAULTS); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), -/***/ 1412: +/***/ 8467: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + GraphqlResponseError: () => GraphqlResponseError, + graphql: () => graphql2, + withCustomRequest: () => withCustomRequest +}); +module.exports = __toCommonJS(dist_src_exports); +var import_request3 = __nccwpck_require__(6234); +var import_universal_user_agent = __nccwpck_require__(5030); + +// pkg/dist-src/version.js +var VERSION = "7.0.2"; + +// pkg/dist-src/with-defaults.js +var import_request2 = __nccwpck_require__(6234); + +// pkg/dist-src/graphql.js +var import_request = __nccwpck_require__(6234); + +// pkg/dist-src/error.js +function _buildMessageForResponseErrors(data) { + return `Request failed due to following response errors: +` + data.errors.map((e) => ` - ${e.message}`).join("\n"); +} +var GraphqlResponseError = class extends Error { + constructor(request2, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request2; + this.headers = headers; + this.response = response; + this.name = "GraphqlResponseError"; + this.errors = response.errors; + this.data = response.data; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } +}; + +// pkg/dist-src/graphql.js +var NON_VARIABLE_OPTIONS = [ + "method", + "baseUrl", + "url", + "headers", + "request", + "query", + "mediaType" +]; +var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request2, query, options) { + if (options) { + if (typeof query === "string" && "query" in options) { + return Promise.reject( + new Error(`[@octokit/graphql] "query" cannot be used as variable name`) + ); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject( + new Error( + `[@octokit/graphql] "${key}" cannot be used as variable name` + ) + ); + } + } + const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; + const requestOptions = Object.keys( + parsedOptions + ).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + if (!result.variables) { + result.variables = {}; + } + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + return request2(requestOptions).then((response) => { + if (response.data.errors) { + const headers = {}; + for (const key of Object.keys(response.headers)) { + headers[key] = response.headers[key]; + } + throw new GraphqlResponseError( + requestOptions, + headers, + response.data + ); + } + return response.data.data; + }); +} + +// pkg/dist-src/with-defaults.js +function withDefaults(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); + const newApi = (query, options) => { + return graphql(newRequest, query, options); + }; + return Object.assign(newApi, { + defaults: withDefaults.bind(null, newRequest), + endpoint: newRequest.endpoint + }); +} + +// pkg/dist-src/index.js +var graphql2 = withDefaults(import_request3.request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return withDefaults(customRequest, { + method: "POST", + url: "/graphql" + }); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 4193: /***/ ((module) => { "use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var KEYWORDS = [ - 'multipleOf', - 'maximum', - 'exclusiveMaximum', - 'minimum', - 'exclusiveMinimum', - 'maxLength', - 'minLength', - 'pattern', - 'additionalItems', - 'maxItems', - 'minItems', - 'uniqueItems', - 'maxProperties', - 'minProperties', - 'required', - 'additionalProperties', - 'enum', - 'format', - 'const' +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + composePaginateRest: () => composePaginateRest, + isPaginatingEndpoint: () => isPaginatingEndpoint, + paginateRest: () => paginateRest, + paginatingEndpoints: () => paginatingEndpoints +}); +module.exports = __toCommonJS(dist_src_exports); + +// pkg/dist-src/version.js +var VERSION = "9.0.0"; + +// pkg/dist-src/normalize-paginated-list-response.js +function normalizePaginatedListResponse(response) { + if (!response.data) { + return { + ...response, + data: [] + }; + } + const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) + return response; + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + response.data.total_count = totalCount; + return response; +} + +// pkg/dist-src/iterator.js +function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) + return { done: true }; + try { + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || "").match( + /<([^>]+)>;\s*rel="next"/ + ) || [])[1]; + return { value: normalizedResponse }; + } catch (error) { + if (error.status !== 409) + throw error; + url = ""; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } + } + }) + }; +} + +// pkg/dist-src/paginate.js +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = void 0; + } + return gather( + octokit, + [], + iterator(octokit, route, parameters)[Symbol.asyncIterator](), + mapFn + ); +} +function gather(octokit, results, iterator2, mapFn) { + return iterator2.next().then((result) => { + if (result.done) { + return results; + } + let earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat( + mapFn ? mapFn(result.value, done) : result.value.data + ); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator2, mapFn); + }); +} + +// pkg/dist-src/compose-paginate.js +var composePaginateRest = Object.assign(paginate, { + iterator +}); + +// pkg/dist-src/generated/paginating-endpoints.js +var paginatingEndpoints = [ + "GET /advisories", + "GET /app/hook/deliveries", + "GET /app/installation-requests", + "GET /app/installations", + "GET /assignments/{assignment_id}/accepted_assignments", + "GET /classrooms", + "GET /classrooms/{classroom_id}/assignments", + "GET /enterprises/{enterprise}/dependabot/alerts", + "GET /enterprises/{enterprise}/secret-scanning/alerts", + "GET /events", + "GET /gists", + "GET /gists/public", + "GET /gists/starred", + "GET /gists/{gist_id}/comments", + "GET /gists/{gist_id}/commits", + "GET /gists/{gist_id}/forks", + "GET /installation/repositories", + "GET /issues", + "GET /licenses", + "GET /marketplace_listing/plans", + "GET /marketplace_listing/plans/{plan_id}/accounts", + "GET /marketplace_listing/stubbed/plans", + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", + "GET /networks/{owner}/{repo}/events", + "GET /notifications", + "GET /organizations", + "GET /orgs/{org}/actions/cache/usage-by-repository", + "GET /orgs/{org}/actions/permissions/repositories", + "GET /orgs/{org}/actions/runners", + "GET /orgs/{org}/actions/secrets", + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", + "GET /orgs/{org}/actions/variables", + "GET /orgs/{org}/actions/variables/{name}/repositories", + "GET /orgs/{org}/blocks", + "GET /orgs/{org}/code-scanning/alerts", + "GET /orgs/{org}/codespaces", + "GET /orgs/{org}/codespaces/secrets", + "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", + "GET /orgs/{org}/copilot/billing/seats", + "GET /orgs/{org}/dependabot/alerts", + "GET /orgs/{org}/dependabot/secrets", + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", + "GET /orgs/{org}/events", + "GET /orgs/{org}/failed_invitations", + "GET /orgs/{org}/hooks", + "GET /orgs/{org}/hooks/{hook_id}/deliveries", + "GET /orgs/{org}/installations", + "GET /orgs/{org}/invitations", + "GET /orgs/{org}/invitations/{invitation_id}/teams", + "GET /orgs/{org}/issues", + "GET /orgs/{org}/members", + "GET /orgs/{org}/members/{username}/codespaces", + "GET /orgs/{org}/migrations", + "GET /orgs/{org}/migrations/{migration_id}/repositories", + "GET /orgs/{org}/outside_collaborators", + "GET /orgs/{org}/packages", + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", + "GET /orgs/{org}/personal-access-token-requests", + "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", + "GET /orgs/{org}/personal-access-tokens", + "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", + "GET /orgs/{org}/projects", + "GET /orgs/{org}/public_members", + "GET /orgs/{org}/repos", + "GET /orgs/{org}/rulesets", + "GET /orgs/{org}/secret-scanning/alerts", + "GET /orgs/{org}/security-advisories", + "GET /orgs/{org}/teams", + "GET /orgs/{org}/teams/{team_slug}/discussions", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", + "GET /orgs/{org}/teams/{team_slug}/invitations", + "GET /orgs/{org}/teams/{team_slug}/members", + "GET /orgs/{org}/teams/{team_slug}/projects", + "GET /orgs/{org}/teams/{team_slug}/repos", + "GET /orgs/{org}/teams/{team_slug}/teams", + "GET /projects/columns/{column_id}/cards", + "GET /projects/{project_id}/collaborators", + "GET /projects/{project_id}/columns", + "GET /repos/{owner}/{repo}/actions/artifacts", + "GET /repos/{owner}/{repo}/actions/caches", + "GET /repos/{owner}/{repo}/actions/organization-secrets", + "GET /repos/{owner}/{repo}/actions/organization-variables", + "GET /repos/{owner}/{repo}/actions/runners", + "GET /repos/{owner}/{repo}/actions/runs", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", + "GET /repos/{owner}/{repo}/actions/secrets", + "GET /repos/{owner}/{repo}/actions/variables", + "GET /repos/{owner}/{repo}/actions/workflows", + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", + "GET /repos/{owner}/{repo}/activity", + "GET /repos/{owner}/{repo}/assignees", + "GET /repos/{owner}/{repo}/branches", + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", + "GET /repos/{owner}/{repo}/code-scanning/alerts", + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", + "GET /repos/{owner}/{repo}/code-scanning/analyses", + "GET /repos/{owner}/{repo}/codespaces", + "GET /repos/{owner}/{repo}/codespaces/devcontainers", + "GET /repos/{owner}/{repo}/codespaces/secrets", + "GET /repos/{owner}/{repo}/collaborators", + "GET /repos/{owner}/{repo}/comments", + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/commits", + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", + "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", + "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", + "GET /repos/{owner}/{repo}/commits/{ref}/status", + "GET /repos/{owner}/{repo}/commits/{ref}/statuses", + "GET /repos/{owner}/{repo}/contributors", + "GET /repos/{owner}/{repo}/dependabot/alerts", + "GET /repos/{owner}/{repo}/dependabot/secrets", + "GET /repos/{owner}/{repo}/deployments", + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", + "GET /repos/{owner}/{repo}/environments", + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", + "GET /repos/{owner}/{repo}/events", + "GET /repos/{owner}/{repo}/forks", + "GET /repos/{owner}/{repo}/hooks", + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", + "GET /repos/{owner}/{repo}/invitations", + "GET /repos/{owner}/{repo}/issues", + "GET /repos/{owner}/{repo}/issues/comments", + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/issues/events", + "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", + "GET /repos/{owner}/{repo}/issues/{issue_number}/events", + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", + "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", + "GET /repos/{owner}/{repo}/keys", + "GET /repos/{owner}/{repo}/labels", + "GET /repos/{owner}/{repo}/milestones", + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", + "GET /repos/{owner}/{repo}/notifications", + "GET /repos/{owner}/{repo}/pages/builds", + "GET /repos/{owner}/{repo}/projects", + "GET /repos/{owner}/{repo}/pulls", + "GET /repos/{owner}/{repo}/pulls/comments", + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", + "GET /repos/{owner}/{repo}/releases", + "GET /repos/{owner}/{repo}/releases/{release_id}/assets", + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", + "GET /repos/{owner}/{repo}/rules/branches/{branch}", + "GET /repos/{owner}/{repo}/rulesets", + "GET /repos/{owner}/{repo}/secret-scanning/alerts", + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", + "GET /repos/{owner}/{repo}/security-advisories", + "GET /repos/{owner}/{repo}/stargazers", + "GET /repos/{owner}/{repo}/subscribers", + "GET /repos/{owner}/{repo}/tags", + "GET /repos/{owner}/{repo}/teams", + "GET /repos/{owner}/{repo}/topics", + "GET /repositories", + "GET /repositories/{repository_id}/environments/{environment_name}/secrets", + "GET /repositories/{repository_id}/environments/{environment_name}/variables", + "GET /search/code", + "GET /search/commits", + "GET /search/issues", + "GET /search/labels", + "GET /search/repositories", + "GET /search/topics", + "GET /search/users", + "GET /teams/{team_id}/discussions", + "GET /teams/{team_id}/discussions/{discussion_number}/comments", + "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", + "GET /teams/{team_id}/discussions/{discussion_number}/reactions", + "GET /teams/{team_id}/invitations", + "GET /teams/{team_id}/members", + "GET /teams/{team_id}/projects", + "GET /teams/{team_id}/repos", + "GET /teams/{team_id}/teams", + "GET /user/blocks", + "GET /user/codespaces", + "GET /user/codespaces/secrets", + "GET /user/emails", + "GET /user/followers", + "GET /user/following", + "GET /user/gpg_keys", + "GET /user/installations", + "GET /user/installations/{installation_id}/repositories", + "GET /user/issues", + "GET /user/keys", + "GET /user/marketplace_purchases", + "GET /user/marketplace_purchases/stubbed", + "GET /user/memberships/orgs", + "GET /user/migrations", + "GET /user/migrations/{migration_id}/repositories", + "GET /user/orgs", + "GET /user/packages", + "GET /user/packages/{package_type}/{package_name}/versions", + "GET /user/public_emails", + "GET /user/repos", + "GET /user/repository_invitations", + "GET /user/social_accounts", + "GET /user/ssh_signing_keys", + "GET /user/starred", + "GET /user/subscriptions", + "GET /user/teams", + "GET /users", + "GET /users/{username}/events", + "GET /users/{username}/events/orgs/{org}", + "GET /users/{username}/events/public", + "GET /users/{username}/followers", + "GET /users/{username}/following", + "GET /users/{username}/gists", + "GET /users/{username}/gpg_keys", + "GET /users/{username}/keys", + "GET /users/{username}/orgs", + "GET /users/{username}/packages", + "GET /users/{username}/projects", + "GET /users/{username}/received_events", + "GET /users/{username}/received_events/public", + "GET /users/{username}/repos", + "GET /users/{username}/social_accounts", + "GET /users/{username}/ssh_signing_keys", + "GET /users/{username}/starred", + "GET /users/{username}/subscriptions" ]; -module.exports = function (metaSchema, keywordsJsonPointers) { - for (var i=0; i { - -"use strict"; - - -var metaSchema = __webpack_require__(38); - -module.exports = { - $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js', - definitions: { - simpleTypes: metaSchema.definitions.simpleTypes - }, - type: 'object', - dependencies: { - schema: ['validate'], - $data: ['validate'], - statements: ['inline'], - valid: {not: {required: ['macro']}} - }, - properties: { - type: metaSchema.properties.type, - schema: {type: 'boolean'}, - statements: {type: 'boolean'}, - dependencies: { - type: 'array', - items: {type: 'string'} - }, - metaSchema: {type: 'object'}, - modifying: {type: 'boolean'}, - valid: {type: 'boolean'}, - $data: {type: 'boolean'}, - async: {type: 'boolean'}, - errors: { - anyOf: [ - {type: 'boolean'}, - {const: 'full'} - ] - } - } -}; - - -/***/ }), - -/***/ 7404: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate__limit(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; +// pkg/dist-src/paginating-endpoints.js +function isPaginatingEndpoint(arg) { + if (typeof arg === "string") { + return paginatingEndpoints.includes(arg); } else { - $schemaValue = $schema; - } - var $isMax = $keyword == 'maximum', - $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $notOp = $isMax ? '>' : '<', - $errorKeyword = undefined; - if (!($isData || typeof $schema == 'number' || $schema === undefined)) { - throw new Error($keyword + ' must be number'); - } - if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) { - throw new Error($exclusiveKeyword + ' must be number or boolean'); - } - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $exclType = 'exclType' + $lvl, - $exclIsNumber = 'exclIsNumber' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; '; - if ($schema === undefined) { - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaValueExcl; - $isData = $isDataExcl; - } - } else { - var $exclIsNumber = typeof $schemaExcl == 'number', - $opStr = $op; - if ($exclIsNumber && $isData) { - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; - } else { - if ($exclIsNumber && $schema === undefined) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $schemaValue = $schemaExcl; - $notOp += '='; - } else { - if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); - if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { - $exclusive = true; - $errorKeyword = $exclusiveKeyword; - $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; - $notOp += '='; - } else { - $exclusive = false; - $opStr += '='; - } - } - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; - } - } - $errorKeyword = $errorKeyword || $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 4683: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate__limitItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'fewer'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 2114: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate__limitLength(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 1142: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate__limitProperties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } - var $op = $keyword == 'maxProperties' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'fewer'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 9443: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_allOf(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $allSchemasEmpty = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - $allSchemasEmpty = false; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($breakOnError) { - if ($allSchemasEmpty) { - out += ' if (true) { '; - } else { - out += ' ' + ($closingBraces.slice(0, -1)) + ' '; - } - } - return out; -} - - -/***/ }), - -/***/ 3093: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_anyOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $noEmptySchema = $schema.every(function($sch) { - return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all)); - }); - if ($noEmptySchema) { - var $currentBaseId = $it.baseId; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - - -/***/ }), - -/***/ 134: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_comment(it, $keyword, $ruleType) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $comment = it.util.toQuotedString($schema); - if (it.opts.$comment === true) { - out += ' console.log(' + ($comment) + ');'; - } else if (typeof it.opts.$comment == 'function') { - out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);'; - } - return out; -} - - -/***/ }), - -/***/ 1661: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_const(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to constant\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 5964: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_contains(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId, - $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all)); - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($nonEmptySchema) { - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (' + ($nextValid) + ') break; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; - } else { - out += ' if (' + ($data) + '.length == 0) {'; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should contain a valid item\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - if ($nonEmptySchema) { - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - } - if (it.opts.allErrors) { - out += ' } '; - } - return out; -} - - -/***/ }), - -/***/ 5912: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_custom(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $rule = this, - $definition = 'definition' + $lvl, - $rDef = $rule.definition, - $closingBraces = ''; - var $compile, $inline, $macro, $ruleValidate, $validateCode; - if ($isData && $rDef.$data) { - $validateCode = 'keywordValidate' + $lvl; - var $validateSchema = $rDef.validateSchema; - out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;'; - } else { - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); - if (!$ruleValidate) return; - $schemaValue = 'validate.schema' + $schemaPath; - $validateCode = $ruleValidate.code; - $compile = $rDef.compile; - $inline = $rDef.inline; - $macro = $rDef.macro; - } - var $ruleErrs = $validateCode + '.errors', - $i = 'i' + $lvl, - $ruleErr = 'ruleErr' + $lvl, - $asyncKeyword = $rDef.async; - if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema'); - if (!($inline || $macro)) { - out += '' + ($ruleErrs) + ' = null;'; - } - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($isData && $rDef.$data) { - $closingBraces += '}'; - out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { '; - if ($validateSchema) { - $closingBraces += '}'; - out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { '; - } - } - if ($inline) { - if ($rDef.statements) { - out += ' ' + ($ruleValidate.validate) + ' '; - } else { - out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; '; - } - } else if ($macro) { - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $ruleValidate.validate; - $it.schemaPath = ''; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($code); - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - out += ' ' + ($validateCode) + '.call( '; - if (it.opts.passContext) { - out += 'this'; - } else { - out += 'self'; - } - if ($compile || $rDef.schema === false) { - out += ' , ' + ($data) + ' '; - } else { - out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' '; - } - out += ' , (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) '; - var def_callRuleValidate = out; - out = $$outStack.pop(); - if ($rDef.errors === false) { - out += ' ' + ($valid) + ' = '; - if ($asyncKeyword) { - out += 'await '; - } - out += '' + (def_callRuleValidate) + '; '; - } else { - if ($asyncKeyword) { - $ruleErrs = 'customErrors' + $lvl; - out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } '; - } else { - out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; '; - } - } - } - if ($rDef.modifying) { - out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];'; - } - out += '' + ($closingBraces); - if ($rDef.valid) { - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - out += ' if ( '; - if ($rDef.valid === undefined) { - out += ' !'; - if ($macro) { - out += '' + ($nextValid); - } else { - out += '' + ($valid); - } - } else { - out += ' ' + (!$rDef.valid) + ' '; - } - out += ') { '; - $errorKeyword = $rule.keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - var def_customError = out; - out = $$outStack.pop(); - if ($inline) { - if ($rDef.errors) { - if ($rDef.errors != 'full') { - out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' { - -"use strict"; - -module.exports = function generate_dependencies(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $schemaDeps = {}, - $propertyDeps = {}, - $ownProperties = it.opts.ownProperties; - for ($property in $schema) { - if ($property == '__proto__') continue; - var $sch = $schema[$property]; - var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; - $deps[$property] = $sch; - } - out += 'var ' + ($errs) + ' = errors;'; - var $currentErrorPath = it.errorPath; - out += 'var missing' + ($lvl) + ';'; - for (var $property in $propertyDeps) { - $deps = $propertyDeps[$property]; - if ($deps.length) { - out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; - } - if ($breakOnError) { - out += ' && ( '; - var arr1 = $deps; - if (arr1) { - var $propertyKey, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $propertyKey = arr1[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty($propertyKey), - $useData = $data + $prop; - out += ' ( ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; - } - } - out += ')) { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } else { - out += ' ) { '; - var arr2 = $deps; - if (arr2) { - var $propertyKey, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $propertyKey = arr2[i2 += 1]; - var $prop = it.util.getProperty($propertyKey), - $missingProperty = it.util.escapeQuotes($propertyKey), - $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - } - it.errorPath = $currentErrorPath; - var $currentBaseId = $it.baseId; - for (var $property in $schemaDeps) { - var $sch = $schemaDeps[$property]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; - } - out += ') { '; - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - return out; -} - - -/***/ }), - -/***/ 163: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_enum(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $i = 'i' + $lvl, - $vSchema = 'schema' + $lvl; - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ';'; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }'; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to one of the allowed values\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 3847: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_format(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - if (it.opts.format === false) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $unknownFormats = it.opts.unknownFormats, - $allowUnknown = Array.isArray($unknownFormats); - if ($isData) { - var $format = 'format' + $lvl, - $isObject = 'isObject' + $lvl, - $formatType = 'formatType' + $lvl; - out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { '; - if (it.async) { - out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; '; - } - out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' ('; - if ($unknownFormats != 'ignore') { - out += ' (' + ($schemaValue) + ' && !' + ($format) + ' '; - if ($allowUnknown) { - out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 '; - } - out += ') || '; - } - out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? '; - if (it.async) { - out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) '; - } else { - out += ' ' + ($format) + '(' + ($data) + ') '; - } - out += ' : ' + ($format) + '.test(' + ($data) + '))))) {'; - } else { - var $format = it.formats[$schema]; - if (!$format) { - if ($unknownFormats == 'ignore') { - it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } else { - throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); - } - } - var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; - var $formatType = $isObject && $format.type || 'string'; - if ($isObject) { - var $async = $format.async === true; - $format = $format.validate; - } - if ($formatType != $ruleType) { - if ($breakOnError) { - out += ' if (true) { '; - } - return out; - } - if ($async) { - if (!it.async) throw new Error('async format in sync schema'); - var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; - out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { '; - } else { - out += ' if (! '; - var $formatRef = 'formats' + it.util.getProperty($schema); - if ($isObject) $formatRef += '.validate'; - if (typeof $format == 'function') { - out += ' ' + ($formatRef) + '(' + ($data) + ') '; - } else { - out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; - } - out += ') { '; - } - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match format "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 862: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_if(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - var $thenSch = it.schema['then'], - $elseSch = it.schema['else'], - $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)), - $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)), - $currentBaseId = $it.baseId; - if ($thenPresent || $elsePresent) { - var $ifClause; - $it.createErrors = false; - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - $it.createErrors = true; - out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - if ($thenPresent) { - out += ' if (' + ($nextValid) + ') { '; - $it.schema = it.schema['then']; - $it.schemaPath = it.schemaPath + '.then'; - $it.errSchemaPath = it.errSchemaPath + '/then'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; - if ($thenPresent && $elsePresent) { - $ifClause = 'ifClause' + $lvl; - out += ' var ' + ($ifClause) + ' = \'then\'; '; - } else { - $ifClause = '\'then\''; - } - out += ' } '; - if ($elsePresent) { - out += ' else { '; - } - } else { - out += ' if (!' + ($nextValid) + ') { '; - } - if ($elsePresent) { - $it.schema = it.schema['else']; - $it.schemaPath = it.schemaPath + '.else'; - $it.errSchemaPath = it.errSchemaPath + '/else'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; - if ($thenPresent && $elsePresent) { - $ifClause = 'ifClause' + $lvl; - out += ' var ' + ($ifClause) + ' = \'else\'; '; - } else { - $ifClause = '\'else\''; - } - out += ' } '; - } - out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - - -/***/ }), - -/***/ 5810: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -//all requires must be explicit because browserify won't work with dynamic requires -module.exports = { - '$ref': __webpack_require__(2393), - allOf: __webpack_require__(9443), - anyOf: __webpack_require__(3093), - '$comment': __webpack_require__(134), - const: __webpack_require__(1661), - contains: __webpack_require__(5964), - dependencies: __webpack_require__(2591), - 'enum': __webpack_require__(163), - format: __webpack_require__(3847), - 'if': __webpack_require__(862), - items: __webpack_require__(4408), - maximum: __webpack_require__(7404), - minimum: __webpack_require__(7404), - maxItems: __webpack_require__(4683), - minItems: __webpack_require__(4683), - maxLength: __webpack_require__(2114), - minLength: __webpack_require__(2114), - maxProperties: __webpack_require__(1142), - minProperties: __webpack_require__(1142), - multipleOf: __webpack_require__(9772), - not: __webpack_require__(750), - oneOf: __webpack_require__(6106), - pattern: __webpack_require__(3912), - properties: __webpack_require__(2924), - propertyNames: __webpack_require__(9195), - required: __webpack_require__(8420), - uniqueItems: __webpack_require__(4995), - validate: __webpack_require__(9585) -}; - - -/***/ }), - -/***/ 4408: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_items(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $idx = 'i' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $currentBaseId = it.baseId; - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if (Array.isArray($schema)) { - var $additionalItems = it.schema.additionalItems; - if ($additionalItems === false) { - out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' }'; - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - return out; -} - - -/***/ }), - -/***/ 9772: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_multipleOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!($isData || typeof $schema == 'number')) { - throw new Error($keyword + ' must be number'); - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schemaValue) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 750: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_not(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - var $allErrorsOption; - if ($it.opts.allErrors) { - $allErrorsOption = $it.opts.allErrors; - $it.opts.allErrors = false; - } - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (' + ($nextValid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; -} - - -/***/ }), - -/***/ 6106: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_oneOf(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $prevValid = 'prevValid' + $lvl, - $passingSchemas = 'passingSchemas' + $lvl; - out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - } else { - out += ' var ' + ($nextValid) + ' = true; '; - } - if ($i) { - out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { '; - $closingBraces += '}'; - } - out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; return false; '; - } - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; -} - - -/***/ }), - -/***/ 3912: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_pattern(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; -} - - -/***/ }), - -/***/ 2924: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_properties(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl; - var $schemaKeys = Object.keys($schema || {}).filter(notProto), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties).filter(notProto), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - var $required = it.schema.required; - if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) { - var $requiredHash = it.util.toHash($required); - } - - function notProto(p) { - return p !== '__proto__'; - } - out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined;'; - } - if ($checkAdditional) { - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 8) { - out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + ' + $key + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - out += ' ' + ($nextValid) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is an invalid additional property'; - } else { - out += 'should NOT have additional properties'; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { ' + ($nextValid) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ' ) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($pPropertyKeys.length) { - var arr4 = $pPropertyKeys; - if (arr4) { - var $pProperty, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $pProperty = arr4[i4 += 1]; - var $sch = $pProperties[$pProperty]; - if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else ' + ($nextValid) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - return out; -} - - -/***/ }), - -/***/ 9195: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_propertyNames(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - out += 'var ' + ($errs) + ' = errors;'; - if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - var $key = 'key' + $lvl, - $idx = 'idx' + $lvl, - $i = 'i' + $lvl, - $invalidName = '\' + ' + $key + ' + \'', - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt, - $dataProperties = 'dataProperties' + $lvl, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - if ($ownProperties) { - out += ' var ' + ($dataProperties) + ' = undefined; '; - } - if ($ownProperties) { - out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; - } else { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - } - out += ' var startErrs' + ($lvl) + ' = errors; '; - var $passData = $key; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' { - -"use strict"; - -module.exports = function generate_ref(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $async, $refCode; - if ($schema == '#' || $schema == '#/') { - if (it.isRoot) { - $async = it.async; - $refCode = 'validate'; - } else { - $async = it.root.schema.$async === true; - $refCode = 'root.refVal[0]'; - } - } else { - var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); - if ($refVal === undefined) { - var $message = it.MissingRefError.message(it.baseId, $schema); - if (it.opts.missingRefs == 'fail') { - it.logger.error($message); - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; - } - if (it.opts.verbose) { - out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - if ($breakOnError) { - out += ' if (false) { '; - } - } else if (it.opts.missingRefs == 'ignore') { - it.logger.warn($message); - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - throw new it.MissingRefError(it.baseId, $schema, $message); - } - } else if ($refVal.inline) { - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $refVal.schema; - $it.schemaPath = ''; - $it.errSchemaPath = $schema; - var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); - out += ' ' + ($code) + ' '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - } - } else { - $async = $refVal.$async === true || (it.async && $refVal.$async !== false); - $refCode = $refVal.code; - } - } - if ($refCode) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - if (it.opts.passContext) { - out += ' ' + ($refCode) + '.call(this, '; - } else { - out += ' ' + ($refCode) + '( '; - } - out += ' ' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) '; - var __callValidate = out; - out = $$outStack.pop(); - if ($async) { - if (!it.async) throw new Error('async schema referenced by sync schema'); - if ($breakOnError) { - out += ' var ' + ($valid) + '; '; - } - out += ' try { await ' + (__callValidate) + '; '; - if ($breakOnError) { - out += ' ' + ($valid) + ' = true; '; - } - out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; '; - if ($breakOnError) { - out += ' ' + ($valid) + ' = false; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - } - } else { - out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } - } - return out; -} - - -/***/ }), - -/***/ 8420: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_required(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $vSchema = 'schema' + $lvl; - if (!$isData) { - if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { - var $required = []; - var arr1 = $schema; - if (arr1) { - var $property, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $property = arr1[i1 += 1]; - var $propertySch = it.schema.properties[$property]; - if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) { - $required[$required.length] = $property; - } - } - } - } else { - var $required = $schema; - } - } - if ($isData || $required.length) { - var $currentErrorPath = it.errorPath, - $loopRequired = $isData || $required.length >= it.opts.loopRequired, - $ownProperties = it.opts.ownProperties; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; - if ($ownProperties) { - out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += '; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var $propertyKey, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $propertyKey = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty($propertyKey), - $useData = $data + $prop; - out += ' ( ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $prop = it.util.getProperty($propertyKey), - $missingProperty = it.util.escapeQuotes($propertyKey), - $useData = $data + $prop; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - out += ' if ( ' + ($useData) + ' === undefined '; - if ($ownProperties) { - out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; - } - out += ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; -} - - -/***/ }), - -/***/ 4995: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.$data && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { '; - var $itemType = it.schema.items && it.schema.items.type, - $typeIsArray = Array.isArray($itemType); - if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) { - out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } '; - } else { - out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; - var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); - out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; '; - if ($typeIsArray) { - out += ' if (typeof item == \'string\') item = \'"\' + item; '; - } - out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } '; - } - out += ' } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; -} - - -/***/ }), - -/***/ 9585: -/***/ ((module) => { - -"use strict"; - -module.exports = function generate_validate(it, $keyword, $ruleType) { - var out = ''; - var $async = it.schema.$async === true, - $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'), - $id = it.self._getId(it.schema); - if (it.opts.strictKeywords) { - var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords); - if ($unknownKwd) { - var $keywordsMsg = 'unknown keyword: ' + $unknownKwd; - if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg); - else throw new Error($keywordsMsg); - } - } - if (it.isTop) { - out += ' var validate = '; - if ($async) { - it.async = true; - out += 'async '; - } - out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; '; - if ($id && (it.opts.sourceCode || it.opts.processCode)) { - out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' '; - } - } - if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) { - var $keyword = 'false schema'; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - if (it.schema === false) { - if (it.isTop) { - $breakOnError = true; - } else { - out += ' var ' + ($valid) + ' = false; '; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'boolean schema is false\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } else { - if (it.isTop) { - if ($async) { - out += ' return data; '; - } else { - out += ' validate.errors = null; return true; '; - } - } else { - out += ' var ' + ($valid) + ' = true; '; - } - } - if (it.isTop) { - out += ' }; return validate; '; - } - return out; - } - if (it.isTop) { - var $top = it.isTop, - $lvl = it.level = 0, - $dataLvl = it.dataLevel = 0, - $data = 'data'; - it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); - it.baseId = it.baseId || it.rootId; - delete it.isTop; - it.dataPathArr = [""]; - if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored in the schema root'; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - out += ' var vErrors = null; '; - out += ' var errors = 0; '; - out += ' if (rootData === undefined) rootData = data; '; - } else { - var $lvl = it.level, - $dataLvl = it.dataLevel, - $data = 'data' + ($dataLvl || ''); - if ($id) it.baseId = it.resolve.url(it.baseId, $id); - if ($async && !it.async) throw new Error('async schema in sync schema'); - out += ' var errs_' + ($lvl) + ' = errors;'; - } - var $valid = 'valid' + $lvl, - $breakOnError = !it.opts.allErrors, - $closingBraces1 = '', - $closingBraces2 = ''; - var $errorKeyword; - var $typeSchema = it.schema.type, - $typeIsArray = Array.isArray($typeSchema); - if ($typeSchema && it.opts.nullable && it.schema.nullable === true) { - if ($typeIsArray) { - if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null'); - } else if ($typeSchema != 'null') { - $typeSchema = [$typeSchema, 'null']; - $typeIsArray = true; - } - } - if ($typeIsArray && $typeSchema.length == 1) { - $typeSchema = $typeSchema[0]; - $typeIsArray = false; - } - if (it.schema.$ref && $refKeywords) { - if (it.opts.extendRefs == 'fail') { - throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); - } else if (it.opts.extendRefs !== true) { - $refKeywords = false; - it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); - } - } - if (it.schema.$comment && it.opts.$comment) { - out += ' ' + (it.RULES.all.$comment.code(it, '$comment')); - } - if ($typeSchema) { - if (it.opts.coerceTypes) { - var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); - } - var $rulesGroup = it.RULES.types[$typeSchema]; - if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) { - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type', - $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { '; - if ($coerceToTypes) { - var $dataType = 'dataType' + $lvl, - $coerced = 'coerced' + $lvl; - out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; '; - if (it.opts.coerceTypes == 'array') { - out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } '; - } - out += ' if (' + ($coerced) + ' !== undefined) ; '; - var arr1 = $coerceToTypes; - if (arr1) { - var $type, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $type = arr1[$i += 1]; - if ($type == 'string') { - out += ' else if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; - } else if ($type == 'number' || $type == 'integer') { - out += ' else if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; - if ($type == 'integer') { - out += ' && !(' + ($data) + ' % 1)'; - } - out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; - } else if ($type == 'boolean') { - out += ' else if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; - } else if ($type == 'null') { - out += ' else if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; - } else if (it.opts.coerceTypes == 'array' && $type == 'array') { - out += ' else if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; - } - } - } - out += ' else { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } if (' + ($coerced) + ' !== undefined) { '; - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' ' + ($data) + ' = ' + ($coerced) + '; '; - if (!$dataLvl) { - out += 'if (' + ($parentData) + ' !== undefined)'; - } - out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } '; - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' } '; - } - } - if (it.schema.$ref && !$refKeywords) { - out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; - if ($breakOnError) { - out += ' } if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } else { - var arr2 = it.RULES; - if (arr2) { - var $rulesGroup, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $rulesGroup = arr2[i2 += 1]; - if ($shouldUseGroup($rulesGroup)) { - if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { '; - } - if (it.opts.useDefaults) { - if ($rulesGroup.type == 'object' && it.schema.properties) { - var $schema = it.schema.properties, - $schemaKeys = Object.keys($schema); - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ($sch.default !== undefined) { - var $passData = $data + it.util.getProperty($propertyKey); - if (it.compositeRule) { - if (it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored for: ' + $passData; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - } else { - out += ' if (' + ($passData) + ' === undefined '; - if (it.opts.useDefaults == 'empty') { - out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; - } - out += ' ) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { - var arr4 = it.schema.items; - if (arr4) { - var $sch, $i = -1, - l4 = arr4.length - 1; - while ($i < l4) { - $sch = arr4[$i += 1]; - if ($sch.default !== undefined) { - var $passData = $data + '[' + $i + ']'; - if (it.compositeRule) { - if (it.opts.strictDefaults) { - var $defaultMsg = 'default is ignored for: ' + $passData; - if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); - else throw new Error($defaultMsg); - } - } else { - out += ' if (' + ($passData) + ' === undefined '; - if (it.opts.useDefaults == 'empty') { - out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; - } - out += ' ) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } - } - var arr5 = $rulesGroup.rules; - if (arr5) { - var $rule, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $rule = arr5[i5 += 1]; - if ($shouldUseRule($rule)) { - var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); - if ($code) { - out += ' ' + ($code) + ' '; - if ($breakOnError) { - $closingBraces1 += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces1) + ' '; - $closingBraces1 = ''; - } - if ($rulesGroup.type) { - out += ' } '; - if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) { - out += ' else { '; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - } - if ($breakOnError) { - out += ' if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces2) + ' '; - } - if ($top) { - if ($async) { - out += ' if (errors === 0) return data; '; - out += ' else throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; '; - out += ' return errors === 0; '; - } - out += ' }; return validate;'; - } else { - out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; - } - - function $shouldUseGroup($rulesGroup) { - var rules = $rulesGroup.rules; - for (var i = 0; i < rules.length; i++) - if ($shouldUseRule(rules[i])) return true; - } - - function $shouldUseRule($rule) { - return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule)); - } - - function $ruleImplementsSomeKeyword($rule) { - var impl = $rule.implements; - for (var i = 0; i < impl.length; i++) - if (it.schema[impl[i]] !== undefined) return true; - } - return out; -} - - -/***/ }), - -/***/ 3297: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i; -var customRuleCode = __webpack_require__(5912); -var definitionSchema = __webpack_require__(458); - -module.exports = { - add: addKeyword, - get: getKeyword, - remove: removeKeyword, - validate: validateKeyword -}; - - -/** - * Define custom keyword - * @this Ajv - * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords). - * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. - * @return {Ajv} this for method chaining - */ -function addKeyword(keyword, definition) { - /* jshint validthis: true */ - /* eslint no-shadow: 0 */ - var RULES = this.RULES; - if (RULES.keywords[keyword]) - throw new Error('Keyword ' + keyword + ' is already defined'); - - if (!IDENTIFIER.test(keyword)) - throw new Error('Keyword ' + keyword + ' is not a valid identifier'); - - if (definition) { - this.validateKeyword(definition, true); - - var dataType = definition.type; - if (Array.isArray(dataType)) { - for (var i=0; i { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + legacyRestEndpointMethods: () => legacyRestEndpointMethods, + restEndpointMethods: () => restEndpointMethods +}); +module.exports = __toCommonJS(dist_src_exports); + +// pkg/dist-src/version.js +var VERSION = "10.0.0"; + +// pkg/dist-src/generated/endpoints.js +var Endpoints = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: [ + "POST /orgs/{org}/actions/runners/{runner_id}/labels" + ], + addCustomLabelsToSelfHostedRunnerForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + approveWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" + ], + cancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" + ], + createEnvironmentVariable: [ + "POST /repositories/{repository_id}/environments/{environment_name}/variables" + ], + createOrUpdateEnvironmentSecret: [ + "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + createOrgVariable: ["POST /orgs/{org}/actions/variables"], + createRegistrationTokenForOrg: [ + "POST /orgs/{org}/actions/runners/registration-token" + ], + createRegistrationTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/registration-token" + ], + createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], + createRemoveTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/remove-token" + ], + createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], + createWorkflowDispatch: [ + "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" + ], + deleteActionsCacheById: [ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" + ], + deleteActionsCacheByKey: [ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" + ], + deleteArtifact: [ + "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" + ], + deleteEnvironmentSecret: [ + "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], + deleteEnvironmentVariable: [ + "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], + deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + deleteRepoVariable: [ + "DELETE /repos/{owner}/{repo}/actions/variables/{name}" + ], + deleteSelfHostedRunnerFromOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}" + ], + deleteSelfHostedRunnerFromRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], + deleteWorkflowRunLogs: [ + "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + disableSelectedRepositoryGithubActionsOrganization: [ + "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + disableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" + ], + downloadArtifact: [ + "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" + ], + downloadJobLogsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" + ], + downloadWorkflowRunAttemptLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" + ], + downloadWorkflowRunLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + enableSelectedRepositoryGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + enableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" + ], + generateRunnerJitconfigForOrg: [ + "POST /orgs/{org}/actions/runners/generate-jitconfig" + ], + generateRunnerJitconfigForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" + ], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], + getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], + getActionsCacheUsageByRepoForOrg: [ + "GET /orgs/{org}/actions/cache/usage-by-repository" + ], + getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], + getAllowedActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/selected-actions" + ], + getAllowedActionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + getEnvironmentPublicKey: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key" + ], + getEnvironmentSecret: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], + getEnvironmentVariable: [ + "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], + getGithubActionsDefaultWorkflowPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions/workflow" + ], + getGithubActionsDefaultWorkflowPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/workflow" + ], + getGithubActionsPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions" + ], + getGithubActionsPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions" + ], + getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], + getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], + getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], + getPendingDeploymentsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + getRepoPermissions: [ + "GET /repos/{owner}/{repo}/actions/permissions", + {}, + { renamed: ["actions", "getGithubActionsPermissionsRepository"] } + ], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], + getReviewsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals" + ], + getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], + getSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], + getWorkflowAccessToRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/access" + ], + getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], + getWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}" + ], + getWorkflowRunUsage: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing" + ], + getWorkflowUsage: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing" + ], + listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], + listEnvironmentSecrets: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets" + ], + listEnvironmentVariables: [ + "GET /repositories/{repository_id}/environments/{environment_name}/variables" + ], + listJobsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" + ], + listJobsForWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs" + ], + listLabelsForSelfHostedRunnerForOrg: [ + "GET /orgs/{org}/actions/runners/{runner_id}/labels" + ], + listLabelsForSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], + listOrgVariables: ["GET /orgs/{org}/actions/variables"], + listRepoOrganizationSecrets: [ + "GET /repos/{owner}/{repo}/actions/organization-secrets" + ], + listRepoOrganizationVariables: [ + "GET /repos/{owner}/{repo}/actions/organization-variables" + ], + listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], + listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], + listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], + listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], + listRunnerApplicationsForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/downloads" + ], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + listSelectedReposForOrgVariable: [ + "GET /orgs/{org}/actions/variables/{name}/repositories" + ], + listSelectedRepositoriesEnabledGithubActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/repositories" + ], + listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], + listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], + listWorkflowRunArtifacts: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts" + ], + listWorkflowRuns: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs" + ], + listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], + reRunJobForWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun" + ], + reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], + reRunWorkflowFailedJobs: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs" + ], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels" + ], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + removeCustomLabelFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}" + ], + removeCustomLabelFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgVariable: [ + "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + reviewCustomGatesForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule" + ], + reviewPendingDeploymentsForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + setAllowedActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/selected-actions" + ], + setAllowedActionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + setCustomLabelsForSelfHostedRunnerForOrg: [ + "PUT /orgs/{org}/actions/runners/{runner_id}/labels" + ], + setCustomLabelsForSelfHostedRunnerForRepo: [ + "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + setGithubActionsDefaultWorkflowPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/workflow" + ], + setGithubActionsDefaultWorkflowPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/workflow" + ], + setGithubActionsPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions" + ], + setGithubActionsPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories" + ], + setSelectedRepositoriesEnabledGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories" + ], + setWorkflowAccessToRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/access" + ], + updateEnvironmentVariable: [ + "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], + updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], + updateRepoVariable: [ + "PATCH /repos/{owner}/{repo}/actions/variables/{name}" + ] + }, + activity: { + checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], + deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], + deleteThreadSubscription: [ + "DELETE /notifications/threads/{thread_id}/subscription" + ], + getFeeds: ["GET /feeds"], + getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], + getThread: ["GET /notifications/threads/{thread_id}"], + getThreadSubscriptionForAuthenticatedUser: [ + "GET /notifications/threads/{thread_id}/subscription" + ], + listEventsForAuthenticatedUser: ["GET /users/{username}/events"], + listNotificationsForAuthenticatedUser: ["GET /notifications"], + listOrgEventsForAuthenticatedUser: [ + "GET /users/{username}/events/orgs/{org}" + ], + listPublicEvents: ["GET /events"], + listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], + listPublicEventsForUser: ["GET /users/{username}/events/public"], + listPublicOrgEvents: ["GET /orgs/{org}/events"], + listReceivedEventsForUser: ["GET /users/{username}/received_events"], + listReceivedPublicEventsForUser: [ + "GET /users/{username}/received_events/public" + ], + listRepoEvents: ["GET /repos/{owner}/{repo}/events"], + listRepoNotificationsForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/notifications" + ], + listReposStarredByAuthenticatedUser: ["GET /user/starred"], + listReposStarredByUser: ["GET /users/{username}/starred"], + listReposWatchedByUser: ["GET /users/{username}/subscriptions"], + listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], + listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], + listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], + markNotificationsAsRead: ["PUT /notifications"], + markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], + markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], + setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], + setThreadSubscription: [ + "PUT /notifications/threads/{thread_id}/subscription" + ], + starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], + unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] + }, + apps: { + addRepoToInstallation: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] } + ], + addRepoToInstallationForAuthenticatedUser: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}" + ], + checkToken: ["POST /applications/{client_id}/token"], + createFromManifest: ["POST /app-manifests/{code}/conversions"], + createInstallationAccessToken: [ + "POST /app/installations/{installation_id}/access_tokens" + ], + deleteAuthorization: ["DELETE /applications/{client_id}/grant"], + deleteInstallation: ["DELETE /app/installations/{installation_id}"], + deleteToken: ["DELETE /applications/{client_id}/token"], + getAuthenticated: ["GET /app"], + getBySlug: ["GET /apps/{app_slug}"], + getInstallation: ["GET /app/installations/{installation_id}"], + getOrgInstallation: ["GET /orgs/{org}/installation"], + getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], + getSubscriptionPlanForAccount: [ + "GET /marketplace_listing/accounts/{account_id}" + ], + getSubscriptionPlanForAccountStubbed: [ + "GET /marketplace_listing/stubbed/accounts/{account_id}" + ], + getUserInstallation: ["GET /users/{username}/installation"], + getWebhookConfigForApp: ["GET /app/hook/config"], + getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], + listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], + listAccountsForPlanStubbed: [ + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts" + ], + listInstallationReposForAuthenticatedUser: [ + "GET /user/installations/{installation_id}/repositories" + ], + listInstallationRequestsForAuthenticatedApp: [ + "GET /app/installation-requests" + ], + listInstallations: ["GET /app/installations"], + listInstallationsForAuthenticatedUser: ["GET /user/installations"], + listPlans: ["GET /marketplace_listing/plans"], + listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], + listReposAccessibleToInstallation: ["GET /installation/repositories"], + listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], + listSubscriptionsForAuthenticatedUserStubbed: [ + "GET /user/marketplace_purchases/stubbed" + ], + listWebhookDeliveries: ["GET /app/hook/deliveries"], + redeliverWebhookDelivery: [ + "POST /app/hook/deliveries/{delivery_id}/attempts" + ], + removeRepoFromInstallation: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] } + ], + removeRepoFromInstallationForAuthenticatedUser: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}" + ], + resetToken: ["PATCH /applications/{client_id}/token"], + revokeInstallationAccessToken: ["DELETE /installation/token"], + scopeToken: ["POST /applications/{client_id}/token/scoped"], + suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], + unsuspendInstallation: [ + "DELETE /app/installations/{installation_id}/suspended" + ], + updateWebhookConfigForApp: ["PATCH /app/hook/config"] + }, + billing: { + getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], + getGithubActionsBillingUser: [ + "GET /users/{username}/settings/billing/actions" + ], + getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], + getGithubPackagesBillingUser: [ + "GET /users/{username}/settings/billing/packages" + ], + getSharedStorageBillingOrg: [ + "GET /orgs/{org}/settings/billing/shared-storage" + ], + getSharedStorageBillingUser: [ + "GET /users/{username}/settings/billing/shared-storage" + ] + }, + checks: { + create: ["POST /repos/{owner}/{repo}/check-runs"], + createSuite: ["POST /repos/{owner}/{repo}/check-suites"], + get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], + getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], + listAnnotations: [ + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations" + ], + listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], + listForSuite: [ + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs" + ], + listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], + rerequestRun: [ + "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest" + ], + rerequestSuite: [ + "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest" + ], + setSuitesPreferences: [ + "PATCH /repos/{owner}/{repo}/check-suites/preferences" + ], + update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] + }, + codeScanning: { + deleteAnalysis: [ + "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}" + ], + getAlert: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", + {}, + { renamedParameters: { alert_id: "alert_number" } } + ], + getAnalysis: [ + "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}" + ], + getCodeqlDatabase: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + ], + getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], + getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], + listAlertInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances" + ], + listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], + listAlertsInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", + {}, + { renamed: ["codeScanning", "listAlertInstances"] } + ], + listCodeqlDatabases: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases" + ], + listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}" + ], + updateDefaultSetup: [ + "PATCH /repos/{owner}/{repo}/code-scanning/default-setup" + ], + uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] + }, + codesOfConduct: { + getAllCodesOfConduct: ["GET /codes_of_conduct"], + getConductCode: ["GET /codes_of_conduct/{key}"] + }, + codespaces: { + addRepositoryForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + codespaceMachinesForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/machines" + ], + createForAuthenticatedUser: ["POST /user/codespaces"], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + createOrUpdateSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}" + ], + createWithPrForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces" + ], + createWithRepoForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/codespaces" + ], + deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: [ + "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + deleteSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}" + ], + exportForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/exports" + ], + getCodespacesForUserInOrg: [ + "GET /orgs/{org}/members/{username}/codespaces" + ], + getExportDetailsForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/exports/{export_id}" + ], + getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], + getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], + getPublicKeyForAuthenticatedUser: [ + "GET /user/codespaces/secrets/public-key" + ], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + getSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}" + ], + listDevcontainersInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/devcontainers" + ], + listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: [ + "GET /orgs/{org}/codespaces", + {}, + { renamedParameters: { org_id: "org" } } + ], + listInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces" + ], + listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], + listRepositoriesForSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}/repositories" + ], + listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + preFlightWithRepoForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/new" + ], + publishForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/publish" + ], + removeRepositoryForSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + repoMachinesForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/machines" + ], + setRepositoriesForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], + stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: [ + "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop" + ], + updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] + }, + copilot: { + addCopilotForBusinessSeatsForTeams: [ + "POST /orgs/{org}/copilot/billing/selected_teams" + ], + addCopilotForBusinessSeatsForUsers: [ + "POST /orgs/{org}/copilot/billing/selected_users" + ], + cancelCopilotSeatAssignmentForTeams: [ + "DELETE /orgs/{org}/copilot/billing/selected_teams" + ], + cancelCopilotSeatAssignmentForUsers: [ + "DELETE /orgs/{org}/copilot/billing/selected_users" + ], + getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], + getCopilotSeatAssignmentDetailsForUser: [ + "GET /orgs/{org}/members/{username}/copilot" + ], + listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"] + }, + dependabot: { + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], + getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/dependabot/alerts" + ], + listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], + listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}" + ] + }, + dependencyGraph: { + createRepositorySnapshot: [ + "POST /repos/{owner}/{repo}/dependency-graph/snapshots" + ], + diffRange: [ + "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}" + ], + exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"] + }, + emojis: { get: ["GET /emojis"] }, + gists: { + checkIsStarred: ["GET /gists/{gist_id}/star"], + create: ["POST /gists"], + createComment: ["POST /gists/{gist_id}/comments"], + delete: ["DELETE /gists/{gist_id}"], + deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], + fork: ["POST /gists/{gist_id}/forks"], + get: ["GET /gists/{gist_id}"], + getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], + getRevision: ["GET /gists/{gist_id}/{sha}"], + list: ["GET /gists"], + listComments: ["GET /gists/{gist_id}/comments"], + listCommits: ["GET /gists/{gist_id}/commits"], + listForUser: ["GET /users/{username}/gists"], + listForks: ["GET /gists/{gist_id}/forks"], + listPublic: ["GET /gists/public"], + listStarred: ["GET /gists/starred"], + star: ["PUT /gists/{gist_id}/star"], + unstar: ["DELETE /gists/{gist_id}/star"], + update: ["PATCH /gists/{gist_id}"], + updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] + }, + git: { + createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], + createCommit: ["POST /repos/{owner}/{repo}/git/commits"], + createRef: ["POST /repos/{owner}/{repo}/git/refs"], + createTag: ["POST /repos/{owner}/{repo}/git/tags"], + createTree: ["POST /repos/{owner}/{repo}/git/trees"], + deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], + getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], + getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], + getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], + getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], + getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], + listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], + updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] + }, + gitignore: { + getAllTemplates: ["GET /gitignore/templates"], + getTemplate: ["GET /gitignore/templates/{name}"] + }, + interactions: { + getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], + getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], + getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], + getRestrictionsForYourPublicRepos: [ + "GET /user/interaction-limits", + {}, + { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] } + ], + removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], + removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], + removeRestrictionsForRepo: [ + "DELETE /repos/{owner}/{repo}/interaction-limits" + ], + removeRestrictionsForYourPublicRepos: [ + "DELETE /user/interaction-limits", + {}, + { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] } + ], + setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], + setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], + setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], + setRestrictionsForYourPublicRepos: [ + "PUT /user/interaction-limits", + {}, + { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] } + ] + }, + issues: { + addAssignees: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], + checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], + checkUserCanBeAssignedToIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}" + ], + create: ["POST /repos/{owner}/{repo}/issues"], + createComment: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/comments" + ], + createLabel: ["POST /repos/{owner}/{repo}/labels"], + createMilestone: ["POST /repos/{owner}/{repo}/milestones"], + deleteComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}" + ], + deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], + deleteMilestone: [ + "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}" + ], + get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], + getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], + getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], + getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], + getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], + list: ["GET /issues"], + listAssignees: ["GET /repos/{owner}/{repo}/assignees"], + listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], + listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], + listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], + listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], + listEventsForTimeline: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline" + ], + listForAuthenticatedUser: ["GET /user/issues"], + listForOrg: ["GET /orgs/{org}/issues"], + listForRepo: ["GET /repos/{owner}/{repo}/issues"], + listLabelsForMilestone: [ + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels" + ], + listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], + listLabelsOnIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + listMilestones: ["GET /repos/{owner}/{repo}/milestones"], + lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], + removeAllLabels: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + removeAssignees: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + removeLabel: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}" + ], + setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], + unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], + update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], + updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], + updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], + updateMilestone: [ + "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}" + ] + }, + licenses: { + get: ["GET /licenses/{license}"], + getAllCommonlyUsed: ["GET /licenses"], + getForRepo: ["GET /repos/{owner}/{repo}/license"] + }, + markdown: { + render: ["POST /markdown"], + renderRaw: [ + "POST /markdown/raw", + { headers: { "content-type": "text/plain; charset=utf-8" } } + ] + }, + meta: { + get: ["GET /meta"], + getAllVersions: ["GET /versions"], + getOctocat: ["GET /octocat"], + getZen: ["GET /zen"], + root: ["GET /"] + }, + migrations: { + cancelImport: ["DELETE /repos/{owner}/{repo}/import"], + deleteArchiveForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/archive" + ], + deleteArchiveForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/archive" + ], + downloadArchiveForOrg: [ + "GET /orgs/{org}/migrations/{migration_id}/archive" + ], + getArchiveForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/archive" + ], + getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], + getImportStatus: ["GET /repos/{owner}/{repo}/import"], + getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], + getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], + getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], + listForAuthenticatedUser: ["GET /user/migrations"], + listForOrg: ["GET /orgs/{org}/migrations"], + listReposForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/repositories" + ], + listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], + listReposForUser: [ + "GET /user/migrations/{migration_id}/repositories", + {}, + { renamed: ["migrations", "listReposForAuthenticatedUser"] } + ], + mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], + setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], + startForAuthenticatedUser: ["POST /user/migrations"], + startForOrg: ["POST /orgs/{org}/migrations"], + startImport: ["PUT /repos/{owner}/{repo}/import"], + unlockRepoForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock" + ], + unlockRepoForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock" + ], + updateImport: ["PATCH /repos/{owner}/{repo}/import"] + }, + orgs: { + addSecurityManagerTeam: [ + "PUT /orgs/{org}/security-managers/teams/{team_slug}" + ], + blockUser: ["PUT /orgs/{org}/blocks/{username}"], + cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], + checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], + checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], + checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], + convertMemberToOutsideCollaborator: [ + "PUT /orgs/{org}/outside_collaborators/{username}" + ], + createInvitation: ["POST /orgs/{org}/invitations"], + createWebhook: ["POST /orgs/{org}/hooks"], + delete: ["DELETE /orgs/{org}"], + deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], + enableOrDisableSecurityProductOnAllOrgRepos: [ + "POST /orgs/{org}/{security_product}/{enablement}" + ], + get: ["GET /orgs/{org}"], + getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], + getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], + getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], + getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], + getWebhookDelivery: [ + "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + list: ["GET /organizations"], + listAppInstallations: ["GET /orgs/{org}/installations"], + listBlockedUsers: ["GET /orgs/{org}/blocks"], + listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], + listForAuthenticatedUser: ["GET /user/orgs"], + listForUser: ["GET /users/{username}/orgs"], + listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], + listMembers: ["GET /orgs/{org}/members"], + listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], + listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], + listPatGrantRepositories: [ + "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories" + ], + listPatGrantRequestRepositories: [ + "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories" + ], + listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], + listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], + listPendingInvitations: ["GET /orgs/{org}/invitations"], + listPublicMembers: ["GET /orgs/{org}/public_members"], + listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], + listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /orgs/{org}/hooks"], + pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: [ + "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeMember: ["DELETE /orgs/{org}/members/{username}"], + removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], + removeOutsideCollaborator: [ + "DELETE /orgs/{org}/outside_collaborators/{username}" + ], + removePublicMembershipForAuthenticatedUser: [ + "DELETE /orgs/{org}/public_members/{username}" + ], + removeSecurityManagerTeam: [ + "DELETE /orgs/{org}/security-managers/teams/{team_slug}" + ], + reviewPatGrantRequest: [ + "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}" + ], + reviewPatGrantRequestsInBulk: [ + "POST /orgs/{org}/personal-access-token-requests" + ], + setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], + setPublicMembershipForAuthenticatedUser: [ + "PUT /orgs/{org}/public_members/{username}" + ], + unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], + update: ["PATCH /orgs/{org}"], + updateMembershipForAuthenticatedUser: [ + "PATCH /user/memberships/orgs/{org}" + ], + updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], + updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], + updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], + updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] + }, + packages: { + deletePackageForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}" + ], + deletePackageForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}" + ], + deletePackageForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}" + ], + deletePackageVersionForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getAllPackageVersionsForAPackageOwnedByAnOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", + {}, + { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] } + ], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions", + {}, + { + renamed: [ + "packages", + "getAllPackageVersionsForPackageOwnedByAuthenticatedUser" + ] + } + ], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions" + ], + getPackageForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}" + ], + getPackageForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}" + ], + getPackageForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}" + ], + getPackageVersionForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + listDockerMigrationConflictingPackagesForAuthenticatedUser: [ + "GET /user/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForOrganization: [ + "GET /orgs/{org}/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForUser: [ + "GET /users/{username}/docker/conflicts" + ], + listPackagesForAuthenticatedUser: ["GET /user/packages"], + listPackagesForOrganization: ["GET /orgs/{org}/packages"], + listPackagesForUser: ["GET /users/{username}/packages"], + restorePackageForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageVersionForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ] + }, + projects: { + addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], + createCard: ["POST /projects/columns/{column_id}/cards"], + createColumn: ["POST /projects/{project_id}/columns"], + createForAuthenticatedUser: ["POST /user/projects"], + createForOrg: ["POST /orgs/{org}/projects"], + createForRepo: ["POST /repos/{owner}/{repo}/projects"], + delete: ["DELETE /projects/{project_id}"], + deleteCard: ["DELETE /projects/columns/cards/{card_id}"], + deleteColumn: ["DELETE /projects/columns/{column_id}"], + get: ["GET /projects/{project_id}"], + getCard: ["GET /projects/columns/cards/{card_id}"], + getColumn: ["GET /projects/columns/{column_id}"], + getPermissionForUser: [ + "GET /projects/{project_id}/collaborators/{username}/permission" + ], + listCards: ["GET /projects/columns/{column_id}/cards"], + listCollaborators: ["GET /projects/{project_id}/collaborators"], + listColumns: ["GET /projects/{project_id}/columns"], + listForOrg: ["GET /orgs/{org}/projects"], + listForRepo: ["GET /repos/{owner}/{repo}/projects"], + listForUser: ["GET /users/{username}/projects"], + moveCard: ["POST /projects/columns/cards/{card_id}/moves"], + moveColumn: ["POST /projects/columns/{column_id}/moves"], + removeCollaborator: [ + "DELETE /projects/{project_id}/collaborators/{username}" + ], + update: ["PATCH /projects/{project_id}"], + updateCard: ["PATCH /projects/columns/cards/{card_id}"], + updateColumn: ["PATCH /projects/columns/{column_id}"] + }, + pulls: { + checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + create: ["POST /repos/{owner}/{repo}/pulls"], + createReplyForReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies" + ], + createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + createReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + deletePendingReview: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + deleteReviewComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ], + dismissReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals" + ], + get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], + getReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + list: ["GET /repos/{owner}/{repo}/pulls"], + listCommentsForReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments" + ], + listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], + listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], + listRequestedReviewers: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + listReviewComments: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], + listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + removeRequestedReviewers: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + requestReviewers: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + submitReview: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events" + ], + update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], + updateBranch: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch" + ], + updateReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + updateReviewComment: [ + "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ] + }, + rateLimit: { get: ["GET /rate_limit"] }, + reactions: { + createForCommitComment: [ + "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + createForIssue: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions" + ], + createForIssueComment: [ + "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + createForPullRequestReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + createForRelease: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + createForTeamDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + createForTeamDiscussionInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ], + deleteForCommitComment: [ + "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForIssue: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}" + ], + deleteForIssueComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForPullRequestComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForRelease: [ + "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}" + ], + deleteForTeamDiscussion: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}" + ], + deleteForTeamDiscussionComment: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}" + ], + listForCommitComment: [ + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + listForIssueComment: [ + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + listForPullRequestReviewComment: [ + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + listForRelease: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + listForTeamDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + listForTeamDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ] + }, + repos: { + acceptInvitation: [ + "PATCH /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] } + ], + acceptInvitationForAuthenticatedUser: [ + "PATCH /user/repository_invitations/{invitation_id}" + ], + addAppAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], + addStatusCheckContexts: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + addTeamAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + addUserAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + checkAutomatedSecurityFixes: [ + "GET /repos/{owner}/{repo}/automated-security-fixes" + ], + checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], + checkVulnerabilityAlerts: [ + "GET /repos/{owner}/{repo}/vulnerability-alerts" + ], + codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], + compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], + compareCommitsWithBasehead: [ + "GET /repos/{owner}/{repo}/compare/{basehead}" + ], + createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], + createCommitComment: [ + "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + createCommitSignatureProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], + createDeployKey: ["POST /repos/{owner}/{repo}/keys"], + createDeployment: ["POST /repos/{owner}/{repo}/deployments"], + createDeploymentBranchPolicy: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + createDeploymentProtectionRule: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + createDeploymentStatus: [ + "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], + createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], + createForAuthenticatedUser: ["POST /user/repos"], + createFork: ["POST /repos/{owner}/{repo}/forks"], + createInOrg: ["POST /orgs/{org}/repos"], + createOrUpdateEnvironment: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}" + ], + createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], + createOrgRuleset: ["POST /orgs/{org}/rulesets"], + createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], + createPagesSite: ["POST /repos/{owner}/{repo}/pages"], + createRelease: ["POST /repos/{owner}/{repo}/releases"], + createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], + createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], + createUsingTemplate: [ + "POST /repos/{template_owner}/{template_repo}/generate" + ], + createWebhook: ["POST /repos/{owner}/{repo}/hooks"], + declineInvitation: [ + "DELETE /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "declineInvitationForAuthenticatedUser"] } + ], + declineInvitationForAuthenticatedUser: [ + "DELETE /user/repository_invitations/{invitation_id}" + ], + delete: ["DELETE /repos/{owner}/{repo}"], + deleteAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + deleteAdminBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + deleteAnEnvironment: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}" + ], + deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], + deleteBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection" + ], + deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], + deleteCommitSignatureProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], + deleteDeployment: [ + "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}" + ], + deleteDeploymentBranchPolicy: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], + deleteInvitation: [ + "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], + deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], + deletePullRequestReviewProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], + deleteReleaseAsset: [ + "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + deleteTagProtection: [ + "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}" + ], + deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], + disableAutomatedSecurityFixes: [ + "DELETE /repos/{owner}/{repo}/automated-security-fixes" + ], + disableDeploymentProtectionRule: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + disablePrivateVulnerabilityReporting: [ + "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + disableVulnerabilityAlerts: [ + "DELETE /repos/{owner}/{repo}/vulnerability-alerts" + ], + downloadArchive: [ + "GET /repos/{owner}/{repo}/zipball/{ref}", + {}, + { renamed: ["repos", "downloadZipballArchive"] } + ], + downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], + downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], + enableAutomatedSecurityFixes: [ + "PUT /repos/{owner}/{repo}/automated-security-fixes" + ], + enablePrivateVulnerabilityReporting: [ + "PUT /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + enableVulnerabilityAlerts: [ + "PUT /repos/{owner}/{repo}/vulnerability-alerts" + ], + generateReleaseNotes: [ + "POST /repos/{owner}/{repo}/releases/generate-notes" + ], + get: ["GET /repos/{owner}/{repo}"], + getAccessRestrictions: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + getAdminBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + getAllDeploymentProtectionRules: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], + getAllStatusCheckContexts: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts" + ], + getAllTopics: ["GET /repos/{owner}/{repo}/topics"], + getAppsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps" + ], + getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], + getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], + getBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection" + ], + getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], + getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], + getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], + getCollaboratorPermissionLevel: [ + "GET /repos/{owner}/{repo}/collaborators/{username}/permission" + ], + getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], + getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], + getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], + getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], + getCommitSignatureProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], + getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], + getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], + getCustomDeploymentProtectionRule: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], + getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], + getDeploymentBranchPolicy: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + getDeploymentStatus: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}" + ], + getEnvironment: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}" + ], + getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], + getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], + getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], + getOrgRulesets: ["GET /orgs/{org}/rulesets"], + getPages: ["GET /repos/{owner}/{repo}/pages"], + getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], + getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], + getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], + getPullRequestReviewProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], + getReadme: ["GET /repos/{owner}/{repo}/readme"], + getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], + getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], + getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], + getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], + getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], + getStatusChecksProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + getTeamsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams" + ], + getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], + getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], + getUsersWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users" + ], + getViews: ["GET /repos/{owner}/{repo}/traffic/views"], + getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], + getWebhookConfigForRepo: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + getWebhookDelivery: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + listActivities: ["GET /repos/{owner}/{repo}/activity"], + listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], + listBranches: ["GET /repos/{owner}/{repo}/branches"], + listBranchesForHeadCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head" + ], + listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], + listCommentsForCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], + listCommitStatusesForRef: [ + "GET /repos/{owner}/{repo}/commits/{ref}/statuses" + ], + listCommits: ["GET /repos/{owner}/{repo}/commits"], + listContributors: ["GET /repos/{owner}/{repo}/contributors"], + listCustomDeploymentRuleIntegrations: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps" + ], + listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], + listDeploymentBranchPolicies: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + listDeploymentStatuses: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], + listDeployments: ["GET /repos/{owner}/{repo}/deployments"], + listForAuthenticatedUser: ["GET /user/repos"], + listForOrg: ["GET /orgs/{org}/repos"], + listForUser: ["GET /users/{username}/repos"], + listForks: ["GET /repos/{owner}/{repo}/forks"], + listInvitations: ["GET /repos/{owner}/{repo}/invitations"], + listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], + listLanguages: ["GET /repos/{owner}/{repo}/languages"], + listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], + listPublic: ["GET /repositories"], + listPullRequestsAssociatedWithCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls" + ], + listReleaseAssets: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/assets" + ], + listReleases: ["GET /repos/{owner}/{repo}/releases"], + listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], + listTags: ["GET /repos/{owner}/{repo}/tags"], + listTeams: ["GET /repos/{owner}/{repo}/teams"], + listWebhookDeliveries: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries" + ], + listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], + merge: ["POST /repos/{owner}/{repo}/merges"], + mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], + pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: [ + "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeAppAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + removeCollaborator: [ + "DELETE /repos/{owner}/{repo}/collaborators/{username}" + ], + removeStatusCheckContexts: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + removeStatusCheckProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + removeTeamAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + removeUserAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], + replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], + requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], + setAdminBranchProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + setAppAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + setStatusCheckContexts: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + setTeamAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + setUserAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], + transfer: ["POST /repos/{owner}/{repo}/transfer"], + update: ["PATCH /repos/{owner}/{repo}"], + updateBranchProtection: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection" + ], + updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], + updateDeploymentBranchPolicy: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], + updateInvitation: [ + "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], + updatePullRequestReviewProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], + updateReleaseAsset: [ + "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + updateStatusCheckPotection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", + {}, + { renamed: ["repos", "updateStatusCheckProtection"] } + ], + updateStatusCheckProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], + updateWebhookConfigForRepo: [ + "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + uploadReleaseAsset: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", + { baseUrl: "https://uploads.github.com" } + ] + }, + search: { + code: ["GET /search/code"], + commits: ["GET /search/commits"], + issuesAndPullRequests: ["GET /search/issues"], + labels: ["GET /search/labels"], + repos: ["GET /search/repositories"], + topics: ["GET /search/topics"], + users: ["GET /search/users"] + }, + secretScanning: { + getAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/secret-scanning/alerts" + ], + listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], + listLocationsForAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ] + }, + securityAdvisories: { + createPrivateVulnerabilityReport: [ + "POST /repos/{owner}/{repo}/security-advisories/reports" + ], + createRepositoryAdvisory: [ + "POST /repos/{owner}/{repo}/security-advisories" + ], + createRepositoryAdvisoryCveRequest: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" + ], + getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], + getRepositoryAdvisory: [ + "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ], + listGlobalAdvisories: ["GET /advisories"], + listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], + listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], + updateRepositoryAdvisory: [ + "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ] + }, + teams: { + addOrUpdateMembershipForUserInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + addOrUpdateProjectPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + addOrUpdateRepoPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + checkPermissionsForProjectInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + checkPermissionsForRepoInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + create: ["POST /orgs/{org}/teams"], + createDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], + deleteDiscussionCommentInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + deleteDiscussionInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], + getByName: ["GET /orgs/{org}/teams/{team_slug}"], + getDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + getDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + getMembershipForUserInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + list: ["GET /orgs/{org}/teams"], + listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], + listDiscussionCommentsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], + listForAuthenticatedUser: ["GET /user/teams"], + listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], + listPendingInvitationsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/invitations" + ], + listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], + listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], + removeMembershipForUserInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + removeProjectInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + removeRepoInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + updateDiscussionCommentInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + updateDiscussionInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] + }, + users: { + addEmailForAuthenticated: [ + "POST /user/emails", + {}, + { renamed: ["users", "addEmailForAuthenticatedUser"] } + ], + addEmailForAuthenticatedUser: ["POST /user/emails"], + addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], + block: ["PUT /user/blocks/{username}"], + checkBlocked: ["GET /user/blocks/{username}"], + checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], + checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], + createGpgKeyForAuthenticated: [ + "POST /user/gpg_keys", + {}, + { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } + ], + createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], + createPublicSshKeyForAuthenticated: [ + "POST /user/keys", + {}, + { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } + ], + createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteEmailForAuthenticated: [ + "DELETE /user/emails", + {}, + { renamed: ["users", "deleteEmailForAuthenticatedUser"] } + ], + deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], + deleteGpgKeyForAuthenticated: [ + "DELETE /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } + ], + deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], + deletePublicSshKeyForAuthenticated: [ + "DELETE /user/keys/{key_id}", + {}, + { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } + ], + deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], + deleteSshSigningKeyForAuthenticatedUser: [ + "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + follow: ["PUT /user/following/{username}"], + getAuthenticated: ["GET /user"], + getByUsername: ["GET /users/{username}"], + getContextForUser: ["GET /users/{username}/hovercard"], + getGpgKeyForAuthenticated: [ + "GET /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } + ], + getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], + getPublicSshKeyForAuthenticated: [ + "GET /user/keys/{key_id}", + {}, + { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } + ], + getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: [ + "GET /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + list: ["GET /users"], + listBlockedByAuthenticated: [ + "GET /user/blocks", + {}, + { renamed: ["users", "listBlockedByAuthenticatedUser"] } + ], + listBlockedByAuthenticatedUser: ["GET /user/blocks"], + listEmailsForAuthenticated: [ + "GET /user/emails", + {}, + { renamed: ["users", "listEmailsForAuthenticatedUser"] } + ], + listEmailsForAuthenticatedUser: ["GET /user/emails"], + listFollowedByAuthenticated: [ + "GET /user/following", + {}, + { renamed: ["users", "listFollowedByAuthenticatedUser"] } + ], + listFollowedByAuthenticatedUser: ["GET /user/following"], + listFollowersForAuthenticatedUser: ["GET /user/followers"], + listFollowersForUser: ["GET /users/{username}/followers"], + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: [ + "GET /user/gpg_keys", + {}, + { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } + ], + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: [ + "GET /user/public_emails", + {}, + { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } + ], + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: [ + "GET /user/keys", + {}, + { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } + ], + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], + listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: [ + "PATCH /user/email/visibility", + {}, + { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } + ], + setPrimaryEmailVisibilityForAuthenticatedUser: [ + "PATCH /user/email/visibility" + ], + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] + } +}; +var endpoints_default = Endpoints; + +// pkg/dist-src/endpoints-to-methods.js +var endpointMethodsMap = /* @__PURE__ */ new Map(); +for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { + method, + url + }, + defaults + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); + } + endpointMethodsMap.get(scope).set(methodName, { + scope, + methodName, + endpointDefaults, + decorations + }); + } +} +var handler = { + get({ octokit, scope, cache }, methodName) { + if (cache[methodName]) { + return cache[methodName]; + } + const { decorations, endpointDefaults } = endpointMethodsMap.get(scope).get(methodName); + if (decorations) { + cache[methodName] = decorate( + octokit, + scope, + methodName, + endpointDefaults, + decorations + ); + } else { + cache[methodName] = octokit.request.defaults(endpointDefaults); + } + return cache[methodName]; + } +}; +function endpointsToMethods(octokit) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); + } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + function withDecorations(...args) { + let options = requestWithDefaults.endpoint.merge(...args); + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: void 0 + }); + return requestWithDefaults(options); + } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn( + `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` + ); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries( + decorations.renamedParameters + )) { + if (name in options2) { + octokit.log.warn( + `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` + ); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); + } + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); +} + +// pkg/dist-src/index.js +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 537: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + RequestError: () => RequestError +}); +module.exports = __toCommonJS(dist_src_exports); +var import_deprecation = __nccwpck_require__(8932); +var import_once = __toESM(__nccwpck_require__(1223)); +var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation)); +var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation)); +var RequestError = class extends Error { + constructor(message, statusCode, options) { + super(message); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + this.name = "HttpError"; + this.status = statusCode; + let headers; + if ("headers" in options && typeof options.headers !== "undefined") { + headers = options.headers; + } + if ("response" in options) { + this.response = options.response; + headers = options.response.headers; + } + const requestCopy = Object.assign({}, options.request); + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace( + / .*$/, + " [REDACTED]" + ) + }); + } + requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + Object.defineProperty(this, "code", { + get() { + logOnceCode( + new import_deprecation.Deprecation( + "[@octokit/request-error] `error.code` is deprecated, use `error.status`." + ) + ); + return statusCode; + } + }); + Object.defineProperty(this, "headers", { + get() { + logOnceHeaders( + new import_deprecation.Deprecation( + "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`." + ) + ); + return headers || {}; + } + }); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 6234: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + request: () => request +}); +module.exports = __toCommonJS(dist_src_exports); +var import_endpoint = __nccwpck_require__(9440); +var import_universal_user_agent = __nccwpck_require__(5030); + +// pkg/dist-src/version.js +var VERSION = "8.1.4"; + +// pkg/dist-src/fetch-wrapper.js +var import_is_plain_object = __nccwpck_require__(3287); +var import_request_error = __nccwpck_require__(537); + +// pkg/dist-src/get-buffer-response.js +function getBufferResponse(response) { + return response.arrayBuffer(); +} + +// pkg/dist-src/fetch-wrapper.js +function fetchWrapper(requestOptions) { + var _a, _b, _c; + const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; + const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; + if ((0, import_is_plain_object.isPlainObject)(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); + } + let headers = {}; + let status; + let url; + let { fetch } = globalThis; + if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { + fetch = requestOptions.request.fetch; + } + if (!fetch) { + throw new Error( + "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" + ); + } + return fetch(requestOptions.url, { + method: requestOptions.method, + body: requestOptions.body, + headers: requestOptions.headers, + signal: (_c = requestOptions.request) == null ? void 0 : _c.signal, + // duplex must be set if request.body is ReadableStream or Async Iterables. + // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. + ...requestOptions.body && { duplex: "half" } + }).then(async (response) => { + url = response.url; + status = response.status; + for (const keyAndValue of response.headers) { + headers[keyAndValue[0]] = keyAndValue[1]; + } + if ("deprecation" in headers) { + const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn( + `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` + ); + } + if (status === 204 || status === 205) { + return; + } + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + throw new import_request_error.RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: void 0 + }, + request: requestOptions + }); + } + if (status === 304) { + throw new import_request_error.RequestError("Not modified", status, { + response: { + url, + status, + headers, + data: await getResponseData(response) + }, + request: requestOptions + }); + } + if (status >= 400) { + const data = await getResponseData(response); + const error = new import_request_error.RequestError(toErrorMessage(data), status, { + response: { + url, + status, + headers, + data + }, + request: requestOptions + }); + throw error; + } + return parseSuccessResponseBody ? await getResponseData(response) : response.body; + }).then((data) => { + return { + status, + url, + headers, + data + }; + }).catch((error) => { + if (error instanceof import_request_error.RequestError) + throw error; + else if (error.name === "AbortError") + throw error; + let message = error.message; + if (error.name === "TypeError" && "cause" in error) { + if (error.cause instanceof Error) { + message = error.cause.message; + } else if (typeof error.cause === "string") { + message = error.cause; + } + } + throw new import_request_error.RequestError(message, 500, { + request: requestOptions + }); + }); +} +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); + if (/application\/json/.test(contentType)) { + return response.json(); + } + if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { + return response.text(); + } + return getBufferResponse(response); +} +function toErrorMessage(data) { + if (typeof data === "string") + return data; + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; + } + return data.message; + } + return `Unknown error: ${JSON.stringify(data)}`; +} + +// pkg/dist-src/with-defaults.js +function withDefaults(oldEndpoint, newDefaults) { + const endpoint2 = oldEndpoint.defaults(newDefaults); + const newApi = function(route, parameters) { + const endpointOptions = endpoint2.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint2.parse(endpointOptions)); + } + const request2 = (route2, parameters2) => { + return fetchWrapper( + endpoint2.parse(endpoint2.merge(route2, parameters2)) + ); + }; + Object.assign(request2, { + endpoint: endpoint2, + defaults: withDefaults.bind(null, endpoint2) + }); + return endpointOptions.request.hook(request2, endpointOptions); + }; + return Object.assign(newApi, { + endpoint: endpoint2, + defaults: withDefaults.bind(null, endpoint2) + }); +} + +// pkg/dist-src/index.js +var request = withDefaults(import_endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` + } +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + /***/ }), @@ -6261,2072 +119188,10 @@ function stringifyObject(object) { module.exports = {stringify: stringify}; -/***/ }), - -/***/ 9348: -/***/ ((module) => { - -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function (msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; - - -/***/ }), - -/***/ 194: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright 2011 Mark Cavage All rights reserved. - -var errors = __webpack_require__(9348); -var types = __webpack_require__(2473); - -var Reader = __webpack_require__(290); -var Writer = __webpack_require__(3200); - - -// --- Exports - -module.exports = { - - Reader: Reader, - - Writer: Writer - -}; - -for (var t in types) { - if (types.hasOwnProperty(t)) - module.exports[t] = types[t]; -} -for (var e in errors) { - if (errors.hasOwnProperty(e)) - module.exports[e] = errors[e]; -} - - -/***/ }), - -/***/ 290: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = __webpack_require__(2357); -var Buffer = __webpack_require__(5118).Buffer; - -var ASN1 = __webpack_require__(2473); -var errors = __webpack_require__(9348); - - -// --- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - - - -// --- API - -function Reader(data) { - if (!data || !Buffer.isBuffer(data)) - throw new TypeError('data must be a node Buffer'); - - this._buf = data; - this._size = data.length; - - // These hold the "current" state - this._len = 0; - this._offset = 0; -} - -Object.defineProperty(Reader.prototype, 'length', { - enumerable: true, - get: function () { return (this._len); } -}); - -Object.defineProperty(Reader.prototype, 'offset', { - enumerable: true, - get: function () { return (this._offset); } -}); - -Object.defineProperty(Reader.prototype, 'remain', { - get: function () { return (this._size - this._offset); } -}); - -Object.defineProperty(Reader.prototype, 'buffer', { - get: function () { return (this._buf.slice(this._offset)); } -}); - - -/** - * Reads a single byte and advances offset; you can pass in `true` to make this - * a "peek" operation (i.e., get the byte, but don't advance the offset). - * - * @param {Boolean} peek true means don't move offset. - * @return {Number} the next byte, null if not enough data. - */ -Reader.prototype.readByte = function (peek) { - if (this._size - this._offset < 1) - return null; - - var b = this._buf[this._offset] & 0xff; - - if (!peek) - this._offset += 1; - - return b; -}; - - -Reader.prototype.peek = function () { - return this.readByte(true); -}; - - -/** - * Reads a (potentially) variable length off the BER buffer. This call is - * not really meant to be called directly, as callers have to manipulate - * the internal buffer afterwards. - * - * As a result of this call, you can call `Reader.length`, until the - * next thing called that does a readLength. - * - * @return {Number} the amount of offset to advance the buffer. - * @throws {InvalidAsn1Error} on bad ASN.1 - */ -Reader.prototype.readLength = function (offset) { - if (offset === undefined) - offset = this._offset; - - if (offset >= this._size) - return null; - - var lenB = this._buf[offset++] & 0xff; - if (lenB === null) - return null; - - if ((lenB & 0x80) === 0x80) { - lenB &= 0x7f; - - if (lenB === 0) - throw newInvalidAsn1Error('Indefinite length not supported'); - - if (lenB > 4) - throw newInvalidAsn1Error('encoding too long'); - - if (this._size - offset < lenB) - return null; - - this._len = 0; - for (var i = 0; i < lenB; i++) - this._len = (this._len << 8) + (this._buf[offset++] & 0xff); - - } else { - // Wasn't a variable length - this._len = lenB; - } - - return offset; -}; - - -/** - * Parses the next sequence in this BER buffer. - * - * To get the length of the sequence, call `Reader.length`. - * - * @return {Number} the sequence's tag. - */ -Reader.prototype.readSequence = function (tag) { - var seq = this.peek(); - if (seq === null) - return null; - if (tag !== undefined && tag !== seq) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + seq.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - this._offset = o; - return seq; -}; - - -Reader.prototype.readInt = function () { - return this._readTag(ASN1.Integer); -}; - - -Reader.prototype.readBoolean = function () { - return (this._readTag(ASN1.Boolean) === 0 ? false : true); -}; - - -Reader.prototype.readEnumeration = function () { - return this._readTag(ASN1.Enumeration); -}; - - -Reader.prototype.readString = function (tag, retbuf) { - if (!tag) - tag = ASN1.OctetString; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - if (this.length === 0) - return retbuf ? Buffer.alloc(0) : ''; - - var str = this._buf.slice(this._offset, this._offset + this.length); - this._offset += this.length; - - return retbuf ? str : str.toString('utf8'); -}; - -Reader.prototype.readOID = function (tag) { - if (!tag) - tag = ASN1.OID; - - var b = this.readString(tag, true); - if (b === null) - return null; - - var values = []; - var value = 0; - - for (var i = 0; i < b.length; i++) { - var byte = b[i] & 0xff; - - value <<= 7; - value += byte & 0x7f; - if ((byte & 0x80) === 0) { - values.push(value); - value = 0; - } - } - - value = values.shift(); - values.unshift(value % 40); - values.unshift((value / 40) >> 0); - - return values.join('.'); -}; - - -Reader.prototype._readTag = function (tag) { - assert.ok(tag !== undefined); - - var b = this.peek(); - - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > 4) - throw newInvalidAsn1Error('Integer too long: ' + this.length); - - if (this.length > this._size - o) - return null; - this._offset = o; - - var fb = this._buf[this._offset]; - var value = 0; - - for (var i = 0; i < this.length; i++) { - value <<= 8; - value |= (this._buf[this._offset++] & 0xff); - } - - if ((fb & 0x80) === 0x80 && i !== 4) - value -= (1 << (i * 8)); - - return value >> 0; -}; - - - -// --- Exported API - -module.exports = Reader; - - -/***/ }), - -/***/ 2473: -/***/ ((module) => { - -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; - - -/***/ }), - -/***/ 3200: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = __webpack_require__(2357); -var Buffer = __webpack_require__(5118).Buffer; -var ASN1 = __webpack_require__(2473); -var errors = __webpack_require__(9348); - - -// --- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - -var DEFAULT_OPTS = { - size: 1024, - growthFactor: 8 -}; - - -// --- Helpers - -function merge(from, to) { - assert.ok(from); - assert.equal(typeof (from), 'object'); - assert.ok(to); - assert.equal(typeof (to), 'object'); - - var keys = Object.getOwnPropertyNames(from); - keys.forEach(function (key) { - if (to[key]) - return; - - var value = Object.getOwnPropertyDescriptor(from, key); - Object.defineProperty(to, key, value); - }); - - return to; -} - - - -// --- API - -function Writer(options) { - options = merge(DEFAULT_OPTS, options || {}); - - this._buf = Buffer.alloc(options.size || 1024); - this._size = this._buf.length; - this._offset = 0; - this._options = options; - - // A list of offsets in the buffer where we need to insert - // sequence tag/len pairs. - this._seq = []; -} - -Object.defineProperty(Writer.prototype, 'buffer', { - get: function () { - if (this._seq.length) - throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)'); - - return (this._buf.slice(0, this._offset)); - } -}); - -Writer.prototype.writeByte = function (b) { - if (typeof (b) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(1); - this._buf[this._offset++] = b; -}; - - -Writer.prototype.writeInt = function (i, tag) { - if (typeof (i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof (tag) !== 'number') - tag = ASN1.Integer; - - var sz = 4; - - while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) && - (sz > 1)) { - sz--; - i <<= 8; - } - - if (sz > 4) - throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff'); - - this._ensure(2 + sz); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = sz; - - while (sz-- > 0) { - this._buf[this._offset++] = ((i & 0xff000000) >>> 24); - i <<= 8; - } - -}; - - -Writer.prototype.writeNull = function () { - this.writeByte(ASN1.Null); - this.writeByte(0x00); -}; - - -Writer.prototype.writeEnumeration = function (i, tag) { - if (typeof (i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof (tag) !== 'number') - tag = ASN1.Enumeration; - - return this.writeInt(i, tag); -}; - - -Writer.prototype.writeBoolean = function (b, tag) { - if (typeof (b) !== 'boolean') - throw new TypeError('argument must be a Boolean'); - if (typeof (tag) !== 'number') - tag = ASN1.Boolean; - - this._ensure(3); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = 0x01; - this._buf[this._offset++] = b ? 0xff : 0x00; -}; - - -Writer.prototype.writeString = function (s, tag) { - if (typeof (s) !== 'string') - throw new TypeError('argument must be a string (was: ' + typeof (s) + ')'); - if (typeof (tag) !== 'number') - tag = ASN1.OctetString; - - var len = Buffer.byteLength(s); - this.writeByte(tag); - this.writeLength(len); - if (len) { - this._ensure(len); - this._buf.write(s, this._offset); - this._offset += len; - } -}; - - -Writer.prototype.writeBuffer = function (buf, tag) { - if (typeof (tag) !== 'number') - throw new TypeError('tag must be a number'); - if (!Buffer.isBuffer(buf)) - throw new TypeError('argument must be a buffer'); - - this.writeByte(tag); - this.writeLength(buf.length); - this._ensure(buf.length); - buf.copy(this._buf, this._offset, 0, buf.length); - this._offset += buf.length; -}; - - -Writer.prototype.writeStringArray = function (strings) { - if ((!strings instanceof Array)) - throw new TypeError('argument must be an Array[String]'); - - var self = this; - strings.forEach(function (s) { - self.writeString(s); - }); -}; - -// This is really to solve DER cases, but whatever for now -Writer.prototype.writeOID = function (s, tag) { - if (typeof (s) !== 'string') - throw new TypeError('argument must be a string'); - if (typeof (tag) !== 'number') - tag = ASN1.OID; - - if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) - throw new Error('argument is not a valid OID string'); - - function encodeOctet(bytes, octet) { - if (octet < 128) { - bytes.push(octet); - } else if (octet < 16384) { - bytes.push((octet >>> 7) | 0x80); - bytes.push(octet & 0x7F); - } else if (octet < 2097152) { - bytes.push((octet >>> 14) | 0x80); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else if (octet < 268435456) { - bytes.push((octet >>> 21) | 0x80); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else { - bytes.push(((octet >>> 28) | 0x80) & 0xFF); - bytes.push(((octet >>> 21) | 0x80) & 0xFF); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } - } - - var tmp = s.split('.'); - var bytes = []; - bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); - tmp.slice(2).forEach(function (b) { - encodeOctet(bytes, parseInt(b, 10)); - }); - - var self = this; - this._ensure(2 + bytes.length); - this.writeByte(tag); - this.writeLength(bytes.length); - bytes.forEach(function (b) { - self.writeByte(b); - }); -}; - - -Writer.prototype.writeLength = function (len) { - if (typeof (len) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(4); - - if (len <= 0x7f) { - this._buf[this._offset++] = len; - } else if (len <= 0xff) { - this._buf[this._offset++] = 0x81; - this._buf[this._offset++] = len; - } else if (len <= 0xffff) { - this._buf[this._offset++] = 0x82; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else if (len <= 0xffffff) { - this._buf[this._offset++] = 0x83; - this._buf[this._offset++] = len >> 16; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else { - throw newInvalidAsn1Error('Length too long (> 4 bytes)'); - } -}; - -Writer.prototype.startSequence = function (tag) { - if (typeof (tag) !== 'number') - tag = ASN1.Sequence | ASN1.Constructor; - - this.writeByte(tag); - this._seq.push(this._offset); - this._ensure(3); - this._offset += 3; -}; - - -Writer.prototype.endSequence = function () { - var seq = this._seq.pop(); - var start = seq + 3; - var len = this._offset - start; - - if (len <= 0x7f) { - this._shift(start, len, -2); - this._buf[seq] = len; - } else if (len <= 0xff) { - this._shift(start, len, -1); - this._buf[seq] = 0x81; - this._buf[seq + 1] = len; - } else if (len <= 0xffff) { - this._buf[seq] = 0x82; - this._buf[seq + 1] = len >> 8; - this._buf[seq + 2] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[seq] = 0x83; - this._buf[seq + 1] = len >> 16; - this._buf[seq + 2] = len >> 8; - this._buf[seq + 3] = len; - } else { - throw newInvalidAsn1Error('Sequence too long'); - } -}; - - -Writer.prototype._shift = function (start, len, shift) { - assert.ok(start !== undefined); - assert.ok(len !== undefined); - assert.ok(shift); - - this._buf.copy(this._buf, start + shift, start, start + len); - this._offset += shift; -}; - -Writer.prototype._ensure = function (len) { - assert.ok(len); - - if (this._size - this._offset < len) { - var sz = this._size * this._options.growthFactor; - if (sz - this._offset < len) - sz += len; - - var buf = Buffer.alloc(sz); - - this._buf.copy(buf, 0, 0, this._offset); - this._buf = buf; - this._size = sz; - } -}; - - - -// --- Exported API - -module.exports = Writer; - - -/***/ }), - -/***/ 970: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright 2011 Mark Cavage All rights reserved. - -// If you have no idea what ASN.1 or BER is, see this: -// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -var Ber = __webpack_require__(194); - - - -// --- Exported API - -module.exports = { - - Ber: Ber, - - BerReader: Ber.Reader, - - BerWriter: Ber.Writer - -}; - - -/***/ }), - -/***/ 6631: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright (c) 2012, Mark Cavage. All rights reserved. -// Copyright 2015 Joyent, Inc. - -var assert = __webpack_require__(2357); -var Stream = __webpack_require__(2413).Stream; -var util = __webpack_require__(1669); - - -///--- Globals - -/* JSSTYLED */ -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - -///--- Internal - -function _capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function _toss(name, expected, oper, arg, actual) { - throw new assert.AssertionError({ - message: util.format('%s (%s) is required', name, expected), - actual: (actual === undefined) ? typeof (arg) : actual(arg), - expected: expected, - operator: oper || '===', - stackStartFunction: _toss.caller - }); -} - -function _getClass(arg) { - return (Object.prototype.toString.call(arg).slice(8, -1)); -} - -function noop() { - // Why even bother with asserts? -} - - -///--- Exports - -var types = { - bool: { - check: function (arg) { return typeof (arg) === 'boolean'; } - }, - func: { - check: function (arg) { return typeof (arg) === 'function'; } - }, - string: { - check: function (arg) { return typeof (arg) === 'string'; } - }, - object: { - check: function (arg) { - return typeof (arg) === 'object' && arg !== null; - } - }, - number: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg); - } - }, - finite: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg); - } - }, - buffer: { - check: function (arg) { return Buffer.isBuffer(arg); }, - operator: 'Buffer.isBuffer' - }, - array: { - check: function (arg) { return Array.isArray(arg); }, - operator: 'Array.isArray' - }, - stream: { - check: function (arg) { return arg instanceof Stream; }, - operator: 'instanceof', - actual: _getClass - }, - date: { - check: function (arg) { return arg instanceof Date; }, - operator: 'instanceof', - actual: _getClass - }, - regexp: { - check: function (arg) { return arg instanceof RegExp; }, - operator: 'instanceof', - actual: _getClass - }, - uuid: { - check: function (arg) { - return typeof (arg) === 'string' && UUID_REGEXP.test(arg); - }, - operator: 'isUUID' - } -}; - -function _setExports(ndebug) { - var keys = Object.keys(types); - var out; - - /* re-export standard assert */ - if (process.env.NODE_NDEBUG) { - out = noop; - } else { - out = function (arg, msg) { - if (!arg) { - _toss(msg, 'true', arg); - } - }; - } - - /* standard checks */ - keys.forEach(function (k) { - if (ndebug) { - out[k] = noop; - return; - } - var type = types[k]; - out[k] = function (arg, msg) { - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* optional checks */ - keys.forEach(function (k) { - var name = 'optional' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* arrayOf checks */ - keys.forEach(function (k) { - var name = 'arrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* optionalArrayOf checks */ - keys.forEach(function (k) { - var name = 'optionalArrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* re-export built-in assertions */ - Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - out[k] = assert[k]; - return; - } - if (ndebug) { - out[k] = noop; - return; - } - out[k] = assert[k]; - }); - - /* export ourselves (for unit tests _only_) */ - out._setExports = _setExports; - - return out; -} - -module.exports = _setExports(process.env.NODE_NDEBUG); - - -/***/ }), - -/***/ 4812: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = -{ - parallel : __webpack_require__(8210), - serial : __webpack_require__(445), - serialOrdered : __webpack_require__(3578) -}; - - -/***/ }), - -/***/ 1700: -/***/ ((module) => { - -// API -module.exports = abort; - -/** - * Aborts leftover active jobs - * - * @param {object} state - current state object - */ -function abort(state) -{ - Object.keys(state.jobs).forEach(clean.bind(state)); - - // reset leftover jobs - state.jobs = {}; -} - -/** - * Cleans up leftover job by invoking abort function for the provided job id - * - * @this state - * @param {string|number} key - job id to abort - */ -function clean(key) -{ - if (typeof this.jobs[key] == 'function') - { - this.jobs[key](); - } -} - - -/***/ }), - -/***/ 2794: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var defer = __webpack_require__(5295); - -// API -module.exports = async; - -/** - * Runs provided callback asynchronously - * even if callback itself is not - * - * @param {function} callback - callback to invoke - * @returns {function} - augmented callback - */ -function async(callback) -{ - var isAsync = false; - - // check if async happened - defer(function() { isAsync = true; }); - - return function async_callback(err, result) - { - if (isAsync) - { - callback(err, result); - } - else - { - defer(function nextTick_callback() - { - callback(err, result); - }); - } - }; -} - - -/***/ }), - -/***/ 5295: -/***/ ((module) => { - -module.exports = defer; - -/** - * Runs provided function on next iteration of the event loop - * - * @param {function} fn - function to run - */ -function defer(fn) -{ - var nextTick = typeof setImmediate == 'function' - ? setImmediate - : ( - typeof process == 'object' && typeof process.nextTick == 'function' - ? process.nextTick - : null - ); - - if (nextTick) - { - nextTick(fn); - } - else - { - setTimeout(fn, 0); - } -} - - -/***/ }), - -/***/ 9023: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var async = __webpack_require__(2794) - , abort = __webpack_require__(1700) - ; - -// API -module.exports = iterate; - -/** - * Iterates over each job object - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {object} state - current job status - * @param {function} callback - invoked when all elements processed - */ -function iterate(list, iterator, state, callback) -{ - // store current index - var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - - state.jobs[key] = runJob(iterator, key, list[key], function(error, output) - { - // don't repeat yourself - // skip secondary callbacks - if (!(key in state.jobs)) - { - return; - } - - // clean up jobs - delete state.jobs[key]; - - if (error) - { - // don't process rest of the results - // stop still active jobs - // and reset the list - abort(state); - } - else - { - state.results[key] = output; - } - - // return salvaged results - callback(error, state.results); - }); -} - -/** - * Runs iterator over provided job element - * - * @param {function} iterator - iterator to invoke - * @param {string|number} key - key/index of the element in the list of jobs - * @param {mixed} item - job description - * @param {function} callback - invoked after iterator is done with the job - * @returns {function|mixed} - job abort function or something else - */ -function runJob(iterator, key, item, callback) -{ - var aborter; - - // allow shortcut if iterator expects only two arguments - if (iterator.length == 2) - { - aborter = iterator(item, async(callback)); - } - // otherwise go with full three arguments - else - { - aborter = iterator(item, key, async(callback)); - } - - return aborter; -} - - -/***/ }), - -/***/ 2474: -/***/ ((module) => { - -// API -module.exports = state; - -/** - * Creates initial state object - * for iteration over list - * - * @param {array|object} list - list to iterate over - * @param {function|null} sortMethod - function to use for keys sort, - * or `null` to keep them as is - * @returns {object} - initial state object - */ -function state(list, sortMethod) -{ - var isNamedList = !Array.isArray(list) - , initState = - { - index : 0, - keyedList: isNamedList || sortMethod ? Object.keys(list) : null, - jobs : {}, - results : isNamedList ? {} : [], - size : isNamedList ? Object.keys(list).length : list.length - } - ; - - if (sortMethod) - { - // sort array keys based on it's values - // sort object's keys just on own merit - initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) - { - return sortMethod(list[a], list[b]); - }); - } - - return initState; -} - - -/***/ }), - -/***/ 7942: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var abort = __webpack_require__(1700) - , async = __webpack_require__(2794) - ; - -// API -module.exports = terminator; - -/** - * Terminates jobs in the attached state context - * - * @this AsyncKitState# - * @param {function} callback - final callback to invoke after termination - */ -function terminator(callback) -{ - if (!Object.keys(this.jobs).length) - { - return; - } - - // fast forward iteration index - this.index = this.size; - - // abort jobs - abort(this); - - // send back results we have so far - async(callback)(null, this.results); -} - - -/***/ }), - -/***/ 8210: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var iterate = __webpack_require__(9023) - , initState = __webpack_require__(2474) - , terminator = __webpack_require__(7942) - ; - -// Public API -module.exports = parallel; - -/** - * Runs iterator over provided array elements in parallel - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function parallel(list, iterator, callback) -{ - var state = initState(list); - - while (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, function(error, result) - { - if (error) - { - callback(error, result); - return; - } - - // looks like it's the last one - if (Object.keys(state.jobs).length === 0) - { - callback(null, state.results); - return; - } - }); - - state.index++; - } - - return terminator.bind(state, callback); -} - - -/***/ }), - -/***/ 445: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var serialOrdered = __webpack_require__(3578); - -// Public API -module.exports = serial; - -/** - * Runs iterator over provided array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serial(list, iterator, callback) -{ - return serialOrdered(list, iterator, null, callback); -} - - -/***/ }), - -/***/ 3578: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var iterate = __webpack_require__(9023) - , initState = __webpack_require__(2474) - , terminator = __webpack_require__(7942) - ; - -// Public API -module.exports = serialOrdered; -// sorting helpers -module.exports.ascending = ascending; -module.exports.descending = descending; - -/** - * Runs iterator over provided sorted array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serialOrdered(list, iterator, sortMethod, callback) -{ - var state = initState(list, sortMethod); - - iterate(list, iterator, state, function iteratorHandler(error, result) - { - if (error) - { - callback(error, result); - return; - } - - state.index++; - - // are we there yet? - if (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, iteratorHandler); - return; - } - - // done here - callback(null, state.results); - }); - - return terminator.bind(state, callback); -} - -/* - * -- Sort methods - */ - -/** - * sort helper to sort array elements in ascending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function ascending(a, b) -{ - return a < b ? -1 : a > b ? 1 : 0; -} - -/** - * sort helper to sort array elements in descending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function descending(a, b) -{ - return -1 * ascending(a, b); -} - - -/***/ }), - -/***/ 6342: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - - -/*! - * Copyright 2010 LearnBoost - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Module dependencies. - */ - -var crypto = __webpack_require__(6417) - , parse = __webpack_require__(8835).parse - ; - -/** - * Valid keys. - */ - -var keys = - [ 'acl' - , 'location' - , 'logging' - , 'notification' - , 'partNumber' - , 'policy' - , 'requestPayment' - , 'torrent' - , 'uploadId' - , 'uploads' - , 'versionId' - , 'versioning' - , 'versions' - , 'website' - ] - -/** - * Return an "Authorization" header value with the given `options` - * in the form of "AWS :" - * - * @param {Object} options - * @return {String} - * @api private - */ - -function authorization (options) { - return 'AWS ' + options.key + ':' + sign(options) -} - -module.exports = authorization -module.exports.authorization = authorization - -/** - * Simple HMAC-SHA1 Wrapper - * - * @param {Object} options - * @return {String} - * @api private - */ - -function hmacSha1 (options) { - return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') -} - -module.exports.hmacSha1 = hmacSha1 - -/** - * Create a base64 sha1 HMAC for `options`. - * - * @param {Object} options - * @return {String} - * @api private - */ - -function sign (options) { - options.message = stringToSign(options) - return hmacSha1(options) -} -module.exports.sign = sign - -/** - * Create a base64 sha1 HMAC for `options`. - * - * Specifically to be used with S3 presigned URLs - * - * @param {Object} options - * @return {String} - * @api private - */ - -function signQuery (options) { - options.message = queryStringToSign(options) - return hmacSha1(options) -} -module.exports.signQuery= signQuery - -/** - * Return a string for sign() with the given `options`. - * - * Spec: - * - * \n - * \n - * \n - * \n - * [headers\n] - * - * - * @param {Object} options - * @return {String} - * @api private - */ - -function stringToSign (options) { - var headers = options.amazonHeaders || '' - if (headers) headers += '\n' - var r = - [ options.verb - , options.md5 - , options.contentType - , options.date ? options.date.toUTCString() : '' - , headers + options.resource - ] - return r.join('\n') -} -module.exports.stringToSign = stringToSign - -/** - * Return a string for sign() with the given `options`, but is meant exclusively - * for S3 presigned URLs - * - * Spec: - * - * \n - * - * - * @param {Object} options - * @return {String} - * @api private - */ - -function queryStringToSign (options){ - return 'GET\n\n\n' + options.date + '\n' + options.resource -} -module.exports.queryStringToSign = queryStringToSign - -/** - * Perform the following: - * - * - ignore non-amazon headers - * - lowercase fields - * - sort lexicographically - * - trim whitespace between ":" - * - join with newline - * - * @param {Object} headers - * @return {String} - * @api private - */ - -function canonicalizeHeaders (headers) { - var buf = [] - , fields = Object.keys(headers) - ; - for (var i = 0, len = fields.length; i < len; ++i) { - var field = fields[i] - , val = headers[field] - , field = field.toLowerCase() - ; - if (0 !== field.indexOf('x-amz')) continue - buf.push(field + ':' + val) - } - return buf.sort().join('\n') -} -module.exports.canonicalizeHeaders = canonicalizeHeaders - -/** - * Perform the following: - * - * - ignore non sub-resources - * - sort lexicographically - * - * @param {String} resource - * @return {String} - * @api private - */ - -function canonicalizeResource (resource) { - var url = parse(resource, true) - , path = url.pathname - , buf = [] - ; - - Object.keys(url.query).forEach(function(key){ - if (!~keys.indexOf(key)) return - var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) - buf.push(key + val) - }) - - return path + (buf.length ? '?' + buf.sort().join('&') : '') -} -module.exports.canonicalizeResource = canonicalizeResource - - -/***/ }), - -/***/ 6071: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var aws4 = exports, - url = __webpack_require__(8835), - querystring = __webpack_require__(1191), - crypto = __webpack_require__(6417), - lru = __webpack_require__(4225), - credentialsCache = lru(1000) - -// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html - -function hmac(key, string, encoding) { - return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding) -} - -function hash(string, encoding) { - return crypto.createHash('sha256').update(string, 'utf8').digest(encoding) -} - -// This function assumes the string has already been percent encoded -function encodeRfc3986(urlEncodedString) { - return urlEncodedString.replace(/[!'()*]/g, function(c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) -} - -function encodeRfc3986Full(str) { - return encodeRfc3986(encodeURIComponent(str)) -} - -// request: { path | body, [host], [method], [headers], [service], [region] } -// credentials: { accessKeyId, secretAccessKey, [sessionToken] } -function RequestSigner(request, credentials) { - - if (typeof request === 'string') request = url.parse(request) - - var headers = request.headers = (request.headers || {}), - hostParts = (!this.service || !this.region) && this.matchHost(request.hostname || request.host || headers.Host || headers.host) - - this.request = request - this.credentials = credentials || this.defaultCredentials() - - this.service = request.service || hostParts[0] || '' - this.region = request.region || hostParts[1] || 'us-east-1' - - // SES uses a different domain from the service name - if (this.service === 'email') this.service = 'ses' - - if (!request.method && request.body) - request.method = 'POST' - - if (!headers.Host && !headers.host) { - headers.Host = request.hostname || request.host || this.createHost() - - // If a port is specified explicitly, use it as is - if (request.port) - headers.Host += ':' + request.port - } - if (!request.hostname && !request.host) - request.hostname = headers.Host || headers.host - - this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT' -} - -RequestSigner.prototype.matchHost = function(host) { - var match = (host || '').match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com(\.cn)?$/) - var hostParts = (match || []).slice(1, 3) - - // ES's hostParts are sometimes the other way round, if the value that is expected - // to be region equals ‘es’ switch them back - // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com - if (hostParts[1] === 'es') - hostParts = hostParts.reverse() - - if (hostParts[1] == 's3') { - hostParts[0] = 's3' - hostParts[1] = 'us-east-1' - } else { - for (var i = 0; i < 2; i++) { - if (/^s3-/.test(hostParts[i])) { - hostParts[1] = hostParts[i].slice(3) - hostParts[0] = 's3' - break - } - } - } - - return hostParts -} - -// http://docs.aws.amazon.com/general/latest/gr/rande.html -RequestSigner.prototype.isSingleRegion = function() { - // Special case for S3 and SimpleDB in us-east-1 - if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true - - return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts'] - .indexOf(this.service) >= 0 -} - -RequestSigner.prototype.createHost = function() { - var region = this.isSingleRegion() ? '' : '.' + this.region, - subdomain = this.service === 'ses' ? 'email' : this.service - return subdomain + region + '.amazonaws.com' -} - -RequestSigner.prototype.prepareRequest = function() { - this.parsePath() - - var request = this.request, headers = request.headers, query - - if (request.signQuery) { - - this.parsedPath.query = query = this.parsedPath.query || {} - - if (this.credentials.sessionToken) - query['X-Amz-Security-Token'] = this.credentials.sessionToken - - if (this.service === 's3' && !query['X-Amz-Expires']) - query['X-Amz-Expires'] = 86400 - - if (query['X-Amz-Date']) - this.datetime = query['X-Amz-Date'] - else - query['X-Amz-Date'] = this.getDateTime() - - query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256' - query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString() - query['X-Amz-SignedHeaders'] = this.signedHeaders() - - } else { - - if (!request.doNotModifyHeaders && !this.isCodeCommitGit) { - if (request.body && !headers['Content-Type'] && !headers['content-type']) - headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8' - - if (request.body && !headers['Content-Length'] && !headers['content-length']) - headers['Content-Length'] = Buffer.byteLength(request.body) - - if (this.credentials.sessionToken && !headers['X-Amz-Security-Token'] && !headers['x-amz-security-token']) - headers['X-Amz-Security-Token'] = this.credentials.sessionToken - - if (this.service === 's3' && !headers['X-Amz-Content-Sha256'] && !headers['x-amz-content-sha256']) - headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex') - - if (headers['X-Amz-Date'] || headers['x-amz-date']) - this.datetime = headers['X-Amz-Date'] || headers['x-amz-date'] - else - headers['X-Amz-Date'] = this.getDateTime() - } - - delete headers.Authorization - delete headers.authorization - } -} - -RequestSigner.prototype.sign = function() { - if (!this.parsedPath) this.prepareRequest() - - if (this.request.signQuery) { - this.parsedPath.query['X-Amz-Signature'] = this.signature() - } else { - this.request.headers.Authorization = this.authHeader() - } - - this.request.path = this.formatPath() - - return this.request -} - -RequestSigner.prototype.getDateTime = function() { - if (!this.datetime) { - var headers = this.request.headers, - date = new Date(headers.Date || headers.date || new Date) - - this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, '') - - // Remove the trailing 'Z' on the timestamp string for CodeCommit git access - if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1) - } - return this.datetime -} - -RequestSigner.prototype.getDate = function() { - return this.getDateTime().substr(0, 8) -} - -RequestSigner.prototype.authHeader = function() { - return [ - 'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(), - 'SignedHeaders=' + this.signedHeaders(), - 'Signature=' + this.signature(), - ].join(', ') -} - -RequestSigner.prototype.signature = function() { - var date = this.getDate(), - cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(), - kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey) - if (!kCredentials) { - kDate = hmac('AWS4' + this.credentials.secretAccessKey, date) - kRegion = hmac(kDate, this.region) - kService = hmac(kRegion, this.service) - kCredentials = hmac(kService, 'aws4_request') - credentialsCache.set(cacheKey, kCredentials) - } - return hmac(kCredentials, this.stringToSign(), 'hex') -} - -RequestSigner.prototype.stringToSign = function() { - return [ - 'AWS4-HMAC-SHA256', - this.getDateTime(), - this.credentialString(), - hash(this.canonicalString(), 'hex'), - ].join('\n') -} - -RequestSigner.prototype.canonicalString = function() { - if (!this.parsedPath) this.prepareRequest() - - var pathStr = this.parsedPath.path, - query = this.parsedPath.query, - headers = this.request.headers, - queryStr = '', - normalizePath = this.service !== 's3', - decodePath = this.service === 's3' || this.request.doNotEncodePath, - decodeSlashesInPath = this.service === 's3', - firstValOnly = this.service === 's3', - bodyHash - - if (this.service === 's3' && this.request.signQuery) { - bodyHash = 'UNSIGNED-PAYLOAD' - } else if (this.isCodeCommitGit) { - bodyHash = '' - } else { - bodyHash = headers['X-Amz-Content-Sha256'] || headers['x-amz-content-sha256'] || - hash(this.request.body || '', 'hex') - } - - if (query) { - var reducedQuery = Object.keys(query).reduce(function(obj, key) { - if (!key) return obj - obj[encodeRfc3986Full(key)] = !Array.isArray(query[key]) ? query[key] : - (firstValOnly ? query[key][0] : query[key]) - return obj - }, {}) - var encodedQueryPieces = [] - Object.keys(reducedQuery).sort().forEach(function(key) { - if (!Array.isArray(reducedQuery[key])) { - encodedQueryPieces.push(key + '=' + encodeRfc3986Full(reducedQuery[key])) - } else { - reducedQuery[key].map(encodeRfc3986Full).sort() - .forEach(function(val) { encodedQueryPieces.push(key + '=' + val) }) - } - }) - queryStr = encodedQueryPieces.join('&') - } - if (pathStr !== '/') { - if (normalizePath) pathStr = pathStr.replace(/\/{2,}/g, '/') - pathStr = pathStr.split('/').reduce(function(path, piece) { - if (normalizePath && piece === '..') { - path.pop() - } else if (!normalizePath || piece !== '.') { - if (decodePath) piece = decodeURIComponent(piece.replace(/\+/g, ' ')) - path.push(encodeRfc3986Full(piece)) - } - return path - }, []).join('/') - if (pathStr[0] !== '/') pathStr = '/' + pathStr - if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/') - } - - return [ - this.request.method || 'GET', - pathStr, - queryStr, - this.canonicalHeaders() + '\n', - this.signedHeaders(), - bodyHash, - ].join('\n') -} - -RequestSigner.prototype.canonicalHeaders = function() { - var headers = this.request.headers - function trimAll(header) { - return header.toString().trim().replace(/\s+/g, ' ') - } - return Object.keys(headers) - .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 }) - .map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) }) - .join('\n') -} - -RequestSigner.prototype.signedHeaders = function() { - return Object.keys(this.request.headers) - .map(function(key) { return key.toLowerCase() }) - .sort() - .join(';') -} - -RequestSigner.prototype.credentialString = function() { - return [ - this.getDate(), - this.region, - this.service, - 'aws4_request', - ].join('/') -} - -RequestSigner.prototype.defaultCredentials = function() { - var env = process.env - return { - accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY, - secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY, - sessionToken: env.AWS_SESSION_TOKEN, - } -} - -RequestSigner.prototype.parsePath = function() { - var path = this.request.path || '/' - - // S3 doesn't always encode characters > 127 correctly and - // all services don't encode characters > 255 correctly - // So if there are non-reserved chars (and it's not already all % encoded), just encode them all - if (/[^0-9A-Za-z;,/?:@&=+$\-_.!~*'()#%]/.test(path)) { - path = encodeURI(decodeURI(path)) - } - - var queryIx = path.indexOf('?'), - query = null - - if (queryIx >= 0) { - query = querystring.parse(path.slice(queryIx + 1)) - path = path.slice(0, queryIx) - } - - this.parsedPath = { - path: path, - query: query, - } -} - -RequestSigner.prototype.formatPath = function() { - var path = this.parsedPath.path, - query = this.parsedPath.query - - if (!query) return path - - // Services don't support empty query string keys - if (query[''] != null) delete query[''] - - return path + '?' + encodeRfc3986(querystring.stringify(query)) -} - -aws4.RequestSigner = RequestSigner - -aws4.sign = function(request, credentials) { - return new RequestSigner(request, credentials).sign() -} - - -/***/ }), - -/***/ 4225: -/***/ ((module) => { - -module.exports = function(size) { - return new LruCache(size) -} - -function LruCache(size) { - this.capacity = size | 0 - this.map = Object.create(null) - this.list = new DoublyLinkedList() -} - -LruCache.prototype.get = function(key) { - var node = this.map[key] - if (node == null) return undefined - this.used(node) - return node.val -} - -LruCache.prototype.set = function(key, val) { - var node = this.map[key] - if (node != null) { - node.val = val - } else { - if (!this.capacity) this.prune() - if (!this.capacity) return false - node = new DoublyLinkedNode(key, val) - this.map[key] = node - this.capacity-- - } - this.used(node) - return true -} - -LruCache.prototype.used = function(node) { - this.list.moveToFront(node) -} - -LruCache.prototype.prune = function() { - var node = this.list.pop() - if (node != null) { - delete this.map[node.key] - this.capacity++ - } -} - - -function DoublyLinkedList() { - this.firstNode = null - this.lastNode = null -} - -DoublyLinkedList.prototype.moveToFront = function(node) { - if (this.firstNode == node) return - - this.remove(node) - - if (this.firstNode == null) { - this.firstNode = node - this.lastNode = node - node.prev = null - node.next = null - } else { - node.prev = null - node.next = this.firstNode - node.next.prev = node - this.firstNode = node - } -} - -DoublyLinkedList.prototype.pop = function() { - var lastNode = this.lastNode - if (lastNode != null) { - this.remove(lastNode) - } - return lastNode -} - -DoublyLinkedList.prototype.remove = function(node) { - if (this.firstNode == node) { - this.firstNode = node.next - } else if (node.prev != null) { - node.prev.next = node.next - } - if (this.lastNode == node) { - this.lastNode = node.prev - } else if (node.next != null) { - node.next.prev = node.prev - } -} - - -function DoublyLinkedNode(key, val) { - this.key = key - this.val = val - this.prev = null - this.next = null -} - - /***/ }), /***/ 1203: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ ((module) => { "use strict"; @@ -8335,8 +119200,6 @@ function DoublyLinkedNode(key, val) { // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp) // Distributed under the MIT software license, see the accompanying // file LICENSE or http://www.opensource.org/licenses/mit-license.php. -// @ts-ignore -var _Buffer = __webpack_require__(1867).Buffer function base (ALPHABET) { if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') } var BASE_MAP = new Uint8Array(256) @@ -8354,8 +119217,13 @@ function base (ALPHABET) { var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up function encode (source) { - if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) } - if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') } + if (source instanceof Uint8Array) { + } else if (ArrayBuffer.isView(source)) { + source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength) + } else if (Array.isArray(source)) { + source = Uint8Array.from(source) + } + if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') } if (source.length === 0) { return '' } // Skip & count leading zeroes. var zeroes = 0 @@ -8395,10 +119263,8 @@ function base (ALPHABET) { } function decodeUnsafe (source) { if (typeof source !== 'string') { throw new TypeError('Expected String') } - if (source.length === 0) { return _Buffer.alloc(0) } + if (source.length === 0) { return new Uint8Array() } var psz = 0 - // Skip leading spaces. - if (source[psz] === ' ') { return } // Skip and count leading '1's. var zeroes = 0 var length = 0 @@ -8425,15 +119291,12 @@ function base (ALPHABET) { length = i psz++ } - // Skip trailing spaces. - if (source[psz] === ' ') { return } // Skip leading zeroes in b256. var it4 = size - length while (it4 !== size && b256[it4] === 0) { it4++ } - var vch = _Buffer.allocUnsafe(zeroes + (size - it4)) - vch.fill(0x00, 0, zeroes) + var vch = new Uint8Array(zeroes + (size - it4)) var j = zeroes while (it4 !== size) { vch[j++] = b256[it4++] @@ -8456,868 +119319,196 @@ module.exports = base /***/ }), -/***/ 5447: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ 3682: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var register = __nccwpck_require__(4670); +var addHook = __nccwpck_require__(5549); +var removeHook = __nccwpck_require__(6819); +// bind with array of arguments: https://stackoverflow.com/a/21792913 +var bind = Function.bind; +var bindable = bind.bind(bind); -var crypto_hash_sha512 = __webpack_require__(8729).lowlevel.crypto_hash; +function bindApi(hook, state, name) { + var removeHookRef = bindable(removeHook, null).apply( + null, + name ? [state, name] : [state] + ); + hook.api = { remove: removeHookRef }; + hook.remove = removeHookRef; + ["before", "error", "after", "wrap"].forEach(function (kind) { + var args = name ? [state, kind, name] : [state, kind]; + hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); + }); +} -/* - * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a - * result, it retains the original copyright and license. The two files are - * under slightly different (but compatible) licenses, and are here combined in - * one file. - * - * Credit for the actual porting work goes to: - * Devi Mandiri - */ +function HookSingular() { + var singularHookName = "h"; + var singularHookState = { + registry: {}, + }; + var singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} -/* - * The Blowfish portions are under the following license: - * - * Blowfish block cipher for OpenBSD - * Copyright 1997 Niels Provos - * All rights reserved. - * - * Implementation advice by David Mazieres . - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ +function HookCollection() { + var state = { + registry: {}, + }; -/* - * The bcrypt_pbkdf portions are under the following license: - * - * Copyright (c) 2013 Ted Unangst - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ + var hook = register.bind(null, state); + bindApi(hook, state); -/* - * Performance improvements (Javascript-specific): - * - * Copyright 2016, Joyent Inc - * Author: Alex Wilson - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ + return hook; +} -// Ported from OpenBSD bcrypt_pbkdf.c v1.9 - -var BLF_J = 0; - -var Blowfish = function() { - this.S = [ - new Uint32Array([ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, - 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, - 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, - 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, - 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, - 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, - 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, - 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, - 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, - 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, - 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, - 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, - 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, - 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, - 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, - 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, - 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, - 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, - 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, - 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, - 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, - 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, - 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, - 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, - 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, - 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, - 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, - 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, - 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, - 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, - 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, - 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, - 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, - 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, - 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, - 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, - 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, - 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, - 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, - 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, - 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, - 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, - 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, - 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, - 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, - 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, - 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, - 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, - 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, - 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, - 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, - 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, - 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, - 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]), - new Uint32Array([ - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, - 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, - 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, - 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, - 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, - 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, - 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, - 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, - 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, - 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, - 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, - 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, - 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, - 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, - 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, - 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, - 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, - 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, - 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, - 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, - 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, - 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, - 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, - 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, - 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, - 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, - 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, - 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, - 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, - 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, - 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, - 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, - 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, - 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, - 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, - 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, - 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, - 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, - 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, - 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, - 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, - 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, - 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, - 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, - 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, - 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, - 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, - 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, - 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, - 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, - 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, - 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, - 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, - 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]), - new Uint32Array([ - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, - 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, - 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, - 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, - 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, - 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, - 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, - 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, - 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, - 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, - 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, - 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, - 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, - 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, - 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, - 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, - 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, - 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, - 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, - 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, - 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, - 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, - 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, - 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, - 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, - 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, - 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, - 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, - 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, - 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, - 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, - 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, - 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, - 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, - 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, - 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, - 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, - 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, - 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, - 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, - 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, - 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, - 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, - 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, - 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, - 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, - 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, - 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, - 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, - 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, - 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, - 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, - 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, - 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]), - new Uint32Array([ - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, - 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, - 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, - 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, - 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, - 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, - 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, - 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, - 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, - 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, - 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, - 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, - 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, - 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, - 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, - 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, - 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, - 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, - 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, - 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, - 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, - 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, - 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, - 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, - 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, - 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, - 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, - 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, - 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, - 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, - 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, - 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, - 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, - 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, - 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, - 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, - 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, - 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, - 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, - 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, - 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, - 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, - 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, - 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, - 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, - 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, - 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, - 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, - 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, - 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, - 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, - 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, - 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, - 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6]) - ]; - this.P = new Uint32Array([ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, - 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, - 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, - 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, - 0x9216d5d9, 0x8979fb1b]); -}; - -function F(S, x8, i) { - return (((S[0][x8[i+3]] + - S[1][x8[i+2]]) ^ - S[2][x8[i+1]]) + - S[3][x8[i]]); -}; - -Blowfish.prototype.encipher = function(x, x8) { - if (x8 === undefined) { - x8 = new Uint8Array(x.buffer); - if (x.byteOffset !== 0) - x8 = x8.subarray(x.byteOffset); +var collectionHookDeprecationMessageDisplayed = false; +function Hook() { + if (!collectionHookDeprecationMessageDisplayed) { + console.warn( + '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4' + ); + collectionHookDeprecationMessageDisplayed = true; } - x[0] ^= this.P[0]; - for (var i = 1; i < 16; i += 2) { - x[1] ^= F(this.S, x8, 0) ^ this.P[i]; - x[0] ^= F(this.S, x8, 4) ^ this.P[i+1]; - } - var t = x[0]; - x[0] = x[1] ^ this.P[17]; - x[1] = t; -}; + return HookCollection(); +} -Blowfish.prototype.decipher = function(x) { - var x8 = new Uint8Array(x.buffer); - if (x.byteOffset !== 0) - x8 = x8.subarray(x.byteOffset); - x[0] ^= this.P[17]; - for (var i = 16; i > 0; i -= 2) { - x[1] ^= F(this.S, x8, 0) ^ this.P[i]; - x[0] ^= F(this.S, x8, 4) ^ this.P[i-1]; - } - var t = x[0]; - x[0] = x[1] ^ this.P[0]; - x[1] = t; -}; +Hook.Singular = HookSingular.bind(); +Hook.Collection = HookCollection.bind(); -function stream2word(data, databytes){ - var i, temp = 0; - for (i = 0; i < 4; i++, BLF_J++) { - if (BLF_J >= databytes) BLF_J = 0; - temp = (temp << 8) | data[BLF_J]; - } - return temp; -}; +module.exports = Hook; +// expose constructors as a named property for TypeScript +module.exports.Hook = Hook; +module.exports.Singular = Hook.Singular; +module.exports.Collection = Hook.Collection; -Blowfish.prototype.expand0state = function(key, keybytes) { - var d = new Uint32Array(2), i, k; - var d8 = new Uint8Array(d.buffer); - for (i = 0, BLF_J = 0; i < 18; i++) { - this.P[i] ^= stream2word(key, keybytes); - } - BLF_J = 0; +/***/ }), - for (i = 0; i < 18; i += 2) { - this.encipher(d, d8); - this.P[i] = d[0]; - this.P[i+1] = d[1]; +/***/ 5549: +/***/ ((module) => { + +module.exports = addHook; + +function addHook(state, kind, name, hook) { + var orig = hook; + if (!state.registry[name]) { + state.registry[name] = []; } - for (i = 0; i < 4; i++) { - for (k = 0; k < 256; k += 2) { - this.encipher(d, d8); - this.S[i][k] = d[0]; - this.S[i][k+1] = d[1]; - } - } -}; - -Blowfish.prototype.expandstate = function(data, databytes, key, keybytes) { - var d = new Uint32Array(2), i, k; - - for (i = 0, BLF_J = 0; i < 18; i++) { - this.P[i] ^= stream2word(key, keybytes); + if (kind === "before") { + hook = function (method, options) { + return Promise.resolve() + .then(orig.bind(null, options)) + .then(method.bind(null, options)); + }; } - for (i = 0, BLF_J = 0; i < 18; i += 2) { - d[0] ^= stream2word(data, databytes); - d[1] ^= stream2word(data, databytes); - this.encipher(d); - this.P[i] = d[0]; - this.P[i+1] = d[1]; + if (kind === "after") { + hook = function (method, options) { + var result; + return Promise.resolve() + .then(method.bind(null, options)) + .then(function (result_) { + result = result_; + return orig(result, options); + }) + .then(function () { + return result; + }); + }; } - for (i = 0; i < 4; i++) { - for (k = 0; k < 256; k += 2) { - d[0] ^= stream2word(data, databytes); - d[1] ^= stream2word(data, databytes); - this.encipher(d); - this.S[i][k] = d[0]; - this.S[i][k+1] = d[1]; - } - } - BLF_J = 0; -}; - -Blowfish.prototype.enc = function(data, blocks) { - for (var i = 0; i < blocks; i++) { - this.encipher(data.subarray(i*2)); - } -}; - -Blowfish.prototype.dec = function(data, blocks) { - for (var i = 0; i < blocks; i++) { - this.decipher(data.subarray(i*2)); - } -}; - -var BCRYPT_BLOCKS = 8, - BCRYPT_HASHSIZE = 32; - -function bcrypt_hash(sha2pass, sha2salt, out) { - var state = new Blowfish(), - cdata = new Uint32Array(BCRYPT_BLOCKS), i, - ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105, - 99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109, - 105,116,101]); //"OxychromaticBlowfishSwatDynamite" - - state.expandstate(sha2salt, 64, sha2pass, 64); - for (i = 0; i < 64; i++) { - state.expand0state(sha2salt, 64); - state.expand0state(sha2pass, 64); + if (kind === "error") { + hook = function (method, options) { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(function (error) { + return orig(error, options); + }); + }; } - for (i = 0; i < BCRYPT_BLOCKS; i++) - cdata[i] = stream2word(ciphertext, ciphertext.byteLength); - for (i = 0; i < 64; i++) - state.enc(cdata, cdata.byteLength / 8); + state.registry[name].push({ + hook: hook, + orig: orig, + }); +} - for (i = 0; i < BCRYPT_BLOCKS; i++) { - out[4*i+3] = cdata[i] >>> 24; - out[4*i+2] = cdata[i] >>> 16; - out[4*i+1] = cdata[i] >>> 8; - out[4*i+0] = cdata[i]; + +/***/ }), + +/***/ 4670: +/***/ ((module) => { + +module.exports = register; + +function register(state, name, method, options) { + if (typeof method !== "function") { + throw new Error("method for before hook must be a function"); } -}; -function bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) { - var sha2pass = new Uint8Array(64), - sha2salt = new Uint8Array(64), - out = new Uint8Array(BCRYPT_HASHSIZE), - tmpout = new Uint8Array(BCRYPT_HASHSIZE), - countsalt = new Uint8Array(saltlen+4), - i, j, amt, stride, dest, count, - origkeylen = keylen; + if (!options) { + options = {}; + } - if (rounds < 1) - return -1; - if (passlen === 0 || saltlen === 0 || keylen === 0 || - keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20)) - return -1; + if (Array.isArray(name)) { + return name.reverse().reduce(function (callback, name) { + return register.bind(null, state, name, callback, options); + }, method)(); + } - stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength); - amt = Math.floor((keylen + stride - 1) / stride); - - for (i = 0; i < saltlen; i++) - countsalt[i] = salt[i]; - - crypto_hash_sha512(sha2pass, pass, passlen); - - for (count = 1; keylen > 0; count++) { - countsalt[saltlen+0] = count >>> 24; - countsalt[saltlen+1] = count >>> 16; - countsalt[saltlen+2] = count >>> 8; - countsalt[saltlen+3] = count; - - crypto_hash_sha512(sha2salt, countsalt, saltlen + 4); - bcrypt_hash(sha2pass, sha2salt, tmpout); - for (i = out.byteLength; i--;) - out[i] = tmpout[i]; - - for (i = 1; i < rounds; i++) { - crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength); - bcrypt_hash(sha2pass, sha2salt, tmpout); - for (j = 0; j < out.byteLength; j++) - out[j] ^= tmpout[j]; + return Promise.resolve().then(function () { + if (!state.registry[name]) { + return method(options); } - amt = Math.min(amt, keylen); - for (i = 0; i < amt; i++) { - dest = i * stride + (count - 1); - if (dest >= origkeylen) - break; - key[dest] = out[i]; - } - keylen -= i; + return state.registry[name].reduce(function (method, registered) { + return registered.hook.bind(null, method, options); + }, method)(); + }); +} + + +/***/ }), + +/***/ 6819: +/***/ ((module) => { + +module.exports = removeHook; + +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; } - return 0; -}; + var index = state.registry[name] + .map(function (registered) { + return registered.orig; + }) + .indexOf(method); -module.exports = { - BLOCKS: BCRYPT_BLOCKS, - HASHSIZE: BCRYPT_HASHSIZE, - hash: bcrypt_hash, - pbkdf: bcrypt_pbkdf -}; + if (index === -1) { + return; + } + + state.registry[name].splice(index, 1); +} /***/ }), /***/ 830: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var basex = __webpack_require__(1203) -var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' +const basex = __nccwpck_require__(1203) +const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' module.exports = basex(ALPHABET) -/***/ }), - -/***/ 5684: -/***/ ((module) => { - -function Caseless (dict) { - this.dict = dict || {} -} -Caseless.prototype.set = function (name, value, clobber) { - if (typeof name === 'object') { - for (var i in name) { - this.set(i, name[i], value) - } - } else { - if (typeof clobber === 'undefined') clobber = true - var has = this.has(name) - - if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value - else this.dict[has || name] = value - return has - } -} -Caseless.prototype.has = function (name) { - var keys = Object.keys(this.dict) - , name = name.toLowerCase() - ; - for (var i=0;i { - -var util = __webpack_require__(1669); -var Stream = __webpack_require__(2413).Stream; -var DelayedStream = __webpack_require__(8611); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; - this._insideLoop = false; - this._pendingNext = false; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - - if (this._insideLoop) { - this._pendingNext = true; - return; // defer call - } - - this._insideLoop = true; - try { - do { - this._pendingNext = false; - this._realGetNext(); - } while (this._pendingNext); - } finally { - this._insideLoop = false; - } -}; - -CombinedStream.prototype._realGetNext = function() { - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; - - /***/ }), /***/ 9915: @@ -9346,8 +119537,8 @@ CombinedStream.prototype._emitError = function(err) { * obs-text = %x80-FF * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) */ -var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g -var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ +var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex +var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ // eslint-disable-line no-control-regex var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ /** @@ -9356,7 +119547,7 @@ var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) * obs-text = %x80-FF */ -var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g +var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g // eslint-disable-line no-control-regex /** * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6 @@ -9445,7 +119636,7 @@ function parse (string) { var index = header.indexOf(';') var type = index !== -1 - ? header.substr(0, index).trim() + ? header.slice(0, index).trim() : header.trim() if (!TYPE_REGEXP.test(type)) { @@ -9471,11 +119662,14 @@ function parse (string) { key = match[1].toLowerCase() value = match[2] - if (value[0] === '"') { - // remove quotes and escapes - value = value - .substr(1, value.length - 2) - .replace(QESC_REGEXP, '$1') + if (value.charCodeAt(0) === 0x22 /* " */) { + // remove quotes + value = value.slice(1, -1) + + // remove escapes + if (value.indexOf('\\') !== -1) { + value = value.replace(QESC_REGEXP, '$1') + } } obj.parameters[key] = value @@ -9550,6531 +119744,1143 @@ function ContentType (type) { /***/ }), -/***/ 5898: +/***/ 8932: /***/ ((__unused_webpack_module, exports) => { -var __webpack_unused_export__; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. +"use strict"; -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); +Object.defineProperty(exports, "__esModule", ({ value: true })); + +class Deprecation extends Error { + constructor(message) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = 'Deprecation'; } - return objectToString(arg) === '[object Array]'; -} -__webpack_unused_export__ = isArray; -function isBoolean(arg) { - return typeof arg === 'boolean'; } -__webpack_unused_export__ = isBoolean; -function isNull(arg) { - return arg === null; -} -__webpack_unused_export__ = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -__webpack_unused_export__ = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -__webpack_unused_export__ = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -__webpack_unused_export__ = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -__webpack_unused_export__ = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -__webpack_unused_export__ = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -__webpack_unused_export__ = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -__webpack_unused_export__ = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -__webpack_unused_export__ = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.VZ = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -__webpack_unused_export__ = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -__webpack_unused_export__ = isPrimitive; - -__webpack_unused_export__ = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} +exports.Deprecation = Deprecation; /***/ }), -/***/ 8611: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ 5107: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { -var Stream = __webpack_require__(2413).Stream; -var util = __webpack_require__(1669); +"use strict"; -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; }); - -DelayedStream.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; }; - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; }; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; - - -/***/ }), - -/***/ 9865: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var crypto = __webpack_require__(6417); -var BigInteger = __webpack_require__(5587).BigInteger; -var ECPointFp = __webpack_require__(3943).ECPointFp; -var Buffer = __webpack_require__(5118).Buffer; -exports.ECCurves = __webpack_require__(1452); - -// zero prepad -function unstupid(hex,len) -{ - return (hex.length >= len) ? hex : unstupid("0"+hex,len); +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0; +var decode_data_html_js_1 = __importDefault(__nccwpck_require__(6970)); +exports.htmlDecodeTree = decode_data_html_js_1.default; +var decode_data_xml_js_1 = __importDefault(__nccwpck_require__(7359)); +exports.xmlDecodeTree = decode_data_xml_js_1.default; +var decode_codepoint_js_1 = __importStar(__nccwpck_require__(1227)); +exports.decodeCodePoint = decode_codepoint_js_1.default; +var decode_codepoint_js_2 = __nccwpck_require__(1227); +Object.defineProperty(exports, "replaceCodePoint", ({ enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } })); +Object.defineProperty(exports, "fromCodePoint", ({ enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } })); +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +var TO_LOWER_BIT = 32; +var BinTrieFlags; +(function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {})); +function isNumber(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; } - -exports.ECKey = function(curve, key, isPublic) -{ - var priv; - var c = curve(); - var n = c.getN(); - var bytes = Math.floor(n.bitLength()/8); - - if(key) - { - if(isPublic) - { - var curve = c.getCurve(); -// var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format -// var y = key.slice(bytes+1); -// this.P = new ECPointFp(curve, -// curve.fromBigInteger(new BigInteger(x.toString("hex"), 16)), -// curve.fromBigInteger(new BigInteger(y.toString("hex"), 16))); - this.P = curve.decodePointHex(key.toString("hex")); - }else{ - if(key.length != bytes) return false; - priv = new BigInteger(key.toString("hex"), 16); - } - }else{ - var n1 = n.subtract(BigInteger.ONE); - var r = new BigInteger(crypto.randomBytes(n.bitLength())); - priv = r.mod(n1).add(BigInteger.ONE); - this.P = c.getG().multiply(priv); - } - if(this.P) - { -// var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2); -// this.PublicKey = Buffer.from("04"+pubhex,"hex"); - this.PublicKey = Buffer.from(c.getCurve().encodeCompressedPointHex(this.P),"hex"); - } - if(priv) - { - this.PrivateKey = Buffer.from(unstupid(priv.toString(16),bytes*2),"hex"); - this.deriveSharedSecret = function(key) - { - if(!key || !key.P) return false; - var S = key.P.multiply(priv); - return Buffer.from(unstupid(S.getX().toBigInteger().toString(16),bytes*2),"hex"); - } - } +function isHexadecimalCharacter(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)); } - - - -/***/ }), - -/***/ 3943: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Basic Javascript Elliptic Curve implementation -// Ported loosely from BouncyCastle's Java EC code -// Only Fp curves implemented for now - -// Requires jsbn.js and jsbn2.js -var BigInteger = __webpack_require__(5587).BigInteger -var Barrett = BigInteger.prototype.Barrett - -// ---------------- -// ECFieldElementFp - -// constructor -function ECFieldElementFp(q,x) { - this.x = x; - // TODO if(x.compareTo(q) >= 0) error - this.q = q; +function isAsciiAlphaNumeric(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber(code)); } - -function feFpEquals(other) { - if(other == this) return true; - return (this.q.equals(other.q) && this.x.equals(other.x)); -} - -function feFpToBigInteger() { - return this.x; -} - -function feFpNegate() { - return new ECFieldElementFp(this.q, this.x.negate().mod(this.q)); -} - -function feFpAdd(b) { - return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q)); -} - -function feFpSubtract(b) { - return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q)); -} - -function feFpMultiply(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q)); -} - -function feFpSquare() { - return new ECFieldElementFp(this.q, this.x.square().mod(this.q)); -} - -function feFpDivide(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q)); -} - -ECFieldElementFp.prototype.equals = feFpEquals; -ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger; -ECFieldElementFp.prototype.negate = feFpNegate; -ECFieldElementFp.prototype.add = feFpAdd; -ECFieldElementFp.prototype.subtract = feFpSubtract; -ECFieldElementFp.prototype.multiply = feFpMultiply; -ECFieldElementFp.prototype.square = feFpSquare; -ECFieldElementFp.prototype.divide = feFpDivide; - -// ---------------- -// ECPointFp - -// constructor -function ECPointFp(curve,x,y,z) { - this.curve = curve; - this.x = x; - this.y = y; - // Projective coordinates: either zinv == null or z * zinv == 1 - // z and zinv are just BigIntegers, not fieldElements - if(z == null) { - this.z = BigInteger.ONE; - } - else { - this.z = z; - } - this.zinv = null; - //TODO: compression flag -} - -function pointFpGetX() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - var r = this.x.toBigInteger().multiply(this.zinv); - this.curve.reduce(r); - return this.curve.fromBigInteger(r); -} - -function pointFpGetY() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - var r = this.y.toBigInteger().multiply(this.zinv); - this.curve.reduce(r); - return this.curve.fromBigInteger(r); -} - -function pointFpEquals(other) { - if(other == this) return true; - if(this.isInfinity()) return other.isInfinity(); - if(other.isInfinity()) return this.isInfinity(); - var u, v; - // u = Y2 * Z1 - Y1 * Z2 - u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q); - if(!u.equals(BigInteger.ZERO)) return false; - // v = X2 * Z1 - X1 * Z2 - v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q); - return v.equals(BigInteger.ZERO); -} - -function pointFpIsInfinity() { - if((this.x == null) && (this.y == null)) return true; - return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO); -} - -function pointFpNegate() { - return new ECPointFp(this.curve, this.x, this.y.negate(), this.z); -} - -function pointFpAdd(b) { - if(this.isInfinity()) return b; - if(b.isInfinity()) return this; - - // u = Y2 * Z1 - Y1 * Z2 - var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q); - // v = X2 * Z1 - X1 * Z2 - var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q); - - if(BigInteger.ZERO.equals(v)) { - if(BigInteger.ZERO.equals(u)) { - return this.twice(); // this == b, so double - } - return this.curve.getInfinity(); // this = -b, so infinity - } - - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - var x2 = b.x.toBigInteger(); - var y2 = b.y.toBigInteger(); - - var v2 = v.square(); - var v3 = v2.multiply(v); - var x1v2 = x1.multiply(v2); - var zu2 = u.square().multiply(this.z); - - // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) - var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q); - // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 - var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q); - // z3 = v^3 * z1 * z2 - var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -function pointFpTwice() { - if(this.isInfinity()) return this; - if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity(); - - // TODO: optimized handling of constants - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - - var y1z1 = y1.multiply(this.z); - var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q); - var a = this.curve.a.toBigInteger(); - - // w = 3 * x1^2 + a * z1^2 - var w = x1.square().multiply(THREE); - if(!BigInteger.ZERO.equals(a)) { - w = w.add(this.z.square().multiply(a)); - } - w = w.mod(this.curve.q); - //this.curve.reduce(w); - // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) - var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q); - // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 - var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q); - // z3 = 8 * (y1 * z1)^3 - var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -// Simple NAF (Non-Adjacent Form) multiplication algorithm -// TODO: modularize the multiplication algorithm -function pointFpMultiply(k) { - if(this.isInfinity()) return this; - if(k.signum() == 0) return this.curve.getInfinity(); - - var e = k; - var h = e.multiply(new BigInteger("3")); - - var neg = this.negate(); - var R = this; - - var i; - for(i = h.bitLength() - 2; i > 0; --i) { - R = R.twice(); - - var hBit = h.testBit(i); - var eBit = e.testBit(i); - - if (hBit != eBit) { - R = R.add(hBit ? this : neg); - } - } - - return R; -} - -// Compute this*j + x*k (simultaneous multiplication) -function pointFpMultiplyTwo(j,x,k) { - var i; - if(j.bitLength() > k.bitLength()) - i = j.bitLength() - 1; - else - i = k.bitLength() - 1; - - var R = this.curve.getInfinity(); - var both = this.add(x); - while(i >= 0) { - R = R.twice(); - if(j.testBit(i)) { - if(k.testBit(i)) { - R = R.add(both); - } - else { - R = R.add(this); - } - } - else { - if(k.testBit(i)) { - R = R.add(x); - } - } - --i; - } - - return R; -} - -ECPointFp.prototype.getX = pointFpGetX; -ECPointFp.prototype.getY = pointFpGetY; -ECPointFp.prototype.equals = pointFpEquals; -ECPointFp.prototype.isInfinity = pointFpIsInfinity; -ECPointFp.prototype.negate = pointFpNegate; -ECPointFp.prototype.add = pointFpAdd; -ECPointFp.prototype.twice = pointFpTwice; -ECPointFp.prototype.multiply = pointFpMultiply; -ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo; - -// ---------------- -// ECCurveFp - -// constructor -function ECCurveFp(q,a,b) { - this.q = q; - this.a = this.fromBigInteger(a); - this.b = this.fromBigInteger(b); - this.infinity = new ECPointFp(this, null, null); - this.reducer = new Barrett(this.q); -} - -function curveFpGetQ() { - return this.q; -} - -function curveFpGetA() { - return this.a; -} - -function curveFpGetB() { - return this.b; -} - -function curveFpEquals(other) { - if(other == this) return true; - return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b)); -} - -function curveFpGetInfinity() { - return this.infinity; -} - -function curveFpFromBigInteger(x) { - return new ECFieldElementFp(this.q, x); -} - -function curveReduce(x) { - this.reducer.reduce(x); -} - -// for now, work with hex strings because they're easier in JS -function curveFpDecodePointHex(s) { - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - case 3: - // point compression not supported yet - return null; - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} - -function curveFpEncodePointHex(p) { - if (p.isInfinity()) return "00"; - var xHex = p.getX().toBigInteger().toString(16); - var yHex = p.getY().toBigInteger().toString(16); - var oLen = this.getQ().toString(16).length; - if ((oLen % 2) != 0) oLen++; - while (xHex.length < oLen) { - xHex = "0" + xHex; - } - while (yHex.length < oLen) { - yHex = "0" + yHex; - } - return "04" + xHex + yHex; -} - -ECCurveFp.prototype.getQ = curveFpGetQ; -ECCurveFp.prototype.getA = curveFpGetA; -ECCurveFp.prototype.getB = curveFpGetB; -ECCurveFp.prototype.equals = curveFpEquals; -ECCurveFp.prototype.getInfinity = curveFpGetInfinity; -ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger; -ECCurveFp.prototype.reduce = curveReduce; -//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex; -ECCurveFp.prototype.encodePointHex = curveFpEncodePointHex; - -// from: https://github.com/kaielvin/jsbn-ec-point-compression -ECCurveFp.prototype.decodePointHex = function(s) -{ - var yIsEven; - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - yIsEven = false; - case 3: - if(yIsEven == undefined) yIsEven = true; - var len = s.length - 2; - var xHex = s.substr(2, len); - var x = this.fromBigInteger(new BigInteger(xHex,16)); - var alpha = x.multiply(x.square().add(this.getA())).add(this.getB()); - var beta = alpha.sqrt(); - - if (beta == null) throw "Invalid point compression"; - - var betaValue = beta.toBigInteger(); - if (betaValue.testBit(0) != yIsEven) - { - // Use the other root - beta = this.fromBigInteger(this.getQ().subtract(betaValue)); - } - return new ECPointFp(this,x,beta); - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} -ECCurveFp.prototype.encodeCompressedPointHex = function(p) -{ - if (p.isInfinity()) return "00"; - var xHex = p.getX().toBigInteger().toString(16); - var oLen = this.getQ().toString(16).length; - if ((oLen % 2) != 0) oLen++; - while (xHex.length < oLen) - xHex = "0" + xHex; - var yPrefix; - if(p.getY().toBigInteger().isEven()) yPrefix = "02"; - else yPrefix = "03"; - - return yPrefix + xHex; -} - - -ECFieldElementFp.prototype.getR = function() -{ - if(this.r != undefined) return this.r; - - this.r = null; - var bitLength = this.q.bitLength(); - if (bitLength > 128) - { - var firstWord = this.q.shiftRight(bitLength - 64); - if (firstWord.intValue() == -1) - { - this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q); - } - } - return this.r; -} -ECFieldElementFp.prototype.modMult = function(x1,x2) -{ - return this.modReduce(x1.multiply(x2)); -} -ECFieldElementFp.prototype.modReduce = function(x) -{ - if (this.getR() != null) - { - var qLen = q.bitLength(); - while (x.bitLength() > (qLen + 1)) - { - var u = x.shiftRight(qLen); - var v = x.subtract(u.shiftLeft(qLen)); - if (!this.getR().equals(BigInteger.ONE)) - { - u = u.multiply(this.getR()); - } - x = u.add(v); - } - while (x.compareTo(q) >= 0) - { - x = x.subtract(q); - } - } - else - { - x = x.mod(q); - } - return x; -} -ECFieldElementFp.prototype.sqrt = function() -{ - if (!this.q.testBit(0)) throw "unsupported"; - - // p mod 4 == 3 - if (this.q.testBit(1)) - { - var z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q)); - return z.square().equals(this) ? z : null; - } - - // p mod 4 == 1 - var qMinusOne = this.q.subtract(BigInteger.ONE); - - var legendreExponent = qMinusOne.shiftRight(1); - if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE))) - { - return null; - } - - var u = qMinusOne.shiftRight(2); - var k = u.shiftLeft(1).add(BigInteger.ONE); - - var Q = this.x; - var fourQ = modDouble(modDouble(Q)); - - var U, V; - do - { - var P; - do - { - P = new BigInteger(this.q.bitLength(), new SecureRandom()); - } - while (P.compareTo(this.q) >= 0 - || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne))); - - var result = this.lucasSequence(P, Q, k); - U = result[0]; - V = result[1]; - - if (this.modMult(V, V).equals(fourQ)) - { - // Integer division by 2, mod q - if (V.testBit(0)) - { - V = V.add(q); - } - - V = V.shiftRight(1); - - return new ECFieldElementFp(q,V); - } - } - while (U.equals(BigInteger.ONE) || U.equals(qMinusOne)); - - return null; -} -ECFieldElementFp.prototype.lucasSequence = function(P,Q,k) -{ - var n = k.bitLength(); - var s = k.getLowestSetBit(); - - var Uh = BigInteger.ONE; - var Vl = BigInteger.TWO; - var Vh = P; - var Ql = BigInteger.ONE; - var Qh = BigInteger.ONE; - - for (var j = n - 1; j >= s + 1; --j) - { - Ql = this.modMult(Ql, Qh); - - if (k.testBit(j)) - { - Qh = this.modMult(Ql, Q); - Uh = this.modMult(Uh, Vh); - Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1))); - } - else - { - Qh = Ql; - Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); - Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); - } - } - - Ql = this.modMult(Ql, Qh); - Qh = this.modMult(Ql, Q); - Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); - Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Ql = this.modMult(Ql, Qh); - - for (var j = 1; j <= s; ++j) - { - Uh = this.modMult(Uh, Vl); - Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); - Ql = this.modMult(Ql, Ql); - } - - return [ Uh, Vl ]; -} - -var exports = { - ECCurveFp: ECCurveFp, - ECPointFp: ECPointFp, - ECFieldElementFp: ECFieldElementFp -} - -module.exports = exports - - -/***/ }), - -/***/ 1452: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Named EC curves - -// Requires ec.js, jsbn.js, and jsbn2.js -var BigInteger = __webpack_require__(5587).BigInteger -var ECCurveFp = __webpack_require__(3943).ECCurveFp - - -// ---------------- -// X9ECParameters - -// constructor -function X9ECParameters(curve,g,n,h) { - this.curve = curve; - this.g = g; - this.n = n; - this.h = h; -} - -function x9getCurve() { - return this.curve; -} - -function x9getG() { - return this.g; -} - -function x9getN() { - return this.n; -} - -function x9getH() { - return this.h; -} - -X9ECParameters.prototype.getCurve = x9getCurve; -X9ECParameters.prototype.getG = x9getG; -X9ECParameters.prototype.getN = x9getN; -X9ECParameters.prototype.getH = x9getH; - -// ---------------- -// SECNamedCurves - -function fromHex(s) { return new BigInteger(s, 16); } - -function secp128r1() { - // p = 2^128 - 2^97 - 1 - var p = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("E87579C11079F43DD824993C2CEE5ED3"); - //byte[] S = Hex.decode("000E0D4D696E6768756151750CC03A4473D03679"); - var n = fromHex("FFFFFFFE0000000075A30D1B9038A115"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "161FF7528B899B2D0C28607CA52C5B86" - + "CF5AC8395BAFEB13C02DA292DDED7A83"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160k1() { - // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73"); - var a = BigInteger.ZERO; - var b = fromHex("7"); - //byte[] S = null; - var n = fromHex("0100000000000000000001B8FA16DFAB9ACA16B6B3"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB" - + "938CF935318FDCED6BC28286531733C3F03C4FEE"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160r1() { - // p = 2^160 - 2^31 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"); - var b = fromHex("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45"); - //byte[] S = Hex.decode("1053CDE42C14D696E67687561517533BF3F83345"); - var n = fromHex("0100000000000000000001F4C8F927AED3CA752257"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "4A96B5688EF573284664698968C38BB913CBFC82" - + "23A628553168947D59DCC912042351377AC5FB32"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192k1() { - // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37"); - var a = BigInteger.ZERO; - var b = fromHex("3"); - //byte[] S = null; - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D" - + "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192r1() { - // p = 2^192 - 2^64 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"); - var b = fromHex("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"); - //byte[] S = Hex.decode("3045AE6FC8422F64ED579528D38120EAE12196D5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012" - + "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"); - return new X9ECParameters(curve, G, n, h); -} - -function secp224r1() { - // p = 2^224 - 2^96 + 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE"); - var b = fromHex("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4"); - //byte[] S = Hex.decode("BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21" - + "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34"); - return new X9ECParameters(curve, G, n, h); -} - -function secp256r1() { - // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1 - var p = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"); - //byte[] S = Hex.decode("C49D360886E704936A6678E1139D26B7819F7E90"); - var n = fromHex("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" - + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"); - return new X9ECParameters(curve, G, n, h); -} - -// TODO: make this into a proper hashtable -function getSECCurveByName(name) { - if(name == "secp128r1") return secp128r1(); - if(name == "secp160k1") return secp160k1(); - if(name == "secp160r1") return secp160r1(); - if(name == "secp192k1") return secp192k1(); - if(name == "secp192r1") return secp192r1(); - if(name == "secp224r1") return secp224r1(); - if(name == "secp256r1") return secp256r1(); - return null; -} - -module.exports = { - "secp128r1":secp128r1, - "secp160k1":secp160k1, - "secp160r1":secp160r1, - "secp192k1":secp192k1, - "secp192r1":secp192r1, - "secp224r1":secp224r1, - "secp256r1":secp256r1 -} - - -/***/ }), - -/***/ 8171: -/***/ ((module) => { - -"use strict"; - - -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var defineProperty = Object.defineProperty; -var gOPD = Object.getOwnPropertyDescriptor; - -var isArray = function isArray(arr) { - if (typeof Array.isArray === 'function') { - return Array.isArray(arr); - } - - return toStr.call(arr) === '[object Array]'; -}; - -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { /**/ } - - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; - -// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target -var setProperty = function setProperty(target, options) { - if (defineProperty && options.name === '__proto__') { - defineProperty(target, options.name, { - enumerable: true, - configurable: true, - value: options.newValue, - writable: true - }); - } else { - target[options.name] = options.newValue; - } -}; - -// Return undefined instead of __proto__ if '__proto__' is not an own property -var getProperty = function getProperty(obj, name) { - if (name === '__proto__') { - if (!hasOwn.call(obj, name)) { - return void 0; - } else if (gOPD) { - // In early versions of node, obj['__proto__'] is buggy when obj has - // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. - return gOPD(obj, name).value; - } - } - - return obj[name]; -}; - -module.exports = function extend() { - var options, name, src, copy, copyIsArray, clone; - var target = arguments[0]; - var i = 1; - var length = arguments.length; - var deep = false; - - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { - target = {}; - } - - for (; i < length; ++i) { - options = arguments[i]; - // Only deal with non-null/undefined values - if (options != null) { - // Extend the base object - for (name in options) { - src = getProperty(target, name); - copy = getProperty(options, name); - - // Prevent never-ending loop - if (target !== copy) { - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); - - // Don't bring in undefined values - } else if (typeof copy !== 'undefined') { - setProperty(target, { name: name, newValue: copy }); - } - } - } - } - } - - // Return the modified object - return target; -}; - - -/***/ }), - -/***/ 7264: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -/* - * extsprintf.js: extended POSIX-style sprintf - */ - -var mod_assert = __webpack_require__(2357); -var mod_util = __webpack_require__(1669); - -/* - * Public interface - */ -exports.sprintf = jsSprintf; -exports.printf = jsPrintf; -exports.fprintf = jsFprintf; - -/* - * Stripped down version of s[n]printf(3c). We make a best effort to throw an - * exception when given a format string we don't understand, rather than - * ignoring it, so that we won't break existing programs if/when we go implement - * the rest of this. - * - * This implementation currently supports specifying - * - field alignment ('-' flag), - * - zero-pad ('0' flag) - * - always show numeric sign ('+' flag), - * - field width - * - conversions for strings, decimal integers, and floats (numbers). - * - argument size specifiers. These are all accepted but ignored, since - * Javascript has no notion of the physical size of an argument. - * - * Everything else is currently unsupported, most notably precision, unsigned - * numbers, non-decimal numbers, and characters. - */ -function jsSprintf(fmt) -{ - var regex = [ - '([^%]*)', /* normal text */ - '%', /* start of format */ - '([\'\\-+ #0]*?)', /* flags (optional) */ - '([1-9]\\d*)?', /* width (optional) */ - '(\\.([1-9]\\d*))?', /* precision (optional) */ - '[lhjztL]*?', /* length mods (ignored) */ - '([diouxXfFeEgGaAcCsSp%jr])' /* conversion */ - ].join(''); - - var re = new RegExp(regex); - var args = Array.prototype.slice.call(arguments, 1); - var flags, width, precision, conversion; - var left, pad, sign, arg, match; - var ret = ''; - var argn = 1; - - mod_assert.equal('string', typeof (fmt)); - - while ((match = re.exec(fmt)) !== null) { - ret += match[1]; - fmt = fmt.substring(match[0].length); - - flags = match[2] || ''; - width = match[3] || 0; - precision = match[4] || ''; - conversion = match[6]; - left = false; - sign = false; - pad = ' '; - - if (conversion == '%') { - ret += '%'; - continue; - } - - if (args.length === 0) - throw (new Error('too few args to sprintf')); - - arg = args.shift(); - argn++; - - if (flags.match(/[\' #]/)) - throw (new Error( - 'unsupported flags: ' + flags)); - - if (precision.length > 0) - throw (new Error( - 'non-zero precision not supported')); - - if (flags.match(/-/)) - left = true; - - if (flags.match(/0/)) - pad = '0'; - - if (flags.match(/\+/)) - sign = true; - - switch (conversion) { - case 's': - if (arg === undefined || arg === null) - throw (new Error('argument ' + argn + - ': attempted to print undefined or null ' + - 'as a string')); - ret += doPad(pad, width, left, arg.toString()); - break; - - case 'd': - arg = Math.floor(arg); - /*jsl:fallthru*/ - case 'f': - sign = sign && arg > 0 ? '+' : ''; - ret += sign + doPad(pad, width, left, - arg.toString()); - break; - - case 'x': - ret += doPad(pad, width, left, arg.toString(16)); - break; - - case 'j': /* non-standard */ - if (width === 0) - width = 10; - ret += mod_util.inspect(arg, false, width); - break; - - case 'r': /* non-standard */ - ret += dumpException(arg); - break; - - default: - throw (new Error('unsupported conversion: ' + - conversion)); - } - } - - ret += fmt; - return (ret); -} - -function jsPrintf() { - var args = Array.prototype.slice.call(arguments); - args.unshift(process.stdout); - jsFprintf.apply(null, args); -} - -function jsFprintf(stream) { - var args = Array.prototype.slice.call(arguments, 1); - return (stream.write(jsSprintf.apply(this, args))); -} - -function doPad(chr, width, left, str) -{ - var ret = str; - - while (ret.length < width) { - if (left) - ret += chr; - else - ret = chr + ret; - } - - return (ret); -} - -/* - * This function dumps long stack traces for exceptions having a cause() method. - * See node-verror for an example. - */ -function dumpException(ex) -{ - var ret; - - if (!(ex instanceof Error)) - throw (new Error(jsSprintf('invalid type for %%r: %j', ex))); - - /* Note that V8 prepends "ex.stack" with ex.toString(). */ - ret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack; - - if (ex.cause && typeof (ex.cause) === 'function') { - var cex = ex.cause(); - if (cex) { - ret += '\nCaused by: ' + dumpException(cex); - } - } - - return (ret); -} - - -/***/ }), - -/***/ 8206: -/***/ ((module) => { - -"use strict"; - - -// do not edit .js files directly - edit src/index.jst - - - -module.exports = function equal(a, b) { - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - - for (i = length; i-- !== 0;) { - var key = keys[i]; - - if (!equal(a[key], b[key])) return false; - } - - return true; - } - - // true if both NaN, false otherwise - return a!==a && b!==b; -}; - - -/***/ }), - -/***/ 969: -/***/ ((module) => { - -"use strict"; - - -module.exports = function (data, opts) { - if (!opts) opts = {}; - if (typeof opts === 'function') opts = { cmp: opts }; - var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; - - var cmp = opts.cmp && (function (f) { - return function (node) { - return function (a, b) { - var aobj = { key: a, value: node[a] }; - var bobj = { key: b, value: node[b] }; - return f(aobj, bobj); - }; - }; - })(opts.cmp); - - var seen = []; - return (function stringify (node) { - if (node && node.toJSON && typeof node.toJSON === 'function') { - node = node.toJSON(); - } - - if (node === undefined) return; - if (typeof node == 'number') return isFinite(node) ? '' + node : 'null'; - if (typeof node !== 'object') return JSON.stringify(node); - - var i, out; - if (Array.isArray(node)) { - out = '['; - for (i = 0; i < node.length; i++) { - if (i) out += ','; - out += stringify(node[i]) || 'null'; - } - return out + ']'; - } - - if (node === null) return 'null'; - - if (seen.indexOf(node) !== -1) { - if (cycles) return JSON.stringify('__cycle__'); - throw new TypeError('Converting circular structure to JSON'); - } - - var seenIndex = seen.push(node) - 1; - var keys = Object.keys(node).sort(cmp && cmp(node)); - out = ''; - for (i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = stringify(node[key]); - - if (!value) continue; - if (out) out += ','; - out += JSON.stringify(key) + ':' + value; - } - seen.splice(seenIndex, 1); - return '{' + out + '}'; - })(data); -}; - - -/***/ }), - -/***/ 7568: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = ForeverAgent -ForeverAgent.SSL = ForeverAgentSSL - -var util = __webpack_require__(1669) - , Agent = __webpack_require__(8605).Agent - , net = __webpack_require__(1631) - , tls = __webpack_require__(4016) - , AgentSSL = __webpack_require__(7211).Agent - -function getConnectionName(host, port) { - var name = '' - if (typeof host === 'string') { - name = host + ':' + port - } else { - // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name. - name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':') - } - return name -} - -function ForeverAgent(options) { - var self = this - self.options = options || {} - self.requests = {} - self.sockets = {} - self.freeSockets = {} - self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets - self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets - self.on('free', function(socket, host, port) { - var name = getConnectionName(host, port) - - if (self.requests[name] && self.requests[name].length) { - self.requests[name].shift().onSocket(socket) - } else if (self.sockets[name].length < self.minSockets) { - if (!self.freeSockets[name]) self.freeSockets[name] = [] - self.freeSockets[name].push(socket) - - // if an error happens while we don't use the socket anyway, meh, throw the socket away - var onIdleError = function() { - socket.destroy() - } - socket._onIdleError = onIdleError - socket.on('error', onIdleError) - } else { - // If there are no pending requests just destroy the - // socket and it will get removed from the pool. This - // gets us out of timeout issues and allows us to - // default to Connection:keep-alive. - socket.destroy() - } - }) - -} -util.inherits(ForeverAgent, Agent) - -ForeverAgent.defaultMinSockets = 5 - - -ForeverAgent.prototype.createConnection = net.createConnection -ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest -ForeverAgent.prototype.addRequest = function(req, host, port) { - var name = getConnectionName(host, port) - - if (typeof host !== 'string') { - var options = host - port = options.port - host = options.host - } - - if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { - var idleSocket = this.freeSockets[name].pop() - idleSocket.removeListener('error', idleSocket._onIdleError) - delete idleSocket._onIdleError - req._reusedSocket = true - req.onSocket(idleSocket) - } else { - this.addRequestNoreuse(req, host, port) - } -} - -ForeverAgent.prototype.removeSocket = function(s, name, host, port) { - if (this.sockets[name]) { - var index = this.sockets[name].indexOf(s) - if (index !== -1) { - this.sockets[name].splice(index, 1) - } - } else if (this.sockets[name] && this.sockets[name].length === 0) { - // don't leak - delete this.sockets[name] - delete this.requests[name] - } - - if (this.freeSockets[name]) { - var index = this.freeSockets[name].indexOf(s) - if (index !== -1) { - this.freeSockets[name].splice(index, 1) - if (this.freeSockets[name].length === 0) { - delete this.freeSockets[name] - } - } - } - - if (this.requests[name] && this.requests[name].length) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(name, host, port).emit('free') - } -} - -function ForeverAgentSSL (options) { - ForeverAgent.call(this, options) -} -util.inherits(ForeverAgentSSL, ForeverAgent) - -ForeverAgentSSL.prototype.createConnection = createConnectionSSL -ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest - -function createConnectionSSL (port, host, options) { - if (typeof port === 'object') { - options = port; - } else if (typeof host === 'object') { - options = host; - } else if (typeof options === 'object') { - options = options; - } else { - options = {}; - } - - if (typeof port === 'number') { - options.port = port; - } - - if (typeof host === 'string') { - options.host = host; - } - - return tls.connect(options); -} - - -/***/ }), - -/***/ 4334: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var CombinedStream = __webpack_require__(5443); -var util = __webpack_require__(1669); -var path = __webpack_require__(5622); -var http = __webpack_require__(8605); -var https = __webpack_require__(7211); -var parseUrl = __webpack_require__(8835).parse; -var fs = __webpack_require__(5747); -var mime = __webpack_require__(3583); -var asynckit = __webpack_require__(4812); -var populate = __webpack_require__(7142); - -// Public API -module.exports = FormData; - -// make it a Stream -util.inherits(FormData, CombinedStream); - /** - * Create readable "multipart/form-data" streams. - * Can be used to submit forms - * and file uploads to other web applications. + * Checks if the given character is a valid end character for an entity in an attribute. * - * @constructor - * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state */ -function FormData(options) { - if (!(this instanceof FormData)) { - return new FormData(); - } - - this._overheadLength = 0; - this._valueLength = 0; - this._valuesToMeasure = []; - - CombinedStream.call(this); - - options = options || {}; - for (var option in options) { - this[option] = options[option]; - } +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); } - -FormData.LINE_BREAK = '\r\n'; -FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; - -FormData.prototype.append = function(field, value, options) { - - options = options || {}; - - // allow filename as single option - if (typeof options == 'string') { - options = {filename: options}; - } - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') { - value = '' + value; - } - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } - - // no need to bother with the length - if (!options.knownLength) { - this._valuesToMeasure.push(value); - } -}; - -FormData.prototype._lengthRetriever = function(value, callback) { - - if (value.hasOwnProperty('fd')) { - - // take read range into a account - // `end` = Infinity –> read file till the end - // - // TODO: Looks like there is bug in Node fs.createReadStream - // it doesn't respect `end` options without `start` options - // Fix it when node fixes it. - // https://github.com/joyent/node/issues/7819 - if (value.end != undefined && value.end != Infinity && value.start != undefined) { - - // when end specified - // no need to calculate range - // inclusive, starts with 0 - callback(null, value.end + 1 - (value.start ? value.start : 0)); - - // not that fast snoopy - } else { - // still need to fetch file size from fs - fs.stat(value.path, function(err, stat) { - - var fileSize; - - if (err) { - callback(err); - return; - } - - // update final size based on the range options - fileSize = stat.size - (value.start ? value.start : 0); - callback(null, fileSize); - }); - } - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - callback(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - callback(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - callback('Unknown stream'); - } -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (typeof options.header == 'string') { - return options.header; - } - - var contentDisposition = this._getContentDisposition(value, options); - var contentType = this._getContentType(value, options); - - var contents = ''; - var headers = { - // add custom disposition as third element or keep it two elements if not - 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), - // if no content type. allow it to be empty array - 'Content-Type': [].concat(contentType || []) - }; - - // allow custom headers. - if (typeof options.header == 'object') { - populate(headers, options.header); - } - - var header; - for (var prop in headers) { - if (!headers.hasOwnProperty(prop)) continue; - header = headers[prop]; - - // skip nullish headers. - if (header == null) { - continue; - } - - // convert all headers to arrays. - if (!Array.isArray(header)) { - header = [header]; - } - - // add non-empty headers. - if (header.length) { - contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; - } - } - - return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; -}; - -FormData.prototype._getContentDisposition = function(value, options) { - - var filename - , contentDisposition - ; - - if (typeof options.filepath === 'string') { - // custom filepath for relative paths - filename = path.normalize(options.filepath).replace(/\\/g, '/'); - } else if (options.filename || value.name || value.path) { - // custom filename take precedence - // formidable and the browser add a name property - // fs- and request- streams have path property - filename = path.basename(options.filename || value.name || value.path); - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - // or try http response - filename = path.basename(value.client._httpMessage.path); - } - - if (filename) { - contentDisposition = 'filename="' + filename + '"'; - } - - return contentDisposition; -}; - -FormData.prototype._getContentType = function(value, options) { - - // use custom content-type above all - var contentType = options.contentType; - - // or try `name` from formidable, browser - if (!contentType && value.name) { - contentType = mime.lookup(value.name); - } - - // or try `path` from fs-, request- streams - if (!contentType && value.path) { - contentType = mime.lookup(value.path); - } - - // or if it's http-reponse - if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { - contentType = value.headers['content-type']; - } - - // or guess it from the filepath or filename - if (!contentType && (options.filepath || options.filename)) { - contentType = mime.lookup(options.filepath || options.filename); - } - - // fallback to the default content type if `value` is not simple value - if (!contentType && typeof value == 'object') { - contentType = FormData.DEFAULT_CONTENT_TYPE; - } - - return contentType; -}; - -FormData.prototype._multiPartFooter = function() { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var header; - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (header in userHeaders) { - if (userHeaders.hasOwnProperty(header)) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - } - - return formHeaders; -}; - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function() { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/form-data/form-data/issues/40 - if (!this.hasKnownLength()) { - // Some async length retrievers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -// Public API to check if length of added values is known -// https://github.com/form-data/form-data/issues/196 -// https://github.com/form-data/form-data/issues/262 -FormData.prototype.hasKnownLength = function() { - var hasKnownLength = true; - - if (this._valuesToMeasure.length) { - hasKnownLength = false; - } - - return hasKnownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._valuesToMeasure.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - var request - , options - , defaults = {method: 'post'} - ; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - - params = parseUrl(params); - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname, - protocol: params.protocol - }, defaults); - - // use custom params - } else { - - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // put that good code in getHeaders to some use - options.headers = this.getHeaders(params.headers); - - // https if specified, fallback to http in any other case - if (options.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - if (err) { - this._error(err); - return; - } - - // add content length - request.setHeader('Content-Length', length); - - this.pipe(request); - if (cb) { - request.on('error', cb); - request.on('response', cb.bind(this, null)); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (!this.error) { - this.error = err; - this.pause(); - this.emit('error', err); - } -}; - -FormData.prototype.toString = function () { - return '[object FormData]'; -}; - - -/***/ }), - -/***/ 7142: -/***/ ((module) => { - -// populates missing values -module.exports = function(dst, src) { - - Object.keys(src).forEach(function(prop) - { - dst[prop] = dst[prop] || src[prop]; - }); - - return dst; -}; - - -/***/ }), - -/***/ 5390: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -module.exports = { - afterRequest: __webpack_require__(4391), - beforeRequest: __webpack_require__(4440), - browser: __webpack_require__(9850), - cache: __webpack_require__(7654), - content: __webpack_require__(3656), - cookie: __webpack_require__(7948), - creator: __webpack_require__(3412), - entry: __webpack_require__(2525), - har: __webpack_require__(4943), - header: __webpack_require__(8344), - log: __webpack_require__(9142), - page: __webpack_require__(9075), - pageTimings: __webpack_require__(5096), - postData: __webpack_require__(3697), - query: __webpack_require__(877), - request: __webpack_require__(2084), - response: __webpack_require__(702), - timings: __webpack_require__(6941) -} - - -/***/ }), - -/***/ 4944: -/***/ ((module) => { - -function HARError (errors) { - var message = 'validation failed' - - this.name = 'HARError' - this.message = message - this.errors = errors - - if (typeof Error.captureStackTrace === 'function') { - Error.captureStackTrace(this, this.constructor) - } else { - this.stack = (new Error(message)).stack - } -} - -HARError.prototype = Error.prototype - -module.exports = HARError - - -/***/ }), - -/***/ 5697: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -var Ajv = __webpack_require__(4941) -var HARError = __webpack_require__(4944) -var schemas = __webpack_require__(5390) - -var ajv - -function createAjvInstance () { - var ajv = new Ajv({ - allErrors: true - }) - ajv.addMetaSchema(__webpack_require__(1030)) - ajv.addSchema(schemas) - - return ajv -} - -function validate (name, data) { - data = data || {} - - // validator config - ajv = ajv || createAjvInstance() - - var validate = ajv.getSchema(name + '.json') - - return new Promise(function (resolve, reject) { - var valid = validate(data) - - !valid ? reject(new HARError(validate.errors)) : resolve(data) - }) -} - -exports.afterRequest = function (data) { - return validate('afterRequest', data) -} - -exports.beforeRequest = function (data) { - return validate('beforeRequest', data) -} - -exports.browser = function (data) { - return validate('browser', data) -} - -exports.cache = function (data) { - return validate('cache', data) -} - -exports.content = function (data) { - return validate('content', data) -} - -exports.cookie = function (data) { - return validate('cookie', data) -} - -exports.creator = function (data) { - return validate('creator', data) -} - -exports.entry = function (data) { - return validate('entry', data) -} - -exports.har = function (data) { - return validate('har', data) -} - -exports.header = function (data) { - return validate('header', data) -} - -exports.log = function (data) { - return validate('log', data) -} - -exports.page = function (data) { - return validate('page', data) -} - -exports.pageTimings = function (data) { - return validate('pageTimings', data) -} - -exports.postData = function (data) { - return validate('postData', data) -} - -exports.query = function (data) { - return validate('query', data) -} - -exports.request = function (data) { - return validate('request', data) -} - -exports.response = function (data) { - return validate('response', data) -} - -exports.timings = function (data) { - return validate('timings', data) -} - - -/***/ }), - -/***/ 2479: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright 2015 Joyent, Inc. - -var parser = __webpack_require__(5086); -var signer = __webpack_require__(1904); -var verify = __webpack_require__(1227); -var utils = __webpack_require__(5689); - - - -///--- API - -module.exports = { - - parse: parser.parseRequest, - parseRequest: parser.parseRequest, - - sign: signer.signRequest, - signRequest: signer.signRequest, - createSigner: signer.createSigner, - isSigner: signer.isSigner, - - sshKeyToPEM: utils.sshKeyToPEM, - sshKeyFingerprint: utils.fingerprint, - pemToRsaSSHKey: utils.pemToRsaSSHKey, - - verify: verify.verifySignature, - verifySignature: verify.verifySignature, - verifyHMAC: verify.verifyHMAC -}; - - -/***/ }), - -/***/ 5086: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = __webpack_require__(6631); -var util = __webpack_require__(1669); -var utils = __webpack_require__(5689); - - - -///--- Globals - -var HASH_ALGOS = utils.HASH_ALGOS; -var PK_ALGOS = utils.PK_ALGOS; -var HttpSignatureError = utils.HttpSignatureError; -var InvalidAlgorithmError = utils.InvalidAlgorithmError; -var validateAlgorithm = utils.validateAlgorithm; - -var State = { - New: 0, - Params: 1 -}; - -var ParamsState = { - Name: 0, - Quote: 1, - Value: 2, - Comma: 3 -}; - - -///--- Specific Errors - - -function ExpiredRequestError(message) { - HttpSignatureError.call(this, message, ExpiredRequestError); -} -util.inherits(ExpiredRequestError, HttpSignatureError); - - -function InvalidHeaderError(message) { - HttpSignatureError.call(this, message, InvalidHeaderError); -} -util.inherits(InvalidHeaderError, HttpSignatureError); - - -function InvalidParamsError(message) { - HttpSignatureError.call(this, message, InvalidParamsError); -} -util.inherits(InvalidParamsError, HttpSignatureError); - - -function MissingHeaderError(message) { - HttpSignatureError.call(this, message, MissingHeaderError); -} -util.inherits(MissingHeaderError, HttpSignatureError); - -function StrictParsingError(message) { - HttpSignatureError.call(this, message, StrictParsingError); -} -util.inherits(StrictParsingError, HttpSignatureError); - -///--- Exported API - -module.exports = { - - /** - * Parses the 'Authorization' header out of an http.ServerRequest object. - * - * Note that this API will fully validate the Authorization header, and throw - * on any error. It will not however check the signature, or the keyId format - * as those are specific to your environment. You can use the options object - * to pass in extra constraints. - * - * As a response object you can expect this: - * - * { - * "scheme": "Signature", - * "params": { - * "keyId": "foo", - * "algorithm": "rsa-sha256", - * "headers": [ - * "date" or "x-date", - * "digest" - * ], - * "signature": "base64" - * }, - * "signingString": "ready to be passed to crypto.verify()" - * } - * - * @param {Object} request an http.ServerRequest. - * @param {Object} options an optional options object with: - * - clockSkew: allowed clock skew in seconds (default 300). - * - headers: required header names (def: date or x-date) - * - algorithms: algorithms to support (default: all). - * - strict: should enforce latest spec parsing - * (default: false). - * @return {Object} parsed out object (see above). - * @throws {TypeError} on invalid input. - * @throws {InvalidHeaderError} on an invalid Authorization header error. - * @throws {InvalidParamsError} if the params in the scheme are invalid. - * @throws {MissingHeaderError} if the params indicate a header not present, - * either in the request headers from the params, - * or not in the params from a required header - * in options. - * @throws {StrictParsingError} if old attributes are used in strict parsing - * mode. - * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew. - */ - parseRequest: function parseRequest(request, options) { - assert.object(request, 'request'); - assert.object(request.headers, 'request.headers'); - if (options === undefined) { - options = {}; - } - if (options.headers === undefined) { - options.headers = [request.headers['x-date'] ? 'x-date' : 'date']; - } - assert.object(options, 'options'); - assert.arrayOfString(options.headers, 'options.headers'); - assert.optionalFinite(options.clockSkew, 'options.clockSkew'); - - var authzHeaderName = options.authorizationHeaderName || 'authorization'; - - if (!request.headers[authzHeaderName]) { - throw new MissingHeaderError('no ' + authzHeaderName + ' header ' + - 'present in the request'); - } - - options.clockSkew = options.clockSkew || 300; - - - var i = 0; - var state = State.New; - var substate = ParamsState.Name; - var tmpName = ''; - var tmpValue = ''; - - var parsed = { - scheme: '', - params: {}, - signingString: '' - }; - - var authz = request.headers[authzHeaderName]; - for (i = 0; i < authz.length; i++) { - var c = authz.charAt(i); - - switch (Number(state)) { - - case State.New: - if (c !== ' ') parsed.scheme += c; - else state = State.Params; - break; - - case State.Params: - switch (Number(substate)) { - - case ParamsState.Name: - var code = c.charCodeAt(0); - // restricted name of A-Z / a-z - if ((code >= 0x41 && code <= 0x5a) || // A-Z - (code >= 0x61 && code <= 0x7a)) { // a-z - tmpName += c; - } else if (c === '=') { - if (tmpName.length === 0) - throw new InvalidHeaderError('bad param format'); - substate = ParamsState.Quote; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Quote: - if (c === '"') { - tmpValue = ''; - substate = ParamsState.Value; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Value: - if (c === '"') { - parsed.params[tmpName] = tmpValue; - substate = ParamsState.Comma; - } else { - tmpValue += c; - } - break; - - case ParamsState.Comma: - if (c === ',') { - tmpName = ''; - substate = ParamsState.Name; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - default: - throw new Error('Invalid substate'); - } - break; - - default: - throw new Error('Invalid substate'); - } - - } - - if (!parsed.params.headers || parsed.params.headers === '') { - if (request.headers['x-date']) { - parsed.params.headers = ['x-date']; - } else { - parsed.params.headers = ['date']; - } - } else { - parsed.params.headers = parsed.params.headers.split(' '); - } - - // Minimally validate the parsed object - if (!parsed.scheme || parsed.scheme !== 'Signature') - throw new InvalidHeaderError('scheme was not "Signature"'); - - if (!parsed.params.keyId) - throw new InvalidHeaderError('keyId was not specified'); - - if (!parsed.params.algorithm) - throw new InvalidHeaderError('algorithm was not specified'); - - if (!parsed.params.signature) - throw new InvalidHeaderError('signature was not specified'); - - // Check the algorithm against the official list - parsed.params.algorithm = parsed.params.algorithm.toLowerCase(); - try { - validateAlgorithm(parsed.params.algorithm); - } catch (e) { - if (e instanceof InvalidAlgorithmError) - throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' + - 'supported')); - else - throw (e); - } - - // Build the signingString - for (i = 0; i < parsed.params.headers.length; i++) { - var h = parsed.params.headers[i].toLowerCase(); - parsed.params.headers[i] = h; - - if (h === 'request-line') { - if (!options.strict) { - /* - * We allow headers from the older spec drafts if strict parsing isn't - * specified in options. - */ - parsed.signingString += - request.method + ' ' + request.url + ' HTTP/' + request.httpVersion; - } else { - /* Strict parsing doesn't allow older draft headers. */ - throw (new StrictParsingError('request-line is not a valid header ' + - 'with strict parsing enabled.')); - } - } else if (h === '(request-target)') { - parsed.signingString += - '(request-target): ' + request.method.toLowerCase() + ' ' + - request.url; - } else { - var value = request.headers[h]; - if (value === undefined) - throw new MissingHeaderError(h + ' was not in the request'); - parsed.signingString += h + ': ' + value; - } - - if ((i + 1) < parsed.params.headers.length) - parsed.signingString += '\n'; - } - - // Check against the constraints - var date; - if (request.headers.date || request.headers['x-date']) { - if (request.headers['x-date']) { - date = new Date(request.headers['x-date']); - } else { - date = new Date(request.headers.date); - } - var now = new Date(); - var skew = Math.abs(now.getTime() - date.getTime()); - - if (skew > options.clockSkew * 1000) { - throw new ExpiredRequestError('clock skew of ' + - (skew / 1000) + - 's was greater than ' + - options.clockSkew + 's'); - } - } - - options.headers.forEach(function (hdr) { - // Remember that we already checked any headers in the params - // were in the request, so if this passes we're good. - if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0) - throw new MissingHeaderError(hdr + ' was not a signed header'); - }); - - if (options.algorithms) { - if (options.algorithms.indexOf(parsed.params.algorithm) === -1) - throw new InvalidParamsError(parsed.params.algorithm + - ' is not a supported algorithm'); - } - - parsed.algorithm = parsed.params.algorithm.toUpperCase(); - parsed.keyId = parsed.params.keyId; - return parsed; - } - -}; - - -/***/ }), - -/***/ 1904: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = __webpack_require__(6631); -var crypto = __webpack_require__(6417); -var http = __webpack_require__(8605); -var util = __webpack_require__(1669); -var sshpk = __webpack_require__(7022); -var jsprim = __webpack_require__(6287); -var utils = __webpack_require__(5689); - -var sprintf = __webpack_require__(1669).format; - -var HASH_ALGOS = utils.HASH_ALGOS; -var PK_ALGOS = utils.PK_ALGOS; -var InvalidAlgorithmError = utils.InvalidAlgorithmError; -var HttpSignatureError = utils.HttpSignatureError; -var validateAlgorithm = utils.validateAlgorithm; - -///--- Globals - -var AUTHZ_FMT = - 'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"'; - -///--- Specific Errors - -function MissingHeaderError(message) { - HttpSignatureError.call(this, message, MissingHeaderError); -} -util.inherits(MissingHeaderError, HttpSignatureError); - -function StrictParsingError(message) { - HttpSignatureError.call(this, message, StrictParsingError); -} -util.inherits(StrictParsingError, HttpSignatureError); - -/* See createSigner() */ -function RequestSigner(options) { - assert.object(options, 'options'); - - var alg = []; - if (options.algorithm !== undefined) { - assert.string(options.algorithm, 'options.algorithm'); - alg = validateAlgorithm(options.algorithm); - } - this.rs_alg = alg; - - /* - * RequestSigners come in two varieties: ones with an rs_signFunc, and ones - * with an rs_signer. - * - * rs_signFunc-based RequestSigners have to build up their entire signing - * string within the rs_lines array and give it to rs_signFunc as a single - * concat'd blob. rs_signer-based RequestSigners can add a line at a time to - * their signing state by using rs_signer.update(), thus only needing to - * buffer the hash function state and one line at a time. - */ - if (options.sign !== undefined) { - assert.func(options.sign, 'options.sign'); - this.rs_signFunc = options.sign; - - } else if (alg[0] === 'hmac' && options.key !== undefined) { - assert.string(options.keyId, 'options.keyId'); - this.rs_keyId = options.keyId; - - if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key)) - throw (new TypeError('options.key for HMAC must be a string or Buffer')); - - /* - * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their - * data in chunks rather than requiring it all to be given in one go - * at the end, so they are more similar to signers than signFuncs. +var EntityDecoderState; +(function (EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +var DecodingMode; +(function (DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; +})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {})); +/** + * Token decoder with support of writing partial entities. + */ +var EntityDecoder = /** @class */ (function () { + function EntityDecoder( + /** The tree used to decode entities. */ + decodeTree, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. */ - this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key); - this.rs_signer.sign = function () { - var digest = this.digest('base64'); - return ({ - hashAlgorithm: alg[1], - toString: function () { return (digest); } - }); + emitCodePoint, + /** An object that is used to produce errors. */ + errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + /** The current state of the decoder. */ + this.state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + this.consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + this.result = 0; + /** The current index in the decode tree. */ + this.treeIndex = 0; + /** The number of characters that were consumed in excess. */ + this.excess = 1; + /** The mode in which the decoder is operating. */ + this.decodeMode = DecodingMode.Strict; + } + /** Resets the instance to make it reusable. */ + EntityDecoder.prototype.startEntity = function (decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; }; - - } else if (options.key !== undefined) { - var key = options.key; - if (typeof (key) === 'string' || Buffer.isBuffer(key)) - key = sshpk.parsePrivateKey(key); - - assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]), - 'options.key must be a sshpk.PrivateKey'); - this.rs_key = key; - - assert.string(options.keyId, 'options.keyId'); - this.rs_keyId = options.keyId; - - if (!PK_ALGOS[key.type]) { - throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' + - 'keys are not supported')); - } - - if (alg[0] !== undefined && key.type !== alg[0]) { - throw (new InvalidAlgorithmError('options.key must be a ' + - alg[0].toUpperCase() + ' key, was given a ' + - key.type.toUpperCase() + ' key instead')); - } - - this.rs_signer = key.createSign(alg[1]); - - } else { - throw (new TypeError('options.sign (func) or options.key is required')); - } - - this.rs_headers = []; - this.rs_lines = []; -} - -/** - * Adds a header to be signed, with its value, into this signer. - * - * @param {String} header - * @param {String} value - * @return {String} value written - */ -RequestSigner.prototype.writeHeader = function (header, value) { - assert.string(header, 'header'); - header = header.toLowerCase(); - assert.string(value, 'value'); - - this.rs_headers.push(header); - - if (this.rs_signFunc) { - this.rs_lines.push(header + ': ' + value); - - } else { - var line = header + ': ' + value; - if (this.rs_headers.length > 0) - line = '\n' + line; - this.rs_signer.update(line); - } - - return (value); -}; - -/** - * Adds a default Date header, returning its value. - * - * @return {String} - */ -RequestSigner.prototype.writeDateHeader = function () { - return (this.writeHeader('date', jsprim.rfc1123(new Date()))); -}; - -/** - * Adds the request target line to be signed. - * - * @param {String} method, HTTP method (e.g. 'get', 'post', 'put') - * @param {String} path - */ -RequestSigner.prototype.writeTarget = function (method, path) { - assert.string(method, 'method'); - assert.string(path, 'path'); - method = method.toLowerCase(); - this.writeHeader('(request-target)', method + ' ' + path); -}; - -/** - * Calculate the value for the Authorization header on this request - * asynchronously. - * - * @param {Func} callback (err, authz) - */ -RequestSigner.prototype.sign = function (cb) { - assert.func(cb, 'callback'); - - if (this.rs_headers.length < 1) - throw (new Error('At least one header must be signed')); - - var alg, authz; - if (this.rs_signFunc) { - var data = this.rs_lines.join('\n'); - var self = this; - this.rs_signFunc(data, function (err, sig) { - if (err) { - cb(err); - return; - } - try { - assert.object(sig, 'signature'); - assert.string(sig.keyId, 'signature.keyId'); - assert.string(sig.algorithm, 'signature.algorithm'); - assert.string(sig.signature, 'signature.signature'); - alg = validateAlgorithm(sig.algorithm); - - authz = sprintf(AUTHZ_FMT, - sig.keyId, - sig.algorithm, - self.rs_headers.join(' '), - sig.signature); - } catch (e) { - cb(e); - return; - } - cb(null, authz); - }); - - } else { - try { - var sigObj = this.rs_signer.sign(); - } catch (e) { - cb(e); - return; - } - alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm; - var signature = sigObj.toString(); - authz = sprintf(AUTHZ_FMT, - this.rs_keyId, - alg, - this.rs_headers.join(' '), - signature); - cb(null, authz); - } -}; - -///--- Exported API - -module.exports = { - /** - * Identifies whether a given object is a request signer or not. - * - * @param {Object} object, the object to identify - * @returns {Boolean} - */ - isSigner: function (obj) { - if (typeof (obj) === 'object' && obj instanceof RequestSigner) - return (true); - return (false); - }, - - /** - * Creates a request signer, used to asynchronously build a signature - * for a request (does not have to be an http.ClientRequest). - * - * @param {Object} options, either: - * - {String} keyId - * - {String|Buffer} key - * - {String} algorithm (optional, required for HMAC) - * or: - * - {Func} sign (data, cb) - * @return {RequestSigner} - */ - createSigner: function createSigner(options) { - return (new RequestSigner(options)); - }, - - /** - * Adds an 'Authorization' header to an http.ClientRequest object. - * - * Note that this API will add a Date header if it's not already set. Any - * other headers in the options.headers array MUST be present, or this - * will throw. - * - * You shouldn't need to check the return type; it's just there if you want - * to be pedantic. - * - * The optional flag indicates whether parsing should use strict enforcement - * of the version draft-cavage-http-signatures-04 of the spec or beyond. - * The default is to be loose and support - * older versions for compatibility. - * - * @param {Object} request an instance of http.ClientRequest. - * @param {Object} options signing parameters object: - * - {String} keyId required. - * - {String} key required (either a PEM or HMAC key). - * - {Array} headers optional; defaults to ['date']. - * - {String} algorithm optional (unless key is HMAC); - * default is the same as the sshpk default - * signing algorithm for the type of key given - * - {String} httpVersion optional; defaults to '1.1'. - * - {Boolean} strict optional; defaults to 'false'. - * @return {Boolean} true if Authorization (and optionally Date) were added. - * @throws {TypeError} on bad parameter types (input). - * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with - * the given key. - * @throws {sshpk.KeyParseError} if key was bad. - * @throws {MissingHeaderError} if a header to be signed was specified but - * was not present. - */ - signRequest: function signRequest(request, options) { - assert.object(request, 'request'); - assert.object(options, 'options'); - assert.optionalString(options.algorithm, 'options.algorithm'); - assert.string(options.keyId, 'options.keyId'); - assert.optionalArrayOfString(options.headers, 'options.headers'); - assert.optionalString(options.httpVersion, 'options.httpVersion'); - - if (!request.getHeader('Date')) - request.setHeader('Date', jsprim.rfc1123(new Date())); - if (!options.headers) - options.headers = ['date']; - if (!options.httpVersion) - options.httpVersion = '1.1'; - - var alg = []; - if (options.algorithm) { - options.algorithm = options.algorithm.toLowerCase(); - alg = validateAlgorithm(options.algorithm); - } - - var i; - var stringToSign = ''; - for (i = 0; i < options.headers.length; i++) { - if (typeof (options.headers[i]) !== 'string') - throw new TypeError('options.headers must be an array of Strings'); - - var h = options.headers[i].toLowerCase(); - - if (h === 'request-line') { - if (!options.strict) { - /** - * We allow headers from the older spec drafts if strict parsing isn't - * specified in options. - */ - stringToSign += - request.method + ' ' + request.path + ' HTTP/' + - options.httpVersion; - } else { - /* Strict parsing doesn't allow older draft headers. */ - throw (new StrictParsingError('request-line is not a valid header ' + - 'with strict parsing enabled.')); + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.write = function (str, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (str.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(str, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(str, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(str, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(str, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(str, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(str, offset); + } } - } else if (h === '(request-target)') { - stringToSign += - '(request-target): ' + request.method.toLowerCase() + ' ' + - request.path; - } else { - var value = request.getHeader(h); - if (value === undefined || value === '') { - throw new MissingHeaderError(h + ' was not in the request'); + }; + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericStart = function (str, offset) { + if (offset >= str.length) { + return -1; } - stringToSign += h + ': ' + value; - } - - if ((i + 1) < options.headers.length) - stringToSign += '\n'; - } - - /* This is just for unit tests. */ - if (request.hasOwnProperty('_stringToSign')) { - request._stringToSign = stringToSign; - } - - var signature; - if (alg[0] === 'hmac') { - if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key)) - throw (new TypeError('options.key must be a string or Buffer')); - - var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key); - hmac.update(stringToSign); - signature = hmac.digest('base64'); - - } else { - var key = options.key; - if (typeof (key) === 'string' || Buffer.isBuffer(key)) - key = sshpk.parsePrivateKey(options.key); - - assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]), - 'options.key must be a sshpk.PrivateKey'); - - if (!PK_ALGOS[key.type]) { - throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' + - 'keys are not supported')); - } - - if (alg[0] !== undefined && key.type !== alg[0]) { - throw (new InvalidAlgorithmError('options.key must be a ' + - alg[0].toUpperCase() + ' key, was given a ' + - key.type.toUpperCase() + ' key instead')); - } - - var signer = key.createSign(alg[1]); - signer.update(stringToSign); - var sigObj = signer.sign(); - if (!HASH_ALGOS[sigObj.hashAlgorithm]) { - throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() + - ' is not a supported hash algorithm')); - } - options.algorithm = key.type + '-' + sigObj.hashAlgorithm; - signature = sigObj.toString(); - assert.notStrictEqual(signature, '', 'empty signature produced'); - } - - var authzHeaderName = options.authorizationHeaderName || 'Authorization'; - - request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT, - options.keyId, - options.algorithm, - options.headers.join(' '), - signature)); - - return true; - } - -}; - - -/***/ }), - -/***/ 5689: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = __webpack_require__(6631); -var sshpk = __webpack_require__(7022); -var util = __webpack_require__(1669); - -var HASH_ALGOS = { - 'sha1': true, - 'sha256': true, - 'sha512': true -}; - -var PK_ALGOS = { - 'rsa': true, - 'dsa': true, - 'ecdsa': true -}; - -function HttpSignatureError(message, caller) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, caller || HttpSignatureError); - - this.message = message; - this.name = caller.name; + if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(str, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(str, offset); + }; + EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) { + if (start !== end) { + var digitCount = end - start; + this.result = + this.result * Math.pow(base, digitCount) + + parseInt(str.substr(start, digitCount), base); + this.consumed += digitCount; + } + }; + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericHex = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 16); + return this.emitNumericEntity(char, 3); + } + } + this.addToNumericResult(str, startIdx, offset, 16); + return -1; + }; + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericDecimal = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 10); + return this.emitNumericEntity(char, 2); + } + } + this.addToNumericResult(str, startIdx, offset, 10); + return -1; + }; + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) { + var _a; + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } + else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + }; + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNamedEntity = function (str, offset) { + var decodeTree = this.decodeTree; + var current = decodeTree[this.treeIndex]; + // The mask is the number of bytes of the value, including the current byte. + var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + for (; offset < str.length; offset++, this.excess++) { + var char = str.charCodeAt(offset); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if (this.decodeMode !== DecodingMode.Strict) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + } + return -1; + }; + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () { + var _a; + var _b = this, result = _b.result, decodeTree = _b.decodeTree; + var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); + return this.consumed; + }; + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) { + var decodeTree = this.decodeTree; + this.emitCodePoint(valueLength === 1 + ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH + : decodeTree[result + 1], consumed); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + }; + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.end = function () { + var _a; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + }; + return EntityDecoder; +}()); +exports.EntityDecoder = EntityDecoder; +/** + * Creates a function that decodes entities in a string. + * + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ +function getDecoder(decodeTree) { + var ret = ""; + var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); }); + return function decodeWithTrie(str, decodeMode) { + var lastIndex = 0; + var offset = 0; + while ((offset = str.indexOf("&", offset)) >= 0) { + ret += str.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + var len = decoder.write(str, + // Skip the "&" + offset + 1); + if (len < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + len; + // If `len` is 0, skip the current `&` and continue. + offset = len === 0 ? lastIndex + 1 : lastIndex; + } + var result = ret + str.slice(lastIndex); + // Make sure we don't keep a reference to the final string. + ret = ""; + return result; + }; } -util.inherits(HttpSignatureError, Error); - -function InvalidAlgorithmError(message) { - HttpSignatureError.call(this, message, InvalidAlgorithmError); +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +function determineBranch(decodeTree, current, nodeIdx, char) { + var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + var jumpOffset = current & BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + var value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIdx + value] - 1; + } + // Case 3: Multiple branches encoded in dictionary + // Binary search for the character. + var lo = nodeIdx; + var hi = lo + branchCount - 1; + while (lo <= hi) { + var mid = (lo + hi) >>> 1; + var midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } + else if (midVal > char) { + hi = mid - 1; + } + else { + return decodeTree[mid + branchCount]; + } + } + return -1; } -util.inherits(InvalidAlgorithmError, HttpSignatureError); - -function validateAlgorithm(algorithm) { - var alg = algorithm.toLowerCase().split('-'); - - if (alg.length !== 2) { - throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' + - 'valid algorithm')); - } - - if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) { - throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' + - 'are not supported')); - } - - if (!HASH_ALGOS[alg[1]]) { - throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' + - 'supported hash algorithm')); - } - - return (alg); +exports.determineBranch = determineBranch; +var htmlDecoder = getDecoder(decode_data_html_js_1.default); +var xmlDecoder = getDecoder(decode_data_xml_js_1.default); +/** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +function decodeHTML(str, mode) { + if (mode === void 0) { mode = DecodingMode.Legacy; } + return htmlDecoder(str, mode); } - -///--- API - -module.exports = { - - HASH_ALGOS: HASH_ALGOS, - PK_ALGOS: PK_ALGOS, - - HttpSignatureError: HttpSignatureError, - InvalidAlgorithmError: InvalidAlgorithmError, - - validateAlgorithm: validateAlgorithm, - - /** - * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file. - * - * The intent of this module is to interoperate with OpenSSL only, - * specifically the node crypto module's `verify` method. - * - * @param {String} key an OpenSSH public key. - * @return {String} PEM encoded form of the RSA public key. - * @throws {TypeError} on bad input. - * @throws {Error} on invalid ssh key formatted data. - */ - sshKeyToPEM: function sshKeyToPEM(key) { - assert.string(key, 'ssh_key'); - - var k = sshpk.parseKey(key, 'ssh'); - return (k.toString('pem')); - }, - - - /** - * Generates an OpenSSH fingerprint from an ssh public key. - * - * @param {String} key an OpenSSH public key. - * @return {String} key fingerprint. - * @throws {TypeError} on bad input. - * @throws {Error} if what you passed doesn't look like an ssh public key. - */ - fingerprint: function fingerprint(key) { - assert.string(key, 'ssh_key'); - - var k = sshpk.parseKey(key, 'ssh'); - return (k.fingerprint('md5').toString('hex')); - }, - - /** - * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa) - * - * The reverse of the above function. - */ - pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) { - assert.equal('string', typeof (pem), 'typeof pem'); - - var k = sshpk.parseKey(pem, 'pem'); - k.comment = comment; - return (k.toString('ssh')); - } -}; - +exports.decodeHTML = decodeHTML; +/** + * Decodes an HTML string in an attribute. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeHTMLAttribute(str) { + return htmlDecoder(str, DecodingMode.Attribute); +} +exports.decodeHTMLAttribute = decodeHTMLAttribute; +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeHTMLStrict(str) { + return htmlDecoder(str, DecodingMode.Strict); +} +exports.decodeHTMLStrict = decodeHTMLStrict; +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeXML(str) { + return xmlDecoder(str, DecodingMode.Strict); +} +exports.decodeXML = decodeXML; +//# sourceMappingURL=decode.js.map /***/ }), /***/ 1227: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports) => { -// Copyright 2015 Joyent, Inc. +"use strict"; -var assert = __webpack_require__(6631); -var crypto = __webpack_require__(6417); -var sshpk = __webpack_require__(7022); -var utils = __webpack_require__(5689); +// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.replaceCodePoint = exports.fromCodePoint = void 0; +var decodeMap = new Map([ + [0, 65533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], +]); +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +exports.fromCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins +(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) { + var output = ""; + if (codePoint > 0xffff) { + codePoint -= 0x10000; + output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); + codePoint = 0xdc00 | (codePoint & 0x3ff); + } + output += String.fromCharCode(codePoint); + return output; +}; +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +function replaceCodePoint(codePoint) { + var _a; + if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { + return 0xfffd; + } + return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; +} +exports.replaceCodePoint = replaceCodePoint; +/** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ +function decodeCodePoint(codePoint) { + return (0, exports.fromCodePoint)(replaceCodePoint(codePoint)); +} +exports["default"] = decodeCodePoint; +//# sourceMappingURL=decode_codepoint.js.map -var HASH_ALGOS = utils.HASH_ALGOS; -var PK_ALGOS = utils.PK_ALGOS; -var InvalidAlgorithmError = utils.InvalidAlgorithmError; -var HttpSignatureError = utils.HttpSignatureError; -var validateAlgorithm = utils.validateAlgorithm; +/***/ }), -///--- Exported API +/***/ 2006: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { -module.exports = { - /** - * Verify RSA/DSA signature against public key. You are expected to pass in - * an object that was returned from `parse()`. - * - * @param {Object} parsedSignature the object you got from `parse`. - * @param {String} pubkey RSA/DSA private key PEM. - * @return {Boolean} true if valid, false otherwise. - * @throws {TypeError} if you pass in bad arguments. - * @throws {InvalidAlgorithmError} - */ - verifySignature: function verifySignature(parsedSignature, pubkey) { - assert.object(parsedSignature, 'parsedSignature'); - if (typeof (pubkey) === 'string' || Buffer.isBuffer(pubkey)) - pubkey = sshpk.parseKey(pubkey); - assert.ok(sshpk.Key.isKey(pubkey, [1, 1]), 'pubkey must be a sshpk.Key'); +"use strict"; - var alg = validateAlgorithm(parsedSignature.algorithm); - if (alg[0] === 'hmac' || alg[0] !== pubkey.type) - return (false); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.encodeNonAsciiHTML = exports.encodeHTML = void 0; +var encode_html_js_1 = __importDefault(__nccwpck_require__(8180)); +var escape_js_1 = __nccwpck_require__(7654); +var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g; +/** + * Encodes all characters in the input using HTML entities. This includes + * characters that are valid ASCII characters in HTML documents, such as `#`. + * + * To get a more compact output, consider using the `encodeNonAsciiHTML` + * function, which will only encode characters that are not valid in HTML + * documents, as well as non-ASCII characters. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +function encodeHTML(data) { + return encodeHTMLTrieRe(htmlReplacer, data); +} +exports.encodeHTML = encodeHTML; +/** + * Encodes all non-ASCII characters, as well as characters not valid in HTML + * documents using HTML entities. This function will not encode characters that + * are valid in HTML documents, such as `#`. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +function encodeNonAsciiHTML(data) { + return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data); +} +exports.encodeNonAsciiHTML = encodeNonAsciiHTML; +function encodeHTMLTrieRe(regExp, str) { + var ret = ""; + var lastIdx = 0; + var match; + while ((match = regExp.exec(str)) !== null) { + var i = match.index; + ret += str.substring(lastIdx, i); + var char = str.charCodeAt(i); + var next = encode_html_js_1.default.get(char); + if (typeof next === "object") { + // We are in a branch. Try to match the next char. + if (i + 1 < str.length) { + var nextChar = str.charCodeAt(i + 1); + var value = typeof next.n === "number" + ? next.n === nextChar + ? next.o + : undefined + : next.n.get(nextChar); + if (value !== undefined) { + ret += value; + lastIdx = regExp.lastIndex += 1; + continue; + } + } + next = next.v; + } + // We might have a tree node without a value; skip and use a numeric entity. + if (next !== undefined) { + ret += next; + lastIdx = i + 1; + } + else { + var cp = (0, escape_js_1.getCodePoint)(str, i); + ret += "&#x".concat(cp.toString(16), ";"); + // Increase by 1 if we have a surrogate pair + lastIdx = regExp.lastIndex += Number(cp !== char); + } + } + return ret + str.substr(lastIdx); +} +//# sourceMappingURL=encode.js.map - var v = pubkey.createVerify(alg[1]); - v.update(parsedSignature.signingString); - return (v.verify(parsedSignature.params.signature, 'base64')); - }, +/***/ }), - /** - * Verify HMAC against shared secret. You are expected to pass in an object - * that was returned from `parse()`. - * - * @param {Object} parsedSignature the object you got from `parse`. - * @param {String} secret HMAC shared secret. - * @return {Boolean} true if valid, false otherwise. - * @throws {TypeError} if you pass in bad arguments. - * @throws {InvalidAlgorithmError} - */ - verifyHMAC: function verifyHMAC(parsedSignature, secret) { - assert.object(parsedSignature, 'parsedHMAC'); - assert.string(secret, 'secret'); +/***/ 7654: +/***/ ((__unused_webpack_module, exports) => { - var alg = validateAlgorithm(parsedSignature.algorithm); - if (alg[0] !== 'hmac') - return (false); +"use strict"; - var hashAlg = alg[1].toUpperCase(); +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0; +exports.xmlReplacer = /["&'<>$\x80-\uFFFF]/g; +var xmlCodeMap = new Map([ + [34, """], + [38, "&"], + [39, "'"], + [60, "<"], + [62, ">"], +]); +// For compatibility with node < 4, we wrap `codePointAt` +exports.getCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +String.prototype.codePointAt != null + ? function (str, index) { return str.codePointAt(index); } + : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + function (c, index) { + return (c.charCodeAt(index) & 0xfc00) === 0xd800 + ? (c.charCodeAt(index) - 0xd800) * 0x400 + + c.charCodeAt(index + 1) - + 0xdc00 + + 0x10000 + : c.charCodeAt(index); + }; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using XML entities. + * + * If a character has no equivalent entity, a + * numeric hexadecimal reference (eg. `ü`) will be used. + */ +function encodeXML(str) { + var ret = ""; + var lastIdx = 0; + var match; + while ((match = exports.xmlReplacer.exec(str)) !== null) { + var i = match.index; + var char = str.charCodeAt(i); + var next = xmlCodeMap.get(char); + if (next !== undefined) { + ret += str.substring(lastIdx, i) + next; + lastIdx = i + 1; + } + else { + ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, exports.getCodePoint)(str, i).toString(16), ";"); + // Increase by 1 if we have a surrogate pair + lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800); + } + } + return ret + str.substr(lastIdx); +} +exports.encodeXML = encodeXML; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using numeric hexadecimal reference (eg. `ü`). + * + * Have a look at `escapeUTF8` if you want a more concise output at the expense + * of reduced transportability. + * + * @param data String to escape. + */ +exports.escape = encodeXML; +/** + * Creates a function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + * + * @param regex Regular expression to match characters to escape. + * @param map Map of characters to escape to their entities. + * + * @returns Function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + */ +function getEscaper(regex, map) { + return function escape(data) { + var match; + var lastIdx = 0; + var result = ""; + while ((match = regex.exec(data))) { + if (lastIdx !== match.index) { + result += data.substring(lastIdx, match.index); + } + // We know that this character will be in the map. + result += map.get(match[0].charCodeAt(0)); + // Every match will be of length 1 + lastIdx = match.index + 1; + } + return result + data.substring(lastIdx); + }; +} +/** + * Encodes all characters not valid in XML documents using XML entities. + * + * Note that the output will be character-set dependent. + * + * @param data String to escape. + */ +exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); +/** + * Encodes all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +exports.escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([ + [34, """], + [38, "&"], + [160, " "], +])); +/** + * Encodes all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +exports.escapeText = getEscaper(/[&<>\u00A0]/g, new Map([ + [38, "&"], + [60, "<"], + [62, ">"], + [160, " "], +])); +//# sourceMappingURL=escape.js.map - var hmac = crypto.createHmac(hashAlg, secret); - hmac.update(parsedSignature.signingString); +/***/ }), - /* - * Now double-hash to avoid leaking timing information - there's - * no easy constant-time compare in JS, so we use this approach - * instead. See for more info: - * https://www.isecpartners.com/blog/2011/february/double-hmac- - * verification.aspx +/***/ 6970: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// Generated using scripts/write-decode-map.ts +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports["default"] = new Uint16Array( +// prettier-ignore +"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" + .split("") + .map(function (c) { return c.charCodeAt(0); })); +//# sourceMappingURL=decode-data-html.js.map + +/***/ }), + +/***/ 7359: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// Generated using scripts/write-decode-map.ts +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports["default"] = new Uint16Array( +// prettier-ignore +"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" + .split("") + .map(function (c) { return c.charCodeAt(0); })); +//# sourceMappingURL=decode-data-xml.js.map + +/***/ }), + +/***/ 8180: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// Generated using scripts/write-encode-map.ts +Object.defineProperty(exports, "__esModule", ({ value: true })); +function restoreDiff(arr) { + for (var i = 1; i < arr.length; i++) { + arr[i][0] += arr[i - 1][0] + 1; + } + return arr; +} +// prettier-ignore +exports["default"] = new Map(/* #__PURE__ */ restoreDiff([[9, " "], [0, " "], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); +//# sourceMappingURL=encode-html.js.map + +/***/ }), + +/***/ 3000: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = void 0; +var decode_js_1 = __nccwpck_require__(5107); +var encode_js_1 = __nccwpck_require__(2006); +var escape_js_1 = __nccwpck_require__(7654); +/** The level of entities to support. */ +var EntityLevel; +(function (EntityLevel) { + /** Support only XML entities. */ + EntityLevel[EntityLevel["XML"] = 0] = "XML"; + /** Support HTML entities, which are a superset of XML entities. */ + EntityLevel[EntityLevel["HTML"] = 1] = "HTML"; +})(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {})); +var EncodingMode; +(function (EncodingMode) { + /** + * The output is UTF-8 encoded. Only characters that need escaping within + * XML will be escaped. */ - var h1 = crypto.createHmac(hashAlg, secret); - h1.update(hmac.digest()); - h1 = h1.digest(); - var h2 = crypto.createHmac(hashAlg, secret); - h2.update(new Buffer(parsedSignature.params.signature, 'base64')); - h2 = h2.digest(); - - /* Node 0.8 returns strings from .digest(). */ - if (typeof (h1) === 'string') - return (h1 === h2); - /* And node 0.10 lacks the .equals() method on Buffers. */ - if (Buffer.isBuffer(h1) && !h1.equals) - return (h1.toString('binary') === h2.toString('binary')); - - return (h1.equals(h2)); - } -}; - + EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8"; + /** + * The output consists only of ASCII characters. Characters that need + * escaping within HTML, and characters that aren't ASCII characters will + * be escaped. + */ + EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII"; + /** + * Encode all characters that have an equivalent entity, as well as all + * characters that are not ASCII characters. + */ + EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive"; + /** + * Encode all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + EncodingMode[EncodingMode["Attribute"] = 3] = "Attribute"; + /** + * Encode all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + EncodingMode[EncodingMode["Text"] = 4] = "Text"; +})(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {})); +/** + * Decodes a string with entities. + * + * @param data String to decode. + * @param options Decoding options. + */ +function decode(data, options) { + if (options === void 0) { options = EntityLevel.XML; } + var level = typeof options === "number" ? options : options.level; + if (level === EntityLevel.HTML) { + var mode = typeof options === "object" ? options.mode : undefined; + return (0, decode_js_1.decodeHTML)(data, mode); + } + return (0, decode_js_1.decodeXML)(data); +} +exports.decode = decode; +/** + * Decodes a string with entities. Does not allow missing trailing semicolons for entities. + * + * @param data String to decode. + * @param options Decoding options. + * @deprecated Use `decode` with the `mode` set to `Strict`. + */ +function decodeStrict(data, options) { + var _a; + if (options === void 0) { options = EntityLevel.XML; } + var opts = typeof options === "number" ? { level: options } : options; + (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = decode_js_1.DecodingMode.Strict); + return decode(data, opts); +} +exports.decodeStrict = decodeStrict; +/** + * Encodes a string with entities. + * + * @param data String to encode. + * @param options Encoding options. + */ +function encode(data, options) { + if (options === void 0) { options = EntityLevel.XML; } + var opts = typeof options === "number" ? { level: options } : options; + // Mode `UTF8` just escapes XML entities + if (opts.mode === EncodingMode.UTF8) + return (0, escape_js_1.escapeUTF8)(data); + if (opts.mode === EncodingMode.Attribute) + return (0, escape_js_1.escapeAttribute)(data); + if (opts.mode === EncodingMode.Text) + return (0, escape_js_1.escapeText)(data); + if (opts.level === EntityLevel.HTML) { + if (opts.mode === EncodingMode.ASCII) { + return (0, encode_js_1.encodeNonAsciiHTML)(data); + } + return (0, encode_js_1.encodeHTML)(data); + } + // ASCII and Extensive are equivalent + return (0, escape_js_1.encodeXML)(data); +} +exports.encode = encode; +var escape_js_2 = __nccwpck_require__(7654); +Object.defineProperty(exports, "encodeXML", ({ enumerable: true, get: function () { return escape_js_2.encodeXML; } })); +Object.defineProperty(exports, "escape", ({ enumerable: true, get: function () { return escape_js_2.escape; } })); +Object.defineProperty(exports, "escapeUTF8", ({ enumerable: true, get: function () { return escape_js_2.escapeUTF8; } })); +Object.defineProperty(exports, "escapeAttribute", ({ enumerable: true, get: function () { return escape_js_2.escapeAttribute; } })); +Object.defineProperty(exports, "escapeText", ({ enumerable: true, get: function () { return escape_js_2.escapeText; } })); +var encode_js_2 = __nccwpck_require__(2006); +Object.defineProperty(exports, "encodeHTML", ({ enumerable: true, get: function () { return encode_js_2.encodeHTML; } })); +Object.defineProperty(exports, "encodeNonAsciiHTML", ({ enumerable: true, get: function () { return encode_js_2.encodeNonAsciiHTML; } })); +// Legacy aliases (deprecated) +Object.defineProperty(exports, "encodeHTML4", ({ enumerable: true, get: function () { return encode_js_2.encodeHTML; } })); +Object.defineProperty(exports, "encodeHTML5", ({ enumerable: true, get: function () { return encode_js_2.encodeHTML; } })); +var decode_js_2 = __nccwpck_require__(5107); +Object.defineProperty(exports, "EntityDecoder", ({ enumerable: true, get: function () { return decode_js_2.EntityDecoder; } })); +Object.defineProperty(exports, "DecodingMode", ({ enumerable: true, get: function () { return decode_js_2.DecodingMode; } })); +Object.defineProperty(exports, "decodeXML", ({ enumerable: true, get: function () { return decode_js_2.decodeXML; } })); +Object.defineProperty(exports, "decodeHTML", ({ enumerable: true, get: function () { return decode_js_2.decodeHTML; } })); +Object.defineProperty(exports, "decodeHTMLStrict", ({ enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } })); +Object.defineProperty(exports, "decodeHTMLAttribute", ({ enumerable: true, get: function () { return decode_js_2.decodeHTMLAttribute; } })); +// Legacy aliases (deprecated) +Object.defineProperty(exports, "decodeHTML4", ({ enumerable: true, get: function () { return decode_js_2.decodeHTML; } })); +Object.defineProperty(exports, "decodeHTML5", ({ enumerable: true, get: function () { return decode_js_2.decodeHTML; } })); +Object.defineProperty(exports, "decodeHTML4Strict", ({ enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } })); +Object.defineProperty(exports, "decodeHTML5Strict", ({ enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } })); +Object.defineProperty(exports, "decodeXMLStrict", ({ enumerable: true, get: function () { return decode_js_2.decodeXML; } })); +//# sourceMappingURL=index.js.map /***/ }), -/***/ 657: -/***/ ((module) => { - -module.exports = isTypedArray -isTypedArray.strict = isStrictTypedArray -isTypedArray.loose = isLooseTypedArray - -var toString = Object.prototype.toString -var names = { - '[object Int8Array]': true - , '[object Int16Array]': true - , '[object Int32Array]': true - , '[object Uint8Array]': true - , '[object Uint8ClampedArray]': true - , '[object Uint16Array]': true - , '[object Uint32Array]': true - , '[object Float32Array]': true - , '[object Float64Array]': true -} - -function isTypedArray(arr) { - return ( - isStrictTypedArray(arr) - || isLooseTypedArray(arr) - ) -} - -function isStrictTypedArray(arr) { - return ( - arr instanceof Int8Array - || arr instanceof Int16Array - || arr instanceof Int32Array - || arr instanceof Uint8Array - || arr instanceof Uint8ClampedArray - || arr instanceof Uint16Array - || arr instanceof Uint32Array - || arr instanceof Float32Array - || arr instanceof Float64Array - ) -} - -function isLooseTypedArray(arr) { - return names[toString.call(arr)] -} - - -/***/ }), - -/***/ 3362: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var stream = __webpack_require__(2413) - - -function isStream (obj) { - return obj instanceof stream.Stream -} - - -function isReadable (obj) { - return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object' -} - - -function isWritable (obj) { - return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object' -} - - -function isDuplex (obj) { - return isReadable(obj) && isWritable(obj) -} - - -module.exports = isStream -module.exports.isReadable = isReadable -module.exports.isWritable = isWritable -module.exports.isDuplex = isDuplex - - -/***/ }), - -/***/ 5587: -/***/ (function(module, exports) { - -(function(){ - - // Copyright (c) 2005 Tom Wu - // All Rights Reserved. - // See "LICENSE" for details. - - // Basic JavaScript BN library - subset useful for RSA encryption. - - // Bits per digit - var dbits; - - // JavaScript engine analysis - var canary = 0xdeadbeefcafe; - var j_lm = ((canary&0xffffff)==0xefcafe); - - // (public) Constructor - function BigInteger(a,b,c) { - if(a != null) - if("number" == typeof a) this.fromNumber(a,b,c); - else if(b == null && "string" != typeof a) this.fromString(a,256); - else this.fromString(a,b); - } - - // return new, unset BigInteger - function nbi() { return new BigInteger(null); } - - // am: Compute w_j += (x*this_i), propagate carries, - // c is initial carry, returns final carry. - // c < 3*dvalue, x < 2*dvalue, this_i < dvalue - // We need to select the fastest one that works in this environment. - - // am1: use a single mult and divide to get the high bits, - // max digit bits should be 26 because - // max internal value = 2*dvalue^2-2*dvalue (< 2^53) - function am1(i,x,w,j,c,n) { - while(--n >= 0) { - var v = x*this[i++]+w[j]+c; - c = Math.floor(v/0x4000000); - w[j++] = v&0x3ffffff; - } - return c; - } - // am2 avoids a big mult-and-extract completely. - // Max digit bits should be <= 30 because we do bitwise ops - // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) - function am2(i,x,w,j,c,n) { - var xl = x&0x7fff, xh = x>>15; - while(--n >= 0) { - var l = this[i]&0x7fff; - var h = this[i++]>>15; - var m = xh*l+h*xl; - l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); - c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); - w[j++] = l&0x3fffffff; - } - return c; - } - // Alternately, set max digit bits to 28 since some - // browsers slow down when dealing with 32-bit numbers. - function am3(i,x,w,j,c,n) { - var xl = x&0x3fff, xh = x>>14; - while(--n >= 0) { - var l = this[i]&0x3fff; - var h = this[i++]>>14; - var m = xh*l+h*xl; - l = xl*l+((m&0x3fff)<<14)+w[j]+c; - c = (l>>28)+(m>>14)+xh*h; - w[j++] = l&0xfffffff; - } - return c; - } - var inBrowser = typeof navigator !== "undefined"; - if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) { - BigInteger.prototype.am = am2; - dbits = 30; - } - else if(inBrowser && j_lm && (navigator.appName != "Netscape")) { - BigInteger.prototype.am = am1; - dbits = 26; - } - else { // Mozilla/Netscape seems to prefer am3 - BigInteger.prototype.am = am3; - dbits = 28; - } - - BigInteger.prototype.DB = dbits; - BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; - r.t = this.t; - r.s = this.s; - } - - // (protected) set from integer value x, -DV <= x < DV - function bnpFromInt(x) { - this.t = 1; - this.s = (x<0)?-1:0; - if(x > 0) this[0] = x; - else if(x < -1) this[0] = x+this.DV; - else this.t = 0; - } - - // return bigint initialized to value - function nbv(i) { var r = nbi(); r.fromInt(i); return r; } - - // (protected) set from string and radix - function bnpFromString(s,b) { - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 256) k = 8; // byte array - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else { this.fromRadix(s,b); return; } - this.t = 0; - this.s = 0; - var i = s.length, mi = false, sh = 0; - while(--i >= 0) { - var x = (k==8)?s[i]&0xff:intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-") mi = true; - continue; - } - mi = false; - if(sh == 0) - this[this.t++] = x; - else if(sh+k > this.DB) { - this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); - } - else - this[this.t-1] |= x<= this.DB) sh -= this.DB; - } - if(k == 8 && (s[0]&0x80) != 0) { - this.s = -1; - if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; - } - - // (public) return string representation in given radix - function bnToString(b) { - if(this.s < 0) return "-"+this.negate().toString(b); - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else return this.toRadix(b); - var km = (1< 0) { - if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } - while(i >= 0) { - if(p < k) { - d = (this[i]&((1<>(p+=this.DB-k); - } - else { - d = (this[i]>>(p-=k))&km; - if(p <= 0) { p += this.DB; --i; } - } - if(d > 0) m = true; - if(m) r += int2char(d); - } - } - return m?r:"0"; - } - - // (public) -this - function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } - - // (public) |this| - function bnAbs() { return (this.s<0)?this.negate():this; } - - // (public) return + if this > a, - if this < a, 0 if equal - function bnCompareTo(a) { - var r = this.s-a.s; - if(r != 0) return r; - var i = this.t; - r = i-a.t; - if(r != 0) return (this.s<0)?-r:r; - while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; - return 0; - } - - // returns bit length of the integer x - function nbits(x) { - var r = 1, t; - if((t=x>>>16) != 0) { x = t; r += 16; } - if((t=x>>8) != 0) { x = t; r += 8; } - if((t=x>>4) != 0) { x = t; r += 4; } - if((t=x>>2) != 0) { x = t; r += 2; } - if((t=x>>1) != 0) { x = t; r += 1; } - return r; - } - - // (public) return the number of bits in "this" - function bnBitLength() { - if(this.t <= 0) return 0; - return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); - } - - // (protected) r = this << n*DB - function bnpDLShiftTo(n,r) { - var i; - for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; - for(i = n-1; i >= 0; --i) r[i] = 0; - r.t = this.t+n; - r.s = this.s; - } - - // (protected) r = this >> n*DB - function bnpDRShiftTo(n,r) { - for(var i = n; i < this.t; ++i) r[i-n] = this[i]; - r.t = Math.max(this.t-n,0); - r.s = this.s; - } - - // (protected) r = this << n - function bnpLShiftTo(n,r) { - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<= 0; --i) { - r[i+ds+1] = (this[i]>>cbs)|c; - c = (this[i]&bm)<= 0; --i) r[i] = 0; - r[ds] = c; - r.t = this.t+ds+1; - r.s = this.s; - r.clamp(); - } - - // (protected) r = this >> n - function bnpRShiftTo(n,r) { - r.s = this.s; - var ds = Math.floor(n/this.DB); - if(ds >= this.t) { r.t = 0; return; } - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<>bs; - for(var i = ds+1; i < this.t; ++i) { - r[i-ds-1] |= (this[i]&bm)<>bs; - } - if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; - } - if(a.t < this.t) { - c -= a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c -= a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c -= a.s; - } - r.s = (c<0)?-1:0; - if(c < -1) r[i++] = this.DV+c; - else if(c > 0) r[i++] = c; - r.t = i; - r.clamp(); - } - - // (protected) r = this * a, r != this,a (HAC 14.12) - // "this" should be the larger one if appropriate. - function bnpMultiplyTo(a,r) { - var x = this.abs(), y = a.abs(); - var i = x.t; - r.t = i+y.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); - r.s = 0; - r.clamp(); - if(this.s != a.s) BigInteger.ZERO.subTo(r,r); - } - - // (protected) r = this^2, r != this (HAC 14.16) - function bnpSquareTo(r) { - var x = this.abs(); - var i = r.t = 2*x.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < x.t-1; ++i) { - var c = x.am(i,x[i],r,2*i,0,1); - if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { - r[i+x.t] -= x.DV; - r[i+x.t+1] = 1; - } - } - if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); - r.s = 0; - r.clamp(); - } - - // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) - // r != q, this != m. q or r may be null. - function bnpDivRemTo(m,q,r) { - var pm = m.abs(); - if(pm.t <= 0) return; - var pt = this.abs(); - if(pt.t < pm.t) { - if(q != null) q.fromInt(0); - if(r != null) this.copyTo(r); - return; - } - if(r == null) r = nbi(); - var y = nbi(), ts = this.s, ms = m.s; - var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus - if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } - else { pm.copyTo(y); pt.copyTo(r); } - var ys = y.t; - var y0 = y[ys-1]; - if(y0 == 0) return; - var yt = y0*(1<1)?y[ys-2]>>this.F2:0); - var d1 = this.FV/yt, d2 = (1<= 0) { - r[r.t++] = 1; - r.subTo(t,r); - } - BigInteger.ONE.dlShiftTo(ys,t); - t.subTo(y,y); // "negative" y so we can replace sub with am later - while(y.t < ys) y[y.t++] = 0; - while(--j >= 0) { - // Estimate quotient digit - var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); - if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out - y.dlShiftTo(j,t); - r.subTo(t,r); - while(r[i] < --qd) r.subTo(t,r); - } - } - if(q != null) { - r.drShiftTo(ys,q); - if(ts != ms) BigInteger.ZERO.subTo(q,q); - } - r.t = ys; - r.clamp(); - if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder - if(ts < 0) BigInteger.ZERO.subTo(r,r); - } - - // (public) this mod a - function bnMod(a) { - var r = nbi(); - this.abs().divRemTo(a,null,r); - if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); - return r; - } - - // Modular reduction using "classic" algorithm - function Classic(m) { this.m = m; } - function cConvert(x) { - if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); - else return x; - } - function cRevert(x) { return x; } - function cReduce(x) { x.divRemTo(this.m,null,x); } - function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - Classic.prototype.convert = cConvert; - Classic.prototype.revert = cRevert; - Classic.prototype.reduce = cReduce; - Classic.prototype.mulTo = cMulTo; - Classic.prototype.sqrTo = cSqrTo; - - // (protected) return "-1/this % 2^DB"; useful for Mont. reduction - // justification: - // xy == 1 (mod m) - // xy = 1+km - // xy(2-xy) = (1+km)(1-km) - // x[y(2-xy)] = 1-k^2m^2 - // x[y(2-xy)] == 1 (mod m^2) - // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 - // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. - // JS multiply "overflows" differently from C/C++, so care is needed here. - function bnpInvDigit() { - if(this.t < 1) return 0; - var x = this[0]; - if((x&1) == 0) return 0; - var y = x&3; // y == 1/x mod 2^2 - y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 - y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 - y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 - // last step - calculate inverse mod DV directly; - // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints - y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits - // we really want the negative inverse, and -DV < y < DV - return (y>0)?this.DV-y:-y; - } - - // Montgomery reduction - function Montgomery(m) { - this.m = m; - this.mp = m.invDigit(); - this.mpl = this.mp&0x7fff; - this.mph = this.mp>>15; - this.um = (1<<(m.DB-15))-1; - this.mt2 = 2*m.t; - } - - // xR mod m - function montConvert(x) { - var r = nbi(); - x.abs().dlShiftTo(this.m.t,r); - r.divRemTo(this.m,null,r); - if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); - return r; - } - - // x/R mod m - function montRevert(x) { - var r = nbi(); - x.copyTo(r); - this.reduce(r); - return r; - } - - // x = x/R mod m (HAC 14.32) - function montReduce(x) { - while(x.t <= this.mt2) // pad x so am has enough room later - x[x.t++] = 0; - for(var i = 0; i < this.m.t; ++i) { - // faster way of calculating u0 = x[i]*mp mod DV - var j = x[i]&0x7fff; - var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; - // use am to combine the multiply-shift-add into one call - j = i+this.m.t; - x[j] += this.m.am(0,u0,x,i,0,this.m.t); - // propagate carry - while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } - } - x.clamp(); - x.drShiftTo(this.m.t,x); - if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = "x^2/R mod m"; x != r - function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = "xy/R mod m"; x,y != r - function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Montgomery.prototype.convert = montConvert; - Montgomery.prototype.revert = montRevert; - Montgomery.prototype.reduce = montReduce; - Montgomery.prototype.mulTo = montMulTo; - Montgomery.prototype.sqrTo = montSqrTo; - - // (protected) true iff this is even - function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } - - // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) - function bnpExp(e,z) { - if(e > 0xffffffff || e < 1) return BigInteger.ONE; - var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; - g.copyTo(r); - while(--i >= 0) { - z.sqrTo(r,r2); - if((e&(1< 0) z.mulTo(r2,g,r); - else { var t = r; r = r2; r2 = t; } - } - return z.revert(r); - } - - // (public) this^e % m, 0 <= e < 2^32 - function bnModPowInt(e,m) { - var z; - if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); - return this.exp(e,z); - } - - // protected - BigInteger.prototype.copyTo = bnpCopyTo; - BigInteger.prototype.fromInt = bnpFromInt; - BigInteger.prototype.fromString = bnpFromString; - BigInteger.prototype.clamp = bnpClamp; - BigInteger.prototype.dlShiftTo = bnpDLShiftTo; - BigInteger.prototype.drShiftTo = bnpDRShiftTo; - BigInteger.prototype.lShiftTo = bnpLShiftTo; - BigInteger.prototype.rShiftTo = bnpRShiftTo; - BigInteger.prototype.subTo = bnpSubTo; - BigInteger.prototype.multiplyTo = bnpMultiplyTo; - BigInteger.prototype.squareTo = bnpSquareTo; - BigInteger.prototype.divRemTo = bnpDivRemTo; - BigInteger.prototype.invDigit = bnpInvDigit; - BigInteger.prototype.isEven = bnpIsEven; - BigInteger.prototype.exp = bnpExp; - - // public - BigInteger.prototype.toString = bnToString; - BigInteger.prototype.negate = bnNegate; - BigInteger.prototype.abs = bnAbs; - BigInteger.prototype.compareTo = bnCompareTo; - BigInteger.prototype.bitLength = bnBitLength; - BigInteger.prototype.mod = bnMod; - BigInteger.prototype.modPowInt = bnModPowInt; - - // "constants" - BigInteger.ZERO = nbv(0); - BigInteger.ONE = nbv(1); - - // Copyright (c) 2005-2009 Tom Wu - // All Rights Reserved. - // See "LICENSE" for details. - - // Extended JavaScript BN functions, required for RSA private ops. - - // Version 1.1: new BigInteger("0", 10) returns "proper" zero - // Version 1.2: square() API, isProbablePrime fix - - // (public) - function bnClone() { var r = nbi(); this.copyTo(r); return r; } - - // (public) return value as integer - function bnIntValue() { - if(this.s < 0) { - if(this.t == 1) return this[0]-this.DV; - else if(this.t == 0) return -1; - } - else if(this.t == 1) return this[0]; - else if(this.t == 0) return 0; - // assumes 16 < DB < 32 - return ((this[1]&((1<<(32-this.DB))-1))<>24; } - - // (public) return value as short (assumes DB>=16) - function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } - - // (protected) return x s.t. r^x < DV - function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } - - // (public) 0 if this == 0, 1 if this > 0 - function bnSigNum() { - if(this.s < 0) return -1; - else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; - else return 1; - } - - // (protected) convert to radix string - function bnpToRadix(b) { - if(b == null) b = 10; - if(this.signum() == 0 || b < 2 || b > 36) return "0"; - var cs = this.chunkSize(b); - var a = Math.pow(b,cs); - var d = nbv(a), y = nbi(), z = nbi(), r = ""; - this.divRemTo(d,y,z); - while(y.signum() > 0) { - r = (a+z.intValue()).toString(b).substr(1) + r; - y.divRemTo(d,y,z); - } - return z.intValue().toString(b) + r; - } - - // (protected) convert from radix string - function bnpFromRadix(s,b) { - this.fromInt(0); - if(b == null) b = 10; - var cs = this.chunkSize(b); - var d = Math.pow(b,cs), mi = false, j = 0, w = 0; - for(var i = 0; i < s.length; ++i) { - var x = intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-" && this.signum() == 0) mi = true; - continue; - } - w = b*w+x; - if(++j >= cs) { - this.dMultiply(d); - this.dAddOffset(w,0); - j = 0; - w = 0; - } - } - if(j > 0) { - this.dMultiply(Math.pow(b,j)); - this.dAddOffset(w,0); - } - if(mi) BigInteger.ZERO.subTo(this,this); - } - - // (protected) alternate constructor - function bnpFromNumber(a,b,c) { - if("number" == typeof b) { - // new BigInteger(int,int,RNG) - if(a < 2) this.fromInt(1); - else { - this.fromNumber(a,c); - if(!this.testBit(a-1)) // force MSB set - this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); - if(this.isEven()) this.dAddOffset(1,0); // force odd - while(!this.isProbablePrime(b)) { - this.dAddOffset(2,0); - if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); - } - } - } - else { - // new BigInteger(int,RNG) - var x = new Array(), t = a&7; - x.length = (a>>3)+1; - b.nextBytes(x); - if(t > 0) x[0] &= ((1< 0) { - if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p) - r[k++] = d|(this.s<<(this.DB-p)); - while(i >= 0) { - if(p < 8) { - d = (this[i]&((1<>(p+=this.DB-8); - } - else { - d = (this[i]>>(p-=8))&0xff; - if(p <= 0) { p += this.DB; --i; } - } - if((d&0x80) != 0) d |= -256; - if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; - if(k > 0 || d != this.s) r[k++] = d; - } - } - return r; - } - - function bnEquals(a) { return(this.compareTo(a)==0); } - function bnMin(a) { return(this.compareTo(a)<0)?this:a; } - function bnMax(a) { return(this.compareTo(a)>0)?this:a; } - - // (protected) r = this op a (bitwise) - function bnpBitwiseTo(a,op,r) { - var i, f, m = Math.min(a.t,this.t); - for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); - if(a.t < this.t) { - f = a.s&this.DM; - for(i = m; i < this.t; ++i) r[i] = op(this[i],f); - r.t = this.t; - } - else { - f = this.s&this.DM; - for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); - r.t = a.t; - } - r.s = op(this.s,a.s); - r.clamp(); - } - - // (public) this & a - function op_and(x,y) { return x&y; } - function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } - - // (public) this | a - function op_or(x,y) { return x|y; } - function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } - - // (public) this ^ a - function op_xor(x,y) { return x^y; } - function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } - - // (public) this & ~a - function op_andnot(x,y) { return x&~y; } - function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } - - // (public) ~this - function bnNot() { - var r = nbi(); - for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i]; - r.t = this.t; - r.s = ~this.s; - return r; - } - - // (public) this << n - function bnShiftLeft(n) { - var r = nbi(); - if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); - return r; - } - - // (public) this >> n - function bnShiftRight(n) { - var r = nbi(); - if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); - return r; - } - - // return index of lowest 1-bit in x, x < 2^31 - function lbit(x) { - if(x == 0) return -1; - var r = 0; - if((x&0xffff) == 0) { x >>= 16; r += 16; } - if((x&0xff) == 0) { x >>= 8; r += 8; } - if((x&0xf) == 0) { x >>= 4; r += 4; } - if((x&3) == 0) { x >>= 2; r += 2; } - if((x&1) == 0) ++r; - return r; - } - - // (public) returns index of lowest 1-bit (or -1 if none) - function bnGetLowestSetBit() { - for(var i = 0; i < this.t; ++i) - if(this[i] != 0) return i*this.DB+lbit(this[i]); - if(this.s < 0) return this.t*this.DB; - return -1; - } - - // return number of 1 bits in x - function cbit(x) { - var r = 0; - while(x != 0) { x &= x-1; ++r; } - return r; - } - - // (public) return number of set bits - function bnBitCount() { - var r = 0, x = this.s&this.DM; - for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); - return r; - } - - // (public) true iff nth bit is set - function bnTestBit(n) { - var j = Math.floor(n/this.DB); - if(j >= this.t) return(this.s!=0); - return((this[j]&(1<<(n%this.DB)))!=0); - } - - // (protected) this op (1<>= this.DB; - } - if(a.t < this.t) { - c += a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c += a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += a.s; - } - r.s = (c<0)?-1:0; - if(c > 0) r[i++] = c; - else if(c < -1) r[i++] = this.DV+c; - r.t = i; - r.clamp(); - } - - // (public) this + a - function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } - - // (public) this - a - function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } - - // (public) this * a - function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } - - // (public) this^2 - function bnSquare() { var r = nbi(); this.squareTo(r); return r; } - - // (public) this / a - function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } - - // (public) this % a - function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } - - // (public) [this/a,this%a] - function bnDivideAndRemainder(a) { - var q = nbi(), r = nbi(); - this.divRemTo(a,q,r); - return new Array(q,r); - } - - // (protected) this *= n, this >= 0, 1 < n < DV - function bnpDMultiply(n) { - this[this.t] = this.am(0,n-1,this,0,0,this.t); - ++this.t; - this.clamp(); - } - - // (protected) this += n << w words, this >= 0 - function bnpDAddOffset(n,w) { - if(n == 0) return; - while(this.t <= w) this[this.t++] = 0; - this[w] += n; - while(this[w] >= this.DV) { - this[w] -= this.DV; - if(++w >= this.t) this[this.t++] = 0; - ++this[w]; - } - } - - // A "null" reducer - function NullExp() {} - function nNop(x) { return x; } - function nMulTo(x,y,r) { x.multiplyTo(y,r); } - function nSqrTo(x,r) { x.squareTo(r); } - - NullExp.prototype.convert = nNop; - NullExp.prototype.revert = nNop; - NullExp.prototype.mulTo = nMulTo; - NullExp.prototype.sqrTo = nSqrTo; - - // (public) this^e - function bnPow(e) { return this.exp(e,new NullExp()); } - - // (protected) r = lower n words of "this * a", a.t <= n - // "this" should be the larger one if appropriate. - function bnpMultiplyLowerTo(a,n,r) { - var i = Math.min(this.t+a.t,n); - r.s = 0; // assumes a,this >= 0 - r.t = i; - while(i > 0) r[--i] = 0; - var j; - for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); - for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); - r.clamp(); - } - - // (protected) r = "this * a" without lower n words, n > 0 - // "this" should be the larger one if appropriate. - function bnpMultiplyUpperTo(a,n,r) { - --n; - var i = r.t = this.t+a.t-n; - r.s = 0; // assumes a,this >= 0 - while(--i >= 0) r[i] = 0; - for(i = Math.max(n-this.t,0); i < a.t; ++i) - r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); - r.clamp(); - r.drShiftTo(1,r); - } - - // Barrett modular reduction - function Barrett(m) { - // setup Barrett - this.r2 = nbi(); - this.q3 = nbi(); - BigInteger.ONE.dlShiftTo(2*m.t,this.r2); - this.mu = this.r2.divide(m); - this.m = m; - } - - function barrettConvert(x) { - if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); - else if(x.compareTo(this.m) < 0) return x; - else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } - } - - function barrettRevert(x) { return x; } - - // x = x mod m (HAC 14.42) - function barrettReduce(x) { - x.drShiftTo(this.m.t-1,this.r2); - if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } - this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); - this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); - while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); - x.subTo(this.r2,x); - while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = x^2 mod m; x != r - function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = x*y mod m; x,y != r - function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Barrett.prototype.convert = barrettConvert; - Barrett.prototype.revert = barrettRevert; - Barrett.prototype.reduce = barrettReduce; - Barrett.prototype.mulTo = barrettMulTo; - Barrett.prototype.sqrTo = barrettSqrTo; - - // (public) this^e % m (HAC 14.85) - function bnModPow(e,m) { - var i = e.bitLength(), k, r = nbv(1), z; - if(i <= 0) return r; - else if(i < 18) k = 1; - else if(i < 48) k = 3; - else if(i < 144) k = 4; - else if(i < 768) k = 5; - else k = 6; - if(i < 8) - z = new Classic(m); - else if(m.isEven()) - z = new Barrett(m); - else - z = new Montgomery(m); - - // precomputation - var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { - var g2 = nbi(); - z.sqrTo(g[1],g2); - while(n <= km) { - g[n] = nbi(); - z.mulTo(g2,g[n-2],g[n]); - n += 2; - } - } - - var j = e.t-1, w, is1 = true, r2 = nbi(), t; - i = nbits(e[j])-1; - while(j >= 0) { - if(i >= k1) w = (e[j]>>(i-k1))&km; - else { - w = (e[j]&((1<<(i+1))-1))<<(k1-i); - if(j > 0) w |= e[j-1]>>(this.DB+i-k1); - } - - n = k; - while((w&1) == 0) { w >>= 1; --n; } - if((i -= n) < 0) { i += this.DB; --j; } - if(is1) { // ret == 1, don't bother squaring or multiplying it - g[w].copyTo(r); - is1 = false; - } - else { - while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } - if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } - z.mulTo(r2,g[w],r); - } - - while(j >= 0 && (e[j]&(1< 0) { - x.rShiftTo(g,x); - y.rShiftTo(g,y); - } - while(x.signum() > 0) { - if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); - if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); - if(x.compareTo(y) >= 0) { - x.subTo(y,x); - x.rShiftTo(1,x); - } - else { - y.subTo(x,y); - y.rShiftTo(1,y); - } - } - if(g > 0) y.lShiftTo(g,y); - return y; - } - - // (protected) this % n, n < 2^26 - function bnpModInt(n) { - if(n <= 0) return 0; - var d = this.DV%n, r = (this.s<0)?n-1:0; - if(this.t > 0) - if(d == 0) r = this[0]%n; - else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; - return r; - } - - // (public) 1/this % m (HAC 14.61) - function bnModInverse(m) { - var ac = m.isEven(); - if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; - var u = m.clone(), v = this.clone(); - var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); - while(u.signum() != 0) { - while(u.isEven()) { - u.rShiftTo(1,u); - if(ac) { - if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } - a.rShiftTo(1,a); - } - else if(!b.isEven()) b.subTo(m,b); - b.rShiftTo(1,b); - } - while(v.isEven()) { - v.rShiftTo(1,v); - if(ac) { - if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } - c.rShiftTo(1,c); - } - else if(!d.isEven()) d.subTo(m,d); - d.rShiftTo(1,d); - } - if(u.compareTo(v) >= 0) { - u.subTo(v,u); - if(ac) a.subTo(c,a); - b.subTo(d,b); - } - else { - v.subTo(u,v); - if(ac) c.subTo(a,c); - d.subTo(b,d); - } - } - if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; - if(d.compareTo(m) >= 0) return d.subtract(m); - if(d.signum() < 0) d.addTo(m,d); else return d; - if(d.signum() < 0) return d.add(m); else return d; - } - - var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]; - var lplim = (1<<26)/lowprimes[lowprimes.length-1]; - - // (public) test primality with certainty >= 1-.5^t - function bnIsProbablePrime(t) { - var i, x = this.abs(); - if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { - for(i = 0; i < lowprimes.length; ++i) - if(x[0] == lowprimes[i]) return true; - return false; - } - if(x.isEven()) return false; - i = 1; - while(i < lowprimes.length) { - var m = lowprimes[i], j = i+1; - while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; - m = x.modInt(m); - while(i < j) if(m%lowprimes[i++] == 0) return false; - } - return x.millerRabin(t); - } - - // (protected) true if probably prime (HAC 4.24, Miller-Rabin) - function bnpMillerRabin(t) { - var n1 = this.subtract(BigInteger.ONE); - var k = n1.getLowestSetBit(); - if(k <= 0) return false; - var r = n1.shiftRight(k); - t = (t+1)>>1; - if(t > lowprimes.length) t = lowprimes.length; - var a = nbi(); - for(var i = 0; i < t; ++i) { - //Pick bases at random, instead of starting at 2 - a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); - var y = a.modPow(r,this); - if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { - var j = 1; - while(j++ < k && y.compareTo(n1) != 0) { - y = y.modPowInt(2,this); - if(y.compareTo(BigInteger.ONE) == 0) return false; - } - if(y.compareTo(n1) != 0) return false; - } - } - return true; - } - - // protected - BigInteger.prototype.chunkSize = bnpChunkSize; - BigInteger.prototype.toRadix = bnpToRadix; - BigInteger.prototype.fromRadix = bnpFromRadix; - BigInteger.prototype.fromNumber = bnpFromNumber; - BigInteger.prototype.bitwiseTo = bnpBitwiseTo; - BigInteger.prototype.changeBit = bnpChangeBit; - BigInteger.prototype.addTo = bnpAddTo; - BigInteger.prototype.dMultiply = bnpDMultiply; - BigInteger.prototype.dAddOffset = bnpDAddOffset; - BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; - BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; - BigInteger.prototype.modInt = bnpModInt; - BigInteger.prototype.millerRabin = bnpMillerRabin; - - // public - BigInteger.prototype.clone = bnClone; - BigInteger.prototype.intValue = bnIntValue; - BigInteger.prototype.byteValue = bnByteValue; - BigInteger.prototype.shortValue = bnShortValue; - BigInteger.prototype.signum = bnSigNum; - BigInteger.prototype.toByteArray = bnToByteArray; - BigInteger.prototype.equals = bnEquals; - BigInteger.prototype.min = bnMin; - BigInteger.prototype.max = bnMax; - BigInteger.prototype.and = bnAnd; - BigInteger.prototype.or = bnOr; - BigInteger.prototype.xor = bnXor; - BigInteger.prototype.andNot = bnAndNot; - BigInteger.prototype.not = bnNot; - BigInteger.prototype.shiftLeft = bnShiftLeft; - BigInteger.prototype.shiftRight = bnShiftRight; - BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; - BigInteger.prototype.bitCount = bnBitCount; - BigInteger.prototype.testBit = bnTestBit; - BigInteger.prototype.setBit = bnSetBit; - BigInteger.prototype.clearBit = bnClearBit; - BigInteger.prototype.flipBit = bnFlipBit; - BigInteger.prototype.add = bnAdd; - BigInteger.prototype.subtract = bnSubtract; - BigInteger.prototype.multiply = bnMultiply; - BigInteger.prototype.divide = bnDivide; - BigInteger.prototype.remainder = bnRemainder; - BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; - BigInteger.prototype.modPow = bnModPow; - BigInteger.prototype.modInverse = bnModInverse; - BigInteger.prototype.pow = bnPow; - BigInteger.prototype.gcd = bnGCD; - BigInteger.prototype.isProbablePrime = bnIsProbablePrime; - - // JSBN-specific extension - BigInteger.prototype.square = bnSquare; - - // Expose the Barrett function - BigInteger.prototype.Barrett = Barrett - - // BigInteger interfaces not implemented in jsbn: - - // BigInteger(int signum, byte[] magnitude) - // double doubleValue() - // float floatValue() - // int hashCode() - // long longValue() - // static BigInteger valueOf(long val) - - // Random number generator - requires a PRNG backend, e.g. prng4.js - - // For best results, put code like - // - // in your main HTML document. - - var rng_state; - var rng_pool; - var rng_pptr; - - // Mix in a 32-bit integer into the pool - function rng_seed_int(x) { - rng_pool[rng_pptr++] ^= x & 255; - rng_pool[rng_pptr++] ^= (x >> 8) & 255; - rng_pool[rng_pptr++] ^= (x >> 16) & 255; - rng_pool[rng_pptr++] ^= (x >> 24) & 255; - if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; - } - - // Mix in the current time (w/milliseconds) into the pool - function rng_seed_time() { - rng_seed_int(new Date().getTime()); - } - - // Initialize the pool with junk if needed. - if(rng_pool == null) { - rng_pool = new Array(); - rng_pptr = 0; - var t; - if(typeof window !== "undefined" && window.crypto) { - if (window.crypto.getRandomValues) { - // Use webcrypto if available - var ua = new Uint8Array(32); - window.crypto.getRandomValues(ua); - for(t = 0; t < 32; ++t) - rng_pool[rng_pptr++] = ua[t]; - } - else if(navigator.appName == "Netscape" && navigator.appVersion < "5") { - // Extract entropy (256 bits) from NS4 RNG if available - var z = window.crypto.random(32); - for(t = 0; t < z.length; ++t) - rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; - } - } - while(rng_pptr < rng_psize) { // extract some randomness from Math.random() - t = Math.floor(65536 * Math.random()); - rng_pool[rng_pptr++] = t >>> 8; - rng_pool[rng_pptr++] = t & 255; - } - rng_pptr = 0; - rng_seed_time(); - //rng_seed_int(window.screenX); - //rng_seed_int(window.screenY); - } - - function rng_get_byte() { - if(rng_state == null) { - rng_seed_time(); - rng_state = prng_newstate(); - rng_state.init(rng_pool); - for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) - rng_pool[rng_pptr] = 0; - rng_pptr = 0; - //rng_pool = null; - } - // TODO: allow reseeding after first request - return rng_state.next(); - } - - function rng_get_bytes(ba) { - var i; - for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); - } - - function SecureRandom() {} - - SecureRandom.prototype.nextBytes = rng_get_bytes; - - // prng4.js - uses Arcfour as a PRNG - - function Arcfour() { - this.i = 0; - this.j = 0; - this.S = new Array(); - } - - // Initialize arcfour context from key, an array of ints, each from [0..255] - function ARC4init(key) { - var i, j, t; - for(i = 0; i < 256; ++i) - this.S[i] = i; - j = 0; - for(i = 0; i < 256; ++i) { - j = (j + this.S[i] + key[i % key.length]) & 255; - t = this.S[i]; - this.S[i] = this.S[j]; - this.S[j] = t; - } - this.i = 0; - this.j = 0; - } - - function ARC4next() { - var t; - this.i = (this.i + 1) & 255; - this.j = (this.j + this.S[this.i]) & 255; - t = this.S[this.i]; - this.S[this.i] = this.S[this.j]; - this.S[this.j] = t; - return this.S[(t + this.S[this.i]) & 255]; - } - - Arcfour.prototype.init = ARC4init; - Arcfour.prototype.next = ARC4next; - - // Plug in your RNG constructor here - function prng_newstate() { - return new Arcfour(); - } - - // Pool size must be a multiple of 4 and greater than 32. - // An array of bytes the size of the pool will be passed to init() - var rng_psize = 256; - - BigInteger.SecureRandom = SecureRandom; - BigInteger.BigInteger = BigInteger; - if (true) { - exports = module.exports = BigInteger; - } else {} - -}).call(this); - - -/***/ }), - -/***/ 2533: -/***/ ((module) => { +/***/ 3287: +/***/ ((__unused_webpack_module, exports) => { "use strict"; -var traverse = module.exports = function (schema, opts, cb) { - // Legacy support for v0.3.1 and earlier. - if (typeof opts == 'function') { - cb = opts; - opts = {}; - } +Object.defineProperty(exports, "__esModule", ({ value: true })); - cb = opts.cb || cb; - var pre = (typeof cb == 'function') ? cb : cb.pre || function() {}; - var post = cb.post || function() {}; +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ - _traverse(opts, pre, post, schema, '', schema); -}; - - -traverse.keywords = { - additionalItems: true, - items: true, - contains: true, - additionalProperties: true, - propertyNames: true, - not: true -}; - -traverse.arrayKeywords = { - items: true, - allOf: true, - anyOf: true, - oneOf: true -}; - -traverse.propsKeywords = { - definitions: true, - properties: true, - patternProperties: true, - dependencies: true -}; - -traverse.skipKeywords = { - default: true, - enum: true, - const: true, - required: true, - maximum: true, - minimum: true, - exclusiveMaximum: true, - exclusiveMinimum: true, - multipleOf: true, - maxLength: true, - minLength: true, - pattern: true, - format: true, - maxItems: true, - minItems: true, - uniqueItems: true, - maxProperties: true, - minProperties: true -}; - - -function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { - if (schema && typeof schema == 'object' && !Array.isArray(schema)) { - pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); - for (var key in schema) { - var sch = schema[key]; - if (Array.isArray(sch)) { - if (key in traverse.arrayKeywords) { - for (var i=0; i schema.maxItems){ - addError("There must be a maximum of " + schema.maxItems + " in the array"); - } - }else if(schema.properties || schema.additionalProperties){ - errors.concat(checkObj(value, schema.properties, path, schema.additionalProperties)); - } - if(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){ - addError("does not match the regex pattern " + schema.pattern); - } - if(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){ - addError("may only be " + schema.maxLength + " characters long"); - } - if(schema.minLength && typeof value == 'string' && value.length < schema.minLength){ - addError("must be at least " + schema.minLength + " characters long"); - } - if(typeof schema.minimum !== undefined && typeof value == typeof schema.minimum && - schema.minimum > value){ - addError("must have a minimum value of " + schema.minimum); - } - if(typeof schema.maximum !== undefined && typeof value == typeof schema.maximum && - schema.maximum < value){ - addError("must have a maximum value of " + schema.maximum); - } - if(schema['enum']){ - var enumer = schema['enum']; - l = enumer.length; - var found; - for(var j = 0; j < l; j++){ - if(enumer[j]===value){ - found=1; - break; - } - } - if(!found){ - addError("does not have a value in the enumeration " + enumer.join(", ")); - } - } - if(typeof schema.maxDecimal == 'number' && - (value.toString().match(new RegExp("\\.[0-9]{" + (schema.maxDecimal + 1) + ",}")))){ - addError("may only have " + schema.maxDecimal + " digits of decimal places"); - } - } - } - return null; - } - // validate an object against a schema - function checkObj(instance,objTypeDef,path,additionalProp){ - - if(typeof objTypeDef =='object'){ - if(typeof instance != 'object' || instance instanceof Array){ - errors.push({property:path,message:"an object is required"}); - } - - for(var i in objTypeDef){ - if(objTypeDef.hasOwnProperty(i)){ - var value = instance[i]; - // skip _not_ specified properties - if (value === undefined && options.existingOnly) continue; - var propDef = objTypeDef[i]; - // set default - if(value === undefined && propDef["default"]){ - value = instance[i] = propDef["default"]; - } - if(options.coerce && i in instance){ - value = instance[i] = options.coerce(value, propDef); - } - checkProp(value,propDef,path,i); - } - } - } - for(i in instance){ - if(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){ - if (options.filter) { - delete instance[i]; - continue; - } else { - errors.push({property:path,message:(typeof value) + "The property " + i + - " is not defined in the schema and the schema does not allow additional properties"}); - } - } - var requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires; - if(requires && !(requires in instance)){ - errors.push({property:path,message:"the presence of the property " + i + " requires that " + requires + " also be present"}); - } - value = instance[i]; - if(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){ - if(options.coerce){ - value = instance[i] = options.coerce(value, additionalProp); - } - checkProp(value,additionalProp,path,i); - } - if(!_changing && value && value.$schema){ - errors = errors.concat(checkProp(value,value.$schema,path,i)); - } - } - return errors; - } - if(schema){ - checkProp(instance,schema,'',_changing || ''); - } - if(!_changing && instance && instance.$schema){ - checkProp(instance,instance.$schema,'',''); - } - return {valid:!errors.length,errors:errors}; -}; -exports.mustBeValid = function(result){ - // summary: - // This checks to ensure that the result is valid and will throw an appropriate error message if it is not - // result: the result returned from checkPropertyChange or validate - if(!result.valid){ - throw new TypeError(result.errors.map(function(error){return "for property " + error.property + ': ' + error.message;}).join(", \n")); - } -} - -return exports; -})); - - -/***/ }), - -/***/ 7073: -/***/ ((module, exports) => { - -exports = module.exports = stringify -exports.getSerialize = serializer - -function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) -} - -function serializer(replacer, cycleReplacer) { - var stack = [], keys = [] - - if (cycleReplacer == null) cycleReplacer = function(key, value) { - if (stack[0] === value) return "[Circular ~]" - return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" - } - - return function(key, value) { - if (stack.length > 0) { - var thisPos = stack.indexOf(this) - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) - if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) - } - else stack.push(value) - - return replacer == null ? value : replacer.call(this, key, value) - } -} - - -/***/ }), - -/***/ 6287: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -/* - * lib/jsprim.js: utilities for primitive JavaScript types - */ - -var mod_assert = __webpack_require__(6631); -var mod_util = __webpack_require__(1669); - -var mod_extsprintf = __webpack_require__(7264); -var mod_verror = __webpack_require__(1692); -var mod_jsonschema = __webpack_require__(1328); - -/* - * Public interface - */ -exports.deepCopy = deepCopy; -exports.deepEqual = deepEqual; -exports.isEmpty = isEmpty; -exports.hasKey = hasKey; -exports.forEachKey = forEachKey; -exports.pluck = pluck; -exports.flattenObject = flattenObject; -exports.flattenIter = flattenIter; -exports.validateJsonObject = validateJsonObjectJS; -exports.validateJsonObjectJS = validateJsonObjectJS; -exports.randElt = randElt; -exports.extraProperties = extraProperties; -exports.mergeObjects = mergeObjects; - -exports.startsWith = startsWith; -exports.endsWith = endsWith; - -exports.parseInteger = parseInteger; - -exports.iso8601 = iso8601; -exports.rfc1123 = rfc1123; -exports.parseDateTime = parseDateTime; - -exports.hrtimediff = hrtimeDiff; -exports.hrtimeDiff = hrtimeDiff; -exports.hrtimeAccum = hrtimeAccum; -exports.hrtimeAdd = hrtimeAdd; -exports.hrtimeNanosec = hrtimeNanosec; -exports.hrtimeMicrosec = hrtimeMicrosec; -exports.hrtimeMillisec = hrtimeMillisec; - - -/* - * Deep copy an acyclic *basic* Javascript object. This only handles basic - * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects - * containing these. This does *not* handle instances of other classes. - */ -function deepCopy(obj) -{ - var ret, key; - var marker = '__deepCopy'; - - if (obj && obj[marker]) - throw (new Error('attempted deep copy of cyclic object')); - - if (obj && obj.constructor == Object) { - ret = {}; - obj[marker] = true; - - for (key in obj) { - if (key == marker) - continue; - - ret[key] = deepCopy(obj[key]); - } - - delete (obj[marker]); - return (ret); - } - - if (obj && obj.constructor == Array) { - ret = []; - obj[marker] = true; - - for (key = 0; key < obj.length; key++) - ret.push(deepCopy(obj[key])); - - delete (obj[marker]); - return (ret); - } - - /* - * It must be a primitive type -- just return it. - */ - return (obj); -} - -function deepEqual(obj1, obj2) -{ - if (typeof (obj1) != typeof (obj2)) - return (false); - - if (obj1 === null || obj2 === null || typeof (obj1) != 'object') - return (obj1 === obj2); - - if (obj1.constructor != obj2.constructor) - return (false); - - var k; - for (k in obj1) { - if (!obj2.hasOwnProperty(k)) - return (false); - - if (!deepEqual(obj1[k], obj2[k])) - return (false); - } - - for (k in obj2) { - if (!obj1.hasOwnProperty(k)) - return (false); - } - - return (true); -} - -function isEmpty(obj) -{ - var key; - for (key in obj) - return (false); - return (true); -} - -function hasKey(obj, key) -{ - mod_assert.equal(typeof (key), 'string'); - return (Object.prototype.hasOwnProperty.call(obj, key)); -} - -function forEachKey(obj, callback) -{ - for (var key in obj) { - if (hasKey(obj, key)) { - callback(key, obj[key]); - } - } -} - -function pluck(obj, key) -{ - mod_assert.equal(typeof (key), 'string'); - return (pluckv(obj, key)); -} - -function pluckv(obj, key) -{ - if (obj === null || typeof (obj) !== 'object') - return (undefined); - - if (obj.hasOwnProperty(key)) - return (obj[key]); - - var i = key.indexOf('.'); - if (i == -1) - return (undefined); - - var key1 = key.substr(0, i); - if (!obj.hasOwnProperty(key1)) - return (undefined); - - return (pluckv(obj[key1], key.substr(i + 1))); -} - -/* - * Invoke callback(row) for each entry in the array that would be returned by - * flattenObject(data, depth). This is just like flattenObject(data, - * depth).forEach(callback), except that the intermediate array is never - * created. - */ -function flattenIter(data, depth, callback) -{ - doFlattenIter(data, depth, [], callback); -} - -function doFlattenIter(data, depth, accum, callback) -{ - var each; - var key; - - if (depth === 0) { - each = accum.slice(0); - each.push(data); - callback(each); - return; - } - - mod_assert.ok(data !== null); - mod_assert.equal(typeof (data), 'object'); - mod_assert.equal(typeof (depth), 'number'); - mod_assert.ok(depth >= 0); - - for (key in data) { - each = accum.slice(0); - each.push(key); - doFlattenIter(data[key], depth - 1, each, callback); - } -} - -function flattenObject(data, depth) -{ - if (depth === 0) - return ([ data ]); - - mod_assert.ok(data !== null); - mod_assert.equal(typeof (data), 'object'); - mod_assert.equal(typeof (depth), 'number'); - mod_assert.ok(depth >= 0); - - var rv = []; - var key; - - for (key in data) { - flattenObject(data[key], depth - 1).forEach(function (p) { - rv.push([ key ].concat(p)); - }); - } - - return (rv); -} - -function startsWith(str, prefix) -{ - return (str.substr(0, prefix.length) == prefix); -} - -function endsWith(str, suffix) -{ - return (str.substr( - str.length - suffix.length, suffix.length) == suffix); -} - -function iso8601(d) -{ - if (typeof (d) == 'number') - d = new Date(d); - mod_assert.ok(d.constructor === Date); - return (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ', - d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(), - d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), - d.getUTCMilliseconds())); -} - -var RFC1123_MONTHS = [ - 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', - 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -var RFC1123_DAYS = [ - 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; - -function rfc1123(date) { - return (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT', - RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(), - RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(), - date.getUTCHours(), date.getUTCMinutes(), - date.getUTCSeconds())); -} - -/* - * Parses a date expressed as a string, as either a number of milliseconds since - * the epoch or any string format that Date accepts, giving preference to the - * former where these two sets overlap (e.g., small numbers). - */ -function parseDateTime(str) -{ - /* - * This is irritatingly implicit, but significantly more concise than - * alternatives. The "+str" will convert a string containing only a - * number directly to a Number, or NaN for other strings. Thus, if the - * conversion succeeds, we use it (this is the milliseconds-since-epoch - * case). Otherwise, we pass the string directly to the Date - * constructor to parse. - */ - var numeric = +str; - if (!isNaN(numeric)) { - return (new Date(numeric)); - } else { - return (new Date(str)); - } -} - - -/* - * Number.*_SAFE_INTEGER isn't present before node v0.12, so we hardcode - * the ES6 definitions here, while allowing for them to someday be higher. - */ -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; -var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; - - -/* - * Default options for parseInteger(). - */ -var PI_DEFAULTS = { - base: 10, - allowSign: true, - allowPrefix: false, - allowTrailing: false, - allowImprecise: false, - trimWhitespace: false, - leadingZeroIsOctal: false -}; - -var CP_0 = 0x30; -var CP_9 = 0x39; - -var CP_A = 0x41; -var CP_B = 0x42; -var CP_O = 0x4f; -var CP_T = 0x54; -var CP_X = 0x58; -var CP_Z = 0x5a; - -var CP_a = 0x61; -var CP_b = 0x62; -var CP_o = 0x6f; -var CP_t = 0x74; -var CP_x = 0x78; -var CP_z = 0x7a; - -var PI_CONV_DEC = 0x30; -var PI_CONV_UC = 0x37; -var PI_CONV_LC = 0x57; - - -/* - * A stricter version of parseInt() that provides options for changing what - * is an acceptable string (for example, disallowing trailing characters). - */ -function parseInteger(str, uopts) -{ - mod_assert.string(str, 'str'); - mod_assert.optionalObject(uopts, 'options'); - - var baseOverride = false; - var options = PI_DEFAULTS; - - if (uopts) { - baseOverride = hasKey(uopts, 'base'); - options = mergeObjects(options, uopts); - mod_assert.number(options.base, 'options.base'); - mod_assert.ok(options.base >= 2, 'options.base >= 2'); - mod_assert.ok(options.base <= 36, 'options.base <= 36'); - mod_assert.bool(options.allowSign, 'options.allowSign'); - mod_assert.bool(options.allowPrefix, 'options.allowPrefix'); - mod_assert.bool(options.allowTrailing, - 'options.allowTrailing'); - mod_assert.bool(options.allowImprecise, - 'options.allowImprecise'); - mod_assert.bool(options.trimWhitespace, - 'options.trimWhitespace'); - mod_assert.bool(options.leadingZeroIsOctal, - 'options.leadingZeroIsOctal'); - - if (options.leadingZeroIsOctal) { - mod_assert.ok(!baseOverride, - '"base" and "leadingZeroIsOctal" are ' + - 'mutually exclusive'); - } - } - - var c; - var pbase = -1; - var base = options.base; - var start; - var mult = 1; - var value = 0; - var idx = 0; - var len = str.length; - - /* Trim any whitespace on the left side. */ - if (options.trimWhitespace) { - while (idx < len && isSpace(str.charCodeAt(idx))) { - ++idx; - } - } - - /* Check the number for a leading sign. */ - if (options.allowSign) { - if (str[idx] === '-') { - idx += 1; - mult = -1; - } else if (str[idx] === '+') { - idx += 1; - } - } - - /* Parse the base-indicating prefix if there is one. */ - if (str[idx] === '0') { - if (options.allowPrefix) { - pbase = prefixToBase(str.charCodeAt(idx + 1)); - if (pbase !== -1 && (!baseOverride || pbase === base)) { - base = pbase; - idx += 2; - } - } - - if (pbase === -1 && options.leadingZeroIsOctal) { - base = 8; - } - } - - /* Parse the actual digits. */ - for (start = idx; idx < len; ++idx) { - c = translateDigit(str.charCodeAt(idx)); - if (c !== -1 && c < base) { - value *= base; - value += c; - } else { - break; - } - } - - /* If we didn't parse any digits, we have an invalid number. */ - if (start === idx) { - return (new Error('invalid number: ' + JSON.stringify(str))); - } - - /* Trim any whitespace on the right side. */ - if (options.trimWhitespace) { - while (idx < len && isSpace(str.charCodeAt(idx))) { - ++idx; - } - } - - /* Check for trailing characters. */ - if (idx < len && !options.allowTrailing) { - return (new Error('trailing characters after number: ' + - JSON.stringify(str.slice(idx)))); - } - - /* If our value is 0, we return now, to avoid returning -0. */ - if (value === 0) { - return (0); - } - - /* Calculate our final value. */ - var result = value * mult; - - /* - * If the string represents a value that cannot be precisely represented - * by JavaScript, then we want to check that: - * - * - We never increased the value past MAX_SAFE_INTEGER - * - We don't make the result negative and below MIN_SAFE_INTEGER - * - * Because we only ever increment the value during parsing, there's no - * chance of moving past MAX_SAFE_INTEGER and then dropping below it - * again, losing precision in the process. This means that we only need - * to do our checks here, at the end. - */ - if (!options.allowImprecise && - (value > MAX_SAFE_INTEGER || result < MIN_SAFE_INTEGER)) { - return (new Error('number is outside of the supported range: ' + - JSON.stringify(str.slice(start, idx)))); - } - - return (result); -} - - -/* - * Interpret a character code as a base-36 digit. - */ -function translateDigit(d) -{ - if (d >= CP_0 && d <= CP_9) { - /* '0' to '9' -> 0 to 9 */ - return (d - PI_CONV_DEC); - } else if (d >= CP_A && d <= CP_Z) { - /* 'A' - 'Z' -> 10 to 35 */ - return (d - PI_CONV_UC); - } else if (d >= CP_a && d <= CP_z) { - /* 'a' - 'z' -> 10 to 35 */ - return (d - PI_CONV_LC); - } else { - /* Invalid character code */ - return (-1); - } -} - - -/* - * Test if a value matches the ECMAScript definition of trimmable whitespace. - */ -function isSpace(c) -{ - return (c === 0x20) || - (c >= 0x0009 && c <= 0x000d) || - (c === 0x00a0) || - (c === 0x1680) || - (c === 0x180e) || - (c >= 0x2000 && c <= 0x200a) || - (c === 0x2028) || - (c === 0x2029) || - (c === 0x202f) || - (c === 0x205f) || - (c === 0x3000) || - (c === 0xfeff); -} - - -/* - * Determine which base a character indicates (e.g., 'x' indicates hex). - */ -function prefixToBase(c) -{ - if (c === CP_b || c === CP_B) { - /* 0b/0B (binary) */ - return (2); - } else if (c === CP_o || c === CP_O) { - /* 0o/0O (octal) */ - return (8); - } else if (c === CP_t || c === CP_T) { - /* 0t/0T (decimal) */ - return (10); - } else if (c === CP_x || c === CP_X) { - /* 0x/0X (hexadecimal) */ - return (16); - } else { - /* Not a meaningful character */ - return (-1); - } -} - - -function validateJsonObjectJS(schema, input) -{ - var report = mod_jsonschema.validate(input, schema); - - if (report.errors.length === 0) - return (null); - - /* Currently, we only do anything useful with the first error. */ - var error = report.errors[0]; - - /* The failed property is given by a URI with an irrelevant prefix. */ - var propname = error['property']; - var reason = error['message'].toLowerCase(); - var i, j; - - /* - * There's at least one case where the property error message is - * confusing at best. We work around this here. - */ - if ((i = reason.indexOf('the property ')) != -1 && - (j = reason.indexOf(' is not defined in the schema and the ' + - 'schema does not allow additional properties')) != -1) { - i += 'the property '.length; - if (propname === '') - propname = reason.substr(i, j - i); - else - propname = propname + '.' + reason.substr(i, j - i); - - reason = 'unsupported property'; - } - - var rv = new mod_verror.VError('property "%s": %s', propname, reason); - rv.jsv_details = error; - return (rv); -} - -function randElt(arr) -{ - mod_assert.ok(Array.isArray(arr) && arr.length > 0, - 'randElt argument must be a non-empty array'); - - return (arr[Math.floor(Math.random() * arr.length)]); -} - -function assertHrtime(a) -{ - mod_assert.ok(a[0] >= 0 && a[1] >= 0, - 'negative numbers not allowed in hrtimes'); - mod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow'); -} - -/* - * Compute the time elapsed between hrtime readings A and B, where A is later - * than B. hrtime readings come from Node's process.hrtime(). There is no - * defined way to represent negative deltas, so it's illegal to diff B from A - * where the time denoted by B is later than the time denoted by A. If this - * becomes valuable, we can define a representation and extend the - * implementation to support it. - */ -function hrtimeDiff(a, b) -{ - assertHrtime(a); - assertHrtime(b); - mod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]), - 'negative differences not allowed'); - - var rv = [ a[0] - b[0], 0 ]; - - if (a[1] >= b[1]) { - rv[1] = a[1] - b[1]; - } else { - rv[0]--; - rv[1] = 1e9 - (b[1] - a[1]); - } - - return (rv); -} - -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of nanoseconds. - */ -function hrtimeNanosec(a) -{ - assertHrtime(a); - - return (Math.floor(a[0] * 1e9 + a[1])); -} - -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of microseconds. - */ -function hrtimeMicrosec(a) -{ - assertHrtime(a); - - return (Math.floor(a[0] * 1e6 + a[1] / 1e3)); -} - -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of milliseconds. - */ -function hrtimeMillisec(a) -{ - assertHrtime(a); - - return (Math.floor(a[0] * 1e3 + a[1] / 1e6)); -} - -/* - * Add two hrtime readings A and B, overwriting A with the result of the - * addition. This function is useful for accumulating several hrtime intervals - * into a counter. Returns A. - */ -function hrtimeAccum(a, b) -{ - assertHrtime(a); - assertHrtime(b); - - /* - * Accumulate the nanosecond component. - */ - a[1] += b[1]; - if (a[1] >= 1e9) { - /* - * The nanosecond component overflowed, so carry to the seconds - * field. - */ - a[0]++; - a[1] -= 1e9; - } - - /* - * Accumulate the seconds component. - */ - a[0] += b[0]; - - return (a); -} - -/* - * Add two hrtime readings A and B, returning the result as a new hrtime array. - * Does not modify either input argument. - */ -function hrtimeAdd(a, b) -{ - assertHrtime(a); - - var rv = [ a[0], a[1] ]; - - return (hrtimeAccum(rv, b)); -} - - -/* - * Check an object for unexpected properties. Accepts the object to check, and - * an array of allowed property names (strings). Returns an array of key names - * that were found on the object, but did not appear in the list of allowed - * properties. If no properties were found, the returned array will be of - * zero length. - */ -function extraProperties(obj, allowed) -{ - mod_assert.ok(typeof (obj) === 'object' && obj !== null, - 'obj argument must be a non-null object'); - mod_assert.ok(Array.isArray(allowed), - 'allowed argument must be an array of strings'); - for (var i = 0; i < allowed.length; i++) { - mod_assert.ok(typeof (allowed[i]) === 'string', - 'allowed argument must be an array of strings'); - } - - return (Object.keys(obj).filter(function (key) { - return (allowed.indexOf(key) === -1); - })); -} - -/* - * Given three sets of properties "provided" (may be undefined), "overrides" - * (required), and "defaults" (may be undefined), construct an object containing - * the union of these sets with "overrides" overriding "provided", and - * "provided" overriding "defaults". None of the input objects are modified. - */ -function mergeObjects(provided, overrides, defaults) -{ - var rv, k; - - rv = {}; - if (defaults) { - for (k in defaults) - rv[k] = defaults[k]; - } - - if (provided) { - for (k in provided) - rv[k] = provided[k]; - } - - if (overrides) { - for (k in overrides) - rv[k] = overrides[k]; - } - - return (rv); -} - - -/***/ }), - -/***/ 6786: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ 1429: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +var uc_micro = __nccwpck_require__(2965); -//////////////////////////////////////////////////////////////////////////////// -// Helpers +function reFactory (opts) { + const re = {}; + opts = opts || {}; -// Merge objects -// -function assign(obj /*from1, from2, from3, ...*/) { - var sources = Array.prototype.slice.call(arguments, 1); - - sources.forEach(function (source) { - if (!source) { return; } - - Object.keys(source).forEach(function (key) { - obj[key] = source[key]; - }); - }); - - return obj; -} - -function _class(obj) { return Object.prototype.toString.call(obj); } -function isString(obj) { return _class(obj) === '[object String]'; } -function isObject(obj) { return _class(obj) === '[object Object]'; } -function isRegExp(obj) { return _class(obj) === '[object RegExp]'; } -function isFunction(obj) { return _class(obj) === '[object Function]'; } - - -function escapeRE(str) { return str.replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&'); } - -//////////////////////////////////////////////////////////////////////////////// - - -var defaultOptions = { - fuzzyLink: true, - fuzzyEmail: true, - fuzzyIP: false -}; - - -function isOptionsObj(obj) { - return Object.keys(obj || {}).reduce(function (acc, k) { - return acc || defaultOptions.hasOwnProperty(k); - }, false); -} - - -var defaultSchemas = { - 'http:': { - validate: function (text, pos, self) { - var tail = text.slice(pos); - - if (!self.re.http) { - // compile lazily, because "host"-containing variables can change on tlds update. - self.re.http = new RegExp( - '^\\/\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i' - ); - } - if (self.re.http.test(tail)) { - return tail.match(self.re.http)[0].length; - } - return 0; - } - }, - 'https:': 'http:', - 'ftp:': 'http:', - '//': { - validate: function (text, pos, self) { - var tail = text.slice(pos); - - if (!self.re.no_http) { - // compile lazily, because "host"-containing variables can change on tlds update. - self.re.no_http = new RegExp( - '^' + - self.re.src_auth + - // Don't allow single-level domains, because of false positives like '//test' - // with code comments - '(?:localhost|(?:(?:' + self.re.src_domain + ')\\.)+' + self.re.src_domain_root + ')' + - self.re.src_port + - self.re.src_host_terminator + - self.re.src_path, - - 'i' - ); - } - - if (self.re.no_http.test(tail)) { - // should not be `://` & `///`, that protects from errors in protocol name - if (pos >= 3 && text[pos - 3] === ':') { return 0; } - if (pos >= 3 && text[pos - 3] === '/') { return 0; } - return tail.match(self.re.no_http)[0].length; - } - return 0; - } - }, - 'mailto:': { - validate: function (text, pos, self) { - var tail = text.slice(pos); - - if (!self.re.mailto) { - self.re.mailto = new RegExp( - '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i' - ); - } - if (self.re.mailto.test(tail)) { - return tail.match(self.re.mailto)[0].length; - } - return 0; - } - } -}; - -/*eslint-disable max-len*/ - -// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js) -var tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'; - -// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead -var tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|'); - -/*eslint-enable max-len*/ - -//////////////////////////////////////////////////////////////////////////////// - -function resetScanCache(self) { - self.__index__ = -1; - self.__text_cache__ = ''; -} - -function createValidator(re) { - return function (text, pos) { - var tail = text.slice(pos); - - if (re.test(tail)) { - return tail.match(re)[0].length; - } - return 0; - }; -} - -function createNormalizer() { - return function (match, self) { - self.normalize(match); - }; -} - -// Schemas compiler. Build regexps. -// -function compile(self) { - - // Load & clone RE patterns. - var re = self.re = __webpack_require__(4971)(self.__opts__); - - // Define dynamic patterns - var tlds = self.__tlds__.slice(); - - self.onCompile(); - - if (!self.__tlds_replaced__) { - tlds.push(tlds_2ch_src_re); - } - tlds.push(re.src_xn); - - re.src_tlds = tlds.join('|'); - - function untpl(tpl) { return tpl.replace('%TLDS%', re.src_tlds); } - - re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i'); - re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i'); - re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i'); - re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i'); - - // - // Compile each schema - // - - var aliases = []; - - self.__compiled__ = {}; // Reset compiled data - - function schemaError(name, val) { - throw new Error('(LinkifyIt) Invalid schema "' + name + '": ' + val); - } - - Object.keys(self.__schemas__).forEach(function (name) { - var val = self.__schemas__[name]; - - // skip disabled methods - if (val === null) { return; } - - var compiled = { validate: null, link: null }; - - self.__compiled__[name] = compiled; - - if (isObject(val)) { - if (isRegExp(val.validate)) { - compiled.validate = createValidator(val.validate); - } else if (isFunction(val.validate)) { - compiled.validate = val.validate; - } else { - schemaError(name, val); - } - - if (isFunction(val.normalize)) { - compiled.normalize = val.normalize; - } else if (!val.normalize) { - compiled.normalize = createNormalizer(); - } else { - schemaError(name, val); - } - - return; - } - - if (isString(val)) { - aliases.push(name); - return; - } - - schemaError(name, val); - }); - - // - // Compile postponed aliases - // - - aliases.forEach(function (alias) { - if (!self.__compiled__[self.__schemas__[alias]]) { - // Silently fail on missed schemas to avoid errons on disable. - // schemaError(alias, self.__schemas__[alias]); - return; - } - - self.__compiled__[alias].validate = - self.__compiled__[self.__schemas__[alias]].validate; - self.__compiled__[alias].normalize = - self.__compiled__[self.__schemas__[alias]].normalize; - }); - - // - // Fake record for guessed links - // - self.__compiled__[''] = { validate: null, normalize: createNormalizer() }; - - // - // Build schema condition - // - var slist = Object.keys(self.__compiled__) - .filter(function (name) { - // Filter disabled & fake schemas - return name.length > 0 && self.__compiled__[name]; - }) - .map(escapeRE) - .join('|'); - // (?!_) cause 1.5x slowdown - self.re.schema_test = RegExp('(^|(?!_)(?:[><\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i'); - self.re.schema_search = RegExp('(^|(?!_)(?:[><\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig'); - - self.re.pretest = RegExp( - '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@', - 'i' - ); - - // - // Cleanup - // - - resetScanCache(self); -} - -/** - * class Match - * - * Match result. Single element of array, returned by [[LinkifyIt#match]] - **/ -function Match(self, shift) { - var start = self.__index__, - end = self.__last_index__, - text = self.__text_cache__.slice(start, end); - - /** - * Match#schema -> String - * - * Prefix (protocol) for matched string. - **/ - this.schema = self.__schema__.toLowerCase(); - /** - * Match#index -> Number - * - * First position of matched string. - **/ - this.index = start + shift; - /** - * Match#lastIndex -> Number - * - * Next position after matched string. - **/ - this.lastIndex = end + shift; - /** - * Match#raw -> String - * - * Matched string. - **/ - this.raw = text; - /** - * Match#text -> String - * - * Notmalized text of matched string. - **/ - this.text = text; - /** - * Match#url -> String - * - * Normalized url of matched string. - **/ - this.url = text; -} - -function createMatch(self, shift) { - var match = new Match(self, shift); - - self.__compiled__[match.schema].normalize(match, self); - - return match; -} - - -/** - * class LinkifyIt - **/ - -/** - * new LinkifyIt(schemas, options) - * - schemas (Object): Optional. Additional schemas to validate (prefix/validator) - * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false } - * - * Creates new linkifier instance with optional additional schemas. - * Can be called without `new` keyword for convenience. - * - * By default understands: - * - * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links - * - "fuzzy" links and emails (example.com, foo@bar.com). - * - * `schemas` is an object, where each key/value describes protocol/rule: - * - * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:` - * for example). `linkify-it` makes shure that prefix is not preceeded with - * alphanumeric char and symbols. Only whitespaces and punctuation allowed. - * - __value__ - rule to check tail after link prefix - * - _String_ - just alias to existing rule - * - _Object_ - * - _validate_ - validator function (should return matched length on success), - * or `RegExp`. - * - _normalize_ - optional function to normalize text & url of matched result - * (for example, for @twitter mentions). - * - * `options`: - * - * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`. - * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts - * like version numbers. Default `false`. - * - __fuzzyEmail__ - recognize emails without `mailto:` prefix. - * - **/ -function LinkifyIt(schemas, options) { - if (!(this instanceof LinkifyIt)) { - return new LinkifyIt(schemas, options); - } - - if (!options) { - if (isOptionsObj(schemas)) { - options = schemas; - schemas = {}; - } - } - - this.__opts__ = assign({}, defaultOptions, options); - - // Cache last tested result. Used to skip repeating steps on next `match` call. - this.__index__ = -1; - this.__last_index__ = -1; // Next scan position - this.__schema__ = ''; - this.__text_cache__ = ''; - - this.__schemas__ = assign({}, defaultSchemas, schemas); - this.__compiled__ = {}; - - this.__tlds__ = tlds_default; - this.__tlds_replaced__ = false; - - this.re = {}; - - compile(this); -} - - -/** chainable - * LinkifyIt#add(schema, definition) - * - schema (String): rule name (fixed pattern prefix) - * - definition (String|RegExp|Object): schema definition - * - * Add new rule definition. See constructor description for details. - **/ -LinkifyIt.prototype.add = function add(schema, definition) { - this.__schemas__[schema] = definition; - compile(this); - return this; -}; - - -/** chainable - * LinkifyIt#set(options) - * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false } - * - * Set recognition options for links without schema. - **/ -LinkifyIt.prototype.set = function set(options) { - this.__opts__ = assign(this.__opts__, options); - return this; -}; - - -/** - * LinkifyIt#test(text) -> Boolean - * - * Searches linkifiable pattern and returns `true` on success or `false` on fail. - **/ -LinkifyIt.prototype.test = function test(text) { - // Reset scan cache - this.__text_cache__ = text; - this.__index__ = -1; - - if (!text.length) { return false; } - - var m, ml, me, len, shift, next, re, tld_pos, at_pos; - - // try to scan for link with schema - that's the most simple rule - if (this.re.schema_test.test(text)) { - re = this.re.schema_search; - re.lastIndex = 0; - while ((m = re.exec(text)) !== null) { - len = this.testSchemaAt(text, m[2], re.lastIndex); - if (len) { - this.__schema__ = m[2]; - this.__index__ = m.index + m[1].length; - this.__last_index__ = m.index + m[0].length + len; - break; - } - } - } - - if (this.__opts__.fuzzyLink && this.__compiled__['http:']) { - // guess schemaless links - tld_pos = text.search(this.re.host_fuzzy_test); - if (tld_pos >= 0) { - // if tld is located after found link - no need to check fuzzy pattern - if (this.__index__ < 0 || tld_pos < this.__index__) { - if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) { - - shift = ml.index + ml[1].length; - - if (this.__index__ < 0 || shift < this.__index__) { - this.__schema__ = ''; - this.__index__ = shift; - this.__last_index__ = ml.index + ml[0].length; - } - } - } - } - } - - if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) { - // guess schemaless emails - at_pos = text.indexOf('@'); - if (at_pos >= 0) { - // We can't skip this check, because this cases are possible: - // 192.168.1.1@gmail.com, my.in@example.com - if ((me = text.match(this.re.email_fuzzy)) !== null) { - - shift = me.index + me[1].length; - next = me.index + me[0].length; - - if (this.__index__ < 0 || shift < this.__index__ || - (shift === this.__index__ && next > this.__last_index__)) { - this.__schema__ = 'mailto:'; - this.__index__ = shift; - this.__last_index__ = next; - } - } - } - } - - return this.__index__ >= 0; -}; - - -/** - * LinkifyIt#pretest(text) -> Boolean - * - * Very quick check, that can give false positives. Returns true if link MAY BE - * can exists. Can be used for speed optimization, when you need to check that - * link NOT exists. - **/ -LinkifyIt.prototype.pretest = function pretest(text) { - return this.re.pretest.test(text); -}; - - -/** - * LinkifyIt#testSchemaAt(text, name, position) -> Number - * - text (String): text to scan - * - name (String): rule (schema) name - * - position (Number): text offset to check from - * - * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly - * at given position. Returns length of found pattern (0 on fail). - **/ -LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) { - // If not supported schema check requested - terminate - if (!this.__compiled__[schema.toLowerCase()]) { - return 0; - } - return this.__compiled__[schema.toLowerCase()].validate(text, pos, this); -}; - - -/** - * LinkifyIt#match(text) -> Array|null - * - * Returns array of found link descriptions or `null` on fail. We strongly - * recommend to use [[LinkifyIt#test]] first, for best speed. - * - * ##### Result match description - * - * - __schema__ - link schema, can be empty for fuzzy links, or `//` for - * protocol-neutral links. - * - __index__ - offset of matched text - * - __lastIndex__ - index of next char after mathch end - * - __raw__ - matched text - * - __text__ - normalized text - * - __url__ - link, generated from matched text - **/ -LinkifyIt.prototype.match = function match(text) { - var shift = 0, result = []; - - // Try to take previous element from cache, if .test() called before - if (this.__index__ >= 0 && this.__text_cache__ === text) { - result.push(createMatch(this, shift)); - shift = this.__last_index__; - } - - // Cut head if cache was used - var tail = shift ? text.slice(shift) : text; - - // Scan string until end reached - while (this.test(tail)) { - result.push(createMatch(this, shift)); - - tail = tail.slice(this.__last_index__); - shift += this.__last_index__; - } - - if (result.length) { - return result; - } - - return null; -}; - - -/** chainable - * LinkifyIt#tlds(list [, keepOld]) -> this - * - list (Array): list of tlds - * - keepOld (Boolean): merge with current list if `true` (`false` by default) - * - * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix) - * to avoid false positives. By default this algorythm used: - * - * - hostname with any 2-letter root zones are ok. - * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф - * are ok. - * - encoded (`xn--...`) root zones are ok. - * - * If list is replaced, then exact match for 2-chars root zones will be checked. - **/ -LinkifyIt.prototype.tlds = function tlds(list, keepOld) { - list = Array.isArray(list) ? list : [ list ]; - - if (!keepOld) { - this.__tlds__ = list.slice(); - this.__tlds_replaced__ = true; - compile(this); - return this; - } - - this.__tlds__ = this.__tlds__.concat(list) - .sort() - .filter(function (el, idx, arr) { - return el !== arr[idx - 1]; - }) - .reverse(); - - compile(this); - return this; -}; - -/** - * LinkifyIt#normalize(match) - * - * Default normalizer (if schema does not define it's own). - **/ -LinkifyIt.prototype.normalize = function normalize(match) { - - // Do minimal possible changes by default. Need to collect feedback prior - // to move forward https://github.com/markdown-it/linkify-it/issues/1 - - if (!match.schema) { match.url = 'http://' + match.url; } - - if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) { - match.url = 'mailto:' + match.url; - } -}; - - -/** - * LinkifyIt#onCompile() - * - * Override to modify basic RegExp-s. - **/ -LinkifyIt.prototype.onCompile = function onCompile() { -}; - - -module.exports = LinkifyIt; - - -/***/ }), - -/***/ 4971: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - - -module.exports = function (opts) { - var re = {}; - - // Use direct extract instead of `regenerate` to reduse browserified size - re.src_Any = __webpack_require__(703).source; - re.src_Cc = __webpack_require__(4338).source; - re.src_Z = __webpack_require__(8810).source; - re.src_P = __webpack_require__(8019).source; + re.src_Any = uc_micro.Any.source; + re.src_Cc = uc_micro.Cc.source; + re.src_Z = uc_micro.Z.source; + re.src_P = uc_micro.P.source; // \p{\Z\P\Cc\CF} (white spaces + control + format + punctuation) - re.src_ZPCc = [ re.src_Z, re.src_P, re.src_Cc ].join('|'); + re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|'); // \p{\Z\Cc} (white spaces + control) - re.src_ZCc = [ re.src_Z, re.src_Cc ].join('|'); + re.src_ZCc = [re.src_Z, re.src_Cc].join('|'); // Experimental. List of chars, completely prohibited in links // because can separate it from other part of text - var text_separators = '[><\uff5c]'; + const text_separators = '[><\uff5c]'; // All possible word characters (everything without punctuation, spaces & controls) // Defined via punctuation & spaces to save space // Should be something like \p{\L\N\S\M} (\w but without `_`) - re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'; + re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'; // The same as abothe but without [0-9] // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')'; - //////////////////////////////////////////////////////////////////////////////// - re.src_ip4 = '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'; // Prohibit any of "@/[]()" in user/pass to avoid wrong domain fetch. - re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\[\\]()]).)+@)?'; + re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\[\\]()]).)+@)?'; re.src_port = @@ -16082,37 +120888,49 @@ module.exports = function (opts) { re.src_host_terminator = - '(?=$|' + text_separators + '|' + re.src_ZPCc + ')(?!-|_|:\\d|\\.-|\\.(?!$|' + re.src_ZPCc + '))'; + '(?=$|' + text_separators + '|' + re.src_ZPCc + ')' + + '(?!' + (opts['---'] ? '-(?!--)|' : '-|') + '_|:\\d|\\.-|\\.(?!$|' + re.src_ZPCc + '))'; re.src_path = '(?:' + '[/?#]' + '(?:' + - '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\]{}.,"\'?!\\-]).|' + + '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\]{}.,"\'?!\\-;]).|' + '\\[(?:(?!' + re.src_ZCc + '|\\]).)*\\]|' + '\\((?:(?!' + re.src_ZCc + '|[)]).)*\\)|' + '\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\}|' + '\\"(?:(?!' + re.src_ZCc + '|["]).)+\\"|' + "\\'(?:(?!" + re.src_ZCc + "|[']).)+\\'|" + - "\\'(?=" + re.src_pseudo_letter + '|[-]).|' + // allow `I'm_king` if no pair found - '\\.{2,}[a-zA-Z0-9%/&]|' + // google has many dots in "google search" links (#66, #81). - // github has ... in commit range links, - // Restrict to - // - english - // - percent-encoded - // - parts of file path - // - params separator - // until more examples found. - '\\.(?!' + re.src_ZCc + '|[.]).|' + - (opts && opts['---'] ? - '\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate - : - '\\-+|' + + // allow `I'm_king` if no pair found + "\\'(?=" + re.src_pseudo_letter + '|[-])|' + + + // google has many dots in "google search" links (#66, #81). + // github has ... in commit range links, + // Restrict to + // - english + // - percent-encoded + // - parts of file path + // - params separator + // until more examples found. + '\\.{2,}[a-zA-Z0-9%/&]|' + + + '\\.(?!' + re.src_ZCc + '|[.]|$)|' + + (opts['---'] + ? '\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate + : '\\-+|' ) + - '\\,(?!' + re.src_ZCc + ').|' + // allow `,,,` in paths - '\\!+(?!' + re.src_ZCc + '|[!]).|' + // allow `!!!` in paths, but not at the end - '\\?(?!' + re.src_ZCc + '|[?]).' + + // allow `,,,` in paths + ',(?!' + re.src_ZCc + '|$)|' + + + // allow `;` if not followed by space-like char + ';(?!' + re.src_ZCc + '|$)|' + + + // allow `!!!` in paths, but not at the end + '\\!+(?!' + re.src_ZCc + '|[!]|$)|' + + + '\\?(?!' + re.src_ZCc + '|[?]|$)' + ')+' + '|\\/' + ')?'; @@ -16155,7 +120973,7 @@ module.exports = function (opts) { // Don't need IP check, because digits are already allowed in normal domain names // src_ip4 + // '|' + - '(?:(?:(?:' + re.src_domain + ')\\.)*' + re.src_domain/*_root*/ + ')' + + '(?:(?:(?:' + re.src_domain + ')\\.)*' + re.src_domain/* _root */ + ')' + ')'; re.tpl_host_fuzzy = @@ -16190,9 +121008,9 @@ module.exports = function (opts) { re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator; - - //////////////////////////////////////////////////////////////////////////////// + // // Main rules + // // Rude test fuzzy links by host, for quick deny re.tpl_host_fuzzy_test = @@ -16216,9 +121034,650 @@ module.exports = function (opts) { '(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|' + re.src_ZPCc + '))' + '((?![$+<=>^`|\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')'; - return re; + return re +} + +// +// Helpers +// + +// Merge objects +// +function assign (obj /* from1, from2, from3, ... */) { + const sources = Array.prototype.slice.call(arguments, 1); + + sources.forEach(function (source) { + if (!source) { return } + + Object.keys(source).forEach(function (key) { + obj[key] = source[key]; + }); + }); + + return obj +} + +function _class (obj) { return Object.prototype.toString.call(obj) } +function isString (obj) { return _class(obj) === '[object String]' } +function isObject (obj) { return _class(obj) === '[object Object]' } +function isRegExp (obj) { return _class(obj) === '[object RegExp]' } +function isFunction (obj) { return _class(obj) === '[object Function]' } + +function escapeRE (str) { return str.replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&') } + +// + +const defaultOptions = { + fuzzyLink: true, + fuzzyEmail: true, + fuzzyIP: false }; +function isOptionsObj (obj) { + return Object.keys(obj || {}).reduce(function (acc, k) { + /* eslint-disable-next-line no-prototype-builtins */ + return acc || defaultOptions.hasOwnProperty(k) + }, false) +} + +const defaultSchemas = { + 'http:': { + validate: function (text, pos, self) { + const tail = text.slice(pos); + + if (!self.re.http) { + // compile lazily, because "host"-containing variables can change on tlds update. + self.re.http = new RegExp( + '^\\/\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i' + ); + } + if (self.re.http.test(tail)) { + return tail.match(self.re.http)[0].length + } + return 0 + } + }, + 'https:': 'http:', + 'ftp:': 'http:', + '//': { + validate: function (text, pos, self) { + const tail = text.slice(pos); + + if (!self.re.no_http) { + // compile lazily, because "host"-containing variables can change on tlds update. + self.re.no_http = new RegExp( + '^' + + self.re.src_auth + + // Don't allow single-level domains, because of false positives like '//test' + // with code comments + '(?:localhost|(?:(?:' + self.re.src_domain + ')\\.)+' + self.re.src_domain_root + ')' + + self.re.src_port + + self.re.src_host_terminator + + self.re.src_path, + + 'i' + ); + } + + if (self.re.no_http.test(tail)) { + // should not be `://` & `///`, that protects from errors in protocol name + if (pos >= 3 && text[pos - 3] === ':') { return 0 } + if (pos >= 3 && text[pos - 3] === '/') { return 0 } + return tail.match(self.re.no_http)[0].length + } + return 0 + } + }, + 'mailto:': { + validate: function (text, pos, self) { + const tail = text.slice(pos); + + if (!self.re.mailto) { + self.re.mailto = new RegExp( + '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i' + ); + } + if (self.re.mailto.test(tail)) { + return tail.match(self.re.mailto)[0].length + } + return 0 + } + } +}; + +// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js) +/* eslint-disable-next-line max-len */ +const tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'; + +// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead +const tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|'); + +function resetScanCache (self) { + self.__index__ = -1; + self.__text_cache__ = ''; +} + +function createValidator (re) { + return function (text, pos) { + const tail = text.slice(pos); + + if (re.test(tail)) { + return tail.match(re)[0].length + } + return 0 + } +} + +function createNormalizer () { + return function (match, self) { + self.normalize(match); + } +} + +// Schemas compiler. Build regexps. +// +function compile (self) { + // Load & clone RE patterns. + const re = self.re = reFactory(self.__opts__); + + // Define dynamic patterns + const tlds = self.__tlds__.slice(); + + self.onCompile(); + + if (!self.__tlds_replaced__) { + tlds.push(tlds_2ch_src_re); + } + tlds.push(re.src_xn); + + re.src_tlds = tlds.join('|'); + + function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) } + + re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i'); + re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i'); + re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i'); + re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i'); + + // + // Compile each schema + // + + const aliases = []; + + self.__compiled__ = {}; // Reset compiled data + + function schemaError (name, val) { + throw new Error('(LinkifyIt) Invalid schema "' + name + '": ' + val) + } + + Object.keys(self.__schemas__).forEach(function (name) { + const val = self.__schemas__[name]; + + // skip disabled methods + if (val === null) { return } + + const compiled = { validate: null, link: null }; + + self.__compiled__[name] = compiled; + + if (isObject(val)) { + if (isRegExp(val.validate)) { + compiled.validate = createValidator(val.validate); + } else if (isFunction(val.validate)) { + compiled.validate = val.validate; + } else { + schemaError(name, val); + } + + if (isFunction(val.normalize)) { + compiled.normalize = val.normalize; + } else if (!val.normalize) { + compiled.normalize = createNormalizer(); + } else { + schemaError(name, val); + } + + return + } + + if (isString(val)) { + aliases.push(name); + return + } + + schemaError(name, val); + }); + + // + // Compile postponed aliases + // + + aliases.forEach(function (alias) { + if (!self.__compiled__[self.__schemas__[alias]]) { + // Silently fail on missed schemas to avoid errons on disable. + // schemaError(alias, self.__schemas__[alias]); + return + } + + self.__compiled__[alias].validate = + self.__compiled__[self.__schemas__[alias]].validate; + self.__compiled__[alias].normalize = + self.__compiled__[self.__schemas__[alias]].normalize; + }); + + // + // Fake record for guessed links + // + self.__compiled__[''] = { validate: null, normalize: createNormalizer() }; + + // + // Build schema condition + // + const slist = Object.keys(self.__compiled__) + .filter(function (name) { + // Filter disabled & fake schemas + return name.length > 0 && self.__compiled__[name] + }) + .map(escapeRE) + .join('|'); + // (?!_) cause 1.5x slowdown + self.re.schema_test = RegExp('(^|(?!_)(?:[><\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i'); + self.re.schema_search = RegExp('(^|(?!_)(?:[><\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig'); + self.re.schema_at_start = RegExp('^' + self.re.schema_search.source, 'i'); + + self.re.pretest = RegExp( + '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@', + 'i' + ); + + // + // Cleanup + // + + resetScanCache(self); +} + +/** + * class Match + * + * Match result. Single element of array, returned by [[LinkifyIt#match]] + **/ +function Match (self, shift) { + const start = self.__index__; + const end = self.__last_index__; + const text = self.__text_cache__.slice(start, end); + + /** + * Match#schema -> String + * + * Prefix (protocol) for matched string. + **/ + this.schema = self.__schema__.toLowerCase(); + /** + * Match#index -> Number + * + * First position of matched string. + **/ + this.index = start + shift; + /** + * Match#lastIndex -> Number + * + * Next position after matched string. + **/ + this.lastIndex = end + shift; + /** + * Match#raw -> String + * + * Matched string. + **/ + this.raw = text; + /** + * Match#text -> String + * + * Notmalized text of matched string. + **/ + this.text = text; + /** + * Match#url -> String + * + * Normalized url of matched string. + **/ + this.url = text; +} + +function createMatch (self, shift) { + const match = new Match(self, shift); + + self.__compiled__[match.schema].normalize(match, self); + + return match +} + +/** + * class LinkifyIt + **/ + +/** + * new LinkifyIt(schemas, options) + * - schemas (Object): Optional. Additional schemas to validate (prefix/validator) + * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false } + * + * Creates new linkifier instance with optional additional schemas. + * Can be called without `new` keyword for convenience. + * + * By default understands: + * + * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links + * - "fuzzy" links and emails (example.com, foo@bar.com). + * + * `schemas` is an object, where each key/value describes protocol/rule: + * + * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:` + * for example). `linkify-it` makes shure that prefix is not preceeded with + * alphanumeric char and symbols. Only whitespaces and punctuation allowed. + * - __value__ - rule to check tail after link prefix + * - _String_ - just alias to existing rule + * - _Object_ + * - _validate_ - validator function (should return matched length on success), + * or `RegExp`. + * - _normalize_ - optional function to normalize text & url of matched result + * (for example, for @twitter mentions). + * + * `options`: + * + * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`. + * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts + * like version numbers. Default `false`. + * - __fuzzyEmail__ - recognize emails without `mailto:` prefix. + * + **/ +function LinkifyIt (schemas, options) { + if (!(this instanceof LinkifyIt)) { + return new LinkifyIt(schemas, options) + } + + if (!options) { + if (isOptionsObj(schemas)) { + options = schemas; + schemas = {}; + } + } + + this.__opts__ = assign({}, defaultOptions, options); + + // Cache last tested result. Used to skip repeating steps on next `match` call. + this.__index__ = -1; + this.__last_index__ = -1; // Next scan position + this.__schema__ = ''; + this.__text_cache__ = ''; + + this.__schemas__ = assign({}, defaultSchemas, schemas); + this.__compiled__ = {}; + + this.__tlds__ = tlds_default; + this.__tlds_replaced__ = false; + + this.re = {}; + + compile(this); +} + +/** chainable + * LinkifyIt#add(schema, definition) + * - schema (String): rule name (fixed pattern prefix) + * - definition (String|RegExp|Object): schema definition + * + * Add new rule definition. See constructor description for details. + **/ +LinkifyIt.prototype.add = function add (schema, definition) { + this.__schemas__[schema] = definition; + compile(this); + return this +}; + +/** chainable + * LinkifyIt#set(options) + * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false } + * + * Set recognition options for links without schema. + **/ +LinkifyIt.prototype.set = function set (options) { + this.__opts__ = assign(this.__opts__, options); + return this +}; + +/** + * LinkifyIt#test(text) -> Boolean + * + * Searches linkifiable pattern and returns `true` on success or `false` on fail. + **/ +LinkifyIt.prototype.test = function test (text) { + // Reset scan cache + this.__text_cache__ = text; + this.__index__ = -1; + + if (!text.length) { return false } + + let m, ml, me, len, shift, next, re, tld_pos, at_pos; + + // try to scan for link with schema - that's the most simple rule + if (this.re.schema_test.test(text)) { + re = this.re.schema_search; + re.lastIndex = 0; + while ((m = re.exec(text)) !== null) { + len = this.testSchemaAt(text, m[2], re.lastIndex); + if (len) { + this.__schema__ = m[2]; + this.__index__ = m.index + m[1].length; + this.__last_index__ = m.index + m[0].length + len; + break + } + } + } + + if (this.__opts__.fuzzyLink && this.__compiled__['http:']) { + // guess schemaless links + tld_pos = text.search(this.re.host_fuzzy_test); + if (tld_pos >= 0) { + // if tld is located after found link - no need to check fuzzy pattern + if (this.__index__ < 0 || tld_pos < this.__index__) { + if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) { + shift = ml.index + ml[1].length; + + if (this.__index__ < 0 || shift < this.__index__) { + this.__schema__ = ''; + this.__index__ = shift; + this.__last_index__ = ml.index + ml[0].length; + } + } + } + } + } + + if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) { + // guess schemaless emails + at_pos = text.indexOf('@'); + if (at_pos >= 0) { + // We can't skip this check, because this cases are possible: + // 192.168.1.1@gmail.com, my.in@example.com + if ((me = text.match(this.re.email_fuzzy)) !== null) { + shift = me.index + me[1].length; + next = me.index + me[0].length; + + if (this.__index__ < 0 || shift < this.__index__ || + (shift === this.__index__ && next > this.__last_index__)) { + this.__schema__ = 'mailto:'; + this.__index__ = shift; + this.__last_index__ = next; + } + } + } + } + + return this.__index__ >= 0 +}; + +/** + * LinkifyIt#pretest(text) -> Boolean + * + * Very quick check, that can give false positives. Returns true if link MAY BE + * can exists. Can be used for speed optimization, when you need to check that + * link NOT exists. + **/ +LinkifyIt.prototype.pretest = function pretest (text) { + return this.re.pretest.test(text) +}; + +/** + * LinkifyIt#testSchemaAt(text, name, position) -> Number + * - text (String): text to scan + * - name (String): rule (schema) name + * - position (Number): text offset to check from + * + * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly + * at given position. Returns length of found pattern (0 on fail). + **/ +LinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) { + // If not supported schema check requested - terminate + if (!this.__compiled__[schema.toLowerCase()]) { + return 0 + } + return this.__compiled__[schema.toLowerCase()].validate(text, pos, this) +}; + +/** + * LinkifyIt#match(text) -> Array|null + * + * Returns array of found link descriptions or `null` on fail. We strongly + * recommend to use [[LinkifyIt#test]] first, for best speed. + * + * ##### Result match description + * + * - __schema__ - link schema, can be empty for fuzzy links, or `//` for + * protocol-neutral links. + * - __index__ - offset of matched text + * - __lastIndex__ - index of next char after mathch end + * - __raw__ - matched text + * - __text__ - normalized text + * - __url__ - link, generated from matched text + **/ +LinkifyIt.prototype.match = function match (text) { + const result = []; + let shift = 0; + + // Try to take previous element from cache, if .test() called before + if (this.__index__ >= 0 && this.__text_cache__ === text) { + result.push(createMatch(this, shift)); + shift = this.__last_index__; + } + + // Cut head if cache was used + let tail = shift ? text.slice(shift) : text; + + // Scan string until end reached + while (this.test(tail)) { + result.push(createMatch(this, shift)); + + tail = tail.slice(this.__last_index__); + shift += this.__last_index__; + } + + if (result.length) { + return result + } + + return null +}; + +/** + * LinkifyIt#matchAtStart(text) -> Match|null + * + * Returns fully-formed (not fuzzy) link if it starts at the beginning + * of the string, and null otherwise. + **/ +LinkifyIt.prototype.matchAtStart = function matchAtStart (text) { + // Reset scan cache + this.__text_cache__ = text; + this.__index__ = -1; + + if (!text.length) return null + + const m = this.re.schema_at_start.exec(text); + if (!m) return null + + const len = this.testSchemaAt(text, m[2], m[0].length); + if (!len) return null + + this.__schema__ = m[2]; + this.__index__ = m.index + m[1].length; + this.__last_index__ = m.index + m[0].length + len; + + return createMatch(this, 0) +}; + +/** chainable + * LinkifyIt#tlds(list [, keepOld]) -> this + * - list (Array): list of tlds + * - keepOld (Boolean): merge with current list if `true` (`false` by default) + * + * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix) + * to avoid false positives. By default this algorythm used: + * + * - hostname with any 2-letter root zones are ok. + * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф + * are ok. + * - encoded (`xn--...`) root zones are ok. + * + * If list is replaced, then exact match for 2-chars root zones will be checked. + **/ +LinkifyIt.prototype.tlds = function tlds (list, keepOld) { + list = Array.isArray(list) ? list : [list]; + + if (!keepOld) { + this.__tlds__ = list.slice(); + this.__tlds_replaced__ = true; + compile(this); + return this + } + + this.__tlds__ = this.__tlds__.concat(list) + .sort() + .filter(function (el, idx, arr) { + return el !== arr[idx - 1] + }) + .reverse(); + + compile(this); + return this +}; + +/** + * LinkifyIt#normalize(match) + * + * Default normalizer (if schema does not define it's own). + **/ +LinkifyIt.prototype.normalize = function normalize (match) { + // Do minimal possible changes by default. Need to collect feedback prior + // to move forward https://github.com/markdown-it/linkify-it/issues/1 + + if (!match.schema) { match.url = 'http://' + match.url; } + + if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) { + match.url = 'mailto:' + match.url; + } +}; + +/** + * LinkifyIt#onCompile() + * + * Override to modify basic RegExp-s. + **/ +LinkifyIt.prototype.onCompile = function onCompile () { +}; + +module.exports = LinkifyIt; + /***/ }), @@ -16258,6 +121717,9 @@ module.exports = function (opts) { "error" ]; + var _loggersByName = {}; + var defaultLogger = null; + // Cross-browser bind equivalent that works at least back to IE6 function bindMethod(obj, methodName) { var method = obj[methodName]; @@ -16310,25 +121772,33 @@ module.exports = function (opts) { // These private functions always need `this` to be set properly - function replaceLoggingMethods(level, loggerName) { + function replaceLoggingMethods() { /*jshint validthis:true */ + var level = this.getLevel(); + + // Replace the actual methods. for (var i = 0; i < logMethods.length; i++) { var methodName = logMethods[i]; this[methodName] = (i < level) ? noop : - this.methodFactory(methodName, level, loggerName); + this.methodFactory(methodName, level, this.name); } // Define log.log as an alias for log.debug this.log = this.debug; + + // Return any important warnings. + if (typeof console === undefinedType && level < this.levels.SILENT) { + return "No console available for logging"; + } } // In old IE versions, the console isn't present until you first open it. // We build realMethod() replacements here that regenerate logging methods - function enableLoggingWhenConsoleArrives(methodName, level, loggerName) { + function enableLoggingWhenConsoleArrives(methodName) { return function () { if (typeof console !== undefinedType) { - replaceLoggingMethods.call(this, level, loggerName); + replaceLoggingMethods.call(this); this[methodName].apply(this, arguments); } }; @@ -16336,15 +121806,36 @@ module.exports = function (opts) { // By default, we use closely bound real methods wherever possible, and // otherwise we wait for a console to appear, and then try again. - function defaultMethodFactory(methodName, level, loggerName) { + function defaultMethodFactory(methodName, _level, _loggerName) { /*jshint validthis:true */ return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments); } - function Logger(name, defaultLevel, factory) { + function Logger(name, factory) { + // Private instance variables. var self = this; - var currentLevel; + /** + * The level inherited from a parent logger (or a global default). We + * cache this here rather than delegating to the parent so that it stays + * in sync with the actual logging methods that we have installed (the + * parent could change levels but we might not have rebuilt the loggers + * in this child yet). + * @type {number} + */ + var inheritedLevel; + /** + * The default level for this logger, if any. If set, this overrides + * `inheritedLevel`. + * @type {number|null} + */ + var defaultLevel; + /** + * A user-specific level for this logger. If set, this overrides + * `defaultLevel`. + * @type {number|null} + */ + var userLevel; var storageKey = "loglevel"; if (typeof name === "string") { @@ -16384,10 +121875,12 @@ module.exports = function (opts) { if (typeof storedLevel === undefinedType) { try { var cookie = window.document.cookie; - var location = cookie.indexOf( - encodeURIComponent(storageKey) + "="); + var cookieName = encodeURIComponent(storageKey); + var location = cookie.indexOf(cookieName + "="); if (location !== -1) { - storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1]; + storedLevel = /^([^;]+)/.exec( + cookie.slice(location + cookieName.length + 1) + )[1]; } } catch (ignore) {} } @@ -16400,6 +121893,33 @@ module.exports = function (opts) { return storedLevel; } + function clearPersistedLevel() { + if (typeof window === undefinedType || !storageKey) return; + + // Use localStorage if available + try { + window.localStorage.removeItem(storageKey); + } catch (ignore) {} + + // Use session cookie as fallback + try { + window.document.cookie = + encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; + } catch (ignore) {} + } + + function normalizeLevel(input) { + var level = input; + if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) { + level = self.levels[level.toUpperCase()]; + } + if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) { + return level; + } else { + throw new TypeError("log.setLevel() called with invalid level: " + input); + } + } + /* * * Public logger API - see https://github.com/pimterry/loglevel for details @@ -16414,33 +121934,38 @@ module.exports = function (opts) { self.methodFactory = factory || defaultMethodFactory; self.getLevel = function () { - return currentLevel; + if (userLevel != null) { + return userLevel; + } else if (defaultLevel != null) { + return defaultLevel; + } else { + return inheritedLevel; + } }; self.setLevel = function (level, persist) { - if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) { - level = self.levels[level.toUpperCase()]; - } - if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) { - currentLevel = level; - if (persist !== false) { // defaults to true - persistLevelIfPossible(level); - } - replaceLoggingMethods.call(self, level, name); - if (typeof console === undefinedType && level < self.levels.SILENT) { - return "No console available for logging"; - } - } else { - throw "log.setLevel() called with invalid level: " + level; + userLevel = normalizeLevel(level); + if (persist !== false) { // defaults to true + persistLevelIfPossible(userLevel); } + + // NOTE: in v2, this should call rebuild(), which updates children. + return replaceLoggingMethods.call(self); }; self.setDefaultLevel = function (level) { + defaultLevel = normalizeLevel(level); if (!getPersistedLevel()) { self.setLevel(level, false); } }; + self.resetLevel = function () { + userLevel = null; + clearPersistedLevel(); + replaceLoggingMethods.call(self); + }; + self.enableAll = function(persist) { self.setLevel(self.levels.TRACE, persist); }; @@ -16449,12 +121974,28 @@ module.exports = function (opts) { self.setLevel(self.levels.SILENT, persist); }; - // Initialize with the right level + self.rebuild = function () { + if (defaultLogger !== self) { + inheritedLevel = normalizeLevel(defaultLogger.getLevel()); + } + replaceLoggingMethods.call(self); + + if (defaultLogger === self) { + for (var childName in _loggersByName) { + _loggersByName[childName].rebuild(); + } + } + }; + + // Initialize all the internal levels. + inheritedLevel = normalizeLevel( + defaultLogger ? defaultLogger.getLevel() : "WARN" + ); var initialLevel = getPersistedLevel(); - if (initialLevel == null) { - initialLevel = defaultLevel == null ? "WARN" : defaultLevel; + if (initialLevel != null) { + userLevel = normalizeLevel(initialLevel); } - self.setLevel(initialLevel, false); + replaceLoggingMethods.call(self); } /* @@ -16463,18 +122004,19 @@ module.exports = function (opts) { * */ - var defaultLogger = new Logger(); + defaultLogger = new Logger(); - var _loggersByName = {}; defaultLogger.getLogger = function getLogger(name) { if ((typeof name !== "symbol" && typeof name !== "string") || name === "") { - throw new TypeError("You must supply a name when creating a logger."); + throw new TypeError("You must supply a name when creating a logger."); } var logger = _loggersByName[name]; if (!logger) { - logger = _loggersByName[name] = new Logger( - name, defaultLogger.getLevel(), defaultLogger.methodFactory); + logger = _loggersByName[name] = new Logger( + name, + defaultLogger.methodFactory + ); } return logger; }; @@ -16503,183 +122045,67 @@ module.exports = function (opts) { /***/ }), -/***/ 8465: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ 6696: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +var mdurl = __nccwpck_require__(6000); +var ucmicro = __nccwpck_require__(2965); +var entities = __nccwpck_require__(3000); +var LinkifyIt = __nccwpck_require__(1429); +var punycode = __nccwpck_require__(9791); -module.exports = __webpack_require__(4949); +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n.default = e; + return Object.freeze(n); +} +var mdurl__namespace = /*#__PURE__*/_interopNamespaceDefault(mdurl); +var ucmicro__namespace = /*#__PURE__*/_interopNamespaceDefault(ucmicro); -/***/ }), - -/***/ 9220: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// HTML5 entities map: { name -> utf16string } -// - - -/*eslint quotes:0*/ -module.exports = __webpack_require__(4007); - - -/***/ }), - -/***/ 9035: -/***/ ((module) => { - -"use strict"; -// List of valid html blocks names, accorting to commonmark spec -// http://jgm.github.io/CommonMark/spec.html#html-blocks - - - - -module.exports = [ - 'address', - 'article', - 'aside', - 'base', - 'basefont', - 'blockquote', - 'body', - 'caption', - 'center', - 'col', - 'colgroup', - 'dd', - 'details', - 'dialog', - 'dir', - 'div', - 'dl', - 'dt', - 'fieldset', - 'figcaption', - 'figure', - 'footer', - 'form', - 'frame', - 'frameset', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'head', - 'header', - 'hr', - 'html', - 'iframe', - 'legend', - 'li', - 'link', - 'main', - 'menu', - 'menuitem', - 'meta', - 'nav', - 'noframes', - 'ol', - 'optgroup', - 'option', - 'p', - 'param', - 'section', - 'source', - 'summary', - 'table', - 'tbody', - 'td', - 'tfoot', - 'th', - 'thead', - 'title', - 'tr', - 'track', - 'ul' -]; - - -/***/ }), - -/***/ 6537: -/***/ ((module) => { - -"use strict"; -// Regexps to match html elements - - - -var attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*'; - -var unquoted = '[^"\'=<>`\\x00-\\x20]+'; -var single_quoted = "'[^']*'"; -var double_quoted = '"[^"]*"'; - -var attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'; - -var attribute = '(?:\\s+' + attr_name + '(?:\\s*=\\s*' + attr_value + ')?)'; - -var open_tag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>'; - -var close_tag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>'; -var comment = '|'; -var processing = '<[?].*?[?]>'; -var declaration = ']*>'; -var cdata = ''; - -var HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment + - '|' + processing + '|' + declaration + '|' + cdata + ')'); -var HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')'); - -module.exports.n = HTML_TAG_RE; -module.exports.q = HTML_OPEN_CLOSE_TAG_RE; - - -/***/ }), - -/***/ 506: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; // Utilities // - - -function _class(obj) { return Object.prototype.toString.call(obj); } - -function isString(obj) { return _class(obj) === '[object String]'; } - -var _hasOwnProperty = Object.prototype.hasOwnProperty; - +function _class(obj) { + return Object.prototype.toString.call(obj); +} +function isString(obj) { + return _class(obj) === '[object String]'; +} +const _hasOwnProperty = Object.prototype.hasOwnProperty; function has(object, key) { return _hasOwnProperty.call(object, key); } // Merge objects // -function assign(obj /*from1, from2, from3, ...*/) { - var sources = Array.prototype.slice.call(arguments, 1); - +function assign(obj /* from1, from2, from3, ... */) { + const sources = Array.prototype.slice.call(arguments, 1); sources.forEach(function (source) { - if (!source) { return; } - + if (!source) { + return; + } if (typeof source !== 'object') { throw new TypeError(source + 'must be object'); } - Object.keys(source).forEach(function (key) { obj[key] = source[key]; }); }); - return obj; } @@ -16688,118 +122114,111 @@ function assign(obj /*from1, from2, from3, ...*/) { function arrayReplaceAt(src, pos, newElements) { return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1)); } - -//////////////////////////////////////////////////////////////////////////////// - function isValidEntityCode(c) { - /*eslint no-bitwise:0*/ + /* eslint no-bitwise:0 */ // broken sequence - if (c >= 0xD800 && c <= 0xDFFF) { return false; } + if (c >= 0xD800 && c <= 0xDFFF) { + return false; + } // never used - if (c >= 0xFDD0 && c <= 0xFDEF) { return false; } - if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; } + if (c >= 0xFDD0 && c <= 0xFDEF) { + return false; + } + if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { + return false; + } // control codes - if (c >= 0x00 && c <= 0x08) { return false; } - if (c === 0x0B) { return false; } - if (c >= 0x0E && c <= 0x1F) { return false; } - if (c >= 0x7F && c <= 0x9F) { return false; } + if (c >= 0x00 && c <= 0x08) { + return false; + } + if (c === 0x0B) { + return false; + } + if (c >= 0x0E && c <= 0x1F) { + return false; + } + if (c >= 0x7F && c <= 0x9F) { + return false; + } // out of range - if (c > 0x10FFFF) { return false; } + if (c > 0x10FFFF) { + return false; + } return true; } - function fromCodePoint(c) { - /*eslint no-bitwise:0*/ + /* eslint no-bitwise:0 */ if (c > 0xffff) { c -= 0x10000; - var surrogate1 = 0xd800 + (c >> 10), - surrogate2 = 0xdc00 + (c & 0x3ff); - + const surrogate1 = 0xd800 + (c >> 10); + const surrogate2 = 0xdc00 + (c & 0x3ff); return String.fromCharCode(surrogate1, surrogate2); } return String.fromCharCode(c); } - - -var UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g; -var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi; -var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi'); - -var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i; - -var entities = __webpack_require__(9220); - +const UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g; +const ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi; +const UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi'); +const DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i; function replaceEntityPattern(match, name) { - var code = 0; - - if (has(entities, name)) { - return entities[name]; - } - - if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) { - code = name[1].toLowerCase() === 'x' ? - parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10); - + if (name.charCodeAt(0) === 0x23 /* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) { + const code = name[1].toLowerCase() === 'x' ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10); if (isValidEntityCode(code)) { return fromCodePoint(code); } + return match; + } + const decoded = entities.decodeHTML(match); + if (decoded !== match) { + return decoded; } - return match; } -/*function replaceEntities(str) { +/* function replaceEntities(str) { if (str.indexOf('&') < 0) { return str; } return str.replace(ENTITY_RE, replaceEntityPattern); -}*/ +} */ function unescapeMd(str) { - if (str.indexOf('\\') < 0) { return str; } + if (str.indexOf('\\') < 0) { + return str; + } return str.replace(UNESCAPE_MD_RE, '$1'); } - function unescapeAll(str) { - if (str.indexOf('\\') < 0 && str.indexOf('&') < 0) { return str; } - + if (str.indexOf('\\') < 0 && str.indexOf('&') < 0) { + return str; + } return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) { - if (escaped) { return escaped; } + if (escaped) { + return escaped; + } return replaceEntityPattern(match, entity); }); } - -//////////////////////////////////////////////////////////////////////////////// - -var HTML_ESCAPE_TEST_RE = /[&<>"]/; -var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; -var HTML_REPLACEMENTS = { +const HTML_ESCAPE_TEST_RE = /[&<>"]/; +const HTML_ESCAPE_REPLACE_RE = /[&<>"]/g; +const HTML_REPLACEMENTS = { '&': '&', '<': '<', '>': '>', '"': '"' }; - function replaceUnsafeChar(ch) { return HTML_REPLACEMENTS[ch]; } - function escapeHtml(str) { if (HTML_ESCAPE_TEST_RE.test(str)) { return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar); } return str; } - -//////////////////////////////////////////////////////////////////////////////// - -var REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g; - +const REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g; function escapeRE(str) { return str.replace(REGEXP_ESCAPE_RE, '\\$&'); } - -//////////////////////////////////////////////////////////////////////////////// - function isSpace(code) { switch (code) { case 0x09: @@ -16811,7 +122230,9 @@ function isSpace(code) { // Zs (unicode class) || [\t\f\v\r\n] function isWhiteSpace(code) { - if (code >= 0x2000 && code <= 0x200A) { return true; } + if (code >= 0x2000 && code <= 0x200A) { + return true; + } switch (code) { case 0x09: // \t case 0x0A: // \n @@ -16829,17 +122250,13 @@ function isWhiteSpace(code) { return false; } -//////////////////////////////////////////////////////////////////////////////// - -/*eslint-disable max-len*/ -var UNICODE_PUNCT_RE = __webpack_require__(8019); +/* eslint-disable max-len */ // Currently without astral characters support. function isPunctChar(ch) { - return UNICODE_PUNCT_RE.test(ch); + return ucmicro__namespace.P.test(ch) || ucmicro__namespace.S.test(ch); } - // Markdown ASCII punctuation characters. // // !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, or ~ @@ -16849,38 +122266,38 @@ function isPunctChar(ch) { // function isMdAsciiPunct(ch) { switch (ch) { - case 0x21/* ! */: - case 0x22/* " */: - case 0x23/* # */: - case 0x24/* $ */: - case 0x25/* % */: - case 0x26/* & */: - case 0x27/* ' */: - case 0x28/* ( */: - case 0x29/* ) */: - case 0x2A/* * */: - case 0x2B/* + */: - case 0x2C/* , */: - case 0x2D/* - */: - case 0x2E/* . */: - case 0x2F/* / */: - case 0x3A/* : */: - case 0x3B/* ; */: - case 0x3C/* < */: - case 0x3D/* = */: - case 0x3E/* > */: - case 0x3F/* ? */: - case 0x40/* @ */: - case 0x5B/* [ */: - case 0x5C/* \ */: - case 0x5D/* ] */: - case 0x5E/* ^ */: - case 0x5F/* _ */: - case 0x60/* ` */: - case 0x7B/* { */: - case 0x7C/* | */: - case 0x7D/* } */: - case 0x7E/* ~ */: + case 0x21 /* ! */: + case 0x22 /* " */: + case 0x23 /* # */: + case 0x24 /* $ */: + case 0x25 /* % */: + case 0x26 /* & */: + case 0x27 /* ' */: + case 0x28 /* ( */: + case 0x29 /* ) */: + case 0x2A /* * */: + case 0x2B /* + */: + case 0x2C /* , */: + case 0x2D /* - */: + case 0x2E /* . */: + case 0x2F /* / */: + case 0x3A /* : */: + case 0x3B /* ; */: + case 0x3C /* < */: + case 0x3D /* = */: + case 0x3E /* > */: + case 0x3F /* ? */: + case 0x40 /* @ */: + case 0x5B /* [ */: + case 0x5C /* \ */: + case 0x5D /* ] */: + case 0x5E /* ^ */: + case 0x5F /* _ */: + case 0x60 /* ` */: + case 0x7B /* { */: + case 0x7C /* | */: + case 0x7D /* } */: + case 0x7E /* ~ */: return true; default: return false; @@ -16939,158 +122356,47 @@ function normalizeReference(str) { return str.toLowerCase().toUpperCase(); } -//////////////////////////////////////////////////////////////////////////////// - // Re-export libraries commonly used in both markdown-it and its plugins, // so plugins won't have to depend on them explicitly, which reduces their // bundled size (e.g. a browser build). // -exports.lib = {}; -exports.lib.mdurl = __webpack_require__(114); -exports.lib.ucmicro = __webpack_require__(5649); - -exports.assign = assign; -exports.isString = isString; -exports.has = has; -exports.unescapeMd = unescapeMd; -exports.unescapeAll = unescapeAll; -exports.isValidEntityCode = isValidEntityCode; -exports.fromCodePoint = fromCodePoint; -// exports.replaceEntities = replaceEntities; -exports.escapeHtml = escapeHtml; -exports.arrayReplaceAt = arrayReplaceAt; -exports.isSpace = isSpace; -exports.isWhiteSpace = isWhiteSpace; -exports.isMdAsciiPunct = isMdAsciiPunct; -exports.isPunctChar = isPunctChar; -exports.escapeRE = escapeRE; -exports.normalizeReference = normalizeReference; - - -/***/ }), - -/***/ 3380: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -// Just a shortcut for bulk export - - - -exports.parseLinkLabel = __webpack_require__(7945); -exports.parseLinkDestination = __webpack_require__(9914); -exports.parseLinkTitle = __webpack_require__(3085); - - -/***/ }), - -/***/ 9914: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Parse link destination -// - - - -var unescapeAll = __webpack_require__(506).unescapeAll; - - -module.exports = function parseLinkDestination(str, pos, max) { - var code, level, - lines = 0, - start = pos, - result = { - ok: false, - pos: 0, - lines: 0, - str: '' - }; - - if (str.charCodeAt(pos) === 0x3C /* < */) { - pos++; - while (pos < max) { - code = str.charCodeAt(pos); - if (code === 0x0A /* \n */) { return result; } - if (code === 0x3E /* > */) { - result.pos = pos + 1; - result.str = unescapeAll(str.slice(start + 1, pos)); - result.ok = true; - return result; - } - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - pos++; - } - - // no closing '>' - return result; - } - - // this should be ... } else { ... branch - - level = 0; - while (pos < max) { - code = str.charCodeAt(pos); - - if (code === 0x20) { break; } - - // ascii control characters - if (code < 0x20 || code === 0x7F) { break; } - - if (code === 0x5C /* \ */ && pos + 1 < max) { - pos += 2; - continue; - } - - if (code === 0x28 /* ( */) { - level++; - } - - if (code === 0x29 /* ) */) { - if (level === 0) { break; } - level--; - } - - pos++; - } - - if (start === pos) { return result; } - if (level !== 0) { return result; } - - result.str = unescapeAll(str.slice(start, pos)); - result.lines = lines; - result.pos = pos; - result.ok = true; - return result; +const lib = { + mdurl: mdurl__namespace, + ucmicro: ucmicro__namespace }; +var utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + arrayReplaceAt: arrayReplaceAt, + assign: assign, + escapeHtml: escapeHtml, + escapeRE: escapeRE, + fromCodePoint: fromCodePoint, + has: has, + isMdAsciiPunct: isMdAsciiPunct, + isPunctChar: isPunctChar, + isSpace: isSpace, + isString: isString, + isValidEntityCode: isValidEntityCode, + isWhiteSpace: isWhiteSpace, + lib: lib, + normalizeReference: normalizeReference, + unescapeAll: unescapeAll, + unescapeMd: unescapeMd +}); -/***/ }), - -/***/ 7945: -/***/ ((module) => { - -"use strict"; // Parse link label // // this function assumes that first character ("[") already matches; // returns the end of the label // - -module.exports = function parseLinkLabel(state, start, disableNested) { - var level, found, marker, prevPos, - labelEnd = -1, - max = state.posMax, - oldPos = state.pos; - +function parseLinkLabel(state, start, disableNested) { + let level, found, marker, prevPos; + const max = state.posMax; + const oldPos = state.pos; state.pos = start + 1; level = 1; - while (state.pos < max) { marker = state.src.charCodeAt(state.pos); if (marker === 0x5D /* ] */) { @@ -17100,7 +122406,6 @@ module.exports = function parseLinkLabel(state, start, disableNested) { break; } } - prevPos = state.pos; state.md.inline.skipToken(state); if (marker === 0x5B /* [ */) { @@ -17113,108 +122418,4651 @@ module.exports = function parseLinkLabel(state, start, disableNested) { } } } - + let labelEnd = -1; if (found) { labelEnd = state.pos; } // restore old state state.pos = oldPos; - return labelEnd; -}; +} +// Parse link destination +// -/***/ }), +function parseLinkDestination(str, start, max) { + let code; + let pos = start; + const result = { + ok: false, + pos: 0, + str: '' + }; + if (str.charCodeAt(pos) === 0x3C /* < */) { + pos++; + while (pos < max) { + code = str.charCodeAt(pos); + if (code === 0x0A /* \n */) { + return result; + } + if (code === 0x3C /* < */) { + return result; + } + if (code === 0x3E /* > */) { + result.pos = pos + 1; + result.str = unescapeAll(str.slice(start + 1, pos)); + result.ok = true; + return result; + } + if (code === 0x5C /* \ */ && pos + 1 < max) { + pos += 2; + continue; + } + pos++; + } -/***/ 3085: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // no closing '>' + return result; + } + + // this should be ... } else { ... branch + + let level = 0; + while (pos < max) { + code = str.charCodeAt(pos); + if (code === 0x20) { + break; + } + + // ascii control characters + if (code < 0x20 || code === 0x7F) { + break; + } + if (code === 0x5C /* \ */ && pos + 1 < max) { + if (str.charCodeAt(pos + 1) === 0x20) { + break; + } + pos += 2; + continue; + } + if (code === 0x28 /* ( */) { + level++; + if (level > 32) { + return result; + } + } + if (code === 0x29 /* ) */) { + if (level === 0) { + break; + } + level--; + } + pos++; + } + if (start === pos) { + return result; + } + if (level !== 0) { + return result; + } + result.str = unescapeAll(str.slice(start, pos)); + result.pos = pos; + result.ok = true; + return result; +} -"use strict"; // Parse link title // +// Parse link title within `str` in [start, max] range, +// or continue previous parsing if `prev_state` is defined (equal to result of last execution). +// +function parseLinkTitle(str, start, max, prev_state) { + let code; + let pos = start; + const state = { + // if `true`, this is a valid link title + ok: false, + // if `true`, this link can be continued on the next line + can_continue: false, + // if `ok`, it's the position of the first character after the closing marker + pos: 0, + // if `ok`, it's the unescaped title + str: '', + // expected closing marker character code + marker: 0 + }; + if (prev_state) { + // this is a continuation of a previous parseLinkTitle call on the next line, + // used in reference links only + state.str = prev_state.str; + state.marker = prev_state.marker; + } else { + if (pos >= max) { + return state; + } + let marker = str.charCodeAt(pos); + if (marker !== 0x22 /* " */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { + return state; + } + start++; + pos++; -var unescapeAll = __webpack_require__(506).unescapeAll; - - -module.exports = function parseLinkTitle(str, pos, max) { - var code, - marker, - lines = 0, - start = pos, - result = { - ok: false, - pos: 0, - lines: 0, - str: '' - }; - - if (pos >= max) { return result; } - - marker = str.charCodeAt(pos); - - if (marker !== 0x22 /* " */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return result; } - - pos++; - - // if opening marker is "(", switch it to closing marker ")" - if (marker === 0x28) { marker = 0x29; } - + // if opening marker is "(", switch it to closing marker ")" + if (marker === 0x28) { + marker = 0x29; + } + state.marker = marker; + } while (pos < max) { code = str.charCodeAt(pos); - if (code === marker) { - result.pos = pos + 1; - result.lines = lines; - result.str = unescapeAll(str.slice(start + 1, pos)); - result.ok = true; - return result; - } else if (code === 0x0A) { - lines++; + if (code === state.marker) { + state.pos = pos + 1; + state.str += unescapeAll(str.slice(start, pos)); + state.ok = true; + return state; + } else if (code === 0x28 /* ( */ && state.marker === 0x29 /* ) */) { + return state; } else if (code === 0x5C /* \ */ && pos + 1 < max) { pos++; - if (str.charCodeAt(pos) === 0x0A) { - lines++; - } } - pos++; } + // no closing marker found, but this link title may continue on the next line (for references) + state.can_continue = true; + state.str += unescapeAll(str.slice(start, pos)); + return state; +} + +// Just a shortcut for bulk export + +var helpers = /*#__PURE__*/Object.freeze({ + __proto__: null, + parseLinkDestination: parseLinkDestination, + parseLinkLabel: parseLinkLabel, + parseLinkTitle: parseLinkTitle +}); + +/** + * class Renderer + * + * Generates HTML from parsed token stream. Each instance has independent + * copy of rules. Those can be rewritten with ease. Also, you can add new + * rules if you create plugin and adds new token types. + **/ + +const default_rules = {}; +default_rules.code_inline = function (tokens, idx, options, env, slf) { + const token = tokens[idx]; + return '' + escapeHtml(token.content) + ''; +}; +default_rules.code_block = function (tokens, idx, options, env, slf) { + const token = tokens[idx]; + return '' + escapeHtml(tokens[idx].content) + '\n'; +}; +default_rules.fence = function (tokens, idx, options, env, slf) { + const token = tokens[idx]; + const info = token.info ? unescapeAll(token.info).trim() : ''; + let langName = ''; + let langAttrs = ''; + if (info) { + const arr = info.split(/(\s+)/g); + langName = arr[0]; + langAttrs = arr.slice(2).join(''); + } + let highlighted; + if (options.highlight) { + highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content); + } else { + highlighted = escapeHtml(token.content); + } + if (highlighted.indexOf('${highlighted}\n`; + } + return `
${highlighted}
\n`; +}; +default_rules.image = function (tokens, idx, options, env, slf) { + const token = tokens[idx]; + + // "alt" attr MUST be set, even if empty. Because it's mandatory and + // should be placed on proper position for tests. + // + // Replace content with actual value + + token.attrs[token.attrIndex('alt')][1] = slf.renderInlineAsText(token.children, options, env); + return slf.renderToken(tokens, idx, options); +}; +default_rules.hardbreak = function (tokens, idx, options /*, env */) { + return options.xhtmlOut ? '
\n' : '
\n'; +}; +default_rules.softbreak = function (tokens, idx, options /*, env */) { + return options.breaks ? options.xhtmlOut ? '
\n' : '
\n' : '\n'; +}; +default_rules.text = function (tokens, idx /*, options, env */) { + return escapeHtml(tokens[idx].content); +}; +default_rules.html_block = function (tokens, idx /*, options, env */) { + return tokens[idx].content; +}; +default_rules.html_inline = function (tokens, idx /*, options, env */) { + return tokens[idx].content; +}; + +/** + * new Renderer() + * + * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults. + **/ +function Renderer() { + /** + * Renderer#rules -> Object + * + * Contains render rules for tokens. Can be updated and extended. + * + * ##### Example + * + * ```javascript + * var md = require('markdown-it')(); + * + * md.renderer.rules.strong_open = function () { return ''; }; + * md.renderer.rules.strong_close = function () { return ''; }; + * + * var result = md.renderInline(...); + * ``` + * + * Each rule is called as independent static function with fixed signature: + * + * ```javascript + * function my_token_render(tokens, idx, options, env, renderer) { + * // ... + * return renderedHTML; + * } + * ``` + * + * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs) + * for more details and examples. + **/ + this.rules = assign({}, default_rules); +} + +/** + * Renderer.renderAttrs(token) -> String + * + * Render token attributes to string. + **/ +Renderer.prototype.renderAttrs = function renderAttrs(token) { + let i, l, result; + if (!token.attrs) { + return ''; + } + result = ''; + for (i = 0, l = token.attrs.length; i < l; i++) { + result += ' ' + escapeHtml(token.attrs[i][0]) + '="' + escapeHtml(token.attrs[i][1]) + '"'; + } return result; }; +/** + * Renderer.renderToken(tokens, idx, options) -> String + * - tokens (Array): list of tokens + * - idx (Numbed): token index to render + * - options (Object): params of parser instance + * + * Default token renderer. Can be overriden by custom function + * in [[Renderer#rules]]. + **/ +Renderer.prototype.renderToken = function renderToken(tokens, idx, options) { + const token = tokens[idx]; + let result = ''; -/***/ }), + // Tight list paragraphs + if (token.hidden) { + return ''; + } -/***/ 4949: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + // Insert a newline between hidden paragraph and subsequent opening + // block-level tag. + // + // For example, here we should insert a newline before blockquote: + // - a + // > + // + if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) { + result += '\n'; + } -"use strict"; -// Main parser class + // Add token name, e.g. ``. + // + needLf = false; + } + } + } + } + result += needLf ? '>\n' : '>'; + return result; +}; + +/** + * Renderer.renderInline(tokens, options, env) -> String + * - tokens (Array): list on block tokens to render + * - options (Object): params of parser instance + * - env (Object): additional data from parsed input (references, for example) + * + * The same as [[Renderer.render]], but for single token of `inline` type. + **/ +Renderer.prototype.renderInline = function (tokens, options, env) { + let result = ''; + const rules = this.rules; + for (let i = 0, len = tokens.length; i < len; i++) { + const type = tokens[i].type; + if (typeof rules[type] !== 'undefined') { + result += rules[type](tokens, i, options, env, this); + } else { + result += this.renderToken(tokens, i, options); + } + } + return result; +}; + +/** internal + * Renderer.renderInlineAsText(tokens, options, env) -> String + * - tokens (Array): list on block tokens to render + * - options (Object): params of parser instance + * - env (Object): additional data from parsed input (references, for example) + * + * Special kludge for image `alt` attributes to conform CommonMark spec. + * Don't try to use it! Spec requires to show `alt` content with stripped markup, + * instead of simple escaping. + **/ +Renderer.prototype.renderInlineAsText = function (tokens, options, env) { + let result = ''; + for (let i = 0, len = tokens.length; i < len; i++) { + switch (tokens[i].type) { + case 'text': + result += tokens[i].content; + break; + case 'image': + result += this.renderInlineAsText(tokens[i].children, options, env); + break; + case 'html_inline': + case 'html_block': + result += tokens[i].content; + break; + case 'softbreak': + case 'hardbreak': + result += '\n'; + break; + // all other tokens are skipped + } + } + return result; +}; + +/** + * Renderer.render(tokens, options, env) -> String + * - tokens (Array): list on block tokens to render + * - options (Object): params of parser instance + * - env (Object): additional data from parsed input (references, for example) + * + * Takes token stream and generates HTML. Probably, you will never need to call + * this method directly. + **/ +Renderer.prototype.render = function (tokens, options, env) { + let result = ''; + const rules = this.rules; + for (let i = 0, len = tokens.length; i < len; i++) { + const type = tokens[i].type; + if (type === 'inline') { + result += this.renderInline(tokens[i].children, options, env); + } else if (typeof rules[type] !== 'undefined') { + result += rules[type](tokens, i, options, env, this); + } else { + result += this.renderToken(tokens, i, options, env); + } + } + return result; +}; + +/** + * class Ruler + * + * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and + * [[MarkdownIt#inline]] to manage sequences of functions (rules): + * + * - keep rules in defined order + * - assign the name to each rule + * - enable/disable rules + * - add/replace rules + * - allow assign rules to additional named chains (in the same) + * - cacheing lists of active rules + * + * You will not need use this class directly until write plugins. For simple + * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and + * [[MarkdownIt.use]]. + **/ + +/** + * new Ruler() + **/ +function Ruler() { + // List of added rules. Each element is: + // + // { + // name: XXX, + // enabled: Boolean, + // fn: Function(), + // alt: [ name2, name3 ] + // } + // + this.__rules__ = []; + + // Cached rule chains. + // + // First level - chain name, '' for default. + // Second level - diginal anchor for fast filtering by charcodes. + // + this.__cache__ = null; +} + +// Helper methods, should not be used directly + +// Find rule index by name +// +Ruler.prototype.__find__ = function (name) { + for (let i = 0; i < this.__rules__.length; i++) { + if (this.__rules__[i].name === name) { + return i; + } + } + return -1; +}; + +// Build rules lookup cache +// +Ruler.prototype.__compile__ = function () { + const self = this; + const chains = ['']; + + // collect unique names + self.__rules__.forEach(function (rule) { + if (!rule.enabled) { + return; + } + rule.alt.forEach(function (altName) { + if (chains.indexOf(altName) < 0) { + chains.push(altName); + } + }); + }); + self.__cache__ = {}; + chains.forEach(function (chain) { + self.__cache__[chain] = []; + self.__rules__.forEach(function (rule) { + if (!rule.enabled) { + return; + } + if (chain && rule.alt.indexOf(chain) < 0) { + return; + } + self.__cache__[chain].push(rule.fn); + }); + }); +}; + +/** + * Ruler.at(name, fn [, options]) + * - name (String): rule name to replace. + * - fn (Function): new rule function. + * - options (Object): new rule options (not mandatory). + * + * Replace rule by name with new function & options. Throws error if name not + * found. + * + * ##### Options: + * + * - __alt__ - array with names of "alternate" chains. + * + * ##### Example + * + * Replace existing typographer replacement rule with new one: + * + * ```javascript + * var md = require('markdown-it')(); + * + * md.core.ruler.at('replacements', function replace(state) { + * //... + * }); + * ``` + **/ +Ruler.prototype.at = function (name, fn, options) { + const index = this.__find__(name); + const opt = options || {}; + if (index === -1) { + throw new Error('Parser rule not found: ' + name); + } + this.__rules__[index].fn = fn; + this.__rules__[index].alt = opt.alt || []; + this.__cache__ = null; +}; + +/** + * Ruler.before(beforeName, ruleName, fn [, options]) + * - beforeName (String): new rule will be added before this one. + * - ruleName (String): name of added rule. + * - fn (Function): rule function. + * - options (Object): rule options (not mandatory). + * + * Add new rule to chain before one with given name. See also + * [[Ruler.after]], [[Ruler.push]]. + * + * ##### Options: + * + * - __alt__ - array with names of "alternate" chains. + * + * ##### Example + * + * ```javascript + * var md = require('markdown-it')(); + * + * md.block.ruler.before('paragraph', 'my_rule', function replace(state) { + * //... + * }); + * ``` + **/ +Ruler.prototype.before = function (beforeName, ruleName, fn, options) { + const index = this.__find__(beforeName); + const opt = options || {}; + if (index === -1) { + throw new Error('Parser rule not found: ' + beforeName); + } + this.__rules__.splice(index, 0, { + name: ruleName, + enabled: true, + fn, + alt: opt.alt || [] + }); + this.__cache__ = null; +}; + +/** + * Ruler.after(afterName, ruleName, fn [, options]) + * - afterName (String): new rule will be added after this one. + * - ruleName (String): name of added rule. + * - fn (Function): rule function. + * - options (Object): rule options (not mandatory). + * + * Add new rule to chain after one with given name. See also + * [[Ruler.before]], [[Ruler.push]]. + * + * ##### Options: + * + * - __alt__ - array with names of "alternate" chains. + * + * ##### Example + * + * ```javascript + * var md = require('markdown-it')(); + * + * md.inline.ruler.after('text', 'my_rule', function replace(state) { + * //... + * }); + * ``` + **/ +Ruler.prototype.after = function (afterName, ruleName, fn, options) { + const index = this.__find__(afterName); + const opt = options || {}; + if (index === -1) { + throw new Error('Parser rule not found: ' + afterName); + } + this.__rules__.splice(index + 1, 0, { + name: ruleName, + enabled: true, + fn, + alt: opt.alt || [] + }); + this.__cache__ = null; +}; + +/** + * Ruler.push(ruleName, fn [, options]) + * - ruleName (String): name of added rule. + * - fn (Function): rule function. + * - options (Object): rule options (not mandatory). + * + * Push new rule to the end of chain. See also + * [[Ruler.before]], [[Ruler.after]]. + * + * ##### Options: + * + * - __alt__ - array with names of "alternate" chains. + * + * ##### Example + * + * ```javascript + * var md = require('markdown-it')(); + * + * md.core.ruler.push('my_rule', function replace(state) { + * //... + * }); + * ``` + **/ +Ruler.prototype.push = function (ruleName, fn, options) { + const opt = options || {}; + this.__rules__.push({ + name: ruleName, + enabled: true, + fn, + alt: opt.alt || [] + }); + this.__cache__ = null; +}; + +/** + * Ruler.enable(list [, ignoreInvalid]) -> Array + * - list (String|Array): list of rule names to enable. + * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found. + * + * Enable rules with given names. If any rule name not found - throw Error. + * Errors can be disabled by second param. + * + * Returns list of found rule names (if no exception happened). + * + * See also [[Ruler.disable]], [[Ruler.enableOnly]]. + **/ +Ruler.prototype.enable = function (list, ignoreInvalid) { + if (!Array.isArray(list)) { + list = [list]; + } + const result = []; + + // Search by name and enable + list.forEach(function (name) { + const idx = this.__find__(name); + if (idx < 0) { + if (ignoreInvalid) { + return; + } + throw new Error('Rules manager: invalid rule name ' + name); + } + this.__rules__[idx].enabled = true; + result.push(name); + }, this); + this.__cache__ = null; + return result; +}; + +/** + * Ruler.enableOnly(list [, ignoreInvalid]) + * - list (String|Array): list of rule names to enable (whitelist). + * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found. + * + * Enable rules with given names, and disable everything else. If any rule name + * not found - throw Error. Errors can be disabled by second param. + * + * See also [[Ruler.disable]], [[Ruler.enable]]. + **/ +Ruler.prototype.enableOnly = function (list, ignoreInvalid) { + if (!Array.isArray(list)) { + list = [list]; + } + this.__rules__.forEach(function (rule) { + rule.enabled = false; + }); + this.enable(list, ignoreInvalid); +}; + +/** + * Ruler.disable(list [, ignoreInvalid]) -> Array + * - list (String|Array): list of rule names to disable. + * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found. + * + * Disable rules with given names. If any rule name not found - throw Error. + * Errors can be disabled by second param. + * + * Returns list of found rule names (if no exception happened). + * + * See also [[Ruler.enable]], [[Ruler.enableOnly]]. + **/ +Ruler.prototype.disable = function (list, ignoreInvalid) { + if (!Array.isArray(list)) { + list = [list]; + } + const result = []; + + // Search by name and disable + list.forEach(function (name) { + const idx = this.__find__(name); + if (idx < 0) { + if (ignoreInvalid) { + return; + } + throw new Error('Rules manager: invalid rule name ' + name); + } + this.__rules__[idx].enabled = false; + result.push(name); + }, this); + this.__cache__ = null; + return result; +}; + +/** + * Ruler.getRules(chainName) -> Array + * + * Return array of active functions (rules) for given chain name. It analyzes + * rules configuration, compiles caches if not exists and returns result. + * + * Default chain name is `''` (empty string). It can't be skipped. That's + * done intentionally, to keep signature monomorphic for high speed. + **/ +Ruler.prototype.getRules = function (chainName) { + if (this.__cache__ === null) { + this.__compile__(); + } + + // Chain can be empty, if rules disabled. But we still have to return Array. + return this.__cache__[chainName] || []; +}; + +// Token class + +/** + * class Token + **/ + +/** + * new Token(type, tag, nesting) + * + * Create new token and fill passed properties. + **/ +function Token(type, tag, nesting) { + /** + * Token#type -> String + * + * Type of the token (string, e.g. "paragraph_open") + **/ + this.type = type; + + /** + * Token#tag -> String + * + * html tag name, e.g. "p" + **/ + this.tag = tag; + + /** + * Token#attrs -> Array + * + * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]` + **/ + this.attrs = null; + + /** + * Token#map -> Array + * + * Source map info. Format: `[ line_begin, line_end ]` + **/ + this.map = null; + + /** + * Token#nesting -> Number + * + * Level change (number in {-1, 0, 1} set), where: + * + * - `1` means the tag is opening + * - `0` means the tag is self-closing + * - `-1` means the tag is closing + **/ + this.nesting = nesting; + + /** + * Token#level -> Number + * + * nesting level, the same as `state.level` + **/ + this.level = 0; + + /** + * Token#children -> Array + * + * An array of child nodes (inline and img tokens) + **/ + this.children = null; + + /** + * Token#content -> String + * + * In a case of self-closing tag (code, html, fence, etc.), + * it has contents of this tag. + **/ + this.content = ''; + + /** + * Token#markup -> String + * + * '*' or '_' for emphasis, fence string for fence, etc. + **/ + this.markup = ''; + + /** + * Token#info -> String + * + * Additional information: + * + * - Info string for "fence" tokens + * - The value "auto" for autolink "link_open" and "link_close" tokens + * - The string value of the item marker for ordered-list "list_item_open" tokens + **/ + this.info = ''; + + /** + * Token#meta -> Object + * + * A place for plugins to store an arbitrary data + **/ + this.meta = null; + + /** + * Token#block -> Boolean + * + * True for block-level tokens, false for inline tokens. + * Used in renderer to calculate line breaks + **/ + this.block = false; + + /** + * Token#hidden -> Boolean + * + * If it's true, ignore this element when rendering. Used for tight lists + * to hide paragraphs. + **/ + this.hidden = false; +} + +/** + * Token.attrIndex(name) -> Number + * + * Search attribute index by name. + **/ +Token.prototype.attrIndex = function attrIndex(name) { + if (!this.attrs) { + return -1; + } + const attrs = this.attrs; + for (let i = 0, len = attrs.length; i < len; i++) { + if (attrs[i][0] === name) { + return i; + } + } + return -1; +}; + +/** + * Token.attrPush(attrData) + * + * Add `[ name, value ]` attribute to list. Init attrs if necessary + **/ +Token.prototype.attrPush = function attrPush(attrData) { + if (this.attrs) { + this.attrs.push(attrData); + } else { + this.attrs = [attrData]; + } +}; + +/** + * Token.attrSet(name, value) + * + * Set `name` attribute to `value`. Override old value if exists. + **/ +Token.prototype.attrSet = function attrSet(name, value) { + const idx = this.attrIndex(name); + const attrData = [name, value]; + if (idx < 0) { + this.attrPush(attrData); + } else { + this.attrs[idx] = attrData; + } +}; + +/** + * Token.attrGet(name) + * + * Get the value of attribute `name`, or null if it does not exist. + **/ +Token.prototype.attrGet = function attrGet(name) { + const idx = this.attrIndex(name); + let value = null; + if (idx >= 0) { + value = this.attrs[idx][1]; + } + return value; +}; + +/** + * Token.attrJoin(name, value) + * + * Join value to existing attribute via space. Or create new attribute if not + * exists. Useful to operate with token classes. + **/ +Token.prototype.attrJoin = function attrJoin(name, value) { + const idx = this.attrIndex(name); + if (idx < 0) { + this.attrPush([name, value]); + } else { + this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value; + } +}; + +// Core state object +// + +function StateCore(src, md, env) { + this.src = src; + this.env = env; + this.tokens = []; + this.inlineMode = false; + this.md = md; // link to parser instance +} + +// re-export Token class to use in core rules +StateCore.prototype.Token = Token; + +// Normalize input string + +// https://spec.commonmark.org/0.29/#line-ending +const NEWLINES_RE = /\r\n?|\n/g; +const NULL_RE = /\0/g; +function normalize(state) { + let str; + + // Normalize newlines + str = state.src.replace(NEWLINES_RE, '\n'); + + // Replace NULL characters + str = str.replace(NULL_RE, '\uFFFD'); + state.src = str; +} + +function block(state) { + let token; + if (state.inlineMode) { + token = new state.Token('inline', '', 0); + token.content = state.src; + token.map = [0, 1]; + token.children = []; + state.tokens.push(token); + } else { + state.md.block.parse(state.src, state.md, state.env, state.tokens); + } +} + +function inline(state) { + const tokens = state.tokens; + + // Parse inlines + for (let i = 0, l = tokens.length; i < l; i++) { + const tok = tokens[i]; + if (tok.type === 'inline') { + state.md.inline.parse(tok.content, state.md, state.env, tok.children); + } + } +} + +// Replace link-like texts with link nodes. +// +// Currently restricted by `md.validateLink()` to http/https/ftp +// + +function isLinkOpen$1(str) { + return /^\s]/i.test(str); +} +function isLinkClose$1(str) { + return /^<\/a\s*>/i.test(str); +} +function linkify$1(state) { + const blockTokens = state.tokens; + if (!state.md.options.linkify) { + return; + } + for (let j = 0, l = blockTokens.length; j < l; j++) { + if (blockTokens[j].type !== 'inline' || !state.md.linkify.pretest(blockTokens[j].content)) { + continue; + } + let tokens = blockTokens[j].children; + let htmlLinkLevel = 0; + + // We scan from the end, to keep position when new tags added. + // Use reversed logic in links start/end match + for (let i = tokens.length - 1; i >= 0; i--) { + const currentToken = tokens[i]; + + // Skip content of markdown links + if (currentToken.type === 'link_close') { + i--; + while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') { + i--; + } + continue; + } + + // Skip content of html tag links + if (currentToken.type === 'html_inline') { + if (isLinkOpen$1(currentToken.content) && htmlLinkLevel > 0) { + htmlLinkLevel--; + } + if (isLinkClose$1(currentToken.content)) { + htmlLinkLevel++; + } + } + if (htmlLinkLevel > 0) { + continue; + } + if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) { + const text = currentToken.content; + let links = state.md.linkify.match(text); + + // Now split string to nodes + const nodes = []; + let level = currentToken.level; + let lastPos = 0; + + // forbid escape sequence at the start of the string, + // this avoids http\://example.com/ from being linkified as + // http://example.com/ + if (links.length > 0 && links[0].index === 0 && i > 0 && tokens[i - 1].type === 'text_special') { + links = links.slice(1); + } + for (let ln = 0; ln < links.length; ln++) { + const url = links[ln].url; + const fullUrl = state.md.normalizeLink(url); + if (!state.md.validateLink(fullUrl)) { + continue; + } + let urlText = links[ln].text; + + // Linkifier might send raw hostnames like "example.com", where url + // starts with domain name. So we prepend http:// in those cases, + // and remove it afterwards. + // + if (!links[ln].schema) { + urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\/\//, ''); + } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) { + urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, ''); + } else { + urlText = state.md.normalizeLinkText(urlText); + } + const pos = links[ln].index; + if (pos > lastPos) { + const token = new state.Token('text', '', 0); + token.content = text.slice(lastPos, pos); + token.level = level; + nodes.push(token); + } + const token_o = new state.Token('link_open', 'a', 1); + token_o.attrs = [['href', fullUrl]]; + token_o.level = level++; + token_o.markup = 'linkify'; + token_o.info = 'auto'; + nodes.push(token_o); + const token_t = new state.Token('text', '', 0); + token_t.content = urlText; + token_t.level = level; + nodes.push(token_t); + const token_c = new state.Token('link_close', 'a', -1); + token_c.level = --level; + token_c.markup = 'linkify'; + token_c.info = 'auto'; + nodes.push(token_c); + lastPos = links[ln].lastIndex; + } + if (lastPos < text.length) { + const token = new state.Token('text', '', 0); + token.content = text.slice(lastPos); + token.level = level; + nodes.push(token); + } + + // replace current node + blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes); + } + } + } +} + +// Simple typographic replacements +// +// (c) (C) → © +// (tm) (TM) → ™ +// (r) (R) → ® +// +- → ± +// ... → … (also ?.... → ?.., !.... → !..) +// ???????? → ???, !!!!! → !!!, `,,` → `,` +// -- → –, --- → — +// + +// TODO: +// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾ +// - multiplications 2 x 4 -> 2 × 4 + +const RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/; + +// Workaround for phantomjs - need regex without /g flag, +// or root check will fail every second time +const SCOPED_ABBR_TEST_RE = /\((c|tm|r)\)/i; +const SCOPED_ABBR_RE = /\((c|tm|r)\)/ig; +const SCOPED_ABBR = { + c: '©', + r: '®', + tm: '™' +}; +function replaceFn(match, name) { + return SCOPED_ABBR[name.toLowerCase()]; +} +function replace_scoped(inlineTokens) { + let inside_autolink = 0; + for (let i = inlineTokens.length - 1; i >= 0; i--) { + const token = inlineTokens[i]; + if (token.type === 'text' && !inside_autolink) { + token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn); + } + if (token.type === 'link_open' && token.info === 'auto') { + inside_autolink--; + } + if (token.type === 'link_close' && token.info === 'auto') { + inside_autolink++; + } + } +} +function replace_rare(inlineTokens) { + let inside_autolink = 0; + for (let i = inlineTokens.length - 1; i >= 0; i--) { + const token = inlineTokens[i]; + if (token.type === 'text' && !inside_autolink) { + if (RARE_RE.test(token.content)) { + token.content = token.content.replace(/\+-/g, '±') + // .., ..., ....... -> … + // but ?..... & !..... -> ?.. & !.. + .replace(/\.{2,}/g, '…').replace(/([?!])…/g, '$1..').replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') + // em-dash + .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\u2014') + // en-dash + .replace(/(^|\s)--(?=\s|$)/mg, '$1\u2013').replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, '$1\u2013'); + } + } + if (token.type === 'link_open' && token.info === 'auto') { + inside_autolink--; + } + if (token.type === 'link_close' && token.info === 'auto') { + inside_autolink++; + } + } +} +function replace(state) { + let blkIdx; + if (!state.md.options.typographer) { + return; + } + for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { + if (state.tokens[blkIdx].type !== 'inline') { + continue; + } + if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) { + replace_scoped(state.tokens[blkIdx].children); + } + if (RARE_RE.test(state.tokens[blkIdx].content)) { + replace_rare(state.tokens[blkIdx].children); + } + } +} + +// Convert straight quotation marks to typographic ones +// + +const QUOTE_TEST_RE = /['"]/; +const QUOTE_RE = /['"]/g; +const APOSTROPHE = '\u2019'; /* ’ */ + +function replaceAt(str, index, ch) { + return str.slice(0, index) + ch + str.slice(index + 1); +} +function process_inlines(tokens, state) { + let j; + const stack = []; + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const thisLevel = tokens[i].level; + for (j = stack.length - 1; j >= 0; j--) { + if (stack[j].level <= thisLevel) { + break; + } + } + stack.length = j + 1; + if (token.type !== 'text') { + continue; + } + let text = token.content; + let pos = 0; + let max = text.length; + + /* eslint no-labels:0,block-scoped-var:0 */ + OUTER: while (pos < max) { + QUOTE_RE.lastIndex = pos; + const t = QUOTE_RE.exec(text); + if (!t) { + break; + } + let canOpen = true; + let canClose = true; + pos = t.index + 1; + const isSingle = t[0] === "'"; + + // Find previous character, + // default to space if it's the beginning of the line + // + let lastChar = 0x20; + if (t.index - 1 >= 0) { + lastChar = text.charCodeAt(t.index - 1); + } else { + for (j = i - 1; j >= 0; j--) { + if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20 + if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline' + + lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1); + break; + } + } + + // Find next character, + // default to space if it's the end of the line + // + let nextChar = 0x20; + if (pos < max) { + nextChar = text.charCodeAt(pos); + } else { + for (j = i + 1; j < tokens.length; j++) { + if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20 + if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline' + + nextChar = tokens[j].content.charCodeAt(0); + break; + } + } + const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); + const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); + const isLastWhiteSpace = isWhiteSpace(lastChar); + const isNextWhiteSpace = isWhiteSpace(nextChar); + if (isNextWhiteSpace) { + canOpen = false; + } else if (isNextPunctChar) { + if (!(isLastWhiteSpace || isLastPunctChar)) { + canOpen = false; + } + } + if (isLastWhiteSpace) { + canClose = false; + } else if (isLastPunctChar) { + if (!(isNextWhiteSpace || isNextPunctChar)) { + canClose = false; + } + } + if (nextChar === 0x22 /* " */ && t[0] === '"') { + if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) { + // special case: 1"" - count first quote as an inch + canClose = canOpen = false; + } + } + if (canOpen && canClose) { + // Replace quotes in the middle of punctuation sequence, but not + // in the middle of the words, i.e.: + // + // 1. foo " bar " baz - not replaced + // 2. foo-"-bar-"-baz - replaced + // 3. foo"bar"baz - not replaced + // + canOpen = isLastPunctChar; + canClose = isNextPunctChar; + } + if (!canOpen && !canClose) { + // middle of word + if (isSingle) { + token.content = replaceAt(token.content, t.index, APOSTROPHE); + } + continue; + } + if (canClose) { + // this could be a closing quote, rewind the stack to get a match + for (j = stack.length - 1; j >= 0; j--) { + let item = stack[j]; + if (stack[j].level < thisLevel) { + break; + } + if (item.single === isSingle && stack[j].level === thisLevel) { + item = stack[j]; + let openQuote; + let closeQuote; + if (isSingle) { + openQuote = state.md.options.quotes[2]; + closeQuote = state.md.options.quotes[3]; + } else { + openQuote = state.md.options.quotes[0]; + closeQuote = state.md.options.quotes[1]; + } + + // replace token.content *before* tokens[item.token].content, + // because, if they are pointing at the same token, replaceAt + // could mess up indices when quote length != 1 + token.content = replaceAt(token.content, t.index, closeQuote); + tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, openQuote); + pos += closeQuote.length - 1; + if (item.token === i) { + pos += openQuote.length - 1; + } + text = token.content; + max = text.length; + stack.length = j; + continue OUTER; + } + } + } + if (canOpen) { + stack.push({ + token: i, + pos: t.index, + single: isSingle, + level: thisLevel + }); + } else if (canClose && isSingle) { + token.content = replaceAt(token.content, t.index, APOSTROPHE); + } + } + } +} +function smartquotes(state) { + /* eslint max-depth:0 */ + if (!state.md.options.typographer) { + return; + } + for (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { + if (state.tokens[blkIdx].type !== 'inline' || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) { + continue; + } + process_inlines(state.tokens[blkIdx].children, state); + } +} + +// Join raw text tokens with the rest of the text +// +// This is set as a separate rule to provide an opportunity for plugins +// to run text replacements after text join, but before escape join. +// +// For example, `\:)` shouldn't be replaced with an emoji. +// + +function text_join(state) { + let curr, last; + const blockTokens = state.tokens; + const l = blockTokens.length; + for (let j = 0; j < l; j++) { + if (blockTokens[j].type !== 'inline') continue; + const tokens = blockTokens[j].children; + const max = tokens.length; + for (curr = 0; curr < max; curr++) { + if (tokens[curr].type === 'text_special') { + tokens[curr].type = 'text'; + } + } + for (curr = last = 0; curr < max; curr++) { + if (tokens[curr].type === 'text' && curr + 1 < max && tokens[curr + 1].type === 'text') { + // collapse two adjacent text nodes + tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content; + } else { + if (curr !== last) { + tokens[last] = tokens[curr]; + } + last++; + } + } + if (curr !== last) { + tokens.length = last; + } + } +} + +/** internal + * class Core + * + * Top-level rules executor. Glues block/inline parsers and does intermediate + * transformations. + **/ + +const _rules$2 = [['normalize', normalize], ['block', block], ['inline', inline], ['linkify', linkify$1], ['replacements', replace], ['smartquotes', smartquotes], +// `text_join` finds `text_special` tokens (for escape sequences) +// and joins them with the rest of the text +['text_join', text_join]]; + +/** + * new Core() + **/ +function Core() { + /** + * Core#ruler -> Ruler + * + * [[Ruler]] instance. Keep configuration of core rules. + **/ + this.ruler = new Ruler(); + for (let i = 0; i < _rules$2.length; i++) { + this.ruler.push(_rules$2[i][0], _rules$2[i][1]); + } +} + +/** + * Core.process(state) + * + * Executes core chain rules. + **/ +Core.prototype.process = function (state) { + const rules = this.ruler.getRules(''); + for (let i = 0, l = rules.length; i < l; i++) { + rules[i](state); + } +}; +Core.prototype.State = StateCore; + +// Parser state class + +function StateBlock(src, md, env, tokens) { + this.src = src; + + // link to parser instance + this.md = md; + this.env = env; + + // + // Internal state vartiables + // + + this.tokens = tokens; + this.bMarks = []; // line begin offsets for fast jumps + this.eMarks = []; // line end offsets for fast jumps + this.tShift = []; // offsets of the first non-space characters (tabs not expanded) + this.sCount = []; // indents for each line (tabs expanded) + + // An amount of virtual spaces (tabs expanded) between beginning + // of each line (bMarks) and real beginning of that line. + // + // It exists only as a hack because blockquotes override bMarks + // losing information in the process. + // + // It's used only when expanding tabs, you can think about it as + // an initial tab length, e.g. bsCount=21 applied to string `\t123` + // means first tab should be expanded to 4-21%4 === 3 spaces. + // + this.bsCount = []; + + // block parser variables + + // required block content indent (for example, if we are + // inside a list, it would be positioned after list marker) + this.blkIndent = 0; + this.line = 0; // line index in src + this.lineMax = 0; // lines count + this.tight = false; // loose/tight mode for lists + this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any) + this.listIndent = -1; // indent of the current list block (-1 if there isn't any) + + // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference' + // used in lists to determine if they interrupt a paragraph + this.parentType = 'root'; + this.level = 0; + + // Create caches + // Generate markers. + const s = this.src; + for (let start = 0, pos = 0, indent = 0, offset = 0, len = s.length, indent_found = false; pos < len; pos++) { + const ch = s.charCodeAt(pos); + if (!indent_found) { + if (isSpace(ch)) { + indent++; + if (ch === 0x09) { + offset += 4 - offset % 4; + } else { + offset++; + } + continue; + } else { + indent_found = true; + } + } + if (ch === 0x0A || pos === len - 1) { + if (ch !== 0x0A) { + pos++; + } + this.bMarks.push(start); + this.eMarks.push(pos); + this.tShift.push(indent); + this.sCount.push(offset); + this.bsCount.push(0); + indent_found = false; + indent = 0; + offset = 0; + start = pos + 1; + } + } + + // Push fake entry to simplify cache bounds checks + this.bMarks.push(s.length); + this.eMarks.push(s.length); + this.tShift.push(0); + this.sCount.push(0); + this.bsCount.push(0); + this.lineMax = this.bMarks.length - 1; // don't count last fake line +} + +// Push new token to "stream". +// +StateBlock.prototype.push = function (type, tag, nesting) { + const token = new Token(type, tag, nesting); + token.block = true; + if (nesting < 0) this.level--; // closing tag + token.level = this.level; + if (nesting > 0) this.level++; // opening tag + + this.tokens.push(token); + return token; +}; +StateBlock.prototype.isEmpty = function isEmpty(line) { + return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]; +}; +StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) { + for (let max = this.lineMax; from < max; from++) { + if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) { + break; + } + } + return from; +}; + +// Skip spaces from given position. +StateBlock.prototype.skipSpaces = function skipSpaces(pos) { + for (let max = this.src.length; pos < max; pos++) { + const ch = this.src.charCodeAt(pos); + if (!isSpace(ch)) { + break; + } + } + return pos; +}; + +// Skip spaces from given position in reverse. +StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) { + if (pos <= min) { + return pos; + } + while (pos > min) { + if (!isSpace(this.src.charCodeAt(--pos))) { + return pos + 1; + } + } + return pos; +}; + +// Skip char codes from given position +StateBlock.prototype.skipChars = function skipChars(pos, code) { + for (let max = this.src.length; pos < max; pos++) { + if (this.src.charCodeAt(pos) !== code) { + break; + } + } + return pos; +}; + +// Skip char codes reverse from given position - 1 +StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) { + if (pos <= min) { + return pos; + } + while (pos > min) { + if (code !== this.src.charCodeAt(--pos)) { + return pos + 1; + } + } + return pos; +}; + +// cut lines range from source. +StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) { + if (begin >= end) { + return ''; + } + const queue = new Array(end - begin); + for (let i = 0, line = begin; line < end; line++, i++) { + let lineIndent = 0; + const lineStart = this.bMarks[line]; + let first = lineStart; + let last; + if (line + 1 < end || keepLastLF) { + // No need for bounds check because we have fake entry on tail. + last = this.eMarks[line] + 1; + } else { + last = this.eMarks[line]; + } + while (first < last && lineIndent < indent) { + const ch = this.src.charCodeAt(first); + if (isSpace(ch)) { + if (ch === 0x09) { + lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4; + } else { + lineIndent++; + } + } else if (first - lineStart < this.tShift[line]) { + // patched tShift masked characters to look like spaces (blockquotes, list markers) + lineIndent++; + } else { + break; + } + first++; + } + if (lineIndent > indent) { + // partially expanding tabs in code blocks, e.g '\t\tfoobar' + // with indent=2 becomes ' \tfoobar' + queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last); + } else { + queue[i] = this.src.slice(first, last); + } + } + return queue.join(''); +}; + +// re-export Token class to use in block rules +StateBlock.prototype.Token = Token; + +// GFM table, https://github.github.com/gfm/#tables-extension- + + +// Limit the amount of empty autocompleted cells in a table, +// see https://github.com/markdown-it/markdown-it/issues/1000, +// +// Both pulldown-cmark and commonmark-hs limit the number of cells this way to ~200k. +// We set it to 65k, which can expand user input by a factor of x370 +// (256x256 square is 1.8kB expanded into 650kB). +const MAX_AUTOCOMPLETED_CELLS = 0x10000; +function getLine(state, line) { + const pos = state.bMarks[line] + state.tShift[line]; + const max = state.eMarks[line]; + return state.src.slice(pos, max); +} +function escapedSplit(str) { + const result = []; + const max = str.length; + let pos = 0; + let ch = str.charCodeAt(pos); + let isEscaped = false; + let lastPos = 0; + let current = ''; + while (pos < max) { + if (ch === 0x7c /* | */) { + if (!isEscaped) { + // pipe separating cells, '|' + result.push(current + str.substring(lastPos, pos)); + current = ''; + lastPos = pos + 1; + } else { + // escaped pipe, '\|' + current += str.substring(lastPos, pos - 1); + lastPos = pos; + } + } + isEscaped = ch === 0x5c /* \ */; + pos++; + ch = str.charCodeAt(pos); + } + result.push(current + str.substring(lastPos)); + return result; +} +function table(state, startLine, endLine, silent) { + // should have at least two lines + if (startLine + 2 > endLine) { + return false; + } + let nextLine = startLine + 1; + if (state.sCount[nextLine] < state.blkIndent) { + return false; + } + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[nextLine] - state.blkIndent >= 4) { + return false; + } + + // first character of the second line should be '|', '-', ':', + // and no other characters are allowed but spaces; + // basically, this is the equivalent of /^[-:|][-:|\s]*$/ regexp + + let pos = state.bMarks[nextLine] + state.tShift[nextLine]; + if (pos >= state.eMarks[nextLine]) { + return false; + } + const firstCh = state.src.charCodeAt(pos++); + if (firstCh !== 0x7C /* | */ && firstCh !== 0x2D /* - */ && firstCh !== 0x3A /* : */) { + return false; + } + if (pos >= state.eMarks[nextLine]) { + return false; + } + const secondCh = state.src.charCodeAt(pos++); + if (secondCh !== 0x7C /* | */ && secondCh !== 0x2D /* - */ && secondCh !== 0x3A /* : */ && !isSpace(secondCh)) { + return false; + } + + // if first character is '-', then second character must not be a space + // (due to parsing ambiguity with list) + if (firstCh === 0x2D /* - */ && isSpace(secondCh)) { + return false; + } + while (pos < state.eMarks[nextLine]) { + const ch = state.src.charCodeAt(pos); + if (ch !== 0x7C /* | */ && ch !== 0x2D /* - */ && ch !== 0x3A /* : */ && !isSpace(ch)) { + return false; + } + pos++; + } + let lineText = getLine(state, startLine + 1); + let columns = lineText.split('|'); + const aligns = []; + for (let i = 0; i < columns.length; i++) { + const t = columns[i].trim(); + if (!t) { + // allow empty columns before and after table, but not in between columns; + // e.g. allow ` |---| `, disallow ` ---||--- ` + if (i === 0 || i === columns.length - 1) { + continue; + } else { + return false; + } + } + if (!/^:?-+:?$/.test(t)) { + return false; + } + if (t.charCodeAt(t.length - 1) === 0x3A /* : */) { + aligns.push(t.charCodeAt(0) === 0x3A /* : */ ? 'center' : 'right'); + } else if (t.charCodeAt(0) === 0x3A /* : */) { + aligns.push('left'); + } else { + aligns.push(''); + } + } + lineText = getLine(state, startLine).trim(); + if (lineText.indexOf('|') === -1) { + return false; + } + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + columns = escapedSplit(lineText); + if (columns.length && columns[0] === '') columns.shift(); + if (columns.length && columns[columns.length - 1] === '') columns.pop(); + + // header row will define an amount of columns in the entire table, + // and align row should be exactly the same (the rest of the rows can differ) + const columnCount = columns.length; + if (columnCount === 0 || columnCount !== aligns.length) { + return false; + } + if (silent) { + return true; + } + const oldParentType = state.parentType; + state.parentType = 'table'; + + // use 'blockquote' lists for termination because it's + // the most similar to tables + const terminatorRules = state.md.block.ruler.getRules('blockquote'); + const token_to = state.push('table_open', 'table', 1); + const tableLines = [startLine, 0]; + token_to.map = tableLines; + const token_tho = state.push('thead_open', 'thead', 1); + token_tho.map = [startLine, startLine + 1]; + const token_htro = state.push('tr_open', 'tr', 1); + token_htro.map = [startLine, startLine + 1]; + for (let i = 0; i < columns.length; i++) { + const token_ho = state.push('th_open', 'th', 1); + if (aligns[i]) { + token_ho.attrs = [['style', 'text-align:' + aligns[i]]]; + } + const token_il = state.push('inline', '', 0); + token_il.content = columns[i].trim(); + token_il.children = []; + state.push('th_close', 'th', -1); + } + state.push('tr_close', 'tr', -1); + state.push('thead_close', 'thead', -1); + let tbodyLines; + let autocompletedCells = 0; + for (nextLine = startLine + 2; nextLine < endLine; nextLine++) { + if (state.sCount[nextLine] < state.blkIndent) { + break; + } + let terminate = false; + for (let i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + lineText = getLine(state, nextLine).trim(); + if (!lineText) { + break; + } + if (state.sCount[nextLine] - state.blkIndent >= 4) { + break; + } + columns = escapedSplit(lineText); + if (columns.length && columns[0] === '') columns.shift(); + if (columns.length && columns[columns.length - 1] === '') columns.pop(); + + // note: autocomplete count can be negative if user specifies more columns than header, + // but that does not affect intended use (which is limiting expansion) + autocompletedCells += columnCount - columns.length; + if (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) { + break; + } + if (nextLine === startLine + 2) { + const token_tbo = state.push('tbody_open', 'tbody', 1); + token_tbo.map = tbodyLines = [startLine + 2, 0]; + } + const token_tro = state.push('tr_open', 'tr', 1); + token_tro.map = [nextLine, nextLine + 1]; + for (let i = 0; i < columnCount; i++) { + const token_tdo = state.push('td_open', 'td', 1); + if (aligns[i]) { + token_tdo.attrs = [['style', 'text-align:' + aligns[i]]]; + } + const token_il = state.push('inline', '', 0); + token_il.content = columns[i] ? columns[i].trim() : ''; + token_il.children = []; + state.push('td_close', 'td', -1); + } + state.push('tr_close', 'tr', -1); + } + if (tbodyLines) { + state.push('tbody_close', 'tbody', -1); + tbodyLines[1] = nextLine; + } + state.push('table_close', 'table', -1); + tableLines[1] = nextLine; + state.parentType = oldParentType; + state.line = nextLine; + return true; +} + +// Code block (4 spaces padded) + +function code(state, startLine, endLine /*, silent */) { + if (state.sCount[startLine] - state.blkIndent < 4) { + return false; + } + let nextLine = startLine + 1; + let last = nextLine; + while (nextLine < endLine) { + if (state.isEmpty(nextLine)) { + nextLine++; + continue; + } + if (state.sCount[nextLine] - state.blkIndent >= 4) { + nextLine++; + last = nextLine; + continue; + } + break; + } + state.line = last; + const token = state.push('code_block', 'code', 0); + token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\n'; + token.map = [startLine, state.line]; + return true; +} + +// fences (``` lang, ~~~ lang) + +function fence(state, startLine, endLine, silent) { + let pos = state.bMarks[startLine] + state.tShift[startLine]; + let max = state.eMarks[startLine]; + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + if (pos + 3 > max) { + return false; + } + const marker = state.src.charCodeAt(pos); + if (marker !== 0x7E /* ~ */ && marker !== 0x60 /* ` */) { + return false; + } + + // scan marker length + let mem = pos; + pos = state.skipChars(pos, marker); + let len = pos - mem; + if (len < 3) { + return false; + } + const markup = state.src.slice(mem, pos); + const params = state.src.slice(pos, max); + if (marker === 0x60 /* ` */) { + if (params.indexOf(String.fromCharCode(marker)) >= 0) { + return false; + } + } + + // Since start is found, we can report success here in validation mode + if (silent) { + return true; + } + + // search end of block + let nextLine = startLine; + let haveEndMarker = false; + for (;;) { + nextLine++; + if (nextLine >= endLine) { + // unclosed block should be autoclosed by end of document. + // also block seems to be autoclosed by end of parent + break; + } + pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]; + max = state.eMarks[nextLine]; + if (pos < max && state.sCount[nextLine] < state.blkIndent) { + // non-empty line with negative indent should stop the list: + // - ``` + // test + break; + } + if (state.src.charCodeAt(pos) !== marker) { + continue; + } + if (state.sCount[nextLine] - state.blkIndent >= 4) { + // closing fence should be indented less than 4 spaces + continue; + } + pos = state.skipChars(pos, marker); + + // closing code fence must be at least as long as the opening one + if (pos - mem < len) { + continue; + } + + // make sure tail has spaces only + pos = state.skipSpaces(pos); + if (pos < max) { + continue; + } + haveEndMarker = true; + // found! + break; + } + + // If a fence has heading spaces, they should be removed from its inner block + len = state.sCount[startLine]; + state.line = nextLine + (haveEndMarker ? 1 : 0); + const token = state.push('fence', 'code', 0); + token.info = params; + token.content = state.getLines(startLine + 1, nextLine, len, true); + token.markup = markup; + token.map = [startLine, state.line]; + return true; +} + +// Block quotes + +function blockquote(state, startLine, endLine, silent) { + let pos = state.bMarks[startLine] + state.tShift[startLine]; + let max = state.eMarks[startLine]; + const oldLineMax = state.lineMax; + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + + // check the block quote marker + if (state.src.charCodeAt(pos) !== 0x3E /* > */) { + return false; + } + + // we know that it's going to be a valid blockquote, + // so no point trying to find the end of it in silent mode + if (silent) { + return true; + } + const oldBMarks = []; + const oldBSCount = []; + const oldSCount = []; + const oldTShift = []; + const terminatorRules = state.md.block.ruler.getRules('blockquote'); + const oldParentType = state.parentType; + state.parentType = 'blockquote'; + let lastLineEmpty = false; + let nextLine; + + // Search the end of the block + // + // Block ends with either: + // 1. an empty line outside: + // ``` + // > test + // + // ``` + // 2. an empty line inside: + // ``` + // > + // test + // ``` + // 3. another tag: + // ``` + // > test + // - - - + // ``` + for (nextLine = startLine; nextLine < endLine; nextLine++) { + // check if it's outdented, i.e. it's inside list item and indented + // less than said list item: + // + // ``` + // 1. anything + // > current blockquote + // 2. checking this line + // ``` + const isOutdented = state.sCount[nextLine] < state.blkIndent; + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + max = state.eMarks[nextLine]; + if (pos >= max) { + // Case 1: line is not inside the blockquote, and this line is empty. + break; + } + if (state.src.charCodeAt(pos++) === 0x3E /* > */ && !isOutdented) { + // This line is inside the blockquote. + + // set offset past spaces and ">" + let initial = state.sCount[nextLine] + 1; + let spaceAfterMarker; + let adjustTab; + + // skip one optional space after '>' + if (state.src.charCodeAt(pos) === 0x20 /* space */) { + // ' > test ' + // ^ -- position start of line here: + pos++; + initial++; + adjustTab = false; + spaceAfterMarker = true; + } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) { + spaceAfterMarker = true; + if ((state.bsCount[nextLine] + initial) % 4 === 3) { + // ' >\t test ' + // ^ -- position start of line here (tab has width===1) + pos++; + initial++; + adjustTab = false; + } else { + // ' >\t test ' + // ^ -- position start of line here + shift bsCount slightly + // to make extra space appear + adjustTab = true; + } + } else { + spaceAfterMarker = false; + } + let offset = initial; + oldBMarks.push(state.bMarks[nextLine]); + state.bMarks[nextLine] = pos; + while (pos < max) { + const ch = state.src.charCodeAt(pos); + if (isSpace(ch)) { + if (ch === 0x09) { + offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4; + } else { + offset++; + } + } else { + break; + } + pos++; + } + lastLineEmpty = pos >= max; + oldBSCount.push(state.bsCount[nextLine]); + state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0); + oldSCount.push(state.sCount[nextLine]); + state.sCount[nextLine] = offset - initial; + oldTShift.push(state.tShift[nextLine]); + state.tShift[nextLine] = pos - state.bMarks[nextLine]; + continue; + } + + // Case 2: line is not inside the blockquote, and the last line was empty. + if (lastLineEmpty) { + break; + } + + // Case 3: another tag found. + let terminate = false; + for (let i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + // Quirk to enforce "hard termination mode" for paragraphs; + // normally if you call `tokenize(state, startLine, nextLine)`, + // paragraphs will look below nextLine for paragraph continuation, + // but if blockquote is terminated by another tag, they shouldn't + state.lineMax = nextLine; + if (state.blkIndent !== 0) { + // state.blkIndent was non-zero, we now set it to zero, + // so we need to re-calculate all offsets to appear as + // if indent wasn't changed + oldBMarks.push(state.bMarks[nextLine]); + oldBSCount.push(state.bsCount[nextLine]); + oldTShift.push(state.tShift[nextLine]); + oldSCount.push(state.sCount[nextLine]); + state.sCount[nextLine] -= state.blkIndent; + } + break; + } + oldBMarks.push(state.bMarks[nextLine]); + oldBSCount.push(state.bsCount[nextLine]); + oldTShift.push(state.tShift[nextLine]); + oldSCount.push(state.sCount[nextLine]); + + // A negative indentation means that this is a paragraph continuation + // + state.sCount[nextLine] = -1; + } + const oldIndent = state.blkIndent; + state.blkIndent = 0; + const token_o = state.push('blockquote_open', 'blockquote', 1); + token_o.markup = '>'; + const lines = [startLine, 0]; + token_o.map = lines; + state.md.block.tokenize(state, startLine, nextLine); + const token_c = state.push('blockquote_close', 'blockquote', -1); + token_c.markup = '>'; + state.lineMax = oldLineMax; + state.parentType = oldParentType; + lines[1] = state.line; + + // Restore original tShift; this might not be necessary since the parser + // has already been here, but just to make sure we can do that. + for (let i = 0; i < oldTShift.length; i++) { + state.bMarks[i + startLine] = oldBMarks[i]; + state.tShift[i + startLine] = oldTShift[i]; + state.sCount[i + startLine] = oldSCount[i]; + state.bsCount[i + startLine] = oldBSCount[i]; + } + state.blkIndent = oldIndent; + return true; +} + +// Horizontal rule + +function hr(state, startLine, endLine, silent) { + const max = state.eMarks[startLine]; + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + let pos = state.bMarks[startLine] + state.tShift[startLine]; + const marker = state.src.charCodeAt(pos++); + + // Check hr marker + if (marker !== 0x2A /* * */ && marker !== 0x2D /* - */ && marker !== 0x5F /* _ */) { + return false; + } + + // markers can be mixed with spaces, but there should be at least 3 of them + + let cnt = 1; + while (pos < max) { + const ch = state.src.charCodeAt(pos++); + if (ch !== marker && !isSpace(ch)) { + return false; + } + if (ch === marker) { + cnt++; + } + } + if (cnt < 3) { + return false; + } + if (silent) { + return true; + } + state.line = startLine + 1; + const token = state.push('hr', 'hr', 0); + token.map = [startLine, state.line]; + token.markup = Array(cnt + 1).join(String.fromCharCode(marker)); + return true; +} + +// Lists + + +// Search `[-+*][\n ]`, returns next pos after marker on success +// or -1 on fail. +function skipBulletListMarker(state, startLine) { + const max = state.eMarks[startLine]; + let pos = state.bMarks[startLine] + state.tShift[startLine]; + const marker = state.src.charCodeAt(pos++); + // Check bullet + if (marker !== 0x2A /* * */ && marker !== 0x2D /* - */ && marker !== 0x2B /* + */) { + return -1; + } + if (pos < max) { + const ch = state.src.charCodeAt(pos); + if (!isSpace(ch)) { + // " -test " - is not a list item + return -1; + } + } + return pos; +} + +// Search `\d+[.)][\n ]`, returns next pos after marker on success +// or -1 on fail. +function skipOrderedListMarker(state, startLine) { + const start = state.bMarks[startLine] + state.tShift[startLine]; + const max = state.eMarks[startLine]; + let pos = start; + + // List marker should have at least 2 chars (digit + dot) + if (pos + 1 >= max) { + return -1; + } + let ch = state.src.charCodeAt(pos++); + if (ch < 0x30 /* 0 */ || ch > 0x39 /* 9 */) { + return -1; + } + for (;;) { + // EOL -> fail + if (pos >= max) { + return -1; + } + ch = state.src.charCodeAt(pos++); + if (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) { + // List marker should have no more than 9 digits + // (prevents integer overflow in browsers) + if (pos - start >= 10) { + return -1; + } + continue; + } + + // found valid marker + if (ch === 0x29 /* ) */ || ch === 0x2e /* . */) { + break; + } + return -1; + } + if (pos < max) { + ch = state.src.charCodeAt(pos); + if (!isSpace(ch)) { + // " 1.test " - is not a list item + return -1; + } + } + return pos; +} +function markTightParagraphs(state, idx) { + const level = state.level + 2; + for (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) { + if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { + state.tokens[i + 2].hidden = true; + state.tokens[i].hidden = true; + i += 2; + } + } +} +function list(state, startLine, endLine, silent) { + let max, pos, start, token; + let nextLine = startLine; + let tight = true; + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[nextLine] - state.blkIndent >= 4) { + return false; + } + + // Special case: + // - item 1 + // - item 2 + // - item 3 + // - item 4 + // - this one is a paragraph continuation + if (state.listIndent >= 0 && state.sCount[nextLine] - state.listIndent >= 4 && state.sCount[nextLine] < state.blkIndent) { + return false; + } + let isTerminatingParagraph = false; + + // limit conditions when list can interrupt + // a paragraph (validation mode only) + if (silent && state.parentType === 'paragraph') { + // Next list item should still terminate previous list item; + // + // This code can fail if plugins use blkIndent as well as lists, + // but I hope the spec gets fixed long before that happens. + // + if (state.sCount[nextLine] >= state.blkIndent) { + isTerminatingParagraph = true; + } + } + + // Detect list type and position after marker + let isOrdered; + let markerValue; + let posAfterMarker; + if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) { + isOrdered = true; + start = state.bMarks[nextLine] + state.tShift[nextLine]; + markerValue = Number(state.src.slice(start, posAfterMarker - 1)); + + // If we're starting a new ordered list right after + // a paragraph, it should start with 1. + if (isTerminatingParagraph && markerValue !== 1) return false; + } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) { + isOrdered = false; + } else { + return false; + } + + // If we're starting a new unordered list right after + // a paragraph, first line should not be empty. + if (isTerminatingParagraph) { + if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false; + } + + // For validation mode we can terminate immediately + if (silent) { + return true; + } + + // We should terminate list on style change. Remember first one to compare. + const markerCharCode = state.src.charCodeAt(posAfterMarker - 1); + + // Start list + const listTokIdx = state.tokens.length; + if (isOrdered) { + token = state.push('ordered_list_open', 'ol', 1); + if (markerValue !== 1) { + token.attrs = [['start', markerValue]]; + } + } else { + token = state.push('bullet_list_open', 'ul', 1); + } + const listLines = [nextLine, 0]; + token.map = listLines; + token.markup = String.fromCharCode(markerCharCode); + + // + // Iterate list items + // + + let prevEmptyEnd = false; + const terminatorRules = state.md.block.ruler.getRules('list'); + const oldParentType = state.parentType; + state.parentType = 'list'; + while (nextLine < endLine) { + pos = posAfterMarker; + max = state.eMarks[nextLine]; + const initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine]); + let offset = initial; + while (pos < max) { + const ch = state.src.charCodeAt(pos); + if (ch === 0x09) { + offset += 4 - (offset + state.bsCount[nextLine]) % 4; + } else if (ch === 0x20) { + offset++; + } else { + break; + } + pos++; + } + const contentStart = pos; + let indentAfterMarker; + if (contentStart >= max) { + // trimming space in "- \n 3" case, indent is 1 here + indentAfterMarker = 1; + } else { + indentAfterMarker = offset - initial; + } + + // If we have more than 4 spaces, the indent is 1 + // (the rest is just indented code block) + if (indentAfterMarker > 4) { + indentAfterMarker = 1; + } + + // " - test" + // ^^^^^ - calculating total length of this thing + const indent = initial + indentAfterMarker; + + // Run subparser & write tokens + token = state.push('list_item_open', 'li', 1); + token.markup = String.fromCharCode(markerCharCode); + const itemLines = [nextLine, 0]; + token.map = itemLines; + if (isOrdered) { + token.info = state.src.slice(start, posAfterMarker - 1); + } + + // change current state, then restore it after parser subcall + const oldTight = state.tight; + const oldTShift = state.tShift[nextLine]; + const oldSCount = state.sCount[nextLine]; + + // - example list + // ^ listIndent position will be here + // ^ blkIndent position will be here + // + const oldListIndent = state.listIndent; + state.listIndent = state.blkIndent; + state.blkIndent = indent; + state.tight = true; + state.tShift[nextLine] = contentStart - state.bMarks[nextLine]; + state.sCount[nextLine] = offset; + if (contentStart >= max && state.isEmpty(nextLine + 1)) { + // workaround for this case + // (list item is empty, list terminates before "foo"): + // ~~~~~~~~ + // - + // + // foo + // ~~~~~~~~ + state.line = Math.min(state.line + 2, endLine); + } else { + state.md.block.tokenize(state, nextLine, endLine, true); + } + + // If any of list item is tight, mark list as tight + if (!state.tight || prevEmptyEnd) { + tight = false; + } + // Item become loose if finish with empty line, + // but we should filter last element, because it means list finish + prevEmptyEnd = state.line - nextLine > 1 && state.isEmpty(state.line - 1); + state.blkIndent = state.listIndent; + state.listIndent = oldListIndent; + state.tShift[nextLine] = oldTShift; + state.sCount[nextLine] = oldSCount; + state.tight = oldTight; + token = state.push('list_item_close', 'li', -1); + token.markup = String.fromCharCode(markerCharCode); + nextLine = state.line; + itemLines[1] = nextLine; + if (nextLine >= endLine) { + break; + } + + // + // Try to check if list is terminated or continued. + // + if (state.sCount[nextLine] < state.blkIndent) { + break; + } + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[nextLine] - state.blkIndent >= 4) { + break; + } + + // fail if terminating block found + let terminate = false; + for (let i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + + // fail if list has another type + if (isOrdered) { + posAfterMarker = skipOrderedListMarker(state, nextLine); + if (posAfterMarker < 0) { + break; + } + start = state.bMarks[nextLine] + state.tShift[nextLine]; + } else { + posAfterMarker = skipBulletListMarker(state, nextLine); + if (posAfterMarker < 0) { + break; + } + } + if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { + break; + } + } + + // Finalize list + if (isOrdered) { + token = state.push('ordered_list_close', 'ol', -1); + } else { + token = state.push('bullet_list_close', 'ul', -1); + } + token.markup = String.fromCharCode(markerCharCode); + listLines[1] = nextLine; + state.line = nextLine; + state.parentType = oldParentType; + + // mark paragraphs tight if needed + if (tight) { + markTightParagraphs(state, listTokIdx); + } + return true; +} + +function reference(state, startLine, _endLine, silent) { + let pos = state.bMarks[startLine] + state.tShift[startLine]; + let max = state.eMarks[startLine]; + let nextLine = startLine + 1; + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + if (state.src.charCodeAt(pos) !== 0x5B /* [ */) { + return false; + } + function getNextLine(nextLine) { + const endLine = state.lineMax; + if (nextLine >= endLine || state.isEmpty(nextLine)) { + // empty line or end of input + return null; + } + let isContinuation = false; + + // this would be a code block normally, but after paragraph + // it's considered a lazy continuation regardless of what's there + if (state.sCount[nextLine] - state.blkIndent > 3) { + isContinuation = true; + } + + // quirk for blockquotes, this line should already be checked by that rule + if (state.sCount[nextLine] < 0) { + isContinuation = true; + } + if (!isContinuation) { + const terminatorRules = state.md.block.ruler.getRules('reference'); + const oldParentType = state.parentType; + state.parentType = 'reference'; + + // Some tags can terminate paragraph without empty line. + let terminate = false; + for (let i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + state.parentType = oldParentType; + if (terminate) { + // terminated by another block + return null; + } + } + const pos = state.bMarks[nextLine] + state.tShift[nextLine]; + const max = state.eMarks[nextLine]; + + // max + 1 explicitly includes the newline + return state.src.slice(pos, max + 1); + } + let str = state.src.slice(pos, max + 1); + max = str.length; + let labelEnd = -1; + for (pos = 1; pos < max; pos++) { + const ch = str.charCodeAt(pos); + if (ch === 0x5B /* [ */) { + return false; + } else if (ch === 0x5D /* ] */) { + labelEnd = pos; + break; + } else if (ch === 0x0A /* \n */) { + const lineContent = getNextLine(nextLine); + if (lineContent !== null) { + str += lineContent; + max = str.length; + nextLine++; + } + } else if (ch === 0x5C /* \ */) { + pos++; + if (pos < max && str.charCodeAt(pos) === 0x0A) { + const lineContent = getNextLine(nextLine); + if (lineContent !== null) { + str += lineContent; + max = str.length; + nextLine++; + } + } + } + } + if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A /* : */) { + return false; + } + + // [label]: destination 'title' + // ^^^ skip optional whitespace here + for (pos = labelEnd + 2; pos < max; pos++) { + const ch = str.charCodeAt(pos); + if (ch === 0x0A) { + const lineContent = getNextLine(nextLine); + if (lineContent !== null) { + str += lineContent; + max = str.length; + nextLine++; + } + } else if (isSpace(ch)) ; else { + break; + } + } + + // [label]: destination 'title' + // ^^^^^^^^^^^ parse this + const destRes = state.md.helpers.parseLinkDestination(str, pos, max); + if (!destRes.ok) { + return false; + } + const href = state.md.normalizeLink(destRes.str); + if (!state.md.validateLink(href)) { + return false; + } + pos = destRes.pos; + + // save cursor state, we could require to rollback later + const destEndPos = pos; + const destEndLineNo = nextLine; + + // [label]: destination 'title' + // ^^^ skipping those spaces + const start = pos; + for (; pos < max; pos++) { + const ch = str.charCodeAt(pos); + if (ch === 0x0A) { + const lineContent = getNextLine(nextLine); + if (lineContent !== null) { + str += lineContent; + max = str.length; + nextLine++; + } + } else if (isSpace(ch)) ; else { + break; + } + } + + // [label]: destination 'title' + // ^^^^^^^ parse this + let titleRes = state.md.helpers.parseLinkTitle(str, pos, max); + while (titleRes.can_continue) { + const lineContent = getNextLine(nextLine); + if (lineContent === null) break; + str += lineContent; + pos = max; + max = str.length; + nextLine++; + titleRes = state.md.helpers.parseLinkTitle(str, pos, max, titleRes); + } + let title; + if (pos < max && start !== pos && titleRes.ok) { + title = titleRes.str; + pos = titleRes.pos; + } else { + title = ''; + pos = destEndPos; + nextLine = destEndLineNo; + } + + // skip trailing spaces until the rest of the line + while (pos < max) { + const ch = str.charCodeAt(pos); + if (!isSpace(ch)) { + break; + } + pos++; + } + if (pos < max && str.charCodeAt(pos) !== 0x0A) { + if (title) { + // garbage at the end of the line after title, + // but it could still be a valid reference if we roll back + title = ''; + pos = destEndPos; + nextLine = destEndLineNo; + while (pos < max) { + const ch = str.charCodeAt(pos); + if (!isSpace(ch)) { + break; + } + pos++; + } + } + } + if (pos < max && str.charCodeAt(pos) !== 0x0A) { + // garbage at the end of the line + return false; + } + const label = normalizeReference(str.slice(1, labelEnd)); + if (!label) { + // CommonMark 0.20 disallows empty labels + return false; + } + + // Reference can not terminate anything. This check is for safety only. + /* istanbul ignore if */ + if (silent) { + return true; + } + if (typeof state.env.references === 'undefined') { + state.env.references = {}; + } + if (typeof state.env.references[label] === 'undefined') { + state.env.references[label] = { + title, + href + }; + } + state.line = nextLine; + return true; +} + +// List of valid html blocks names, according to commonmark spec +// https://spec.commonmark.org/0.30/#html-blocks + +var block_names = ['address', 'article', 'aside', 'base', 'basefont', 'blockquote', 'body', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dialog', 'dir', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'iframe', 'legend', 'li', 'link', 'main', 'menu', 'menuitem', 'nav', 'noframes', 'ol', 'optgroup', 'option', 'p', 'param', 'search', 'section', 'summary', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul']; + +// Regexps to match html elements + +const attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*'; +const unquoted = '[^"\'=<>`\\x00-\\x20]+'; +const single_quoted = "'[^']*'"; +const double_quoted = '"[^"]*"'; +const attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'; +const attribute = '(?:\\s+' + attr_name + '(?:\\s*=\\s*' + attr_value + ')?)'; +const open_tag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>'; +const close_tag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>'; +const comment = ''; +const processing = '<[?][\\s\\S]*?[?]>'; +const declaration = ']*>'; +const cdata = ''; +const HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')'); +const HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')'); + +// HTML block + + +// An array of opening and corresponding closing sequences for html tags, +// last argument defines whether it can terminate a paragraph or not +// +const HTML_SEQUENCES = [[/^<(script|pre|style|textarea)(?=(\s|>|$))/i, /<\/(script|pre|style|textarea)>/i, true], [/^/, true], [/^<\?/, /\?>/, true], [/^/, true], [/^/, true], [new RegExp('^|$))', 'i'), /^$/, true], [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\s*$'), /^$/, false]]; +function html_block(state, startLine, endLine, silent) { + let pos = state.bMarks[startLine] + state.tShift[startLine]; + let max = state.eMarks[startLine]; + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + if (!state.md.options.html) { + return false; + } + if (state.src.charCodeAt(pos) !== 0x3C /* < */) { + return false; + } + let lineText = state.src.slice(pos, max); + let i = 0; + for (; i < HTML_SEQUENCES.length; i++) { + if (HTML_SEQUENCES[i][0].test(lineText)) { + break; + } + } + if (i === HTML_SEQUENCES.length) { + return false; + } + if (silent) { + // true if this sequence can be a terminator, false otherwise + return HTML_SEQUENCES[i][2]; + } + let nextLine = startLine + 1; + + // If we are here - we detected HTML block. + // Let's roll down till block end. + if (!HTML_SEQUENCES[i][1].test(lineText)) { + for (; nextLine < endLine; nextLine++) { + if (state.sCount[nextLine] < state.blkIndent) { + break; + } + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + max = state.eMarks[nextLine]; + lineText = state.src.slice(pos, max); + if (HTML_SEQUENCES[i][1].test(lineText)) { + if (lineText.length !== 0) { + nextLine++; + } + break; + } + } + } + state.line = nextLine; + const token = state.push('html_block', '', 0); + token.map = [startLine, nextLine]; + token.content = state.getLines(startLine, nextLine, state.blkIndent, true); + return true; +} + +// heading (#, ##, ...) + +function heading(state, startLine, endLine, silent) { + let pos = state.bMarks[startLine] + state.tShift[startLine]; + let max = state.eMarks[startLine]; + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + let ch = state.src.charCodeAt(pos); + if (ch !== 0x23 /* # */ || pos >= max) { + return false; + } + + // count heading level + let level = 1; + ch = state.src.charCodeAt(++pos); + while (ch === 0x23 /* # */ && pos < max && level <= 6) { + level++; + ch = state.src.charCodeAt(++pos); + } + if (level > 6 || pos < max && !isSpace(ch)) { + return false; + } + if (silent) { + return true; + } + + // Let's cut tails like ' ### ' from the end of string + + max = state.skipSpacesBack(max, pos); + const tmp = state.skipCharsBack(max, 0x23, pos); // # + if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) { + max = tmp; + } + state.line = startLine + 1; + const token_o = state.push('heading_open', 'h' + String(level), 1); + token_o.markup = '########'.slice(0, level); + token_o.map = [startLine, state.line]; + const token_i = state.push('inline', '', 0); + token_i.content = state.src.slice(pos, max).trim(); + token_i.map = [startLine, state.line]; + token_i.children = []; + const token_c = state.push('heading_close', 'h' + String(level), -1); + token_c.markup = '########'.slice(0, level); + return true; +} + +// lheading (---, ===) + +function lheading(state, startLine, endLine /*, silent */) { + const terminatorRules = state.md.block.ruler.getRules('paragraph'); + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + const oldParentType = state.parentType; + state.parentType = 'paragraph'; // use paragraph to match terminatorRules + + // jump line-by-line until empty one or EOF + let level = 0; + let marker; + let nextLine = startLine + 1; + for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { + // this would be a code block normally, but after paragraph + // it's considered a lazy continuation regardless of what's there + if (state.sCount[nextLine] - state.blkIndent > 3) { + continue; + } + + // + // Check for underline in setext header + // + if (state.sCount[nextLine] >= state.blkIndent) { + let pos = state.bMarks[nextLine] + state.tShift[nextLine]; + const max = state.eMarks[nextLine]; + if (pos < max) { + marker = state.src.charCodeAt(pos); + if (marker === 0x2D /* - */ || marker === 0x3D /* = */) { + pos = state.skipChars(pos, marker); + pos = state.skipSpaces(pos); + if (pos >= max) { + level = marker === 0x3D /* = */ ? 1 : 2; + break; + } + } + } + } + + // quirk for blockquotes, this line should already be checked by that rule + if (state.sCount[nextLine] < 0) { + continue; + } + + // Some tags can terminate paragraph without empty line. + let terminate = false; + for (let i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + } + if (!level) { + // Didn't find valid underline + return false; + } + const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); + state.line = nextLine + 1; + const token_o = state.push('heading_open', 'h' + String(level), 1); + token_o.markup = String.fromCharCode(marker); + token_o.map = [startLine, state.line]; + const token_i = state.push('inline', '', 0); + token_i.content = content; + token_i.map = [startLine, state.line - 1]; + token_i.children = []; + const token_c = state.push('heading_close', 'h' + String(level), -1); + token_c.markup = String.fromCharCode(marker); + state.parentType = oldParentType; + return true; +} + +// Paragraph + +function paragraph(state, startLine, endLine) { + const terminatorRules = state.md.block.ruler.getRules('paragraph'); + const oldParentType = state.parentType; + let nextLine = startLine + 1; + state.parentType = 'paragraph'; + + // jump line-by-line until empty one or EOF + for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { + // this would be a code block normally, but after paragraph + // it's considered a lazy continuation regardless of what's there + if (state.sCount[nextLine] - state.blkIndent > 3) { + continue; + } + + // quirk for blockquotes, this line should already be checked by that rule + if (state.sCount[nextLine] < 0) { + continue; + } + + // Some tags can terminate paragraph without empty line. + let terminate = false; + for (let i = 0, l = terminatorRules.length; i < l; i++) { + if (terminatorRules[i](state, nextLine, endLine, true)) { + terminate = true; + break; + } + } + if (terminate) { + break; + } + } + const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); + state.line = nextLine; + const token_o = state.push('paragraph_open', 'p', 1); + token_o.map = [startLine, state.line]; + const token_i = state.push('inline', '', 0); + token_i.content = content; + token_i.map = [startLine, state.line]; + token_i.children = []; + state.push('paragraph_close', 'p', -1); + state.parentType = oldParentType; + return true; +} + +/** internal + * class ParserBlock + * + * Block-level tokenizer. + **/ + +const _rules$1 = [ +// First 2 params - rule name & source. Secondary array - list of rules, +// which can be terminated by this one. +['table', table, ['paragraph', 'reference']], ['code', code], ['fence', fence, ['paragraph', 'reference', 'blockquote', 'list']], ['blockquote', blockquote, ['paragraph', 'reference', 'blockquote', 'list']], ['hr', hr, ['paragraph', 'reference', 'blockquote', 'list']], ['list', list, ['paragraph', 'reference', 'blockquote']], ['reference', reference], ['html_block', html_block, ['paragraph', 'reference', 'blockquote']], ['heading', heading, ['paragraph', 'reference', 'blockquote']], ['lheading', lheading], ['paragraph', paragraph]]; + +/** + * new ParserBlock() + **/ +function ParserBlock() { + /** + * ParserBlock#ruler -> Ruler + * + * [[Ruler]] instance. Keep configuration of block rules. + **/ + this.ruler = new Ruler(); + for (let i = 0; i < _rules$1.length; i++) { + this.ruler.push(_rules$1[i][0], _rules$1[i][1], { + alt: (_rules$1[i][2] || []).slice() + }); + } +} + +// Generate tokens for input range +// +ParserBlock.prototype.tokenize = function (state, startLine, endLine) { + const rules = this.ruler.getRules(''); + const len = rules.length; + const maxNesting = state.md.options.maxNesting; + let line = startLine; + let hasEmptyLines = false; + while (line < endLine) { + state.line = line = state.skipEmptyLines(line); + if (line >= endLine) { + break; + } + + // Termination condition for nested calls. + // Nested calls currently used for blockquotes & lists + if (state.sCount[line] < state.blkIndent) { + break; + } + + // If nesting level exceeded - skip tail to the end. That's not ordinary + // situation and we should not care about content. + if (state.level >= maxNesting) { + state.line = endLine; + break; + } + + // Try all possible rules. + // On success, rule should: + // + // - update `state.line` + // - update `state.tokens` + // - return true + const prevLine = state.line; + let ok = false; + for (let i = 0; i < len; i++) { + ok = rules[i](state, line, endLine, false); + if (ok) { + if (prevLine >= state.line) { + throw new Error("block rule didn't increment state.line"); + } + break; + } + } + + // this can only happen if user disables paragraph rule + if (!ok) throw new Error('none of the block rules matched'); + + // set state.tight if we had an empty line before current tag + // i.e. latest empty line should not count + state.tight = !hasEmptyLines; + + // paragraph might "eat" one newline after it in nested lists + if (state.isEmpty(state.line - 1)) { + hasEmptyLines = true; + } + line = state.line; + if (line < endLine && state.isEmpty(line)) { + hasEmptyLines = true; + line++; + state.line = line; + } + } +}; + +/** + * ParserBlock.parse(str, md, env, outTokens) + * + * Process input string and push block tokens into `outTokens` + **/ +ParserBlock.prototype.parse = function (src, md, env, outTokens) { + if (!src) { + return; + } + const state = new this.State(src, md, env, outTokens); + this.tokenize(state, state.line, state.lineMax); +}; +ParserBlock.prototype.State = StateBlock; + +// Inline parser state + +function StateInline(src, md, env, outTokens) { + this.src = src; + this.env = env; + this.md = md; + this.tokens = outTokens; + this.tokens_meta = Array(outTokens.length); + this.pos = 0; + this.posMax = this.src.length; + this.level = 0; + this.pending = ''; + this.pendingLevel = 0; + + // Stores { start: end } pairs. Useful for backtrack + // optimization of pairs parse (emphasis, strikes). + this.cache = {}; + + // List of emphasis-like delimiters for current tag + this.delimiters = []; + + // Stack of delimiter lists for upper level tags + this._prev_delimiters = []; + + // backtick length => last seen position + this.backticks = {}; + this.backticksScanned = false; + + // Counter used to disable inline linkify-it execution + // inside and markdown links + this.linkLevel = 0; +} + +// Flush pending text +// +StateInline.prototype.pushPending = function () { + const token = new Token('text', '', 0); + token.content = this.pending; + token.level = this.pendingLevel; + this.tokens.push(token); + this.pending = ''; + return token; +}; + +// Push new token to "stream". +// If pending text exists - flush it as text token +// +StateInline.prototype.push = function (type, tag, nesting) { + if (this.pending) { + this.pushPending(); + } + const token = new Token(type, tag, nesting); + let token_meta = null; + if (nesting < 0) { + // closing tag + this.level--; + this.delimiters = this._prev_delimiters.pop(); + } + token.level = this.level; + if (nesting > 0) { + // opening tag + this.level++; + this._prev_delimiters.push(this.delimiters); + this.delimiters = []; + token_meta = { + delimiters: this.delimiters + }; + } + this.pendingLevel = this.level; + this.tokens.push(token); + this.tokens_meta.push(token_meta); + return token; +}; + +// Scan a sequence of emphasis-like markers, and determine whether +// it can start an emphasis sequence or end an emphasis sequence. +// +// - start - position to scan from (it should point at a valid marker); +// - canSplitWord - determine if these markers can be found inside a word +// +StateInline.prototype.scanDelims = function (start, canSplitWord) { + const max = this.posMax; + const marker = this.src.charCodeAt(start); + + // treat beginning of the line as a whitespace + const lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20; + let pos = start; + while (pos < max && this.src.charCodeAt(pos) === marker) { + pos++; + } + const count = pos - start; + + // treat end of the line as a whitespace + const nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20; + const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); + const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); + const isLastWhiteSpace = isWhiteSpace(lastChar); + const isNextWhiteSpace = isWhiteSpace(nextChar); + const left_flanking = !isNextWhiteSpace && (!isNextPunctChar || isLastWhiteSpace || isLastPunctChar); + const right_flanking = !isLastWhiteSpace && (!isLastPunctChar || isNextWhiteSpace || isNextPunctChar); + const can_open = left_flanking && (canSplitWord || !right_flanking || isLastPunctChar); + const can_close = right_flanking && (canSplitWord || !left_flanking || isNextPunctChar); + return { + can_open, + can_close, + length: count + }; +}; + +// re-export Token class to use in block rules +StateInline.prototype.Token = Token; + +// Skip text characters for text token, place those to pending buffer +// and increment current pos + +// Rule to skip pure text +// '{}$%@~+=:' reserved for extentions + +// !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, or ~ + +// !!!! Don't confuse with "Markdown ASCII Punctuation" chars +// http://spec.commonmark.org/0.15/#ascii-punctuation-character +function isTerminatorChar(ch) { + switch (ch) { + case 0x0A /* \n */: + case 0x21 /* ! */: + case 0x23 /* # */: + case 0x24 /* $ */: + case 0x25 /* % */: + case 0x26 /* & */: + case 0x2A /* * */: + case 0x2B /* + */: + case 0x2D /* - */: + case 0x3A /* : */: + case 0x3C /* < */: + case 0x3D /* = */: + case 0x3E /* > */: + case 0x40 /* @ */: + case 0x5B /* [ */: + case 0x5C /* \ */: + case 0x5D /* ] */: + case 0x5E /* ^ */: + case 0x5F /* _ */: + case 0x60 /* ` */: + case 0x7B /* { */: + case 0x7D /* } */: + case 0x7E /* ~ */: + return true; + default: + return false; + } +} +function text(state, silent) { + let pos = state.pos; + while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { + pos++; + } + if (pos === state.pos) { + return false; + } + if (!silent) { + state.pending += state.src.slice(state.pos, pos); + } + state.pos = pos; + return true; +} + +// Alternative implementation, for memory. +// +// It costs 10% of performance, but allows extend terminators list, if place it +// to `ParserInline` property. Probably, will switch to it sometime, such +// flexibility required. + +/* +var TERMINATOR_RE = /[\n!#$%&*+\-:<=>@[\\\]^_`{}~]/; + +module.exports = function text(state, silent) { + var pos = state.pos, + idx = state.src.slice(pos).search(TERMINATOR_RE); + + // first char is terminator -> empty text + if (idx === 0) { return false; } + + // no terminator -> text till end of string + if (idx < 0) { + if (!silent) { state.pending += state.src.slice(pos); } + state.pos = state.src.length; + return true; + } + + if (!silent) { state.pending += state.src.slice(pos, pos + idx); } + + state.pos += idx; + + return true; +}; */ + +// Process links like https://example.org/ + +// RFC3986: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) +const SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i; +function linkify(state, silent) { + if (!state.md.options.linkify) return false; + if (state.linkLevel > 0) return false; + const pos = state.pos; + const max = state.posMax; + if (pos + 3 > max) return false; + if (state.src.charCodeAt(pos) !== 0x3A /* : */) return false; + if (state.src.charCodeAt(pos + 1) !== 0x2F /* / */) return false; + if (state.src.charCodeAt(pos + 2) !== 0x2F /* / */) return false; + const match = state.pending.match(SCHEME_RE); + if (!match) return false; + const proto = match[1]; + const link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length)); + if (!link) return false; + let url = link.url; + + // invalid link, but still detected by linkify somehow; + // need to check to prevent infinite loop below + if (url.length <= proto.length) return false; + + // disallow '*' at the end of the link (conflicts with emphasis) + url = url.replace(/\*+$/, ''); + const fullUrl = state.md.normalizeLink(url); + if (!state.md.validateLink(fullUrl)) return false; + if (!silent) { + state.pending = state.pending.slice(0, -proto.length); + const token_o = state.push('link_open', 'a', 1); + token_o.attrs = [['href', fullUrl]]; + token_o.markup = 'linkify'; + token_o.info = 'auto'; + const token_t = state.push('text', '', 0); + token_t.content = state.md.normalizeLinkText(url); + const token_c = state.push('link_close', 'a', -1); + token_c.markup = 'linkify'; + token_c.info = 'auto'; + } + state.pos += url.length - proto.length; + return true; +} + +// Proceess '\n' + +function newline(state, silent) { + let pos = state.pos; + if (state.src.charCodeAt(pos) !== 0x0A /* \n */) { + return false; + } + const pmax = state.pending.length - 1; + const max = state.posMax; + + // ' \n' -> hardbreak + // Lookup in pending chars is bad practice! Don't copy to other rules! + // Pending string is stored in concat mode, indexed lookups will cause + // convertion to flat mode. + if (!silent) { + if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) { + if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) { + // Find whitespaces tail of pending chars. + let ws = pmax - 1; + while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--; + state.pending = state.pending.slice(0, ws); + state.push('hardbreak', 'br', 0); + } else { + state.pending = state.pending.slice(0, -1); + state.push('softbreak', 'br', 0); + } + } else { + state.push('softbreak', 'br', 0); + } + } + pos++; + + // skip heading spaces for next line + while (pos < max && isSpace(state.src.charCodeAt(pos))) { + pos++; + } + state.pos = pos; + return true; +} + +// Process escaped chars and hardbreaks + +const ESCAPED = []; +for (let i = 0; i < 256; i++) { + ESCAPED.push(0); +} +'\\!"#$%&\'()*+,./:;<=>?@[]^_`{|}~-'.split('').forEach(function (ch) { + ESCAPED[ch.charCodeAt(0)] = 1; +}); +function escape(state, silent) { + let pos = state.pos; + const max = state.posMax; + if (state.src.charCodeAt(pos) !== 0x5C /* \ */) return false; + pos++; + + // '\' at the end of the inline block + if (pos >= max) return false; + let ch1 = state.src.charCodeAt(pos); + if (ch1 === 0x0A) { + if (!silent) { + state.push('hardbreak', 'br', 0); + } + pos++; + // skip leading whitespaces from next line + while (pos < max) { + ch1 = state.src.charCodeAt(pos); + if (!isSpace(ch1)) break; + pos++; + } + state.pos = pos; + return true; + } + let escapedStr = state.src[pos]; + if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) { + const ch2 = state.src.charCodeAt(pos + 1); + if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) { + escapedStr += state.src[pos + 1]; + pos++; + } + } + const origStr = '\\' + escapedStr; + if (!silent) { + const token = state.push('text_special', '', 0); + if (ch1 < 256 && ESCAPED[ch1] !== 0) { + token.content = escapedStr; + } else { + token.content = origStr; + } + token.markup = origStr; + token.info = 'escape'; + } + state.pos = pos + 1; + return true; +} + +// Parse backticks + +function backtick(state, silent) { + let pos = state.pos; + const ch = state.src.charCodeAt(pos); + if (ch !== 0x60 /* ` */) { + return false; + } + const start = pos; + pos++; + const max = state.posMax; + + // scan marker length + while (pos < max && state.src.charCodeAt(pos) === 0x60 /* ` */) { + pos++; + } + const marker = state.src.slice(start, pos); + const openerLength = marker.length; + if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) { + if (!silent) state.pending += marker; + state.pos += openerLength; + return true; + } + let matchEnd = pos; + let matchStart; + + // Nothing found in the cache, scan until the end of the line (or until marker is found) + while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { + matchEnd = matchStart + 1; + + // scan marker length + while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60 /* ` */) { + matchEnd++; + } + const closerLength = matchEnd - matchStart; + if (closerLength === openerLength) { + // Found matching closer length. + if (!silent) { + const token = state.push('code_inline', 'code', 0); + token.markup = marker; + token.content = state.src.slice(pos, matchStart).replace(/\n/g, ' ').replace(/^ (.+) $/, '$1'); + } + state.pos = matchEnd; + return true; + } + + // Some different length found, put it in cache as upper limit of where closer can be found + state.backticks[closerLength] = matchStart; + } + + // Scanned through the end, didn't find anything + state.backticksScanned = true; + if (!silent) state.pending += marker; + state.pos += openerLength; + return true; +} + +// ~~strike through~~ +// + +// Insert each marker as a separate text token, and add it to delimiter list +// +function strikethrough_tokenize(state, silent) { + const start = state.pos; + const marker = state.src.charCodeAt(start); + if (silent) { + return false; + } + if (marker !== 0x7E /* ~ */) { + return false; + } + const scanned = state.scanDelims(state.pos, true); + let len = scanned.length; + const ch = String.fromCharCode(marker); + if (len < 2) { + return false; + } + let token; + if (len % 2) { + token = state.push('text', '', 0); + token.content = ch; + len--; + } + for (let i = 0; i < len; i += 2) { + token = state.push('text', '', 0); + token.content = ch + ch; + state.delimiters.push({ + marker, + length: 0, + // disable "rule of 3" length checks meant for emphasis + token: state.tokens.length - 1, + end: -1, + open: scanned.can_open, + close: scanned.can_close + }); + } + state.pos += scanned.length; + return true; +} +function postProcess$1(state, delimiters) { + let token; + const loneMarkers = []; + const max = delimiters.length; + for (let i = 0; i < max; i++) { + const startDelim = delimiters[i]; + if (startDelim.marker !== 0x7E /* ~ */) { + continue; + } + if (startDelim.end === -1) { + continue; + } + const endDelim = delimiters[startDelim.end]; + token = state.tokens[startDelim.token]; + token.type = 's_open'; + token.tag = 's'; + token.nesting = 1; + token.markup = '~~'; + token.content = ''; + token = state.tokens[endDelim.token]; + token.type = 's_close'; + token.tag = 's'; + token.nesting = -1; + token.markup = '~~'; + token.content = ''; + if (state.tokens[endDelim.token - 1].type === 'text' && state.tokens[endDelim.token - 1].content === '~') { + loneMarkers.push(endDelim.token - 1); + } + } + + // If a marker sequence has an odd number of characters, it's splitted + // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the + // start of the sequence. + // + // So, we have to move all those markers after subsequent s_close tags. + // + while (loneMarkers.length) { + const i = loneMarkers.pop(); + let j = i + 1; + while (j < state.tokens.length && state.tokens[j].type === 's_close') { + j++; + } + j--; + if (i !== j) { + token = state.tokens[j]; + state.tokens[j] = state.tokens[i]; + state.tokens[i] = token; + } + } +} + +// Walk through delimiter list and replace text tokens with tags +// +function strikethrough_postProcess(state) { + const tokens_meta = state.tokens_meta; + const max = state.tokens_meta.length; + postProcess$1(state, state.delimiters); + for (let curr = 0; curr < max; curr++) { + if (tokens_meta[curr] && tokens_meta[curr].delimiters) { + postProcess$1(state, tokens_meta[curr].delimiters); + } + } +} +var r_strikethrough = { + tokenize: strikethrough_tokenize, + postProcess: strikethrough_postProcess +}; + +// Process *this* and _that_ +// + +// Insert each marker as a separate text token, and add it to delimiter list +// +function emphasis_tokenize(state, silent) { + const start = state.pos; + const marker = state.src.charCodeAt(start); + if (silent) { + return false; + } + if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { + return false; + } + const scanned = state.scanDelims(state.pos, marker === 0x2A); + for (let i = 0; i < scanned.length; i++) { + const token = state.push('text', '', 0); + token.content = String.fromCharCode(marker); + state.delimiters.push({ + // Char code of the starting marker (number). + // + marker, + // Total length of these series of delimiters. + // + length: scanned.length, + // A position of the token this delimiter corresponds to. + // + token: state.tokens.length - 1, + // If this delimiter is matched as a valid opener, `end` will be + // equal to its position, otherwise it's `-1`. + // + end: -1, + // Boolean flags that determine if this delimiter could open or close + // an emphasis. + // + open: scanned.can_open, + close: scanned.can_close + }); + } + state.pos += scanned.length; + return true; +} +function postProcess(state, delimiters) { + const max = delimiters.length; + for (let i = max - 1; i >= 0; i--) { + const startDelim = delimiters[i]; + if (startDelim.marker !== 0x5F /* _ */ && startDelim.marker !== 0x2A /* * */) { + continue; + } + + // Process only opening markers + if (startDelim.end === -1) { + continue; + } + const endDelim = delimiters[startDelim.end]; + + // If the previous delimiter has the same marker and is adjacent to this one, + // merge those into one strong delimiter. + // + // `whatever` -> `whatever` + // + const isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && + // check that first two markers match and adjacent + delimiters[i - 1].marker === startDelim.marker && delimiters[i - 1].token === startDelim.token - 1 && + // check that last two markers are adjacent (we can safely assume they match) + delimiters[startDelim.end + 1].token === endDelim.token + 1; + const ch = String.fromCharCode(startDelim.marker); + const token_o = state.tokens[startDelim.token]; + token_o.type = isStrong ? 'strong_open' : 'em_open'; + token_o.tag = isStrong ? 'strong' : 'em'; + token_o.nesting = 1; + token_o.markup = isStrong ? ch + ch : ch; + token_o.content = ''; + const token_c = state.tokens[endDelim.token]; + token_c.type = isStrong ? 'strong_close' : 'em_close'; + token_c.tag = isStrong ? 'strong' : 'em'; + token_c.nesting = -1; + token_c.markup = isStrong ? ch + ch : ch; + token_c.content = ''; + if (isStrong) { + state.tokens[delimiters[i - 1].token].content = ''; + state.tokens[delimiters[startDelim.end + 1].token].content = ''; + i--; + } + } +} + +// Walk through delimiter list and replace text tokens with tags +// +function emphasis_post_process(state) { + const tokens_meta = state.tokens_meta; + const max = state.tokens_meta.length; + postProcess(state, state.delimiters); + for (let curr = 0; curr < max; curr++) { + if (tokens_meta[curr] && tokens_meta[curr].delimiters) { + postProcess(state, tokens_meta[curr].delimiters); + } + } +} +var r_emphasis = { + tokenize: emphasis_tokenize, + postProcess: emphasis_post_process +}; + +// Process [link]( "stuff") + +function link(state, silent) { + let code, label, res, ref; + let href = ''; + let title = ''; + let start = state.pos; + let parseReference = true; + if (state.src.charCodeAt(state.pos) !== 0x5B /* [ */) { + return false; + } + const oldPos = state.pos; + const max = state.posMax; + const labelStart = state.pos + 1; + const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); + + // parser failed to find ']', so it's not a valid link + if (labelEnd < 0) { + return false; + } + let pos = labelEnd + 1; + if (pos < max && state.src.charCodeAt(pos) === 0x28 /* ( */) { + // + // Inline link + // + + // might have found a valid shortcut link, disable reference parsing + parseReference = false; + + // [link]( "title" ) + // ^^ skipping these spaces + pos++; + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 0x0A) { + break; + } + } + if (pos >= max) { + return false; + } + + // [link]( "title" ) + // ^^^^^^ parsing link destination + start = pos; + res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); + if (res.ok) { + href = state.md.normalizeLink(res.str); + if (state.md.validateLink(href)) { + pos = res.pos; + } else { + href = ''; + } + + // [link]( "title" ) + // ^^ skipping these spaces + start = pos; + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 0x0A) { + break; + } + } + + // [link]( "title" ) + // ^^^^^^^ parsing link title + res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); + if (pos < max && start !== pos && res.ok) { + title = res.str; + pos = res.pos; + + // [link]( "title" ) + // ^^ skipping these spaces + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 0x0A) { + break; + } + } + } + } + if (pos >= max || state.src.charCodeAt(pos) !== 0x29 /* ) */) { + // parsing a valid shortcut link failed, fallback to reference + parseReference = true; + } + pos++; + } + if (parseReference) { + // + // Link reference + // + if (typeof state.env.references === 'undefined') { + return false; + } + if (pos < max && state.src.charCodeAt(pos) === 0x5B /* [ */) { + start = pos + 1; + pos = state.md.helpers.parseLinkLabel(state, pos); + if (pos >= 0) { + label = state.src.slice(start, pos++); + } else { + pos = labelEnd + 1; + } + } else { + pos = labelEnd + 1; + } + + // covers label === '' and label === undefined + // (collapsed reference link and shortcut reference link respectively) + if (!label) { + label = state.src.slice(labelStart, labelEnd); + } + ref = state.env.references[normalizeReference(label)]; + if (!ref) { + state.pos = oldPos; + return false; + } + href = ref.href; + title = ref.title; + } + + // + // We found the end of the link, and know for a fact it's a valid link; + // so all that's left to do is to call tokenizer. + // + if (!silent) { + state.pos = labelStart; + state.posMax = labelEnd; + const token_o = state.push('link_open', 'a', 1); + const attrs = [['href', href]]; + token_o.attrs = attrs; + if (title) { + attrs.push(['title', title]); + } + state.linkLevel++; + state.md.inline.tokenize(state); + state.linkLevel--; + state.push('link_close', 'a', -1); + } + state.pos = pos; + state.posMax = max; + return true; +} + +// Process ![image]( "title") + +function image(state, silent) { + let code, content, label, pos, ref, res, title, start; + let href = ''; + const oldPos = state.pos; + const max = state.posMax; + if (state.src.charCodeAt(state.pos) !== 0x21 /* ! */) { + return false; + } + if (state.src.charCodeAt(state.pos + 1) !== 0x5B /* [ */) { + return false; + } + const labelStart = state.pos + 2; + const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); + + // parser failed to find ']', so it's not a valid link + if (labelEnd < 0) { + return false; + } + pos = labelEnd + 1; + if (pos < max && state.src.charCodeAt(pos) === 0x28 /* ( */) { + // + // Inline link + // + + // [link]( "title" ) + // ^^ skipping these spaces + pos++; + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 0x0A) { + break; + } + } + if (pos >= max) { + return false; + } + + // [link]( "title" ) + // ^^^^^^ parsing link destination + start = pos; + res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); + if (res.ok) { + href = state.md.normalizeLink(res.str); + if (state.md.validateLink(href)) { + pos = res.pos; + } else { + href = ''; + } + } + + // [link]( "title" ) + // ^^ skipping these spaces + start = pos; + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 0x0A) { + break; + } + } + + // [link]( "title" ) + // ^^^^^^^ parsing link title + res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); + if (pos < max && start !== pos && res.ok) { + title = res.str; + pos = res.pos; + + // [link]( "title" ) + // ^^ skipping these spaces + for (; pos < max; pos++) { + code = state.src.charCodeAt(pos); + if (!isSpace(code) && code !== 0x0A) { + break; + } + } + } else { + title = ''; + } + if (pos >= max || state.src.charCodeAt(pos) !== 0x29 /* ) */) { + state.pos = oldPos; + return false; + } + pos++; + } else { + // + // Link reference + // + if (typeof state.env.references === 'undefined') { + return false; + } + if (pos < max && state.src.charCodeAt(pos) === 0x5B /* [ */) { + start = pos + 1; + pos = state.md.helpers.parseLinkLabel(state, pos); + if (pos >= 0) { + label = state.src.slice(start, pos++); + } else { + pos = labelEnd + 1; + } + } else { + pos = labelEnd + 1; + } + + // covers label === '' and label === undefined + // (collapsed reference link and shortcut reference link respectively) + if (!label) { + label = state.src.slice(labelStart, labelEnd); + } + ref = state.env.references[normalizeReference(label)]; + if (!ref) { + state.pos = oldPos; + return false; + } + href = ref.href; + title = ref.title; + } + + // + // We found the end of the link, and know for a fact it's a valid link; + // so all that's left to do is to call tokenizer. + // + if (!silent) { + content = state.src.slice(labelStart, labelEnd); + const tokens = []; + state.md.inline.parse(content, state.md, state.env, tokens); + const token = state.push('image', 'img', 0); + const attrs = [['src', href], ['alt', '']]; + token.attrs = attrs; + token.children = tokens; + token.content = content; + if (title) { + attrs.push(['title', title]); + } + } + state.pos = pos; + state.posMax = max; + return true; +} + +// Process autolinks '' + +/* eslint max-len:0 */ +const EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/; +/* eslint-disable-next-line no-control-regex */ +const AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/; +function autolink(state, silent) { + let pos = state.pos; + if (state.src.charCodeAt(pos) !== 0x3C /* < */) { + return false; + } + const start = state.pos; + const max = state.posMax; + for (;;) { + if (++pos >= max) return false; + const ch = state.src.charCodeAt(pos); + if (ch === 0x3C /* < */) return false; + if (ch === 0x3E /* > */) break; + } + const url = state.src.slice(start + 1, pos); + if (AUTOLINK_RE.test(url)) { + const fullUrl = state.md.normalizeLink(url); + if (!state.md.validateLink(fullUrl)) { + return false; + } + if (!silent) { + const token_o = state.push('link_open', 'a', 1); + token_o.attrs = [['href', fullUrl]]; + token_o.markup = 'autolink'; + token_o.info = 'auto'; + const token_t = state.push('text', '', 0); + token_t.content = state.md.normalizeLinkText(url); + const token_c = state.push('link_close', 'a', -1); + token_c.markup = 'autolink'; + token_c.info = 'auto'; + } + state.pos += url.length + 2; + return true; + } + if (EMAIL_RE.test(url)) { + const fullUrl = state.md.normalizeLink('mailto:' + url); + if (!state.md.validateLink(fullUrl)) { + return false; + } + if (!silent) { + const token_o = state.push('link_open', 'a', 1); + token_o.attrs = [['href', fullUrl]]; + token_o.markup = 'autolink'; + token_o.info = 'auto'; + const token_t = state.push('text', '', 0); + token_t.content = state.md.normalizeLinkText(url); + const token_c = state.push('link_close', 'a', -1); + token_c.markup = 'autolink'; + token_c.info = 'auto'; + } + state.pos += url.length + 2; + return true; + } + return false; +} + +// Process html tags + +function isLinkOpen(str) { + return /^\s]/i.test(str); +} +function isLinkClose(str) { + return /^<\/a\s*>/i.test(str); +} +function isLetter(ch) { + /* eslint no-bitwise:0 */ + const lc = ch | 0x20; // to lower case + return lc >= 0x61 /* a */ && lc <= 0x7a /* z */; +} +function html_inline(state, silent) { + if (!state.md.options.html) { + return false; + } + + // Check start + const max = state.posMax; + const pos = state.pos; + if (state.src.charCodeAt(pos) !== 0x3C /* < */ || pos + 2 >= max) { + return false; + } + + // Quick fail on second char + const ch = state.src.charCodeAt(pos + 1); + if (ch !== 0x21 /* ! */ && ch !== 0x3F /* ? */ && ch !== 0x2F /* / */ && !isLetter(ch)) { + return false; + } + const match = state.src.slice(pos).match(HTML_TAG_RE); + if (!match) { + return false; + } + if (!silent) { + const token = state.push('html_inline', '', 0); + token.content = match[0]; + if (isLinkOpen(token.content)) state.linkLevel++; + if (isLinkClose(token.content)) state.linkLevel--; + } + state.pos += match[0].length; + return true; +} + +// Process html entity - {, ¯, ", ... + +const DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i; +const NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; +function entity(state, silent) { + const pos = state.pos; + const max = state.posMax; + if (state.src.charCodeAt(pos) !== 0x26 /* & */) return false; + if (pos + 1 >= max) return false; + const ch = state.src.charCodeAt(pos + 1); + if (ch === 0x23 /* # */) { + const match = state.src.slice(pos).match(DIGITAL_RE); + if (match) { + if (!silent) { + const code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); + const token = state.push('text_special', '', 0); + token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD); + token.markup = match[0]; + token.info = 'entity'; + } + state.pos += match[0].length; + return true; + } + } else { + const match = state.src.slice(pos).match(NAMED_RE); + if (match) { + const decoded = entities.decodeHTML(match[0]); + if (decoded !== match[0]) { + if (!silent) { + const token = state.push('text_special', '', 0); + token.content = decoded; + token.markup = match[0]; + token.info = 'entity'; + } + state.pos += match[0].length; + return true; + } + } + } + return false; +} + +// For each opening emphasis-like marker find a matching closing one +// + +function processDelimiters(delimiters) { + const openersBottom = {}; + const max = delimiters.length; + if (!max) return; + + // headerIdx is the first delimiter of the current (where closer is) delimiter run + let headerIdx = 0; + let lastTokenIdx = -2; // needs any value lower than -1 + const jumps = []; + for (let closerIdx = 0; closerIdx < max; closerIdx++) { + const closer = delimiters[closerIdx]; + jumps.push(0); + + // markers belong to same delimiter run if: + // - they have adjacent tokens + // - AND markers are the same + // + if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) { + headerIdx = closerIdx; + } + lastTokenIdx = closer.token; + + // Length is only used for emphasis-specific "rule of 3", + // if it's not defined (in strikethrough or 3rd party plugins), + // we can default it to 0 to disable those checks. + // + closer.length = closer.length || 0; + if (!closer.close) continue; + + // Previously calculated lower bounds (previous fails) + // for each marker, each delimiter length modulo 3, + // and for whether this closer can be an opener; + // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460 + /* eslint-disable-next-line no-prototype-builtins */ + if (!openersBottom.hasOwnProperty(closer.marker)) { + openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1]; + } + const minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3]; + let openerIdx = headerIdx - jumps[headerIdx] - 1; + let newMinOpenerIdx = openerIdx; + for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) { + const opener = delimiters[openerIdx]; + if (opener.marker !== closer.marker) continue; + if (opener.open && opener.end < 0) { + let isOddMatch = false; + + // from spec: + // + // If one of the delimiters can both open and close emphasis, then the + // sum of the lengths of the delimiter runs containing the opening and + // closing delimiters must not be a multiple of 3 unless both lengths + // are multiples of 3. + // + if (opener.close || closer.open) { + if ((opener.length + closer.length) % 3 === 0) { + if (opener.length % 3 !== 0 || closer.length % 3 !== 0) { + isOddMatch = true; + } + } + } + if (!isOddMatch) { + // If previous delimiter cannot be an opener, we can safely skip + // the entire sequence in future checks. This is required to make + // sure algorithm has linear complexity (see *_*_*_*_*_... case). + // + const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0; + jumps[closerIdx] = closerIdx - openerIdx + lastJump; + jumps[openerIdx] = lastJump; + closer.open = false; + opener.end = closerIdx; + opener.close = false; + newMinOpenerIdx = -1; + // treat next token as start of run, + // it optimizes skips in **<...>**a**<...>** pathological case + lastTokenIdx = -2; + break; + } + } + } + if (newMinOpenerIdx !== -1) { + // If match for this delimiter run failed, we want to set lower bound for + // future lookups. This is required to make sure algorithm has linear + // complexity. + // + // See details here: + // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442 + // + openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx; + } + } +} +function link_pairs(state) { + const tokens_meta = state.tokens_meta; + const max = state.tokens_meta.length; + processDelimiters(state.delimiters); + for (let curr = 0; curr < max; curr++) { + if (tokens_meta[curr] && tokens_meta[curr].delimiters) { + processDelimiters(tokens_meta[curr].delimiters); + } + } +} + +// Clean up tokens after emphasis and strikethrough postprocessing: +// merge adjacent text nodes into one and re-calculate all token levels +// +// This is necessary because initially emphasis delimiter markers (*, _, ~) +// are treated as their own separate text tokens. Then emphasis rule either +// leaves them as text (needed to merge with adjacent text) or turns them +// into opening/closing tags (which messes up levels inside). +// + +function fragments_join(state) { + let curr, last; + let level = 0; + const tokens = state.tokens; + const max = state.tokens.length; + for (curr = last = 0; curr < max; curr++) { + // re-calculate levels after emphasis/strikethrough turns some text nodes + // into opening/closing tags + if (tokens[curr].nesting < 0) level--; // closing tag + tokens[curr].level = level; + if (tokens[curr].nesting > 0) level++; // opening tag + + if (tokens[curr].type === 'text' && curr + 1 < max && tokens[curr + 1].type === 'text') { + // collapse two adjacent text nodes + tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content; + } else { + if (curr !== last) { + tokens[last] = tokens[curr]; + } + last++; + } + } + if (curr !== last) { + tokens.length = last; + } +} + +/** internal + * class ParserInline + * + * Tokenizes paragraph content. + **/ + + +// Parser rules + +const _rules = [['text', text], ['linkify', linkify], ['newline', newline], ['escape', escape], ['backticks', backtick], ['strikethrough', r_strikethrough.tokenize], ['emphasis', r_emphasis.tokenize], ['link', link], ['image', image], ['autolink', autolink], ['html_inline', html_inline], ['entity', entity]]; + +// `rule2` ruleset was created specifically for emphasis/strikethrough +// post-processing and may be changed in the future. +// +// Don't use this for anything except pairs (plugins working with `balance_pairs`). +// +const _rules2 = [['balance_pairs', link_pairs], ['strikethrough', r_strikethrough.postProcess], ['emphasis', r_emphasis.postProcess], +// rules for pairs separate '**' into its own text tokens, which may be left unused, +// rule below merges unused segments back with the rest of the text +['fragments_join', fragments_join]]; + +/** + * new ParserInline() + **/ +function ParserInline() { + /** + * ParserInline#ruler -> Ruler + * + * [[Ruler]] instance. Keep configuration of inline rules. + **/ + this.ruler = new Ruler(); + for (let i = 0; i < _rules.length; i++) { + this.ruler.push(_rules[i][0], _rules[i][1]); + } + + /** + * ParserInline#ruler2 -> Ruler + * + * [[Ruler]] instance. Second ruler used for post-processing + * (e.g. in emphasis-like rules). + **/ + this.ruler2 = new Ruler(); + for (let i = 0; i < _rules2.length; i++) { + this.ruler2.push(_rules2[i][0], _rules2[i][1]); + } +} + +// Skip single token by running all rules in validation mode; +// returns `true` if any rule reported success +// +ParserInline.prototype.skipToken = function (state) { + const pos = state.pos; + const rules = this.ruler.getRules(''); + const len = rules.length; + const maxNesting = state.md.options.maxNesting; + const cache = state.cache; + if (typeof cache[pos] !== 'undefined') { + state.pos = cache[pos]; + return; + } + let ok = false; + if (state.level < maxNesting) { + for (let i = 0; i < len; i++) { + // Increment state.level and decrement it later to limit recursion. + // It's harmless to do here, because no tokens are created. But ideally, + // we'd need a separate private state variable for this purpose. + // + state.level++; + ok = rules[i](state, true); + state.level--; + if (ok) { + if (pos >= state.pos) { + throw new Error("inline rule didn't increment state.pos"); + } + break; + } + } + } else { + // Too much nesting, just skip until the end of the paragraph. + // + // NOTE: this will cause links to behave incorrectly in the following case, + // when an amount of `[` is exactly equal to `maxNesting + 1`: + // + // [[[[[[[[[[[[[[[[[[[[[foo]() + // + // TODO: remove this workaround when CM standard will allow nested links + // (we can replace it by preventing links from being parsed in + // validation mode) + // + state.pos = state.posMax; + } + if (!ok) { + state.pos++; + } + cache[pos] = state.pos; +}; + +// Generate tokens for input range +// +ParserInline.prototype.tokenize = function (state) { + const rules = this.ruler.getRules(''); + const len = rules.length; + const end = state.posMax; + const maxNesting = state.md.options.maxNesting; + while (state.pos < end) { + // Try all possible rules. + // On success, rule should: + // + // - update `state.pos` + // - update `state.tokens` + // - return true + const prevPos = state.pos; + let ok = false; + if (state.level < maxNesting) { + for (let i = 0; i < len; i++) { + ok = rules[i](state, false); + if (ok) { + if (prevPos >= state.pos) { + throw new Error("inline rule didn't increment state.pos"); + } + break; + } + } + } + if (ok) { + if (state.pos >= end) { + break; + } + continue; + } + state.pending += state.src[state.pos++]; + } + if (state.pending) { + state.pushPending(); + } +}; + +/** + * ParserInline.parse(str, md, env, outTokens) + * + * Process input string and push inline tokens into `outTokens` + **/ +ParserInline.prototype.parse = function (str, md, env, outTokens) { + const state = new this.State(str, md, env, outTokens); + this.tokenize(state); + const rules = this.ruler2.getRules(''); + const len = rules.length; + for (let i = 0; i < len; i++) { + rules[i](state); + } +}; +ParserInline.prototype.State = StateInline; + +// markdown-it default options + +var cfg_default = { + options: { + // Enable HTML tags in source + html: false, + // Use '/' to close single tags (
) + xhtmlOut: false, + // Convert '\n' in paragraphs into
+ breaks: false, + // CSS language prefix for fenced blocks + langPrefix: 'language-', + // autoconvert URL-like texts to links + linkify: false, + // Enable some language-neutral replacements + quotes beautification + typographer: false, + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Could be either a String or an Array. + // + // For example, you can use '«»„“' for Russian, '„“‚‘' for German, + // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). + quotes: '\u201c\u201d\u2018\u2019', + /* “”‘’ */ + + // Highlighter function. Should return escaped HTML, + // or '' if the source string is not changed and should be escaped externaly. + // If result starts with ) + xhtmlOut: false, + // Convert '\n' in paragraphs into
+ breaks: false, + // CSS language prefix for fenced blocks + langPrefix: 'language-', + // autoconvert URL-like texts to links + linkify: false, + // Enable some language-neutral replacements + quotes beautification + typographer: false, + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Could be either a String or an Array. + // + // For example, you can use '«»„“' for Russian, '„“‚‘' for German, + // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). + quotes: '\u201c\u201d\u2018\u2019', + /* “”‘’ */ + + // Highlighter function. Should return escaped HTML, + // or '' if the source string is not changed and should be escaped externaly. + // If result starts with ) + xhtmlOut: true, + // Convert '\n' in paragraphs into
+ breaks: false, + // CSS language prefix for fenced blocks + langPrefix: 'language-', + // autoconvert URL-like texts to links + linkify: false, + // Enable some language-neutral replacements + quotes beautification + typographer: false, + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Could be either a String or an Array. + // + // For example, you can use '«»„“' for Russian, '„“‚‘' for German, + // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). + quotes: '\u201c\u201d\u2018\u2019', + /* “”‘’ */ + + // Highlighter function. Should return escaped HTML, + // or '' if the source string is not changed and should be escaped externaly. + // If result starts with = 0) { try { parsed.hostname = punycode.toASCII(parsed.hostname); - } catch (er) { /**/ } + } catch (er) {/**/} } } - - return mdurl.encode(mdurl.format(parsed)); + return mdurl__namespace.encode(mdurl__namespace.format(parsed)); } - function normalizeLinkText(url) { - var parsed = mdurl.parse(url, true); - + const parsed = mdurl__namespace.parse(url, true); if (parsed.hostname) { // Encode hostnames in urls like: // `http://host/`, `https://host/`, `mailto:user@host`, `//host/` @@ -17271,14 +127108,14 @@ function normalizeLinkText(url) { if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) { try { parsed.hostname = punycode.toUnicode(parsed.hostname); - } catch (er) { /**/ } + } catch (er) {/**/} } } - return mdurl.decode(mdurl.format(parsed)); + // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720 + return mdurl__namespace.decode(mdurl__namespace.format(parsed), mdurl__namespace.decode.defaultChars + '%'); } - /** * class MarkdownIt * @@ -17322,12 +127159,12 @@ function normalizeLinkText(url) { * MarkdownIt provides named presets as a convenience to quickly * enable/disable active syntax rules and options for common use cases. * - * - ["commonmark"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) - + * - ["commonmark"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.mjs) - * configures parser to strict [CommonMark](http://commonmark.org/) mode. - * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) - + * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.mjs) - * similar to GFM, used when no preset name given. Enables all available rules, * but still without html, typographer & autolinker. - * - ["zero"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) - + * - ["zero"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.mjs) - * all rules disabled. Useful to quickly setup your config via `.enable()`. * For example, when you need only `bold` and `italic` markup and nothing else. * @@ -17344,7 +127181,7 @@ function normalizeLinkText(url) { * Can be useful for external highlighters. * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links. * - __typographer__ - `false`. Set `true` to enable [some language-neutral - * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) + + * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs) + * quotes beautification (smartquotes). * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement * pairs, when typographer enabled and smartquotes on. For example, you can @@ -17381,7 +127218,7 @@ function normalizeLinkText(url) { * highlight: function (str, lang) { * if (lang && hljs.getLanguage(lang)) { * try { - * return hljs.highlight(lang, str, true).value; + * return hljs.highlight(str, { language: lang, ignoreIllegals: true }).value; * } catch (__) {} * } * @@ -17390,7 +127227,7 @@ function normalizeLinkText(url) { * }); * ``` * - * Or with full wrapper override (if you need assign class to `
`):
+ * Or with full wrapper override (if you need assign class to `
` or ``):
  *
  * ```javascript
  * var hljs = require('highlight.js') // https://highlightjs.org/
@@ -17400,13 +127237,13 @@ function normalizeLinkText(url) {
  *   highlight: function (str, lang) {
  *     if (lang && hljs.getLanguage(lang)) {
  *       try {
- *         return '
' +
- *                hljs.highlight(lang, str, true).value +
+ *         return '
' +
+ *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +
  *                '
'; * } catch (__) {} * } * - * return '
' + md.utils.escapeHtml(str) + '
'; + * return '
' + md.utils.escapeHtml(str) + '
'; * } * }); * ``` @@ -17416,9 +127253,8 @@ function MarkdownIt(presetName, options) { if (!(this instanceof MarkdownIt)) { return new MarkdownIt(presetName, options); } - if (!options) { - if (!utils.isString(presetName)) { + if (!isString(presetName)) { options = presetName || {}; presetName = 'default'; } @@ -17449,7 +127285,7 @@ function MarkdownIt(presetName, options) { * writing plugins. For simple rules control use [[MarkdownIt.disable]] and * [[MarkdownIt.enable]]. **/ - this.core = new ParserCore(); + this.core = new Core(); /** * MarkdownIt#renderer -> Renderer @@ -17470,7 +127306,7 @@ function MarkdownIt(presetName, options) { * md.renderer.rules['my_token'] = myToken * ``` * - * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js). + * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs). **/ this.renderer = new Renderer(); @@ -17478,7 +127314,7 @@ function MarkdownIt(presetName, options) { * MarkdownIt#linkify -> LinkifyIt * * [linkify-it](https://github.com/markdown-it/linkify-it) instance. - * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js) + * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.mjs) * rule. **/ this.linkify = new LinkifyIt(); @@ -17515,14 +127351,13 @@ function MarkdownIt(presetName, options) { **/ this.normalizeLinkText = normalizeLinkText; - // Expose utils & helpers for easy acces from plugins /** * MarkdownIt#utils -> utils * * Assorted utility functions, useful to write plugins. See details - * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js). + * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.mjs). **/ this.utils = utils; @@ -17532,16 +127367,14 @@ function MarkdownIt(presetName, options) { * Link components parser functions, useful to write plugins. See details * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers). **/ - this.helpers = utils.assign({}, helpers); - - + this.helpers = assign({}, helpers); this.options = {}; this.configure(presetName); - - if (options) { this.set(options); } + if (options) { + this.set(options); + } } - /** chainable * MarkdownIt.set(options) * @@ -17562,11 +127395,10 @@ function MarkdownIt(presetName, options) { * config. **/ MarkdownIt.prototype.set = function (options) { - utils.assign(this.options, options); + assign(this.options, options); return this; }; - /** chainable, internal * MarkdownIt.configure(presets) * @@ -17578,18 +127410,20 @@ MarkdownIt.prototype.set = function (options) { * will give better compatibility with next versions. **/ MarkdownIt.prototype.configure = function (presets) { - var self = this, presetName; - - if (utils.isString(presets)) { - presetName = presets; + const self = this; + if (isString(presets)) { + const presetName = presets; presets = config[presetName]; - if (!presets) { throw new Error('Wrong `markdown-it` preset "' + presetName + '", check name'); } + if (!presets) { + throw new Error('Wrong `markdown-it` preset "' + presetName + '", check name'); + } + } + if (!presets) { + throw new Error('Wrong `markdown-it` preset, can\'t be empty'); + } + if (presets.options) { + self.set(presets.options); } - - if (!presets) { throw new Error('Wrong `markdown-it` preset, can\'t be empty'); } - - if (presets.options) { self.set(presets.options); } - if (presets.components) { Object.keys(presets.components).forEach(function (name) { if (presets.components[name].rules) { @@ -17603,7 +127437,6 @@ MarkdownIt.prototype.configure = function (presets) { return this; }; - /** chainable * MarkdownIt.enable(list, ignoreInvalid) * - list (String|Array): rule name or list of rule names to enable @@ -17622,26 +127455,23 @@ MarkdownIt.prototype.configure = function (presets) { * ``` **/ MarkdownIt.prototype.enable = function (list, ignoreInvalid) { - var result = []; - - if (!Array.isArray(list)) { list = [ list ]; } - - [ 'core', 'block', 'inline' ].forEach(function (chain) { + let result = []; + if (!Array.isArray(list)) { + list = [list]; + } + ['core', 'block', 'inline'].forEach(function (chain) { result = result.concat(this[chain].ruler.enable(list, true)); }, this); - result = result.concat(this.inline.ruler2.enable(list, true)); - - var missed = list.filter(function (name) { return result.indexOf(name) < 0; }); - + const missed = list.filter(function (name) { + return result.indexOf(name) < 0; + }); if (missed.length && !ignoreInvalid) { throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed); } - return this; }; - /** chainable * MarkdownIt.disable(list, ignoreInvalid) * - list (String|Array): rule name or list of rule names to disable. @@ -17650,25 +127480,23 @@ MarkdownIt.prototype.enable = function (list, ignoreInvalid) { * The same as [[MarkdownIt.enable]], but turn specified rules off. **/ MarkdownIt.prototype.disable = function (list, ignoreInvalid) { - var result = []; - - if (!Array.isArray(list)) { list = [ list ]; } - - [ 'core', 'block', 'inline' ].forEach(function (chain) { + let result = []; + if (!Array.isArray(list)) { + list = [list]; + } + ['core', 'block', 'inline'].forEach(function (chain) { result = result.concat(this[chain].ruler.disable(list, true)); }, this); - result = result.concat(this.inline.ruler2.disable(list, true)); - - var missed = list.filter(function (name) { return result.indexOf(name) < 0; }); - + const missed = list.filter(function (name) { + return result.indexOf(name) < 0; + }); if (missed.length && !ignoreInvalid) { throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed); } return this; }; - /** chainable * MarkdownIt.use(plugin, params) * @@ -17686,12 +127514,11 @@ MarkdownIt.prototype.disable = function (list, ignoreInvalid) { * ``` **/ MarkdownIt.prototype.use = function (plugin /*, params, ... */) { - var args = [ this ].concat(Array.prototype.slice.call(arguments, 1)); + const args = [this].concat(Array.prototype.slice.call(arguments, 1)); plugin.apply(plugin, args); return this; }; - /** internal * MarkdownIt.parse(src, env) -> Array * - src (String): source string @@ -17711,15 +127538,11 @@ MarkdownIt.prototype.parse = function (src, env) { if (typeof src !== 'string') { throw new Error('Input data should be a String'); } - - var state = new this.core.State(src, this, env); - + const state = new this.core.State(src, this, env); this.core.process(state); - return state.tokens; }; - /** * MarkdownIt.render(src [, env]) -> String * - src (String): source string @@ -17733,11 +127556,9 @@ MarkdownIt.prototype.parse = function (src, env) { **/ MarkdownIt.prototype.render = function (src, env) { env = env || {}; - return this.renderer.render(this.parse(src, env), this.options, env); }; - /** internal * MarkdownIt.parseInline(src, env) -> Array * - src (String): source string @@ -17748,15 +127569,12 @@ MarkdownIt.prototype.render = function (src, env) { * tokens in `children` property. Also updates `env` object. **/ MarkdownIt.prototype.parseInline = function (src, env) { - var state = new this.core.State(src, this, env); - + const state = new this.core.State(src, this, env); state.inlineMode = true; this.core.process(state); - return state.tokens; }; - /** * MarkdownIt.renderInline(src [, env]) -> String * - src (String): source string @@ -17767,5260 +127585,211 @@ MarkdownIt.prototype.parseInline = function (src, env) { **/ MarkdownIt.prototype.renderInline = function (src, env) { env = env || {}; - return this.renderer.render(this.parseInline(src, env), this.options, env); }; - module.exports = MarkdownIt; /***/ }), -/***/ 8007: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { +/***/ 8636: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -/** internal - * class ParserBlock - * - * Block-level tokenizer. - **/ +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ExtensibleEvents = void 0; -var Ruler = __webpack_require__(2093); +var _NamespacedMap = __nccwpck_require__(3444); +var _InvalidEventError = __nccwpck_require__(4585); -var _rules = [ - // First 2 params - rule name & source. Secondary array - list of rules, - // which can be terminated by this one. - [ 'table', __webpack_require__(7722), [ 'paragraph', 'reference' ] ], - [ 'code', __webpack_require__(7693) ], - [ 'fence', __webpack_require__(7749), [ 'paragraph', 'reference', 'blockquote', 'list' ] ], - [ 'blockquote', __webpack_require__(6888), [ 'paragraph', 'reference', 'blockquote', 'list' ] ], - [ 'hr', __webpack_require__(3514), [ 'paragraph', 'reference', 'blockquote', 'list' ] ], - [ 'list', __webpack_require__(2050), [ 'paragraph', 'reference', 'blockquote' ] ], - [ 'reference', __webpack_require__(2235) ], - [ 'heading', __webpack_require__(2702), [ 'paragraph', 'reference', 'blockquote' ] ], - [ 'lheading', __webpack_require__(3551) ], - [ 'html_block', __webpack_require__(5732), [ 'paragraph', 'reference', 'blockquote' ] ], - [ 'paragraph', __webpack_require__(9450) ] -]; +var _MRoomMessage = __nccwpck_require__(8284); +var _MMessage = __nccwpck_require__(8382); + +var _message_types = __nccwpck_require__(2680); + +var _poll_types = __nccwpck_require__(8287); + +var _MPoll = __nccwpck_require__(5898); + +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +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; } /** - * new ParserBlock() - **/ -function ParserBlock() { + * Utility class for parsing and identifying event types in a renderable form. An + * instance of this class can be created to change rendering preference depending + * on use-case. + */ +var ExtensibleEvents = /*#__PURE__*/function () { + function ExtensibleEvents() { + _classCallCheck(this, ExtensibleEvents); + + _defineProperty(this, "interpreters", new _NamespacedMap.NamespacedMap([// Remember to add your unit test when adding to this! ("known events" test description) + [_MRoomMessage.LEGACY_M_ROOM_MESSAGE, _MRoomMessage.parseMRoomMessage], [_message_types.M_MESSAGE, _MMessage.parseMMessage], [_message_types.M_EMOTE, _MMessage.parseMMessage], [_message_types.M_NOTICE, _MMessage.parseMMessage], [_poll_types.M_POLL_START, _MPoll.parseMPoll], [_poll_types.M_POLL_RESPONSE, _MPoll.parseMPoll], [_poll_types.M_POLL_END, _MPoll.parseMPoll]])); + + _defineProperty(this, "_unknownInterpretOrder", [_message_types.M_MESSAGE]); + } /** - * ParserBlock#ruler -> Ruler - * - * [[Ruler]] instance. Keep configuration of block rules. - **/ - this.ruler = new Ruler(); - - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() }); - } -} + * Gets the default instance for all extensible event parsing. + */ -// Generate tokens for input range -// -ParserBlock.prototype.tokenize = function (state, startLine, endLine) { - var ok, i, - rules = this.ruler.getRules(''), - len = rules.length, - line = startLine, - hasEmptyLines = false, - maxNesting = state.md.options.maxNesting; + _createClass(ExtensibleEvents, [{ + key: "unknownInterpretOrder", + get: + /** + * Gets the order the internal processor will use for unknown primary + * event types. + */ + function get() { + var _this$_unknownInterpr; - while (line < endLine) { - state.line = line = state.skipEmptyLines(line); - if (line >= endLine) { break; } - - // Termination condition for nested calls. - // Nested calls currently used for blockquotes & lists - if (state.sCount[line] < state.blkIndent) { break; } - - // If nesting level exceeded - skip tail to the end. That's not ordinary - // situation and we should not care about content. - if (state.level >= maxNesting) { - state.line = endLine; - break; + return (_this$_unknownInterpr = this._unknownInterpretOrder) !== null && _this$_unknownInterpr !== void 0 ? _this$_unknownInterpr : []; } - - // Try all possible rules. - // On success, rule should: - // - // - update `state.line` - // - update `state.tokens` - // - return true - - for (i = 0; i < len; i++) { - ok = rules[i](state, line, endLine, false); - if (ok) { break; } + /** + * Sets the order the internal processor will use for unknown primary + * event types. + * @param {NamespacedValue[]} val The parsing order. + */ + , + set: function set(val) { + this._unknownInterpretOrder = val; } + /** + * Gets the order the internal processor will use for unknown primary + * event types. + */ - // set state.tight if we had an empty line before current tag - // i.e. latest empty line should not count - state.tight = !hasEmptyLines; - - // paragraph might "eat" one newline after it in nested lists - if (state.isEmpty(state.line - 1)) { - hasEmptyLines = true; + }, { + key: "registerInterpreter", + value: + /** + * Registers a primary event type interpreter. Note that the interpreter might be + * called with non-primary events if the event is being parsed as a fallback. + * @param {NamespacedValue} wireEventType The event type. + * @param {EventInterpreter} interpreter The interpreter. + */ + function registerInterpreter(wireEventType, interpreter) { + this.interpreters.set(wireEventType, interpreter); } - - line = state.line; - - if (line < endLine && state.isEmpty(line)) { - hasEmptyLines = true; - line++; - state.line = line; - } - } -}; - - -/** - * ParserBlock.parse(str, md, env, outTokens) - * - * Process input string and push block tokens into `outTokens` - **/ -ParserBlock.prototype.parse = function (src, md, env, outTokens) { - var state; - - if (!src) { return; } - - state = new this.State(src, md, env, outTokens); - - this.tokenize(state, state.line, state.lineMax); -}; - - -ParserBlock.prototype.State = __webpack_require__(9497); - - -module.exports = ParserBlock; - - -/***/ }), - -/***/ 4004: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/** internal - * class Core - * - * Top-level rules executor. Glues block/inline parsers and does intermediate - * transformations. - **/ - - - -var Ruler = __webpack_require__(2093); - - -var _rules = [ - [ 'normalize', __webpack_require__(2764) ], - [ 'block', __webpack_require__(31) ], - [ 'inline', __webpack_require__(1951) ], - [ 'linkify', __webpack_require__(5462) ], - [ 'replacements', __webpack_require__(8373) ], - [ 'smartquotes', __webpack_require__(2178) ] -]; - - -/** - * new Core() - **/ -function Core() { - /** - * Core#ruler -> Ruler - * - * [[Ruler]] instance. Keep configuration of core rules. - **/ - this.ruler = new Ruler(); - - for (var i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1]); - } -} - - -/** - * Core.process(state) - * - * Executes core chain rules. - **/ -Core.prototype.process = function (state) { - var i, l, rules; - - rules = this.ruler.getRules(''); - - for (i = 0, l = rules.length; i < l; i++) { - rules[i](state); - } -}; - -Core.prototype.State = __webpack_require__(9052); - - -module.exports = Core; - - -/***/ }), - -/***/ 6031: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/** internal - * class ParserInline - * - * Tokenizes paragraph content. - **/ - - - -var Ruler = __webpack_require__(2093); - - -//////////////////////////////////////////////////////////////////////////////// -// Parser rules - -var _rules = [ - [ 'text', __webpack_require__(1117) ], - [ 'newline', __webpack_require__(8774) ], - [ 'escape', __webpack_require__(1836) ], - [ 'backticks', __webpack_require__(8520) ], - [ 'strikethrough', __webpack_require__(3015)/* .tokenize */ .w ], - [ 'emphasis', __webpack_require__(1677)/* .tokenize */ .w ], - [ 'link', __webpack_require__(8798) ], - [ 'image', __webpack_require__(9998) ], - [ 'autolink', __webpack_require__(3939) ], - [ 'html_inline', __webpack_require__(7753) ], - [ 'entity', __webpack_require__(973) ] -]; - -var _rules2 = [ - [ 'balance_pairs', __webpack_require__(9418) ], - [ 'strikethrough', __webpack_require__(3015)/* .postProcess */ .g ], - [ 'emphasis', __webpack_require__(1677)/* .postProcess */ .g ], - [ 'text_collapse', __webpack_require__(2333) ] -]; - - -/** - * new ParserInline() - **/ -function ParserInline() { - var i; - - /** - * ParserInline#ruler -> Ruler - * - * [[Ruler]] instance. Keep configuration of inline rules. - **/ - this.ruler = new Ruler(); - - for (i = 0; i < _rules.length; i++) { - this.ruler.push(_rules[i][0], _rules[i][1]); - } - - /** - * ParserInline#ruler2 -> Ruler - * - * [[Ruler]] instance. Second ruler used for post-processing - * (e.g. in emphasis-like rules). - **/ - this.ruler2 = new Ruler(); - - for (i = 0; i < _rules2.length; i++) { - this.ruler2.push(_rules2[i][0], _rules2[i][1]); - } -} - - -// Skip single token by running all rules in validation mode; -// returns `true` if any rule reported success -// -ParserInline.prototype.skipToken = function (state) { - var ok, i, pos = state.pos, - rules = this.ruler.getRules(''), - len = rules.length, - maxNesting = state.md.options.maxNesting, - cache = state.cache; - - - if (typeof cache[pos] !== 'undefined') { - state.pos = cache[pos]; - return; - } - - if (state.level < maxNesting) { - for (i = 0; i < len; i++) { - // Increment state.level and decrement it later to limit recursion. - // It's harmless to do here, because no tokens are created. But ideally, - // we'd need a separate private state variable for this purpose. - // - state.level++; - ok = rules[i](state, true); - state.level--; - - if (ok) { break; } - } - } else { - // Too much nesting, just skip until the end of the paragraph. - // - // NOTE: this will cause links to behave incorrectly in the following case, - // when an amount of `[` is exactly equal to `maxNesting + 1`: - // - // [[[[[[[[[[[[[[[[[[[[[foo]() - // - // TODO: remove this workaround when CM standard will allow nested links - // (we can replace it by preventing links from being parsed in - // validation mode) - // - state.pos = state.posMax; - } - - if (!ok) { state.pos++; } - cache[pos] = state.pos; -}; - - -// Generate tokens for input range -// -ParserInline.prototype.tokenize = function (state) { - var ok, i, - rules = this.ruler.getRules(''), - len = rules.length, - end = state.posMax, - maxNesting = state.md.options.maxNesting; - - while (state.pos < end) { - // Try all possible rules. - // On success, rule should: - // - // - update `state.pos` - // - update `state.tokens` - // - return true - - if (state.level < maxNesting) { - for (i = 0; i < len; i++) { - ok = rules[i](state, false); - if (ok) { break; } - } - } - - if (ok) { - if (state.pos >= end) { break; } - continue; - } - - state.pending += state.src[state.pos++]; - } - - if (state.pending) { - state.pushPending(); - } -}; - - -/** - * ParserInline.parse(str, md, env, outTokens) - * - * Process input string and push inline tokens into `outTokens` - **/ -ParserInline.prototype.parse = function (str, md, env, outTokens) { - var i, rules, len; - var state = new this.State(str, md, env, outTokens); - - this.tokenize(state); - - rules = this.ruler2.getRules(''); - len = rules.length; - - for (i = 0; i < len; i++) { - rules[i](state); - } -}; - - -ParserInline.prototype.State = __webpack_require__(1247); - - -module.exports = ParserInline; - - -/***/ }), - -/***/ 3084: -/***/ ((module) => { - -"use strict"; -// Commonmark default options - - - - -module.exports = { - options: { - html: true, // Enable HTML tags in source - xhtmlOut: true, // Use '/' to close single tags (
) - breaks: false, // Convert '\n' in paragraphs into
- langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Could be either a String or an Array. - // - // For example, you can use '«»„“' for Russian, '„“‚‘' for German, - // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). - quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */ - - // Highlighter function. Should return escaped HTML, - // or '' if the source string is not changed and should be escaped externaly. - // If result starts with { - -"use strict"; -// markdown-it default options - - - - -module.exports = { - options: { - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
) - breaks: false, // Convert '\n' in paragraphs into
- langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Could be either a String or an Array. - // - // For example, you can use '«»„“' for Russian, '„“‚‘' for German, - // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). - quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */ - - // Highlighter function. Should return escaped HTML, - // or '' if the source string is not changed and should be escaped externaly. - // If result starts with { - -"use strict"; -// "Zero" preset, with nothing enabled. Useful for manual configuring of simple -// modes. For example, to parse bold/italic only. - - - - -module.exports = { - options: { - html: false, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
) - breaks: false, // Convert '\n' in paragraphs into
- langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: false, // autoconvert URL-like texts to links - - // Enable some language-neutral replacements + quotes beautification - typographer: false, - - // Double + single quotes replacement pairs, when typographer enabled, - // and smartquotes on. Could be either a String or an Array. - // - // For example, you can use '«»„“' for Russian, '„“‚‘' for German, - // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). - quotes: '\u201c\u201d\u2018\u2019', /* “”‘’ */ - - // Highlighter function. Should return escaped HTML, - // or '' if the source string is not changed and should be escaped externaly. - // If result starts with { - -"use strict"; -/** - * class Renderer - * - * Generates HTML from parsed token stream. Each instance has independent - * copy of rules. Those can be rewritten with ease. Also, you can add new - * rules if you create plugin and adds new token types. - **/ - - - -var assign = __webpack_require__(506).assign; -var unescapeAll = __webpack_require__(506).unescapeAll; -var escapeHtml = __webpack_require__(506).escapeHtml; - - -//////////////////////////////////////////////////////////////////////////////// - -var default_rules = {}; - - -default_rules.code_inline = function (tokens, idx, options, env, slf) { - var token = tokens[idx]; - - return '' + - escapeHtml(tokens[idx].content) + - '
'; -}; - - -default_rules.code_block = function (tokens, idx, options, env, slf) { - var token = tokens[idx]; - - return '' + - escapeHtml(tokens[idx].content) + - '
\n'; -}; - - -default_rules.fence = function (tokens, idx, options, env, slf) { - var token = tokens[idx], - info = token.info ? unescapeAll(token.info).trim() : '', - langName = '', - highlighted, i, tmpAttrs, tmpToken; - - if (info) { - langName = info.split(/\s+/g)[0]; - } - - if (options.highlight) { - highlighted = options.highlight(token.content, langName) || escapeHtml(token.content); - } else { - highlighted = escapeHtml(token.content); - } - - if (highlighted.indexOf('' - + highlighted - + '
\n'; - } - - - return '
'
-        + highlighted
-        + '
\n'; -}; - - -default_rules.image = function (tokens, idx, options, env, slf) { - var token = tokens[idx]; - - // "alt" attr MUST be set, even if empty. Because it's mandatory and - // should be placed on proper position for tests. - // - // Replace content with actual value - - token.attrs[token.attrIndex('alt')][1] = - slf.renderInlineAsText(token.children, options, env); - - return slf.renderToken(tokens, idx, options); -}; - - -default_rules.hardbreak = function (tokens, idx, options /*, env */) { - return options.xhtmlOut ? '
\n' : '
\n'; -}; -default_rules.softbreak = function (tokens, idx, options /*, env */) { - return options.breaks ? (options.xhtmlOut ? '
\n' : '
\n') : '\n'; -}; - - -default_rules.text = function (tokens, idx /*, options, env */) { - return escapeHtml(tokens[idx].content); -}; - - -default_rules.html_block = function (tokens, idx /*, options, env */) { - return tokens[idx].content; -}; -default_rules.html_inline = function (tokens, idx /*, options, env */) { - return tokens[idx].content; -}; - - -/** - * new Renderer() - * - * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults. - **/ -function Renderer() { - - /** - * Renderer#rules -> Object - * - * Contains render rules for tokens. Can be updated and extended. - * - * ##### Example - * - * ```javascript - * var md = require('markdown-it')(); - * - * md.renderer.rules.strong_open = function () { return ''; }; - * md.renderer.rules.strong_close = function () { return ''; }; - * - * var result = md.renderInline(...); - * ``` - * - * Each rule is called as independent static function with fixed signature: - * - * ```javascript - * function my_token_render(tokens, idx, options, env, renderer) { - * // ... - * return renderedHTML; - * } - * ``` - * - * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js) - * for more details and examples. - **/ - this.rules = assign({}, default_rules); -} - - -/** - * Renderer.renderAttrs(token) -> String - * - * Render token attributes to string. - **/ -Renderer.prototype.renderAttrs = function renderAttrs(token) { - var i, l, result; - - if (!token.attrs) { return ''; } - - result = ''; - - for (i = 0, l = token.attrs.length; i < l; i++) { - result += ' ' + escapeHtml(token.attrs[i][0]) + '="' + escapeHtml(token.attrs[i][1]) + '"'; - } - - return result; -}; - - -/** - * Renderer.renderToken(tokens, idx, options) -> String - * - tokens (Array): list of tokens - * - idx (Numbed): token index to render - * - options (Object): params of parser instance - * - * Default token renderer. Can be overriden by custom function - * in [[Renderer#rules]]. - **/ -Renderer.prototype.renderToken = function renderToken(tokens, idx, options) { - var nextToken, - result = '', - needLf = false, - token = tokens[idx]; - - // Tight list paragraphs - if (token.hidden) { - return ''; - } - - // Insert a newline between hidden paragraph and subsequent opening - // block-level tag. - // - // For example, here we should insert a newline before blockquote: - // - a - // > - // - if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) { - result += '\n'; - } - - // Add token name, e.g. ``. - // - needLf = false; - } - } - } - } - - result += needLf ? '>\n' : '>'; - - return result; -}; - - -/** - * Renderer.renderInline(tokens, options, env) -> String - * - tokens (Array): list on block tokens to renter - * - options (Object): params of parser instance - * - env (Object): additional data from parsed input (references, for example) - * - * The same as [[Renderer.render]], but for single token of `inline` type. - **/ -Renderer.prototype.renderInline = function (tokens, options, env) { - var type, - result = '', - rules = this.rules; - - for (var i = 0, len = tokens.length; i < len; i++) { - type = tokens[i].type; - - if (typeof rules[type] !== 'undefined') { - result += rules[type](tokens, i, options, env, this); - } else { - result += this.renderToken(tokens, i, options); - } - } - - return result; -}; - - -/** internal - * Renderer.renderInlineAsText(tokens, options, env) -> String - * - tokens (Array): list on block tokens to renter - * - options (Object): params of parser instance - * - env (Object): additional data from parsed input (references, for example) - * - * Special kludge for image `alt` attributes to conform CommonMark spec. - * Don't try to use it! Spec requires to show `alt` content with stripped markup, - * instead of simple escaping. - **/ -Renderer.prototype.renderInlineAsText = function (tokens, options, env) { - var result = ''; - - for (var i = 0, len = tokens.length; i < len; i++) { - if (tokens[i].type === 'text') { - result += tokens[i].content; - } else if (tokens[i].type === 'image') { - result += this.renderInlineAsText(tokens[i].children, options, env); - } - } - - return result; -}; - - -/** - * Renderer.render(tokens, options, env) -> String - * - tokens (Array): list on block tokens to renter - * - options (Object): params of parser instance - * - env (Object): additional data from parsed input (references, for example) - * - * Takes token stream and generates HTML. Probably, you will never need to call - * this method directly. - **/ -Renderer.prototype.render = function (tokens, options, env) { - var i, len, type, - result = '', - rules = this.rules; - - for (i = 0, len = tokens.length; i < len; i++) { - type = tokens[i].type; - - if (type === 'inline') { - result += this.renderInline(tokens[i].children, options, env); - } else if (typeof rules[type] !== 'undefined') { - result += rules[tokens[i].type](tokens, i, options, env, this); - } else { - result += this.renderToken(tokens, i, options, env); - } - } - - return result; -}; - -module.exports = Renderer; - - -/***/ }), - -/***/ 2093: -/***/ ((module) => { - -"use strict"; -/** - * class Ruler - * - * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and - * [[MarkdownIt#inline]] to manage sequences of functions (rules): - * - * - keep rules in defined order - * - assign the name to each rule - * - enable/disable rules - * - add/replace rules - * - allow assign rules to additional named chains (in the same) - * - cacheing lists of active rules - * - * You will not need use this class directly until write plugins. For simple - * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and - * [[MarkdownIt.use]]. - **/ - - - -/** - * new Ruler() - **/ -function Ruler() { - // List of added rules. Each element is: - // - // { - // name: XXX, - // enabled: Boolean, - // fn: Function(), - // alt: [ name2, name3 ] - // } - // - this.__rules__ = []; - - // Cached rule chains. - // - // First level - chain name, '' for default. - // Second level - diginal anchor for fast filtering by charcodes. - // - this.__cache__ = null; -} - -//////////////////////////////////////////////////////////////////////////////// -// Helper methods, should not be used directly - - -// Find rule index by name -// -Ruler.prototype.__find__ = function (name) { - for (var i = 0; i < this.__rules__.length; i++) { - if (this.__rules__[i].name === name) { - return i; - } - } - return -1; -}; - - -// Build rules lookup cache -// -Ruler.prototype.__compile__ = function () { - var self = this; - var chains = [ '' ]; - - // collect unique names - self.__rules__.forEach(function (rule) { - if (!rule.enabled) { return; } - - rule.alt.forEach(function (altName) { - if (chains.indexOf(altName) < 0) { - chains.push(altName); - } - }); - }); - - self.__cache__ = {}; - - chains.forEach(function (chain) { - self.__cache__[chain] = []; - self.__rules__.forEach(function (rule) { - if (!rule.enabled) { return; } - - if (chain && rule.alt.indexOf(chain) < 0) { return; } - - self.__cache__[chain].push(rule.fn); - }); - }); -}; - - -/** - * Ruler.at(name, fn [, options]) - * - name (String): rule name to replace. - * - fn (Function): new rule function. - * - options (Object): new rule options (not mandatory). - * - * Replace rule by name with new function & options. Throws error if name not - * found. - * - * ##### Options: - * - * - __alt__ - array with names of "alternate" chains. - * - * ##### Example - * - * Replace existing typographer replacement rule with new one: - * - * ```javascript - * var md = require('markdown-it')(); - * - * md.core.ruler.at('replacements', function replace(state) { - * //... - * }); - * ``` - **/ -Ruler.prototype.at = function (name, fn, options) { - var index = this.__find__(name); - var opt = options || {}; - - if (index === -1) { throw new Error('Parser rule not found: ' + name); } - - this.__rules__[index].fn = fn; - this.__rules__[index].alt = opt.alt || []; - this.__cache__ = null; -}; - - -/** - * Ruler.before(beforeName, ruleName, fn [, options]) - * - beforeName (String): new rule will be added before this one. - * - ruleName (String): name of added rule. - * - fn (Function): rule function. - * - options (Object): rule options (not mandatory). - * - * Add new rule to chain before one with given name. See also - * [[Ruler.after]], [[Ruler.push]]. - * - * ##### Options: - * - * - __alt__ - array with names of "alternate" chains. - * - * ##### Example - * - * ```javascript - * var md = require('markdown-it')(); - * - * md.block.ruler.before('paragraph', 'my_rule', function replace(state) { - * //... - * }); - * ``` - **/ -Ruler.prototype.before = function (beforeName, ruleName, fn, options) { - var index = this.__find__(beforeName); - var opt = options || {}; - - if (index === -1) { throw new Error('Parser rule not found: ' + beforeName); } - - this.__rules__.splice(index, 0, { - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - - -/** - * Ruler.after(afterName, ruleName, fn [, options]) - * - afterName (String): new rule will be added after this one. - * - ruleName (String): name of added rule. - * - fn (Function): rule function. - * - options (Object): rule options (not mandatory). - * - * Add new rule to chain after one with given name. See also - * [[Ruler.before]], [[Ruler.push]]. - * - * ##### Options: - * - * - __alt__ - array with names of "alternate" chains. - * - * ##### Example - * - * ```javascript - * var md = require('markdown-it')(); - * - * md.inline.ruler.after('text', 'my_rule', function replace(state) { - * //... - * }); - * ``` - **/ -Ruler.prototype.after = function (afterName, ruleName, fn, options) { - var index = this.__find__(afterName); - var opt = options || {}; - - if (index === -1) { throw new Error('Parser rule not found: ' + afterName); } - - this.__rules__.splice(index + 1, 0, { - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - -/** - * Ruler.push(ruleName, fn [, options]) - * - ruleName (String): name of added rule. - * - fn (Function): rule function. - * - options (Object): rule options (not mandatory). - * - * Push new rule to the end of chain. See also - * [[Ruler.before]], [[Ruler.after]]. - * - * ##### Options: - * - * - __alt__ - array with names of "alternate" chains. - * - * ##### Example - * - * ```javascript - * var md = require('markdown-it')(); - * - * md.core.ruler.push('my_rule', function replace(state) { - * //... - * }); - * ``` - **/ -Ruler.prototype.push = function (ruleName, fn, options) { - var opt = options || {}; - - this.__rules__.push({ - name: ruleName, - enabled: true, - fn: fn, - alt: opt.alt || [] - }); - - this.__cache__ = null; -}; - - -/** - * Ruler.enable(list [, ignoreInvalid]) -> Array - * - list (String|Array): list of rule names to enable. - * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found. - * - * Enable rules with given names. If any rule name not found - throw Error. - * Errors can be disabled by second param. - * - * Returns list of found rule names (if no exception happened). - * - * See also [[Ruler.disable]], [[Ruler.enableOnly]]. - **/ -Ruler.prototype.enable = function (list, ignoreInvalid) { - if (!Array.isArray(list)) { list = [ list ]; } - - var result = []; - - // Search by name and enable - list.forEach(function (name) { - var idx = this.__find__(name); - - if (idx < 0) { - if (ignoreInvalid) { return; } - throw new Error('Rules manager: invalid rule name ' + name); - } - this.__rules__[idx].enabled = true; - result.push(name); - }, this); - - this.__cache__ = null; - return result; -}; - - -/** - * Ruler.enableOnly(list [, ignoreInvalid]) - * - list (String|Array): list of rule names to enable (whitelist). - * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found. - * - * Enable rules with given names, and disable everything else. If any rule name - * not found - throw Error. Errors can be disabled by second param. - * - * See also [[Ruler.disable]], [[Ruler.enable]]. - **/ -Ruler.prototype.enableOnly = function (list, ignoreInvalid) { - if (!Array.isArray(list)) { list = [ list ]; } - - this.__rules__.forEach(function (rule) { rule.enabled = false; }); - - this.enable(list, ignoreInvalid); -}; - - -/** - * Ruler.disable(list [, ignoreInvalid]) -> Array - * - list (String|Array): list of rule names to disable. - * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found. - * - * Disable rules with given names. If any rule name not found - throw Error. - * Errors can be disabled by second param. - * - * Returns list of found rule names (if no exception happened). - * - * See also [[Ruler.enable]], [[Ruler.enableOnly]]. - **/ -Ruler.prototype.disable = function (list, ignoreInvalid) { - if (!Array.isArray(list)) { list = [ list ]; } - - var result = []; - - // Search by name and disable - list.forEach(function (name) { - var idx = this.__find__(name); - - if (idx < 0) { - if (ignoreInvalid) { return; } - throw new Error('Rules manager: invalid rule name ' + name); - } - this.__rules__[idx].enabled = false; - result.push(name); - }, this); - - this.__cache__ = null; - return result; -}; - - -/** - * Ruler.getRules(chainName) -> Array - * - * Return array of active functions (rules) for given chain name. It analyzes - * rules configuration, compiles caches if not exists and returns result. - * - * Default chain name is `''` (empty string). It can't be skipped. That's - * done intentionally, to keep signature monomorphic for high speed. - **/ -Ruler.prototype.getRules = function (chainName) { - if (this.__cache__ === null) { - this.__compile__(); - } - - // Chain can be empty, if rules disabled. But we still have to return Array. - return this.__cache__[chainName] || []; -}; - -module.exports = Ruler; - - -/***/ }), - -/***/ 6888: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Block quotes - - - -var isSpace = __webpack_require__(506).isSpace; - - -module.exports = function blockquote(state, startLine, endLine, silent) { - var adjustTab, - ch, - i, - initial, - l, - lastLineEmpty, - lines, - nextLine, - offset, - oldBMarks, - oldBSCount, - oldIndent, - oldParentType, - oldSCount, - oldTShift, - spaceAfterMarker, - terminate, - terminatorRules, - token, - isOutdented, - oldLineMax = state.lineMax, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - - // check the block quote marker - if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; } - - // we know that it's going to be a valid blockquote, - // so no point trying to find the end of it in silent mode - if (silent) { return true; } - - // set offset past spaces and ">" - initial = offset = state.sCount[startLine] + 1; - - // skip one optional space after '>' - if (state.src.charCodeAt(pos) === 0x20 /* space */) { - // ' > test ' - // ^ -- position start of line here: - pos++; - initial++; - offset++; - adjustTab = false; - spaceAfterMarker = true; - } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) { - spaceAfterMarker = true; - - if ((state.bsCount[startLine] + offset) % 4 === 3) { - // ' >\t test ' - // ^ -- position start of line here (tab has width===1) - pos++; - initial++; - offset++; - adjustTab = false; - } else { - // ' >\t test ' - // ^ -- position start of line here + shift bsCount slightly - // to make extra space appear - adjustTab = true; - } - } else { - spaceAfterMarker = false; - } - - oldBMarks = [ state.bMarks[startLine] ]; - state.bMarks[startLine] = pos; - - while (pos < max) { - ch = state.src.charCodeAt(pos); - - if (isSpace(ch)) { - if (ch === 0x09) { - offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4; - } else { - offset++; - } - } else { - break; - } - - pos++; - } - - oldBSCount = [ state.bsCount[startLine] ]; - state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0); - - lastLineEmpty = pos >= max; - - oldSCount = [ state.sCount[startLine] ]; - state.sCount[startLine] = offset - initial; - - oldTShift = [ state.tShift[startLine] ]; - state.tShift[startLine] = pos - state.bMarks[startLine]; - - terminatorRules = state.md.block.ruler.getRules('blockquote'); - - oldParentType = state.parentType; - state.parentType = 'blockquote'; - - // Search the end of the block - // - // Block ends with either: - // 1. an empty line outside: - // ``` - // > test - // - // ``` - // 2. an empty line inside: - // ``` - // > - // test - // ``` - // 3. another tag: - // ``` - // > test - // - - - - // ``` - for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { - // check if it's outdented, i.e. it's inside list item and indented - // less than said list item: - // - // ``` - // 1. anything - // > current blockquote - // 2. checking this line - // ``` - isOutdented = state.sCount[nextLine] < state.blkIndent; - - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos >= max) { - // Case 1: line is not inside the blockquote, and this line is empty. - break; - } - - if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) { - // This line is inside the blockquote. - - // set offset past spaces and ">" - initial = offset = state.sCount[nextLine] + 1; - - // skip one optional space after '>' - if (state.src.charCodeAt(pos) === 0x20 /* space */) { - // ' > test ' - // ^ -- position start of line here: - pos++; - initial++; - offset++; - adjustTab = false; - spaceAfterMarker = true; - } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) { - spaceAfterMarker = true; - - if ((state.bsCount[nextLine] + offset) % 4 === 3) { - // ' >\t test ' - // ^ -- position start of line here (tab has width===1) - pos++; - initial++; - offset++; - adjustTab = false; - } else { - // ' >\t test ' - // ^ -- position start of line here + shift bsCount slightly - // to make extra space appear - adjustTab = true; - } - } else { - spaceAfterMarker = false; - } - - oldBMarks.push(state.bMarks[nextLine]); - state.bMarks[nextLine] = pos; - - while (pos < max) { - ch = state.src.charCodeAt(pos); - - if (isSpace(ch)) { - if (ch === 0x09) { - offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4; - } else { - offset++; - } - } else { - break; + /** + * Registers a primary event type interpreter. Note that the interpreter might be + * called with non-primary events if the event is being parsed as a fallback. + * @param {NamespacedValue} wireEventType The event type. + * @param {EventInterpreter} interpreter The interpreter. + */ + + }, { + key: "parse", + value: + /** + * Parses an event, trying the primary event type first. If the primary type is not known + * then the content will be inspected to find the most suitable fallback. + * + * If the parsing failed or was a completely unknown type, this will return falsy. + * @param {IPartialEvent} wireFormat The event to parse. + * @returns {Optional} The parsed extensible event. + */ + function parse(wireFormat) { + try { + if (this.interpreters.hasNamespaced(wireFormat.type)) { + return this.interpreters.getNamespaced(wireFormat.type)(wireFormat); } - pos++; - } + var _iterator = _createForOfIteratorHelper(this.unknownInterpretOrder), + _step; - lastLineEmpty = pos >= max; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var tryType = _step.value; - oldBSCount.push(state.bsCount[nextLine]); - state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0); - - oldSCount.push(state.sCount[nextLine]); - state.sCount[nextLine] = offset - initial; - - oldTShift.push(state.tShift[nextLine]); - state.tShift[nextLine] = pos - state.bMarks[nextLine]; - continue; - } - - // Case 2: line is not inside the blockquote, and the last line was empty. - if (lastLineEmpty) { break; } - - // Case 3: another tag found. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - - if (terminate) { - // Quirk to enforce "hard termination mode" for paragraphs; - // normally if you call `tokenize(state, startLine, nextLine)`, - // paragraphs will look below nextLine for paragraph continuation, - // but if blockquote is terminated by another tag, they shouldn't - state.lineMax = nextLine; - - if (state.blkIndent !== 0) { - // state.blkIndent was non-zero, we now set it to zero, - // so we need to re-calculate all offsets to appear as - // if indent wasn't changed - oldBMarks.push(state.bMarks[nextLine]); - oldBSCount.push(state.bsCount[nextLine]); - oldTShift.push(state.tShift[nextLine]); - oldSCount.push(state.sCount[nextLine]); - state.sCount[nextLine] -= state.blkIndent; - } - - break; - } - - oldBMarks.push(state.bMarks[nextLine]); - oldBSCount.push(state.bsCount[nextLine]); - oldTShift.push(state.tShift[nextLine]); - oldSCount.push(state.sCount[nextLine]); - - // A negative indentation means that this is a paragraph continuation - // - state.sCount[nextLine] = -1; - } - - oldIndent = state.blkIndent; - state.blkIndent = 0; - - token = state.push('blockquote_open', 'blockquote', 1); - token.markup = '>'; - token.map = lines = [ startLine, 0 ]; - - state.md.block.tokenize(state, startLine, nextLine); - - token = state.push('blockquote_close', 'blockquote', -1); - token.markup = '>'; - - state.lineMax = oldLineMax; - state.parentType = oldParentType; - lines[1] = state.line; - - // Restore original tShift; this might not be necessary since the parser - // has already been here, but just to make sure we can do that. - for (i = 0; i < oldTShift.length; i++) { - state.bMarks[i + startLine] = oldBMarks[i]; - state.tShift[i + startLine] = oldTShift[i]; - state.sCount[i + startLine] = oldSCount[i]; - state.bsCount[i + startLine] = oldBSCount[i]; - } - state.blkIndent = oldIndent; - - return true; -}; - - -/***/ }), - -/***/ 7693: -/***/ ((module) => { - -"use strict"; -// Code block (4 spaces padded) - - - - -module.exports = function code(state, startLine, endLine/*, silent*/) { - var nextLine, last, token; - - if (state.sCount[startLine] - state.blkIndent < 4) { return false; } - - last = nextLine = startLine + 1; - - while (nextLine < endLine) { - if (state.isEmpty(nextLine)) { - nextLine++; - continue; - } - - if (state.sCount[nextLine] - state.blkIndent >= 4) { - nextLine++; - last = nextLine; - continue; - } - break; - } - - state.line = last; - - token = state.push('code_block', 'code', 0); - token.content = state.getLines(startLine, last, 4 + state.blkIndent, true); - token.map = [ startLine, state.line ]; - - return true; -}; - - -/***/ }), - -/***/ 7749: -/***/ ((module) => { - -"use strict"; -// fences (``` lang, ~~~ lang) - - - - -module.exports = function fence(state, startLine, endLine, silent) { - var marker, len, params, nextLine, mem, token, markup, - haveEndMarker = false, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - - if (pos + 3 > max) { return false; } - - marker = state.src.charCodeAt(pos); - - if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) { - return false; - } - - // scan marker length - mem = pos; - pos = state.skipChars(pos, marker); - - len = pos - mem; - - if (len < 3) { return false; } - - markup = state.src.slice(mem, pos); - params = state.src.slice(pos, max); - - if (marker === 0x60 /* ` */) { - if (params.indexOf(String.fromCharCode(marker)) >= 0) { - return false; - } - } - - // Since start is found, we can report success here in validation mode - if (silent) { return true; } - - // search end of block - nextLine = startLine; - - for (;;) { - nextLine++; - if (nextLine >= endLine) { - // unclosed block should be autoclosed by end of document. - // also block seems to be autoclosed by end of parent - break; - } - - pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos < max && state.sCount[nextLine] < state.blkIndent) { - // non-empty line with negative indent should stop the list: - // - ``` - // test - break; - } - - if (state.src.charCodeAt(pos) !== marker) { continue; } - - if (state.sCount[nextLine] - state.blkIndent >= 4) { - // closing fence should be indented less than 4 spaces - continue; - } - - pos = state.skipChars(pos, marker); - - // closing code fence must be at least as long as the opening one - if (pos - mem < len) { continue; } - - // make sure tail has spaces only - pos = state.skipSpaces(pos); - - if (pos < max) { continue; } - - haveEndMarker = true; - // found! - break; - } - - // If a fence has heading spaces, they should be removed from its inner block - len = state.sCount[startLine]; - - state.line = nextLine + (haveEndMarker ? 1 : 0); - - token = state.push('fence', 'code', 0); - token.info = params; - token.content = state.getLines(startLine + 1, nextLine, len, true); - token.markup = markup; - token.map = [ startLine, state.line ]; - - return true; -}; - - -/***/ }), - -/***/ 2702: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// heading (#, ##, ...) - - - -var isSpace = __webpack_require__(506).isSpace; - - -module.exports = function heading(state, startLine, endLine, silent) { - var ch, level, tmp, token, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - - ch = state.src.charCodeAt(pos); - - if (ch !== 0x23/* # */ || pos >= max) { return false; } - - // count heading level - level = 1; - ch = state.src.charCodeAt(++pos); - while (ch === 0x23/* # */ && pos < max && level <= 6) { - level++; - ch = state.src.charCodeAt(++pos); - } - - if (level > 6 || (pos < max && !isSpace(ch))) { return false; } - - if (silent) { return true; } - - // Let's cut tails like ' ### ' from the end of string - - max = state.skipSpacesBack(max, pos); - tmp = state.skipCharsBack(max, 0x23, pos); // # - if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) { - max = tmp; - } - - state.line = startLine + 1; - - token = state.push('heading_open', 'h' + String(level), 1); - token.markup = '########'.slice(0, level); - token.map = [ startLine, state.line ]; - - token = state.push('inline', '', 0); - token.content = state.src.slice(pos, max).trim(); - token.map = [ startLine, state.line ]; - token.children = []; - - token = state.push('heading_close', 'h' + String(level), -1); - token.markup = '########'.slice(0, level); - - return true; -}; - - -/***/ }), - -/***/ 3514: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Horizontal rule - - - -var isSpace = __webpack_require__(506).isSpace; - - -module.exports = function hr(state, startLine, endLine, silent) { - var marker, cnt, ch, token, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - - marker = state.src.charCodeAt(pos++); - - // Check hr marker - if (marker !== 0x2A/* * */ && - marker !== 0x2D/* - */ && - marker !== 0x5F/* _ */) { - return false; - } - - // markers can be mixed with spaces, but there should be at least 3 of them - - cnt = 1; - while (pos < max) { - ch = state.src.charCodeAt(pos++); - if (ch !== marker && !isSpace(ch)) { return false; } - if (ch === marker) { cnt++; } - } - - if (cnt < 3) { return false; } - - if (silent) { return true; } - - state.line = startLine + 1; - - token = state.push('hr', 'hr', 0); - token.map = [ startLine, state.line ]; - token.markup = Array(cnt + 1).join(String.fromCharCode(marker)); - - return true; -}; - - -/***/ }), - -/***/ 5732: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// HTML block - - - - -var block_names = __webpack_require__(9035); -var HTML_OPEN_CLOSE_TAG_RE = __webpack_require__(6537)/* .HTML_OPEN_CLOSE_TAG_RE */ .q; - -// An array of opening and corresponding closing sequences for html tags, -// last argument defines whether it can terminate a paragraph or not -// -var HTML_SEQUENCES = [ - [ /^<(script|pre|style)(?=(\s|>|$))/i, /<\/(script|pre|style)>/i, true ], - [ /^/, true ], - [ /^<\?/, /\?>/, true ], - [ /^/, true ], - [ /^/, true ], - [ new RegExp('^|$))', 'i'), /^$/, true ], - [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\s*$'), /^$/, false ] -]; - - -module.exports = function html_block(state, startLine, endLine, silent) { - var i, nextLine, token, lineText, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine]; - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - - if (!state.md.options.html) { return false; } - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } - - lineText = state.src.slice(pos, max); - - for (i = 0; i < HTML_SEQUENCES.length; i++) { - if (HTML_SEQUENCES[i][0].test(lineText)) { break; } - } - - if (i === HTML_SEQUENCES.length) { return false; } - - if (silent) { - // true if this sequence can be a terminator, false otherwise - return HTML_SEQUENCES[i][2]; - } - - nextLine = startLine + 1; - - // If we are here - we detected HTML block. - // Let's roll down till block end. - if (!HTML_SEQUENCES[i][1].test(lineText)) { - for (; nextLine < endLine; nextLine++) { - if (state.sCount[nextLine] < state.blkIndent) { break; } - - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - lineText = state.src.slice(pos, max); - - if (HTML_SEQUENCES[i][1].test(lineText)) { - if (lineText.length !== 0) { nextLine++; } - break; - } - } - } - - state.line = nextLine; - - token = state.push('html_block', '', 0); - token.map = [ startLine, nextLine ]; - token.content = state.getLines(startLine, nextLine, state.blkIndent, true); - - return true; -}; - - -/***/ }), - -/***/ 3551: -/***/ ((module) => { - -"use strict"; -// lheading (---, ===) - - - - -module.exports = function lheading(state, startLine, endLine/*, silent*/) { - var content, terminate, i, l, token, pos, max, level, marker, - nextLine = startLine + 1, oldParentType, - terminatorRules = state.md.block.ruler.getRules('paragraph'); - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - - oldParentType = state.parentType; - state.parentType = 'paragraph'; // use paragraph to match terminatorRules - - // jump line-by-line until empty one or EOF - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - // this would be a code block normally, but after paragraph - // it's considered a lazy continuation regardless of what's there - if (state.sCount[nextLine] - state.blkIndent > 3) { continue; } - - // - // Check for underline in setext header - // - if (state.sCount[nextLine] >= state.blkIndent) { - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - max = state.eMarks[nextLine]; - - if (pos < max) { - marker = state.src.charCodeAt(pos); - - if (marker === 0x2D/* - */ || marker === 0x3D/* = */) { - pos = state.skipChars(pos, marker); - pos = state.skipSpaces(pos); - - if (pos >= max) { - level = (marker === 0x3D/* = */ ? 1 : 2); - break; - } - } - } - } - - // quirk for blockquotes, this line should already be checked by that rule - if (state.sCount[nextLine] < 0) { continue; } - - // Some tags can terminate paragraph without empty line. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - } - - if (!level) { - // Didn't find valid underline - return false; - } - - content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - - state.line = nextLine + 1; - - token = state.push('heading_open', 'h' + String(level), 1); - token.markup = String.fromCharCode(marker); - token.map = [ startLine, state.line ]; - - token = state.push('inline', '', 0); - token.content = content; - token.map = [ startLine, state.line - 1 ]; - token.children = []; - - token = state.push('heading_close', 'h' + String(level), -1); - token.markup = String.fromCharCode(marker); - - state.parentType = oldParentType; - - return true; -}; - - -/***/ }), - -/***/ 2050: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Lists - - - -var isSpace = __webpack_require__(506).isSpace; - - -// Search `[-+*][\n ]`, returns next pos after marker on success -// or -1 on fail. -function skipBulletListMarker(state, startLine) { - var marker, pos, max, ch; - - pos = state.bMarks[startLine] + state.tShift[startLine]; - max = state.eMarks[startLine]; - - marker = state.src.charCodeAt(pos++); - // Check bullet - if (marker !== 0x2A/* * */ && - marker !== 0x2D/* - */ && - marker !== 0x2B/* + */) { - return -1; - } - - if (pos < max) { - ch = state.src.charCodeAt(pos); - - if (!isSpace(ch)) { - // " -test " - is not a list item - return -1; - } - } - - return pos; -} - -// Search `\d+[.)][\n ]`, returns next pos after marker on success -// or -1 on fail. -function skipOrderedListMarker(state, startLine) { - var ch, - start = state.bMarks[startLine] + state.tShift[startLine], - pos = start, - max = state.eMarks[startLine]; - - // List marker should have at least 2 chars (digit + dot) - if (pos + 1 >= max) { return -1; } - - ch = state.src.charCodeAt(pos++); - - if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; } - - for (;;) { - // EOL -> fail - if (pos >= max) { return -1; } - - ch = state.src.charCodeAt(pos++); - - if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) { - - // List marker should have no more than 9 digits - // (prevents integer overflow in browsers) - if (pos - start >= 10) { return -1; } - - continue; - } - - // found valid marker - if (ch === 0x29/* ) */ || ch === 0x2e/* . */) { - break; - } - - return -1; - } - - - if (pos < max) { - ch = state.src.charCodeAt(pos); - - if (!isSpace(ch)) { - // " 1.test " - is not a list item - return -1; - } - } - return pos; -} - -function markTightParagraphs(state, idx) { - var i, l, - level = state.level + 2; - - for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) { - if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') { - state.tokens[i + 2].hidden = true; - state.tokens[i].hidden = true; - i += 2; - } - } -} - - -module.exports = function list(state, startLine, endLine, silent) { - var ch, - contentStart, - i, - indent, - indentAfterMarker, - initial, - isOrdered, - itemLines, - l, - listLines, - listTokIdx, - markerCharCode, - markerValue, - max, - nextLine, - offset, - oldListIndent, - oldParentType, - oldSCount, - oldTShift, - oldTight, - pos, - posAfterMarker, - prevEmptyEnd, - start, - terminate, - terminatorRules, - token, - isTerminatingParagraph = false, - tight = true; - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - - // Special case: - // - item 1 - // - item 2 - // - item 3 - // - item 4 - // - this one is a paragraph continuation - if (state.listIndent >= 0 && - state.sCount[startLine] - state.listIndent >= 4 && - state.sCount[startLine] < state.blkIndent) { - return false; - } - - // limit conditions when list can interrupt - // a paragraph (validation mode only) - if (silent && state.parentType === 'paragraph') { - // Next list item should still terminate previous list item; - // - // This code can fail if plugins use blkIndent as well as lists, - // but I hope the spec gets fixed long before that happens. - // - if (state.tShift[startLine] >= state.blkIndent) { - isTerminatingParagraph = true; - } - } - - // Detect list type and position after marker - if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) { - isOrdered = true; - start = state.bMarks[startLine] + state.tShift[startLine]; - markerValue = Number(state.src.substr(start, posAfterMarker - start - 1)); - - // If we're starting a new ordered list right after - // a paragraph, it should start with 1. - if (isTerminatingParagraph && markerValue !== 1) return false; - - } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) { - isOrdered = false; - - } else { - return false; - } - - // If we're starting a new unordered list right after - // a paragraph, first line should not be empty. - if (isTerminatingParagraph) { - if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) return false; - } - - // We should terminate list on style change. Remember first one to compare. - markerCharCode = state.src.charCodeAt(posAfterMarker - 1); - - // For validation mode we can terminate immediately - if (silent) { return true; } - - // Start list - listTokIdx = state.tokens.length; - - if (isOrdered) { - token = state.push('ordered_list_open', 'ol', 1); - if (markerValue !== 1) { - token.attrs = [ [ 'start', markerValue ] ]; - } - - } else { - token = state.push('bullet_list_open', 'ul', 1); - } - - token.map = listLines = [ startLine, 0 ]; - token.markup = String.fromCharCode(markerCharCode); - - // - // Iterate list items - // - - nextLine = startLine; - prevEmptyEnd = false; - terminatorRules = state.md.block.ruler.getRules('list'); - - oldParentType = state.parentType; - state.parentType = 'list'; - - while (nextLine < endLine) { - pos = posAfterMarker; - max = state.eMarks[nextLine]; - - initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]); - - while (pos < max) { - ch = state.src.charCodeAt(pos); - - if (ch === 0x09) { - offset += 4 - (offset + state.bsCount[nextLine]) % 4; - } else if (ch === 0x20) { - offset++; - } else { - break; - } - - pos++; - } - - contentStart = pos; - - if (contentStart >= max) { - // trimming space in "- \n 3" case, indent is 1 here - indentAfterMarker = 1; - } else { - indentAfterMarker = offset - initial; - } - - // If we have more than 4 spaces, the indent is 1 - // (the rest is just indented code block) - if (indentAfterMarker > 4) { indentAfterMarker = 1; } - - // " - test" - // ^^^^^ - calculating total length of this thing - indent = initial + indentAfterMarker; - - // Run subparser & write tokens - token = state.push('list_item_open', 'li', 1); - token.markup = String.fromCharCode(markerCharCode); - token.map = itemLines = [ startLine, 0 ]; - - // change current state, then restore it after parser subcall - oldTight = state.tight; - oldTShift = state.tShift[startLine]; - oldSCount = state.sCount[startLine]; - - // - example list - // ^ listIndent position will be here - // ^ blkIndent position will be here - // - oldListIndent = state.listIndent; - state.listIndent = state.blkIndent; - state.blkIndent = indent; - - state.tight = true; - state.tShift[startLine] = contentStart - state.bMarks[startLine]; - state.sCount[startLine] = offset; - - if (contentStart >= max && state.isEmpty(startLine + 1)) { - // workaround for this case - // (list item is empty, list terminates before "foo"): - // ~~~~~~~~ - // - - // - // foo - // ~~~~~~~~ - state.line = Math.min(state.line + 2, endLine); - } else { - state.md.block.tokenize(state, startLine, endLine, true); - } - - // If any of list item is tight, mark list as tight - if (!state.tight || prevEmptyEnd) { - tight = false; - } - // Item become loose if finish with empty line, - // but we should filter last element, because it means list finish - prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1); - - state.blkIndent = state.listIndent; - state.listIndent = oldListIndent; - state.tShift[startLine] = oldTShift; - state.sCount[startLine] = oldSCount; - state.tight = oldTight; - - token = state.push('list_item_close', 'li', -1); - token.markup = String.fromCharCode(markerCharCode); - - nextLine = startLine = state.line; - itemLines[1] = nextLine; - contentStart = state.bMarks[startLine]; - - if (nextLine >= endLine) { break; } - - // - // Try to check if list is terminated or continued. - // - if (state.sCount[nextLine] < state.blkIndent) { break; } - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { break; } - - // fail if terminating block found - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - - // fail if list has another type - if (isOrdered) { - posAfterMarker = skipOrderedListMarker(state, nextLine); - if (posAfterMarker < 0) { break; } - } else { - posAfterMarker = skipBulletListMarker(state, nextLine); - if (posAfterMarker < 0) { break; } - } - - if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; } - } - - // Finalize list - if (isOrdered) { - token = state.push('ordered_list_close', 'ol', -1); - } else { - token = state.push('bullet_list_close', 'ul', -1); - } - token.markup = String.fromCharCode(markerCharCode); - - listLines[1] = nextLine; - state.line = nextLine; - - state.parentType = oldParentType; - - // mark paragraphs tight if needed - if (tight) { - markTightParagraphs(state, listTokIdx); - } - - return true; -}; - - -/***/ }), - -/***/ 9450: -/***/ ((module) => { - -"use strict"; -// Paragraph - - - - -module.exports = function paragraph(state, startLine/*, endLine*/) { - var content, terminate, i, l, token, oldParentType, - nextLine = startLine + 1, - terminatorRules = state.md.block.ruler.getRules('paragraph'), - endLine = state.lineMax; - - oldParentType = state.parentType; - state.parentType = 'paragraph'; - - // jump line-by-line until empty one or EOF - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - // this would be a code block normally, but after paragraph - // it's considered a lazy continuation regardless of what's there - if (state.sCount[nextLine] - state.blkIndent > 3) { continue; } - - // quirk for blockquotes, this line should already be checked by that rule - if (state.sCount[nextLine] < 0) { continue; } - - // Some tags can terminate paragraph without empty line. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - } - - content = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - - state.line = nextLine; - - token = state.push('paragraph_open', 'p', 1); - token.map = [ startLine, state.line ]; - - token = state.push('inline', '', 0); - token.content = content; - token.map = [ startLine, state.line ]; - token.children = []; - - token = state.push('paragraph_close', 'p', -1); - - state.parentType = oldParentType; - - return true; -}; - - -/***/ }), - -/***/ 2235: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - - -var normalizeReference = __webpack_require__(506).normalizeReference; -var isSpace = __webpack_require__(506).isSpace; - - -module.exports = function reference(state, startLine, _endLine, silent) { - var ch, - destEndPos, - destEndLineNo, - endLine, - href, - i, - l, - label, - labelEnd, - oldParentType, - res, - start, - str, - terminate, - terminatorRules, - title, - lines = 0, - pos = state.bMarks[startLine] + state.tShift[startLine], - max = state.eMarks[startLine], - nextLine = startLine + 1; - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - - if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false; } - - // Simple check to quickly interrupt scan on [link](url) at the start of line. - // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54 - while (++pos < max) { - if (state.src.charCodeAt(pos) === 0x5D /* ] */ && - state.src.charCodeAt(pos - 1) !== 0x5C/* \ */) { - if (pos + 1 === max) { return false; } - if (state.src.charCodeAt(pos + 1) !== 0x3A/* : */) { return false; } - break; - } - } - - endLine = state.lineMax; - - // jump line-by-line until empty one or EOF - terminatorRules = state.md.block.ruler.getRules('reference'); - - oldParentType = state.parentType; - state.parentType = 'reference'; - - for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) { - // this would be a code block normally, but after paragraph - // it's considered a lazy continuation regardless of what's there - if (state.sCount[nextLine] - state.blkIndent > 3) { continue; } - - // quirk for blockquotes, this line should already be checked by that rule - if (state.sCount[nextLine] < 0) { continue; } - - // Some tags can terminate paragraph without empty line. - terminate = false; - for (i = 0, l = terminatorRules.length; i < l; i++) { - if (terminatorRules[i](state, nextLine, endLine, true)) { - terminate = true; - break; - } - } - if (terminate) { break; } - } - - str = state.getLines(startLine, nextLine, state.blkIndent, false).trim(); - max = str.length; - - for (pos = 1; pos < max; pos++) { - ch = str.charCodeAt(pos); - if (ch === 0x5B /* [ */) { - return false; - } else if (ch === 0x5D /* ] */) { - labelEnd = pos; - break; - } else if (ch === 0x0A /* \n */) { - lines++; - } else if (ch === 0x5C /* \ */) { - pos++; - if (pos < max && str.charCodeAt(pos) === 0x0A) { - lines++; - } - } - } - - if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false; } - - // [label]: destination 'title' - // ^^^ skip optional whitespace here - for (pos = labelEnd + 2; pos < max; pos++) { - ch = str.charCodeAt(pos); - if (ch === 0x0A) { - lines++; - } else if (isSpace(ch)) { - /*eslint no-empty:0*/ - } else { - break; - } - } - - // [label]: destination 'title' - // ^^^^^^^^^^^ parse this - res = state.md.helpers.parseLinkDestination(str, pos, max); - if (!res.ok) { return false; } - - href = state.md.normalizeLink(res.str); - if (!state.md.validateLink(href)) { return false; } - - pos = res.pos; - lines += res.lines; - - // save cursor state, we could require to rollback later - destEndPos = pos; - destEndLineNo = lines; - - // [label]: destination 'title' - // ^^^ skipping those spaces - start = pos; - for (; pos < max; pos++) { - ch = str.charCodeAt(pos); - if (ch === 0x0A) { - lines++; - } else if (isSpace(ch)) { - /*eslint no-empty:0*/ - } else { - break; - } - } - - // [label]: destination 'title' - // ^^^^^^^ parse this - res = state.md.helpers.parseLinkTitle(str, pos, max); - if (pos < max && start !== pos && res.ok) { - title = res.str; - pos = res.pos; - lines += res.lines; - } else { - title = ''; - pos = destEndPos; - lines = destEndLineNo; - } - - // skip trailing spaces until the rest of the line - while (pos < max) { - ch = str.charCodeAt(pos); - if (!isSpace(ch)) { break; } - pos++; - } - - if (pos < max && str.charCodeAt(pos) !== 0x0A) { - if (title) { - // garbage at the end of the line after title, - // but it could still be a valid reference if we roll back - title = ''; - pos = destEndPos; - lines = destEndLineNo; - while (pos < max) { - ch = str.charCodeAt(pos); - if (!isSpace(ch)) { break; } - pos++; - } - } - } - - if (pos < max && str.charCodeAt(pos) !== 0x0A) { - // garbage at the end of the line - return false; - } - - label = normalizeReference(str.slice(1, labelEnd)); - if (!label) { - // CommonMark 0.20 disallows empty labels - return false; - } - - // Reference can not terminate anything. This check is for safety only. - /*istanbul ignore if*/ - if (silent) { return true; } - - if (typeof state.env.references === 'undefined') { - state.env.references = {}; - } - if (typeof state.env.references[label] === 'undefined') { - state.env.references[label] = { title: title, href: href }; - } - - state.parentType = oldParentType; - - state.line = startLine + lines + 1; - return true; -}; - - -/***/ }), - -/***/ 9497: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Parser state class - - - -var Token = __webpack_require__(8622); -var isSpace = __webpack_require__(506).isSpace; - - -function StateBlock(src, md, env, tokens) { - var ch, s, start, pos, len, indent, offset, indent_found; - - this.src = src; - - // link to parser instance - this.md = md; - - this.env = env; - - // - // Internal state vartiables - // - - this.tokens = tokens; - - this.bMarks = []; // line begin offsets for fast jumps - this.eMarks = []; // line end offsets for fast jumps - this.tShift = []; // offsets of the first non-space characters (tabs not expanded) - this.sCount = []; // indents for each line (tabs expanded) - - // An amount of virtual spaces (tabs expanded) between beginning - // of each line (bMarks) and real beginning of that line. - // - // It exists only as a hack because blockquotes override bMarks - // losing information in the process. - // - // It's used only when expanding tabs, you can think about it as - // an initial tab length, e.g. bsCount=21 applied to string `\t123` - // means first tab should be expanded to 4-21%4 === 3 spaces. - // - this.bsCount = []; - - // block parser variables - this.blkIndent = 0; // required block content indent (for example, if we are - // inside a list, it would be positioned after list marker) - this.line = 0; // line index in src - this.lineMax = 0; // lines count - this.tight = false; // loose/tight mode for lists - this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any) - this.listIndent = -1; // indent of the current list block (-1 if there isn't any) - - // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference' - // used in lists to determine if they interrupt a paragraph - this.parentType = 'root'; - - this.level = 0; - - // renderer - this.result = ''; - - // Create caches - // Generate markers. - s = this.src; - indent_found = false; - - for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) { - ch = s.charCodeAt(pos); - - if (!indent_found) { - if (isSpace(ch)) { - indent++; - - if (ch === 0x09) { - offset += 4 - offset % 4; - } else { - offset++; - } - continue; - } else { - indent_found = true; - } - } - - if (ch === 0x0A || pos === len - 1) { - if (ch !== 0x0A) { pos++; } - this.bMarks.push(start); - this.eMarks.push(pos); - this.tShift.push(indent); - this.sCount.push(offset); - this.bsCount.push(0); - - indent_found = false; - indent = 0; - offset = 0; - start = pos + 1; - } - } - - // Push fake entry to simplify cache bounds checks - this.bMarks.push(s.length); - this.eMarks.push(s.length); - this.tShift.push(0); - this.sCount.push(0); - this.bsCount.push(0); - - this.lineMax = this.bMarks.length - 1; // don't count last fake line -} - -// Push new token to "stream". -// -StateBlock.prototype.push = function (type, tag, nesting) { - var token = new Token(type, tag, nesting); - token.block = true; - - if (nesting < 0) this.level--; // closing tag - token.level = this.level; - if (nesting > 0) this.level++; // opening tag - - this.tokens.push(token); - return token; -}; - -StateBlock.prototype.isEmpty = function isEmpty(line) { - return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]; -}; - -StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) { - for (var max = this.lineMax; from < max; from++) { - if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) { - break; - } - } - return from; -}; - -// Skip spaces from given position. -StateBlock.prototype.skipSpaces = function skipSpaces(pos) { - var ch; - - for (var max = this.src.length; pos < max; pos++) { - ch = this.src.charCodeAt(pos); - if (!isSpace(ch)) { break; } - } - return pos; -}; - -// Skip spaces from given position in reverse. -StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) { - if (pos <= min) { return pos; } - - while (pos > min) { - if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1; } - } - return pos; -}; - -// Skip char codes from given position -StateBlock.prototype.skipChars = function skipChars(pos, code) { - for (var max = this.src.length; pos < max; pos++) { - if (this.src.charCodeAt(pos) !== code) { break; } - } - return pos; -}; - -// Skip char codes reverse from given position - 1 -StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) { - if (pos <= min) { return pos; } - - while (pos > min) { - if (code !== this.src.charCodeAt(--pos)) { return pos + 1; } - } - return pos; -}; - -// cut lines range from source. -StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) { - var i, lineIndent, ch, first, last, queue, lineStart, - line = begin; - - if (begin >= end) { - return ''; - } - - queue = new Array(end - begin); - - for (i = 0; line < end; line++, i++) { - lineIndent = 0; - lineStart = first = this.bMarks[line]; - - if (line + 1 < end || keepLastLF) { - // No need for bounds check because we have fake entry on tail. - last = this.eMarks[line] + 1; - } else { - last = this.eMarks[line]; - } - - while (first < last && lineIndent < indent) { - ch = this.src.charCodeAt(first); - - if (isSpace(ch)) { - if (ch === 0x09) { - lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4; - } else { - lineIndent++; - } - } else if (first - lineStart < this.tShift[line]) { - // patched tShift masked characters to look like spaces (blockquotes, list markers) - lineIndent++; - } else { - break; - } - - first++; - } - - if (lineIndent > indent) { - // partially expanding tabs in code blocks, e.g '\t\tfoobar' - // with indent=2 becomes ' \tfoobar' - queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last); - } else { - queue[i] = this.src.slice(first, last); - } - } - - return queue.join(''); -}; - -// re-export Token class to use in block rules -StateBlock.prototype.Token = Token; - - -module.exports = StateBlock; - - -/***/ }), - -/***/ 7722: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// GFM table, non-standard - - - -var isSpace = __webpack_require__(506).isSpace; - - -function getLine(state, line) { - var pos = state.bMarks[line] + state.blkIndent, - max = state.eMarks[line]; - - return state.src.substr(pos, max - pos); -} - -function escapedSplit(str) { - var result = [], - pos = 0, - max = str.length, - ch, - escapes = 0, - lastPos = 0, - backTicked = false, - lastBackTick = 0; - - ch = str.charCodeAt(pos); - - while (pos < max) { - if (ch === 0x60/* ` */) { - if (backTicked) { - // make \` close code sequence, but not open it; - // the reason is: `\` is correct code block - backTicked = false; - lastBackTick = pos; - } else if (escapes % 2 === 0) { - backTicked = true; - lastBackTick = pos; - } - } else if (ch === 0x7c/* | */ && (escapes % 2 === 0) && !backTicked) { - result.push(str.substring(lastPos, pos)); - lastPos = pos + 1; - } - - if (ch === 0x5c/* \ */) { - escapes++; - } else { - escapes = 0; - } - - pos++; - - // If there was an un-closed backtick, go back to just after - // the last backtick, but as if it was a normal character - if (pos === max && backTicked) { - backTicked = false; - pos = lastBackTick + 1; - } - - ch = str.charCodeAt(pos); - } - - result.push(str.substring(lastPos)); - - return result; -} - - -module.exports = function table(state, startLine, endLine, silent) { - var ch, lineText, pos, i, nextLine, columns, columnCount, token, - aligns, t, tableLines, tbodyLines; - - // should have at least two lines - if (startLine + 2 > endLine) { return false; } - - nextLine = startLine + 1; - - if (state.sCount[nextLine] < state.blkIndent) { return false; } - - // if it's indented more than 3 spaces, it should be a code block - if (state.sCount[nextLine] - state.blkIndent >= 4) { return false; } - - // first character of the second line should be '|', '-', ':', - // and no other characters are allowed but spaces; - // basically, this is the equivalent of /^[-:|][-:|\s]*$/ regexp - - pos = state.bMarks[nextLine] + state.tShift[nextLine]; - if (pos >= state.eMarks[nextLine]) { return false; } - - ch = state.src.charCodeAt(pos++); - if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; } - - while (pos < state.eMarks[nextLine]) { - ch = state.src.charCodeAt(pos); - - if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false; } - - pos++; - } - - lineText = getLine(state, startLine + 1); - - columns = lineText.split('|'); - aligns = []; - for (i = 0; i < columns.length; i++) { - t = columns[i].trim(); - if (!t) { - // allow empty columns before and after table, but not in between columns; - // e.g. allow ` |---| `, disallow ` ---||--- ` - if (i === 0 || i === columns.length - 1) { - continue; - } else { - return false; - } - } - - if (!/^:?-+:?$/.test(t)) { return false; } - if (t.charCodeAt(t.length - 1) === 0x3A/* : */) { - aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right'); - } else if (t.charCodeAt(0) === 0x3A/* : */) { - aligns.push('left'); - } else { - aligns.push(''); - } - } - - lineText = getLine(state, startLine).trim(); - if (lineText.indexOf('|') === -1) { return false; } - if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } - columns = escapedSplit(lineText.replace(/^\||\|$/g, '')); - - // header row will define an amount of columns in the entire table, - // and align row shouldn't be smaller than that (the rest of the rows can) - columnCount = columns.length; - if (columnCount > aligns.length) { return false; } - - if (silent) { return true; } - - token = state.push('table_open', 'table', 1); - token.map = tableLines = [ startLine, 0 ]; - - token = state.push('thead_open', 'thead', 1); - token.map = [ startLine, startLine + 1 ]; - - token = state.push('tr_open', 'tr', 1); - token.map = [ startLine, startLine + 1 ]; - - for (i = 0; i < columns.length; i++) { - token = state.push('th_open', 'th', 1); - token.map = [ startLine, startLine + 1 ]; - if (aligns[i]) { - token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ]; - } - - token = state.push('inline', '', 0); - token.content = columns[i].trim(); - token.map = [ startLine, startLine + 1 ]; - token.children = []; - - token = state.push('th_close', 'th', -1); - } - - token = state.push('tr_close', 'tr', -1); - token = state.push('thead_close', 'thead', -1); - - token = state.push('tbody_open', 'tbody', 1); - token.map = tbodyLines = [ startLine + 2, 0 ]; - - for (nextLine = startLine + 2; nextLine < endLine; nextLine++) { - if (state.sCount[nextLine] < state.blkIndent) { break; } - - lineText = getLine(state, nextLine).trim(); - if (lineText.indexOf('|') === -1) { break; } - if (state.sCount[nextLine] - state.blkIndent >= 4) { break; } - columns = escapedSplit(lineText.replace(/^\||\|$/g, '')); - - token = state.push('tr_open', 'tr', 1); - for (i = 0; i < columnCount; i++) { - token = state.push('td_open', 'td', 1); - token.map = [ nextLine, nextLine + 1 ]; - if (aligns[i]) { - token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ]; - } - - token = state.push('inline', '', 0); - token.map = [ nextLine, nextLine + 1 ]; - token.content = columns[i] ? columns[i].trim() : ''; - token.children = []; - - token = state.push('td_close', 'td', -1); - } - token = state.push('tr_close', 'tr', -1); - } - token = state.push('tbody_close', 'tbody', -1); - token = state.push('table_close', 'table', -1); - - tableLines[1] = tbodyLines[1] = nextLine; - state.line = nextLine; - return true; -}; - - -/***/ }), - -/***/ 31: -/***/ ((module) => { - -"use strict"; - - - -module.exports = function block(state) { - var token; - - if (state.inlineMode) { - token = new state.Token('inline', '', 0); - token.content = state.src; - token.map = [ 0, 1 ]; - token.children = []; - state.tokens.push(token); - } else { - state.md.block.parse(state.src, state.md, state.env, state.tokens); - } -}; - - -/***/ }), - -/***/ 1951: -/***/ ((module) => { - -"use strict"; - - -module.exports = function inline(state) { - var tokens = state.tokens, tok, i, l; - - // Parse inlines - for (i = 0, l = tokens.length; i < l; i++) { - tok = tokens[i]; - if (tok.type === 'inline') { - state.md.inline.parse(tok.content, state.md, state.env, tok.children); - } - } -}; - - -/***/ }), - -/***/ 5462: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Replace link-like texts with link nodes. -// -// Currently restricted by `md.validateLink()` to http/https/ftp -// - - - -var arrayReplaceAt = __webpack_require__(506).arrayReplaceAt; - - -function isLinkOpen(str) { - return /^\s]/i.test(str); -} -function isLinkClose(str) { - return /^<\/a\s*>/i.test(str); -} - - -module.exports = function linkify(state) { - var i, j, l, tokens, token, currentToken, nodes, ln, text, pos, lastPos, - level, htmlLinkLevel, url, fullUrl, urlText, - blockTokens = state.tokens, - links; - - if (!state.md.options.linkify) { return; } - - for (j = 0, l = blockTokens.length; j < l; j++) { - if (blockTokens[j].type !== 'inline' || - !state.md.linkify.pretest(blockTokens[j].content)) { - continue; - } - - tokens = blockTokens[j].children; - - htmlLinkLevel = 0; - - // We scan from the end, to keep position when new tags added. - // Use reversed logic in links start/end match - for (i = tokens.length - 1; i >= 0; i--) { - currentToken = tokens[i]; - - // Skip content of markdown links - if (currentToken.type === 'link_close') { - i--; - while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') { - i--; - } - continue; - } - - // Skip content of html tag links - if (currentToken.type === 'html_inline') { - if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) { - htmlLinkLevel--; - } - if (isLinkClose(currentToken.content)) { - htmlLinkLevel++; - } - } - if (htmlLinkLevel > 0) { continue; } - - if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) { - - text = currentToken.content; - links = state.md.linkify.match(text); - - // Now split string to nodes - nodes = []; - level = currentToken.level; - lastPos = 0; - - for (ln = 0; ln < links.length; ln++) { - - url = links[ln].url; - fullUrl = state.md.normalizeLink(url); - if (!state.md.validateLink(fullUrl)) { continue; } - - urlText = links[ln].text; - - // Linkifier might send raw hostnames like "example.com", where url - // starts with domain name. So we prepend http:// in those cases, - // and remove it afterwards. - // - if (!links[ln].schema) { - urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\/\//, ''); - } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) { - urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, ''); - } else { - urlText = state.md.normalizeLinkText(urlText); - } - - pos = links[ln].index; - - if (pos > lastPos) { - token = new state.Token('text', '', 0); - token.content = text.slice(lastPos, pos); - token.level = level; - nodes.push(token); - } - - token = new state.Token('link_open', 'a', 1); - token.attrs = [ [ 'href', fullUrl ] ]; - token.level = level++; - token.markup = 'linkify'; - token.info = 'auto'; - nodes.push(token); - - token = new state.Token('text', '', 0); - token.content = urlText; - token.level = level; - nodes.push(token); - - token = new state.Token('link_close', 'a', -1); - token.level = --level; - token.markup = 'linkify'; - token.info = 'auto'; - nodes.push(token); - - lastPos = links[ln].lastIndex; - } - if (lastPos < text.length) { - token = new state.Token('text', '', 0); - token.content = text.slice(lastPos); - token.level = level; - nodes.push(token); - } - - // replace current node - blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes); - } - } - } -}; - - -/***/ }), - -/***/ 2764: -/***/ ((module) => { - -"use strict"; -// Normalize input string - - - - -// https://spec.commonmark.org/0.29/#line-ending -var NEWLINES_RE = /\r\n?|\n/g; -var NULL_RE = /\0/g; - - -module.exports = function normalize(state) { - var str; - - // Normalize newlines - str = state.src.replace(NEWLINES_RE, '\n'); - - // Replace NULL characters - str = str.replace(NULL_RE, '\uFFFD'); - - state.src = str; -}; - - -/***/ }), - -/***/ 8373: -/***/ ((module) => { - -"use strict"; -// Simple typographic replacements -// -// (c) (C) → © -// (tm) (TM) → ™ -// (r) (R) → ® -// +- → ± -// (p) (P) -> § -// ... → … (also ?.... → ?.., !.... → !..) -// ???????? → ???, !!!!! → !!!, `,,` → `,` -// -- → –, --- → — -// - - -// TODO: -// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾ -// - miltiplication 2 x 4 -> 2 × 4 - -var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/; - -// Workaround for phantomjs - need regex without /g flag, -// or root check will fail every second time -var SCOPED_ABBR_TEST_RE = /\((c|tm|r|p)\)/i; - -var SCOPED_ABBR_RE = /\((c|tm|r|p)\)/ig; -var SCOPED_ABBR = { - c: '©', - r: '®', - p: '§', - tm: '™' -}; - -function replaceFn(match, name) { - return SCOPED_ABBR[name.toLowerCase()]; -} - -function replace_scoped(inlineTokens) { - var i, token, inside_autolink = 0; - - for (i = inlineTokens.length - 1; i >= 0; i--) { - token = inlineTokens[i]; - - if (token.type === 'text' && !inside_autolink) { - token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn); - } - - if (token.type === 'link_open' && token.info === 'auto') { - inside_autolink--; - } - - if (token.type === 'link_close' && token.info === 'auto') { - inside_autolink++; - } - } -} - -function replace_rare(inlineTokens) { - var i, token, inside_autolink = 0; - - for (i = inlineTokens.length - 1; i >= 0; i--) { - token = inlineTokens[i]; - - if (token.type === 'text' && !inside_autolink) { - if (RARE_RE.test(token.content)) { - token.content = token.content - .replace(/\+-/g, '±') - // .., ..., ....... -> … - // but ?..... & !..... -> ?.. & !.. - .replace(/\.{2,}/g, '…').replace(/([?!])…/g, '$1..') - .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') - // em-dash - .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\u2014') - // en-dash - .replace(/(^|\s)--(?=\s|$)/mg, '$1\u2013') - .replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, '$1\u2013'); - } - } - - if (token.type === 'link_open' && token.info === 'auto') { - inside_autolink--; - } - - if (token.type === 'link_close' && token.info === 'auto') { - inside_autolink++; - } - } -} - - -module.exports = function replace(state) { - var blkIdx; - - if (!state.md.options.typographer) { return; } - - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - - if (state.tokens[blkIdx].type !== 'inline') { continue; } - - if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) { - replace_scoped(state.tokens[blkIdx].children); - } - - if (RARE_RE.test(state.tokens[blkIdx].content)) { - replace_rare(state.tokens[blkIdx].children); - } - - } -}; - - -/***/ }), - -/***/ 2178: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Convert straight quotation marks to typographic ones -// - - - -var isWhiteSpace = __webpack_require__(506).isWhiteSpace; -var isPunctChar = __webpack_require__(506).isPunctChar; -var isMdAsciiPunct = __webpack_require__(506).isMdAsciiPunct; - -var QUOTE_TEST_RE = /['"]/; -var QUOTE_RE = /['"]/g; -var APOSTROPHE = '\u2019'; /* ’ */ - - -function replaceAt(str, index, ch) { - return str.substr(0, index) + ch + str.substr(index + 1); -} - -function process_inlines(tokens, state) { - var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar, - isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, - canOpen, canClose, j, isSingle, stack, openQuote, closeQuote; - - stack = []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - - thisLevel = tokens[i].level; - - for (j = stack.length - 1; j >= 0; j--) { - if (stack[j].level <= thisLevel) { break; } - } - stack.length = j + 1; - - if (token.type !== 'text') { continue; } - - text = token.content; - pos = 0; - max = text.length; - - /*eslint no-labels:0,block-scoped-var:0*/ - OUTER: - while (pos < max) { - QUOTE_RE.lastIndex = pos; - t = QUOTE_RE.exec(text); - if (!t) { break; } - - canOpen = canClose = true; - pos = t.index + 1; - isSingle = (t[0] === "'"); - - // Find previous character, - // default to space if it's the beginning of the line - // - lastChar = 0x20; - - if (t.index - 1 >= 0) { - lastChar = text.charCodeAt(t.index - 1); - } else { - for (j = i - 1; j >= 0; j--) { - if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20 - if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline' - - lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1); - break; - } - } - - // Find next character, - // default to space if it's the end of the line - // - nextChar = 0x20; - - if (pos < max) { - nextChar = text.charCodeAt(pos); - } else { - for (j = i + 1; j < tokens.length; j++) { - if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20 - if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline' - - nextChar = tokens[j].content.charCodeAt(0); - break; - } - } - - isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); - isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); - - isLastWhiteSpace = isWhiteSpace(lastChar); - isNextWhiteSpace = isWhiteSpace(nextChar); - - if (isNextWhiteSpace) { - canOpen = false; - } else if (isNextPunctChar) { - if (!(isLastWhiteSpace || isLastPunctChar)) { - canOpen = false; - } - } - - if (isLastWhiteSpace) { - canClose = false; - } else if (isLastPunctChar) { - if (!(isNextWhiteSpace || isNextPunctChar)) { - canClose = false; - } - } - - if (nextChar === 0x22 /* " */ && t[0] === '"') { - if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) { - // special case: 1"" - count first quote as an inch - canClose = canOpen = false; - } - } - - if (canOpen && canClose) { - // Replace quotes in the middle of punctuation sequence, but not - // in the middle of the words, i.e.: - // - // 1. foo " bar " baz - not replaced - // 2. foo-"-bar-"-baz - replaced - // 3. foo"bar"baz - not replaced - // - canOpen = isLastPunctChar; - canClose = isNextPunctChar; - } - - if (!canOpen && !canClose) { - // middle of word - if (isSingle) { - token.content = replaceAt(token.content, t.index, APOSTROPHE); - } - continue; - } - - if (canClose) { - // this could be a closing quote, rewind the stack to get a match - for (j = stack.length - 1; j >= 0; j--) { - item = stack[j]; - if (stack[j].level < thisLevel) { break; } - if (item.single === isSingle && stack[j].level === thisLevel) { - item = stack[j]; - - if (isSingle) { - openQuote = state.md.options.quotes[2]; - closeQuote = state.md.options.quotes[3]; - } else { - openQuote = state.md.options.quotes[0]; - closeQuote = state.md.options.quotes[1]; - } - - // replace token.content *before* tokens[item.token].content, - // because, if they are pointing at the same token, replaceAt - // could mess up indices when quote length != 1 - token.content = replaceAt(token.content, t.index, closeQuote); - tokens[item.token].content = replaceAt( - tokens[item.token].content, item.pos, openQuote); - - pos += closeQuote.length - 1; - if (item.token === i) { pos += openQuote.length - 1; } - - text = token.content; - max = text.length; - - stack.length = j; - continue OUTER; - } - } - } - - if (canOpen) { - stack.push({ - token: i, - pos: t.index, - single: isSingle, - level: thisLevel - }); - } else if (canClose && isSingle) { - token.content = replaceAt(token.content, t.index, APOSTROPHE); - } - } - } -} - - -module.exports = function smartquotes(state) { - /*eslint max-depth:0*/ - var blkIdx; - - if (!state.md.options.typographer) { return; } - - for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) { - - if (state.tokens[blkIdx].type !== 'inline' || - !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) { - continue; - } - - process_inlines(state.tokens[blkIdx].children, state); - } -}; - - -/***/ }), - -/***/ 9052: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Core state object -// - - -var Token = __webpack_require__(8622); - - -function StateCore(src, md, env) { - this.src = src; - this.env = env; - this.tokens = []; - this.inlineMode = false; - this.md = md; // link to parser instance -} - -// re-export Token class to use in core rules -StateCore.prototype.Token = Token; - - -module.exports = StateCore; - - -/***/ }), - -/***/ 3939: -/***/ ((module) => { - -"use strict"; -// Process autolinks '' - - - - -/*eslint max-len:0*/ -var EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/; -var AUTOLINK_RE = /^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/; - - -module.exports = function autolink(state, silent) { - var tail, linkMatch, emailMatch, url, fullUrl, token, - pos = state.pos; - - if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } - - tail = state.src.slice(pos); - - if (tail.indexOf('>') < 0) { return false; } - - if (AUTOLINK_RE.test(tail)) { - linkMatch = tail.match(AUTOLINK_RE); - - url = linkMatch[0].slice(1, -1); - fullUrl = state.md.normalizeLink(url); - if (!state.md.validateLink(fullUrl)) { return false; } - - if (!silent) { - token = state.push('link_open', 'a', 1); - token.attrs = [ [ 'href', fullUrl ] ]; - token.markup = 'autolink'; - token.info = 'auto'; - - token = state.push('text', '', 0); - token.content = state.md.normalizeLinkText(url); - - token = state.push('link_close', 'a', -1); - token.markup = 'autolink'; - token.info = 'auto'; - } - - state.pos += linkMatch[0].length; - return true; - } - - if (EMAIL_RE.test(tail)) { - emailMatch = tail.match(EMAIL_RE); - - url = emailMatch[0].slice(1, -1); - fullUrl = state.md.normalizeLink('mailto:' + url); - if (!state.md.validateLink(fullUrl)) { return false; } - - if (!silent) { - token = state.push('link_open', 'a', 1); - token.attrs = [ [ 'href', fullUrl ] ]; - token.markup = 'autolink'; - token.info = 'auto'; - - token = state.push('text', '', 0); - token.content = state.md.normalizeLinkText(url); - - token = state.push('link_close', 'a', -1); - token.markup = 'autolink'; - token.info = 'auto'; - } - - state.pos += emailMatch[0].length; - return true; - } - - return false; -}; - - -/***/ }), - -/***/ 8520: -/***/ ((module) => { - -"use strict"; -// Parse backticks - - - -module.exports = function backtick(state, silent) { - var start, max, marker, matchStart, matchEnd, token, - pos = state.pos, - ch = state.src.charCodeAt(pos); - - if (ch !== 0x60/* ` */) { return false; } - - start = pos; - pos++; - max = state.posMax; - - while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; } - - marker = state.src.slice(start, pos); - - matchStart = matchEnd = pos; - - while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { - matchEnd = matchStart + 1; - - while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; } - - if (matchEnd - matchStart === marker.length) { - if (!silent) { - token = state.push('code_inline', 'code', 0); - token.markup = marker; - token.content = state.src.slice(pos, matchStart) - .replace(/\n/g, ' ') - .replace(/^ (.+) $/, '$1'); - } - state.pos = matchEnd; - return true; - } - } - - if (!silent) { state.pending += marker; } - state.pos += marker.length; - return true; -}; - - -/***/ }), - -/***/ 9418: -/***/ ((module) => { - -"use strict"; -// For each opening emphasis-like marker find a matching closing one -// - - - -function processDelimiters(state, delimiters) { - var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx, - isOddMatch, lastJump, - openersBottom = {}, - max = delimiters.length; - - for (closerIdx = 0; closerIdx < max; closerIdx++) { - closer = delimiters[closerIdx]; - - // Length is only used for emphasis-specific "rule of 3", - // if it's not defined (in strikethrough or 3rd party plugins), - // we can default it to 0 to disable those checks. - // - closer.length = closer.length || 0; - - if (!closer.close) continue; - - // Previously calculated lower bounds (previous fails) - // for each marker and each delimiter length modulo 3. - if (!openersBottom.hasOwnProperty(closer.marker)) { - openersBottom[closer.marker] = [ -1, -1, -1 ]; - } - - minOpenerIdx = openersBottom[closer.marker][closer.length % 3]; - newMinOpenerIdx = -1; - - openerIdx = closerIdx - closer.jump - 1; - - for (; openerIdx > minOpenerIdx; openerIdx -= opener.jump + 1) { - opener = delimiters[openerIdx]; - - if (opener.marker !== closer.marker) continue; - - if (newMinOpenerIdx === -1) newMinOpenerIdx = openerIdx; - - if (opener.open && opener.end < 0) { - - isOddMatch = false; - - // from spec: - // - // If one of the delimiters can both open and close emphasis, then the - // sum of the lengths of the delimiter runs containing the opening and - // closing delimiters must not be a multiple of 3 unless both lengths - // are multiples of 3. - // - if (opener.close || closer.open) { - if ((opener.length + closer.length) % 3 === 0) { - if (opener.length % 3 !== 0 || closer.length % 3 !== 0) { - isOddMatch = true; + if (this.interpreters.has(tryType)) { + var val = this.interpreters.get(tryType)(wireFormat); + if (val) return val; } } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); } - if (!isOddMatch) { - // If previous delimiter cannot be an opener, we can safely skip - // the entire sequence in future checks. This is required to make - // sure algorithm has linear complexity (see *_*_*_*_*_... case). - // - lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? - delimiters[openerIdx - 1].jump + 1 : - 0; - - closer.jump = closerIdx - openerIdx + lastJump; - closer.open = false; - opener.end = closerIdx; - opener.jump = lastJump; - opener.close = false; - newMinOpenerIdx = -1; - break; + return null; // cannot be parsed + } catch (e) { + if (e instanceof _InvalidEventError.InvalidEventError) { + return null; // fail parsing and move on } + + throw e; // re-throw everything else } } + /** + * Parses an event, trying the primary event type first. If the primary type is not known + * then the content will be inspected to find the most suitable fallback. + * + * If the parsing failed or was a completely unknown type, this will return falsy. + * @param {IPartialEvent} wireFormat The event to parse. + * @returns {Optional} The parsed extensible event. + */ - if (newMinOpenerIdx !== -1) { - // If match for this delimiter run failed, we want to set lower bound for - // future lookups. This is required to make sure algorithm has linear - // complexity. - // - // See details here: - // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442 - // - openersBottom[closer.marker][(closer.length || 0) % 3] = newMinOpenerIdx; + }], [{ + key: "defaultInstance", + get: function get() { + return ExtensibleEvents._defaultInstance; } - } -} - - -module.exports = function link_pairs(state) { - var curr, - tokens_meta = state.tokens_meta, - max = state.tokens_meta.length; - - processDelimiters(state, state.delimiters); - - for (curr = 0; curr < max; curr++) { - if (tokens_meta[curr] && tokens_meta[curr].delimiters) { - processDelimiters(state, tokens_meta[curr].delimiters); + }, { + key: "unknownInterpretOrder", + get: function get() { + return ExtensibleEvents.defaultInstance.unknownInterpretOrder; } - } -}; + /** + * Sets the order the internal processor will use for unknown primary + * event types. + * @param {NamespacedValue[]} val The parsing order. + */ + , + set: function set(val) { + ExtensibleEvents.defaultInstance.unknownInterpretOrder = val; + } + }, { + key: "registerInterpreter", + value: function registerInterpreter(wireEventType, interpreter) { + ExtensibleEvents.defaultInstance.registerInterpreter(wireEventType, interpreter); + } + }, { + key: "parse", + value: function parse(wireFormat) { + return ExtensibleEvents.defaultInstance.parse(wireFormat); + } + }]); + return ExtensibleEvents; +}(); + +exports.ExtensibleEvents = ExtensibleEvents; + +_defineProperty(ExtensibleEvents, "_defaultInstance", new ExtensibleEvents()); /***/ }), -/***/ 1677: -/***/ ((module) => { - -"use strict"; -// Process *this* and _that_ -// - - - -// Insert each marker as a separate text token, and add it to delimiter list -// -module.exports.w = function emphasis(state, silent) { - var i, scanned, token, - start = state.pos, - marker = state.src.charCodeAt(start); - - if (silent) { return false; } - - if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; } - - scanned = state.scanDelims(state.pos, marker === 0x2A); - - for (i = 0; i < scanned.length; i++) { - token = state.push('text', '', 0); - token.content = String.fromCharCode(marker); - - state.delimiters.push({ - // Char code of the starting marker (number). - // - marker: marker, - - // Total length of these series of delimiters. - // - length: scanned.length, - - // An amount of characters before this one that's equivalent to - // current one. In plain English: if this delimiter does not open - // an emphasis, neither do previous `jump` characters. - // - // Used to skip sequences like "*****" in one step, for 1st asterisk - // value will be 0, for 2nd it's 1 and so on. - // - jump: i, - - // A position of the token this delimiter corresponds to. - // - token: state.tokens.length - 1, - - // If this delimiter is matched as a valid opener, `end` will be - // equal to its position, otherwise it's `-1`. - // - end: -1, - - // Boolean flags that determine if this delimiter could open or close - // an emphasis. - // - open: scanned.can_open, - close: scanned.can_close - }); - } - - state.pos += scanned.length; - - return true; -}; - - -function postProcess(state, delimiters) { - var i, - startDelim, - endDelim, - token, - ch, - isStrong, - max = delimiters.length; - - for (i = max - 1; i >= 0; i--) { - startDelim = delimiters[i]; - - if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) { - continue; - } - - // Process only opening markers - if (startDelim.end === -1) { - continue; - } - - endDelim = delimiters[startDelim.end]; - - // If the previous delimiter has the same marker and is adjacent to this one, - // merge those into one strong delimiter. - // - // `whatever` -> `whatever` - // - isStrong = i > 0 && - delimiters[i - 1].end === startDelim.end + 1 && - delimiters[i - 1].token === startDelim.token - 1 && - delimiters[startDelim.end + 1].token === endDelim.token + 1 && - delimiters[i - 1].marker === startDelim.marker; - - ch = String.fromCharCode(startDelim.marker); - - token = state.tokens[startDelim.token]; - token.type = isStrong ? 'strong_open' : 'em_open'; - token.tag = isStrong ? 'strong' : 'em'; - token.nesting = 1; - token.markup = isStrong ? ch + ch : ch; - token.content = ''; - - token = state.tokens[endDelim.token]; - token.type = isStrong ? 'strong_close' : 'em_close'; - token.tag = isStrong ? 'strong' : 'em'; - token.nesting = -1; - token.markup = isStrong ? ch + ch : ch; - token.content = ''; - - if (isStrong) { - state.tokens[delimiters[i - 1].token].content = ''; - state.tokens[delimiters[startDelim.end + 1].token].content = ''; - i--; - } - } -} - - -// Walk through delimiter list and replace text tokens with tags -// -module.exports.g = function emphasis(state) { - var curr, - tokens_meta = state.tokens_meta, - max = state.tokens_meta.length; - - postProcess(state, state.delimiters); - - for (curr = 0; curr < max; curr++) { - if (tokens_meta[curr] && tokens_meta[curr].delimiters) { - postProcess(state, tokens_meta[curr].delimiters); - } - } -}; - - -/***/ }), - -/***/ 973: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process html entity - {, ¯, ", ... - - - -var entities = __webpack_require__(9220); -var has = __webpack_require__(506).has; -var isValidEntityCode = __webpack_require__(506).isValidEntityCode; -var fromCodePoint = __webpack_require__(506).fromCodePoint; - - -var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i; -var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i; - - -module.exports = function entity(state, silent) { - var ch, code, match, pos = state.pos, max = state.posMax; - - if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; } - - if (pos + 1 < max) { - ch = state.src.charCodeAt(pos + 1); - - if (ch === 0x23 /* # */) { - match = state.src.slice(pos).match(DIGITAL_RE); - if (match) { - if (!silent) { - code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10); - state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD); - } - state.pos += match[0].length; - return true; - } - } else { - match = state.src.slice(pos).match(NAMED_RE); - if (match) { - if (has(entities, match[1])) { - if (!silent) { state.pending += entities[match[1]]; } - state.pos += match[0].length; - return true; - } - } - } - } - - if (!silent) { state.pending += '&'; } - state.pos++; - return true; -}; - - -/***/ }), - -/***/ 1836: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process escaped chars and hardbreaks - - - -var isSpace = __webpack_require__(506).isSpace; - -var ESCAPED = []; - -for (var i = 0; i < 256; i++) { ESCAPED.push(0); } - -'\\!"#$%&\'()*+,./:;<=>?@[]^_`{|}~-' - .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1; }); - - -module.exports = function escape(state, silent) { - var ch, pos = state.pos, max = state.posMax; - - if (state.src.charCodeAt(pos) !== 0x5C/* \ */) { return false; } - - pos++; - - if (pos < max) { - ch = state.src.charCodeAt(pos); - - if (ch < 256 && ESCAPED[ch] !== 0) { - if (!silent) { state.pending += state.src[pos]; } - state.pos += 2; - return true; - } - - if (ch === 0x0A) { - if (!silent) { - state.push('hardbreak', 'br', 0); - } - - pos++; - // skip leading whitespaces from next line - while (pos < max) { - ch = state.src.charCodeAt(pos); - if (!isSpace(ch)) { break; } - pos++; - } - - state.pos = pos; - return true; - } - } - - if (!silent) { state.pending += '\\'; } - state.pos++; - return true; -}; - - -/***/ }), - -/***/ 7753: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process html tags - - - - -var HTML_TAG_RE = __webpack_require__(6537)/* .HTML_TAG_RE */ .n; - - -function isLetter(ch) { - /*eslint no-bitwise:0*/ - var lc = ch | 0x20; // to lower case - return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */); -} - - -module.exports = function html_inline(state, silent) { - var ch, match, max, token, - pos = state.pos; - - if (!state.md.options.html) { return false; } - - // Check start - max = state.posMax; - if (state.src.charCodeAt(pos) !== 0x3C/* < */ || - pos + 2 >= max) { - return false; - } - - // Quick fail on second char - ch = state.src.charCodeAt(pos + 1); - if (ch !== 0x21/* ! */ && - ch !== 0x3F/* ? */ && - ch !== 0x2F/* / */ && - !isLetter(ch)) { - return false; - } - - match = state.src.slice(pos).match(HTML_TAG_RE); - if (!match) { return false; } - - if (!silent) { - token = state.push('html_inline', '', 0); - token.content = state.src.slice(pos, pos + match[0].length); - } - state.pos += match[0].length; - return true; -}; - - -/***/ }), - -/***/ 9998: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process ![image]( "title") - - - -var normalizeReference = __webpack_require__(506).normalizeReference; -var isSpace = __webpack_require__(506).isSpace; - - -module.exports = function image(state, silent) { - var attrs, - code, - content, - label, - labelEnd, - labelStart, - pos, - ref, - res, - title, - token, - tokens, - start, - href = '', - oldPos = state.pos, - max = state.posMax; - - if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false; } - if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false; } - - labelStart = state.pos + 2; - labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); - - // parser failed to find ']', so it's not a valid link - if (labelEnd < 0) { return false; } - - pos = labelEnd + 1; - if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) { - // - // Inline link - // - - // [link]( "title" ) - // ^^ skipping these spaces - pos++; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 0x0A) { break; } - } - if (pos >= max) { return false; } - - // [link]( "title" ) - // ^^^^^^ parsing link destination - start = pos; - res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); - if (res.ok) { - href = state.md.normalizeLink(res.str); - if (state.md.validateLink(href)) { - pos = res.pos; - } else { - href = ''; - } - } - - // [link]( "title" ) - // ^^ skipping these spaces - start = pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 0x0A) { break; } - } - - // [link]( "title" ) - // ^^^^^^^ parsing link title - res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); - if (pos < max && start !== pos && res.ok) { - title = res.str; - pos = res.pos; - - // [link]( "title" ) - // ^^ skipping these spaces - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 0x0A) { break; } - } - } else { - title = ''; - } - - if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) { - state.pos = oldPos; - return false; - } - pos++; - } else { - // - // Link reference - // - if (typeof state.env.references === 'undefined') { return false; } - - if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) { - start = pos + 1; - pos = state.md.helpers.parseLinkLabel(state, pos); - if (pos >= 0) { - label = state.src.slice(start, pos++); - } else { - pos = labelEnd + 1; - } - } else { - pos = labelEnd + 1; - } - - // covers label === '' and label === undefined - // (collapsed reference link and shortcut reference link respectively) - if (!label) { label = state.src.slice(labelStart, labelEnd); } - - ref = state.env.references[normalizeReference(label)]; - if (!ref) { - state.pos = oldPos; - return false; - } - href = ref.href; - title = ref.title; - } - - // - // We found the end of the link, and know for a fact it's a valid link; - // so all that's left to do is to call tokenizer. - // - if (!silent) { - content = state.src.slice(labelStart, labelEnd); - - state.md.inline.parse( - content, - state.md, - state.env, - tokens = [] - ); - - token = state.push('image', 'img', 0); - token.attrs = attrs = [ [ 'src', href ], [ 'alt', '' ] ]; - token.children = tokens; - token.content = content; - - if (title) { - attrs.push([ 'title', title ]); - } - } - - state.pos = pos; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 8798: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Process [link]( "stuff") - - - -var normalizeReference = __webpack_require__(506).normalizeReference; -var isSpace = __webpack_require__(506).isSpace; - - -module.exports = function link(state, silent) { - var attrs, - code, - label, - labelEnd, - labelStart, - pos, - res, - ref, - title, - token, - href = '', - oldPos = state.pos, - max = state.posMax, - start = state.pos, - parseReference = true; - - if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false; } - - labelStart = state.pos + 1; - labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); - - // parser failed to find ']', so it's not a valid link - if (labelEnd < 0) { return false; } - - pos = labelEnd + 1; - if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) { - // - // Inline link - // - - // might have found a valid shortcut link, disable reference parsing - parseReference = false; - - // [link]( "title" ) - // ^^ skipping these spaces - pos++; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 0x0A) { break; } - } - if (pos >= max) { return false; } - - // [link]( "title" ) - // ^^^^^^ parsing link destination - start = pos; - res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax); - if (res.ok) { - href = state.md.normalizeLink(res.str); - if (state.md.validateLink(href)) { - pos = res.pos; - } else { - href = ''; - } - } - - // [link]( "title" ) - // ^^ skipping these spaces - start = pos; - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 0x0A) { break; } - } - - // [link]( "title" ) - // ^^^^^^^ parsing link title - res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax); - if (pos < max && start !== pos && res.ok) { - title = res.str; - pos = res.pos; - - // [link]( "title" ) - // ^^ skipping these spaces - for (; pos < max; pos++) { - code = state.src.charCodeAt(pos); - if (!isSpace(code) && code !== 0x0A) { break; } - } - } else { - title = ''; - } - - if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) { - // parsing a valid shortcut link failed, fallback to reference - parseReference = true; - } - pos++; - } - - if (parseReference) { - // - // Link reference - // - if (typeof state.env.references === 'undefined') { return false; } - - if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) { - start = pos + 1; - pos = state.md.helpers.parseLinkLabel(state, pos); - if (pos >= 0) { - label = state.src.slice(start, pos++); - } else { - pos = labelEnd + 1; - } - } else { - pos = labelEnd + 1; - } - - // covers label === '' and label === undefined - // (collapsed reference link and shortcut reference link respectively) - if (!label) { label = state.src.slice(labelStart, labelEnd); } - - ref = state.env.references[normalizeReference(label)]; - if (!ref) { - state.pos = oldPos; - return false; - } - href = ref.href; - title = ref.title; - } - - // - // We found the end of the link, and know for a fact it's a valid link; - // so all that's left to do is to call tokenizer. - // - if (!silent) { - state.pos = labelStart; - state.posMax = labelEnd; - - token = state.push('link_open', 'a', 1); - token.attrs = attrs = [ [ 'href', href ] ]; - if (title) { - attrs.push([ 'title', title ]); - } - - state.md.inline.tokenize(state); - - token = state.push('link_close', 'a', -1); - } - - state.pos = pos; - state.posMax = max; - return true; -}; - - -/***/ }), - -/***/ 8774: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Proceess '\n' - - - -var isSpace = __webpack_require__(506).isSpace; - - -module.exports = function newline(state, silent) { - var pmax, max, pos = state.pos; - - if (state.src.charCodeAt(pos) !== 0x0A/* \n */) { return false; } - - pmax = state.pending.length - 1; - max = state.posMax; - - // ' \n' -> hardbreak - // Lookup in pending chars is bad practice! Don't copy to other rules! - // Pending string is stored in concat mode, indexed lookups will cause - // convertion to flat mode. - if (!silent) { - if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) { - if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) { - state.pending = state.pending.replace(/ +$/, ''); - state.push('hardbreak', 'br', 0); - } else { - state.pending = state.pending.slice(0, -1); - state.push('softbreak', 'br', 0); - } - - } else { - state.push('softbreak', 'br', 0); - } - } - - pos++; - - // skip heading spaces for next line - while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++; } - - state.pos = pos; - return true; -}; - - -/***/ }), - -/***/ 1247: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Inline parser state - - - - -var Token = __webpack_require__(8622); -var isWhiteSpace = __webpack_require__(506).isWhiteSpace; -var isPunctChar = __webpack_require__(506).isPunctChar; -var isMdAsciiPunct = __webpack_require__(506).isMdAsciiPunct; - - -function StateInline(src, md, env, outTokens) { - this.src = src; - this.env = env; - this.md = md; - this.tokens = outTokens; - this.tokens_meta = Array(outTokens.length); - - this.pos = 0; - this.posMax = this.src.length; - this.level = 0; - this.pending = ''; - this.pendingLevel = 0; - - // Stores { start: end } pairs. Useful for backtrack - // optimization of pairs parse (emphasis, strikes). - this.cache = {}; - - // List of emphasis-like delimiters for current tag - this.delimiters = []; - - // Stack of delimiter lists for upper level tags - this._prev_delimiters = []; -} - - -// Flush pending text -// -StateInline.prototype.pushPending = function () { - var token = new Token('text', '', 0); - token.content = this.pending; - token.level = this.pendingLevel; - this.tokens.push(token); - this.pending = ''; - return token; -}; - - -// Push new token to "stream". -// If pending text exists - flush it as text token -// -StateInline.prototype.push = function (type, tag, nesting) { - if (this.pending) { - this.pushPending(); - } - - var token = new Token(type, tag, nesting); - var token_meta = null; - - if (nesting < 0) { - // closing tag - this.level--; - this.delimiters = this._prev_delimiters.pop(); - } - - token.level = this.level; - - if (nesting > 0) { - // opening tag - this.level++; - this._prev_delimiters.push(this.delimiters); - this.delimiters = []; - token_meta = { delimiters: this.delimiters }; - } - - this.pendingLevel = this.level; - this.tokens.push(token); - this.tokens_meta.push(token_meta); - return token; -}; - - -// Scan a sequence of emphasis-like markers, and determine whether -// it can start an emphasis sequence or end an emphasis sequence. -// -// - start - position to scan from (it should point at a valid marker); -// - canSplitWord - determine if these markers can be found inside a word -// -StateInline.prototype.scanDelims = function (start, canSplitWord) { - var pos = start, lastChar, nextChar, count, can_open, can_close, - isLastWhiteSpace, isLastPunctChar, - isNextWhiteSpace, isNextPunctChar, - left_flanking = true, - right_flanking = true, - max = this.posMax, - marker = this.src.charCodeAt(start); - - // treat beginning of the line as a whitespace - lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20; - - while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; } - - count = pos - start; - - // treat end of the line as a whitespace - nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20; - - isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); - isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); - - isLastWhiteSpace = isWhiteSpace(lastChar); - isNextWhiteSpace = isWhiteSpace(nextChar); - - if (isNextWhiteSpace) { - left_flanking = false; - } else if (isNextPunctChar) { - if (!(isLastWhiteSpace || isLastPunctChar)) { - left_flanking = false; - } - } - - if (isLastWhiteSpace) { - right_flanking = false; - } else if (isLastPunctChar) { - if (!(isNextWhiteSpace || isNextPunctChar)) { - right_flanking = false; - } - } - - if (!canSplitWord) { - can_open = left_flanking && (!right_flanking || isLastPunctChar); - can_close = right_flanking && (!left_flanking || isNextPunctChar); - } else { - can_open = left_flanking; - can_close = right_flanking; - } - - return { - can_open: can_open, - can_close: can_close, - length: count - }; -}; - - -// re-export Token class to use in block rules -StateInline.prototype.Token = Token; - - -module.exports = StateInline; - - -/***/ }), - -/***/ 3015: -/***/ ((module) => { - -"use strict"; -// ~~strike through~~ -// - - - -// Insert each marker as a separate text token, and add it to delimiter list -// -module.exports.w = function strikethrough(state, silent) { - var i, scanned, token, len, ch, - start = state.pos, - marker = state.src.charCodeAt(start); - - if (silent) { return false; } - - if (marker !== 0x7E/* ~ */) { return false; } - - scanned = state.scanDelims(state.pos, true); - len = scanned.length; - ch = String.fromCharCode(marker); - - if (len < 2) { return false; } - - if (len % 2) { - token = state.push('text', '', 0); - token.content = ch; - len--; - } - - for (i = 0; i < len; i += 2) { - token = state.push('text', '', 0); - token.content = ch + ch; - - state.delimiters.push({ - marker: marker, - length: 0, // disable "rule of 3" length checks meant for emphasis - jump: i, - token: state.tokens.length - 1, - end: -1, - open: scanned.can_open, - close: scanned.can_close - }); - } - - state.pos += scanned.length; - - return true; -}; - - -function postProcess(state, delimiters) { - var i, j, - startDelim, - endDelim, - token, - loneMarkers = [], - max = delimiters.length; - - for (i = 0; i < max; i++) { - startDelim = delimiters[i]; - - if (startDelim.marker !== 0x7E/* ~ */) { - continue; - } - - if (startDelim.end === -1) { - continue; - } - - endDelim = delimiters[startDelim.end]; - - token = state.tokens[startDelim.token]; - token.type = 's_open'; - token.tag = 's'; - token.nesting = 1; - token.markup = '~~'; - token.content = ''; - - token = state.tokens[endDelim.token]; - token.type = 's_close'; - token.tag = 's'; - token.nesting = -1; - token.markup = '~~'; - token.content = ''; - - if (state.tokens[endDelim.token - 1].type === 'text' && - state.tokens[endDelim.token - 1].content === '~') { - - loneMarkers.push(endDelim.token - 1); - } - } - - // If a marker sequence has an odd number of characters, it's splitted - // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the - // start of the sequence. - // - // So, we have to move all those markers after subsequent s_close tags. - // - while (loneMarkers.length) { - i = loneMarkers.pop(); - j = i + 1; - - while (j < state.tokens.length && state.tokens[j].type === 's_close') { - j++; - } - - j--; - - if (i !== j) { - token = state.tokens[j]; - state.tokens[j] = state.tokens[i]; - state.tokens[i] = token; - } - } -} - - -// Walk through delimiter list and replace text tokens with tags -// -module.exports.g = function strikethrough(state) { - var curr, - tokens_meta = state.tokens_meta, - max = state.tokens_meta.length; - - postProcess(state, state.delimiters); - - for (curr = 0; curr < max; curr++) { - if (tokens_meta[curr] && tokens_meta[curr].delimiters) { - postProcess(state, tokens_meta[curr].delimiters); - } - } -}; - - -/***/ }), - -/***/ 1117: -/***/ ((module) => { - -"use strict"; -// Skip text characters for text token, place those to pending buffer -// and increment current pos - - - - -// Rule to skip pure text -// '{}$%@~+=:' reserved for extentions - -// !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, or ~ - -// !!!! Don't confuse with "Markdown ASCII Punctuation" chars -// http://spec.commonmark.org/0.15/#ascii-punctuation-character -function isTerminatorChar(ch) { - switch (ch) { - case 0x0A/* \n */: - case 0x21/* ! */: - case 0x23/* # */: - case 0x24/* $ */: - case 0x25/* % */: - case 0x26/* & */: - case 0x2A/* * */: - case 0x2B/* + */: - case 0x2D/* - */: - case 0x3A/* : */: - case 0x3C/* < */: - case 0x3D/* = */: - case 0x3E/* > */: - case 0x40/* @ */: - case 0x5B/* [ */: - case 0x5C/* \ */: - case 0x5D/* ] */: - case 0x5E/* ^ */: - case 0x5F/* _ */: - case 0x60/* ` */: - case 0x7B/* { */: - case 0x7D/* } */: - case 0x7E/* ~ */: - return true; - default: - return false; - } -} - -module.exports = function text(state, silent) { - var pos = state.pos; - - while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) { - pos++; - } - - if (pos === state.pos) { return false; } - - if (!silent) { state.pending += state.src.slice(state.pos, pos); } - - state.pos = pos; - - return true; -}; - -// Alternative implementation, for memory. -// -// It costs 10% of performance, but allows extend terminators list, if place it -// to `ParcerInline` property. Probably, will switch to it sometime, such -// flexibility required. - -/* -var TERMINATOR_RE = /[\n!#$%&*+\-:<=>@[\\\]^_`{}~]/; - -module.exports = function text(state, silent) { - var pos = state.pos, - idx = state.src.slice(pos).search(TERMINATOR_RE); - - // first char is terminator -> empty text - if (idx === 0) { return false; } - - // no terminator -> text till end of string - if (idx < 0) { - if (!silent) { state.pending += state.src.slice(pos); } - state.pos = state.src.length; - return true; - } - - if (!silent) { state.pending += state.src.slice(pos, pos + idx); } - - state.pos += idx; - - return true; -};*/ - - -/***/ }), - -/***/ 2333: -/***/ ((module) => { - -"use strict"; -// Clean up tokens after emphasis and strikethrough postprocessing: -// merge adjacent text nodes into one and re-calculate all token levels -// -// This is necessary because initially emphasis delimiter markers (*, _, ~) -// are treated as their own separate text tokens. Then emphasis rule either -// leaves them as text (needed to merge with adjacent text) or turns them -// into opening/closing tags (which messes up levels inside). -// - - - -module.exports = function text_collapse(state) { - var curr, last, - level = 0, - tokens = state.tokens, - max = state.tokens.length; - - for (curr = last = 0; curr < max; curr++) { - // re-calculate levels after emphasis/strikethrough turns some text nodes - // into opening/closing tags - if (tokens[curr].nesting < 0) level--; // closing tag - tokens[curr].level = level; - if (tokens[curr].nesting > 0) level++; // opening tag - - if (tokens[curr].type === 'text' && - curr + 1 < max && - tokens[curr + 1].type === 'text') { - - // collapse two adjacent text nodes - tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content; - } else { - if (curr !== last) { tokens[last] = tokens[curr]; } - - last++; - } - } - - if (curr !== last) { - tokens.length = last; - } -}; - - -/***/ }), - -/***/ 8622: -/***/ ((module) => { - -"use strict"; -// Token class - - - - -/** - * class Token - **/ - -/** - * new Token(type, tag, nesting) - * - * Create new token and fill passed properties. - **/ -function Token(type, tag, nesting) { - /** - * Token#type -> String - * - * Type of the token (string, e.g. "paragraph_open") - **/ - this.type = type; - - /** - * Token#tag -> String - * - * html tag name, e.g. "p" - **/ - this.tag = tag; - - /** - * Token#attrs -> Array - * - * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]` - **/ - this.attrs = null; - - /** - * Token#map -> Array - * - * Source map info. Format: `[ line_begin, line_end ]` - **/ - this.map = null; - - /** - * Token#nesting -> Number - * - * Level change (number in {-1, 0, 1} set), where: - * - * - `1` means the tag is opening - * - `0` means the tag is self-closing - * - `-1` means the tag is closing - **/ - this.nesting = nesting; - - /** - * Token#level -> Number - * - * nesting level, the same as `state.level` - **/ - this.level = 0; - - /** - * Token#children -> Array - * - * An array of child nodes (inline and img tokens) - **/ - this.children = null; - - /** - * Token#content -> String - * - * In a case of self-closing tag (code, html, fence, etc.), - * it has contents of this tag. - **/ - this.content = ''; - - /** - * Token#markup -> String - * - * '*' or '_' for emphasis, fence string for fence, etc. - **/ - this.markup = ''; - - /** - * Token#info -> String - * - * fence infostring - **/ - this.info = ''; - - /** - * Token#meta -> Object - * - * A place for plugins to store an arbitrary data - **/ - this.meta = null; - - /** - * Token#block -> Boolean - * - * True for block-level tokens, false for inline tokens. - * Used in renderer to calculate line breaks - **/ - this.block = false; - - /** - * Token#hidden -> Boolean - * - * If it's true, ignore this element when rendering. Used for tight lists - * to hide paragraphs. - **/ - this.hidden = false; -} - - -/** - * Token.attrIndex(name) -> Number - * - * Search attribute index by name. - **/ -Token.prototype.attrIndex = function attrIndex(name) { - var attrs, i, len; - - if (!this.attrs) { return -1; } - - attrs = this.attrs; - - for (i = 0, len = attrs.length; i < len; i++) { - if (attrs[i][0] === name) { return i; } - } - return -1; -}; - - -/** - * Token.attrPush(attrData) - * - * Add `[ name, value ]` attribute to list. Init attrs if necessary - **/ -Token.prototype.attrPush = function attrPush(attrData) { - if (this.attrs) { - this.attrs.push(attrData); - } else { - this.attrs = [ attrData ]; - } -}; - - -/** - * Token.attrSet(name, value) - * - * Set `name` attribute to `value`. Override old value if exists. - **/ -Token.prototype.attrSet = function attrSet(name, value) { - var idx = this.attrIndex(name), - attrData = [ name, value ]; - - if (idx < 0) { - this.attrPush(attrData); - } else { - this.attrs[idx] = attrData; - } -}; - - -/** - * Token.attrGet(name) - * - * Get the value of attribute `name`, or null if it does not exist. - **/ -Token.prototype.attrGet = function attrGet(name) { - var idx = this.attrIndex(name), value = null; - if (idx >= 0) { - value = this.attrs[idx][1]; - } - return value; -}; - - -/** - * Token.attrJoin(name, value) - * - * Join value to existing attribute via space. Or create new attribute if not - * exists. Useful to operate with token classes. - **/ -Token.prototype.attrJoin = function attrJoin(name, value) { - var idx = this.attrIndex(name); - - if (idx < 0) { - this.attrPush([ name, value ]); - } else { - this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value; - } -}; - - -module.exports = Token; - - -/***/ }), - -/***/ 9554: +/***/ 9684: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -23029,8 +127798,3865 @@ module.exports = Token; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ReEmitter = void 0; +/***/ }), + +/***/ 4585: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +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.InvalidEventError = void 0; + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } + +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Thrown when an event is unforgivably unparsable. + */ +var InvalidEventError = /*#__PURE__*/function (_Error) { + _inherits(InvalidEventError, _Error); + + var _super = _createSuper(InvalidEventError); + + function InvalidEventError(message) { + _classCallCheck(this, InvalidEventError); + + return _super.call(this, message); + } + + return _createClass(InvalidEventError); +}( /*#__PURE__*/_wrapNativeSuper(Error)); + +exports.InvalidEventError = InvalidEventError; + +/***/ }), + +/***/ 3444: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NamespacedMap = void 0; + +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +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; } + +/** + * A `Map` implementation which accepts a NamespacedValue as a key, and arbitrary value. The + * namespaced value must be a string type. + */ +var NamespacedMap = /*#__PURE__*/function () { + // protected to make tests happy for access + + /** + * Creates a new map with optional seed data. + * @param {Array<[NS, V]>} initial The seed data. + */ + function NamespacedMap(initial) { + _classCallCheck(this, NamespacedMap); + + _defineProperty(this, "internalMap", new Map()); + + if (initial) { + var _iterator = _createForOfIteratorHelper(initial), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var val = _step.value; + this.set(val[0], val[1]); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + } + /** + * Gets a value from the map. If the value does not exist under + * either namespace option, falsy is returned. + * @param {NS} key The key. + * @returns {Optional} The value, or falsy. + */ + + + _createClass(NamespacedMap, [{ + key: "get", + value: function get(key) { + if (key.name && this.internalMap.has(key.name)) { + return this.internalMap.get(key.name); + } + + if (key.altName && this.internalMap.has(key.altName)) { + return this.internalMap.get(key.altName); + } + + return null; + } + /** + * Sets a value in the map. + * @param {NS} key The key. + * @param {V} val The value. + */ + + }, { + key: "set", + value: function set(key, val) { + if (key.name) { + this.internalMap.set(key.name, val); + } + + if (key.altName) { + this.internalMap.set(key.altName, val); + } + } + /** + * Determines if any of the valid namespaced values are present + * in the map. + * @param {NS} key The key. + * @returns {boolean} True if present. + */ + + }, { + key: "has", + value: function has(key) { + return !!this.get(key); + } + /** + * Removes all the namespaced values from the map. + * @param {NS} key The key. + */ + + }, { + key: "delete", + value: function _delete(key) { + if (key.name) { + this.internalMap["delete"](key.name); + } + + if (key.altName) { + this.internalMap["delete"](key.altName); + } + } + /** + * Determines if the map contains a specific namespaced value + * instead of the parent NS type. + * @param {string} key The key. + * @returns {boolean} True if present. + */ + + }, { + key: "hasNamespaced", + value: function hasNamespaced(key) { + return this.internalMap.has(key); + } + /** + * Gets a specific namespaced value from the map instead of the + * parent NS type. Returns falsy if not found. + * @param {string} key The key. + * @returns {Optional} The value, or falsy. + */ + + }, { + key: "getNamespaced", + value: function getNamespaced(key) { + return this.internalMap.get(key); + } + }]); + + return NamespacedMap; +}(); + +exports.NamespacedMap = NamespacedMap; + +/***/ }), + +/***/ 7631: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +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.UnstableValue = exports.NamespacedValue = void 0; + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +/* +Copyright 2021 - 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Represents a simple Matrix namespaced value. This will assume that if a stable prefix + * is provided that the stable prefix should be used when representing the identifier. + */ +var NamespacedValue = /*#__PURE__*/function () { + // Stable is optional, but one of the two parameters is required, hence the weird-looking types. + // Goal is to have developers explicitly say there is no stable value (if applicable). + function NamespacedValue(stable, unstable) { + _classCallCheck(this, NamespacedValue); + + this.stable = stable; + this.unstable = unstable; + + if (!this.unstable && !this.stable) { + throw new Error("One of stable or unstable values must be supplied"); + } + } + + _createClass(NamespacedValue, [{ + key: "name", + get: function get() { + if (this.stable) { + return this.stable; + } + + return this.unstable; + } + }, { + key: "altName", + get: function get() { + if (!this.stable) { + return null; + } + + return this.unstable; + } + }, { + key: "matches", + value: function matches(val) { + return !!this.name && this.name === val || !!this.altName && this.altName === val; + } // this desperately wants https://github.com/microsoft/TypeScript/pull/26349 at the top level of the class + // so we can instantiate `NamespacedValue` as a default type for that namespace. + + }, { + key: "findIn", + value: function findIn(obj) { + var val; + + if (this.name) { + val = obj === null || obj === void 0 ? void 0 : obj[this.name]; + } + + if (!val && this.altName) { + val = obj === null || obj === void 0 ? void 0 : obj[this.altName]; + } + + return val; + } + }, { + key: "includedIn", + value: function includedIn(arr) { + var included = false; + + if (this.name) { + included = arr.includes(this.name); + } + + if (!included && this.altName) { + included = arr.includes(this.altName); + } + + return included; + } + }]); + + return NamespacedValue; +}(); +/** + * Represents a namespaced value which prioritizes the unstable value over the stable + * value. + */ + + +exports.NamespacedValue = NamespacedValue; + +var UnstableValue = /*#__PURE__*/function (_NamespacedValue) { + _inherits(UnstableValue, _NamespacedValue); + + var _super = _createSuper(UnstableValue); + + // Note: Constructor difference is that `unstable` is *required*. + function UnstableValue(stable, unstable) { + var _this; + + _classCallCheck(this, UnstableValue); + + _this = _super.call(this, stable, unstable); + + if (!_this.unstable) { + throw new Error("Unstable value must be supplied"); + } + + return _this; + } + + _createClass(UnstableValue, [{ + key: "name", + get: function get() { + return this.unstable; + } + }, { + key: "altName", + get: function get() { + return this.stable; + } + }]); + + return UnstableValue; +}(NamespacedValue); + +exports.UnstableValue = UnstableValue; + +/***/ }), + +/***/ 4259: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +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.EmoteEvent = void 0; + +var _MessageEvent2 = __nccwpck_require__(7370); + +var _message_types = __nccwpck_require__(2680); + +var _events = __nccwpck_require__(6417); + +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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +// Emote events are just decorated message events + +/** + * Represents an emote. This is essentially a MessageEvent with + * emote characteristics considered. + */ +var EmoteEvent = /*#__PURE__*/function (_MessageEvent) { + _inherits(EmoteEvent, _MessageEvent); + + var _super = _createSuper(EmoteEvent); + + function EmoteEvent(wireFormat) { + _classCallCheck(this, EmoteEvent); + + return _super.call(this, wireFormat); + } + + _createClass(EmoteEvent, [{ + key: "isEmote", + get: function get() { + return true; // override + } + }, { + key: "isEquivalentTo", + value: function isEquivalentTo(primaryEventType) { + return (0, _events.isEventTypeSame)(primaryEventType, _message_types.M_EMOTE) || _get(_getPrototypeOf(EmoteEvent.prototype), "isEquivalentTo", this).call(this, primaryEventType); + } + }, { + key: "serialize", + value: function serialize() { + var message = _get(_getPrototypeOf(EmoteEvent.prototype), "serialize", this).call(this); + + message.content['msgtype'] = "m.emote"; + return message; + } + /** + * Creates a new EmoteEvent from text and HTML. + * @param {string} text The text. + * @param {string} html Optional HTML. + * @returns {MessageEvent} The representative message event. + */ + + }], [{ + key: "from", + value: function from(text, html) { + var _content; + + return new EmoteEvent({ + type: _message_types.M_EMOTE.name, + content: (_content = {}, _defineProperty(_content, _message_types.M_TEXT.name, text), _defineProperty(_content, _message_types.M_HTML.name, html), _content) + }); + } + }]); + + return EmoteEvent; +}(_MessageEvent2.MessageEvent); + +exports.EmoteEvent = EmoteEvent; + +/***/ }), + +/***/ 3953: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ExtensibleEvent = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +/* +Copyright 2021 - 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Represents an Extensible Event in Matrix. + */ +var ExtensibleEvent = /*#__PURE__*/function () { + function ExtensibleEvent(wireFormat) { + _classCallCheck(this, ExtensibleEvent); + + this.wireFormat = wireFormat; + } + /** + * Shortcut to wireFormat.content + */ + + + _createClass(ExtensibleEvent, [{ + key: "wireContent", + get: function get() { + return this.wireFormat.content; + } + /** + * Serializes the event into a format which can be used to send the + * event to the room. + * @returns {IPartialEvent} The serialized event. + */ + + }]); + + return ExtensibleEvent; +}(); + +exports.ExtensibleEvent = ExtensibleEvent; + +/***/ }), + +/***/ 7370: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +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.MessageEvent = void 0; + +var _ExtensibleEvent2 = __nccwpck_require__(3953); + +var _types = __nccwpck_require__(5659); + +var _InvalidEventError = __nccwpck_require__(4585); + +var _message_types = __nccwpck_require__(2680); + +var _events = __nccwpck_require__(6417); + +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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +/** + * Represents a message event. Message events are the simplest form of event with + * just text (optionally of different mimetypes, like HTML). + * + * Message events can additionally be an Emote or Notice, though typically those + * are represented as EmoteEvent and NoticeEvent respectively. + */ +var MessageEvent = /*#__PURE__*/function (_ExtensibleEvent) { + _inherits(MessageEvent, _ExtensibleEvent); + + var _super = _createSuper(MessageEvent); + + /** + * The default text for the event. + */ + + /** + * The default HTML for the event, if provided. + */ + + /** + * All the different renderings of the message. Note that this is the same + * format as an m.message body but may contain elements not found directly + * in the event content: this is because this is interpreted based off the + * other information available in the event. + */ + + /** + * Creates a new MessageEvent from a pure format. Note that the event is + * *not* parsed here: it will be treated as a literal m.message primary + * typed event. + * @param {IPartialEvent} wireFormat The event. + */ + function MessageEvent(wireFormat) { + var _this; + + _classCallCheck(this, MessageEvent); + + _this = _super.call(this, wireFormat); + + _defineProperty(_assertThisInitialized(_this), "text", void 0); + + _defineProperty(_assertThisInitialized(_this), "html", void 0); + + _defineProperty(_assertThisInitialized(_this), "renderings", void 0); + + var mmessage = _message_types.M_MESSAGE.findIn(_this.wireContent); + + var mtext = _message_types.M_TEXT.findIn(_this.wireContent); + + var mhtml = _message_types.M_HTML.findIn(_this.wireContent); + + if ((0, _types.isProvided)(mmessage)) { + if (!Array.isArray(mmessage)) { + throw new _InvalidEventError.InvalidEventError("m.message contents must be an array"); + } + + var text = mmessage.find(function (r) { + return !(0, _types.isProvided)(r.mimetype) || r.mimetype === "text/plain"; + }); + var html = mmessage.find(function (r) { + return r.mimetype === "text/html"; + }); + if (!text) throw new _InvalidEventError.InvalidEventError("m.message is missing a plain text representation"); + _this.text = text.body; + _this.html = html === null || html === void 0 ? void 0 : html.body; + _this.renderings = mmessage; + } else if ((0, _types.isOptionalAString)(mtext)) { + _this.text = mtext; + _this.html = mhtml; + _this.renderings = [{ + body: mtext, + mimetype: "text/plain" + }]; + + if (_this.html) { + _this.renderings.push({ + body: _this.html, + mimetype: "text/html" + }); + } + } else { + throw new _InvalidEventError.InvalidEventError("Missing textual representation for event"); + } + + return _this; + } + /** + * Gets whether this message is considered an "emote". Note that a message + * might be an emote and notice at the same time: while technically possible, + * the event should be interpreted as one or the other. + */ + + + _createClass(MessageEvent, [{ + key: "isEmote", + get: function get() { + return _message_types.M_EMOTE.matches(this.wireFormat.type) || (0, _types.isProvided)(_message_types.M_EMOTE.findIn(this.wireFormat.content)); + } + /** + * Gets whether this message is considered a "notice". Note that a message + * might be an emote and notice at the same time: while technically possible, + * the event should be interpreted as one or the other. + */ + + }, { + key: "isNotice", + get: function get() { + return _message_types.M_NOTICE.matches(this.wireFormat.type) || (0, _types.isProvided)(_message_types.M_NOTICE.findIn(this.wireFormat.content)); + } + }, { + key: "isEquivalentTo", + value: function isEquivalentTo(primaryEventType) { + return (0, _events.isEventTypeSame)(primaryEventType, _message_types.M_MESSAGE); + } + }, { + key: "serializeMMessageOnly", + value: function serializeMMessageOnly() { + var messageRendering = _defineProperty({}, _message_types.M_MESSAGE.name, this.renderings); // Use the shorthand if it's just a simple text event + + + if (this.renderings.length === 1) { + var mime = this.renderings[0].mimetype; + + if (mime === undefined || mime === "text/plain") { + messageRendering = _defineProperty({}, _message_types.M_TEXT.name, this.renderings[0].body); + } + } + + return messageRendering; + } + }, { + key: "serialize", + value: function serialize() { + var _this$html; + + return { + type: "m.room.message", + content: _objectSpread(_objectSpread({}, this.serializeMMessageOnly()), {}, { + body: this.text, + msgtype: "m.text", + format: this.html ? "org.matrix.custom.html" : undefined, + formatted_body: (_this$html = this.html) !== null && _this$html !== void 0 ? _this$html : undefined + }) + }; + } + /** + * Creates a new MessageEvent from text and HTML. + * @param {string} text The text. + * @param {string} html Optional HTML. + * @returns {MessageEvent} The representative message event. + */ + + }], [{ + key: "from", + value: function from(text, html) { + var _content; + + return new MessageEvent({ + type: _message_types.M_MESSAGE.name, + content: (_content = {}, _defineProperty(_content, _message_types.M_TEXT.name, text), _defineProperty(_content, _message_types.M_HTML.name, html), _content) + }); + } + }]); + + return MessageEvent; +}(_ExtensibleEvent2.ExtensibleEvent); + +exports.MessageEvent = MessageEvent; + +/***/ }), + +/***/ 7335: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +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.NoticeEvent = void 0; + +var _MessageEvent2 = __nccwpck_require__(7370); + +var _message_types = __nccwpck_require__(2680); + +var _events = __nccwpck_require__(6417); + +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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +// Notice events are just decorated message events + +/** + * Represents a notice. This is essentially a MessageEvent with + * notice characteristics considered. + */ +var NoticeEvent = /*#__PURE__*/function (_MessageEvent) { + _inherits(NoticeEvent, _MessageEvent); + + var _super = _createSuper(NoticeEvent); + + function NoticeEvent(wireFormat) { + _classCallCheck(this, NoticeEvent); + + return _super.call(this, wireFormat); + } + + _createClass(NoticeEvent, [{ + key: "isNotice", + get: function get() { + return true; // override + } + }, { + key: "isEquivalentTo", + value: function isEquivalentTo(primaryEventType) { + return (0, _events.isEventTypeSame)(primaryEventType, _message_types.M_NOTICE) || _get(_getPrototypeOf(NoticeEvent.prototype), "isEquivalentTo", this).call(this, primaryEventType); + } + }, { + key: "serialize", + value: function serialize() { + var message = _get(_getPrototypeOf(NoticeEvent.prototype), "serialize", this).call(this); + + message.content['msgtype'] = "m.notice"; + return message; + } + /** + * Creates a new NoticeEvent from text and HTML. + * @param {string} text The text. + * @param {string} html Optional HTML. + * @returns {MessageEvent} The representative message event. + */ + + }], [{ + key: "from", + value: function from(text, html) { + var _content; + + return new NoticeEvent({ + type: _message_types.M_NOTICE.name, + content: (_content = {}, _defineProperty(_content, _message_types.M_TEXT.name, text), _defineProperty(_content, _message_types.M_HTML.name, html), _content) + }); + } + }]); + + return NoticeEvent; +}(_MessageEvent2.MessageEvent); + +exports.NoticeEvent = NoticeEvent; + +/***/ }), + +/***/ 7198: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +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.PollEndEvent = void 0; + +var _poll_types = __nccwpck_require__(8287); + +var _InvalidEventError = __nccwpck_require__(4585); + +var _relationship_types = __nccwpck_require__(9081); + +var _MessageEvent = __nccwpck_require__(7370); + +var _message_types = __nccwpck_require__(2680); + +var _events = __nccwpck_require__(6417); + +var _ExtensibleEvent2 = __nccwpck_require__(3953); + +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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +/** + * Represents a poll end/closure event. + */ +var PollEndEvent = /*#__PURE__*/function (_ExtensibleEvent) { + _inherits(PollEndEvent, _ExtensibleEvent); + + var _super = _createSuper(PollEndEvent); + + /** + * The poll start event ID referenced by the response. + */ + + /** + * The closing message for the event. + */ + + /** + * Creates a new PollEndEvent from a pure format. Note that the event is *not* + * parsed here: it will be treated as a literal m.poll.response primary typed event. + * @param {IPartialEvent} wireFormat The event. + */ + function PollEndEvent(wireFormat) { + var _this; + + _classCallCheck(this, PollEndEvent); + + _this = _super.call(this, wireFormat); + + _defineProperty(_assertThisInitialized(_this), "pollEventId", void 0); + + _defineProperty(_assertThisInitialized(_this), "closingMessage", void 0); + + var rel = _this.wireContent["m.relates_to"]; + + if (!_relationship_types.REFERENCE_RELATION.matches(rel === null || rel === void 0 ? void 0 : rel.rel_type) || typeof (rel === null || rel === void 0 ? void 0 : rel.event_id) !== "string") { + throw new _InvalidEventError.InvalidEventError("Relationship must be a reference to an event"); + } + + _this.pollEventId = rel.event_id; + _this.closingMessage = new _MessageEvent.MessageEvent(_this.wireFormat); + return _this; + } + + _createClass(PollEndEvent, [{ + key: "isEquivalentTo", + value: function isEquivalentTo(primaryEventType) { + return (0, _events.isEventTypeSame)(primaryEventType, _poll_types.M_POLL_END); + } + }, { + key: "serialize", + value: function serialize() { + return { + type: _poll_types.M_POLL_END.name, + content: _objectSpread(_defineProperty({ + "m.relates_to": { + rel_type: _relationship_types.REFERENCE_RELATION.name, + event_id: this.pollEventId + } + }, _poll_types.M_POLL_END.name, {}), this.closingMessage.serialize().content) + }; + } + /** + * Creates a new PollEndEvent from a poll event ID. + * @param {string} pollEventId The poll start event ID. + * @param {string} message A closing message, typically revealing the top answer. + * @returns {PollStartEvent} The representative poll closure event. + */ + + }], [{ + key: "from", + value: function from(pollEventId, message) { + var _content; + + return new PollEndEvent({ + type: _poll_types.M_POLL_END.name, + content: (_content = { + "m.relates_to": { + rel_type: _relationship_types.REFERENCE_RELATION.name, + event_id: pollEventId + } + }, _defineProperty(_content, _poll_types.M_POLL_END.name, {}), _defineProperty(_content, _message_types.M_TEXT.name, message), _content) + }); + } + }]); + + return PollEndEvent; +}(_ExtensibleEvent2.ExtensibleEvent); + +exports.PollEndEvent = PollEndEvent; + +/***/ }), + +/***/ 6442: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +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.PollResponseEvent = void 0; + +var _ExtensibleEvent2 = __nccwpck_require__(3953); + +var _poll_types = __nccwpck_require__(8287); + +var _InvalidEventError = __nccwpck_require__(4585); + +var _relationship_types = __nccwpck_require__(9081); + +var _events = __nccwpck_require__(6417); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +/** + * Represents a poll response event. + */ +var PollResponseEvent = /*#__PURE__*/function (_ExtensibleEvent) { + _inherits(PollResponseEvent, _ExtensibleEvent); + + var _super = _createSuper(PollResponseEvent); + + /** + * Creates a new PollResponseEvent from a pure format. Note that the event is *not* + * parsed here: it will be treated as a literal m.poll.response primary typed event. + * + * To validate the response against a poll, call `validateAgainst` after creation. + * @param {IPartialEvent} wireFormat The event. + */ + function PollResponseEvent(wireFormat) { + var _this; + + _classCallCheck(this, PollResponseEvent); + + _this = _super.call(this, wireFormat); + + _defineProperty(_assertThisInitialized(_this), "internalAnswerIds", void 0); + + _defineProperty(_assertThisInitialized(_this), "internalSpoiled", void 0); + + _defineProperty(_assertThisInitialized(_this), "pollEventId", void 0); + + var rel = _this.wireContent["m.relates_to"]; + + if (!_relationship_types.REFERENCE_RELATION.matches(rel === null || rel === void 0 ? void 0 : rel.rel_type) || typeof (rel === null || rel === void 0 ? void 0 : rel.event_id) !== "string") { + throw new _InvalidEventError.InvalidEventError("Relationship must be a reference to an event"); + } + + _this.pollEventId = rel.event_id; + + _this.validateAgainst(null); + + return _this; + } + /** + * Validates the poll response using the poll start event as a frame of reference. This + * is used to determine if the vote is spoiled, whether the answers are valid, etc. + * @param {PollStartEvent} poll The poll start event. + */ + + + _createClass(PollResponseEvent, [{ + key: "answerIds", + get: + /** + * The provided answers for the poll. Note that this may be falsy/unpredictable if + * the `spoiled` property is true. + */ + function get() { + return this.internalAnswerIds; + } + /** + * The poll start event ID referenced by the response. + */ + + }, { + key: "spoiled", + get: + /** + * Whether the vote is spoiled. + */ + function get() { + return this.internalSpoiled; + } + }, { + key: "validateAgainst", + value: function validateAgainst(poll) { + var response = _poll_types.M_POLL_RESPONSE.findIn(this.wireContent); + + if (!Array.isArray(response === null || response === void 0 ? void 0 : response.answers)) { + this.internalSpoiled = true; + this.internalAnswerIds = []; + return; + } + + var answers = response.answers; + + if (answers.some(function (a) { + return typeof a !== "string"; + }) || answers.length === 0) { + this.internalSpoiled = true; + this.internalAnswerIds = []; + return; + } + + if (poll) { + if (answers.some(function (a) { + return !poll.answers.some(function (pa) { + return pa.id === a; + }); + })) { + this.internalSpoiled = true; + this.internalAnswerIds = []; + return; + } + + answers = answers.slice(0, poll.maxSelections); + } + + this.internalAnswerIds = answers; + this.internalSpoiled = false; + } + }, { + key: "isEquivalentTo", + value: function isEquivalentTo(primaryEventType) { + return (0, _events.isEventTypeSame)(primaryEventType, _poll_types.M_POLL_RESPONSE); + } + }, { + key: "serialize", + value: function serialize() { + return { + type: _poll_types.M_POLL_RESPONSE.name, + content: _defineProperty({ + "m.relates_to": { + rel_type: _relationship_types.REFERENCE_RELATION.name, + event_id: this.pollEventId + } + }, _poll_types.M_POLL_RESPONSE.name, { + answers: this.spoiled ? undefined : this.answerIds + }) + }; + } + /** + * Creates a new PollResponseEvent from a set of answers. To spoil the vote, pass an empty + * answers array. + * @param {string} answers The user's answers. Should be valid from a poll's answer IDs. + * @param {string} pollEventId The poll start event ID. + * @returns {PollStartEvent} The representative poll response event. + */ + + }], [{ + key: "from", + value: function from(answers, pollEventId) { + return new PollResponseEvent({ + type: _poll_types.M_POLL_RESPONSE.name, + content: _defineProperty({ + "m.relates_to": { + rel_type: _relationship_types.REFERENCE_RELATION.name, + event_id: pollEventId + } + }, _poll_types.M_POLL_RESPONSE.name, { + answers: answers + }) + }); + } + }]); + + return PollResponseEvent; +}(_ExtensibleEvent2.ExtensibleEvent); + +exports.PollResponseEvent = PollResponseEvent; + +/***/ }), + +/***/ 9681: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +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.PollStartEvent = exports.PollAnswerSubevent = void 0; + +var _poll_types = __nccwpck_require__(8287); + +var _MessageEvent2 = __nccwpck_require__(7370); + +var _message_types = __nccwpck_require__(2680); + +var _InvalidEventError = __nccwpck_require__(4585); + +var _NamespacedValue = __nccwpck_require__(7631); + +var _events = __nccwpck_require__(6417); + +var _ExtensibleEvent2 = __nccwpck_require__(3953); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread 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 _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +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 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +/** + * Represents a poll answer. Note that this is represented as a subtype and is + * not registered as a parsable event - it is implied for usage exclusively + * within the PollStartEvent parsing. + */ +var PollAnswerSubevent = /*#__PURE__*/function (_MessageEvent) { + _inherits(PollAnswerSubevent, _MessageEvent); + + var _super = _createSuper(PollAnswerSubevent); + + /** + * The answer ID. + */ + function PollAnswerSubevent(wireFormat) { + var _this; + + _classCallCheck(this, PollAnswerSubevent); + + _this = _super.call(this, wireFormat); + + _defineProperty(_assertThisInitialized(_this), "id", void 0); + + var id = wireFormat.content.id; + + if (!id || typeof id !== "string") { + throw new _InvalidEventError.InvalidEventError("Answer ID must be a non-empty string"); + } + + _this.id = id; + return _this; + } + + _createClass(PollAnswerSubevent, [{ + key: "serialize", + value: function serialize() { + return { + type: "org.matrix.sdk.poll.answer", + content: _objectSpread({ + id: this.id + }, this.serializeMMessageOnly()) + }; + } + /** + * Creates a new PollAnswerSubevent from ID and text. + * @param {string} id The answer ID (unique within the poll). + * @param {string} text The text. + * @returns {PollAnswerSubevent} The representative answer. + */ + + }], [{ + key: "from", + value: function from(id, text) { + return new PollAnswerSubevent({ + type: "org.matrix.sdk.poll.answer", + content: _defineProperty({ + id: id + }, _message_types.M_TEXT.name, text) + }); + } + }]); + + return PollAnswerSubevent; +}(_MessageEvent2.MessageEvent); +/** + * Represents a poll start event. + */ + + +exports.PollAnswerSubevent = PollAnswerSubevent; + +var PollStartEvent = /*#__PURE__*/function (_ExtensibleEvent) { + _inherits(PollStartEvent, _ExtensibleEvent); + + var _super2 = _createSuper(PollStartEvent); + + /** + * The question being asked, as a MessageEvent node. + */ + + /** + * The interpreted kind of poll. Note that this will infer a value that is known to the + * SDK rather than verbatim - this means unknown types will be represented as undisclosed + * polls. + * + * To get the raw kind, use rawKind. + */ + + /** + * The true kind as provided by the event sender. Might not be valid. + */ + + /** + * The maximum number of selections a user is allowed to make. + */ + + /** + * The possible answers for the poll. + */ + + /** + * Creates a new PollStartEvent from a pure format. Note that the event is *not* + * parsed here: it will be treated as a literal m.poll.start primary typed event. + * @param {IPartialEvent} wireFormat The event. + */ + function PollStartEvent(wireFormat) { + var _this2; + + _classCallCheck(this, PollStartEvent); + + _this2 = _super2.call(this, wireFormat); + + _defineProperty(_assertThisInitialized(_this2), "question", void 0); + + _defineProperty(_assertThisInitialized(_this2), "kind", void 0); + + _defineProperty(_assertThisInitialized(_this2), "rawKind", void 0); + + _defineProperty(_assertThisInitialized(_this2), "maxSelections", void 0); + + _defineProperty(_assertThisInitialized(_this2), "answers", void 0); + + var poll = _poll_types.M_POLL_START.findIn(_this2.wireContent); + + if (!poll.question) { + throw new _InvalidEventError.InvalidEventError("A question is required"); + } + + _this2.question = new _MessageEvent2.MessageEvent({ + type: "org.matrix.sdk.poll.question", + content: poll.question + }); + _this2.rawKind = poll.kind; + + if (_poll_types.M_POLL_KIND_DISCLOSED.matches(_this2.rawKind)) { + _this2.kind = _poll_types.M_POLL_KIND_DISCLOSED; + } else { + _this2.kind = _poll_types.M_POLL_KIND_UNDISCLOSED; // default & assumed value + } + + _this2.maxSelections = Number.isFinite(poll.max_selections) && poll.max_selections > 0 ? poll.max_selections : 1; + + if (!Array.isArray(poll.answers)) { + throw new _InvalidEventError.InvalidEventError("Poll answers must be an array"); + } + + var answers = poll.answers.slice(0, 20).map(function (a) { + return new PollAnswerSubevent({ + type: "org.matrix.sdk.poll.answer", + content: a + }); + }); + + if (answers.length <= 0) { + throw new _InvalidEventError.InvalidEventError("No answers available"); + } + + _this2.answers = answers; + return _this2; + } + + _createClass(PollStartEvent, [{ + key: "isEquivalentTo", + value: function isEquivalentTo(primaryEventType) { + return (0, _events.isEventTypeSame)(primaryEventType, _poll_types.M_POLL_START); + } + }, { + key: "serialize", + value: function serialize() { + var _content2; + + return { + type: _poll_types.M_POLL_START.name, + content: (_content2 = {}, _defineProperty(_content2, _poll_types.M_POLL_START.name, { + question: this.question.serialize().content, + kind: this.rawKind, + max_selections: this.maxSelections, + answers: this.answers.map(function (a) { + return a.serialize().content; + }) + }), _defineProperty(_content2, _message_types.M_TEXT.name, "".concat(this.question.text, "\n").concat(this.answers.map(function (a, i) { + return "".concat(i + 1, ". ").concat(a.text); + }).join("\n"))), _content2) + }; + } + /** + * Creates a new PollStartEvent from question, answers, and metadata. + * @param {string} question The question to ask. + * @param {string} answers The answers. Should be unique within each other. + * @param {KNOWN_POLL_KIND|string} kind The kind of poll. + * @param {number} maxSelections The maximum number of selections. Must be 1 or higher. + * @returns {PollStartEvent} The representative poll start event. + */ + + }], [{ + key: "from", + value: function from(question, answers, kind) { + var _content3; + + var maxSelections = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; + return new PollStartEvent({ + type: _poll_types.M_POLL_START.name, + content: (_content3 = {}, _defineProperty(_content3, _message_types.M_TEXT.name, question), _defineProperty(_content3, _poll_types.M_POLL_START.name, { + question: _defineProperty({}, _message_types.M_TEXT.name, question), + kind: kind instanceof _NamespacedValue.NamespacedValue ? kind.name : kind, + max_selections: maxSelections, + answers: answers.map(function (a) { + return _defineProperty({ + id: makeId() + }, _message_types.M_TEXT.name, a); + }) + }), _content3) + }); + } + }]); + + return PollStartEvent; +}(_ExtensibleEvent2.ExtensibleEvent); + +exports.PollStartEvent = PollStartEvent; +var LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + +function makeId() { + return _toConsumableArray(Array(16)).map(function () { + return LETTERS.charAt(Math.floor(Math.random() * LETTERS.length)); + }).join(''); +} + +/***/ }), + +/***/ 2680: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.M_TEXT = exports.M_NOTICE = exports.M_MESSAGE = exports.M_HTML = exports.M_EMOTE = void 0; + +var _NamespacedValue = __nccwpck_require__(7631); + +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * The namespaced value for m.message + */ +var M_MESSAGE = new _NamespacedValue.UnstableValue("m.message", "org.matrix.msc1767.message"); +/** + * An m.message event rendering + */ + +exports.M_MESSAGE = M_MESSAGE; + +/** + * The namespaced value for m.text + */ +var M_TEXT = new _NamespacedValue.UnstableValue("m.text", "org.matrix.msc1767.text"); +/** + * The content for an m.text event + */ + +exports.M_TEXT = M_TEXT; + +/** + * The namespaced value for m.html + */ +var M_HTML = new _NamespacedValue.UnstableValue("m.html", "org.matrix.msc1767.html"); +/** + * The content for an m.html event + */ + +exports.M_HTML = M_HTML; + +/** + * The namespaced value for m.emote + */ +var M_EMOTE = new _NamespacedValue.UnstableValue("m.emote", "org.matrix.msc1767.emote"); +/** + * The event definition for an m.emote event (in content) + */ + +exports.M_EMOTE = M_EMOTE; + +/** + * The namespaced value for m.notice + */ +var M_NOTICE = new _NamespacedValue.UnstableValue("m.notice", "org.matrix.msc1767.notice"); +/** + * The event definition for an m.notice event (in content) + */ + +exports.M_NOTICE = M_NOTICE; + +/***/ }), + +/***/ 8287: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.M_POLL_START = exports.M_POLL_RESPONSE = exports.M_POLL_KIND_UNDISCLOSED = exports.M_POLL_KIND_DISCLOSED = exports.M_POLL_END = void 0; + +var _NamespacedValue = __nccwpck_require__(7631); + +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Identifier for a disclosed poll. + */ +var M_POLL_KIND_DISCLOSED = new _NamespacedValue.UnstableValue("m.poll.disclosed", "org.matrix.msc3381.poll.disclosed"); +/** + * Identifier for an undisclosed poll. + */ + +exports.M_POLL_KIND_DISCLOSED = M_POLL_KIND_DISCLOSED; +var M_POLL_KIND_UNDISCLOSED = new _NamespacedValue.UnstableValue("m.poll.undisclosed", "org.matrix.msc3381.poll.undisclosed"); +/** + * Any poll kind. + */ + +exports.M_POLL_KIND_UNDISCLOSED = M_POLL_KIND_UNDISCLOSED; + +/** + * The namespaced value for m.poll.start + */ +var M_POLL_START = new _NamespacedValue.UnstableValue("m.poll.start", "org.matrix.msc3381.poll.start"); +/** + * The m.poll.start type within event content + */ + +exports.M_POLL_START = M_POLL_START; + +/** + * The namespaced value for m.poll.response + */ +var M_POLL_RESPONSE = new _NamespacedValue.UnstableValue("m.poll.response", "org.matrix.msc3381.poll.response"); +/** + * The m.poll.response type within event content + */ + +exports.M_POLL_RESPONSE = M_POLL_RESPONSE; + +/** + * The namespaced value for m.poll.end + */ +var M_POLL_END = new _NamespacedValue.UnstableValue("m.poll.end", "org.matrix.msc3381.poll.end"); +/** + * The event definition for an m.poll.end event (in content) + */ + +exports.M_POLL_END = M_POLL_END; + +/***/ }), + +/***/ 9081: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.REFERENCE_RELATION = void 0; + +var _NamespacedValue = __nccwpck_require__(7631); + +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * The namespaced value for an m.reference relation + */ +var REFERENCE_RELATION = new _NamespacedValue.NamespacedValue("m.reference"); +/** + * Represents any relation type + */ + +exports.REFERENCE_RELATION = REFERENCE_RELATION; + +/***/ }), + +/***/ 9446: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); + +var _ExtensibleEvents = __nccwpck_require__(8636); + +Object.keys(_ExtensibleEvents).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _ExtensibleEvents[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _ExtensibleEvents[key]; + } + }); +}); + +var _IPartialEvent = __nccwpck_require__(9684); + +Object.keys(_IPartialEvent).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _IPartialEvent[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _IPartialEvent[key]; + } + }); +}); + +var _InvalidEventError = __nccwpck_require__(4585); + +Object.keys(_InvalidEventError).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _InvalidEventError[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _InvalidEventError[key]; + } + }); +}); + +var _NamespacedValue = __nccwpck_require__(7631); + +Object.keys(_NamespacedValue).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _NamespacedValue[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _NamespacedValue[key]; + } + }); +}); + +var _NamespacedMap = __nccwpck_require__(3444); + +Object.keys(_NamespacedMap).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _NamespacedMap[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _NamespacedMap[key]; + } + }); +}); + +var _types = __nccwpck_require__(5659); + +Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _types[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _types[key]; + } + }); +}); + +var _MessageMatchers = __nccwpck_require__(8236); + +Object.keys(_MessageMatchers).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _MessageMatchers[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _MessageMatchers[key]; + } + }); +}); + +var _events = __nccwpck_require__(6417); + +Object.keys(_events).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _events[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _events[key]; + } + }); +}); + +var _MRoomMessage = __nccwpck_require__(8284); + +Object.keys(_MRoomMessage).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _MRoomMessage[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _MRoomMessage[key]; + } + }); +}); + +var _MMessage = __nccwpck_require__(8382); + +Object.keys(_MMessage).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _MMessage[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _MMessage[key]; + } + }); +}); + +var _MPoll = __nccwpck_require__(5898); + +Object.keys(_MPoll).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _MPoll[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _MPoll[key]; + } + }); +}); + +var _relationship_types = __nccwpck_require__(9081); + +Object.keys(_relationship_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _relationship_types[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _relationship_types[key]; + } + }); +}); + +var _ExtensibleEvent = __nccwpck_require__(3953); + +Object.keys(_ExtensibleEvent).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _ExtensibleEvent[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _ExtensibleEvent[key]; + } + }); +}); + +var _message_types = __nccwpck_require__(2680); + +Object.keys(_message_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _message_types[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _message_types[key]; + } + }); +}); + +var _MessageEvent = __nccwpck_require__(7370); + +Object.keys(_MessageEvent).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _MessageEvent[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _MessageEvent[key]; + } + }); +}); + +var _EmoteEvent = __nccwpck_require__(4259); + +Object.keys(_EmoteEvent).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _EmoteEvent[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _EmoteEvent[key]; + } + }); +}); + +var _NoticeEvent = __nccwpck_require__(7335); + +Object.keys(_NoticeEvent).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _NoticeEvent[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _NoticeEvent[key]; + } + }); +}); + +var _poll_types = __nccwpck_require__(8287); + +Object.keys(_poll_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _poll_types[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _poll_types[key]; + } + }); +}); + +var _PollStartEvent = __nccwpck_require__(9681); + +Object.keys(_PollStartEvent).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _PollStartEvent[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _PollStartEvent[key]; + } + }); +}); + +var _PollResponseEvent = __nccwpck_require__(6442); + +Object.keys(_PollResponseEvent).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _PollResponseEvent[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _PollResponseEvent[key]; + } + }); +}); + +var _PollEndEvent = __nccwpck_require__(7198); + +Object.keys(_PollEndEvent).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _PollEndEvent[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _PollEndEvent[key]; + } + }); +}); + +/***/ }), + +/***/ 8284: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LEGACY_M_ROOM_MESSAGE = void 0; +exports.parseMRoomMessage = parseMRoomMessage; + +var _MessageEvent = __nccwpck_require__(7370); + +var _NoticeEvent = __nccwpck_require__(7335); + +var _EmoteEvent = __nccwpck_require__(4259); + +var _NamespacedValue = __nccwpck_require__(7631); + +var _message_types = __nccwpck_require__(2680); + +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; } + +var LEGACY_M_ROOM_MESSAGE = new _NamespacedValue.NamespacedValue("m.room.message"); +exports.LEGACY_M_ROOM_MESSAGE = LEGACY_M_ROOM_MESSAGE; + +function parseMRoomMessage(wireEvent) { + var _wireEvent$content, _wireEvent$content2, _wireEvent$content3; + + if (_message_types.M_MESSAGE.findIn(wireEvent.content) || _message_types.M_TEXT.findIn(wireEvent.content)) { + // We know enough about the event to coerce it into the right type + return new _MessageEvent.MessageEvent(wireEvent); + } + + var msgtype = (_wireEvent$content = wireEvent.content) === null || _wireEvent$content === void 0 ? void 0 : _wireEvent$content.msgtype; + var text = (_wireEvent$content2 = wireEvent.content) === null || _wireEvent$content2 === void 0 ? void 0 : _wireEvent$content2.body; + var html = ((_wireEvent$content3 = wireEvent.content) === null || _wireEvent$content3 === void 0 ? void 0 : _wireEvent$content3.format) === "org.matrix.custom.html" ? wireEvent.content.formatted_body : null; + + if (msgtype === "m.text") { + var _objectSpread2; + + return new _MessageEvent.MessageEvent(_objectSpread(_objectSpread({}, wireEvent), {}, { + content: _objectSpread(_objectSpread({}, wireEvent.content), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, _message_types.M_TEXT.name, text), _defineProperty(_objectSpread2, _message_types.M_HTML.name, html), _objectSpread2)) + })); + } else if (msgtype === "m.notice") { + var _objectSpread3; + + return new _NoticeEvent.NoticeEvent(_objectSpread(_objectSpread({}, wireEvent), {}, { + content: _objectSpread(_objectSpread({}, wireEvent.content), {}, (_objectSpread3 = {}, _defineProperty(_objectSpread3, _message_types.M_TEXT.name, text), _defineProperty(_objectSpread3, _message_types.M_HTML.name, html), _objectSpread3)) + })); + } else if (msgtype === "m.emote") { + var _objectSpread4; + + return new _EmoteEvent.EmoteEvent(_objectSpread(_objectSpread({}, wireEvent), {}, { + content: _objectSpread(_objectSpread({}, wireEvent.content), {}, (_objectSpread4 = {}, _defineProperty(_objectSpread4, _message_types.M_TEXT.name, text), _defineProperty(_objectSpread4, _message_types.M_HTML.name, html), _objectSpread4)) + })); + } else { + // TODO: Handle other types + return null; + } +} + +/***/ }), + +/***/ 8382: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.parseMMessage = parseMMessage; + +var _MessageEvent = __nccwpck_require__(7370); + +var _message_types = __nccwpck_require__(2680); + +var _EmoteEvent = __nccwpck_require__(4259); + +var _NoticeEvent = __nccwpck_require__(7335); + +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +function parseMMessage(wireEvent) { + if (_message_types.M_EMOTE.matches(wireEvent.type)) { + return new _EmoteEvent.EmoteEvent(wireEvent); + } else if (_message_types.M_NOTICE.matches(wireEvent.type)) { + return new _NoticeEvent.NoticeEvent(wireEvent); + } // default: return a generic message + + + return new _MessageEvent.MessageEvent(wireEvent); +} + +/***/ }), + +/***/ 5898: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.parseMPoll = parseMPoll; + +var _poll_types = __nccwpck_require__(8287); + +var _PollStartEvent = __nccwpck_require__(9681); + +var _PollResponseEvent = __nccwpck_require__(6442); + +var _PollEndEvent = __nccwpck_require__(7198); + +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +function parseMPoll(wireEvent) { + if (_poll_types.M_POLL_START.matches(wireEvent.type)) { + return new _PollStartEvent.PollStartEvent(wireEvent); + } else if (_poll_types.M_POLL_RESPONSE.matches(wireEvent.type)) { + return new _PollResponseEvent.PollResponseEvent(wireEvent); + } else if (_poll_types.M_POLL_END.matches(wireEvent.type)) { + return new _PollEndEvent.PollEndEvent(wireEvent); + } + + return null; // not a poll event +} + +/***/ }), + +/***/ 5659: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isOptionalAString = isOptionalAString; +exports.isProvided = isProvided; + +/* +Copyright 2021 - 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Represents an optional type: can either be T or a falsy value. + */ + +/** + * Determines if the given optional string is a defined string. + * @param {Optional} s The input string. + * @returns {boolean} True if the input is a defined string. + */ +function isOptionalAString(s) { + return isProvided(s) && typeof s === 'string'; +} +/** + * Determines if the given optional was provided a value. + * @param {Optional} s The optional to test. + * @returns {boolean} True if the value is defined. + */ + + +function isProvided(s) { + return s !== null && s !== undefined; +} +/** + * Represents either just T1, just T2, or T1 and T2 mixed. + */ + +/***/ }), + +/***/ 8236: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LegacyMsgType = void 0; +exports.isEventLike = isEventLike; + +var _message_types = __nccwpck_require__(2680); + +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Represents a legacy m.room.message msgtype + */ +var LegacyMsgType; +/** + * Determines if the given partial event looks similar enough to the given legacy msgtype + * to count as that message type. + * @param {IPartialEvent>} event The event. + * @param {LegacyMsgType} msgtype The message type to compare for. + * @returns {boolean} True if the event appears to look similar enough to the msgtype. + */ + +exports.LegacyMsgType = LegacyMsgType; + +(function (LegacyMsgType) { + LegacyMsgType["Text"] = "m.text"; + LegacyMsgType["Notice"] = "m.notice"; + LegacyMsgType["Emote"] = "m.emote"; +})(LegacyMsgType || (exports.LegacyMsgType = LegacyMsgType = {})); + +function isEventLike(event, msgtype) { + var content = event.content; + + if (msgtype === LegacyMsgType.Text) { + return _message_types.M_MESSAGE.matches(event.type) || event.type === "m.room.message" && (content === null || content === void 0 ? void 0 : content['msgtype']) === "m.text"; + } else if (msgtype === LegacyMsgType.Emote) { + return _message_types.M_EMOTE.matches(event.type) || event.type === "m.room.message" && (content === null || content === void 0 ? void 0 : content['msgtype']) === "m.emote"; + } else if (msgtype === LegacyMsgType.Notice) { + return _message_types.M_NOTICE.matches(event.type) || event.type === "m.room.message" && (content === null || content === void 0 ? void 0 : content['msgtype']) === "m.notice"; + } + + return false; +} + +/***/ }), + +/***/ 6417: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isEventTypeSame = isEventTypeSame; + +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Represents a potentially namespaced event type. + */ + +/** + * Determines if two event types are the same, including namespaces. + * @param {EventType} given The given event type. This will be compared + * against the expected type. + * @param {EventType} expected The expected event type. + * @returns {boolean} True if the given type matches the expected type. + */ +function isEventTypeSame(given, expected) { + if (typeof given === "string") { + if (typeof expected === "string") { + return expected === given; + } else { + return expected.matches(given); + } + } else { + if (typeof expected === "string") { + return given.matches(expected); + } else { + var expectedNs = expected; + var givenNs = given; + return expectedNs.matches(givenNs.name) || expectedNs.matches(givenNs.altName); + } + } +} + +/***/ }), + +/***/ 4020: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=IIdentityServerProvider.js.map + +/***/ }), + +/***/ 5393: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TweakName = exports.RuleId = exports.PushRuleKind = exports.PushRuleActionName = exports.DMMemberCountCondition = exports.ConditionOperator = exports.ConditionKind = void 0; +exports.isDmMemberCountCondition = isDmMemberCountCondition; +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +// allow camelcase as these are things that go onto the wire +/* eslint-disable camelcase */ +let PushRuleActionName = exports.PushRuleActionName = /*#__PURE__*/function (PushRuleActionName) { + PushRuleActionName["DontNotify"] = "dont_notify"; + PushRuleActionName["Notify"] = "notify"; + PushRuleActionName["Coalesce"] = "coalesce"; + return PushRuleActionName; +}({}); +let TweakName = exports.TweakName = /*#__PURE__*/function (TweakName) { + TweakName["Highlight"] = "highlight"; + TweakName["Sound"] = "sound"; + return TweakName; +}({}); +let ConditionOperator = exports.ConditionOperator = /*#__PURE__*/function (ConditionOperator) { + ConditionOperator["ExactEquals"] = "=="; + ConditionOperator["LessThan"] = "<"; + ConditionOperator["GreaterThan"] = ">"; + ConditionOperator["GreaterThanOrEqual"] = ">="; + ConditionOperator["LessThanOrEqual"] = "<="; + return ConditionOperator; +}({}); +const DMMemberCountCondition = exports.DMMemberCountCondition = "2"; +function isDmMemberCountCondition(condition) { + return condition === "==2" || condition === "2"; +} +let ConditionKind = exports.ConditionKind = /*#__PURE__*/function (ConditionKind) { + ConditionKind["EventMatch"] = "event_match"; + ConditionKind["EventPropertyIs"] = "event_property_is"; + ConditionKind["EventPropertyContains"] = "event_property_contains"; + ConditionKind["ContainsDisplayName"] = "contains_display_name"; + ConditionKind["RoomMemberCount"] = "room_member_count"; + ConditionKind["SenderNotificationPermission"] = "sender_notification_permission"; + ConditionKind["CallStarted"] = "call_started"; + ConditionKind["CallStartedPrefix"] = "org.matrix.msc3914.call_started"; + return ConditionKind; +}({}); // XXX: custom conditions are possible but always fail, and break the typescript discriminated union so ignore them here +// IPushRuleCondition> unfortunately does not resolve this at the time of writing. +let PushRuleKind = exports.PushRuleKind = /*#__PURE__*/function (PushRuleKind) { + PushRuleKind["Override"] = "override"; + PushRuleKind["ContentSpecific"] = "content"; + PushRuleKind["RoomSpecific"] = "room"; + PushRuleKind["SenderSpecific"] = "sender"; + PushRuleKind["Underride"] = "underride"; + return PushRuleKind; +}({}); +let RuleId = exports.RuleId = /*#__PURE__*/function (RuleId) { + RuleId["Master"] = ".m.rule.master"; + RuleId["IsUserMention"] = ".m.rule.is_user_mention"; + RuleId["IsRoomMention"] = ".m.rule.is_room_mention"; + RuleId["ContainsDisplayName"] = ".m.rule.contains_display_name"; + RuleId["ContainsUserName"] = ".m.rule.contains_user_name"; + RuleId["AtRoomNotification"] = ".m.rule.roomnotif"; + RuleId["DM"] = ".m.rule.room_one_to_one"; + RuleId["EncryptedDM"] = ".m.rule.encrypted_room_one_to_one"; + RuleId["Message"] = ".m.rule.message"; + RuleId["EncryptedMessage"] = ".m.rule.encrypted"; + RuleId["InviteToSelf"] = ".m.rule.invite_for_me"; + RuleId["MemberEvent"] = ".m.rule.member_event"; + RuleId["IncomingCall"] = ".m.rule.call"; + RuleId["SuppressNotices"] = ".m.rule.suppress_notices"; + RuleId["Tombstone"] = ".m.rule.tombstone"; + RuleId["PollStart"] = ".m.rule.poll_start"; + RuleId["PollStartUnstable"] = ".org.matrix.msc3930.rule.poll_start"; + RuleId["PollEnd"] = ".m.rule.poll_end"; + RuleId["PollEndUnstable"] = ".org.matrix.msc3930.rule.poll_end"; + RuleId["PollStartOneToOne"] = ".m.rule.poll_start_one_to_one"; + RuleId["PollStartOneToOneUnstable"] = ".org.matrix.msc3930.rule.poll_start_one_to_one"; + RuleId["PollEndOneToOne"] = ".m.rule.poll_end_one_to_one"; + RuleId["PollEndOneToOneUnstable"] = ".org.matrix.msc3930.rule.poll_end_one_to_one"; + return RuleId; +}({}); +/* eslint-enable camelcase */ +//# sourceMappingURL=PushRules.js.map + +/***/ }), + +/***/ 4291: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SSOAction = exports.IdentityProviderBrand = exports.DELEGATED_OIDC_COMPATIBILITY = void 0; +var _NamespacedValue = __nccwpck_require__(2418); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// disable lint because these are wire responses +/* eslint-disable camelcase */ + +/** + * Represents a response to the CSAPI `/refresh` endpoint. + */ + +/* eslint-enable camelcase */ + +/** + * Response to GET login flows as per https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3login + */ + +const DELEGATED_OIDC_COMPATIBILITY = exports.DELEGATED_OIDC_COMPATIBILITY = new _NamespacedValue.UnstableValue("delegated_oidc_compatibility", "org.matrix.msc3824.delegated_oidc_compatibility"); + +/** + * Representation of SSO flow as per https://spec.matrix.org/v1.3/client-server-api/#client-login-via-sso + */ +let IdentityProviderBrand = exports.IdentityProviderBrand = /*#__PURE__*/function (IdentityProviderBrand) { + IdentityProviderBrand["Gitlab"] = "gitlab"; + IdentityProviderBrand["Github"] = "github"; + IdentityProviderBrand["Apple"] = "apple"; + IdentityProviderBrand["Google"] = "google"; + IdentityProviderBrand["Facebook"] = "facebook"; + IdentityProviderBrand["Twitter"] = "twitter"; + return IdentityProviderBrand; +}({}); +let SSOAction = exports.SSOAction = /*#__PURE__*/function (SSOAction) { + SSOAction["LOGIN"] = "login"; + SSOAction["REGISTER"] = "register"; + return SSOAction; +}({}); +/** + * A client can identify a user using their Matrix ID. + * This can either be the fully qualified Matrix user ID, or just the localpart of the user ID. + * @see https://spec.matrix.org/v1.7/client-server-api/#matrix-user-id + */ +/** + * A client can identify a user using a 3PID associated with the user’s account on the homeserver, + * where the 3PID was previously associated using the /account/3pid API. + * See the 3PID Types Appendix for a list of Third-party ID media. + * @see https://spec.matrix.org/v1.7/client-server-api/#third-party-id + */ +/** + * A client can identify a user using a phone number associated with the user’s account, + * where the phone number was previously associated using the /account/3pid API. + * The phone number can be passed in as entered by the user; the homeserver will be responsible for canonicalising it. + * If the client wishes to canonicalise the phone number, + * then it can use the m.id.thirdparty identifier type with a medium of msisdn instead. + * + * The country is the two-letter uppercase ISO-3166-1 alpha-2 country code that the number in phone should be parsed as if it were dialled from. + * + * @see https://spec.matrix.org/v1.7/client-server-api/#phone-number + */ +/** + * User Identifiers usable for login & user-interactive authentication. + * + * Extensibly allows more than Matrix specified identifiers. + */ +/** + * Request body for POST /login request + * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login + */ +// Export for backwards compatibility +/** + * Response body for POST /login request + * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login + */ +/** + * The result of a successful `m.login.token` issuance request as per https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv1loginget_token + */ +//# sourceMappingURL=auth.js.map + +/***/ }), + +/***/ 8544: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.M_BEACON_INFO = exports.M_BEACON = void 0; +var _NamespacedValue = __nccwpck_require__(2418); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Beacon info and beacon event types as described in MSC3672 + * https://github.com/matrix-org/matrix-spec-proposals/pull/3672 + */ + +/** + * Beacon info events are state events. + * We have two requirements for these events: + * 1. they can only be written by their owner + * 2. a user can have an arbitrary number of beacon_info events + * + * 1. is achieved by setting the state_key to the owners mxid. + * Event keys in room state are a combination of `type` + `state_key`. + * To achieve an arbitrary number of only owner-writable state events + * we introduce a variable suffix to the event type + * + * @example + * ``` + * { + * "type": "m.beacon_info.@matthew:matrix.org.1", + * "state_key": "@matthew:matrix.org", + * "content": { + * "m.beacon_info": { + * "description": "The Matthew Tracker", + * "timeout": 86400000, + * }, + * // more content as described below + * } + * }, + * { + * "type": "m.beacon_info.@matthew:matrix.org.2", + * "state_key": "@matthew:matrix.org", + * "content": { + * "m.beacon_info": { + * "description": "Another different Matthew tracker", + * "timeout": 400000, + * }, + * // more content as described below + * } + * } + * ``` + */ + +/** + * Non-variable type for m.beacon_info event content + */ +const M_BEACON_INFO = exports.M_BEACON_INFO = new _NamespacedValue.UnstableValue("m.beacon_info", "org.matrix.msc3672.beacon_info"); +const M_BEACON = exports.M_BEACON = new _NamespacedValue.UnstableValue("m.beacon", "org.matrix.msc3672.beacon"); + +/** + * m.beacon_info Event example from the spec + * https://github.com/matrix-org/matrix-spec-proposals/pull/3672 + * @example + * ``` + * { + * "type": "m.beacon_info", + * "state_key": "@matthew:matrix.org", + * "content": { + * "m.beacon_info": { + * "description": "The Matthew Tracker", // same as an `m.location` description + * "timeout": 86400000, // how long from the last event until we consider the beacon inactive in milliseconds + * }, + * "m.ts": 1436829458432, // creation timestamp of the beacon on the client + * "m.asset": { + * "type": "m.self" // the type of asset being tracked as per MSC3488 + * } + * } + * } + * ``` + */ + +/** + * m.beacon_info.* event content + */ + +/** + * m.beacon event example + * https://github.com/matrix-org/matrix-spec-proposals/pull/3672 + * @example + * ``` + * { + * "type": "m.beacon", + * "sender": "@matthew:matrix.org", + * "content": { + * "m.relates_to": { // from MSC2674: https://github.com/matrix-org/matrix-doc/pull/2674 + * "rel_type": "m.reference", // from MSC3267: https://github.com/matrix-org/matrix-doc/pull/3267 + * "event_id": "$beacon_info" + * }, + * "m.location": { + * "uri": "geo:51.5008,0.1247;u=35", + * "description": "Arbitrary beacon information" + * }, + * "m.ts": 1636829458432, + * } + * } + * ``` + */ + +/** + * Content of an m.beacon event + */ +//# sourceMappingURL=beacon.js.map + +/***/ }), + +/***/ 7480: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=common.js.map + +/***/ }), + +/***/ 153: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=crypto.js.map + +/***/ }), + +/***/ 7487: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UNSTABLE_MSC3089_TREE_SUBTYPE = exports.UNSTABLE_MSC3089_LEAF = exports.UNSTABLE_MSC3089_BRANCH = exports.UNSTABLE_MSC3088_PURPOSE = exports.UNSTABLE_MSC3088_ENABLED = exports.UNSTABLE_MSC2716_MARKER = exports.UNSTABLE_ELEMENT_FUNCTIONAL_USERS = exports.UNSIGNED_THREAD_ID_FIELD = exports.UNSIGNED_MEMBERSHIP_FIELD = exports.ToDeviceMessageId = exports.RoomType = exports.RoomCreateTypeField = exports.RelationType = exports.PUSHER_ENABLED = exports.PUSHER_DEVICE_ID = exports.MsgType = exports.MSC3912_RELATION_BASED_REDACTIONS_PROP = exports.LOCAL_NOTIFICATION_SETTINGS_PREFIX = exports.EventType = exports.EVENT_VISIBILITY_CHANGE_TYPE = void 0; +var _NamespacedValue = __nccwpck_require__(2418); +var _beacon = __nccwpck_require__(8544); +var _callEventTypes = __nccwpck_require__(3376); +var _polls = __nccwpck_require__(6156); +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let EventType = exports.EventType = /*#__PURE__*/function (EventType) { + EventType["RoomCanonicalAlias"] = "m.room.canonical_alias"; + EventType["RoomCreate"] = "m.room.create"; + EventType["RoomJoinRules"] = "m.room.join_rules"; + EventType["RoomMember"] = "m.room.member"; + EventType["RoomThirdPartyInvite"] = "m.room.third_party_invite"; + EventType["RoomPowerLevels"] = "m.room.power_levels"; + EventType["RoomName"] = "m.room.name"; + EventType["RoomTopic"] = "m.room.topic"; + EventType["RoomAvatar"] = "m.room.avatar"; + EventType["RoomPinnedEvents"] = "m.room.pinned_events"; + EventType["RoomEncryption"] = "m.room.encryption"; + EventType["RoomHistoryVisibility"] = "m.room.history_visibility"; + EventType["RoomGuestAccess"] = "m.room.guest_access"; + EventType["RoomServerAcl"] = "m.room.server_acl"; + EventType["RoomTombstone"] = "m.room.tombstone"; + EventType["RoomPredecessor"] = "org.matrix.msc3946.room_predecessor"; + EventType["PolicyRuleUser"] = "m.policy.rule.user"; + EventType["PolicyRuleRoom"] = "m.policy.rule.room"; + EventType["PolicyRuleServer"] = "m.policy.rule.server"; + EventType["SpaceChild"] = "m.space.child"; + EventType["SpaceParent"] = "m.space.parent"; + EventType["RoomRedaction"] = "m.room.redaction"; + EventType["RoomMessage"] = "m.room.message"; + EventType["RoomMessageEncrypted"] = "m.room.encrypted"; + EventType["Sticker"] = "m.sticker"; + EventType["CallInvite"] = "m.call.invite"; + EventType["CallCandidates"] = "m.call.candidates"; + EventType["CallAnswer"] = "m.call.answer"; + EventType["CallHangup"] = "m.call.hangup"; + EventType["CallReject"] = "m.call.reject"; + EventType["CallSelectAnswer"] = "m.call.select_answer"; + EventType["CallNegotiate"] = "m.call.negotiate"; + EventType["CallSDPStreamMetadataChanged"] = "m.call.sdp_stream_metadata_changed"; + EventType["CallSDPStreamMetadataChangedPrefix"] = "org.matrix.call.sdp_stream_metadata_changed"; + EventType["CallReplaces"] = "m.call.replaces"; + EventType["CallAssertedIdentity"] = "m.call.asserted_identity"; + EventType["CallAssertedIdentityPrefix"] = "org.matrix.call.asserted_identity"; + EventType["CallEncryptionKeysPrefix"] = "io.element.call.encryption_keys"; + EventType["KeyVerificationRequest"] = "m.key.verification.request"; + EventType["KeyVerificationStart"] = "m.key.verification.start"; + EventType["KeyVerificationCancel"] = "m.key.verification.cancel"; + EventType["KeyVerificationMac"] = "m.key.verification.mac"; + EventType["KeyVerificationDone"] = "m.key.verification.done"; + EventType["KeyVerificationKey"] = "m.key.verification.key"; + EventType["KeyVerificationAccept"] = "m.key.verification.accept"; + EventType["KeyVerificationReady"] = "m.key.verification.ready"; + EventType["RoomMessageFeedback"] = "m.room.message.feedback"; + EventType["Reaction"] = "m.reaction"; + EventType["PollStart"] = "org.matrix.msc3381.poll.start"; + EventType["Typing"] = "m.typing"; + EventType["Receipt"] = "m.receipt"; + EventType["Presence"] = "m.presence"; + EventType["FullyRead"] = "m.fully_read"; + EventType["Tag"] = "m.tag"; + EventType["SpaceOrder"] = "org.matrix.msc3230.space_order"; + EventType["PushRules"] = "m.push_rules"; + EventType["Direct"] = "m.direct"; + EventType["IgnoredUserList"] = "m.ignored_user_list"; + EventType["RoomKey"] = "m.room_key"; + EventType["RoomKeyRequest"] = "m.room_key_request"; + EventType["ForwardedRoomKey"] = "m.forwarded_room_key"; + EventType["Dummy"] = "m.dummy"; + EventType["GroupCallPrefix"] = "org.matrix.msc3401.call"; + EventType["GroupCallMemberPrefix"] = "org.matrix.msc3401.call.member"; + EventType["CallNotify"] = "org.matrix.msc4075.call.notify"; + return EventType; +}({}); +let RelationType = exports.RelationType = /*#__PURE__*/function (RelationType) { + RelationType["Annotation"] = "m.annotation"; + RelationType["Replace"] = "m.replace"; + RelationType["Reference"] = "m.reference"; + RelationType["Thread"] = "m.thread"; + return RelationType; +}({}); +let MsgType = exports.MsgType = /*#__PURE__*/function (MsgType) { + MsgType["Text"] = "m.text"; + MsgType["Emote"] = "m.emote"; + MsgType["Notice"] = "m.notice"; + MsgType["Image"] = "m.image"; + MsgType["File"] = "m.file"; + MsgType["Audio"] = "m.audio"; + MsgType["Location"] = "m.location"; + MsgType["Video"] = "m.video"; + MsgType["KeyVerificationRequest"] = "m.key.verification.request"; + return MsgType; +}({}); +const RoomCreateTypeField = exports.RoomCreateTypeField = "type"; +let RoomType = exports.RoomType = /*#__PURE__*/function (RoomType) { + RoomType["Space"] = "m.space"; + RoomType["UnstableCall"] = "org.matrix.msc3417.call"; + RoomType["ElementVideo"] = "io.element.video"; + return RoomType; +}({}); +const ToDeviceMessageId = exports.ToDeviceMessageId = "org.matrix.msgid"; + +/** + * Identifier for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088) + * room purpose. Note that this reference is UNSTABLE and subject to breaking changes, + * including its eventual removal. + */ +const UNSTABLE_MSC3088_PURPOSE = exports.UNSTABLE_MSC3088_PURPOSE = new _NamespacedValue.UnstableValue("m.room.purpose", "org.matrix.msc3088.purpose"); + +/** + * Enabled flag for an [MSC3088](https://github.com/matrix-org/matrix-doc/pull/3088) + * room purpose. Note that this reference is UNSTABLE and subject to breaking changes, + * including its eventual removal. + */ +const UNSTABLE_MSC3088_ENABLED = exports.UNSTABLE_MSC3088_ENABLED = new _NamespacedValue.UnstableValue("m.enabled", "org.matrix.msc3088.enabled"); + +/** + * Subtype for an [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room. + * Note that this reference is UNSTABLE and subject to breaking changes, including its + * eventual removal. + */ +const UNSTABLE_MSC3089_TREE_SUBTYPE = exports.UNSTABLE_MSC3089_TREE_SUBTYPE = new _NamespacedValue.UnstableValue("m.data_tree", "org.matrix.msc3089.data_tree"); + +/** + * Leaf type for an event in a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room. + * Note that this reference is UNSTABLE and subject to breaking changes, including its + * eventual removal. + */ +const UNSTABLE_MSC3089_LEAF = exports.UNSTABLE_MSC3089_LEAF = new _NamespacedValue.UnstableValue("m.leaf", "org.matrix.msc3089.leaf"); + +/** + * Branch (Leaf Reference) type for the index approach in a + * [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) space-room. Note that this reference is + * UNSTABLE and subject to breaking changes, including its eventual removal. + */ +const UNSTABLE_MSC3089_BRANCH = exports.UNSTABLE_MSC3089_BRANCH = new _NamespacedValue.UnstableValue("m.branch", "org.matrix.msc3089.branch"); + +/** + * Marker event type to point back at imported historical content in a room. See + * [MSC2716](https://github.com/matrix-org/matrix-spec-proposals/pull/2716). + * Note that this reference is UNSTABLE and subject to breaking changes, + * including its eventual removal. + */ +const UNSTABLE_MSC2716_MARKER = exports.UNSTABLE_MSC2716_MARKER = new _NamespacedValue.UnstableValue("m.room.marker", "org.matrix.msc2716.marker"); + +/** + * Name of the request property for relation based redactions. + * {@link https://github.com/matrix-org/matrix-spec-proposals/pull/3912} + */ +const MSC3912_RELATION_BASED_REDACTIONS_PROP = exports.MSC3912_RELATION_BASED_REDACTIONS_PROP = new _NamespacedValue.UnstableValue("with_rel_types", "org.matrix.msc3912.with_relations"); + +/** + * Functional members type for declaring a purpose of room members (e.g. helpful bots). + * Note that this reference is UNSTABLE and subject to breaking changes, including its + * eventual removal. + * + * Schema (TypeScript): + * ``` + * { + * service_members?: string[] + * } + * ``` + * + * @example + * ``` + * { + * "service_members": [ + * "@helperbot:localhost", + * "@reminderbot:alice.tdl" + * ] + * } + * ``` + */ +const UNSTABLE_ELEMENT_FUNCTIONAL_USERS = exports.UNSTABLE_ELEMENT_FUNCTIONAL_USERS = new _NamespacedValue.UnstableValue("io.element.functional_members", "io.element.functional_members"); + +/** + * A type of message that affects visibility of a message, + * as per https://github.com/matrix-org/matrix-doc/pull/3531 + * + * @experimental + */ +const EVENT_VISIBILITY_CHANGE_TYPE = exports.EVENT_VISIBILITY_CHANGE_TYPE = new _NamespacedValue.UnstableValue("m.visibility", "org.matrix.msc3531.visibility"); + +/** + * https://github.com/matrix-org/matrix-doc/pull/3881 + * + * @experimental + */ +const PUSHER_ENABLED = exports.PUSHER_ENABLED = new _NamespacedValue.UnstableValue("enabled", "org.matrix.msc3881.enabled"); + +/** + * https://github.com/matrix-org/matrix-doc/pull/3881 + * + * @experimental + */ +const PUSHER_DEVICE_ID = exports.PUSHER_DEVICE_ID = new _NamespacedValue.UnstableValue("device_id", "org.matrix.msc3881.device_id"); + +/** + * https://github.com/matrix-org/matrix-doc/pull/3890 + * + * @experimental + */ +const LOCAL_NOTIFICATION_SETTINGS_PREFIX = exports.LOCAL_NOTIFICATION_SETTINGS_PREFIX = new _NamespacedValue.UnstableValue("m.local_notification_settings", "org.matrix.msc3890.local_notification_settings"); + +/** + * https://github.com/matrix-org/matrix-doc/pull/4023 + * + * @experimental + */ +const UNSIGNED_THREAD_ID_FIELD = exports.UNSIGNED_THREAD_ID_FIELD = new _NamespacedValue.UnstableValue("thread_id", "org.matrix.msc4023.thread_id"); + +/** + * https://github.com/matrix-org/matrix-spec-proposals/pull/4115 + * + * @experimental + */ +const UNSIGNED_MEMBERSHIP_FIELD = exports.UNSIGNED_MEMBERSHIP_FIELD = new _NamespacedValue.UnstableValue("membership", "io.element.msc4115.membership"); + +/** + * @deprecated in favour of {@link EncryptedFile} + */ + +/** + * Mapped type from event type to content type for all specified non-state room events. + */ + +/** + * Mapped type from event type to content type for all specified room state events. + */ +//# sourceMappingURL=event.js.map + +/***/ }), + +/***/ 8572: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.REFERENCE_RELATION = exports.M_TEXT = exports.M_MESSAGE = exports.M_HTML = void 0; +exports.isEventTypeSame = isEventTypeSame; +var _matrixEventsSdk = __nccwpck_require__(9446); +var _utilities = __nccwpck_require__(8305); +/* +Copyright 2021 - 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Types and utilities for MSC1767: Extensible events (version 1) in Matrix + +/** + * Represents the stable and unstable values of a given namespace. + */ + +/** + * Represents a namespaced value, if the value is a string. Used to extract provided types + * from a TSNamespace (in cases where only stable *or* unstable is provided). + */ + +/** + * Creates a type which is V when T is `never`, otherwise T. + */ +// See https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887 for details on the array syntax. + +/** + * The namespaced value for m.message + */ +const M_MESSAGE = exports.M_MESSAGE = new _matrixEventsSdk.UnstableValue("m.message", "org.matrix.msc1767.message"); + +/** + * An m.message event rendering + */ + +/** + * The content for an m.message event + */ + +/** + * The namespaced value for m.text + */ +const M_TEXT = exports.M_TEXT = new _matrixEventsSdk.UnstableValue("m.text", "org.matrix.msc1767.text"); + +/** + * The content for an m.text event + */ + +/** + * The namespaced value for m.html + */ +const M_HTML = exports.M_HTML = new _matrixEventsSdk.UnstableValue("m.html", "org.matrix.msc1767.html"); + +/** + * The content for an m.html event + */ + +/** + * The content for an m.message, m.text, or m.html event + */ + +/** + * The namespaced value for an m.reference relation + */ +const REFERENCE_RELATION = exports.REFERENCE_RELATION = new _matrixEventsSdk.NamespacedValue("m.reference"); + +/** + * Represents any relation type + */ + +/** + * An m.relates_to relationship + */ + +/** + * Partial types for a Matrix Event. + */ + +/** + * Represents a potentially namespaced event type. + */ + +/** + * Determines if two event types are the same, including namespaces. + * @param given - The given event type. This will be compared + * against the expected type. + * @param expected - The expected event type. + * @returns True if the given type matches the expected type. + */ +function isEventTypeSame(given, expected) { + if (typeof given === "string") { + if (typeof expected === "string") { + return expected === given; + } else { + return expected.matches(given); + } + } else { + if (typeof expected === "string") { + return given.matches(expected); + } else { + const expectedNs = expected; + const givenNs = given; + return expectedNs.matches(givenNs.name) || (0, _utilities.isProvided)(givenNs.altName) && expectedNs.matches(givenNs.altName); + } + } +} +//# sourceMappingURL=extensible_events.js.map + +/***/ }), + +/***/ 4999: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=local_notifications.js.map + +/***/ }), + +/***/ 1028: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.M_TIMESTAMP = exports.M_LOCATION = exports.M_ASSET = exports.LocationAssetType = void 0; +var _NamespacedValue = __nccwpck_require__(2418); +var _extensible_events = __nccwpck_require__(8572); +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +// Types for MSC3488 - m.location: Extending events with location data +let LocationAssetType = exports.LocationAssetType = /*#__PURE__*/function (LocationAssetType) { + LocationAssetType["Self"] = "m.self"; + LocationAssetType["Pin"] = "m.pin"; + return LocationAssetType; +}({}); +const M_ASSET = exports.M_ASSET = new _NamespacedValue.UnstableValue("m.asset", "org.matrix.msc3488.asset"); + +/** + * The event definition for an m.asset event (in content) + */ + +const M_TIMESTAMP = exports.M_TIMESTAMP = new _NamespacedValue.UnstableValue("m.ts", "org.matrix.msc3488.ts"); +/** + * The event definition for an m.ts event (in content) + */ + +const M_LOCATION = exports.M_LOCATION = new _NamespacedValue.UnstableValue("m.location", "org.matrix.msc3488.location"); + +/* From the spec at: + * https://github.com/matrix-org/matrix-doc/blob/matthew/location/proposals/3488-location.md +{ + "type": "m.room.message", + "content": { + "body": "Matthew was at geo:51.5008,0.1247;u=35 as of Sat Nov 13 18:50:58 2021", + "msgtype": "m.location", + "geo_uri": "geo:51.5008,0.1247;u=35", + "m.location": { + "uri": "geo:51.5008,0.1247;u=35", + "description": "Matthew's whereabouts", + }, + "m.asset": { + "type": "m.self" + }, + "m.text": "Matthew was at geo:51.5008,0.1247;u=35 as of Sat Nov 13 18:50:58 2021", + "m.ts": 1636829458432, + } +} +*/ + +/** + * The content for an m.location event + */ + +/** + * Possible content for location events as sent over the wire + */ +//# sourceMappingURL=location.js.map + +/***/ }), + +/***/ 915: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=media.js.map + +/***/ }), + +/***/ 9225: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.KnownMembership = void 0; +/* +Copyright 2024 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * Well-known values (from the spec or MSCs) that are allowed in the + * {@link Membership} type. + */ +let KnownMembership = exports.KnownMembership = /*#__PURE__*/function (KnownMembership) { + KnownMembership["Ban"] = "ban"; + KnownMembership["Invite"] = "invite"; + KnownMembership["Join"] = "join"; + KnownMembership["Knock"] = "knock"; + KnownMembership["Leave"] = "leave"; + return KnownMembership; +}({}); +/** + * The membership state for a user in a room [1]. A value from + * {@link KnownMembership} should be used where available, but all string values + * are allowed to provide flexibility for upcoming spec changes or proposals. + * + * [1] https://spec.matrix.org/latest/client-server-api/#mroommember + */ +//# sourceMappingURL=membership.js.map + +/***/ }), + +/***/ 3653: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Visibility = exports.RestrictedAllowType = exports.Preset = exports.JoinRule = exports.HistoryVisibility = exports.GuestAccess = void 0; +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let Visibility = exports.Visibility = /*#__PURE__*/function (Visibility) { + Visibility["Public"] = "public"; + Visibility["Private"] = "private"; + return Visibility; +}({}); +let Preset = exports.Preset = /*#__PURE__*/function (Preset) { + Preset["PrivateChat"] = "private_chat"; + Preset["TrustedPrivateChat"] = "trusted_private_chat"; + Preset["PublicChat"] = "public_chat"; + return Preset; +}({}); +// Knock and private are reserved keywords which are not yet implemented. +let JoinRule = exports.JoinRule = /*#__PURE__*/function (JoinRule) { + JoinRule["Public"] = "public"; + JoinRule["Invite"] = "invite"; + JoinRule["Private"] = "private"; + JoinRule["Knock"] = "knock"; + JoinRule["Restricted"] = "restricted"; + return JoinRule; +}({}); +let RestrictedAllowType = exports.RestrictedAllowType = /*#__PURE__*/function (RestrictedAllowType) { + RestrictedAllowType["RoomMembership"] = "m.room_membership"; + return RestrictedAllowType; +}({}); +let GuestAccess = exports.GuestAccess = /*#__PURE__*/function (GuestAccess) { + GuestAccess["CanJoin"] = "can_join"; + GuestAccess["Forbidden"] = "forbidden"; + return GuestAccess; +}({}); +let HistoryVisibility = exports.HistoryVisibility = /*#__PURE__*/function (HistoryVisibility) { + HistoryVisibility["Invited"] = "invited"; + HistoryVisibility["Joined"] = "joined"; + HistoryVisibility["Shared"] = "shared"; + HistoryVisibility["WorldReadable"] = "world_readable"; + return HistoryVisibility; +}({}); +//# sourceMappingURL=partials.js.map + +/***/ }), + +/***/ 6156: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.M_POLL_START = exports.M_POLL_RESPONSE = exports.M_POLL_KIND_UNDISCLOSED = exports.M_POLL_KIND_DISCLOSED = exports.M_POLL_END = void 0; +var _matrixEventsSdk = __nccwpck_require__(9446); +/* +Copyright 2022 - 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Identifier for a disclosed poll. + */ +const M_POLL_KIND_DISCLOSED = exports.M_POLL_KIND_DISCLOSED = new _matrixEventsSdk.UnstableValue("m.poll.disclosed", "org.matrix.msc3381.poll.disclosed"); + +/** + * Identifier for an undisclosed poll. + */ +const M_POLL_KIND_UNDISCLOSED = exports.M_POLL_KIND_UNDISCLOSED = new _matrixEventsSdk.UnstableValue("m.poll.undisclosed", "org.matrix.msc3381.poll.undisclosed"); + +/** + * Any poll kind. + */ + +/** + * Known poll kind namespaces. + */ + +/** + * The namespaced value for m.poll.start + */ +const M_POLL_START = exports.M_POLL_START = new _matrixEventsSdk.UnstableValue("m.poll.start", "org.matrix.msc3381.poll.start"); + +/** + * The m.poll.start type within event content + */ + +/** + * A poll answer. + */ + +/** + * The event definition for an m.poll.start event (in content) + */ + +/** + * The content for an m.poll.start event + */ + +/** + * The namespaced value for m.poll.response + */ +const M_POLL_RESPONSE = exports.M_POLL_RESPONSE = new _matrixEventsSdk.UnstableValue("m.poll.response", "org.matrix.msc3381.poll.response"); + +/** + * The m.poll.response type within event content + */ + +/** + * The event definition for an m.poll.response event (in content) + */ + +/** + * The content for an m.poll.response event + */ + +/** + * The namespaced value for m.poll.end + */ +const M_POLL_END = exports.M_POLL_END = new _matrixEventsSdk.UnstableValue("m.poll.end", "org.matrix.msc3381.poll.end"); + +/** + * The event definition for an m.poll.end event (in content) + */ + +/** + * The content for an m.poll.end event + */ +//# sourceMappingURL=polls.js.map + +/***/ }), + +/***/ 3255: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ReceiptType = exports.MAIN_ROOM_TIMELINE = void 0; +/* +Copyright 2022 Šimon Brandner + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let ReceiptType = exports.ReceiptType = /*#__PURE__*/function (ReceiptType) { + ReceiptType["Read"] = "m.read"; + ReceiptType["FullyRead"] = "m.fully_read"; + ReceiptType["ReadPrivate"] = "m.read.private"; + return ReceiptType; +}({}); +const MAIN_ROOM_TIMELINE = exports.MAIN_ROOM_TIMELINE = "main"; + +// We will only hold a synthetic receipt if we do not have a real receipt or the synthetic is newer. +// map: receipt type → user Id → receipt +//# sourceMappingURL=read_receipts.js.map + +/***/ }), + +/***/ 6647: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=registration.js.map + +/***/ }), + +/***/ 7878: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=requests.js.map + +/***/ }), + +/***/ 9245: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SearchOrderBy = void 0; +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +// Types relating to the /search API +/* eslint-disable camelcase */ +var GroupKey = /*#__PURE__*/function (GroupKey) { + GroupKey["RoomId"] = "room_id"; + GroupKey["Sender"] = "sender"; + return GroupKey; +}(GroupKey || {}); +let SearchOrderBy = exports.SearchOrderBy = /*#__PURE__*/function (SearchOrderBy) { + SearchOrderBy["Recent"] = "recent"; + SearchOrderBy["Rank"] = "rank"; + return SearchOrderBy; +}({}); +/* eslint-enable camelcase */ +//# sourceMappingURL=search.js.map + +/***/ }), + +/***/ 2478: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UNREAD_THREAD_NOTIFICATIONS = void 0; +var _NamespacedValue = __nccwpck_require__(2418); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * https://github.com/matrix-org/matrix-doc/pull/3773 + * + * @experimental + */ +const UNREAD_THREAD_NOTIFICATIONS = exports.UNREAD_THREAD_NOTIFICATIONS = new _NamespacedValue.ServerControlledNamespacedValue("unread_thread_notifications", "org.matrix.msc3773.unread_thread_notifications"); +//# sourceMappingURL=sync.js.map + +/***/ }), + +/***/ 6969: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ThreepidMedium = void 0; +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let ThreepidMedium = exports.ThreepidMedium = /*#__PURE__*/function (ThreepidMedium) { + ThreepidMedium["Email"] = "email"; + ThreepidMedium["Phone"] = "msisdn"; + return ThreepidMedium; +}({}); // TODO: Are these types universal, or specific to just /account/3pid? +//# sourceMappingURL=threepids.js.map + +/***/ }), + +/***/ 1489: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.M_TOPIC = void 0; +var _NamespacedValue = __nccwpck_require__(2418); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Extensible topic event type based on MSC3765 + * https://github.com/matrix-org/matrix-spec-proposals/pull/3765 + * + * @example + * ``` + * { + * "type": "m.room.topic, + * "state_key": "", + * "content": { + * "topic": "All about **pizza**", + * "m.topic": [{ + * "body": "All about **pizza**", + * "mimetype": "text/plain", + * }, { + * "body": "All about pizza", + * "mimetype": "text/html", + * }], + * } + * } + * ``` + */ + +/** + * The event type for an m.topic event (in content) + */ +const M_TOPIC = exports.M_TOPIC = new _NamespacedValue.UnstableValue("m.topic", "org.matrix.msc3765.topic"); + +/** + * The event content for an m.topic event (in content) + */ + +/** + * The event definition for an m.topic event (in content) + */ + +/** + * The event content for an m.room.topic event + */ +//# sourceMappingURL=topic.js.map + +/***/ }), + +/***/ 7821: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=uia.js.map + +/***/ }), + +/***/ 2418: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UnstableValue = exports.ServerControlledNamespacedValue = exports.NamespacedValue = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +/* +Copyright 2021 - 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Represents a simple Matrix namespaced value. This will assume that if a stable prefix + * is provided that the stable prefix should be used when representing the identifier. + */ +class NamespacedValue { + // Stable is optional, but one of the two parameters is required, hence the weird-looking types. + // Goal is to to have developers explicitly say there is no stable value (if applicable). + + constructor(stable, unstable) { + this.stable = stable; + this.unstable = unstable; + if (!this.unstable && !this.stable) { + throw new Error("One of stable or unstable values must be supplied"); + } + } + get name() { + if (this.stable) { + return this.stable; + } + return this.unstable; + } + get altName() { + if (!this.stable) { + return null; + } + return this.unstable; + } + get names() { + const names = [this.name]; + const altName = this.altName; + if (altName) names.push(altName); + return names; + } + matches(val) { + return this.name === val || this.altName === val; + } + + // this desperately wants https://github.com/microsoft/TypeScript/pull/26349 at the top level of the class + // so we can instantiate `NamespacedValue` as a default type for that namespace. + findIn(obj) { + let val = undefined; + if (this.name) { + val = obj === null || obj === void 0 ? void 0 : obj[this.name]; + } + if (!val && this.altName) { + val = obj === null || obj === void 0 ? void 0 : obj[this.altName]; + } + return val; + } + includedIn(arr) { + let included = false; + if (this.name) { + included = arr.includes(this.name); + } + if (!included && this.altName) { + included = arr.includes(this.altName); + } + return included; + } +} +exports.NamespacedValue = NamespacedValue; +class ServerControlledNamespacedValue extends NamespacedValue { + constructor(...args) { + super(...args); + (0, _defineProperty2.default)(this, "preferUnstable", false); + } + setPreferUnstable(preferUnstable) { + this.preferUnstable = preferUnstable; + } + get name() { + if (this.stable && !this.preferUnstable) { + return this.stable; + } + return this.unstable; + } +} + +/** + * Represents a namespaced value which prioritizes the unstable value over the stable + * value. + */ +exports.ServerControlledNamespacedValue = ServerControlledNamespacedValue; +class UnstableValue extends NamespacedValue { + // Note: Constructor difference is that `unstable` is *required*. + constructor(stable, unstable) { + super(stable, unstable); + if (!this.unstable) { + throw new Error("Unstable value must be supplied"); + } + } + get name() { + return this.unstable; + } + get altName() { + return this.stable; + } +} +exports.UnstableValue = UnstableValue; +//# sourceMappingURL=NamespacedValue.js.map + +/***/ }), + +/***/ 9554: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TypedReEmitter = exports.ReEmitter = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); /* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd @@ -23049,60 +131675,230 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** - * @module - */ +// eslint-disable-next-line no-restricted-imports + class ReEmitter { constructor(target) { - this.target = target; // We keep one bound event handler for each event name so we know - // what event is arriving - - this.boundHandlers = {}; + // Map from emitter to event name to re-emitter + (0, _defineProperty2.default)(this, "reEmitters", new WeakMap()); + this.target = target; } - - _handleEvent(eventName, ...args) { - this.target.emit(eventName, ...args); - } - reEmit(source, eventNames) { - // We include the source as the last argument for event handlers which may need it, - // such as read receipt listeners on the client class which won't have the context - // of the room. - const forSource = (handler, ...args) => { - handler(...args, source); - }; - + let reEmittersByEvent = this.reEmitters.get(source); + if (!reEmittersByEvent) { + reEmittersByEvent = new Map(); + this.reEmitters.set(source, reEmittersByEvent); + } for (const eventName of eventNames) { - if (this.boundHandlers[eventName] === undefined) { - this.boundHandlers[eventName] = this._handleEvent.bind(this, eventName); - } + if (reEmittersByEvent.has(eventName)) continue; - const boundHandler = forSource.bind(this, this.boundHandlers[eventName]); - source.on(eventName, boundHandler); + // We include the source as the last argument for event handlers which may need it, + // such as read receipt listeners on the client class which won't have the context + // of the room. + const forSource = (...args) => { + // EventEmitter special cases 'error' to make the emit function throw if no + // handler is attached, which sort of makes sense for making sure that something + // handles an error, but for re-emitting, there could be a listener on the original + // source object so the test doesn't really work. We *could* try to replicate the + // same logic and throw if there is no listener on either the source or the target, + // but this behaviour is fairly undesireable for us anyway: the main place we throw + // 'error' events is for calls, where error events are usually emitted some time + // later by a different part of the code where 'emit' throwing because the app hasn't + // added an error handler isn't terribly helpful. (A better fix in retrospect may + // have been to just avoid using the event name 'error', but backwards compat...) + if (eventName === "error" && this.target.listenerCount("error") === 0) return; + this.target.emit(eventName, ...args, source); + }; + source.on(eventName, forSource); + reEmittersByEvent.set(eventName, forSource); } } + stopReEmitting(source, eventNames) { + const reEmittersByEvent = this.reEmitters.get(source); + if (!reEmittersByEvent) return; // We were never re-emitting these events in the first place + for (const eventName of eventNames) { + source.off(eventName, reEmittersByEvent.get(eventName)); + reEmittersByEvent.delete(eventName); + } + if (reEmittersByEvent.size === 0) this.reEmitters.delete(source); + } } - exports.ReEmitter = ReEmitter; +class TypedReEmitter extends ReEmitter { + constructor(target) { + super(target); + } + reEmit(source, eventNames) { + super.reEmit(source, eventNames); + } + stopReEmitting(source, eventNames) { + super.stopReEmitting(source, eventNames); + } +} +exports.TypedReEmitter = TypedReEmitter; +//# sourceMappingURL=ReEmitter.js.map /***/ }), -/***/ 4514: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 6258: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.AutoDiscovery = void 0; +exports.ToDeviceMessageQueue = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _event = __nccwpck_require__(7487); +var _logger = __nccwpck_require__(3854); +var _client = __nccwpck_require__(9058); +var _scheduler = __nccwpck_require__(8314); +var _sync = __nccwpck_require__(9779); +var _utils = __nccwpck_require__(2557); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. -var _logger = __webpack_require__(3854); +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at -var _url = __webpack_require__(8835); + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const MAX_BATCH_SIZE = 20; + +/** + * Maintains a queue of outgoing to-device messages, sending them + * as soon as the homeserver is reachable. + */ +class ToDeviceMessageQueue { + constructor(client) { + (0, _defineProperty2.default)(this, "sending", false); + (0, _defineProperty2.default)(this, "running", true); + (0, _defineProperty2.default)(this, "retryTimeout", null); + (0, _defineProperty2.default)(this, "retryAttempts", 0); + (0, _defineProperty2.default)(this, "sendQueue", async () => { + if (this.retryTimeout !== null) clearTimeout(this.retryTimeout); + this.retryTimeout = null; + if (this.sending || !this.running) return; + _logger.logger.debug("Attempting to send queued to-device messages"); + this.sending = true; + let headBatch; + try { + while (this.running) { + headBatch = await this.client.store.getOldestToDeviceBatch(); + if (headBatch === null) break; + await this.sendBatch(headBatch); + await this.client.store.removeToDeviceBatch(headBatch.id); + this.retryAttempts = 0; + } + + // Make sure we're still running after the async tasks: if not, stop. + if (!this.running) return; + _logger.logger.debug("All queued to-device messages sent"); + } catch (e) { + ++this.retryAttempts; + // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line new-cap + const retryDelay = _scheduler.MatrixScheduler.RETRY_BACKOFF_RATELIMIT(null, this.retryAttempts, e); + if (retryDelay === -1) { + // the scheduler function doesn't differentiate between fatal errors and just getting + // bored and giving up for now + if (Math.floor(e.httpStatus / 100) === 4) { + _logger.logger.error("Fatal error when sending to-device message - dropping to-device batch!", e); + await this.client.store.removeToDeviceBatch(headBatch.id); + } else { + _logger.logger.info("Automatic retry limit reached for to-device messages."); + } + return; + } + _logger.logger.info(`Failed to send batch of to-device messages. Will retry in ${retryDelay}ms`, e); + this.retryTimeout = setTimeout(this.sendQueue, retryDelay); + } finally { + this.sending = false; + } + }); + /** + * Listen to sync state changes and automatically resend any pending events + * once syncing is resumed + */ + (0, _defineProperty2.default)(this, "onResumedSync", (state, oldState) => { + if (state === _sync.SyncState.Syncing && oldState !== _sync.SyncState.Syncing) { + _logger.logger.info(`Resuming queue after resumed sync`); + this.sendQueue(); + } + }); + this.client = client; + } + start() { + this.running = true; + this.sendQueue(); + this.client.on(_client.ClientEvent.Sync, this.onResumedSync); + } + stop() { + this.running = false; + if (this.retryTimeout !== null) clearTimeout(this.retryTimeout); + this.retryTimeout = null; + this.client.removeListener(_client.ClientEvent.Sync, this.onResumedSync); + } + async queueBatch(batch) { + const batches = []; + for (let i = 0; i < batch.batch.length; i += MAX_BATCH_SIZE) { + const batchWithTxnId = { + eventType: batch.eventType, + batch: batch.batch.slice(i, i + MAX_BATCH_SIZE), + txnId: this.client.makeTxnId() + }; + batches.push(batchWithTxnId); + const msgmap = batchWithTxnId.batch.map(msg => `${msg.userId}/${msg.deviceId} (msgid ${msg.payload[_event.ToDeviceMessageId]})`); + _logger.logger.info(`Enqueuing batch of to-device messages. type=${batch.eventType} txnid=${batchWithTxnId.txnId}`, msgmap); + } + await this.client.store.saveToDeviceBatches(batches); + this.sendQueue(); + } + /** + * Attempts to send a batch of to-device messages. + */ + async sendBatch(batch) { + const contentMap = new _utils.MapWithDefault(() => new Map()); + for (const item of batch.batch) { + contentMap.getOrCreate(item.userId).set(item.deviceId, item.payload); + } + _logger.logger.info(`Sending batch of ${batch.batch.length} to-device messages with ID ${batch.id} and txnId ${batch.txnId}`); + await this.client.sendToDevice(batch.eventType, contentMap, batch.txnId); + } +} +exports.ToDeviceMessageQueue = ToDeviceMessageQueue; +//# sourceMappingURL=ToDeviceMessageQueue.js.map + +/***/ }), + +/***/ 4514: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AutoDiscoveryError = exports.AutoDiscoveryAction = exports.AutoDiscovery = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _httpApi = __nccwpck_require__(7082); +var _versionSupport = __nccwpck_require__(5167); +var _AutoDiscovery; /* Copyright 2018 New Vector Ltd Copyright 2019 The Matrix.org Foundation C.I.C. @@ -23119,193 +131915,52 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - -/** @module auto-discovery */ // Dev note: Auto discovery is part of the spec. // See: https://matrix.org/docs/spec/client_server/r0.4.0.html#server-discovery - -/** - * Description for what an automatically discovered client configuration - * would look like. Although this is a class, it is recommended that it - * be treated as an interface definition rather than as a class. - * - * Additional properties than those defined here may be present, and - * should follow the Java package naming convention. - */ -class DiscoveredClientConfig { - // eslint-disable-line no-unused-vars - // Dev note: this is basically a copy/paste of the .well-known response - // object as defined in the spec. It does have additional information, - // however. Overall, this exists to serve as a place for documentation - // and not functionality. - // See https://matrix.org/docs/spec/client_server/r0.4.0.html#get-well-known-matrix-client - constructor() { - /** - * The homeserver configuration the client should use. This will - * always be present on the object. - * @type {{state: string, base_url: string}} The configuration. - */ - this["m.homeserver"] = { - /** - * The lookup result state. If this is anything other than - * AutoDiscovery.SUCCESS then base_url may be falsey. Additionally, - * if this is not AutoDiscovery.SUCCESS then the client should - * assume the other properties in the client config (such as - * the identity server configuration) are not valid. - */ - state: AutoDiscovery.PROMPT, - - /** - * If the state is AutoDiscovery.FAIL_ERROR or .FAIL_PROMPT - * then this will contain a human-readable (English) message - * for what went wrong. If the state is none of those previously - * mentioned, this will be falsey. - */ - error: "Something went wrong", - - /** - * The base URL clients should use to talk to the homeserver, - * particularly for the login process. May be falsey if the - * state is not AutoDiscovery.SUCCESS. - */ - base_url: "https://matrix.org" - }; - /** - * The identity server configuration the client should use. This - * will always be present on teh object. - * @type {{state: string, base_url: string}} The configuration. - */ - - this["m.identity_server"] = { - /** - * The lookup result state. If this is anything other than - * AutoDiscovery.SUCCESS then base_url may be falsey. - */ - state: AutoDiscovery.PROMPT, - - /** - * The base URL clients should use for interacting with the - * identity server. May be falsey if the state is not - * AutoDiscovery.SUCCESS. - */ - base_url: "https://vector.im" - }; - } - -} +let AutoDiscoveryAction = exports.AutoDiscoveryAction = /*#__PURE__*/function (AutoDiscoveryAction) { + AutoDiscoveryAction["SUCCESS"] = "SUCCESS"; + AutoDiscoveryAction["IGNORE"] = "IGNORE"; + AutoDiscoveryAction["PROMPT"] = "PROMPT"; + AutoDiscoveryAction["FAIL_PROMPT"] = "FAIL_PROMPT"; + AutoDiscoveryAction["FAIL_ERROR"] = "FAIL_ERROR"; + return AutoDiscoveryAction; +}({}); +let AutoDiscoveryError = exports.AutoDiscoveryError = /*#__PURE__*/function (AutoDiscoveryError) { + AutoDiscoveryError["Invalid"] = "Invalid homeserver discovery response"; + AutoDiscoveryError["GenericFailure"] = "Failed to get autodiscovery configuration from server"; + AutoDiscoveryError["InvalidHsBaseUrl"] = "Invalid base_url for m.homeserver"; + AutoDiscoveryError["InvalidHomeserver"] = "Homeserver URL does not appear to be a valid Matrix homeserver"; + AutoDiscoveryError["InvalidIsBaseUrl"] = "Invalid base_url for m.identity_server"; + AutoDiscoveryError["InvalidIdentityServer"] = "Identity server URL does not appear to be a valid identity server"; + AutoDiscoveryError["InvalidIs"] = "Invalid identity server discovery response"; + AutoDiscoveryError["MissingWellknown"] = "No .well-known JSON file found"; + AutoDiscoveryError["InvalidJson"] = "Invalid JSON"; + AutoDiscoveryError["UnsupportedHomeserverSpecVersion"] = "The homeserver does not meet the version requirements"; + AutoDiscoveryError["HomeserverTooOld"] = "The homeserver does not meet the version requirements"; + return AutoDiscoveryError; +}({}); // TODO: Implement when Sydent supports the `/versions` endpoint - https://github.com/matrix-org/sydent/issues/424 +//IdentityServerTooOld = "The identity server does not meet the minimum version requirements", /** * Utilities for automatically discovery resources, such as homeservers * for users to log in to. */ - - class AutoDiscovery { - // Dev note: the constants defined here are related to but not - // exactly the same as those in the spec. This is to hopefully - // translate the meaning of the states in the spec, but also - // support our own if needed. - static get ERROR_INVALID() { - return "Invalid homeserver discovery response"; - } - - static get ERROR_GENERIC_FAILURE() { - return "Failed to get autodiscovery configuration from server"; - } - - static get ERROR_INVALID_HS_BASE_URL() { - return "Invalid base_url for m.homeserver"; - } - - static get ERROR_INVALID_HOMESERVER() { - return "Homeserver URL does not appear to be a valid Matrix homeserver"; - } - - static get ERROR_INVALID_IS_BASE_URL() { - return "Invalid base_url for m.identity_server"; - } - - static get ERROR_INVALID_IDENTITY_SERVER() { - return "Identity server URL does not appear to be a valid identity server"; - } - - static get ERROR_INVALID_IS() { - return "Invalid identity server discovery response"; - } - - static get ERROR_MISSING_WELLKNOWN() { - return "No .well-known JSON file found"; - } - - static get ERROR_INVALID_JSON() { - return "Invalid JSON"; - } - - static get ALL_ERRORS() { - return [AutoDiscovery.ERROR_INVALID, AutoDiscovery.ERROR_GENERIC_FAILURE, AutoDiscovery.ERROR_INVALID_HS_BASE_URL, AutoDiscovery.ERROR_INVALID_HOMESERVER, AutoDiscovery.ERROR_INVALID_IS_BASE_URL, AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER, AutoDiscovery.ERROR_INVALID_IS, AutoDiscovery.ERROR_MISSING_WELLKNOWN, AutoDiscovery.ERROR_INVALID_JSON]; - } - /** - * The auto discovery failed. The client is expected to communicate - * the error to the user and refuse logging in. - * @return {string} - * @constructor - */ - - - static get FAIL_ERROR() { - return "FAIL_ERROR"; - } - /** - * The auto discovery failed, however the client may still recover - * from the problem. The client is recommended to that the same - * action it would for PROMPT while also warning the user about - * what went wrong. The client may also treat this the same as - * a FAIL_ERROR state. - * @return {string} - * @constructor - */ - - - static get FAIL_PROMPT() { - return "FAIL_PROMPT"; - } - /** - * The auto discovery didn't fail but did not find anything of - * interest. The client is expected to prompt the user for more - * information, or fail if it prefers. - * @return {string} - * @constructor - */ - - - static get PROMPT() { - return "PROMPT"; - } - /** - * The auto discovery was successful. - * @return {string} - * @constructor - */ - - - static get SUCCESS() { - return "SUCCESS"; - } /** * Validates and verifies client configuration information for purposes * of logging in. Such information includes the homeserver URL * and identity server URL the client would want. Additional details * may also be included, and will be transparently brought into the * response object unaltered. - * @param {string} wellknown The configuration object itself, as returned + * @param wellknown - The configuration object itself, as returned * by the .well-known auto-discovery endpoint. - * @return {Promise} Resolves to the verified + * @returns Promise which resolves to the verified * configuration, which may include error states. Rejects on unexpected * failure, not when verification fails. */ - - static async fromDiscoveryConfig(wellknown) { + var _hsVersions$raw; // Step 1 is to get the config, which is provided to us here. + // We default to an error state to make the first few checks easier to // write. We'll update the properties of this object over the duration // of this function. @@ -23323,56 +131978,69 @@ class AutoDiscovery { base_url: null } }; - - if (!wellknown || !wellknown["m.homeserver"]) { + if (!(wellknown !== null && wellknown !== void 0 && wellknown["m.homeserver"])) { _logger.logger.error("No m.homeserver key in config"); - clientConfig["m.homeserver"].state = AutoDiscovery.FAIL_PROMPT; clientConfig["m.homeserver"].error = AutoDiscovery.ERROR_INVALID; return Promise.resolve(clientConfig); } - if (!wellknown["m.homeserver"]["base_url"]) { _logger.logger.error("No m.homeserver base_url in config"); - clientConfig["m.homeserver"].state = AutoDiscovery.FAIL_PROMPT; clientConfig["m.homeserver"].error = AutoDiscovery.ERROR_INVALID_HS_BASE_URL; return Promise.resolve(clientConfig); - } // Step 2: Make sure the homeserver URL is valid *looking*. We'll make + } + + // Step 2: Make sure the homeserver URL is valid *looking*. We'll make // sure it points to a homeserver in Step 3. - - - const hsUrl = this._sanitizeWellKnownUrl(wellknown["m.homeserver"]["base_url"]); - + const hsUrl = this.sanitizeWellKnownUrl(wellknown["m.homeserver"]["base_url"]); if (!hsUrl) { _logger.logger.error("Invalid base_url for m.homeserver"); - clientConfig["m.homeserver"].error = AutoDiscovery.ERROR_INVALID_HS_BASE_URL; return Promise.resolve(clientConfig); - } // Step 3: Make sure the homeserver URL points to a homeserver. + } - - const hsVersions = await this._fetchWellKnownObject(`${hsUrl}/_matrix/client/versions`); - - if (!hsVersions || !hsVersions.raw["versions"]) { + // Step 3: Make sure the homeserver URL points to a homeserver. + const hsVersions = await this.fetchWellKnownObject(`${hsUrl}/_matrix/client/versions`); + if (!hsVersions || !Array.isArray((_hsVersions$raw = hsVersions.raw) === null || _hsVersions$raw === void 0 ? void 0 : _hsVersions$raw["versions"])) { _logger.logger.error("Invalid /versions response"); + clientConfig["m.homeserver"].error = AutoDiscovery.ERROR_INVALID_HOMESERVER; - clientConfig["m.homeserver"].error = AutoDiscovery.ERROR_INVALID_HOMESERVER; // Supply the base_url to the caller because they may be ignoring liveliness + // Supply the base_url to the caller because they may be ignoring liveliness // errors, like this one. - clientConfig["m.homeserver"].base_url = hsUrl; return Promise.resolve(clientConfig); - } // Step 4: Now that the homeserver looks valid, update our client config. + } + // Step 3.1: Non-spec check to ensure the server will actually work for us. We need to check if + // any of the versions in `SUPPORTED_MATRIX_VERSIONS` are listed in the /versions response. + const hsVersionSet = new Set(hsVersions.raw["versions"]); + let supportedVersionFound = false; + for (const version of _versionSupport.SUPPORTED_MATRIX_VERSIONS) { + if (hsVersionSet.has(version)) { + supportedVersionFound = true; + break; + } + } + if (!supportedVersionFound) { + _logger.logger.error("Homeserver does not meet version requirements"); + clientConfig["m.homeserver"].error = AutoDiscovery.ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION; + // Supply the base_url to the caller because they may be ignoring liveliness + // errors, like this one. + clientConfig["m.homeserver"].base_url = hsUrl; + return Promise.resolve(clientConfig); + } + + // Step 4: Now that the homeserver looks valid, update our client config. clientConfig["m.homeserver"] = { state: AutoDiscovery.SUCCESS, error: null, base_url: hsUrl - }; // Step 5: Try to pull out the identity server configuration + }; + // Step 5: Try to pull out the identity server configuration let isUrl = ""; - if (wellknown["m.identity_server"]) { // We prepare a failing identity server response to save lines later // in this branch. @@ -23383,81 +132051,81 @@ class AutoDiscovery { error: AutoDiscovery.ERROR_INVALID_IS, base_url: null } - }; // Step 5a: Make sure the URL is valid *looking*. We'll make sure it + }; + + // Step 5a: Make sure the URL is valid *looking*. We'll make sure it // points to an identity server in Step 5b. - - isUrl = this._sanitizeWellKnownUrl(wellknown["m.identity_server"]["base_url"]); - + isUrl = this.sanitizeWellKnownUrl(wellknown["m.identity_server"]["base_url"]); if (!isUrl) { _logger.logger.error("Invalid base_url for m.identity_server"); - failingClientConfig["m.identity_server"].error = AutoDiscovery.ERROR_INVALID_IS_BASE_URL; return Promise.resolve(failingClientConfig); - } // Step 5b: Verify there is an identity server listening on the provided + } + + // Step 5b: Verify there is an identity server listening on the provided // URL. + const isResponse = await this.fetchWellKnownObject(`${isUrl}/_matrix/identity/v2`); + if (!(isResponse !== null && isResponse !== void 0 && isResponse.raw) || isResponse.action !== AutoDiscoveryAction.SUCCESS) { + _logger.logger.error("Invalid /v2 response"); + failingClientConfig["m.identity_server"].error = AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER; - - const isResponse = await this._fetchWellKnownObject(`${isUrl}/_matrix/identity/api/v1`); - - if (!isResponse || !isResponse.raw || isResponse.action !== "SUCCESS") { - _logger.logger.error("Invalid /api/v1 response"); - - failingClientConfig["m.identity_server"].error = AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER; // Supply the base_url to the caller because they may be ignoring + // Supply the base_url to the caller because they may be ignoring // liveliness errors, like this one. - failingClientConfig["m.identity_server"].base_url = isUrl; return Promise.resolve(failingClientConfig); } - } // Step 6: Now that the identity server is valid, or never existed, + } + + // Step 6: Now that the identity server is valid, or never existed, // populate the IS section. - - - if (isUrl && isUrl.length > 0) { + if (isUrl && isUrl.toString().length > 0) { clientConfig["m.identity_server"] = { state: AutoDiscovery.SUCCESS, error: null, base_url: isUrl }; - } // Step 7: Copy any other keys directly into the clientConfig. This is for + } + + // Step 7: Copy any other keys directly into the clientConfig. This is for // things like custom configuration of services. - - - Object.keys(wellknown).map(k => { + Object.keys(wellknown).forEach(k => { if (k === "m.homeserver" || k === "m.identity_server") { // Only copy selected parts of the config to avoid overwriting // properties computed by the validation logic above. const notProps = ["error", "state", "base_url"]; - for (const prop of Object.keys(wellknown[k])) { if (notProps.includes(prop)) continue; + // @ts-ignore - ts gets unhappy as we're mixing types here clientConfig[k][prop] = wellknown[k][prop]; } } else { // Just copy the whole thing over otherwise clientConfig[k] = wellknown[k]; } - }); // Step 8: Give the config to the caller (finally) + }); + // Step 8: Give the config to the caller (finally) return Promise.resolve(clientConfig); } + /** * Attempts to automatically discover client configuration information * prior to logging in. Such information includes the homeserver URL * and identity server URL the client would want. Additional details * may also be discovered, and will be transparently included in the * response object unaltered. - * @param {string} domain The homeserver domain to perform discovery + * @param domain - The homeserver domain to perform discovery * on. For example, "matrix.org". - * @return {Promise} Resolves to the discovered + * @returns Promise which resolves to the discovered * configuration, which may include error states. Rejects on unexpected * failure, not when discovery fails. */ - - static async findClientConfig(domain) { if (!domain || typeof domain !== "string" || domain.length === 0) { throw new Error("'domain' must be a string of non-zero length"); - } // We use a .well-known lookup for all cases. According to the spec, we + } + + // We use a .well-known lookup for all cases. According to the spec, we // can do other discovery mechanisms if we want such as custom lookups // however we won't bother with that here (mostly because the spec only // supports .well-known right now). @@ -23467,11 +132135,10 @@ class AutoDiscovery { // but will return one anyways (with state PROMPT) to make development // easier for clients. If we can't get a homeserver URL, all bets are // off on the rest of the config and we'll assume it is invalid too. + // We default to an error state to make the first few checks easier to // write. We'll update the properties of this object over the duration // of this function. - - const clientConfig = { "m.homeserver": { state: AutoDiscovery.FAIL_ERROR, @@ -23485,17 +132152,16 @@ class AutoDiscovery { error: null, base_url: null } - }; // Step 1: Actually request the .well-known JSON file and make sure it + }; + + // Step 1: Actually request the .well-known JSON file and make sure it // at least has a homeserver definition. - - const wellknown = await this._fetchWellKnownObject(`https://${domain}/.well-known/matrix/client`); - - if (!wellknown || wellknown.action !== "SUCCESS") { + const domainWithProtocol = domain.includes("://") ? domain : `https://${domain}`; + const wellknown = await this.fetchWellKnownObject(`${domainWithProtocol}/.well-known/matrix/client`); + if (!wellknown || wellknown.action !== AutoDiscoveryAction.SUCCESS) { _logger.logger.error("No response or error when parsing .well-known"); - if (wellknown.reason) _logger.logger.error(wellknown.reason); - - if (wellknown.action === "IGNORE") { + if (wellknown.action === AutoDiscoveryAction.IGNORE) { clientConfig["m.homeserver"] = { state: AutoDiscovery.PROMPT, error: null, @@ -23506,75 +132172,73 @@ class AutoDiscovery { clientConfig["m.homeserver"].state = AutoDiscovery.FAIL_PROMPT; clientConfig["m.homeserver"].error = AutoDiscovery.ERROR_INVALID; } - return Promise.resolve(clientConfig); - } // Step 2: Validate and parse the config - + } + // Step 2: Validate and parse the config return AutoDiscovery.fromDiscoveryConfig(wellknown.raw); } + /** * Gets the raw discovery client configuration for the given domain name. * Should only be used if there's no validation to be done on the resulting * object, otherwise use findClientConfig(). - * @param {string} domain The domain to get the client config for. - * @returns {Promise} Resolves to the domain's client config. Can + * @param domain - The domain to get the client config for. + * @returns Promise which resolves to the domain's client config. Can * be an empty object. */ - - static async getRawClientConfig(domain) { + var _response$raw; if (!domain || typeof domain !== "string" || domain.length === 0) { throw new Error("'domain' must be a string of non-zero length"); } - - const response = await this._fetchWellKnownObject(`https://${domain}/.well-known/matrix/client`); + const response = await this.fetchWellKnownObject(`https://${domain}/.well-known/matrix/client`); if (!response) return {}; - return response.raw || {}; + return (_response$raw = response.raw) !== null && _response$raw !== void 0 ? _response$raw : {}; } + /** * Sanitizes a given URL to ensure it is either an HTTP or HTTP URL and * is suitable for the requirements laid out by .well-known auto discovery. * If valid, the URL will also be stripped of any trailing slashes. - * @param {string} url The potentially invalid URL to sanitize. - * @return {string|boolean} The sanitized URL or a falsey value if the URL is invalid. - * @private + * @param url - The potentially invalid URL to sanitize. + * @returns The sanitized URL or a falsey value if the URL is invalid. + * @internal */ - - - static _sanitizeWellKnownUrl(url) { + static sanitizeWellKnownUrl(url) { if (!url) return false; - try { - // We have to try and parse the URL using the NodeJS URL - // library if we're on NodeJS and use the browser's URL - // library when we're in a browser. To accomplish this, we - // try the NodeJS version first and fall back to the browser. - let parsed = null; - + var _parsed; + let parsed; try { - if (_url.URL) parsed = new _url.URL(url);else parsed = new URL(url); - } catch (e) { parsed = new URL(url); + } catch (e) { + _logger.logger.error("Could not parse url", e); } - - if (!parsed || !parsed.hostname) return false; + if (!((_parsed = parsed) !== null && _parsed !== void 0 && _parsed.hostname)) return false; if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return false; const port = parsed.port ? `:${parsed.port}` : ""; const path = parsed.pathname ? parsed.pathname : ""; let saferUrl = `${parsed.protocol}//${parsed.hostname}${port}${path}`; - if (saferUrl.endsWith("/")) { saferUrl = saferUrl.substring(0, saferUrl.length - 1); } - return saferUrl; } catch (e) { _logger.logger.error(e); - return false; } } + static fetch(resource, options) { + if (this.fetchFn) { + return this.fetchFn(resource, options); + } + return global.fetch(resource, options); + } + static setFetchFn(fetchFn) { + AutoDiscovery.fetchFn = fetchFn; + } + /** * Fetches a JSON object from a given URL, as expected by all .well-known * related lookups. If the server gives a 404 then the `action` will be @@ -23585,8446 +132249,109 @@ class AutoDiscovery { * the following properties: * raw: The JSON object returned by the server. * action: One of SUCCESS, IGNORE, or FAIL_PROMPT. - * reason: Relatively human readable description of what went wrong. + * reason: Relatively human-readable description of what went wrong. * error: The actual Error, if one exists. - * @param {string} url The URL to fetch a JSON object from. - * @return {Promise} Resolves to the returned state. - * @private + * @param url - The URL to fetch a JSON object from. + * @returns Promise which resolves to the returned state. + * @internal */ - - - static async _fetchWellKnownObject(url) { - return new Promise(function (resolve, reject) { - const request = __webpack_require__(1354).getRequest(); - - if (!request) throw new Error("No request library available"); - request({ - method: "GET", - uri: url, - timeout: 5000 - }, (err, response, body) => { - if (err || response && (response.statusCode < 200 || response.statusCode >= 300)) { - let action = "FAIL_PROMPT"; - let reason = (err ? err.message : null) || "General failure"; - - if (response && response.statusCode === 404) { - action = "IGNORE"; - reason = AutoDiscovery.ERROR_MISSING_WELLKNOWN; - } - - resolve({ - raw: {}, - action: action, - reason: reason, - error: err - }); - return; - } - - try { - resolve({ - raw: JSON.parse(body), - action: "SUCCESS" - }); - } catch (e) { - let reason = AutoDiscovery.ERROR_INVALID; - - if (e.name === "SyntaxError") { - reason = AutoDiscovery.ERROR_INVALID_JSON; - } - - resolve({ - raw: {}, - action: "FAIL_PROMPT", - reason: reason, - error: e - }); - } + static async fetchWellKnownObject(url) { + let response; + try { + response = await AutoDiscovery.fetch(url, { + method: _httpApi.Method.Get, + signal: (0, _httpApi.timeoutSignal)(5000) }); - }); + if (response.status === 404) { + return { + raw: {}, + action: AutoDiscoveryAction.IGNORE, + reason: AutoDiscovery.ERROR_MISSING_WELLKNOWN + }; + } + if (!response.ok) { + return { + raw: {}, + action: AutoDiscoveryAction.FAIL_PROMPT, + reason: "General failure" + }; + } + } catch (err) { + const error = err; + let reason = ""; + if (typeof error === "object") { + reason = error === null || error === void 0 ? void 0 : error.message; + } + return { + error, + raw: {}, + action: AutoDiscoveryAction.FAIL_PROMPT, + reason: reason || "General failure" + }; + } + try { + return { + raw: await response.json(), + action: AutoDiscoveryAction.SUCCESS + }; + } catch (err) { + const error = err; + return { + error, + raw: {}, + action: AutoDiscoveryAction.FAIL_PROMPT, + reason: (error === null || error === void 0 ? void 0 : error.name) === "SyntaxError" ? AutoDiscovery.ERROR_INVALID_JSON : AutoDiscovery.ERROR_INVALID + }; + } } - } - exports.AutoDiscovery = AutoDiscovery; +_AutoDiscovery = AutoDiscovery; +// Dev note: the constants defined here are related to but not +// exactly the same as those in the spec. This is to hopefully +// translate the meaning of the states in the spec, but also +// support our own if needed. +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_INVALID", AutoDiscoveryError.Invalid); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_GENERIC_FAILURE", AutoDiscoveryError.GenericFailure); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_INVALID_HS_BASE_URL", AutoDiscoveryError.InvalidHsBaseUrl); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_INVALID_HOMESERVER", AutoDiscoveryError.InvalidHomeserver); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_INVALID_IS_BASE_URL", AutoDiscoveryError.InvalidIsBaseUrl); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_INVALID_IDENTITY_SERVER", AutoDiscoveryError.InvalidIdentityServer); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_INVALID_IS", AutoDiscoveryError.InvalidIs); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_MISSING_WELLKNOWN", AutoDiscoveryError.MissingWellknown); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_INVALID_JSON", AutoDiscoveryError.InvalidJson); +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION", AutoDiscoveryError.UnsupportedHomeserverSpecVersion); +/** @deprecated Replaced by ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION */ +(0, _defineProperty2.default)(AutoDiscovery, "ERROR_HOMESERVER_TOO_OLD", _AutoDiscovery.ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION); +(0, _defineProperty2.default)(AutoDiscovery, "ALL_ERRORS", Object.keys(AutoDiscoveryError)); +/** + * The auto discovery failed. The client is expected to communicate + * the error to the user and refuse logging in. + */ +(0, _defineProperty2.default)(AutoDiscovery, "FAIL_ERROR", AutoDiscoveryAction.FAIL_ERROR); +/** + * The auto discovery failed, however the client may still recover + * from the problem. The client is recommended to that the same + * action it would for PROMPT while also warning the user about + * what went wrong. The client may also treat this the same as + * a FAIL_ERROR state. + */ +(0, _defineProperty2.default)(AutoDiscovery, "FAIL_PROMPT", AutoDiscoveryAction.FAIL_PROMPT); +/** + * The auto discovery didn't fail but did not find anything of + * interest. The client is expected to prompt the user for more + * information, or fail if it prefers. + */ +(0, _defineProperty2.default)(AutoDiscovery, "PROMPT", AutoDiscoveryAction.PROMPT); +/** + * The auto discovery was successful. + */ +(0, _defineProperty2.default)(AutoDiscovery, "SUCCESS", AutoDiscoveryAction.SUCCESS); +//# sourceMappingURL=autodiscovery.js.map /***/ }), -/***/ 9878: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var _interopRequireWildcard = __webpack_require__(8429); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MatrixBaseApis = MatrixBaseApis; - -var _serviceTypes = __webpack_require__(2967); - -var _logger = __webpack_require__(3854); - -var _pushprocessor = __webpack_require__(4131); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _httpApi = __webpack_require__(263); - -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. -Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/** - * This is an internal module. MatrixBaseApis is currently only meant to be used - * by {@link client~MatrixClient}. - * - * @module base-apis - */ -function termsUrlForService(serviceType, baseUrl) { - switch (serviceType) { - case _serviceTypes.SERVICE_TYPES.IS: - return baseUrl + _httpApi.PREFIX_IDENTITY_V2 + '/terms'; - - case _serviceTypes.SERVICE_TYPES.IM: - return baseUrl + '/_matrix/integrations/v1/terms'; - - default: - throw new Error('Unsupported service type'); - } -} -/** - * Low-level wrappers for the Matrix APIs - * - * @constructor - * - * @param {Object} opts Configuration options - * - * @param {string} opts.baseUrl Required. The base URL to the client-server - * HTTP API. - * - * @param {string} opts.idBaseUrl Optional. The base identity server URL for - * identity server requests. - * - * @param {Function} opts.request Required. The function to invoke for HTTP - * requests. The value of this property is typically require("request") - * as it returns a function which meets the required interface. See - * {@link requestFunction} for more information. - * - * @param {string} opts.accessToken The access_token for this user. - * - * @param {IdentityServerProvider} [opts.identityServer] - * Optional. A provider object with one function `getAccessToken`, which is a - * callback that returns a Promise of an identity access token to supply - * with identity requests. If the object is unset, no access token will be - * supplied. - * See also https://github.com/vector-im/element-web/issues/10615 which seeks to - * replace the previous approach of manual access tokens params with this - * callback throughout the SDK. - * - * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of - * time to wait before timing out HTTP requests. If not specified, there is no - * timeout. - * - * @param {Object} opts.queryParams Optional. Extra query parameters to append - * to all requests with this client. Useful for application services which require - * ?user_id=. - * - * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use - * Authorization header instead of query param to send the access token to the server. - */ - - -function MatrixBaseApis(opts) { - utils.checkObjectHasKeys(opts, ["baseUrl", "request"]); - this.baseUrl = opts.baseUrl; - this.idBaseUrl = opts.idBaseUrl; - this.identityServer = opts.identityServer; - const httpOpts = { - baseUrl: opts.baseUrl, - idBaseUrl: opts.idBaseUrl, - accessToken: opts.accessToken, - request: opts.request, - prefix: _httpApi.PREFIX_R0, - onlyData: true, - extraParams: opts.queryParams, - localTimeoutMs: opts.localTimeoutMs, - useAuthorizationHeader: opts.useAuthorizationHeader - }; - this._http = new _httpApi.MatrixHttpApi(this, httpOpts); - this._txnCtr = 0; -} -/** - * Get the Homeserver URL of this client - * @return {string} Homeserver URL of this client - */ - - -MatrixBaseApis.prototype.getHomeserverUrl = function () { - return this.baseUrl; -}; -/** - * Get the Identity Server URL of this client - * @param {boolean} stripProto whether or not to strip the protocol from the URL - * @return {string} Identity Server URL of this client - */ - - -MatrixBaseApis.prototype.getIdentityServerUrl = function (stripProto = false) { - if (stripProto && (this.idBaseUrl.startsWith("http://") || this.idBaseUrl.startsWith("https://"))) { - return this.idBaseUrl.split("://")[1]; - } - - return this.idBaseUrl; -}; -/** - * Set the Identity Server URL of this client - * @param {string} url New Identity Server URL - */ - - -MatrixBaseApis.prototype.setIdentityServerUrl = function (url) { - this.idBaseUrl = utils.ensureNoTrailingSlash(url); - - this._http.setIdBaseUrl(this.idBaseUrl); -}; -/** - * Get the access token associated with this account. - * @return {?String} The access_token or null - */ - - -MatrixBaseApis.prototype.getAccessToken = function () { - return this._http.opts.accessToken || null; -}; -/** - * @return {boolean} true if there is a valid access_token for this client. - */ - - -MatrixBaseApis.prototype.isLoggedIn = function () { - return this._http.opts.accessToken !== undefined; -}; -/** - * Make up a new transaction id - * - * @return {string} a new, unique, transaction id - */ - - -MatrixBaseApis.prototype.makeTxnId = function () { - return "m" + new Date().getTime() + "." + this._txnCtr++; -}; // Registration/Login operations -// ============================= - -/** - * Check whether a username is available prior to registration. An error response - * indicates an invalid/unavailable username. - * @param {string} username The username to check the availability of. - * @return {Promise} Resolves: to `true`. - */ - - -MatrixBaseApis.prototype.isUsernameAvailable = function (username) { - return this._http.authedRequest(undefined, "GET", '/register/available', { - username: username - }).then(response => { - return response.available; - }); -}; -/** - * @param {string} username - * @param {string} password - * @param {string} sessionId - * @param {Object} auth - * @param {Object} bindThreepids Set key 'email' to true to bind any email - * threepid uses during registration in the ID server. Set 'msisdn' to - * true to bind msisdn. - * @param {string} guestAccessToken - * @param {string} inhibitLogin - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.register = function (username, password, sessionId, auth, bindThreepids, guestAccessToken, inhibitLogin, callback) { - // backwards compat - if (bindThreepids === true) { - bindThreepids = { - email: true - }; - } else if (bindThreepids === null || bindThreepids === undefined) { - bindThreepids = {}; - } - - if (typeof inhibitLogin === 'function') { - callback = inhibitLogin; - inhibitLogin = undefined; - } - - if (sessionId) { - auth.session = sessionId; - } - - const params = { - auth: auth - }; - - if (username !== undefined && username !== null) { - params.username = username; - } - - if (password !== undefined && password !== null) { - params.password = password; - } - - if (bindThreepids.email) { - params.bind_email = true; - } - - if (bindThreepids.msisdn) { - params.bind_msisdn = true; - } - - if (guestAccessToken !== undefined && guestAccessToken !== null) { - params.guest_access_token = guestAccessToken; - } - - if (inhibitLogin !== undefined && inhibitLogin !== null) { - params.inhibit_login = inhibitLogin; - } // Temporary parameter added to make the register endpoint advertise - // msisdn flows. This exists because there are clients that break - // when given stages they don't recognise. This parameter will cease - // to be necessary once these old clients are gone. - // Only send it if we send any params at all (the password param is - // mandatory, so if we send any params, we'll send the password param) - - - if (password !== undefined && password !== null) { - params.x_show_msisdn = true; - } - - return this.registerRequest(params, undefined, callback); -}; -/** - * Register a guest account. - * @param {Object=} opts Registration options - * @param {Object} opts.body JSON HTTP body to provide. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.registerGuest = function (opts, callback) { - opts = opts || {}; - opts.body = opts.body || {}; - return this.registerRequest(opts.body, "guest", callback); -}; -/** - * @param {Object} data parameters for registration request - * @param {string=} kind type of user to register. may be "guest" - * @param {module:client.callback=} callback - * @return {Promise} Resolves: to the /register response - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.registerRequest = function (data, kind, callback) { - const params = {}; - - if (kind) { - params.kind = kind; - } - - return this._http.request(callback, "POST", "/register", params, data); -}; -/** - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.loginFlows = function (callback) { - return this._http.request(callback, "GET", "/login"); -}; -/** - * @param {string} loginType - * @param {Object} data - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.login = function (loginType, data, callback) { - const login_data = { - type: loginType - }; // merge data into login_data - - utils.extend(login_data, data); - return this._http.authedRequest((error, response) => { - if (response && response.access_token && response.user_id) { - this._http.opts.accessToken = response.access_token; - this.credentials = { - userId: response.user_id - }; - } - - if (callback) { - callback(error, response); - } - }, "POST", "/login", undefined, login_data); -}; -/** - * @param {string} user - * @param {string} password - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.loginWithPassword = function (user, password, callback) { - return this.login("m.login.password", { - user: user, - password: password - }, callback); -}; -/** - * @param {string} relayState URL Callback after SAML2 Authentication - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.loginWithSAML2 = function (relayState, callback) { - return this.login("m.login.saml2", { - relay_state: relayState - }, callback); -}; -/** - * @param {string} redirectUrl The URL to redirect to after the HS - * authenticates with CAS. - * @return {string} The HS URL to hit to begin the CAS login process. - */ - - -MatrixBaseApis.prototype.getCasLoginUrl = function (redirectUrl) { - return this.getSsoLoginUrl(redirectUrl, "cas"); -}; -/** - * @param {string} redirectUrl The URL to redirect to after the HS - * authenticates with the SSO. - * @param {string} loginType The type of SSO login we are doing (sso or cas). - * Defaults to 'sso'. - * @return {string} The HS URL to hit to begin the SSO login process. - */ - - -MatrixBaseApis.prototype.getSsoLoginUrl = function (redirectUrl, loginType) { - if (loginType === undefined) { - loginType = "sso"; - } - - return this._http.getUrl("/login/" + loginType + "/redirect", { - "redirectUrl": redirectUrl - }, _httpApi.PREFIX_R0); -}; -/** - * @param {string} token Login token previously received from homeserver - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.loginWithToken = function (token, callback) { - return this.login("m.login.token", { - token: token - }, callback); -}; -/** - * Logs out the current session. - * Obviously, further calls that require authorisation should fail after this - * method is called. The state of the MatrixClient object is not affected: - * it is up to the caller to either reset or destroy the MatrixClient after - * this method succeeds. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: On success, the empty object - */ - - -MatrixBaseApis.prototype.logout = function (callback) { - return this._http.authedRequest(callback, "POST", '/logout'); -}; -/** - * Deactivates the logged-in account. - * Obviously, further calls that require authorisation should fail after this - * method is called. The state of the MatrixClient object is not affected: - * it is up to the caller to either reset or destroy the MatrixClient after - * this method succeeds. - * @param {object} auth Optional. Auth data to supply for User-Interactive auth. - * @param {boolean} erase Optional. If set, send as `erase` attribute in the - * JSON request body, indicating whether the account should be erased. Defaults - * to false. - * @return {Promise} Resolves: On success, the empty object - */ - - -MatrixBaseApis.prototype.deactivateAccount = function (auth, erase) { - if (typeof erase === 'function') { - throw new Error('deactivateAccount no longer accepts a callback parameter'); - } - - const body = {}; - - if (auth) { - body.auth = auth; - } - - if (erase !== undefined) { - body.erase = erase; - } - - return this._http.authedRequest(undefined, "POST", '/account/deactivate', undefined, body); -}; -/** - * Get the fallback URL to use for unknown interactive-auth stages. - * - * @param {string} loginType the type of stage being attempted - * @param {string} authSessionId the auth session ID provided by the homeserver - * - * @return {string} HS URL to hit to for the fallback interface - */ - - -MatrixBaseApis.prototype.getFallbackAuthUrl = function (loginType, authSessionId) { - const path = utils.encodeUri("/auth/$loginType/fallback/web", { - $loginType: loginType - }); - return this._http.getUrl(path, { - session: authSessionId - }, _httpApi.PREFIX_R0); -}; // Room operations -// =============== - -/** - * Create a new room. - * @param {Object} options a list of options to pass to the /createRoom API. - * @param {string} options.room_alias_name The alias localpart to assign to - * this room. - * @param {string} options.visibility Either 'public' or 'private'. - * @param {string[]} options.invite A list of user IDs to invite to this room. - * @param {string} options.name The name to give this room. - * @param {string} options.topic The topic to give this room. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: {room_id: {string}, - * room_alias: {string(opt)}} - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.createRoom = async function (options, callback) { - // some valid options include: room_alias_name, visibility, invite - // inject the id_access_token if inviting 3rd party addresses - const invitesNeedingToken = (options.invite_3pid || []).filter(i => !i.id_access_token); - - if (invitesNeedingToken.length > 0 && this.identityServer && this.identityServer.getAccessToken && (await this.doesServerAcceptIdentityAccessToken())) { - const identityAccessToken = await this.identityServer.getAccessToken(); - - if (identityAccessToken) { - for (const invite of invitesNeedingToken) { - invite.id_access_token = identityAccessToken; - } - } - } - - return this._http.authedRequest(callback, "POST", "/createRoom", undefined, options); -}; -/** - * Fetches relations for a given event - * @param {string} roomId the room of the event - * @param {string} eventId the id of the event - * @param {string} relationType the rel_type of the relations requested - * @param {string} eventType the event type of the relations requested - * @param {Object} opts options with optional values for the request. - * @param {Object} opts.from the pagination token returned from a previous request as `next_batch` to return following relations. - * @return {Object} the response, with chunk and next_batch. - */ - - -MatrixBaseApis.prototype.fetchRelations = async function (roomId, eventId, relationType, eventType, opts) { - const queryParams = {}; - - if (opts.from) { - queryParams.from = opts.from; - } - - const queryString = utils.encodeParams(queryParams); - const path = utils.encodeUri("/rooms/$roomId/relations/$eventId/$relationType/$eventType?" + queryString, { - $roomId: roomId, - $eventId: eventId, - $relationType: relationType, - $eventType: eventType - }); - const response = await this._http.authedRequest(undefined, "GET", path, null, null, { - prefix: _httpApi.PREFIX_UNSTABLE - }); - return response; -}; -/** - * @param {string} roomId - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.roomState = function (roomId, callback) { - const path = utils.encodeUri("/rooms/$roomId/state", { - $roomId: roomId - }); - return this._http.authedRequest(callback, "GET", path); -}; -/** - * Get an event in a room by its event id. - * @param {string} roomId - * @param {string} eventId - * @param {module:client.callback} callback Optional. - * - * @return {Promise} Resolves to an object containing the event. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.fetchRoomEvent = function (roomId, eventId, callback) { - const path = utils.encodeUri("/rooms/$roomId/event/$eventId", { - $roomId: roomId, - $eventId: eventId - }); - return this._http.authedRequest(callback, "GET", path); -}; -/** - * @param {string} roomId - * @param {string} includeMembership the membership type to include in the response - * @param {string} excludeMembership the membership type to exclude from the response - * @param {string} atEventId the id of the event for which moment in the timeline the members should be returned for - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: dictionary of userid to profile information - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.members = function (roomId, includeMembership, excludeMembership, atEventId, callback) { - const queryParams = {}; - - if (includeMembership) { - queryParams.membership = includeMembership; - } - - if (excludeMembership) { - queryParams.not_membership = excludeMembership; - } - - if (atEventId) { - queryParams.at = atEventId; - } - - const queryString = utils.encodeParams(queryParams); - const path = utils.encodeUri("/rooms/$roomId/members?" + queryString, { - $roomId: roomId - }); - return this._http.authedRequest(callback, "GET", path); -}; -/** - * Upgrades a room to a new protocol version - * @param {string} roomId - * @param {string} newVersion The target version to upgrade to - * @return {Promise} Resolves: Object with key 'replacement_room' - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.upgradeRoom = function (roomId, newVersion) { - const path = utils.encodeUri("/rooms/$roomId/upgrade", { - $roomId: roomId - }); - return this._http.authedRequest(undefined, "POST", path, undefined, { - new_version: newVersion - }); -}; -/** - * @param {string} groupId - * @return {Promise} Resolves: Group summary object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getGroupSummary = function (groupId) { - const path = utils.encodeUri("/groups/$groupId/summary", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "GET", path); -}; -/** - * @param {string} groupId - * @return {Promise} Resolves: Group profile object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getGroupProfile = function (groupId) { - const path = utils.encodeUri("/groups/$groupId/profile", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "GET", path); -}; -/** - * @param {string} groupId - * @param {Object} profile The group profile object - * @param {string=} profile.name Name of the group - * @param {string=} profile.avatar_url MXC avatar URL - * @param {string=} profile.short_description A short description of the room - * @param {string=} profile.long_description A longer HTML description of the room - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setGroupProfile = function (groupId, profile) { - const path = utils.encodeUri("/groups/$groupId/profile", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "POST", path, undefined, profile); -}; -/** - * @param {string} groupId - * @param {object} policy The join policy for the group. Must include at - * least a 'type' field which is 'open' if anyone can join the group - * the group without prior approval, or 'invite' if an invite is - * required to join. - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setGroupJoinPolicy = function (groupId, policy) { - const path = utils.encodeUri("/groups/$groupId/settings/m.join_policy", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, { - 'm.join_policy': policy - }); -}; -/** - * @param {string} groupId - * @return {Promise} Resolves: Group users list object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getGroupUsers = function (groupId) { - const path = utils.encodeUri("/groups/$groupId/users", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "GET", path); -}; -/** - * @param {string} groupId - * @return {Promise} Resolves: Group users list object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getGroupInvitedUsers = function (groupId) { - const path = utils.encodeUri("/groups/$groupId/invited_users", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "GET", path); -}; -/** - * @param {string} groupId - * @return {Promise} Resolves: Group rooms list object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getGroupRooms = function (groupId) { - const path = utils.encodeUri("/groups/$groupId/rooms", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "GET", path); -}; -/** - * @param {string} groupId - * @param {string} userId - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.inviteUserToGroup = function (groupId, userId) { - const path = utils.encodeUri("/groups/$groupId/admin/users/invite/$userId", { - $groupId: groupId, - $userId: userId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, {}); -}; -/** - * @param {string} groupId - * @param {string} userId - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.removeUserFromGroup = function (groupId, userId) { - const path = utils.encodeUri("/groups/$groupId/admin/users/remove/$userId", { - $groupId: groupId, - $userId: userId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, {}); -}; -/** - * @param {string} groupId - * @param {string} userId - * @param {string} roleId Optional. - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.addUserToGroupSummary = function (groupId, userId, roleId) { - const path = utils.encodeUri(roleId ? "/groups/$groupId/summary/$roleId/users/$userId" : "/groups/$groupId/summary/users/$userId", { - $groupId: groupId, - $roleId: roleId, - $userId: userId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, {}); -}; -/** - * @param {string} groupId - * @param {string} userId - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.removeUserFromGroupSummary = function (groupId, userId) { - const path = utils.encodeUri("/groups/$groupId/summary/users/$userId", { - $groupId: groupId, - $userId: userId - }); - return this._http.authedRequest(undefined, "DELETE", path, undefined, {}); -}; -/** - * @param {string} groupId - * @param {string} roomId - * @param {string} categoryId Optional. - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.addRoomToGroupSummary = function (groupId, roomId, categoryId) { - const path = utils.encodeUri(categoryId ? "/groups/$groupId/summary/$categoryId/rooms/$roomId" : "/groups/$groupId/summary/rooms/$roomId", { - $groupId: groupId, - $categoryId: categoryId, - $roomId: roomId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, {}); -}; -/** - * @param {string} groupId - * @param {string} roomId - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.removeRoomFromGroupSummary = function (groupId, roomId) { - const path = utils.encodeUri("/groups/$groupId/summary/rooms/$roomId", { - $groupId: groupId, - $roomId: roomId - }); - return this._http.authedRequest(undefined, "DELETE", path, undefined, {}); -}; -/** - * @param {string} groupId - * @param {string} roomId - * @param {bool} isPublic Whether the room-group association is visible to non-members - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.addRoomToGroup = function (groupId, roomId, isPublic) { - if (isPublic === undefined) { - isPublic = true; - } - - const path = utils.encodeUri("/groups/$groupId/admin/rooms/$roomId", { - $groupId: groupId, - $roomId: roomId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, { - "m.visibility": { - type: isPublic ? "public" : "private" - } - }); -}; -/** - * Configure the visibility of a room-group association. - * @param {string} groupId - * @param {string} roomId - * @param {bool} isPublic Whether the room-group association is visible to non-members - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.updateGroupRoomVisibility = function (groupId, roomId, isPublic) { - // NB: The /config API is generic but there's not much point in exposing this yet as synapse - // is the only server to implement this. In future we should consider an API that allows - // arbitrary configuration, i.e. "config/$configKey". - const path = utils.encodeUri("/groups/$groupId/admin/rooms/$roomId/config/m.visibility", { - $groupId: groupId, - $roomId: roomId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, { - type: isPublic ? "public" : "private" - }); -}; -/** - * @param {string} groupId - * @param {string} roomId - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.removeRoomFromGroup = function (groupId, roomId) { - const path = utils.encodeUri("/groups/$groupId/admin/rooms/$roomId", { - $groupId: groupId, - $roomId: roomId - }); - return this._http.authedRequest(undefined, "DELETE", path, undefined, {}); -}; -/** - * @param {string} groupId - * @param {Object} opts Additional options to send alongside the acceptance. - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.acceptGroupInvite = function (groupId, opts = null) { - const path = utils.encodeUri("/groups/$groupId/self/accept_invite", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, opts || {}); -}; -/** - * @param {string} groupId - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.joinGroup = function (groupId) { - const path = utils.encodeUri("/groups/$groupId/self/join", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, {}); -}; -/** - * @param {string} groupId - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.leaveGroup = function (groupId) { - const path = utils.encodeUri("/groups/$groupId/self/leave", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, {}); -}; -/** - * @return {Promise} Resolves: The groups to which the user is joined - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getJoinedGroups = function () { - const path = utils.encodeUri("/joined_groups"); - return this._http.authedRequest(undefined, "GET", path); -}; -/** - * @param {Object} content Request content - * @param {string} content.localpart The local part of the desired group ID - * @param {Object} content.profile Group profile object - * @return {Promise} Resolves: Object with key group_id: id of the created group - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.createGroup = function (content) { - const path = utils.encodeUri("/create_group"); - return this._http.authedRequest(undefined, "POST", path, undefined, content); -}; -/** - * @param {string[]} userIds List of user IDs - * @return {Promise} Resolves: Object as exmaple below - * - * { - * "users": { - * "@bob:example.com": { - * "+example:example.com" - * } - * } - * } - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getPublicisedGroups = function (userIds) { - const path = utils.encodeUri("/publicised_groups"); - return this._http.authedRequest(undefined, "POST", path, undefined, { - user_ids: userIds - }); -}; -/** - * @param {string} groupId - * @param {bool} isPublic Whether the user's membership of this group is made public - * @return {Promise} Resolves: Empty object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setGroupPublicity = function (groupId, isPublic) { - const path = utils.encodeUri("/groups/$groupId/self/update_publicity", { - $groupId: groupId - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, { - publicise: isPublic - }); -}; -/** - * Retrieve a state event. - * @param {string} roomId - * @param {string} eventType - * @param {string} stateKey - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getStateEvent = function (roomId, eventType, stateKey, callback) { - const pathParams = { - $roomId: roomId, - $eventType: eventType, - $stateKey: stateKey - }; - let path = utils.encodeUri("/rooms/$roomId/state/$eventType", pathParams); - - if (stateKey !== undefined) { - path = utils.encodeUri(path + "/$stateKey", pathParams); - } - - return this._http.authedRequest(callback, "GET", path); -}; -/** - * @param {string} roomId - * @param {string} eventType - * @param {Object} content - * @param {string} stateKey - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.sendStateEvent = function (roomId, eventType, content, stateKey, callback) { - const pathParams = { - $roomId: roomId, - $eventType: eventType, - $stateKey: stateKey - }; - let path = utils.encodeUri("/rooms/$roomId/state/$eventType", pathParams); - - if (stateKey !== undefined) { - path = utils.encodeUri(path + "/$stateKey", pathParams); - } - - return this._http.authedRequest(callback, "PUT", path, undefined, content); -}; -/** - * @param {string} roomId - * @param {Number} limit - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.roomInitialSync = function (roomId, limit, callback) { - if (utils.isFunction(limit)) { - callback = limit; - limit = undefined; - } - - const path = utils.encodeUri("/rooms/$roomId/initialSync", { - $roomId: roomId - }); - - if (!limit) { - limit = 30; - } - - return this._http.authedRequest(callback, "GET", path, { - limit: limit - }); -}; -/** - * Set a marker to indicate the point in a room before which the user has read every - * event. This can be retrieved from room account data (the event type is `m.fully_read`) - * and displayed as a horizontal line in the timeline that is visually distinct to the - * position of the user's own read receipt. - * @param {string} roomId ID of the room that has been read - * @param {string} rmEventId ID of the event that has been read - * @param {string} rrEventId ID of the event tracked by the read receipt. This is here - * for convenience because the RR and the RM are commonly updated at the same time as - * each other. Optional. - * @param {object} opts Options for the read markers. - * @param {object} opts.hidden True to hide the read receipt from other users. This - * property is currently unstable and may change in the future. - * @return {Promise} Resolves: the empty object, {}. - */ - - -MatrixBaseApis.prototype.setRoomReadMarkersHttpRequest = function (roomId, rmEventId, rrEventId, opts) { - const path = utils.encodeUri("/rooms/$roomId/read_markers", { - $roomId: roomId - }); - const content = { - "m.fully_read": rmEventId, - "m.read": rrEventId, - "m.hidden": Boolean(opts ? opts.hidden : false) - }; - return this._http.authedRequest(undefined, "POST", path, undefined, content); -}; -/** - * @return {Promise} Resolves: A list of the user's current rooms - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getJoinedRooms = function () { - const path = utils.encodeUri("/joined_rooms"); - return this._http.authedRequest(undefined, "GET", path); -}; -/** - * Retrieve membership info. for a room. - * @param {string} roomId ID of the room to get membership for - * @return {Promise} Resolves: A list of currently joined users - * and their profile data. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getJoinedRoomMembers = function (roomId) { - const path = utils.encodeUri("/rooms/$roomId/joined_members", { - $roomId: roomId - }); - return this._http.authedRequest(undefined, "GET", path); -}; // Room Directory operations -// ========================= - -/** - * @param {Object} options Options for this request - * @param {string} options.server The remote server to query for the room list. - * Optional. If unspecified, get the local home - * server's public room list. - * @param {number} options.limit Maximum number of entries to return - * @param {string} options.since Token to paginate from - * @param {object} options.filter Filter parameters - * @param {string} options.filter.generic_search_term String to search for - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.publicRooms = function (options, callback) { - if (typeof options == 'function') { - callback = options; - options = {}; - } - - if (options === undefined) { - options = {}; - } - - const query_params = {}; - - if (options.server) { - query_params.server = options.server; - delete options.server; - } - - if (Object.keys(options).length === 0 && Object.keys(query_params).length === 0) { - return this._http.authedRequest(callback, "GET", "/publicRooms"); - } else { - return this._http.authedRequest(callback, "POST", "/publicRooms", query_params, options); - } -}; -/** - * Create an alias to room ID mapping. - * @param {string} alias The room alias to create. - * @param {string} roomId The room ID to link the alias to. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.createAlias = function (alias, roomId, callback) { - const path = utils.encodeUri("/directory/room/$alias", { - $alias: alias - }); - const data = { - room_id: roomId - }; - return this._http.authedRequest(callback, "PUT", path, undefined, data); -}; -/** - * Delete an alias to room ID mapping. This alias must be on your local server - * and you must have sufficient access to do this operation. - * @param {string} alias The room alias to delete. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.deleteAlias = function (alias, callback) { - const path = utils.encodeUri("/directory/room/$alias", { - $alias: alias - }); - return this._http.authedRequest(callback, "DELETE", path, undefined, undefined); -}; -/** - * @param {string} roomId - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: an object with an `aliases` property, containing an array of local aliases - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.unstableGetLocalAliases = function (roomId, callback) { - const path = utils.encodeUri("/rooms/$roomId/aliases", { - $roomId: roomId - }); - const prefix = _httpApi.PREFIX_UNSTABLE + "/org.matrix.msc2432"; - return this._http.authedRequest(callback, "GET", path, null, null, { - prefix - }); -}; -/** - * Get room info for the given alias. - * @param {string} alias The room alias to resolve. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: Object with room_id and servers. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getRoomIdForAlias = function (alias, callback) { - // TODO: deprecate this or resolveRoomAlias - const path = utils.encodeUri("/directory/room/$alias", { - $alias: alias - }); - return this._http.authedRequest(callback, "GET", path); -}; -/** - * @param {string} roomAlias - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.resolveRoomAlias = function (roomAlias, callback) { - // TODO: deprecate this or getRoomIdForAlias - const path = utils.encodeUri("/directory/room/$alias", { - $alias: roomAlias - }); - return this._http.request(callback, "GET", path); -}; -/** - * Get the visibility of a room in the current HS's room directory - * @param {string} roomId - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getRoomDirectoryVisibility = function (roomId, callback) { - const path = utils.encodeUri("/directory/list/room/$roomId", { - $roomId: roomId - }); - return this._http.authedRequest(callback, "GET", path); -}; -/** - * Set the visbility of a room in the current HS's room directory - * @param {string} roomId - * @param {string} visibility "public" to make the room visible - * in the public directory, or "private" to make - * it invisible. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setRoomDirectoryVisibility = function (roomId, visibility, callback) { - const path = utils.encodeUri("/directory/list/room/$roomId", { - $roomId: roomId - }); - return this._http.authedRequest(callback, "PUT", path, undefined, { - "visibility": visibility - }); -}; -/** - * Set the visbility of a room bridged to a 3rd party network in - * the current HS's room directory. - * @param {string} networkId the network ID of the 3rd party - * instance under which this room is published under. - * @param {string} roomId - * @param {string} visibility "public" to make the room visible - * in the public directory, or "private" to make - * it invisible. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setRoomDirectoryVisibilityAppService = function (networkId, roomId, visibility, callback) { - const path = utils.encodeUri("/directory/list/appservice/$networkId/$roomId", { - $networkId: networkId, - $roomId: roomId - }); - return this._http.authedRequest(callback, "PUT", path, undefined, { - "visibility": visibility - }); -}; // User Directory Operations -// ========================= - -/** - * Query the user directory with a term matching user IDs, display names and domains. - * @param {object} opts options - * @param {string} opts.term the term with which to search. - * @param {number} opts.limit the maximum number of results to return. The server will - * apply a limit if unspecified. - * @return {Promise} Resolves: an array of results. - */ - - -MatrixBaseApis.prototype.searchUserDirectory = function (opts) { - const body = { - search_term: opts.term - }; - - if (opts.limit !== undefined) { - body.limit = opts.limit; - } - - return this._http.authedRequest(undefined, "POST", "/user_directory/search", undefined, body); -}; // Media operations -// ================ - -/** - * Upload a file to the media repository on the home server. - * - * @param {object} file The object to upload. On a browser, something that - * can be sent to XMLHttpRequest.send (typically a File). Under node.js, - * a a Buffer, String or ReadStream. - * - * @param {object} opts options object - * - * @param {string=} opts.name Name to give the file on the server. Defaults - * to file.name. - * - * @param {boolean=} opts.includeFilename if false will not send the filename, - * e.g for encrypted file uploads where filename leaks are undesirable. - * Defaults to true. - * - * @param {string=} opts.type Content-type for the upload. Defaults to - * file.type, or applicaton/octet-stream. - * - * @param {boolean=} opts.rawResponse Return the raw body, rather than - * parsing the JSON. Defaults to false (except on node.js, where it - * defaults to true for backwards compatibility). - * - * @param {boolean=} opts.onlyContentUri Just return the content URI, - * rather than the whole body. Defaults to false (except on browsers, - * where it defaults to true for backwards compatibility). Ignored if - * opts.rawResponse is true. - * - * @param {Function=} opts.callback Deprecated. Optional. The callback to - * invoke on success/failure. See the promise return values for more - * information. - * - * @param {Function=} opts.progressHandler Optional. Called when a chunk of - * data has been uploaded, with an object containing the fields `loaded` - * (number of bytes transferred) and `total` (total size, if known). - * - * @return {Promise} Resolves to response object, as - * determined by this.opts.onlyData, opts.rawResponse, and - * opts.onlyContentUri. Rejects with an error (usually a MatrixError). - */ - - -MatrixBaseApis.prototype.uploadContent = function (file, opts) { - return this._http.uploadContent(file, opts); -}; -/** - * Cancel a file upload in progress - * @param {Promise} promise The promise returned from uploadContent - * @return {boolean} true if canceled, otherwise false - */ - - -MatrixBaseApis.prototype.cancelUpload = function (promise) { - return this._http.cancelUpload(promise); -}; -/** - * Get a list of all file uploads in progress - * @return {array} Array of objects representing current uploads. - * Currently in progress is element 0. Keys: - * - promise: The promise associated with the upload - * - loaded: Number of bytes uploaded - * - total: Total number of bytes to upload - */ - - -MatrixBaseApis.prototype.getCurrentUploads = function () { - return this._http.getCurrentUploads(); -}; // Profile operations -// ================== - -/** - * @param {string} userId - * @param {string} info The kind of info to retrieve (e.g. 'displayname', - * 'avatar_url'). - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getProfileInfo = function (userId, info, callback) { - if (utils.isFunction(info)) { - callback = info; - info = undefined; - } - - const path = info ? utils.encodeUri("/profile/$userId/$info", { - $userId: userId, - $info: info - }) : utils.encodeUri("/profile/$userId", { - $userId: userId - }); - return this._http.authedRequest(callback, "GET", path); -}; // Account operations -// ================== - -/** - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getThreePids = function (callback) { - const path = "/account/3pid"; - return this._http.authedRequest(callback, "GET", path, undefined, undefined); -}; -/** - * Add a 3PID to your homeserver account and optionally bind it to an identity - * server as well. An identity server is required as part of the `creds` object. - * - * This API is deprecated, and you should instead use `addThreePidOnly` - * for homeservers that support it. - * - * @param {Object} creds - * @param {boolean} bind - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: on success - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.addThreePid = function (creds, bind, callback) { - const path = "/account/3pid"; - const data = { - 'threePidCreds': creds, - 'bind': bind - }; - return this._http.authedRequest(callback, "POST", path, null, data); -}; -/** - * Add a 3PID to your homeserver account. This API does not use an identity - * server, as the homeserver is expected to handle 3PID ownership validation. - * - * You can check whether a homeserver supports this API via - * `doesServerSupportSeparateAddAndBind`. - * - * @param {Object} data A object with 3PID validation data from having called - * `account/3pid//requestToken` on the homeserver. - * @return {Promise} Resolves: on success - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.addThreePidOnly = async function (data) { - const path = "/account/3pid/add"; - const prefix = (await this.isVersionSupported("r0.6.0")) ? _httpApi.PREFIX_R0 : _httpApi.PREFIX_UNSTABLE; - return this._http.authedRequest(undefined, "POST", path, null, data, { - prefix - }); -}; -/** - * Bind a 3PID for discovery onto an identity server via the homeserver. The - * identity server handles 3PID ownership validation and the homeserver records - * the new binding to track where all 3PIDs for the account are bound. - * - * You can check whether a homeserver supports this API via - * `doesServerSupportSeparateAddAndBind`. - * - * @param {Object} data A object with 3PID validation data from having called - * `validate//requestToken` on the identity server. It should also - * contain `id_server` and `id_access_token` fields as well. - * @return {Promise} Resolves: on success - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.bindThreePid = async function (data) { - const path = "/account/3pid/bind"; - const prefix = (await this.isVersionSupported("r0.6.0")) ? _httpApi.PREFIX_R0 : _httpApi.PREFIX_UNSTABLE; - return this._http.authedRequest(undefined, "POST", path, null, data, { - prefix - }); -}; -/** - * Unbind a 3PID for discovery on an identity server via the homeserver. The - * homeserver removes its record of the binding to keep an updated record of - * where all 3PIDs for the account are bound. - * - * @param {string} medium The threepid medium (eg. 'email') - * @param {string} address The threepid address (eg. 'bob@example.com') - * this must be as returned by getThreePids. - * @return {Promise} Resolves: on success - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.unbindThreePid = async function (medium, address) { - const path = "/account/3pid/unbind"; - const data = { - medium, - address, - id_server: this.getIdentityServerUrl(true) - }; - const prefix = (await this.isVersionSupported("r0.6.0")) ? _httpApi.PREFIX_R0 : _httpApi.PREFIX_UNSTABLE; - return this._http.authedRequest(undefined, "POST", path, null, data, { - prefix - }); -}; -/** - * @param {string} medium The threepid medium (eg. 'email') - * @param {string} address The threepid address (eg. 'bob@example.com') - * this must be as returned by getThreePids. - * @return {Promise} Resolves: The server response on success - * (generally the empty JSON object) - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.deleteThreePid = function (medium, address) { - const path = "/account/3pid/delete"; - const data = { - 'medium': medium, - 'address': address - }; - return this._http.authedRequest(undefined, "POST", path, null, data); -}; -/** - * Make a request to change your password. - * @param {Object} authDict - * @param {string} newPassword The new desired password. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setPassword = function (authDict, newPassword, callback) { - const path = "/account/password"; - const data = { - 'auth': authDict, - 'new_password': newPassword - }; - return this._http.authedRequest(callback, "POST", path, null, data); -}; // Device operations -// ================= - -/** - * Gets all devices recorded for the logged-in user - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getDevices = function () { - return this._http.authedRequest(undefined, 'GET', "/devices", undefined, undefined); -}; -/** - * Update the given device - * - * @param {string} device_id device to update - * @param {Object} body body of request - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setDeviceDetails = function (device_id, body) { - const path = utils.encodeUri("/devices/$device_id", { - $device_id: device_id - }); - return this._http.authedRequest(undefined, "PUT", path, undefined, body); -}; -/** - * Delete the given device - * - * @param {string} device_id device to delete - * @param {object} auth Optional. Auth data to supply for User-Interactive auth. - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.deleteDevice = function (device_id, auth) { - const path = utils.encodeUri("/devices/$device_id", { - $device_id: device_id - }); - const body = {}; - - if (auth) { - body.auth = auth; - } - - return this._http.authedRequest(undefined, "DELETE", path, undefined, body); -}; -/** - * Delete multiple device - * - * @param {string[]} devices IDs of the devices to delete - * @param {object} auth Optional. Auth data to supply for User-Interactive auth. - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.deleteMultipleDevices = function (devices, auth) { - const body = { - devices - }; - - if (auth) { - body.auth = auth; - } - - const path = "/delete_devices"; - return this._http.authedRequest(undefined, "POST", path, undefined, body); -}; // Push operations -// =============== - -/** - * Gets all pushers registered for the logged-in user - * - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: Array of objects representing pushers - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getPushers = function (callback) { - const path = "/pushers"; - return this._http.authedRequest(callback, "GET", path, undefined, undefined); -}; -/** - * Adds a new pusher or updates an existing pusher - * - * @param {Object} pusher Object representing a pusher - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: Empty json object on success - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setPusher = function (pusher, callback) { - const path = "/pushers/set"; - return this._http.authedRequest(callback, "POST", path, null, pusher); -}; -/** - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getPushRules = function (callback) { - return this._http.authedRequest(callback, "GET", "/pushrules/").then(rules => { - return _pushprocessor.PushProcessor.rewriteDefaultRules(rules); - }); -}; -/** - * @param {string} scope - * @param {string} kind - * @param {string} ruleId - * @param {Object} body - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.addPushRule = function (scope, kind, ruleId, body, callback) { - // NB. Scope not uri encoded because devices need the '/' - const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId", { - $kind: kind, - $ruleId: ruleId - }); - return this._http.authedRequest(callback, "PUT", path, undefined, body); -}; -/** - * @param {string} scope - * @param {string} kind - * @param {string} ruleId - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.deletePushRule = function (scope, kind, ruleId, callback) { - // NB. Scope not uri encoded because devices need the '/' - const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId", { - $kind: kind, - $ruleId: ruleId - }); - return this._http.authedRequest(callback, "DELETE", path); -}; -/** - * Enable or disable a push notification rule. - * @param {string} scope - * @param {string} kind - * @param {string} ruleId - * @param {boolean} enabled - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setPushRuleEnabled = function (scope, kind, ruleId, enabled, callback) { - const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId/enabled", { - $kind: kind, - $ruleId: ruleId - }); - return this._http.authedRequest(callback, "PUT", path, undefined, { - "enabled": enabled - }); -}; -/** - * Set the actions for a push notification rule. - * @param {string} scope - * @param {string} kind - * @param {string} ruleId - * @param {array} actions - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.setPushRuleActions = function (scope, kind, ruleId, actions, callback) { - const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId/actions", { - $kind: kind, - $ruleId: ruleId - }); - return this._http.authedRequest(callback, "PUT", path, undefined, { - "actions": actions - }); -}; // Search -// ====== - -/** - * Perform a server-side search. - * @param {Object} opts - * @param {string} opts.next_batch the batch token to pass in the query string - * @param {Object} opts.body the JSON object to pass to the request body. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.search = function (opts, callback) { - const queryparams = {}; - - if (opts.next_batch) { - queryparams.next_batch = opts.next_batch; - } - - return this._http.authedRequest(callback, "POST", "/search", queryparams, opts.body); -}; // Crypto -// ====== - -/** - * Upload keys - * - * @param {Object} content body of upload request - * - * @param {Object=} opts this method no longer takes any opts, - * used to take opts.device_id but this was not removed from the spec as a redundant parameter - * - * @param {module:client.callback=} callback - * - * @return {Promise} Resolves: result object. Rejects: with - * an error response ({@link module:http-api.MatrixError}). - */ - - -MatrixBaseApis.prototype.uploadKeysRequest = function (content, opts, callback) { - return this._http.authedRequest(callback, "POST", "/keys/upload", undefined, content); -}; - -MatrixBaseApis.prototype.uploadKeySignatures = function (content) { - return this._http.authedRequest(undefined, "POST", '/keys/signatures/upload', undefined, content, { - prefix: _httpApi.PREFIX_UNSTABLE - }); -}; -/** - * Download device keys - * - * @param {string[]} userIds list of users to get keys for - * - * @param {Object=} opts - * - * @param {string=} opts.token sync token to pass in the query request, to help - * the HS give the most recent results - * - * @return {Promise} Resolves: result object. Rejects: with - * an error response ({@link module:http-api.MatrixError}). - */ - - -MatrixBaseApis.prototype.downloadKeysForUsers = function (userIds, opts) { - if (utils.isFunction(opts)) { - // opts used to be 'callback'. - throw new Error('downloadKeysForUsers no longer accepts a callback parameter'); - } - - opts = opts || {}; - const content = { - device_keys: {} - }; - - if ('token' in opts) { - content.token = opts.token; - } - - userIds.forEach(u => { - content.device_keys[u] = []; - }); - return this._http.authedRequest(undefined, "POST", "/keys/query", undefined, content); -}; -/** - * Claim one-time keys - * - * @param {string[]} devices a list of [userId, deviceId] pairs - * - * @param {string} [key_algorithm = signed_curve25519] desired key type - * - * @param {number} [timeout] the time (in milliseconds) to wait for keys from remote - * servers - * - * @return {Promise} Resolves: result object. Rejects: with - * an error response ({@link module:http-api.MatrixError}). - */ - - -MatrixBaseApis.prototype.claimOneTimeKeys = function (devices, key_algorithm, timeout) { - const queries = {}; - - if (key_algorithm === undefined) { - key_algorithm = "signed_curve25519"; - } - - for (let i = 0; i < devices.length; ++i) { - const userId = devices[i][0]; - const deviceId = devices[i][1]; - const query = queries[userId] || {}; - queries[userId] = query; - query[deviceId] = key_algorithm; - } - - const content = { - one_time_keys: queries - }; - - if (timeout) { - content.timeout = timeout; - } - - const path = "/keys/claim"; - return this._http.authedRequest(undefined, "POST", path, undefined, content); -}; -/** - * Ask the server for a list of users who have changed their device lists - * between a pair of sync tokens - * - * @param {string} oldToken - * @param {string} newToken - * - * @return {Promise} Resolves: result object. Rejects: with - * an error response ({@link module:http-api.MatrixError}). - */ - - -MatrixBaseApis.prototype.getKeyChanges = function (oldToken, newToken) { - const qps = { - from: oldToken, - to: newToken - }; - const path = "/keys/changes"; - return this._http.authedRequest(undefined, "GET", path, qps, undefined); -}; - -MatrixBaseApis.prototype.uploadDeviceSigningKeys = function (auth, keys) { - const data = Object.assign({}, keys); - if (auth) Object.assign(data, { - auth - }); - return this._http.authedRequest(undefined, "POST", "/keys/device_signing/upload", undefined, data, { - prefix: _httpApi.PREFIX_UNSTABLE - }); -}; // Identity Server Operations -// ========================== - -/** - * Register with an Identity Server using the OpenID token from the user's - * Homeserver, which can be retrieved via - * {@link module:client~MatrixClient#getOpenIdToken}. - * - * Note that the `/account/register` endpoint (as well as IS authentication in - * general) was added as part of the v2 API version. - * - * @param {object} hsOpenIdToken - * @return {Promise} Resolves: with object containing an Identity - * Server access token. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.registerWithIdentityServer = function (hsOpenIdToken) { - if (!this.idBaseUrl) { - throw new Error("No Identity Server base URL set"); - } - - const uri = this.idBaseUrl + _httpApi.PREFIX_IDENTITY_V2 + "/account/register"; - return this._http.requestOtherUrl(undefined, "POST", uri, null, hsOpenIdToken); -}; -/** - * Requests an email verification token directly from an identity server. - * - * This API is used as part of binding an email for discovery on an identity - * server. The validation data that results should be passed to the - * `bindThreePid` method to complete the binding process. - * - * @param {string} email The email address to request a token for - * @param {string} clientSecret A secret binary string generated by the client. - * It is recommended this be around 16 ASCII characters. - * @param {number} sendAttempt If an identity server sees a duplicate request - * with the same sendAttempt, it will not send another email. - * To request another email to be sent, use a larger value for - * the sendAttempt param as was used in the previous request. - * @param {string} nextLink Optional If specified, the client will be redirected - * to this link after validation. - * @param {module:client.callback} callback Optional. - * @param {string} identityAccessToken The `access_token` field of the identity - * server `/account/register` response (see {@link registerWithIdentityServer}). - * - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - * @throws Error if no identity server is set - */ - - -MatrixBaseApis.prototype.requestEmailToken = async function (email, clientSecret, sendAttempt, nextLink, callback, identityAccessToken) { - const params = { - client_secret: clientSecret, - email: email, - send_attempt: sendAttempt, - next_link: nextLink - }; - return await this._http.idServerRequest(callback, "POST", "/validate/email/requestToken", params, _httpApi.PREFIX_IDENTITY_V2, identityAccessToken); -}; -/** - * Requests a MSISDN verification token directly from an identity server. - * - * This API is used as part of binding a MSISDN for discovery on an identity - * server. The validation data that results should be passed to the - * `bindThreePid` method to complete the binding process. - * - * @param {string} phoneCountry The ISO 3166-1 alpha-2 code for the country in - * which phoneNumber should be parsed relative to. - * @param {string} phoneNumber The phone number, in national or international - * format - * @param {string} clientSecret A secret binary string generated by the client. - * It is recommended this be around 16 ASCII characters. - * @param {number} sendAttempt If an identity server sees a duplicate request - * with the same sendAttempt, it will not send another SMS. - * To request another SMS to be sent, use a larger value for - * the sendAttempt param as was used in the previous request. - * @param {string} nextLink Optional If specified, the client will be redirected - * to this link after validation. - * @param {module:client.callback} callback Optional. - * @param {string} identityAccessToken The `access_token` field of the Identity - * Server `/account/register` response (see {@link registerWithIdentityServer}). - * - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - * @throws Error if no identity server is set - */ - - -MatrixBaseApis.prototype.requestMsisdnToken = async function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink, callback, identityAccessToken) { - const params = { - client_secret: clientSecret, - country: phoneCountry, - phone_number: phoneNumber, - send_attempt: sendAttempt, - next_link: nextLink - }; - return await this._http.idServerRequest(callback, "POST", "/validate/msisdn/requestToken", params, _httpApi.PREFIX_IDENTITY_V2, identityAccessToken); -}; -/** - * Submits a MSISDN token to the identity server - * - * This is used when submitting the code sent by SMS to a phone number. - * The ID server has an equivalent API for email but the js-sdk does - * not expose this, since email is normally validated by the user clicking - * a link rather than entering a code. - * - * @param {string} sid The sid given in the response to requestToken - * @param {string} clientSecret A secret binary string generated by the client. - * This must be the same value submitted in the requestToken call. - * @param {string} msisdnToken The MSISDN token, as enetered by the user. - * @param {string} identityAccessToken The `access_token` field of the Identity - * Server `/account/register` response (see {@link registerWithIdentityServer}). - * - * @return {Promise} Resolves: Object, currently with no parameters. - * @return {module:http-api.MatrixError} Rejects: with an error response. - * @throws Error if No ID server is set - */ - - -MatrixBaseApis.prototype.submitMsisdnToken = async function (sid, clientSecret, msisdnToken, identityAccessToken) { - const params = { - sid: sid, - client_secret: clientSecret, - token: msisdnToken - }; - return await this._http.idServerRequest(undefined, "POST", "/validate/msisdn/submitToken", params, _httpApi.PREFIX_IDENTITY_V2, identityAccessToken); -}; -/** - * Submits a MSISDN token to an arbitrary URL. - * - * This is used when submitting the code sent by SMS to a phone number in the - * newer 3PID flow where the homeserver validates 3PID ownership (as part of - * `requestAdd3pidMsisdnToken`). The homeserver response may include a - * `submit_url` to specify where the token should be sent, and this helper can - * be used to pass the token to this URL. - * - * @param {string} url The URL to submit the token to - * @param {string} sid The sid given in the response to requestToken - * @param {string} clientSecret A secret binary string generated by the client. - * This must be the same value submitted in the requestToken call. - * @param {string} msisdnToken The MSISDN token, as enetered by the user. - * - * @return {Promise} Resolves: Object, currently with no parameters. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.submitMsisdnTokenOtherUrl = function (url, sid, clientSecret, msisdnToken) { - const params = { - sid: sid, - client_secret: clientSecret, - token: msisdnToken - }; - return this._http.requestOtherUrl(undefined, "POST", url, undefined, params); -}; -/** - * Gets the V2 hashing information from the identity server. Primarily useful for - * lookups. - * @param {string} identityAccessToken The access token for the identity server. - * @returns {Promise} The hashing information for the identity server. - */ - - -MatrixBaseApis.prototype.getIdentityHashDetails = function (identityAccessToken) { - return this._http.idServerRequest(undefined, "GET", "/hash_details", null, _httpApi.PREFIX_IDENTITY_V2, identityAccessToken); -}; -/** - * Performs a hashed lookup of addresses against the identity server. This is - * only supported on identity servers which have at least the version 2 API. - * @param {Array>} addressPairs An array of 2 element arrays. - * The first element of each pair is the address, the second is the 3PID medium. - * Eg: ["email@example.org", "email"] - * @param {string} identityAccessToken The access token for the identity server. - * @returns {Promise>} A collection of address mappings to - * found MXIDs. Results where no user could be found will not be listed. - */ - - -MatrixBaseApis.prototype.identityHashedLookup = async function (addressPairs, // [["email@example.org", "email"], ["10005550000", "msisdn"]] -identityAccessToken) { - const params = {// addresses: ["email@example.org", "10005550000"], - // algorithm: "sha256", - // pepper: "abc123" - }; // Get hash information first before trying to do a lookup - - const hashes = await this.getIdentityHashDetails(identityAccessToken); - - if (!hashes || !hashes['lookup_pepper'] || !hashes['algorithms']) { - throw new Error("Unsupported identity server: bad response"); - } - - params['pepper'] = hashes['lookup_pepper']; - const localMapping = {// hashed identifier => plain text address - // For use in this function's return format - }; // When picking an algorithm, we pick the hashed over no hashes - - if (hashes['algorithms'].includes('sha256')) { - // Abuse the olm hashing - const olmutil = new global.Olm.Utility(); - params["addresses"] = addressPairs.map(p => { - const addr = p[0].toLowerCase(); // lowercase to get consistent hashes - - const med = p[1].toLowerCase(); - const hashed = olmutil.sha256(`${addr} ${med} ${params['pepper']}`).replace(/\+/g, '-').replace(/\//g, '_'); // URL-safe base64 - // Map the hash to a known (case-sensitive) address. We use the case - // sensitive version because the caller might be expecting that. - - localMapping[hashed] = p[0]; - return hashed; - }); - params["algorithm"] = "sha256"; - } else if (hashes['algorithms'].includes('none')) { - params["addresses"] = addressPairs.map(p => { - const addr = p[0].toLowerCase(); // lowercase to get consistent hashes - - const med = p[1].toLowerCase(); - const unhashed = `${addr} ${med}`; // Map the unhashed values to a known (case-sensitive) address. We use - // the case sensitive version because the caller might be expecting that. - - localMapping[unhashed] = p[0]; - return unhashed; - }); - params["algorithm"] = "none"; - } else { - throw new Error("Unsupported identity server: unknown hash algorithm"); - } - - const response = await this._http.idServerRequest(undefined, "POST", "/lookup", params, _httpApi.PREFIX_IDENTITY_V2, identityAccessToken); - if (!response || !response['mappings']) return []; // no results - - const foundAddresses = [ - /* {address: "plain@example.org", mxid} */ - ]; - - for (const hashed of Object.keys(response['mappings'])) { - const mxid = response['mappings'][hashed]; - const plainAddress = localMapping[hashed]; - - if (!plainAddress) { - throw new Error("Identity server returned more results than expected"); - } - - foundAddresses.push({ - address: plainAddress, - mxid - }); - } - - return foundAddresses; -}; -/** - * Looks up the public Matrix ID mapping for a given 3rd party - * identifier from the Identity Server - * - * @param {string} medium The medium of the threepid, eg. 'email' - * @param {string} address The textual address of the threepid - * @param {module:client.callback} callback Optional. - * @param {string} identityAccessToken The `access_token` field of the Identity - * Server `/account/register` response (see {@link registerWithIdentityServer}). - * - * @return {Promise} Resolves: A threepid mapping - * object or the empty object if no mapping - * exists - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.lookupThreePid = async function (medium, address, callback, identityAccessToken) { - // Note: we're using the V2 API by calling this function, but our - // function contract requires a V1 response. We therefore have to - // convert it manually. - const response = await this.identityHashedLookup([[address, medium]], identityAccessToken); - const result = response.find(p => p.address === address); - - if (!result) { - if (callback) callback(null, {}); - return {}; - } - - const mapping = { - address, - medium, - mxid: result.mxid // We can't reasonably fill these parameters: - // not_before - // not_after - // ts - // signatures - - }; - if (callback) callback(null, mapping); - return mapping; -}; -/** - * Looks up the public Matrix ID mappings for multiple 3PIDs. - * - * @param {Array.>} query Array of arrays containing - * [medium, address] - * @param {string} identityAccessToken The `access_token` field of the Identity - * Server `/account/register` response (see {@link registerWithIdentityServer}). - * - * @return {Promise} Resolves: Lookup results from IS. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.bulkLookupThreePids = async function (query, identityAccessToken) { - // Note: we're using the V2 API by calling this function, but our - // function contract requires a V1 response. We therefore have to - // convert it manually. - const response = await this.identityHashedLookup( // We have to reverse the query order to get [address, medium] pairs - query.map(p => [p[1], p[0]]), identityAccessToken); - const v1results = []; - - for (const mapping of response) { - const originalQuery = query.find(p => p[1] === mapping.address); - - if (!originalQuery) { - throw new Error("Identity sever returned unexpected results"); - } - - v1results.push([originalQuery[0], // medium - mapping.address, mapping.mxid]); - } - - return { - threepids: v1results - }; -}; -/** - * Get account info from the Identity Server. This is useful as a neutral check - * to verify that other APIs are likely to approve access by testing that the - * token is valid, terms have been agreed, etc. - * - * @param {string} identityAccessToken The `access_token` field of the Identity - * Server `/account/register` response (see {@link registerWithIdentityServer}). - * - * @return {Promise} Resolves: an object with account info. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixBaseApis.prototype.getIdentityAccount = function (identityAccessToken) { - return this._http.idServerRequest(undefined, "GET", "/account", undefined, _httpApi.PREFIX_IDENTITY_V2, identityAccessToken); -}; // Direct-to-device messaging -// ========================== - -/** - * Send an event to a specific list of devices - * - * @param {string} eventType type of event to send - * @param {Object.>} contentMap - * content to send. Map from user_id to device_id to content object. - * @param {string=} txnId transaction id. One will be made up if not - * supplied. - * @return {Promise} Resolves to the result object - */ - - -MatrixBaseApis.prototype.sendToDevice = function (eventType, contentMap, txnId) { - const path = utils.encodeUri("/sendToDevice/$eventType/$txnId", { - $eventType: eventType, - $txnId: txnId ? txnId : this.makeTxnId() - }); - const body = { - messages: contentMap - }; - const targets = Object.keys(contentMap).reduce((obj, key) => { - obj[key] = Object.keys(contentMap[key]); - return obj; - }, {}); - - _logger.logger.log(`PUT ${path}`, targets); - - return this._http.authedRequest(undefined, "PUT", path, undefined, body); -}; // Third party Lookup API -// ====================== - -/** - * Get the third party protocols that can be reached using - * this HS - * @return {Promise} Resolves to the result object - */ - - -MatrixBaseApis.prototype.getThirdpartyProtocols = function () { - return this._http.authedRequest(undefined, "GET", "/thirdparty/protocols", undefined, undefined).then(response => { - // sanity check - if (!response || typeof response !== 'object') { - throw new Error(`/thirdparty/protocols did not return an object: ${response}`); - } - - return response; - }); -}; -/** - * Get information on how a specific place on a third party protocol - * may be reached. - * @param {string} protocol The protocol given in getThirdpartyProtocols() - * @param {object} params Protocol-specific parameters, as given in the - * response to getThirdpartyProtocols() - * @return {Promise} Resolves to the result object - */ - - -MatrixBaseApis.prototype.getThirdpartyLocation = function (protocol, params) { - const path = utils.encodeUri("/thirdparty/location/$protocol", { - $protocol: protocol - }); - return this._http.authedRequest(undefined, "GET", path, params, undefined); -}; -/** - * Get information on how a specific user on a third party protocol - * may be reached. - * @param {string} protocol The protocol given in getThirdpartyProtocols() - * @param {object} params Protocol-specific parameters, as given in the - * response to getThirdpartyProtocols() - * @return {Promise} Resolves to the result object - */ - - -MatrixBaseApis.prototype.getThirdpartyUser = function (protocol, params) { - const path = utils.encodeUri("/thirdparty/user/$protocol", { - $protocol: protocol - }); - return this._http.authedRequest(undefined, "GET", path, params, undefined); -}; - -MatrixBaseApis.prototype.getTerms = function (serviceType, baseUrl) { - const url = termsUrlForService(serviceType, baseUrl); - return this._http.requestOtherUrl(undefined, 'GET', url); -}; - -MatrixBaseApis.prototype.agreeToTerms = function (serviceType, baseUrl, accessToken, termsUrls) { - const url = termsUrlForService(serviceType, baseUrl); - const headers = { - Authorization: "Bearer " + accessToken - }; - return this._http.requestOtherUrl(undefined, 'POST', url, null, { - user_accepts: termsUrls - }, { - headers - }); -}; -/** - * Reports an event as inappropriate to the server, which may then notify the appropriate people. - * @param {string} roomId The room in which the event being reported is located. - * @param {string} eventId The event to report. - * @param {number} score The score to rate this content as where -100 is most offensive and 0 is inoffensive. - * @param {string} reason The reason the content is being reported. May be blank. - * @returns {Promise} Resolves to an empty object if successful - */ - - -MatrixBaseApis.prototype.reportEvent = function (roomId, eventId, score, reason) { - const path = utils.encodeUri("/rooms/$roomId/report/$eventId", { - $roomId: roomId, - $eventId: eventId - }); - return this._http.authedRequest(undefined, "POST", path, null, { - score, - reason - }); -}; - -/***/ }), - -/***/ 9058: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var _interopRequireWildcard = __webpack_require__(8429); - -var _interopRequireDefault = __webpack_require__(3298); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MatrixClient = MatrixClient; -exports.CRYPTO_ENABLED = void 0; - -var _url = _interopRequireDefault(__webpack_require__(8835)); - -var _events = __webpack_require__(8614); - -var _baseApis = __webpack_require__(9878); - -var _filter = __webpack_require__(3768); - -var _sync = __webpack_require__(9779); - -var _event = __webpack_require__(9564); - -var _eventTimeline = __webpack_require__(2763); - -var _searchResult = __webpack_require__(8543); - -var _stub = __webpack_require__(8817); - -var _call = __webpack_require__(7823); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _httpApi = __webpack_require__(263); - -var _contentRepo = __webpack_require__(4233); - -var ContentHelpers = _interopRequireWildcard(__webpack_require__(4000)); - -var olmlib = _interopRequireWildcard(__webpack_require__(7131)); - -var _ReEmitter = __webpack_require__(9554); - -var _RoomList = __webpack_require__(4472); - -var _logger = __webpack_require__(3854); - -var _crypto = __webpack_require__(9839); - -var _recoverykey = __webpack_require__(4531); - -var _key_passphrase = __webpack_require__(7664); - -var _randomstring = __webpack_require__(2495); - -var _pushprocessor = __webpack_require__(4131); - -var _user = __webpack_require__(1104); - -var _autodiscovery = __webpack_require__(4514); - -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2018-2019 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/** - * This is an internal module. See {@link MatrixClient} for the public class. - * @module client - */ -const SCROLLBACK_DELAY_MS = 3000; -const CRYPTO_ENABLED = (0, _crypto.isCryptoAvailable)(); -exports.CRYPTO_ENABLED = CRYPTO_ENABLED; -const CAPABILITIES_CACHE_MS = 21600000; // 6 hours - an arbitrary value - -function keysFromRecoverySession(sessions, decryptionKey, roomId) { - const keys = []; - - for (const [sessionId, sessionData] of Object.entries(sessions)) { - try { - const decrypted = keyFromRecoverySession(sessionData, decryptionKey); - decrypted.session_id = sessionId; - decrypted.room_id = roomId; - keys.push(decrypted); - } catch (e) { - _logger.logger.log("Failed to decrypt megolm session from backup", e); - } - } - - return keys; -} - -function keyFromRecoverySession(session, decryptionKey) { - return JSON.parse(decryptionKey.decrypt(session.session_data.ephemeral, session.session_data.mac, session.session_data.ciphertext)); -} -/** - * Construct a Matrix Client. Only directly construct this if you want to use - * custom modules. Normally, {@link createClient} should be used - * as it specifies 'sensible' defaults for these modules. - * @constructor - * @extends {external:EventEmitter} - * @extends {module:base-apis~MatrixBaseApis} - * - * @param {Object} opts The configuration options for this client. - * @param {string} opts.baseUrl Required. The base URL to the client-server - * HTTP API. - * @param {string} opts.idBaseUrl Optional. The base identity server URL for - * identity server requests. - * @param {Function} opts.request Required. The function to invoke for HTTP - * requests. The value of this property is typically require("request") - * as it returns a function which meets the required interface. See - * {@link requestFunction} for more information. - * - * @param {string} opts.accessToken The access_token for this user. - * - * @param {string} opts.userId The user ID for this user. - * - * @param {Object} opts.deviceToImport Device data exported with - * "exportDevice" method that must be imported to recreate this device. - * Should only be useful for devices with end-to-end crypto enabled. - * If provided, opts.deviceId and opts.userId should **NOT** be provided - * (they are present in the exported data). - * - * @param {string} opts.pickleKey Key used to pickle olm objects or other - * sensitive data. - * - * @param {IdentityServerProvider} [opts.identityServer] - * Optional. A provider object with one function `getAccessToken`, which is a - * callback that returns a Promise of an identity access token to supply - * with identity requests. If the object is unset, no access token will be - * supplied. - * See also https://github.com/vector-im/element-web/issues/10615 which seeks to - * replace the previous approach of manual access tokens params with this - * callback throughout the SDK. - * - * @param {Object=} opts.store - * The data store used for sync data from the homeserver. If not specified, - * this client will not store any HTTP responses. The `createClient` helper - * will create a default store if needed. - * - * @param {module:store/session/webstorage~WebStorageSessionStore} opts.sessionStore - * A store to be used for end-to-end crypto session data. Most data has been - * migrated out of here to `cryptoStore` instead. If not specified, - * end-to-end crypto will be disabled. The `createClient` helper - * _will not_ create this store at the moment. - * - * @param {module:crypto.store.base~CryptoStore} opts.cryptoStore - * A store to be used for end-to-end crypto session data. If not specified, - * end-to-end crypto will be disabled. The `createClient` helper will create - * a default store if needed. - * - * @param {string=} opts.deviceId A unique identifier for this device; used for - * tracking things like crypto keys and access tokens. If not specified, - * end-to-end crypto will be disabled. - * - * @param {Object} opts.scheduler Optional. The scheduler to use. If not - * specified, this client will not retry requests on failure. This client - * will supply its own processing function to - * {@link module:scheduler~MatrixScheduler#setProcessFunction}. - * - * @param {Object} opts.queryParams Optional. Extra query parameters to append - * to all requests with this client. Useful for application services which require - * ?user_id=. - * - * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of - * time to wait before timing out HTTP requests. If not specified, there is no timeout. - * - * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use - * Authorization header instead of query param to send the access token to the server. - * - * @param {boolean} [opts.timelineSupport = false] Set to true to enable - * improved timeline support ({@link - * module:client~MatrixClient#getEventTimeline getEventTimeline}). It is - * disabled by default for compatibility with older clients - in particular to - * maintain support for back-paginating the live timeline after a '/sync' - * result with a gap. - * - * @param {boolean} [opts.unstableClientRelationAggregation = false] - * Optional. Set to true to enable client-side aggregation of event relations - * via `EventTimelineSet#getRelationsForEvent`. - * This feature is currently unstable and the API may change without notice. - * - * @param {Array} [opts.verificationMethods] Optional. The verification method - * that the application can handle. Each element should be an item from {@link - * module:crypto~verificationMethods verificationMethods}, or a class that - * implements the {$link module:crypto/verification/Base verifier interface}. - * - * @param {boolean} [opts.forceTURN] - * Optional. Whether relaying calls through a TURN server should be forced. - * - * @param {boolean} [opts.fallbackICEServerAllowed] - * Optional. Whether to allow a fallback ICE server should be used for negotiating a - * WebRTC connection if the homeserver doesn't provide any servers. Defaults to false. - * - * @param {boolean} [opts.usingExternalCrypto] - * Optional. Whether to allow sending messages to encrypted rooms when encryption - * is not available internally within this SDK. This is useful if you are using an external - * E2E proxy, for example. Defaults to false. - * - * @param {object} opts.cryptoCallbacks Optional. Callbacks for crypto and cross-signing. - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @param {function} [opts.cryptoCallbacks.getCrossSigningKey] - * Optional. Function to call when a cross-signing private key is needed. - * Secure Secret Storage will be used by default if this is unset. - * Args: - * {string} type The type of key needed. Will be one of "master", - * "self_signing", or "user_signing" - * {Uint8Array} publicKey The public key matching the expected private key. - * This can be passed to checkPrivateKey() along with the private key - * in order to check that a given private key matches what is being - * requested. - * Should return a promise that resolves with the private key as a - * UInt8Array or rejects with an error. - * - * @param {function} [opts.cryptoCallbacks.saveCrossSigningKeys] - * Optional. Called when new private keys for cross-signing need to be saved. - * Secure Secret Storage will be used by default if this is unset. - * Args: - * {object} keys the private keys to save. Map of key name to private key - * as a UInt8Array. The getPrivateKey callback above will be called - * with the corresponding key name when the keys are required again. - * - * @param {function} [opts.cryptoCallbacks.shouldUpgradeDeviceVerifications] - * Optional. Called when there are device-to-device verifications that can be - * upgraded into cross-signing verifications. - * Args: - * {object} users The users whose device verifications can be - * upgraded to cross-signing verifications. This will be a map of user IDs - * to objects with the properties `devices` (array of the user's devices - * that verified their cross-signing key), and `crossSigningInfo` (the - * user's cross-signing information) - * Should return a promise which resolves with an array of the user IDs who - * should be cross-signed. - * - * @param {function} [opts.cryptoCallbacks.getSecretStorageKey] - * Optional. Function called when an encryption key for secret storage - * is required. One or more keys will be described in the keys object. - * The callback function should return a promise with an array of: - * [, ] or null if it cannot provide - * any of the keys. - * Args: - * {object} keys Information about the keys: - * { - * keys: { - * : { - * pubkey: {UInt8Array} - * }, ... - * } - * } - * {string} name the name of the value we want to read out of SSSS, for UI purposes. - * - * @param {function} [opts.cryptoCallbacks.cacheSecretStorageKey] - * Optional. Function called when a new encryption key for secret storage - * has been created. This allows the application a chance to cache this key if - * desired to avoid user prompts. - * Args: - * {string} keyId the ID of the new key - * {Uint8Array} key the new private key - * - * @param {function} [opts.cryptoCallbacks.onSecretRequested] - * Optional. Function called when a request for a secret is received from another - * device. - * Args: - * {string} name The name of the secret being requested. - * {string} userId The user ID of the client requesting - * {string} deviceId The device ID of the client requesting the secret. - * {string} requestId The ID of the request. Used to match a - * corresponding `crypto.secrets.request_cancelled`. The request ID will be - * unique per sender, device pair. - * {DeviceTrustLevel} deviceTrust: The trust status of the device requesting - * the secret as returned by {@link module:client~MatrixClient#checkDeviceTrust}. - */ - - -function MatrixClient(opts) { - opts.baseUrl = utils.ensureNoTrailingSlash(opts.baseUrl); - opts.idBaseUrl = utils.ensureNoTrailingSlash(opts.idBaseUrl); - - _baseApis.MatrixBaseApis.call(this, opts); - - this.olmVersion = null; // Populated after initCrypto is done - - this.reEmitter = new _ReEmitter.ReEmitter(this); - this.usingExternalCrypto = opts.usingExternalCrypto; - this.store = opts.store || new _stub.StubStore(); - this.deviceId = opts.deviceId || null; - const userId = opts.userId || null; - this.credentials = { - userId: userId - }; - - if (opts.deviceToImport) { - if (this.deviceId) { - _logger.logger.warn('not importing device because' + ' device ID is provided to constructor' + ' independently of exported data'); - } else if (this.credentials.userId) { - _logger.logger.warn('not importing device because' + ' user ID is provided to constructor' + ' independently of exported data'); - } else if (!opts.deviceToImport.deviceId) { - _logger.logger.warn('not importing device because no device ID in exported data'); - } else { - this.deviceId = opts.deviceToImport.deviceId; - this.credentials.userId = opts.deviceToImport.userId; // will be used during async initialization of the crypto - - this._exportedOlmDeviceToImport = opts.deviceToImport.olmDevice; - } - } else if (opts.pickleKey) { - this.pickleKey = opts.pickleKey; - } - - this.scheduler = opts.scheduler; - - if (this.scheduler) { - const self = this; - this.scheduler.setProcessFunction(async function (eventToSend) { - const room = self.getRoom(eventToSend.getRoomId()); - - if (eventToSend.status !== _event.EventStatus.SENDING) { - _updatePendingEventStatus(room, eventToSend, _event.EventStatus.SENDING); - } - - const res = await _sendEventHttpRequest(self, eventToSend); - - if (room) { - // ensure we update pending event before the next scheduler run so that any listeners to event id - // updates on the synchronous event emitter get a chance to run first. - room.updatePendingEvent(eventToSend, _event.EventStatus.SENT, res.event_id); - } - - return res; - }); - } - - this.clientRunning = false; - this.callList = {// callId: MatrixCall - }; // try constructing a MatrixCall to see if we are running in an environment - // which has WebRTC. If we are, listen for and handle m.call.* events. - - const call = (0, _call.createNewMatrixCall)(this); - this._supportsVoip = false; - - if (call) { - setupCallEventHandler(this); - this._supportsVoip = true; - } - - this._syncingRetry = null; - this._syncApi = null; - this._peekSync = null; - this._isGuest = false; - this._ongoingScrollbacks = {}; - this.timelineSupport = Boolean(opts.timelineSupport); - this.urlPreviewCache = {}; // key=preview key, value=Promise for preview (may be an error) - - this._notifTimelineSet = null; - this.unstableClientRelationAggregation = !!opts.unstableClientRelationAggregation; - this._crypto = null; - this._cryptoStore = opts.cryptoStore; - this._sessionStore = opts.sessionStore; - this._verificationMethods = opts.verificationMethods; - this._cryptoCallbacks = opts.cryptoCallbacks || {}; - this._forceTURN = opts.forceTURN || false; - this._fallbackICEServerAllowed = opts.fallbackICEServerAllowed || false; // List of which rooms have encryption enabled: separate from crypto because - // we still want to know which rooms are encrypted even if crypto is disabled: - // we don't want to start sending unencrypted events to them. - - this._roomList = new _RoomList.RoomList(this._cryptoStore); // The pushprocessor caches useful things, so keep one and re-use it - - this._pushProcessor = new _pushprocessor.PushProcessor(this); // Promise to a response of the server's /versions response - // TODO: This should expire: https://github.com/matrix-org/matrix-js-sdk/issues/1020 - - this._serverVersionsPromise = null; - this._cachedCapabilities = null; // { capabilities: {}, lastUpdated: timestamp } - - this._clientWellKnown = undefined; - this._clientWellKnownPromise = undefined; // The SDK doesn't really provide a clean way for events to recalculate the push - // actions for themselves, so we have to kinda help them out when they are encrypted. - // We do this so that push rules are correctly executed on events in their decrypted - // state, such as highlights when the user's name is mentioned. - - this.on("Event.decrypted", event => { - const oldActions = event.getPushActions(); - - const actions = this._pushProcessor.actionsForEvent(event); - - event.setPushActions(actions); // Might as well while we're here - - const room = this.getRoom(event.getRoomId()); - if (!room) return; - const currentCount = room.getUnreadNotificationCount("highlight"); // Ensure the unread counts are kept up to date if the event is encrypted - // We also want to make sure that the notification count goes up if we already - // have encrypted events to avoid other code from resetting 'highlight' to zero. - - const oldHighlight = oldActions && oldActions.tweaks ? !!oldActions.tweaks.highlight : false; - const newHighlight = actions && actions.tweaks ? !!actions.tweaks.highlight : false; - - if (oldHighlight !== newHighlight || currentCount > 0) { - // TODO: Handle mentions received while the client is offline - // See also https://github.com/vector-im/element-web/issues/9069 - if (!room.hasUserReadEvent(this.getUserId(), event.getId())) { - let newCount = currentCount; - if (newHighlight && !oldHighlight) newCount++; - if (!newHighlight && oldHighlight) newCount--; - room.setUnreadNotificationCount("highlight", newCount); // Fix 'Mentions Only' rooms from not having the right badge count - - const totalCount = room.getUnreadNotificationCount('total'); - - if (totalCount < newCount) { - room.setUnreadNotificationCount('total', newCount); - } - } - } - }); // Like above, we have to listen for read receipts from ourselves in order to - // correctly handle notification counts on encrypted rooms. - // This fixes https://github.com/vector-im/element-web/issues/9421 - - this.on("Room.receipt", (event, room) => { - if (room && this.isRoomEncrypted(room.roomId)) { - // Figure out if we've read something or if it's just informational - const content = event.getContent(); - const isSelf = Object.keys(content).filter(eid => { - return Object.keys(content[eid]['m.read']).includes(this.getUserId()); - }).length > 0; - if (!isSelf) return; // Work backwards to determine how many events are unread. We also set - // a limit for how back we'll look to avoid spinning CPU for too long. - // If we hit the limit, we assume the count is unchanged. - - const maxHistory = 20; - const events = room.getLiveTimeline().getEvents(); - let highlightCount = 0; - - for (let i = events.length - 1; i >= 0; i--) { - if (i === events.length - maxHistory) return; // limit reached - - const event = events[i]; - - if (room.hasUserReadEvent(this.getUserId(), event.getId())) { - // If the user has read the event, then the counting is done. - break; - } - - const pushActions = this.getPushActionsForEvent(event); - highlightCount += pushActions.tweaks && pushActions.tweaks.highlight ? 1 : 0; - } // Note: we don't need to handle 'total' notifications because the counts - // will come from the server. - - - room.setUnreadNotificationCount("highlight", highlightCount); - } - }); -} - -utils.inherits(MatrixClient, _events.EventEmitter); -utils.extend(MatrixClient.prototype, _baseApis.MatrixBaseApis.prototype); - -MatrixClient.prototype.exportDevice = async function () { - if (!this._crypto) { - _logger.logger.warn('not exporting device if crypto is not enabled'); - - return; - } - - return { - userId: this.credentials.userId, - deviceId: this.deviceId, - olmDevice: await this._crypto._olmDevice.export() - }; -}; -/** - * Clear any data out of the persistent stores used by the client. - * - * @returns {Promise} Promise which resolves when the stores have been cleared. - */ - - -MatrixClient.prototype.clearStores = function () { - if (this._clientRunning) { - throw new Error("Cannot clear stores while client is running"); - } - - const promises = []; - promises.push(this.store.deleteAllData()); - - if (this._cryptoStore) { - promises.push(this._cryptoStore.deleteAllData()); - } - - return Promise.all(promises); -}; -/** - * Get the user-id of the logged-in user - * - * @return {?string} MXID for the logged-in user, or null if not logged in - */ - - -MatrixClient.prototype.getUserId = function () { - if (this.credentials && this.credentials.userId) { - return this.credentials.userId; - } - - return null; -}; -/** - * Get the domain for this client's MXID - * @return {?string} Domain of this MXID - */ - - -MatrixClient.prototype.getDomain = function () { - if (this.credentials && this.credentials.userId) { - return this.credentials.userId.replace(/^.*?:/, ''); - } - - return null; -}; -/** - * Get the local part of the current user ID e.g. "foo" in "@foo:bar". - * @return {?string} The user ID localpart or null. - */ - - -MatrixClient.prototype.getUserIdLocalpart = function () { - if (this.credentials && this.credentials.userId) { - return this.credentials.userId.split(":")[0].substring(1); - } - - return null; -}; -/** - * Get the device ID of this client - * @return {?string} device ID - */ - - -MatrixClient.prototype.getDeviceId = function () { - return this.deviceId; -}; -/** - * Check if the runtime environment supports VoIP calling. - * @return {boolean} True if VoIP is supported. - */ - - -MatrixClient.prototype.supportsVoip = function () { - return this._supportsVoip; -}; -/** - * Set whether VoIP calls are forced to use only TURN - * candidates. This is the same as the forceTURN option - * when creating the client. - * @param {bool} forceTURN True to force use of TURN servers - */ - - -MatrixClient.prototype.setForceTURN = function (forceTURN) { - this._forceTURN = forceTURN; -}; -/** - * Get the current sync state. - * @return {?string} the sync state, which may be null. - * @see module:client~MatrixClient#event:"sync" - */ - - -MatrixClient.prototype.getSyncState = function () { - if (!this._syncApi) { - return null; - } - - return this._syncApi.getSyncState(); -}; -/** - * Returns the additional data object associated with - * the current sync state, or null if there is no - * such data. - * Sync errors, if available, are put in the 'error' key of - * this object. - * @return {?Object} - */ - - -MatrixClient.prototype.getSyncStateData = function () { - if (!this._syncApi) { - return null; - } - - return this._syncApi.getSyncStateData(); -}; -/** - * Whether the initial sync has completed. - * @return {boolean} True if at least on sync has happened. - */ - - -MatrixClient.prototype.isInitialSyncComplete = function () { - const state = this.getSyncState(); - - if (!state) { - return false; - } - - return state === "PREPARED" || state === "SYNCING"; -}; -/** - * Return whether the client is configured for a guest account. - * @return {boolean} True if this is a guest access_token (or no token is supplied). - */ - - -MatrixClient.prototype.isGuest = function () { - return this._isGuest; -}; -/** - * Return the provided scheduler, if any. - * @return {?module:scheduler~MatrixScheduler} The scheduler or null - */ - - -MatrixClient.prototype.getScheduler = function () { - return this.scheduler; -}; -/** - * Set whether this client is a guest account. This method is experimental - * and may change without warning. - * @param {boolean} isGuest True if this is a guest account. - */ - - -MatrixClient.prototype.setGuest = function (isGuest) { - // EXPERIMENTAL: - // If the token is a macaroon, it should be encoded in it that it is a 'guest' - // access token, which means that the SDK can determine this entirely without - // the dev manually flipping this flag. - this._isGuest = isGuest; -}; -/** - * Retry a backed off syncing request immediately. This should only be used when - * the user explicitly attempts to retry their lost connection. - * @return {boolean} True if this resulted in a request being retried. - */ - - -MatrixClient.prototype.retryImmediately = function () { - return this._syncApi.retryImmediately(); -}; -/** - * Return the global notification EventTimelineSet, if any - * - * @return {EventTimelineSet} the globl notification EventTimelineSet - */ - - -MatrixClient.prototype.getNotifTimelineSet = function () { - return this._notifTimelineSet; -}; -/** - * Set the global notification EventTimelineSet - * - * @param {EventTimelineSet} notifTimelineSet - */ - - -MatrixClient.prototype.setNotifTimelineSet = function (notifTimelineSet) { - this._notifTimelineSet = notifTimelineSet; -}; -/** - * Gets the capabilities of the homeserver. Always returns an object of - * capability keys and their options, which may be empty. - * @param {boolean} fresh True to ignore any cached values. - * @return {Promise} Resolves to the capabilities of the homeserver - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.getCapabilities = function (fresh = false) { - const now = new Date().getTime(); - - if (this._cachedCapabilities && !fresh) { - if (now < this._cachedCapabilities.expiration) { - _logger.logger.log("Returning cached capabilities"); - - return Promise.resolve(this._cachedCapabilities.capabilities); - } - } // We swallow errors because we need a default object anyhow - - - return this._http.authedRequest(undefined, "GET", "/capabilities").catch(e => { - _logger.logger.error(e); - - return null; // otherwise consume the error - }).then(r => { - if (!r) r = {}; - const capabilities = r["capabilities"] || {}; // If the capabilities missed the cache, cache it for a shorter amount - // of time to try and refresh them later. - - const cacheMs = Object.keys(capabilities).length ? CAPABILITIES_CACHE_MS : 60000 + Math.random() * 5000; - this._cachedCapabilities = { - capabilities: capabilities, - expiration: now + cacheMs - }; - - _logger.logger.log("Caching capabilities: ", capabilities); - - return capabilities; - }); -}; // Crypto bits -// =========== - -/** - * Initialise support for end-to-end encryption in this client - * - * You should call this method after creating the matrixclient, but *before* - * calling `startClient`, if you want to support end-to-end encryption. - * - * It will return a Promise which will resolve when the crypto layer has been - * successfully initialised. - */ - - -MatrixClient.prototype.initCrypto = async function () { - if (!(0, _crypto.isCryptoAvailable)()) { - throw new Error(`End-to-end encryption not supported in this js-sdk build: did ` + `you remember to load the olm library?`); - } - - if (this._crypto) { - _logger.logger.warn("Attempt to re-initialise e2e encryption on MatrixClient"); - - return; - } - - if (!this._sessionStore) { - // this is temporary, the sessionstore is supposed to be going away - throw new Error(`Cannot enable encryption: no sessionStore provided`); - } - - if (!this._cryptoStore) { - // the cryptostore is provided by sdk.createClient, so this shouldn't happen - throw new Error(`Cannot enable encryption: no cryptoStore provided`); - } - - _logger.logger.log("Crypto: Starting up crypto store..."); - - await this._cryptoStore.startup(); // initialise the list of encrypted rooms (whether or not crypto is enabled) - - _logger.logger.log("Crypto: initialising roomlist..."); - - await this._roomList.init(); - const userId = this.getUserId(); - - if (userId === null) { - throw new Error(`Cannot enable encryption on MatrixClient with unknown userId: ` + `ensure userId is passed in createClient().`); - } - - if (this.deviceId === null) { - throw new Error(`Cannot enable encryption on MatrixClient with unknown deviceId: ` + `ensure deviceId is passed in createClient().`); - } - - const crypto = new _crypto.Crypto(this, this._sessionStore, userId, this.deviceId, this.store, this._cryptoStore, this._roomList, this._verificationMethods); - this.reEmitter.reEmit(crypto, ["crypto.keyBackupFailed", "crypto.keyBackupSessionsRemaining", "crypto.roomKeyRequest", "crypto.roomKeyRequestCancellation", "crypto.warning", "crypto.devicesUpdated", "crypto.willUpdateDevices", "deviceVerificationChanged", "userTrustStatusChanged", "crossSigning.keysChanged"]); - - _logger.logger.log("Crypto: initialising crypto object..."); - - await crypto.init({ - exportedOlmDevice: this._exportedOlmDeviceToImport, - pickleKey: this.pickleKey - }); - delete this._exportedOlmDeviceToImport; - this.olmVersion = _crypto.Crypto.getOlmVersion(); // if crypto initialisation was successful, tell it to attach its event - // handlers. - - crypto.registerEventHandlers(this); - this._crypto = crypto; -}; -/** - * Is end-to-end crypto enabled for this client. - * @return {boolean} True if end-to-end is enabled. - */ - - -MatrixClient.prototype.isCryptoEnabled = function () { - return this._crypto !== null; -}; -/** - * Get the Ed25519 key for this device - * - * @return {?string} base64-encoded ed25519 key. Null if crypto is - * disabled. - */ - - -MatrixClient.prototype.getDeviceEd25519Key = function () { - if (!this._crypto) { - return null; - } - - return this._crypto.getDeviceEd25519Key(); -}; -/** - * Get the Curve25519 key for this device - * - * @return {?string} base64-encoded curve25519 key. Null if crypto is - * disabled. - */ - - -MatrixClient.prototype.getDeviceCurve25519Key = function () { - if (!this._crypto) { - return null; - } - - return this._crypto.getDeviceCurve25519Key(); -}; -/** - * Upload the device keys to the homeserver. - * @return {object} A promise that will resolve when the keys are uploaded. - */ - - -MatrixClient.prototype.uploadKeys = function () { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.uploadDeviceKeys(); -}; -/** - * Download the keys for a list of users and stores the keys in the session - * store. - * @param {Array} userIds The users to fetch. - * @param {bool} forceDownload Always download the keys even if cached. - * - * @return {Promise} A promise which resolves to a map userId->deviceId->{@link - * module:crypto~DeviceInfo|DeviceInfo}. - */ - - -MatrixClient.prototype.downloadKeys = function (userIds, forceDownload) { - if (this._crypto === null) { - return Promise.reject(new Error("End-to-end encryption disabled")); - } - - return this._crypto.downloadKeys(userIds, forceDownload); -}; -/** - * Get the stored device keys for a user id - * - * @param {string} userId the user to list keys for. - * - * @return {module:crypto/deviceinfo[]} list of devices - */ - - -MatrixClient.prototype.getStoredDevicesForUser = function (userId) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.getStoredDevicesForUser(userId) || []; -}; -/** - * Get the stored device key for a user id and device id - * - * @param {string} userId the user to list keys for. - * @param {string} deviceId unique identifier for the device - * - * @return {module:crypto/deviceinfo} device or null - */ - - -MatrixClient.prototype.getStoredDevice = function (userId, deviceId) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.getStoredDevice(userId, deviceId) || null; -}; -/** - * Mark the given device as verified - * - * @param {string} userId owner of the device - * @param {string} deviceId unique identifier for the device or user's - * cross-signing public key ID. - * - * @param {boolean=} verified whether to mark the device as verified. defaults - * to 'true'. - * - * @returns {Promise} - * - * @fires module:client~event:MatrixClient"deviceVerificationChanged" - */ - - -MatrixClient.prototype.setDeviceVerified = function (userId, deviceId, verified) { - if (verified === undefined) { - verified = true; - } - - const prom = _setDeviceVerification(this, userId, deviceId, verified, null); // if one of the user's own devices is being marked as verified / unverified, - // check the key backup status, since whether or not we use this depends on - // whether it has a signature from a verified device - - - if (userId == this.credentials.userId) { - this._crypto.checkKeyBackup(); - } - - return prom; -}; -/** - * Mark the given device as blocked/unblocked - * - * @param {string} userId owner of the device - * @param {string} deviceId unique identifier for the device or user's - * cross-signing public key ID. - * - * @param {boolean=} blocked whether to mark the device as blocked. defaults - * to 'true'. - * - * @returns {Promise} - * - * @fires module:client~event:MatrixClient"deviceVerificationChanged" - */ - - -MatrixClient.prototype.setDeviceBlocked = function (userId, deviceId, blocked) { - if (blocked === undefined) { - blocked = true; - } - - return _setDeviceVerification(this, userId, deviceId, null, blocked); -}; -/** - * Mark the given device as known/unknown - * - * @param {string} userId owner of the device - * @param {string} deviceId unique identifier for the device or user's - * cross-signing public key ID. - * - * @param {boolean=} known whether to mark the device as known. defaults - * to 'true'. - * - * @returns {Promise} - * - * @fires module:client~event:MatrixClient"deviceVerificationChanged" - */ - - -MatrixClient.prototype.setDeviceKnown = function (userId, deviceId, known) { - if (known === undefined) { - known = true; - } - - return _setDeviceVerification(this, userId, deviceId, null, null, known); -}; - -async function _setDeviceVerification(client, userId, deviceId, verified, blocked, known) { - if (!client._crypto) { - throw new Error("End-to-End encryption disabled"); - } - - await client._crypto.setDeviceVerification(userId, deviceId, verified, blocked, known); -} -/** - * Request a key verification from another user, using a DM. - * - * @param {string} userId the user to request verification with - * @param {string} roomId the room to use for verification - * - * @returns {Promise} resolves to a VerificationRequest - * when the request has been sent to the other party. - */ - - -MatrixClient.prototype.requestVerificationDM = function (userId, roomId) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.requestVerificationDM(userId, roomId); -}; -/** - * Finds a DM verification request that is already in progress for the given room id - * - * @param {string} roomId the room to use for verification - * - * @returns {module:crypto/verification/request/VerificationRequest?} the VerificationRequest that is in progress, if any - */ - - -MatrixClient.prototype.findVerificationRequestDMInProgress = function (roomId) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.findVerificationRequestDMInProgress(roomId); -}; -/** - * Returns all to-device verification requests that are already in progress for the given user id - * - * @param {string} userId the ID of the user to query - * - * @returns {module:crypto/verification/request/VerificationRequest[]} the VerificationRequests that are in progress - */ - - -MatrixClient.prototype.getVerificationRequestsToDeviceInProgress = function (userId) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.getVerificationRequestsToDeviceInProgress(userId); -}; -/** - * Request a key verification from another user. - * - * @param {string} userId the user to request verification with - * @param {Array} devices array of device IDs to send requests to. Defaults to - * all devices owned by the user - * - * @returns {Promise} resolves to a VerificationRequest - * when the request has been sent to the other party. - */ - - -MatrixClient.prototype.requestVerification = function (userId, devices) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.requestVerification(userId, devices); -}; -/** - * Begin a key verification. - * - * @param {string} method the verification method to use - * @param {string} userId the user to verify keys with - * @param {string} deviceId the device to verify - * - * @returns {module:crypto/verification/Base} a verification object - */ - - -MatrixClient.prototype.beginKeyVerification = function (method, userId, deviceId) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.beginKeyVerification(method, userId, deviceId); -}; -/** - * Set the global override for whether the client should ever send encrypted - * messages to unverified devices. This provides the default for rooms which - * do not specify a value. - * - * @param {boolean} value whether to blacklist all unverified devices by default - */ - - -MatrixClient.prototype.setGlobalBlacklistUnverifiedDevices = function (value) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - this._crypto.setGlobalBlacklistUnverifiedDevices(value); -}; -/** - * @return {boolean} whether to blacklist all unverified devices by default - */ - - -MatrixClient.prototype.getGlobalBlacklistUnverifiedDevices = function () { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.getGlobalBlacklistUnverifiedDevices(); -}; -/** - * Set whether sendMessage in a room with unknown and unverified devices - * should throw an error and not send them message. This has 'Global' for - * symmetry with setGlobalBlacklistUnverifiedDevices but there is currently - * no room-level equivalent for this setting. - * - * This API is currently UNSTABLE and may change or be removed without notice. - * - * @param {boolean} value whether error on unknown devices - */ - - -MatrixClient.prototype.setGlobalErrorOnUnknownDevices = function (value) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - this._crypto.setGlobalErrorOnUnknownDevices(value); -}; -/** - * @return {boolean} whether to error on unknown devices - * - * This API is currently UNSTABLE and may change or be removed without notice. - */ - - -MatrixClient.prototype.getGlobalErrorOnUnknownDevices = function () { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.getGlobalErrorOnUnknownDevices(); -}; -/** - * Add methods that call the corresponding method in this._crypto - * - * @param {class} MatrixClient the class to add the method to - * @param {string} names the names of the methods to call - */ - - -function wrapCryptoFuncs(MatrixClient, names) { - for (const name of names) { - MatrixClient.prototype[name] = function (...args) { - if (!this._crypto) { - // eslint-disable-line no-invalid-this - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto[name](...args); // eslint-disable-line no-invalid-this - }; - } -} -/** - * Get the user's cross-signing key ID. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#getCrossSigningId - * @param {string} [type=master] The type of key to get the ID of. One of - * "master", "self_signing", or "user_signing". Defaults to "master". - * - * @returns {string} the key ID - */ - -/** - * Get the cross signing information for a given user. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#getStoredCrossSigningForUser - * @param {string} userId the user ID to get the cross-signing info for. - * - * @returns {CrossSigningInfo} the cross signing information for the user. - */ - -/** - * Check whether a given user is trusted. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#checkUserTrust - * @param {string} userId The ID of the user to check. - * - * @returns {UserTrustLevel} - */ - -/** - * Check whether a given device is trusted. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#checkDeviceTrust - * @param {string} userId The ID of the user whose devices is to be checked. - * @param {string} deviceId The ID of the device to check - * - * @returns {DeviceTrustLevel} - */ - -/** - * Check the copy of our cross-signing key that we have in the device list and - * see if we can get the private key. If so, mark it as trusted. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#checkOwnCrossSigningTrust - */ - -/** - * Checks that a given cross-signing private key matches a given public key. - * This can be used by the getCrossSigningKey callback to verify that the - * private key it is about to supply is the one that was requested. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#checkCrossSigningPrivateKey - * @param {Uint8Array} privateKey The private key - * @param {string} expectedPublicKey The public key - * @returns {boolean} true if the key matches, otherwise false - */ - -/** - * Perform any background tasks that can be done before a message is ready to - * send, in order to speed up sending of the message. - * - * @function module:client~MatrixClient#prepareToEncrypt - * @param {module:models/room} room the room the event is in - */ - -/** - * Checks whether cross signing: - * - is enabled on this account and trusted by this device - * - has private keys either cached locally or stored in secret storage - * - * If this function returns false, bootstrapCrossSigning() can be used - * to fix things such that it returns true. That is to say, after - * bootstrapCrossSigning() completes successfully, this function should - * return true. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#isCrossSigningReady - * @return {bool} True if cross-signing is ready to be used on this device - */ - -/** - * Bootstrap cross-signing by creating keys if needed. If everything is already - * set up, then no changes are made, so this is safe to run to ensure - * cross-signing is ready for use. - * - * This function: - * - creates new cross-signing keys if they are not found locally cached nor in - * secret storage (if it has been setup) - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#bootstrapCrossSigning - * @param {function} opts.authUploadDeviceSigningKeys Function - * called to await an interactive auth flow when uploading device signing keys. - * @param {bool} [opts.setupNewCrossSigning] Optional. Reset even if keys - * already exist. - * Args: - * {function} A function that makes the request requiring auth. Receives the - * auth data as an object. Can be called multiple times, first with an empty - * authDict, to obtain the flows. - */ - - -wrapCryptoFuncs(MatrixClient, ["getCrossSigningId", "getStoredCrossSigningForUser", "checkUserTrust", "checkDeviceTrust", "checkOwnCrossSigningTrust", "checkCrossSigningPrivateKey", "legacyDeviceVerification", "prepareToEncrypt", "isCrossSigningReady", "bootstrapCrossSigning", "getCryptoTrustCrossSignedDevices", "setCryptoTrustCrossSignedDevices", "countSessionsNeedingBackup"]); -/** - * Get information about the encryption of an event - * - * @function module:client~MatrixClient#getEventEncryptionInfo - * - * @param {module:models/event.MatrixEvent} event event to be checked - * - * @return {object} An object with the fields: - * - encrypted: whether the event is encrypted (if not encrypted, some of the - * other properties may not be set) - * - senderKey: the sender's key - * - algorithm: the algorithm used to encrypt the event - * - authenticated: whether we can be sure that the owner of the senderKey - * sent the event - * - sender: the sender's device information, if available - * - mismatchedSender: if the event's ed25519 and curve25519 keys don't match - * (only meaningful if `sender` is set) - */ - -/** - * Create a recovery key from a user-supplied passphrase. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#createRecoveryKeyFromPassphrase - * @param {string} password Passphrase string that can be entered by the user - * when restoring the backup as an alternative to entering the recovery key. - * Optional. - * @returns {Promise} Object with public key metadata, encoded private - * recovery key which should be disposed of after displaying to the user, - * and raw private key to avoid round tripping if needed. - */ - -/** - * Checks whether secret storage: - * - is enabled on this account - * - is storing cross-signing private keys - * - is storing session backup key (if enabled) - * - * If this function returns false, bootstrapSecretStorage() can be used - * to fix things such that it returns true. That is to say, after - * bootstrapSecretStorage() completes successfully, this function should - * return true. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#isSecretStorageReady - * @return {bool} True if secret storage is ready to be used on this device - */ - -/** - * Bootstrap Secure Secret Storage if needed by creating a default key. If everything is - * already set up, then no changes are made, so this is safe to run to ensure secret - * storage is ready for use. - * - * This function - * - creates a new Secure Secret Storage key if no default key exists - * - if a key backup exists, it is migrated to store the key in the Secret - * Storage - * - creates a backup if none exists, and one is requested - * - migrates Secure Secret Storage to use the latest algorithm, if an outdated - * algorithm is found - * - * @function module:client~MatrixClient#bootstrapSecretStorage - * @param {function} [opts.createSecretStorageKey] Optional. Function - * called to await a secret storage key creation flow. - * Returns: - * {Promise} Object with public key metadata, encoded private - * recovery key which should be disposed of after displaying to the user, - * and raw private key to avoid round tripping if needed. - * @param {object} [opts.keyBackupInfo] The current key backup object. If passed, - * the passphrase and recovery key from this backup will be used. - * @param {bool} [opts.setupNewKeyBackup] If true, a new key backup version will be - * created and the private key stored in the new SSSS store. Ignored if keyBackupInfo - * is supplied. - * @param {bool} [opts.setupNewSecretStorage] Optional. Reset even if keys already exist. - * @param {func} [opts.getKeyBackupPassphrase] Optional. Function called to get the user's - * current key backup passphrase. Should return a promise that resolves with a Buffer - * containing the key, or rejects if the key cannot be obtained. - * Returns: - * {Promise} A promise which resolves to key creation data for - * SecretStorage#addKey: an object with `passphrase` and/or `pubkey` fields. - */ - -/** - * Add a key for encrypting secrets. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#addSecretStorageKey - * @param {string} algorithm the algorithm used by the key - * @param {object} opts the options for the algorithm. The properties used - * depend on the algorithm given. - * @param {string} [keyName] the name of the key. If not given, a random - * name will be generated. - * - * @return {string} the name of the key - */ - -/** - * Check whether we have a key with a given ID. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#hasSecretStorageKey - * @param {string} [keyId = default key's ID] The ID of the key to check - * for. Defaults to the default key ID if not provided. - * @return {boolean} Whether we have the key. - */ - -/** - * Store an encrypted secret on the server. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#storeSecret - * @param {string} name The name of the secret - * @param {string} secret The secret contents. - * @param {Array} keys The IDs of the keys to use to encrypt the secret or null/undefined - * to use the default (will throw if no default key is set). - */ - -/** - * Get a secret from storage. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#getSecret - * @param {string} name the name of the secret - * - * @return {string} the contents of the secret - */ - -/** - * Check if a secret is stored on the server. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#isSecretStored - * @param {string} name the name of the secret - * @param {boolean} checkKey check if the secret is encrypted by a trusted - * key - * - * @return {object?} map of key name to key info the secret is encrypted - * with, or null if it is not present or not encrypted with a trusted - * key - */ - -/** - * Request a secret from another device. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#requestSecret - * @param {string} name the name of the secret to request - * @param {string[]} devices the devices to request the secret from - * - * @return {string} the contents of the secret - */ - -/** - * Get the current default key ID for encrypting secrets. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#getDefaultSecretStorageKeyId - * - * @return {string} The default key ID or null if no default key ID is set - */ - -/** - * Set the current default key ID for encrypting secrets. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#setDefaultSecretStorageKeyId - * @param {string} keyId The new default key ID - */ - -/** - * Checks that a given secret storage private key matches a given public key. - * This can be used by the getSecretStorageKey callback to verify that the - * private key it is about to supply is the one that was requested. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @function module:client~MatrixClient#checkSecretStoragePrivateKey - * @param {Uint8Array} privateKey The private key - * @param {string} expectedPublicKey The public key - * @returns {boolean} true if the key matches, otherwise false - */ - -wrapCryptoFuncs(MatrixClient, ["getEventEncryptionInfo", "createRecoveryKeyFromPassphrase", "isSecretStorageReady", "bootstrapSecretStorage", "addSecretStorageKey", "hasSecretStorageKey", "storeSecret", "getSecret", "isSecretStored", "requestSecret", "getDefaultSecretStorageKeyId", "setDefaultSecretStorageKeyId", "checkSecretStorageKey", "checkSecretStoragePrivateKey"]); -/** - * Get e2e information on the device that sent an event - * - * @param {MatrixEvent} event event to be checked - * - * @return {Promise} - */ - -MatrixClient.prototype.getEventSenderDeviceInfo = async function (event) { - if (!this._crypto) { - return null; - } - - return this._crypto.getEventSenderDeviceInfo(event); -}; -/** - * Check if the sender of an event is verified - * - * @param {MatrixEvent} event event to be checked - * - * @return {boolean} true if the sender of this event has been verified using - * {@link module:client~MatrixClient#setDeviceVerified|setDeviceVerified}. - */ - - -MatrixClient.prototype.isEventSenderVerified = async function (event) { - const device = await this.getEventSenderDeviceInfo(event); - - if (!device) { - return false; - } - - return device.isVerified(); -}; -/** - * Cancel a room key request for this event if one is ongoing and resend the - * request. - * @param {MatrixEvent} event event of which to cancel and resend the room - * key request. - * @return {Promise} A promise that will resolve when the key request is queued - */ - - -MatrixClient.prototype.cancelAndResendEventRoomKeyRequest = function (event) { - return event.cancelAndResendKeyRequest(this._crypto, this.getUserId()); -}; -/** - * Enable end-to-end encryption for a room. This does not modify room state. - * Any messages sent before the returned promise resolves will be sent unencrypted. - * @param {string} roomId The room ID to enable encryption in. - * @param {object} config The encryption config for the room. - * @return {Promise} A promise that will resolve when encryption is set up. - */ - - -MatrixClient.prototype.setRoomEncryption = function (roomId, config) { - if (!this._crypto) { - throw new Error("End-to-End encryption disabled"); - } - - return this._crypto.setRoomEncryption(roomId, config); -}; -/** - * Whether encryption is enabled for a room. - * @param {string} roomId the room id to query. - * @return {bool} whether encryption is enabled. - */ - - -MatrixClient.prototype.isRoomEncrypted = function (roomId) { - const room = this.getRoom(roomId); - - if (!room) { - // we don't know about this room, so can't determine if it should be - // encrypted. Let's assume not. - return false; - } // if there is an 'm.room.encryption' event in this room, it should be - // encrypted (independently of whether we actually support encryption) - - - const ev = room.currentState.getStateEvents("m.room.encryption", ""); - - if (ev) { - return true; - } // we don't have an m.room.encrypted event, but that might be because - // the server is hiding it from us. Check the store to see if it was - // previously encrypted. - - - return this._roomList.isRoomEncrypted(roomId); -}; -/** - * Forces the current outbound group session to be discarded such - * that another one will be created next time an event is sent. - * - * @param {string} roomId The ID of the room to discard the session for - * - * This should not normally be necessary. - */ - - -MatrixClient.prototype.forceDiscardSession = function (roomId) { - if (!this._crypto) { - throw new Error("End-to-End encryption disabled"); - } - - this._crypto.forceDiscardSession(roomId); -}; -/** - * Get a list containing all of the room keys - * - * This should be encrypted before returning it to the user. - * - * @return {Promise} a promise which resolves to a list of - * session export objects - */ - - -MatrixClient.prototype.exportRoomKeys = function () { - if (!this._crypto) { - return Promise.reject(new Error("End-to-end encryption disabled")); - } - - return this._crypto.exportRoomKeys(); -}; -/** - * Import a list of room keys previously exported by exportRoomKeys - * - * @param {Object[]} keys a list of session export objects - * @param {Object} opts - * @param {Function} opts.progressCallback called with an object that has a "stage" param - * - * @return {Promise} a promise which resolves when the keys - * have been imported - */ - - -MatrixClient.prototype.importRoomKeys = function (keys, opts) { - if (!this._crypto) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.importRoomKeys(keys, opts); -}; -/** - * Force a re-check of the local key backup status against - * what's on the server. - * - * @returns {Object} Object with backup info (as returned by - * getKeyBackupVersion) in backupInfo and - * trust information (as returned by isKeyBackupTrusted) - * in trustInfo. - */ - - -MatrixClient.prototype.checkKeyBackup = function () { - return this._crypto.checkKeyBackup(); -}; -/** - * Get information about the current key backup. - * @returns {Promise} Information object from API or null - */ - - -MatrixClient.prototype.getKeyBackupVersion = function () { - return this._http.authedRequest(undefined, "GET", "/room_keys/version", undefined, undefined, { - prefix: _httpApi.PREFIX_UNSTABLE - }).then(res => { - if (res.algorithm !== olmlib.MEGOLM_BACKUP_ALGORITHM) { - const err = "Unknown backup algorithm: " + res.algorithm; - return Promise.reject(err); - } else if (!(typeof res.auth_data === "object") || !res.auth_data.public_key) { - const err = "Invalid backup data returned"; - return Promise.reject(err); - } else { - return res; - } - }).catch(e => { - if (e.errcode === 'M_NOT_FOUND') { - return null; - } else { - throw e; - } - }); -}; -/** - * @param {object} info key backup info dict from getKeyBackupVersion() - * @return {object} { - * usable: [bool], // is the backup trusted, true iff there is a sig that is valid & from a trusted device - * sigs: [ - * valid: [bool], - * device: [DeviceInfo], - * ] - * } - */ - - -MatrixClient.prototype.isKeyBackupTrusted = function (info) { - return this._crypto.isKeyBackupTrusted(info); -}; -/** - * @returns {bool} true if the client is configured to back up keys to - * the server, otherwise false. If we haven't completed a successful check - * of key backup status yet, returns null. - */ - - -MatrixClient.prototype.getKeyBackupEnabled = function () { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - if (!this._crypto._checkedForBackup) { - return null; - } - - return Boolean(this._crypto.backupKey); -}; -/** - * Enable backing up of keys, using data previously returned from - * getKeyBackupVersion. - * - * @param {object} info Backup information object as returned by getKeyBackupVersion - */ - - -MatrixClient.prototype.enableKeyBackup = function (info) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - this._crypto.backupInfo = info; - if (this._crypto.backupKey) this._crypto.backupKey.free(); - this._crypto.backupKey = new global.Olm.PkEncryption(); - - this._crypto.backupKey.set_recipient_key(info.auth_data.public_key); - - this.emit('crypto.keyBackupStatus', true); // There may be keys left over from a partially completed backup, so - // schedule a send to check. - - this._crypto.scheduleKeyBackupSend(); -}; -/** - * Disable backing up of keys. - */ - - -MatrixClient.prototype.disableKeyBackup = function () { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - this._crypto.backupInfo = null; - if (this._crypto.backupKey) this._crypto.backupKey.free(); - this._crypto.backupKey = null; - this.emit('crypto.keyBackupStatus', false); -}; -/** - * Set up the data required to create a new backup version. The backup version - * will not be created and enabled until createKeyBackupVersion is called. - * - * @param {string} password Passphrase string that can be entered by the user - * when restoring the backup as an alternative to entering the recovery key. - * Optional. - * @param {boolean} [opts.secureSecretStorage = false] Whether to use Secure - * Secret Storage to store the key encrypting key backups. - * Optional, defaults to false. - * - * @returns {Promise} Object that can be passed to createKeyBackupVersion and - * additionally has a 'recovery_key' member with the user-facing recovery key string. - */ - - -MatrixClient.prototype.prepareKeyBackupVersion = async function (password, { - secureSecretStorage = false -} = {}) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - const { - keyInfo, - encodedPrivateKey, - privateKey - } = await this.createRecoveryKeyFromPassphrase(password); - - if (secureSecretStorage) { - await this.storeSecret("m.megolm_backup.v1", (0, olmlib.encodeBase64)(privateKey)); - - _logger.logger.info("Key backup private key stored in secret storage"); - } // Reshape objects into form expected for key backup - - - const authData = { - public_key: keyInfo.pubkey - }; - - if (keyInfo.passphrase) { - authData.private_key_salt = keyInfo.passphrase.salt; - authData.private_key_iterations = keyInfo.passphrase.iterations; - } - - return { - algorithm: olmlib.MEGOLM_BACKUP_ALGORITHM, - auth_data: authData, - recovery_key: encodedPrivateKey - }; -}; -/** - * Check whether the key backup private key is stored in secret storage. - * @return {Promise} map of key name to key info the secret is - * encrypted with, or null if it is not present or not encrypted with a - * trusted key - */ - - -MatrixClient.prototype.isKeyBackupKeyStored = async function () { - return this.isSecretStored("m.megolm_backup.v1", false - /* checkKey */ - ); -}; -/** - * Create a new key backup version and enable it, using the information return - * from prepareKeyBackupVersion. - * - * @param {object} info Info object from prepareKeyBackupVersion - * @returns {Promise} Object with 'version' param indicating the version created - */ - - -MatrixClient.prototype.createKeyBackupVersion = async function (info) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - const data = { - algorithm: info.algorithm, - auth_data: info.auth_data - }; // Sign the backup auth data with the device key for backwards compat with - // older devices with cross-signing. This can probably go away very soon in - // favour of just signing with the cross-singing master key. - - await this._crypto._signObject(data.auth_data); - - if (this._cryptoCallbacks.getCrossSigningKey && this._crypto._crossSigningInfo.getId()) { - // now also sign the auth data with the cross-signing master key - // we check for the callback explicitly here because we still want to be able - // to create an un-cross-signed key backup if there is a cross-signing key but - // no callback supplied. - await this._crypto._crossSigningInfo.signObject(data.auth_data, "master"); - } - - const res = await this._http.authedRequest(undefined, "POST", "/room_keys/version", undefined, data, { - prefix: _httpApi.PREFIX_UNSTABLE - }); // We could assume everything's okay and enable directly, but this ensures - // we run the same signature verification that will be used for future - // sessions. - - await this.checkKeyBackup(); - - if (!this.getKeyBackupEnabled()) { - _logger.logger.error("Key backup not usable even though we just created it"); - } - - return res; -}; - -MatrixClient.prototype.deleteKeyBackupVersion = function (version) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } // If we're currently backing up to this backup... stop. - // (We start using it automatically in createKeyBackupVersion - // so this is symmetrical). - - - if (this._crypto.backupInfo && this._crypto.backupInfo.version === version) { - this.disableKeyBackup(); - } - - const path = utils.encodeUri("/room_keys/version/$version", { - $version: version - }); - return this._http.authedRequest(undefined, "DELETE", path, undefined, undefined, { - prefix: _httpApi.PREFIX_UNSTABLE - }); -}; - -MatrixClient.prototype._makeKeyBackupPath = function (roomId, sessionId, version) { - let path; - - if (sessionId !== undefined) { - path = utils.encodeUri("/room_keys/keys/$roomId/$sessionId", { - $roomId: roomId, - $sessionId: sessionId - }); - } else if (roomId !== undefined) { - path = utils.encodeUri("/room_keys/keys/$roomId", { - $roomId: roomId - }); - } else { - path = "/room_keys/keys"; - } - - const queryData = version === undefined ? undefined : { - version: version - }; - return { - path: path, - queryData: queryData - }; -}; -/** - * Back up session keys to the homeserver. - * @param {string} roomId ID of the room that the keys are for Optional. - * @param {string} sessionId ID of the session that the keys are for Optional. - * @param {integer} version backup version Optional. - * @param {object} data Object keys to send - * @return {Promise} a promise that will resolve when the keys - * are uploaded - */ - - -MatrixClient.prototype.sendKeyBackup = function (roomId, sessionId, version, data) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - const path = this._makeKeyBackupPath(roomId, sessionId, version); - - return this._http.authedRequest(undefined, "PUT", path.path, path.queryData, data, { - prefix: _httpApi.PREFIX_UNSTABLE - }); -}; -/** - * Marks all group sessions as needing to be backed up and schedules them to - * upload in the background as soon as possible. - */ - - -MatrixClient.prototype.scheduleAllGroupSessionsForBackup = async function () { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - await this._crypto.scheduleAllGroupSessionsForBackup(); -}; -/** - * Marks all group sessions as needing to be backed up without scheduling - * them to upload in the background. - * @returns {Promise} Resolves to the number of sessions requiring a backup. - */ - - -MatrixClient.prototype.flagAllGroupSessionsForBackup = function () { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - return this._crypto.flagAllGroupSessionsForBackup(); -}; - -MatrixClient.prototype.isValidRecoveryKey = function (recoveryKey) { - try { - (0, _recoverykey.decodeRecoveryKey)(recoveryKey); - return true; - } catch (e) { - return false; - } -}; -/** - * Get the raw key for a key backup from the password - * Used when migrating key backups into SSSS - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @param {string} password Passphrase - * @param {object} backupInfo Backup metadata from `checkKeyBackup` - * @return {Promise} key backup key - */ - - -MatrixClient.prototype.keyBackupKeyFromPassword = function (password, backupInfo) { - return (0, _key_passphrase.keyFromAuthData)(backupInfo.auth_data, password); -}; -/** - * Get the raw key for a key backup from the recovery key - * Used when migrating key backups into SSSS - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @param {string} recoveryKey The recovery key - * @return {Buffer} key backup key - */ - - -MatrixClient.prototype.keyBackupKeyFromRecoveryKey = function (recoveryKey) { - return (0, _recoverykey.decodeRecoveryKey)(recoveryKey); -}; - -MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY = 'RESTORE_BACKUP_ERROR_BAD_KEY'; -/** - * Restore from an existing key backup via a passphrase. - * - * @param {string} password Passphrase - * @param {string} [targetRoomId] Room ID to target a specific room. - * Restores all rooms if omitted. - * @param {string} [targetSessionId] Session ID to target a specific session. - * Restores all sessions if omitted. - * @param {object} backupInfo Backup metadata from `checkKeyBackup` - * @param {object} opts Optional params such as callbacks - * @return {Promise} Status of restoration with `total` and `imported` - * key counts. - */ - -MatrixClient.prototype.restoreKeyBackupWithPassword = async function (password, targetRoomId, targetSessionId, backupInfo, opts) { - const privKey = await (0, _key_passphrase.keyFromAuthData)(backupInfo.auth_data, password); - return this._restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts); -}; -/** - * Restore from an existing key backup via a private key stored in secret - * storage. - * - * @param {object} backupInfo Backup metadata from `checkKeyBackup` - * @param {string} [targetRoomId] Room ID to target a specific room. - * Restores all rooms if omitted. - * @param {string} [targetSessionId] Session ID to target a specific session. - * Restores all sessions if omitted. - * @param {object} opts Optional params such as callbacks - * @return {Promise} Status of restoration with `total` and `imported` - * key counts. - */ - - -MatrixClient.prototype.restoreKeyBackupWithSecretStorage = async function (backupInfo, targetRoomId, targetSessionId, opts) { - const storedKey = await this.getSecret("m.megolm_backup.v1"); // ensure that the key is in the right format. If not, fix the key and - // store the fixed version - - const fixedKey = (0, _crypto.fixBackupKey)(storedKey); - - if (fixedKey) { - const [keyId] = await this._crypto.getSecretStorageKey(); - await this.storeSecret("m.megolm_backup.v1", fixedKey, [keyId]); - } - - const privKey = (0, olmlib.decodeBase64)(fixedKey || storedKey); - return this._restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts); -}; -/** - * Restore from an existing key backup via an encoded recovery key. - * - * @param {string} recoveryKey Encoded recovery key - * @param {string} [targetRoomId] Room ID to target a specific room. - * Restores all rooms if omitted. - * @param {string} [targetSessionId] Session ID to target a specific session. - * Restores all sessions if omitted. - * @param {object} backupInfo Backup metadata from `checkKeyBackup` - * @param {object} opts Optional params such as callbacks - - * @return {Promise} Status of restoration with `total` and `imported` - * key counts. - */ - - -MatrixClient.prototype.restoreKeyBackupWithRecoveryKey = function (recoveryKey, targetRoomId, targetSessionId, backupInfo, opts) { - const privKey = (0, _recoverykey.decodeRecoveryKey)(recoveryKey); - return this._restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts); -}; -/** - * Restore from an existing key backup using a cached key, or fail - * - * @param {string} [targetRoomId] Room ID to target a specific room. - * Restores all rooms if omitted. - * @param {string} [targetSessionId] Session ID to target a specific session. - * Restores all sessions if omitted. - * @param {object} backupInfo Backup metadata from `checkKeyBackup` - * @param {object} opts Optional params such as callbacks - * @return {Promise} Status of restoration with `total` and `imported` - * key counts. - */ - - -MatrixClient.prototype.restoreKeyBackupWithCache = async function (targetRoomId, targetSessionId, backupInfo, opts) { - const privKey = await this._crypto.getSessionBackupPrivateKey(); - - if (!privKey) { - throw new Error("Couldn't get key"); - } - - return this._restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts); -}; - -MatrixClient.prototype._restoreKeyBackup = function (privKey, targetRoomId, targetSessionId, backupInfo, { - cacheCompleteCallback, - // For sequencing during tests - progressCallback -} = {}) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - let totalKeyCount = 0; - let keys = []; - - const path = this._makeKeyBackupPath(targetRoomId, targetSessionId, backupInfo.version); - - const decryption = new global.Olm.PkDecryption(); - let backupPubKey; - - try { - backupPubKey = decryption.init_with_private_key(privKey); - } catch (e) { - decryption.free(); - throw e; - } // If the pubkey computed from the private data we've been given - // doesn't match the one in the auth_data, the user has enetered - // a different recovery key / the wrong passphrase. - - - if (backupPubKey !== backupInfo.auth_data.public_key) { - return Promise.reject({ - errcode: MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY - }); - } // Cache the key, if possible. - // This is async. - - - this._crypto.storeSessionBackupPrivateKey(privKey).catch(e => { - console.warn("Error caching session backup key:", e); - }).then(cacheCompleteCallback); - - if (progressCallback) { - progressCallback({ - stage: "fetch" - }); - } - - return this._http.authedRequest(undefined, "GET", path.path, path.queryData, undefined, { - prefix: _httpApi.PREFIX_UNSTABLE - }).then(res => { - if (res.rooms) { - for (const [roomId, roomData] of Object.entries(res.rooms)) { - if (!roomData.sessions) continue; - totalKeyCount += Object.keys(roomData.sessions).length; - const roomKeys = keysFromRecoverySession(roomData.sessions, decryption, roomId); - - for (const k of roomKeys) { - k.room_id = roomId; - keys.push(k); - } - } - } else if (res.sessions) { - totalKeyCount = Object.keys(res.sessions).length; - keys = keysFromRecoverySession(res.sessions, decryption, targetRoomId, keys); - } else { - totalKeyCount = 1; - - try { - const key = keyFromRecoverySession(res, decryption); - key.room_id = targetRoomId; - key.session_id = targetSessionId; - keys.push(key); - } catch (e) { - _logger.logger.log("Failed to decrypt megolm session from backup", e); - } - } - - return this.importRoomKeys(keys, { - progressCallback, - untrusted: true, - source: "backup" - }); - }).then(() => { - return this._crypto.setTrustedBackupPubKey(backupPubKey); - }).then(() => { - return { - total: totalKeyCount, - imported: keys.length - }; - }).finally(() => { - decryption.free(); - }); -}; - -MatrixClient.prototype.deleteKeysFromBackup = function (roomId, sessionId, version) { - if (this._crypto === null) { - throw new Error("End-to-end encryption disabled"); - } - - const path = this._makeKeyBackupPath(roomId, sessionId, version); - - return this._http.authedRequest(undefined, "DELETE", path.path, path.queryData, undefined, { - prefix: _httpApi.PREFIX_UNSTABLE - }); -}; // Group ops -// ========= -// Operations on groups that come down the sync stream (ie. ones the -// user is a member of or invited to) - -/** - * Get the group for the given group ID. - * This function will return a valid group for any group for which a Group event - * has been emitted. - * @param {string} groupId The group ID - * @return {Group} The Group or null if the group is not known or there is no data store. - */ - - -MatrixClient.prototype.getGroup = function (groupId) { - return this.store.getGroup(groupId); -}; -/** - * Retrieve all known groups. - * @return {Group[]} A list of groups, or an empty list if there is no data store. - */ - - -MatrixClient.prototype.getGroups = function () { - return this.store.getGroups(); -}; -/** - * Get the config for the media repository. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves with an object containing the config. - */ - - -MatrixClient.prototype.getMediaConfig = function (callback) { - return this._http.authedRequest(callback, "GET", "/config", undefined, undefined, { - prefix: _httpApi.PREFIX_MEDIA_R0 - }); -}; // Room ops -// ======== - -/** - * Get the room for the given room ID. - * This function will return a valid room for any room for which a Room event - * has been emitted. Note in particular that other events, eg. RoomState.members - * will be emitted for a room before this function will return the given room. - * @param {string} roomId The room ID - * @return {Room} The Room or null if it doesn't exist or there is no data store. - */ - - -MatrixClient.prototype.getRoom = function (roomId) { - return this.store.getRoom(roomId); -}; -/** - * Retrieve all known rooms. - * @return {Room[]} A list of rooms, or an empty list if there is no data store. - */ - - -MatrixClient.prototype.getRooms = function () { - return this.store.getRooms(); -}; -/** - * Retrieve all rooms that should be displayed to the user - * This is essentially getRooms() with some rooms filtered out, eg. old versions - * of rooms that have been replaced or (in future) other rooms that have been - * marked at the protocol level as not to be displayed to the user. - * @return {Room[]} A list of rooms, or an empty list if there is no data store. - */ - - -MatrixClient.prototype.getVisibleRooms = function () { - const allRooms = this.store.getRooms(); - const replacedRooms = new Set(); - - for (const r of allRooms) { - const createEvent = r.currentState.getStateEvents('m.room.create', ''); // invites are included in this list and we don't know their create events yet - - if (createEvent) { - const predecessor = createEvent.getContent()['predecessor']; - - if (predecessor && predecessor['room_id']) { - replacedRooms.add(predecessor['room_id']); - } - } - } - - return allRooms.filter(r => { - const tombstone = r.currentState.getStateEvents('m.room.tombstone', ''); - - if (tombstone && replacedRooms.has(r.roomId)) { - return false; - } - - return true; - }); -}; -/** - * Retrieve a user. - * @param {string} userId The user ID to retrieve. - * @return {?User} A user or null if there is no data store or the user does - * not exist. - */ - - -MatrixClient.prototype.getUser = function (userId) { - return this.store.getUser(userId); -}; -/** - * Retrieve all known users. - * @return {User[]} A list of users, or an empty list if there is no data store. - */ - - -MatrixClient.prototype.getUsers = function () { - return this.store.getUsers(); -}; // User Account Data operations -// ============================ - -/** - * Set account data event for the current user. - * It will retry the request up to 5 times. - * @param {string} eventType The event type - * @param {Object} contents the contents object for the event - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setAccountData = function (eventType, contents, callback) { - const path = utils.encodeUri("/user/$userId/account_data/$type", { - $userId: this.credentials.userId, - $type: eventType - }); - const promise = (0, _httpApi.retryNetworkOperation)(5, () => { - return this._http.authedRequest(undefined, "PUT", path, undefined, contents); - }); - - if (callback) { - promise.then(result => callback(null, result), callback); - } - - return promise; -}; -/** - * Get account data event of given type for the current user. - * @param {string} eventType The event type - * @return {?object} The contents of the given account data event - */ - - -MatrixClient.prototype.getAccountData = function (eventType) { - return this.store.getAccountData(eventType); -}; -/** - * Get account data event of given type for the current user. This variant - * gets account data directly from the homeserver if the local store is not - * ready, which can be useful very early in startup before the initial sync. - * @param {string} eventType The event type - * @return {Promise} Resolves: The contents of the given account - * data event. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.getAccountDataFromServer = async function (eventType) { - if (this.isInitialSyncComplete()) { - const event = this.store.getAccountData(eventType); - - if (!event) { - return null; - } // The network version below returns just the content, so this branch - // does the same to match. - - - return event.getContent(); - } - - const path = utils.encodeUri("/user/$userId/account_data/$type", { - $userId: this.credentials.userId, - $type: eventType - }); - - try { - const result = await this._http.authedRequest(undefined, "GET", path, undefined); - return result; - } catch (e) { - if (e.data && e.data.errcode === 'M_NOT_FOUND') { - return null; - } - - throw e; - } -}; -/** - * Gets the users that are ignored by this client - * @returns {string[]} The array of users that are ignored (empty if none) - */ - - -MatrixClient.prototype.getIgnoredUsers = function () { - const event = this.getAccountData("m.ignored_user_list"); - if (!event || !event.getContent() || !event.getContent()["ignored_users"]) return []; - return Object.keys(event.getContent()["ignored_users"]); -}; -/** - * Sets the users that the current user should ignore. - * @param {string[]} userIds the user IDs to ignore - * @param {module:client.callback} [callback] Optional. - * @return {Promise} Resolves: Account data event - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setIgnoredUsers = function (userIds, callback) { - const content = { - ignored_users: {} - }; - userIds.map(u => content.ignored_users[u] = {}); - return this.setAccountData("m.ignored_user_list", content, callback); -}; -/** - * Gets whether or not a specific user is being ignored by this client. - * @param {string} userId the user ID to check - * @returns {boolean} true if the user is ignored, false otherwise - */ - - -MatrixClient.prototype.isUserIgnored = function (userId) { - return this.getIgnoredUsers().indexOf(userId) !== -1; -}; // Room operations -// =============== - -/** - * Join a room. If you have already joined the room, this will no-op. - * @param {string} roomIdOrAlias The room ID or room alias to join. - * @param {Object} opts Options when joining the room. - * @param {boolean} opts.syncRoom True to do a room initial sync on the resulting - * room. If false, the returned Room object will have no current state. - * Default: true. - * @param {boolean} opts.inviteSignUrl If the caller has a keypair 3pid invite, - * the signing URL is passed in this parameter. - * @param {string[]} opts.viaServers The server names to try and join through in - * addition to those that are automatically chosen. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: Room object. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.joinRoom = function (roomIdOrAlias, opts, callback) { - // to help people when upgrading.. - if (utils.isFunction(opts)) { - throw new Error("Expected 'opts' object, got function."); - } - - opts = opts || {}; - - if (opts.syncRoom === undefined) { - opts.syncRoom = true; - } - - const room = this.getRoom(roomIdOrAlias); - - if (room && room.hasMembershipState(this.credentials.userId, "join")) { - return Promise.resolve(room); - } - - let sign_promise = Promise.resolve(); - - if (opts.inviteSignUrl) { - sign_promise = this._http.requestOtherUrl(undefined, 'POST', opts.inviteSignUrl, { - mxid: this.credentials.userId - }); - } - - const queryString = {}; - - if (opts.viaServers) { - queryString["server_name"] = opts.viaServers; - } - - const reqOpts = { - qsStringifyOptions: { - arrayFormat: 'repeat' - } - }; - const self = this; - const prom = new Promise((resolve, reject) => { - sign_promise.then(function (signed_invite_object) { - const data = {}; - - if (signed_invite_object) { - data.third_party_signed = signed_invite_object; - } - - const path = utils.encodeUri("/join/$roomid", { - $roomid: roomIdOrAlias - }); - return self._http.authedRequest(undefined, "POST", path, queryString, data, reqOpts); - }).then(function (res) { - const roomId = res.room_id; - const syncApi = new _sync.SyncApi(self, self._clientOpts); - const room = syncApi.createRoom(roomId); - - if (opts.syncRoom) {// v2 will do this for us - // return syncApi.syncRoom(room); - } - - return Promise.resolve(room); - }).then(function (room) { - _resolve(callback, resolve, room); - }, function (err) { - _reject(callback, reject, err); - }); - }); - return prom; -}; -/** - * Resend an event. - * @param {MatrixEvent} event The event to resend. - * @param {Room} room Optional. The room the event is in. Will update the - * timeline entry if provided. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.resendEvent = function (event, room) { - _updatePendingEventStatus(room, event, _event.EventStatus.SENDING); - - return _sendEvent(this, room, event); -}; -/** - * Cancel a queued or unsent event. - * - * @param {MatrixEvent} event Event to cancel - * @throws Error if the event is not in QUEUED or NOT_SENT state - */ - - -MatrixClient.prototype.cancelPendingEvent = function (event) { - if ([_event.EventStatus.QUEUED, _event.EventStatus.NOT_SENT].indexOf(event.status) < 0) { - throw new Error("cannot cancel an event with status " + event.status); - } // first tell the scheduler to forget about it, if it's queued - - - if (this.scheduler) { - this.scheduler.removeEventFromQueue(event); - } // then tell the room about the change of state, which will remove it - // from the room's list of pending events. - - - const room = this.getRoom(event.getRoomId()); - - _updatePendingEventStatus(room, event, _event.EventStatus.CANCELLED); -}; -/** - * @param {string} roomId - * @param {string} name - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setRoomName = function (roomId, name, callback) { - return this.sendStateEvent(roomId, "m.room.name", { - name: name - }, undefined, callback); -}; -/** - * @param {string} roomId - * @param {string} topic - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setRoomTopic = function (roomId, topic, callback) { - return this.sendStateEvent(roomId, "m.room.topic", { - topic: topic - }, undefined, callback); -}; -/** - * @param {string} roomId - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.getRoomTags = function (roomId, callback) { - const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/", { - $userId: this.credentials.userId, - $roomId: roomId - }); - return this._http.authedRequest(callback, "GET", path, undefined); -}; -/** - * @param {string} roomId - * @param {string} tagName name of room tag to be set - * @param {object} metadata associated with that tag to be stored - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setRoomTag = function (roomId, tagName, metadata, callback) { - const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/$tag", { - $userId: this.credentials.userId, - $roomId: roomId, - $tag: tagName - }); - return this._http.authedRequest(callback, "PUT", path, undefined, metadata); -}; -/** - * @param {string} roomId - * @param {string} tagName name of room tag to be removed - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.deleteRoomTag = function (roomId, tagName, callback) { - const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/$tag", { - $userId: this.credentials.userId, - $roomId: roomId, - $tag: tagName - }); - return this._http.authedRequest(callback, "DELETE", path, undefined, undefined); -}; -/** - * @param {string} roomId - * @param {string} eventType event type to be set - * @param {object} content event content - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setRoomAccountData = function (roomId, eventType, content, callback) { - const path = utils.encodeUri("/user/$userId/rooms/$roomId/account_data/$type", { - $userId: this.credentials.userId, - $roomId: roomId, - $type: eventType - }); - return this._http.authedRequest(callback, "PUT", path, undefined, content); -}; -/** - * Set a user's power level. - * @param {string} roomId - * @param {string} userId - * @param {Number} powerLevel - * @param {MatrixEvent} event - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setPowerLevel = function (roomId, userId, powerLevel, event, callback) { - let content = { - users: {} - }; - - if (event && event.getType() === "m.room.power_levels") { - // take a copy of the content to ensure we don't corrupt - // existing client state with a failed power level change - content = utils.deepCopy(event.getContent()); - } - - content.users[userId] = powerLevel; - const path = utils.encodeUri("/rooms/$roomId/state/m.room.power_levels", { - $roomId: roomId - }); - return this._http.authedRequest(callback, "PUT", path, undefined, content); -}; -/** - * @param {string} roomId - * @param {string} eventType - * @param {Object} content - * @param {string} txnId Optional. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendEvent = function (roomId, eventType, content, txnId, callback) { - return this._sendCompleteEvent(roomId, { - type: eventType, - content: content - }, txnId, callback); -}; -/** - * @param {string} roomId - * @param {object} eventObject An object with the partial structure of an event, to which event_id, user_id, room_id and origin_server_ts will be added. - * @param {string} txnId the txnId. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype._sendCompleteEvent = function (roomId, eventObject, txnId, callback) { - if (utils.isFunction(txnId)) { - callback = txnId; - txnId = undefined; - } - - if (!txnId) { - txnId = this.makeTxnId(); - } // we always construct a MatrixEvent when sending because the store and - // scheduler use them. We'll extract the params back out if it turns out - // the client has no scheduler or store. - - - const localEvent = new _event.MatrixEvent(Object.assign(eventObject, { - event_id: "~" + roomId + ":" + txnId, - user_id: this.credentials.userId, - sender: this.credentials.userId, - room_id: roomId, - origin_server_ts: new Date().getTime() - })); - const room = this.getRoom(roomId); // if this is a relation or redaction of an event - // that hasn't been sent yet (e.g. with a local id starting with a ~) - // then listen for the remote echo of that event so that by the time - // this event does get sent, we have the correct event_id - - const targetId = localEvent.getAssociatedId(); - - if (targetId && targetId.startsWith("~")) { - const target = room.getPendingEvents().find(e => e.getId() === targetId); - target.once("Event.localEventIdReplaced", () => { - localEvent.updateAssociatedId(target.getId()); - }); - } - - const type = localEvent.getType(); - - _logger.logger.log(`sendEvent of type ${type} in ${roomId} with txnId ${txnId}`); - - localEvent.setTxnId(txnId); - localEvent.setStatus(_event.EventStatus.SENDING); // add this event immediately to the local store as 'sending'. - - if (room) { - room.addPendingEvent(localEvent, txnId); - } // addPendingEvent can change the state to NOT_SENT if it believes - // that there's other events that have failed. We won't bother to - // try sending the event if the state has changed as such. - - - if (localEvent.status === _event.EventStatus.NOT_SENT) { - return Promise.reject(new Error("Event blocked by other events not yet sent")); - } - - return _sendEvent(this, room, localEvent, callback); -}; // encrypts the event if necessary -// adds the event to the queue, or sends it -// marks the event as sent/unsent -// returns a promise which resolves with the result of the send request - - -function _sendEvent(client, room, event, callback) { - // Add an extra Promise.resolve() to turn synchronous exceptions into promise rejections, - // so that we can handle synchronous and asynchronous exceptions with the - // same code path. - return Promise.resolve().then(function () { - const encryptionPromise = _encryptEventIfNeeded(client, event, room); - - if (!encryptionPromise) { - return null; - } - - _updatePendingEventStatus(room, event, _event.EventStatus.ENCRYPTING); - - return encryptionPromise.then(() => { - _updatePendingEventStatus(room, event, _event.EventStatus.SENDING); - }); - }).then(function () { - let promise; // this event may be queued - - if (client.scheduler) { - // if this returns a promise then the scheduler has control now and will - // resolve/reject when it is done. Internally, the scheduler will invoke - // processFn which is set to this._sendEventHttpRequest so the same code - // path is executed regardless. - promise = client.scheduler.queueEvent(event); - - if (promise && client.scheduler.getQueueForEvent(event).length > 1) { - // event is processed FIFO so if the length is 2 or more we know - // this event is stuck behind an earlier event. - _updatePendingEventStatus(room, event, _event.EventStatus.QUEUED); - } - } - - if (!promise) { - promise = _sendEventHttpRequest(client, event); - - if (room) { - promise = promise.then(res => { - room.updatePendingEvent(event, _event.EventStatus.SENT, res.event_id); - return res; - }); - } - } - - return promise; - }).then(function (res) { - // the request was sent OK - if (callback) { - callback(null, res); - } - - return res; - }, function (err) { - // the request failed to send. - _logger.logger.error("Error sending event", err.stack || err); - - try { - // set the error on the event before we update the status: - // updating the status emits the event, so the state should be - // consistent at that point. - event.error = err; - - _updatePendingEventStatus(room, event, _event.EventStatus.NOT_SENT); // also put the event object on the error: the caller will need this - // to resend or cancel the event - - - err.event = event; - - if (callback) { - callback(err); - } - } catch (err2) { - _logger.logger.error("Exception in error handler!", err2.stack || err); - } - - throw err; - }); -} -/** - * Encrypt an event according to the configuration of the room, if necessary. - * - * @param {MatrixClient} client - * - * @param {module:models/event.MatrixEvent} event event to be sent - * - * @param {module:models/room?} room destination room. Null if the destination - * is not a room we have seen over the sync pipe. - * - * @return {Promise?} Promise which resolves when the event has been - * encrypted, or null if nothing was needed - */ - - -function _encryptEventIfNeeded(client, event, room) { - if (event.isEncrypted()) { - // this event has already been encrypted; this happens if the - // encryption step succeeded, but the send step failed on the first - // attempt. - return null; - } - - if (!client.isRoomEncrypted(event.getRoomId())) { - // looks like this room isn't encrypted. - return null; - } - - if (!client._crypto && client.usingExternalCrypto) { - // The client has opted to allow sending messages to encrypted - // rooms even if the room is encrypted, and we haven't setup - // crypto. This is useful for users of matrix-org/pantalaimon - return null; - } - - if (event.getType() === "m.reaction") { - // For reactions, there is a very little gained by encrypting the entire - // event, as relation data is already kept in the clear. Event - // encryption for a reaction effectively only obscures the event type, - // but the purpose is still obvious from the relation data, so nothing - // is really gained. It also causes quite a few problems, such as: - // * triggers notifications via default push rules - // * prevents server-side bundling for reactions - // The reaction key / content / emoji value does warrant encrypting, but - // this will be handled separately by encrypting just this value. - // See https://github.com/matrix-org/matrix-doc/pull/1849#pullrequestreview-248763642 - return null; - } - - if (!client._crypto) { - throw new Error("This room is configured to use encryption, but your client does " + "not support encryption."); - } - - return client._crypto.encryptEvent(event, room); -} -/** - * Returns the eventType that should be used taking encryption into account - * for a given eventType. - * @param {MatrixClient} client the client - * @param {string} roomId the room for the events `eventType` relates to - * @param {string} eventType the event type - * @return {string} the event type taking encryption into account - */ - - -function _getEncryptedIfNeededEventType(client, roomId, eventType) { - if (eventType === "m.reaction") { - return eventType; - } - - const isEncrypted = client.isRoomEncrypted(roomId); - return isEncrypted ? "m.room.encrypted" : eventType; -} - -function _updatePendingEventStatus(room, event, newStatus) { - if (room) { - room.updatePendingEvent(event, newStatus); - } else { - event.setStatus(newStatus); - } -} - -function _sendEventHttpRequest(client, event) { - let txnId = event.getTxnId(); - - if (!txnId) { - txnId = client.makeTxnId(); - event.setTxnId(txnId); - } - - const pathParams = { - $roomId: event.getRoomId(), - $eventType: event.getWireType(), - $stateKey: event.getStateKey(), - $txnId: txnId - }; - let path; - - if (event.isState()) { - let pathTemplate = "/rooms/$roomId/state/$eventType"; - - if (event.getStateKey() && event.getStateKey().length > 0) { - pathTemplate = "/rooms/$roomId/state/$eventType/$stateKey"; - } - - path = utils.encodeUri(pathTemplate, pathParams); - } else if (event.isRedaction()) { - const pathTemplate = `/rooms/$roomId/redact/$redactsEventId/$txnId`; - path = utils.encodeUri(pathTemplate, Object.assign({ - $redactsEventId: event.event.redacts - }, pathParams)); - } else { - path = utils.encodeUri("/rooms/$roomId/send/$eventType/$txnId", pathParams); - } - - return client._http.authedRequest(undefined, "PUT", path, undefined, event.getWireContent()).then(res => { - _logger.logger.log(`Event sent to ${event.getRoomId()} with event id ${res.event_id}`); - - return res; - }); -} -/** - * @param {string} roomId - * @param {string} eventId - * @param {string} [txnId] transaction id. One will be made up if not - * supplied. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.redactEvent = function (roomId, eventId, txnId, callback) { - return this._sendCompleteEvent(roomId, { - type: "m.room.redaction", - content: {}, - redacts: eventId - }, txnId, callback); -}; -/** - * @param {string} roomId - * @param {Object} content - * @param {string} txnId Optional. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendMessage = function (roomId, content, txnId, callback) { - if (utils.isFunction(txnId)) { - callback = txnId; - txnId = undefined; - } - - return this.sendEvent(roomId, "m.room.message", content, txnId, callback); -}; -/** - * @param {string} roomId - * @param {string} body - * @param {string} txnId Optional. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendTextMessage = function (roomId, body, txnId, callback) { - const content = ContentHelpers.makeTextMessage(body); - return this.sendMessage(roomId, content, txnId, callback); -}; -/** - * @param {string} roomId - * @param {string} body - * @param {string} txnId Optional. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendNotice = function (roomId, body, txnId, callback) { - const content = ContentHelpers.makeNotice(body); - return this.sendMessage(roomId, content, txnId, callback); -}; -/** - * @param {string} roomId - * @param {string} body - * @param {string} txnId Optional. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendEmoteMessage = function (roomId, body, txnId, callback) { - const content = ContentHelpers.makeEmoteMessage(body); - return this.sendMessage(roomId, content, txnId, callback); -}; -/** - * @param {string} roomId - * @param {string} url - * @param {Object} info - * @param {string} text - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendImageMessage = function (roomId, url, info, text, callback) { - if (utils.isFunction(text)) { - callback = text; - text = undefined; - } - - if (!text) { - text = "Image"; - } - - const content = { - msgtype: "m.image", - url: url, - info: info, - body: text - }; - return this.sendMessage(roomId, content, callback); -}; -/** - * @param {string} roomId - * @param {string} url - * @param {Object} info - * @param {string} text - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendStickerMessage = function (roomId, url, info, text, callback) { - if (utils.isFunction(text)) { - callback = text; - text = undefined; - } - - if (!text) { - text = "Sticker"; - } - - const content = { - url: url, - info: info, - body: text - }; - return this.sendEvent(roomId, "m.sticker", content, callback, undefined); -}; -/** - * @param {string} roomId - * @param {string} body - * @param {string} htmlBody - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendHtmlMessage = function (roomId, body, htmlBody, callback) { - const content = ContentHelpers.makeHtmlMessage(body, htmlBody); - return this.sendMessage(roomId, content, callback); -}; -/** - * @param {string} roomId - * @param {string} body - * @param {string} htmlBody - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendHtmlNotice = function (roomId, body, htmlBody, callback) { - const content = ContentHelpers.makeHtmlNotice(body, htmlBody); - return this.sendMessage(roomId, content, callback); -}; -/** - * @param {string} roomId - * @param {string} body - * @param {string} htmlBody - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendHtmlEmote = function (roomId, body, htmlBody, callback) { - const content = ContentHelpers.makeHtmlEmote(body, htmlBody); - return this.sendMessage(roomId, content, callback); -}; -/** - * Send a receipt. - * @param {Event} event The event being acknowledged - * @param {string} receiptType The kind of receipt e.g. "m.read" - * @param {object} opts Additional content to send alongside the receipt. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendReceipt = function (event, receiptType, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - - if (this.isGuest()) { - return Promise.resolve({}); // guests cannot send receipts so don't bother. - } - - const path = utils.encodeUri("/rooms/$roomId/receipt/$receiptType/$eventId", { - $roomId: event.getRoomId(), - $receiptType: receiptType, - $eventId: event.getId() - }); - - const promise = this._http.authedRequest(callback, "POST", path, undefined, opts || {}); - - const room = this.getRoom(event.getRoomId()); - - if (room) { - room._addLocalEchoReceipt(this.credentials.userId, event, receiptType); - } - - return promise; -}; -/** - * Send a read receipt. - * @param {Event} event The event that has been read. - * @param {object} opts The options for the read receipt. - * @param {boolean} opts.hidden True to prevent the receipt from being sent to - * other users and homeservers. Default false (send to everyone). This - * property is unstable and may change in the future. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendReadReceipt = async function (event, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - - if (!opts) opts = {}; - const eventId = event.getId(); - const room = this.getRoom(event.getRoomId()); - - if (room && room.hasPendingEvent(eventId)) { - throw new Error(`Cannot set read receipt to a pending event (${eventId})`); - } - - const addlContent = { - "m.hidden": Boolean(opts.hidden) - }; - return this.sendReceipt(event, "m.read", addlContent, callback); -}; -/** - * Set a marker to indicate the point in a room before which the user has read every - * event. This can be retrieved from room account data (the event type is `m.fully_read`) - * and displayed as a horizontal line in the timeline that is visually distinct to the - * position of the user's own read receipt. - * @param {string} roomId ID of the room that has been read - * @param {string} rmEventId ID of the event that has been read - * @param {string} rrEvent the event tracked by the read receipt. This is here for - * convenience because the RR and the RM are commonly updated at the same time as each - * other. The local echo of this receipt will be done if set. Optional. - * @param {object} opts Options for the read markers - * @param {object} opts.hidden True to hide the receipt from other users and homeservers. - * This property is unstable and may change in the future. - * @return {Promise} Resolves: the empty object, {}. - */ - - -MatrixClient.prototype.setRoomReadMarkers = async function (roomId, rmEventId, rrEvent, opts) { - const room = this.getRoom(roomId); - - if (room && room.hasPendingEvent(rmEventId)) { - throw new Error(`Cannot set read marker to a pending event (${rmEventId})`); - } // Add the optional RR update, do local echo like `sendReceipt` - - - let rrEventId; - - if (rrEvent) { - rrEventId = rrEvent.getId(); - - if (room && room.hasPendingEvent(rrEventId)) { - throw new Error(`Cannot set read receipt to a pending event (${rrEventId})`); - } - - if (room) { - room._addLocalEchoReceipt(this.credentials.userId, rrEvent, "m.read"); - } - } - - return this.setRoomReadMarkersHttpRequest(roomId, rmEventId, rrEventId, opts); -}; -/** - * Get a preview of the given URL as of (roughly) the given point in time, - * described as an object with OpenGraph keys and associated values. - * Attributes may be synthesized where actual OG metadata is lacking. - * Caches results to prevent hammering the server. - * @param {string} url The URL to get preview data for - * @param {Number} ts The preferred point in time that the preview should - * describe (ms since epoch). The preview returned will either be the most - * recent one preceding this timestamp if available, or failing that the next - * most recent available preview. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: Object of OG metadata. - * @return {module:http-api.MatrixError} Rejects: with an error response. - * May return synthesized attributes if the URL lacked OG meta. - */ - - -MatrixClient.prototype.getUrlPreview = function (url, ts, callback) { - // bucket the timestamp to the nearest minute to prevent excessive spam to the server - // Surely 60-second accuracy is enough for anyone. - ts = Math.floor(ts / 60000) * 60000; - const key = ts + "_" + url; // If there's already a request in flight (or we've handled it), return that instead. - - const cachedPreview = this.urlPreviewCache[key]; - - if (cachedPreview) { - if (callback) { - cachedPreview.then(callback).catch(callback); - } - - return cachedPreview; - } - - const resp = this._http.authedRequest(callback, "GET", "/preview_url", { - url: url, - ts: ts - }, undefined, { - prefix: _httpApi.PREFIX_MEDIA_R0 - }); // TODO: Expire the URL preview cache sometimes - - - this.urlPreviewCache[key] = resp; - return resp; -}; -/** - * @param {string} roomId - * @param {boolean} isTyping - * @param {Number} timeoutMs - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.sendTyping = function (roomId, isTyping, timeoutMs, callback) { - if (this.isGuest()) { - return Promise.resolve({}); // guests cannot send typing notifications so don't bother. - } - - const path = utils.encodeUri("/rooms/$roomId/typing/$userId", { - $roomId: roomId, - $userId: this.credentials.userId - }); - const data = { - typing: isTyping - }; - - if (isTyping) { - data.timeout = timeoutMs ? timeoutMs : 20000; - } - - return this._http.authedRequest(callback, "PUT", path, undefined, data); -}; -/** - * Determines the history of room upgrades for a given room, as far as the - * client can see. Returns an array of Rooms where the first entry is the - * oldest and the last entry is the newest (likely current) room. If the - * provided room is not found, this returns an empty list. This works in - * both directions, looking for older and newer rooms of the given room. - * @param {string} roomId The room ID to search from - * @param {boolean} verifyLinks If true, the function will only return rooms - * which can be proven to be linked. For example, rooms which have a create - * event pointing to an old room which the client is not aware of or doesn't - * have a matching tombstone would not be returned. - * @return {Room[]} An array of rooms representing the upgrade - * history. - */ - - -MatrixClient.prototype.getRoomUpgradeHistory = function (roomId, verifyLinks = false) { - let currentRoom = this.getRoom(roomId); - if (!currentRoom) return []; - const upgradeHistory = [currentRoom]; // Work backwards first, looking at create events. - - let createEvent = currentRoom.currentState.getStateEvents("m.room.create", ""); - - while (createEvent) { - _logger.logger.log(`Looking at ${createEvent.getId()}`); - - const predecessor = createEvent.getContent()['predecessor']; - - if (predecessor && predecessor['room_id']) { - _logger.logger.log(`Looking at predecessor ${predecessor['room_id']}`); - - const refRoom = this.getRoom(predecessor['room_id']); - if (!refRoom) break; // end of the chain - - if (verifyLinks) { - const tombstone = refRoom.currentState.getStateEvents("m.room.tombstone", ""); - - if (!tombstone || tombstone.getContent()['replacement_room'] !== refRoom.roomId) { - break; - } - } // Insert at the front because we're working backwards from the currentRoom - - - upgradeHistory.splice(0, 0, refRoom); - createEvent = refRoom.currentState.getStateEvents("m.room.create", ""); - } else { - // No further create events to look at - break; - } - } // Work forwards next, looking at tombstone events - - - let tombstoneEvent = currentRoom.currentState.getStateEvents("m.room.tombstone", ""); - - while (tombstoneEvent) { - const refRoom = this.getRoom(tombstoneEvent.getContent()['replacement_room']); - if (!refRoom) break; // end of the chain - - if (refRoom.roomId === currentRoom.roomId) break; // Tombstone is referencing it's own room - - if (verifyLinks) { - createEvent = refRoom.currentState.getStateEvents("m.room.create", ""); - if (!createEvent || !createEvent.getContent()['predecessor']) break; - const predecessor = createEvent.getContent()['predecessor']; - if (predecessor['room_id'] !== currentRoom.roomId) break; - } // Push to the end because we're looking forwards - - - upgradeHistory.push(refRoom); - const roomIds = new Set(upgradeHistory.map(ref => ref.roomId)); - - if (roomIds.size < upgradeHistory.length) { - // The last room added to the list introduced a previous roomId - // To avoid recursion, return the last rooms - 1 - return upgradeHistory.slice(0, upgradeHistory.length - 1); - } // Set the current room to the reference room so we know where we're at - - - currentRoom = refRoom; - tombstoneEvent = currentRoom.currentState.getStateEvents("m.room.tombstone", ""); - } - - return upgradeHistory; -}; -/** - * @param {string} roomId - * @param {string} userId - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.invite = function (roomId, userId, callback) { - return _membershipChange(this, roomId, userId, "invite", undefined, callback); -}; -/** - * Invite a user to a room based on their email address. - * @param {string} roomId The room to invite the user to. - * @param {string} email The email address to invite. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.inviteByEmail = function (roomId, email, callback) { - return this.inviteByThreePid(roomId, "email", email, callback); -}; -/** - * Invite a user to a room based on a third-party identifier. - * @param {string} roomId The room to invite the user to. - * @param {string} medium The medium to invite the user e.g. "email". - * @param {string} address The address for the specified medium. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.inviteByThreePid = async function (roomId, medium, address, callback) { - const path = utils.encodeUri("/rooms/$roomId/invite", { - $roomId: roomId - }); - const identityServerUrl = this.getIdentityServerUrl(true); - - if (!identityServerUrl) { - return Promise.reject(new _httpApi.MatrixError({ - error: "No supplied identity server URL", - errcode: "ORG.MATRIX.JSSDK_MISSING_PARAM" - })); - } - - const params = { - id_server: identityServerUrl, - medium: medium, - address: address - }; - - if (this.identityServer && this.identityServer.getAccessToken && (await this.doesServerAcceptIdentityAccessToken())) { - const identityAccessToken = await this.identityServer.getAccessToken(); - - if (identityAccessToken) { - params.id_access_token = identityAccessToken; - } - } - - return this._http.authedRequest(callback, "POST", path, undefined, params); -}; -/** - * @param {string} roomId - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.leave = function (roomId, callback) { - return _membershipChange(this, roomId, undefined, "leave", undefined, callback); -}; -/** - * Leaves all rooms in the chain of room upgrades based on the given room. By - * default, this will leave all the previous and upgraded rooms, including the - * given room. To only leave the given room and any previous rooms, keeping the - * upgraded (modern) rooms untouched supply `false` to `includeFuture`. - * @param {string} roomId The room ID to start leaving at - * @param {boolean} includeFuture If true, the whole chain (past and future) of - * upgraded rooms will be left. - * @return {Promise} Resolves when completed with an object keyed - * by room ID and value of the error encountered when leaving or null. - */ - - -MatrixClient.prototype.leaveRoomChain = function (roomId, includeFuture = true) { - const upgradeHistory = this.getRoomUpgradeHistory(roomId); - let eligibleToLeave = upgradeHistory; - - if (!includeFuture) { - eligibleToLeave = []; - - for (const room of upgradeHistory) { - eligibleToLeave.push(room); - - if (room.roomId === roomId) { - break; - } - } - } - - const populationResults = {}; // {roomId: Error} - - const promises = []; - - const doLeave = roomId => { - return this.leave(roomId).then(() => { - populationResults[roomId] = null; - }).catch(err => { - populationResults[roomId] = err; - return null; // suppress error - }); - }; - - for (const room of eligibleToLeave) { - promises.push(doLeave(room.roomId)); - } - - return Promise.all(promises).then(() => populationResults); -}; -/** - * @param {string} roomId - * @param {string} userId - * @param {string} reason Optional. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.ban = function (roomId, userId, reason, callback) { - return _membershipChange(this, roomId, userId, "ban", reason, callback); -}; -/** - * @param {string} roomId - * @param {boolean} deleteRoom True to delete the room from the store on success. - * Default: true. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.forget = function (roomId, deleteRoom, callback) { - if (deleteRoom === undefined) { - deleteRoom = true; - } - - const promise = _membershipChange(this, roomId, undefined, "forget", undefined, callback); - - if (!deleteRoom) { - return promise; - } - - const self = this; - return promise.then(function (response) { - self.store.removeRoom(roomId); - self.emit("deleteRoom", roomId); - return response; - }); -}; -/** - * @param {string} roomId - * @param {string} userId - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: Object (currently empty) - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.unban = function (roomId, userId, callback) { - // unbanning != set their state to leave: this used to be - // the case, but was then changed so that leaving was always - // a revoking of priviledge, otherwise two people racing to - // kick / ban someone could end up banning and then un-banning - // them. - const path = utils.encodeUri("/rooms/$roomId/unban", { - $roomId: roomId - }); - const data = { - user_id: userId - }; - return this._http.authedRequest(callback, "POST", path, undefined, data); -}; -/** - * @param {string} roomId - * @param {string} userId - * @param {string} reason Optional. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.kick = function (roomId, userId, reason, callback) { - return _setMembershipState(this, roomId, userId, "leave", reason, callback); -}; -/** - * This is an internal method. - * @param {MatrixClient} client - * @param {string} roomId - * @param {string} userId - * @param {string} membershipValue - * @param {string} reason - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -function _setMembershipState(client, roomId, userId, membershipValue, reason, callback) { - if (utils.isFunction(reason)) { - callback = reason; - reason = undefined; - } - - const path = utils.encodeUri("/rooms/$roomId/state/m.room.member/$userId", { - $roomId: roomId, - $userId: userId - }); - return client._http.authedRequest(callback, "PUT", path, undefined, { - membership: membershipValue, - reason: reason - }); -} -/** - * This is an internal method. - * @param {MatrixClient} client - * @param {string} roomId - * @param {string} userId - * @param {string} membership - * @param {string} reason - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -function _membershipChange(client, roomId, userId, membership, reason, callback) { - if (utils.isFunction(reason)) { - callback = reason; - reason = undefined; - } - - const path = utils.encodeUri("/rooms/$room_id/$membership", { - $room_id: roomId, - $membership: membership - }); - return client._http.authedRequest(callback, "POST", path, undefined, { - user_id: userId, - // may be undefined e.g. on leave - reason: reason - }); -} -/** - * Obtain a dict of actions which should be performed for this event according - * to the push rules for this user. Caches the dict on the event. - * @param {MatrixEvent} event The event to get push actions for. - * @return {module:pushprocessor~PushAction} A dict of actions to perform. - */ - - -MatrixClient.prototype.getPushActionsForEvent = function (event) { - if (!event.getPushActions()) { - event.setPushActions(this._pushProcessor.actionsForEvent(event)); - } - - return event.getPushActions(); -}; // Profile operations -// ================== - -/** - * @param {string} info The kind of info to set (e.g. 'avatar_url') - * @param {Object} data The JSON object to set. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setProfileInfo = function (info, data, callback) { - const path = utils.encodeUri("/profile/$userId/$info", { - $userId: this.credentials.userId, - $info: info - }); - return this._http.authedRequest(callback, "PUT", path, undefined, data); -}; -/** - * @param {string} name - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setDisplayName = function (name, callback) { - return this.setProfileInfo("displayname", { - displayname: name - }, callback); -}; -/** - * @param {string} url - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setAvatarUrl = function (url, callback) { - return this.setProfileInfo("avatar_url", { - avatar_url: url - }, callback); -}; -/** - * Turn an MXC URL into an HTTP one. This method is experimental and - * may change. - * @param {string} mxcUrl The MXC URL - * @param {Number} width The desired width of the thumbnail. - * @param {Number} height The desired height of the thumbnail. - * @param {string} resizeMethod The thumbnail resize method to use, either - * "crop" or "scale". - * @param {Boolean} allowDirectLinks If true, return any non-mxc URLs - * directly. Fetching such URLs will leak information about the user to - * anyone they share a room with. If false, will return null for such URLs. - * @return {?string} the avatar URL or null. - */ - - -MatrixClient.prototype.mxcUrlToHttp = function (mxcUrl, width, height, resizeMethod, allowDirectLinks) { - return (0, _contentRepo.getHttpUriForMxc)(this.baseUrl, mxcUrl, width, height, resizeMethod, allowDirectLinks); -}; -/** - * Sets a new status message for the user. The message may be null/falsey - * to clear the message. - * @param {string} newMessage The new message to set. - * @return {Promise} Resolves: to nothing - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype._unstable_setStatusMessage = function (newMessage) { - const type = "im.vector.user_status"; - return Promise.all(this.getRooms().map(room => { - const isJoined = room.getMyMembership() === "join"; - const looksLikeDm = room.getInvitedAndJoinedMemberCount() === 2; - - if (!isJoined || !looksLikeDm) { - return Promise.resolve(); - } // Check power level separately as it's a bit more expensive. - - - const maySend = room.currentState.mayClientSendStateEvent(type, this); - - if (!maySend) { - return Promise.resolve(); - } - - return this.sendStateEvent(room.roomId, type, { - status: newMessage - }, this.getUserId()); - })); -}; -/** - * @param {Object} opts Options to apply - * @param {string} opts.presence One of "online", "offline" or "unavailable" - * @param {string} opts.status_msg The status message to attach. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - * @throws If 'presence' isn't a valid presence enum value. - */ - - -MatrixClient.prototype.setPresence = function (opts, callback) { - const path = utils.encodeUri("/presence/$userId/status", { - $userId: this.credentials.userId - }); - - if (typeof opts === "string") { - opts = { - presence: opts - }; - } - - const validStates = ["offline", "online", "unavailable"]; - - if (validStates.indexOf(opts.presence) == -1) { - throw new Error("Bad presence value: " + opts.presence); - } - - return this._http.authedRequest(callback, "PUT", path, undefined, opts); -}; -/** - * Retrieve older messages from the given room and put them in the timeline. - * - * If this is called multiple times whilst a request is ongoing, the same - * Promise will be returned. If there was a problem requesting scrollback, there - * will be a small delay before another request can be made (to prevent tight-looping - * when there is no connection). - * - * @param {Room} room The room to get older messages in. - * @param {Integer} limit Optional. The maximum number of previous events to - * pull in. Default: 30. - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: Room. If you are at the beginning - * of the timeline, Room.oldState.paginationToken will be - * null. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.scrollback = function (room, limit, callback) { - if (utils.isFunction(limit)) { - callback = limit; - limit = undefined; - } - - limit = limit || 30; - let timeToWaitMs = 0; - let info = this._ongoingScrollbacks[room.roomId] || {}; - - if (info.promise) { - return info.promise; - } else if (info.errorTs) { - const timeWaitedMs = Date.now() - info.errorTs; - timeToWaitMs = Math.max(SCROLLBACK_DELAY_MS - timeWaitedMs, 0); - } - - if (room.oldState.paginationToken === null) { - return Promise.resolve(room); // already at the start. - } // attempt to grab more events from the store first - - - const numAdded = this.store.scrollback(room, limit).length; - - if (numAdded === limit) { - // store contained everything we needed. - return Promise.resolve(room); - } // reduce the required number of events appropriately - - - limit = limit - numAdded; - const self = this; - const prom = new Promise((resolve, reject) => { - // wait for a time before doing this request - // (which may be 0 in order not to special case the code paths) - (0, utils.sleep)(timeToWaitMs).then(function () { - return self._createMessagesRequest(room.roomId, room.oldState.paginationToken, limit, 'b'); - }).then(function (res) { - const matrixEvents = utils.map(res.chunk, _PojoToMatrixEventMapper(self)); - - if (res.state) { - const stateEvents = utils.map(res.state, _PojoToMatrixEventMapper(self)); - room.currentState.setUnknownStateEvents(stateEvents); - } - - room.addEventsToTimeline(matrixEvents, true, room.getLiveTimeline()); - room.oldState.paginationToken = res.end; - - if (res.chunk.length === 0) { - room.oldState.paginationToken = null; - } - - self.store.storeEvents(room, matrixEvents, res.end, true); - self._ongoingScrollbacks[room.roomId] = null; - - _resolve(callback, resolve, room); - }, function (err) { - self._ongoingScrollbacks[room.roomId] = { - errorTs: Date.now() - }; - - _reject(callback, reject, err); - }); - }); - info = { - promise: prom, - errorTs: null - }; - this._ongoingScrollbacks[room.roomId] = info; - return prom; -}; -/** - * Get an EventTimeline for the given event - * - *

If the EventTimelineSet object already has the given event in its store, the - * corresponding timeline will be returned. Otherwise, a /context request is - * made, and used to construct an EventTimeline. - * - * @param {EventTimelineSet} timelineSet The timelineSet to look for the event in - * @param {string} eventId The ID of the event to look for - * - * @return {Promise} Resolves: - * {@link module:models/event-timeline~EventTimeline} including the given - * event - */ - - -MatrixClient.prototype.getEventTimeline = function (timelineSet, eventId) { - // don't allow any timeline support unless it's been enabled. - if (!this.timelineSupport) { - throw new Error("timeline support is disabled. Set the 'timelineSupport'" + " parameter to true when creating MatrixClient to enable" + " it."); - } - - if (timelineSet.getTimelineForEvent(eventId)) { - return Promise.resolve(timelineSet.getTimelineForEvent(eventId)); - } - - const path = utils.encodeUri("/rooms/$roomId/context/$eventId", { - $roomId: timelineSet.room.roomId, - $eventId: eventId - }); - let params = undefined; - - if (this._clientOpts.lazyLoadMembers) { - params = { - filter: JSON.stringify(_filter.Filter.LAZY_LOADING_MESSAGES_FILTER) - }; - } // TODO: we should implement a backoff (as per scrollback()) to deal more - // nicely with HTTP errors. - - - const self = this; - - const promise = self._http.authedRequest(undefined, "GET", path, params).then(function (res) { - if (!res.event) { - throw new Error("'event' not in '/context' result - homeserver too old?"); - } // by the time the request completes, the event might have ended up in - // the timeline. - - - if (timelineSet.getTimelineForEvent(eventId)) { - return timelineSet.getTimelineForEvent(eventId); - } // we start with the last event, since that's the point at which we - // have known state. - // events_after is already backwards; events_before is forwards. - - - res.events_after.reverse(); - const events = res.events_after.concat([res.event]).concat(res.events_before); - const matrixEvents = utils.map(events, self.getEventMapper()); - let timeline = timelineSet.getTimelineForEvent(matrixEvents[0].getId()); - - if (!timeline) { - timeline = timelineSet.addTimeline(); - timeline.initialiseState(utils.map(res.state, self.getEventMapper())); - timeline.getState(_eventTimeline.EventTimeline.FORWARDS).paginationToken = res.end; - } else { - const stateEvents = utils.map(res.state, self.getEventMapper()); - timeline.getState(_eventTimeline.EventTimeline.BACKWARDS).setUnknownStateEvents(stateEvents); - } - - timelineSet.addEventsToTimeline(matrixEvents, true, timeline, res.start); // there is no guarantee that the event ended up in "timeline" (we - // might have switched to a neighbouring timeline) - so check the - // room's index again. On the other hand, there's no guarantee the - // event ended up anywhere, if it was later redacted, so we just - // return the timeline we first thought of. - - const tl = timelineSet.getTimelineForEvent(eventId) || timeline; - return tl; - }); - - return promise; -}; -/** - * Makes a request to /messages with the appropriate lazy loading filter set. - * XXX: if we do get rid of scrollback (as it's not used at the moment), - * we could inline this method again in paginateEventTimeline as that would - * then be the only call-site - * @param {string} roomId - * @param {string} fromToken - * @param {number} limit the maximum amount of events the retrieve - * @param {string} dir 'f' or 'b' - * @param {Filter} timelineFilter the timeline filter to pass - * @return {Promise} - */ - - -MatrixClient.prototype._createMessagesRequest = function (roomId, fromToken, limit, dir, timelineFilter = undefined) { - const path = utils.encodeUri("/rooms/$roomId/messages", { - $roomId: roomId - }); - - if (limit === undefined) { - limit = 30; - } - - const params = { - from: fromToken, - limit: limit, - dir: dir - }; - let filter = null; - - if (this._clientOpts.lazyLoadMembers) { - // create a shallow copy of LAZY_LOADING_MESSAGES_FILTER, - // so the timelineFilter doesn't get written into it below - filter = Object.assign({}, _filter.Filter.LAZY_LOADING_MESSAGES_FILTER); - } - - if (timelineFilter) { - // XXX: it's horrific that /messages' filter parameter doesn't match - // /sync's one - see https://matrix.org/jira/browse/SPEC-451 - filter = filter || {}; - Object.assign(filter, timelineFilter.getRoomTimelineFilterComponent()); - } - - if (filter) { - params.filter = JSON.stringify(filter); - } - - return this._http.authedRequest(undefined, "GET", path, params); -}; -/** - * Take an EventTimeline, and back/forward-fill results. - * - * @param {module:models/event-timeline~EventTimeline} eventTimeline timeline - * object to be updated - * @param {Object} [opts] - * @param {bool} [opts.backwards = false] true to fill backwards, - * false to go forwards - * @param {number} [opts.limit = 30] number of events to request - * - * @return {Promise} Resolves to a boolean: false if there are no - * events and we reached either end of the timeline; else true. - */ - - -MatrixClient.prototype.paginateEventTimeline = function (eventTimeline, opts) { - const isNotifTimeline = eventTimeline.getTimelineSet() === this._notifTimelineSet; // TODO: we should implement a backoff (as per scrollback()) to deal more - // nicely with HTTP errors. - - - opts = opts || {}; - const backwards = opts.backwards || false; - - if (isNotifTimeline) { - if (!backwards) { - throw new Error("paginateNotifTimeline can only paginate backwards"); - } - } - - const dir = backwards ? _eventTimeline.EventTimeline.BACKWARDS : _eventTimeline.EventTimeline.FORWARDS; - const token = eventTimeline.getPaginationToken(dir); - - if (!token) { - // no token - no results. - return Promise.resolve(false); - } - - const pendingRequest = eventTimeline._paginationRequests[dir]; - - if (pendingRequest) { - // already a request in progress - return the existing promise - return pendingRequest; - } - - let path; - let params; - let promise; - const self = this; - - if (isNotifTimeline) { - path = "/notifications"; - params = { - limit: 'limit' in opts ? opts.limit : 30, - only: 'highlight' - }; - - if (token && token !== "end") { - params.from = token; - } - - promise = this._http.authedRequest(undefined, "GET", path, params, undefined).then(function (res) { - const token = res.next_token; - const matrixEvents = []; - - for (let i = 0; i < res.notifications.length; i++) { - const notification = res.notifications[i]; - const event = self.getEventMapper()(notification.event); - event.setPushActions(_pushprocessor.PushProcessor.actionListToActionsObject(notification.actions)); - event.event.room_id = notification.room_id; // XXX: gutwrenching - - matrixEvents[i] = event; - } - - eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token); // if we've hit the end of the timeline, we need to stop trying to - // paginate. We need to keep the 'forwards' token though, to make sure - // we can recover from gappy syncs. - - if (backwards && !res.next_token) { - eventTimeline.setPaginationToken(null, dir); - } - - return res.next_token ? true : false; - }).finally(function () { - eventTimeline._paginationRequests[dir] = null; - }); - eventTimeline._paginationRequests[dir] = promise; - } else { - const room = this.getRoom(eventTimeline.getRoomId()); - - if (!room) { - throw new Error("Unknown room " + eventTimeline.getRoomId()); - } - - promise = this._createMessagesRequest(eventTimeline.getRoomId(), token, opts.limit, dir, eventTimeline.getFilter()); - promise.then(function (res) { - if (res.state) { - const roomState = eventTimeline.getState(dir); - const stateEvents = utils.map(res.state, self.getEventMapper()); - roomState.setUnknownStateEvents(stateEvents); - } - - const token = res.end; - const matrixEvents = utils.map(res.chunk, self.getEventMapper()); - eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token); // if we've hit the end of the timeline, we need to stop trying to - // paginate. We need to keep the 'forwards' token though, to make sure - // we can recover from gappy syncs. - - if (backwards && res.end == res.start) { - eventTimeline.setPaginationToken(null, dir); - } - - return res.end != res.start; - }).finally(function () { - eventTimeline._paginationRequests[dir] = null; - }); - eventTimeline._paginationRequests[dir] = promise; - } - - return promise; -}; -/** - * Reset the notifTimelineSet entirely, paginating in some historical notifs as - * a starting point for subsequent pagination. - */ - - -MatrixClient.prototype.resetNotifTimelineSet = function () { - if (!this._notifTimelineSet) { - return; - } // FIXME: This thing is a total hack, and results in duplicate events being - // added to the timeline both from /sync and /notifications, and lots of - // slow and wasteful processing and pagination. The correct solution is to - // extend /messages or /search or something to filter on notifications. - // use the fictitious token 'end'. in practice we would ideally give it - // the oldest backwards pagination token from /sync, but /sync doesn't - // know about /notifications, so we have no choice but to start paginating - // from the current point in time. This may well overlap with historical - // notifs which are then inserted into the timeline by /sync responses. - - - this._notifTimelineSet.resetLiveTimeline('end', null); // we could try to paginate a single event at this point in order to get - // a more valid pagination token, but it just ends up with an out of order - // timeline. given what a mess this is and given we're going to have duplicate - // events anyway, just leave it with the dummy token for now. - - /* - this.paginateNotifTimeline(this._notifTimelineSet.getLiveTimeline(), { - backwards: true, - limit: 1 - }); - */ - -}; -/** - * Peek into a room and receive updates about the room. This only works if the - * history visibility for the room is world_readable. - * @param {String} roomId The room to attempt to peek into. - * @return {Promise} Resolves: Room object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.peekInRoom = function (roomId) { - if (this._peekSync) { - this._peekSync.stopPeeking(); - } - - this._peekSync = new _sync.SyncApi(this, this._clientOpts); - return this._peekSync.peek(roomId); -}; -/** - * Stop any ongoing room peeking. - */ - - -MatrixClient.prototype.stopPeeking = function () { - if (this._peekSync) { - this._peekSync.stopPeeking(); - - this._peekSync = null; - } -}; -/** - * Set r/w flags for guest access in a room. - * @param {string} roomId The room to configure guest access in. - * @param {Object} opts Options - * @param {boolean} opts.allowJoin True to allow guests to join this room. This - * implicitly gives guests write access. If false or not given, guests are - * explicitly forbidden from joining the room. - * @param {boolean} opts.allowRead True to set history visibility to - * be world_readable. This gives guests read access *from this point forward*. - * If false or not given, history visibility is not modified. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setGuestAccess = function (roomId, opts) { - const writePromise = this.sendStateEvent(roomId, "m.room.guest_access", { - guest_access: opts.allowJoin ? "can_join" : "forbidden" - }); - let readPromise = Promise.resolve(); - - if (opts.allowRead) { - readPromise = this.sendStateEvent(roomId, "m.room.history_visibility", { - history_visibility: "world_readable" - }); - } - - return Promise.all([readPromise, writePromise]); -}; // Registration/Login operations -// ============================= - -/** - * Requests an email verification token for the purposes of registration. - * This API requests a token from the homeserver. - * The doesServerRequireIdServerParam() method can be used to determine if - * the server requires the id_server parameter to be provided. - * - * Parameters and return value are as for requestEmailToken - - * @param {string} email As requestEmailToken - * @param {string} clientSecret As requestEmailToken - * @param {number} sendAttempt As requestEmailToken - * @param {string} nextLink As requestEmailToken - * @return {Promise} Resolves: As requestEmailToken - */ - - -MatrixClient.prototype.requestRegisterEmailToken = function (email, clientSecret, sendAttempt, nextLink) { - return this._requestTokenFromEndpoint("/register/email/requestToken", { - email: email, - client_secret: clientSecret, - send_attempt: sendAttempt, - next_link: nextLink - }); -}; -/** - * Requests a text message verification token for the purposes of registration. - * This API requests a token from the homeserver. - * The doesServerRequireIdServerParam() method can be used to determine if - * the server requires the id_server parameter to be provided. - * - * @param {string} phoneCountry The ISO 3166-1 alpha-2 code for the country in which - * phoneNumber should be parsed relative to. - * @param {string} phoneNumber The phone number, in national or international format - * @param {string} clientSecret As requestEmailToken - * @param {number} sendAttempt As requestEmailToken - * @param {string} nextLink As requestEmailToken - * @return {Promise} Resolves: As requestEmailToken - */ - - -MatrixClient.prototype.requestRegisterMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) { - return this._requestTokenFromEndpoint("/register/msisdn/requestToken", { - country: phoneCountry, - phone_number: phoneNumber, - client_secret: clientSecret, - send_attempt: sendAttempt, - next_link: nextLink - }); -}; -/** - * Requests an email verification token for the purposes of adding a - * third party identifier to an account. - * This API requests a token from the homeserver. - * The doesServerRequireIdServerParam() method can be used to determine if - * the server requires the id_server parameter to be provided. - * If an account with the given email address already exists and is - * associated with an account other than the one the user is authed as, - * it will either send an email to the address informing them of this - * or return M_THREEPID_IN_USE (which one is up to the Home Server). - * - * @param {string} email As requestEmailToken - * @param {string} clientSecret As requestEmailToken - * @param {number} sendAttempt As requestEmailToken - * @param {string} nextLink As requestEmailToken - * @return {Promise} Resolves: As requestEmailToken - */ - - -MatrixClient.prototype.requestAdd3pidEmailToken = function (email, clientSecret, sendAttempt, nextLink) { - return this._requestTokenFromEndpoint("/account/3pid/email/requestToken", { - email: email, - client_secret: clientSecret, - send_attempt: sendAttempt, - next_link: nextLink - }); -}; -/** - * Requests a text message verification token for the purposes of adding a - * third party identifier to an account. - * This API proxies the Identity Server /validate/email/requestToken API, - * adding specific behaviour for the addition of phone numbers to an - * account, as requestAdd3pidEmailToken. - * - * @param {string} phoneCountry As requestRegisterMsisdnToken - * @param {string} phoneNumber As requestRegisterMsisdnToken - * @param {string} clientSecret As requestEmailToken - * @param {number} sendAttempt As requestEmailToken - * @param {string} nextLink As requestEmailToken - * @return {Promise} Resolves: As requestEmailToken - */ - - -MatrixClient.prototype.requestAdd3pidMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) { - return this._requestTokenFromEndpoint("/account/3pid/msisdn/requestToken", { - country: phoneCountry, - phone_number: phoneNumber, - client_secret: clientSecret, - send_attempt: sendAttempt, - next_link: nextLink - }); -}; -/** - * Requests an email verification token for the purposes of resetting - * the password on an account. - * This API proxies the Identity Server /validate/email/requestToken API, - * adding specific behaviour for the password resetting. Specifically, - * if no account with the given email address exists, it may either - * return M_THREEPID_NOT_FOUND or send an email - * to the address informing them of this (which one is up to the Home Server). - * - * requestEmailToken calls the equivalent API directly on the ID server, - * therefore bypassing the password reset specific logic. - * - * @param {string} email As requestEmailToken - * @param {string} clientSecret As requestEmailToken - * @param {number} sendAttempt As requestEmailToken - * @param {string} nextLink As requestEmailToken - * @param {module:client.callback} callback Optional. As requestEmailToken - * @return {Promise} Resolves: As requestEmailToken - */ - - -MatrixClient.prototype.requestPasswordEmailToken = function (email, clientSecret, sendAttempt, nextLink) { - return this._requestTokenFromEndpoint("/account/password/email/requestToken", { - email: email, - client_secret: clientSecret, - send_attempt: sendAttempt, - next_link: nextLink - }); -}; -/** - * Requests a text message verification token for the purposes of resetting - * the password on an account. - * This API proxies the Identity Server /validate/email/requestToken API, - * adding specific behaviour for the password resetting, as requestPasswordEmailToken. - * - * @param {string} phoneCountry As requestRegisterMsisdnToken - * @param {string} phoneNumber As requestRegisterMsisdnToken - * @param {string} clientSecret As requestEmailToken - * @param {number} sendAttempt As requestEmailToken - * @param {string} nextLink As requestEmailToken - * @return {Promise} Resolves: As requestEmailToken - */ - - -MatrixClient.prototype.requestPasswordMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) { - return this._requestTokenFromEndpoint("/account/password/msisdn/requestToken", { - country: phoneCountry, - phone_number: phoneNumber, - client_secret: clientSecret, - send_attempt: sendAttempt, - next_link: nextLink - }); -}; -/** - * Internal utility function for requesting validation tokens from usage-specific - * requestToken endpoints. - * - * @param {string} endpoint The endpoint to send the request to - * @param {object} params Parameters for the POST request - * @return {Promise} Resolves: As requestEmailToken - */ - - -MatrixClient.prototype._requestTokenFromEndpoint = async function (endpoint, params) { - const postParams = Object.assign({}, params); // If the HS supports separate add and bind, then requestToken endpoints - // don't need an IS as they are all validated by the HS directly. - - if (!(await this.doesServerSupportSeparateAddAndBind()) && this.idBaseUrl) { - const idServerUrl = _url.default.parse(this.idBaseUrl); - - if (!idServerUrl.host) { - throw new Error("Invalid ID server URL: " + this.idBaseUrl); - } - - postParams.id_server = idServerUrl.host; - - if (this.identityServer && this.identityServer.getAccessToken && (await this.doesServerAcceptIdentityAccessToken())) { - const identityAccessToken = await this.identityServer.getAccessToken(); - - if (identityAccessToken) { - postParams.id_access_token = identityAccessToken; - } - } - } - - return this._http.request(undefined, "POST", endpoint, undefined, postParams); -}; // Push operations -// =============== - -/** - * Get the room-kind push rule associated with a room. - * @param {string} scope "global" or device-specific. - * @param {string} roomId the id of the room. - * @return {object} the rule or undefined. - */ - - -MatrixClient.prototype.getRoomPushRule = function (scope, roomId) { - // There can be only room-kind push rule per room - // and its id is the room id. - if (this.pushRules) { - for (let i = 0; i < this.pushRules[scope].room.length; i++) { - const rule = this.pushRules[scope].room[i]; - - if (rule.rule_id === roomId) { - return rule; - } - } - } else { - throw new Error("SyncApi.sync() must be done before accessing to push rules."); - } -}; -/** - * Set a room-kind muting push rule in a room. - * The operation also updates MatrixClient.pushRules at the end. - * @param {string} scope "global" or device-specific. - * @param {string} roomId the id of the room. - * @param {string} mute the mute state. - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.setRoomMutePushRule = function (scope, roomId, mute) { - const self = this; - let deferred; - let hasDontNotifyRule; // Get the existing room-kind push rule if any - - const roomPushRule = this.getRoomPushRule(scope, roomId); - - if (roomPushRule) { - if (0 <= roomPushRule.actions.indexOf("dont_notify")) { - hasDontNotifyRule = true; - } - } - - if (!mute) { - // Remove the rule only if it is a muting rule - if (hasDontNotifyRule) { - deferred = this.deletePushRule(scope, "room", roomPushRule.rule_id); - } - } else { - if (!roomPushRule) { - deferred = this.addPushRule(scope, "room", roomId, { - actions: ["dont_notify"] - }); - } else if (!hasDontNotifyRule) { - // Remove the existing one before setting the mute push rule - // This is a workaround to SYN-590 (Push rule update fails) - deferred = utils.defer(); - this.deletePushRule(scope, "room", roomPushRule.rule_id).then(function () { - self.addPushRule(scope, "room", roomId, { - actions: ["dont_notify"] - }).then(function () { - deferred.resolve(); - }, function (err) { - deferred.reject(err); - }); - }, function (err) { - deferred.reject(err); - }); - deferred = deferred.promise; - } - } - - if (deferred) { - return new Promise((resolve, reject) => { - // Update this.pushRules when the operation completes - deferred.then(function () { - self.getPushRules().then(function (result) { - self.pushRules = result; - resolve(); - }, function (err) { - reject(err); - }); - }, function (err) { - // Update it even if the previous operation fails. This can help the - // app to recover when push settings has been modifed from another client - self.getPushRules().then(function (result) { - self.pushRules = result; - reject(err); - }, function (err2) { - reject(err); - }); - }); - }); - } -}; // Search -// ====== - -/** - * Perform a server-side search for messages containing the given text. - * @param {Object} opts Options for the search. - * @param {string} opts.query The text to query. - * @param {string=} opts.keys The keys to search on. Defaults to all keys. One - * of "content.body", "content.name", "content.topic". - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.searchMessageText = function (opts, callback) { - const roomEvents = { - search_term: opts.query - }; - - if ('keys' in opts) { - roomEvents.keys = opts.keys; - } - - return this.search({ - body: { - search_categories: { - room_events: roomEvents - } - } - }, callback); -}; -/** - * Perform a server-side search for room events. - * - * The returned promise resolves to an object containing the fields: - * - * * {number} count: estimate of the number of results - * * {string} next_batch: token for back-pagination; if undefined, there are - * no more results - * * {Array} highlights: a list of words to highlight from the stemming - * algorithm - * * {Array} results: a list of results - * - * Each entry in the results list is a {module:models/search-result.SearchResult}. - * - * @param {Object} opts - * @param {string} opts.term the term to search for - * @param {Object} opts.filter a JSON filter object to pass in the request - * @return {Promise} Resolves: result object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.searchRoomEvents = function (opts) { - // TODO: support groups - const body = { - search_categories: { - room_events: { - search_term: opts.term, - filter: opts.filter, - order_by: "recent", - event_context: { - before_limit: 1, - after_limit: 1, - include_profile: true - } - } - } - }; - const searchResults = { - _query: body, - results: [], - highlights: [] - }; - return this.search({ - body: body - }).then(this._processRoomEventsSearch.bind(this, searchResults)); -}; -/** - * Take a result from an earlier searchRoomEvents call, and backfill results. - * - * @param {object} searchResults the results object to be updated - * @return {Promise} Resolves: updated result object - * @return {Error} Rejects: with an error response. - */ - - -MatrixClient.prototype.backPaginateRoomEventsSearch = function (searchResults) { - // TODO: we should implement a backoff (as per scrollback()) to deal more - // nicely with HTTP errors. - if (!searchResults.next_batch) { - return Promise.reject(new Error("Cannot backpaginate event search any further")); - } - - if (searchResults.pendingRequest) { - // already a request in progress - return the existing promise - return searchResults.pendingRequest; - } - - const searchOpts = { - body: searchResults._query, - next_batch: searchResults.next_batch - }; - const promise = this.search(searchOpts).then(this._processRoomEventsSearch.bind(this, searchResults)).finally(function () { - searchResults.pendingRequest = null; - }); - searchResults.pendingRequest = promise; - return promise; -}; -/** - * helper for searchRoomEvents and backPaginateRoomEventsSearch. Processes the - * response from the API call and updates the searchResults - * - * @param {Object} searchResults - * @param {Object} response - * @return {Object} searchResults - * @private - */ - - -MatrixClient.prototype._processRoomEventsSearch = function (searchResults, response) { - const room_events = response.search_categories.room_events; - searchResults.count = room_events.count; - searchResults.next_batch = room_events.next_batch; // combine the highlight list with our existing list; build an object - // to avoid O(N^2) fail - - const highlights = {}; - room_events.highlights.forEach(function (hl) { - highlights[hl] = 1; - }); - searchResults.highlights.forEach(function (hl) { - highlights[hl] = 1; - }); // turn it back into a list. - - searchResults.highlights = Object.keys(highlights); // append the new results to our existing results - - for (let i = 0; i < room_events.results.length; i++) { - const sr = _searchResult.SearchResult.fromJson(room_events.results[i], this.getEventMapper()); - - searchResults.results.push(sr); - } - - return searchResults; -}; -/** - * Populate the store with rooms the user has left. - * @return {Promise} Resolves: TODO - Resolved when the rooms have - * been added to the data store. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.syncLeftRooms = function () { - // Guard against multiple calls whilst ongoing and multiple calls post success - if (this._syncedLeftRooms) { - return Promise.resolve([]); // don't call syncRooms again if it succeeded. - } - - if (this._syncLeftRoomsPromise) { - return this._syncLeftRoomsPromise; // return the ongoing request - } - - const self = this; - const syncApi = new _sync.SyncApi(this, this._clientOpts); - this._syncLeftRoomsPromise = syncApi.syncLeftRooms(); // cleanup locks - - this._syncLeftRoomsPromise.then(function (res) { - _logger.logger.log("Marking success of sync left room request"); - - self._syncedLeftRooms = true; // flip the bit on success - }).finally(function () { - self._syncLeftRoomsPromise = null; // cleanup ongoing request state - }); - - return this._syncLeftRoomsPromise; -}; // Filters -// ======= - -/** - * Create a new filter. - * @param {Object} content The HTTP body for the request - * @return {Filter} Resolves to a Filter object. - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.createFilter = function (content) { - const self = this; - const path = utils.encodeUri("/user/$userId/filter", { - $userId: this.credentials.userId - }); - return this._http.authedRequest(undefined, "POST", path, undefined, content).then(function (response) { - // persist the filter - const filter = _filter.Filter.fromJson(self.credentials.userId, response.filter_id, content); - - self.store.storeFilter(filter); - return filter; - }); -}; -/** - * Retrieve a filter. - * @param {string} userId The user ID of the filter owner - * @param {string} filterId The filter ID to retrieve - * @param {boolean} allowCached True to allow cached filters to be returned. - * Default: True. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.getFilter = function (userId, filterId, allowCached) { - if (allowCached) { - const filter = this.store.getFilter(userId, filterId); - - if (filter) { - return Promise.resolve(filter); - } - } - - const self = this; - const path = utils.encodeUri("/user/$userId/filter/$filterId", { - $userId: userId, - $filterId: filterId - }); - return this._http.authedRequest(undefined, "GET", path, undefined, undefined).then(function (response) { - // persist the filter - const filter = _filter.Filter.fromJson(userId, filterId, response); - - self.store.storeFilter(filter); - return filter; - }); -}; -/** - * @param {string} filterName - * @param {Filter} filter - * @return {Promise} Filter ID - */ - - -MatrixClient.prototype.getOrCreateFilter = async function (filterName, filter) { - const filterId = this.store.getFilterIdByName(filterName); - let existingId = undefined; - - if (filterId) { - // check that the existing filter matches our expectations - try { - const existingFilter = await this.getFilter(this.credentials.userId, filterId, true); - - if (existingFilter) { - const oldDef = existingFilter.getDefinition(); - const newDef = filter.getDefinition(); - - if (utils.deepCompare(oldDef, newDef)) { - // super, just use that. - // debuglog("Using existing filter ID %s: %s", filterId, - // JSON.stringify(oldDef)); - existingId = filterId; - } - } - } catch (error) { - // Synapse currently returns the following when the filter cannot be found: - // { - // errcode: "M_UNKNOWN", - // name: "M_UNKNOWN", - // message: "No row found", - // } - if (error.errcode !== "M_UNKNOWN" && error.errcode !== "M_NOT_FOUND") { - throw error; - } - } // if the filter doesn't exist anymore on the server, remove from store - - - if (!existingId) { - this.store.setFilterIdByName(filterName, undefined); - } - } - - if (existingId) { - return existingId; - } // create a new filter - - - const createdFilter = await this.createFilter(filter.getDefinition()); // debuglog("Created new filter ID %s: %s", createdFilter.filterId, - // JSON.stringify(createdFilter.getDefinition())); - - this.store.setFilterIdByName(filterName, createdFilter.filterId); - return createdFilter.filterId; -}; -/** - * Gets a bearer token from the Home Server that the user can - * present to a third party in order to prove their ownership - * of the Matrix account they are logged into. - * @return {Promise} Resolves: Token object - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.getOpenIdToken = function () { - const path = utils.encodeUri("/user/$userId/openid/request_token", { - $userId: this.credentials.userId - }); - return this._http.authedRequest(undefined, "POST", path, undefined, {}); -}; // VoIP operations -// =============== - -/** - * @param {module:client.callback} callback Optional. - * @return {Promise} Resolves: TODO - * @return {module:http-api.MatrixError} Rejects: with an error response. - */ - - -MatrixClient.prototype.turnServer = function (callback) { - return this._http.authedRequest(callback, "GET", "/voip/turnServer"); -}; -/** - * Get the TURN servers for this home server. - * @return {Array} The servers or an empty list. - */ - - -MatrixClient.prototype.getTurnServers = function () { - return this._turnServers || []; -}; -/** - * Set whether to allow a fallback ICE server should be used for negotiating a - * WebRTC connection if the homeserver doesn't provide any servers. Defaults to - * false. - * - * @param {boolean} allow - */ - - -MatrixClient.prototype.setFallbackICEServerAllowed = function (allow) { - this._fallbackICEServerAllowed = allow; -}; -/** - * Get whether to allow a fallback ICE server should be used for negotiating a - * WebRTC connection if the homeserver doesn't provide any servers. Defaults to - * false. - * - * @returns {boolean} - */ - - -MatrixClient.prototype.isFallbackICEServerAllowed = function () { - return this._fallbackICEServerAllowed; -}; // Synapse-specific APIs -// ===================== - -/** - * Determines if the current user is an administrator of the Synapse homeserver. - * Returns false if untrue or the homeserver does not appear to be a Synapse - * homeserver. This function is implementation specific and may change - * as a result. - * @return {boolean} true if the user appears to be a Synapse administrator. - */ - - -MatrixClient.prototype.isSynapseAdministrator = function () { - const path = utils.encodeUri("/_synapse/admin/v1/users/$userId/admin", { - $userId: this.getUserId() - }); - return this._http.authedRequest(undefined, 'GET', path, undefined, undefined, { - prefix: '' - }).then(r => r['admin']); // pull out the specific boolean we want -}; -/** - * Performs a whois lookup on a user using Synapse's administrator API. - * This function is implementation specific and may change as a - * result. - * @param {string} userId the User ID to look up. - * @return {object} the whois response - see Synapse docs for information. - */ - - -MatrixClient.prototype.whoisSynapseUser = function (userId) { - const path = utils.encodeUri("/_synapse/admin/v1/whois/$userId", { - $userId: userId - }); - return this._http.authedRequest(undefined, 'GET', path, undefined, undefined, { - prefix: '' - }); -}; -/** - * Deactivates a user using Synapse's administrator API. This - * function is implementation specific and may change as a result. - * @param {string} userId the User ID to deactivate. - * @return {object} the deactivate response - see Synapse docs for information. - */ - - -MatrixClient.prototype.deactivateSynapseUser = function (userId) { - const path = utils.encodeUri("/_synapse/admin/v1/deactivate/$userId", { - $userId: userId - }); - return this._http.authedRequest(undefined, 'POST', path, undefined, undefined, { - prefix: '' - }); -}; // Higher level APIs -// ================= -// TODO: stuff to handle: -// local echo -// event dup suppression? - apparently we should still be doing this -// tracking current display name / avatar per-message -// pagination -// re-sending (including persisting pending messages to be sent) -// - Need a nice way to callback the app for arbitrary events like -// displayname changes -// due to ambiguity (or should this be on a chat-specific layer)? -// reconnect after connectivity outages - -/** - * High level helper method to begin syncing and poll for new events. To listen for these - * events, add a listener for {@link module:client~MatrixClient#event:"event"} - * via {@link module:client~MatrixClient#on}. Alternatively, listen for specific - * state change events. - * @param {Object=} opts Options to apply when syncing. - * @param {Number=} opts.initialSyncLimit The event limit= to apply - * to initial sync. Default: 8. - * @param {Boolean=} opts.includeArchivedRooms True to put archived=true - * on the /initialSync request. Default: false. - * @param {Boolean=} opts.resolveInvitesToProfiles True to do /profile requests - * on every invite event if the displayname/avatar_url is not known for this user ID. - * Default: false. - * - * @param {String=} opts.pendingEventOrdering Controls where pending messages - * appear in a room's timeline. If "chronological", messages will appear - * in the timeline when the call to sendEvent was made. If - * "detached", pending messages will appear in a separate list, - * accessbile via {@link module:models/room#getPendingEvents}. Default: - * "chronological". - * - * @param {Number=} opts.pollTimeout The number of milliseconds to wait on /sync. - * Default: 30000 (30 seconds). - * - * @param {Filter=} opts.filter The filter to apply to /sync calls. This will override - * the opts.initialSyncLimit, which would normally result in a timeline limit filter. - * - * @param {Boolean=} opts.disablePresence True to perform syncing without automatically - * updating presence. - * @param {Boolean=} opts.lazyLoadMembers True to not load all membership events during - * initial sync but fetch them when needed by calling `loadOutOfBandMembers` - * This will override the filter option at this moment. - * @param {Number=} opts.clientWellKnownPollPeriod The number of seconds between polls - * to /.well-known/matrix/client, undefined to disable. This should be in the order of hours. - * Default: undefined. - */ - - -MatrixClient.prototype.startClient = async function (opts) { - if (this.clientRunning) { - // client is already running. - return; - } - - this.clientRunning = true; // backwards compat for when 'opts' was 'historyLen'. - - if (typeof opts === "number") { - opts = { - initialSyncLimit: opts - }; - } // Create our own user object artificially (instead of waiting for sync) - // so it's always available, even if the user is not in any rooms etc. - - - const userId = this.getUserId(); - - if (userId) { - this.store.storeUser(new _user.User(userId)); - } - - if (this._crypto) { - this._crypto.uploadDeviceKeys(); - - this._crypto.start(); - } // periodically poll for turn servers if we support voip - - - checkTurnServers(this); - - if (this._syncApi) { - // This shouldn't happen since we thought the client was not running - _logger.logger.error("Still have sync object whilst not running: stopping old one"); - - this._syncApi.stop(); - } // shallow-copy the opts dict before modifying and storing it - - - opts = Object.assign({}, opts); - opts.crypto = this._crypto; - - opts.canResetEntireTimeline = roomId => { - if (!this._canResetTimelineCallback) { - return false; - } - - return this._canResetTimelineCallback(roomId); - }; - - this._clientOpts = opts; - this._syncApi = new _sync.SyncApi(this, opts); - - this._syncApi.sync(); - - if (opts.clientWellKnownPollPeriod !== undefined) { - this._clientWellKnownIntervalID = setInterval(() => { - this._fetchClientWellKnown(); - }, 1000 * opts.clientWellKnownPollPeriod); - - this._fetchClientWellKnown(); - } -}; - -MatrixClient.prototype._fetchClientWellKnown = async function () { - // `getRawClientConfig` does not throw or reject on network errors, instead - // it absorbs errors and returns `{}`. - this._clientWellKnownPromise = _autodiscovery.AutoDiscovery.getRawClientConfig(this.getDomain()); - this._clientWellKnown = await this._clientWellKnownPromise; - this.emit("WellKnown.client", this._clientWellKnown); -}; - -MatrixClient.prototype.getClientWellKnown = function () { - return this._clientWellKnown; -}; - -MatrixClient.prototype.waitForClientWellKnown = function () { - return this._clientWellKnownPromise; -}; -/** - * store client options with boolean/string/numeric values - * to know in the next session what flags the sync data was - * created with (e.g. lazy loading) - * @param {object} opts the complete set of client options - * @return {Promise} for store operation */ - - -MatrixClient.prototype._storeClientOptions = function () { - const primTypes = ["boolean", "string", "number"]; - const serializableOpts = Object.entries(this._clientOpts).filter(([key, value]) => { - return primTypes.includes(typeof value); - }).reduce((obj, [key, value]) => { - obj[key] = value; - return obj; - }, {}); - return this.store.storeClientOptions(serializableOpts); -}; -/** - * High level helper method to stop the client from polling and allow a - * clean shutdown. - */ - - -MatrixClient.prototype.stopClient = function () { - _logger.logger.log('stopping MatrixClient'); - - this.clientRunning = false; // TODO: f.e. Room => self.store.storeRoom(room) ? - - if (this._syncApi) { - this._syncApi.stop(); - - this._syncApi = null; - } - - if (this._crypto) { - this._crypto.stop(); - } - - if (this._peekSync) { - this._peekSync.stopPeeking(); - } - - global.clearTimeout(this._checkTurnServersTimeoutID); - - if (this._clientWellKnownIntervalID !== undefined) { - global.clearInterval(this._clientWellKnownIntervalID); - } -}; -/** - * Get the API versions supported by the server, along with any - * unstable APIs it supports - * @return {Promise} The server /versions response - */ - - -MatrixClient.prototype.getVersions = function () { - if (this._serverVersionsPromise) { - return this._serverVersionsPromise; - } - - this._serverVersionsPromise = this._http.request(undefined, // callback - "GET", "/_matrix/client/versions", undefined, // queryParams - undefined, // data - { - prefix: '' - }); - return this._serverVersionsPromise; -}; -/** - * Check if a particular spec version is supported by the server. - * @param {string} version The spec version (such as "r0.5.0") to check for. - * @return {Promise} Whether it is supported - */ - - -MatrixClient.prototype.isVersionSupported = async function (version) { - const { - versions - } = await this.getVersions(); - return versions && versions.includes(version); -}; -/** - * Query the server to see if it support members lazy loading - * @return {Promise} true if server supports lazy loading - */ - - -MatrixClient.prototype.doesServerSupportLazyLoading = async function () { - const response = await this.getVersions(); - if (!response) return false; - const versions = response["versions"]; - const unstableFeatures = response["unstable_features"]; - return versions && versions.includes("r0.5.0") || unstableFeatures && unstableFeatures["m.lazy_load_members"]; -}; -/** - * Query the server to see if the `id_server` parameter is required - * when registering with an 3pid, adding a 3pid or resetting password. - * @return {Promise} true if id_server parameter is required - */ - - -MatrixClient.prototype.doesServerRequireIdServerParam = async function () { - const response = await this.getVersions(); - if (!response) return true; - const versions = response["versions"]; // Supporting r0.6.0 is the same as having the flag set to false - - if (versions && versions.includes("r0.6.0")) { - return false; - } - - const unstableFeatures = response["unstable_features"]; - if (!unstableFeatures) return true; - - if (unstableFeatures["m.require_identity_server"] === undefined) { - return true; - } else { - return unstableFeatures["m.require_identity_server"]; - } -}; -/** - * Query the server to see if the `id_access_token` parameter can be safely - * passed to the homeserver. Some homeservers may trigger errors if they are not - * prepared for the new parameter. - * @return {Promise} true if id_access_token can be sent - */ - - -MatrixClient.prototype.doesServerAcceptIdentityAccessToken = async function () { - const response = await this.getVersions(); - if (!response) return false; - const versions = response["versions"]; - const unstableFeatures = response["unstable_features"]; - return versions && versions.includes("r0.6.0") || unstableFeatures && unstableFeatures["m.id_access_token"]; -}; -/** - * Query the server to see if it supports separate 3PID add and bind functions. - * This affects the sequence of API calls clients should use for these operations, - * so it's helpful to be able to check for support. - * @return {Promise} true if separate functions are supported - */ - - -MatrixClient.prototype.doesServerSupportSeparateAddAndBind = async function () { - const response = await this.getVersions(); - if (!response) return false; - const versions = response["versions"]; - const unstableFeatures = response["unstable_features"]; - return versions && versions.includes("r0.6.0") || unstableFeatures && unstableFeatures["m.separate_add_and_bind"]; -}; -/** - * Query the server to see if it lists support for an unstable feature - * in the /versions response - * @param {string} feature the feature name - * @return {Promise} true if the feature is supported - */ - - -MatrixClient.prototype.doesServerSupportUnstableFeature = async function (feature) { - const response = await this.getVersions(); - if (!response) return false; - const unstableFeatures = response["unstable_features"]; - return unstableFeatures && !!unstableFeatures[feature]; -}; -/** - * Query the server to see if it is forcing encryption to be enabled for - * a given room preset, based on the /versions response. - * @param {string} presetName The name of the preset to check. - * @returns {Promise} true if the server is forcing encryption - * for the preset. - */ - - -MatrixClient.prototype.doesServerForceEncryptionForPreset = async function (presetName) { - const response = await this.getVersions(); - if (!response) return false; - const unstableFeatures = response["unstable_features"]; - return unstableFeatures && !!unstableFeatures[`io.element.e2ee_forced.${presetName}`]; -}; -/** - * Get if lazy loading members is being used. - * @return {boolean} Whether or not members are lazy loaded by this client - */ - - -MatrixClient.prototype.hasLazyLoadMembersEnabled = function () { - return !!this._clientOpts.lazyLoadMembers; -}; -/** - * Set a function which is called when /sync returns a 'limited' response. - * It is called with a room ID and returns a boolean. It should return 'true' if the SDK - * can SAFELY remove events from this room. It may not be safe to remove events if there - * are other references to the timelines for this room, e.g because the client is - * actively viewing events in this room. - * Default: returns false. - * @param {Function} cb The callback which will be invoked. - */ - - -MatrixClient.prototype.setCanResetTimelineCallback = function (cb) { - this._canResetTimelineCallback = cb; -}; -/** - * Get the callback set via `setCanResetTimelineCallback`. - * @return {?Function} The callback or null - */ - - -MatrixClient.prototype.getCanResetTimelineCallback = function () { - return this._canResetTimelineCallback; -}; -/** - * Returns relations for a given event. Handles encryption transparently, - * with the caveat that the amount of events returned might be 0, even though you get a nextBatch. - * When the returned promise resolves, all messages should have finished trying to decrypt. - * @param {string} roomId the room of the event - * @param {string} eventId the id of the event - * @param {string} relationType the rel_type of the relations requested - * @param {string} eventType the event type of the relations requested - * @param {Object} opts options with optional values for the request. - * @param {Object} opts.from the pagination token returned from a previous request as `nextBatch` to return following relations. - * @return {Object} an object with `events` as `MatrixEvent[]` and optionally `nextBatch` if more relations are available. - */ - - -MatrixClient.prototype.relations = async function (roomId, eventId, relationType, eventType, opts = {}) { - const fetchedEventType = _getEncryptedIfNeededEventType(this, roomId, eventType); - - const result = await this.fetchRelations(roomId, eventId, relationType, fetchedEventType, opts); - const mapper = this.getEventMapper(); - let originalEvent; - - if (result.original_event) { - originalEvent = mapper(result.original_event); - } - - let events = result.chunk.map(mapper); - - if (fetchedEventType === "m.room.encrypted") { - const allEvents = originalEvent ? events.concat(originalEvent) : events; - await Promise.all(allEvents.map(e => { - return new Promise(resolve => e.once("Event.decrypted", resolve)); - })); - events = events.filter(e => e.getType() === eventType); - } - - return { - originalEvent, - events, - nextBatch: result.next_batch - }; -}; - -function setupCallEventHandler(client) { - const candidatesByCall = {// callId: [Candidate] - }; // The sync code always emits one event at a time, so it will patiently - // wait for us to finish processing a call invite before delivering the - // next event, even if that next event is a hangup. We therefore accumulate - // all our call events and then process them on the 'sync' event, ie. - // each time a sync has completed. This way, we can avoid emitting incoming - // call events if we get both the invite and answer/hangup in the same sync. - // This happens quite often, eg. replaying sync from storage, catchup sync - // after loading and after we've been offline for a bit. - - let callEventBuffer = []; - - function evaluateEventBuffer() { - if (client.getSyncState() === "SYNCING") { - // don't process any events until they are all decrypted - if (callEventBuffer.some(e => e.isBeingDecrypted())) return; - const ignoreCallIds = {}; // Set - // inspect the buffer and mark all calls which have been answered - // or hung up before passing them to the call event handler. - - for (let i = callEventBuffer.length - 1; i >= 0; i--) { - const ev = callEventBuffer[i]; - - if (ev.getType() === "m.call.answer" || ev.getType() === "m.call.hangup") { - ignoreCallIds[ev.getContent().call_id] = "yep"; - } - } // now loop through the buffer chronologically and inject them - - - callEventBuffer.forEach(function (e) { - if (e.getType() === "m.call.invite" && ignoreCallIds[e.getContent().call_id]) { - // This call has previously been answered or hung up: ignore it - return; - } - - try { - callEventHandler(e); - } catch (e) { - _logger.logger.error("Caught exception handling call event", e); - } - }); - callEventBuffer = []; - } - } - - client.on("sync", evaluateEventBuffer); - - function onEvent(event) { - // any call events or ones that might be once they're decrypted - if (event.getType().indexOf("m.call.") === 0 || event.isBeingDecrypted()) { - // queue up for processing once all events from this sync have been - // processed (see above). - callEventBuffer.push(event); - } - - if (event.isBeingDecrypted() || event.isDecryptionFailure()) { - // add an event listener for once the event is decrypted. - event.once("Event.decrypted", () => { - if (event.getType().indexOf("m.call.") === -1) return; - - if (callEventBuffer.includes(event)) { - // we were waiting for that event to decrypt, so recheck the buffer - evaluateEventBuffer(); - } else { - // This one wasn't buffered so just run the event handler for it - // straight away - try { - callEventHandler(event); - } catch (e) { - _logger.logger.error("Caught exception handling call event", e); - } - } - }); - } - } - - client.on("event", onEvent); - - function callEventHandler(event) { - const content = event.getContent(); - let call = content.call_id ? client.callList[content.call_id] : undefined; - let i; //console.info("RECV %s content=%s", event.getType(), JSON.stringify(content)); - - if (event.getType() === "m.call.invite") { - if (event.getSender() === client.credentials.userId) { - return; // ignore invites you send - } - - if (event.getAge() > content.lifetime) { - return; // expired call - } - - if (call && call.state === "ended") { - return; // stale/old invite event - } - - if (call) { - _logger.logger.log("WARN: Already have a MatrixCall with id %s but got an " + "invite. Clobbering.", content.call_id); - } - - call = (0, _call.createNewMatrixCall)(client, event.getRoomId(), { - forceTURN: client._forceTURN - }); - - if (!call) { - _logger.logger.log("Incoming call ID " + content.call_id + " but this client " + "doesn't support WebRTC"); // don't hang up the call: there could be other clients - // connected that do support WebRTC and declining the - // the call on their behalf would be really annoying. - - - return; - } - - call.callId = content.call_id; - - call._initWithInvite(event); - - client.callList[call.callId] = call; // if we stashed candidate events for that call ID, play them back now - - if (candidatesByCall[call.callId]) { - for (i = 0; i < candidatesByCall[call.callId].length; i++) { - call._gotRemoteIceCandidate(candidatesByCall[call.callId][i]); - } - } // Were we trying to call that user (room)? - - - let existingCall; - const existingCalls = utils.values(client.callList); - - for (i = 0; i < existingCalls.length; ++i) { - const thisCall = existingCalls[i]; - - if (call.roomId === thisCall.roomId && thisCall.direction === 'outbound' && ["wait_local_media", "create_offer", "invite_sent"].indexOf(thisCall.state) !== -1) { - existingCall = thisCall; - break; - } - } - - if (existingCall) { - // If we've only got to wait_local_media or create_offer and - // we've got an invite, pick the incoming call because we know - // we haven't sent our invite yet otherwise, pick whichever - // call has the lowest call ID (by string comparison) - if (existingCall.state === 'wait_local_media' || existingCall.state === 'create_offer' || existingCall.callId > call.callId) { - _logger.logger.log("Glare detected: answering incoming call " + call.callId + " and canceling outgoing call " + existingCall.callId); - - existingCall._replacedBy(call); - - call.answer(); - } else { - _logger.logger.log("Glare detected: rejecting incoming call " + call.callId + " and keeping outgoing call " + existingCall.callId); - - call.hangup(); - } - } else { - client.emit("Call.incoming", call); - } - } else if (event.getType() === 'm.call.answer') { - if (!call) { - return; - } - - if (event.getSender() === client.credentials.userId) { - if (call.state === 'ringing') { - call._onAnsweredElsewhere(content); - } - } else { - call._receivedAnswer(content); - } - } else if (event.getType() === 'm.call.candidates') { - if (event.getSender() === client.credentials.userId) { - return; - } - - if (!call) { - // store the candidates; we may get a call eventually. - if (!candidatesByCall[content.call_id]) { - candidatesByCall[content.call_id] = []; - } - - candidatesByCall[content.call_id] = candidatesByCall[content.call_id].concat(content.candidates); - } else { - for (i = 0; i < content.candidates.length; i++) { - call._gotRemoteIceCandidate(content.candidates[i]); - } - } - } else if (event.getType() === 'm.call.hangup') { - // Note that we also observe our own hangups here so we can see - // if we've already rejected a call that would otherwise be valid - if (!call) { - // if not live, store the fact that the call has ended because - // we're probably getting events backwards so - // the hangup will come before the invite - call = (0, _call.createNewMatrixCall)(client, event.getRoomId()); - - if (call) { - call.callId = content.call_id; - - call._initWithHangup(event); - - client.callList[content.call_id] = call; - } - } else { - if (call.state !== 'ended') { - call._onHangupReceived(content); - - delete client.callList[content.call_id]; - } - } - } - } -} - -function checkTurnServers(client) { - if (!client._supportsVoip) { - return; - } - - client.turnServer().then(function (res) { - if (res.uris) { - _logger.logger.log("Got TURN URIs: " + res.uris + " refresh in " + res.ttl + " secs"); // map the response to a format that can be fed to - // RTCPeerConnection - - - const servers = { - urls: res.uris, - username: res.username, - credential: res.password - }; - client._turnServers = [servers]; // re-fetch when we're about to reach the TTL - - client._checkTurnServersTimeoutID = setTimeout(() => { - checkTurnServers(client); - }, (res.ttl || 60 * 60) * 1000 * 0.9); - } - }, function (err) { - _logger.logger.error("Failed to get TURN URIs"); - - client._checkTurnServersTimeoutID = setTimeout(function () { - checkTurnServers(client); - }, 60000); - }); -} - -function _reject(callback, reject, err) { - if (callback) { - callback(err); - } - - reject(err); -} - -function _resolve(callback, resolve, res) { - if (callback) { - callback(null, res); - } - - resolve(res); -} - -function _PojoToMatrixEventMapper(client, options) { - const preventReEmit = Boolean(options && options.preventReEmit); - - function mapper(plainOldJsObject) { - const event = new _event.MatrixEvent(plainOldJsObject); - - if (event.isEncrypted()) { - if (!preventReEmit) { - client.reEmitter.reEmit(event, ["Event.decrypted"]); - } - - event.attemptDecryption(client._crypto); - } - - const room = client.getRoom(event.getRoomId()); - - if (room && !preventReEmit) { - room.reEmitter.reEmit(event, ["Event.replaced"]); - } - - return event; - } - - return mapper; -} -/** - * @param {object} [options] - * @param {bool} options.preventReEmit don't reemit events emitted on an event mapped by this mapper on the client - * @return {Function} - */ - - -MatrixClient.prototype.getEventMapper = function (options = undefined) { - return _PojoToMatrixEventMapper(this, options); -}; -/** - * The app may wish to see if we have a key cached without - * triggering a user interaction. - * @return {object} - */ - - -MatrixClient.prototype.getCrossSigningCacheCallbacks = function () { - return this._crypto && this._crypto._crossSigningInfo.getCacheCallbacks(); -}; // Identity Server Operations -// ========================== - -/** - * Generates a random string suitable for use as a client secret. This - * method is experimental and may change. - * @return {string} A new client secret - */ - - -MatrixClient.prototype.generateClientSecret = function () { - return (0, _randomstring.randomString)(32); -}; // MatrixClient Event JSDocs - -/** - * Fires whenever the SDK receives a new event. - *

- * This is only fired for live events received via /sync - it is not fired for - * events received over context, search, or pagination APIs. - * - * @event module:client~MatrixClient#"event" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @example - * matrixClient.on("event", function(event){ - * var sender = event.getSender(); - * }); - */ - -/** - * Fires whenever the SDK receives a new to-device event. - * @event module:client~MatrixClient#"toDeviceEvent" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @example - * matrixClient.on("toDeviceEvent", function(event){ - * var sender = event.getSender(); - * }); - */ - -/** - * Fires whenever the SDK's syncing state is updated. The state can be one of: - *

    - * - *
  • PREPARED: The client has synced with the server at least once and is - * ready for methods to be called on it. This will be immediately followed by - * a state of SYNCING. This is the equivalent of "syncComplete" in the - * previous API.
  • - * - *
  • CATCHUP: The client has detected the connection to the server might be - * available again and will now try to do a sync again. As this sync might take - * a long time (depending how long ago was last synced, and general server - * performance) the client is put in this mode so the UI can reflect trying - * to catch up with the server after losing connection.
  • - * - *
  • SYNCING : The client is currently polling for new events from the server. - * This will be called after processing latest events from a sync.
  • - * - *
  • ERROR : The client has had a problem syncing with the server. If this is - * called before PREPARED then there was a problem performing the initial - * sync. If this is called after PREPARED then there was a problem polling - * the server for updates. This may be called multiple times even if the state is - * already ERROR. This is the equivalent of "syncError" in the previous - * API.
  • - * - *
  • RECONNECTING: The sync connection has dropped, but not (yet) in a way that - * should be considered erroneous. - *
  • - * - *
  • STOPPED: The client has stopped syncing with server due to stopClient - * being called. - *
  • - *
- * State transition diagram: - *
- *                                          +---->STOPPED
- *                                          |
- *              +----->PREPARED -------> SYNCING <--+
- *              |                        ^  |  ^    |
- *              |      CATCHUP ----------+  |  |    |
- *              |        ^                  V  |    |
- *   null ------+        |  +------- RECONNECTING   |
- *              |        V  V                       |
- *              +------->ERROR ---------------------+
- *
- * NB: 'null' will never be emitted by this event.
- *
- * 
- * Transitions: - *
    - * - *
  • null -> PREPARED : Occurs when the initial sync is completed - * first time. This involves setting up filters and obtaining push rules. - * - *
  • null -> ERROR : Occurs when the initial sync failed first time. - * - *
  • ERROR -> PREPARED : Occurs when the initial sync succeeds - * after previously failing. - * - *
  • PREPARED -> SYNCING : Occurs immediately after transitioning - * to PREPARED. Starts listening for live updates rather than catching up. - * - *
  • SYNCING -> RECONNECTING : Occurs when the live update fails. - * - *
  • RECONNECTING -> RECONNECTING : Can occur if the update calls - * continue to fail, but the keepalive calls (to /versions) succeed. - * - *
  • RECONNECTING -> ERROR : Occurs when the keepalive call also fails - * - *
  • ERROR -> SYNCING : Occurs when the client has performed a - * live update after having previously failed. - * - *
  • ERROR -> ERROR : Occurs when the client has failed to keepalive - * for a second time or more.
  • - * - *
  • SYNCING -> SYNCING : Occurs when the client has performed a live - * update. This is called after processing.
  • - * - *
  • * -> STOPPED : Occurs once the client has stopped syncing or - * trying to sync after stopClient has been called.
  • - *
- * - * @event module:client~MatrixClient#"sync" - * - * @param {string} state An enum representing the syncing state. One of "PREPARED", - * "SYNCING", "ERROR", "STOPPED". - * - * @param {?string} prevState An enum representing the previous syncing state. - * One of "PREPARED", "SYNCING", "ERROR", "STOPPED" or null. - * - * @param {?Object} data Data about this transition. - * - * @param {MatrixError} data.error The matrix error if state=ERROR. - * - * @param {String} data.oldSyncToken The 'since' token passed to /sync. - * null for the first successful sync since this client was - * started. Only present if state=PREPARED or - * state=SYNCING. - * - * @param {String} data.nextSyncToken The 'next_batch' result from /sync, which - * will become the 'since' token for the next call to /sync. Only present if - * state=PREPARED or state=SYNCING. - * - * @param {boolean} data.catchingUp True if we are working our way through a - * backlog of events after connecting. Only present if state=SYNCING. - * - * @example - * matrixClient.on("sync", function(state, prevState, data) { - * switch (state) { - * case "ERROR": - * // update UI to say "Connection Lost" - * break; - * case "SYNCING": - * // update UI to remove any "Connection Lost" message - * break; - * case "PREPARED": - * // the client instance is ready to be queried. - * var rooms = matrixClient.getRooms(); - * break; - * } - * }); - */ - -/** -* Fires whenever the sdk learns about a new group. This event -* is experimental and may change. -* @event module:client~MatrixClient#"Group" -* @param {Group} group The newly created, fully populated group. -* @example -* matrixClient.on("Group", function(group){ -* var groupId = group.groupId; -* }); -*/ - -/** -* Fires whenever a new Room is added. This will fire when you are invited to a -* room, as well as when you join a room. This event is experimental and -* may change. -* @event module:client~MatrixClient#"Room" -* @param {Room} room The newly created, fully populated room. -* @example -* matrixClient.on("Room", function(room){ -* var roomId = room.roomId; -* }); -*/ - -/** -* Fires whenever a Room is removed. This will fire when you forget a room. -* This event is experimental and may change. -* @event module:client~MatrixClient#"deleteRoom" -* @param {string} roomId The deleted room ID. -* @example -* matrixClient.on("deleteRoom", function(roomId){ -* // update UI from getRooms() -* }); -*/ - -/** - * Fires whenever an incoming call arrives. - * @event module:client~MatrixClient#"Call.incoming" - * @param {module:webrtc/call~MatrixCall} call The incoming call. - * @example - * matrixClient.on("Call.incoming", function(call){ - * call.answer(); // auto-answer - * }); - */ - -/** - * Fires whenever the login session the JS SDK is using is no - * longer valid and the user must log in again. - * NB. This only fires when action is required from the user, not - * when then login session can be renewed by using a refresh token. - * @event module:client~MatrixClient#"Session.logged_out" - * @example - * matrixClient.on("Session.logged_out", function(errorObj){ - * // show the login screen - * }); - */ - -/** - * Fires when the JS SDK receives a M_CONSENT_NOT_GIVEN error in response - * to a HTTP request. - * @event module:client~MatrixClient#"no_consent" - * @example - * matrixClient.on("no_consent", function(message, contentUri) { - * console.info(message + ' Go to ' + contentUri); - * }); - */ - -/** - * Fires when a device is marked as verified/unverified/blocked/unblocked by - * {@link module:client~MatrixClient#setDeviceVerified|MatrixClient.setDeviceVerified} or - * {@link module:client~MatrixClient#setDeviceBlocked|MatrixClient.setDeviceBlocked}. - * - * @event module:client~MatrixClient#"deviceVerificationChanged" - * @param {string} userId the owner of the verified device - * @param {string} deviceId the id of the verified device - * @param {module:crypto/deviceinfo} deviceInfo updated device information - */ - -/** - * Fires when the trust status of a user changes - * If userId is the userId of the logged in user, this indicated a change - * in the trust status of the cross-signing data on the account. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @event module:client~MatrixClient#"userTrustStatusChanged" - * @param {string} userId the userId of the user in question - * @param {UserTrustLevel} trustLevel The new trust level of the user - */ - -/** - * Fires when the user's cross-signing keys have changed or cross-signing - * has been enabled/disabled. The client can use getStoredCrossSigningForUser - * with the user ID of the logged in user to check if cross-signing is - * enabled on the account. If enabled, it can test whether the current key - * is trusted using with checkUserTrust with the user ID of the logged - * in user. The checkOwnCrossSigningTrust function may be used to reconcile - * the trust in the account key. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @event module:client~MatrixClient#"crossSigning.keysChanged" - */ - -/** - * Fires whenever new user-scoped account_data is added. - * @event module:client~MatrixClient#"accountData" - * @param {MatrixEvent} event The event describing the account_data just added - * @param {MatrixEvent} event The previous account data, if known. - * @example - * matrixClient.on("accountData", function(event, oldEvent){ - * myAccountData[event.type] = event.content; - * }); - */ - -/** - * Fires whenever the stored devices for a user have changed - * @event module:client~MatrixClient#"crypto.devicesUpdated" - * @param {String[]} users A list of user IDs that were updated - * @param {bool} initialFetch If true, the store was empty (apart - * from our own device) and has been seeded. - */ - -/** - * Fires whenever the stored devices for a user will be updated - * @event module:client~MatrixClient#"crypto.willUpdateDevices" - * @param {String[]} users A list of user IDs that will be updated - * @param {bool} initialFetch If true, the store is empty (apart - * from our own device) and is being seeded. - */ - -/** - * Fires whenever the status of e2e key backup changes, as returned by getKeyBackupEnabled() - * @event module:client~MatrixClient#"crypto.keyBackupStatus" - * @param {bool} enabled true if key backup has been enabled, otherwise false - * @example - * matrixClient.on("crypto.keyBackupStatus", function(enabled){ - * if (enabled) { - * [...] - * } - * }); - */ - -/** - * Fires when we want to suggest to the user that they restore their megolm keys - * from backup or by cross-signing the device. - * - * @event module:client~MatrixClient#"crypto.suggestKeyRestore" - */ - -/** - * Fires when a key verification is requested. - * @event module:client~MatrixClient#"crypto.verification.request" - * @param {object} data - * @param {MatrixEvent} data.event the original verification request message - * @param {Array} data.methods the verification methods that can be used - * @param {Number} data.timeout the amount of milliseconds that should be waited - * before cancelling the request automatically. - * @param {Function} data.beginKeyVerification a function to call if a key - * verification should be performed. The function takes one argument: the - * name of the key verification method (taken from data.methods) to use. - * @param {Function} data.cancel a function to call if the key verification is - * rejected. - */ - -/** - * Fires when a key verification is requested with an unknown method. - * @event module:client~MatrixClient#"crypto.verification.request.unknown" - * @param {string} userId the user ID who requested the key verification - * @param {Function} cancel a function that will send a cancellation message to - * reject the key verification. - */ - -/** - * Fires when a secret request has been cancelled. If the client is prompting - * the user to ask whether they want to share a secret, the prompt can be - * dismissed. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @event module:client~MatrixClient#"crypto.secrets.requestCancelled" - * @param {object} data - * @param {string} data.user_id The user ID of the client that had requested the secret. - * @param {string} data.device_id The device ID of the client that had requested the - * secret. - * @param {string} data.request_id The ID of the original request. - */ - -/** - * Fires when the client .well-known info is fetched. - * - * @event module:client~MatrixClient#"WellKnown.client" - * @param {object} data The JSON object returned by the server - */ -// EventEmitter JSDocs - -/** - * The {@link https://nodejs.org/api/events.html|EventEmitter} class. - * @external EventEmitter - * @see {@link https://nodejs.org/api/events.html} - */ - -/** - * Adds a listener to the end of the listeners array for the specified event. - * No checks are made to see if the listener has already been added. Multiple - * calls passing the same combination of event and listener will result in the - * listener being added multiple times. - * @function external:EventEmitter#on - * @param {string} event The event to listen for. - * @param {Function} listener The function to invoke. - * @return {EventEmitter} for call chaining. - */ - -/** - * Alias for {@link external:EventEmitter#on}. - * @function external:EventEmitter#addListener - * @param {string} event The event to listen for. - * @param {Function} listener The function to invoke. - * @return {EventEmitter} for call chaining. - */ - -/** - * Adds a one time listener for the event. This listener is invoked only - * the next time the event is fired, after which it is removed. - * @function external:EventEmitter#once - * @param {string} event The event to listen for. - * @param {Function} listener The function to invoke. - * @return {EventEmitter} for call chaining. - */ - -/** - * Remove a listener from the listener array for the specified event. - * Caution: changes array indices in the listener array behind the - * listener. - * @function external:EventEmitter#removeListener - * @param {string} event The event to listen for. - * @param {Function} listener The function to invoke. - * @return {EventEmitter} for call chaining. - */ - -/** - * Removes all listeners, or those of the specified event. It's not a good idea - * to remove listeners that were added elsewhere in the code, especially when - * it's on an emitter that you didn't create (e.g. sockets or file streams). - * @function external:EventEmitter#removeAllListeners - * @param {string} event Optional. The event to remove listeners for. - * @return {EventEmitter} for call chaining. - */ - -/** - * Execute each of the listeners in order with the supplied arguments. - * @function external:EventEmitter#emit - * @param {string} event The event to emit. - * @param {Function} listener The function to invoke. - * @return {boolean} true if event had listeners, false otherwise. - */ - -/** - * By default EventEmitters will print a warning if more than 10 listeners are - * added for a particular event. This is a useful default which helps finding - * memory leaks. Obviously not all Emitters should be limited to 10. This - * function allows that to be increased. Set to zero for unlimited. - * @function external:EventEmitter#setMaxListeners - * @param {Number} n The max number of listeners. - * @return {EventEmitter} for call chaining. - */ -// MatrixClient Callback JSDocs - -/** - * The standard MatrixClient callback interface. Functions which accept this - * will specify 2 return arguments. These arguments map to the 2 parameters - * specified in this callback. - * @callback module:client.callback - * @param {Object} err The error value, the "rejected" value or null. - * @param {Object} data The data returned, the "resolved" value. - */ - -/***/ }), - -/***/ 4000: +/***/ 7477: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -32033,16 +132360,12 @@ MatrixClient.prototype.generateClientSecret = function () { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.makeHtmlMessage = makeHtmlMessage; -exports.makeHtmlNotice = makeHtmlNotice; -exports.makeHtmlEmote = makeHtmlEmote; -exports.makeTextMessage = makeTextMessage; -exports.makeNotice = makeNotice; -exports.makeEmoteMessage = makeEmoteMessage; - +exports.decodeBase64 = decodeBase64; +exports.encodeBase64 = encodeBase64; +exports.encodeUnpaddedBase64 = encodeUnpaddedBase64; +exports.encodeUnpaddedBase64Url = encodeUnpaddedBase64Url; /* -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -32057,114 +132380,8345 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** @module ContentHelpers */ - /** - * Generates the content for a HTML Message event - * @param {string} body the plaintext body of the message - * @param {string} htmlBody the HTML representation of the message - * @returns {{msgtype: string, format: string, body: string, formatted_body: string}} - */ -function makeHtmlMessage(body, htmlBody) { - return { - msgtype: "m.text", - format: "org.matrix.custom.html", - body: body, - formatted_body: htmlBody - }; -} -/** - * Generates the content for a HTML Notice event - * @param {string} body the plaintext body of the notice - * @param {string} htmlBody the HTML representation of the notice - * @returns {{msgtype: string, format: string, body: string, formatted_body: string}} + * Base64 encoding and decoding utilities */ - -function makeHtmlNotice(body, htmlBody) { - return { - msgtype: "m.notice", - format: "org.matrix.custom.html", - body: body, - formatted_body: htmlBody - }; -} /** - * Generates the content for a HTML Emote event - * @param {string} body the plaintext body of the emote - * @param {string} htmlBody the HTML representation of the emote - * @returns {{msgtype: string, format: string, body: string, formatted_body: string}} + * Encode a typed array of uint8 as base64. + * @param uint8Array - The data to encode. + * @returns The base64. */ - - -function makeHtmlEmote(body, htmlBody) { - return { - msgtype: "m.emote", - format: "org.matrix.custom.html", - body: body, - formatted_body: htmlBody - }; +function encodeBase64(uint8Array) { + // A brief note on the state of base64 encoding in Javascript. + // As of 2023, there is still no common native impl between both browsers and + // node. Older Webpack provides an impl for Buffer and there is a polyfill class + // for it. There are also plenty of pure js impls, eg. base64-js which has 2336 + // dependents at current count. Using this would probably be fine although it's + // a little under-docced and run by an individual. The node impl works fine, + // the browser impl works but predates Uint8Array and so only uses strings. + // Right now, switching between native (or polyfilled) impls like this feels + // like the least bad option, but... *shrugs*. + if (typeof Buffer === "function") { + return Buffer.from(uint8Array).toString("base64"); + } else if (typeof btoa === "function" && uint8Array instanceof Uint8Array) { + // ArrayBuffer is a node concept so the param should always be a Uint8Array on + // the browser. We need to check because ArrayBuffers don't have reduce. + return btoa(uint8Array.reduce((acc, current) => acc + String.fromCharCode(current), "")); + } else { + throw new Error("No base64 impl found!"); + } } + /** - * Generates the content for a Plaintext Message event - * @param {string} body the plaintext body of the emote - * @returns {{msgtype: string, body: string}} + * Encode a typed array of uint8 as unpadded base64. + * @param uint8Array - The data to encode. + * @returns The unpadded base64. */ - - -function makeTextMessage(body) { - return { - msgtype: "m.text", - body: body - }; +function encodeUnpaddedBase64(uint8Array) { + return encodeBase64(uint8Array).replace(/={1,2}$/, ""); } + /** - * Generates the content for a Plaintext Notice event - * @param {string} body the plaintext body of the notice - * @returns {{msgtype: string, body: string}} + * Encode a typed array of uint8 as unpadded base64 using the URL-safe encoding. + * @param uint8Array - The data to encode. + * @returns The unpadded base64. */ - - -function makeNotice(body) { - return { - msgtype: "m.notice", - body: body - }; +function encodeUnpaddedBase64Url(uint8Array) { + return encodeUnpaddedBase64(uint8Array).replace("+", "-").replace("/", "_"); } + /** - * Generates the content for a Plaintext Emote event - * @param {string} body the plaintext body of the emote - * @returns {{msgtype: string, body: string}} + * Decode a base64 (or base64url) string to a typed array of uint8. + * @param base64 - The base64 to decode. + * @returns The decoded data. */ - - -function makeEmoteMessage(body) { - return { - msgtype: "m.emote", - body: body - }; +function decodeBase64(base64) { + // See encodeBase64 for a short treatise on base64 en/decoding in JS + if (typeof Buffer === "function") { + return Buffer.from(base64, "base64"); + } else if (typeof atob === "function") { + const itFunc = function* () { + const decoded = atob( + // built-in atob doesn't support base64url: convert so we support either + base64.replace("-", "+").replace("_", "/")); + for (let i = 0; i < decoded.length; ++i) { + yield decoded.charCodeAt(i); + } + }; + return Uint8Array.from(itFunc()); + } else { + throw new Error("No base64 impl found!"); + } } +//# sourceMappingURL=base64.js.map /***/ }), -/***/ 4233: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 9058: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UNSTABLE_MSC3852_LAST_SEEN_UA = exports.UNSTABLE_MSC2666_SHARED_ROOMS = exports.UNSTABLE_MSC2666_QUERY_MUTUAL_ROOMS = exports.UNSTABLE_MSC2666_MUTUAL_ROOMS = exports.RoomVersionStability = exports.PendingEventOrdering = exports.MatrixClient = exports.GET_LOGIN_TOKEN_CAPABILITY = exports.ClientEvent = exports.CRYPTO_ENABLED = void 0; +exports.fixNotificationCountOnDecryption = fixNotificationCountOnDecryption; +exports.inMainTimelineForReceipt = inMainTimelineForReceipt; +exports.threadIdForReceipt = threadIdForReceipt; +var _objectWithoutProperties2 = _interopRequireDefault(__nccwpck_require__(1552)); +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _sync = __nccwpck_require__(9779); +var _event = __nccwpck_require__(9564); +var _stub = __nccwpck_require__(8817); +var _call = __nccwpck_require__(9690); +var _filter = __nccwpck_require__(3768); +var _callEventHandler = __nccwpck_require__(1281); +var _groupCallEventHandler = __nccwpck_require__(1980); +var _utils = _interopRequireWildcard(__nccwpck_require__(2557)); +var utils = _utils; +var _eventTimeline = __nccwpck_require__(2763); +var _pushprocessor = __nccwpck_require__(4131); +var _autodiscovery = __nccwpck_require__(4514); +var olmlib = _interopRequireWildcard(__nccwpck_require__(7131)); +var _base = __nccwpck_require__(7477); +var _ReEmitter = __nccwpck_require__(9554); +var _logger = __nccwpck_require__(3854); +var _serviceTypes = __nccwpck_require__(2967); +var _httpApi = __nccwpck_require__(7082); +var _crypto = __nccwpck_require__(9839); +var _recoverykey = __nccwpck_require__(4531); +var _key_passphrase = __nccwpck_require__(7664); +var _user = __nccwpck_require__(1104); +var _contentRepo = __nccwpck_require__(4233); +var _searchResult = __nccwpck_require__(8543); +var _dehydration = __nccwpck_require__(1546); +var _api = __nccwpck_require__(3180); +var ContentHelpers = _interopRequireWildcard(__nccwpck_require__(4000)); +var _room = __nccwpck_require__(7688); +var _roomMember = __nccwpck_require__(7024); +var _event2 = __nccwpck_require__(7487); +var _partials = __nccwpck_require__(3653); +var _eventMapper = __nccwpck_require__(7138); +var _randomstring = __nccwpck_require__(2495); +var _backup = __nccwpck_require__(9366); +var _MSC3089TreeSpace = __nccwpck_require__(7436); +var _search = __nccwpck_require__(9245); +var _PushRules = __nccwpck_require__(5393); +var _groupCall = __nccwpck_require__(9843); +var _mediaHandler = __nccwpck_require__(3866); +var _typedEventEmitter = __nccwpck_require__(7150); +var _read_receipts = __nccwpck_require__(3255); +var _slidingSyncSdk = __nccwpck_require__(9113); +var _thread = __nccwpck_require__(3379); +var _beacon = __nccwpck_require__(8544); +var _NamespacedValue = __nccwpck_require__(2418); +var _ToDeviceMessageQueue = __nccwpck_require__(6258); +var _invitesIgnorer = __nccwpck_require__(5364); +var _feature = __nccwpck_require__(1685); +var _constants = __nccwpck_require__(9743); +var _secretStorage = __nccwpck_require__(8597); +var _MatrixRTCSessionManager = __nccwpck_require__(2575); +var _threadUtils = __nccwpck_require__(2871); +var _membership = __nccwpck_require__(9225); +const _excluded = ["server", "limit", "since"]; +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } +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; } /* +Copyright 2015-2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ /** + * This is an internal module. See {@link MatrixClient} for the public class. + */ +const SCROLLBACK_DELAY_MS = 3000; +const CRYPTO_ENABLED = exports.CRYPTO_ENABLED = (0, _crypto.isCryptoAvailable)(); +const CAPABILITIES_CACHE_MS = 21600000; // 6 hours - an arbitrary value +const TURN_CHECK_INTERVAL = 10 * 60 * 1000; // poll for turn credentials every 10 minutes + +const UNSTABLE_MSC3852_LAST_SEEN_UA = exports.UNSTABLE_MSC3852_LAST_SEEN_UA = new _NamespacedValue.UnstableValue("last_seen_user_agent", "org.matrix.msc3852.last_seen_user_agent"); +let PendingEventOrdering = exports.PendingEventOrdering = /*#__PURE__*/function (PendingEventOrdering) { + PendingEventOrdering["Chronological"] = "chronological"; + PendingEventOrdering["Detached"] = "detached"; + return PendingEventOrdering; +}({}); +let RoomVersionStability = exports.RoomVersionStability = /*#__PURE__*/function (RoomVersionStability) { + RoomVersionStability["Stable"] = "stable"; + RoomVersionStability["Unstable"] = "unstable"; + return RoomVersionStability; +}({}); +const GET_LOGIN_TOKEN_CAPABILITY = exports.GET_LOGIN_TOKEN_CAPABILITY = new _NamespacedValue.NamespacedValue("m.get_login_token", "org.matrix.msc3882.get_login_token"); +const UNSTABLE_MSC2666_SHARED_ROOMS = exports.UNSTABLE_MSC2666_SHARED_ROOMS = "uk.half-shot.msc2666"; +const UNSTABLE_MSC2666_MUTUAL_ROOMS = exports.UNSTABLE_MSC2666_MUTUAL_ROOMS = "uk.half-shot.msc2666.mutual_rooms"; +const UNSTABLE_MSC2666_QUERY_MUTUAL_ROOMS = exports.UNSTABLE_MSC2666_QUERY_MUTUAL_ROOMS = "uk.half-shot.msc2666.query_mutual_rooms"; + +/** + * A representation of the capabilities advertised by a homeserver as defined by + * [Capabilities negotiation](https://spec.matrix.org/v1.6/client-server-api/#get_matrixclientv3capabilities). + */ + +/** @deprecated prefer {@link CrossSigningKeyInfo}. */ +var CrossSigningKeyType = /*#__PURE__*/function (CrossSigningKeyType) { + CrossSigningKeyType["MasterKey"] = "master_key"; + CrossSigningKeyType["SelfSigningKey"] = "self_signing_key"; + CrossSigningKeyType["UserSigningKey"] = "user_signing_key"; + return CrossSigningKeyType; +}(CrossSigningKeyType || {}); // Re-export for backwards compatibility +/** + * The summary of a room as defined by an initial version of MSC3266 and implemented in Synapse + * Proposed at https://github.com/matrix-org/matrix-doc/pull/3266 + */ +/* eslint-enable camelcase */ + +// We're using this constant for methods overloading and inspect whether a variable +// contains an eventId or not. This was required to ensure backwards compatibility +// of methods for threads +// Probably not the most graceful solution but does a good enough job for now +const EVENT_ID_PREFIX = "$"; +let ClientEvent = exports.ClientEvent = /*#__PURE__*/function (ClientEvent) { + ClientEvent["Sync"] = "sync"; + ClientEvent["Event"] = "event"; + ClientEvent["ToDeviceEvent"] = "toDeviceEvent"; + ClientEvent["AccountData"] = "accountData"; + ClientEvent["Room"] = "Room"; + ClientEvent["DeleteRoom"] = "deleteRoom"; + ClientEvent["SyncUnexpectedError"] = "sync.unexpectedError"; + ClientEvent["ClientWellKnown"] = "WellKnown.client"; + ClientEvent["ReceivedVoipEvent"] = "received_voip_event"; + ClientEvent["UndecryptableToDeviceEvent"] = "toDeviceEvent.undecryptable"; + ClientEvent["TurnServers"] = "turnServers"; + ClientEvent["TurnServersError"] = "turnServers.error"; + return ClientEvent; +}({}); +const SSO_ACTION_PARAM = new _NamespacedValue.UnstableValue("action", "org.matrix.msc3824.action"); + +/** + * Represents a Matrix Client. Only directly construct this if you want to use + * custom modules. Normally, {@link createClient} should be used + * as it specifies 'sensible' defaults for these modules. + */ +class MatrixClient extends _typedEventEmitter.TypedEventEmitter { + // A manager for determining which invites should be ignored. + + constructor(opts) { + var _opts$logger, _opts$usingExternalCr, _opts$cryptoCallbacks; + super(); + + // If a custom logger is provided, use it. Otherwise, default to the global + // one in logger.ts. + (0, _defineProperty2.default)(this, "reEmitter", new _ReEmitter.TypedReEmitter(this)); + (0, _defineProperty2.default)(this, "olmVersion", null); + // populated after initCrypto + (0, _defineProperty2.default)(this, "usingExternalCrypto", false); + (0, _defineProperty2.default)(this, "clientRunning", false); + (0, _defineProperty2.default)(this, "timelineSupport", false); + (0, _defineProperty2.default)(this, "urlPreviewCache", {}); + (0, _defineProperty2.default)(this, "supportsCallTransfer", false); + // XXX: Intended private, used in code. + (0, _defineProperty2.default)(this, "forceTURN", false); + // XXX: Intended private, used in code. + (0, _defineProperty2.default)(this, "iceCandidatePoolSize", 0); + // Note: these are all `protected` to let downstream consumers make mistakes if they want to. + // We don't technically support this usage, but have reasons to do this. + (0, _defineProperty2.default)(this, "canSupportVoip", false); + (0, _defineProperty2.default)(this, "peekSync", null); + (0, _defineProperty2.default)(this, "isGuestAccount", false); + (0, _defineProperty2.default)(this, "ongoingScrollbacks", {}); + (0, _defineProperty2.default)(this, "notifTimelineSet", null); + (0, _defineProperty2.default)(this, "fallbackICEServerAllowed", false); + (0, _defineProperty2.default)(this, "syncedLeftRooms", false); + (0, _defineProperty2.default)(this, "canSupport", new Map()); + // The pushprocessor caches useful things, so keep one and re-use it + (0, _defineProperty2.default)(this, "pushProcessor", new _pushprocessor.PushProcessor(this)); + (0, _defineProperty2.default)(this, "turnServers", []); + (0, _defineProperty2.default)(this, "turnServersExpiry", 0); + (0, _defineProperty2.default)(this, "txnCtr", 0); + (0, _defineProperty2.default)(this, "mediaHandler", new _mediaHandler.MediaHandler(this)); + /** IDs of events which are currently being encrypted. + * + * This is part of the cancellation mechanism: if the event is no longer listed here when encryption completes, + * that tells us that it has been cancelled, and we should not send it. + */ + (0, _defineProperty2.default)(this, "eventsBeingEncrypted", new Set()); + (0, _defineProperty2.default)(this, "useE2eForGroupCall", true); + (0, _defineProperty2.default)(this, "startCallEventHandler", () => { + if (this.isInitialSyncComplete()) { + if ((0, _call.supportsMatrixCall)()) { + this.callEventHandler.start(); + this.groupCallEventHandler.start(); + } + this.off(ClientEvent.Sync, this.startCallEventHandler); + } + }); + (0, _defineProperty2.default)(this, "startMatrixRTC", () => { + if (this.isInitialSyncComplete()) { + this.matrixRTC.start(); + this.off(ClientEvent.Sync, this.startMatrixRTC); + } + }); + /** + * Once the client has been initialised, we want to clear notifications we + * know for a fact should be here. + * This issue should also be addressed on synapse's side and is tracked as part + * of https://github.com/matrix-org/synapse/issues/14837 + * + * We consider a room or a thread as fully read if the current user has sent + * the last event in the live timeline of that context and if the read receipt + * we have on record matches. + */ + (0, _defineProperty2.default)(this, "fixupRoomNotifications", () => { + if (this.isInitialSyncComplete()) { + var _this$getRooms; + const unreadRooms = ((_this$getRooms = this.getRooms()) !== null && _this$getRooms !== void 0 ? _this$getRooms : []).filter(room => { + return room.getUnreadNotificationCount(_room.NotificationCountType.Total) > 0; + }); + for (const room of unreadRooms) { + const currentUserId = this.getSafeUserId(); + room.fixupNotifications(currentUserId); + } + this.off(ClientEvent.Sync, this.fixupRoomNotifications); + } + }); + this.logger = (_opts$logger = opts.logger) !== null && _opts$logger !== void 0 ? _opts$logger : _logger.logger; + opts.baseUrl = utils.ensureNoTrailingSlash(opts.baseUrl); + opts.idBaseUrl = utils.ensureNoTrailingSlash(opts.idBaseUrl); + this.baseUrl = opts.baseUrl; + this.idBaseUrl = opts.idBaseUrl; + this.identityServer = opts.identityServer; + this.usingExternalCrypto = (_opts$usingExternalCr = opts.usingExternalCrypto) !== null && _opts$usingExternalCr !== void 0 ? _opts$usingExternalCr : false; + this.store = opts.store || new _stub.StubStore(); + this.deviceId = opts.deviceId || null; + this.sessionId = (0, _randomstring.randomString)(10); + const userId = opts.userId || null; + this.credentials = { + userId + }; + this.http = new _httpApi.MatrixHttpApi(this, { + fetchFn: opts.fetchFn, + baseUrl: opts.baseUrl, + idBaseUrl: opts.idBaseUrl, + accessToken: opts.accessToken, + refreshToken: opts.refreshToken, + tokenRefreshFunction: opts.tokenRefreshFunction, + prefix: _httpApi.ClientPrefix.V3, + onlyData: true, + extraParams: opts.queryParams, + localTimeoutMs: opts.localTimeoutMs, + useAuthorizationHeader: opts.useAuthorizationHeader, + logger: this.logger + }); + if (opts.deviceToImport) { + if (this.deviceId) { + this.logger.warn("not importing device because device ID is provided to " + "constructor independently of exported data"); + } else if (this.credentials.userId) { + this.logger.warn("not importing device because user ID is provided to " + "constructor independently of exported data"); + } else if (!opts.deviceToImport.deviceId) { + this.logger.warn("not importing device because no device ID in exported data"); + } else { + this.deviceId = opts.deviceToImport.deviceId; + this.credentials.userId = opts.deviceToImport.userId; + // will be used during async initialization of the crypto + this.exportedOlmDeviceToImport = opts.deviceToImport.olmDevice; + } + } else if (opts.pickleKey) { + this.pickleKey = opts.pickleKey; + } + this.useLivekitForGroupCalls = Boolean(opts.useLivekitForGroupCalls); + this.scheduler = opts.scheduler; + if (this.scheduler) { + this.scheduler.setProcessFunction(async eventToSend => { + const room = this.getRoom(eventToSend.getRoomId()); + if (eventToSend.status !== _event.EventStatus.SENDING) { + this.updatePendingEventStatus(room, eventToSend, _event.EventStatus.SENDING); + } + const res = await this.sendEventHttpRequest(eventToSend); + if (room) { + // ensure we update pending event before the next scheduler run so that any listeners to event id + // updates on the synchronous event emitter get a chance to run first. + room.updatePendingEvent(eventToSend, _event.EventStatus.SENT, res.event_id); + } + return res; + }); + } + if ((0, _call.supportsMatrixCall)()) { + this.callEventHandler = new _callEventHandler.CallEventHandler(this); + this.groupCallEventHandler = new _groupCallEventHandler.GroupCallEventHandler(this); + this.canSupportVoip = true; + // Start listening for calls after the initial sync is done + // We do not need to backfill the call event buffer + // with encrypted events that might never get decrypted + this.on(ClientEvent.Sync, this.startCallEventHandler); + } + + // NB. We initialise MatrixRTC whether we have call support or not: this is just + // the underlying session management and doesn't use any actual media capabilities + this.matrixRTC = new _MatrixRTCSessionManager.MatrixRTCSessionManager(this); + this.on(ClientEvent.Sync, this.fixupRoomNotifications); + this.timelineSupport = Boolean(opts.timelineSupport); + this.cryptoStore = opts.cryptoStore; + this.verificationMethods = opts.verificationMethods; + this.cryptoCallbacks = opts.cryptoCallbacks || {}; + this.forceTURN = opts.forceTURN || false; + this.iceCandidatePoolSize = opts.iceCandidatePoolSize === undefined ? 0 : opts.iceCandidatePoolSize; + this.supportsCallTransfer = opts.supportsCallTransfer || false; + this.fallbackICEServerAllowed = opts.fallbackICEServerAllowed || false; + this.isVoipWithNoMediaAllowed = opts.isVoipWithNoMediaAllowed || false; + if (opts.useE2eForGroupCall !== undefined) this.useE2eForGroupCall = opts.useE2eForGroupCall; + this.livekitServiceURL = opts.livekitServiceURL; + this.roomNameGenerator = opts.roomNameGenerator; + this.toDeviceMessageQueue = new _ToDeviceMessageQueue.ToDeviceMessageQueue(this); + + // The SDK doesn't really provide a clean way for events to recalculate the push + // actions for themselves, so we have to kinda help them out when they are encrypted. + // We do this so that push rules are correctly executed on events in their decrypted + // state, such as highlights when the user's name is mentioned. + this.on(_event.MatrixEventEvent.Decrypted, event => { + fixNotificationCountOnDecryption(this, event); + }); + this.ignoredInvites = new _invitesIgnorer.IgnoredInvites(this); + this._secretStorage = new _secretStorage.ServerSideSecretStorageImpl(this, (_opts$cryptoCallbacks = opts.cryptoCallbacks) !== null && _opts$cryptoCallbacks !== void 0 ? _opts$cryptoCallbacks : {}); + + // having lots of event listeners is not unusual. 0 means "unlimited". + this.setMaxListeners(0); + } + set store(newStore) { + this._store = newStore; + this._store.setUserCreator(userId => _user.User.createUser(userId, this)); + } + get store() { + return this._store; + } + + /** + * High level helper method to begin syncing and poll for new events. To listen for these + * events, add a listener for {@link ClientEvent.Event} + * via {@link MatrixClient#on}. Alternatively, listen for specific + * state change events. + * @param opts - Options to apply when syncing. + */ + async startClient(opts) { + var _opts; + if (this.clientRunning) { + // client is already running. + return; + } + this.clientRunning = true; + this.on(ClientEvent.Sync, this.startMatrixRTC); + + // backwards compat for when 'opts' was 'historyLen'. + if (typeof opts === "number") { + opts = { + initialSyncLimit: opts + }; + } + + // Create our own user object artificially (instead of waiting for sync) + // so it's always available, even if the user is not in any rooms etc. + const userId = this.getUserId(); + if (userId) { + this.store.storeUser(new _user.User(userId)); + } + + // periodically poll for turn servers if we support voip + if (this.canSupportVoip) { + this.checkTurnServersIntervalID = setInterval(() => { + this.checkTurnServers(); + }, TURN_CHECK_INTERVAL); + // noinspection ES6MissingAwait + this.checkTurnServers(); + } + if (this.syncApi) { + // This shouldn't happen since we thought the client was not running + this.logger.error("Still have sync object whilst not running: stopping old one"); + this.syncApi.stop(); + } + try { + await this.getVersions(); + + // This should be done with `canSupport` + // TODO: https://github.com/vector-im/element-web/issues/23643 + const { + threads, + list, + fwdPagination + } = await this.doesServerSupportThread(); + _thread.Thread.setServerSideSupport(threads); + _thread.Thread.setServerSideListSupport(list); + _thread.Thread.setServerSideFwdPaginationSupport(fwdPagination); + } catch (e) { + this.logger.error("Can't fetch server versions, continuing to initialise sync, this will be retried later", e); + } + this.clientOpts = (_opts = opts) !== null && _opts !== void 0 ? _opts : {}; + if (this.clientOpts.slidingSync) { + this.syncApi = new _slidingSyncSdk.SlidingSyncSdk(this.clientOpts.slidingSync, this, this.clientOpts, this.buildSyncApiOptions()); + } else { + this.syncApi = new _sync.SyncApi(this, this.clientOpts, this.buildSyncApiOptions()); + } + this.syncApi.sync().catch(e => this.logger.info("Sync startup aborted with an error:", e)); + if (this.clientOpts.clientWellKnownPollPeriod !== undefined) { + this.clientWellKnownIntervalID = setInterval(() => { + this.fetchClientWellKnown(); + }, 1000 * this.clientOpts.clientWellKnownPollPeriod); + this.fetchClientWellKnown(); + } + this.toDeviceMessageQueue.start(); + } + + /** + * Construct a SyncApiOptions for this client, suitable for passing into the SyncApi constructor + */ + buildSyncApiOptions() { + return { + crypto: this.crypto, + cryptoCallbacks: this.cryptoBackend, + canResetEntireTimeline: roomId => { + if (!this.canResetTimelineCallback) { + return false; + } + return this.canResetTimelineCallback(roomId); + } + }; + } + + /** + * High level helper method to stop the client from polling and allow a + * clean shutdown. + */ + stopClient() { + var _this$cryptoBackend, _this$syncApi, _this$peekSync, _this$callEventHandle, _this$groupCallEventH; + (_this$cryptoBackend = this.cryptoBackend) === null || _this$cryptoBackend === void 0 || _this$cryptoBackend.stop(); // crypto might have been initialised even if the client wasn't fully started + + this.off(ClientEvent.Sync, this.startMatrixRTC); + if (!this.clientRunning) return; // already stopped + + this.logger.debug("stopping MatrixClient"); + this.clientRunning = false; + (_this$syncApi = this.syncApi) === null || _this$syncApi === void 0 || _this$syncApi.stop(); + this.syncApi = undefined; + (_this$peekSync = this.peekSync) === null || _this$peekSync === void 0 || _this$peekSync.stopPeeking(); + (_this$callEventHandle = this.callEventHandler) === null || _this$callEventHandle === void 0 || _this$callEventHandle.stop(); + (_this$groupCallEventH = this.groupCallEventHandler) === null || _this$groupCallEventH === void 0 || _this$groupCallEventH.stop(); + this.callEventHandler = undefined; + this.groupCallEventHandler = undefined; + global.clearInterval(this.checkTurnServersIntervalID); + this.checkTurnServersIntervalID = undefined; + if (this.clientWellKnownIntervalID !== undefined) { + global.clearInterval(this.clientWellKnownIntervalID); + } + this.toDeviceMessageQueue.stop(); + this.matrixRTC.stop(); + } + + /** + * Try to rehydrate a device if available. The client must have been + * initialized with a `cryptoCallback.getDehydrationKey` option, and this + * function must be called before initCrypto and startClient are called. + * + * @returns Promise which resolves to undefined if a device could not be dehydrated, or + * to the new device ID if the dehydration was successful. + * @returns Rejects: with an error response. + */ + async rehydrateDevice() { + if (this.crypto) { + throw new Error("Cannot rehydrate device after crypto is initialized"); + } + if (!this.cryptoCallbacks.getDehydrationKey) { + return; + } + const getDeviceResult = await this.getDehydratedDevice(); + if (!getDeviceResult) { + return; + } + if (!getDeviceResult.device_data || !getDeviceResult.device_id) { + this.logger.info("no dehydrated device found"); + return; + } + const account = new global.Olm.Account(); + try { + const deviceData = getDeviceResult.device_data; + if (deviceData.algorithm !== _dehydration.DEHYDRATION_ALGORITHM) { + this.logger.warn("Wrong algorithm for dehydrated device"); + return; + } + this.logger.debug("unpickling dehydrated device"); + const key = await this.cryptoCallbacks.getDehydrationKey(deviceData, k => { + // copy the key so that it doesn't get clobbered + account.unpickle(new Uint8Array(k), deviceData.account); + }); + account.unpickle(key, deviceData.account); + this.logger.debug("unpickled device"); + const rehydrateResult = await this.http.authedRequest(_httpApi.Method.Post, "/dehydrated_device/claim", undefined, { + device_id: getDeviceResult.device_id + }, { + prefix: "/_matrix/client/unstable/org.matrix.msc2697.v2" + }); + if (rehydrateResult.success) { + this.deviceId = getDeviceResult.device_id; + this.logger.info("using dehydrated device"); + const pickleKey = this.pickleKey || "DEFAULT_KEY"; + this.exportedOlmDeviceToImport = { + pickledAccount: account.pickle(pickleKey), + sessions: [], + pickleKey: pickleKey + }; + account.free(); + return this.deviceId; + } else { + account.free(); + this.logger.info("not using dehydrated device"); + return; + } + } catch (e) { + account.free(); + this.logger.warn("could not unpickle", e); + } + } + + /** + * Get the current dehydrated device, if any + * @returns A promise of an object containing the dehydrated device + */ + async getDehydratedDevice() { + try { + return await this.http.authedRequest(_httpApi.Method.Get, "/dehydrated_device", undefined, undefined, { + prefix: "/_matrix/client/unstable/org.matrix.msc2697.v2" + }); + } catch (e) { + this.logger.info("could not get dehydrated device", e); + return; + } + } + + /** + * Set the dehydration key. This will also periodically dehydrate devices to + * the server. + * + * @param key - the dehydration key + * @param keyInfo - Information about the key. Primarily for + * information about how to generate the key from a passphrase. + * @param deviceDisplayName - The device display name for the + * dehydrated device. + * @returns A promise that resolves when the dehydrated device is stored. + */ + async setDehydrationKey(key, keyInfo, deviceDisplayName) { + if (!this.crypto) { + this.logger.warn("not dehydrating device if crypto is not enabled"); + return; + } + return this.crypto.dehydrationManager.setKeyAndQueueDehydration(key, keyInfo, deviceDisplayName); + } + + /** + * Creates a new dehydrated device (without queuing periodic dehydration) + * @param key - the dehydration key + * @param keyInfo - Information about the key. Primarily for + * information about how to generate the key from a passphrase. + * @param deviceDisplayName - The device display name for the + * dehydrated device. + * @returns the device id of the newly created dehydrated device + */ + async createDehydratedDevice(key, keyInfo, deviceDisplayName) { + if (!this.crypto) { + this.logger.warn("not dehydrating device if crypto is not enabled"); + return; + } + await this.crypto.dehydrationManager.setKey(key, keyInfo, deviceDisplayName); + return this.crypto.dehydrationManager.dehydrateDevice(); + } + async exportDevice() { + if (!this.crypto) { + this.logger.warn("not exporting device if crypto is not enabled"); + return; + } + return { + userId: this.credentials.userId, + deviceId: this.deviceId, + // XXX: Private member access. + olmDevice: await this.crypto.olmDevice.export() + }; + } + + /** + * Clear any data out of the persistent stores used by the client. + * + * @returns Promise which resolves when the stores have been cleared. + */ + clearStores() { + if (this.clientRunning) { + throw new Error("Cannot clear stores while client is running"); + } + const promises = []; + promises.push(this.store.deleteAllData()); + if (this.cryptoStore) { + promises.push(this.cryptoStore.deleteAllData()); + } + + // delete the stores used by the rust matrix-sdk-crypto, in case they were used + const deleteRustSdkStore = async () => { + let indexedDB; + try { + indexedDB = global.indexedDB; + if (!indexedDB) return; // No indexedDB support + } catch (e) { + // No indexedDB support + return; + } + for (const dbname of [`${_constants.RUST_SDK_STORE_PREFIX}::matrix-sdk-crypto`, `${_constants.RUST_SDK_STORE_PREFIX}::matrix-sdk-crypto-meta`]) { + const prom = new Promise((resolve, reject) => { + this.logger.info(`Removing IndexedDB instance ${dbname}`); + const req = indexedDB.deleteDatabase(dbname); + req.onsuccess = _ => { + this.logger.info(`Removed IndexedDB instance ${dbname}`); + resolve(0); + }; + req.onerror = e => { + // In private browsing, Firefox has a global.indexedDB, but attempts to delete an indexeddb + // (even a non-existent one) fail with "DOMException: A mutation operation was attempted on a + // database that did not allow mutations." + // + // it seems like the only thing we can really do is ignore the error. + this.logger.warn(`Failed to remove IndexedDB instance ${dbname}:`, e); + resolve(0); + }; + req.onblocked = e => { + this.logger.info(`cannot yet remove IndexedDB instance ${dbname}`); + }; + }); + await prom; + } + }; + promises.push(deleteRustSdkStore()); + return Promise.all(promises).then(); // .then to fix types + } + + /** + * Get the user-id of the logged-in user + * + * @returns MXID for the logged-in user, or null if not logged in + */ + getUserId() { + if (this.credentials && this.credentials.userId) { + return this.credentials.userId; + } + return null; + } + + /** + * Get the user-id of the logged-in user + * + * @returns MXID for the logged-in user + * @throws Error if not logged in + */ + getSafeUserId() { + const userId = this.getUserId(); + if (!userId) { + throw new Error("Expected logged in user but found none."); + } + return userId; + } + + /** + * Get the domain for this client's MXID + * @returns Domain of this MXID + */ + getDomain() { + if (this.credentials && this.credentials.userId) { + return this.credentials.userId.replace(/^.*?:/, ""); + } + return null; + } + + /** + * Get the local part of the current user ID e.g. "foo" in "\@foo:bar". + * @returns The user ID localpart or null. + */ + getUserIdLocalpart() { + if (this.credentials && this.credentials.userId) { + return this.credentials.userId.split(":")[0].substring(1); + } + return null; + } + + /** + * Get the device ID of this client + * @returns device ID + */ + getDeviceId() { + return this.deviceId; + } + + /** + * Get the session ID of this client + * @returns session ID + */ + getSessionId() { + return this.sessionId; + } + + /** + * Check if the runtime environment supports VoIP calling. + * @returns True if VoIP is supported. + */ + supportsVoip() { + return this.canSupportVoip; + } + + /** + * @returns + */ + getMediaHandler() { + return this.mediaHandler; + } + + /** + * Set whether VoIP calls are forced to use only TURN + * candidates. This is the same as the forceTURN option + * when creating the client. + * @param force - True to force use of TURN servers + */ + setForceTURN(force) { + this.forceTURN = force; + } + + /** + * Set whether to advertise transfer support to other parties on Matrix calls. + * @param support - True to advertise the 'm.call.transferee' capability + */ + setSupportsCallTransfer(support) { + this.supportsCallTransfer = support; + } + + /** + * Returns true if to-device signalling for group calls will be encrypted with Olm. + * If false, it will be sent unencrypted. + * @returns boolean Whether group call signalling will be encrypted + */ + getUseE2eForGroupCall() { + return this.useE2eForGroupCall; + } + + /** + * Creates a new call. + * The place*Call methods on the returned call can be used to actually place a call + * + * @param roomId - The room the call is to be placed in. + * @returns the call or null if the browser doesn't support calling. + */ + createCall(roomId) { + return (0, _call.createNewMatrixCall)(this, roomId); + } + + /** + * Creates a new group call and sends the associated state event + * to alert other members that the room now has a group call. + * + * @param roomId - The room the call is to be placed in. + */ + async createGroupCall(roomId, type, isPtt, intent, dataChannelsEnabled, dataChannelOptions) { + if (this.getGroupCallForRoom(roomId)) { + throw new Error(`${roomId} already has an existing group call`); + } + const room = this.getRoom(roomId); + if (!room) { + throw new Error(`Cannot find room ${roomId}`); + } + + // Because without Media section a WebRTC connection is not possible, so need a RTCDataChannel to set up a + // no media WebRTC connection anyway. + return new _groupCall.GroupCall(this, room, type, isPtt, intent, undefined, dataChannelsEnabled || this.isVoipWithNoMediaAllowed, dataChannelOptions, this.isVoipWithNoMediaAllowed, this.useLivekitForGroupCalls, this.livekitServiceURL).create(); + } + getLivekitServiceURL() { + return this.livekitServiceURL; + } + + // This shouldn't need to exist, but the widget API has startup ordering problems that + // mean it doesn't know the livekit URL fast enough: remove this once this is fixed. + setLivekitServiceURL(newURL) { + this.livekitServiceURL = newURL; + } + + /** + * Wait until an initial state for the given room has been processed by the + * client and the client is aware of any ongoing group calls. Awaiting on + * the promise returned by this method before calling getGroupCallForRoom() + * avoids races where getGroupCallForRoom is called before the state for that + * room has been processed. It does not, however, fix other races, eg. two + * clients both creating a group call at the same time. + * @param roomId - The room ID to wait for + * @returns A promise that resolves once existing group calls in the room + * have been processed. + */ + waitUntilRoomReadyForGroupCalls(roomId) { + return this.groupCallEventHandler.waitUntilRoomReadyForGroupCalls(roomId); + } + + /** + * Get an existing group call for the provided room. + * @returns The group call or null if it doesn't already exist. + */ + getGroupCallForRoom(roomId) { + return this.groupCallEventHandler.groupCalls.get(roomId) || null; + } + + /** + * Get the current sync state. + * @returns the sync state, which may be null. + * @see MatrixClient#event:"sync" + */ + getSyncState() { + var _this$syncApi$getSync, _this$syncApi2; + return (_this$syncApi$getSync = (_this$syncApi2 = this.syncApi) === null || _this$syncApi2 === void 0 ? void 0 : _this$syncApi2.getSyncState()) !== null && _this$syncApi$getSync !== void 0 ? _this$syncApi$getSync : null; + } + + /** + * Returns the additional data object associated with + * the current sync state, or null if there is no + * such data. + * Sync errors, if available, are put in the 'error' key of + * this object. + */ + getSyncStateData() { + if (!this.syncApi) { + return null; + } + return this.syncApi.getSyncStateData(); + } + + /** + * Whether the initial sync has completed. + * @returns True if at least one sync has happened. + */ + isInitialSyncComplete() { + const state = this.getSyncState(); + if (!state) { + return false; + } + return state === _sync.SyncState.Prepared || state === _sync.SyncState.Syncing; + } + + /** + * Return whether the client is configured for a guest account. + * @returns True if this is a guest access_token (or no token is supplied). + */ + isGuest() { + return this.isGuestAccount; + } + + /** + * Set whether this client is a guest account. This method is experimental + * and may change without warning. + * @param guest - True if this is a guest account. + * @experimental if the token is a macaroon, it should be encoded in it that it is a 'guest' + * access token, which means that the SDK can determine this entirely without + * the dev manually flipping this flag. + */ + setGuest(guest) { + this.isGuestAccount = guest; + } + + /** + * Return the provided scheduler, if any. + * @returns The scheduler or undefined + */ + getScheduler() { + return this.scheduler; + } + + /** + * Retry a backed off syncing request immediately. This should only be used when + * the user explicitly attempts to retry their lost connection. + * Will also retry any outbound to-device messages currently in the queue to be sent + * (retries of regular outgoing events are handled separately, per-event). + * @returns True if this resulted in a request being retried. + */ + retryImmediately() { + var _this$syncApi$retryIm, _this$syncApi3; + // don't await for this promise: we just want to kick it off + this.toDeviceMessageQueue.sendQueue(); + return (_this$syncApi$retryIm = (_this$syncApi3 = this.syncApi) === null || _this$syncApi3 === void 0 ? void 0 : _this$syncApi3.retryImmediately()) !== null && _this$syncApi$retryIm !== void 0 ? _this$syncApi$retryIm : false; + } + + /** + * Return the global notification EventTimelineSet, if any + * + * @returns the globl notification EventTimelineSet + */ + getNotifTimelineSet() { + return this.notifTimelineSet; + } + + /** + * Set the global notification EventTimelineSet + * + */ + setNotifTimelineSet(set) { + this.notifTimelineSet = set; + } + + /** + * Gets the capabilities of the homeserver. Always returns an object of + * capability keys and their options, which may be empty. + * @param fresh - True to ignore any cached values. + * @returns Promise which resolves to the capabilities of the homeserver + * @returns Rejects: with an error response. + */ + getCapabilities(fresh = false) { + const now = new Date().getTime(); + if (this.cachedCapabilities && !fresh) { + if (now < this.cachedCapabilities.expiration) { + this.logger.debug("Returning cached capabilities"); + return Promise.resolve(this.cachedCapabilities.capabilities); + } + } + return this.http.authedRequest(_httpApi.Method.Get, "/capabilities").catch(e => { + // We swallow errors because we need a default object anyhow + this.logger.error(e); + return {}; + }).then((r = {}) => { + const capabilities = r["capabilities"] || {}; + + // If the capabilities missed the cache, cache it for a shorter amount + // of time to try and refresh them later. + const cacheMs = Object.keys(capabilities).length ? CAPABILITIES_CACHE_MS : 60000 + Math.random() * 5000; + this.cachedCapabilities = { + capabilities, + expiration: now + cacheMs + }; + this.logger.debug("Caching capabilities: ", capabilities); + return capabilities; + }); + } + + /** + * Initialise support for end-to-end encryption in this client, using libolm. + * + * You should call this method after creating the matrixclient, but *before* + * calling `startClient`, if you want to support end-to-end encryption. + * + * It will return a Promise which will resolve when the crypto layer has been + * successfully initialised. + */ + async initCrypto() { + if (!(0, _crypto.isCryptoAvailable)()) { + throw new Error(`End-to-end encryption not supported in this js-sdk build: did ` + `you remember to load the olm library?`); + } + if (this.cryptoBackend) { + this.logger.warn("Attempt to re-initialise e2e encryption on MatrixClient"); + return; + } + if (!this.cryptoStore) { + // the cryptostore is provided by sdk.createClient, so this shouldn't happen + throw new Error(`Cannot enable encryption: no cryptoStore provided`); + } + this.logger.debug("Crypto: Starting up crypto store..."); + await this.cryptoStore.startup(); + const userId = this.getUserId(); + if (userId === null) { + throw new Error(`Cannot enable encryption on MatrixClient with unknown userId: ` + `ensure userId is passed in createClient().`); + } + if (this.deviceId === null) { + throw new Error(`Cannot enable encryption on MatrixClient with unknown deviceId: ` + `ensure deviceId is passed in createClient().`); + } + const crypto = new _crypto.Crypto(this, userId, this.deviceId, this.store, this.cryptoStore, this.verificationMethods); + this.reEmitter.reEmit(crypto, [_crypto.CryptoEvent.KeyBackupFailed, _crypto.CryptoEvent.KeyBackupSessionsRemaining, _crypto.CryptoEvent.RoomKeyRequest, _crypto.CryptoEvent.RoomKeyRequestCancellation, _crypto.CryptoEvent.Warning, _crypto.CryptoEvent.DevicesUpdated, _crypto.CryptoEvent.WillUpdateDevices, _crypto.CryptoEvent.DeviceVerificationChanged, _crypto.CryptoEvent.UserTrustStatusChanged, _crypto.CryptoEvent.KeysChanged]); + this.logger.debug("Crypto: initialising crypto object..."); + await crypto.init({ + exportedOlmDevice: this.exportedOlmDeviceToImport, + pickleKey: this.pickleKey + }); + delete this.exportedOlmDeviceToImport; + this.olmVersion = _crypto.Crypto.getOlmVersion(); + + // if crypto initialisation was successful, tell it to attach its event handlers. + crypto.registerEventHandlers(this); + this.cryptoBackend = this.crypto = crypto; + + // upload our keys in the background + this.crypto.uploadDeviceKeys().catch(e => { + // TODO: throwing away this error is a really bad idea. + this.logger.error("Error uploading device keys", e); + }); + } + + /** + * Initialise support for end-to-end encryption in this client, using the rust matrix-sdk-crypto. + * + * An alternative to {@link initCrypto}. + * + * *WARNING*: this API is very experimental, should not be used in production, and may change without notice! + * Eventually it will be deprecated and `initCrypto` will do the same thing. + * + * @experimental + * + * @param useIndexedDB - True to use an indexeddb store, false to use an in-memory store. Defaults to 'true'. + * + * @returns a Promise which will resolve when the crypto layer has been + * successfully initialised. + */ + async initRustCrypto({ + useIndexedDB = true + } = {}) { + var _this$pickleKey; + if (this.cryptoBackend) { + this.logger.warn("Attempt to re-initialise e2e encryption on MatrixClient"); + return; + } + const userId = this.getUserId(); + if (userId === null) { + throw new Error(`Cannot enable encryption on MatrixClient with unknown userId: ` + `ensure userId is passed in createClient().`); + } + const deviceId = this.getDeviceId(); + if (deviceId === null) { + throw new Error(`Cannot enable encryption on MatrixClient with unknown deviceId: ` + `ensure deviceId is passed in createClient().`); + } + + // importing rust-crypto will download the webassembly, so we delay it until we know it will be + // needed. + this.logger.debug("Downloading Rust crypto library"); + const RustCrypto = await Promise.resolve().then(() => _interopRequireWildcard(__nccwpck_require__(9972))); + const rustCrypto = await RustCrypto.initRustCrypto({ + logger: this.logger, + http: this.http, + userId: userId, + deviceId: deviceId, + secretStorage: this.secretStorage, + cryptoCallbacks: this.cryptoCallbacks, + storePrefix: useIndexedDB ? _constants.RUST_SDK_STORE_PREFIX : null, + storePassphrase: this.pickleKey, + legacyCryptoStore: this.cryptoStore, + legacyPickleKey: (_this$pickleKey = this.pickleKey) !== null && _this$pickleKey !== void 0 ? _this$pickleKey : "DEFAULT_KEY", + legacyMigrationProgressListener: (progress, total) => { + this.emit(_crypto.CryptoEvent.LegacyCryptoStoreMigrationProgress, progress, total); + } + }); + rustCrypto.setSupportedVerificationMethods(this.verificationMethods); + this.cryptoBackend = rustCrypto; + + // attach the event listeners needed by RustCrypto + this.on(_roomMember.RoomMemberEvent.Membership, rustCrypto.onRoomMembership.bind(rustCrypto)); + this.on(ClientEvent.Event, event => { + rustCrypto.onLiveEventFromSync(event); + }); + + // re-emit the events emitted by the crypto impl + this.reEmitter.reEmit(rustCrypto, [_crypto.CryptoEvent.VerificationRequestReceived, _crypto.CryptoEvent.UserTrustStatusChanged, _crypto.CryptoEvent.KeyBackupStatus, _crypto.CryptoEvent.KeyBackupSessionsRemaining, _crypto.CryptoEvent.KeyBackupFailed, _crypto.CryptoEvent.KeyBackupDecryptionKeyCached, _crypto.CryptoEvent.KeysChanged, _crypto.CryptoEvent.DevicesUpdated, _crypto.CryptoEvent.WillUpdateDevices]); + } + + /** + * Access the server-side secret storage API for this client. + */ + get secretStorage() { + return this._secretStorage; + } + + /** + * Access the crypto API for this client. + * + * If end-to-end encryption has been enabled for this client (via {@link initCrypto} or {@link initRustCrypto}), + * returns an object giving access to the crypto API. Otherwise, returns `undefined`. + */ + getCrypto() { + return this.cryptoBackend; + } + + /** + * Is end-to-end crypto enabled for this client. + * @returns True if end-to-end is enabled. + * @deprecated prefer {@link getCrypto} + */ + isCryptoEnabled() { + return !!this.cryptoBackend; + } + + /** + * Get the Ed25519 key for this device + * + * @returns base64-encoded ed25519 key. Null if crypto is + * disabled. + * + * @deprecated Prefer {@link CryptoApi.getOwnDeviceKeys} + */ + getDeviceEd25519Key() { + var _this$crypto$getDevic, _this$crypto; + return (_this$crypto$getDevic = (_this$crypto = this.crypto) === null || _this$crypto === void 0 ? void 0 : _this$crypto.getDeviceEd25519Key()) !== null && _this$crypto$getDevic !== void 0 ? _this$crypto$getDevic : null; + } + + /** + * Get the Curve25519 key for this device + * + * @returns base64-encoded curve25519 key. Null if crypto is + * disabled. + * + * @deprecated Use {@link CryptoApi.getOwnDeviceKeys} + */ + getDeviceCurve25519Key() { + var _this$crypto$getDevic2, _this$crypto2; + return (_this$crypto$getDevic2 = (_this$crypto2 = this.crypto) === null || _this$crypto2 === void 0 ? void 0 : _this$crypto2.getDeviceCurve25519Key()) !== null && _this$crypto$getDevic2 !== void 0 ? _this$crypto$getDevic2 : null; + } + + /** + * @deprecated Does nothing. + */ + async uploadKeys() { + this.logger.warn("MatrixClient.uploadKeys is deprecated"); + } + + /** + * Download the keys for a list of users and stores the keys in the session + * store. + * @param userIds - The users to fetch. + * @param forceDownload - Always download the keys even if cached. + * + * @returns A promise which resolves to a map userId-\>deviceId-\>`DeviceInfo` + * + * @deprecated Prefer {@link CryptoApi.getUserDeviceInfo} + */ + downloadKeys(userIds, forceDownload) { + if (!this.crypto) { + return Promise.reject(new Error("End-to-end encryption disabled")); + } + return this.crypto.downloadKeys(userIds, forceDownload); + } + + /** + * Get the stored device keys for a user id + * + * @param userId - the user to list keys for. + * + * @returns list of devices + * @deprecated Prefer {@link CryptoApi.getUserDeviceInfo} + */ + getStoredDevicesForUser(userId) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.getStoredDevicesForUser(userId) || []; + } + + /** + * Get the stored device key for a user id and device id + * + * @param userId - the user to list keys for. + * @param deviceId - unique identifier for the device + * + * @returns device or null + * @deprecated Prefer {@link CryptoApi.getUserDeviceInfo} + */ + getStoredDevice(userId, deviceId) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.getStoredDevice(userId, deviceId) || null; + } + + /** + * Mark the given device as verified + * + * @param userId - owner of the device + * @param deviceId - unique identifier for the device or user's + * cross-signing public key ID. + * + * @param verified - whether to mark the device as verified. defaults + * to 'true'. + * + * @returns + * + * @remarks + * Fires {@link CryptoEvent#DeviceVerificationChanged} + */ + setDeviceVerified(userId, deviceId, verified = true) { + const prom = this.setDeviceVerification(userId, deviceId, verified, null, null); + + // if one of the user's own devices is being marked as verified / unverified, + // check the key backup status, since whether or not we use this depends on + // whether it has a signature from a verified device + if (userId == this.credentials.userId) { + this.checkKeyBackup(); + } + return prom; + } + + /** + * Mark the given device as blocked/unblocked + * + * @param userId - owner of the device + * @param deviceId - unique identifier for the device or user's + * cross-signing public key ID. + * + * @param blocked - whether to mark the device as blocked. defaults + * to 'true'. + * + * @returns + * + * @remarks + * Fires {@link CryptoEvent.DeviceVerificationChanged} + */ + setDeviceBlocked(userId, deviceId, blocked = true) { + return this.setDeviceVerification(userId, deviceId, null, blocked, null); + } + + /** + * Mark the given device as known/unknown + * + * @param userId - owner of the device + * @param deviceId - unique identifier for the device or user's + * cross-signing public key ID. + * + * @param known - whether to mark the device as known. defaults + * to 'true'. + * + * @returns + * + * @remarks + * Fires {@link CryptoEvent#DeviceVerificationChanged} + */ + setDeviceKnown(userId, deviceId, known = true) { + return this.setDeviceVerification(userId, deviceId, null, null, known); + } + async setDeviceVerification(userId, deviceId, verified, blocked, known) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + await this.crypto.setDeviceVerification(userId, deviceId, verified, blocked, known); + } + + /** + * Request a key verification from another user, using a DM. + * + * @param userId - the user to request verification with + * @param roomId - the room to use for verification + * + * @returns resolves to a VerificationRequest + * when the request has been sent to the other party. + * + * @deprecated Prefer {@link CryptoApi.requestVerificationDM}. + */ + requestVerificationDM(userId, roomId) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.requestVerificationDM(userId, roomId); + } + + /** + * Finds a DM verification request that is already in progress for the given room id + * + * @param roomId - the room to use for verification + * + * @returns the VerificationRequest that is in progress, if any + * @deprecated Prefer {@link CryptoApi.findVerificationRequestDMInProgress}. + */ + findVerificationRequestDMInProgress(roomId) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } else if (!this.crypto) { + // Hack for element-R to avoid breaking the cypress tests. We can get rid of this once the react-sdk is + // updated to use CryptoApi.findVerificationRequestDMInProgress. + return undefined; + } + return this.crypto.findVerificationRequestDMInProgress(roomId); + } + + /** + * Returns all to-device verification requests that are already in progress for the given user id + * + * @param userId - the ID of the user to query + * + * @returns the VerificationRequests that are in progress + * @deprecated Prefer {@link CryptoApi.getVerificationRequestsToDeviceInProgress}. + */ + getVerificationRequestsToDeviceInProgress(userId) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.getVerificationRequestsToDeviceInProgress(userId); + } + + /** + * Request a key verification from another user. + * + * @param userId - the user to request verification with + * @param devices - array of device IDs to send requests to. Defaults to + * all devices owned by the user + * + * @returns resolves to a VerificationRequest + * when the request has been sent to the other party. + * + * @deprecated Prefer {@link CryptoApi#requestOwnUserVerification} or {@link CryptoApi#requestDeviceVerification}. + */ + requestVerification(userId, devices) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.requestVerification(userId, devices); + } + + /** + * Begin a key verification. + * + * @param method - the verification method to use + * @param userId - the user to verify keys with + * @param deviceId - the device to verify + * + * @returns a verification object + * @deprecated Use `requestVerification` instead. + */ + beginKeyVerification(method, userId, deviceId) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.beginKeyVerification(method, userId, deviceId); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#checkKey}. + */ + checkSecretStorageKey(key, info) { + return this.secretStorage.checkKey(key, info); + } + + /** + * Set the global override for whether the client should ever send encrypted + * messages to unverified devices. This provides the default for rooms which + * do not specify a value. + * + * @param value - whether to blacklist all unverified devices by default + * + * @deprecated Prefer direct access to {@link CryptoApi.globalBlacklistUnverifiedDevices}: + * + * ```javascript + * client.getCrypto().globalBlacklistUnverifiedDevices = value; + * ``` + */ + setGlobalBlacklistUnverifiedDevices(value) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + this.cryptoBackend.globalBlacklistUnverifiedDevices = value; + return value; + } + + /** + * @returns whether to blacklist all unverified devices by default + * + * @deprecated Prefer direct access to {@link CryptoApi.globalBlacklistUnverifiedDevices}: + * + * ```javascript + * value = client.getCrypto().globalBlacklistUnverifiedDevices; + * ``` + */ + getGlobalBlacklistUnverifiedDevices() { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.globalBlacklistUnverifiedDevices; + } + + /** + * Set whether sendMessage in a room with unknown and unverified devices + * should throw an error and not send them message. This has 'Global' for + * symmetry with setGlobalBlacklistUnverifiedDevices but there is currently + * no room-level equivalent for this setting. + * + * This API is currently UNSTABLE and may change or be removed without notice. + * + * It has no effect with the Rust crypto implementation. + * + * @param value - whether error on unknown devices + * + * ```ts + * client.getCrypto().globalErrorOnUnknownDevices = value; + * ``` + */ + setGlobalErrorOnUnknownDevices(value) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + this.cryptoBackend.globalErrorOnUnknownDevices = value; + } + + /** + * @returns whether to error on unknown devices + * + * This API is currently UNSTABLE and may change or be removed without notice. + */ + getGlobalErrorOnUnknownDevices() { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.globalErrorOnUnknownDevices; + } + + /** + * Get the ID of one of the user's cross-signing keys + * + * @param type - The type of key to get the ID of. One of + * "master", "self_signing", or "user_signing". Defaults to "master". + * + * @returns the key ID + * @deprecated prefer {@link Crypto.CryptoApi#getCrossSigningKeyId} + */ + getCrossSigningId(type = _api.CrossSigningKey.Master) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.getCrossSigningId(type); + } + + /** + * Get the cross signing information for a given user. + * + * The cross-signing API is currently UNSTABLE and may change without notice. + * + * @param userId - the user ID to get the cross-signing info for. + * + * @returns the cross signing information for the user. + * @deprecated Prefer {@link CryptoApi#userHasCrossSigningKeys} + */ + getStoredCrossSigningForUser(userId) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.getStoredCrossSigningForUser(userId); + } + + /** + * Check whether a given user is trusted. + * + * The cross-signing API is currently UNSTABLE and may change without notice. + * + * @param userId - The ID of the user to check. + * + * @deprecated Use {@link Crypto.CryptoApi.getUserVerificationStatus | `CryptoApi.getUserVerificationStatus`} + */ + checkUserTrust(userId) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.checkUserTrust(userId); + } + + /** + * Check whether a given device is trusted. + * + * The cross-signing API is currently UNSTABLE and may change without notice. + * + * @param userId - The ID of the user whose devices is to be checked. + * @param deviceId - The ID of the device to check + * + * @deprecated Use {@link Crypto.CryptoApi.getDeviceVerificationStatus | `CryptoApi.getDeviceVerificationStatus`} + */ + checkDeviceTrust(userId, deviceId) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.checkDeviceTrust(userId, deviceId); + } + + /** + * Check whether one of our own devices is cross-signed by our + * user's stored keys, regardless of whether we trust those keys yet. + * + * @param deviceId - The ID of the device to check + * + * @returns true if the device is cross-signed + */ + checkIfOwnDeviceCrossSigned(deviceId) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.checkIfOwnDeviceCrossSigned(deviceId); + } + + /** + * Check the copy of our cross-signing key that we have in the device list and + * see if we can get the private key. If so, mark it as trusted. + * @param opts - ICheckOwnCrossSigningTrustOpts object + * + * @deprecated Unneeded for the new crypto + */ + checkOwnCrossSigningTrust(opts) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.checkOwnCrossSigningTrust(opts); + } + + /** + * Checks that a given cross-signing private key matches a given public key. + * This can be used by the getCrossSigningKey callback to verify that the + * private key it is about to supply is the one that was requested. + * @param privateKey - The private key + * @param expectedPublicKey - The public key + * @returns true if the key matches, otherwise false + */ + checkCrossSigningPrivateKey(privateKey, expectedPublicKey) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.checkCrossSigningPrivateKey(privateKey, expectedPublicKey); + } + + // deprecated: use requestVerification instead + legacyDeviceVerification(userId, deviceId, method) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.legacyDeviceVerification(userId, deviceId, method); + } + + /** + * Perform any background tasks that can be done before a message is ready to + * send, in order to speed up sending of the message. + * @param room - the room the event is in + * + * @deprecated Prefer {@link CryptoApi.prepareToEncrypt | `CryptoApi.prepareToEncrypt`}: + * + * ```javascript + * client.getCrypto().prepareToEncrypt(room); + * ``` + */ + prepareToEncrypt(room) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + this.cryptoBackend.prepareToEncrypt(room); + } + + /** + * Checks if the user has previously published cross-signing keys + * + * This means downloading the devicelist for the user and checking if the list includes + * the cross-signing pseudo-device. + * + * @deprecated Prefer {@link CryptoApi.userHasCrossSigningKeys | `CryptoApi.userHasCrossSigningKeys`}: + * + * ```javascript + * result = client.getCrypto().userHasCrossSigningKeys(); + * ``` + */ + userHasCrossSigningKeys() { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.userHasCrossSigningKeys(); + } + + /** + * Checks whether cross signing: + * - is enabled on this account and trusted by this device + * - has private keys either cached locally or stored in secret storage + * + * If this function returns false, bootstrapCrossSigning() can be used + * to fix things such that it returns true. That is to say, after + * bootstrapCrossSigning() completes successfully, this function should + * return true. + * @returns True if cross-signing is ready to be used on this device + * @deprecated Prefer {@link CryptoApi.isCrossSigningReady | `CryptoApi.isCrossSigningReady`}: + */ + isCrossSigningReady() { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.isCrossSigningReady(); + } + + /** + * Bootstrap cross-signing by creating keys if needed. If everything is already + * set up, then no changes are made, so this is safe to run to ensure + * cross-signing is ready for use. + * + * This function: + * - creates new cross-signing keys if they are not found locally cached nor in + * secret storage (if it has been set up) + * + * @deprecated Prefer {@link CryptoApi.bootstrapCrossSigning | `CryptoApi.bootstrapCrossSigning`}. + */ + bootstrapCrossSigning(opts) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.bootstrapCrossSigning(opts); + } + + /** + * Whether to trust a others users signatures of their devices. + * If false, devices will only be considered 'verified' if we have + * verified that device individually (effectively disabling cross-signing). + * + * Default: true + * + * @returns True if trusting cross-signed devices + * + * @deprecated Prefer {@link CryptoApi.getTrustCrossSignedDevices | `CryptoApi.getTrustCrossSignedDevices`}. + */ + getCryptoTrustCrossSignedDevices() { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.getTrustCrossSignedDevices(); + } + + /** + * See getCryptoTrustCrossSignedDevices + * + * @param val - True to trust cross-signed devices + * + * @deprecated Prefer {@link CryptoApi.setTrustCrossSignedDevices | `CryptoApi.setTrustCrossSignedDevices`}. + */ + setCryptoTrustCrossSignedDevices(val) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + this.cryptoBackend.setTrustCrossSignedDevices(val); + } + + /** + * Counts the number of end to end session keys that are waiting to be backed up + * @returns Promise which resolves to the number of sessions requiring backup + */ + countSessionsNeedingBackup() { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.countSessionsNeedingBackup(); + } + + /** + * Get information about the encryption of an event + * + * @param event - event to be checked + * @returns The event information. + * @deprecated Prefer {@link CryptoApi.getEncryptionInfoForEvent | `CryptoApi.getEncryptionInfoForEvent`}. + */ + getEventEncryptionInfo(event) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.getEventEncryptionInfo(event); + } + + /** + * Create a recovery key from a user-supplied passphrase. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param password - Passphrase string that can be entered by the user + * when restoring the backup as an alternative to entering the recovery key. + * Optional. + * @returns Object with public key metadata, encoded private + * recovery key which should be disposed of after displaying to the user, + * and raw private key to avoid round tripping if needed. + * + * @deprecated Prefer {@link CryptoApi.createRecoveryKeyFromPassphrase | `CryptoApi.createRecoveryKeyFromPassphrase`}. + */ + createRecoveryKeyFromPassphrase(password) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.createRecoveryKeyFromPassphrase(password); + } + + /** + * Checks whether secret storage: + * - is enabled on this account + * - is storing cross-signing private keys + * - is storing session backup key (if enabled) + * + * If this function returns false, bootstrapSecretStorage() can be used + * to fix things such that it returns true. That is to say, after + * bootstrapSecretStorage() completes successfully, this function should + * return true. + * + * @returns True if secret storage is ready to be used on this device + * @deprecated Prefer {@link CryptoApi.isSecretStorageReady | `CryptoApi.isSecretStorageReady`}. + */ + isSecretStorageReady() { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.isSecretStorageReady(); + } + + /** + * Bootstrap Secure Secret Storage if needed by creating a default key. If everything is + * already set up, then no changes are made, so this is safe to run to ensure secret + * storage is ready for use. + * + * This function + * - creates a new Secure Secret Storage key if no default key exists + * - if a key backup exists, it is migrated to store the key in the Secret + * Storage + * - creates a backup if none exists, and one is requested + * - migrates Secure Secret Storage to use the latest algorithm, if an outdated + * algorithm is found + * + * @deprecated Use {@link CryptoApi.bootstrapSecretStorage | `CryptoApi.bootstrapSecretStorage`}. + */ + bootstrapSecretStorage(opts) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.bootstrapSecretStorage(opts); + } + + /** + * Add a key for encrypting secrets. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param algorithm - the algorithm used by the key + * @param opts - the options for the algorithm. The properties used + * depend on the algorithm given. + * @param keyName - the name of the key. If not given, a random name will be generated. + * + * @returns An object with: + * keyId: the ID of the key + * keyInfo: details about the key (iv, mac, passphrase) + * + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#addKey}. + */ + addSecretStorageKey(algorithm, opts, keyName) { + return this.secretStorage.addKey(algorithm, opts, keyName); + } + + /** + * Check whether we have a key with a given ID. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param keyId - The ID of the key to check + * for. Defaults to the default key ID if not provided. + * @returns Whether we have the key. + * + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#hasKey}. + */ + hasSecretStorageKey(keyId) { + return this.secretStorage.hasKey(keyId); + } + + /** + * Store an encrypted secret on the server. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param name - The name of the secret + * @param secret - The secret contents. + * @param keys - The IDs of the keys to use to encrypt the secret or null/undefined + * to use the default (will throw if no default key is set). + * + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#store}. + */ + storeSecret(name, secret, keys) { + return this.secretStorage.store(name, secret, keys); + } + + /** + * Get a secret from storage. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param name - the name of the secret + * + * @returns the contents of the secret + * + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#get}. + */ + getSecret(name) { + return this.secretStorage.get(name); + } + + /** + * Check if a secret is stored on the server. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param name - the name of the secret + * @returns map of key name to key info the secret is encrypted + * with, or null if it is not present or not encrypted with a trusted + * key + * + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#isStored}. + */ + isSecretStored(name) { + return this.secretStorage.isStored(name); + } + + /** + * Request a secret from another device. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param name - the name of the secret to request + * @param devices - the devices to request the secret from + * + * @returns the secret request object + */ + requestSecret(name, devices) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.requestSecret(name, devices); + } + + /** + * Get the current default key ID for encrypting secrets. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @returns The default key ID or null if no default key ID is set + * + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#getDefaultKeyId}. + */ + getDefaultSecretStorageKeyId() { + return this.secretStorage.getDefaultKeyId(); + } + + /** + * Set the current default key ID for encrypting secrets. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param keyId - The new default key ID + * + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#setDefaultKeyId}. + */ + setDefaultSecretStorageKeyId(keyId) { + return this.secretStorage.setDefaultKeyId(keyId); + } + + /** + * Checks that a given secret storage private key matches a given public key. + * This can be used by the getSecretStorageKey callback to verify that the + * private key it is about to supply is the one that was requested. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @param privateKey - The private key + * @param expectedPublicKey - The public key + * @returns true if the key matches, otherwise false + * + * @deprecated The use of asymmetric keys for SSSS is deprecated. + * Use {@link SecretStorage.ServerSideSecretStorage#checkKey} for symmetric keys. + */ + checkSecretStoragePrivateKey(privateKey, expectedPublicKey) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.checkSecretStoragePrivateKey(privateKey, expectedPublicKey); + } + + /** + * Get e2e information on the device that sent an event + * + * @param event - event to be checked + */ + async getEventSenderDeviceInfo(event) { + if (!this.crypto) { + return null; + } + return this.crypto.getEventSenderDeviceInfo(event); + } + + /** + * Check if the sender of an event is verified + * + * @param event - event to be checked + * + * @returns true if the sender of this event has been verified using + * {@link MatrixClient#setDeviceVerified}. + */ + async isEventSenderVerified(event) { + const device = await this.getEventSenderDeviceInfo(event); + if (!device) { + return false; + } + return device.isVerified(); + } + + /** + * Get outgoing room key request for this event if there is one. + * @param event - The event to check for + * + * @returns A room key request, or null if there is none + */ + getOutgoingRoomKeyRequest(event) { + if (!this.crypto) { + throw new Error("End-to-End encryption disabled"); + } + const wireContent = event.getWireContent(); + const requestBody = { + session_id: wireContent.session_id, + sender_key: wireContent.sender_key, + algorithm: wireContent.algorithm, + room_id: event.getRoomId() + }; + if (!requestBody.session_id || !requestBody.sender_key || !requestBody.algorithm || !requestBody.room_id) { + return Promise.resolve(null); + } + return this.crypto.cryptoStore.getOutgoingRoomKeyRequest(requestBody); + } + + /** + * Cancel a room key request for this event if one is ongoing and resend the + * request. + * @param event - event of which to cancel and resend the room + * key request. + * @returns A promise that will resolve when the key request is queued + */ + cancelAndResendEventRoomKeyRequest(event) { + if (!this.crypto) { + throw new Error("End-to-End encryption disabled"); + } + return event.cancelAndResendKeyRequest(this.crypto, this.getUserId()); + } + + /** + * Enable end-to-end encryption for a room. This does not modify room state. + * Any messages sent before the returned promise resolves will be sent unencrypted. + * @param roomId - The room ID to enable encryption in. + * @param config - The encryption config for the room. + * @returns A promise that will resolve when encryption is set up. + * + * @deprecated Not supported for Rust Cryptography. To enable encryption in a room, send an `m.room.encryption` + * state event. + */ + setRoomEncryption(roomId, config) { + if (!this.crypto) { + throw new Error("End-to-End encryption disabled"); + } + return this.crypto.setRoomEncryption(roomId, config); + } + + /** + * Whether encryption is enabled for a room. + * @param roomId - the room id to query. + * @returns whether encryption is enabled. + * + * @deprecated Not correctly supported for Rust Cryptography. Use {@link CryptoApi.isEncryptionEnabledInRoom} and/or + * {@link Room.hasEncryptionStateEvent}. + */ + isRoomEncrypted(roomId) { + var _this$crypto$isRoomEn, _this$crypto3; + const room = this.getRoom(roomId); + if (!room) { + // we don't know about this room, so can't determine if it should be + // encrypted. Let's assume not. + return false; + } + + // if there is an 'm.room.encryption' event in this room, it should be + // encrypted (independently of whether we actually support encryption) + if (room.hasEncryptionStateEvent()) { + return true; + } + + // we don't have an m.room.encrypted event, but that might be because + // the server is hiding it from us. Check the store to see if it was + // previously encrypted. + return (_this$crypto$isRoomEn = (_this$crypto3 = this.crypto) === null || _this$crypto3 === void 0 ? void 0 : _this$crypto3.isRoomEncrypted(roomId)) !== null && _this$crypto$isRoomEn !== void 0 ? _this$crypto$isRoomEn : false; + } + + /** + * Encrypts and sends a given object via Olm to-device messages to a given + * set of devices. + * + * @param userDeviceInfoArr - list of deviceInfo objects representing the devices to send to + * + * @param payload - fields to include in the encrypted payload + * + * @returns Promise which + * resolves once the message has been encrypted and sent to the given + * userDeviceMap, and returns the `{ contentMap, deviceInfoByDeviceId }` + * of the successfully sent messages. + */ + encryptAndSendToDevices(userDeviceInfoArr, payload) { + if (!this.crypto) { + throw new Error("End-to-End encryption disabled"); + } + return this.crypto.encryptAndSendToDevices(userDeviceInfoArr, payload); + } + + /** + * Forces the current outbound group session to be discarded such + * that another one will be created next time an event is sent. + * + * @param roomId - The ID of the room to discard the session for + * + * @deprecated Prefer {@link CryptoApi.forceDiscardSession | `CryptoApi.forceDiscardSession`}: + * + */ + forceDiscardSession(roomId) { + if (!this.cryptoBackend) { + throw new Error("End-to-End encryption disabled"); + } + this.cryptoBackend.forceDiscardSession(roomId); + } + + /** + * Get a list containing all of the room keys + * + * This should be encrypted before returning it to the user. + * + * @returns a promise which resolves to a list of session export objects + * + * @deprecated Prefer {@link CryptoApi.exportRoomKeys | `CryptoApi.exportRoomKeys`}: + * + * ```javascript + * sessionData = await client.getCrypto().exportRoomKeys(); + * ``` + */ + exportRoomKeys() { + if (!this.cryptoBackend) { + return Promise.reject(new Error("End-to-end encryption disabled")); + } + return this.cryptoBackend.exportRoomKeys(); + } + + /** + * Import a list of room keys previously exported by exportRoomKeys + * + * @param keys - a list of session export objects + * @param opts - options object + * + * @returns a promise which resolves when the keys have been imported + * + * @deprecated Prefer {@link CryptoApi.importRoomKeys | `CryptoApi.importRoomKeys`}: + * ```javascript + * await client.getCrypto()?.importRoomKeys([..]); + * ``` + */ + importRoomKeys(keys, opts) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + return this.cryptoBackend.importRoomKeys(keys, opts); + } + + /** + * Force a re-check of the local key backup status against + * what's on the server. + * + * @returns Object with backup info (as returned by + * getKeyBackupVersion) in backupInfo and + * trust information (as returned by isKeyBackupTrusted) + * in trustInfo. + * + * @deprecated Prefer {@link CryptoApi.checkKeyBackupAndEnable}. + */ + checkKeyBackup() { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.backupManager.checkKeyBackup(); + } + + /** + * Get information about the current key backup from the server. + * + * Performs some basic validity checks on the shape of the result, and raises an error if it is not as expected. + * + * **Note**: there is no (supported) way to distinguish between "failure to talk to the server" and "another client + * uploaded a key backup version using an algorithm I don't understand. + * + * @returns Information object from API, or null if no backup is present on the server. + */ + async getKeyBackupVersion() { + let res; + try { + res = await this.http.authedRequest(_httpApi.Method.Get, "/room_keys/version", undefined, undefined, { + prefix: _httpApi.ClientPrefix.V3 + }); + } catch (e) { + if (e.errcode === "M_NOT_FOUND") { + return null; + } else { + throw e; + } + } + _backup.BackupManager.checkBackupVersion(res); + return res; + } + + /** + * @param info - key backup info dict from getKeyBackupVersion() + * + * @deprecated Prefer {@link CryptoApi.isKeyBackupTrusted | `CryptoApi.isKeyBackupTrusted`}. + */ + isKeyBackupTrusted(info) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.backupManager.isKeyBackupTrusted(info); + } + + /** + * @returns true if the client is configured to back up keys to + * the server, otherwise false. If we haven't completed a successful check + * of key backup status yet, returns null. + * + * @deprecated Prefer direct access to {@link CryptoApi.getActiveSessionBackupVersion}: + * + * ```javascript + * let enabled = (await client.getCrypto().getActiveSessionBackupVersion()) !== null; + * ``` + */ + getKeyBackupEnabled() { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.backupManager.getKeyBackupEnabled(); + } + + /** + * Enable backing up of keys, using data previously returned from + * getKeyBackupVersion. + * + * @param info - Backup information object as returned by getKeyBackupVersion + * @returns Promise which resolves when complete. + * + * @deprecated Do not call this directly. Instead call {@link CryptoApi.checkKeyBackupAndEnable}. + */ + enableKeyBackup(info) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.backupManager.enableKeyBackup(info); + } + + /** + * Disable backing up of keys. + * + * @deprecated It should be unnecessary to disable key backup. + */ + disableKeyBackup() { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + this.crypto.backupManager.disableKeyBackup(); + } + + /** + * Set up the data required to create a new backup version. The backup version + * will not be created and enabled until createKeyBackupVersion is called. + * + * @param password - Passphrase string that can be entered by the user + * when restoring the backup as an alternative to entering the recovery key. + * Optional. + * + * @returns Object that can be passed to createKeyBackupVersion and + * additionally has a 'recovery_key' member with the user-facing recovery key string. + * + * @deprecated Use {@link Crypto.CryptoApi.resetKeyBackup | `CryptoApi.resetKeyBackup`}. + */ + async prepareKeyBackupVersion(password, opts = { + secureSecretStorage: false + }) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + + // eslint-disable-next-line camelcase + const { + algorithm, + auth_data, + recovery_key, + privateKey + } = await this.crypto.backupManager.prepareKeyBackupVersion(password); + if (opts.secureSecretStorage) { + await this.secretStorage.store("m.megolm_backup.v1", (0, _base.encodeBase64)(privateKey)); + this.logger.info("Key backup private key stored in secret storage"); + } + return { + algorithm, + /* eslint-disable camelcase */ + auth_data, + recovery_key + /* eslint-enable camelcase */ + }; + } + + /** + * Check whether the key backup private key is stored in secret storage. + * @returns map of key name to key info the secret is + * encrypted with, or null if it is not present or not encrypted with a + * trusted key + */ + isKeyBackupKeyStored() { + return Promise.resolve(this.secretStorage.isStored("m.megolm_backup.v1")); + } + + /** + * Create a new key backup version and enable it, using the information return + * from prepareKeyBackupVersion. + * + * @param info - Info object from prepareKeyBackupVersion + * @returns Object with 'version' param indicating the version created + * + * @deprecated Use {@link Crypto.CryptoApi.resetKeyBackup | `CryptoApi.resetKeyBackup`}. + */ + async createKeyBackupVersion(info) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + await this.crypto.backupManager.createKeyBackupVersion(info); + const data = { + algorithm: info.algorithm, + auth_data: info.auth_data + }; + + // Sign the backup auth data with the device key for backwards compat with + // older devices with cross-signing. This can probably go away very soon in + // favour of just signing with the cross-singing master key. + // XXX: Private member access + await this.crypto.signObject(data.auth_data); + if (this.cryptoCallbacks.getCrossSigningKey && + // XXX: Private member access + this.crypto.crossSigningInfo.getId()) { + // now also sign the auth data with the cross-signing master key + // we check for the callback explicitly here because we still want to be able + // to create an un-cross-signed key backup if there is a cross-signing key but + // no callback supplied. + // XXX: Private member access + await this.crypto.crossSigningInfo.signObject(data.auth_data, "master"); + } + const res = await this.http.authedRequest(_httpApi.Method.Post, "/room_keys/version", undefined, data); + + // We could assume everything's okay and enable directly, but this ensures + // we run the same signature verification that will be used for future + // sessions. + await this.checkKeyBackup(); + if (!this.getKeyBackupEnabled()) { + this.logger.error("Key backup not usable even though we just created it"); + } + return res; + } + + /** + * @deprecated Use {@link Crypto.CryptoApi.deleteKeyBackupVersion | `CryptoApi.deleteKeyBackupVersion`}. + */ + async deleteKeyBackupVersion(version) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + await this.cryptoBackend.deleteKeyBackupVersion(version); + } + makeKeyBackupPath(roomId, sessionId, version) { + let path; + if (sessionId !== undefined) { + path = utils.encodeUri("/room_keys/keys/$roomId/$sessionId", { + $roomId: roomId, + $sessionId: sessionId + }); + } else if (roomId !== undefined) { + path = utils.encodeUri("/room_keys/keys/$roomId", { + $roomId: roomId + }); + } else { + path = "/room_keys/keys"; + } + const queryData = version === undefined ? undefined : { + version + }; + return { + path, + queryData + }; + } + + /** + * Back up session keys to the homeserver. + * @param roomId - ID of the room that the keys are for Optional. + * @param sessionId - ID of the session that the keys are for Optional. + * @param version - backup version Optional. + * @param data - Object keys to send + * @returns a promise that will resolve when the keys + * are uploaded + */ + + async sendKeyBackup(roomId, sessionId, version, data) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + const path = this.makeKeyBackupPath(roomId, sessionId, version); + await this.http.authedRequest(_httpApi.Method.Put, path.path, path.queryData, data, { + prefix: _httpApi.ClientPrefix.V3 + }); + } + + /** + * Marks all group sessions as needing to be backed up and schedules them to + * upload in the background as soon as possible. + * + * (This is done automatically as part of {@link CryptoApi.resetKeyBackup}, + * so there is probably no need to call this manually.) + */ + async scheduleAllGroupSessionsForBackup() { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + await this.crypto.backupManager.scheduleAllGroupSessionsForBackup(); + } + + /** + * Marks all group sessions as needing to be backed up without scheduling + * them to upload in the background. + * + * (This is done automatically as part of {@link CryptoApi.resetKeyBackup}, + * so there is probably no need to call this manually.) + * + * @returns Promise which resolves to the number of sessions requiring a backup. + */ + flagAllGroupSessionsForBackup() { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + return this.crypto.backupManager.flagAllGroupSessionsForBackup(); + } + isValidRecoveryKey(recoveryKey) { + try { + (0, _recoverykey.decodeRecoveryKey)(recoveryKey); + return true; + } catch (e) { + return false; + } + } + + /** + * Get the raw key for a key backup from the password + * Used when migrating key backups into SSSS + * + * The cross-signing API is currently UNSTABLE and may change without notice. + * + * @param password - Passphrase + * @param backupInfo - Backup metadata from `checkKeyBackup` + * @returns key backup key + */ + keyBackupKeyFromPassword(password, backupInfo) { + return (0, _key_passphrase.keyFromAuthData)(backupInfo.auth_data, password); + } + + /** + * Get the raw key for a key backup from the recovery key + * Used when migrating key backups into SSSS + * + * The cross-signing API is currently UNSTABLE and may change without notice. + * + * @param recoveryKey - The recovery key + * @returns key backup key + */ + keyBackupKeyFromRecoveryKey(recoveryKey) { + return (0, _recoverykey.decodeRecoveryKey)(recoveryKey); + } + + /** + * Restore from an existing key backup via a passphrase. + * + * @param password - Passphrase + * @param targetRoomId - Room ID to target a specific room. + * Restores all rooms if omitted. + * @param targetSessionId - Session ID to target a specific session. + * Restores all sessions if omitted. + * @param backupInfo - Backup metadata from `getKeyBackupVersion` or `checkKeyBackup`.`backupInfo` + * @param opts - Optional params such as callbacks + * @returns Status of restoration with `total` and `imported` + * key counts. + */ + + async restoreKeyBackupWithPassword(password, targetRoomId, targetSessionId, backupInfo, opts) { + const privKey = await (0, _key_passphrase.keyFromAuthData)(backupInfo.auth_data, password); + return this.restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts); + } + + /** + * Restore from an existing key backup via a private key stored in secret + * storage. + * + * @param backupInfo - Backup metadata from `checkKeyBackup` + * @param targetRoomId - Room ID to target a specific room. + * Restores all rooms if omitted. + * @param targetSessionId - Session ID to target a specific session. + * Restores all sessions if omitted. + * @param opts - Optional params such as callbacks + * @returns Status of restoration with `total` and `imported` + * key counts. + */ + async restoreKeyBackupWithSecretStorage(backupInfo, targetRoomId, targetSessionId, opts) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + const storedKey = await this.secretStorage.get("m.megolm_backup.v1"); + + // ensure that the key is in the right format. If not, fix the key and + // store the fixed version + const fixedKey = (0, _crypto.fixBackupKey)(storedKey); + if (fixedKey) { + const keys = await this.secretStorage.getKey(); + await this.secretStorage.store("m.megolm_backup.v1", fixedKey, [keys[0]]); + } + const privKey = (0, _base.decodeBase64)(fixedKey || storedKey); + return this.restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts); + } + + /** + * Restore from an existing key backup via an encoded recovery key. + * + * @param recoveryKey - Encoded recovery key + * @param targetRoomId - Room ID to target a specific room. + * Restores all rooms if omitted. + * @param targetSessionId - Session ID to target a specific session. + * Restores all sessions if omitted. + * @param backupInfo - Backup metadata from `checkKeyBackup` + * @param opts - Optional params such as callbacks + * @returns Status of restoration with `total` and `imported` + * key counts. + */ + + restoreKeyBackupWithRecoveryKey(recoveryKey, targetRoomId, targetSessionId, backupInfo, opts) { + const privKey = (0, _recoverykey.decodeRecoveryKey)(recoveryKey); + return this.restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts); + } + async restoreKeyBackupWithCache(targetRoomId, targetSessionId, backupInfo, opts) { + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + const privKey = await this.cryptoBackend.getSessionBackupPrivateKey(); + if (!privKey) { + throw new Error("Couldn't get key"); + } + return this.restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts); + } + async restoreKeyBackup(privKey, targetRoomId, targetSessionId, backupInfo, opts) { + const cacheCompleteCallback = opts === null || opts === void 0 ? void 0 : opts.cacheCompleteCallback; + const progressCallback = opts === null || opts === void 0 ? void 0 : opts.progressCallback; + if (!this.cryptoBackend) { + throw new Error("End-to-end encryption disabled"); + } + if (!backupInfo.version) { + throw new Error("Backup version must be defined"); + } + let totalKeyCount = 0; + let totalFailures = 0; + let totalImported = 0; + const path = this.makeKeyBackupPath(targetRoomId, targetSessionId, backupInfo.version); + const backupDecryptor = await this.cryptoBackend.getBackupDecryptor(backupInfo, privKey); + const untrusted = !backupDecryptor.sourceTrusted; + try { + if (!(privKey instanceof Uint8Array)) { + // eslint-disable-next-line @typescript-eslint/no-base-to-string + throw new Error(`restoreKeyBackup expects Uint8Array, got ${privKey}`); + } + // Cache the key, if possible. + // This is async. + this.cryptoBackend.storeSessionBackupPrivateKey(privKey, backupInfo.version).catch(e => { + this.logger.warn("Error caching session backup key:", e); + }).then(cacheCompleteCallback); + if (progressCallback) { + progressCallback({ + stage: "fetch" + }); + } + const res = await this.http.authedRequest(_httpApi.Method.Get, path.path, path.queryData, undefined, { + prefix: _httpApi.ClientPrefix.V3 + }); + + // We have finished fetching the backup, go to next step + if (progressCallback) { + progressCallback({ + stage: "load_keys" + }); + } + if (res.rooms) { + // We have a full backup here, it can get quite big, so we need to decrypt and import it in chunks. + + // Get the total count as a first pass + totalKeyCount = this.getTotalKeyCount(res); + // Now decrypt and import the keys in chunks + await this.handleDecryptionOfAFullBackup(res, backupDecryptor, 200, async chunk => { + // We have a chunk of decrypted keys: import them + try { + await this.cryptoBackend.importBackedUpRoomKeys(chunk, { + untrusted + }); + totalImported += chunk.length; + } catch (e) { + totalFailures += chunk.length; + // We failed to import some keys, but we should still try to import the rest? + // Log the error and continue + _logger.logger.error("Error importing keys from backup", e); + } + if (progressCallback) { + progressCallback({ + total: totalKeyCount, + successes: totalImported, + stage: "load_keys", + failures: totalFailures + }); + } + }); + } else if (res.sessions) { + // For now we don't chunk for a single room backup, but we could in the future. + // Currently it is not used by the application. + const sessions = res.sessions; + totalKeyCount = Object.keys(sessions).length; + const keys = await backupDecryptor.decryptSessions(sessions); + for (const k of keys) { + k.room_id = targetRoomId; + } + await this.cryptoBackend.importBackedUpRoomKeys(keys, { + progressCallback, + untrusted + }); + totalImported = keys.length; + } else { + totalKeyCount = 1; + try { + const [key] = await backupDecryptor.decryptSessions({ + [targetSessionId]: res + }); + key.room_id = targetRoomId; + key.session_id = targetSessionId; + await this.cryptoBackend.importBackedUpRoomKeys([key], { + progressCallback, + untrusted + }); + totalImported = 1; + } catch (e) { + this.logger.debug("Failed to decrypt megolm session from backup", e); + } + } + } finally { + backupDecryptor.free(); + } + + /// in case entering the passphrase would add a new signature? + await this.cryptoBackend.checkKeyBackupAndEnable(); + return { + total: totalKeyCount, + imported: totalImported + }; + } + + /** + * This method calculates the total number of keys present in the response of a `/room_keys/keys` call. + * + * @param res - The response from the server containing the keys to be counted. + * + * @returns The total number of keys in the backup. + */ + getTotalKeyCount(res) { + const rooms = res.rooms; + let totalKeyCount = 0; + for (const roomData of Object.values(rooms)) { + if (!roomData.sessions) continue; + totalKeyCount += Object.keys(roomData.sessions).length; + } + return totalKeyCount; + } + + /** + * This method handles the decryption of a full backup, i.e a call to `/room_keys/keys`. + * It will decrypt the keys in chunks and call the `block` callback for each chunk. + * + * @param res - The response from the server containing the keys to be decrypted. + * @param backupDecryptor - An instance of the BackupDecryptor class used to decrypt the keys. + * @param chunkSize - The size of the chunks to be processed at a time. + * @param block - A callback function that is called for each chunk of keys. + * + * @returns A promise that resolves when the decryption is complete. + */ + async handleDecryptionOfAFullBackup(res, backupDecryptor, chunkSize, block) { + const rooms = res.rooms; + let groupChunkCount = 0; + let chunkGroupByRoom = new Map(); + const handleChunkCallback = async roomChunks => { + const currentChunk = []; + for (const roomId of roomChunks.keys()) { + const decryptedSessions = await backupDecryptor.decryptSessions(roomChunks.get(roomId)); + for (const sessionId in decryptedSessions) { + const k = decryptedSessions[sessionId]; + k.room_id = roomId; + currentChunk.push(k); + } + } + await block(currentChunk); + }; + for (const [roomId, roomData] of Object.entries(rooms)) { + if (!roomData.sessions) continue; + chunkGroupByRoom.set(roomId, {}); + for (const [sessionId, session] of Object.entries(roomData.sessions)) { + const sessionsForRoom = chunkGroupByRoom.get(roomId); + sessionsForRoom[sessionId] = session; + groupChunkCount += 1; + if (groupChunkCount >= chunkSize) { + // We have enough chunks to decrypt + await handleChunkCallback(chunkGroupByRoom); + chunkGroupByRoom = new Map(); + // There might be remaining keys for that room, so add back an entry for the current room. + chunkGroupByRoom.set(roomId, {}); + groupChunkCount = 0; + } + } + } + + // Handle remaining chunk if needed + if (groupChunkCount > 0) { + await handleChunkCallback(chunkGroupByRoom); + } + } + async deleteKeysFromBackup(roomId, sessionId, version) { + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + const path = this.makeKeyBackupPath(roomId, sessionId, version); + await this.http.authedRequest(_httpApi.Method.Delete, path.path, path.queryData, undefined, { + prefix: _httpApi.ClientPrefix.V3 + }); + } + + /** + * Share shared-history decryption keys with the given users. + * + * @param roomId - the room for which keys should be shared. + * @param userIds - a list of users to share with. The keys will be sent to + * all of the user's current devices. + */ + async sendSharedHistoryKeys(roomId, userIds) { + var _this$crypto4; + if (!this.crypto) { + throw new Error("End-to-end encryption disabled"); + } + const roomEncryption = (_this$crypto4 = this.crypto) === null || _this$crypto4 === void 0 ? void 0 : _this$crypto4.getRoomEncryption(roomId); + if (!roomEncryption) { + // unknown room, or unencrypted room + this.logger.error("Unknown room. Not sharing decryption keys"); + return; + } + const deviceInfos = await this.crypto.downloadKeys(userIds); + const devicesByUser = new Map(); + for (const [userId, devices] of deviceInfos) { + devicesByUser.set(userId, Array.from(devices.values())); + } + + // XXX: Private member access + const alg = this.crypto.getRoomDecryptor(roomId, roomEncryption.algorithm); + if (alg.sendSharedHistoryInboundSessions) { + await alg.sendSharedHistoryInboundSessions(devicesByUser); + } else { + this.logger.warn("Algorithm does not support sharing previous keys", roomEncryption.algorithm); + } + } + + /** + * Get the config for the media repository. + * @returns Promise which resolves with an object containing the config. + */ + getMediaConfig() { + return this.http.authedRequest(_httpApi.Method.Get, "/config", undefined, undefined, { + prefix: _httpApi.MediaPrefix.V3 + }); + } + + /** + * Get the room for the given room ID. + * This function will return a valid room for any room for which a Room event + * has been emitted. Note in particular that other events, eg. RoomState.members + * will be emitted for a room before this function will return the given room. + * @param roomId - The room ID + * @returns The Room or null if it doesn't exist or there is no data store. + */ + getRoom(roomId) { + if (!roomId) { + return null; + } + return this.store.getRoom(roomId); + } + + /** + * Retrieve all known rooms. + * @returns A list of rooms, or an empty list if there is no data store. + */ + getRooms() { + return this.store.getRooms(); + } + + /** + * Retrieve all rooms that should be displayed to the user + * This is essentially getRooms() with some rooms filtered out, eg. old versions + * of rooms that have been replaced or (in future) other rooms that have been + * marked at the protocol level as not to be displayed to the user. + * + * @param msc3946ProcessDynamicPredecessor - if true, look for an + * m.room.predecessor state event and + * use it if found (MSC3946). + * @returns A list of rooms, or an empty list if there is no data store. + */ + getVisibleRooms(msc3946ProcessDynamicPredecessor = false) { + const allRooms = this.store.getRooms(); + const replacedRooms = new Set(); + for (const r of allRooms) { + var _r$findPredecessor; + const predecessor = (_r$findPredecessor = r.findPredecessor(msc3946ProcessDynamicPredecessor)) === null || _r$findPredecessor === void 0 ? void 0 : _r$findPredecessor.roomId; + if (predecessor) { + replacedRooms.add(predecessor); + } + } + return allRooms.filter(r => { + const tombstone = r.currentState.getStateEvents(_event2.EventType.RoomTombstone, ""); + if (tombstone && replacedRooms.has(r.roomId)) { + return false; + } + return true; + }); + } + + /** + * Retrieve a user. + * @param userId - The user ID to retrieve. + * @returns A user or null if there is no data store or the user does + * not exist. + */ + getUser(userId) { + return this.store.getUser(userId); + } + + /** + * Retrieve all known users. + * @returns A list of users, or an empty list if there is no data store. + */ + getUsers() { + return this.store.getUsers(); + } + + /** + * Set account data event for the current user. + * It will retry the request up to 5 times. + * @param eventType - The event type + * @param content - the contents object for the event + * @returns Promise which resolves: an empty object + * @returns Rejects: with an error response. + */ + setAccountData(eventType, content) { + const path = utils.encodeUri("/user/$userId/account_data/$type", { + $userId: this.credentials.userId, + $type: eventType + }); + return (0, _httpApi.retryNetworkOperation)(5, () => { + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, content); + }); + } + + /** + * Get account data event of given type for the current user. + * @param eventType - The event type + * @returns The contents of the given account data event + */ + getAccountData(eventType) { + return this.store.getAccountData(eventType); + } + + /** + * Get account data event of given type for the current user. This variant + * gets account data directly from the homeserver if the local store is not + * ready, which can be useful very early in startup before the initial sync. + * @param eventType - The event type + * @returns Promise which resolves: The contents of the given account data event. + * @returns Rejects: with an error response. + */ + async getAccountDataFromServer(eventType) { + if (this.isInitialSyncComplete()) { + const event = this.store.getAccountData(eventType); + if (!event) { + return null; + } + // The network version below returns just the content, so this branch + // does the same to match. + return event.getContent(); + } + const path = utils.encodeUri("/user/$userId/account_data/$type", { + $userId: this.credentials.userId, + $type: eventType + }); + try { + return await this.http.authedRequest(_httpApi.Method.Get, path); + } catch (e) { + var _data; + if (((_data = e.data) === null || _data === void 0 ? void 0 : _data.errcode) === "M_NOT_FOUND") { + return null; + } + throw e; + } + } + async deleteAccountData(eventType) { + const msc3391DeleteAccountDataServerSupport = this.canSupport.get(_feature.Feature.AccountDataDeletion); + // if deletion is not supported overwrite with empty content + if (msc3391DeleteAccountDataServerSupport === _feature.ServerSupport.Unsupported) { + await this.setAccountData(eventType, {}); + return; + } + const path = utils.encodeUri("/user/$userId/account_data/$type", { + $userId: this.getSafeUserId(), + $type: eventType + }); + const options = msc3391DeleteAccountDataServerSupport === _feature.ServerSupport.Unstable ? { + prefix: "/_matrix/client/unstable/org.matrix.msc3391" + } : undefined; + return await this.http.authedRequest(_httpApi.Method.Delete, path, undefined, undefined, options); + } + + /** + * Gets the users that are ignored by this client + * @returns The array of users that are ignored (empty if none) + */ + getIgnoredUsers() { + const event = this.getAccountData("m.ignored_user_list"); + if (!event || !event.getContent() || !event.getContent()["ignored_users"]) return []; + return Object.keys(event.getContent()["ignored_users"]); + } + + /** + * Sets the users that the current user should ignore. + * @param userIds - the user IDs to ignore + * @returns Promise which resolves: an empty object + * @returns Rejects: with an error response. + */ + setIgnoredUsers(userIds) { + const content = { + ignored_users: {} + }; + userIds.forEach(u => { + content.ignored_users[u] = {}; + }); + return this.setAccountData("m.ignored_user_list", content); + } + + /** + * Gets whether or not a specific user is being ignored by this client. + * @param userId - the user ID to check + * @returns true if the user is ignored, false otherwise + */ + isUserIgnored(userId) { + return this.getIgnoredUsers().includes(userId); + } + + /** + * Join a room. If you have already joined the room, this will no-op. + * @param roomIdOrAlias - The room ID or room alias to join. + * @param opts - Options when joining the room. + * @returns Promise which resolves: Room object. + * @returns Rejects: with an error response. + */ + async joinRoom(roomIdOrAlias, opts = {}) { + if (opts.syncRoom === undefined) { + opts.syncRoom = true; + } + const room = this.getRoom(roomIdOrAlias); + if (room !== null && room !== void 0 && room.hasMembershipState(this.credentials.userId, _membership.KnownMembership.Join)) return room; + let signPromise = Promise.resolve(); + if (opts.inviteSignUrl) { + const url = new URL(opts.inviteSignUrl); + url.searchParams.set("mxid", this.credentials.userId); + signPromise = this.http.requestOtherUrl(_httpApi.Method.Post, url); + } + const queryString = {}; + if (opts.viaServers) { + queryString["server_name"] = opts.viaServers; + } + const data = {}; + const signedInviteObj = await signPromise; + if (signedInviteObj) { + data.third_party_signed = signedInviteObj; + } + const path = utils.encodeUri("/join/$roomid", { + $roomid: roomIdOrAlias + }); + const res = await this.http.authedRequest(_httpApi.Method.Post, path, queryString, data); + const roomId = res.room_id; + // In case we were originally given an alias, check the room cache again + // with the resolved ID - this method is supposed to no-op if we already + // were in the room, after all. + const resolvedRoom = this.getRoom(roomId); + if (resolvedRoom !== null && resolvedRoom !== void 0 && resolvedRoom.hasMembershipState(this.credentials.userId, _membership.KnownMembership.Join)) return resolvedRoom; + const syncApi = new _sync.SyncApi(this, this.clientOpts, this.buildSyncApiOptions()); + const syncRoom = syncApi.createRoom(roomId); + if (opts.syncRoom) { + // v2 will do this for us + // return syncApi.syncRoom(room); + } + return syncRoom; + } + + /** + * Knock a room. If you have already knocked the room, this will no-op. + * @param roomIdOrAlias - The room ID or room alias to knock. + * @param opts - Options when knocking the room. + * @returns Promise which resolves: `{room_id: {string}}` + * @returns Rejects: with an error response. + */ + knockRoom(roomIdOrAlias, opts = {}) { + const room = this.getRoom(roomIdOrAlias); + if (room !== null && room !== void 0 && room.hasMembershipState(this.credentials.userId, _membership.KnownMembership.Knock)) { + return Promise.resolve({ + room_id: room.roomId + }); + } + const path = utils.encodeUri("/knock/$roomIdOrAlias", { + $roomIdOrAlias: roomIdOrAlias + }); + const queryParams = {}; + if (opts.viaServers) { + queryParams.server_name = opts.viaServers; + } + const body = {}; + if (opts.reason) { + body.reason = opts.reason; + } + return this.http.authedRequest(_httpApi.Method.Post, path, queryParams, body); + } + + /** + * Resend an event. Will also retry any to-device messages waiting to be sent. + * @param event - The event to resend. + * @param room - Optional. The room the event is in. Will update the + * timeline entry if provided. + * @returns Promise which resolves: to an ISendEventResponse object + * @returns Rejects: with an error response. + */ + resendEvent(event, room) { + // also kick the to-device queue to retry + this.toDeviceMessageQueue.sendQueue(); + this.updatePendingEventStatus(room, event, _event.EventStatus.SENDING); + return this.encryptAndSendEvent(room, event); + } + + /** + * Cancel a queued or unsent event. + * + * @param event - Event to cancel + * @throws Error if the event is not in QUEUED, NOT_SENT or ENCRYPTING state + */ + cancelPendingEvent(event) { + if (![_event.EventStatus.QUEUED, _event.EventStatus.NOT_SENT, _event.EventStatus.ENCRYPTING].includes(event.status)) { + throw new Error("cannot cancel an event with status " + event.status); + } + + // If the event is currently being encrypted then remove it from the pending list, to indicate that it should + // not be sent. + if (event.status === _event.EventStatus.ENCRYPTING) { + this.eventsBeingEncrypted.delete(event.getId()); + } else if (this.scheduler && event.status === _event.EventStatus.QUEUED) { + // tell the scheduler to forget about it, if it's queued + this.scheduler.removeEventFromQueue(event); + } + + // then tell the room about the change of state, which will remove it + // from the room's list of pending events. + const room = this.getRoom(event.getRoomId()); + this.updatePendingEventStatus(room, event, _event.EventStatus.CANCELLED); + } + + /** + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + setRoomName(roomId, name) { + return this.sendStateEvent(roomId, _event2.EventType.RoomName, { + name: name + }); + } + + /** + * @param htmlTopic - Optional. + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + setRoomTopic(roomId, topic, htmlTopic) { + const content = ContentHelpers.makeTopicContent(topic, htmlTopic); + return this.sendStateEvent(roomId, _event2.EventType.RoomTopic, content); + } + + /** + * @returns Promise which resolves: to an object keyed by tagId with objects containing a numeric order field. + * @returns Rejects: with an error response. + */ + getRoomTags(roomId) { + const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags", { + $userId: this.credentials.userId, + $roomId: roomId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * @param tagName - name of room tag to be set + * @param metadata - associated with that tag to be stored + * @returns Promise which resolves: to an empty object + * @returns Rejects: with an error response. + */ + setRoomTag(roomId, tagName, metadata = {}) { + const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/$tag", { + $userId: this.credentials.userId, + $roomId: roomId, + $tag: tagName + }); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, metadata); + } + + /** + * @param tagName - name of room tag to be removed + * @returns Promise which resolves: to an empty object + * @returns Rejects: with an error response. + */ + deleteRoomTag(roomId, tagName) { + const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/$tag", { + $userId: this.credentials.userId, + $roomId: roomId, + $tag: tagName + }); + return this.http.authedRequest(_httpApi.Method.Delete, path); + } + + /** + * @param eventType - event type to be set + * @param content - event content + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + setRoomAccountData(roomId, eventType, content) { + const path = utils.encodeUri("/user/$userId/rooms/$roomId/account_data/$type", { + $userId: this.credentials.userId, + $roomId: roomId, + $type: eventType + }); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, content); + } + + /** + * Set a power level to one or multiple users. + * Will apply changes atop of current power level event from local state if running & synced, falling back + * to fetching latest from the `/state/` API. + * @param roomId - the room to update power levels in + * @param userId - the ID of the user or users to update power levels of + * @param powerLevel - the numeric power level to update given users to + * @returns Promise which resolves: to an ISendEventResponse object + * @returns Rejects: with an error response. + */ + async setPowerLevel(roomId, userId, powerLevel) { + var _content; + let content; + if (this.clientRunning && this.isInitialSyncComplete()) { + var _this$getRoom; + content = (_this$getRoom = this.getRoom(roomId)) === null || _this$getRoom === void 0 || (_this$getRoom = _this$getRoom.currentState) === null || _this$getRoom === void 0 || (_this$getRoom = _this$getRoom.getStateEvents(_event2.EventType.RoomPowerLevels, "")) === null || _this$getRoom === void 0 ? void 0 : _this$getRoom.getContent(); + } + if (!content) { + try { + content = await this.getStateEvent(roomId, _event2.EventType.RoomPowerLevels, ""); + } catch (e) { + // It is possible for a Matrix room to not have a power levels event + if (e instanceof _httpApi.MatrixError && e.errcode === "M_NOT_FOUND") { + content = {}; + } else { + throw e; + } + } + } + + // take a copy of the content to ensure we don't corrupt + // existing client state with a failed power level change + content = utils.deepCopy(content); + if (!((_content = content) !== null && _content !== void 0 && _content.users)) { + content.users = {}; + } + const users = Array.isArray(userId) ? userId : [userId]; + for (const user of users) { + if (powerLevel == null) { + delete content.users[user]; + } else { + content.users[user] = powerLevel; + } + } + return this.sendStateEvent(roomId, _event2.EventType.RoomPowerLevels, content, ""); + } + + /** + * Create an m.beacon_info event + * @returns + */ + // eslint-disable-next-line @typescript-eslint/naming-convention + async unstable_createLiveBeacon(roomId, beaconInfoContent) { + return this.unstable_setLiveBeacon(roomId, beaconInfoContent); + } + + /** + * Upsert a live beacon event + * using a specific m.beacon_info.* event variable type + * @param roomId - string + * @returns + */ + // eslint-disable-next-line @typescript-eslint/naming-convention + async unstable_setLiveBeacon(roomId, beaconInfoContent) { + return this.sendStateEvent(roomId, _beacon.M_BEACON_INFO.name, beaconInfoContent, this.getUserId()); + } + sendEvent(roomId, threadIdOrEventType, eventTypeOrContent, contentOrTxnId, txnIdOrVoid) { + var _mRelates_to; + let threadId; + let eventType; + let content; + let txnId; + if (!(threadIdOrEventType !== null && threadIdOrEventType !== void 0 && threadIdOrEventType.startsWith(EVENT_ID_PREFIX)) && threadIdOrEventType !== null) { + txnId = contentOrTxnId; + content = eventTypeOrContent; + eventType = threadIdOrEventType; + threadId = null; + } else { + txnId = txnIdOrVoid; + content = contentOrTxnId; + eventType = eventTypeOrContent; + threadId = threadIdOrEventType; + } + + // If we expect that an event is part of a thread but is missing the relation + // we need to add it manually, as well as the reply fallback + if (threadId && !((_mRelates_to = content["m.relates_to"]) !== null && _mRelates_to !== void 0 && _mRelates_to.rel_type)) { + var _mRelates_to2, _this$getRoom2; + const isReply = !!((_mRelates_to2 = content["m.relates_to"]) !== null && _mRelates_to2 !== void 0 && _mRelates_to2["m.in_reply_to"]); + content["m.relates_to"] = _objectSpread(_objectSpread({}, content["m.relates_to"]), {}, { + rel_type: _thread.THREAD_RELATION_TYPE.name, + event_id: threadId, + // Set is_falling_back to true unless this is actually intended to be a reply + is_falling_back: !isReply + }); + const thread = (_this$getRoom2 = this.getRoom(roomId)) === null || _this$getRoom2 === void 0 ? void 0 : _this$getRoom2.getThread(threadId); + if (thread && !isReply) { + var _thread$lastReply$get, _thread$lastReply; + content["m.relates_to"]["m.in_reply_to"] = { + event_id: (_thread$lastReply$get = (_thread$lastReply = thread.lastReply(ev => { + return ev.isRelation(_thread.THREAD_RELATION_TYPE.name) && !ev.status; + })) === null || _thread$lastReply === void 0 ? void 0 : _thread$lastReply.getId()) !== null && _thread$lastReply$get !== void 0 ? _thread$lastReply$get : threadId + }; + } + } + return this.sendCompleteEvent(roomId, threadId, { + type: eventType, + content + }, txnId); + } + + /** + * @param eventObject - An object with the partial structure of an event, to which event_id, user_id, room_id and origin_server_ts will be added. + * @param txnId - Optional. + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + sendCompleteEvent(roomId, threadId, eventObject, txnId) { + if (!txnId) { + txnId = this.makeTxnId(); + } + + // We always construct a MatrixEvent when sending because the store and scheduler use them. + // We'll extract the params back out if it turns out the client has no scheduler or store. + const localEvent = new _event.MatrixEvent(Object.assign(eventObject, { + event_id: "~" + roomId + ":" + txnId, + user_id: this.credentials.userId, + sender: this.credentials.userId, + room_id: roomId, + origin_server_ts: new Date().getTime() + })); + const room = this.getRoom(roomId); + const thread = threadId ? room === null || room === void 0 ? void 0 : room.getThread(threadId) : undefined; + if (thread) { + localEvent.setThread(thread); + } + + // set up re-emitter for this new event - this is normally the job of EventMapper but we don't use it here + this.reEmitter.reEmit(localEvent, [_event.MatrixEventEvent.Replaced, _event.MatrixEventEvent.VisibilityChange]); + room === null || room === void 0 || room.reEmitter.reEmit(localEvent, [_event.MatrixEventEvent.BeforeRedaction]); + + // if this is a relation or redaction of an event + // that hasn't been sent yet (e.g. with a local id starting with a ~) + // then listen for the remote echo of that event so that by the time + // this event does get sent, we have the correct event_id + const targetId = localEvent.getAssociatedId(); + if (targetId !== null && targetId !== void 0 && targetId.startsWith("~")) { + const target = room === null || room === void 0 ? void 0 : room.getPendingEvents().find(e => e.getId() === targetId); + target === null || target === void 0 || target.once(_event.MatrixEventEvent.LocalEventIdReplaced, () => { + localEvent.updateAssociatedId(target.getId()); + }); + } + const type = localEvent.getType(); + this.logger.debug(`sendEvent of type ${type} in ${roomId} with txnId ${txnId}`); + localEvent.setTxnId(txnId); + localEvent.setStatus(_event.EventStatus.SENDING); + + // add this event immediately to the local store as 'sending'. + room === null || room === void 0 || room.addPendingEvent(localEvent, txnId); + + // addPendingEvent can change the state to NOT_SENT if it believes + // that there's other events that have failed. We won't bother to + // try sending the event if the state has changed as such. + if (localEvent.status === _event.EventStatus.NOT_SENT) { + return Promise.reject(new Error("Event blocked by other events not yet sent")); + } + return this.encryptAndSendEvent(room, localEvent); + } + + /** + * encrypts the event if necessary; adds the event to the queue, or sends it; marks the event as sent/unsent + * @returns returns a promise which resolves with the result of the send request + */ + async encryptAndSendEvent(room, event) { + try { + let cancelled; + this.eventsBeingEncrypted.add(event.getId()); + try { + await this.encryptEventIfNeeded(event, room !== null && room !== void 0 ? room : undefined); + } finally { + cancelled = !this.eventsBeingEncrypted.delete(event.getId()); + } + if (cancelled) { + // cancelled via MatrixClient::cancelPendingEvent + return {}; + } + + // encryptEventIfNeeded may have updated the status from SENDING to ENCRYPTING. If so, we need + // to put it back. + if (event.status === _event.EventStatus.ENCRYPTING) { + this.updatePendingEventStatus(room, event, _event.EventStatus.SENDING); + } + let promise = null; + if (this.scheduler) { + // if this returns a promise then the scheduler has control now and will + // resolve/reject when it is done. Internally, the scheduler will invoke + // processFn which is set to this._sendEventHttpRequest so the same code + // path is executed regardless. + promise = this.scheduler.queueEvent(event); + if (promise && this.scheduler.getQueueForEvent(event).length > 1) { + // event is processed FIFO so if the length is 2 or more we know + // this event is stuck behind an earlier event. + this.updatePendingEventStatus(room, event, _event.EventStatus.QUEUED); + } + } + if (!promise) { + promise = this.sendEventHttpRequest(event); + if (room) { + promise = promise.then(res => { + room.updatePendingEvent(event, _event.EventStatus.SENT, res["event_id"]); + return res; + }); + } + } + return await promise; + } catch (err) { + this.logger.error("Error sending event", err); + try { + // set the error on the event before we update the status: + // updating the status emits the event, so the state should be + // consistent at that point. + event.error = err; + this.updatePendingEventStatus(room, event, _event.EventStatus.NOT_SENT); + } catch (e) { + this.logger.error("Exception in error handler!", e); + } + if (err instanceof _httpApi.MatrixError) { + err.event = event; + } + throw err; + } + } + async encryptEventIfNeeded(event, room) { + // If the room is unknown, we cannot encrypt for it + if (!room) return; + if (!(await this.shouldEncryptEventForRoom(event, room))) return; + if (!this.cryptoBackend && this.usingExternalCrypto) { + // The client has opted to allow sending messages to encrypted + // rooms even if the room is encrypted, and we haven't set up + // crypto. This is useful for users of matrix-org/pantalaimon + return; + } + if (!this.cryptoBackend) { + throw new Error("This room is configured to use encryption, but your client does not support encryption."); + } + this.updatePendingEventStatus(room, event, _event.EventStatus.ENCRYPTING); + await this.cryptoBackend.encryptEvent(event, room); + } + + /** + * Determine whether a given event should be encrypted when we send it to the given room. + * + * This takes into account event type and room configuration. + */ + async shouldEncryptEventForRoom(event, room) { + var _this$cryptoBackend2; + if (event.isEncrypted()) { + // this event has already been encrypted; this happens if the + // encryption step succeeded, but the send step failed on the first + // attempt. + return false; + } + if (event.getType() === _event2.EventType.Reaction) { + // For reactions, there is a very little gained by encrypting the entire + // event, as relation data is already kept in the clear. Event + // encryption for a reaction effectively only obscures the event type, + // but the purpose is still obvious from the relation data, so nothing + // is really gained. It also causes quite a few problems, such as: + // * triggers notifications via default push rules + // * prevents server-side bundling for reactions + // The reaction key / content / emoji value does warrant encrypting, but + // this will be handled separately by encrypting just this value. + // See https://github.com/matrix-org/matrix-doc/pull/1849#pullrequestreview-248763642 + return false; + } + if (event.isRedaction()) { + // Redactions do not support encryption in the spec at this time. + // Whilst it mostly worked in some clients, it wasn't compliant. + return false; + } + + // If the room has an m.room.encryption event, we should encrypt. + if (room.hasEncryptionStateEvent()) return true; + + // If we have a crypto impl, and *it* thinks we should encrypt, then we should. + if (await ((_this$cryptoBackend2 = this.cryptoBackend) === null || _this$cryptoBackend2 === void 0 ? void 0 : _this$cryptoBackend2.isEncryptionEnabledInRoom(room.roomId))) return true; + + // Otherwise, no need to encrypt. + return false; + } + + /** + * Returns the eventType that should be used taking encryption into account + * for a given eventType. + * @param roomId - the room for the events `eventType` relates to + * @param eventType - the event type + * @returns the event type taking encryption into account + */ + getEncryptedIfNeededEventType(roomId, eventType) { + var _this$getRoom3; + if (eventType === _event2.EventType.Reaction) return eventType; + return (_this$getRoom3 = this.getRoom(roomId)) !== null && _this$getRoom3 !== void 0 && _this$getRoom3.hasEncryptionStateEvent() ? _event2.EventType.RoomMessageEncrypted : eventType; + } + updatePendingEventStatus(room, event, newStatus) { + if (room) { + room.updatePendingEvent(event, newStatus); + } else { + event.setStatus(newStatus); + } + } + sendEventHttpRequest(event) { + let txnId = event.getTxnId(); + if (!txnId) { + txnId = this.makeTxnId(); + event.setTxnId(txnId); + } + const pathParams = { + $roomId: event.getRoomId(), + $eventType: event.getWireType(), + $stateKey: event.getStateKey(), + $txnId: txnId + }; + let path; + if (event.isState()) { + let pathTemplate = "/rooms/$roomId/state/$eventType"; + if (event.getStateKey() && event.getStateKey().length > 0) { + pathTemplate = "/rooms/$roomId/state/$eventType/$stateKey"; + } + path = utils.encodeUri(pathTemplate, pathParams); + } else if (event.isRedaction()) { + const pathTemplate = `/rooms/$roomId/redact/$redactsEventId/$txnId`; + path = utils.encodeUri(pathTemplate, _objectSpread({ + $redactsEventId: event.event.redacts + }, pathParams)); + } else { + path = utils.encodeUri("/rooms/$roomId/send/$eventType/$txnId", pathParams); + } + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, event.getWireContent()).then(res => { + this.logger.debug(`Event sent to ${event.getRoomId()} with event id ${res.event_id}`); + return res; + }); + } + + /** + * @param txnId - transaction id. One will be made up if not supplied. + * @param opts - Redact options + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + * @throws Error if called with `with_rel_types` (MSC3912) but the server does not support it. + * Callers should check whether the server supports MSC3912 via `MatrixClient.canSupport`. + */ + + redactEvent(roomId, threadId, eventId, txnId, opts) { + var _eventId, _opts2, _opts3; + if (!((_eventId = eventId) !== null && _eventId !== void 0 && _eventId.startsWith(EVENT_ID_PREFIX))) { + opts = txnId; + txnId = eventId; + eventId = threadId; + threadId = null; + } + const reason = (_opts2 = opts) === null || _opts2 === void 0 ? void 0 : _opts2.reason; + const content = { + reason + }; + if (((_opts3 = opts) === null || _opts3 === void 0 ? void 0 : _opts3.with_rel_types) !== undefined) { + if (this.canSupport.get(_feature.Feature.RelationBasedRedactions) === _feature.ServerSupport.Unsupported) { + throw new Error("Server does not support relation based redactions " + `roomId ${roomId} eventId ${eventId} txnId: ${txnId} threadId ${threadId}`); + } + const withRelTypesPropName = this.canSupport.get(_feature.Feature.RelationBasedRedactions) === _feature.ServerSupport.Stable ? _event2.MSC3912_RELATION_BASED_REDACTIONS_PROP.stable : _event2.MSC3912_RELATION_BASED_REDACTIONS_PROP.unstable; + content[withRelTypesPropName] = opts.with_rel_types; + } + return this.sendCompleteEvent(roomId, threadId, { + type: _event2.EventType.RoomRedaction, + content, + redacts: eventId + }, txnId); + } + + /** + * @param txnId - Optional. + * @returns Promise which resolves: to an ISendEventResponse object + * @returns Rejects: with an error response. + */ + + sendMessage(roomId, threadId, content, txnId) { + if (typeof threadId !== "string" && threadId !== null) { + txnId = content; + content = threadId; + threadId = null; + } + const eventType = _event2.EventType.RoomMessage; + const sendContent = content; + return this.sendEvent(roomId, threadId, eventType, sendContent, txnId); + } + + /** + * @param txnId - Optional. + * @returns + * @returns Rejects: with an error response. + */ + + sendTextMessage(roomId, threadId, body, txnId) { + var _threadId; + if (!((_threadId = threadId) !== null && _threadId !== void 0 && _threadId.startsWith(EVENT_ID_PREFIX)) && threadId !== null) { + txnId = body; + body = threadId; + threadId = null; + } + const content = ContentHelpers.makeTextMessage(body); + return this.sendMessage(roomId, threadId, content, txnId); + } + + /** + * @param txnId - Optional. + * @returns Promise which resolves: to a ISendEventResponse object + * @returns Rejects: with an error response. + */ + + sendNotice(roomId, threadId, body, txnId) { + var _threadId2; + if (!((_threadId2 = threadId) !== null && _threadId2 !== void 0 && _threadId2.startsWith(EVENT_ID_PREFIX)) && threadId !== null) { + txnId = body; + body = threadId; + threadId = null; + } + const content = ContentHelpers.makeNotice(body); + return this.sendMessage(roomId, threadId, content, txnId); + } + + /** + * @param txnId - Optional. + * @returns Promise which resolves: to a ISendEventResponse object + * @returns Rejects: with an error response. + */ + + sendEmoteMessage(roomId, threadId, body, txnId) { + var _threadId3; + if (!((_threadId3 = threadId) !== null && _threadId3 !== void 0 && _threadId3.startsWith(EVENT_ID_PREFIX)) && threadId !== null) { + txnId = body; + body = threadId; + threadId = null; + } + const content = ContentHelpers.makeEmoteMessage(body); + return this.sendMessage(roomId, threadId, content, txnId); + } + + /** + * @returns Promise which resolves: to a ISendEventResponse object + * @returns Rejects: with an error response. + */ + + sendImageMessage(roomId, threadId, url, info, text = "Image") { + var _threadId4; + if (!((_threadId4 = threadId) !== null && _threadId4 !== void 0 && _threadId4.startsWith(EVENT_ID_PREFIX)) && threadId !== null) { + text = info || "Image"; + info = url; + url = threadId; + threadId = null; + } + const content = { + msgtype: _event2.MsgType.Image, + url: url, + info: info, + body: text + }; + return this.sendMessage(roomId, threadId, content); + } + + /** + * @returns Promise which resolves: to a ISendEventResponse object + * @returns Rejects: with an error response. + */ + + sendStickerMessage(roomId, threadId, url, info, text = "Sticker") { + var _threadId5; + if (!((_threadId5 = threadId) !== null && _threadId5 !== void 0 && _threadId5.startsWith(EVENT_ID_PREFIX)) && threadId !== null) { + text = info || "Sticker"; + info = url; + url = threadId; + threadId = null; + } + const content = { + url: url, + info: info, + body: text + }; + return this.sendEvent(roomId, threadId, _event2.EventType.Sticker, content); + } + + /** + * @returns Promise which resolves: to a ISendEventResponse object + * @returns Rejects: with an error response. + */ + + sendHtmlMessage(roomId, threadId, body, htmlBody) { + var _threadId6; + if (!((_threadId6 = threadId) !== null && _threadId6 !== void 0 && _threadId6.startsWith(EVENT_ID_PREFIX)) && threadId !== null) { + htmlBody = body; + body = threadId; + threadId = null; + } + const content = ContentHelpers.makeHtmlMessage(body, htmlBody); + return this.sendMessage(roomId, threadId, content); + } + + /** + * @returns Promise which resolves: to a ISendEventResponse object + * @returns Rejects: with an error response. + */ + + sendHtmlNotice(roomId, threadId, body, htmlBody) { + var _threadId7; + if (!((_threadId7 = threadId) !== null && _threadId7 !== void 0 && _threadId7.startsWith(EVENT_ID_PREFIX)) && threadId !== null) { + htmlBody = body; + body = threadId; + threadId = null; + } + const content = ContentHelpers.makeHtmlNotice(body, htmlBody); + return this.sendMessage(roomId, threadId, content); + } + + /** + * @returns Promise which resolves: to a ISendEventResponse object + * @returns Rejects: with an error response. + */ + + sendHtmlEmote(roomId, threadId, body, htmlBody) { + var _threadId8; + if (!((_threadId8 = threadId) !== null && _threadId8 !== void 0 && _threadId8.startsWith(EVENT_ID_PREFIX)) && threadId !== null) { + htmlBody = body; + body = threadId; + threadId = null; + } + const content = ContentHelpers.makeHtmlEmote(body, htmlBody); + return this.sendMessage(roomId, threadId, content); + } + + /** + * Send a receipt. + * @param event - The event being acknowledged + * @param receiptType - The kind of receipt e.g. "m.read". Other than + * ReceiptType.Read are experimental! + * @param body - Additional content to send alongside the receipt. + * @param unthreaded - An unthreaded receipt will clear room+thread notifications + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + async sendReceipt(event, receiptType, body, unthreaded = false) { + if (this.isGuest()) { + return Promise.resolve({}); // guests cannot send receipts so don't bother. + } + const path = utils.encodeUri("/rooms/$roomId/receipt/$receiptType/$eventId", { + $roomId: event.getRoomId(), + $receiptType: receiptType, + $eventId: event.getId() + }); + + // Unless we're explicitly making an unthreaded receipt or we don't + // support threads, include the `thread_id` property in the body. + const shouldAddThreadId = !unthreaded && this.supportsThreads(); + const fullBody = shouldAddThreadId ? _objectSpread(_objectSpread({}, body), {}, { + thread_id: threadIdForReceipt(event) + }) : body; + const promise = this.http.authedRequest(_httpApi.Method.Post, path, undefined, fullBody || {}); + const room = this.getRoom(event.getRoomId()); + if (room && this.credentials.userId) { + room.addLocalEchoReceipt(this.credentials.userId, event, receiptType, unthreaded); + } + return promise; + } + + /** + * Send a read receipt. + * @param event - The event that has been read. + * @param receiptType - other than ReceiptType.Read are experimental! Optional. + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + async sendReadReceipt(event, receiptType = _read_receipts.ReceiptType.Read, unthreaded = false) { + if (!event) return; + const eventId = event.getId(); + const room = this.getRoom(event.getRoomId()); + if (room !== null && room !== void 0 && room.hasPendingEvent(eventId)) { + throw new Error(`Cannot set read receipt to a pending event (${eventId})`); + } + return this.sendReceipt(event, receiptType, {}, unthreaded); + } + + /** + * Set a marker to indicate the point in a room before which the user has read every + * event. This can be retrieved from room account data (the event type is `m.fully_read`) + * and displayed as a horizontal line in the timeline that is visually distinct to the + * position of the user's own read receipt. + * @param roomId - ID of the room that has been read + * @param rmEventId - ID of the event that has been read + * @param rrEvent - the event tracked by the read receipt. This is here for + * convenience because the RR and the RM are commonly updated at the same time as each + * other. The local echo of this receipt will be done if set. Optional. + * @param rpEvent - the m.read.private read receipt event for when we don't + * want other users to see the read receipts. This is experimental. Optional. + * @returns Promise which resolves: the empty object, `{}`. + */ + async setRoomReadMarkers(roomId, rmEventId, rrEvent, rpEvent) { + const room = this.getRoom(roomId); + if (room !== null && room !== void 0 && room.hasPendingEvent(rmEventId)) { + throw new Error(`Cannot set read marker to a pending event (${rmEventId})`); + } + + // Add the optional RR update, do local echo like `sendReceipt` + let rrEventId; + if (rrEvent) { + rrEventId = rrEvent.getId(); + if (room !== null && room !== void 0 && room.hasPendingEvent(rrEventId)) { + throw new Error(`Cannot set read receipt to a pending event (${rrEventId})`); + } + room === null || room === void 0 || room.addLocalEchoReceipt(this.credentials.userId, rrEvent, _read_receipts.ReceiptType.Read); + } + + // Add the optional private RR update, do local echo like `sendReceipt` + let rpEventId; + if (rpEvent) { + rpEventId = rpEvent.getId(); + if (room !== null && room !== void 0 && room.hasPendingEvent(rpEventId)) { + throw new Error(`Cannot set read receipt to a pending event (${rpEventId})`); + } + room === null || room === void 0 || room.addLocalEchoReceipt(this.credentials.userId, rpEvent, _read_receipts.ReceiptType.ReadPrivate); + } + return await this.setRoomReadMarkersHttpRequest(roomId, rmEventId, rrEventId, rpEventId); + } + + /** + * Get a preview of the given URL as of (roughly) the given point in time, + * described as an object with OpenGraph keys and associated values. + * Attributes may be synthesized where actual OG metadata is lacking. + * Caches results to prevent hammering the server. + * @param url - The URL to get preview data for + * @param ts - The preferred point in time that the preview should + * describe (ms since epoch). The preview returned will either be the most + * recent one preceding this timestamp if available, or failing that the next + * most recent available preview. + * @returns Promise which resolves: Object of OG metadata. + * @returns Rejects: with an error response. + * May return synthesized attributes if the URL lacked OG meta. + */ + getUrlPreview(url, ts) { + // bucket the timestamp to the nearest minute to prevent excessive spam to the server + // Surely 60-second accuracy is enough for anyone. + ts = Math.floor(ts / 60000) * 60000; + const parsed = new URL(url); + parsed.hash = ""; // strip the hash as it won't affect the preview + url = parsed.toString(); + const key = ts + "_" + url; + + // If there's already a request in flight (or we've handled it), return that instead. + if (key in this.urlPreviewCache) { + return this.urlPreviewCache[key]; + } + const resp = this.http.authedRequest(_httpApi.Method.Get, "/preview_url", { + url, + ts: ts.toString() + }, undefined, { + prefix: _httpApi.MediaPrefix.V3, + priority: "low" + }); + // TODO: Expire the URL preview cache sometimes + this.urlPreviewCache[key] = resp; + return resp; + } + + /** + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + sendTyping(roomId, isTyping, timeoutMs) { + if (this.isGuest()) { + return Promise.resolve({}); // guests cannot send typing notifications so don't bother. + } + const path = utils.encodeUri("/rooms/$roomId/typing/$userId", { + $roomId: roomId, + $userId: this.getUserId() + }); + const data = { + typing: isTyping + }; + if (isTyping) { + data.timeout = timeoutMs ? timeoutMs : 20000; + } + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, data); + } + + /** + * Determines the history of room upgrades for a given room, as far as the + * client can see. Returns an array of Rooms where the first entry is the + * oldest and the last entry is the newest (likely current) room. If the + * provided room is not found, this returns an empty list. This works in + * both directions, looking for older and newer rooms of the given room. + * @param roomId - The room ID to search from + * @param verifyLinks - If true, the function will only return rooms + * which can be proven to be linked. For example, rooms which have a create + * event pointing to an old room which the client is not aware of or doesn't + * have a matching tombstone would not be returned. + * @param msc3946ProcessDynamicPredecessor - if true, look for + * m.room.predecessor state events as well as create events, and prefer + * predecessor events where they exist (MSC3946). + * @returns An array of rooms representing the upgrade + * history. + */ + getRoomUpgradeHistory(roomId, verifyLinks = false, msc3946ProcessDynamicPredecessor = false) { + const currentRoom = this.getRoom(roomId); + if (!currentRoom) return []; + const before = this.findPredecessorRooms(currentRoom, verifyLinks, msc3946ProcessDynamicPredecessor); + const after = this.findSuccessorRooms(currentRoom, verifyLinks, msc3946ProcessDynamicPredecessor); + return [...before, currentRoom, ...after]; + } + findPredecessorRooms(room, verifyLinks, msc3946ProcessDynamicPredecessor) { + var _room$findPredecessor; + const ret = []; + + // Work backwards from newer to older rooms + let predecessorRoomId = (_room$findPredecessor = room.findPredecessor(msc3946ProcessDynamicPredecessor)) === null || _room$findPredecessor === void 0 ? void 0 : _room$findPredecessor.roomId; + while (predecessorRoomId !== null) { + var _room$findPredecessor2; + const predecessorRoom = this.getRoom(predecessorRoomId); + if (predecessorRoom === null) { + break; + } + if (verifyLinks) { + const tombstone = predecessorRoom.currentState.getStateEvents(_event2.EventType.RoomTombstone, ""); + if (!tombstone || tombstone.getContent()["replacement_room"] !== room.roomId) { + break; + } + } + + // Insert at the front because we're working backwards from the currentRoom + ret.splice(0, 0, predecessorRoom); + room = predecessorRoom; + predecessorRoomId = (_room$findPredecessor2 = room.findPredecessor(msc3946ProcessDynamicPredecessor)) === null || _room$findPredecessor2 === void 0 ? void 0 : _room$findPredecessor2.roomId; + } + return ret; + } + findSuccessorRooms(room, verifyLinks, msc3946ProcessDynamicPredecessor) { + const ret = []; + + // Work forwards, looking at tombstone events + let tombstoneEvent = room.currentState.getStateEvents(_event2.EventType.RoomTombstone, ""); + while (tombstoneEvent) { + const successorRoom = this.getRoom(tombstoneEvent.getContent()["replacement_room"]); + if (!successorRoom) break; // end of the chain + if (successorRoom.roomId === room.roomId) break; // Tombstone is referencing its own room + + if (verifyLinks) { + var _successorRoom$findPr; + const predecessorRoomId = (_successorRoom$findPr = successorRoom.findPredecessor(msc3946ProcessDynamicPredecessor)) === null || _successorRoom$findPr === void 0 ? void 0 : _successorRoom$findPr.roomId; + if (!predecessorRoomId || predecessorRoomId !== room.roomId) { + break; + } + } + + // Push to the end because we're looking forwards + ret.push(successorRoom); + const roomIds = new Set(ret.map(ref => ref.roomId)); + if (roomIds.size < ret.length) { + // The last room added to the list introduced a previous roomId + // To avoid recursion, return the last rooms - 1 + return ret.slice(0, ret.length - 1); + } + + // Set the current room to the reference room so we know where we're at + room = successorRoom; + tombstoneEvent = room.currentState.getStateEvents(_event2.EventType.RoomTombstone, ""); + } + return ret; + } + + /** + * @param reason - Optional. + * @returns Promise which resolves: `{}` an empty object. + * @returns Rejects: with an error response. + */ + invite(roomId, userId, reason) { + return this.membershipChange(roomId, userId, _membership.KnownMembership.Invite, reason); + } + + /** + * Invite a user to a room based on their email address. + * @param roomId - The room to invite the user to. + * @param email - The email address to invite. + * @returns Promise which resolves: `{}` an empty object. + * @returns Rejects: with an error response. + */ + inviteByEmail(roomId, email) { + return this.inviteByThreePid(roomId, "email", email); + } + + /** + * Invite a user to a room based on a third-party identifier. + * @param roomId - The room to invite the user to. + * @param medium - The medium to invite the user e.g. "email". + * @param address - The address for the specified medium. + * @returns Promise which resolves: `{}` an empty object. + * @returns Rejects: with an error response. + */ + async inviteByThreePid(roomId, medium, address) { + var _this$identityServer; + const path = utils.encodeUri("/rooms/$roomId/invite", { + $roomId: roomId + }); + const identityServerUrl = this.getIdentityServerUrl(true); + if (!identityServerUrl) { + return Promise.reject(new _httpApi.MatrixError({ + error: "No supplied identity server URL", + errcode: "ORG.MATRIX.JSSDK_MISSING_PARAM" + })); + } + const params = { + id_server: identityServerUrl, + medium: medium, + address: address + }; + if ((_this$identityServer = this.identityServer) !== null && _this$identityServer !== void 0 && _this$identityServer.getAccessToken) { + const identityAccessToken = await this.identityServer.getAccessToken(); + if (identityAccessToken) { + params["id_access_token"] = identityAccessToken; + } + } + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, params); + } + + /** + * @returns Promise which resolves: `{}` an empty object. + * @returns Rejects: with an error response. + */ + leave(roomId) { + return this.membershipChange(roomId, undefined, _membership.KnownMembership.Leave); + } + + /** + * Leaves all rooms in the chain of room upgrades based on the given room. By + * default, this will leave all the previous and upgraded rooms, including the + * given room. To only leave the given room and any previous rooms, keeping the + * upgraded (modern) rooms untouched supply `false` to `includeFuture`. + * @param roomId - The room ID to start leaving at + * @param includeFuture - If true, the whole chain (past and future) of + * upgraded rooms will be left. + * @returns Promise which resolves when completed with an object keyed + * by room ID and value of the error encountered when leaving or null. + */ + leaveRoomChain(roomId, includeFuture = true) { + const upgradeHistory = this.getRoomUpgradeHistory(roomId); + let eligibleToLeave = upgradeHistory; + if (!includeFuture) { + eligibleToLeave = []; + for (const room of upgradeHistory) { + eligibleToLeave.push(room); + if (room.roomId === roomId) { + break; + } + } + } + const populationResults = {}; + const promises = []; + const doLeave = roomId => { + return this.leave(roomId).then(() => { + delete populationResults[roomId]; + }).catch(err => { + // suppress error + populationResults[roomId] = err; + }); + }; + for (const room of eligibleToLeave) { + promises.push(doLeave(room.roomId)); + } + return Promise.all(promises).then(() => populationResults); + } + + /** + * @param reason - Optional. + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + ban(roomId, userId, reason) { + return this.membershipChange(roomId, userId, _membership.KnownMembership.Ban, reason); + } + + /** + * @param deleteRoom - True to delete the room from the store on success. + * Default: true. + * @returns Promise which resolves: `{}` an empty object. + * @returns Rejects: with an error response. + */ + forget(roomId, deleteRoom = true) { + const promise = this.membershipChange(roomId, undefined, "forget"); + if (!deleteRoom) { + return promise; + } + return promise.then(response => { + this.store.removeRoom(roomId); + this.emit(ClientEvent.DeleteRoom, roomId); + return response; + }); + } + + /** + * @returns Promise which resolves: Object (currently empty) + * @returns Rejects: with an error response. + */ + unban(roomId, userId) { + // unbanning != set their state to leave: this used to be + // the case, but was then changed so that leaving was always + // a revoking of privilege, otherwise two people racing to + // kick / ban someone could end up banning and then un-banning + // them. + const path = utils.encodeUri("/rooms/$roomId/unban", { + $roomId: roomId + }); + const data = { + user_id: userId + }; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, data); + } + + /** + * @param reason - Optional. + * @returns Promise which resolves: `{}` an empty object. + * @returns Rejects: with an error response. + */ + kick(roomId, userId, reason) { + const path = utils.encodeUri("/rooms/$roomId/kick", { + $roomId: roomId + }); + const data = { + user_id: userId, + reason: reason + }; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, data); + } + membershipChange(roomId, userId, membership, reason) { + // API returns an empty object + const path = utils.encodeUri("/rooms/$room_id/$membership", { + $room_id: roomId, + $membership: membership + }); + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, { + user_id: userId, + // may be undefined e.g. on leave + reason: reason + }); + } + + /** + * Obtain a dict of actions which should be performed for this event according + * to the push rules for this user. Caches the dict on the event. + * @param event - The event to get push actions for. + * @param forceRecalculate - forces to recalculate actions for an event + * Useful when an event just got decrypted + * @returns A dict of actions to perform. + */ + getPushActionsForEvent(event, forceRecalculate = false) { + if (!event.getPushActions() || forceRecalculate) { + const { + actions, + rule + } = this.pushProcessor.actionsAndRuleForEvent(event); + event.setPushDetails(actions, rule); + } + return event.getPushActions(); + } + + /** + * Obtain a dict of actions which should be performed for this event according + * to the push rules for this user. Caches the dict on the event. + * @param event - The event to get push actions for. + * @param forceRecalculate - forces to recalculate actions for an event + * Useful when an event just got decrypted + * @returns A dict of actions to perform. + */ + getPushDetailsForEvent(event, forceRecalculate = false) { + if (!event.getPushDetails() || forceRecalculate) { + const { + actions, + rule + } = this.pushProcessor.actionsAndRuleForEvent(event); + event.setPushDetails(actions, rule); + } + return event.getPushDetails(); + } + + /** + * @param info - The kind of info to set (e.g. 'avatar_url') + * @param data - The JSON object to set. + * @returns + * @returns Rejects: with an error response. + */ + // eslint-disable-next-line camelcase + + setProfileInfo(info, data) { + const path = utils.encodeUri("/profile/$userId/$info", { + $userId: this.credentials.userId, + $info: info + }); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, data); + } + + /** + * @returns Promise which resolves: `{}` an empty object. + * @returns Rejects: with an error response. + */ + async setDisplayName(name) { + const prom = await this.setProfileInfo("displayname", { + displayname: name + }); + // XXX: synthesise a profile update for ourselves because Synapse is broken and won't + const user = this.getUser(this.getUserId()); + if (user) { + user.displayName = name; + user.emit(_user.UserEvent.DisplayName, user.events.presence, user); + } + return prom; + } + + /** + * @returns Promise which resolves: `{}` an empty object. + * @returns Rejects: with an error response. + */ + async setAvatarUrl(url) { + const prom = await this.setProfileInfo("avatar_url", { + avatar_url: url + }); + // XXX: synthesise a profile update for ourselves because Synapse is broken and won't + const user = this.getUser(this.getUserId()); + if (user) { + user.avatarUrl = url; + user.emit(_user.UserEvent.AvatarUrl, user.events.presence, user); + } + return prom; + } + + /** + * Turn an MXC URL into an HTTP one. This method is experimental and + * may change. + * @param mxcUrl - The MXC URL + * @param width - The desired width of the thumbnail. + * @param height - The desired height of the thumbnail. + * @param resizeMethod - The thumbnail resize method to use, either + * "crop" or "scale". + * @param allowDirectLinks - If true, return any non-mxc URLs + * directly. Fetching such URLs will leak information about the user to + * anyone they share a room with. If false, will return null for such URLs. + * @param allowRedirects - If true, the caller supports the URL being 307 or + * 308 redirected to another resource upon request. If false, redirects + * are not expected. + * @returns the avatar URL or null. + */ + mxcUrlToHttp(mxcUrl, width, height, resizeMethod, allowDirectLinks, allowRedirects) { + return (0, _contentRepo.getHttpUriForMxc)(this.baseUrl, mxcUrl, width, height, resizeMethod, allowDirectLinks, allowRedirects); + } + + /** + * Specify the set_presence value to be used for subsequent calls to the Sync API. + * This has an advantage over calls to the PUT /presence API in that it + * doesn't clobber status_msg set by other devices. + * @param presence - the presence to specify to set_presence of sync calls + */ + async setSyncPresence(presence) { + var _this$syncApi4; + (_this$syncApi4 = this.syncApi) === null || _this$syncApi4 === void 0 || _this$syncApi4.setPresence(presence); + } + + /** + * @param opts - Options to apply + * @returns Promise which resolves + * @returns Rejects: with an error response. + * @throws If 'presence' isn't a valid presence enum value. + */ + async setPresence(opts) { + const path = utils.encodeUri("/presence/$userId/status", { + $userId: this.credentials.userId + }); + const validStates = ["offline", "online", "unavailable"]; + if (validStates.indexOf(opts.presence) === -1) { + throw new Error("Bad presence value: " + opts.presence); + } + await this.http.authedRequest(_httpApi.Method.Put, path, undefined, opts); + } + + /** + * @param userId - The user to get presence for + * @returns Promise which resolves: The presence state for this user. + * @returns Rejects: with an error response. + */ + getPresence(userId) { + const path = utils.encodeUri("/presence/$userId/status", { + $userId: userId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * Retrieve older messages from the given room and put them in the timeline. + * + * If this is called multiple times whilst a request is ongoing, the same + * Promise will be returned. If there was a problem requesting scrollback, there + * will be a small delay before another request can be made (to prevent tight-looping + * when there is no connection). + * + * @param room - The room to get older messages in. + * @param limit - Optional. The maximum number of previous events to + * pull in. Default: 30. + * @returns Promise which resolves: Room. If you are at the beginning + * of the timeline, `Room.oldState.paginationToken` will be + * `null`. + * @returns Rejects: with an error response. + */ + scrollback(room, limit = 30) { + let timeToWaitMs = 0; + let info = this.ongoingScrollbacks[room.roomId] || {}; + if (info.promise) { + return info.promise; + } else if (info.errorTs) { + const timeWaitedMs = Date.now() - info.errorTs; + timeToWaitMs = Math.max(SCROLLBACK_DELAY_MS - timeWaitedMs, 0); + } + if (room.oldState.paginationToken === null) { + return Promise.resolve(room); // already at the start. + } + // attempt to grab more events from the store first + const numAdded = this.store.scrollback(room, limit).length; + if (numAdded === limit) { + // store contained everything we needed. + return Promise.resolve(room); + } + // reduce the required number of events appropriately + limit = limit - numAdded; + const promise = new Promise((resolve, reject) => { + // wait for a time before doing this request + // (which may be 0 in order not to special case the code paths) + (0, _utils.sleep)(timeToWaitMs).then(() => { + return this.createMessagesRequest(room.roomId, room.oldState.paginationToken, limit, _eventTimeline.Direction.Backward); + }).then(res => { + var _res$end, _res$end2; + const matrixEvents = res.chunk.map(this.getEventMapper()); + if (res.state) { + const stateEvents = res.state.map(this.getEventMapper()); + room.currentState.setUnknownStateEvents(stateEvents); + } + const [timelineEvents, threadedEvents, unknownRelations] = room.partitionThreadedEvents(matrixEvents); + this.processAggregatedTimelineEvents(room, timelineEvents); + room.addEventsToTimeline(timelineEvents, true, room.getLiveTimeline()); + this.processThreadEvents(room, threadedEvents, true); + unknownRelations.forEach(event => room.relations.aggregateChildEvent(event)); + room.oldState.paginationToken = (_res$end = res.end) !== null && _res$end !== void 0 ? _res$end : null; + if (res.chunk.length === 0) { + room.oldState.paginationToken = null; + } + this.store.storeEvents(room, matrixEvents, (_res$end2 = res.end) !== null && _res$end2 !== void 0 ? _res$end2 : null, true); + delete this.ongoingScrollbacks[room.roomId]; + resolve(room); + }).catch(err => { + this.ongoingScrollbacks[room.roomId] = { + errorTs: Date.now() + }; + reject(err); + }); + }); + info = { + promise + }; + this.ongoingScrollbacks[room.roomId] = info; + return promise; + } + getEventMapper(options) { + return (0, _eventMapper.eventMapperFor)(this, options || {}); + } + + /** + * Get an EventTimeline for the given event + * + *

If the EventTimelineSet object already has the given event in its store, the + * corresponding timeline will be returned. Otherwise, a /context request is + * made, and used to construct an EventTimeline. + * If the event does not belong to this EventTimelineSet then undefined will be returned. + * + * @param timelineSet - The timelineSet to look for the event in, must be bound to a room + * @param eventId - The ID of the event to look for + * + * @returns Promise which resolves: + * {@link EventTimeline} including the given event + */ + async getEventTimeline(timelineSet, eventId) { + var _this$clientOpts, _ref, _timelineSet$getTimel, _timelineSet$room$fin; + // don't allow any timeline support unless it's been enabled. + if (!this.timelineSupport) { + throw new Error("timeline support is disabled. Set the 'timelineSupport'" + " parameter to true when creating MatrixClient to enable it."); + } + if (!(timelineSet !== null && timelineSet !== void 0 && timelineSet.room)) { + throw new Error("getEventTimeline only supports room timelines"); + } + if (timelineSet.getTimelineForEvent(eventId)) { + return timelineSet.getTimelineForEvent(eventId); + } + if (timelineSet.thread && this.supportsThreads()) { + return this.getThreadTimeline(timelineSet, eventId); + } + const path = utils.encodeUri("/rooms/$roomId/context/$eventId", { + $roomId: timelineSet.room.roomId, + $eventId: eventId + }); + let params = undefined; + if ((_this$clientOpts = this.clientOpts) !== null && _this$clientOpts !== void 0 && _this$clientOpts.lazyLoadMembers) { + params = { + filter: JSON.stringify(_filter.Filter.LAZY_LOADING_MESSAGES_FILTER) + }; + } + + // TODO: we should implement a backoff (as per scrollback()) to deal more nicely with HTTP errors. + const res = await this.http.authedRequest(_httpApi.Method.Get, path, params); + if (!res.event) { + throw new Error("'event' not in '/context' result - homeserver too old?"); + } + + // by the time the request completes, the event might have ended up in the timeline. + if (timelineSet.getTimelineForEvent(eventId)) { + return timelineSet.getTimelineForEvent(eventId); + } + const mapper = this.getEventMapper(); + const event = mapper(res.event); + if (event.isRelation(_thread.THREAD_RELATION_TYPE.name)) { + this.logger.warn("Tried loading a regular timeline at the position of a thread event"); + return undefined; + } + const events = [ + // Order events from most recent to oldest (reverse-chronological). + // We start with the last event, since that's the point at which we have known state. + // events_after is already backwards; events_before is forwards. + ...res.events_after.reverse().map(mapper), event, ...res.events_before.map(mapper)]; + + // Here we handle non-thread timelines only, but still process any thread events to populate thread summaries. + let timeline = timelineSet.getTimelineForEvent(events[0].getId()); + if (timeline) { + timeline.getState(_eventTimeline.EventTimeline.BACKWARDS).setUnknownStateEvents(res.state.map(mapper)); + } else { + timeline = timelineSet.addTimeline(); + timeline.initialiseState(res.state.map(mapper)); + timeline.getState(_eventTimeline.EventTimeline.FORWARDS).paginationToken = res.end; + } + const [timelineEvents, threadedEvents, unknownRelations] = timelineSet.room.partitionThreadedEvents(events); + timelineSet.addEventsToTimeline(timelineEvents, true, timeline, res.start); + // The target event is not in a thread but process the contextual events, so we can show any threads around it. + this.processThreadEvents(timelineSet.room, threadedEvents, true); + this.processAggregatedTimelineEvents(timelineSet.room, timelineEvents); + unknownRelations.forEach(event => timelineSet.relations.aggregateChildEvent(event)); + + // There is no guarantee that the event ended up in "timeline" (we might have switched to a neighbouring + // timeline) - so check the room's index again. On the other hand, there's no guarantee the event ended up + // anywhere, if it was later redacted, so we just return the timeline we first thought of. + return (_ref = (_timelineSet$getTimel = timelineSet.getTimelineForEvent(eventId)) !== null && _timelineSet$getTimel !== void 0 ? _timelineSet$getTimel : (_timelineSet$room$fin = timelineSet.room.findThreadForEvent(event)) === null || _timelineSet$room$fin === void 0 ? void 0 : _timelineSet$room$fin.liveTimeline) !== null && _ref !== void 0 ? _ref : + // for Threads degraded support + timeline; + } + async getThreadTimeline(timelineSet, eventId) { + var _this$clientOpts2; + if (!this.supportsThreads()) { + throw new Error("could not get thread timeline: no client support"); + } + if (!timelineSet.room) { + throw new Error("could not get thread timeline: not a room timeline"); + } + if (!timelineSet.thread) { + throw new Error("could not get thread timeline: not a thread timeline"); + } + const path = utils.encodeUri("/rooms/$roomId/context/$eventId", { + $roomId: timelineSet.room.roomId, + $eventId: eventId + }); + const params = { + limit: "0" + }; + if ((_this$clientOpts2 = this.clientOpts) !== null && _this$clientOpts2 !== void 0 && _this$clientOpts2.lazyLoadMembers) { + params.filter = JSON.stringify(_filter.Filter.LAZY_LOADING_MESSAGES_FILTER); + } + + // TODO: we should implement a backoff (as per scrollback()) to deal more nicely with HTTP errors. + const res = await this.http.authedRequest(_httpApi.Method.Get, path, params); + const mapper = this.getEventMapper(); + const event = mapper(res.event); + if (!timelineSet.canContain(event)) { + return undefined; + } + const recurse = this.canSupport.get(_feature.Feature.RelationsRecursion) !== _feature.ServerSupport.Unsupported; + if (_thread.Thread.hasServerSideSupport) { + if (_thread.Thread.hasServerSideFwdPaginationSupport) { + var _resOlder$next_batch, _resNewer$next_batch, _timelineSet$getTimel2; + if (!timelineSet.thread) { + throw new Error("could not get thread timeline: not a thread timeline"); + } + const thread = timelineSet.thread; + const resOlder = await this.fetchRelations(timelineSet.room.roomId, thread.id, null, null, { + dir: _eventTimeline.Direction.Backward, + from: res.start, + recurse: recurse || undefined + }); + const resNewer = await this.fetchRelations(timelineSet.room.roomId, thread.id, null, null, { + dir: _eventTimeline.Direction.Forward, + from: res.end, + recurse: recurse || undefined + }); + const events = [ + // Order events from most recent to oldest (reverse-chronological). + // We start with the last event, since that's the point at which we have known state. + // events_after is already backwards; events_before is forwards. + ...resNewer.chunk.reverse().filter((0, _threadUtils.getRelationsThreadFilter)(thread.id)).map(mapper), event, ...resOlder.chunk.filter((0, _threadUtils.getRelationsThreadFilter)(thread.id)).map(mapper)]; + for (const event of events) { + var _timelineSet$thread; + await ((_timelineSet$thread = timelineSet.thread) === null || _timelineSet$thread === void 0 ? void 0 : _timelineSet$thread.processEvent(event)); + } + + // Here we handle non-thread timelines only, but still process any thread events to populate thread summaries. + let timeline = timelineSet.getTimelineForEvent(event.getId()); + if (timeline) { + timeline.getState(_eventTimeline.EventTimeline.BACKWARDS).setUnknownStateEvents(res.state.map(mapper)); + } else { + timeline = timelineSet.addTimeline(); + timeline.initialiseState(res.state.map(mapper)); + } + timelineSet.addEventsToTimeline(events, true, timeline, resNewer.next_batch); + if (!resOlder.next_batch) { + const originalEvent = await this.fetchRoomEvent(timelineSet.room.roomId, thread.id); + timelineSet.addEventsToTimeline([mapper(originalEvent)], true, timeline, null); + } + timeline.setPaginationToken((_resOlder$next_batch = resOlder.next_batch) !== null && _resOlder$next_batch !== void 0 ? _resOlder$next_batch : null, _eventTimeline.Direction.Backward); + timeline.setPaginationToken((_resNewer$next_batch = resNewer.next_batch) !== null && _resNewer$next_batch !== void 0 ? _resNewer$next_batch : null, _eventTimeline.Direction.Forward); + this.processAggregatedTimelineEvents(timelineSet.room, events); + + // There is no guarantee that the event ended up in "timeline" (we might have switched to a neighbouring + // timeline) - so check the room's index again. On the other hand, there's no guarantee the event ended up + // anywhere, if it was later redacted, so we just return the timeline we first thought of. + return (_timelineSet$getTimel2 = timelineSet.getTimelineForEvent(eventId)) !== null && _timelineSet$getTimel2 !== void 0 ? _timelineSet$getTimel2 : timeline; + } else { + var _resOlder$next_batch2; + // Where the event is a thread reply (not a root) and running in MSC-enabled mode the Thread timeline only + // functions contiguously, so we have to jump through some hoops to get our target event in it. + // XXX: workaround for https://github.com/vector-im/element-meta/issues/150 + + const thread = timelineSet.thread; + const resOlder = await this.fetchRelations(timelineSet.room.roomId, thread.id, _thread.THREAD_RELATION_TYPE.name, null, { + dir: _eventTimeline.Direction.Backward, + from: res.start, + recurse: recurse || undefined + }); + const eventsNewer = []; + let nextBatch = res.end; + while (nextBatch) { + var _resNewer$next_batch2; + const resNewer = await this.fetchRelations(timelineSet.room.roomId, thread.id, _thread.THREAD_RELATION_TYPE.name, null, { + dir: _eventTimeline.Direction.Forward, + from: nextBatch, + recurse: recurse || undefined + }); + nextBatch = (_resNewer$next_batch2 = resNewer.next_batch) !== null && _resNewer$next_batch2 !== void 0 ? _resNewer$next_batch2 : null; + eventsNewer.push(...resNewer.chunk); + } + const events = [ + // Order events from most recent to oldest (reverse-chronological). + // We start with the last event, since that's the point at which we have known state. + // events_after is already backwards; events_before is forwards. + ...eventsNewer.reverse().map(mapper), event, ...resOlder.chunk.map(mapper)]; + for (const event of events) { + var _timelineSet$thread2; + await ((_timelineSet$thread2 = timelineSet.thread) === null || _timelineSet$thread2 === void 0 ? void 0 : _timelineSet$thread2.processEvent(event)); + } + + // Here we handle non-thread timelines only, but still process any thread events to populate thread + // summaries. + const timeline = timelineSet.getLiveTimeline(); + timeline.getState(_eventTimeline.EventTimeline.BACKWARDS).setUnknownStateEvents(res.state.map(mapper)); + timelineSet.addEventsToTimeline(events, true, timeline, null); + if (!resOlder.next_batch) { + const originalEvent = await this.fetchRoomEvent(timelineSet.room.roomId, thread.id); + timelineSet.addEventsToTimeline([mapper(originalEvent)], true, timeline, null); + } + timeline.setPaginationToken((_resOlder$next_batch2 = resOlder.next_batch) !== null && _resOlder$next_batch2 !== void 0 ? _resOlder$next_batch2 : null, _eventTimeline.Direction.Backward); + timeline.setPaginationToken(null, _eventTimeline.Direction.Forward); + this.processAggregatedTimelineEvents(timelineSet.room, events); + return timeline; + } + } + } + + /** + * Get an EventTimeline for the latest events in the room. This will just + * call `/messages` to get the latest message in the room, then use + * `client.getEventTimeline(...)` to construct a new timeline from it. + * + * @param timelineSet - The timelineSet to find or add the timeline to + * + * @returns Promise which resolves: + * {@link EventTimeline} timeline with the latest events in the room + */ + async getLatestTimeline(timelineSet) { + // don't allow any timeline support unless it's been enabled. + if (!this.timelineSupport) { + throw new Error("timeline support is disabled. Set the 'timelineSupport'" + " parameter to true when creating MatrixClient to enable it."); + } + if (!timelineSet.room) { + throw new Error("getLatestTimeline only supports room timelines"); + } + let event; + if (timelineSet.threadListType !== null) { + var _res$chunk; + const res = await this.createThreadListMessagesRequest(timelineSet.room.roomId, null, 1, _eventTimeline.Direction.Backward, timelineSet.threadListType, timelineSet.getFilter()); + event = (_res$chunk = res.chunk) === null || _res$chunk === void 0 ? void 0 : _res$chunk[0]; + } else if (timelineSet.thread && _thread.Thread.hasServerSideSupport) { + var _res$chunk2; + const recurse = this.canSupport.get(_feature.Feature.RelationsRecursion) !== _feature.ServerSupport.Unsupported; + const res = await this.fetchRelations(timelineSet.room.roomId, timelineSet.thread.id, _thread.THREAD_RELATION_TYPE.name, null, { + dir: _eventTimeline.Direction.Backward, + limit: 1, + recurse: recurse || undefined + }); + event = (_res$chunk2 = res.chunk) === null || _res$chunk2 === void 0 ? void 0 : _res$chunk2[0]; + } else { + var _this$clientOpts3, _res$chunk3; + const messagesPath = utils.encodeUri("/rooms/$roomId/messages", { + $roomId: timelineSet.room.roomId + }); + const params = { + dir: "b" + }; + if ((_this$clientOpts3 = this.clientOpts) !== null && _this$clientOpts3 !== void 0 && _this$clientOpts3.lazyLoadMembers) { + params.filter = JSON.stringify(_filter.Filter.LAZY_LOADING_MESSAGES_FILTER); + } + const res = await this.http.authedRequest(_httpApi.Method.Get, messagesPath, params); + event = (_res$chunk3 = res.chunk) === null || _res$chunk3 === void 0 ? void 0 : _res$chunk3[0]; + } + if (!event) { + throw new Error("No message returned when trying to construct getLatestTimeline"); + } + return this.getEventTimeline(timelineSet, event.event_id); + } + + /** + * Makes a request to /messages with the appropriate lazy loading filter set. + * XXX: if we do get rid of scrollback (as it's not used at the moment), + * we could inline this method again in paginateEventTimeline as that would + * then be the only call-site + * @param limit - the maximum amount of events the retrieve + * @param dir - 'f' or 'b' + * @param timelineFilter - the timeline filter to pass + */ + // XXX: Intended private, used in code. + createMessagesRequest(roomId, fromToken, limit = 30, dir, timelineFilter) { + var _this$clientOpts4; + const path = utils.encodeUri("/rooms/$roomId/messages", { + $roomId: roomId + }); + const params = { + limit: limit.toString(), + dir: dir + }; + if (fromToken) { + params.from = fromToken; + } + let filter = null; + if ((_this$clientOpts4 = this.clientOpts) !== null && _this$clientOpts4 !== void 0 && _this$clientOpts4.lazyLoadMembers) { + // create a shallow copy of LAZY_LOADING_MESSAGES_FILTER, + // so the timelineFilter doesn't get written into it below + filter = Object.assign({}, _filter.Filter.LAZY_LOADING_MESSAGES_FILTER); + } + if (timelineFilter) { + var _timelineFilter$getRo; + // XXX: it's horrific that /messages' filter parameter doesn't match + // /sync's one - see https://matrix.org/jira/browse/SPEC-451 + filter = filter || {}; + Object.assign(filter, (_timelineFilter$getRo = timelineFilter.getRoomTimelineFilterComponent()) === null || _timelineFilter$getRo === void 0 ? void 0 : _timelineFilter$getRo.toJSON()); + } + if (filter) { + params.filter = JSON.stringify(filter); + } + return this.http.authedRequest(_httpApi.Method.Get, path, params); + } + + /** + * Makes a request to /messages with the appropriate lazy loading filter set. + * XXX: if we do get rid of scrollback (as it's not used at the moment), + * we could inline this method again in paginateEventTimeline as that would + * then be the only call-site + * @param limit - the maximum amount of events the retrieve + * @param dir - 'f' or 'b' + * @param timelineFilter - the timeline filter to pass + */ + // XXX: Intended private, used by room.fetchRoomThreads + createThreadListMessagesRequest(roomId, fromToken, limit = 30, dir = _eventTimeline.Direction.Backward, threadListType = _thread.ThreadFilterType.All, timelineFilter) { + var _this$clientOpts5; + const path = utils.encodeUri("/rooms/$roomId/threads", { + $roomId: roomId + }); + const params = { + limit: limit.toString(), + dir: dir, + include: (0, _thread.threadFilterTypeToFilter)(threadListType) + }; + if (fromToken) { + params.from = fromToken; + } + let filter = {}; + if ((_this$clientOpts5 = this.clientOpts) !== null && _this$clientOpts5 !== void 0 && _this$clientOpts5.lazyLoadMembers) { + // create a shallow copy of LAZY_LOADING_MESSAGES_FILTER, + // so the timelineFilter doesn't get written into it below + filter = _objectSpread({}, _filter.Filter.LAZY_LOADING_MESSAGES_FILTER); + } + if (timelineFilter) { + var _timelineFilter$getRo2; + // XXX: it's horrific that /messages' filter parameter doesn't match + // /sync's one - see https://matrix.org/jira/browse/SPEC-451 + filter = _objectSpread(_objectSpread({}, filter), (_timelineFilter$getRo2 = timelineFilter.getRoomTimelineFilterComponent()) === null || _timelineFilter$getRo2 === void 0 ? void 0 : _timelineFilter$getRo2.toJSON()); + } + if (Object.keys(filter).length) { + params.filter = JSON.stringify(filter); + } + const opts = { + prefix: _thread.Thread.hasServerSideListSupport === _thread.FeatureSupport.Stable ? _httpApi.ClientPrefix.V1 : "/_matrix/client/unstable/org.matrix.msc3856" + }; + return this.http.authedRequest(_httpApi.Method.Get, path, params, undefined, opts).then(res => { + var _res$chunk4; + return _objectSpread(_objectSpread({}, res), {}, { + chunk: (_res$chunk4 = res.chunk) === null || _res$chunk4 === void 0 ? void 0 : _res$chunk4.reverse(), + start: res.prev_batch, + end: res.next_batch + }); + }); + } + + /** + * Take an EventTimeline, and back/forward-fill results. + * + * @param eventTimeline - timeline object to be updated + * + * @returns Promise which resolves to a boolean: false if there are no + * events and we reached either end of the timeline; else true. + */ + paginateEventTimeline(eventTimeline, opts) { + const isNotifTimeline = eventTimeline.getTimelineSet() === this.notifTimelineSet; + const room = this.getRoom(eventTimeline.getRoomId()); + const threadListType = eventTimeline.getTimelineSet().threadListType; + const thread = eventTimeline.getTimelineSet().thread; + + // TODO: we should implement a backoff (as per scrollback()) to deal more + // nicely with HTTP errors. + opts = opts || {}; + const backwards = opts.backwards || false; + if (isNotifTimeline) { + if (!backwards) { + throw new Error("paginateNotifTimeline can only paginate backwards"); + } + } + const dir = backwards ? _eventTimeline.EventTimeline.BACKWARDS : _eventTimeline.EventTimeline.FORWARDS; + const token = eventTimeline.getPaginationToken(dir); + const pendingRequest = eventTimeline.paginationRequests[dir]; + if (pendingRequest) { + // already a request in progress - return the existing promise + return pendingRequest; + } + let path; + let params; + let promise; + if (isNotifTimeline) { + var _opts$limit; + path = "/notifications"; + params = { + limit: ((_opts$limit = opts.limit) !== null && _opts$limit !== void 0 ? _opts$limit : 30).toString(), + only: "highlight" + }; + if (token && token !== "end") { + params.from = token; + } + promise = this.http.authedRequest(_httpApi.Method.Get, path, params).then(async res => { + const token = res.next_token; + const matrixEvents = []; + res.notifications = res.notifications.filter(_utils.noUnsafeEventProps); + for (let i = 0; i < res.notifications.length; i++) { + const notification = res.notifications[i]; + const event = this.getEventMapper()(notification.event); + + // @TODO(kerrya) reprocessing every notification is ugly + // remove if we get server MSC3994 support + this.getPushDetailsForEvent(event, true); + event.event.room_id = notification.room_id; // XXX: gutwrenching + matrixEvents[i] = event; + } + + // No need to partition events for threads here, everything lives + // in the notification timeline set + const timelineSet = eventTimeline.getTimelineSet(); + timelineSet.addEventsToTimeline(matrixEvents, backwards, eventTimeline, token); + this.processAggregatedTimelineEvents(timelineSet.room, matrixEvents); + + // if we've hit the end of the timeline, we need to stop trying to + // paginate. We need to keep the 'forwards' token though, to make sure + // we can recover from gappy syncs. + if (backwards && !res.next_token) { + eventTimeline.setPaginationToken(null, dir); + } + return Boolean(res.next_token); + }).finally(() => { + eventTimeline.paginationRequests[dir] = null; + }); + eventTimeline.paginationRequests[dir] = promise; + } else if (threadListType !== null) { + if (!room) { + throw new Error("Unknown room " + eventTimeline.getRoomId()); + } + if (!_thread.Thread.hasServerSideFwdPaginationSupport && dir === _eventTimeline.Direction.Forward) { + throw new Error("Cannot paginate threads forwards without server-side support for MSC 3715"); + } + promise = this.createThreadListMessagesRequest(eventTimeline.getRoomId(), token, opts.limit, dir, threadListType, eventTimeline.getFilter()).then(res => { + if (res.state) { + const roomState = eventTimeline.getState(dir); + const stateEvents = res.state.filter(_utils.noUnsafeEventProps).map(this.getEventMapper()); + roomState.setUnknownStateEvents(stateEvents); + } + const token = res.end; + const matrixEvents = res.chunk.filter(_utils.noUnsafeEventProps).map(this.getEventMapper()); + const timelineSet = eventTimeline.getTimelineSet(); + timelineSet.addEventsToTimeline(matrixEvents, backwards, eventTimeline, token); + this.processAggregatedTimelineEvents(room, matrixEvents); + this.processThreadRoots(room, matrixEvents, backwards); + + // if we've hit the end of the timeline, we need to stop trying to + // paginate. We need to keep the 'forwards' token though, to make sure + // we can recover from gappy syncs. + if (backwards && res.end == res.start) { + eventTimeline.setPaginationToken(null, dir); + } + return res.end !== res.start; + }).finally(() => { + eventTimeline.paginationRequests[dir] = null; + }); + eventTimeline.paginationRequests[dir] = promise; + } else if (thread) { + var _eventTimeline$getRoo, _eventTimeline$getRoo2; + const room = this.getRoom((_eventTimeline$getRoo = eventTimeline.getRoomId()) !== null && _eventTimeline$getRoo !== void 0 ? _eventTimeline$getRoo : undefined); + if (!room) { + throw new Error("Unknown room " + eventTimeline.getRoomId()); + } + const recurse = this.canSupport.get(_feature.Feature.RelationsRecursion) !== _feature.ServerSupport.Unsupported; + promise = this.fetchRelations((_eventTimeline$getRoo2 = eventTimeline.getRoomId()) !== null && _eventTimeline$getRoo2 !== void 0 ? _eventTimeline$getRoo2 : "", thread.id, null, null, { + dir, + limit: opts.limit, + from: token !== null && token !== void 0 ? token : undefined, + recurse: recurse || undefined + }).then(async res => { + const mapper = this.getEventMapper(); + const matrixEvents = res.chunk.filter(_utils.noUnsafeEventProps).filter((0, _threadUtils.getRelationsThreadFilter)(thread.id)).map(mapper); + + // Process latest events first + for (const event of matrixEvents.slice().reverse()) { + await (thread === null || thread === void 0 ? void 0 : thread.processEvent(event)); + const sender = event.getSender(); + if (!backwards || (thread === null || thread === void 0 ? void 0 : thread.getEventReadUpTo(sender)) === null) { + room.addLocalEchoReceipt(sender, event, _read_receipts.ReceiptType.Read); + } + } + const newToken = res.next_batch; + const timelineSet = eventTimeline.getTimelineSet(); + timelineSet.addEventsToTimeline(matrixEvents, backwards, eventTimeline, newToken !== null && newToken !== void 0 ? newToken : null); + if (!newToken && backwards) { + var _thread$rootEvent, _eventTimeline$getRoo3; + const originalEvent = (_thread$rootEvent = thread.rootEvent) !== null && _thread$rootEvent !== void 0 ? _thread$rootEvent : mapper(await this.fetchRoomEvent((_eventTimeline$getRoo3 = eventTimeline.getRoomId()) !== null && _eventTimeline$getRoo3 !== void 0 ? _eventTimeline$getRoo3 : "", thread.id)); + timelineSet.addEventsToTimeline([originalEvent], true, eventTimeline, null); + } + this.processAggregatedTimelineEvents(timelineSet.room, matrixEvents); + + // if we've hit the end of the timeline, we need to stop trying to + // paginate. We need to keep the 'forwards' token though, to make sure + // we can recover from gappy syncs. + if (backwards && !newToken) { + eventTimeline.setPaginationToken(null, dir); + } + return Boolean(newToken); + }).finally(() => { + eventTimeline.paginationRequests[dir] = null; + }); + eventTimeline.paginationRequests[dir] = promise; + } else { + if (!room) { + throw new Error("Unknown room " + eventTimeline.getRoomId()); + } + promise = this.createMessagesRequest(eventTimeline.getRoomId(), token, opts.limit, dir, eventTimeline.getFilter()).then(res => { + if (res.state) { + const roomState = eventTimeline.getState(dir); + const stateEvents = res.state.filter(_utils.noUnsafeEventProps).map(this.getEventMapper()); + roomState.setUnknownStateEvents(stateEvents); + } + const token = res.end; + const matrixEvents = res.chunk.filter(_utils.noUnsafeEventProps).map(this.getEventMapper()); + const timelineSet = eventTimeline.getTimelineSet(); + const [timelineEvents,, unknownRelations] = room.partitionThreadedEvents(matrixEvents); + timelineSet.addEventsToTimeline(timelineEvents, backwards, eventTimeline, token); + this.processAggregatedTimelineEvents(room, timelineEvents); + this.processThreadRoots(room, timelineEvents.filter(it => it.getServerAggregatedRelation(_thread.THREAD_RELATION_TYPE.name)), false); + unknownRelations.forEach(event => room.relations.aggregateChildEvent(event)); + const atEnd = res.end === undefined || res.end === res.start; + + // if we've hit the end of the timeline, we need to stop trying to + // paginate. We need to keep the 'forwards' token though, to make sure + // we can recover from gappy syncs. + if (backwards && atEnd) { + eventTimeline.setPaginationToken(null, dir); + } + return !atEnd; + }).finally(() => { + eventTimeline.paginationRequests[dir] = null; + }); + eventTimeline.paginationRequests[dir] = promise; + } + return promise; + } + + /** + * Reset the notifTimelineSet entirely, paginating in some historical notifs as + * a starting point for subsequent pagination. + */ + resetNotifTimelineSet() { + if (!this.notifTimelineSet) { + return; + } + + // FIXME: This thing is a total hack, and results in duplicate events being + // added to the timeline both from /sync and /notifications, and lots of + // slow and wasteful processing and pagination. The correct solution is to + // extend /messages or /search or something to filter on notifications. + + // use the fictitious token 'end'. in practice we would ideally give it + // the oldest backwards pagination token from /sync, but /sync doesn't + // know about /notifications, so we have no choice but to start paginating + // from the current point in time. This may well overlap with historical + // notifs which are then inserted into the timeline by /sync responses. + this.notifTimelineSet.resetLiveTimeline("end"); + + // we could try to paginate a single event at this point in order to get + // a more valid pagination token, but it just ends up with an out of order + // timeline. given what a mess this is and given we're going to have duplicate + // events anyway, just leave it with the dummy token for now. + /* + this.paginateNotifTimeline(this._notifTimelineSet.getLiveTimeline(), { + backwards: true, + limit: 1 + }); + */ + } + + /** + * Peek into a room and receive updates about the room. This only works if the + * history visibility for the room is world_readable. + * @param roomId - The room to attempt to peek into. + * @returns Promise which resolves: Room object + * @returns Rejects: with an error response. + */ + peekInRoom(roomId) { + var _this$peekSync2; + (_this$peekSync2 = this.peekSync) === null || _this$peekSync2 === void 0 || _this$peekSync2.stopPeeking(); + this.peekSync = new _sync.SyncApi(this, this.clientOpts, this.buildSyncApiOptions()); + return this.peekSync.peek(roomId); + } + + /** + * Stop any ongoing room peeking. + */ + stopPeeking() { + if (this.peekSync) { + this.peekSync.stopPeeking(); + this.peekSync = null; + } + } + + /** + * Set r/w flags for guest access in a room. + * @param roomId - The room to configure guest access in. + * @param opts - Options + * @returns Promise which resolves + * @returns Rejects: with an error response. + */ + setGuestAccess(roomId, opts) { + const writePromise = this.sendStateEvent(roomId, _event2.EventType.RoomGuestAccess, { + guest_access: opts.allowJoin ? _partials.GuestAccess.CanJoin : _partials.GuestAccess.Forbidden + }, ""); + let readPromise = Promise.resolve(); + if (opts.allowRead) { + readPromise = this.sendStateEvent(roomId, _event2.EventType.RoomHistoryVisibility, { + history_visibility: _partials.HistoryVisibility.WorldReadable + }, ""); + } + return Promise.all([readPromise, writePromise]).then(); // .then() to hide results for contract + } + + /** + * Requests an email verification token for the purposes of registration. + * This API requests a token from the homeserver. + * The doesServerRequireIdServerParam() method can be used to determine if + * the server requires the id_server parameter to be provided. + * + * Parameters and return value are as for requestEmailToken + * @param email - As requestEmailToken + * @param clientSecret - As requestEmailToken + * @param sendAttempt - As requestEmailToken + * @param nextLink - As requestEmailToken + * @returns Promise which resolves: As requestEmailToken + */ + requestRegisterEmailToken(email, clientSecret, sendAttempt, nextLink) { + return this.requestTokenFromEndpoint("/register/email/requestToken", { + email: email, + client_secret: clientSecret, + send_attempt: sendAttempt, + next_link: nextLink + }); + } + + /** + * Requests a text message verification token for the purposes of registration. + * This API requests a token from the homeserver. + * The doesServerRequireIdServerParam() method can be used to determine if + * the server requires the id_server parameter to be provided. + * + * @param phoneCountry - The ISO 3166-1 alpha-2 code for the country in which + * phoneNumber should be parsed relative to. + * @param phoneNumber - The phone number, in national or international format + * @param clientSecret - As requestEmailToken + * @param sendAttempt - As requestEmailToken + * @param nextLink - As requestEmailToken + * @returns Promise which resolves: As requestEmailToken + */ + requestRegisterMsisdnToken(phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) { + return this.requestTokenFromEndpoint("/register/msisdn/requestToken", { + country: phoneCountry, + phone_number: phoneNumber, + client_secret: clientSecret, + send_attempt: sendAttempt, + next_link: nextLink + }); + } + + /** + * Requests an email verification token for the purposes of adding a + * third party identifier to an account. + * This API requests a token from the homeserver. + * The doesServerRequireIdServerParam() method can be used to determine if + * the server requires the id_server parameter to be provided. + * If an account with the given email address already exists and is + * associated with an account other than the one the user is authed as, + * it will either send an email to the address informing them of this + * or return M_THREEPID_IN_USE (which one is up to the homeserver). + * + * @param email - As requestEmailToken + * @param clientSecret - As requestEmailToken + * @param sendAttempt - As requestEmailToken + * @param nextLink - As requestEmailToken + * @returns Promise which resolves: As requestEmailToken + */ + requestAdd3pidEmailToken(email, clientSecret, sendAttempt, nextLink) { + return this.requestTokenFromEndpoint("/account/3pid/email/requestToken", { + email: email, + client_secret: clientSecret, + send_attempt: sendAttempt, + next_link: nextLink + }); + } + + /** + * Requests a text message verification token for the purposes of adding a + * third party identifier to an account. + * This API proxies the identity server /validate/email/requestToken API, + * adding specific behaviour for the addition of phone numbers to an + * account, as requestAdd3pidEmailToken. + * + * @param phoneCountry - As requestRegisterMsisdnToken + * @param phoneNumber - As requestRegisterMsisdnToken + * @param clientSecret - As requestEmailToken + * @param sendAttempt - As requestEmailToken + * @param nextLink - As requestEmailToken + * @returns Promise which resolves: As requestEmailToken + */ + requestAdd3pidMsisdnToken(phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) { + return this.requestTokenFromEndpoint("/account/3pid/msisdn/requestToken", { + country: phoneCountry, + phone_number: phoneNumber, + client_secret: clientSecret, + send_attempt: sendAttempt, + next_link: nextLink + }); + } + + /** + * Requests an email verification token for the purposes of resetting + * the password on an account. + * This API proxies the identity server /validate/email/requestToken API, + * adding specific behaviour for the password resetting. Specifically, + * if no account with the given email address exists, it may either + * return M_THREEPID_NOT_FOUND or send an email + * to the address informing them of this (which one is up to the homeserver). + * + * requestEmailToken calls the equivalent API directly on the identity server, + * therefore bypassing the password reset specific logic. + * + * @param email - As requestEmailToken + * @param clientSecret - As requestEmailToken + * @param sendAttempt - As requestEmailToken + * @param nextLink - As requestEmailToken + * @returns Promise which resolves: As requestEmailToken + */ + requestPasswordEmailToken(email, clientSecret, sendAttempt, nextLink) { + return this.requestTokenFromEndpoint("/account/password/email/requestToken", { + email: email, + client_secret: clientSecret, + send_attempt: sendAttempt, + next_link: nextLink + }); + } + + /** + * Requests a text message verification token for the purposes of resetting + * the password on an account. + * This API proxies the identity server /validate/email/requestToken API, + * adding specific behaviour for the password resetting, as requestPasswordEmailToken. + * + * @param phoneCountry - As requestRegisterMsisdnToken + * @param phoneNumber - As requestRegisterMsisdnToken + * @param clientSecret - As requestEmailToken + * @param sendAttempt - As requestEmailToken + * @param nextLink - As requestEmailToken + * @returns Promise which resolves: As requestEmailToken + */ + requestPasswordMsisdnToken(phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) { + return this.requestTokenFromEndpoint("/account/password/msisdn/requestToken", { + country: phoneCountry, + phone_number: phoneNumber, + client_secret: clientSecret, + send_attempt: sendAttempt, + next_link: nextLink + }); + } + + /** + * Internal utility function for requesting validation tokens from usage-specific + * requestToken endpoints. + * + * @param endpoint - The endpoint to send the request to + * @param params - Parameters for the POST request + * @returns Promise which resolves: As requestEmailToken + */ + async requestTokenFromEndpoint(endpoint, params) { + const postParams = Object.assign({}, params); + return this.http.request(_httpApi.Method.Post, endpoint, undefined, postParams); + } + + /** + * Get the room-kind push rule associated with a room. + * @param scope - "global" or device-specific. + * @param roomId - the id of the room. + * @returns the rule or undefined. + */ + getRoomPushRule(scope, roomId) { + // There can be only room-kind push rule per room + // and its id is the room id. + if (this.pushRules) { + var _this$pushRules$scope; + return (_this$pushRules$scope = this.pushRules[scope]) === null || _this$pushRules$scope === void 0 || (_this$pushRules$scope = _this$pushRules$scope.room) === null || _this$pushRules$scope === void 0 ? void 0 : _this$pushRules$scope.find(rule => rule.rule_id === roomId); + } else { + throw new Error("SyncApi.sync() must be done before accessing to push rules."); + } + } + + /** + * Set a room-kind muting push rule in a room. + * The operation also updates MatrixClient.pushRules at the end. + * @param scope - "global" or device-specific. + * @param roomId - the id of the room. + * @param mute - the mute state. + * @returns Promise which resolves: result object + * @returns Rejects: with an error response. + */ + setRoomMutePushRule(scope, roomId, mute) { + let promise; + let hasDontNotifyRule = false; + + // Get the existing room-kind push rule if any + const roomPushRule = this.getRoomPushRule(scope, roomId); + if (roomPushRule !== null && roomPushRule !== void 0 && roomPushRule.actions.includes(_PushRules.PushRuleActionName.DontNotify)) { + hasDontNotifyRule = true; + } + if (!mute) { + // Remove the rule only if it is a muting rule + if (hasDontNotifyRule) { + promise = this.deletePushRule(scope, _PushRules.PushRuleKind.RoomSpecific, roomPushRule.rule_id); + } + } else { + if (!roomPushRule) { + promise = this.addPushRule(scope, _PushRules.PushRuleKind.RoomSpecific, roomId, { + actions: [_PushRules.PushRuleActionName.DontNotify] + }); + } else if (!hasDontNotifyRule) { + // Remove the existing one before setting the mute push rule + // This is a workaround to SYN-590 (Push rule update fails) + const deferred = utils.defer(); + this.deletePushRule(scope, _PushRules.PushRuleKind.RoomSpecific, roomPushRule.rule_id).then(() => { + this.addPushRule(scope, _PushRules.PushRuleKind.RoomSpecific, roomId, { + actions: [_PushRules.PushRuleActionName.DontNotify] + }).then(() => { + deferred.resolve(); + }).catch(err => { + deferred.reject(err); + }); + }).catch(err => { + deferred.reject(err); + }); + promise = deferred.promise; + } + } + if (promise) { + return new Promise((resolve, reject) => { + // Update this.pushRules when the operation completes + promise.then(() => { + this.getPushRules().then(result => { + this.pushRules = result; + resolve(); + }).catch(err => { + reject(err); + }); + }).catch(err => { + // Update it even if the previous operation fails. This can help the + // app to recover when push settings has been modified from another client + this.getPushRules().then(result => { + this.pushRules = result; + reject(err); + }).catch(err2 => { + reject(err); + }); + }); + }); + } + } + searchMessageText(opts) { + const roomEvents = { + search_term: opts.query + }; + if ("keys" in opts) { + roomEvents.keys = opts.keys; + } + return this.search({ + body: { + search_categories: { + room_events: roomEvents + } + } + }); + } + + /** + * Perform a server-side search for room events. + * + * The returned promise resolves to an object containing the fields: + * + * * count: estimate of the number of results + * * next_batch: token for back-pagination; if undefined, there are no more results + * * highlights: a list of words to highlight from the stemming algorithm + * * results: a list of results + * + * Each entry in the results list is a SearchResult. + * + * @returns Promise which resolves: result object + * @returns Rejects: with an error response. + */ + searchRoomEvents(opts) { + // TODO: support search groups + + const body = { + search_categories: { + room_events: { + search_term: opts.term, + filter: opts.filter, + order_by: _search.SearchOrderBy.Recent, + event_context: { + before_limit: 1, + after_limit: 1, + include_profile: true + } + } + } + }; + const searchResults = { + _query: body, + results: [], + highlights: [] + }; + return this.search({ + body: body + }).then(res => this.processRoomEventsSearch(searchResults, res)); + } + + /** + * Take a result from an earlier searchRoomEvents call, and backfill results. + * + * @param searchResults - the results object to be updated + * @returns Promise which resolves: updated result object + * @returns Rejects: with an error response. + */ + backPaginateRoomEventsSearch(searchResults) { + // TODO: we should implement a backoff (as per scrollback()) to deal more + // nicely with HTTP errors. + + if (!searchResults.next_batch) { + return Promise.reject(new Error("Cannot backpaginate event search any further")); + } + if (searchResults.pendingRequest) { + // already a request in progress - return the existing promise + return searchResults.pendingRequest; + } + const searchOpts = { + body: searchResults._query, + next_batch: searchResults.next_batch + }; + const promise = this.search(searchOpts, searchResults.abortSignal).then(res => this.processRoomEventsSearch(searchResults, res)).finally(() => { + searchResults.pendingRequest = undefined; + }); + searchResults.pendingRequest = promise; + return promise; + } + + /** + * helper for searchRoomEvents and backPaginateRoomEventsSearch. Processes the + * response from the API call and updates the searchResults + * + * @returns searchResults + * @internal + */ + // XXX: Intended private, used in code + processRoomEventsSearch(searchResults, response) { + var _roomEvents$results$l, _roomEvents$results; + const roomEvents = response.search_categories.room_events; + searchResults.count = roomEvents.count; + searchResults.next_batch = roomEvents.next_batch; + + // combine the highlight list with our existing list; + const highlights = new Set(roomEvents.highlights); + searchResults.highlights.forEach(hl => { + highlights.add(hl); + }); + + // turn it back into a list. + searchResults.highlights = Array.from(highlights); + const mapper = this.getEventMapper(); + + // append the new results to our existing results + const resultsLength = (_roomEvents$results$l = (_roomEvents$results = roomEvents.results) === null || _roomEvents$results === void 0 ? void 0 : _roomEvents$results.length) !== null && _roomEvents$results$l !== void 0 ? _roomEvents$results$l : 0; + for (let i = 0; i < resultsLength; i++) { + const sr = _searchResult.SearchResult.fromJson(roomEvents.results[i], mapper); + const room = this.getRoom(sr.context.getEvent().getRoomId()); + if (room) { + // Copy over a known event sender if we can + for (const ev of sr.context.getTimeline()) { + const sender = room.getMember(ev.getSender()); + if (!ev.sender && sender) ev.sender = sender; + } + } + searchResults.results.push(sr); + } + return searchResults; + } + + /** + * Populate the store with rooms the user has left. + * @returns Promise which resolves: TODO - Resolved when the rooms have + * been added to the data store. + * @returns Rejects: with an error response. + */ + syncLeftRooms() { + // Guard against multiple calls whilst ongoing and multiple calls post success + if (this.syncedLeftRooms) { + return Promise.resolve([]); // don't call syncRooms again if it succeeded. + } + if (this.syncLeftRoomsPromise) { + return this.syncLeftRoomsPromise; // return the ongoing request + } + const syncApi = new _sync.SyncApi(this, this.clientOpts, this.buildSyncApiOptions()); + this.syncLeftRoomsPromise = syncApi.syncLeftRooms(); + + // cleanup locks + this.syncLeftRoomsPromise.then(() => { + this.logger.debug("Marking success of sync left room request"); + this.syncedLeftRooms = true; // flip the bit on success + }).finally(() => { + this.syncLeftRoomsPromise = undefined; // cleanup ongoing request state + }); + return this.syncLeftRoomsPromise; + } + + /** + * Create a new filter. + * @param content - The HTTP body for the request + * @returns Promise which resolves to a Filter object. + * @returns Rejects: with an error response. + */ + createFilter(content) { + const path = utils.encodeUri("/user/$userId/filter", { + $userId: this.credentials.userId + }); + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, content).then(response => { + // persist the filter + const filter = _filter.Filter.fromJson(this.credentials.userId, response.filter_id, content); + this.store.storeFilter(filter); + return filter; + }); + } + + /** + * Retrieve a filter. + * @param userId - The user ID of the filter owner + * @param filterId - The filter ID to retrieve + * @param allowCached - True to allow cached filters to be returned. + * Default: True. + * @returns Promise which resolves: a Filter object + * @returns Rejects: with an error response. + */ + getFilter(userId, filterId, allowCached) { + if (allowCached) { + const filter = this.store.getFilter(userId, filterId); + if (filter) { + return Promise.resolve(filter); + } + } + const path = utils.encodeUri("/user/$userId/filter/$filterId", { + $userId: userId, + $filterId: filterId + }); + return this.http.authedRequest(_httpApi.Method.Get, path).then(response => { + // persist the filter + const filter = _filter.Filter.fromJson(userId, filterId, response); + this.store.storeFilter(filter); + return filter; + }); + } + + /** + * @returns Filter ID + */ + async getOrCreateFilter(filterName, filter) { + const filterId = this.store.getFilterIdByName(filterName); + let existingId; + if (filterId) { + // check that the existing filter matches our expectations + try { + const existingFilter = await this.getFilter(this.credentials.userId, filterId, true); + if (existingFilter) { + const oldDef = existingFilter.getDefinition(); + const newDef = filter.getDefinition(); + if (utils.deepCompare(oldDef, newDef)) { + // super, just use that. + // debuglog("Using existing filter ID %s: %s", filterId, + // JSON.stringify(oldDef)); + existingId = filterId; + } + } + } catch (error) { + // Synapse currently returns the following when the filter cannot be found: + // { + // errcode: "M_UNKNOWN", + // name: "M_UNKNOWN", + // message: "No row found", + // } + if (error.errcode !== "M_UNKNOWN" && error.errcode !== "M_NOT_FOUND") { + throw error; + } + } + // if the filter doesn't exist anymore on the server, remove from store + if (!existingId) { + this.store.setFilterIdByName(filterName, undefined); + } + } + if (existingId) { + return existingId; + } + + // create a new filter + const createdFilter = await this.createFilter(filter.getDefinition()); + this.store.setFilterIdByName(filterName, createdFilter.filterId); + return createdFilter.filterId; + } + + /** + * Gets a bearer token from the homeserver that the user can + * present to a third party in order to prove their ownership + * of the Matrix account they are logged into. + * @returns Promise which resolves: Token object + * @returns Rejects: with an error response. + */ + getOpenIdToken() { + const path = utils.encodeUri("/user/$userId/openid/request_token", { + $userId: this.credentials.userId + }); + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, {}); + } + /** + * @returns Promise which resolves: ITurnServerResponse object + * @returns Rejects: with an error response. + */ + turnServer() { + return this.http.authedRequest(_httpApi.Method.Get, "/voip/turnServer"); + } + + /** + * Get the TURN servers for this homeserver. + * @returns The servers or an empty list. + */ + getTurnServers() { + return this.turnServers || []; + } + + /** + * Get the unix timestamp (in milliseconds) at which the current + * TURN credentials (from getTurnServers) expire + * @returns The expiry timestamp in milliseconds + */ + getTurnServersExpiry() { + return this.turnServersExpiry; + } + get pollingTurnServers() { + return this.checkTurnServersIntervalID !== undefined; + } + + // XXX: Intended private, used in code. + async checkTurnServers() { + if (!this.canSupportVoip) { + return; + } + let credentialsGood = false; + const remainingTime = this.turnServersExpiry - Date.now(); + if (remainingTime > TURN_CHECK_INTERVAL) { + this.logger.debug("TURN creds are valid for another " + remainingTime + " ms: not fetching new ones."); + credentialsGood = true; + } else { + this.logger.debug("Fetching new TURN credentials"); + try { + const res = await this.turnServer(); + if (res.uris) { + this.logger.debug("Got TURN URIs: " + res.uris + " refresh in " + res.ttl + " secs"); + // map the response to a format that can be fed to RTCPeerConnection + const servers = { + urls: res.uris, + username: res.username, + credential: res.password + }; + this.turnServers = [servers]; + // The TTL is in seconds but we work in ms + this.turnServersExpiry = Date.now() + res.ttl * 1000; + credentialsGood = true; + this.emit(ClientEvent.TurnServers, this.turnServers); + } + } catch (err) { + this.logger.error("Failed to get TURN URIs", err); + if (err.httpStatus === 403) { + // We got a 403, so there's no point in looping forever. + this.logger.info("TURN access unavailable for this account: stopping credentials checks"); + if (this.checkTurnServersIntervalID !== null) global.clearInterval(this.checkTurnServersIntervalID); + this.checkTurnServersIntervalID = undefined; + this.emit(ClientEvent.TurnServersError, err, true); // fatal + } else { + // otherwise, if we failed for whatever reason, try again the next time we're called. + this.emit(ClientEvent.TurnServersError, err, false); // non-fatal + } + } + } + return credentialsGood; + } + + /** + * Set whether to allow a fallback ICE server should be used for negotiating a + * WebRTC connection if the homeserver doesn't provide any servers. Defaults to + * false. + * + */ + setFallbackICEServerAllowed(allow) { + this.fallbackICEServerAllowed = allow; + } + + /** + * Get whether to allow a fallback ICE server should be used for negotiating a + * WebRTC connection if the homeserver doesn't provide any servers. Defaults to + * false. + * + * @returns + */ + isFallbackICEServerAllowed() { + return this.fallbackICEServerAllowed; + } + + /** + * Determines if the current user is an administrator of the Synapse homeserver. + * Returns false if untrue or the homeserver does not appear to be a Synapse + * homeserver. This function is implementation specific and may change + * as a result. + * @returns true if the user appears to be a Synapse administrator. + */ + isSynapseAdministrator() { + const path = utils.encodeUri("/_synapse/admin/v1/users/$userId/admin", { + $userId: this.getUserId() + }); + return this.http.authedRequest(_httpApi.Method.Get, path, undefined, undefined, { + prefix: "" + }).then(r => r.admin); // pull out the specific boolean we want + } + + /** + * Performs a whois lookup on a user using Synapse's administrator API. + * This function is implementation specific and may change as a + * result. + * @param userId - the User ID to look up. + * @returns the whois response - see Synapse docs for information. + */ + whoisSynapseUser(userId) { + const path = utils.encodeUri("/_synapse/admin/v1/whois/$userId", { + $userId: userId + }); + return this.http.authedRequest(_httpApi.Method.Get, path, undefined, undefined, { + prefix: "" + }); + } + + /** + * Deactivates a user using Synapse's administrator API. This + * function is implementation specific and may change as a result. + * @param userId - the User ID to deactivate. + * @returns the deactivate response - see Synapse docs for information. + */ + deactivateSynapseUser(userId) { + const path = utils.encodeUri("/_synapse/admin/v1/deactivate/$userId", { + $userId: userId + }); + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, undefined, { + prefix: "" + }); + } + async fetchClientWellKnown() { + var _this$getDomain; + // `getRawClientConfig` does not throw or reject on network errors, instead + // it absorbs errors and returns `{}`. + this.clientWellKnownPromise = _autodiscovery.AutoDiscovery.getRawClientConfig((_this$getDomain = this.getDomain()) !== null && _this$getDomain !== void 0 ? _this$getDomain : undefined); + this.clientWellKnown = await this.clientWellKnownPromise; + this.emit(ClientEvent.ClientWellKnown, this.clientWellKnown); + } + getClientWellKnown() { + return this.clientWellKnown; + } + waitForClientWellKnown() { + if (!this.clientRunning) { + throw new Error("Client is not running"); + } + return this.clientWellKnownPromise; + } + + /** + * store client options with boolean/string/numeric values + * to know in the next session what flags the sync data was + * created with (e.g. lazy loading) + * @returns for store operation + */ + storeClientOptions() { + // XXX: Intended private, used in code + const primTypes = ["boolean", "string", "number"]; + const serializableOpts = Object.entries(this.clientOpts).filter(([key, value]) => { + return primTypes.includes(typeof value); + }).reduce((obj, [key, value]) => { + obj[key] = value; + return obj; + }, {}); + return this.store.storeClientOptions(serializableOpts); + } + + /** + * Gets a set of room IDs in common with another user. + * + * Note: This endpoint is unstable, and can throw an `Error`. + * Check progress on [MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666) for more details. + * + * @param userId - The userId to check. + * @returns Promise which resolves to an array of rooms + * @returns Rejects: with an error response. + */ + // TODO: on spec release, rename this to getMutualRooms + // eslint-disable-next-line + async _unstable_getSharedRooms(userId) { + // Initial variant of the MSC + const sharedRoomsSupport = await this.doesServerSupportUnstableFeature(UNSTABLE_MSC2666_SHARED_ROOMS); + + // Newer variant that renamed shared rooms to mutual rooms + const mutualRoomsSupport = await this.doesServerSupportUnstableFeature(UNSTABLE_MSC2666_MUTUAL_ROOMS); + + // Latest variant that changed from path elements to query elements + const queryMutualRoomsSupport = await this.doesServerSupportUnstableFeature(UNSTABLE_MSC2666_QUERY_MUTUAL_ROOMS); + if (!sharedRoomsSupport && !mutualRoomsSupport && !queryMutualRoomsSupport) { + throw Error("Server does not support the Mutual Rooms API"); + } + let path; + let query; + + // Cascading unstable support switching. + if (queryMutualRoomsSupport) { + path = "/uk.half-shot.msc2666/user/mutual_rooms"; + query = { + user_id: userId + }; + } else { + path = utils.encodeUri(`/uk.half-shot.msc2666/user/${mutualRoomsSupport ? "mutual_rooms" : "shared_rooms"}/$userId`, { + $userId: userId + }); + query = {}; + } + + // Accumulated rooms + const rooms = []; + let token = null; + do { + const tokenQuery = {}; + if (token != null && queryMutualRoomsSupport) { + tokenQuery["batch_token"] = token; + } + const res = await this.http.authedRequest(_httpApi.Method.Get, path, _objectSpread(_objectSpread({}, query), tokenQuery), undefined, { + prefix: _httpApi.ClientPrefix.Unstable + }); + rooms.push(...res.joined); + if (res.next_batch_token !== undefined) { + token = res.next_batch_token; + } else { + token = null; + } + } while (token != null); + return rooms; + } + + /** + * Get the API versions supported by the server, along with any + * unstable APIs it supports + * @returns The server /versions response + */ + async getVersions() { + if (this.serverVersionsPromise) { + return this.serverVersionsPromise; + } + + // We send an authenticated request as of MSC4026 + this.serverVersionsPromise = this.http.authedRequest(_httpApi.Method.Get, "/_matrix/client/versions", undefined, undefined, { + prefix: "" + }).catch(e => { + // Need to unset this if it fails, otherwise we'll never retry + this.serverVersionsPromise = undefined; + // but rethrow the exception to anything that was waiting + throw e; + }); + const serverVersions = await this.serverVersionsPromise; + this.canSupport = await (0, _feature.buildFeatureSupportMap)(serverVersions); + return this.serverVersionsPromise; + } + + /** + * Check if a particular spec version is supported by the server. + * @param version - The spec version (such as "r0.5.0") to check for. + * @returns Whether it is supported + */ + async isVersionSupported(version) { + const { + versions + } = await this.getVersions(); + return versions && versions.includes(version); + } + + /** + * Query the server to see if it lists support for an unstable feature + * in the /versions response + * @param feature - the feature name + * @returns true if the feature is supported + */ + async doesServerSupportUnstableFeature(feature) { + const response = await this.getVersions(); + if (!response) return false; + const unstableFeatures = response["unstable_features"]; + return unstableFeatures && !!unstableFeatures[feature]; + } + + /** + * Query the server to see if it is forcing encryption to be enabled for + * a given room preset, based on the /versions response. + * @param presetName - The name of the preset to check. + * @returns true if the server is forcing encryption + * for the preset. + */ + async doesServerForceEncryptionForPreset(presetName) { + const response = await this.getVersions(); + if (!response) return false; + const unstableFeatures = response["unstable_features"]; + + // The preset name in the versions response will be without the _chat suffix. + const versionsPresetName = presetName.includes("_chat") ? presetName.substring(0, presetName.indexOf("_chat")) : presetName; + return unstableFeatures && !!unstableFeatures[`io.element.e2ee_forced.${versionsPresetName}`]; + } + async doesServerSupportThread() { + if (await this.isVersionSupported("v1.4")) { + return { + threads: _thread.FeatureSupport.Stable, + list: _thread.FeatureSupport.Stable, + fwdPagination: _thread.FeatureSupport.Stable + }; + } + try { + const [threadUnstable, threadStable, listUnstable, listStable, fwdPaginationUnstable, fwdPaginationStable] = await Promise.all([this.doesServerSupportUnstableFeature("org.matrix.msc3440"), this.doesServerSupportUnstableFeature("org.matrix.msc3440.stable"), this.doesServerSupportUnstableFeature("org.matrix.msc3856"), this.doesServerSupportUnstableFeature("org.matrix.msc3856.stable"), this.doesServerSupportUnstableFeature("org.matrix.msc3715"), this.doesServerSupportUnstableFeature("org.matrix.msc3715.stable")]); + return { + threads: (0, _thread.determineFeatureSupport)(threadStable, threadUnstable), + list: (0, _thread.determineFeatureSupport)(listStable, listUnstable), + fwdPagination: (0, _thread.determineFeatureSupport)(fwdPaginationStable, fwdPaginationUnstable) + }; + } catch (e) { + return { + threads: _thread.FeatureSupport.None, + list: _thread.FeatureSupport.None, + fwdPagination: _thread.FeatureSupport.None + }; + } + } + + /** + * Get if lazy loading members is being used. + * @returns Whether or not members are lazy loaded by this client + */ + hasLazyLoadMembersEnabled() { + var _this$clientOpts6; + return !!((_this$clientOpts6 = this.clientOpts) !== null && _this$clientOpts6 !== void 0 && _this$clientOpts6.lazyLoadMembers); + } + + /** + * Set a function which is called when /sync returns a 'limited' response. + * It is called with a room ID and returns a boolean. It should return 'true' if the SDK + * can SAFELY remove events from this room. It may not be safe to remove events if there + * are other references to the timelines for this room, e.g because the client is + * actively viewing events in this room. + * Default: returns false. + * @param cb - The callback which will be invoked. + */ + setCanResetTimelineCallback(cb) { + this.canResetTimelineCallback = cb; + } + + /** + * Get the callback set via `setCanResetTimelineCallback`. + * @returns The callback or null + */ + getCanResetTimelineCallback() { + return this.canResetTimelineCallback; + } + + /** + * Returns relations for a given event. Handles encryption transparently, + * with the caveat that the amount of events returned might be 0, even though you get a nextBatch. + * When the returned promise resolves, all messages should have finished trying to decrypt. + * @param roomId - the room of the event + * @param eventId - the id of the event + * @param relationType - the rel_type of the relations requested + * @param eventType - the event type of the relations requested + * @param opts - options with optional values for the request. + * @returns an object with `events` as `MatrixEvent[]` and optionally `nextBatch` if more relations are available. + */ + async relations(roomId, eventId, relationType, eventType, opts = { + dir: _eventTimeline.Direction.Backward + }) { + var _result$next_batch, _result$prev_batch; + const fetchedEventType = eventType ? this.getEncryptedIfNeededEventType(roomId, eventType) : null; + const [eventResult, result] = await Promise.all([this.fetchRoomEvent(roomId, eventId), this.fetchRelations(roomId, eventId, relationType, fetchedEventType, opts)]); + const mapper = this.getEventMapper(); + const originalEvent = eventResult ? mapper(eventResult) : undefined; + let events = result.chunk.map(mapper); + if (fetchedEventType === _event2.EventType.RoomMessageEncrypted) { + const allEvents = originalEvent ? events.concat(originalEvent) : events; + await Promise.all(allEvents.map(e => this.decryptEventIfNeeded(e))); + if (eventType !== null) { + events = events.filter(e => e.getType() === eventType); + } + } + if (originalEvent && relationType === _event2.RelationType.Replace) { + events = events.filter(e => e.getSender() === originalEvent.getSender()); + } + return { + originalEvent: originalEvent !== null && originalEvent !== void 0 ? originalEvent : null, + events, + nextBatch: (_result$next_batch = result.next_batch) !== null && _result$next_batch !== void 0 ? _result$next_batch : null, + prevBatch: (_result$prev_batch = result.prev_batch) !== null && _result$prev_batch !== void 0 ? _result$prev_batch : null + }; + } + + /** + * The app may wish to see if we have a key cached without + * triggering a user interaction. + */ + getCrossSigningCacheCallbacks() { + var _this$crypto5; + // XXX: Private member access + return (_this$crypto5 = this.crypto) === null || _this$crypto5 === void 0 ? void 0 : _this$crypto5.crossSigningInfo.getCacheCallbacks(); + } + + /** + * Generates a random string suitable for use as a client secret. This + * method is experimental and may change. + * @returns A new client secret + */ + generateClientSecret() { + return (0, _randomstring.randomString)(32); + } + + /** + * Attempts to decrypt an event + * @param event - The event to decrypt + * @returns A decryption promise + */ + decryptEventIfNeeded(event, options) { + if (event.shouldAttemptDecryption() && this.isCryptoEnabled()) { + event.attemptDecryption(this.cryptoBackend, options); + } + if (event.isBeingDecrypted()) { + return event.getDecryptionPromise(); + } else { + return Promise.resolve(); + } + } + termsUrlForService(serviceType, baseUrl) { + switch (serviceType) { + case _serviceTypes.SERVICE_TYPES.IS: + return this.http.getUrl("/terms", undefined, _httpApi.IdentityPrefix.V2, baseUrl); + case _serviceTypes.SERVICE_TYPES.IM: + return this.http.getUrl("/terms", undefined, "/_matrix/integrations/v1", baseUrl); + default: + throw new Error("Unsupported service type"); + } + } + + /** + * Get the Homeserver URL of this client + * @returns Homeserver URL of this client + */ + getHomeserverUrl() { + return this.baseUrl; + } + + /** + * Get the identity server URL of this client + * @param stripProto - whether or not to strip the protocol from the URL + * @returns Identity server URL of this client + */ + getIdentityServerUrl(stripProto = false) { + var _this$idBaseUrl, _this$idBaseUrl2; + if (stripProto && ((_this$idBaseUrl = this.idBaseUrl) !== null && _this$idBaseUrl !== void 0 && _this$idBaseUrl.startsWith("http://") || (_this$idBaseUrl2 = this.idBaseUrl) !== null && _this$idBaseUrl2 !== void 0 && _this$idBaseUrl2.startsWith("https://"))) { + return this.idBaseUrl.split("://")[1]; + } + return this.idBaseUrl; + } + + /** + * Set the identity server URL of this client + * @param url - New identity server URL + */ + setIdentityServerUrl(url) { + this.idBaseUrl = utils.ensureNoTrailingSlash(url); + this.http.setIdBaseUrl(this.idBaseUrl); + } + + /** + * Get the access token associated with this account. + * @returns The access_token or null + */ + getAccessToken() { + return this.http.opts.accessToken || null; + } + + /** + * Get the refresh token associated with this account. + * @returns The refresh_token or null + */ + getRefreshToken() { + var _this$http$opts$refre; + return (_this$http$opts$refre = this.http.opts.refreshToken) !== null && _this$http$opts$refre !== void 0 ? _this$http$opts$refre : null; + } + + /** + * Set the access token associated with this account. + * @param token - The new access token. + */ + setAccessToken(token) { + this.http.opts.accessToken = token; + // The /versions response can vary for different users so clear the cache + this.serverVersionsPromise = undefined; + } + + /** + * @returns true if there is a valid access_token for this client. + */ + isLoggedIn() { + return this.http.opts.accessToken !== undefined; + } + + /** + * Make up a new transaction id + * + * @returns a new, unique, transaction id + */ + makeTxnId() { + return "m" + new Date().getTime() + "." + this.txnCtr++; + } + + /** + * Check whether a username is available prior to registration. An error response + * indicates an invalid/unavailable username. + * @param username - The username to check the availability of. + * @returns Promise which resolves: to boolean of whether the username is available. + */ + isUsernameAvailable(username) { + return this.http.authedRequest(_httpApi.Method.Get, "/register/available", { + username + }).then(response => { + return response.available; + }).catch(response => { + if (response.errcode === "M_USER_IN_USE") { + return false; + } + return Promise.reject(response); + }); + } + + /** + * @param bindThreepids - Set key 'email' to true to bind any email + * threepid uses during registration in the identity server. Set 'msisdn' to + * true to bind msisdn. + * @returns Promise which resolves to a RegisterResponse object + * @returns Rejects: with an error response. + */ + register(username, password, sessionId, auth, bindThreepids, guestAccessToken, inhibitLogin) { + // backwards compat + if (bindThreepids === true) { + bindThreepids = { + email: true + }; + } else if (bindThreepids === null || bindThreepids === undefined || bindThreepids === false) { + bindThreepids = {}; + } + if (sessionId) { + auth.session = sessionId; + } + const params = { + auth: auth, + refresh_token: true // always ask for a refresh token - does nothing if unsupported + }; + if (username !== undefined && username !== null) { + params.username = username; + } + if (password !== undefined && password !== null) { + params.password = password; + } + if (bindThreepids.email) { + params.bind_email = true; + } + if (bindThreepids.msisdn) { + params.bind_msisdn = true; + } + if (guestAccessToken !== undefined && guestAccessToken !== null) { + params.guest_access_token = guestAccessToken; + } + if (inhibitLogin !== undefined && inhibitLogin !== null) { + params.inhibit_login = inhibitLogin; + } + // Temporary parameter added to make the register endpoint advertise + // msisdn flows. This exists because there are clients that break + // when given stages they don't recognise. This parameter will cease + // to be necessary once these old clients are gone. + // Only send it if we send any params at all (the password param is + // mandatory, so if we send any params, we'll send the password param) + if (password !== undefined && password !== null) { + params.x_show_msisdn = true; + } + return this.registerRequest(params); + } + + /** + * Register a guest account. + * This method returns the auth info needed to create a new authenticated client, + * Remember to call `setGuest(true)` on the (guest-)authenticated client, e.g: + * ```javascript + * const tmpClient = await sdk.createClient(MATRIX_INSTANCE); + * const { user_id, device_id, access_token } = tmpClient.registerGuest(); + * const client = createClient({ + * baseUrl: MATRIX_INSTANCE, + * accessToken: access_token, + * userId: user_id, + * deviceId: device_id, + * }) + * client.setGuest(true); + * ``` + * + * @param body - JSON HTTP body to provide. + * @returns Promise which resolves: JSON object that contains: + * `{ user_id, device_id, access_token, home_server }` + * @returns Rejects: with an error response. + */ + registerGuest({ + body + } = {}) { + return this.registerRequest(body || {}, "guest"); + } + + /** + * @param data - parameters for registration request + * @param kind - type of user to register. may be "guest" + * @returns Promise which resolves: to the /register response + * @returns Rejects: with an error response. + */ + registerRequest(data, kind) { + const params = {}; + if (kind) { + params.kind = kind; + } + return this.http.request(_httpApi.Method.Post, "/register", params, data); + } + + /** + * Refreshes an access token using a provided refresh token. The refresh token + * must be valid for the current access token known to the client instance. + * + * Note that this function will not cause a logout if the token is deemed + * unknown by the server - the caller is responsible for managing logout + * actions on error. + * @param refreshToken - The refresh token. + * @returns Promise which resolves to the new token. + * @returns Rejects with an error response. + */ + refreshToken(refreshToken) { + const performRefreshRequestWithPrefix = prefix => this.http.authedRequest(_httpApi.Method.Post, "/refresh", undefined, { + refresh_token: refreshToken + }, { + prefix, + inhibitLogoutEmit: true // we don't want to cause logout loops + }); + + // First try with the (specced) /v3/ prefix. + // However, before Synapse 1.72.0, Synapse incorrectly required a /v1/ prefix, so we fall + // back to that if the request fails, for backwards compatibility. + return performRefreshRequestWithPrefix(_httpApi.ClientPrefix.V3).catch(e => { + if (e.errcode === "M_UNRECOGNIZED") { + return performRefreshRequestWithPrefix(_httpApi.ClientPrefix.V1); + } + throw e; + }); + } + + /** + * @returns Promise which resolves to the available login flows + * @returns Rejects: with an error response. + */ + loginFlows() { + return this.http.request(_httpApi.Method.Get, "/login"); + } + + /** + * @returns Promise which resolves to a LoginResponse object + * @returns Rejects: with an error response. + */ + login(loginType, data) { + return this.http.authedRequest(_httpApi.Method.Post, "/login", undefined, _objectSpread(_objectSpread({}, data), {}, { + type: loginType + })).then(response => { + if (response.access_token && response.user_id) { + this.http.opts.accessToken = response.access_token; + this.credentials = { + userId: response.user_id + }; + } + return response; + }); + } + + /** + * @returns Promise which resolves to a LoginResponse object + * @returns Rejects: with an error response. + */ + loginWithPassword(user, password) { + return this.login("m.login.password", { + user: user, + password: password + }); + } + + /** + * @param redirectUrl - The URL to redirect to after the HS + * authenticates with CAS. + * @returns The HS URL to hit to begin the CAS login process. + */ + getCasLoginUrl(redirectUrl) { + return this.getSsoLoginUrl(redirectUrl, "cas"); + } + + /** + * @param redirectUrl - The URL to redirect to after the HS + * authenticates with the SSO. + * @param loginType - The type of SSO login we are doing (sso or cas). + * Defaults to 'sso'. + * @param idpId - The ID of the Identity Provider being targeted, optional. + * @param action - the SSO flow to indicate to the IdP, optional. + * @returns The HS URL to hit to begin the SSO login process. + */ + getSsoLoginUrl(redirectUrl, loginType = "sso", idpId, action) { + let url = "/login/" + loginType + "/redirect"; + if (idpId) { + url += "/" + idpId; + } + const params = { + redirectUrl, + [SSO_ACTION_PARAM.unstable]: action + }; + return this.http.getUrl(url, params).href; + } + + /** + * @param token - Login token previously received from homeserver + * @returns Promise which resolves to a LoginResponse object + * @returns Rejects: with an error response. + */ + loginWithToken(token) { + return this.login("m.login.token", { + token: token + }); + } + + /** + * Logs out the current session. + * Obviously, further calls that require authorisation should fail after this + * method is called. The state of the MatrixClient object is not affected: + * it is up to the caller to either reset or destroy the MatrixClient after + * this method succeeds. + * @param stopClient - whether to stop the client before calling /logout to prevent invalid token errors. + * @returns Promise which resolves: On success, the empty object `{}` + */ + async logout(stopClient = false) { + var _this$crypto6; + if ((_this$crypto6 = this.crypto) !== null && _this$crypto6 !== void 0 && (_this$crypto6 = _this$crypto6.backupManager) !== null && _this$crypto6 !== void 0 && _this$crypto6.getKeyBackupEnabled()) { + try { + while ((await this.crypto.backupManager.backupPendingKeys(200)) > 0); + } catch (err) { + this.logger.error("Key backup request failed when logging out. Some keys may be missing from backup", err); + } + } + if (stopClient) { + this.stopClient(); + this.http.abort(); + } + return this.http.authedRequest(_httpApi.Method.Post, "/logout"); + } + + /** + * Deactivates the logged-in account. + * Obviously, further calls that require authorisation should fail after this + * method is called. The state of the MatrixClient object is not affected: + * it is up to the caller to either reset or destroy the MatrixClient after + * this method succeeds. + * @param auth - Optional. Auth data to supply for User-Interactive auth. + * @param erase - Optional. If set, send as `erase` attribute in the + * JSON request body, indicating whether the account should be erased. Defaults + * to false. + * @returns Promise which resolves: On success, the empty object + */ + deactivateAccount(auth, erase) { + const body = {}; + if (auth) { + body.auth = auth; + } + if (erase !== undefined) { + body.erase = erase; + } + return this.http.authedRequest(_httpApi.Method.Post, "/account/deactivate", undefined, body); + } + + /** + * Make a request for an `m.login.token` to be issued as per + * https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv1loginget_token + * + * The server may require User-Interactive auth. + * + * @param auth - Optional. Auth data to supply for User-Interactive auth. + * @returns Promise which resolves: On success, the token response + * or UIA auth data. + */ + async requestLoginToken(auth) { + const body = { + auth + }; + return this.http.authedRequest(_httpApi.Method.Post, "/login/get_token", undefined, + // no query params + body, { + prefix: _httpApi.ClientPrefix.V1 + }); + } + + /** + * Get the fallback URL to use for unknown interactive-auth stages. + * + * @param loginType - the type of stage being attempted + * @param authSessionId - the auth session ID provided by the homeserver + * + * @returns HS URL to hit to for the fallback interface + */ + getFallbackAuthUrl(loginType, authSessionId) { + const path = utils.encodeUri("/auth/$loginType/fallback/web", { + $loginType: loginType + }); + return this.http.getUrl(path, { + session: authSessionId + }).href; + } + + /** + * Create a new room. + * @param options - a list of options to pass to the /createRoom API. + * @returns Promise which resolves: `{room_id: {string}}` + * @returns Rejects: with an error response. + */ + async createRoom(options) { + var _this$identityServer2; + // eslint-disable-line camelcase + // some valid options include: room_alias_name, visibility, invite + + // inject the id_access_token if inviting 3rd party addresses + const invitesNeedingToken = (options.invite_3pid || []).filter(i => !i.id_access_token); + if (invitesNeedingToken.length > 0 && (_this$identityServer2 = this.identityServer) !== null && _this$identityServer2 !== void 0 && _this$identityServer2.getAccessToken) { + const identityAccessToken = await this.identityServer.getAccessToken(); + if (identityAccessToken) { + for (const invite of invitesNeedingToken) { + invite.id_access_token = identityAccessToken; + } + } + } + return this.http.authedRequest(_httpApi.Method.Post, "/createRoom", undefined, options); + } + + /** + * Fetches relations for a given event + * @param roomId - the room of the event + * @param eventId - the id of the event + * @param relationType - the rel_type of the relations requested + * @param eventType - the event type of the relations requested + * @param opts - options with optional values for the request. + * @returns the response, with chunk, prev_batch and, next_batch. + */ + fetchRelations(roomId, eventId, relationType, eventType, opts = { + dir: _eventTimeline.Direction.Backward + }) { + let params = opts; + if (_thread.Thread.hasServerSideFwdPaginationSupport === _thread.FeatureSupport.Experimental) { + params = (0, _utils.replaceParam)("dir", "org.matrix.msc3715.dir", params); + } + if (this.canSupport.get(_feature.Feature.RelationsRecursion) === _feature.ServerSupport.Unstable) { + params = (0, _utils.replaceParam)("recurse", "org.matrix.msc3981.recurse", params); + } + const queryString = utils.encodeParams(params); + let templatedUrl = "/rooms/$roomId/relations/$eventId"; + if (relationType !== null) { + templatedUrl += "/$relationType"; + if (eventType !== null) { + templatedUrl += "/$eventType"; + } + } else if (eventType !== null) { + this.logger.warn(`eventType: ${eventType} ignored when fetching + relations as relationType is null`); + eventType = null; + } + const path = utils.encodeUri(templatedUrl + "?" + queryString, { + $roomId: roomId, + $eventId: eventId, + $relationType: relationType, + $eventType: eventType + }); + return this.http.authedRequest(_httpApi.Method.Get, path, undefined, undefined, { + prefix: _httpApi.ClientPrefix.V1 + }); + } + + /** + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + roomState(roomId) { + const path = utils.encodeUri("/rooms/$roomId/state", { + $roomId: roomId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * Get an event in a room by its event id. + * + * @returns Promise which resolves to an object containing the event. + * @returns Rejects: with an error response. + */ + fetchRoomEvent(roomId, eventId) { + const path = utils.encodeUri("/rooms/$roomId/event/$eventId", { + $roomId: roomId, + $eventId: eventId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * @param includeMembership - the membership type to include in the response + * @param excludeMembership - the membership type to exclude from the response + * @param atEventId - the id of the event for which moment in the timeline the members should be returned for + * @returns Promise which resolves: dictionary of userid to profile information + * @returns Rejects: with an error response. + */ + members(roomId, includeMembership, excludeMembership, atEventId) { + const queryParams = {}; + if (includeMembership) { + queryParams.membership = includeMembership; + } + if (excludeMembership) { + queryParams.not_membership = excludeMembership; + } + if (atEventId) { + queryParams.at = atEventId; + } + const queryString = utils.encodeParams(queryParams); + const path = utils.encodeUri("/rooms/$roomId/members?" + queryString, { + $roomId: roomId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * Upgrades a room to a new protocol version + * @param newVersion - The target version to upgrade to + * @returns Promise which resolves: Object with key 'replacement_room' + * @returns Rejects: with an error response. + */ + upgradeRoom(roomId, newVersion) { + // eslint-disable-line camelcase + const path = utils.encodeUri("/rooms/$roomId/upgrade", { + $roomId: roomId + }); + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, { + new_version: newVersion + }); + } + + /** + * Retrieve a state event. + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + getStateEvent(roomId, eventType, stateKey) { + const pathParams = { + $roomId: roomId, + $eventType: eventType, + $stateKey: stateKey + }; + let path = utils.encodeUri("/rooms/$roomId/state/$eventType", pathParams); + if (stateKey !== undefined) { + path = utils.encodeUri(path + "/$stateKey", pathParams); + } + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * Send a state event into a room + * @param roomId - ID of the room to send the event into + * @param eventType - type of the state event to send + * @param content - content of the event to send + * @param stateKey - the stateKey to send into the room + * @param opts - Options for the request function. + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + sendStateEvent(roomId, eventType, content, stateKey = "", opts = {}) { + const pathParams = { + $roomId: roomId, + $eventType: eventType, + $stateKey: stateKey + }; + let path = utils.encodeUri("/rooms/$roomId/state/$eventType", pathParams); + if (stateKey !== undefined) { + path = utils.encodeUri(path + "/$stateKey", pathParams); + } + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, content, opts); + } + + /** + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + roomInitialSync(roomId, limit) { + var _limit$toString; + const path = utils.encodeUri("/rooms/$roomId/initialSync", { + $roomId: roomId + }); + return this.http.authedRequest(_httpApi.Method.Get, path, { + limit: (_limit$toString = limit === null || limit === void 0 ? void 0 : limit.toString()) !== null && _limit$toString !== void 0 ? _limit$toString : "30" + }); + } + + /** + * Set a marker to indicate the point in a room before which the user has read every + * event. This can be retrieved from room account data (the event type is `m.fully_read`) + * and displayed as a horizontal line in the timeline that is visually distinct to the + * position of the user's own read receipt. + * @param roomId - ID of the room that has been read + * @param rmEventId - ID of the event that has been read + * @param rrEventId - ID of the event tracked by the read receipt. This is here + * for convenience because the RR and the RM are commonly updated at the same time as + * each other. Optional. + * @param rpEventId - rpEvent the m.read.private read receipt event for when we + * don't want other users to see the read receipts. This is experimental. Optional. + * @returns Promise which resolves: the empty object, `{}`. + */ + async setRoomReadMarkersHttpRequest(roomId, rmEventId, rrEventId, rpEventId) { + const path = utils.encodeUri("/rooms/$roomId/read_markers", { + $roomId: roomId + }); + const content = { + [_read_receipts.ReceiptType.FullyRead]: rmEventId, + [_read_receipts.ReceiptType.Read]: rrEventId + }; + if ((await this.doesServerSupportUnstableFeature("org.matrix.msc2285.stable")) || (await this.isVersionSupported("v1.4"))) { + content[_read_receipts.ReceiptType.ReadPrivate] = rpEventId; + } + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, content); + } + + /** + * @returns Promise which resolves: A list of the user's current rooms + * @returns Rejects: with an error response. + */ + getJoinedRooms() { + const path = utils.encodeUri("/joined_rooms", {}); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * Retrieve membership info. for a room. + * @param roomId - ID of the room to get membership for + * @returns Promise which resolves: A list of currently joined users + * and their profile data. + * @returns Rejects: with an error response. + */ + getJoinedRoomMembers(roomId) { + const path = utils.encodeUri("/rooms/$roomId/joined_members", { + $roomId: roomId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * @param params - Options for this request + * @returns Promise which resolves: IPublicRoomsResponse + * @returns Rejects: with an error response. + */ + publicRooms(_ref2 = {}) { + let { + server, + limit, + since + } = _ref2, + options = (0, _objectWithoutProperties2.default)(_ref2, _excluded); + if (Object.keys(options).length === 0) { + const queryParams = { + server, + limit, + since + }; + return this.http.authedRequest(_httpApi.Method.Get, "/publicRooms", queryParams); + } else { + const queryParams = { + server + }; + const body = _objectSpread({ + limit, + since + }, options); + return this.http.authedRequest(_httpApi.Method.Post, "/publicRooms", queryParams, body); + } + } + + /** + * Create an alias to room ID mapping. + * @param alias - The room alias to create. + * @param roomId - The room ID to link the alias to. + * @returns Promise which resolves: an empty object `{}` + * @returns Rejects: with an error response. + */ + createAlias(alias, roomId) { + const path = utils.encodeUri("/directory/room/$alias", { + $alias: alias + }); + const data = { + room_id: roomId + }; + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, data); + } + + /** + * Delete an alias to room ID mapping. This alias must be on your local server, + * and you must have sufficient access to do this operation. + * @param alias - The room alias to delete. + * @returns Promise which resolves: an empty object `{}`. + * @returns Rejects: with an error response. + */ + deleteAlias(alias) { + const path = utils.encodeUri("/directory/room/$alias", { + $alias: alias + }); + return this.http.authedRequest(_httpApi.Method.Delete, path); + } + + /** + * Gets the local aliases for the room. Note: this includes all local aliases, unlike the + * curated list from the m.room.canonical_alias state event. + * @param roomId - The room ID to get local aliases for. + * @returns Promise which resolves: an object with an `aliases` property, containing an array of local aliases + * @returns Rejects: with an error response. + */ + getLocalAliases(roomId) { + const path = utils.encodeUri("/rooms/$roomId/aliases", { + $roomId: roomId + }); + const prefix = _httpApi.ClientPrefix.V3; + return this.http.authedRequest(_httpApi.Method.Get, path, undefined, undefined, { + prefix + }); + } + + /** + * Get room info for the given alias. + * @param alias - The room alias to resolve. + * @returns Promise which resolves: Object with room_id and servers. + * @returns Rejects: with an error response. + */ + getRoomIdForAlias(alias) { + // eslint-disable-line camelcase + const path = utils.encodeUri("/directory/room/$alias", { + $alias: alias + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * Get the visibility of a room in the current HS's room directory + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + getRoomDirectoryVisibility(roomId) { + const path = utils.encodeUri("/directory/list/room/$roomId", { + $roomId: roomId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * Set the visibility of a room in the current HS's room directory + * @param visibility - "public" to make the room visible + * in the public directory, or "private" to make + * it invisible. + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + setRoomDirectoryVisibility(roomId, visibility) { + const path = utils.encodeUri("/directory/list/room/$roomId", { + $roomId: roomId + }); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, { + visibility + }); + } + + /** + * Query the user directory with a term matching user IDs, display names and domains. + * @param options + * @param options.term - the term with which to search. + * @param options.limit - the maximum number of results to return. The server will apply a limit if unspecified. + * @returns Promise which resolves: an array of results. + */ + searchUserDirectory({ + term, + limit + }) { + const body = { + search_term: term + }; + if (limit !== undefined) { + body.limit = limit; + } + return this.http.authedRequest(_httpApi.Method.Post, "/user_directory/search", undefined, body); + } + + /** + * Upload a file to the media repository on the homeserver. + * + * @param file - The object to upload. On a browser, something that + * can be sent to XMLHttpRequest.send (typically a File). Under node.js, + * a a Buffer, String or ReadStream. + * + * @param opts - options object + * + * @returns Promise which resolves to response object, as + * determined by this.opts.onlyData, opts.rawResponse, and + * opts.onlyContentUri. Rejects with an error (usually a MatrixError). + */ + uploadContent(file, opts) { + return this.http.uploadContent(file, opts); + } + + /** + * Cancel a file upload in progress + * @param upload - The object returned from uploadContent + * @returns true if canceled, otherwise false + */ + cancelUpload(upload) { + return this.http.cancelUpload(upload); + } + + /** + * Get a list of all file uploads in progress + * @returns Array of objects representing current uploads. + * Currently in progress is element 0. Keys: + * - promise: The promise associated with the upload + * - loaded: Number of bytes uploaded + * - total: Total number of bytes to upload + */ + getCurrentUploads() { + return this.http.getCurrentUploads(); + } + + /** + * @param info - The kind of info to retrieve (e.g. 'displayname', + * 'avatar_url'). + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + */ + getProfileInfo(userId, info + // eslint-disable-next-line camelcase + ) { + const path = info ? utils.encodeUri("/profile/$userId/$info", { + $userId: userId, + $info: info + }) : utils.encodeUri("/profile/$userId", { + $userId: userId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * @returns Promise which resolves to a list of the user's threepids. + * @returns Rejects: with an error response. + */ + getThreePids() { + return this.http.authedRequest(_httpApi.Method.Get, "/account/3pid"); + } + + /** + * Add a 3PID to your homeserver account. This API does not use an identity + * server, as the homeserver is expected to handle 3PID ownership validation. + * + * @param data - A object with 3PID validation data from having called + * `account/3pid//requestToken` on the homeserver. + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + async addThreePidOnly(data) { + const path = "/account/3pid/add"; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, data); + } + + /** + * Bind a 3PID for discovery onto an identity server via the homeserver. The + * identity server handles 3PID ownership validation and the homeserver records + * the new binding to track where all 3PIDs for the account are bound. + * + * @param data - A object with 3PID validation data from having called + * `validate//requestToken` on the identity server. It should also + * contain `id_server` and `id_access_token` fields as well. + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + async bindThreePid(data) { + const path = "/account/3pid/bind"; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, data); + } + + /** + * Unbind a 3PID for discovery on an identity server via the homeserver. The + * homeserver removes its record of the binding to keep an updated record of + * where all 3PIDs for the account are bound. + * + * @param medium - The threepid medium (eg. 'email') + * @param address - The threepid address (eg. 'bob\@example.com') + * this must be as returned by getThreePids. + * @returns Promise which resolves: on success + * @returns Rejects: with an error response. + */ + async unbindThreePid(medium, address + // eslint-disable-next-line camelcase + ) { + const path = "/account/3pid/unbind"; + const data = { + medium, + address, + id_server: this.getIdentityServerUrl(true) + }; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, data); + } + + /** + * @param medium - The threepid medium (eg. 'email') + * @param address - The threepid address (eg. 'bob\@example.com') + * this must be as returned by getThreePids. + * @returns Promise which resolves: The server response on success + * (generally the empty JSON object) + * @returns Rejects: with an error response. + */ + deleteThreePid(medium, address + // eslint-disable-next-line camelcase + ) { + const path = "/account/3pid/delete"; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, { + medium, + address + }); + } + + /** + * Make a request to change your password. + * @param newPassword - The new desired password. + * @param logoutDevices - Should all sessions be logged out after the password change. Defaults to true. + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + setPassword(authDict, newPassword, logoutDevices) { + const path = "/account/password"; + const data = { + auth: authDict, + new_password: newPassword, + logout_devices: logoutDevices + }; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, data); + } + + /** + * Gets all devices recorded for the logged-in user + * @returns Promise which resolves: result object + * @returns Rejects: with an error response. + */ + getDevices() { + return this.http.authedRequest(_httpApi.Method.Get, "/devices"); + } + + /** + * Gets specific device details for the logged-in user + * @param deviceId - device to query + * @returns Promise which resolves: result object + * @returns Rejects: with an error response. + */ + getDevice(deviceId) { + const path = utils.encodeUri("/devices/$device_id", { + $device_id: deviceId + }); + return this.http.authedRequest(_httpApi.Method.Get, path); + } + + /** + * Update the given device + * + * @param deviceId - device to update + * @param body - body of request + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + // eslint-disable-next-line camelcase + setDeviceDetails(deviceId, body) { + const path = utils.encodeUri("/devices/$device_id", { + $device_id: deviceId + }); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, body); + } + + /** + * Delete the given device + * + * @param deviceId - device to delete + * @param auth - Optional. Auth data to supply for User-Interactive auth. + * @returns Promise which resolves: result object + * @returns Rejects: with an error response. + */ + deleteDevice(deviceId, auth) { + const path = utils.encodeUri("/devices/$device_id", { + $device_id: deviceId + }); + const body = {}; + if (auth) { + body.auth = auth; + } + return this.http.authedRequest(_httpApi.Method.Delete, path, undefined, body); + } + + /** + * Delete multiple device + * + * @param devices - IDs of the devices to delete + * @param auth - Optional. Auth data to supply for User-Interactive auth. + * @returns Promise which resolves: result object + * @returns Rejects: with an error response. + */ + deleteMultipleDevices(devices, auth) { + const body = { + devices + }; + if (auth) { + body.auth = auth; + } + const path = "/delete_devices"; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, body); + } + + /** + * Gets all pushers registered for the logged-in user + * + * @returns Promise which resolves: Array of objects representing pushers + * @returns Rejects: with an error response. + */ + async getPushers() { + const response = await this.http.authedRequest(_httpApi.Method.Get, "/pushers"); + + // Migration path for clients that connect to a homeserver that does not support + // MSC3881 yet, see https://github.com/matrix-org/matrix-spec-proposals/blob/kerry/remote-push-toggle/proposals/3881-remote-push-notification-toggling.md#migration + if (!(await this.doesServerSupportUnstableFeature("org.matrix.msc3881"))) { + response.pushers = response.pushers.map(pusher => { + if (!pusher.hasOwnProperty(_event2.PUSHER_ENABLED.name)) { + pusher[_event2.PUSHER_ENABLED.name] = true; + } + return pusher; + }); + } + return response; + } + + /** + * Adds a new pusher or updates an existing pusher + * + * @param pusher - Object representing a pusher + * @returns Promise which resolves: Empty json object on success + * @returns Rejects: with an error response. + */ + setPusher(pusher) { + const path = "/pushers/set"; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, pusher); + } + + /** + * Removes an existing pusher + * @param pushKey - pushkey of pusher to remove + * @param appId - app_id of pusher to remove + * @returns Promise which resolves: Empty json object on success + * @returns Rejects: with an error response. + */ + removePusher(pushKey, appId) { + const path = "/pushers/set"; + const body = { + pushkey: pushKey, + app_id: appId, + kind: null // marks pusher for removal + }; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, body); + } + + /** + * Persists local notification settings + * @returns Promise which resolves: an empty object + * @returns Rejects: with an error response. + */ + setLocalNotificationSettings(deviceId, notificationSettings) { + const key = `${_event2.LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${deviceId}`; + return this.setAccountData(key, notificationSettings); + } + + /** + * Get the push rules for the account from the server. + * @returns Promise which resolves to the push rules. + * @returns Rejects: with an error response. + */ + getPushRules() { + return this.http.authedRequest(_httpApi.Method.Get, "/pushrules/").then(rules => { + this.setPushRules(rules); + return this.pushRules; + }); + } + + /** + * Update the push rules for the account. This should be called whenever + * updated push rules are available. + */ + setPushRules(rules) { + // Fix-up defaults, if applicable. + this.pushRules = _pushprocessor.PushProcessor.rewriteDefaultRules(rules, this.getUserId()); + // Pre-calculate any necessary caches. + this.pushProcessor.updateCachedPushRuleKeys(this.pushRules); + } + + /** + * @returns Promise which resolves: an empty object `{}` + * @returns Rejects: with an error response. + */ + addPushRule(scope, kind, ruleId, body) { + // NB. Scope not uri encoded because devices need the '/' + const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId", { + $kind: kind, + $ruleId: ruleId + }); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, body); + } + + /** + * @returns Promise which resolves: an empty object `{}` + * @returns Rejects: with an error response. + */ + deletePushRule(scope, kind, ruleId) { + // NB. Scope not uri encoded because devices need the '/' + const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId", { + $kind: kind, + $ruleId: ruleId + }); + return this.http.authedRequest(_httpApi.Method.Delete, path); + } + + /** + * Enable or disable a push notification rule. + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + setPushRuleEnabled(scope, kind, ruleId, enabled) { + const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId/enabled", { + $kind: kind, + $ruleId: ruleId + }); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, { + enabled: enabled + }); + } + + /** + * Set the actions for a push notification rule. + * @returns Promise which resolves: to an empty object `{}` + * @returns Rejects: with an error response. + */ + setPushRuleActions(scope, kind, ruleId, actions) { + const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId/actions", { + $kind: kind, + $ruleId: ruleId + }); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, { + actions: actions + }); + } + + /** + * Perform a server-side search. + * @param params + * @param params.next_batch - the batch token to pass in the query string + * @param params.body - the JSON object to pass to the request body. + * @param abortSignal - optional signal used to cancel the http request. + * @returns Promise which resolves to the search response object. + * @returns Rejects: with an error response. + */ + search({ + body, + next_batch: nextBatch + }, abortSignal) { + const queryParams = {}; + if (nextBatch) { + queryParams.next_batch = nextBatch; + } + return this.http.authedRequest(_httpApi.Method.Post, "/search", queryParams, body, { + abortSignal + }); + } + + /** + * Upload keys + * + * @param content - body of upload request + * + * @param opts - this method no longer takes any opts, + * used to take opts.device_id but this was not removed from the spec as a redundant parameter + * + * @returns Promise which resolves: result object. Rejects: with + * an error response ({@link MatrixError}). + */ + uploadKeysRequest(content, opts) { + return this.http.authedRequest(_httpApi.Method.Post, "/keys/upload", undefined, content); + } + uploadKeySignatures(content) { + return this.http.authedRequest(_httpApi.Method.Post, "/keys/signatures/upload", undefined, content); + } + + /** + * Download device keys + * + * @param userIds - list of users to get keys for + * + * @param token - sync token to pass in the query request, to help + * the HS give the most recent results + * + * @returns Promise which resolves: result object. Rejects: with + * an error response ({@link MatrixError}). + */ + downloadKeysForUsers(userIds, { + token + } = {}) { + const content = { + device_keys: {} + }; + if (token !== undefined) { + content.token = token; + } + userIds.forEach(u => { + content.device_keys[u] = []; + }); + return this.http.authedRequest(_httpApi.Method.Post, "/keys/query", undefined, content); + } + + /** + * Claim one-time keys + * + * @param devices - a list of [userId, deviceId] pairs + * + * @param keyAlgorithm - desired key type + * + * @param timeout - the time (in milliseconds) to wait for keys from remote + * servers + * + * @returns Promise which resolves: result object. Rejects: with + * an error response ({@link MatrixError}). + */ + claimOneTimeKeys(devices, keyAlgorithm = "signed_curve25519", timeout) { + const queries = {}; + if (keyAlgorithm === undefined) { + keyAlgorithm = "signed_curve25519"; + } + for (const [userId, deviceId] of devices) { + const query = queries[userId] || {}; + (0, _utils.safeSet)(queries, userId, query); + (0, _utils.safeSet)(query, deviceId, keyAlgorithm); + } + const content = { + one_time_keys: queries + }; + if (timeout) { + content.timeout = timeout; + } + const path = "/keys/claim"; + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, content); + } + + /** + * Ask the server for a list of users who have changed their device lists + * between a pair of sync tokens + * + * + * @returns Promise which resolves: result object. Rejects: with + * an error response ({@link MatrixError}). + */ + getKeyChanges(oldToken, newToken) { + const qps = { + from: oldToken, + to: newToken + }; + return this.http.authedRequest(_httpApi.Method.Get, "/keys/changes", qps); + } + uploadDeviceSigningKeys(auth, keys) { + // API returns empty object + const data = Object.assign({}, keys); + if (auth) Object.assign(data, { + auth + }); + return this.http.authedRequest(_httpApi.Method.Post, "/keys/device_signing/upload", undefined, data, { + prefix: _httpApi.ClientPrefix.Unstable + }); + } + + /** + * Register with an identity server using the OpenID token from the user's + * Homeserver, which can be retrieved via + * {@link MatrixClient#getOpenIdToken}. + * + * Note that the `/account/register` endpoint (as well as IS authentication in + * general) was added as part of the v2 API version. + * + * @returns Promise which resolves: with object containing an Identity + * Server access token. + * @returns Rejects: with an error response. + */ + registerWithIdentityServer(hsOpenIdToken) { + if (!this.idBaseUrl) { + throw new Error("No identity server base URL set"); + } + const uri = this.http.getUrl("/account/register", undefined, _httpApi.IdentityPrefix.V2, this.idBaseUrl); + return this.http.requestOtherUrl(_httpApi.Method.Post, uri, hsOpenIdToken); + } + + /** + * Requests an email verification token directly from an identity server. + * + * This API is used as part of binding an email for discovery on an identity + * server. The validation data that results should be passed to the + * `bindThreePid` method to complete the binding process. + * + * @param email - The email address to request a token for + * @param clientSecret - A secret binary string generated by the client. + * It is recommended this be around 16 ASCII characters. + * @param sendAttempt - If an identity server sees a duplicate request + * with the same sendAttempt, it will not send another email. + * To request another email to be sent, use a larger value for + * the sendAttempt param as was used in the previous request. + * @param nextLink - Optional If specified, the client will be redirected + * to this link after validation. + * @param identityAccessToken - The `access_token` field of the identity + * server `/account/register` response (see {@link registerWithIdentityServer}). + * + * @returns Promise which resolves: TODO + * @returns Rejects: with an error response. + * @throws Error if no identity server is set + */ + requestEmailToken(email, clientSecret, sendAttempt, nextLink, identityAccessToken) { + const params = { + client_secret: clientSecret, + email: email, + send_attempt: sendAttempt === null || sendAttempt === void 0 ? void 0 : sendAttempt.toString() + }; + if (nextLink) { + params.next_link = nextLink; + } + return this.http.idServerRequest(_httpApi.Method.Post, "/validate/email/requestToken", params, _httpApi.IdentityPrefix.V2, identityAccessToken); + } + + /** + * Requests a MSISDN verification token directly from an identity server. + * + * This API is used as part of binding a MSISDN for discovery on an identity + * server. The validation data that results should be passed to the + * `bindThreePid` method to complete the binding process. + * + * @param phoneCountry - The ISO 3166-1 alpha-2 code for the country in + * which phoneNumber should be parsed relative to. + * @param phoneNumber - The phone number, in national or international + * format + * @param clientSecret - A secret binary string generated by the client. + * It is recommended this be around 16 ASCII characters. + * @param sendAttempt - If an identity server sees a duplicate request + * with the same sendAttempt, it will not send another SMS. + * To request another SMS to be sent, use a larger value for + * the sendAttempt param as was used in the previous request. + * @param nextLink - Optional If specified, the client will be redirected + * to this link after validation. + * @param identityAccessToken - The `access_token` field of the Identity + * Server `/account/register` response (see {@link registerWithIdentityServer}). + * + * @returns Promise which resolves to an object with a sid string + * @returns Rejects: with an error response. + * @throws Error if no identity server is set + */ + requestMsisdnToken(phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink, identityAccessToken) { + const params = { + client_secret: clientSecret, + country: phoneCountry, + phone_number: phoneNumber, + send_attempt: sendAttempt === null || sendAttempt === void 0 ? void 0 : sendAttempt.toString() + }; + if (nextLink) { + params.next_link = nextLink; + } + return this.http.idServerRequest(_httpApi.Method.Post, "/validate/msisdn/requestToken", params, _httpApi.IdentityPrefix.V2, identityAccessToken); + } + + /** + * Submits a MSISDN token to the identity server + * + * This is used when submitting the code sent by SMS to a phone number. + * The identity server has an equivalent API for email but the js-sdk does + * not expose this, since email is normally validated by the user clicking + * a link rather than entering a code. + * + * @param sid - The sid given in the response to requestToken + * @param clientSecret - A secret binary string generated by the client. + * This must be the same value submitted in the requestToken call. + * @param msisdnToken - The MSISDN token, as enetered by the user. + * @param identityAccessToken - The `access_token` field of the Identity + * Server `/account/register` response (see {@link registerWithIdentityServer}). + * Some legacy identity servers had no authentication here. + * + * @returns Promise which resolves: Object, containing success boolean. + * @returns Rejects: with an error response. + * @throws Error if No identity server is set + */ + submitMsisdnToken(sid, clientSecret, msisdnToken, identityAccessToken) { + const params = { + sid: sid, + client_secret: clientSecret, + token: msisdnToken + }; + return this.http.idServerRequest(_httpApi.Method.Post, "/validate/msisdn/submitToken", params, _httpApi.IdentityPrefix.V2, identityAccessToken !== null && identityAccessToken !== void 0 ? identityAccessToken : undefined); + } + + /** + * Submits a MSISDN token to an arbitrary URL. + * + * This is used when submitting the code sent by SMS to a phone number in the + * newer 3PID flow where the homeserver validates 3PID ownership (as part of + * `requestAdd3pidMsisdnToken`). The homeserver response may include a + * `submit_url` to specify where the token should be sent, and this helper can + * be used to pass the token to this URL. + * + * @param url - The URL to submit the token to + * @param sid - The sid given in the response to requestToken + * @param clientSecret - A secret binary string generated by the client. + * This must be the same value submitted in the requestToken call. + * @param msisdnToken - The MSISDN token, as enetered by the user. + * + * @returns Promise which resolves: Object, containing success boolean. + * @returns Rejects: with an error response. + */ + submitMsisdnTokenOtherUrl(url, sid, clientSecret, msisdnToken) { + const params = { + sid: sid, + client_secret: clientSecret, + token: msisdnToken + }; + return this.http.requestOtherUrl(_httpApi.Method.Post, url, params); + } + + /** + * Gets the V2 hashing information from the identity server. Primarily useful for + * lookups. + * @param identityAccessToken - The access token for the identity server. + * @returns The hashing information for the identity server. + */ + getIdentityHashDetails(identityAccessToken) { + return this.http.idServerRequest(_httpApi.Method.Get, "/hash_details", undefined, _httpApi.IdentityPrefix.V2, identityAccessToken); + } + + /** + * Performs a hashed lookup of addresses against the identity server. This is + * only supported on identity servers which have at least the version 2 API. + * @param addressPairs - An array of 2 element arrays. + * The first element of each pair is the address, the second is the 3PID medium. + * Eg: `["email@example.org", "email"]` + * @param identityAccessToken - The access token for the identity server. + * @returns A collection of address mappings to + * found MXIDs. Results where no user could be found will not be listed. + */ + async identityHashedLookup(addressPairs, identityAccessToken) { + const params = { + // addresses: ["email@example.org", "10005550000"], + // algorithm: "sha256", + // pepper: "abc123" + }; + + // Get hash information first before trying to do a lookup + const hashes = await this.getIdentityHashDetails(identityAccessToken); + if (!hashes || !hashes["lookup_pepper"] || !hashes["algorithms"]) { + throw new Error("Unsupported identity server: bad response"); + } + params["pepper"] = hashes["lookup_pepper"]; + const localMapping = { + // hashed identifier => plain text address + // For use in this function's return format + }; + + // When picking an algorithm, we pick the hashed over no hashes + if (hashes["algorithms"].includes("sha256")) { + // Abuse the olm hashing + const olmutil = new global.Olm.Utility(); + params["addresses"] = addressPairs.map(p => { + const addr = p[0].toLowerCase(); // lowercase to get consistent hashes + const med = p[1].toLowerCase(); + const hashed = olmutil.sha256(`${addr} ${med} ${params["pepper"]}`).replace(/\+/g, "-").replace(/\//g, "_"); // URL-safe base64 + // Map the hash to a known (case-sensitive) address. We use the case + // sensitive version because the caller might be expecting that. + localMapping[hashed] = p[0]; + return hashed; + }); + params["algorithm"] = "sha256"; + } else if (hashes["algorithms"].includes("none")) { + params["addresses"] = addressPairs.map(p => { + const addr = p[0].toLowerCase(); // lowercase to get consistent hashes + const med = p[1].toLowerCase(); + const unhashed = `${addr} ${med}`; + // Map the unhashed values to a known (case-sensitive) address. We use + // the case-sensitive version because the caller might be expecting that. + localMapping[unhashed] = p[0]; + return unhashed; + }); + params["algorithm"] = "none"; + } else { + throw new Error("Unsupported identity server: unknown hash algorithm"); + } + const response = await this.http.idServerRequest(_httpApi.Method.Post, "/lookup", params, _httpApi.IdentityPrefix.V2, identityAccessToken); + if (!(response !== null && response !== void 0 && response["mappings"])) return []; // no results + + const foundAddresses = []; + for (const hashed of Object.keys(response["mappings"])) { + const mxid = response["mappings"][hashed]; + const plainAddress = localMapping[hashed]; + if (!plainAddress) { + throw new Error("Identity server returned more results than expected"); + } + foundAddresses.push({ + address: plainAddress, + mxid + }); + } + return foundAddresses; + } + + /** + * Looks up the public Matrix ID mapping for a given 3rd party + * identifier from the identity server + * + * @param medium - The medium of the threepid, eg. 'email' + * @param address - The textual address of the threepid + * @param identityAccessToken - The `access_token` field of the Identity + * Server `/account/register` response (see {@link registerWithIdentityServer}). + * + * @returns Promise which resolves: A threepid mapping + * object or the empty object if no mapping + * exists + * @returns Rejects: with an error response. + */ + async lookupThreePid(medium, address, identityAccessToken) { + // Note: we're using the V2 API by calling this function, but our + // function contract requires a V1 response. We therefore have to + // convert it manually. + const response = await this.identityHashedLookup([[address, medium]], identityAccessToken); + const result = response.find(p => p.address === address); + if (!result) { + return {}; + } + const mapping = { + address, + medium, + mxid: result.mxid + + // We can't reasonably fill these parameters: + // not_before + // not_after + // ts + // signatures + }; + return mapping; + } + + /** + * Looks up the public Matrix ID mappings for multiple 3PIDs. + * + * @param query - Array of arrays containing + * [medium, address] + * @param identityAccessToken - The `access_token` field of the Identity + * Server `/account/register` response (see {@link registerWithIdentityServer}). + * + * @returns Promise which resolves: Lookup results from IS. + * @returns Rejects: with an error response. + */ + async bulkLookupThreePids(query, identityAccessToken) { + // Note: we're using the V2 API by calling this function, but our + // function contract requires a V1 response. We therefore have to + // convert it manually. + const response = await this.identityHashedLookup( + // We have to reverse the query order to get [address, medium] pairs + query.map(p => [p[1], p[0]]), identityAccessToken); + const v1results = []; + for (const mapping of response) { + const originalQuery = query.find(p => p[1] === mapping.address); + if (!originalQuery) { + throw new Error("Identity sever returned unexpected results"); + } + v1results.push([originalQuery[0], + // medium + mapping.address, mapping.mxid]); + } + return { + threepids: v1results + }; + } + + /** + * Get account info from the identity server. This is useful as a neutral check + * to verify that other APIs are likely to approve access by testing that the + * token is valid, terms have been agreed, etc. + * + * @param identityAccessToken - The `access_token` field of the Identity + * Server `/account/register` response (see {@link registerWithIdentityServer}). + * + * @returns Promise which resolves: an object with account info. + * @returns Rejects: with an error response. + */ + getIdentityAccount(identityAccessToken) { + return this.http.idServerRequest(_httpApi.Method.Get, "/account", undefined, _httpApi.IdentityPrefix.V2, identityAccessToken); + } + + /** + * Send an event to a specific list of devices. + * This is a low-level API that simply wraps the HTTP API + * call to send to-device messages. We recommend using + * queueToDevice() which is a higher level API. + * + * @param eventType - type of event to send + * content to send. Map from user_id to device_id to content object. + * @param txnId - transaction id. One will be made up if not + * supplied. + * @returns Promise which resolves: to an empty object `{}` + */ + sendToDevice(eventType, contentMap, txnId) { + const path = utils.encodeUri("/sendToDevice/$eventType/$txnId", { + $eventType: eventType, + $txnId: txnId ? txnId : this.makeTxnId() + }); + const body = { + messages: utils.recursiveMapToObject(contentMap) + }; + const targets = new Map(); + for (const [userId, deviceMessages] of contentMap) { + targets.set(userId, Array.from(deviceMessages.keys())); + } + this.logger.debug(`PUT ${path}`, targets); + return this.http.authedRequest(_httpApi.Method.Put, path, undefined, body); + } + + /** + * Sends events directly to specific devices using Matrix's to-device + * messaging system. The batch will be split up into appropriately sized + * batches for sending and stored in the store so they can be retried + * later if they fail to send. Retries will happen automatically. + * @param batch - The to-device messages to send + */ + queueToDevice(batch) { + return this.toDeviceMessageQueue.queueBatch(batch); + } + + /** + * Get the third party protocols that can be reached using + * this HS + * @returns Promise which resolves to the result object + */ + getThirdpartyProtocols() { + return this.http.authedRequest(_httpApi.Method.Get, "/thirdparty/protocols").then(response => { + // sanity check + if (!response || typeof response !== "object") { + throw new Error(`/thirdparty/protocols did not return an object: ${response}`); + } + return response; + }); + } + + /** + * Get information on how a specific place on a third party protocol + * may be reached. + * @param protocol - The protocol given in getThirdpartyProtocols() + * @param params - Protocol-specific parameters, as given in the + * response to getThirdpartyProtocols() + * @returns Promise which resolves to the result object + */ + getThirdpartyLocation(protocol, params) { + const path = utils.encodeUri("/thirdparty/location/$protocol", { + $protocol: protocol + }); + return this.http.authedRequest(_httpApi.Method.Get, path, params); + } + + /** + * Get information on how a specific user on a third party protocol + * may be reached. + * @param protocol - The protocol given in getThirdpartyProtocols() + * @param params - Protocol-specific parameters, as given in the + * response to getThirdpartyProtocols() + * @returns Promise which resolves to the result object + */ + getThirdpartyUser(protocol, params) { + const path = utils.encodeUri("/thirdparty/user/$protocol", { + $protocol: protocol + }); + return this.http.authedRequest(_httpApi.Method.Get, path, params); + } + getTerms(serviceType, baseUrl) { + // TODO: Types + const url = this.termsUrlForService(serviceType, baseUrl); + return this.http.requestOtherUrl(_httpApi.Method.Get, url); + } + agreeToTerms(serviceType, baseUrl, accessToken, termsUrls) { + const url = this.termsUrlForService(serviceType, baseUrl); + const headers = { + Authorization: "Bearer " + accessToken + }; + return this.http.requestOtherUrl(_httpApi.Method.Post, url, { + user_accepts: termsUrls + }, { + headers + }); + } + + /** + * Reports an event as inappropriate to the server, which may then notify the appropriate people. + * @param roomId - The room in which the event being reported is located. + * @param eventId - The event to report. + * @param score - The score to rate this content as where -100 is most offensive and 0 is inoffensive. + * @param reason - The reason the content is being reported. May be blank. + * @returns Promise which resolves to an empty object if successful + */ + reportEvent(roomId, eventId, score, reason) { + const path = utils.encodeUri("/rooms/$roomId/report/$eventId", { + $roomId: roomId, + $eventId: eventId + }); + return this.http.authedRequest(_httpApi.Method.Post, path, undefined, { + score, + reason + }); + } + + /** + * Fetches or paginates a room hierarchy as defined by MSC2946. + * Falls back gracefully to sourcing its data from `getSpaceSummary` if this API is not yet supported by the server. + * @param roomId - The ID of the space-room to use as the root of the summary. + * @param limit - The maximum number of rooms to return per page. + * @param maxDepth - The maximum depth in the tree from the root room to return. + * @param suggestedOnly - Whether to only return rooms with suggested=true. + * @param fromToken - The opaque token to paginate a previous request. + * @returns the response, with next_batch & rooms fields. + */ + getRoomHierarchy(roomId, limit, maxDepth, suggestedOnly = false, fromToken) { + const path = utils.encodeUri("/rooms/$roomId/hierarchy", { + $roomId: roomId + }); + const queryParams = { + suggested_only: String(suggestedOnly), + max_depth: maxDepth === null || maxDepth === void 0 ? void 0 : maxDepth.toString(), + from: fromToken, + limit: limit === null || limit === void 0 ? void 0 : limit.toString() + }; + return this.http.authedRequest(_httpApi.Method.Get, path, queryParams, undefined, { + prefix: _httpApi.ClientPrefix.V1 + }).catch(e => { + if (e.errcode === "M_UNRECOGNIZED") { + // fall back to the prefixed hierarchy API. + return this.http.authedRequest(_httpApi.Method.Get, path, queryParams, undefined, { + prefix: "/_matrix/client/unstable/org.matrix.msc2946" + }); + } + throw e; + }); + } + + /** + * Creates a new file tree space with the given name. The client will pick + * defaults for how it expects to be able to support the remaining API offered + * by the returned class. + * + * Note that this is UNSTABLE and may have breaking changes without notice. + * @param name - The name of the tree space. + * @returns Promise which resolves to the created space. + */ + async unstableCreateFileTree(name) { + const { + room_id: roomId + } = await this.createRoom({ + name: name, + preset: _partials.Preset.PrivateChat, + power_level_content_override: _objectSpread(_objectSpread({}, _MSC3089TreeSpace.DEFAULT_TREE_POWER_LEVELS_TEMPLATE), {}, { + users: { + [this.getUserId()]: 100 + } + }), + creation_content: { + [_event2.RoomCreateTypeField]: _event2.RoomType.Space + }, + initial_state: [{ + type: _event2.UNSTABLE_MSC3088_PURPOSE.name, + state_key: _event2.UNSTABLE_MSC3089_TREE_SUBTYPE.name, + content: { + [_event2.UNSTABLE_MSC3088_ENABLED.name]: true + } + }, { + type: _event2.EventType.RoomEncryption, + state_key: "", + content: { + algorithm: olmlib.MEGOLM_ALGORITHM + } + }] + }); + return new _MSC3089TreeSpace.MSC3089TreeSpace(this, roomId); + } + + /** + * Gets a reference to a tree space, if the room ID given is a tree space. If the room + * does not appear to be a tree space then null is returned. + * + * Note that this is UNSTABLE and may have breaking changes without notice. + * @param roomId - The room ID to get a tree space reference for. + * @returns The tree space, or null if not a tree space. + */ + unstableGetFileTreeSpace(roomId) { + var _purposeEvent$getCont, _createEvent$getConte; + const room = this.getRoom(roomId); + if ((room === null || room === void 0 ? void 0 : room.getMyMembership()) !== _membership.KnownMembership.Join) return null; + const createEvent = room.currentState.getStateEvents(_event2.EventType.RoomCreate, ""); + const purposeEvent = room.currentState.getStateEvents(_event2.UNSTABLE_MSC3088_PURPOSE.name, _event2.UNSTABLE_MSC3089_TREE_SUBTYPE.name); + if (!createEvent) throw new Error("Expected single room create event"); + if (!(purposeEvent !== null && purposeEvent !== void 0 && (_purposeEvent$getCont = purposeEvent.getContent()) !== null && _purposeEvent$getCont !== void 0 && _purposeEvent$getCont[_event2.UNSTABLE_MSC3088_ENABLED.name])) return null; + if (((_createEvent$getConte = createEvent.getContent()) === null || _createEvent$getConte === void 0 ? void 0 : _createEvent$getConte[_event2.RoomCreateTypeField]) !== _event2.RoomType.Space) return null; + return new _MSC3089TreeSpace.MSC3089TreeSpace(this, roomId); + } + + /** + * Perform a single MSC3575 sliding sync request. + * @param req - The request to make. + * @param proxyBaseUrl - The base URL for the sliding sync proxy. + * @param abortSignal - Optional signal to abort request mid-flight. + * @returns The sliding sync response, or a standard error. + * @throws on non 2xx status codes with an object with a field "httpStatus":number. + */ + slidingSync(req, proxyBaseUrl, abortSignal) { + const qps = {}; + if (req.pos) { + qps.pos = req.pos; + delete req.pos; + } + if (req.timeout) { + qps.timeout = req.timeout; + delete req.timeout; + } + const clientTimeout = req.clientTimeout; + delete req.clientTimeout; + return this.http.authedRequest(_httpApi.Method.Post, "/sync", qps, req, { + prefix: "/_matrix/client/unstable/org.matrix.msc3575", + baseUrl: proxyBaseUrl, + localTimeoutMs: clientTimeout, + abortSignal + }); + } + + /** + * A helper to determine thread support + * @returns a boolean to determine if threads are enabled + */ + supportsThreads() { + var _this$clientOpts7; + return ((_this$clientOpts7 = this.clientOpts) === null || _this$clientOpts7 === void 0 ? void 0 : _this$clientOpts7.threadSupport) || false; + } + + /** + * A helper to determine intentional mentions support + * @returns a boolean to determine if intentional mentions are enabled on the server + * @experimental + */ + supportsIntentionalMentions() { + return this.canSupport.get(_feature.Feature.IntentionalMentions) !== _feature.ServerSupport.Unsupported; + } + + /** + * Fetches the summary of a room as defined by an initial version of MSC3266 and implemented in Synapse + * Proposed at https://github.com/matrix-org/matrix-doc/pull/3266 + * @param roomIdOrAlias - The ID or alias of the room to get the summary of. + * @param via - The list of servers which know about the room if only an ID was provided. + */ + async getRoomSummary(roomIdOrAlias, via) { + const paramOpts = { + prefix: "/_matrix/client/unstable/im.nheko.summary" + }; + try { + const path = utils.encodeUri("/summary/$roomid", { + $roomid: roomIdOrAlias + }); + return await this.http.authedRequest(_httpApi.Method.Get, path, { + via + }, undefined, paramOpts); + } catch (e) { + if (e instanceof _httpApi.MatrixError && e.errcode === "M_UNRECOGNIZED") { + const path = utils.encodeUri("/rooms/$roomid/summary", { + $roomid: roomIdOrAlias + }); + return await this.http.authedRequest(_httpApi.Method.Get, path, { + via + }, undefined, paramOpts); + } else { + throw e; + } + } + } + + /** + * Processes a list of threaded events and adds them to their respective timelines + * @param room - the room the adds the threaded events + * @param threadedEvents - an array of the threaded events + * @param toStartOfTimeline - the direction in which we want to add the events + */ + processThreadEvents(room, threadedEvents, toStartOfTimeline) { + room.processThreadedEvents(threadedEvents, toStartOfTimeline); + } + + /** + * Processes a list of thread roots and creates a thread model + * @param room - the room to create the threads in + * @param threadedEvents - an array of thread roots + * @param toStartOfTimeline - the direction + */ + processThreadRoots(room, threadedEvents, toStartOfTimeline) { + if (!this.supportsThreads()) return; + room.processThreadRoots(threadedEvents, toStartOfTimeline); + } + processBeaconEvents(room, events) { + this.processAggregatedTimelineEvents(room, events); + } + + /** + * Calls aggregation functions for event types that are aggregated + * Polls and location beacons + * @param room - room the events belong to + * @param events - timeline events to be processed + * @returns + */ + processAggregatedTimelineEvents(room, events) { + if (!(events !== null && events !== void 0 && events.length)) return; + if (!room) return; + room.currentState.processBeaconEvents(events, this); + room.processPollEvents(events); + } + + /** + * Fetches information about the user for the configured access token. + */ + async whoami() { + return this.http.authedRequest(_httpApi.Method.Get, "/account/whoami"); + } + + /** + * Find the event_id closest to the given timestamp in the given direction. + * @returns Resolves: A promise of an object containing the event_id and + * origin_server_ts of the closest event to the timestamp in the given direction + * @returns Rejects: when the request fails (module:http-api.MatrixError) + */ + async timestampToEvent(roomId, timestamp, dir) { + const path = utils.encodeUri("/rooms/$roomId/timestamp_to_event", { + $roomId: roomId + }); + const queryParams = { + ts: timestamp.toString(), + dir: dir + }; + try { + return await this.http.authedRequest(_httpApi.Method.Get, path, queryParams, undefined, { + prefix: _httpApi.ClientPrefix.V1 + }); + } catch (err) { + // Fallback to the prefixed unstable endpoint. Since the stable endpoint is + // new, we should also try the unstable endpoint before giving up. We can + // remove this fallback request in a year (remove after 2023-11-28). + if (err.errcode === "M_UNRECOGNIZED" && ( + // XXX: The 400 status code check should be removed in the future + // when Synapse is compliant with MSC3743. + err.httpStatus === 400 || + // This the correct standard status code for an unsupported + // endpoint according to MSC3743. Not Found and Method Not Allowed + // both indicate that this endpoint+verb combination is + // not supported. + err.httpStatus === 404 || err.httpStatus === 405)) { + return await this.http.authedRequest(_httpApi.Method.Get, path, queryParams, undefined, { + prefix: "/_matrix/client/unstable/org.matrix.msc3030" + }); + } + throw err; + } + } + + /** + * Get the OIDC issuer responsible for authentication on this server, if any + * @returns Resolves: A promise of an object containing the OIDC issuer if configured + * @returns Rejects: when the request fails (module:http-api.MatrixError) + * @experimental - part of MSC2965 + */ + async getAuthIssuer() { + return this.http.request(_httpApi.Method.Get, "/auth_issuer", undefined, undefined, { + prefix: _httpApi.ClientPrefix.Unstable + "/org.matrix.msc2965" + }); + } +} + +/** + * recalculates an accurate notifications count on event decryption. + * Servers do not have enough knowledge about encrypted events to calculate an + * accurate notification_count + */ +exports.MatrixClient = MatrixClient; +(0, _defineProperty2.default)(MatrixClient, "RESTORE_BACKUP_ERROR_BAD_KEY", "RESTORE_BACKUP_ERROR_BAD_KEY"); +function fixNotificationCountOnDecryption(cli, event) { + var _actions$tweaks; + const ourUserId = cli.getUserId(); + const eventId = event.getId(); + const room = cli.getRoom(event.getRoomId()); + if (!room || !ourUserId || !eventId) return; + + // Due to threads, we can get relation events (eg. edits & reactions) that never get + // added to a timeline and so cannot be found in their own room (their edit / reaction + // still applies to the event it needs to, so it doesn't matter too much). However, if + // we try to process notification about this event, we'll get very confused because we + // won't be able to find the event in the room, so will assume it must be unread, even + // if it's actually read. We therefore skip anything that isn't in the room. This isn't + // *great*, so if we can fix the homeless events (eg. with MSC4023) then we should probably + // remove this workaround. + if (!room.findEventById(eventId)) { + _logger.logger.info(`Decrypted event ${event.getId()} is not in room ${room.roomId}: ignoring`); + return; + } + const isThreadEvent = !!event.threadRootId && !event.isThreadRoot; + let hasReadEvent; + if (isThreadEvent) { + const thread = room.getThread(event.threadRootId); + hasReadEvent = thread ? thread.hasUserReadEvent(ourUserId, eventId) : + // If the thread object does not exist in the room yet, we don't + // want to calculate notification for this event yet. We have not + // restored the read receipts yet and can't accurately calculate + // notifications at this stage. + // + // This issue can likely go away when MSC3874 is implemented + true; + } else { + hasReadEvent = room.hasUserReadEvent(ourUserId, eventId); + } + if (hasReadEvent) { + // If the event has been read, ignore it. + return; + } + const actions = cli.getPushActionsForEvent(event, true); + + // Ensure the unread counts are kept up to date if the event is encrypted + // We also want to make sure that the notification count goes up if we already + // have encrypted events to avoid other code from resetting 'highlight' to zero. + const newHighlight = !!(actions !== null && actions !== void 0 && (_actions$tweaks = actions.tweaks) !== null && _actions$tweaks !== void 0 && _actions$tweaks.highlight); + if (newHighlight) { + // TODO: Handle mentions received while the client is offline + // See also https://github.com/vector-im/element-web/issues/9069 + const newCount = room.getUnreadCountForEventContext(_room.NotificationCountType.Highlight, event) + 1; + if (isThreadEvent) { + room.setThreadUnreadNotificationCount(event.threadRootId, _room.NotificationCountType.Highlight, newCount); + } else { + room.setUnreadNotificationCount(_room.NotificationCountType.Highlight, newCount); + } + } + + // `notify` is used in practice for incrementing the total count + const newNotify = !!(actions !== null && actions !== void 0 && actions.notify); + + // The room total count is NEVER incremented by the server for encrypted rooms. We basically ignore + // the server here as it's always going to tell us to increment for encrypted events. + if (newNotify) { + // Total count is used to typically increment a room notification counter, but not loudly highlight it. + const newCount = room.getUnreadCountForEventContext(_room.NotificationCountType.Total, event) + 1; + if (isThreadEvent) { + room.setThreadUnreadNotificationCount(event.threadRootId, _room.NotificationCountType.Total, newCount); + } else { + room.setUnreadNotificationCount(_room.NotificationCountType.Total, newCount); + } + } +} + +/** + * Given an event, figure out the thread ID we should use for it in a receipt. + * + * This will either be "main", or event.threadRootId. For the thread root, or + * e.g. reactions to the thread root, this will be main. For events inside the + * thread, or e.g. reactions to them, this will be event.threadRootId. + * + * (Exported for test.) + */ +function threadIdForReceipt(event) { + return inMainTimelineForReceipt(event) ? _read_receipts.MAIN_ROOM_TIMELINE : event.threadRootId; +} + +/** + * a) True for non-threaded messages, thread roots and non-thread relations to thread roots. + * b) False for messages with thread relations to the thread root. + * c) False for messages with any kind of relation to a message from case b. + * + * Note: true for redactions of messages that are in threads. Redacted messages + * are not really in threads (because their relations are gone), so if they look + * like they are in threads, that is a sign of a bug elsewhere. (At time of + * writing, this bug definitely exists - messages are not moved to another + * thread when they are redacted.) + * + * @returns true if this event is considered to be in the main timeline as far + * as receipts are concerned. + */ +function inMainTimelineForReceipt(event) { + if (!event.threadRootId) { + // Not in a thread: then it is in the main timeline + return true; + } + if (event.isThreadRoot) { + // Thread roots are in the main timeline. Note: the spec is ambiguous (or + // wrong) on this - see + // https://github.com/matrix-org/matrix-spec-proposals/pull/4037 + return true; + } + if (!event.isRelation()) { + // If it's not related to anything, it can't be related via a chain of + // relations to a thread root. + // + // Note: this is a bug, because how does it have a threadRootId if it is + // neither a thread root, nor related to one? + _logger.logger.warn(`Event is not a relation or a thread root, but still has a threadRootId! id=${event.getId()}`); + return true; + } + if (event.isRelation(_thread.THREAD_RELATION_TYPE.name)) { + // It's a message in a thread - definitely not in the main timeline. + return false; + } + const isRelatedToRoot = event.relationEventId === event.threadRootId; + + // If it's related to the thread root (and we already know it's not a thread + // relation) then it's in the main timeline. If it's related to something + // else, then it's in the thread (because it has a thread ID). + return isRelatedToRoot; +} +//# sourceMappingURL=client.js.map + +/***/ }), + +/***/ 3959: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DecryptionError = void 0; +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Common interface for the crypto implementations + * + * @internal + */ + +/** The methods which crypto implementations should expose to the Sync api + * + * @internal + */ + +/** + * @internal + */ + +/** + * Options object for {@link CryptoBackend#checkOwnCrossSigningTrust}. + */ + +/** + * The result of a (successful) call to {@link CryptoBackend.decryptEvent} + */ + +/** + * Responsible for decrypting megolm session data retrieved from a remote backup. + * The result of {@link CryptoBackend#getBackupDecryptor}. + */ + +/** + * Exception thrown when decryption fails + * + * @param code - Reason code for the failure. + * + * @param msg - user-visible message describing the problem + * + * @param details - key/value pairs reported in the logs but not shown + * to the user. + */ +class DecryptionError extends Error { + constructor(code, msg, details) { + super(msg); + this.code = code; + this.name = "DecryptionError"; + this.detailedString = detailedStringForDecryptionError(this, details); + } +} +exports.DecryptionError = DecryptionError; +function detailedStringForDecryptionError(err, details) { + let result = err.name + "[msg: " + err.message; + if (details) { + result += ", " + Object.keys(details).map(k => k + ": " + details[k]).join(", "); + } + result += "]"; + return result; +} +//# sourceMappingURL=CryptoBackend.js.map + +/***/ }), + +/***/ 4000: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.makeBeaconInfoContent = exports.makeBeaconContent = exports.getTextForLocationEvent = void 0; +exports.makeEmoteMessage = makeEmoteMessage; +exports.makeHtmlEmote = makeHtmlEmote; +exports.makeHtmlMessage = makeHtmlMessage; +exports.makeHtmlNotice = makeHtmlNotice; +exports.makeLocationContent = void 0; +exports.makeNotice = makeNotice; +exports.makeTextMessage = makeTextMessage; +exports.parseTopicContent = exports.parseLocationEvent = exports.parseBeaconInfoContent = exports.parseBeaconContent = exports.makeTopicContent = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _event = __nccwpck_require__(7487); +var _extensible_events = __nccwpck_require__(8572); +var _utilities = __nccwpck_require__(8305); +var _location = __nccwpck_require__(1028); +var _topic = __nccwpck_require__(1489); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2018 - 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * Generates the content for a HTML Message event + * @param body - the plaintext body of the message + * @param htmlBody - the HTML representation of the message + * @returns + */ +function makeHtmlMessage(body, htmlBody) { + return { + msgtype: _event.MsgType.Text, + format: "org.matrix.custom.html", + body: body, + formatted_body: htmlBody + }; +} + +/** + * Generates the content for a HTML Notice event + * @param body - the plaintext body of the notice + * @param htmlBody - the HTML representation of the notice + * @returns + */ +function makeHtmlNotice(body, htmlBody) { + return { + msgtype: _event.MsgType.Notice, + format: "org.matrix.custom.html", + body: body, + formatted_body: htmlBody + }; +} + +/** + * Generates the content for a HTML Emote event + * @param body - the plaintext body of the emote + * @param htmlBody - the HTML representation of the emote + * @returns + */ +function makeHtmlEmote(body, htmlBody) { + return { + msgtype: _event.MsgType.Emote, + format: "org.matrix.custom.html", + body: body, + formatted_body: htmlBody + }; +} + +/** + * Generates the content for a Plaintext Message event + * @param body - the plaintext body of the emote + * @returns + */ +function makeTextMessage(body) { + return { + msgtype: _event.MsgType.Text, + body: body + }; +} + +/** + * Generates the content for a Plaintext Notice event + * @param body - the plaintext body of the notice + * @returns + */ +function makeNotice(body) { + return { + msgtype: _event.MsgType.Notice, + body: body + }; +} + +/** + * Generates the content for a Plaintext Emote event + * @param body - the plaintext body of the emote + * @returns + */ +function makeEmoteMessage(body) { + return { + msgtype: _event.MsgType.Emote, + body: body + }; +} + +/** Location content helpers */ + +const getTextForLocationEvent = (uri, assetType, timestamp, description) => { + const date = `at ${new Date(timestamp).toISOString()}`; + const assetName = assetType === _location.LocationAssetType.Self ? "User" : undefined; + const quotedDescription = description ? `"${description}"` : undefined; + return [assetName, "Location", quotedDescription, uri, date].filter(Boolean).join(" "); +}; + +/** + * Generates the content for a Location event + * @param uri - a geo:// uri for the location + * @param timestamp - the timestamp when the location was correct (milliseconds since the UNIX epoch) + * @param description - the (optional) label for this location on the map + * @param assetType - the (optional) asset type of this location e.g. "m.self" + * @param text - optional. A text for the location + */ +exports.getTextForLocationEvent = getTextForLocationEvent; +const makeLocationContent = (text, uri, timestamp, description, assetType) => { + const defaultedText = text !== null && text !== void 0 ? text : getTextForLocationEvent(uri, assetType || _location.LocationAssetType.Self, timestamp, description); + const timestampEvent = timestamp ? { + [_location.M_TIMESTAMP.name]: timestamp + } : {}; + return _objectSpread({ + msgtype: _event.MsgType.Location, + body: defaultedText, + geo_uri: uri, + [_location.M_LOCATION.name]: { + description, + uri + }, + [_location.M_ASSET.name]: { + type: assetType || _location.LocationAssetType.Self + }, + [_extensible_events.M_TEXT.name]: defaultedText + }, timestampEvent); +}; + +/** + * Parse location event content and transform to + * a backwards compatible modern m.location event format + */ +exports.makeLocationContent = makeLocationContent; +const parseLocationEvent = wireEventContent => { + var _location$uri, _asset$type; + const location = _location.M_LOCATION.findIn(wireEventContent); + const asset = _location.M_ASSET.findIn(wireEventContent); + const timestamp = _location.M_TIMESTAMP.findIn(wireEventContent); + const text = _extensible_events.M_TEXT.findIn(wireEventContent); + const geoUri = (_location$uri = location === null || location === void 0 ? void 0 : location.uri) !== null && _location$uri !== void 0 ? _location$uri : wireEventContent === null || wireEventContent === void 0 ? void 0 : wireEventContent.geo_uri; + const description = location === null || location === void 0 ? void 0 : location.description; + const assetType = (_asset$type = asset === null || asset === void 0 ? void 0 : asset.type) !== null && _asset$type !== void 0 ? _asset$type : _location.LocationAssetType.Self; + const fallbackText = text !== null && text !== void 0 ? text : wireEventContent.body; + return makeLocationContent(fallbackText, geoUri, timestamp !== null && timestamp !== void 0 ? timestamp : undefined, description, assetType); +}; + +/** + * Topic event helpers + */ +exports.parseLocationEvent = parseLocationEvent; +const makeTopicContent = (topic, htmlTopic) => { + const renderings = [{ + body: topic, + mimetype: "text/plain" + }]; + if ((0, _utilities.isProvided)(htmlTopic)) { + renderings.push({ + body: htmlTopic, + mimetype: "text/html" + }); + } + return { + topic, + [_topic.M_TOPIC.name]: renderings + }; +}; +exports.makeTopicContent = makeTopicContent; +const parseTopicContent = content => { + var _mtopic$find$body, _mtopic$find, _mtopic$find2; + const mtopic = _topic.M_TOPIC.findIn(content); + if (!Array.isArray(mtopic)) { + return { + text: content.topic + }; + } + const text = (_mtopic$find$body = mtopic === null || mtopic === void 0 || (_mtopic$find = mtopic.find(r => !(0, _utilities.isProvided)(r.mimetype) || r.mimetype === "text/plain")) === null || _mtopic$find === void 0 ? void 0 : _mtopic$find.body) !== null && _mtopic$find$body !== void 0 ? _mtopic$find$body : content.topic; + const html = mtopic === null || mtopic === void 0 || (_mtopic$find2 = mtopic.find(r => r.mimetype === "text/html")) === null || _mtopic$find2 === void 0 ? void 0 : _mtopic$find2.body; + return { + text, + html + }; +}; + +/** + * Beacon event helpers + */ +exports.parseTopicContent = parseTopicContent; +const makeBeaconInfoContent = (timeout, isLive, description, assetType, timestamp) => ({ + description, + timeout, + live: isLive, + [_location.M_TIMESTAMP.name]: timestamp || Date.now(), + [_location.M_ASSET.name]: { + type: assetType !== null && assetType !== void 0 ? assetType : _location.LocationAssetType.Self + } +}); +exports.makeBeaconInfoContent = makeBeaconInfoContent; +/** + * Flatten beacon info event content + */ +const parseBeaconInfoContent = content => { + var _M_TIMESTAMP$findIn; + const { + description, + timeout, + live + } = content; + const timestamp = (_M_TIMESTAMP$findIn = _location.M_TIMESTAMP.findIn(content)) !== null && _M_TIMESTAMP$findIn !== void 0 ? _M_TIMESTAMP$findIn : undefined; + const asset = _location.M_ASSET.findIn(content); + return { + description, + timeout, + live, + assetType: asset === null || asset === void 0 ? void 0 : asset.type, + timestamp + }; +}; +exports.parseBeaconInfoContent = parseBeaconInfoContent; +const makeBeaconContent = (uri, timestamp, beaconInfoEventId, description) => ({ + [_location.M_LOCATION.name]: { + description, + uri + }, + [_location.M_TIMESTAMP.name]: timestamp, + "m.relates_to": { + rel_type: _extensible_events.REFERENCE_RELATION.name, + event_id: beaconInfoEventId + } +}); +exports.makeBeaconContent = makeBeaconContent; +const parseBeaconContent = content => { + var _M_TIMESTAMP$findIn2; + const location = _location.M_LOCATION.findIn(content); + const timestamp = (_M_TIMESTAMP$findIn2 = _location.M_TIMESTAMP.findIn(content)) !== null && _M_TIMESTAMP$findIn2 !== void 0 ? _M_TIMESTAMP$findIn2 : undefined; + return { + description: location === null || location === void 0 ? void 0 : location.description, + uri: location === null || location === void 0 ? void 0 : location.uri, + timestamp + }; +}; +exports.parseBeaconContent = parseBeaconContent; +//# sourceMappingURL=content-helpers.js.map + +/***/ }), + +/***/ 4233: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getHttpUriForMxc = getHttpUriForMxc; - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - +var _utils = __nccwpck_require__(2557); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -32179,75 +140733,70 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** - * @module content-repo - */ - /** * Get the HTTP URL for an MXC URI. - * @param {string} baseUrl The base homeserver url which has a content repo. - * @param {string} mxc The mxc:// URI. - * @param {Number} width The desired width of the thumbnail. - * @param {Number} height The desired height of the thumbnail. - * @param {string} resizeMethod The thumbnail resize method to use, either + * @param baseUrl - The base homeserver url which has a content repo. + * @param mxc - The mxc:// URI. + * @param width - The desired width of the thumbnail. + * @param height - The desired height of the thumbnail. + * @param resizeMethod - The thumbnail resize method to use, either * "crop" or "scale". - * @param {Boolean} allowDirectLinks If true, return any non-mxc URLs + * @param allowDirectLinks - If true, return any non-mxc URLs * directly. Fetching such URLs will leak information about the user to * anyone they share a room with. If false, will return the emptry string * for such URLs. - * @return {string} The complete URL to the content. + * @param allowRedirects - If true, the caller supports the URL being 307 or + * 308 redirected to another resource upon request. If false, redirects + * are not expected. + * @returns The complete URL to the content. */ -function getHttpUriForMxc(baseUrl, mxc, width, height, resizeMethod, allowDirectLinks) { +function getHttpUriForMxc(baseUrl, mxc, width, height, resizeMethod, allowDirectLinks = false, allowRedirects) { if (typeof mxc !== "string" || !mxc) { - return ''; + return ""; } - if (mxc.indexOf("mxc://") !== 0) { if (allowDirectLinks) { return mxc; } else { - return ''; + return ""; } } - let serverAndMediaId = mxc.slice(6); // strips mxc:// - - let prefix = "/_matrix/media/r0/download/"; + let prefix = "/_matrix/media/v3/download/"; const params = {}; - if (width) { - params.width = Math.round(width); + params["width"] = Math.round(width).toString(); } - if (height) { - params.height = Math.round(height); + params["height"] = Math.round(height).toString(); } - if (resizeMethod) { - params.method = resizeMethod; + params["method"] = resizeMethod; } - - if (utils.keys(params).length > 0) { + if (Object.keys(params).length > 0) { // these are thumbnailing params so they probably want the // thumbnailing API... - prefix = "/_matrix/media/r0/thumbnail/"; + prefix = "/_matrix/media/v3/thumbnail/"; + } + if (typeof allowRedirects === "boolean") { + // We add this after, so we don't convert everything to a thumbnail request. + params["allow_redirect"] = JSON.stringify(allowRedirects); } - const fragmentOffset = serverAndMediaId.indexOf("#"); let fragment = ""; - if (fragmentOffset >= 0) { - fragment = serverAndMediaId.substr(fragmentOffset); - serverAndMediaId = serverAndMediaId.substr(0, fragmentOffset); + fragment = serverAndMediaId.slice(fragmentOffset); + serverAndMediaId = serverAndMediaId.slice(0, fragmentOffset); } - - return baseUrl + prefix + serverAndMediaId + (utils.keys(params).length === 0 ? "" : "?" + utils.encodeParams(params)) + fragment; + const urlParams = Object.keys(params).length === 0 ? "" : "?" + (0, _utils.encodeParams)(params); + return baseUrl + prefix + serverAndMediaId + urlParams + fragment; } +//# sourceMappingURL=content-repo.js.map /***/ }), -/***/ 2933: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 3819: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -32255,23 +140804,377 @@ function getHttpUriForMxc(baseUrl, mxc, width, height, resizeMethod, allowDirect Object.defineProperty(exports, "__esModule", ({ value: true })); +var _exportNames = { + DecryptionFailureCode: true, + UserVerificationStatus: true, + DeviceVerificationStatus: true, + CrossSigningKey: true, + EventShieldColour: true, + EventShieldReason: true +}; +exports.UserVerificationStatus = exports.EventShieldReason = exports.EventShieldColour = exports.DeviceVerificationStatus = exports.DecryptionFailureCode = exports.CrossSigningKey = void 0; +var _verification = __nccwpck_require__(6825); +Object.keys(_verification).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _verification[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _verification[key]; + } + }); +}); +var _keybackup = __nccwpck_require__(2837); +Object.keys(_keybackup).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _keybackup[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _keybackup[key]; + } + }); +}); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * Public interface to the cryptography parts of the js-sdk + * + * @remarks Currently, this is a work-in-progress. In time, more methods will be added here. + */ +/** A reason code for a failure to decrypt an event. */ +let DecryptionFailureCode = exports.DecryptionFailureCode = /*#__PURE__*/function (DecryptionFailureCode) { + DecryptionFailureCode["MEGOLM_UNKNOWN_INBOUND_SESSION_ID"] = "MEGOLM_UNKNOWN_INBOUND_SESSION_ID"; + DecryptionFailureCode["OLM_UNKNOWN_MESSAGE_INDEX"] = "OLM_UNKNOWN_MESSAGE_INDEX"; + DecryptionFailureCode["HISTORICAL_MESSAGE_NO_KEY_BACKUP"] = "HISTORICAL_MESSAGE_NO_KEY_BACKUP"; + DecryptionFailureCode["HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED"] = "HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED"; + DecryptionFailureCode["HISTORICAL_MESSAGE_WORKING_BACKUP"] = "HISTORICAL_MESSAGE_WORKING_BACKUP"; + DecryptionFailureCode["HISTORICAL_MESSAGE_USER_NOT_JOINED"] = "HISTORICAL_MESSAGE_USER_NOT_JOINED"; + DecryptionFailureCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR"; + DecryptionFailureCode["MEGOLM_BAD_ROOM"] = "MEGOLM_BAD_ROOM"; + DecryptionFailureCode["MEGOLM_MISSING_FIELDS"] = "MEGOLM_MISSING_FIELDS"; + DecryptionFailureCode["OLM_DECRYPT_GROUP_MESSAGE_ERROR"] = "OLM_DECRYPT_GROUP_MESSAGE_ERROR"; + DecryptionFailureCode["OLM_BAD_ENCRYPTED_MESSAGE"] = "OLM_BAD_ENCRYPTED_MESSAGE"; + DecryptionFailureCode["OLM_BAD_RECIPIENT"] = "OLM_BAD_RECIPIENT"; + DecryptionFailureCode["OLM_BAD_RECIPIENT_KEY"] = "OLM_BAD_RECIPIENT_KEY"; + DecryptionFailureCode["OLM_BAD_ROOM"] = "OLM_BAD_ROOM"; + DecryptionFailureCode["OLM_BAD_SENDER_CHECK_FAILED"] = "OLM_BAD_SENDER_CHECK_FAILED"; + DecryptionFailureCode["OLM_BAD_SENDER"] = "OLM_BAD_SENDER"; + DecryptionFailureCode["OLM_FORWARDED_MESSAGE"] = "OLM_FORWARDED_MESSAGE"; + DecryptionFailureCode["OLM_MISSING_CIPHERTEXT"] = "OLM_MISSING_CIPHERTEXT"; + DecryptionFailureCode["OLM_NOT_INCLUDED_IN_RECIPIENTS"] = "OLM_NOT_INCLUDED_IN_RECIPIENTS"; + DecryptionFailureCode["UNKNOWN_ENCRYPTION_ALGORITHM"] = "UNKNOWN_ENCRYPTION_ALGORITHM"; + return DecryptionFailureCode; +}({}); +/** + * Options object for `CryptoApi.bootstrapCrossSigning`. + */ +/** + * Represents the ways in which we trust a user + */ +class UserVerificationStatus { + constructor(crossSigningVerified, crossSigningVerifiedBefore, tofu) { + this.crossSigningVerified = crossSigningVerified; + this.crossSigningVerifiedBefore = crossSigningVerifiedBefore; + this.tofu = tofu; + } + + /** + * @returns true if this user is verified via any means + */ + isVerified() { + return this.isCrossSigningVerified(); + } + + /** + * @returns true if this user is verified via cross signing + */ + isCrossSigningVerified() { + return this.crossSigningVerified; + } + + /** + * @returns true if we ever verified this user before (at least for + * the history of verifications observed by this device). + */ + wasCrossSigningVerified() { + return this.crossSigningVerifiedBefore; + } + + /** + * @returns true if this user's key is trusted on first use + */ + isTofu() { + return this.tofu; + } +} +exports.UserVerificationStatus = UserVerificationStatus; +class DeviceVerificationStatus { + /** + * True if this device has been signed by its owner (and that signature verified). + * + * This doesn't necessarily mean that we have verified the device, since we may not have verified the + * owner's cross-signing key. + */ + + /** + * True if this device has been verified via cross signing. + * + * This does *not* take into account `trustCrossSignedDevices`. + */ + + /** + * TODO: tofu magic wtf does this do? + */ + + /** + * True if the device has been marked as locally verified. + */ + + /** + * True if the client has been configured to trust cross-signed devices via {@link CryptoApi#setTrustCrossSignedDevices}. + */ + + constructor(opts) { + var _opts$signedByOwner, _opts$crossSigningVer, _opts$tofu, _opts$localVerified, _opts$trustCrossSigne; + this.signedByOwner = (_opts$signedByOwner = opts.signedByOwner) !== null && _opts$signedByOwner !== void 0 ? _opts$signedByOwner : false; + this.crossSigningVerified = (_opts$crossSigningVer = opts.crossSigningVerified) !== null && _opts$crossSigningVer !== void 0 ? _opts$crossSigningVer : false; + this.tofu = (_opts$tofu = opts.tofu) !== null && _opts$tofu !== void 0 ? _opts$tofu : false; + this.localVerified = (_opts$localVerified = opts.localVerified) !== null && _opts$localVerified !== void 0 ? _opts$localVerified : false; + this.trustCrossSignedDevices = (_opts$trustCrossSigne = opts.trustCrossSignedDevices) !== null && _opts$trustCrossSigne !== void 0 ? _opts$trustCrossSigne : false; + } + + /** + * Check if we should consider this device "verified". + * + * A device is "verified" if either: + * * it has been manually marked as such via {@link MatrixClient#setDeviceVerified}. + * * it has been cross-signed with a verified signing key, **and** the client has been configured to trust + * cross-signed devices via {@link Crypto.CryptoApi#setTrustCrossSignedDevices}. + * + * @returns true if this device is verified via any means. + */ + isVerified() { + return this.localVerified || this.trustCrossSignedDevices && this.crossSigningVerified; + } +} + +/** + * Room key import progress report. + * Used when calling {@link CryptoApi#importRoomKeys} or + * {@link CryptoApi#importRoomKeysAsJson} as the parameter of + * the progressCallback. Used to display feedback. + */ + +/** + * Options object for {@link CryptoApi#importRoomKeys} and + * {@link CryptoApi#importRoomKeysAsJson}. + */ + +/** + * The result of a call to {@link CryptoApi.getCrossSigningStatus}. + */ + +/** + * Crypto callbacks provided by the application + */ + +/** + * Parameter of {@link CryptoApi#bootstrapSecretStorage} + */ +exports.DeviceVerificationStatus = DeviceVerificationStatus; +/** Types of cross-signing key */ +let CrossSigningKey = exports.CrossSigningKey = /*#__PURE__*/function (CrossSigningKey) { + CrossSigningKey["Master"] = "master"; + CrossSigningKey["SelfSigning"] = "self_signing"; + CrossSigningKey["UserSigning"] = "user_signing"; + return CrossSigningKey; +}({}); +/** + * Information on one of the cross-signing keys. + * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3keysdevice_signingupload + */ +/** + * Recovery key created by {@link CryptoApi#createRecoveryKeyFromPassphrase} or {@link CreateSecretStorageOpts#createSecretStorageKey}. + */ +/** + * Result type of {@link CryptoApi#getEncryptionInfoForEvent}. + */ +/** + * Types of shield to be shown for {@link EventEncryptionInfo#shieldColour}. + */ +let EventShieldColour = exports.EventShieldColour = /*#__PURE__*/function (EventShieldColour) { + EventShieldColour[EventShieldColour["NONE"] = 0] = "NONE"; + EventShieldColour[EventShieldColour["GREY"] = 1] = "GREY"; + EventShieldColour[EventShieldColour["RED"] = 2] = "RED"; + return EventShieldColour; +}({}); +/** + * Reason codes for {@link EventEncryptionInfo#shieldReason}. + */ +let EventShieldReason = exports.EventShieldReason = /*#__PURE__*/function (EventShieldReason) { + EventShieldReason[EventShieldReason["UNKNOWN"] = 0] = "UNKNOWN"; + EventShieldReason[EventShieldReason["UNVERIFIED_IDENTITY"] = 1] = "UNVERIFIED_IDENTITY"; + EventShieldReason[EventShieldReason["UNSIGNED_DEVICE"] = 2] = "UNSIGNED_DEVICE"; + EventShieldReason[EventShieldReason["UNKNOWN_DEVICE"] = 3] = "UNKNOWN_DEVICE"; + EventShieldReason[EventShieldReason["AUTHENTICITY_NOT_GUARANTEED"] = 4] = "AUTHENTICITY_NOT_GUARANTEED"; + EventShieldReason[EventShieldReason["MISMATCHED_SENDER_KEY"] = 5] = "MISMATCHED_SENDER_KEY"; + return EventShieldReason; +}({}); +/** The result of a call to {@link CryptoApi.getOwnDeviceKeys} */ +//# sourceMappingURL=crypto-api.js.map + +/***/ }), + +/***/ 2837: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +//# sourceMappingURL=keybackup.js.map + +/***/ }), + +/***/ 6825: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.VerifierEvent = exports.VerificationRequestEvent = exports.VerificationPhase = void 0; +exports.canAcceptVerificationRequest = canAcceptVerificationRequest; +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * An incoming, or outgoing, request to verify a user or a device via cross-signing. + */ +/** Events emitted by {@link VerificationRequest}. */ +let VerificationRequestEvent = exports.VerificationRequestEvent = /*#__PURE__*/function (VerificationRequestEvent) { + VerificationRequestEvent["Change"] = "change"; + return VerificationRequestEvent; +}({}); +/** + * Listener type map for {@link VerificationRequestEvent}s. + * + * @internal + */ +/** The current phase of a verification request. */ +let VerificationPhase = exports.VerificationPhase = /*#__PURE__*/function (VerificationPhase) { + VerificationPhase[VerificationPhase["Unsent"] = 1] = "Unsent"; + VerificationPhase[VerificationPhase["Requested"] = 2] = "Requested"; + VerificationPhase[VerificationPhase["Ready"] = 3] = "Ready"; + VerificationPhase[VerificationPhase["Started"] = 4] = "Started"; + VerificationPhase[VerificationPhase["Cancelled"] = 5] = "Cancelled"; + VerificationPhase[VerificationPhase["Done"] = 6] = "Done"; + return VerificationPhase; +}({}); +/** + * A `Verifier` is responsible for performing the verification using a particular method, such as via QR code or SAS + * (emojis). + * + * A verifier object can be created by calling `VerificationRequest.beginVerification`; one is also created + * automatically when a `m.key.verification.start` event is received for an existing VerificationRequest. + * + * Once a verifier object is created, the verification can be started by calling the {@link Verifier#verify} method. + */ +/** Events emitted by {@link Verifier} */ +let VerifierEvent = exports.VerifierEvent = /*#__PURE__*/function (VerifierEvent) { + VerifierEvent["Cancel"] = "cancel"; + VerifierEvent["ShowSas"] = "show_sas"; + VerifierEvent["ShowReciprocateQr"] = "show_reciprocate_qr"; + return VerifierEvent; +}({}); +/** Listener type map for {@link VerifierEvent}s. */ +/** + * Callbacks for user actions to confirm that the other side has scanned our QR code. + * + * This is exposed as the payload of a `VerifierEvent.ShowReciprocateQr` event, or can be retrieved directly from the + * verifier as `reciprocateQREvent`. + */ +/** + * Callbacks for user actions while a SAS is displayed. + * + * This is exposed as the payload of a `VerifierEvent.ShowSas` event, or directly from the verifier as `sasEvent`. + */ +/** A generated SAS to be shown to the user, in alternative formats */ +/** + * An emoji for the generated SAS. A tuple `[emoji, name]` where `emoji` is the emoji itself and `name` is the + * English name. + */ +/** + * True if the request is in a state where it can be accepted (ie, that we're in phases {@link VerificationPhase.Unsent} + * or {@link VerificationPhase.Requested}, and that we're not in the process of sending a `ready` or `cancel`). + */ +function canAcceptVerificationRequest(req) { + return req.phase < VerificationPhase.Ready && !req.accepting && !req.declining; +} +//# sourceMappingURL=verification.js.map + +/***/ }), + +/***/ 2933: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DeviceTrustLevel = exports.CrossSigningLevel = exports.CrossSigningInfo = void 0; +Object.defineProperty(exports, "UserTrustLevel", ({ + enumerable: true, + get: function () { + return _cryptoApi.UserVerificationStatus; + } +})); exports.createCryptoStoreCacheCallbacks = createCryptoStoreCacheCallbacks; exports.requestKeysDuringVerification = requestKeysDuringVerification; -exports.DeviceTrustLevel = exports.UserTrustLevel = exports.CrossSigningLevel = exports.CrossSigningInfo = void 0; - -var _olmlib = __webpack_require__(7131); - -var _events = __webpack_require__(8614); - -var _logger = __webpack_require__(3854); - -var _indexeddbCryptoStore = __webpack_require__(5651); - -var _aes = __webpack_require__(7502); - +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _olmlib = __nccwpck_require__(7131); +var _logger = __nccwpck_require__(3854); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +var _aes = __nccwpck_require__(7502); +var _cryptoApi = __nccwpck_require__(3819); +var _base = __nccwpck_require__(7477); /* -Copyright 2019 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2019 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -32288,59 +141191,49 @@ limitations under the License. /** * Cross signing methods - * @module crypto/CrossSigning */ -const KEY_REQUEST_TIMEOUT_MS = 1000 * 60; +// backwards-compatibility re-exports + +const KEY_REQUEST_TIMEOUT_MS = 1000 * 60; function publicKeyFromKeyInfo(keyInfo) { // `keys` is an object with { [`ed25519:${pubKey}`]: pubKey } // We assume only a single key, and we want the bare form without type // prefix, so we select the values. return Object.values(keyInfo.keys)[0]; } - -class CrossSigningInfo extends _events.EventEmitter { +class CrossSigningInfo { /** * Information about a user's cross-signing keys * - * @class - * - * @param {string} userId the user that the information is about - * @param {object} callbacks Callbacks used to interact with the app + * @param userId - the user that the information is about + * @param callbacks - Callbacks used to interact with the app * Requires getCrossSigningKey and saveCrossSigningKeys - * @param {object} cacheCallbacks Callbacks used to interact with the cache + * @param cacheCallbacks - Callbacks used to interact with the cache */ - constructor(userId, callbacks, cacheCallbacks) { - super(); // you can't change the userId - - Object.defineProperty(this, 'userId', { - enumerable: true, - value: userId - }); - this._callbacks = callbacks || {}; - this._cacheCallbacks = cacheCallbacks || {}; - this.keys = {}; - this.firstUse = true; // This tracks whether we've ever verified this user with any identity. + constructor(userId, callbacks = {}, cacheCallbacks = {}) { + (0, _defineProperty2.default)(this, "keys", {}); + (0, _defineProperty2.default)(this, "firstUse", true); + // This tracks whether we've ever verified this user with any identity. // When you verify a user, any devices online at the time that receive // the verifying signature via the homeserver will latch this to true // and can use it in the future to detect cases where the user has - // become unverifed later for any reason. - - this.crossSigningVerifiedBefore = false; + // become unverified later for any reason. + (0, _defineProperty2.default)(this, "crossSigningVerifiedBefore", false); + this.userId = userId; + this.callbacks = callbacks; + this.cacheCallbacks = cacheCallbacks; } - static fromStorage(obj, userId) { const res = new CrossSigningInfo(userId); - for (const prop in obj) { if (obj.hasOwnProperty(prop)) { + // @ts-ignore - ts doesn't like this and nor should we res[prop] = obj[prop]; } } - return res; } - toStorage() { return { keys: this.keys, @@ -32348,88 +141241,72 @@ class CrossSigningInfo extends _events.EventEmitter { crossSigningVerifiedBefore: this.crossSigningVerifiedBefore }; } + /** * Calls the app callback to ask for a private key * - * @param {string} type The key type ("master", "self_signing", or "user_signing") - * @param {string} expectedPubkey The matching public key or undefined to use + * @param type - The key type ("master", "self_signing", or "user_signing") + * @param expectedPubkey - The matching public key or undefined to use * the stored public key for the given key type. - * @returns {Array} An array with [ public key, Olm.PkSigning ] + * @returns An array with [ public key, Olm.PkSigning ] */ - - async getCrossSigningKey(type, expectedPubkey) { const shouldCache = ["master", "self_signing", "user_signing"].indexOf(type) >= 0; - - if (!this._callbacks.getCrossSigningKey) { + if (!this.callbacks.getCrossSigningKey) { throw new Error("No getCrossSigningKey callback supplied"); } - if (expectedPubkey === undefined) { expectedPubkey = this.getId(type); } - function validateKey(key) { if (!key) return; const signing = new global.Olm.PkSigning(); const gotPubkey = signing.init_with_seed(key); - if (gotPubkey === expectedPubkey) { return [gotPubkey, signing]; } - signing.free(); } - - let privkey; - - if (this._cacheCallbacks.getCrossSigningKeyCache && shouldCache) { - privkey = await this._cacheCallbacks.getCrossSigningKeyCache(type, expectedPubkey); + let privkey = null; + if (this.cacheCallbacks.getCrossSigningKeyCache && shouldCache) { + privkey = await this.cacheCallbacks.getCrossSigningKeyCache(type, expectedPubkey); } - const cacheresult = validateKey(privkey); - if (cacheresult) { return cacheresult; } - - privkey = await this._callbacks.getCrossSigningKey(type, expectedPubkey); + privkey = await this.callbacks.getCrossSigningKey(type, expectedPubkey); const result = validateKey(privkey); - if (result) { - if (this._cacheCallbacks.storeCrossSigningKeyCache && shouldCache) { - await this._cacheCallbacks.storeCrossSigningKeyCache(type, privkey); + if (this.cacheCallbacks.storeCrossSigningKeyCache && shouldCache) { + await this.cacheCallbacks.storeCrossSigningKeyCache(type, privkey); } - return result; } + /* No keysource even returned a key */ - - if (!privkey) { throw new Error("getCrossSigningKey callback for " + type + " returned falsey"); } + /* We got some keys from the keysource, but none of them were valid */ - - throw new Error("Key type " + type + " from getCrossSigningKey callback did not match"); } + /** * Check whether the private keys exist in secret storage. * XXX: This could be static, be we often seem to have an instance when we * want to know this anyway... * - * @param {SecretStorage} secretStorage The secret store using account data - * @returns {object} map of key name to key info the secret is encrypted + * @param secretStorage - The secret store using account data + * @returns map of key name to key info the secret is encrypted * with, or null if it is not present or not encrypted with a trusted * key */ - - async isStoredInSecretStorage(secretStorage) { // check what SSSS keys have encrypted the master key (if any) - const stored = (await secretStorage.isStored("m.cross_signing.master", false)) || {}; // then check which of those SSSS keys have also encrypted the SSK and USK - + const stored = (await secretStorage.isStored("m.cross_signing.master")) || {}; + // then check which of those SSSS keys have also encrypted the SSK and USK function intersect(s) { for (const k of Object.keys(stored)) { if (!s[k]) { @@ -32437,138 +141314,121 @@ class CrossSigningInfo extends _events.EventEmitter { } } } - for (const type of ["self_signing", "user_signing"]) { - intersect((await secretStorage.isStored(`m.cross_signing.${type}`, false)) || {}); + intersect((await secretStorage.isStored(`m.cross_signing.${type}`)) || {}); } - return Object.keys(stored).length ? stored : null; } + /** * Store private keys in secret storage for use by other devices. This is * typically called in conjunction with the creation of new cross-signing * keys. * - * @param {Map} keys The keys to store - * @param {SecretStorage} secretStorage The secret store using account data + * @param keys - The keys to store + * @param secretStorage - The secret store using account data */ - - static async storeInSecretStorage(keys, secretStorage) { for (const [type, privateKey] of keys) { - const encodedKey = (0, _olmlib.encodeBase64)(privateKey); + const encodedKey = (0, _base.encodeBase64)(privateKey); await secretStorage.store(`m.cross_signing.${type}`, encodedKey); } } + /** * Get private keys from secret storage created by some other device. This * also passes the private keys to the app-specific callback. * - * @param {string} type The type of key to get. One of "master", + * @param type - The type of key to get. One of "master", * "self_signing", or "user_signing". - * @param {SecretStorage} secretStorage The secret store using account data - * @return {Uint8Array} The private key + * @param secretStorage - The secret store using account data + * @returns The private key */ - - static async getFromSecretStorage(type, secretStorage) { const encodedKey = await secretStorage.get(`m.cross_signing.${type}`); - if (!encodedKey) { return null; } - - return (0, _olmlib.decodeBase64)(encodedKey); + return (0, _base.decodeBase64)(encodedKey); } + /** * Check whether the private keys exist in the local key cache. * - * @param {string} [type] The type of key to get. One of "master", + * @param type - The type of key to get. One of "master", * "self_signing", or "user_signing". Optional, will check all by default. - * @returns {boolean} True if all keys are stored in the local cache. + * @returns True if all keys are stored in the local cache. */ - - async isStoredInKeyCache(type) { - const cacheCallbacks = this._cacheCallbacks; + const cacheCallbacks = this.cacheCallbacks; if (!cacheCallbacks) return false; const types = type ? [type] : ["master", "self_signing", "user_signing"]; - for (const t of types) { - if (!(await cacheCallbacks.getCrossSigningKeyCache(t))) { + var _cacheCallbacks$getCr; + if (!(await ((_cacheCallbacks$getCr = cacheCallbacks.getCrossSigningKeyCache) === null || _cacheCallbacks$getCr === void 0 ? void 0 : _cacheCallbacks$getCr.call(cacheCallbacks, t)))) { return false; } } - return true; } + /** * Get cross-signing private keys from the local cache. * - * @returns {Map} A map from key type (string) to private key (Uint8Array) + * @returns A map from key type (string) to private key (Uint8Array) */ - - async getCrossSigningKeysFromCache() { const keys = new Map(); - const cacheCallbacks = this._cacheCallbacks; + const cacheCallbacks = this.cacheCallbacks; if (!cacheCallbacks) return keys; - for (const type of ["master", "self_signing", "user_signing"]) { - const privKey = await cacheCallbacks.getCrossSigningKeyCache(type); - + var _cacheCallbacks$getCr2; + const privKey = await ((_cacheCallbacks$getCr2 = cacheCallbacks.getCrossSigningKeyCache) === null || _cacheCallbacks$getCr2 === void 0 ? void 0 : _cacheCallbacks$getCr2.call(cacheCallbacks, type)); if (!privKey) { continue; } - keys.set(type, privKey); } - return keys; } + /** * Get the ID used to identify the user. This can also be used to test for * the existence of a given key type. * - * @param {string} type The type of key to get the ID of. One of "master", + * @param type - The type of key to get the ID of. One of "master", * "self_signing", or "user_signing". Defaults to "master". * - * @return {string} the ID + * @returns the ID */ - - - getId(type) { - type = type || "master"; + getId(type = "master") { if (!this.keys[type]) return null; const keyInfo = this.keys[type]; return publicKeyFromKeyInfo(keyInfo); } + /** * Create new cross-signing keys for the given key types. The public keys * will be held in this class, while the private keys are passed off to the * `saveCrossSigningKeys` application callback. * - * @param {CrossSigningLevel} level The key types to reset + * @param level - The key types to reset */ - - async resetKeys(level) { - if (!this._callbacks.saveCrossSigningKeys) { + if (!this.callbacks.saveCrossSigningKeys) { throw new Error("No saveCrossSigningKeys callback supplied"); - } // If we're resetting the master key, we reset all keys - + } + // If we're resetting the master key, we reset all keys if (level === undefined || level & CrossSigningLevel.MASTER || !this.keys.master) { level = CrossSigningLevel.MASTER | CrossSigningLevel.USER_SIGNING | CrossSigningLevel.SELF_SIGNING; } else if (level === 0) { return; } - const privateKeys = {}; const keys = {}; let masterSigning; let masterPub; - try { if (level & CrossSigningLevel.MASTER) { masterSigning = new global.Olm.PkSigning(); @@ -32576,26 +141436,24 @@ class CrossSigningInfo extends _events.EventEmitter { masterPub = masterSigning.init_with_seed(privateKeys.master); keys.master = { user_id: this.userId, - usage: ['master'], + usage: ["master"], keys: { - ['ed25519:' + masterPub]: masterPub + ["ed25519:" + masterPub]: masterPub } }; } else { [masterPub, masterSigning] = await this.getCrossSigningKey("master"); } - if (level & CrossSigningLevel.SELF_SIGNING) { const sskSigning = new global.Olm.PkSigning(); - try { privateKeys.self_signing = sskSigning.generate_seed(); const sskPub = sskSigning.init_with_seed(privateKeys.self_signing); keys.self_signing = { user_id: this.userId, - usage: ['self_signing'], + usage: ["self_signing"], keys: { - ['ed25519:' + sskPub]: sskPub + ["ed25519:" + sskPub]: sskPub } }; (0, _olmlib.pkSign)(keys.self_signing, masterSigning, this.userId, masterPub); @@ -32603,18 +141461,16 @@ class CrossSigningInfo extends _events.EventEmitter { sskSigning.free(); } } - if (level & CrossSigningLevel.USER_SIGNING) { const uskSigning = new global.Olm.PkSigning(); - try { privateKeys.user_signing = uskSigning.generate_seed(); const uskPub = uskSigning.init_with_seed(privateKeys.user_signing); keys.user_signing = { user_id: this.userId, - usage: ['user_signing'], + usage: ["user_signing"], keys: { - ['ed25519:' + uskPub]: uskPub + ["ed25519:" + uskPub]: uskPub } }; (0, _olmlib.pkSign)(keys.user_signing, masterSigning, this.userId, masterPub); @@ -32622,37 +141478,29 @@ class CrossSigningInfo extends _events.EventEmitter { uskSigning.free(); } } - Object.assign(this.keys, keys); - - this._callbacks.saveCrossSigningKeys(privateKeys); + this.callbacks.saveCrossSigningKeys(privateKeys); } finally { if (masterSigning) { masterSigning.free(); } } } + /** * unsets the keys, used when another session has reset the keys, to disable cross-signing */ - - clearKeys() { this.keys = {}; } - setKeys(keys) { const signingKeys = {}; - if (keys.master) { if (keys.master.user_id !== this.userId) { const error = "Mismatched user ID " + keys.master.user_id + " in master key from " + this.userId; - _logger.logger.error(error); - throw new Error(error); } - if (!this.keys.master) { // this is the first key we've seen, so first-use is true this.firstUse = true; @@ -32660,73 +141508,58 @@ class CrossSigningInfo extends _events.EventEmitter { // this is a different key, so first-use is false this.firstUse = false; } // otherwise, same key, so no change - - signingKeys.master = keys.master; } else if (this.keys.master) { signingKeys.master = this.keys.master; } else { throw new Error("Tried to set cross-signing keys without a master key"); } + const masterKey = publicKeyFromKeyInfo(signingKeys.master); - const masterKey = publicKeyFromKeyInfo(signingKeys.master); // verify signatures - + // verify signatures if (keys.user_signing) { if (keys.user_signing.user_id !== this.userId) { const error = "Mismatched user ID " + keys.master.user_id + " in user_signing key from " + this.userId; - _logger.logger.error(error); - throw new Error(error); } - try { (0, _olmlib.pkVerify)(keys.user_signing, masterKey, this.userId); } catch (e) { - _logger.logger.error("invalid signature on user-signing key"); // FIXME: what do we want to do here? - - + _logger.logger.error("invalid signature on user-signing key"); + // FIXME: what do we want to do here? throw e; } } - if (keys.self_signing) { if (keys.self_signing.user_id !== this.userId) { const error = "Mismatched user ID " + keys.master.user_id + " in self_signing key from " + this.userId; - _logger.logger.error(error); - throw new Error(error); } - try { (0, _olmlib.pkVerify)(keys.self_signing, masterKey, this.userId); } catch (e) { - _logger.logger.error("invalid signature on self-signing key"); // FIXME: what do we want to do here? - - + _logger.logger.error("invalid signature on self-signing key"); + // FIXME: what do we want to do here? throw e; } - } // if everything checks out, then save the keys - - - if (keys.master) { - this.keys.master = keys.master; // if the master key is set, then the old self-signing and - // user-signing keys are obsolete - - this.keys.self_signing = null; - this.keys.user_signing = null; } + // if everything checks out, then save the keys + if (keys.master) { + this.keys.master = keys.master; + // if the master key is set, then the old self-signing and user-signing keys are obsolete + delete this.keys["self_signing"]; + delete this.keys["user_signing"]; + } if (keys.self_signing) { this.keys.self_signing = keys.self_signing; } - if (keys.user_signing) { this.keys.user_signing = keys.user_signing; } } - updateCrossSigningVerifiedBefore(isCrossSigningVerified) { // It is critical that this value latches forward from false to true but // never back to false to avoid a downgrade attack. @@ -32734,14 +141567,11 @@ class CrossSigningInfo extends _events.EventEmitter { this.crossSigningVerifiedBefore = true; } } - async signObject(data, type) { if (!this.keys[type]) { throw new Error("Attempted to sign with " + type + " key but no such key present"); } - const [pubkey, signing] = await this.getCrossSigningKey(type); - try { (0, _olmlib.pkSign)(data, signing, this.userId, pubkey); return data; @@ -32749,28 +141579,21 @@ class CrossSigningInfo extends _events.EventEmitter { signing.free(); } } - async signUser(key) { if (!this.keys.user_signing) { _logger.logger.info("No user signing key: not signing user"); - return; } - return this.signObject(key.keys.master, "user_signing"); } - async signDevice(userId, device) { if (userId !== this.userId) { throw new Error(`Trying to sign ${userId}'s device; can only sign our own device`); } - if (!this.keys.self_signing) { _logger.logger.info("No self signing key: not signing device"); - return; } - return this.signObject({ algorithms: device.algorithms, keys: device.keys, @@ -32778,89 +141601,76 @@ class CrossSigningInfo extends _events.EventEmitter { user_id: userId }, "self_signing"); } + /** * Check whether a given user is trusted. * - * @param {CrossSigningInfo} userCrossSigning Cross signing info for user + * @param userCrossSigning - Cross signing info for user * - * @returns {UserTrustLevel} + * @returns */ - - checkUserTrust(userCrossSigning) { // if we're checking our own key, then it's trusted if the master key // and self-signing key match if (this.userId === userCrossSigning.userId && this.getId() && this.getId() === userCrossSigning.getId() && this.getId("self_signing") && this.getId("self_signing") === userCrossSigning.getId("self_signing")) { - return new UserTrustLevel(true, true, this.firstUse); + return new _cryptoApi.UserVerificationStatus(true, true, this.firstUse); } - if (!this.keys.user_signing) { // If there's no user signing key, they can't possibly be verified. // They may be TOFU trusted though. - return new UserTrustLevel(false, false, userCrossSigning.firstUse); + return new _cryptoApi.UserVerificationStatus(false, false, userCrossSigning.firstUse); } - let userTrusted; const userMaster = userCrossSigning.keys.master; - const uskId = this.getId('user_signing'); - + const uskId = this.getId("user_signing"); try { (0, _olmlib.pkVerify)(userMaster, uskId, this.userId); userTrusted = true; } catch (e) { userTrusted = false; } - - return new UserTrustLevel(userTrusted, userCrossSigning.crossSigningVerifiedBefore, userCrossSigning.firstUse); + return new _cryptoApi.UserVerificationStatus(userTrusted, userCrossSigning.crossSigningVerifiedBefore, userCrossSigning.firstUse); } + /** * Check whether a given device is trusted. * - * @param {CrossSigningInfo} userCrossSigning Cross signing info for user - * @param {module:crypto/deviceinfo} device The device to check - * @param {bool} localTrust Whether the device is trusted locally - * @param {bool} trustCrossSignedDevices Whether we trust cross signed devices + * @param userCrossSigning - Cross signing info for user + * @param device - The device to check + * @param localTrust - Whether the device is trusted locally + * @param trustCrossSignedDevices - Whether we trust cross signed devices * - * @returns {DeviceTrustLevel} + * @returns */ - - checkDeviceTrust(userCrossSigning, device, localTrust, trustCrossSignedDevices) { const userTrust = this.checkUserTrust(userCrossSigning); const userSSK = userCrossSigning.keys.self_signing; - if (!userSSK) { // if the user has no self-signing key then we cannot make any // trust assertions about this device from cross-signing return new DeviceTrustLevel(false, false, localTrust, trustCrossSignedDevices); } - const deviceObj = deviceToObject(device, userCrossSigning.userId); - try { // if we can verify the user's SSK from their master key... - (0, _olmlib.pkVerify)(userSSK, userCrossSigning.getId(), userCrossSigning.userId); // ...and this device's key from their SSK... - - (0, _olmlib.pkVerify)(deviceObj, publicKeyFromKeyInfo(userSSK), userCrossSigning.userId); // ...then we trust this device as much as far as we trust the user - + (0, _olmlib.pkVerify)(userSSK, userCrossSigning.getId(), userCrossSigning.userId); + // ...and this device's key from their SSK... + (0, _olmlib.pkVerify)(deviceObj, publicKeyFromKeyInfo(userSSK), userCrossSigning.userId); + // ...then we trust this device as much as far as we trust the user return DeviceTrustLevel.fromUserTrustLevel(userTrust, localTrust, trustCrossSignedDevices); } catch (e) { return new DeviceTrustLevel(false, false, localTrust, trustCrossSignedDevices); } } + /** - * @returns {object} Cache callbacks + * @returns Cache callbacks */ - - getCacheCallbacks() { - return this._cacheCallbacks; + return this.cacheCallbacks; } - } - exports.CrossSigningInfo = CrossSigningInfo; - function deviceToObject(device, userId) { return { algorithms: device.algorithms, @@ -32870,128 +141680,66 @@ function deviceToObject(device, userId) { signatures: device.signatures }; } - -const CrossSigningLevel = { - MASTER: 4, - USER_SIGNING: 2, - SELF_SIGNING: 1 -}; +let CrossSigningLevel = exports.CrossSigningLevel = /*#__PURE__*/function (CrossSigningLevel) { + CrossSigningLevel[CrossSigningLevel["MASTER"] = 4] = "MASTER"; + CrossSigningLevel[CrossSigningLevel["USER_SIGNING"] = 2] = "USER_SIGNING"; + CrossSigningLevel[CrossSigningLevel["SELF_SIGNING"] = 1] = "SELF_SIGNING"; + return CrossSigningLevel; +}({}); /** - * Represents the ways in which we trust a user + * Represents the ways in which we trust a device. + * + * @deprecated Use {@link DeviceVerificationStatus}. */ - -exports.CrossSigningLevel = CrossSigningLevel; - -class UserTrustLevel { - constructor(crossSigningVerified, crossSigningVerifiedBefore, tofu) { - this._crossSigningVerified = crossSigningVerified; - this._crossSigningVerifiedBefore = crossSigningVerifiedBefore; - this._tofu = tofu; +class DeviceTrustLevel extends _cryptoApi.DeviceVerificationStatus { + constructor(crossSigningVerified, tofu, localVerified, trustCrossSignedDevices, signedByOwner = false) { + super({ + crossSigningVerified, + tofu, + localVerified, + trustCrossSignedDevices, + signedByOwner + }); } - /** - * @returns {bool} true if this user is verified via any means - */ - - - isVerified() { - return this.isCrossSigningVerified(); - } - /** - * @returns {bool} true if this user is verified via cross signing - */ - - - isCrossSigningVerified() { - return this._crossSigningVerified; - } - /** - * @returns {bool} true if we ever verified this user before (at least for - * the history of verifications observed by this device). - */ - - - wasCrossSigningVerified() { - return this._crossSigningVerifiedBefore; - } - /** - * @returns {bool} true if this user's key is trusted on first use - */ - - - isTofu() { - return this._tofu; - } - -} -/** - * Represents the ways in which we trust a device - */ - - -exports.UserTrustLevel = UserTrustLevel; - -class DeviceTrustLevel { - constructor(crossSigningVerified, tofu, localVerified, trustCrossSignedDevices) { - this._crossSigningVerified = crossSigningVerified; - this._tofu = tofu; - this._localVerified = localVerified; - this._trustCrossSignedDevices = trustCrossSignedDevices; - } - static fromUserTrustLevel(userTrustLevel, localVerified, trustCrossSignedDevices) { - return new DeviceTrustLevel(userTrustLevel._crossSigningVerified, userTrustLevel._tofu, localVerified, trustCrossSignedDevices); + return new DeviceTrustLevel(userTrustLevel.isCrossSigningVerified(), userTrustLevel.isTofu(), localVerified, trustCrossSignedDevices, true); } + /** - * @returns {bool} true if this device is verified via any means + * @returns true if this device is verified via cross signing */ - - - isVerified() { - return Boolean(this.isLocallyVerified() || this._trustCrossSignedDevices && this.isCrossSigningVerified()); - } - /** - * @returns {bool} true if this device is verified via cross signing - */ - - isCrossSigningVerified() { - return this._crossSigningVerified; + return this.crossSigningVerified; } + /** - * @returns {bool} true if this device is verified locally + * @returns true if this device is verified locally */ - - isLocallyVerified() { - return this._localVerified; + return this.localVerified; } + /** - * @returns {bool} true if this device is trusted from a user's key + * @returns true if this device is trusted from a user's key * that is trusted on first use */ - - isTofu() { - return this._tofu; + return this.tofu; } - } - exports.DeviceTrustLevel = DeviceTrustLevel; - -function createCryptoStoreCacheCallbacks(store, olmdevice) { +function createCryptoStoreCacheCallbacks(store, olmDevice) { return { getCrossSigningKeyCache: async function (type, _expectedPublicKey) { const key = await new Promise(resolve => { - return store.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + store.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { store.getSecretStorePrivateKey(txn, resolve, type); }); }); - if (key && key.ciphertext) { - const pickleKey = Buffer.from(olmdevice._pickleKey); + const pickleKey = Buffer.from(olmDevice.pickleKey); const decrypted = await (0, _aes.decryptAES)(key, pickleKey, type); - return (0, _olmlib.decodeBase64)(decrypted); + return (0, _base.decodeBase64)(decrypted); } else { return key; } @@ -33000,11 +141748,10 @@ function createCryptoStoreCacheCallbacks(store, olmdevice) { if (!(key instanceof Uint8Array)) { throw new Error(`storeCrossSigningKeyCache expects Uint8Array, got ${key}`); } - - const pickleKey = Buffer.from(olmdevice._pickleKey); - key = await (0, _aes.encryptAES)((0, _olmlib.encodeBase64)(key), pickleKey, type); - return store.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - store.storeSecretStorePrivateKey(txn, type, key); + const pickleKey = Buffer.from(olmDevice.pickleKey); + const encryptedKey = await (0, _aes.encryptAES)((0, _base.encodeBase64)(key), pickleKey, type); + return store.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + store.storeSecretStorePrivateKey(txn, type, encryptedKey); }); } }; @@ -33012,116 +141759,101 @@ function createCryptoStoreCacheCallbacks(store, olmdevice) { /** * Request cross-signing keys from another device during verification. * - * @param {module:base-apis~MatrixBaseApis} baseApis base Matrix API interface - * @param {string} userId The user ID being verified - * @param {string} deviceId The device ID being verified + * @param baseApis - base Matrix API interface + * @param userId - The user ID being verified + * @param deviceId - The device ID being verified */ - - async function requestKeysDuringVerification(baseApis, userId, deviceId) { // If this is a self-verification, ask the other party for keys if (baseApis.getUserId() !== userId) { return; } - - console.log("Cross-signing: Self-verification done; requesting keys"); // This happens asynchronously, and we're not concerned about waiting for - // it. We return here in order to test. - + _logger.logger.log("Cross-signing: Self-verification done; requesting keys"); + // This happens asynchronously, and we're not concerned about waiting for + // it. We return here in order to test. return new Promise((resolve, reject) => { const client = baseApis; - const original = client._crypto._crossSigningInfo; // We already have all of the infrastructure we need to validate and + const original = client.crypto.crossSigningInfo; + + // We already have all of the infrastructure we need to validate and // cache cross-signing keys, so instead of replicating that, here we set // up callbacks that request them from the other device and call // CrossSigningInfo.getCrossSigningKey() to validate/cache - const crossSigning = new CrossSigningInfo(original.userId, { getCrossSigningKey: async type => { - console.debug("Cross-signing: requesting secret", type, deviceId); + _logger.logger.debug("Cross-signing: requesting secret", type, deviceId); const { promise } = client.requestSecret(`m.cross_signing.${type}`, [deviceId]); const result = await promise; - const decoded = (0, _olmlib.decodeBase64)(result); + const decoded = (0, _base.decodeBase64)(result); return Uint8Array.from(decoded); } - }, original._cacheCallbacks); - crossSigning.keys = original.keys; // XXX: get all keys out if we get one key out + }, original.getCacheCallbacks()); + crossSigning.keys = original.keys; + + // XXX: get all keys out if we get one key out // https://github.com/vector-im/element-web/issues/12604 // then change here to reject on the timeout // Requests can be ignored, so don't wait around forever - - const timeout = new Promise((resolve, reject) => { + const timeout = new Promise(resolve => { setTimeout(resolve, KEY_REQUEST_TIMEOUT_MS, new Error("Timeout")); - }); // also request and cache the key backup key - - const backupKeyPromise = new Promise(async resolve => { - const cachedKey = await client._crypto.getSessionBackupPrivateKey(); + }); + // also request and cache the key backup key + const backupKeyPromise = (async () => { + const cachedKey = await client.crypto.getSessionBackupPrivateKey(); if (!cachedKey) { _logger.logger.info("No cached backup key found. Requesting..."); - - const secretReq = client.requestSecret('m.megolm_backup.v1', [deviceId]); + const secretReq = client.requestSecret("m.megolm_backup.v1", [deviceId]); const base64Key = await secretReq.promise; - _logger.logger.info("Got key backup key, decoding..."); - - const decodedKey = (0, _olmlib.decodeBase64)(base64Key); - + const decodedKey = (0, _base.decodeBase64)(base64Key); _logger.logger.info("Decoded backup key, storing..."); - - client._crypto.storeSessionBackupPrivateKey(Uint8Array.from(decodedKey)); - + await client.crypto.storeSessionBackupPrivateKey(Uint8Array.from(decodedKey)); _logger.logger.info("Backup key stored. Starting backup restore..."); - - const backupInfo = await client.getKeyBackupVersion(); // no need to await for this - just let it go in the bg - + const backupInfo = await client.getKeyBackupVersion(); + // no need to await for this - just let it go in the bg client.restoreKeyBackupWithCache(undefined, undefined, backupInfo).then(() => { _logger.logger.info("Backup restored."); }); } + })(); - resolve(); - }); // We call getCrossSigningKey() for its side-effects - - return Promise.race([Promise.all([crossSigning.getCrossSigningKey("master"), crossSigning.getCrossSigningKey("self_signing"), crossSigning.getCrossSigningKey("user_signing"), backupKeyPromise]), timeout]).then(resolve, reject); + // We call getCrossSigningKey() for its side-effects + Promise.race([Promise.all([crossSigning.getCrossSigningKey("master"), crossSigning.getCrossSigningKey("self_signing"), crossSigning.getCrossSigningKey("user_signing"), backupKeyPromise]), timeout]).then(resolve, reject); }).catch(e => { - console.warn("Cross-signing: failure while requesting keys:", e); + _logger.logger.warn("Cross-signing: failure while requesting keys:", e); }); } +//# sourceMappingURL=CrossSigning.js.map /***/ }), /***/ 7989: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.DeviceList = void 0; - -var _events = __webpack_require__(8614); - -var _logger = __webpack_require__(3854); - -var _deviceinfo = __webpack_require__(5232); - -var _CrossSigning = __webpack_require__(2933); - -var olmlib = _interopRequireWildcard(__webpack_require__(7131)); - -var _indexeddbCryptoStore = __webpack_require__(5651); - -var _utils = __webpack_require__(2557); - +exports.TrackingStatus = exports.DeviceList = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _deviceinfo = __nccwpck_require__(5232); +var _CrossSigning = __nccwpck_require__(2933); +var olmlib = _interopRequireWildcard(__nccwpck_require__(7131)); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +var _utils = __nccwpck_require__(2557); +var _typedEventEmitter = __nccwpck_require__(7150); +var _index = __nccwpck_require__(9839); +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; } /* -Copyright 2017 Vector Creations Ltd -Copyright 2018, 2019 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -33135,14 +141867,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - /** - * @module crypto/DeviceList - * * Manages the list of other users' devices */ - -/* State transition diagram for DeviceList._deviceTrackingStatus +/* State transition diagram for DeviceList.deviceTrackingStatus * * | * stopTrackingDeviceList V @@ -33161,97 +141889,86 @@ limitations under the License. * ^ V | * +----------------------- UP_TO_DATE ------------------------+ */ -// constants for DeviceList._deviceTrackingStatus -const TRACKING_STATUS_NOT_TRACKED = 0; -const TRACKING_STATUS_PENDING_DOWNLOAD = 1; -const TRACKING_STATUS_DOWNLOAD_IN_PROGRESS = 2; -const TRACKING_STATUS_UP_TO_DATE = 3; -/** - * @alias module:crypto/DeviceList - */ - -class DeviceList extends _events.EventEmitter { - constructor(baseApis, cryptoStore, olmDevice) { +// constants for DeviceList.deviceTrackingStatus +let TrackingStatus = exports.TrackingStatus = /*#__PURE__*/function (TrackingStatus) { + TrackingStatus[TrackingStatus["NotTracked"] = 0] = "NotTracked"; + TrackingStatus[TrackingStatus["PendingDownload"] = 1] = "PendingDownload"; + TrackingStatus[TrackingStatus["DownloadInProgress"] = 2] = "DownloadInProgress"; + TrackingStatus[TrackingStatus["UpToDate"] = 3] = "UpToDate"; + return TrackingStatus; +}({}); // user-Id → device-Id → DeviceInfo +class DeviceList extends _typedEventEmitter.TypedEventEmitter { + constructor(baseApis, cryptoStore, olmDevice, + // Maximum number of user IDs per request to prevent server overload (#1619) + keyDownloadChunkSize = 250) { super(); - this._cryptoStore = cryptoStore; // userId -> { - // deviceId -> { - // [device info] - // } - // } - - this._devices = {}; // userId -> { - // [key info] - // } - - this._crossSigningInfo = {}; // map of identity keys to the user who owns it - - this._userByIdentityKey = {}; // which users we are tracking device status for. - // userId -> TRACKING_STATUS_* - - this._deviceTrackingStatus = {}; // loaded from storage in load() - // The 'next_batch' sync token at the point the data was writen, + (0, _defineProperty2.default)(this, "devices", {}); + (0, _defineProperty2.default)(this, "crossSigningInfo", {}); + // map of identity keys to the user who owns it + (0, _defineProperty2.default)(this, "userByIdentityKey", {}); + // which users we are tracking device status for. + (0, _defineProperty2.default)(this, "deviceTrackingStatus", {}); + // loaded from storage in load() + // The 'next_batch' sync token at the point the data was written, // ie. a token representing the point immediately after the // moment represented by the snapshot in the db. - - this._syncToken = null; - this._serialiser = new DeviceListUpdateSerialiser(baseApis, olmDevice, this); // userId -> promise - - this._keyDownloadsInProgressByUser = {}; // Set whenever changes are made other than setting the sync token - - this._dirty = false; // Promise resolved when device data is saved - - this._savePromise = null; // Function that resolves the save promise - - this._resolveSavePromise = null; // The time the save is scheduled for - - this._savePromiseTime = null; // The timer used to delay the save - - this._saveTimer = null; // True if we have fetched data from the server or loaded a non-empty + (0, _defineProperty2.default)(this, "syncToken", null); + (0, _defineProperty2.default)(this, "keyDownloadsInProgressByUser", new Map()); + // Set whenever changes are made other than setting the sync token + (0, _defineProperty2.default)(this, "dirty", false); + // Promise resolved when device data is saved + (0, _defineProperty2.default)(this, "savePromise", null); + // Function that resolves the save promise + (0, _defineProperty2.default)(this, "resolveSavePromise", null); + // The time the save is scheduled for + (0, _defineProperty2.default)(this, "savePromiseTime", null); + // The timer used to delay the save + (0, _defineProperty2.default)(this, "saveTimer", null); + // True if we have fetched data from the server or loaded a non-empty // set of device data from the store - - this._hasFetched = null; + (0, _defineProperty2.default)(this, "hasFetched", null); + this.cryptoStore = cryptoStore; + this.keyDownloadChunkSize = keyDownloadChunkSize; + this.serialiser = new DeviceListUpdateSerialiser(baseApis, olmDevice, this); } + /** * Load the device tracking state from storage */ - - async load() { - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_DEVICE_DATA], txn => { - this._cryptoStore.getEndToEndDeviceData(txn, deviceData => { - this._hasFetched = Boolean(deviceData && deviceData.devices); - this._devices = deviceData ? deviceData.devices : {}, this._crossSigningInfo = deviceData ? deviceData.crossSigningInfo || {} : {}; - this._deviceTrackingStatus = deviceData ? deviceData.trackingStatus : {}; - this._syncToken = deviceData ? deviceData.syncToken : null; - this._userByIdentityKey = {}; - - for (const user of Object.keys(this._devices)) { - const userDevices = this._devices[user]; - + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_DEVICE_DATA], txn => { + this.cryptoStore.getEndToEndDeviceData(txn, deviceData => { + var _deviceData$syncToken; + this.hasFetched = Boolean(deviceData === null || deviceData === void 0 ? void 0 : deviceData.devices); + this.devices = deviceData ? deviceData.devices : {}; + this.crossSigningInfo = deviceData ? deviceData.crossSigningInfo || {} : {}; + this.deviceTrackingStatus = deviceData ? deviceData.trackingStatus : {}; + this.syncToken = (_deviceData$syncToken = deviceData === null || deviceData === void 0 ? void 0 : deviceData.syncToken) !== null && _deviceData$syncToken !== void 0 ? _deviceData$syncToken : null; + this.userByIdentityKey = {}; + for (const user of Object.keys(this.devices)) { + const userDevices = this.devices[user]; for (const device of Object.keys(userDevices)) { - const idKey = userDevices[device].keys['curve25519:' + device]; - + const idKey = userDevices[device].keys["curve25519:" + device]; if (idKey !== undefined) { - this._userByIdentityKey[idKey] = user; + this.userByIdentityKey[idKey] = user; } } } }); }); - - for (const u of Object.keys(this._deviceTrackingStatus)) { + for (const u of Object.keys(this.deviceTrackingStatus)) { // if a download was in progress when we got shut down, it isn't any more. - if (this._deviceTrackingStatus[u] == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) { - this._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD; + if (this.deviceTrackingStatus[u] == TrackingStatus.DownloadInProgress) { + this.deviceTrackingStatus[u] = TrackingStatus.PendingDownload; } } } - stop() { - if (this._saveTimer !== null) { - clearTimeout(this._saveTimer); + if (this.saveTimer !== null) { + clearTimeout(this.saveTimer); } } + /** * Save the device tracking state to storage, if any changes are * pending other than updating the sync token @@ -33259,88 +141976,80 @@ class DeviceList extends _events.EventEmitter { * The actual save will be delayed by a short amount of time to * aggregate multiple writes to the database. * - * @param {integer} delay Time in ms before which the save actually happens. + * @param delay - Time in ms before which the save actually happens. * By default, the save is delayed for a short period in order to batch * multiple writes, but this behaviour can be disabled by passing 0. * - * @return {Promise} true if the data was saved, false if + * @returns true if the data was saved, false if * it was not (eg. because no changes were pending). The promise * will only resolve once the data is saved, so may take some time * to resolve. */ - - - async saveIfDirty(delay) { - if (!this._dirty) return Promise.resolve(false); // Delay saves for a bit so we can aggregate multiple saves that happen + async saveIfDirty(delay = 500) { + if (!this.dirty) return Promise.resolve(false); + // Delay saves for a bit so we can aggregate multiple saves that happen // in quick succession (eg. when a whole room's devices are marked as known) - if (delay === undefined) delay = 500; - const targetTime = Date.now + delay; - - if (this._savePromiseTime && targetTime < this._savePromiseTime) { + const targetTime = Date.now() + delay; + if (this.savePromiseTime && targetTime < this.savePromiseTime) { // There's a save scheduled but for after we would like: cancel // it & schedule one for the time we want - clearTimeout(this._saveTimer); - this._saveTimer = null; - this._savePromiseTime = null; // (but keep the save promise since whatever called save before + clearTimeout(this.saveTimer); + this.saveTimer = null; + this.savePromiseTime = null; + // (but keep the save promise since whatever called save before // will still want to know when the save is done) } - - let savePromise = this._savePromise; - + let savePromise = this.savePromise; if (savePromise === null) { - savePromise = new Promise((resolve, reject) => { - this._resolveSavePromise = resolve; + savePromise = new Promise(resolve => { + this.resolveSavePromise = resolve; }); - this._savePromise = savePromise; + this.savePromise = savePromise; } + if (this.saveTimer === null) { + const resolveSavePromise = this.resolveSavePromise; + this.savePromiseTime = targetTime; + this.saveTimer = setTimeout(() => { + _logger.logger.log("Saving device tracking data", this.syncToken); - if (this._saveTimer === null) { - const resolveSavePromise = this._resolveSavePromise; - this._savePromiseTime = targetTime; - this._saveTimer = setTimeout(() => { - _logger.logger.log('Saving device tracking data', this._syncToken); // null out savePromise now (after the delay but before the write), + // null out savePromise now (after the delay but before the write), // otherwise we could return the existing promise when the save has // actually already happened. - - - this._savePromiseTime = null; - this._saveTimer = null; - this._savePromise = null; - this._resolveSavePromise = null; - - this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_DEVICE_DATA], txn => { - this._cryptoStore.storeEndToEndDeviceData({ - devices: this._devices, - crossSigningInfo: this._crossSigningInfo, - trackingStatus: this._deviceTrackingStatus, - syncToken: this._syncToken + this.savePromiseTime = null; + this.saveTimer = null; + this.savePromise = null; + this.resolveSavePromise = null; + this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_DEVICE_DATA], txn => { + var _this$syncToken; + this.cryptoStore.storeEndToEndDeviceData({ + devices: this.devices, + crossSigningInfo: this.crossSigningInfo, + trackingStatus: this.deviceTrackingStatus, + syncToken: (_this$syncToken = this.syncToken) !== null && _this$syncToken !== void 0 ? _this$syncToken : undefined }, txn); }).then(() => { - // The device list is considered dirty until the write - // completes. - this._dirty = false; - resolveSavePromise(); + // The device list is considered dirty until the write completes. + this.dirty = false; + resolveSavePromise === null || resolveSavePromise === void 0 || resolveSavePromise(true); }, err => { - _logger.logger.error('Failed to save device tracking data', this._syncToken); - + _logger.logger.error("Failed to save device tracking data", this.syncToken); _logger.logger.error(err); }); }, delay); } - return savePromise; } + /** * Gets the sync token last set with setSyncToken * - * @return {string} The sync token + * @returns The sync token */ - - getSyncToken() { - return this._syncToken; + return this.syncToken; } + /** * Sets the sync token that the app will pass as the 'since' to the /sync * endpoint next time it syncs. @@ -33349,253 +142058,199 @@ class DeviceList extends _events.EventEmitter { * those changed will not be synced from the server if a new client starts * up with that data. * - * @param {string} st The sync token + * @param st - The sync token */ - - setSyncToken(st) { - this._syncToken = st; + this.syncToken = st; } + /** * Ensures up to date keys for a list of users are stored in the session store, * downloading and storing them if they're not (or if forceDownload is * true). - * @param {Array} userIds The users to fetch. - * @param {bool} forceDownload Always download the keys even if cached. + * @param userIds - The users to fetch. + * @param forceDownload - Always download the keys even if cached. * - * @return {Promise} A promise which resolves to a map userId->deviceId->{@link - * module:crypto/deviceinfo|DeviceInfo}. + * @returns A promise which resolves to a map userId-\>deviceId-\>{@link DeviceInfo}. */ - - downloadKeys(userIds, forceDownload) { const usersToDownload = []; const promises = []; userIds.forEach(u => { - const trackingStatus = this._deviceTrackingStatus[u]; - - if (this._keyDownloadsInProgressByUser[u]) { + const trackingStatus = this.deviceTrackingStatus[u]; + if (this.keyDownloadsInProgressByUser.has(u)) { // already a key download in progress/queued for this user; its results // will be good enough for us. _logger.logger.log(`downloadKeys: already have a download in progress for ` + `${u}: awaiting its result`); - - promises.push(this._keyDownloadsInProgressByUser[u]); - } else if (forceDownload || trackingStatus != TRACKING_STATUS_UP_TO_DATE) { + promises.push(this.keyDownloadsInProgressByUser.get(u)); + } else if (forceDownload || trackingStatus != TrackingStatus.UpToDate) { usersToDownload.push(u); } }); - if (usersToDownload.length != 0) { _logger.logger.log("downloadKeys: downloading for", usersToDownload); - - const downloadPromise = this._doKeyDownload(usersToDownload); - + const downloadPromise = this.doKeyDownload(usersToDownload); promises.push(downloadPromise); } - if (promises.length === 0) { _logger.logger.log("downloadKeys: already have all necessary keys"); } - return Promise.all(promises).then(() => { - return this._getDevicesFromStore(userIds); + return this.getDevicesFromStore(userIds); }); } + /** * Get the stored device keys for a list of user ids * - * @param {string[]} userIds the list of users to list keys for. + * @param userIds - the list of users to list keys for. * - * @return {Object} userId->deviceId->{@link module:crypto/deviceinfo|DeviceInfo}. + * @returns userId-\>deviceId-\>{@link DeviceInfo}. */ - - - _getDevicesFromStore(userIds) { - const stored = {}; - const self = this; - userIds.map(function (u) { - stored[u] = {}; - const devices = self.getStoredDevicesForUser(u) || []; - devices.map(function (dev) { - stored[u][dev.deviceId] = dev; + getDevicesFromStore(userIds) { + const stored = new Map(); + userIds.forEach(userId => { + var _this$getStoredDevice; + const deviceMap = new Map(); + (_this$getStoredDevice = this.getStoredDevicesForUser(userId)) === null || _this$getStoredDevice === void 0 || _this$getStoredDevice.forEach(function (device) { + deviceMap.set(device.deviceId, device); }); + stored.set(userId, deviceMap); }); return stored; } + /** * Returns a list of all user IDs the DeviceList knows about * - * @return {array} All known user IDs + * @returns All known user IDs */ - - getKnownUserIds() { - return Object.keys(this._devices); + return Object.keys(this.devices); } + /** * Get the stored device keys for a user id * - * @param {string} userId the user to list keys for. + * @param userId - the user to list keys for. * - * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't + * @returns list of devices, or null if we haven't * managed to get a list of devices for this user yet. */ - - getStoredDevicesForUser(userId) { - const devs = this._devices[userId]; - + const devs = this.devices[userId]; if (!devs) { return null; } - const res = []; - for (const deviceId in devs) { if (devs.hasOwnProperty(deviceId)) { res.push(_deviceinfo.DeviceInfo.fromStorage(devs[deviceId], deviceId)); } } - return res; } + /** * Get the stored device data for a user, in raw object form * - * @param {string} userId the user to get data for + * @param userId - the user to get data for * - * @return {Object} deviceId->{object} devices, or undefined if + * @returns `deviceId->{object}` devices, or undefined if * there is no data for this user. */ - - getRawStoredDevicesForUser(userId) { - return this._devices[userId]; + return this.devices[userId]; } - getStoredCrossSigningForUser(userId) { - if (!this._crossSigningInfo[userId]) return null; - return _CrossSigning.CrossSigningInfo.fromStorage(this._crossSigningInfo[userId], userId); + if (!this.crossSigningInfo[userId]) return null; + return _CrossSigning.CrossSigningInfo.fromStorage(this.crossSigningInfo[userId], userId); + } + storeCrossSigningForUser(userId, info) { + this.crossSigningInfo[userId] = info; + this.dirty = true; } - storeCrossSigningForUser(userId, info) { - this._crossSigningInfo[userId] = info; - this._dirty = true; - } /** * Get the stored keys for a single device * - * @param {string} userId - * @param {string} deviceId * - * @return {module:crypto/deviceinfo?} device, or undefined + * @returns device, or undefined * if we don't know about this device */ - - getStoredDevice(userId, deviceId) { - const devs = this._devices[userId]; - - if (!devs || !devs[deviceId]) { + const devs = this.devices[userId]; + if (!(devs !== null && devs !== void 0 && devs[deviceId])) { return undefined; } - return _deviceinfo.DeviceInfo.fromStorage(devs[deviceId], deviceId); } + /** * Get a user ID by one of their device's curve25519 identity key * - * @param {string} algorithm encryption algorithm - * @param {string} senderKey curve25519 key to match + * @param algorithm - encryption algorithm + * @param senderKey - curve25519 key to match * - * @return {string} user ID + * @returns user ID */ - - getUserByIdentityKey(algorithm, senderKey) { if (algorithm !== olmlib.OLM_ALGORITHM && algorithm !== olmlib.MEGOLM_ALGORITHM) { // we only deal in olm keys return null; } - - return this._userByIdentityKey[senderKey]; + return this.userByIdentityKey[senderKey]; } + /** * Find a device by curve25519 identity key * - * @param {string} algorithm encryption algorithm - * @param {string} senderKey curve25519 key to match - * - * @return {module:crypto/deviceinfo?} + * @param algorithm - encryption algorithm + * @param senderKey - curve25519 key to match */ - - getDeviceByIdentityKey(algorithm, senderKey) { const userId = this.getUserByIdentityKey(algorithm, senderKey); - if (!userId) { return null; } - - const devices = this._devices[userId]; - + const devices = this.devices[userId]; if (!devices) { return null; } - for (const deviceId in devices) { if (!devices.hasOwnProperty(deviceId)) { continue; } - const device = devices[deviceId]; - for (const keyId in device.keys) { if (!device.keys.hasOwnProperty(keyId)) { continue; } - if (keyId.indexOf("curve25519:") !== 0) { continue; } - const deviceKey = device.keys[keyId]; - if (deviceKey == senderKey) { return _deviceinfo.DeviceInfo.fromStorage(device, deviceId); } } - } // doesn't match a known device - + } + // doesn't match a known device return null; } + /** * Replaces the list of devices for a user with the given device list * - * @param {string} u The user ID - * @param {Object} devs New device info for user + * @param userId - The user ID + * @param devices - New device info for user */ - - - storeDevicesForUser(u, devs) { - // remove previous devices from _userByIdentityKey - if (this._devices[u] !== undefined) { - for (const [deviceId, dev] of Object.entries(this._devices[u])) { - const identityKey = dev.keys['curve25519:' + deviceId]; - delete this._userByIdentityKey[identityKey]; - } - } - - this._devices[u] = devs; // add new ones - - for (const [deviceId, dev] of Object.entries(devs)) { - const identityKey = dev.keys['curve25519:' + deviceId]; - this._userByIdentityKey[identityKey] = u; - } - - this._dirty = true; + storeDevicesForUser(userId, devices) { + this.setRawStoredDevicesForUser(userId, devices); + this.dirty = true; } + /** * flag the given user for device-list tracking, if they are not already. * @@ -33603,10 +142258,7 @@ class DeviceList extends _events.EventEmitter { * will download the device list for the user, and that subsequent calls to * invalidateUserDeviceList will trigger more updates. * - * @param {String} userId */ - - startTrackingDeviceList(userId) { // sanity-check the userId. This is mostly paranoia, but if synapse // can't parse the userId we give it as an mxid, it 500s the whole @@ -33615,19 +142267,18 @@ class DeviceList extends _events.EventEmitter { // refresh request). // By checking it is at least a string, we can eliminate a class of // silly errors. - if (typeof userId !== 'string') { - throw new Error('userId must be a string; was ' + userId); + if (typeof userId !== "string") { + throw new Error("userId must be a string; was " + userId); } - - if (!this._deviceTrackingStatus[userId]) { - _logger.logger.log('Now tracking device list for ' + userId); - - this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD; // we don't yet persist the tracking status, since there may be a lot + if (!this.deviceTrackingStatus[userId]) { + _logger.logger.log("Now tracking device list for " + userId); + this.deviceTrackingStatus[userId] = TrackingStatus.PendingDownload; + // we don't yet persist the tracking status, since there may be a lot // of calls; we save all data together once the sync is done - - this._dirty = true; + this.dirty = true; } } + /** * Mark the given user as no longer being tracked for device-list updates. * @@ -33635,35 +142286,31 @@ class DeviceList extends _events.EventEmitter { * complete; it will just mean that we don't think that we have an up-to-date * list for future calls to downloadKeys. * - * @param {String} userId */ - - stopTrackingDeviceList(userId) { - if (this._deviceTrackingStatus[userId]) { - _logger.logger.log('No longer tracking device list for ' + userId); + if (this.deviceTrackingStatus[userId]) { + _logger.logger.log("No longer tracking device list for " + userId); + this.deviceTrackingStatus[userId] = TrackingStatus.NotTracked; - this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED; // we don't yet persist the tracking status, since there may be a lot + // we don't yet persist the tracking status, since there may be a lot // of calls; we save all data together once the sync is done - - this._dirty = true; + this.dirty = true; } } + /** * Set all users we're currently tracking to untracked * * This will flag each user whose devices we are tracking as in need of an * update. */ - - stopTrackingAllDeviceLists() { - for (const userId of Object.keys(this._deviceTrackingStatus)) { - this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED; + for (const userId of Object.keys(this.deviceTrackingStatus)) { + this.deviceTrackingStatus[userId] = TrackingStatus.NotTracked; } - - this._dirty = true; + this.dirty = true; } + /** * Mark the cached device list for the given user outdated. * @@ -33673,146 +142320,127 @@ class DeviceList extends _events.EventEmitter { * This doesn't actually set off an update, so that several users can be * batched together. Call refreshOutdatedDeviceLists() for that. * - * @param {String} userId */ - - invalidateUserDeviceList(userId) { - if (this._deviceTrackingStatus[userId]) { + if (this.deviceTrackingStatus[userId]) { _logger.logger.log("Marking device list outdated for", userId); + this.deviceTrackingStatus[userId] = TrackingStatus.PendingDownload; - this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD; // we don't yet persist the tracking status, since there may be a lot + // we don't yet persist the tracking status, since there may be a lot // of calls; we save all data together once the sync is done - - this._dirty = true; + this.dirty = true; } } + /** * If we have users who have outdated device lists, start key downloads for them * - * @returns {Promise} which completes when the download completes; normally there + * @returns which completes when the download completes; normally there * is no need to wait for this (it's mostly for the unit tests). */ - - refreshOutdatedDeviceLists() { this.saveIfDirty(); const usersToDownload = []; - - for (const userId of Object.keys(this._deviceTrackingStatus)) { - const stat = this._deviceTrackingStatus[userId]; - - if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) { + for (const userId of Object.keys(this.deviceTrackingStatus)) { + const stat = this.deviceTrackingStatus[userId]; + if (stat == TrackingStatus.PendingDownload) { usersToDownload.push(userId); } } - - return this._doKeyDownload(usersToDownload); + return this.doKeyDownload(usersToDownload); } + /** * Set the stored device data for a user, in raw object form * Used only by internal class DeviceListUpdateSerialiser * - * @param {string} userId the user to get data for + * @param userId - the user to get data for * - * @param {Object} devices deviceId->{object} the new devices + * @param devices - `deviceId->{object}` the new devices */ - - - _setRawStoredDevicesForUser(userId, devices) { - // remove old devices from _userByIdentityKey - if (this._devices[userId] !== undefined) { - for (const [deviceId, dev] of Object.entries(this._devices[userId])) { - const identityKey = dev.keys['curve25519:' + deviceId]; - delete this._userByIdentityKey[identityKey]; + setRawStoredDevicesForUser(userId, devices) { + // remove old devices from userByIdentityKey + if (this.devices[userId] !== undefined) { + for (const [deviceId, dev] of Object.entries(this.devices[userId])) { + const identityKey = dev.keys["curve25519:" + deviceId]; + delete this.userByIdentityKey[identityKey]; } } + this.devices[userId] = devices; - this._devices[userId] = devices; // add new devices into _userByIdentityKey - + // add new devices into userByIdentityKey for (const [deviceId, dev] of Object.entries(devices)) { - const identityKey = dev.keys['curve25519:' + deviceId]; - this._userByIdentityKey[identityKey] = userId; + const identityKey = dev.keys["curve25519:" + deviceId]; + this.userByIdentityKey[identityKey] = userId; } } - setRawStoredCrossSigningForUser(userId, info) { - this._crossSigningInfo[userId] = info; + this.crossSigningInfo[userId] = info; } + /** * Fire off download update requests for the given users, and update the * device list tracking status for them, and the - * _keyDownloadsInProgressByUser map for them. + * keyDownloadsInProgressByUser map for them. * - * @param {String[]} users list of userIds + * @param users - list of userIds * - * @return {Promise} resolves when all the users listed have + * @returns resolves when all the users listed have * been updated. rejects if there was a problem updating any of the * users. */ - - - _doKeyDownload(users) { + doKeyDownload(users) { if (users.length === 0) { // nothing to do return Promise.resolve(); } - - const prom = this._serialiser.updateDevicesForUsers(users, this._syncToken).then(() => { + const prom = this.serialiser.updateDevicesForUsers(users, this.syncToken).then(() => { finished(true); }, e => { - _logger.logger.error('Error downloading keys for ' + users + ":", e); - + _logger.logger.error("Error downloading keys for " + users + ":", e); finished(false); throw e; }); - users.forEach(u => { - this._keyDownloadsInProgressByUser[u] = prom; - const stat = this._deviceTrackingStatus[u]; - - if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) { - this._deviceTrackingStatus[u] = TRACKING_STATUS_DOWNLOAD_IN_PROGRESS; + this.keyDownloadsInProgressByUser.set(u, prom); + const stat = this.deviceTrackingStatus[u]; + if (stat == TrackingStatus.PendingDownload) { + this.deviceTrackingStatus[u] = TrackingStatus.DownloadInProgress; } }); - const finished = success => { - this.emit("crypto.willUpdateDevices", users, !this._hasFetched); + this.emit(_index.CryptoEvent.WillUpdateDevices, users, !this.hasFetched); users.forEach(u => { - this._dirty = true; // we may have queued up another download request for this user + this.dirty = true; + + // we may have queued up another download request for this user // since we started this request. If that happens, we should // ignore the completion of the first one. - - if (this._keyDownloadsInProgressByUser[u] !== prom) { - _logger.logger.log('Another update in the queue for', u, '- not marking up-to-date'); - + if (this.keyDownloadsInProgressByUser.get(u) !== prom) { + _logger.logger.log("Another update in the queue for", u, "- not marking up-to-date"); return; } - - delete this._keyDownloadsInProgressByUser[u]; - const stat = this._deviceTrackingStatus[u]; - - if (stat == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) { + this.keyDownloadsInProgressByUser.delete(u); + const stat = this.deviceTrackingStatus[u]; + if (stat == TrackingStatus.DownloadInProgress) { if (success) { // we didn't get any new invalidations since this download started: // this user's device list is now up to date. - this._deviceTrackingStatus[u] = TRACKING_STATUS_UP_TO_DATE; - + this.deviceTrackingStatus[u] = TrackingStatus.UpToDate; _logger.logger.log("Device list for", u, "now up to date"); } else { - this._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD; + this.deviceTrackingStatus[u] = TrackingStatus.PendingDownload; } } }); this.saveIfDirty(); - this.emit("crypto.devicesUpdated", users, !this._hasFetched); - this._hasFetched = true; + this.emit(_index.CryptoEvent.DevicesUpdated, users, !this.hasFetched); + this.hasFetched = true; }; - return prom; } - } + /** * Serialises updates to device lists * @@ -33822,108 +142450,99 @@ class DeviceList extends _events.EventEmitter { * It currently does this by ensuring only one call to /keys/query happens at a * time (and queuing other requests up). */ - - exports.DeviceList = DeviceList; - class DeviceListUpdateSerialiser { + // deferred which is resolved when the queued users are downloaded. + // non-null indicates that we have users queued for download. + + // The sync token we send with the requests + /* - * @param {object} baseApis Base API object - * @param {object} olmDevice The Olm Device - * @param {object} deviceList The device list object + * @param baseApis - Base API object + * @param olmDevice - The Olm Device + * @param deviceList - The device list object, the device list to be updated */ constructor(baseApis, olmDevice, deviceList) { - this._baseApis = baseApis; - this._olmDevice = olmDevice; - this._deviceList = deviceList; // the device list to be updated - - this._downloadInProgress = false; // users which are queued for download + (0, _defineProperty2.default)(this, "downloadInProgress", false); + // users which are queued for download // userId -> true - - this._keyDownloadsQueuedByUser = {}; // deferred which is resolved when the queued users are downloaded. - // - // non-null indicates that we have users queued for download. - - this._queuedQueryDeferred = null; - this._syncToken = null; // The sync token we send with the requests + (0, _defineProperty2.default)(this, "keyDownloadsQueuedByUser", {}); + this.baseApis = baseApis; + this.olmDevice = olmDevice; + this.deviceList = deviceList; } + /** * Make a key query request for the given users * - * @param {String[]} users list of user ids + * @param users - list of user ids * - * @param {String} syncToken sync token to pass in the query request, to + * @param syncToken - sync token to pass in the query request, to * help the HS give the most recent results * - * @return {Promise} resolves when all the users listed have + * @returns resolves when all the users listed have * been updated. rejects if there was a problem updating any of the * users. */ - - updateDevicesForUsers(users, syncToken) { users.forEach(u => { - this._keyDownloadsQueuedByUser[u] = true; + this.keyDownloadsQueuedByUser[u] = true; }); + if (!this.queuedQueryDeferred) { + this.queuedQueryDeferred = (0, _utils.defer)(); + } - if (!this._queuedQueryDeferred) { - this._queuedQueryDeferred = (0, _utils.defer)(); - } // We always take the new sync token and just use the latest one we've + // We always take the new sync token and just use the latest one we've // been given, since it just needs to be at least as recent as the // sync response the device invalidation message arrived in - - - this._syncToken = syncToken; - - if (this._downloadInProgress) { + this.syncToken = syncToken; + if (this.downloadInProgress) { // just queue up these users - _logger.logger.log('Queued key download for', users); + _logger.logger.log("Queued key download for", users); + return this.queuedQueryDeferred.promise; + } - return this._queuedQueryDeferred.promise; - } // start a new download. - - - return this._doQueuedQueries(); + // start a new download. + return this.doQueuedQueries(); } - - _doQueuedQueries() { - if (this._downloadInProgress) { - throw new Error("DeviceListUpdateSerialiser._doQueuedQueries called with request active"); + doQueuedQueries() { + if (this.downloadInProgress) { + throw new Error("DeviceListUpdateSerialiser.doQueuedQueries called with request active"); } - - const downloadUsers = Object.keys(this._keyDownloadsQueuedByUser); - this._keyDownloadsQueuedByUser = {}; - const deferred = this._queuedQueryDeferred; - this._queuedQueryDeferred = null; - - _logger.logger.log('Starting key download for', downloadUsers); - - this._downloadInProgress = true; + const downloadUsers = Object.keys(this.keyDownloadsQueuedByUser); + this.keyDownloadsQueuedByUser = {}; + const deferred = this.queuedQueryDeferred; + this.queuedQueryDeferred = undefined; + _logger.logger.log("Starting key download for", downloadUsers); + this.downloadInProgress = true; const opts = {}; - - if (this._syncToken) { - opts.token = this._syncToken; + if (this.syncToken) { + opts.token = this.syncToken; } + const factories = []; + for (let i = 0; i < downloadUsers.length; i += this.deviceList.keyDownloadChunkSize) { + const userSlice = downloadUsers.slice(i, i + this.deviceList.keyDownloadChunkSize); + factories.push(() => this.baseApis.downloadKeysForUsers(userSlice, opts)); + } + (0, _utils.chunkPromises)(factories, 3).then(async responses => { + const dk = Object.assign({}, ...responses.map(res => res.device_keys || {})); + const masterKeys = Object.assign({}, ...responses.map(res => res.master_keys || {})); + const ssks = Object.assign({}, ...responses.map(res => res.self_signing_keys || {})); + const usks = Object.assign({}, ...responses.map(res => res.user_signing_keys || {})); - this._baseApis.downloadKeysForUsers(downloadUsers, opts).then(async res => { - const dk = res.device_keys || {}; - const masterKeys = res.master_keys || {}; - const ssks = res.self_signing_keys || {}; - const usks = res.user_signing_keys || {}; // yield to other things that want to execute in between users, to + // yield to other things that want to execute in between users, to // avoid wedging the CPU // (https://github.com/vector-im/element-web/issues/3158) // // of course we ought to do this in a web worker or similar, but // this serves as an easy solution for now. - for (const userId of downloadUsers) { await (0, _utils.sleep)(5); - try { - await this._processQueryResponseForUser(userId, dk[userId], { - master: masterKeys[userId], - self_signing: ssks[userId], - user_signing: usks[userId] + await this.processQueryResponseForUser(userId, dk[userId], { + master: masterKeys === null || masterKeys === void 0 ? void 0 : masterKeys[userId], + self_signing: ssks === null || ssks === void 0 ? void 0 : ssks[userId], + user_signing: usks === null || usks === void 0 ? void 0 : usks[userId] }); } catch (e) { // log the error but continue, so that one bad key @@ -33932,200 +142551,188 @@ class DeviceListUpdateSerialiser { } } }).then(() => { - _logger.logger.log('Completed key download for ' + downloadUsers); + _logger.logger.log("Completed key download for " + downloadUsers); + this.downloadInProgress = false; + deferred === null || deferred === void 0 || deferred.resolve(); - this._downloadInProgress = false; - deferred.resolve(); // if we have queued users, fire off another request. - - if (this._queuedQueryDeferred) { - this._doQueuedQueries(); + // if we have queued users, fire off another request. + if (this.queuedQueryDeferred) { + this.doQueuedQueries(); } }, e => { - _logger.logger.warn('Error downloading keys for ' + downloadUsers + ':', e); - - this._downloadInProgress = false; - deferred.reject(e); + _logger.logger.warn("Error downloading keys for " + downloadUsers + ":", e); + this.downloadInProgress = false; + deferred === null || deferred === void 0 || deferred.reject(e); }); - return deferred.promise; } - - async _processQueryResponseForUser(userId, dkResponse, crossSigningResponse) { - _logger.logger.log('got device keys for ' + userId + ':', dkResponse); - - _logger.logger.log('got cross-signing keys for ' + userId + ':', crossSigningResponse); - + async processQueryResponseForUser(userId, dkResponse, crossSigningResponse) { + _logger.logger.log("got device keys for " + userId + ":", dkResponse); + _logger.logger.log("got cross-signing keys for " + userId + ":", crossSigningResponse); { // map from deviceid -> deviceinfo for this user const userStore = {}; - - const devs = this._deviceList.getRawStoredDevicesForUser(userId); - + const devs = this.deviceList.getRawStoredDevicesForUser(userId); if (devs) { Object.keys(devs).forEach(deviceId => { const d = _deviceinfo.DeviceInfo.fromStorage(devs[deviceId], deviceId); - userStore[deviceId] = d; }); } + await updateStoredDeviceKeysForUser(this.olmDevice, userId, userStore, dkResponse || {}, this.baseApis.getUserId(), this.baseApis.deviceId); - await _updateStoredDeviceKeysForUser(this._olmDevice, userId, userStore, dkResponse || {}); // put the updates into the object that will be returned as our results - + // put the updates into the object that will be returned as our results const storage = {}; Object.keys(userStore).forEach(deviceId => { storage[deviceId] = userStore[deviceId].toStorage(); }); + this.deviceList.setRawStoredDevicesForUser(userId, storage); + } - this._deviceList._setRawStoredDevicesForUser(userId, storage); - } // now do the same for the cross-signing keys - + // now do the same for the cross-signing keys { // FIXME: should we be ignoring empty cross-signing responses, or // should we be dropping the keys? if (crossSigningResponse && (crossSigningResponse.master || crossSigningResponse.self_signing || crossSigningResponse.user_signing)) { - const crossSigning = this._deviceList.getStoredCrossSigningForUser(userId) || new _CrossSigning.CrossSigningInfo(userId); + const crossSigning = this.deviceList.getStoredCrossSigningForUser(userId) || new _CrossSigning.CrossSigningInfo(userId); crossSigning.setKeys(crossSigningResponse); + this.deviceList.setRawStoredCrossSigningForUser(userId, crossSigning.toStorage()); - this._deviceList.setRawStoredCrossSigningForUser(userId, crossSigning.toStorage()); // NB. Unlike most events in the js-sdk, this one is internal to the + // NB. Unlike most events in the js-sdk, this one is internal to the // js-sdk and is not re-emitted - - - this._deviceList.emit('userCrossSigningUpdated', userId); + this.deviceList.emit(_index.CryptoEvent.UserCrossSigningUpdated, userId); } } } - } +async function updateStoredDeviceKeysForUser(olmDevice, userId, userStore, userResult, localUserId, localDeviceId) { + let updated = false; -async function _updateStoredDeviceKeysForUser(_olmDevice, userId, userStore, userResult) { - let updated = false; // remove any devices in the store which aren't in the response - + // remove any devices in the store which aren't in the response for (const deviceId in userStore) { if (!userStore.hasOwnProperty(deviceId)) { continue; } - if (!(deviceId in userResult)) { + if (userId === localUserId && deviceId === localDeviceId) { + _logger.logger.warn(`Local device ${deviceId} missing from sync, skipping removal`); + continue; + } _logger.logger.log("Device " + userId + ":" + deviceId + " has been removed"); - delete userStore[deviceId]; updated = true; } } - for (const deviceId in userResult) { if (!userResult.hasOwnProperty(deviceId)) { continue; } + const deviceResult = userResult[deviceId]; - const deviceResult = userResult[deviceId]; // check that the user_id and device_id in the response object are + // check that the user_id and device_id in the response object are // correct - if (deviceResult.user_id !== userId) { _logger.logger.warn("Mismatched user_id " + deviceResult.user_id + " in keys from " + userId + ":" + deviceId); - continue; } - if (deviceResult.device_id !== deviceId) { _logger.logger.warn("Mismatched device_id " + deviceResult.device_id + " in keys from " + userId + ":" + deviceId); - continue; } - - if (await _storeDeviceKeys(_olmDevice, userStore, deviceResult)) { + if (await storeDeviceKeys(olmDevice, userStore, deviceResult)) { updated = true; } } - return updated; } + /* * Process a device in a /query response, and add it to the userStore * * returns (a promise for) true if a change was made, else false */ - - -async function _storeDeviceKeys(_olmDevice, userStore, deviceResult) { +async function storeDeviceKeys(olmDevice, userStore, deviceResult) { if (!deviceResult.keys) { // no keys? return false; } - const deviceId = deviceResult.device_id; const userId = deviceResult.user_id; const signKeyId = "ed25519:" + deviceId; const signKey = deviceResult.keys[signKeyId]; - if (!signKey) { _logger.logger.warn("Device " + userId + ":" + deviceId + " has no ed25519 key"); - + return false; + } + const unsigned = deviceResult.unsigned || {}; + const signatures = deviceResult.signatures || {}; + try { + await olmlib.verifySignature(olmDevice, deviceResult, userId, deviceId, signKey); + } catch (e) { + _logger.logger.warn("Unable to verify signature on device " + userId + ":" + deviceId + ":" + e); return false; } - const unsigned = deviceResult.unsigned || {}; - const signatures = deviceResult.signatures || {}; - - try { - await olmlib.verifySignature(_olmDevice, deviceResult, userId, deviceId, signKey); - } catch (e) { - _logger.logger.warn("Unable to verify signature on device " + userId + ":" + deviceId + ":" + e); - - return false; - } // DeviceInfo - - + // DeviceInfo let deviceStore; - if (deviceId in userStore) { // already have this device. deviceStore = userStore[deviceId]; - if (deviceStore.getFingerprint() != signKey) { // this should only happen if the list has been MITMed; we are // best off sticking with the original keys. // // Should we warn the user about it somehow? _logger.logger.warn("Ed25519 key for device " + userId + ":" + deviceId + " has changed"); - return false; } } else { userStore[deviceId] = deviceStore = new _deviceinfo.DeviceInfo(deviceId); } - deviceStore.keys = deviceResult.keys || {}; deviceStore.algorithms = deviceResult.algorithms || []; deviceStore.unsigned = unsigned; deviceStore.signatures = signatures; return true; } +//# sourceMappingURL=DeviceList.js.map /***/ }), /***/ 6337: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.EncryptionSetupOperation = exports.EncryptionSetupBuilder = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _event = __nccwpck_require__(9564); +var _CrossSigning = __nccwpck_require__(2933); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +var _httpApi = __nccwpck_require__(7082); +var _client = __nccwpck_require__(9058); +var _typedEventEmitter = __nccwpck_require__(7150); +/* +Copyright 2021 The Matrix.org Foundation C.I.C. -var _logger = __webpack_require__(3854); +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at -var _event = __webpack_require__(9564); + http://www.apache.org/licenses/LICENSE-2.0 -var _events = __webpack_require__(8614); - -var _CrossSigning = __webpack_require__(2933); - -var _indexeddbCryptoStore = __webpack_require__(5651); - -var _httpApi = __webpack_require__(263); +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ /** * Builds an EncryptionSetupOperation by calling any of the add.. methods. @@ -34138,403 +142745,329 @@ var _httpApi = __webpack_require__(263); */ class EncryptionSetupBuilder { /** - * @param {Object.} accountData pre-existing account data, will only be read, not written. - * @param {CryptoCallbacks} delegateCryptoCallbacks crypto callbacks to delegate to if the key isn't in cache yet + * @param accountData - pre-existing account data, will only be read, not written. + * @param delegateCryptoCallbacks - crypto callbacks to delegate to if the key isn't in cache yet */ constructor(accountData, delegateCryptoCallbacks) { this.accountDataClientAdapter = new AccountDataClientAdapter(accountData); this.crossSigningCallbacks = new CrossSigningCallbacks(); this.ssssCryptoCallbacks = new SSSSCryptoCallbacks(delegateCryptoCallbacks); - this._crossSigningKeys = null; - this._keySignatures = null; - this._keyBackupInfo = null; } + /** * Adds new cross-signing public keys * - * @param {function} authUpload Function called to await an interactive auth + * @param authUpload - Function called to await an interactive auth * flow when uploading device signing keys. * Args: - * {function} A function that makes the request requiring auth. Receives + * A function that makes the request requiring auth. Receives * the auth data as an object. Can be called multiple times, first with * an empty authDict, to obtain the flows. - * @param {Object} keys the new keys + * @param keys - the new keys */ - - addCrossSigningKeys(authUpload, keys) { - this._crossSigningKeys = { + this.crossSigningKeys = { authUpload, keys }; } + /** * Adds the key backup info to be updated on the server * * Used either to create a new key backup, or add signatures * from the new MSK. * - * @param {Object} keyBackupInfo as received from/sent to the server + * @param keyBackupInfo - as received from/sent to the server */ - - addSessionBackup(keyBackupInfo) { - this._keyBackupInfo = keyBackupInfo; + this.keyBackupInfo = keyBackupInfo; } + /** * Adds the session backup private key to be updated in the local cache * * Used after fixing the format of the key * - * @param {Uint8Array} privateKey */ - - addSessionBackupPrivateKeyToCache(privateKey) { - this._sessionBackupPrivateKey = privateKey; + this.sessionBackupPrivateKey = privateKey; } + /** * Add signatures from a given user and device/x-sign key * Used to sign the new cross-signing key with the device key * - * @param {String} userId - * @param {String} deviceId - * @param {String} signature */ - - addKeySignature(userId, deviceId, signature) { - if (!this._keySignatures) { - this._keySignatures = {}; + if (!this.keySignatures) { + this.keySignatures = {}; } - - const userSignatures = this._keySignatures[userId] || {}; - this._keySignatures[userId] = userSignatures; + const userSignatures = this.keySignatures[userId] || {}; + this.keySignatures[userId] = userSignatures; userSignatures[deviceId] = signature; } - /** - * @param {String} type - * @param {Object} content - * @return {Promise} - */ - - - setAccountData(type, content) { - return this.accountDataClientAdapter.setAccountData(type, content); + async setAccountData(type, content) { + await this.accountDataClientAdapter.setAccountData(type, content); } + /** * builds the operation containing all the parts that have been added to the builder - * @return {EncryptionSetupOperation} */ - - buildOperation() { - const accountData = this.accountDataClientAdapter._values; - return new EncryptionSetupOperation(accountData, this._crossSigningKeys, this._keyBackupInfo, this._keySignatures); + const accountData = this.accountDataClientAdapter.values; + return new EncryptionSetupOperation(accountData, this.crossSigningKeys, this.keyBackupInfo, this.keySignatures); } + /** * Stores the created keys locally. * * This does not yet store the operation in a way that it can be restored, * but that is the idea in the future. - * - * @param {Crypto} crypto - * @return {Promise} */ - - async persist(crypto) { // store private keys in cache - if (this._crossSigningKeys) { - const cacheCallbacks = (0, _CrossSigning.createCryptoStoreCacheCallbacks)(crypto._cryptoStore, crypto._olmDevice); - + if (this.crossSigningKeys) { + const cacheCallbacks = (0, _CrossSigning.createCryptoStoreCacheCallbacks)(crypto.cryptoStore, crypto.olmDevice); for (const type of ["master", "self_signing", "user_signing"]) { + var _cacheCallbacks$store; _logger.logger.log(`Cache ${type} cross-signing private key locally`); - const privateKey = this.crossSigningCallbacks.privateKeys.get(type); - await cacheCallbacks.storeCrossSigningKeyCache(type, privateKey); - } // store own cross-sign pubkeys as trusted - - - await crypto._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - crypto._cryptoStore.storeCrossSigningKeys(txn, this._crossSigningKeys.keys); + await ((_cacheCallbacks$store = cacheCallbacks.storeCrossSigningKeyCache) === null || _cacheCallbacks$store === void 0 ? void 0 : _cacheCallbacks$store.call(cacheCallbacks, type, privateKey)); + } + // store own cross-sign pubkeys as trusted + await crypto.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + crypto.cryptoStore.storeCrossSigningKeys(txn, this.crossSigningKeys.keys); }); - } // store session backup key in cache - - - if (this._sessionBackupPrivateKey) { - await crypto.storeSessionBackupPrivateKey(this._sessionBackupPrivateKey); + } + // store session backup key in cache + if (this.sessionBackupPrivateKey) { + await crypto.storeSessionBackupPrivateKey(this.sessionBackupPrivateKey); } } - } + /** * Can be created from EncryptionSetupBuilder, or * (in a follow-up PR, not implemented yet) restored from storage, to retry. * * It does not have knowledge of any private keys, unlike the builder. */ - - exports.EncryptionSetupBuilder = EncryptionSetupBuilder; - class EncryptionSetupOperation { /** - * @param {Map} accountData - * @param {Object} crossSigningKeys - * @param {Object} keyBackupInfo - * @param {Object} keySignatures */ constructor(accountData, crossSigningKeys, keyBackupInfo, keySignatures) { - this._accountData = accountData; - this._crossSigningKeys = crossSigningKeys; - this._keyBackupInfo = keyBackupInfo; - this._keySignatures = keySignatures; + this.accountData = accountData; + this.crossSigningKeys = crossSigningKeys; + this.keyBackupInfo = keyBackupInfo; + this.keySignatures = keySignatures; } + /** * Runs the (remaining part of, in the future) operation by sending requests to the server. - * @param {Crypto} crypto */ - - async apply(crypto) { - const baseApis = crypto._baseApis; // upload cross-signing keys - - if (this._crossSigningKeys) { + const baseApis = crypto.baseApis; + // upload cross-signing keys + if (this.crossSigningKeys) { + var _this$crossSigningKey, _this$crossSigningKey2; const keys = {}; - - for (const [name, key] of Object.entries(this._crossSigningKeys.keys)) { + for (const [name, key] of Object.entries(this.crossSigningKeys.keys)) { keys[name + "_key"] = key; - } // We must only call `uploadDeviceSigningKeys` from inside this auth + } + + // We must only call `uploadDeviceSigningKeys` from inside this auth // helper to ensure we properly handle auth errors. + await ((_this$crossSigningKey = (_this$crossSigningKey2 = this.crossSigningKeys).authUpload) === null || _this$crossSigningKey === void 0 ? void 0 : _this$crossSigningKey.call(_this$crossSigningKey2, authDict => { + return baseApis.uploadDeviceSigningKeys(authDict !== null && authDict !== void 0 ? authDict : undefined, keys); + })); - - await this._crossSigningKeys.authUpload(authDict => { - return baseApis.uploadDeviceSigningKeys(authDict, keys); - }); // pass the new keys to the main instance of our own CrossSigningInfo. - - crypto._crossSigningInfo.setKeys(this._crossSigningKeys.keys); - } // set account data - - - if (this._accountData) { - for (const [type, content] of this._accountData) { + // pass the new keys to the main instance of our own CrossSigningInfo. + crypto.crossSigningInfo.setKeys(this.crossSigningKeys.keys); + } + // set account data + if (this.accountData) { + for (const [type, content] of this.accountData) { await baseApis.setAccountData(type, content); } - } // upload first cross-signing signatures with the new key + } + // upload first cross-signing signatures with the new key // (e.g. signing our own device) - - - if (this._keySignatures) { - await baseApis.uploadKeySignatures(this._keySignatures); - } // need to create/update key backup info - - - if (this._keyBackupInfo) { - if (this._keyBackupInfo.version) { + if (this.keySignatures) { + await baseApis.uploadKeySignatures(this.keySignatures); + } + // need to create/update key backup info + if (this.keyBackupInfo) { + if (this.keyBackupInfo.version) { // session backup signature // The backup is trusted because the user provided the private key. // Sign the backup with the cross signing key so the key backup can // be trusted via cross-signing. - await baseApis._http.authedRequest(undefined, "PUT", "/room_keys/version/" + this._keyBackupInfo.version, undefined, { - algorithm: this._keyBackupInfo.algorithm, - auth_data: this._keyBackupInfo.auth_data + await baseApis.http.authedRequest(_httpApi.Method.Put, "/room_keys/version/" + this.keyBackupInfo.version, undefined, { + algorithm: this.keyBackupInfo.algorithm, + auth_data: this.keyBackupInfo.auth_data }, { - prefix: _httpApi.PREFIX_UNSTABLE + prefix: _httpApi.ClientPrefix.V3 }); } else { // add new key backup - await baseApis._http.authedRequest(undefined, "POST", "/room_keys/version", undefined, this._keyBackupInfo, { - prefix: _httpApi.PREFIX_UNSTABLE + await baseApis.http.authedRequest(_httpApi.Method.Post, "/room_keys/version", undefined, this.keyBackupInfo, { + prefix: _httpApi.ClientPrefix.V3 }); } + // tell the backup manager to re-check the keys now that they have been (maybe) updated + await crypto.backupManager.checkKeyBackup(); } } - } + /** * Catches account data set by SecretStorage during bootstrapping by * implementing the methods related to account data in MatrixClient */ - - exports.EncryptionSetupOperation = EncryptionSetupOperation; - -class AccountDataClientAdapter extends _events.EventEmitter { +class AccountDataClientAdapter extends _typedEventEmitter.TypedEventEmitter { /** - * @param {Object.} accountData existing account data + * @param existingValues - existing account data */ - constructor(accountData) { + constructor(existingValues) { super(); - this._existingValues = accountData; - this._values = new Map(); + // + (0, _defineProperty2.default)(this, "values", new Map()); + this.existingValues = existingValues; } + /** - * @param {String} type - * @return {Promise} the content of the account data + * @returns the content of the account data */ - - getAccountDataFromServer(type) { return Promise.resolve(this.getAccountData(type)); } + /** - * @param {String} type - * @return {Object} the content of the account data + * @returns the content of the account data */ - - getAccountData(type) { - const modifiedValue = this._values.get(type); - + const modifiedValue = this.values.get(type); if (modifiedValue) { return modifiedValue; } - - const existingValue = this._existingValues[type]; - + const existingValue = this.existingValues.get(type); if (existingValue) { return existingValue.getContent(); } - return null; } - /** - * @param {String} type - * @param {Object} content - * @return {Promise} - */ - - setAccountData(type, content) { - const lastEvent = this._values.get(type); - - this._values.set(type, content); // ensure accountData is emitted on the next tick, + const lastEvent = this.values.get(type); + this.values.set(type, content); + // ensure accountData is emitted on the next tick, // as SecretStorage listens for it while calling this method // and it seems to rely on this. - - return Promise.resolve().then(() => { const event = new _event.MatrixEvent({ type, content }); - this.emit("accountData", event, lastEvent); + this.emit(_client.ClientEvent.AccountData, event, lastEvent); + return {}; }); } - } + /** * Catches the private cross-signing keys set during bootstrapping * by both cache callbacks (see createCryptoStoreCacheCallbacks) as non-cache callbacks. * See CrossSigningInfo constructor */ - - class CrossSigningCallbacks { constructor() { - this.privateKeys = new Map(); - } // cache callbacks - - + (0, _defineProperty2.default)(this, "privateKeys", new Map()); + } + // cache callbacks getCrossSigningKeyCache(type, expectedPublicKey) { return this.getCrossSigningKey(type, expectedPublicKey); } - storeCrossSigningKeyCache(type, key) { this.privateKeys.set(type, key); return Promise.resolve(); - } // non-cache callbacks - - - getCrossSigningKey(type, _expectedPubkey) { - return Promise.resolve(this.privateKeys.get(type)); } + // non-cache callbacks + getCrossSigningKey(type, expectedPubkey) { + var _this$privateKeys$get; + return Promise.resolve((_this$privateKeys$get = this.privateKeys.get(type)) !== null && _this$privateKeys$get !== void 0 ? _this$privateKeys$get : null); + } saveCrossSigningKeys(privateKeys) { for (const [type, privateKey] of Object.entries(privateKeys)) { this.privateKeys.set(type, privateKey); } } - } + /** * Catches the 4S private key set during bootstrapping by implementing * the SecretStorage crypto callbacks */ - - class SSSSCryptoCallbacks { constructor(delegateCryptoCallbacks) { - this._privateKeys = new Map(); - this._delegateCryptoCallbacks = delegateCryptoCallbacks; + (0, _defineProperty2.default)(this, "privateKeys", new Map()); + this.delegateCryptoCallbacks = delegateCryptoCallbacks; } - async getSecretStorageKey({ keys }, name) { + var _this$delegateCryptoC; for (const keyId of Object.keys(keys)) { - const privateKey = this._privateKeys.get(keyId); - + const privateKey = this.privateKeys.get(keyId); if (privateKey) { return [keyId, privateKey]; } - } // if we don't have the key cached yet, ask + } + // if we don't have the key cached yet, ask // for it to the general crypto callbacks and cache it - - - if (this._delegateCryptoCallbacks) { - const result = await this._delegateCryptoCallbacks.getSecretStorageKey({ + if (this !== null && this !== void 0 && (_this$delegateCryptoC = this.delegateCryptoCallbacks) !== null && _this$delegateCryptoC !== void 0 && _this$delegateCryptoC.getSecretStorageKey) { + const result = await this.delegateCryptoCallbacks.getSecretStorageKey({ keys }, name); - if (result) { const [keyId, privateKey] = result; - - this._privateKeys.set(keyId, privateKey); + this.privateKeys.set(keyId, privateKey); } - return result; } + return null; } - - addPrivateKey(keyId, privKey) { - this._privateKeys.set(keyId, privKey); // Also pass along to application to cache if it wishes - - - if (this._delegateCryptoCallbacks && this._delegateCryptoCallbacks.cacheSecretStorageKey) { - this._delegateCryptoCallbacks.cacheSecretStorageKey(keyId, privKey); - } + addPrivateKey(keyId, keyInfo, privKey) { + var _this$delegateCryptoC2, _this$delegateCryptoC3; + this.privateKeys.set(keyId, privKey); + // Also pass along to application to cache if it wishes + (_this$delegateCryptoC2 = this.delegateCryptoCallbacks) === null || _this$delegateCryptoC2 === void 0 || (_this$delegateCryptoC3 = _this$delegateCryptoC2.cacheSecretStorageKey) === null || _this$delegateCryptoC3 === void 0 || _this$delegateCryptoC3.call(_this$delegateCryptoC2, keyId, keyInfo, privKey); } - } +//# sourceMappingURL=EncryptionSetup.js.map /***/ }), /***/ 3033: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OlmDevice = OlmDevice; -exports.WITHHELD_MESSAGES = void 0; - -var _logger = __webpack_require__(3854); - -var _indexeddbCryptoStore = __webpack_require__(5651); - -var algorithms = _interopRequireWildcard(__webpack_require__(1534)); - +exports.WITHHELD_MESSAGES = exports.PayloadTooLargeError = exports.OlmDevice = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +var _cryptoApi = __nccwpck_require__(3819); +var _CryptoBackend = __nccwpck_require__(3959); /* -Copyright 2016 OpenMarket Ltd -Copyright 2017, 2019 New Vector Ltd -Copyright 2019, 2020 The Matrix.org Foundation C.I.C. +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -34548,15 +143081,24 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ + // The maximum size of an event is 65K, and we base64 the content, so this is a // reasonable approximation to the biggest plaintext we can encrypt. const MAX_PLAINTEXT_LENGTH = 65536 * 3 / 4; - +class PayloadTooLargeError extends Error { + constructor(...args) { + super(...args); + (0, _defineProperty2.default)(this, "data", { + errcode: "M_TOO_LARGE", + error: "Payload too large for encrypted message" + }); + } +} +exports.PayloadTooLargeError = PayloadTooLargeError; function checkPayloadLength(payloadString) { if (payloadString === undefined) { throw new Error("payloadString undefined"); } - if (payloadString.length > MAX_PLAINTEXT_LENGTH) { // might as well fail early here rather than letting the olm library throw // a cryptic memory allocation error. @@ -34564,972 +143106,1103 @@ function checkPayloadLength(payloadString) { // Note that even if we manage to do the encryption, the message send may fail, // because by the time we've wrapped the ciphertext in the event object, it may // exceed 65K. But at least we won't just fail with "abort()" in that case. - const err = new Error("Message too long (" + payloadString.length + " bytes). " + "The maximum for an encrypted message is " + MAX_PLAINTEXT_LENGTH + " bytes."); // TODO: [TypeScript] We should have our own error types - - err.data = { - errcode: "M_TOO_LARGE", - error: "Payload too large for encrypted message" - }; - throw err; + throw new PayloadTooLargeError(`Message too long (${payloadString.length} bytes). ` + `The maximum for an encrypted message is ${MAX_PLAINTEXT_LENGTH} bytes.`); } } -/** - * The type of object we use for importing and exporting megolm session data. - * - * @typedef {Object} module:crypto/OlmDevice.MegolmSessionData - * @property {String} sender_key Sender's Curve25519 device key - * @property {String[]} forwarding_curve25519_key_chain Devices which forwarded - * this session to us (normally empty). - * @property {Object} sender_claimed_keys Other keys the sender claims. - * @property {String} room_id Room this session is used in - * @property {String} session_id Unique id for the session - * @property {String} session_key Base64'ed key data - */ + +/** data stored in the session store about an inbound group session */ + +/* eslint-disable camelcase */ + +/* eslint-enable camelcase */ /** * Manages the olm cryptography functions. Each OlmDevice has a single * OlmAccount and a number of OlmSessions. * * Accounts and sessions are kept pickled in the cryptoStore. - * - * @constructor - * @alias module:crypto/OlmDevice - * - * @param {Object} cryptoStore A store for crypto data - * - * @property {string} deviceCurve25519Key Curve25519 key for the account - * @property {string} deviceEd25519Key Ed25519 key for the account */ +class OlmDevice { + // set by consumers - -function OlmDevice(cryptoStore) { - this._cryptoStore = cryptoStore; - this._pickleKey = "DEFAULT_KEY"; // don't know these until we load the account from storage in init() - - this.deviceCurve25519Key = null; - this.deviceEd25519Key = null; - this._maxOneTimeKeys = null; // we don't bother stashing outboundgroupsessions in the cryptoStore - - // instead we keep them here. - - this._outboundGroupSessionStore = {}; // Store a set of decrypted message indexes for each group session. - // This partially mitigates a replay attack where a MITM resends a group - // message into the room. - // - // When we decrypt a message and the message index matches a previously - // decrypted message, one possible cause of that is that we are decrypting - // the same event, and may not indicate an actual replay attack. For - // example, this could happen if we receive events, forget about them, and - // then re-fetch them when we backfill. So we store the event ID and - // timestamp corresponding to each message index when we first decrypt it, - // and compare these against the event ID and timestamp every time we use - // that same index. If they match, then we're probably decrypting the same - // event and we don't consider it a replay attack. - // - // Keys are strings of form "||" - // Values are objects of the form "{id: , timestamp: }" - - this._inboundGroupSessionMessageIndexes = {}; // Keep track of sessions that we're starting, so that we don't start - // multiple sessions for the same device at the same time. - - this._sessionsInProgress = {}; // Used by olm to serialise prekey message decryptions - - this._olmPrekeyPromise = Promise.resolve(); -} -/** - * Initialise the OlmAccount. This must be called before any other operations - * on the OlmDevice. - * - * Data from an exported Olm device can be provided - * in order to re-create this device. - * - * Attempts to load the OlmAccount from the crypto store, or creates one if none is - * found. - * - * Reads the device keys from the OlmAccount object. - * - * @param {object} opts - * @param {object} opts.fromExportedDevice (Optional) data from exported device - * that must be re-created. - * If present, opts.pickleKey is ignored - * (exported data already provides a pickle key) - * @param {object} opts.pickleKey (Optional) pickle key to set instead of default one - */ - - -OlmDevice.prototype.init = async function (opts = {}) { - let e2eKeys; - const account = new global.Olm.Account(); - const { - pickleKey, - fromExportedDevice - } = opts; - - try { - if (fromExportedDevice) { - if (pickleKey) { - console.warn('ignoring opts.pickleKey' + ' because opts.fromExportedDevice is present.'); - } - - this._pickleKey = fromExportedDevice.pickleKey; - await _initialiseFromExportedDevice(fromExportedDevice, this._cryptoStore, this._pickleKey, account); - } else { - if (pickleKey) { - this._pickleKey = pickleKey; - } - - await _initialiseAccount(this._cryptoStore, this._pickleKey, account); - } - - e2eKeys = JSON.parse(account.identity_keys()); - this._maxOneTimeKeys = account.max_number_of_one_time_keys(); - } finally { - account.free(); + constructor(cryptoStore) { + (0, _defineProperty2.default)(this, "pickleKey", "DEFAULT_KEY"); + // set by consumers + /** Curve25519 key for the account, unknown until we load the account from storage in init() */ + (0, _defineProperty2.default)(this, "deviceCurve25519Key", null); + /** Ed25519 key for the account, unknown until we load the account from storage in init() */ + (0, _defineProperty2.default)(this, "deviceEd25519Key", null); + (0, _defineProperty2.default)(this, "maxOneTimeKeys", null); + // we don't bother stashing outboundgroupsessions in the cryptoStore - + // instead we keep them here. + (0, _defineProperty2.default)(this, "outboundGroupSessionStore", {}); + // Store a set of decrypted message indexes for each group session. + // This partially mitigates a replay attack where a MITM resends a group + // message into the room. + // + // When we decrypt a message and the message index matches a previously + // decrypted message, one possible cause of that is that we are decrypting + // the same event, and may not indicate an actual replay attack. For + // example, this could happen if we receive events, forget about them, and + // then re-fetch them when we backfill. So we store the event ID and + // timestamp corresponding to each message index when we first decrypt it, + // and compare these against the event ID and timestamp every time we use + // that same index. If they match, then we're probably decrypting the same + // event and we don't consider it a replay attack. + // + // Keys are strings of form "||" + // Values are objects of the form "{id: , timestamp: }" + (0, _defineProperty2.default)(this, "inboundGroupSessionMessageIndexes", {}); + // Keep track of sessions that we're starting, so that we don't start + // multiple sessions for the same device at the same time. + (0, _defineProperty2.default)(this, "sessionsInProgress", {}); + // set by consumers + // Used by olm to serialise prekey message decryptions + (0, _defineProperty2.default)(this, "olmPrekeyPromise", Promise.resolve()); + this.cryptoStore = cryptoStore; } - this.deviceCurve25519Key = e2eKeys.curve25519; - this.deviceEd25519Key = e2eKeys.ed25519; -}; -/** - * Populates the crypto store using data that was exported from an existing device. - * Note that for now only the “account” and “sessions” stores are populated; - * Other stores will be as with a new device. - * - * @param {Object} exportedData Data exported from another device - * through the “export” method. - * @param {module:crypto/store/base~CryptoStore} cryptoStore storage for the crypto layer - * @param {string} pickleKey the key that was used to pickle the exported data - * @param {Olm.Account} account an olm account to initialize - */ + /** + * @returns The version of Olm. + */ + static getOlmVersion() { + return global.Olm.get_library_version(); + } - -async function _initialiseFromExportedDevice(exportedData, cryptoStore, pickleKey, account) { - await cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - cryptoStore.storeAccount(txn, exportedData.pickledAccount); - exportedData.sessions.forEach(session => { - const { - deviceKey, - sessionId - } = session; - const sessionInfo = { - session: session.session, - lastReceivedMessageTs: session.lastReceivedMessageTs - }; - cryptoStore.storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn); - }); - }); - account.unpickle(pickleKey, exportedData.pickledAccount); -} - -async function _initialiseAccount(cryptoStore, pickleKey, account) { - await cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - cryptoStore.getAccount(txn, pickledAccount => { - if (pickledAccount !== null) { - account.unpickle(pickleKey, pickledAccount); - } else { - account.create(); - pickledAccount = account.pickle(pickleKey); - cryptoStore.storeAccount(txn, pickledAccount); - } - }); - }); -} -/** - * @return {array} The version of Olm. - */ - - -OlmDevice.getOlmVersion = function () { - return global.Olm.get_library_version(); -}; -/** - * extract our OlmAccount from the crypto store and call the given function - * with the account object - * The `account` object is useable only within the callback passed to this - * function and will be freed as soon the callback returns. It is *not* - * useable for the rest of the lifetime of the transaction. - * This function requires a live transaction object from cryptoStore.doTxn() - * and therefore may only be called in a doTxn() callback. - * - * @param {*} txn Opaque transaction object from cryptoStore.doTxn() - * @param {function} func - * @private - */ - - -OlmDevice.prototype._getAccount = function (txn, func) { - this._cryptoStore.getAccount(txn, pickledAccount => { + /** + * Initialise the OlmAccount. This must be called before any other operations + * on the OlmDevice. + * + * Data from an exported Olm device can be provided + * in order to re-create this device. + * + * Attempts to load the OlmAccount from the crypto store, or creates one if none is + * found. + * + * Reads the device keys from the OlmAccount object. + * + * @param IInitOpts - opts to initialise the OlmAccount with + */ + async init({ + pickleKey, + fromExportedDevice + } = {}) { + let e2eKeys; const account = new global.Olm.Account(); - try { - account.unpickle(this._pickleKey, pickledAccount); - func(account); + if (fromExportedDevice) { + if (pickleKey) { + _logger.logger.warn("ignoring opts.pickleKey" + " because opts.fromExportedDevice is present."); + } + this.pickleKey = fromExportedDevice.pickleKey; + await this.initialiseFromExportedDevice(fromExportedDevice, account); + } else { + if (pickleKey) { + this.pickleKey = pickleKey; + } + await this.initialiseAccount(account); + } + e2eKeys = JSON.parse(account.identity_keys()); + this.maxOneTimeKeys = account.max_number_of_one_time_keys(); } finally { account.free(); } - }); -}; -/* - * Saves an account to the crypto store. - * This function requires a live transaction object from cryptoStore.doTxn() - * and therefore may only be called in a doTxn() callback. - * - * @param {*} txn Opaque transaction object from cryptoStore.doTxn() - * @param {object} Olm.Account object - * @private - */ - - -OlmDevice.prototype._storeAccount = function (txn, account) { - this._cryptoStore.storeAccount(txn, account.pickle(this._pickleKey)); -}; -/** - * Export data for re-creating the Olm device later. - * TODO export data other than just account and (P2P) sessions. - * - * @return {Promise} The exported data -*/ - - -OlmDevice.prototype.export = async function () { - const result = { - pickleKey: this._pickleKey - }; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - this._cryptoStore.getAccount(txn, pickledAccount => { - result.pickledAccount = pickledAccount; - }); - - result.sessions = []; // Note that the pickledSession object we get in the callback - // is not exactly the same thing you get in method _getSession - // see documentation of IndexedDBCryptoStore.getAllEndToEndSessions - - this._cryptoStore.getAllEndToEndSessions(txn, pickledSession => { - result.sessions.push(pickledSession); - }); - }); - return result; -}; -/** - * extract an OlmSession from the session store and call the given function - * The session is useable only within the callback passed to this - * function and will be freed as soon the callback returns. It is *not* - * useable for the rest of the lifetime of the transaction. - * - * @param {string} deviceKey - * @param {string} sessionId - * @param {*} txn Opaque transaction object from cryptoStore.doTxn() - * @param {function} func - * @private - */ - - -OlmDevice.prototype._getSession = function (deviceKey, sessionId, txn, func) { - this._cryptoStore.getEndToEndSession(deviceKey, sessionId, txn, sessionInfo => { - this._unpickleSession(sessionInfo, func); - }); -}; -/** - * Creates a session object from a session pickle and executes the given - * function with it. The session object is destroyed once the function - * returns. - * - * @param {object} sessionInfo - * @param {function} func - * @private - */ - - -OlmDevice.prototype._unpickleSession = function (sessionInfo, func) { - const session = new global.Olm.Session(); - - try { - session.unpickle(this._pickleKey, sessionInfo.session); - const unpickledSessInfo = Object.assign({}, sessionInfo, { - session - }); - func(unpickledSessInfo); - } finally { - session.free(); + this.deviceCurve25519Key = e2eKeys.curve25519; + this.deviceEd25519Key = e2eKeys.ed25519; } -}; -/** - * store our OlmSession in the session store - * - * @param {string} deviceKey - * @param {object} sessionInfo {session: OlmSession, lastReceivedMessageTs: int} - * @param {*} txn Opaque transaction object from cryptoStore.doTxn() - * @private - */ - - -OlmDevice.prototype._saveSession = function (deviceKey, sessionInfo, txn) { - const sessionId = sessionInfo.session.session_id(); - const pickledSessionInfo = Object.assign(sessionInfo, { - session: sessionInfo.session.pickle(this._pickleKey) - }); - - this._cryptoStore.storeEndToEndSession(deviceKey, sessionId, pickledSessionInfo, txn); -}; -/** - * get an OlmUtility and call the given function - * - * @param {function} func - * @return {object} result of func - * @private - */ - - -OlmDevice.prototype._getUtility = function (func) { - const utility = new global.Olm.Utility(); - - try { - return func(utility); - } finally { - utility.free(); - } -}; -/** - * Signs a message with the ed25519 key for this account. - * - * @param {string} message message to be signed - * @return {Promise} base64-encoded signature - */ - - -OlmDevice.prototype.sign = async function (message) { - let result; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - this._getAccount(txn, account => { - result = account.sign(message); - }); - }); - return result; -}; -/** - * Get the current (unused, unpublished) one-time keys for this account. - * - * @return {object} one time keys; an object with the single property - * curve25519, which is itself an object mapping key id to Curve25519 - * key. - */ - - -OlmDevice.prototype.getOneTimeKeys = async function () { - let result; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - this._getAccount(txn, account => { - result = JSON.parse(account.one_time_keys()); - }); - }); - return result; -}; -/** - * Get the maximum number of one-time keys we can store. - * - * @return {number} number of keys - */ - - -OlmDevice.prototype.maxNumberOfOneTimeKeys = function () { - return this._maxOneTimeKeys; -}; -/** - * Marks all of the one-time keys as published. - */ - - -OlmDevice.prototype.markKeysAsPublished = async function () { - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - this._getAccount(txn, account => { - account.mark_keys_as_published(); - - this._storeAccount(txn, account); - }); - }); -}; -/** - * Generate some new one-time keys - * - * @param {number} numKeys number of keys to generate - * @return {Promise} Resolved once the account is saved back having generated the keys - */ - - -OlmDevice.prototype.generateOneTimeKeys = function (numKeys) { - return this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - this._getAccount(txn, account => { - account.generate_one_time_keys(numKeys); - - this._storeAccount(txn, account); - }); - }); -}; -/** - * Generate a new outbound session - * - * The new session will be stored in the cryptoStore. - * - * @param {string} theirIdentityKey remote user's Curve25519 identity key - * @param {string} theirOneTimeKey remote user's one-time Curve25519 key - * @return {string} sessionId for the outbound session. - */ - - -OlmDevice.prototype.createOutboundSession = async function (theirIdentityKey, theirOneTimeKey) { - let newSessionId; - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - this._getAccount(txn, account => { - const session = new global.Olm.Session(); - - try { - session.create_outbound(account, theirIdentityKey, theirOneTimeKey); - newSessionId = session.session_id(); - - this._storeAccount(txn, account); + /** + * Populates the crypto store using data that was exported from an existing device. + * Note that for now only the “account” and “sessions” stores are populated; + * Other stores will be as with a new device. + * + * @param exportedData - Data exported from another device + * through the “export” method. + * @param account - an olm account to initialize + */ + async initialiseFromExportedDevice(exportedData, account) { + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.cryptoStore.storeAccount(txn, exportedData.pickledAccount); + exportedData.sessions.forEach(session => { + const { + deviceKey, + sessionId + } = session; const sessionInfo = { - session, - // Pretend we've received a message at this point, otherwise - // if we try to send a message to the device, it won't use - // this session - lastReceivedMessageTs: Date.now() + session: session.session, + lastReceivedMessageTs: session.lastReceivedMessageTs }; - - this._saveSession(theirIdentityKey, sessionInfo, txn); - } finally { - session.free(); - } + this.cryptoStore.storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn); + }); }); - }); - return newSessionId; -}; -/** - * Generate a new inbound session, given an incoming message - * - * @param {string} theirDeviceIdentityKey remote user's Curve25519 identity key - * @param {number} messageType messageType field from the received message (must be 0) - * @param {string} ciphertext base64-encoded body from the received message - * - * @return {{payload: string, session_id: string}} decrypted payload, and - * session id of new session - * - * @raises {Error} if the received message was not valid (for instance, it - * didn't use a valid one-time key). - */ - - -OlmDevice.prototype.createInboundSession = async function (theirDeviceIdentityKey, messageType, ciphertext) { - if (messageType !== 0) { - throw new Error("Need messageType == 0 to create inbound session"); + account.unpickle(this.pickleKey, exportedData.pickledAccount); } - - let result; - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - this._getAccount(txn, account => { - const session = new global.Olm.Session(); - - try { - session.create_inbound_from(account, theirDeviceIdentityKey, ciphertext); - account.remove_one_time_keys(session); - - this._storeAccount(txn, account); - - const payloadString = session.decrypt(messageType, ciphertext); - const sessionInfo = { - session, - // this counts as a received message: set last received message time - // to now - lastReceivedMessageTs: Date.now() - }; - - this._saveSession(theirDeviceIdentityKey, sessionInfo, txn); - - result = { - payload: payloadString, - session_id: session.session_id() - }; - } finally { - session.free(); - } - }); - }); - return result; -}; -/** - * Get a list of known session IDs for the given device - * - * @param {string} theirDeviceIdentityKey Curve25519 identity key for the - * remote device - * @return {Promise} a list of known session ids for the device - */ - - -OlmDevice.prototype.getSessionIdsForDevice = async function (theirDeviceIdentityKey) { - if (this._sessionsInProgress[theirDeviceIdentityKey]) { - _logger.logger.log("waiting for olm session to be created"); - - try { - await this._sessionsInProgress[theirDeviceIdentityKey]; - } catch (e) {// if the session failed to be created, just fall through and - // return an empty result - } - } - - let sessionIds; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - this._cryptoStore.getEndToEndSessions(theirDeviceIdentityKey, txn, sessions => { - sessionIds = Object.keys(sessions); - }); - }); - return sessionIds; -}; -/** - * Get the right olm session id for encrypting messages to the given identity key - * - * @param {string} theirDeviceIdentityKey Curve25519 identity key for the - * remote device - * @param {boolean} nowait Don't wait for an in-progress session to complete. - * This should only be set to true of the calling function is the function - * that marked the session as being in-progress. - * @return {Promise} session id, or null if no established session - */ - - -OlmDevice.prototype.getSessionIdForDevice = async function (theirDeviceIdentityKey, nowait) { - const sessionInfos = await this.getSessionInfoForDevice(theirDeviceIdentityKey, nowait); - - if (sessionInfos.length === 0) { - return null; - } // Use the session that has most recently received a message - - - let idxOfBest = 0; - - for (let i = 1; i < sessionInfos.length; i++) { - const thisSessInfo = sessionInfos[i]; - const thisLastReceived = thisSessInfo.lastReceivedMessageTs === undefined ? 0 : thisSessInfo.lastReceivedMessageTs; - const bestSessInfo = sessionInfos[idxOfBest]; - const bestLastReceived = bestSessInfo.lastReceivedMessageTs === undefined ? 0 : bestSessInfo.lastReceivedMessageTs; - - if (thisLastReceived > bestLastReceived || thisLastReceived === bestLastReceived && thisSessInfo.sessionId < bestSessInfo.sessionId) { - idxOfBest = i; - } - } - - return sessionInfos[idxOfBest].sessionId; -}; -/** - * Get information on the active Olm sessions for a device. - *

- * Returns an array, with an entry for each active session. The first entry in - * the result will be the one used for outgoing messages. Each entry contains - * the keys 'hasReceivedMessage' (true if the session has received an incoming - * message and is therefore past the pre-key stage), and 'sessionId'. - * - * @param {string} deviceIdentityKey Curve25519 identity key for the device - * @param {boolean} nowait Don't wait for an in-progress session to complete. - * This should only be set to true of the calling function is the function - * that marked the session as being in-progress. - * @return {Array.<{sessionId: string, hasReceivedMessage: Boolean}>} - */ - - -OlmDevice.prototype.getSessionInfoForDevice = async function (deviceIdentityKey, nowait) { - if (this._sessionsInProgress[deviceIdentityKey] && !nowait) { - _logger.logger.log("waiting for olm session to be created"); - - try { - await this._sessionsInProgress[deviceIdentityKey]; - } catch (e) {// if the session failed to be created, then just fall through and - // return an empty result - } - } - - const info = []; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - this._cryptoStore.getEndToEndSessions(deviceIdentityKey, txn, sessions => { - const sessionIds = Object.keys(sessions).sort(); - - for (const sessionId of sessionIds) { - this._unpickleSession(sessions[sessionId], sessInfo => { - info.push({ - lastReceivedMessageTs: sessInfo.lastReceivedMessageTs, - hasReceivedMessage: sessInfo.session.has_received_message(), - sessionId: sessionId - }); - }); - } - }); - }); - return info; -}; -/** - * Encrypt an outgoing message using an existing session - * - * @param {string} theirDeviceIdentityKey Curve25519 identity key for the - * remote device - * @param {string} sessionId the id of the active session - * @param {string} payloadString payload to be encrypted and sent - * - * @return {Promise} ciphertext - */ - - -OlmDevice.prototype.encryptMessage = async function (theirDeviceIdentityKey, sessionId, payloadString) { - checkPayloadLength(payloadString); - let res; - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - this._getSession(theirDeviceIdentityKey, sessionId, txn, sessionInfo => { - const sessionDesc = sessionInfo.session.describe(); - - _logger.logger.log("encryptMessage: Olm Session ID " + sessionId + " to " + theirDeviceIdentityKey + ": " + sessionDesc); - - res = sessionInfo.session.encrypt(payloadString); - - this._saveSession(theirDeviceIdentityKey, sessionInfo, txn); - }); - }); - return res; -}; -/** - * Decrypt an incoming message using an existing session - * - * @param {string} theirDeviceIdentityKey Curve25519 identity key for the - * remote device - * @param {string} sessionId the id of the active session - * @param {number} messageType messageType field from the received message - * @param {string} ciphertext base64-encoded body from the received message - * - * @return {Promise} decrypted payload. - */ - - -OlmDevice.prototype.decryptMessage = async function (theirDeviceIdentityKey, sessionId, messageType, ciphertext) { - let payloadString; - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - this._getSession(theirDeviceIdentityKey, sessionId, txn, sessionInfo => { - const sessionDesc = sessionInfo.session.describe(); - - _logger.logger.log("decryptMessage: Olm Session ID " + sessionId + " from " + theirDeviceIdentityKey + ": " + sessionDesc); - - payloadString = sessionInfo.session.decrypt(messageType, ciphertext); - sessionInfo.lastReceivedMessageTs = Date.now(); - - this._saveSession(theirDeviceIdentityKey, sessionInfo, txn); - }); - }); - return payloadString; -}; -/** - * Determine if an incoming messages is a prekey message matching an existing session - * - * @param {string} theirDeviceIdentityKey Curve25519 identity key for the - * remote device - * @param {string} sessionId the id of the active session - * @param {number} messageType messageType field from the received message - * @param {string} ciphertext base64-encoded body from the received message - * - * @return {Promise} true if the received message is a prekey message which matches - * the given session. - */ - - -OlmDevice.prototype.matchesSession = async function (theirDeviceIdentityKey, sessionId, messageType, ciphertext) { - if (messageType !== 0) { - return false; - } - - let matches; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { - this._getSession(theirDeviceIdentityKey, sessionId, txn, sessionInfo => { - matches = sessionInfo.session.matches_inbound(ciphertext); - }); - }); - return matches; -}; - -OlmDevice.prototype.recordSessionProblem = async function (deviceKey, type, fixed) { - await this._cryptoStore.storeEndToEndSessionProblem(deviceKey, type, fixed); -}; - -OlmDevice.prototype.sessionMayHaveProblems = async function (deviceKey, timestamp) { - return await this._cryptoStore.getEndToEndSessionProblem(deviceKey, timestamp); -}; - -OlmDevice.prototype.filterOutNotifiedErrorDevices = async function (devices) { - return await this._cryptoStore.filterOutNotifiedErrorDevices(devices); -}; // Outbound group session -// ====================== - -/** - * store an OutboundGroupSession in _outboundGroupSessionStore - * - * @param {Olm.OutboundGroupSession} session - * @private - */ - - -OlmDevice.prototype._saveOutboundGroupSession = function (session) { - const pickledSession = session.pickle(this._pickleKey); - this._outboundGroupSessionStore[session.session_id()] = pickledSession; -}; -/** - * extract an OutboundGroupSession from _outboundGroupSessionStore and call the - * given function - * - * @param {string} sessionId - * @param {function} func - * @return {object} result of func - * @private - */ - - -OlmDevice.prototype._getOutboundGroupSession = function (sessionId, func) { - const pickled = this._outboundGroupSessionStore[sessionId]; - - if (pickled === undefined) { - throw new Error("Unknown outbound group session " + sessionId); - } - - const session = new global.Olm.OutboundGroupSession(); - - try { - session.unpickle(this._pickleKey, pickled); - return func(session); - } finally { - session.free(); - } -}; -/** - * Generate a new outbound group session - * - * @return {string} sessionId for the outbound session. - */ - - -OlmDevice.prototype.createOutboundGroupSession = function () { - const session = new global.Olm.OutboundGroupSession(); - - try { - session.create(); - - this._saveOutboundGroupSession(session); - - return session.session_id(); - } finally { - session.free(); - } -}; -/** - * Encrypt an outgoing message with an outbound group session - * - * @param {string} sessionId the id of the outboundgroupsession - * @param {string} payloadString payload to be encrypted and sent - * - * @return {string} ciphertext - */ - - -OlmDevice.prototype.encryptGroupMessage = function (sessionId, payloadString) { - const self = this; - - _logger.logger.log(`encrypting msg with megolm session ${sessionId}`); - - checkPayloadLength(payloadString); - return this._getOutboundGroupSession(sessionId, function (session) { - const res = session.encrypt(payloadString); - - self._saveOutboundGroupSession(session); - - return res; - }); -}; -/** - * Get the session keys for an outbound group session - * - * @param {string} sessionId the id of the outbound group session - * - * @return {{chain_index: number, key: string}} current chain index, and - * base64-encoded secret key. - */ - - -OlmDevice.prototype.getOutboundGroupSessionKey = function (sessionId) { - return this._getOutboundGroupSession(sessionId, function (session) { - return { - chain_index: session.message_index(), - key: session.session_key() - }; - }); -}; // Inbound group session -// ===================== - -/** - * data stored in the session store about an inbound group session - * - * @typedef {Object} InboundGroupSessionData - * @property {string} room_Id - * @property {string} session pickled Olm.InboundGroupSession - * @property {Object} keysClaimed - * @property {Array} forwardingCurve25519KeyChain Devices involved in forwarding - * this session to us (normally empty). - */ - -/** - * Unpickle a session from a sessionData object and invoke the given function. - * The session is valid only until func returns. - * - * @param {Object} sessionData Object describing the session. - * @param {function(Olm.InboundGroupSession)} func Invoked with the unpickled session - * @return {*} result of func - */ - - -OlmDevice.prototype._unpickleInboundGroupSession = function (sessionData, func) { - const session = new global.Olm.InboundGroupSession(); - - try { - session.unpickle(this._pickleKey, sessionData.session); - return func(session); - } finally { - session.free(); - } -}; -/** - * extract an InboundGroupSession from the crypto store and call the given function - * - * @param {string} roomId The room ID to extract the session for, or null to fetch - * sessions for any room. - * @param {string} senderKey - * @param {string} sessionId - * @param {*} txn Opaque transaction object from cryptoStore.doTxn() - * @param {function(Olm.InboundGroupSession, InboundGroupSessionData)} func - * function to call. - * - * @private - */ - - -OlmDevice.prototype._getInboundGroupSession = function (roomId, senderKey, sessionId, txn, func) { - this._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, (sessionData, withheld) => { - if (sessionData === null) { - func(null, null, withheld); - return; - } // if we were given a room ID, check that the it matches the original one for the session. This stops - // the HS pretending a message was targeting a different room. - - - if (roomId !== null && roomId !== sessionData.room_id) { - throw new Error("Mismatched room_id for inbound group session (expected " + sessionData.room_id + ", was " + roomId + ")"); - } - - this._unpickleInboundGroupSession(sessionData, session => { - func(session, sessionData, withheld); - }); - }); -}; -/** - * Add an inbound group session to the session store - * - * @param {string} roomId room in which this session will be used - * @param {string} senderKey base64-encoded curve25519 key of the sender - * @param {Array} forwardingCurve25519KeyChain Devices involved in forwarding - * this session to us. - * @param {string} sessionId session identifier - * @param {string} sessionKey base64-encoded secret key - * @param {Object} keysClaimed Other keys the sender claims. - * @param {boolean} exportFormat true if the megolm keys are in export format - * (ie, they lack an ed25519 signature) - * @param {Object} [extraSessionData={}] any other data to be include with the session - */ - - -OlmDevice.prototype.addInboundGroupSession = async function (roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat, extraSessionData = {}) { - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { - /* if we already have this session, consider updating it */ - this._getInboundGroupSession(roomId, senderKey, sessionId, txn, (existingSession, existingSessionData) => { - // new session. - const session = new global.Olm.InboundGroupSession(); - - try { - if (exportFormat) { - session.import_session(sessionKey); + async initialiseAccount(account) { + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.cryptoStore.getAccount(txn, pickledAccount => { + if (pickledAccount !== null) { + account.unpickle(this.pickleKey, pickledAccount); } else { - session.create(sessionKey); + account.create(); + pickledAccount = account.pickle(this.pickleKey); + this.cryptoStore.storeAccount(txn, pickledAccount); } + }); + }); + } - if (sessionId != session.session_id()) { - throw new Error("Mismatched group session ID from senderKey: " + senderKey); - } - - if (existingSession) { - _logger.logger.log("Update for megolm session " + senderKey + "/" + sessionId); - - if (existingSession.first_known_index() <= session.first_known_index()) { - // existing session has lower index (i.e. can - // decrypt more), so keep it - _logger.logger.log(`Keeping existing megolm session ${sessionId}`); - - return; - } - } - - _logger.logger.info("Storing megolm session " + senderKey + "/" + sessionId + " with first index " + session.first_known_index()); - - const sessionData = Object.assign({}, extraSessionData, { - room_id: roomId, - session: session.pickle(this._pickleKey), - keysClaimed: keysClaimed, - forwardingCurve25519KeyChain: forwardingCurve25519KeyChain - }); - - this._cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn); + /** + * extract our OlmAccount from the crypto store and call the given function + * with the account object + * The `account` object is usable only within the callback passed to this + * function and will be freed as soon the callback returns. It is *not* + * usable for the rest of the lifetime of the transaction. + * This function requires a live transaction object from cryptoStore.doTxn() + * and therefore may only be called in a doTxn() callback. + * + * @param txn - Opaque transaction object from cryptoStore.doTxn() + * @internal + */ + getAccount(txn, func) { + this.cryptoStore.getAccount(txn, pickledAccount => { + const account = new global.Olm.Account(); + try { + account.unpickle(this.pickleKey, pickledAccount); + func(account); } finally { - session.free(); + account.free(); } }); - }); -}; -/** - * Record in the data store why an inbound group session was withheld. - * - * @param {string} roomId room that the session belongs to - * @param {string} senderKey base64-encoded curve25519 key of the sender - * @param {string} sessionId session identifier - * @param {string} code reason code - * @param {string} reason human-readable version of `code` - */ + } + /* + * Saves an account to the crypto store. + * This function requires a live transaction object from cryptoStore.doTxn() + * and therefore may only be called in a doTxn() callback. + * + * @param txn - Opaque transaction object from cryptoStore.doTxn() + * @param Olm.Account object + * @internal + */ + storeAccount(txn, account) { + this.cryptoStore.storeAccount(txn, account.pickle(this.pickleKey)); + } -OlmDevice.prototype.addInboundGroupSessionWithheld = async function (roomId, senderKey, sessionId, code, reason) { - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { - this._cryptoStore.storeEndToEndInboundGroupSessionWithheld(senderKey, sessionId, { - room_id: roomId, - code: code, - reason: reason - }, txn); - }); -}; + /** + * Export data for re-creating the Olm device later. + * TODO export data other than just account and (P2P) sessions. + * + * @returns The exported data + */ + async export() { + const result = { + pickleKey: this.pickleKey + }; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.cryptoStore.getAccount(txn, pickledAccount => { + result.pickledAccount = pickledAccount; + }); + result.sessions = []; + // Note that the pickledSession object we get in the callback + // is not exactly the same thing you get in method _getSession + // see documentation of IndexedDBCryptoStore.getAllEndToEndSessions + this.cryptoStore.getAllEndToEndSessions(txn, pickledSession => { + result.sessions.push(pickledSession); + }); + }); + return result; + } -const WITHHELD_MESSAGES = { + /** + * extract an OlmSession from the session store and call the given function + * The session is usable only within the callback passed to this + * function and will be freed as soon the callback returns. It is *not* + * usable for the rest of the lifetime of the transaction. + * + * @param txn - Opaque transaction object from cryptoStore.doTxn() + * @internal + */ + getSession(deviceKey, sessionId, txn, func) { + this.cryptoStore.getEndToEndSession(deviceKey, sessionId, txn, sessionInfo => { + this.unpickleSession(sessionInfo, func); + }); + } + + /** + * Creates a session object from a session pickle and executes the given + * function with it. The session object is destroyed once the function + * returns. + * + * @internal + */ + unpickleSession(sessionInfo, func) { + const session = new global.Olm.Session(); + try { + session.unpickle(this.pickleKey, sessionInfo.session); + const unpickledSessInfo = Object.assign({}, sessionInfo, { + session + }); + func(unpickledSessInfo); + } finally { + session.free(); + } + } + + /** + * store our OlmSession in the session store + * + * @param sessionInfo - `{session: OlmSession, lastReceivedMessageTs: int}` + * @param txn - Opaque transaction object from cryptoStore.doTxn() + * @internal + */ + saveSession(deviceKey, sessionInfo, txn) { + const sessionId = sessionInfo.session.session_id(); + _logger.logger.debug(`Saving Olm session ${sessionId} with device ${deviceKey}: ${sessionInfo.session.describe()}`); + + // Why do we re-use the input object for this, overwriting the same key with a different + // type? Is it because we want to erase the unpickled session to enforce that it's no longer + // used? A comment would be great. + const pickledSessionInfo = Object.assign(sessionInfo, { + session: sessionInfo.session.pickle(this.pickleKey) + }); + this.cryptoStore.storeEndToEndSession(deviceKey, sessionId, pickledSessionInfo, txn); + } + + /** + * get an OlmUtility and call the given function + * + * @returns result of func + * @internal + */ + getUtility(func) { + const utility = new global.Olm.Utility(); + try { + return func(utility); + } finally { + utility.free(); + } + } + + /** + * Signs a message with the ed25519 key for this account. + * + * @param message - message to be signed + * @returns base64-encoded signature + */ + async sign(message) { + let result; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.getAccount(txn, account => { + result = account.sign(message); + }); + }); + return result; + } + + /** + * Get the current (unused, unpublished) one-time keys for this account. + * + * @returns one time keys; an object with the single property + * curve25519, which is itself an object mapping key id to Curve25519 + * key. + */ + async getOneTimeKeys() { + let result; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.getAccount(txn, account => { + result = JSON.parse(account.one_time_keys()); + }); + }); + return result; + } + + /** + * Get the maximum number of one-time keys we can store. + * + * @returns number of keys + */ + maxNumberOfOneTimeKeys() { + var _this$maxOneTimeKeys; + return (_this$maxOneTimeKeys = this.maxOneTimeKeys) !== null && _this$maxOneTimeKeys !== void 0 ? _this$maxOneTimeKeys : -1; + } + + /** + * Marks all of the one-time keys as published. + */ + async markKeysAsPublished() { + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.getAccount(txn, account => { + account.mark_keys_as_published(); + this.storeAccount(txn, account); + }); + }); + } + + /** + * Generate some new one-time keys + * + * @param numKeys - number of keys to generate + * @returns Resolved once the account is saved back having generated the keys + */ + generateOneTimeKeys(numKeys) { + return this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.getAccount(txn, account => { + account.generate_one_time_keys(numKeys); + this.storeAccount(txn, account); + }); + }); + } + + /** + * Generate a new fallback keys + * + * @returns Resolved once the account is saved back having generated the key + */ + async generateFallbackKey() { + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.getAccount(txn, account => { + account.generate_fallback_key(); + this.storeAccount(txn, account); + }); + }); + } + async getFallbackKey() { + let result; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.getAccount(txn, account => { + result = JSON.parse(account.unpublished_fallback_key()); + }); + }); + return result; + } + async forgetOldFallbackKey() { + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.getAccount(txn, account => { + account.forget_old_fallback_key(); + this.storeAccount(txn, account); + }); + }); + } + + /** + * Generate a new outbound session + * + * The new session will be stored in the cryptoStore. + * + * @param theirIdentityKey - remote user's Curve25519 identity key + * @param theirOneTimeKey - remote user's one-time Curve25519 key + * @returns sessionId for the outbound session. + */ + async createOutboundSession(theirIdentityKey, theirOneTimeKey) { + let newSessionId; + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.getAccount(txn, account => { + const session = new global.Olm.Session(); + try { + session.create_outbound(account, theirIdentityKey, theirOneTimeKey); + newSessionId = session.session_id(); + this.storeAccount(txn, account); + const sessionInfo = { + session, + // Pretend we've received a message at this point, otherwise + // if we try to send a message to the device, it won't use + // this session + lastReceivedMessageTs: Date.now() + }; + this.saveSession(theirIdentityKey, sessionInfo, txn); + } finally { + session.free(); + } + }); + }, _logger.logger.getChild("[createOutboundSession]")); + return newSessionId; + } + + /** + * Generate a new inbound session, given an incoming message + * + * @param theirDeviceIdentityKey - remote user's Curve25519 identity key + * @param messageType - messageType field from the received message (must be 0) + * @param ciphertext - base64-encoded body from the received message + * + * @returns decrypted payload, and + * session id of new session + * + * @throws Error if the received message was not valid (for instance, it didn't use a valid one-time key). + */ + async createInboundSession(theirDeviceIdentityKey, messageType, ciphertext) { + if (messageType !== 0) { + throw new Error("Need messageType == 0 to create inbound session"); + } + let result; // eslint-disable-line camelcase + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.getAccount(txn, account => { + const session = new global.Olm.Session(); + try { + session.create_inbound_from(account, theirDeviceIdentityKey, ciphertext); + account.remove_one_time_keys(session); + this.storeAccount(txn, account); + const payloadString = session.decrypt(messageType, ciphertext); + const sessionInfo = { + session, + // this counts as a received message: set last received message time + // to now + lastReceivedMessageTs: Date.now() + }; + this.saveSession(theirDeviceIdentityKey, sessionInfo, txn); + result = { + payload: payloadString, + session_id: session.session_id() + }; + } finally { + session.free(); + } + }); + }, _logger.logger.getChild("[createInboundSession]")); + return result; + } + + /** + * Get a list of known session IDs for the given device + * + * @param theirDeviceIdentityKey - Curve25519 identity key for the + * remote device + * @returns a list of known session ids for the device + */ + async getSessionIdsForDevice(theirDeviceIdentityKey) { + const log = _logger.logger.getChild("[getSessionIdsForDevice]"); + if (theirDeviceIdentityKey in this.sessionsInProgress) { + log.debug(`Waiting for Olm session for ${theirDeviceIdentityKey} to be created`); + try { + await this.sessionsInProgress[theirDeviceIdentityKey]; + } catch (e) { + // if the session failed to be created, just fall through and + // return an empty result + } + } + let sessionIds; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.cryptoStore.getEndToEndSessions(theirDeviceIdentityKey, txn, sessions => { + sessionIds = Object.keys(sessions); + }); + }, log); + return sessionIds; + } + + /** + * Get the right olm session id for encrypting messages to the given identity key + * + * @param theirDeviceIdentityKey - Curve25519 identity key for the + * remote device + * @param nowait - Don't wait for an in-progress session to complete. + * This should only be set to true of the calling function is the function + * that marked the session as being in-progress. + * @param log - A possibly customised log + * @returns session id, or null if no established session + */ + async getSessionIdForDevice(theirDeviceIdentityKey, nowait = false, log) { + const sessionInfos = await this.getSessionInfoForDevice(theirDeviceIdentityKey, nowait, log); + if (sessionInfos.length === 0) { + return null; + } + // Use the session that has most recently received a message + let idxOfBest = 0; + for (let i = 1; i < sessionInfos.length; i++) { + const thisSessInfo = sessionInfos[i]; + const thisLastReceived = thisSessInfo.lastReceivedMessageTs === undefined ? 0 : thisSessInfo.lastReceivedMessageTs; + const bestSessInfo = sessionInfos[idxOfBest]; + const bestLastReceived = bestSessInfo.lastReceivedMessageTs === undefined ? 0 : bestSessInfo.lastReceivedMessageTs; + if (thisLastReceived > bestLastReceived || thisLastReceived === bestLastReceived && thisSessInfo.sessionId < bestSessInfo.sessionId) { + idxOfBest = i; + } + } + return sessionInfos[idxOfBest].sessionId; + } + + /** + * Get information on the active Olm sessions for a device. + *

+ * Returns an array, with an entry for each active session. The first entry in + * the result will be the one used for outgoing messages. Each entry contains + * the keys 'hasReceivedMessage' (true if the session has received an incoming + * message and is therefore past the pre-key stage), and 'sessionId'. + * + * @param deviceIdentityKey - Curve25519 identity key for the device + * @param nowait - Don't wait for an in-progress session to complete. + * This should only be set to true of the calling function is the function + * that marked the session as being in-progress. + * @param log - A possibly customised log + */ + async getSessionInfoForDevice(deviceIdentityKey, nowait = false, log = _logger.logger) { + log = log.getChild("[getSessionInfoForDevice]"); + if (deviceIdentityKey in this.sessionsInProgress && !nowait) { + log.debug(`Waiting for Olm session for ${deviceIdentityKey} to be created`); + try { + await this.sessionsInProgress[deviceIdentityKey]; + } catch (e) { + // if the session failed to be created, then just fall through and + // return an empty result + } + } + const info = []; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.cryptoStore.getEndToEndSessions(deviceIdentityKey, txn, sessions => { + const sessionIds = Object.keys(sessions).sort(); + for (const sessionId of sessionIds) { + this.unpickleSession(sessions[sessionId], sessInfo => { + info.push({ + lastReceivedMessageTs: sessInfo.lastReceivedMessageTs, + hasReceivedMessage: sessInfo.session.has_received_message(), + sessionId + }); + }); + } + }); + }, log); + return info; + } + + /** + * Encrypt an outgoing message using an existing session + * + * @param theirDeviceIdentityKey - Curve25519 identity key for the + * remote device + * @param sessionId - the id of the active session + * @param payloadString - payload to be encrypted and sent + * + * @returns ciphertext + */ + async encryptMessage(theirDeviceIdentityKey, sessionId, payloadString) { + checkPayloadLength(payloadString); + let res; + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.getSession(theirDeviceIdentityKey, sessionId, txn, sessionInfo => { + const sessionDesc = sessionInfo.session.describe(); + _logger.logger.log("encryptMessage: Olm Session ID " + sessionId + " to " + theirDeviceIdentityKey + ": " + sessionDesc); + res = sessionInfo.session.encrypt(payloadString); + this.saveSession(theirDeviceIdentityKey, sessionInfo, txn); + }); + }, _logger.logger.getChild("[encryptMessage]")); + return res; + } + + /** + * Decrypt an incoming message using an existing session + * + * @param theirDeviceIdentityKey - Curve25519 identity key for the + * remote device + * @param sessionId - the id of the active session + * @param messageType - messageType field from the received message + * @param ciphertext - base64-encoded body from the received message + * + * @returns decrypted payload. + */ + async decryptMessage(theirDeviceIdentityKey, sessionId, messageType, ciphertext) { + let payloadString; + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.getSession(theirDeviceIdentityKey, sessionId, txn, sessionInfo => { + const sessionDesc = sessionInfo.session.describe(); + _logger.logger.log("decryptMessage: Olm Session ID " + sessionId + " from " + theirDeviceIdentityKey + ": " + sessionDesc); + payloadString = sessionInfo.session.decrypt(messageType, ciphertext); + sessionInfo.lastReceivedMessageTs = Date.now(); + this.saveSession(theirDeviceIdentityKey, sessionInfo, txn); + }); + }, _logger.logger.getChild("[decryptMessage]")); + return payloadString; + } + + /** + * Determine if an incoming messages is a prekey message matching an existing session + * + * @param theirDeviceIdentityKey - Curve25519 identity key for the + * remote device + * @param sessionId - the id of the active session + * @param messageType - messageType field from the received message + * @param ciphertext - base64-encoded body from the received message + * + * @returns true if the received message is a prekey message which matches + * the given session. + */ + async matchesSession(theirDeviceIdentityKey, sessionId, messageType, ciphertext) { + if (messageType !== 0) { + return false; + } + let matches; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + this.getSession(theirDeviceIdentityKey, sessionId, txn, sessionInfo => { + matches = sessionInfo.session.matches_inbound(ciphertext); + }); + }, _logger.logger.getChild("[matchesSession]")); + return matches; + } + async recordSessionProblem(deviceKey, type, fixed) { + _logger.logger.info(`Recording problem on olm session with ${deviceKey} of type ${type}. Recreating: ${fixed}`); + await this.cryptoStore.storeEndToEndSessionProblem(deviceKey, type, fixed); + } + sessionMayHaveProblems(deviceKey, timestamp) { + return this.cryptoStore.getEndToEndSessionProblem(deviceKey, timestamp); + } + filterOutNotifiedErrorDevices(devices) { + return this.cryptoStore.filterOutNotifiedErrorDevices(devices); + } + + // Outbound group session + // ====================== + + /** + * store an OutboundGroupSession in outboundGroupSessionStore + * + * @internal + */ + saveOutboundGroupSession(session) { + this.outboundGroupSessionStore[session.session_id()] = session.pickle(this.pickleKey); + } + + /** + * extract an OutboundGroupSession from outboundGroupSessionStore and call the + * given function + * + * @returns result of func + * @internal + */ + getOutboundGroupSession(sessionId, func) { + const pickled = this.outboundGroupSessionStore[sessionId]; + if (pickled === undefined) { + throw new Error("Unknown outbound group session " + sessionId); + } + const session = new global.Olm.OutboundGroupSession(); + try { + session.unpickle(this.pickleKey, pickled); + return func(session); + } finally { + session.free(); + } + } + + /** + * Generate a new outbound group session + * + * @returns sessionId for the outbound session. + */ + createOutboundGroupSession() { + const session = new global.Olm.OutboundGroupSession(); + try { + session.create(); + this.saveOutboundGroupSession(session); + return session.session_id(); + } finally { + session.free(); + } + } + + /** + * Encrypt an outgoing message with an outbound group session + * + * @param sessionId - the id of the outboundgroupsession + * @param payloadString - payload to be encrypted and sent + * + * @returns ciphertext + */ + encryptGroupMessage(sessionId, payloadString) { + _logger.logger.log(`encrypting msg with megolm session ${sessionId}`); + checkPayloadLength(payloadString); + return this.getOutboundGroupSession(sessionId, session => { + const res = session.encrypt(payloadString); + this.saveOutboundGroupSession(session); + return res; + }); + } + + /** + * Get the session keys for an outbound group session + * + * @param sessionId - the id of the outbound group session + * + * @returns current chain index, and + * base64-encoded secret key. + */ + getOutboundGroupSessionKey(sessionId) { + return this.getOutboundGroupSession(sessionId, function (session) { + return { + chain_index: session.message_index(), + key: session.session_key() + }; + }); + } + + // Inbound group session + // ===================== + + /** + * Unpickle a session from a sessionData object and invoke the given function. + * The session is valid only until func returns. + * + * @param sessionData - Object describing the session. + * @param func - Invoked with the unpickled session + * @returns result of func + */ + unpickleInboundGroupSession(sessionData, func) { + const session = new global.Olm.InboundGroupSession(); + try { + session.unpickle(this.pickleKey, sessionData.session); + return func(session); + } finally { + session.free(); + } + } + + /** + * extract an InboundGroupSession from the crypto store and call the given function + * + * @param roomId - The room ID to extract the session for, or null to fetch + * sessions for any room. + * @param txn - Opaque transaction object from cryptoStore.doTxn() + * @param func - function to call. + * + * @internal + */ + getInboundGroupSession(roomId, senderKey, sessionId, txn, func) { + this.cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, (sessionData, withheld) => { + if (sessionData === null) { + func(null, null, withheld); + return; + } + + // if we were given a room ID, check that the it matches the original one for the session. This stops + // the HS pretending a message was targeting a different room. + if (roomId !== null && roomId !== sessionData.room_id) { + throw new Error("Mismatched room_id for inbound group session (expected " + sessionData.room_id + ", was " + roomId + ")"); + } + this.unpickleInboundGroupSession(sessionData, session => { + func(session, sessionData, withheld); + }); + }); + } + + /** + * Add an inbound group session to the session store + * + * @param roomId - room in which this session will be used + * @param senderKey - base64-encoded curve25519 key of the sender + * @param forwardingCurve25519KeyChain - Devices involved in forwarding + * this session to us. + * @param sessionId - session identifier + * @param sessionKey - base64-encoded secret key + * @param keysClaimed - Other keys the sender claims. + * @param exportFormat - true if the megolm keys are in export format + * (ie, they lack an ed25519 signature) + * @param extraSessionData - any other data to be include with the session + */ + async addInboundGroupSession(roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat, extraSessionData = {}) { + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SHARED_HISTORY_INBOUND_GROUP_SESSIONS], txn => { + /* if we already have this session, consider updating it */ + this.getInboundGroupSession(roomId, senderKey, sessionId, txn, (existingSession, existingSessionData) => { + // new session. + const session = new global.Olm.InboundGroupSession(); + try { + if (exportFormat) { + session.import_session(sessionKey); + } else { + session.create(sessionKey); + } + if (sessionId != session.session_id()) { + throw new Error("Mismatched group session ID from senderKey: " + senderKey); + } + if (existingSession) { + _logger.logger.log(`Update for megolm session ${senderKey}|${sessionId}`); + if (existingSession.first_known_index() <= session.first_known_index()) { + if (!existingSessionData.untrusted || extraSessionData.untrusted) { + // existing session has less-than-or-equal index + // (i.e. can decrypt at least as much), and the + // new session's trust does not win over the old + // session's trust, so keep it + _logger.logger.log(`Keeping existing megolm session ${senderKey}|${sessionId}`); + return; + } + if (existingSession.first_known_index() < session.first_known_index()) { + // We want to upgrade the existing session's trust, + // but we can't just use the new session because we'll + // lose the lower index. Check that the sessions connect + // properly, and then manually set the existing session + // as trusted. + if (existingSession.export_session(session.first_known_index()) === session.export_session(session.first_known_index())) { + _logger.logger.info("Upgrading trust of existing megolm session " + `${senderKey}|${sessionId} based on newly-received trusted session`); + existingSessionData.untrusted = false; + this.cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, existingSessionData, txn); + } else { + _logger.logger.warn(`Newly-received megolm session ${senderKey}|$sessionId}` + " does not match existing session! Keeping existing session"); + } + return; + } + // If the sessions have the same index, go ahead and store the new trusted one. + } + } + _logger.logger.debug(`Storing megolm session ${senderKey}|${sessionId} with first index ` + session.first_known_index()); + const sessionData = Object.assign({}, extraSessionData, { + room_id: roomId, + session: session.pickle(this.pickleKey), + keysClaimed: keysClaimed, + forwardingCurve25519KeyChain: forwardingCurve25519KeyChain + }); + this.cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn); + if (!existingSession && extraSessionData.sharedHistory) { + this.cryptoStore.addSharedHistoryInboundGroupSession(roomId, senderKey, sessionId, txn); + } + } finally { + session.free(); + } + }); + }, _logger.logger.getChild("[addInboundGroupSession]")); + } + + /** + * Record in the data store why an inbound group session was withheld. + * + * @param roomId - room that the session belongs to + * @param senderKey - base64-encoded curve25519 key of the sender + * @param sessionId - session identifier + * @param code - reason code + * @param reason - human-readable version of `code` + */ + async addInboundGroupSessionWithheld(roomId, senderKey, sessionId, code, reason) { + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { + this.cryptoStore.storeEndToEndInboundGroupSessionWithheld(senderKey, sessionId, { + room_id: roomId, + code: code, + reason: reason + }, txn); + }); + } + + /** + * Decrypt a received message with an inbound group session + * + * @param roomId - room in which the message was received + * @param senderKey - base64-encoded curve25519 key of the sender + * @param sessionId - session identifier + * @param body - base64-encoded body of the encrypted message + * @param eventId - ID of the event being decrypted + * @param timestamp - timestamp of the event being decrypted + * + * @returns null if the sessionId is unknown + */ + async decryptGroupMessage(roomId, senderKey, sessionId, body, eventId, timestamp) { + let result = null; + // when the localstorage crypto store is used as an indexeddb backend, + // exceptions thrown from within the inner function are not passed through + // to the top level, so we store exceptions in a variable and raise them at + // the end + let error; + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { + this.getInboundGroupSession(roomId, senderKey, sessionId, txn, (session, sessionData, withheld) => { + if (session === null || sessionData === null) { + if (withheld) { + error = new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.MEGOLM_UNKNOWN_INBOUND_SESSION_ID, calculateWithheldMessage(withheld), { + session: senderKey + "|" + sessionId + }); + } + result = null; + return; + } + let res; + try { + res = session.decrypt(body); + } catch (e) { + if ((e === null || e === void 0 ? void 0 : e.message) === "OLM.UNKNOWN_MESSAGE_INDEX" && withheld) { + error = new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.MEGOLM_UNKNOWN_INBOUND_SESSION_ID, calculateWithheldMessage(withheld), { + session: senderKey + "|" + sessionId + }); + } else { + error = e; + } + return; + } + let plaintext = res.plaintext; + if (plaintext === undefined) { + // @ts-ignore - Compatibility for older olm versions. + plaintext = res; + } else { + // Check if we have seen this message index before to detect replay attacks. + // If the event ID and timestamp are specified, and the match the event ID + // and timestamp from the last time we used this message index, then we + // don't consider it a replay attack. + const messageIndexKey = senderKey + "|" + sessionId + "|" + res.message_index; + if (messageIndexKey in this.inboundGroupSessionMessageIndexes) { + const msgInfo = this.inboundGroupSessionMessageIndexes[messageIndexKey]; + if (msgInfo.id !== eventId || msgInfo.timestamp !== timestamp) { + error = new Error("Duplicate message index, possible replay attack: " + messageIndexKey); + return; + } + } + this.inboundGroupSessionMessageIndexes[messageIndexKey] = { + id: eventId, + timestamp: timestamp + }; + } + sessionData.session = session.pickle(this.pickleKey); + this.cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn); + result = { + result: plaintext, + keysClaimed: sessionData.keysClaimed || {}, + senderKey: senderKey, + forwardingCurve25519KeyChain: sessionData.forwardingCurve25519KeyChain || [], + untrusted: !!sessionData.untrusted + }; + }); + }, _logger.logger.getChild("[decryptGroupMessage]")); + if (error) { + throw error; + } + return result; + } + + /** + * Determine if we have the keys for a given megolm session + * + * @param roomId - room in which the message was received + * @param senderKey - base64-encoded curve25519 key of the sender + * @param sessionId - session identifier + * + * @returns true if we have the keys to this session + */ + async hasInboundSessionKeys(roomId, senderKey, sessionId) { + let result; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { + this.cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, sessionData => { + if (sessionData === null) { + result = false; + return; + } + if (roomId !== sessionData.room_id) { + _logger.logger.warn(`requested keys for inbound group session ${senderKey}|` + `${sessionId}, with incorrect room_id ` + `(expected ${sessionData.room_id}, ` + `was ${roomId})`); + result = false; + } else { + result = true; + } + }); + }, _logger.logger.getChild("[hasInboundSessionKeys]")); + return result; + } + + /** + * Extract the keys to a given megolm session, for sharing + * + * @param roomId - room in which the message was received + * @param senderKey - base64-encoded curve25519 key of the sender + * @param sessionId - session identifier + * @param chainIndex - The chain index at which to export the session. + * If omitted, export at the first index we know about. + * + * @returns + * details of the session key. The key is a base64-encoded megolm key in + * export format. + * + * @throws Error If the given chain index could not be obtained from the known + * index (ie. the given chain index is before the first we have). + */ + async getInboundGroupSessionKey(roomId, senderKey, sessionId, chainIndex) { + let result = null; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { + this.getInboundGroupSession(roomId, senderKey, sessionId, txn, (session, sessionData) => { + if (session === null || sessionData === null) { + result = null; + return; + } + if (chainIndex === undefined) { + chainIndex = session.first_known_index(); + } + const exportedSession = session.export_session(chainIndex); + const claimedKeys = sessionData.keysClaimed || {}; + const senderEd25519Key = claimedKeys.ed25519 || null; + const forwardingKeyChain = sessionData.forwardingCurve25519KeyChain || []; + // older forwarded keys didn't set the "untrusted" + // property, but can be identified by having a + // non-empty forwarding key chain. These keys should + // be marked as untrusted since we don't know that they + // can be trusted + const untrusted = "untrusted" in sessionData ? sessionData.untrusted : forwardingKeyChain.length > 0; + result = { + chain_index: chainIndex, + key: exportedSession, + forwarding_curve25519_key_chain: forwardingKeyChain, + sender_claimed_ed25519_key: senderEd25519Key, + shared_history: sessionData.sharedHistory || false, + untrusted: untrusted + }; + }); + }, _logger.logger.getChild("[getInboundGroupSessionKey]")); + return result; + } + + /** + * Export an inbound group session + * + * @param senderKey - base64-encoded curve25519 key of the sender + * @param sessionId - session identifier + * @param sessionData - The session object from the store + * @returns exported session data + */ + exportInboundGroupSession(senderKey, sessionId, sessionData) { + return this.unpickleInboundGroupSession(sessionData, session => { + const messageIndex = session.first_known_index(); + return { + "sender_key": senderKey, + "sender_claimed_keys": sessionData.keysClaimed, + "room_id": sessionData.room_id, + "session_id": sessionId, + "session_key": session.export_session(messageIndex), + "forwarding_curve25519_key_chain": sessionData.forwardingCurve25519KeyChain || [], + "first_known_index": session.first_known_index(), + "org.matrix.msc3061.shared_history": sessionData.sharedHistory || false + }; + }); + } + async getSharedHistoryInboundGroupSessions(roomId) { + let result; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SHARED_HISTORY_INBOUND_GROUP_SESSIONS], txn => { + result = this.cryptoStore.getSharedHistoryInboundGroupSessions(roomId, txn); + }, _logger.logger.getChild("[getSharedHistoryInboundGroupSessionsForRoom]")); + return result; + } + + // Utilities + // ========= + + /** + * Verify an ed25519 signature. + * + * @param key - ed25519 key + * @param message - message which was signed + * @param signature - base64-encoded signature to be checked + * + * @throws Error if there is a problem with the verification. If the key was + * too small then the message will be "OLM.INVALID_BASE64". If the signature + * was invalid then the message will be "OLM.BAD_MESSAGE_MAC". + */ + verifySignature(key, message, signature) { + this.getUtility(function (util) { + util.ed25519_verify(key, message, signature); + }); + } +} +exports.OlmDevice = OlmDevice; +const WITHHELD_MESSAGES = exports.WITHHELD_MESSAGES = { "m.unverified": "The sender has disabled encrypting to unverified devices.", "m.blacklisted": "The sender has blocked you.", "m.unauthorised": "You are not authorised to read the message.", "m.no_olm": "Unable to establish a secure channel." }; + /** * Calculate the message to use for the exception when a session key is withheld. * - * @param {object} withheld An object that describes why the key was withheld. + * @param withheld - An object that describes why the key was withheld. * - * @return {string} the message + * @returns the message * - * @private + * @internal */ - -exports.WITHHELD_MESSAGES = WITHHELD_MESSAGES; - -function _calculateWithheldMessage(withheld) { +function calculateWithheldMessage(withheld) { if (withheld.code && withheld.code in WITHHELD_MESSAGES) { return WITHHELD_MESSAGES[withheld.code]; } else if (withheld.reason) { @@ -35538,251 +144211,29 @@ function _calculateWithheldMessage(withheld) { return "decryption key withheld"; } } -/** - * Decrypt a received message with an inbound group session - * - * @param {string} roomId room in which the message was received - * @param {string} senderKey base64-encoded curve25519 key of the sender - * @param {string} sessionId session identifier - * @param {string} body base64-encoded body of the encrypted message - * @param {string} eventId ID of the event being decrypted - * @param {Number} timestamp timestamp of the event being decrypted - * - * @return {null} the sessionId is unknown - * - * @return {Promise<{result: string, senderKey: string, - * forwardingCurve25519KeyChain: Array, - * keysClaimed: Object}>} - */ - - -OlmDevice.prototype.decryptGroupMessage = async function (roomId, senderKey, sessionId, body, eventId, timestamp) { - let result; // when the localstorage crypto store is used as an indexeddb backend, - // exceptions thrown from within the inner function are not passed through - // to the top level, so we store exceptions in a variable and raise them at - // the end - - let error; - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { - this._getInboundGroupSession(roomId, senderKey, sessionId, txn, (session, sessionData, withheld) => { - if (session === null) { - if (withheld) { - error = new algorithms.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID", _calculateWithheldMessage(withheld), { - session: senderKey + '|' + sessionId - }); - } - - result = null; - return; - } - - let res; - - try { - res = session.decrypt(body); - } catch (e) { - if (e && e.message === 'OLM.UNKNOWN_MESSAGE_INDEX' && withheld) { - error = new algorithms.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID", _calculateWithheldMessage(withheld), { - session: senderKey + '|' + sessionId - }); - } else { - error = e; - } - - return; - } - - let plaintext = res.plaintext; - - if (plaintext === undefined) { - // Compatibility for older olm versions. - plaintext = res; - } else { - // Check if we have seen this message index before to detect replay attacks. - // If the event ID and timestamp are specified, and the match the event ID - // and timestamp from the last time we used this message index, then we - // don't consider it a replay attack. - const messageIndexKey = senderKey + "|" + sessionId + "|" + res.message_index; - - if (messageIndexKey in this._inboundGroupSessionMessageIndexes) { - const msgInfo = this._inboundGroupSessionMessageIndexes[messageIndexKey]; - - if (msgInfo.id !== eventId || msgInfo.timestamp !== timestamp) { - error = new Error("Duplicate message index, possible replay attack: " + messageIndexKey); - return; - } - } - - this._inboundGroupSessionMessageIndexes[messageIndexKey] = { - id: eventId, - timestamp: timestamp - }; - } - - sessionData.session = session.pickle(this._pickleKey); - - this._cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn); - - result = { - result: plaintext, - keysClaimed: sessionData.keysClaimed || {}, - senderKey: senderKey, - forwardingCurve25519KeyChain: sessionData.forwardingCurve25519KeyChain || [], - untrusted: sessionData.untrusted - }; - }); - }); - - if (error) { - throw error; - } - - return result; -}; -/** - * Determine if we have the keys for a given megolm session - * - * @param {string} roomId room in which the message was received - * @param {string} senderKey base64-encoded curve25519 key of the sender - * @param {string} sessionId session identifier - * - * @returns {Promise} true if we have the keys to this session - */ - - -OlmDevice.prototype.hasInboundSessionKeys = async function (roomId, senderKey, sessionId) { - let result; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { - this._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, sessionData => { - if (sessionData === null) { - result = false; - return; - } - - if (roomId !== sessionData.room_id) { - _logger.logger.warn(`requested keys for inbound group session ${senderKey}|` + `${sessionId}, with incorrect room_id ` + `(expected ${sessionData.room_id}, ` + `was ${roomId})`); - - result = false; - } else { - result = true; - } - }); - }); - return result; -}; -/** - * Extract the keys to a given megolm session, for sharing - * - * @param {string} roomId room in which the message was received - * @param {string} senderKey base64-encoded curve25519 key of the sender - * @param {string} sessionId session identifier - * @param {integer} chainIndex The chain index at which to export the session. - * If omitted, export at the first index we know about. - * - * @returns {Promise<{chain_index: number, key: string, - * forwarding_curve25519_key_chain: Array, - * sender_claimed_ed25519_key: string - * }>} - * details of the session key. The key is a base64-encoded megolm key in - * export format. - * - * @throws Error If the given chain index could not be obtained from the known - * index (ie. the given chain index is before the first we have). - */ - - -OlmDevice.prototype.getInboundGroupSessionKey = async function (roomId, senderKey, sessionId, chainIndex) { - let result; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { - this._getInboundGroupSession(roomId, senderKey, sessionId, txn, (session, sessionData) => { - if (session === null) { - result = null; - return; - } - - if (chainIndex === undefined) { - chainIndex = session.first_known_index(); - } - - const exportedSession = session.export_session(chainIndex); - const claimedKeys = sessionData.keysClaimed || {}; - const senderEd25519Key = claimedKeys.ed25519 || null; - result = { - "chain_index": chainIndex, - "key": exportedSession, - "forwarding_curve25519_key_chain": sessionData.forwardingCurve25519KeyChain || [], - "sender_claimed_ed25519_key": senderEd25519Key - }; - }); - }); - return result; -}; -/** - * Export an inbound group session - * - * @param {string} senderKey base64-encoded curve25519 key of the sender - * @param {string} sessionId session identifier - * @param {string} sessionData The session object from the store - * @return {module:crypto/OlmDevice.MegolmSessionData} exported session data - */ - - -OlmDevice.prototype.exportInboundGroupSession = function (senderKey, sessionId, sessionData) { - return this._unpickleInboundGroupSession(sessionData, session => { - const messageIndex = session.first_known_index(); - return { - "sender_key": senderKey, - "sender_claimed_keys": sessionData.keysClaimed, - "room_id": sessionData.room_id, - "session_id": sessionId, - "session_key": session.export_session(messageIndex), - "forwarding_curve25519_key_chain": session.forwardingCurve25519KeyChain || [], - "first_known_index": session.first_known_index() - }; - }); -}; // Utilities -// ========= - -/** - * Verify an ed25519 signature. - * - * @param {string} key ed25519 key - * @param {string} message message which was signed - * @param {string} signature base64-encoded signature to be checked - * - * @raises {Error} if there is a problem with the verification. If the key was - * too small then the message will be "OLM.INVALID_BASE64". If the signature - * was invalid then the message will be "OLM.BAD_MESSAGE_MAC". - */ - - -OlmDevice.prototype.verifySignature = function (key, message, signature) { - this._getUtility(function (util) { - util.ed25519_verify(key, message, signature); - }); -}; +//# sourceMappingURL=OlmDevice.js.map /***/ }), /***/ 4724: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OutgoingRoomKeyRequestManager = exports.ROOM_KEY_REQUEST_STATES = void 0; - -var _logger = __webpack_require__(3854); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -/* -Copyright 2017 Vector Creations Ltd +exports.RoomKeyRequestState = exports.OutgoingRoomKeyRequestManager = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _uuid = __nccwpck_require__(5840); +var _logger = __nccwpck_require__(3854); +var _event = __nccwpck_require__(7487); +var _utils = __nccwpck_require__(2557); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -35796,21 +144247,22 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - /** * Internal module. Management of outgoing room key requests. * * See https://docs.google.com/document/d/1m4gQkcnJkxNuBmb5NoFCIadIY-DyqqNAS3lloE73BlQ * for draft documentation on what we're supposed to be implementing here. - * - * @module */ + // delay between deciding we want some keys, and sending out the request, to // allow for (a) it turning up anyway, (b) grouping requests together const SEND_KEY_REQUESTS_DELAY_MS = 500; -/** possible states for a room key request + +/** + * possible states for a room key request * * The state machine looks like: + * ``` * * | (cancellation sent) * | .-------------------------------------------------. @@ -35833,68 +144285,44 @@ const SEND_KEY_REQUESTS_DELAY_MS = 500; * | (cancellation sent) | * V | * (deleted) <---------------------------+ - * - * @enum {number} + * ``` */ - -const ROOM_KEY_REQUEST_STATES = { - /** request not yet sent */ - UNSENT: 0, - - /** request sent, awaiting reply */ - SENT: 1, - - /** reply received, cancellation not yet sent */ - CANCELLATION_PENDING: 2, - - /** - * Cancellation not yet sent and will transition to UNSENT instead of - * being deleted once the cancellation has been sent. - */ - CANCELLATION_PENDING_AND_WILL_RESEND: 3 -}; -exports.ROOM_KEY_REQUEST_STATES = ROOM_KEY_REQUEST_STATES; - +let RoomKeyRequestState = exports.RoomKeyRequestState = /*#__PURE__*/function (RoomKeyRequestState) { + RoomKeyRequestState[RoomKeyRequestState["Unsent"] = 0] = "Unsent"; + RoomKeyRequestState[RoomKeyRequestState["Sent"] = 1] = "Sent"; + RoomKeyRequestState[RoomKeyRequestState["CancellationPending"] = 2] = "CancellationPending"; + RoomKeyRequestState[RoomKeyRequestState["CancellationPendingAndWillResend"] = 3] = "CancellationPendingAndWillResend"; + return RoomKeyRequestState; +}({}); class OutgoingRoomKeyRequestManager { constructor(baseApis, deviceId, cryptoStore) { - this._baseApis = baseApis; - this._deviceId = deviceId; - this._cryptoStore = cryptoStore; // handle for the delayed call to _sendOutgoingRoomKeyRequests. Non-null + // handle for the delayed call to sendOutgoingRoomKeyRequests. Non-null // if the callback has been set, or if it is still running. - - this._sendOutgoingRoomKeyRequestsTimer = null; // sanity check to ensure that we don't end up with two concurrent runs - // of _sendOutgoingRoomKeyRequests - - this._sendOutgoingRoomKeyRequestsRunning = false; - this._clientRunning = false; + // sanity check to ensure that we don't end up with two concurrent runs + // of sendOutgoingRoomKeyRequests + (0, _defineProperty2.default)(this, "sendOutgoingRoomKeyRequestsRunning", false); + (0, _defineProperty2.default)(this, "clientRunning", true); + this.baseApis = baseApis; + this.deviceId = deviceId; + this.cryptoStore = cryptoStore; } - /** - * Called when the client is started. Sets background processes running. - */ - - start() { - this._clientRunning = true; - } /** * Called when the client is stopped. Stops any running background processes. */ - - stop() { - _logger.logger.log('stopping OutgoingRoomKeyRequestManager'); // stop the timer on the next run - - - this._clientRunning = false; + _logger.logger.log("stopping OutgoingRoomKeyRequestManager"); + // stop the timer on the next run + this.clientRunning = false; } + /** * Send any requests that have been queued */ - - sendQueuedRequests() { - this._startTimer(); + this.startTimer(); } + /** * Queue up a room key request, if we haven't already queued or sent one. * @@ -35903,69 +144331,63 @@ class OutgoingRoomKeyRequestManager { * Otherwise, a request is added to the pending list, and a job is started * in the background to send it. * - * @param {module:crypto~RoomKeyRequestBody} requestBody - * @param {Array<{userId: string, deviceId: string}>} recipients - * @param {boolean} resend whether to resend the key request if there is + * @param resend - whether to resend the key request if there is * already one * - * @returns {Promise} resolves when the request has been added to the + * @returns resolves when the request has been added to the * pending list (or we have established that a similar request already * exists) */ - - async queueRoomKeyRequest(requestBody, recipients, resend = false) { - const req = await this._cryptoStore.getOutgoingRoomKeyRequest(requestBody); - + const req = await this.cryptoStore.getOutgoingRoomKeyRequest(requestBody); if (!req) { - await this._cryptoStore.getOrAddOutgoingRoomKeyRequest({ + await this.cryptoStore.getOrAddOutgoingRoomKeyRequest({ requestBody: requestBody, recipients: recipients, - requestId: this._baseApis.makeTxnId(), - state: ROOM_KEY_REQUEST_STATES.UNSENT + requestId: this.baseApis.makeTxnId(), + state: RoomKeyRequestState.Unsent }); } else { switch (req.state) { - case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND: - case ROOM_KEY_REQUEST_STATES.UNSENT: + case RoomKeyRequestState.CancellationPendingAndWillResend: + case RoomKeyRequestState.Unsent: // nothing to do here, since we're going to send a request anyways return; - - case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING: + case RoomKeyRequestState.CancellationPending: { // existing request is about to be cancelled. If we want to // resend, then change the state so that it resends after // cancelling. Otherwise, just cancel the cancellation. - const state = resend ? ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND : ROOM_KEY_REQUEST_STATES.SENT; - await this._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING, { + const state = resend ? RoomKeyRequestState.CancellationPendingAndWillResend : RoomKeyRequestState.Sent; + await this.cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, RoomKeyRequestState.CancellationPending, { state, - cancellationTxnId: this._baseApis.makeTxnId() + cancellationTxnId: this.baseApis.makeTxnId() }); break; } - - case ROOM_KEY_REQUEST_STATES.SENT: + case RoomKeyRequestState.Sent: { // a request has already been sent. If we don't want to // resend, then do nothing. If we do want to, then cancel the // existing request and send a new one. if (resend) { - const state = ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND; - const updatedReq = await this._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.SENT, { + const state = RoomKeyRequestState.CancellationPendingAndWillResend; + const updatedReq = await this.cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, RoomKeyRequestState.Sent, { state, - cancellationTxnId: this._baseApis.makeTxnId(), + cancellationTxnId: this.baseApis.makeTxnId(), // need to use a new transaction ID so that // the request gets sent - requestTxnId: this._baseApis.makeTxnId() + requestTxnId: this.baseApis.makeTxnId() }); - if (!updatedReq) { // updateOutgoingRoomKeyRequest couldn't find the request // in state ROOM_KEY_REQUEST_STATES.SENT, so we must have // raced with another tab to mark the request cancelled. // Try again, to make sure the request is resent. - return await this.queueRoomKeyRequest(requestBody, recipients, resend); - } // We don't want to wait for the timer, so we send it + return this.queueRoomKeyRequest(requestBody, recipients, resend); + } + + // We don't want to wait for the timer, so we send it // immediately. (We might actually end up racing with the timer, // but that's ok: even if we make the request twice, we'll do it // with the same transaction_id, so only one message will get @@ -35974,66 +144396,58 @@ class OutgoingRoomKeyRequestManager { // (We also don't want to wait for the response from the server // here, as it will slow down processing of received keys if we // do.) - - try { - await this._sendOutgoingRoomKeyRequestCancellation(updatedReq, true); + await this.sendOutgoingRoomKeyRequestCancellation(updatedReq, true); } catch (e) { _logger.logger.error("Error sending room key request cancellation;" + " will retry later.", e); - } // The request has transitioned from + } + // The request has transitioned from // CANCELLATION_PENDING_AND_WILL_RESEND to UNSENT. We // still need to resend the request which is now UNSENT, so // start the timer if it isn't already started. - } - break; } - default: - throw new Error('unhandled state: ' + req.state); + throw new Error("unhandled state: " + req.state); } } } + /** * Cancel room key requests, if any match the given requestBody * - * @param {module:crypto~RoomKeyRequestBody} requestBody * - * @returns {Promise} resolves when the request has been updated in our + * @returns resolves when the request has been updated in our * pending list. */ - - cancelRoomKeyRequest(requestBody) { - return this._cryptoStore.getOutgoingRoomKeyRequest(requestBody).then(req => { + return this.cryptoStore.getOutgoingRoomKeyRequest(requestBody).then(req => { if (!req) { // no request was made for this key return; } - switch (req.state) { - case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING: - case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND: + case RoomKeyRequestState.CancellationPending: + case RoomKeyRequestState.CancellationPendingAndWillResend: // nothing to do here return; - - case ROOM_KEY_REQUEST_STATES.UNSENT: + case RoomKeyRequestState.Unsent: // just delete it + // FIXME: ghahah we may have attempted to send it, and // not yet got a successful response. So the server // may have seen it, so we still need to send a cancellation // in that case :/ - _logger.logger.log('deleting unnecessary room key request for ' + stringifyRequestBody(requestBody)); - return this._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT); - - case ROOM_KEY_REQUEST_STATES.SENT: + _logger.logger.log("deleting unnecessary room key request for " + stringifyRequestBody(requestBody)); + return this.cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, RoomKeyRequestState.Unsent); + case RoomKeyRequestState.Sent: { // send a cancellation. - return this._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.SENT, { - state: ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING, - cancellationTxnId: this._baseApis.makeTxnId() + return this.cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, RoomKeyRequestState.Sent, { + state: RoomKeyRequestState.CancellationPending, + cancellationTxnId: this.baseApis.makeTxnId() }).then(updatedReq => { if (!updatedReq) { // updateOutgoingRoomKeyRequest couldn't find the @@ -36042,10 +144456,11 @@ class OutgoingRoomKeyRequestManager { // the request cancelled. There is no point in // sending another cancellation since the other tab // will do it. - _logger.logger.log('Tried to cancel room key request for ' + stringifyRequestBody(requestBody) + ' but it was already cancelled in another tab'); - + _logger.logger.log("Tried to cancel room key request for " + stringifyRequestBody(requestBody) + " but it was already cancelled in another tab"); return; - } // We don't want to wait for the timer, so we send it + } + + // We don't want to wait for the timer, so we send it // immediately. (We might actually end up racing with the timer, // but that's ok: even if we make the request twice, we'll do it // with the same transaction_id, so only one message will get @@ -36054,205 +144469,177 @@ class OutgoingRoomKeyRequestManager { // (We also don't want to wait for the response from the server // here, as it will slow down processing of received keys if we // do.) - - - this._sendOutgoingRoomKeyRequestCancellation(updatedReq).catch(e => { + this.sendOutgoingRoomKeyRequestCancellation(updatedReq).catch(e => { _logger.logger.error("Error sending room key request cancellation;" + " will retry later.", e); - - this._startTimer(); + this.startTimer(); }); }); } - default: - throw new Error('unhandled state: ' + req.state); + throw new Error("unhandled state: " + req.state); } }); } + /** * Look for room key requests by target device and state * - * @param {string} userId Target user ID - * @param {string} deviceId Target device ID + * @param userId - Target user ID + * @param deviceId - Target device ID * - * @return {Promise} resolves to a list of all the - * {@link module:crypto/store/base~OutgoingRoomKeyRequest} + * @returns resolves to a list of all the {@link OutgoingRoomKeyRequest} */ - - getOutgoingSentRoomKeyRequest(userId, deviceId) { - return this._cryptoStore.getOutgoingRoomKeyRequestsByTarget(userId, deviceId, [ROOM_KEY_REQUEST_STATES.SENT]); + return this.cryptoStore.getOutgoingRoomKeyRequestsByTarget(userId, deviceId, [RoomKeyRequestState.Sent]); } + /** * Find anything in `sent` state, and kick it around the loop again. * This is intended for situations where something substantial has changed, and we * don't really expect the other end to even care about the cancellation. * For example, after initialization or self-verification. - * @return {Promise} An array of `queueRoomKeyRequest` outputs. + * @returns An array of `queueRoomKeyRequest` outputs. */ - - async cancelAndResendAllOutgoingRequests() { - const outgoings = await this._cryptoStore.getAllOutgoingRoomKeyRequestsByState(ROOM_KEY_REQUEST_STATES.SENT); + const outgoings = await this.cryptoStore.getAllOutgoingRoomKeyRequestsByState(RoomKeyRequestState.Sent); return Promise.all(outgoings.map(({ requestBody, recipients }) => this.queueRoomKeyRequest(requestBody, recipients, true))); - } // start the background timer to send queued requests, if the timer isn't + } + + // start the background timer to send queued requests, if the timer isn't // already running - - - _startTimer() { - if (this._sendOutgoingRoomKeyRequestsTimer) { + startTimer() { + if (this.sendOutgoingRoomKeyRequestsTimer) { return; } - const startSendingOutgoingRoomKeyRequests = () => { - if (this._sendOutgoingRoomKeyRequestsRunning) { + if (this.sendOutgoingRoomKeyRequestsRunning) { throw new Error("RoomKeyRequestSend already in progress!"); } - - this._sendOutgoingRoomKeyRequestsRunning = true; - - this._sendOutgoingRoomKeyRequests().finally(() => { - this._sendOutgoingRoomKeyRequestsRunning = false; + this.sendOutgoingRoomKeyRequestsRunning = true; + this.sendOutgoingRoomKeyRequests().finally(() => { + this.sendOutgoingRoomKeyRequestsRunning = false; }).catch(e => { // this should only happen if there is an indexeddb error, // in which case we're a bit stuffed anyway. _logger.logger.warn(`error in OutgoingRoomKeyRequestManager: ${e}`); }); }; + this.sendOutgoingRoomKeyRequestsTimer = setTimeout(startSendingOutgoingRoomKeyRequests, SEND_KEY_REQUESTS_DELAY_MS); + } - this._sendOutgoingRoomKeyRequestsTimer = global.setTimeout(startSendingOutgoingRoomKeyRequests, SEND_KEY_REQUESTS_DELAY_MS); - } // look for and send any queued requests. Runs itself recursively until + // look for and send any queued requests. Runs itself recursively until // there are no more requests, or there is an error (in which case, the // timer will be restarted before the promise resolves). - - - _sendOutgoingRoomKeyRequests() { - if (!this._clientRunning) { - this._sendOutgoingRoomKeyRequestsTimer = null; - return Promise.resolve(); + async sendOutgoingRoomKeyRequests() { + if (!this.clientRunning) { + this.sendOutgoingRoomKeyRequestsTimer = undefined; + return; } - - return this._cryptoStore.getOutgoingRoomKeyRequestByState([ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, ROOM_KEY_REQUEST_STATES.UNSENT]).then(req => { - if (!req) { - this._sendOutgoingRoomKeyRequestsTimer = null; - return; - } - - let prom; - + const req = await this.cryptoStore.getOutgoingRoomKeyRequestByState([RoomKeyRequestState.CancellationPending, RoomKeyRequestState.CancellationPendingAndWillResend, RoomKeyRequestState.Unsent]); + if (!req) { + this.sendOutgoingRoomKeyRequestsTimer = undefined; + return; + } + try { switch (req.state) { - case ROOM_KEY_REQUEST_STATES.UNSENT: - prom = this._sendOutgoingRoomKeyRequest(req); + case RoomKeyRequestState.Unsent: + await this.sendOutgoingRoomKeyRequest(req); break; - - case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING: - prom = this._sendOutgoingRoomKeyRequestCancellation(req); + case RoomKeyRequestState.CancellationPending: + await this.sendOutgoingRoomKeyRequestCancellation(req); break; - - case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND: - prom = this._sendOutgoingRoomKeyRequestCancellation(req, true); + case RoomKeyRequestState.CancellationPendingAndWillResend: + await this.sendOutgoingRoomKeyRequestCancellation(req, true); break; } - return prom.then(() => { - // go around the loop again - return this._sendOutgoingRoomKeyRequests(); - }).catch(e => { - _logger.logger.error("Error sending room key request; will retry later.", e); + // go around the loop again + return this.sendOutgoingRoomKeyRequests(); + } catch (e) { + _logger.logger.error("Error sending room key request; will retry later.", e); + this.sendOutgoingRoomKeyRequestsTimer = undefined; + } + } - this._sendOutgoingRoomKeyRequestsTimer = null; - }); - }); - } // given a RoomKeyRequest, send it and update the request record - - - _sendOutgoingRoomKeyRequest(req) { + // given a RoomKeyRequest, send it and update the request record + sendOutgoingRoomKeyRequest(req) { _logger.logger.log(`Requesting keys for ${stringifyRequestBody(req.requestBody)}` + ` from ${stringifyRecipientList(req.recipients)}` + `(id ${req.requestId})`); - const requestMessage = { action: "request", - requesting_device_id: this._deviceId, + requesting_device_id: this.deviceId, request_id: req.requestId, body: req.requestBody }; - return this._sendMessageToDevices(requestMessage, req.recipients, req.requestTxnId || req.requestId).then(() => { - return this._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT, { - state: ROOM_KEY_REQUEST_STATES.SENT + return this.sendMessageToDevices(requestMessage, req.recipients, req.requestTxnId || req.requestId).then(() => { + return this.cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, RoomKeyRequestState.Unsent, { + state: RoomKeyRequestState.Sent }); }); - } // Given a RoomKeyRequest, cancel it and delete the request record unless - // andResend is set, in which case transition to UNSENT. - - - _sendOutgoingRoomKeyRequestCancellation(req, andResend) { - _logger.logger.log(`Sending cancellation for key request for ` + `${stringifyRequestBody(req.requestBody)} to ` + `${stringifyRecipientList(req.recipients)} ` + `(cancellation id ${req.cancellationTxnId})`); - - const requestMessage = { - action: "request_cancellation", - requesting_device_id: this._deviceId, - request_id: req.requestId - }; - return this._sendMessageToDevices(requestMessage, req.recipients, req.cancellationTxnId).then(() => { - if (andResend) { - // We want to resend, so transition to UNSENT - return this._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, { - state: ROOM_KEY_REQUEST_STATES.UNSENT - }); - } - - return this._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING); - }); - } // send a RoomKeyRequest to a list of recipients - - - _sendMessageToDevices(message, recipients, txnId) { - const contentMap = {}; - - for (const recip of recipients) { - if (!contentMap[recip.userId]) { - contentMap[recip.userId] = {}; - } - - contentMap[recip.userId][recip.deviceId] = message; - } - - return this._baseApis.sendToDevice('m.room_key_request', contentMap, txnId); } + // Given a RoomKeyRequest, cancel it and delete the request record unless + // andResend is set, in which case transition to UNSENT. + sendOutgoingRoomKeyRequestCancellation(req, andResend = false) { + _logger.logger.log(`Sending cancellation for key request for ` + `${stringifyRequestBody(req.requestBody)} to ` + `${stringifyRecipientList(req.recipients)} ` + `(cancellation id ${req.cancellationTxnId})`); + const requestMessage = { + action: "request_cancellation", + requesting_device_id: this.deviceId, + request_id: req.requestId + }; + return this.sendMessageToDevices(requestMessage, req.recipients, req.cancellationTxnId).then(() => { + if (andResend) { + // We want to resend, so transition to UNSENT + return this.cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, RoomKeyRequestState.CancellationPendingAndWillResend, { + state: RoomKeyRequestState.Unsent + }); + } + return this.cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, RoomKeyRequestState.CancellationPending); + }); + } + + // send a RoomKeyRequest to a list of recipients + sendMessageToDevices(message, recipients, txnId) { + const contentMap = new _utils.MapWithDefault(() => new Map()); + for (const recip of recipients) { + const userDeviceMap = contentMap.getOrCreate(recip.userId); + userDeviceMap.set(recip.deviceId, _objectSpread(_objectSpread({}, message), {}, { + [_event.ToDeviceMessageId]: (0, _uuid.v4)() + })); + } + return this.baseApis.sendToDevice(_event.EventType.RoomKeyRequest, contentMap, txnId); + } } - exports.OutgoingRoomKeyRequestManager = OutgoingRoomKeyRequestManager; - function stringifyRequestBody(requestBody) { // we assume that the request is for megolm keys, which are identified by // room id and session id return requestBody.room_id + " / " + requestBody.session_id; } - function stringifyRecipientList(recipients) { - return '[' + utils.map(recipients, r => `${r.userId}:${r.deviceId}`).join(",") + ']'; + return `[${recipients.map(r => `${r.userId}:${r.deviceId}`).join(",")}]`; } +//# sourceMappingURL=OutgoingRoomKeyRequestManager.js.map /***/ }), /***/ 4472: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.RoomList = void 0; - -var _indexeddbCryptoStore = __webpack_require__(5651); - +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _indexeddbCryptoStore = __nccwpck_require__(5651); /* -Copyright 2018, 2019 New Vector Ltd +Copyright 2018 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -36268,78 +144655,75 @@ limitations under the License. */ /** - * @module crypto/RoomList - * * Manages the list of encrypted rooms */ +/* eslint-disable camelcase */ + +/* eslint-enable camelcase */ + /** - * @alias module:crypto/RoomList + * Information about the encryption settings of rooms. Loads this information + * from the supplied crypto store when `init()` is called, and saves it to the + * crypto store whenever it is updated via `setRoomEncryption()`. Can supply + * full information about a room's encryption via `getRoomEncryption()`, or just + * answer whether or not a room has encryption via `isRoomEncrypted`. */ class RoomList { constructor(cryptoStore) { - this._cryptoStore = cryptoStore; // Object of roomId -> room e2e info object (body of the m.room.encryption event) - - this._roomEncryption = {}; + // Object of roomId -> room e2e info object (body of the m.room.encryption event) + (0, _defineProperty2.default)(this, "roomEncryption", {}); + this.cryptoStore = cryptoStore; } - async init() { - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ROOMS], txn => { - this._cryptoStore.getEndToEndRooms(txn, result => { - this._roomEncryption = result; + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ROOMS], txn => { + this.cryptoStore.getEndToEndRooms(txn, result => { + this.roomEncryption = result; }); }); } - getRoomEncryption(roomId) { - return this._roomEncryption[roomId] || null; + return this.roomEncryption[roomId] || null; } - isRoomEncrypted(roomId) { return Boolean(this.getRoomEncryption(roomId)); } - async setRoomEncryption(roomId, roomInfo) { // important that this happens before calling into the store // as it prevents the Crypto::setRoomEncryption from calling // this twice for consecutive m.room.encryption events - this._roomEncryption[roomId] = roomInfo; - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ROOMS], txn => { - this._cryptoStore.storeEndToEndRoom(roomId, roomInfo, txn); + this.roomEncryption[roomId] = roomInfo; + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ROOMS], txn => { + this.cryptoStore.storeEndToEndRoom(roomId, roomInfo, txn); }); } - } - exports.RoomList = RoomList; +//# sourceMappingURL=RoomList.js.map /***/ }), -/***/ 5833: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 9847: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SecretStorage = exports.SECRET_STORAGE_ALGORITHM_V1_AES = void 0; - -var _events = __webpack_require__(8614); - -var _logger = __webpack_require__(3854); - -var olmlib = _interopRequireWildcard(__webpack_require__(7131)); - -var _randomstring = __webpack_require__(2495); - -var _aes = __webpack_require__(7502); - +exports.SecretSharing = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _uuid = __nccwpck_require__(5840); +var _utils = __nccwpck_require__(2557); +var _event = __nccwpck_require__(7487); +var _logger = __nccwpck_require__(3854); +var olmlib = _interopRequireWildcard(__nccwpck_require__(7131)); +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; } /* -Copyright 2019, 2020 The Matrix.org Foundation C.I.C. +Copyright 2019-2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -36353,464 +144737,109 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const SECRET_STORAGE_ALGORITHM_V1_AES = "m.secret_storage.v1.aes-hmac-sha2"; -exports.SECRET_STORAGE_ALGORITHM_V1_AES = SECRET_STORAGE_ALGORITHM_V1_AES; -const ZERO_STR = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; -/** - * Implements Secure Secret Storage and Sharing (MSC1946) - * @module crypto/SecretStorage - */ -class SecretStorage extends _events.EventEmitter { +class SecretSharing { constructor(baseApis, cryptoCallbacks) { - super(); - this._baseApis = baseApis; - this._cryptoCallbacks = cryptoCallbacks; - this._requests = {}; - this._incomingRequests = {}; + (0, _defineProperty2.default)(this, "requests", new Map()); + this.baseApis = baseApis; + this.cryptoCallbacks = cryptoCallbacks; } - async getDefaultKeyId() { - const defaultKey = await this._baseApis.getAccountDataFromServer('m.secret_storage.default_key'); - if (!defaultKey) return null; - return defaultKey.key; - } - - setDefaultKeyId(keyId) { - return new Promise(async (resolve, reject) => { - const listener = ev => { - if (ev.getType() === 'm.secret_storage.default_key' && ev.getContent().key === keyId) { - this._baseApis.removeListener('accountData', listener); - - resolve(); - } - }; - - this._baseApis.on('accountData', listener); - - try { - await this._baseApis.setAccountData('m.secret_storage.default_key', { - key: keyId - }); - } catch (e) { - this._baseApis.removeListener('accountData', listener); - - reject(e); - } - }); - } - /** - * Add a key for encrypting secrets. - * - * @param {string} algorithm the algorithm used by the key. - * @param {object} opts the options for the algorithm. The properties used - * depend on the algorithm given. - * @param {string} [keyId] the ID of the key. If not given, a random - * ID will be generated. - * - * @return {string} the ID of the key - */ - - - async addKey(algorithm, opts, keyId) { - const keyData = { - algorithm - }; - if (!opts) opts = {}; - - if (opts.name) { - keyData.name = opts.name; - } - - if (algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { - if (opts.passphrase) { - keyData.passphrase = opts.passphrase; - } - - if (opts.key) { - const { - iv, - mac - } = await SecretStorage._calculateKeyCheck(opts.key); - keyData.iv = iv; - keyData.mac = mac; - } - } else { - throw new Error(`Unknown key algorithm ${opts.algorithm}`); - } - - if (!keyId) { - do { - keyId = (0, _randomstring.randomString)(32); - } while (await this._baseApis.getAccountDataFromServer(`m.secret_storage.key.${keyId}`)); - } - - await this._baseApis.setAccountData(`m.secret_storage.key.${keyId}`, keyData); - return keyId; - } - /** - * Get the key information for a given ID. - * - * @param {string} [keyId = default key's ID] The ID of the key to check - * for. Defaults to the default key ID if not provided. - * @returns {Array?} If the key was found, the return value is an array of - * the form [keyId, keyInfo]. Otherwise, null is returned. - */ - - - async getKey(keyId) { - if (!keyId) { - keyId = await this.getDefaultKeyId(); - } - - if (!keyId) { - return null; - } - - const keyInfo = await this._baseApis.getAccountDataFromServer("m.secret_storage.key." + keyId); - return keyInfo ? [keyId, keyInfo] : null; - } - /** - * Check whether we have a key with a given ID. - * - * @param {string} [keyId = default key's ID] The ID of the key to check - * for. Defaults to the default key ID if not provided. - * @return {boolean} Whether we have the key. - */ - - - async hasKey(keyId) { - return !!(await this.getKey(keyId)); - } - /** - * Check whether a key matches what we expect based on the key info - * - * @param {Uint8Array} key the key to check - * @param {object} info the key info - * - * @return {boolean} whether or not the key matches - */ - - - async checkKey(key, info) { - if (info.algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { - if (info.mac) { - const { - mac - } = await SecretStorage._calculateKeyCheck(key, info.iv); - return info.mac.replace(/=+$/g, '') === mac.replace(/=+$/g, ''); - } else { - // if we have no information, we have to assume the key is right - return true; - } - } else { - throw new Error("Unknown algorithm"); - } - } - - static async _calculateKeyCheck(key, iv) { - return await (0, _aes.encryptAES)(ZERO_STR, key, "", iv); - } - /** - * Store an encrypted secret on the server - * - * @param {string} name The name of the secret - * @param {string} secret The secret contents. - * @param {Array} keys The IDs of the keys to use to encrypt the secret - * or null/undefined to use the default key. - */ - - - async store(name, secret, keys) { - const encrypted = {}; - - if (!keys) { - const defaultKeyId = await this.getDefaultKeyId(); - - if (!defaultKeyId) { - throw new Error("No keys specified and no default key present"); - } - - keys = [defaultKeyId]; - } - - if (keys.length === 0) { - throw new Error("Zero keys given to encrypt with!"); - } - - for (const keyId of keys) { - // get key information from key storage - const keyInfo = await this._baseApis.getAccountDataFromServer("m.secret_storage.key." + keyId); - - if (!keyInfo) { - throw new Error("Unknown key: " + keyId); - } // encrypt secret, based on the algorithm - - - if (keyInfo.algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { - const keys = { - [keyId]: keyInfo - }; - const [, encryption] = await this._getSecretStorageKey(keys, name); - encrypted[keyId] = await encryption.encrypt(secret); - } else { - _logger.logger.warn("unknown algorithm for secret storage key " + keyId + ": " + keyInfo.algorithm); // do nothing if we don't understand the encryption algorithm - - } - } // save encrypted secret - - - await this._baseApis.setAccountData(name, { - encrypted - }); - } - /** - * Temporary method to fix up existing accounts where secrets - * are incorrectly stored without the 'encrypted' level - * - * @param {string} name The name of the secret - * @param {object} secretInfo The account data object - * @returns {object} The fixed object or null if no fix was performed - */ - - - async _fixupStoredSecret(name, secretInfo) { - // We assume the secret was only stored passthrough for 1 - // key - this was all the broken code supported. - const keys = Object.keys(secretInfo); - - if (keys.length === 1 && keys[0] !== 'encrypted' && secretInfo[keys[0]].passthrough) { - const hasKey = await this.hasKey(keys[0]); - - if (hasKey) { - console.log("Fixing up passthrough secret: " + name); - await this.storePassthrough(name, keys[0]); - const newData = await this._baseApis.getAccountDataFromServer(name); - return newData; - } - } - - return null; - } - /** - * Get a secret from storage. - * - * @param {string} name the name of the secret - * - * @return {string} the contents of the secret - */ - - - async get(name) { - let secretInfo = await this._baseApis.getAccountDataFromServer(name); - - if (!secretInfo) { - return; - } - - if (!secretInfo.encrypted) { - // try to fix it up - secretInfo = await this._fixupStoredSecret(name, secretInfo); - - if (!secretInfo || !secretInfo.encrypted) { - throw new Error("Content is not encrypted!"); - } - } // get possible keys to decrypt - - - const keys = {}; - - for (const keyId of Object.keys(secretInfo.encrypted)) { - // get key information from key storage - const keyInfo = await this._baseApis.getAccountDataFromServer("m.secret_storage.key." + keyId); - const encInfo = secretInfo.encrypted[keyId]; // only use keys we understand the encryption algorithm of - - if (keyInfo.algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { - if (encInfo.iv && encInfo.ciphertext && encInfo.mac) { - keys[keyId] = keyInfo; - } - } - } - - if (Object.keys(keys).length === 0) { - throw new Error(`Could not decrypt ${name} because none of ` + `the keys it is encrypted with are for a supported algorithm`); - } - - let keyId; - let decryption; - - try { - // fetch private key from app - [keyId, decryption] = await this._getSecretStorageKey(keys, name); - const encInfo = secretInfo.encrypted[keyId]; // We don't actually need the decryption object if it's a passthrough - // since we just want to return the key itself. It must be base64 - // encoded, since this is how a key would normally be stored. - - if (encInfo.passthrough) return (0, olmlib.encodeBase64)(decryption.get_private_key()); - return await decryption.decrypt(encInfo); - } finally { - if (decryption && decryption.free) decryption.free(); - } - } - /** - * Check if a secret is stored on the server. - * - * @param {string} name the name of the secret - * @param {boolean} checkKey check if the secret is encrypted by a trusted key - * - * @return {object?} map of key name to key info the secret is encrypted - * with, or null if it is not present or not encrypted with a trusted - * key - */ - - - async isStored(name, checkKey) { - // check if secret exists - let secretInfo = await this._baseApis.getAccountDataFromServer(name); - if (!secretInfo) return null; - - if (!secretInfo.encrypted) { - // try to fix it up - secretInfo = await this._fixupStoredSecret(name, secretInfo); - - if (!secretInfo || !secretInfo.encrypted) { - return null; - } - } - - if (checkKey === undefined) checkKey = true; - const ret = {}; // filter secret encryption keys with supported algorithm - - for (const keyId of Object.keys(secretInfo.encrypted)) { - // get key information from key storage - const keyInfo = await this._baseApis.getAccountDataFromServer("m.secret_storage.key." + keyId); - if (!keyInfo) continue; - const encInfo = secretInfo.encrypted[keyId]; // only use keys we understand the encryption algorithm of - - if (keyInfo.algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { - if (encInfo.iv && encInfo.ciphertext && encInfo.mac) { - ret[keyId] = keyInfo; - } - } - } - - return Object.keys(ret).length ? ret : null; - } /** * Request a secret from another device * - * @param {string} name the name of the secret to request - * @param {string[]} devices the devices to request the secret from - * - * @return {string} the contents of the secret + * @param name - the name of the secret to request + * @param devices - the devices to request the secret from */ - - request(name, devices) { - const requestId = this._baseApis.makeTxnId(); - - const requestControl = this._requests[requestId] = { + const requestId = this.baseApis.makeTxnId(); + const deferred = (0, _utils.defer)(); + this.requests.set(requestId, { name, - devices - }; - const promise = new Promise((resolve, reject) => { - requestControl.resolve = resolve; - requestControl.reject = reject; + devices, + deferred }); - const cancel = reason => { // send cancellation event const cancelData = { action: "request_cancellation", - requesting_device_id: this._baseApis.deviceId, + requesting_device_id: this.baseApis.deviceId, request_id: requestId }; - const toDevice = {}; - + const toDevice = new Map(); for (const device of devices) { - toDevice[device] = cancelData; + toDevice.set(device, cancelData); } + this.baseApis.sendToDevice("m.secret.request", new Map([[this.baseApis.getUserId(), toDevice]])); - this._baseApis.sendToDevice("m.secret.request", { - [this._baseApis.getUserId()]: toDevice - }); // and reject the promise so that anyone waiting on it will be + // and reject the promise so that anyone waiting on it will be // notified + deferred.reject(new Error(reason || "Cancelled")); + }; - - requestControl.reject(new Error(reason || "Cancelled")); - }; // send request to devices - - + // send request to devices const requestData = { name, action: "request", - requesting_device_id: this._baseApis.deviceId, - request_id: requestId - }; - const toDevice = {}; - - for (const device of devices) { - toDevice[device] = requestData; - } - - _logger.logger.info(`Request secret ${name} from ${devices}, id ${requestId}`); - - this._baseApis.sendToDevice("m.secret.request", { - [this._baseApis.getUserId()]: toDevice - }); - - return { + requesting_device_id: this.baseApis.deviceId, request_id: requestId, - promise, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() + }; + const toDevice = new Map(); + for (const device of devices) { + toDevice.set(device, requestData); + } + _logger.logger.info(`Request secret ${name} from ${devices}, id ${requestId}`); + this.baseApis.sendToDevice("m.secret.request", new Map([[this.baseApis.getUserId(), toDevice]])); + return { + requestId, + promise: deferred.promise, cancel }; } - - async _onRequestReceived(event) { + async onRequestReceived(event) { const sender = event.getSender(); const content = event.getContent(); - - if (sender !== this._baseApis.getUserId() || !(content.name && content.action && content.requesting_device_id && content.request_id)) { + if (sender !== this.baseApis.getUserId() || !(content.name && content.action && content.requesting_device_id && content.request_id)) { // ignore requests from anyone else, for now return; } - - const deviceId = content.requesting_device_id; // check if it's a cancel - + const deviceId = content.requesting_device_id; + // check if it's a cancel if (content.action === "request_cancellation") { - if (this._incomingRequests[deviceId] && this._incomingRequests[deviceId][content.request_id]) { - _logger.logger.info("received request cancellation for secret (" + sender + ", " + deviceId + ", " + content.request_id + ")"); - - this.baseApis.emit("crypto.secrets.requestCancelled", { - user_id: sender, - device_id: deviceId, - request_id: content.request_id - }); + /* + Looks like we intended to emit events when we got cancelations, but + we never put anything in the _incomingRequests object, and the request + itself doesn't use events anyway so if we were to wire up cancellations, + they probably ought to use the same callback interface. I'm leaving them + disabled for now while converting this file to typescript. + if (this._incomingRequests[deviceId] + && this._incomingRequests[deviceId][content.request_id]) { + logger.info( + "received request cancellation for secret (" + sender + + ", " + deviceId + ", " + content.request_id + ")", + ); + this.baseApis.emit("crypto.secrets.requestCancelled", { + user_id: sender, + device_id: deviceId, + request_id: content.request_id, + }); } + */ } else if (content.action === "request") { - if (deviceId === this._baseApis.deviceId) { + if (deviceId === this.baseApis.deviceId) { // no point in trying to send ourself the secret return; - } // check if we have the secret - - - _logger.logger.info("received request for secret (" + sender + ", " + deviceId + ", " + content.request_id + ")"); - - if (!this._cryptoCallbacks.onSecretRequested) { - return; } - const secret = await this._cryptoCallbacks.onSecretRequested({ - user_id: sender, - device_id: deviceId, - request_id: content.request_id, - name: content.name, - device_trust: this._baseApis.checkDeviceTrust(sender, deviceId) - }); - + // check if we have the secret + _logger.logger.info("received request for secret (" + sender + ", " + deviceId + ", " + content.request_id + ")"); + if (!this.cryptoCallbacks.onSecretRequested) { + return; + } + const secret = await this.cryptoCallbacks.onSecretRequested(sender, deviceId, content.request_id, content.name, this.baseApis.checkDeviceTrust(sender, deviceId)); if (secret) { _logger.logger.info(`Preparing ${content.name} secret for ${deviceId}`); - const payload = { type: "m.secret.send", content: { @@ -36820,110 +144849,70 @@ class SecretStorage extends _events.EventEmitter { }; const encryptedContent = { algorithm: olmlib.OLM_ALGORITHM, - sender_key: this._baseApis._crypto._olmDevice.deviceCurve25519Key, - ciphertext: {} + sender_key: this.baseApis.crypto.olmDevice.deviceCurve25519Key, + ciphertext: {}, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() }; - await olmlib.ensureOlmSessionsForDevices(this._baseApis._crypto._olmDevice, this._baseApis, { - [sender]: [this._baseApis.getStoredDevice(sender, deviceId)] - }); - await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._baseApis.getUserId(), this._baseApis.deviceId, this._baseApis._crypto._olmDevice, sender, this._baseApis.getStoredDevice(sender, deviceId), payload); - const contentMap = { - [sender]: { - [deviceId]: encryptedContent - } - }; - + await olmlib.ensureOlmSessionsForDevices(this.baseApis.crypto.olmDevice, this.baseApis, new Map([[sender, [this.baseApis.getStoredDevice(sender, deviceId)]]])); + await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this.baseApis.getUserId(), this.baseApis.deviceId, this.baseApis.crypto.olmDevice, sender, this.baseApis.getStoredDevice(sender, deviceId), payload); + const contentMap = new Map([[sender, new Map([[deviceId, encryptedContent]])]]); _logger.logger.info(`Sending ${content.name} secret for ${deviceId}`); - - this._baseApis.sendToDevice("m.room.encrypted", contentMap); + this.baseApis.sendToDevice("m.room.encrypted", contentMap); } else { _logger.logger.info(`Request denied for ${content.name} secret for ${deviceId}`); } } } - - _onSecretReceived(event) { - if (event.getSender() !== this._baseApis.getUserId()) { + onSecretReceived(event) { + if (event.getSender() !== this.baseApis.getUserId()) { // we shouldn't be receiving secrets from anyone else, so ignore // because someone could be trying to send us bogus data return; } - + if (!olmlib.isOlmEncrypted(event)) { + _logger.logger.error("secret event not properly encrypted"); + return; + } const content = event.getContent(); - + const senderKeyUser = this.baseApis.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, event.getSenderKey() || ""); + if (senderKeyUser !== event.getSender()) { + _logger.logger.error("sending device does not belong to the user it claims to be from"); + return; + } _logger.logger.log("got secret share for request", content.request_id); - - const requestControl = this._requests[content.request_id]; - + const requestControl = this.requests.get(content.request_id); if (requestControl) { // make sure that the device that sent it is one of the devices that // we requested from - const deviceInfo = this._baseApis._crypto._deviceList.getDeviceByIdentityKey(olmlib.OLM_ALGORITHM, event.getSenderKey()); - + const deviceInfo = this.baseApis.crypto.deviceList.getDeviceByIdentityKey(olmlib.OLM_ALGORITHM, event.getSenderKey()); if (!deviceInfo) { _logger.logger.log("secret share from unknown device with key", event.getSenderKey()); - return; } - if (!requestControl.devices.includes(deviceInfo.deviceId)) { _logger.logger.log("unsolicited secret share from device", deviceInfo.deviceId); - return; } - + // unsure that the sender is trusted. In theory, this check is + // unnecessary since we only accept secret shares from devices that + // we requested from, but it doesn't hurt. + const deviceTrust = this.baseApis.crypto.checkDeviceInfoTrust(event.getSender(), deviceInfo); + if (!deviceTrust.isVerified()) { + _logger.logger.log("secret share from unverified device"); + return; + } _logger.logger.log(`Successfully received secret ${requestControl.name} ` + `from ${deviceInfo.deviceId}`); - - requestControl.resolve(content.secret); + requestControl.deferred.resolve(content.secret); } } - - async _getSecretStorageKey(keys, name) { - if (!this._cryptoCallbacks.getSecretStorageKey) { - throw new Error("No getSecretStorageKey callback supplied"); - } - - const returned = await this._cryptoCallbacks.getSecretStorageKey({ - keys - }, name); - - if (!returned) { - throw new Error("getSecretStorageKey callback returned falsey"); - } - - if (returned.length < 2) { - throw new Error("getSecretStorageKey callback returned invalid data"); - } - - const [keyId, privateKey] = returned; - - if (!keys[keyId]) { - throw new Error("App returned unknown key from getSecretStorageKey!"); - } - - if (keys[keyId].algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { - const decryption = { - encrypt: async function (secret) { - return await (0, _aes.encryptAES)(secret, privateKey, name); - }, - decrypt: async function (encInfo) { - return await (0, _aes.decryptAES)(encInfo, privateKey, name); - } - }; - return [keyId, decryption]; - } else { - throw new Error("Unknown key type: " + keys[keyId].algorithm); - } - } - } - -exports.SecretStorage = SecretStorage; +exports.SecretSharing = SecretSharing; +//# sourceMappingURL=SecretSharing.js.map /***/ }), -/***/ 7502: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 5833: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -36931,15 +144920,11 @@ exports.SecretStorage = SecretStorage; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.encryptAES = encryptAES; -exports.decryptAES = decryptAES; - -var _utils = __webpack_require__(2557); - -var _olmlib = __webpack_require__(7131); - +exports.SecretStorage = void 0; +var _secretStorage = __nccwpck_require__(8597); +var _SecretSharing = __nccwpck_require__(9847); /* -Copyright 2020 The Matrix.org Foundation C.I.C. +Copyright 2019 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -36953,192 +144938,105 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const subtleCrypto = typeof window !== "undefined" && window.crypto ? window.crypto.subtle || window.crypto.webkitSubtle : null; // salt for HKDF, with 8 bytes of zeros -const zerosalt = new Uint8Array(8); +/* re-exports for backwards compatibility */ + /** - * encrypt a string in Node.js + * Implements Secure Secret Storage and Sharing (MSC1946) * - * @param {string} data the plaintext to encrypt - * @param {Uint8Array} key the encryption key to use - * @param {string} name the name of the secret - * @param {string} ivStr the initialization vector to use + * @deprecated This is just a backwards-compatibility hack which will be removed soon. + * Use {@link SecretStorage.ServerSideSecretStorageImpl} from `../secret-storage` and/or {@link SecretSharing} from `./SecretSharing`. */ - -async function encryptNode(data, key, name, ivStr) { - const crypto = (0, _utils.getCrypto)(); - - if (!crypto) { - throw new Error("No usable crypto implementation"); +class SecretStorage { + // In its pure javascript days, this was relying on some proper Javascript-style + // type-abuse where sometimes we'd pass in a fake client object with just the account + // data methods implemented, which is all this class needs unless you use the secret + // sharing code, so it was fine. As a low-touch TypeScript migration, we added + // an extra, optional param for a real matrix client, so you can not pass it as long + // as you don't request any secrets. + // + // Nowadays, the whole class is scheduled for destruction, once we get rid of the legacy + // Crypto impl that exposes it. + constructor(accountDataAdapter, cryptoCallbacks, baseApis) { + this.storageImpl = new _secretStorage.ServerSideSecretStorageImpl(accountDataAdapter, cryptoCallbacks); + this.sharingImpl = new _SecretSharing.SecretSharing(baseApis, cryptoCallbacks); + } + getDefaultKeyId() { + return this.storageImpl.getDefaultKeyId(); + } + setDefaultKeyId(keyId) { + return this.storageImpl.setDefaultKeyId(keyId); } - let iv; - - if (ivStr) { - iv = (0, _olmlib.decodeBase64)(ivStr); - } else { - iv = crypto.randomBytes(16); - } // clear bit 63 of the IV to stop us hitting the 64-bit counter boundary - // (which would mean we wouldn't be able to decrypt on Android). The loss - // of a single bit of iv is a price we have to pay. - - - iv[8] &= 0x7f; - const [aesKey, hmacKey] = deriveKeysNode(key, name); - const cipher = crypto.createCipheriv("aes-256-ctr", aesKey, iv); - const ciphertext = cipher.update(data, "utf-8", "base64") + cipher.final("base64"); - const hmac = crypto.createHmac("sha256", hmacKey).update(ciphertext, "base64").digest("base64"); - return { - iv: (0, _olmlib.encodeBase64)(iv), - ciphertext: ciphertext, - mac: hmac - }; -} -/** - * decrypt a string in Node.js - * - * @param {object} data the encrypted data - * @param {string} data.ciphertext the ciphertext in base64 - * @param {string} data.iv the initialization vector in base64 - * @param {string} data.mac the HMAC in base64 - * @param {Uint8Array} key the encryption key to use - * @param {string} name the name of the secret - */ - - -async function decryptNode(data, key, name) { - const crypto = (0, _utils.getCrypto)(); - - if (!crypto) { - throw new Error("No usable crypto implementation"); + /** + * Add a key for encrypting secrets. + */ + addKey(algorithm, opts, keyId) { + return this.storageImpl.addKey(algorithm, opts, keyId); } - const [aesKey, hmacKey] = deriveKeysNode(key, name); - const hmac = crypto.createHmac("sha256", hmacKey).update(data.ciphertext, "base64").digest("base64").replace(/=+$/g, ''); - - if (hmac !== data.mac.replace(/=+$/g, '')) { - throw new Error(`Error decrypting secret ${name}: bad MAC`); + /** + * Get the key information for a given ID. + */ + getKey(keyId) { + return this.storageImpl.getKey(keyId); } - const decipher = crypto.createDecipheriv("aes-256-ctr", aesKey, (0, _olmlib.decodeBase64)(data.iv)); - return decipher.update(data.ciphertext, "base64", "utf-8") + decipher.final("utf-8"); -} - -function deriveKeysNode(key, name) { - const crypto = (0, _utils.getCrypto)(); - const prk = crypto.createHmac("sha256", zerosalt).update(key).digest(); - const b = Buffer.alloc(1, 1); - const aesKey = crypto.createHmac("sha256", prk).update(name, "utf-8").update(b).digest(); - b[0] = 2; - const hmacKey = crypto.createHmac("sha256", prk).update(aesKey).update(name, "utf-8").update(b).digest(); - return [aesKey, hmacKey]; -} -/** - * encrypt a string in Node.js - * - * @param {string} data the plaintext to encrypt - * @param {Uint8Array} key the encryption key to use - * @param {string} name the name of the secret - * @param {string} ivStr the initialization vector to use - */ - - -async function encryptBrowser(data, key, name, ivStr) { - let iv; - - if (ivStr) { - iv = (0, _olmlib.decodeBase64)(ivStr); - } else { - iv = new Uint8Array(16); - window.crypto.getRandomValues(iv); - } // clear bit 63 of the IV to stop us hitting the 64-bit counter boundary - // (which would mean we wouldn't be able to decrypt on Android). The loss - // of a single bit of iv is a price we have to pay. - - - iv[8] &= 0x7f; - const [aesKey, hmacKey] = await deriveKeysBrowser(key, name); - const encodedData = new TextEncoder().encode(data); - const ciphertext = await subtleCrypto.encrypt({ - name: "AES-CTR", - counter: iv, - length: 64 - }, aesKey, encodedData); - const hmac = await subtleCrypto.sign({ - name: 'HMAC' - }, hmacKey, ciphertext); - return { - iv: (0, _olmlib.encodeBase64)(iv), - ciphertext: (0, _olmlib.encodeBase64)(ciphertext), - mac: (0, _olmlib.encodeBase64)(hmac) - }; -} -/** - * decrypt a string in the browser - * - * @param {object} data the encrypted data - * @param {string} data.ciphertext the ciphertext in base64 - * @param {string} data.iv the initialization vector in base64 - * @param {string} data.mac the HMAC in base64 - * @param {Uint8Array} key the encryption key to use - * @param {string} name the name of the secret - */ - - -async function decryptBrowser(data, key, name) { - const [aesKey, hmacKey] = await deriveKeysBrowser(key, name); - const ciphertext = (0, _olmlib.decodeBase64)(data.ciphertext); - - if (!(await subtleCrypto.verify({ - name: "HMAC" - }, hmacKey, (0, _olmlib.decodeBase64)(data.mac), ciphertext))) { - throw new Error(`Error decrypting secret ${name}: bad MAC`); + /** + * Check whether we have a key with a given ID. + */ + hasKey(keyId) { + return this.storageImpl.hasKey(keyId); } - const plaintext = await subtleCrypto.decrypt({ - name: "AES-CTR", - counter: (0, _olmlib.decodeBase64)(data.iv), - length: 64 - }, aesKey, ciphertext); - return new TextDecoder().decode(new Uint8Array(plaintext)); -} + /** + * Check whether a key matches what we expect based on the key info + */ + checkKey(key, info) { + return this.storageImpl.checkKey(key, info); + } -async function deriveKeysBrowser(key, name) { - const hkdfkey = await subtleCrypto.importKey('raw', key, { - name: "HKDF" - }, false, ["deriveBits"]); - const keybits = await subtleCrypto.deriveBits({ - name: "HKDF", - salt: zerosalt, - info: new TextEncoder().encode(name), - hash: "SHA-256" - }, hkdfkey, 512); - const aesKey = keybits.slice(0, 32); - const hmacKey = keybits.slice(32); - const aesProm = subtleCrypto.importKey('raw', aesKey, { - name: 'AES-CTR' - }, false, ['encrypt', 'decrypt']); - const hmacProm = subtleCrypto.importKey('raw', hmacKey, { - name: 'HMAC', - hash: { - name: 'SHA-256' - } - }, false, ['sign', 'verify']); - return await Promise.all([aesProm, hmacProm]); -} + /** + * Store an encrypted secret on the server + */ + store(name, secret, keys) { + return this.storageImpl.store(name, secret, keys); + } -function encryptAES(...args) { - return subtleCrypto ? encryptBrowser(...args) : encryptNode(...args); -} + /** + * Get a secret from storage. + */ + get(name) { + return this.storageImpl.get(name); + } -function decryptAES(...args) { - return subtleCrypto ? decryptBrowser(...args) : decryptNode(...args); + /** + * Check if a secret is stored on the server. + */ + async isStored(name) { + return this.storageImpl.isStored(name); + } + + /** + * Request a secret from another device + */ + request(name, devices) { + return this.sharingImpl.request(name, devices); + } + onRequestReceived(event) { + return this.sharingImpl.onRequestReceived(event); + } + onSecretReceived(event) { + this.sharingImpl.onSecretReceived(event); + } } +exports.SecretStorage = SecretStorage; +//# sourceMappingURL=SecretStorage.js.map /***/ }), -/***/ 1058: -/***/ ((__unused_webpack_module, exports) => { +/***/ 7502: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -37146,11 +145044,153 @@ function decryptAES(...args) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.registerAlgorithm = registerAlgorithm; -exports.UnknownDeviceError = exports.DecryptionError = exports.DecryptionAlgorithm = exports.EncryptionAlgorithm = exports.DECRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = void 0; - +exports.calculateKeyCheck = calculateKeyCheck; +exports.decryptAES = decryptAES; +exports.encryptAES = encryptAES; +var _base = __nccwpck_require__(7477); +var _crypto = __nccwpck_require__(8532); /* -Copyright 2016 OpenMarket Ltd +Copyright 2020 - 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// salt for HKDF, with 8 bytes of zeros +const zeroSalt = new Uint8Array(8); +/** + * encrypt a string + * + * @param data - the plaintext to encrypt + * @param key - the encryption key to use + * @param name - the name of the secret + * @param ivStr - the initialization vector to use + */ +async function encryptAES(data, key, name, ivStr) { + let iv; + if (ivStr) { + iv = (0, _base.decodeBase64)(ivStr); + } else { + iv = new Uint8Array(16); + _crypto.crypto.getRandomValues(iv); + + // clear bit 63 of the IV to stop us hitting the 64-bit counter boundary + // (which would mean we wouldn't be able to decrypt on Android). The loss + // of a single bit of iv is a price we have to pay. + iv[8] &= 0x7f; + } + const [aesKey, hmacKey] = await deriveKeys(key, name); + const encodedData = new _crypto.TextEncoder().encode(data); + const ciphertext = await _crypto.subtleCrypto.encrypt({ + name: "AES-CTR", + counter: iv, + length: 64 + }, aesKey, encodedData); + const hmac = await _crypto.subtleCrypto.sign({ + name: "HMAC" + }, hmacKey, ciphertext); + return { + iv: (0, _base.encodeBase64)(iv), + ciphertext: (0, _base.encodeBase64)(ciphertext), + mac: (0, _base.encodeBase64)(hmac) + }; +} + +/** + * decrypt a string + * + * @param data - the encrypted data + * @param key - the encryption key to use + * @param name - the name of the secret + */ +async function decryptAES(data, key, name) { + const [aesKey, hmacKey] = await deriveKeys(key, name); + const ciphertext = (0, _base.decodeBase64)(data.ciphertext); + if (!(await _crypto.subtleCrypto.verify({ + name: "HMAC" + }, hmacKey, (0, _base.decodeBase64)(data.mac), ciphertext))) { + throw new Error(`Error decrypting secret ${name}: bad MAC`); + } + const plaintext = await _crypto.subtleCrypto.decrypt({ + name: "AES-CTR", + counter: (0, _base.decodeBase64)(data.iv), + length: 64 + }, aesKey, ciphertext); + return new TextDecoder().decode(new Uint8Array(plaintext)); +} +async function deriveKeys(key, name) { + const hkdfkey = await _crypto.subtleCrypto.importKey("raw", key, { + name: "HKDF" + }, false, ["deriveBits"]); + const keybits = await _crypto.subtleCrypto.deriveBits({ + name: "HKDF", + salt: zeroSalt, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/879 + info: new _crypto.TextEncoder().encode(name), + hash: "SHA-256" + }, hkdfkey, 512); + const aesKey = keybits.slice(0, 32); + const hmacKey = keybits.slice(32); + const aesProm = _crypto.subtleCrypto.importKey("raw", aesKey, { + name: "AES-CTR" + }, false, ["encrypt", "decrypt"]); + const hmacProm = _crypto.subtleCrypto.importKey("raw", hmacKey, { + name: "HMAC", + hash: { + name: "SHA-256" + } + }, false, ["sign", "verify"]); + return Promise.all([aesProm, hmacProm]); +} + +// string of zeroes, for calculating the key check +const ZERO_STR = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; + +/** Calculate the MAC for checking the key. + * + * @param key - the key to use + * @param iv - The initialization vector as a base64-encoded string. + * If omitted, a random initialization vector will be created. + * @returns An object that contains, `mac` and `iv` properties. + */ +function calculateKeyCheck(key, iv) { + return encryptAES(ZERO_STR, key, "", iv); +} +//# sourceMappingURL=aes.js.map + +/***/ }), + +/***/ 1058: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DecryptionAlgorithm = exports.DECRYPTION_CLASSES = void 0; +Object.defineProperty(exports, "DecryptionError", ({ + enumerable: true, + get: function () { + return _CryptoBackend.DecryptionError; + } +})); +exports.UnknownDeviceError = exports.EncryptionAlgorithm = exports.ENCRYPTION_CLASSES = void 0; +exports.registerAlgorithm = registerAlgorithm; +var _CryptoBackend = __nccwpck_require__(3959); +/* +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37167,120 +145207,80 @@ limitations under the License. /** * Internal module. Defines the base classes of the encryption implementations - * - * @module */ /** - * map of registered encryption algorithm classes. A map from string to {@link - * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm} class - * - * @type {Object.} + * Map of registered encryption algorithm classes. A map from string to {@link EncryptionAlgorithm} class */ -const ENCRYPTION_CLASSES = {}; +const ENCRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = new Map(); /** - * map of registered encryption algorithm classes. Map from string to {@link - * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm} class - * - * @type {Object.} + * map of registered encryption algorithm classes. Map from string to {@link DecryptionAlgorithm} class */ - -exports.ENCRYPTION_CLASSES = ENCRYPTION_CLASSES; -const DECRYPTION_CLASSES = {}; +const DECRYPTION_CLASSES = exports.DECRYPTION_CLASSES = new Map(); /** * base type for encryption implementations - * - * @alias module:crypto/algorithms/base.EncryptionAlgorithm - * - * @param {object} params parameters - * @param {string} params.userId The UserID for the local user - * @param {string} params.deviceId The identifier for this device. - * @param {module:crypto} params.crypto crypto core - * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper - * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface - * @param {string} params.roomId The ID of the room we will be sending to - * @param {object} params.config The body of the m.room.encryption event */ - -exports.DECRYPTION_CLASSES = DECRYPTION_CLASSES; - class EncryptionAlgorithm { + /** + * @param params - parameters + */ constructor(params) { - this._userId = params.userId; - this._deviceId = params.deviceId; - this._crypto = params.crypto; - this._olmDevice = params.olmDevice; - this._baseApis = params.baseApis; - this._roomId = params.roomId; + this.userId = params.userId; + this.deviceId = params.deviceId; + this.crypto = params.crypto; + this.olmDevice = params.olmDevice; + this.baseApis = params.baseApis; + this.roomId = params.roomId; } + /** * Perform any background tasks that can be done before a message is ready to * send, in order to speed up sending of the message. * - * @param {module:models/room} room the room the event is in + * @param room - the room the event is in */ - - prepareToEncrypt(room) {} + /** * Encrypt a message event * - * @method module:crypto/algorithms/base.EncryptionAlgorithm.encryptMessage - * @abstract + * @public * - * @param {module:models/room} room - * @param {string} eventType - * @param {object} plaintext event content + * @param content - event content * - * @return {Promise} Promise which resolves to the new event body + * @returns Promise which resolves to the new event body */ /** * Called when the membership of a member of the room changes. * - * @param {module:models/event.MatrixEvent} event event causing the change - * @param {module:models/room-member} member user whose membership changed - * @param {string=} oldMembership previous membership + * @param event - event causing the change + * @param member - user whose membership changed + * @param oldMembership - previous membership * @public */ - - onRoomMembership(event, member, oldMembership) {} - } + /** * base type for decryption implementations - * - * @alias module:crypto/algorithms/base.DecryptionAlgorithm - * @param {object} params parameters - * @param {string} params.userId The UserID for the local user - * @param {module:crypto} params.crypto crypto core - * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper - * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface - * @param {string=} params.roomId The ID of the room we will be receiving - * from. Null for to-device events. */ - - exports.EncryptionAlgorithm = EncryptionAlgorithm; - class DecryptionAlgorithm { constructor(params) { - this._userId = params.userId; - this._crypto = params.crypto; - this._olmDevice = params.olmDevice; - this._baseApis = params.baseApis; - this._roomId = params.roomId; + this.userId = params.userId; + this.crypto = params.crypto; + this.olmDevice = params.olmDevice; + this.baseApis = params.baseApis; + this.roomId = params.roomId; } + /** * Decrypt an event * - * @method module:crypto/algorithms/base.DecryptionAlgorithm#decryptEvent - * @abstract + * @param event - undecrypted event * - * @param {MatrixEvent} event undecrypted event - * - * @return {Promise} promise which + * @returns promise which * resolves once we have finished decrypting. Rejects with an * `algorithms.DecryptionError` if there is a problem decrypting the event. */ @@ -37288,139 +145288,90 @@ class DecryptionAlgorithm { /** * Handle a key event * - * @method module:crypto/algorithms/base.DecryptionAlgorithm#onRoomKeyEvent - * - * @param {module:models/event.MatrixEvent} params event key event + * @param params - event key event */ - - - onRoomKeyEvent(params) {} // ignore by default + async onRoomKeyEvent(params) { + // ignore by default + } /** * Import a room key * - * @param {module:crypto/OlmDevice.MegolmSessionData} session + * @param opts - object */ - - - importRoomKey(session) {} // ignore by default + async importRoomKey(session, opts) { + // ignore by default + } /** * Determine if we have the keys necessary to respond to a room key request * - * @param {module:crypto~IncomingRoomKeyRequest} keyRequest - * @return {Promise} true if we have the keys and could (theoretically) share + * @returns true if we have the keys and could (theoretically) share * them; else false. */ - - hasKeysForKeyRequest(keyRequest) { return Promise.resolve(false); } + /** * Send the response to a room key request * - * @param {module:crypto~IncomingRoomKeyRequest} keyRequest */ - - shareKeysWithDevice(keyRequest) { throw new Error("shareKeysWithDevice not supported for this DecryptionAlgorithm"); } + /** * Retry decrypting all the events from a sender that haven't been * decrypted yet. * - * @param {string} senderKey the sender's key + * @param senderKey - the sender's key */ - - - async retryDecryptionFromSender(senderKey) {// ignore by default + async retryDecryptionFromSender(senderKey) { + // ignore by default + return false; } - } -/** - * Exception thrown when decryption fails - * - * @alias module:crypto/algorithms/base.DecryptionError - * @param {string} msg user-visible message describing the problem - * - * @param {Object=} details key/value pairs reported in the logs but not shown - * to the user. - * - * @extends Error - */ - - exports.DecryptionAlgorithm = DecryptionAlgorithm; - -class DecryptionError extends Error { - constructor(code, msg, details) { - super(msg); - this.code = code; - this.name = 'DecryptionError'; - this.detailedString = _detailedStringForDecryptionError(this, details); - } - -} - -exports.DecryptionError = DecryptionError; - -function _detailedStringForDecryptionError(err, details) { - let result = err.name + '[msg: ' + err.message; - - if (details) { - result += ', ' + Object.keys(details).map(k => k + ': ' + details[k]).join(', '); - } - - result += ']'; - return result; -} -/** - * Exception thrown specifically when we want to warn the user to consider - * the security of their conversation before continuing - * - * @param {string} msg message describing the problem - * @param {Object} devices userId -> {deviceId -> object} - * set of unknown devices per user we're warning about - * @extends Error - */ - - class UnknownDeviceError extends Error { - constructor(msg, devices) { + /** + * Exception thrown specifically when we want to warn the user to consider + * the security of their conversation before continuing + * + * @param msg - message describing the problem + * @param devices - set of unknown devices per user we're warning about + */ + constructor(msg, devices, event) { super(msg); + this.devices = devices; + this.event = event; this.name = "UnknownDeviceError"; this.devices = devices; } - } + /** * Registers an encryption/decryption class for a particular algorithm * - * @param {string} algorithm algorithm tag to register for + * @param algorithm - algorithm tag to register for * - * @param {class} encryptor {@link - * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm} - * implementation + * @param encryptor - {@link EncryptionAlgorithm} implementation * - * @param {class} decryptor {@link - * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm} - * implementation + * @param decryptor - {@link DecryptionAlgorithm} implementation */ - - exports.UnknownDeviceError = UnknownDeviceError; - function registerAlgorithm(algorithm, encryptor, decryptor) { - ENCRYPTION_CLASSES[algorithm] = encryptor; - DECRYPTION_CLASSES[algorithm] = decryptor; + ENCRYPTION_CLASSES.set(algorithm, encryptor); + DECRYPTION_CLASSES.set(algorithm, decryptor); } +/* Re-export for backwards compatibility. Deprecated: this is an internal class. */ +//# sourceMappingURL=base.js.map + /***/ }), /***/ 1534: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -37428,15 +145379,12 @@ function registerAlgorithm(algorithm, encryptor, decryptor) { Object.defineProperty(exports, "__esModule", ({ value: true })); - -__webpack_require__(3659); - -__webpack_require__(7509); - -var _base = __webpack_require__(1058); - +__nccwpck_require__(3659); +__nccwpck_require__(7509); +var _base = __nccwpck_require__(1058); Object.keys(_base).forEach(function (key) { if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _base[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -37444,31 +145392,39 @@ Object.keys(_base).forEach(function (key) { } }); }); +//# sourceMappingURL=index.js.map /***/ }), /***/ 7509: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - -var _logger = __webpack_require__(3854); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var olmlib = _interopRequireWildcard(__webpack_require__(7131)); - -var _base = __webpack_require__(1058); - -var _OlmDevice = __webpack_require__(3033); - -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2018 New Vector Ltd -Copyright 2020 The Matrix.org Foundation C.I.C. +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MegolmEncryption = exports.MegolmDecryption = void 0; +exports.isRoomSharedHistory = isRoomSharedHistory; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _uuid = __nccwpck_require__(5840); +var _logger = __nccwpck_require__(3854); +var olmlib = _interopRequireWildcard(__nccwpck_require__(7131)); +var _base = __nccwpck_require__(1058); +var _OlmDevice = __nccwpck_require__(3033); +var _event = __nccwpck_require__(7487); +var _OutgoingRoomKeyRequestManager = __nccwpck_require__(4724); +var _utils = __nccwpck_require__(2557); +var _membership = __nccwpck_require__(9225); +var _cryptoApi = __nccwpck_require__(3819); +var _CryptoBackend = __nccwpck_require__(3959); +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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2015 - 2021, 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37481,234 +145437,261 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -*/ - -/** +*/ /** * Defines m.olm encryption/decryption - * - * @module crypto/algorithms/megolm */ - -/** - * @private - * @constructor - * - * @param {string} sessionId - * - * @property {string} sessionId - * @property {Number} useCount number of times this session has been used - * @property {Number} creationTime when the session was created (ms since the epoch) - * - * @property {object} sharedWithDevices - * devices with which we have shared the session key - * userId -> {deviceId -> msgindex} - */ -function OutboundSessionInfo(sessionId) { - this.sessionId = sessionId; - this.useCount = 0; - this.creationTime = new Date().getTime(); - this.sharedWithDevices = {}; - this.blockedDevicesNotified = {}; +// determine whether the key can be shared with invitees +function isRoomSharedHistory(room) { + var _room$currentState, _visibilityEvent$getC; + const visibilityEvent = room === null || room === void 0 || (_room$currentState = room.currentState) === null || _room$currentState === void 0 ? void 0 : _room$currentState.getStateEvents("m.room.history_visibility", ""); + // NOTE: if the room visibility is unset, it would normally default to + // "world_readable". + // (https://spec.matrix.org/unstable/client-server-api/#server-behaviour-5) + // But we will be paranoid here, and treat it as a situation where the room + // is not shared-history + const visibility = visibilityEvent === null || visibilityEvent === void 0 || (_visibilityEvent$getC = visibilityEvent.getContent()) === null || _visibilityEvent$getC === void 0 ? void 0 : _visibilityEvent$getC.history_visibility; + return ["world_readable", "shared"].includes(visibility); } + +// map user Id → device Id → IBlockedDevice + /** - * Check if it's time to rotate the session + * Tests whether an encrypted content has a ciphertext. + * Ciphertext can be a string or object depending on the content type {@link IEncryptedContent}. * - * @param {Number} rotationPeriodMsgs - * @param {Number} rotationPeriodMs - * @return {Boolean} + * @param content - Encrypted content + * @returns true: has ciphertext, else false */ - - -OutboundSessionInfo.prototype.needsRotation = function (rotationPeriodMsgs, rotationPeriodMs) { - const sessionLifetime = new Date().getTime() - this.creationTime; - - if (this.useCount >= rotationPeriodMsgs || sessionLifetime >= rotationPeriodMs) { - _logger.logger.log("Rotating megolm session after " + this.useCount + " messages, " + sessionLifetime + "ms"); - - return true; - } - - return false; +const hasCiphertext = content => { + return typeof content.ciphertext === "string" ? !!content.ciphertext.length : !!Object.keys(content.ciphertext).length; }; -OutboundSessionInfo.prototype.markSharedWithDevice = function (userId, deviceId, chainIndex) { - if (!this.sharedWithDevices[userId]) { - this.sharedWithDevices[userId] = {}; - } +/** The result of parsing the an `m.room_key` or `m.forwarded_room_key` to-device event */ - this.sharedWithDevices[userId][deviceId] = chainIndex; -}; - -OutboundSessionInfo.prototype.markNotifiedBlockedDevice = function (userId, deviceId) { - if (!this.blockedDevicesNotified[userId]) { - this.blockedDevicesNotified[userId] = {}; - } - - this.blockedDevicesNotified[userId][deviceId] = true; -}; /** - * Determine if this session has been shared with devices which it shouldn't - * have been. - * - * @param {Object} devicesInRoom userId -> {deviceId -> object} - * devices we should shared the session with. - * - * @return {Boolean} true if we have shared the session with devices which aren't - * in devicesInRoom. + * @internal */ +class OutboundSessionInfo { + /** + * @param sharedHistory - whether the session can be freely shared with + * other group members, according to the room history visibility settings + */ + constructor(sessionId, sharedHistory = false) { + /** number of times this session has been used */ + (0, _defineProperty2.default)(this, "useCount", 0); + /** devices with which we have shared the session key `userId -> {deviceId -> SharedWithData}` */ + (0, _defineProperty2.default)(this, "sharedWithDevices", new _utils.MapWithDefault(() => new Map())); + (0, _defineProperty2.default)(this, "blockedDevicesNotified", new _utils.MapWithDefault(() => new Map())); + this.sessionId = sessionId; + this.sharedHistory = sharedHistory; + this.creationTime = new Date().getTime(); + } - -OutboundSessionInfo.prototype.sharedWithTooManyDevices = function (devicesInRoom) { - for (const userId in this.sharedWithDevices) { - if (!this.sharedWithDevices.hasOwnProperty(userId)) { - continue; - } - - if (!devicesInRoom.hasOwnProperty(userId)) { - _logger.logger.log("Starting new megolm session because we shared with " + userId); - + /** + * Check if it's time to rotate the session + */ + needsRotation(rotationPeriodMsgs, rotationPeriodMs) { + const sessionLifetime = new Date().getTime() - this.creationTime; + if (this.useCount >= rotationPeriodMsgs || sessionLifetime >= rotationPeriodMs) { + _logger.logger.log("Rotating megolm session after " + this.useCount + " messages, " + sessionLifetime + "ms"); return true; } + return false; + } + markSharedWithDevice(userId, deviceId, deviceKey, chainIndex) { + this.sharedWithDevices.getOrCreate(userId).set(deviceId, { + deviceKey, + messageIndex: chainIndex + }); + } + markNotifiedBlockedDevice(userId, deviceId) { + this.blockedDevicesNotified.getOrCreate(userId).set(deviceId, true); + } - for (const deviceId in this.sharedWithDevices[userId]) { - if (!this.sharedWithDevices[userId].hasOwnProperty(deviceId)) { - continue; - } - - if (!devicesInRoom[userId].hasOwnProperty(deviceId)) { - _logger.logger.log("Starting new megolm session because we shared with " + userId + ":" + deviceId); - + /** + * Determine if this session has been shared with devices which it shouldn't + * have been. + * + * @param devicesInRoom - `userId -> {deviceId -> object}` + * devices we should shared the session with. + * + * @returns true if we have shared the session with devices which aren't + * in devicesInRoom. + */ + sharedWithTooManyDevices(devicesInRoom) { + for (const [userId, devices] of this.sharedWithDevices) { + if (!devicesInRoom.has(userId)) { + _logger.logger.log("Starting new megolm session because we shared with " + userId); return true; } + for (const [deviceId] of devices) { + var _devicesInRoom$get; + if (!((_devicesInRoom$get = devicesInRoom.get(userId)) !== null && _devicesInRoom$get !== void 0 && _devicesInRoom$get.get(deviceId))) { + _logger.logger.log("Starting new megolm session because we shared with " + userId + ":" + deviceId); + return true; + } + } } + return false; } -}; +} + /** * Megolm encryption implementation * - * @constructor - * @extends {module:crypto/algorithms/EncryptionAlgorithm} - * - * @param {object} params parameters, as per - * {@link module:crypto/algorithms/EncryptionAlgorithm} + * @param params - parameters, as per {@link EncryptionAlgorithm} */ - - -function MegolmEncryption(params) { - (0, utils.polyfillSuper)(this, _base.EncryptionAlgorithm, params); // the most recent attempt to set up a session. This is used to serialise - // the session setups, so that we have a race-free view of which session we - // are using, and which devices we have shared the keys with. It resolves - // with an OutboundSessionInfo (or undefined, for the first message in the - // room). - - this._setupPromise = Promise.resolve(); // Map of outbound sessions by sessions ID. Used if we need a particular - // session (the session we're currently using to send is always obtained - // using _setupPromise). - - this._outboundSessions = {}; // default rotation periods - - this._sessionRotationPeriodMsgs = 100; - this._sessionRotationPeriodMs = 7 * 24 * 3600 * 1000; - - if (params.config.rotation_period_ms !== undefined) { - this._sessionRotationPeriodMs = params.config.rotation_period_ms; +class MegolmEncryption extends _base.EncryptionAlgorithm { + constructor(params) { + var _params$config$rotati, _params$config, _params$config$rotati2, _params$config2; + super(params); + // the most recent attempt to set up a session. This is used to serialise + // the session setups, so that we have a race-free view of which session we + // are using, and which devices we have shared the keys with. It resolves + // with an OutboundSessionInfo (or undefined, for the first message in the + // room). + (0, _defineProperty2.default)(this, "setupPromise", Promise.resolve(null)); + // Map of outbound sessions by sessions ID. Used if we need a particular + // session (the session we're currently using to send is always obtained + // using setupPromise). + (0, _defineProperty2.default)(this, "outboundSessions", {}); + this.roomId = params.roomId; + this.prefixedLogger = _logger.logger.getChild(`[${this.roomId} encryption]`); + this.sessionRotationPeriodMsgs = (_params$config$rotati = (_params$config = params.config) === null || _params$config === void 0 ? void 0 : _params$config.rotation_period_msgs) !== null && _params$config$rotati !== void 0 ? _params$config$rotati : 100; + this.sessionRotationPeriodMs = (_params$config$rotati2 = (_params$config2 = params.config) === null || _params$config2 === void 0 ? void 0 : _params$config2.rotation_period_ms) !== null && _params$config$rotati2 !== void 0 ? _params$config$rotati2 : 7 * 24 * 3600 * 1000; } - if (params.config.rotation_period_msgs !== undefined) { - this._sessionRotationPeriodMsgs = params.config.rotation_period_msgs; + /** + * @internal + * + * @param devicesInRoom - The devices in this room, indexed by user ID + * @param blocked - The devices that are blocked, indexed by user ID + * @param singleOlmCreationPhase - Only perform one round of olm + * session creation + * + * This method updates the setupPromise field of the class by chaining a new + * call on top of the existing promise, and then catching and discarding any + * errors that might happen while setting up the outbound group session. This + * is done to ensure that `setupPromise` always resolves to `null` or the + * `OutboundSessionInfo`. + * + * Using `>>=` to represent the promise chaining operation, it does the + * following: + * + * ``` + * setupPromise = previousSetupPromise >>= setup >>= discardErrors + * ``` + * + * The initial value for the `setupPromise` is a promise that resolves to + * `null`. The forceDiscardSession() resets setupPromise to this initial + * promise. + * + * @returns Promise which resolves to the + * OutboundSessionInfo when setup is complete. + */ + async ensureOutboundSession(room, devicesInRoom, blocked, singleOlmCreationPhase = false) { + // takes the previous OutboundSessionInfo, and considers whether to create + // a new one. Also shares the key with any (new) devices in the room. + // + // returns a promise which resolves once the keyshare is successful. + const setup = async oldSession => { + const sharedHistory = isRoomSharedHistory(room); + const session = await this.prepareSession(devicesInRoom, sharedHistory, oldSession); + await this.shareSession(devicesInRoom, sharedHistory, singleOlmCreationPhase, blocked, session); + return session; + }; + + // first wait for the previous share to complete + const fallible = this.setupPromise.then(setup); + + // Ensure any failures are logged for debugging and make sure that the + // promise chain remains unbroken + // + // setupPromise resolves to `null` or the `OutboundSessionInfo` whether + // or not the share succeeds + this.setupPromise = fallible.catch(e => { + this.prefixedLogger.error(`Failed to setup outbound session`, e); + return null; + }); + + // but we return a promise which only resolves if the share was successful. + return fallible; } -} - -utils.inherits(MegolmEncryption, _base.EncryptionAlgorithm); -/** - * @private - * - * @param {Object} devicesInRoom The devices in this room, indexed by user ID - * @param {Object} blocked The devices that are blocked, indexed by user ID - * @param {boolean} [singleOlmCreationPhase] Only perform one round of olm - * session creation - * - * @return {Promise} Promise which resolves to the - * OutboundSessionInfo when setup is complete. - */ - -MegolmEncryption.prototype._ensureOutboundSession = async function (devicesInRoom, blocked, singleOlmCreationPhase) { - let session; // takes the previous OutboundSessionInfo, and considers whether to create - // a new one. Also shares the key with any (new) devices in the room. - // Updates `session` to hold the final OutboundSessionInfo. - // - // returns a promise which resolves once the keyshare is successful. - - const prepareSession = async oldSession => { - session = oldSession; // need to make a brand new session? - - if (session && session.needsRotation(this._sessionRotationPeriodMsgs, this._sessionRotationPeriodMs)) { - _logger.logger.log("Starting new megolm session because we need to rotate."); - - session = null; - } // determine if we have shared with anyone we shouldn't have - - - if (session && session.sharedWithTooManyDevices(devicesInRoom)) { + async prepareSession(devicesInRoom, sharedHistory, session) { + var _session, _session2; + // history visibility changed + if (session && sharedHistory !== session.sharedHistory) { session = null; } + // need to make a brand new session? + if ((_session = session) !== null && _session !== void 0 && _session.needsRotation(this.sessionRotationPeriodMsgs, this.sessionRotationPeriodMs)) { + this.prefixedLogger.debug("Starting new megolm session because we need to rotate."); + session = null; + } + + // determine if we have shared with anyone we shouldn't have + if ((_session2 = session) !== null && _session2 !== void 0 && _session2.sharedWithTooManyDevices(devicesInRoom)) { + session = null; + } if (!session) { - _logger.logger.log(`Starting new megolm session for room ${this._roomId}`); - - session = await this._prepareNewSession(); - - _logger.logger.log(`Started new megolm session ${session.sessionId} ` + `for room ${this._roomId}`); - - this._outboundSessions[session.sessionId] = session; - } // now check if we need to share with any devices - - + this.prefixedLogger.debug("Starting new megolm session"); + session = await this.prepareNewSession(sharedHistory); + this.prefixedLogger.debug(`Started new megolm session ${session.sessionId}`); + this.outboundSessions[session.sessionId] = session; + } + return session; + } + async shareSession(devicesInRoom, sharedHistory, singleOlmCreationPhase, blocked, session) { + // now check if we need to share with any devices const shareMap = {}; - - for (const [userId, userDevices] of Object.entries(devicesInRoom)) { - for (const [deviceId, deviceInfo] of Object.entries(userDevices)) { + for (const [userId, userDevices] of devicesInRoom) { + for (const [deviceId, deviceInfo] of userDevices) { + var _session$sharedWithDe; const key = deviceInfo.getIdentityKey(); - - if (key == this._olmDevice.deviceCurve25519Key) { + if (key == this.olmDevice.deviceCurve25519Key) { // don't bother sending to ourself continue; } - - if (!session.sharedWithDevices[userId] || session.sharedWithDevices[userId][deviceId] === undefined) { + if (!((_session$sharedWithDe = session.sharedWithDevices.get(userId)) !== null && _session$sharedWithDe !== void 0 && _session$sharedWithDe.get(deviceId))) { shareMap[userId] = shareMap[userId] || []; shareMap[userId].push(deviceInfo); } } } - - const key = this._olmDevice.getOutboundGroupSessionKey(session.sessionId); - + const key = this.olmDevice.getOutboundGroupSessionKey(session.sessionId); const payload = { type: "m.room_key", content: { - algorithm: olmlib.MEGOLM_ALGORITHM, - room_id: this._roomId, - session_id: session.sessionId, - session_key: key.key, - chain_index: key.chain_index + "algorithm": olmlib.MEGOLM_ALGORITHM, + "room_id": this.roomId, + "session_id": session.sessionId, + "session_key": key.key, + "chain_index": key.chain_index, + "org.matrix.msc3061.shared_history": sharedHistory } }; - const [devicesWithoutSession, olmSessions] = await olmlib.getExistingOlmSessions(this._olmDevice, this._baseApis, shareMap); + const [devicesWithoutSession, olmSessions] = await olmlib.getExistingOlmSessions(this.olmDevice, this.baseApis, shareMap); await Promise.all([(async () => { // share keys with devices that we already have a session for - await this._shareKeyWithOlmSessions(session, key, payload, olmSessions); + const olmSessionList = Array.from(olmSessions.entries()).map(([userId, sessionsByUser]) => Array.from(sessionsByUser.entries()).map(([deviceId, session]) => `${userId}/${deviceId}: ${session.sessionId}`)).flat(1); + this.prefixedLogger.debug("Sharing keys with devices with existing Olm sessions:", olmSessionList); + await this.shareKeyWithOlmSessions(session, key, payload, olmSessions); + this.prefixedLogger.debug("Shared keys with existing Olm sessions"); })(), (async () => { - const errorDevices = []; // meanwhile, establish olm sessions for devices that we don't + const deviceList = Array.from(devicesWithoutSession.entries()).map(([userId, devicesByUser]) => devicesByUser.map(device => `${userId}/${device.deviceId}`)).flat(1); + this.prefixedLogger.debug("Sharing keys (start phase 1) with devices without existing Olm sessions:", deviceList); + const errorDevices = []; + + // meanwhile, establish olm sessions for devices that we don't // already have a session for, and share keys with them. If // we're doing two phases of olm session creation, use a // shorter timeout when fetching one-time keys for the first // phase. - const start = Date.now(); const failedServers = []; - await this._shareKeyWithDevices(session, key, payload, devicesWithoutSession, errorDevices, singleOlmCreationPhase ? 10000 : 2000, failedServers); - + await this.shareKeyWithDevices(session, key, payload, devicesWithoutSession, errorDevices, singleOlmCreationPhase ? 10000 : 2000, failedServers); + this.prefixedLogger.debug("Shared keys (end phase 1) with devices without existing Olm sessions"); if (!singleOlmCreationPhase && Date.now() - start < 10000) { // perform the second phase of olm session creation if requested, // and if the first phase didn't take too long @@ -37718,24 +145701,19 @@ MegolmEncryption.prototype._ensureOutboundSession = async function (devicesInRoo // do this in the background and don't block anything else while we // do this. We only need to retry users from servers that didn't // respond the first time. - const retryDevices = {}; + const retryDevices = new _utils.MapWithDefault(() => []); const failedServerMap = new Set(); - for (const server of failedServers) { failedServerMap.add(server); } - const failedDevices = []; - for (const { userId, deviceInfo } of errorDevices) { const userHS = userId.slice(userId.indexOf(":") + 1); - if (failedServerMap.has(userHS)) { - retryDevices[userId] = retryDevices[userId] || []; - retryDevices[userId].push(deviceInfo); + retryDevices.getOrCreate(userId).push(deviceInfo); } else { // if we aren't going to retry, then handle it // as a failed device @@ -37745,1240 +145723,1391 @@ MegolmEncryption.prototype._ensureOutboundSession = async function (devicesInRoo }); } } - - await this._shareKeyWithDevices(session, key, payload, retryDevices, failedDevices, 30000); - await this._notifyFailedOlmDevices(session, key, failedDevices); + const retryDeviceList = Array.from(retryDevices.entries()).map(([userId, devicesByUser]) => devicesByUser.map(device => `${userId}/${device.deviceId}`)).flat(1); + if (retryDeviceList.length > 0) { + this.prefixedLogger.debug("Sharing keys (start phase 2) with devices without existing Olm sessions:", retryDeviceList); + await this.shareKeyWithDevices(session, key, payload, retryDevices, failedDevices, 30000); + this.prefixedLogger.debug("Shared keys (end phase 2) with devices without existing Olm sessions"); + } + await this.notifyFailedOlmDevices(session, key, failedDevices); })(); } else { - await this._notifyFailedOlmDevices(session, key, errorDevices); + await this.notifyFailedOlmDevices(session, key, errorDevices); } })(), (async () => { - // also, notify blocked devices that they're blocked - const blockedMap = {}; + this.prefixedLogger.debug(`There are ${blocked.size} blocked devices:`, Array.from(blocked.entries()).map(([userId, blockedByUser]) => Array.from(blockedByUser.entries()).map(([deviceId, _deviceInfo]) => `${userId}/${deviceId}`)).flat(1)); - for (const [userId, userBlockedDevices] of Object.entries(blocked)) { - for (const [deviceId, device] of Object.entries(userBlockedDevices)) { - if (!session.blockedDevicesNotified[userId] || session.blockedDevicesNotified[userId][deviceId] === undefined) { - blockedMap[userId] = blockedMap[userId] || {}; - blockedMap[userId][deviceId] = { + // also, notify newly blocked devices that they're blocked + const blockedMap = new _utils.MapWithDefault(() => new Map()); + let blockedCount = 0; + for (const [userId, userBlockedDevices] of blocked) { + for (const [deviceId, device] of userBlockedDevices) { + var _session$blockedDevic; + if (((_session$blockedDevic = session.blockedDevicesNotified.get(userId)) === null || _session$blockedDevic === void 0 ? void 0 : _session$blockedDevic.get(deviceId)) === undefined) { + blockedMap.getOrCreate(userId).set(deviceId, { device - }; + }); + blockedCount++; } } } - - await this._notifyBlockedDevices(session, blockedMap); + if (blockedCount) { + this.prefixedLogger.debug(`Notifying ${blockedCount} newly blocked devices:`, Array.from(blockedMap.entries()).map(([userId, blockedByUser]) => Object.entries(blockedByUser).map(([deviceId, _deviceInfo]) => `${userId}/${deviceId}`)).flat(1)); + await this.notifyBlockedDevices(session, blockedMap); + this.prefixedLogger.debug(`Notified ${blockedCount} newly blocked devices`); + } })()]); - }; // helper which returns the session prepared by prepareSession + } + /** + * @internal + * + * + * @returns session + */ + async prepareNewSession(sharedHistory) { + const sessionId = this.olmDevice.createOutboundGroupSession(); + const key = this.olmDevice.getOutboundGroupSessionKey(sessionId); + await this.olmDevice.addInboundGroupSession(this.roomId, this.olmDevice.deviceCurve25519Key, [], sessionId, key.key, { + ed25519: this.olmDevice.deviceEd25519Key + }, false, { + sharedHistory + }); - function returnSession() { - return session; - } // first wait for the previous share to complete - - - const prom = this._setupPromise.then(prepareSession); // _setupPromise resolves to `session` whether or not the share succeeds - - - this._setupPromise = prom.then(returnSession, returnSession); // but we return a promise which only resolves if the share was successful. - - return prom.then(returnSession); -}; -/** - * @private - * - * @return {module:crypto/algorithms/megolm.OutboundSessionInfo} session - */ - - -MegolmEncryption.prototype._prepareNewSession = async function () { - const sessionId = this._olmDevice.createOutboundGroupSession(); - - const key = this._olmDevice.getOutboundGroupSessionKey(sessionId); - - await this._olmDevice.addInboundGroupSession(this._roomId, this._olmDevice.deviceCurve25519Key, [], sessionId, key.key, { - ed25519: this._olmDevice.deviceEd25519Key - }); - - if (this._crypto.backupInfo) { // don't wait for it to complete - this._crypto.backupGroupSession(this._roomId, this._olmDevice.deviceCurve25519Key, [], sessionId, key.key).catch(e => { - // This throws if the upload failed, but this is fine - // since it will have written it to the db and will retry. - _logger.logger.log("Failed to back up megolm session", e); + this.crypto.backupManager.backupGroupSession(this.olmDevice.deviceCurve25519Key, sessionId); + return new OutboundSessionInfo(sessionId, sharedHistory); + } + + /** + * Determines what devices in devicesByUser don't have an olm session as given + * in devicemap. + * + * @internal + * + * @param deviceMap - the devices that have olm sessions, as returned by + * olmlib.ensureOlmSessionsForDevices. + * @param devicesByUser - a map of user IDs to array of deviceInfo + * @param noOlmDevices - an array to fill with devices that don't have + * olm sessions + * + * @returns an array of devices that don't have olm sessions. If + * noOlmDevices is specified, then noOlmDevices will be returned. + */ + getDevicesWithoutSessions(deviceMap, devicesByUser, noOlmDevices = []) { + for (const [userId, devicesToShareWith] of devicesByUser) { + const sessionResults = deviceMap.get(userId); + for (const deviceInfo of devicesToShareWith) { + const deviceId = deviceInfo.deviceId; + const sessionResult = sessionResults === null || sessionResults === void 0 ? void 0 : sessionResults.get(deviceId); + if (!(sessionResult !== null && sessionResult !== void 0 && sessionResult.sessionId)) { + // no session with this device, probably because there + // were no one-time keys. + + noOlmDevices.push({ + userId, + deviceInfo + }); + sessionResults === null || sessionResults === void 0 || sessionResults.delete(deviceId); + + // ensureOlmSessionsForUsers has already done the logging, + // so just skip it. + continue; + } + } + } + return noOlmDevices; + } + + /** + * Splits the user device map into multiple chunks to reduce the number of + * devices we encrypt to per API call. + * + * @internal + * + * @param devicesByUser - map from userid to list of devices + * + * @returns the blocked devices, split into chunks + */ + splitDevices(devicesByUser) { + const maxDevicesPerRequest = 20; + + // use an array where the slices of a content map gets stored + let currentSlice = []; + const mapSlices = [currentSlice]; + for (const [userId, userDevices] of devicesByUser) { + for (const deviceInfo of userDevices.values()) { + currentSlice.push({ + userId: userId, + deviceInfo: deviceInfo.device + }); + } + + // We do this in the per-user loop as we prefer that all messages to the + // same user end up in the same API call to make it easier for the + // server (e.g. only have to send one EDU if a remote user, etc). This + // does mean that if a user has many devices we may go over the desired + // limit, but its not a hard limit so that is fine. + if (currentSlice.length > maxDevicesPerRequest) { + // the current slice is filled up. Start inserting into the next slice + currentSlice = []; + mapSlices.push(currentSlice); + } + } + if (currentSlice.length === 0) { + mapSlices.pop(); + } + return mapSlices; + } + + /** + * @internal + * + * + * @param chainIndex - current chain index + * + * @param userDeviceMap - mapping from userId to deviceInfo + * + * @param payload - fields to include in the encrypted payload + * + * @returns Promise which resolves once the key sharing + * for the given userDeviceMap is generated and has been sent. + */ + encryptAndSendKeysToDevices(session, chainIndex, devices, payload) { + return this.crypto.encryptAndSendToDevices(devices, payload).then(() => { + // store that we successfully uploaded the keys of the current slice + for (const device of devices) { + session.markSharedWithDevice(device.userId, device.deviceInfo.deviceId, device.deviceInfo.getIdentityKey(), chainIndex); + } + }).catch(error => { + this.prefixedLogger.error("failed to encryptAndSendToDevices", error); + throw error; }); } - return new OutboundSessionInfo(sessionId); -}; -/** - * Determines what devices in devicesByUser don't have an olm session as given - * in devicemap. - * - * @private - * - * @param {object} devicemap the devices that have olm sessions, as returned by - * olmlib.ensureOlmSessionsForDevices. - * @param {object} devicesByUser a map of user IDs to array of deviceInfo - * @param {array} [noOlmDevices] an array to fill with devices that don't have - * olm sessions - * - * @return {array} an array of devices that don't have olm sessions. If - * noOlmDevices is specified, then noOlmDevices will be returned. - */ - - -MegolmEncryption.prototype._getDevicesWithoutSessions = function (devicemap, devicesByUser, noOlmDevices) { - noOlmDevices = noOlmDevices || []; - - for (const [userId, devicesToShareWith] of Object.entries(devicesByUser)) { - const sessionResults = devicemap[userId]; - - for (const deviceInfo of devicesToShareWith) { + /** + * @internal + * + * + * @param userDeviceMap - list of blocked devices to notify + * + * @param payload - fields to include in the notification payload + * + * @returns Promise which resolves once the notifications + * for the given userDeviceMap is generated and has been sent. + */ + async sendBlockedNotificationsToDevices(session, userDeviceMap, payload) { + const contentMap = new _utils.MapWithDefault(() => new Map()); + for (const val of userDeviceMap) { + const userId = val.userId; + const blockedInfo = val.deviceInfo; + const deviceInfo = blockedInfo.deviceInfo; const deviceId = deviceInfo.deviceId; - const sessionResult = sessionResults[deviceId]; - - if (!sessionResult.sessionId) { - // no session with this device, probably because there - // were no one-time keys. - noOlmDevices.push({ - userId, - deviceInfo - }); - delete sessionResults[deviceId]; // ensureOlmSessionsForUsers has already done the logging, - // so just skip it. - - continue; - } - } - } - - return noOlmDevices; -}; -/** - * Splits the user device map into multiple chunks to reduce the number of - * devices we encrypt to per API call. - * - * @private - * - * @param {object} devicesByUser map from userid to list of devices - * - * @return {array>} the blocked devices, split into chunks - */ - - -MegolmEncryption.prototype._splitDevices = function (devicesByUser) { - const maxDevicesPerRequest = 20; // use an array where the slices of a content map gets stored - - let currentSlice = []; - const mapSlices = [currentSlice]; - - for (const [userId, userDevices] of Object.entries(devicesByUser)) { - for (const deviceInfo of Object.values(userDevices)) { - currentSlice.push({ - userId: userId, - deviceInfo: deviceInfo.device + const message = _objectSpread(_objectSpread({}, payload), {}, { + code: blockedInfo.code, + reason: blockedInfo.reason, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() }); - } // We do this in the per-user loop as we prefer that all messages to the - // same user end up in the same API call to make it easier for the - // server (e.g. only have to send one EDU if a remote user, etc). This - // does mean that if a user has many devices we may go over the desired - // limit, but its not a hard limit so that is fine. - - - if (currentSlice.length > maxDevicesPerRequest) { - // the current slice is filled up. Start inserting into the next slice - currentSlice = []; - mapSlices.push(currentSlice); - } - } - - if (currentSlice.length === 0) { - mapSlices.pop(); - } - - return mapSlices; -}; -/** - * @private - * - * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session - * - * @param {number} chainIndex current chain index - * - * @param {object} userDeviceMap - * mapping from userId to deviceInfo - * - * @param {object} payload fields to include in the encrypted payload - * - * @return {Promise} Promise which resolves once the key sharing - * for the given userDeviceMap is generated and has been sent. - */ - - -MegolmEncryption.prototype._encryptAndSendKeysToDevices = function (session, chainIndex, userDeviceMap, payload) { - const contentMap = {}; - const promises = []; - - for (let i = 0; i < userDeviceMap.length; i++) { - const encryptedContent = { - algorithm: olmlib.OLM_ALGORITHM, - sender_key: this._olmDevice.deviceCurve25519Key, - ciphertext: {} - }; - const val = userDeviceMap[i]; - const userId = val.userId; - const deviceInfo = val.deviceInfo; - const deviceId = deviceInfo.deviceId; - - if (!contentMap[userId]) { - contentMap[userId] = {}; - } - - contentMap[userId][deviceId] = encryptedContent; - promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, deviceInfo, payload)); - } - - return Promise.all(promises).then(() => { - // prune out any devices that encryptMessageForDevice could not encrypt for, - // in which case it will have just not added anything to the ciphertext object. - // There's no point sending messages to devices if we couldn't encrypt to them, - // since that's effectively a blank message. - for (const userId of Object.keys(contentMap)) { - for (const deviceId of Object.keys(contentMap[userId])) { - if (Object.keys(contentMap[userId][deviceId].ciphertext).length === 0) { - _logger.logger.log("No ciphertext for device " + userId + ":" + deviceId + ": pruning"); - - delete contentMap[userId][deviceId]; - } - } // No devices left for that user? Strip that too. - - - if (Object.keys(contentMap[userId]).length === 0) { - _logger.logger.log("Pruned all devices for user " + userId); - - delete contentMap[userId]; + if (message.code === "m.no_olm") { + delete message.room_id; + delete message.session_id; } - } // Is there anything left? + contentMap.getOrCreate(userId).set(deviceId, message); + } + await this.baseApis.sendToDevice("m.room_key.withheld", contentMap); + // record the fact that we notified these blocked devices + for (const [userId, userDeviceMap] of contentMap) { + for (const deviceId of userDeviceMap.keys()) { + session.markNotifiedBlockedDevice(userId, deviceId); + } + } + } - if (Object.keys(contentMap).length === 0) { - _logger.logger.log("No users left to send to: aborting"); - + /** + * Re-shares a megolm session key with devices if the key has already been + * sent to them. + * + * @param senderKey - The key of the originating device for the session + * @param sessionId - ID of the outbound session to share + * @param userId - ID of the user who owns the target device + * @param device - The target device + */ + async reshareKeyWithDevice(senderKey, sessionId, userId, device) { + var _obSessionInfo$shared; + const obSessionInfo = this.outboundSessions[sessionId]; + if (!obSessionInfo) { + this.prefixedLogger.debug(`megolm session ${senderKey}|${sessionId} not found: not re-sharing keys`); return; } - return this._baseApis.sendToDevice("m.room.encrypted", contentMap).then(() => { - // store that we successfully uploaded the keys of the current slice - for (const userId of Object.keys(contentMap)) { - for (const deviceId of Object.keys(contentMap[userId])) { - session.markSharedWithDevice(userId, deviceId, chainIndex); - } - } - }); - }); -}; -/** - * @private - * - * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session - * - * @param {array} userDeviceMap list of blocked devices to notify - * - * @param {object} payload fields to include in the notification payload - * - * @return {Promise} Promise which resolves once the notifications - * for the given userDeviceMap is generated and has been sent. - */ - - -MegolmEncryption.prototype._sendBlockedNotificationsToDevices = async function (session, userDeviceMap, payload) { - const contentMap = {}; - - for (const val of userDeviceMap) { - const userId = val.userId; - const blockedInfo = val.deviceInfo; - const deviceInfo = blockedInfo.deviceInfo; - const deviceId = deviceInfo.deviceId; - const message = Object.assign({}, payload); - message.code = blockedInfo.code; - message.reason = blockedInfo.reason; - - if (message.code === "m.no_olm") { - delete message.room_id; - delete message.session_id; + // The chain index of the key we previously sent this device + if (!obSessionInfo.sharedWithDevices.has(userId)) { + this.prefixedLogger.debug(`megolm session ${senderKey}|${sessionId} never shared with user ${userId}`); + return; + } + const sessionSharedData = (_obSessionInfo$shared = obSessionInfo.sharedWithDevices.get(userId)) === null || _obSessionInfo$shared === void 0 ? void 0 : _obSessionInfo$shared.get(device.deviceId); + if (sessionSharedData === undefined) { + this.prefixedLogger.debug(`megolm session ${senderKey}|${sessionId} never shared with device ${userId}:${device.deviceId}`); + return; + } + if (sessionSharedData.deviceKey !== device.getIdentityKey()) { + this.prefixedLogger.warn(`Megolm session ${senderKey}|${sessionId} has been shared with device ${device.deviceId} but ` + `with identity key ${sessionSharedData.deviceKey}. Key is now ${device.getIdentityKey()}!`); + return; } - if (!contentMap[userId]) { - contentMap[userId] = {}; + // get the key from the inbound session: the outbound one will already + // have been ratcheted to the next chain index. + const key = await this.olmDevice.getInboundGroupSessionKey(this.roomId, senderKey, sessionId, sessionSharedData.messageIndex); + if (!key) { + this.prefixedLogger.warn(`No inbound session key found for megolm session ${senderKey}|${sessionId}: not re-sharing keys`); + return; } - - contentMap[userId][deviceId] = message; - } - - await this._baseApis.sendToDevice("org.matrix.room_key.withheld", contentMap); // store that we successfully uploaded the keys of the current slice - - for (const userId of Object.keys(contentMap)) { - for (const deviceId of Object.keys(contentMap[userId])) { - session.markNotifiedBlockedDevice(userId, deviceId); - } - } -}; -/** - * Re-shares a megolm session key with devices if the key has already been - * sent to them. - * - * @param {string} senderKey The key of the originating device for the session - * @param {string} sessionId ID of the outbound session to share - * @param {string} userId ID of the user who owns the target device - * @param {module:crypto/deviceinfo} device The target device - */ - - -MegolmEncryption.prototype.reshareKeyWithDevice = async function (senderKey, sessionId, userId, device) { - const obSessionInfo = this._outboundSessions[sessionId]; - - if (!obSessionInfo) { - _logger.logger.debug(`megolm session ${sessionId} not found: not re-sharing keys`); - - return; - } // The chain index of the key we previously sent this device - - - if (obSessionInfo.sharedWithDevices[userId] === undefined) { - _logger.logger.debug(`megolm session ${sessionId} never shared with user ${userId}`); - - return; - } - - const sentChainIndex = obSessionInfo.sharedWithDevices[userId][device.deviceId]; - - if (sentChainIndex === undefined) { - _logger.logger.debug("megolm session ID " + sessionId + " never shared with device " + userId + ":" + device.deviceId); - - return; - } // get the key from the inbound session: the outbound one will already - // have been ratcheted to the next chain index. - - - const key = await this._olmDevice.getInboundGroupSessionKey(this._roomId, senderKey, sessionId, sentChainIndex); - - if (!key) { - _logger.logger.warn(`No inbound session key found for megolm ${sessionId}: not re-sharing keys`); - - return; - } - - await olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, { - [userId]: [device] - }); - const payload = { - type: "m.forwarded_room_key", - content: { - algorithm: olmlib.MEGOLM_ALGORITHM, - room_id: this._roomId, - session_id: sessionId, - session_key: key.key, - chain_index: key.chain_index, - sender_key: senderKey, - sender_claimed_ed25519_key: key.sender_claimed_ed25519_key, - forwarding_curve25519_key_chain: key.forwarding_curve25519_key_chain - } - }; - const encryptedContent = { - algorithm: olmlib.OLM_ALGORITHM, - sender_key: this._olmDevice.deviceCurve25519Key, - ciphertext: {} - }; - await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, device, payload); - await this._baseApis.sendToDevice("m.room.encrypted", { - [userId]: { - [device.deviceId]: encryptedContent - } - }); - - _logger.logger.debug(`Re-shared key for megolm session ${sessionId} ` + `with ${userId}:${device.deviceId}`); -}; -/** - * @private - * - * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session - * - * @param {object} key the session key as returned by - * OlmDevice.getOutboundGroupSessionKey - * - * @param {object} payload the base to-device message payload for sharing keys - * - * @param {object} devicesByUser - * map from userid to list of devices - * - * @param {array} errorDevices - * array that will be populated with the devices that we can't get an - * olm session for - * - * @param {Number} [otkTimeout] The timeout in milliseconds when requesting - * one-time keys for establishing new olm sessions. - * - * @param {Array} [failedServers] An array to fill with remote servers that - * failed to respond to one-time-key requests. - */ - - -MegolmEncryption.prototype._shareKeyWithDevices = async function (session, key, payload, devicesByUser, errorDevices, otkTimeout, failedServers) { - const devicemap = await olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser, otkTimeout, failedServers); - - this._getDevicesWithoutSessions(devicemap, devicesByUser, errorDevices); - - await this._shareKeyWithOlmSessions(session, key, payload, devicemap); -}; - -MegolmEncryption.prototype._shareKeyWithOlmSessions = async function (session, key, payload, devicemap) { - const userDeviceMaps = this._splitDevices(devicemap); - - for (let i = 0; i < userDeviceMaps.length; i++) { - try { - await this._encryptAndSendKeysToDevices(session, key.chain_index, userDeviceMaps[i], payload); - - _logger.logger.log(`Completed megolm keyshare for ${session.sessionId} ` + `in ${this._roomId} (slice ${i + 1}/${userDeviceMaps.length})`); - } catch (e) { - _logger.logger.log(`megolm keyshare for ${session.sessionId} in ${this._roomId} ` + `(slice ${i + 1}/${userDeviceMaps.length}) failed`); - - throw e; - } - } -}; -/** - * Notify devices that we weren't able to create olm sessions. - * - * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session - * - * @param {object} key - * - * @param {Array} failedDevices the devices that we were unable to - * create olm sessions for, as returned by _shareKeyWithDevices - */ - - -MegolmEncryption.prototype._notifyFailedOlmDevices = async function (session, key, failedDevices) { - // mark the devices that failed as "handled" because we don't want to try - // to claim a one-time-key for dead devices on every message. - for (const { - userId, - deviceInfo - } of failedDevices) { - const deviceId = deviceInfo.deviceId; - session.markSharedWithDevice(userId, deviceId, key.chain_index); - } - - const filteredFailedDevices = await this._olmDevice.filterOutNotifiedErrorDevices(failedDevices); - const blockedMap = {}; - - for (const { - userId, - deviceInfo - } of filteredFailedDevices) { - blockedMap[userId] = blockedMap[userId] || {}; // we use a similar format to what - // olmlib.ensureOlmSessionsForDevices returns, so that - // we can use the same function to split - - blockedMap[userId][deviceInfo.deviceId] = { - device: { - code: "m.no_olm", - reason: _OlmDevice.WITHHELD_MESSAGES["m.no_olm"], - deviceInfo + await olmlib.ensureOlmSessionsForDevices(this.olmDevice, this.baseApis, new Map([[userId, [device]]])); + const payload = { + type: "m.forwarded_room_key", + content: { + "algorithm": olmlib.MEGOLM_ALGORITHM, + "room_id": this.roomId, + "session_id": sessionId, + "session_key": key.key, + "chain_index": key.chain_index, + "sender_key": senderKey, + "sender_claimed_ed25519_key": key.sender_claimed_ed25519_key, + "forwarding_curve25519_key_chain": key.forwarding_curve25519_key_chain, + "org.matrix.msc3061.shared_history": key.shared_history || false } }; - } // send the notifications - - - await this._notifyBlockedDevices(session, blockedMap); -}; -/** - * Notify blocked devices that they have been blocked. - * - * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session - * - * @param {object} devicesByUser - * map from userid to device ID to blocked data - */ - - -MegolmEncryption.prototype._notifyBlockedDevices = async function (session, devicesByUser) { - const payload = { - room_id: this._roomId, - session_id: session.sessionId, - algorithm: olmlib.MEGOLM_ALGORITHM, - sender_key: this._olmDevice.deviceCurve25519Key - }; - - const userDeviceMaps = this._splitDevices(devicesByUser); - - for (let i = 0; i < userDeviceMaps.length; i++) { - try { - await this._sendBlockedNotificationsToDevices(session, userDeviceMaps[i], payload); - - _logger.logger.log(`Completed blacklist notification for ${session.sessionId} ` + `in ${this._roomId} (slice ${i + 1}/${userDeviceMaps.length})`); - } catch (e) { - _logger.logger.log(`blacklist notification for ${session.sessionId} in ` + `${this._roomId} (slice ${i + 1}/${userDeviceMaps.length}) failed`); - - throw e; - } - } -}; -/** - * Perform any background tasks that can be done before a message is ready to - * send, in order to speed up sending of the message. - * - * @param {module:models/room} room the room the event is in - */ - - -MegolmEncryption.prototype.prepareToEncrypt = function (room) { - if (this.encryptionPreparation) { - // We're already preparing something, so don't do anything else. - // FIXME: check if we need to restart - // (https://github.com/matrix-org/matrix-js-sdk/issues/1255) - return; + const encryptedContent = { + algorithm: olmlib.OLM_ALGORITHM, + sender_key: this.olmDevice.deviceCurve25519Key, + ciphertext: {}, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() + }; + await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this.userId, this.deviceId, this.olmDevice, userId, device, payload); + await this.baseApis.sendToDevice("m.room.encrypted", new Map([[userId, new Map([[device.deviceId, encryptedContent]])]])); + this.prefixedLogger.debug(`Re-shared key for megolm session ${senderKey}|${sessionId} with ${userId}:${device.deviceId}`); } - _logger.logger.debug(`Preparing to encrypt events for ${this._roomId}`); - - this.encryptionPreparation = (async () => { - const [devicesInRoom, blocked] = await this._getDevicesInRoom(room); - - if (this._crypto.getGlobalErrorOnUnknownDevices()) { - // Drop unknown devices for now. When the message gets sent, we'll - // throw an error, but we'll still be prepared to send to the known - // devices. - this._removeUnknownDevices(devicesInRoom); - } - - await this._ensureOutboundSession(devicesInRoom, blocked, true); - delete this.encryptionPreparation; - })(); -}; -/** - * @inheritdoc - * - * @param {module:models/room} room - * @param {string} eventType - * @param {object} content plaintext event content - * - * @return {Promise} Promise which resolves to the new event body - */ - - -MegolmEncryption.prototype.encryptMessage = async function (room, eventType, content) { - _logger.logger.log(`Starting to encrypt event for ${this._roomId}`); - - if (this.encryptionPreparation) { - // If we started sending keys, wait for it to be done. - // FIXME: check if we need to cancel - // (https://github.com/matrix-org/matrix-js-sdk/issues/1255) - try { - await this.encryptionPreparation; - } catch (e) {// ignore any errors -- if the preparation failed, we'll just - // restart everything here - } + /** + * @internal + * + * + * @param key - the session key as returned by + * OlmDevice.getOutboundGroupSessionKey + * + * @param payload - the base to-device message payload for sharing keys + * + * @param devicesByUser - map from userid to list of devices + * + * @param errorDevices - array that will be populated with the devices that we can't get an + * olm session for + * + * @param otkTimeout - The timeout in milliseconds when requesting + * one-time keys for establishing new olm sessions. + * + * @param failedServers - An array to fill with remote servers that + * failed to respond to one-time-key requests. + */ + async shareKeyWithDevices(session, key, payload, devicesByUser, errorDevices, otkTimeout, failedServers) { + const devicemap = await olmlib.ensureOlmSessionsForDevices(this.olmDevice, this.baseApis, devicesByUser, false, otkTimeout, failedServers, this.prefixedLogger); + this.getDevicesWithoutSessions(devicemap, devicesByUser, errorDevices); + await this.shareKeyWithOlmSessions(session, key, payload, devicemap); } - - const [devicesInRoom, blocked] = await this._getDevicesInRoom(room); // check if any of these devices are not yet known to the user. - // if so, warn the user so they can verify or ignore. - - if (this._crypto.getGlobalErrorOnUnknownDevices()) { - this._checkForUnknownDevices(devicesInRoom); - } - - const session = await this._ensureOutboundSession(devicesInRoom, blocked); - const payloadJson = { - room_id: this._roomId, - type: eventType, - content: content - }; - - const ciphertext = this._olmDevice.encryptGroupMessage(session.sessionId, JSON.stringify(payloadJson)); - - const encryptedContent = { - algorithm: olmlib.MEGOLM_ALGORITHM, - sender_key: this._olmDevice.deviceCurve25519Key, - ciphertext: ciphertext, - session_id: session.sessionId, - // Include our device ID so that recipients can send us a - // m.new_device message if they don't have our session key. - // XXX: Do we still need this now that m.new_device messages - // no longer exist since #483? - device_id: this._deviceId - }; - session.useCount++; - return encryptedContent; -}; -/** - * Forces the current outbound group session to be discarded such - * that another one will be created next time an event is sent. - * - * This should not normally be necessary. - */ - - -MegolmEncryption.prototype.forceDiscardSession = function () { - this._setupPromise = this._setupPromise.then(() => null); -}; -/** - * Checks the devices we're about to send to and see if any are entirely - * unknown to the user. If so, warn the user, and mark them as known to - * give the user a chance to go verify them before re-sending this message. - * - * @param {Object} devicesInRoom userId -> {deviceId -> object} - * devices we should shared the session with. - */ - - -MegolmEncryption.prototype._checkForUnknownDevices = function (devicesInRoom) { - const unknownDevices = {}; - Object.keys(devicesInRoom).forEach(userId => { - Object.keys(devicesInRoom[userId]).forEach(deviceId => { - const device = devicesInRoom[userId][deviceId]; - - if (device.isUnverified() && !device.isKnown()) { - if (!unknownDevices[userId]) { - unknownDevices[userId] = {}; - } - - unknownDevices[userId][deviceId] = device; + async shareKeyWithOlmSessions(session, key, payload, deviceMap) { + const userDeviceMaps = this.splitDevices(deviceMap); + for (let i = 0; i < userDeviceMaps.length; i++) { + const taskDetail = `megolm keys for ${session.sessionId} (slice ${i + 1}/${userDeviceMaps.length})`; + try { + this.prefixedLogger.debug(`Sharing ${taskDetail}`, userDeviceMaps[i].map(d => `${d.userId}/${d.deviceInfo.deviceId}`)); + await this.encryptAndSendKeysToDevices(session, key.chain_index, userDeviceMaps[i], payload); + this.prefixedLogger.debug(`Shared ${taskDetail}`); + } catch (e) { + this.prefixedLogger.error(`Failed to share ${taskDetail}`); + throw e; } + } + } + + /** + * Notify devices that we weren't able to create olm sessions. + * + * + * + * @param failedDevices - the devices that we were unable to + * create olm sessions for, as returned by shareKeyWithDevices + */ + async notifyFailedOlmDevices(session, key, failedDevices) { + this.prefixedLogger.debug(`Notifying ${failedDevices.length} devices we failed to create Olm sessions`); + + // mark the devices that failed as "handled" because we don't want to try + // to claim a one-time-key for dead devices on every message. + for (const { + userId, + deviceInfo + } of failedDevices) { + const deviceId = deviceInfo.deviceId; + session.markSharedWithDevice(userId, deviceId, deviceInfo.getIdentityKey(), key.chain_index); + } + const unnotifiedFailedDevices = await this.olmDevice.filterOutNotifiedErrorDevices(failedDevices); + this.prefixedLogger.debug(`Need to notify ${unnotifiedFailedDevices.length} failed devices which haven't been notified before`); + const blockedMap = new _utils.MapWithDefault(() => new Map()); + for (const { + userId, + deviceInfo + } of unnotifiedFailedDevices) { + // we use a similar format to what + // olmlib.ensureOlmSessionsForDevices returns, so that + // we can use the same function to split + blockedMap.getOrCreate(userId).set(deviceInfo.deviceId, { + device: { + code: "m.no_olm", + reason: _OlmDevice.WITHHELD_MESSAGES["m.no_olm"], + deviceInfo + } + }); + } + + // send the notifications + await this.notifyBlockedDevices(session, blockedMap); + this.prefixedLogger.debug(`Notified ${unnotifiedFailedDevices.length} devices we failed to create Olm sessions`); + } + + /** + * Notify blocked devices that they have been blocked. + * + * + * @param devicesByUser - map from userid to device ID to blocked data + */ + async notifyBlockedDevices(session, devicesByUser) { + const payload = { + room_id: this.roomId, + session_id: session.sessionId, + algorithm: olmlib.MEGOLM_ALGORITHM, + sender_key: this.olmDevice.deviceCurve25519Key + }; + const userDeviceMaps = this.splitDevices(devicesByUser); + for (let i = 0; i < userDeviceMaps.length; i++) { + try { + await this.sendBlockedNotificationsToDevices(session, userDeviceMaps[i], payload); + this.prefixedLogger.debug(`Completed blacklist notification for ${session.sessionId} ` + `(slice ${i + 1}/${userDeviceMaps.length})`); + } catch (e) { + this.prefixedLogger.debug(`blacklist notification for ${session.sessionId} ` + `(slice ${i + 1}/${userDeviceMaps.length}) failed`); + throw e; + } + } + } + + /** + * Perform any background tasks that can be done before a message is ready to + * send, in order to speed up sending of the message. + * + * @param room - the room the event is in + * @returns A function that, when called, will stop the preparation + */ + prepareToEncrypt(room) { + if (room.roomId !== this.roomId) { + throw new Error("MegolmEncryption.prepareToEncrypt called on unexpected room"); + } + if (this.encryptionPreparation != null) { + // We're already preparing something, so don't do anything else. + const elapsedTime = Date.now() - this.encryptionPreparation.startTime; + this.prefixedLogger.debug(`Already started preparing to encrypt for this room ${elapsedTime}ms ago, skipping`); + return this.encryptionPreparation.cancel; + } + this.prefixedLogger.debug("Preparing to encrypt events"); + let cancelled = false; + const isCancelled = () => cancelled; + this.encryptionPreparation = { + startTime: Date.now(), + promise: (async () => { + try { + // Attempt to enumerate the devices in room, and gracefully + // handle cancellation if it occurs. + const getDevicesResult = await this.getDevicesInRoom(room, false, isCancelled); + if (getDevicesResult === null) return; + const [devicesInRoom, blocked] = getDevicesResult; + if (this.crypto.globalErrorOnUnknownDevices) { + // Drop unknown devices for now. When the message gets sent, we'll + // throw an error, but we'll still be prepared to send to the known + // devices. + this.removeUnknownDevices(devicesInRoom); + } + this.prefixedLogger.debug("Ensuring outbound megolm session"); + await this.ensureOutboundSession(room, devicesInRoom, blocked, true); + this.prefixedLogger.debug("Ready to encrypt events"); + } catch (e) { + this.prefixedLogger.error("Failed to prepare to encrypt events", e); + } finally { + delete this.encryptionPreparation; + } + })(), + cancel: () => { + // The caller has indicated that the process should be cancelled, + // so tell the promise that we'd like to halt, and reset the preparation state. + cancelled = true; + delete this.encryptionPreparation; + } + }; + return this.encryptionPreparation.cancel; + } + + /** + * @param content - plaintext event content + * + * @returns Promise which resolves to the new event body + */ + async encryptMessage(room, eventType, content) { + this.prefixedLogger.debug("Starting to encrypt event"); + if (this.encryptionPreparation != null) { + // If we started sending keys, wait for it to be done. + // FIXME: check if we need to cancel + // (https://github.com/matrix-org/matrix-js-sdk/issues/1255) + try { + await this.encryptionPreparation.promise; + } catch (e) { + // ignore any errors -- if the preparation failed, we'll just + // restart everything here + } + } + + /** + * When using in-room messages and the room has encryption enabled, + * clients should ensure that encryption does not hinder the verification. + */ + const forceDistributeToUnverified = this.isVerificationEvent(eventType, content); + const [devicesInRoom, blocked] = await this.getDevicesInRoom(room, forceDistributeToUnverified); + + // check if any of these devices are not yet known to the user. + // if so, warn the user so they can verify or ignore. + if (this.crypto.globalErrorOnUnknownDevices) { + this.checkForUnknownDevices(devicesInRoom); + } + const session = await this.ensureOutboundSession(room, devicesInRoom, blocked); + const payloadJson = { + room_id: this.roomId, + type: eventType, + content: content + }; + const ciphertext = this.olmDevice.encryptGroupMessage(session.sessionId, JSON.stringify(payloadJson)); + const encryptedContent = { + algorithm: olmlib.MEGOLM_ALGORITHM, + sender_key: this.olmDevice.deviceCurve25519Key, + ciphertext: ciphertext, + session_id: session.sessionId, + // Include our device ID so that recipients can send us a + // m.new_device message if they don't have our session key. + // XXX: Do we still need this now that m.new_device messages + // no longer exist since #483? + device_id: this.deviceId + }; + session.useCount++; + return encryptedContent; + } + isVerificationEvent(eventType, content) { + switch (eventType) { + case _event.EventType.KeyVerificationCancel: + case _event.EventType.KeyVerificationDone: + case _event.EventType.KeyVerificationMac: + case _event.EventType.KeyVerificationStart: + case _event.EventType.KeyVerificationKey: + case _event.EventType.KeyVerificationReady: + case _event.EventType.KeyVerificationAccept: + { + return true; + } + case _event.EventType.RoomMessage: + { + return content["msgtype"] === _event.MsgType.KeyVerificationRequest; + } + default: + { + return false; + } + } + } + + /** + * Forces the current outbound group session to be discarded such + * that another one will be created next time an event is sent. + * + * This should not normally be necessary. + */ + forceDiscardSession() { + this.setupPromise = this.setupPromise.then(() => null); + } + + /** + * Checks the devices we're about to send to and see if any are entirely + * unknown to the user. If so, warn the user, and mark them as known to + * give the user a chance to go verify them before re-sending this message. + * + * @param devicesInRoom - `userId -> {deviceId -> object}` + * devices we should shared the session with. + */ + checkForUnknownDevices(devicesInRoom) { + const unknownDevices = new _utils.MapWithDefault(() => new Map()); + for (const [userId, userDevices] of devicesInRoom) { + for (const [deviceId, device] of userDevices) { + if (device.isUnverified() && !device.isKnown()) { + unknownDevices.getOrCreate(userId).set(deviceId, device); + } + } + } + if (unknownDevices.size) { + // it'd be kind to pass unknownDevices up to the user in this error + throw new _base.UnknownDeviceError("This room contains unknown devices which have not been verified. " + "We strongly recommend you verify them before continuing.", unknownDevices); + } + } + + /** + * Remove unknown devices from a set of devices. The devicesInRoom parameter + * will be modified. + * + * @param devicesInRoom - `userId -> {deviceId -> object}` + * devices we should shared the session with. + */ + removeUnknownDevices(devicesInRoom) { + for (const [userId, userDevices] of devicesInRoom) { + for (const [deviceId, device] of userDevices) { + if (device.isUnverified() && !device.isKnown()) { + userDevices.delete(deviceId); + } + } + if (userDevices.size === 0) { + devicesInRoom.delete(userId); + } + } + } + + /** + * Get the list of unblocked devices for all users in the room + * + * @param forceDistributeToUnverified - if set to true will include the unverified devices + * even if setting is set to block them (useful for verification) + * @param isCancelled - will cause the procedure to abort early if and when it starts + * returning `true`. If omitted, cancellation won't happen. + * + * @returns Promise which resolves to `null`, or an array whose + * first element is a {@link DeviceInfoMap} indicating + * the devices that messages should be encrypted to, and whose second + * element is a map from userId to deviceId to data indicating the devices + * that are in the room but that have been blocked. + * If `isCancelled` is provided and returns `true` while processing, `null` + * will be returned. + * If `isCancelled` is not provided, the Promise will never resolve to `null`. + */ + + async getDevicesInRoom(room, forceDistributeToUnverified = false, isCancelled) { + const members = await room.getEncryptionTargetMembers(); + this.prefixedLogger.debug(`Encrypting for users (shouldEncryptForInvitedMembers: ${room.shouldEncryptForInvitedMembers()}):`, members.map(u => `${u.userId} (${u.membership})`)); + const roomMembers = members.map(function (u) { + return u.userId; }); - }); - if (Object.keys(unknownDevices).length) { - // it'd be kind to pass unknownDevices up to the user in this error - throw new _base.UnknownDeviceError("This room contains unknown devices which have not been verified. " + "We strongly recommend you verify them before continuing.", unknownDevices); - } -}; -/** - * Remove unknown devices from a set of devices. The devicesInRoom parameter - * will be modified. - * - * @param {Object} devicesInRoom userId -> {deviceId -> object} - * devices we should shared the session with. - */ - - -MegolmEncryption.prototype._removeUnknownDevices = function (devicesInRoom) { - for (const [userId, userDevices] of Object.entries(devicesInRoom)) { - for (const [deviceId, device] of Object.entries(userDevices)) { - if (device.isUnverified() && !device.isKnown()) { - delete userDevices[deviceId]; - } + // The global value is treated as a default for when rooms don't specify a value. + let isBlacklisting = this.crypto.globalBlacklistUnverifiedDevices; + const isRoomBlacklisting = room.getBlacklistUnverifiedDevices(); + if (typeof isRoomBlacklisting === "boolean") { + isBlacklisting = isRoomBlacklisting; } - if (Object.keys(userDevices).length === 0) { - delete devicesInRoom[userId]; + // We are happy to use a cached version here: we assume that if we already + // have a list of the user's devices, then we already share an e2e room + // with them, which means that they will have announced any new devices via + // device_lists in their /sync response. This cache should then be maintained + // using all the device_lists changes and left fields. + // See https://github.com/vector-im/element-web/issues/2305 for details. + const devices = await this.crypto.downloadKeys(roomMembers, false); + if ((isCancelled === null || isCancelled === void 0 ? void 0 : isCancelled()) === true) { + return null; } - } -}; -/** - * Get the list of unblocked devices for all users in the room - * - * @param {module:models/room} room - * - * @return {Promise} Promise which resolves to an array whose - * first element is a map from userId to deviceId to deviceInfo indicating - * the devices that messages should be encrypted to, and whose second - * element is a map from userId to deviceId to data indicating the devices - * that are in the room but that have been blocked - */ - - -MegolmEncryption.prototype._getDevicesInRoom = async function (room) { - const members = await room.getEncryptionTargetMembers(); - const roomMembers = utils.map(members, function (u) { - return u.userId; - }); // The global value is treated as a default for when rooms don't specify a value. - - let isBlacklisting = this._crypto.getGlobalBlacklistUnverifiedDevices(); - - if (typeof room.getBlacklistUnverifiedDevices() === 'boolean') { - isBlacklisting = room.getBlacklistUnverifiedDevices(); - } // We are happy to use a cached version here: we assume that if we already - // have a list of the user's devices, then we already share an e2e room - // with them, which means that they will have announced any new devices via - // device_lists in their /sync response. This cache should then be maintained - // using all the device_lists changes and left fields. - // See https://github.com/vector-im/element-web/issues/2305 for details. - - - const devices = await this._crypto.downloadKeys(roomMembers, false); - const blocked = {}; // remove any blocked devices - - for (const userId in devices) { - if (!devices.hasOwnProperty(userId)) { - continue; - } - - const userDevices = devices[userId]; - - for (const deviceId in userDevices) { - if (!userDevices.hasOwnProperty(deviceId)) { - continue; - } - - const deviceTrust = this._crypto.checkDeviceTrust(userId, deviceId); - - if (userDevices[deviceId].isBlocked() || !deviceTrust.isVerified() && isBlacklisting) { - if (!blocked[userId]) { - blocked[userId] = {}; + const blocked = new _utils.MapWithDefault(() => new Map()); + // remove any blocked devices + for (const [userId, userDevices] of devices) { + for (const [deviceId, userDevice] of userDevices) { + // Yield prior to checking each device so that we don't block + // updating/rendering for too long. + // See https://github.com/vector-im/element-web/issues/21612 + if (isCancelled !== undefined) await (0, _utils.immediate)(); + if ((isCancelled === null || isCancelled === void 0 ? void 0 : isCancelled()) === true) return null; + const deviceTrust = this.crypto.checkDeviceTrust(userId, deviceId); + if (userDevice.isBlocked() || !deviceTrust.isVerified() && isBlacklisting && !forceDistributeToUnverified) { + const blockedDevices = blocked.getOrCreate(userId); + const isBlocked = userDevice.isBlocked(); + blockedDevices.set(deviceId, { + code: isBlocked ? "m.blacklisted" : "m.unverified", + reason: _OlmDevice.WITHHELD_MESSAGES[isBlocked ? "m.blacklisted" : "m.unverified"], + deviceInfo: userDevice + }); + userDevices.delete(deviceId); } - - const blockedInfo = userDevices[deviceId].isBlocked() ? { - code: "m.blacklisted", - reason: _OlmDevice.WITHHELD_MESSAGES["m.blacklisted"] - } : { - code: "m.unverified", - reason: _OlmDevice.WITHHELD_MESSAGES["m.unverified"] - }; - blockedInfo.deviceInfo = userDevices[deviceId]; - blocked[userId][deviceId] = blockedInfo; - delete userDevices[deviceId]; } } + return [devices, blocked]; } +} - return [devices, blocked]; -}; /** * Megolm decryption implementation * - * @constructor - * @extends {module:crypto/algorithms/DecryptionAlgorithm} - * - * @param {object} params parameters, as per - * {@link module:crypto/algorithms/DecryptionAlgorithm} + * @param params - parameters, as per {@link DecryptionAlgorithm} */ - - -function MegolmDecryption(params) { - (0, utils.polyfillSuper)(this, _base.DecryptionAlgorithm, params); // events which we couldn't decrypt due to unknown sessions / indexes: map from - // senderKey|sessionId to Set of MatrixEvents - - this._pendingEvents = {}; // this gets stubbed out by the unit tests. - - this.olmlib = olmlib; -} - -utils.inherits(MegolmDecryption, _base.DecryptionAlgorithm); -const PROBLEM_DESCRIPTIONS = { - no_olm: "The sender was unable to establish a secure channel.", - unknown: "The secure channel with the sender was corrupted." -}; -/** - * @inheritdoc - * - * @param {MatrixEvent} event - * - * returns a promise which resolves to a - * {@link module:crypto~EventDecryptionResult} once we have finished - * decrypting, or rejects with an `algorithms.DecryptionError` if there is a - * problem decrypting the event. - */ - -MegolmDecryption.prototype.decryptEvent = async function (event) { - const content = event.getWireContent(); - - if (!content.sender_key || !content.session_id || !content.ciphertext) { - throw new _base.DecryptionError("MEGOLM_MISSING_FIELDS", "Missing fields in input"); - } // we add the event to the pending list *before* we start decryption. - // - // then, if the key turns up while decryption is in progress (and - // decryption fails), we will schedule a retry. - // (fixes https://github.com/vector-im/element-web/issues/5001) - - - this._addEventToPendingList(event); - - let res; - - try { - res = await this._olmDevice.decryptGroupMessage(event.getRoomId(), content.sender_key, content.session_id, content.ciphertext, event.getId(), event.getTs()); - } catch (e) { - if (e.name === "DecryptionError") { - // re-throw decryption errors as-is - throw e; - } - - let errorCode = "OLM_DECRYPT_GROUP_MESSAGE_ERROR"; - - if (e && e.message === 'OLM.UNKNOWN_MESSAGE_INDEX') { - this._requestKeysForEvent(event); - - errorCode = 'OLM_UNKNOWN_MESSAGE_INDEX'; - } - - throw new _base.DecryptionError(errorCode, e ? e.toString() : "Unknown Error: Error is undefined", { - session: content.sender_key + '|' + content.session_id - }); +exports.MegolmEncryption = MegolmEncryption; +class MegolmDecryption extends _base.DecryptionAlgorithm { + constructor(params) { + super(params); + // events which we couldn't decrypt due to unknown sessions / + // indexes, or which we could only decrypt with untrusted keys: + // map from senderKey|sessionId to Set of MatrixEvents + (0, _defineProperty2.default)(this, "pendingEvents", new Map()); + // this gets stubbed out by the unit tests. + (0, _defineProperty2.default)(this, "olmlib", olmlib); + this.roomId = params.roomId; + this.prefixedLogger = _logger.logger.getChild(`[${this.roomId} decryption]`); } - if (res === null) { - // We've got a message for a session we don't have. + /** + * returns a promise which resolves to a + * {@link EventDecryptionResult} once we have finished + * decrypting, or rejects with an `algorithms.DecryptionError` if there is a + * problem decrypting the event. + */ + async decryptEvent(event) { + const content = event.getWireContent(); + if (!content.sender_key || !content.session_id || !content.ciphertext) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.MEGOLM_MISSING_FIELDS, "Missing fields in input"); + } + + // we add the event to the pending list *before* we start decryption. // - // (XXX: We might actually have received this key since we started - // decrypting, in which case we'll have scheduled a retry, and this - // request will be redundant. We could probably check to see if the - // event is still in the pending list; if not, a retry will have been - // scheduled, so we needn't send out the request here.) - this._requestKeysForEvent(event); // See if there was a problem with the olm session at the time the - // event was sent. Use a fuzz factor of 2 minutes. - - - const problem = await this._olmDevice.sessionMayHaveProblems(content.sender_key, event.getTs() - 120000); - - if (problem) { - let problemDescription = PROBLEM_DESCRIPTIONS[problem.type] || PROBLEM_DESCRIPTIONS.unknown; - - if (problem.fixed) { - problemDescription += " Trying to create a new secure channel and re-requesting the keys."; + // then, if the key turns up while decryption is in progress (and + // decryption fails), we will schedule a retry. + // (fixes https://github.com/vector-im/element-web/issues/5001) + this.addEventToPendingList(event); + let res; + try { + res = await this.olmDevice.decryptGroupMessage(event.getRoomId(), content.sender_key, content.session_id, content.ciphertext, event.getId(), event.getTs()); + } catch (e) { + if (e.name === "DecryptionError") { + // re-throw decryption errors as-is + throw e; } - - throw new _base.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID", problemDescription, { - session: content.sender_key + '|' + content.session_id + let errorCode = _cryptoApi.DecryptionFailureCode.OLM_DECRYPT_GROUP_MESSAGE_ERROR; + if ((e === null || e === void 0 ? void 0 : e.message) === "OLM.UNKNOWN_MESSAGE_INDEX") { + this.requestKeysForEvent(event); + errorCode = _cryptoApi.DecryptionFailureCode.OLM_UNKNOWN_MESSAGE_INDEX; + } + throw new _CryptoBackend.DecryptionError(errorCode, e instanceof Error ? e.message : "Unknown Error: Error is undefined", { + session: content.sender_key + "|" + content.session_id }); } + if (res === null) { + // We've got a message for a session we don't have. + // try and get the missing key from the backup first + this.crypto.backupManager.queryKeyBackupRateLimited(event.getRoomId(), content.session_id).catch(() => {}); - throw new _base.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID", "The sender's device has not sent us the keys for this message.", { - session: content.sender_key + '|' + content.session_id - }); - } // success. We can remove the event from the pending list, if that hasn't - // already happened. + // (XXX: We might actually have received this key since we started + // decrypting, in which case we'll have scheduled a retry, and this + // request will be redundant. We could probably check to see if the + // event is still in the pending list; if not, a retry will have been + // scheduled, so we needn't send out the request here.) + this.requestKeysForEvent(event); - - this._removeEventFromPendingList(event); - - const payload = JSON.parse(res.result); // belt-and-braces check that the room id matches that indicated by the HS - // (this is somewhat redundant, since the megolm session is scoped to the - // room, so neither the sender nor a MITM can lie about the room_id). - - if (payload.room_id !== event.getRoomId()) { - throw new _base.DecryptionError("MEGOLM_BAD_ROOM", "Message intended for room " + payload.room_id); - } - - return { - clearEvent: payload, - senderCurve25519Key: res.senderKey, - claimedEd25519Key: res.keysClaimed.ed25519, - forwardingCurve25519KeyChain: res.forwardingCurve25519KeyChain, - untrusted: res.untrusted - }; -}; - -MegolmDecryption.prototype._requestKeysForEvent = function (event) { - const wireContent = event.getWireContent(); - const recipients = event.getKeyRequestRecipients(this._userId); - - this._crypto.requestRoomKey({ - room_id: event.getRoomId(), - algorithm: wireContent.algorithm, - sender_key: wireContent.sender_key, - session_id: wireContent.session_id - }, recipients); -}; -/** - * Add an event to the list of those awaiting their session keys. - * - * @private - * - * @param {module:models/event.MatrixEvent} event - */ - - -MegolmDecryption.prototype._addEventToPendingList = function (event) { - const content = event.getWireContent(); - const senderKey = content.sender_key; - const sessionId = content.session_id; - - if (!this._pendingEvents[senderKey]) { - this._pendingEvents[senderKey] = new Map(); - } - - const senderPendingEvents = this._pendingEvents[senderKey]; - - if (!senderPendingEvents.has(sessionId)) { - senderPendingEvents.set(sessionId, new Set()); - } - - senderPendingEvents.get(sessionId).add(event); -}; -/** - * Remove an event from the list of those awaiting their session keys. - * - * @private - * - * @param {module:models/event.MatrixEvent} event - */ - - -MegolmDecryption.prototype._removeEventFromPendingList = function (event) { - const content = event.getWireContent(); - const senderKey = content.sender_key; - const sessionId = content.session_id; - const senderPendingEvents = this._pendingEvents[senderKey]; - const pendingEvents = senderPendingEvents && senderPendingEvents.get(sessionId); - - if (!pendingEvents) { - return; - } - - pendingEvents.delete(event); - - if (pendingEvents.size === 0) { - senderPendingEvents.delete(senderKey); - } - - if (senderPendingEvents.size === 0) { - delete this._pendingEvents[senderKey]; - } -}; -/** - * @inheritdoc - * - * @param {module:models/event.MatrixEvent} event key event - */ - - -MegolmDecryption.prototype.onRoomKeyEvent = function (event) { - const content = event.getContent(); - const sessionId = content.session_id; - let senderKey = event.getSenderKey(); - let forwardingKeyChain = []; - let exportFormat = false; - let keysClaimed; - - if (!content.room_id || !sessionId || !content.session_key) { - _logger.logger.error("key event is missing fields"); - - return; - } - - if (!senderKey) { - _logger.logger.error("key event has no sender key (not encrypted?)"); - - return; - } - - if (event.getType() == "m.forwarded_room_key") { - exportFormat = true; - forwardingKeyChain = content.forwarding_curve25519_key_chain; - - if (!utils.isArray(forwardingKeyChain)) { - forwardingKeyChain = []; - } // copy content before we modify it - - - forwardingKeyChain = forwardingKeyChain.slice(); - forwardingKeyChain.push(senderKey); - senderKey = content.sender_key; - - if (!senderKey) { - _logger.logger.error("forwarded_room_key event is missing sender_key field"); - - return; - } - - const ed25519Key = content.sender_claimed_ed25519_key; - - if (!ed25519Key) { - _logger.logger.error(`forwarded_room_key_event is missing sender_claimed_ed25519_key field`); - - return; - } - - keysClaimed = { - ed25519: ed25519Key - }; - } else { - keysClaimed = event.getKeysClaimed(); - } - - return this._olmDevice.addInboundGroupSession(content.room_id, senderKey, forwardingKeyChain, sessionId, content.session_key, keysClaimed, exportFormat).then(() => { - // have another go at decrypting events sent with this session. - this._retryDecryption(senderKey, sessionId).then(success => { - // cancel any outstanding room key requests for this session. - // Only do this if we managed to decrypt every message in the - // session, because if we didn't, we leave the other key - // requests in the hopes that someone sends us a key that - // includes an earlier index. - if (success) { - this._crypto.cancelRoomKeyRequest({ - algorithm: content.algorithm, - room_id: content.room_id, - session_id: content.session_id, - sender_key: senderKey + // See if there was a problem with the olm session at the time the + // event was sent. Use a fuzz factor of 2 minutes. + const problem = await this.olmDevice.sessionMayHaveProblems(content.sender_key, event.getTs() - 120000); + if (problem) { + this.prefixedLogger.info(`When handling UISI from ${event.getSender()} (sender key ${content.sender_key}): ` + `recent session problem with that sender:`, problem); + let problemDescription = PROBLEM_DESCRIPTIONS[problem.type] || PROBLEM_DESCRIPTIONS.unknown; + if (problem.fixed) { + problemDescription += " Trying to create a new secure channel and re-requesting the keys."; + } + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.MEGOLM_UNKNOWN_INBOUND_SESSION_ID, problemDescription, { + session: content.sender_key + "|" + content.session_id }); } - }); - }).then(() => { - if (this._crypto.backupInfo) { - // don't wait for the keys to be backed up for the server - this._crypto.backupGroupSession(content.room_id, senderKey, forwardingKeyChain, content.session_id, content.session_key, keysClaimed, exportFormat).catch(e => { - // This throws if the upload failed, but this is fine - // since it will have written it to the db and will retry. - _logger.logger.log("Failed to back up megolm session", e); + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.MEGOLM_UNKNOWN_INBOUND_SESSION_ID, "The sender's device has not sent us the keys for this message.", { + session: content.sender_key + "|" + content.session_id }); } - }).catch(e => { - _logger.logger.error(`Error handling m.room_key_event: ${e}`); - }); -}; -/** - * @inheritdoc - * - * @param {module:models/event.MatrixEvent} event key event - */ + // Success. We can remove the event from the pending list, if + // that hasn't already happened. However, if the event was + // decrypted with an untrusted key, leave it on the pending + // list so it will be retried if we find a trusted key later. + if (!res.untrusted) { + this.removeEventFromPendingList(event); + } + const payload = JSON.parse(res.result); -MegolmDecryption.prototype.onRoomKeyWithheldEvent = async function (event) { - const content = event.getContent(); - const senderKey = content.sender_key; + // belt-and-braces check that the room id matches that indicated by the HS + // (this is somewhat redundant, since the megolm session is scoped to the + // room, so neither the sender nor a MITM can lie about the room_id). + if (payload.room_id !== event.getRoomId()) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.MEGOLM_BAD_ROOM, "Message intended for room " + payload.room_id); + } + return { + clearEvent: payload, + senderCurve25519Key: res.senderKey, + claimedEd25519Key: res.keysClaimed.ed25519, + forwardingCurve25519KeyChain: res.forwardingCurve25519KeyChain, + untrusted: res.untrusted + }; + } + requestKeysForEvent(event) { + const wireContent = event.getWireContent(); + const recipients = event.getKeyRequestRecipients(this.userId); + this.crypto.requestRoomKey({ + room_id: event.getRoomId(), + algorithm: wireContent.algorithm, + sender_key: wireContent.sender_key, + session_id: wireContent.session_id + }, recipients); + } - if (content.code === "m.no_olm") { - const sender = event.getSender(); + /** + * Add an event to the list of those awaiting their session keys. + * + * @internal + * + */ + addEventToPendingList(event) { + var _senderPendingEvents$; + const content = event.getWireContent(); + const senderKey = content.sender_key; + const sessionId = content.session_id; + if (!this.pendingEvents.has(senderKey)) { + this.pendingEvents.set(senderKey, new Map()); + } + const senderPendingEvents = this.pendingEvents.get(senderKey); + if (!senderPendingEvents.has(sessionId)) { + senderPendingEvents.set(sessionId, new Set()); + } + (_senderPendingEvents$ = senderPendingEvents.get(sessionId)) === null || _senderPendingEvents$ === void 0 || _senderPendingEvents$.add(event); + } - _logger.logger.warn(`${sender}:${senderKey} was unable to establish an olm session with us`); // if the sender says that they haven't been able to establish an olm - // session, let's proactively establish one - // Note: after we record that the olm session has had a problem, we - // trigger retrying decryption for all the messages from the sender's - // key, so that we can update the error message to indicate the olm - // session problem. - - - if (await this._olmDevice.getSessionIdForDevice(senderKey)) { - // a session has already been established, so we don't need to - // create a new one. - _logger.logger.debug("New session already created. Not creating a new one."); - - await this._olmDevice.recordSessionProblem(senderKey, "no_olm", true); - this.retryDecryptionFromSender(senderKey); + /** + * Remove an event from the list of those awaiting their session keys. + * + * @internal + * + */ + removeEventFromPendingList(event) { + const content = event.getWireContent(); + const senderKey = content.sender_key; + const sessionId = content.session_id; + const senderPendingEvents = this.pendingEvents.get(senderKey); + const pendingEvents = senderPendingEvents === null || senderPendingEvents === void 0 ? void 0 : senderPendingEvents.get(sessionId); + if (!pendingEvents) { return; } + pendingEvents.delete(event); + if (pendingEvents.size === 0) { + senderPendingEvents.delete(sessionId); + } + if (senderPendingEvents.size === 0) { + this.pendingEvents.delete(senderKey); + } + } - let device = this._crypto._deviceList.getDeviceByIdentityKey(content.algorithm, senderKey); + /** + * Parse a RoomKey out of an `m.room_key` event. + * + * @param event - the event containing the room key. + * + * @returns The `RoomKey` if it could be successfully parsed out of the + * event. + * + * @internal + * + */ + roomKeyFromEvent(event) { + const senderKey = event.getSenderKey(); + const content = event.getContent(); + const extraSessionData = {}; + if (!content.room_id || !content.session_key || !content.session_id || !content.algorithm) { + this.prefixedLogger.error("key event is missing fields"); + return; + } + if (!olmlib.isOlmEncrypted(event)) { + this.prefixedLogger.error("key event not properly encrypted"); + return; + } + if (content["org.matrix.msc3061.shared_history"]) { + extraSessionData.sharedHistory = true; + } + const roomKey = { + senderKey: senderKey, + sessionId: content.session_id, + sessionKey: content.session_key, + extraSessionData, + exportFormat: false, + roomId: content.room_id, + algorithm: content.algorithm, + forwardingKeyChain: [], + keysClaimed: event.getKeysClaimed() + }; + return roomKey; + } + /** + * Parse a RoomKey out of an `m.forwarded_room_key` event. + * + * @param event - the event containing the forwarded room key. + * + * @returns The `RoomKey` if it could be successfully parsed out of the + * event. + * + * @internal + * + */ + forwardedRoomKeyFromEvent(event) { + // the properties in m.forwarded_room_key are a superset of those in m.room_key, so + // start by parsing the m.room_key fields. + const roomKey = this.roomKeyFromEvent(event); + if (!roomKey) { + return; + } + const senderKey = event.getSenderKey(); + const content = event.getContent(); + const senderKeyUser = this.baseApis.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, senderKey); + + // We received this to-device event from event.getSenderKey(), but the original + // creator of the room key is claimed in the content. + const claimedCurve25519Key = content.sender_key; + const claimedEd25519Key = content.sender_claimed_ed25519_key; + let forwardingKeyChain = Array.isArray(content.forwarding_curve25519_key_chain) ? content.forwarding_curve25519_key_chain : []; + + // copy content before we modify it + forwardingKeyChain = forwardingKeyChain.slice(); + forwardingKeyChain.push(senderKey); + + // Check if we have all the fields we need. + if (senderKeyUser !== event.getSender()) { + this.prefixedLogger.error("sending device does not belong to the user it claims to be from"); + return; + } + if (!claimedCurve25519Key) { + this.prefixedLogger.error("forwarded_room_key event is missing sender_key field"); + return; + } + if (!claimedEd25519Key) { + this.prefixedLogger.error(`forwarded_room_key_event is missing sender_claimed_ed25519_key field`); + return; + } + const keysClaimed = { + ed25519: claimedEd25519Key + }; + + // FIXME: We're reusing the same field to track both: + // + // 1. The Olm identity we've received this room key from. + // 2. The Olm identity deduced (in the trusted case) or claiming (in the + // untrusted case) to be the original creator of this room key. + // + // We now overwrite the value tracking usage 1 with the value tracking usage 2. + roomKey.senderKey = claimedCurve25519Key; + // Replace our keysClaimed as well. + roomKey.keysClaimed = keysClaimed; + roomKey.exportFormat = true; + roomKey.forwardingKeyChain = forwardingKeyChain; + // forwarded keys are always untrusted + roomKey.extraSessionData.untrusted = true; + return roomKey; + } + + /** + * Determine if we should accept the forwarded room key that was found in the given + * event. + * + * @param event - An `m.forwarded_room_key` event. + * @param roomKey - The room key that was found in the event. + * + * @returns promise that will resolve to a boolean telling us if it's ok to + * accept the given forwarded room key. + * + * @internal + * + */ + async shouldAcceptForwardedKey(event, roomKey) { + var _this$crypto$deviceLi; + const senderKey = event.getSenderKey(); + const sendingDevice = (_this$crypto$deviceLi = this.crypto.deviceList.getDeviceByIdentityKey(olmlib.OLM_ALGORITHM, senderKey)) !== null && _this$crypto$deviceLi !== void 0 ? _this$crypto$deviceLi : undefined; + const deviceTrust = this.crypto.checkDeviceInfoTrust(event.getSender(), sendingDevice); + + // Using the plaintext sender here is fine since we checked that the + // sender matches to the user id in the device keys when this event was + // originally decrypted. This can obviously only happen if the device + // keys have been downloaded, but if they haven't the + // `deviceTrust.isVerified()` flag would be false as well. + // + // It would still be far nicer if the `sendingDevice` had a user ID + // attached to it that went through signature checks. + const fromUs = event.getSender() === this.baseApis.getUserId(); + const keyFromOurVerifiedDevice = deviceTrust.isVerified() && fromUs; + const weRequested = await this.wasRoomKeyRequested(event, roomKey); + const fromInviter = this.wasRoomKeyForwardedByInviter(event, roomKey); + const sharedAsHistory = this.wasRoomKeyForwardedAsHistory(roomKey); + return weRequested && keyFromOurVerifiedDevice || fromInviter && sharedAsHistory; + } + + /** + * Did we ever request the given room key from the event sender and its + * accompanying device. + * + * @param event - An `m.forwarded_room_key` event. + * @param roomKey - The room key that was found in the event. + * + * @internal + * + */ + async wasRoomKeyRequested(event, roomKey) { + // We send the `m.room_key_request` out as a wildcard to-device request, + // otherwise we would have to duplicate the same content for each + // device. This is why we need to pass in "*" as the device id here. + const outgoingRequests = await this.crypto.cryptoStore.getOutgoingRoomKeyRequestsByTarget(event.getSender(), "*", [_OutgoingRoomKeyRequestManager.RoomKeyRequestState.Sent]); + return outgoingRequests.some(req => req.requestBody.room_id === roomKey.roomId && req.requestBody.session_id === roomKey.sessionId); + } + wasRoomKeyForwardedByInviter(event, roomKey) { + var _room$getMember, _memberEvent$getUnsig, _memberEvent$getPrevC; + // TODO: This is supposed to have a time limit. We should only accept + // such keys if we happen to receive them for a recently joined room. + const room = this.baseApis.getRoom(roomKey.roomId); + const senderKey = event.getSenderKey(); + if (!senderKey) { + return false; + } + const senderKeyUser = this.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, senderKey); + if (!senderKeyUser) { + return false; + } + const memberEvent = room === null || room === void 0 || (_room$getMember = room.getMember(this.userId)) === null || _room$getMember === void 0 ? void 0 : _room$getMember.events.member; + const fromInviter = (memberEvent === null || memberEvent === void 0 ? void 0 : memberEvent.getSender()) === senderKeyUser || (memberEvent === null || memberEvent === void 0 || (_memberEvent$getUnsig = memberEvent.getUnsigned()) === null || _memberEvent$getUnsig === void 0 ? void 0 : _memberEvent$getUnsig.prev_sender) === senderKeyUser && (memberEvent === null || memberEvent === void 0 || (_memberEvent$getPrevC = memberEvent.getPrevContent()) === null || _memberEvent$getPrevC === void 0 ? void 0 : _memberEvent$getPrevC.membership) === _membership.KnownMembership.Invite; + if (room && fromInviter) { + return true; + } else { + return false; + } + } + wasRoomKeyForwardedAsHistory(roomKey) { + const room = this.baseApis.getRoom(roomKey.roomId); + + // If the key is not for a known room, then something fishy is going on, + // so we reject the key out of caution. In practice, this is a bit moot + // because we'll only accept shared_history forwarded by the inviter, and + // we won't know who was the inviter for an unknown room, so we'll reject + // it anyway. + if (room && roomKey.extraSessionData.sharedHistory) { + return true; + } else { + return false; + } + } + + /** + * Check if a forwarded room key should be parked. + * + * A forwarded room key should be parked if it's a key for a room we're not + * in. We park the forwarded room key in case *this sender* invites us to + * that room later. + */ + shouldParkForwardedKey(roomKey) { + const room = this.baseApis.getRoom(roomKey.roomId); + if (!room && roomKey.extraSessionData.sharedHistory) { + return true; + } else { + return false; + } + } + + /** + * Park the given room key to our store. + * + * @param event - An `m.forwarded_room_key` event. + * @param roomKey - The room key that was found in the event. + * + * @internal + * + */ + async parkForwardedKey(event, roomKey) { + const parkedData = { + senderId: event.getSender(), + senderKey: roomKey.senderKey, + sessionId: roomKey.sessionId, + sessionKey: roomKey.sessionKey, + keysClaimed: roomKey.keysClaimed, + forwardingCurve25519KeyChain: roomKey.forwardingKeyChain + }; + await this.crypto.cryptoStore.doTxn("readwrite", ["parked_shared_history"], txn => this.crypto.cryptoStore.addParkedSharedHistory(roomKey.roomId, parkedData, txn), _logger.logger.getChild("[addParkedSharedHistory]")); + } + + /** + * Add the given room key to our store. + * + * @param roomKey - The room key that should be added to the store. + * + * @internal + * + */ + async addRoomKey(roomKey) { + try { + await this.olmDevice.addInboundGroupSession(roomKey.roomId, roomKey.senderKey, roomKey.forwardingKeyChain, roomKey.sessionId, roomKey.sessionKey, roomKey.keysClaimed, roomKey.exportFormat, roomKey.extraSessionData); + + // have another go at decrypting events sent with this session. + if (await this.retryDecryption(roomKey.senderKey, roomKey.sessionId, !roomKey.extraSessionData.untrusted)) { + // cancel any outstanding room key requests for this session. + // Only do this if we managed to decrypt every message in the + // session, because if we didn't, we leave the other key + // requests in the hopes that someone sends us a key that + // includes an earlier index. + this.crypto.cancelRoomKeyRequest({ + algorithm: roomKey.algorithm, + room_id: roomKey.roomId, + session_id: roomKey.sessionId, + sender_key: roomKey.senderKey + }); + } + + // don't wait for the keys to be backed up for the server + await this.crypto.backupManager.backupGroupSession(roomKey.senderKey, roomKey.sessionId); + } catch (e) { + this.prefixedLogger.error(`Error handling m.room_key_event: ${e}`); + } + } + + /** + * Handle room keys that have been forwarded to us as an + * `m.forwarded_room_key` event. + * + * Forwarded room keys need special handling since we have no way of knowing + * who the original creator of the room key was. This naturally means that + * forwarded room keys are always untrusted and should only be accepted in + * some cases. + * + * @param event - An `m.forwarded_room_key` event. + * + * @internal + * + */ + async onForwardedRoomKey(event) { + const roomKey = this.forwardedRoomKeyFromEvent(event); + if (!roomKey) { + return; + } + if (await this.shouldAcceptForwardedKey(event, roomKey)) { + await this.addRoomKey(roomKey); + } else if (this.shouldParkForwardedKey(roomKey)) { + await this.parkForwardedKey(event, roomKey); + } + } + async onRoomKeyEvent(event) { + if (event.getType() == "m.forwarded_room_key") { + await this.onForwardedRoomKey(event); + } else { + const roomKey = this.roomKeyFromEvent(event); + if (!roomKey) { + return; + } + await this.addRoomKey(roomKey); + } + } + + /** + * @param event - key event + */ + async onRoomKeyWithheldEvent(event) { + const content = event.getContent(); + const senderKey = content.sender_key; + if (content.code === "m.no_olm") { + await this.onNoOlmWithheldEvent(event); + } else if (content.code === "m.unavailable") { + // this simply means that the other device didn't have the key, which isn't very useful information. Don't + // record it in the storage + } else { + await this.olmDevice.addInboundGroupSessionWithheld(content.room_id, senderKey, content.session_id, content.code, content.reason); + } + + // Having recorded the problem, retry decryption on any affected messages. + // It's unlikely we'll be able to decrypt sucessfully now, but this will + // update the error message. + // + if (content.session_id) { + await this.retryDecryption(senderKey, content.session_id); + } else { + // no_olm messages aren't specific to a given megolm session, so + // we trigger retrying decryption for all the messages from the sender's + // key, so that we can update the error message to indicate the olm + // session problem. + await this.retryDecryptionFromSender(senderKey); + } + } + async onNoOlmWithheldEvent(event) { + const content = event.getContent(); + const senderKey = content.sender_key; + const sender = event.getSender(); + this.prefixedLogger.warn(`${sender}:${senderKey} was unable to establish an olm session with us`); + // if the sender says that they haven't been able to establish an olm + // session, let's proactively establish one + + if (await this.olmDevice.getSessionIdForDevice(senderKey)) { + // a session has already been established, so we don't need to + // create a new one. + this.prefixedLogger.debug("New session already created. Not creating a new one."); + await this.olmDevice.recordSessionProblem(senderKey, "no_olm", true); + return; + } + let device = this.crypto.deviceList.getDeviceByIdentityKey(content.algorithm, senderKey); if (!device) { // if we don't know about the device, fetch the user's devices again // and retry before giving up - await this._crypto.downloadKeys([sender], false); - device = this._crypto._deviceList.getDeviceByIdentityKey(content.algorithm, senderKey); - + await this.crypto.downloadKeys([sender], false); + device = this.crypto.deviceList.getDeviceByIdentityKey(content.algorithm, senderKey); if (!device) { - _logger.logger.info("Couldn't find device for identity key " + senderKey + ": not establishing session"); - - await this._olmDevice.recordSessionProblem(senderKey, "no_olm", false); - this.retryDecryptionFromSender(senderKey); + this.prefixedLogger.info("Couldn't find device for identity key " + senderKey + ": not establishing session"); + await this.olmDevice.recordSessionProblem(senderKey, "no_olm", false); return; } } - await olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, { - [sender]: [device] - }, false); + // XXX: switch this to use encryptAndSendToDevices() rather than duplicating it? + + await olmlib.ensureOlmSessionsForDevices(this.olmDevice, this.baseApis, new Map([[sender, [device]]]), false); const encryptedContent = { algorithm: olmlib.OLM_ALGORITHM, - sender_key: this._olmDevice.deviceCurve25519Key, - ciphertext: {} + sender_key: this.olmDevice.deviceCurve25519Key, + ciphertext: {}, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() }; - await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, sender, device, { + await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this.userId, undefined, this.olmDevice, sender, device, { type: "m.dummy" }); - await this._olmDevice.recordSessionProblem(senderKey, "no_olm", true); - this.retryDecryptionFromSender(senderKey); - await this._baseApis.sendToDevice("m.room.encrypted", { - [sender]: { - [device.deviceId]: encryptedContent + await this.olmDevice.recordSessionProblem(senderKey, "no_olm", true); + await this.baseApis.sendToDevice("m.room.encrypted", new Map([[sender, new Map([[device.deviceId, encryptedContent]])]])); + } + hasKeysForKeyRequest(keyRequest) { + const body = keyRequest.requestBody; + return this.olmDevice.hasInboundSessionKeys(body.room_id, body.sender_key, body.session_id + // TODO: ratchet index + ); + } + shareKeysWithDevice(keyRequest) { + const userId = keyRequest.userId; + const deviceId = keyRequest.deviceId; + const deviceInfo = this.crypto.getStoredDevice(userId, deviceId); + const body = keyRequest.requestBody; + + // XXX: switch this to use encryptAndSendToDevices()? + + this.olmlib.ensureOlmSessionsForDevices(this.olmDevice, this.baseApis, new Map([[userId, [deviceInfo]]])).then(devicemap => { + var _devicemap$get; + const olmSessionResult = (_devicemap$get = devicemap.get(userId)) === null || _devicemap$get === void 0 ? void 0 : _devicemap$get.get(deviceId); + if (!(olmSessionResult !== null && olmSessionResult !== void 0 && olmSessionResult.sessionId)) { + // no session with this device, probably because there + // were no one-time keys. + // + // ensureOlmSessionsForUsers has already done the logging, + // so just skip it. + return null; } - }); - } else { - await this._olmDevice.addInboundGroupSessionWithheld(content.room_id, senderKey, content.session_id, content.code, content.reason); - } -}; -/** - * @inheritdoc - */ - - -MegolmDecryption.prototype.hasKeysForKeyRequest = function (keyRequest) { - const body = keyRequest.requestBody; - return this._olmDevice.hasInboundSessionKeys(body.room_id, body.sender_key, body.session_id // TODO: ratchet index - ); -}; -/** - * @inheritdoc - */ - - -MegolmDecryption.prototype.shareKeysWithDevice = function (keyRequest) { - const userId = keyRequest.userId; - const deviceId = keyRequest.deviceId; - - const deviceInfo = this._crypto.getStoredDevice(userId, deviceId); - - const body = keyRequest.requestBody; - this.olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, { - [userId]: [deviceInfo] - }).then(devicemap => { - const olmSessionResult = devicemap[userId][deviceId]; - - if (!olmSessionResult.sessionId) { - // no session with this device, probably because there - // were no one-time keys. - // - // ensureOlmSessionsForUsers has already done the logging, - // so just skip it. - return null; - } - - _logger.logger.log("sharing keys for session " + body.sender_key + "|" + body.session_id + " with device " + userId + ":" + deviceId); - - return this._buildKeyForwardingMessage(body.room_id, body.sender_key, body.session_id); - }).then(payload => { - const encryptedContent = { - algorithm: olmlib.OLM_ALGORITHM, - sender_key: this._olmDevice.deviceCurve25519Key, - ciphertext: {} - }; - return this.olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, deviceInfo, payload).then(() => { - const contentMap = { - [userId]: { - [deviceId]: encryptedContent - } - }; // TODO: retries - - return this._baseApis.sendToDevice("m.room.encrypted", contentMap); - }); - }); -}; - -MegolmDecryption.prototype._buildKeyForwardingMessage = async function (roomId, senderKey, sessionId) { - const key = await this._olmDevice.getInboundGroupSessionKey(roomId, senderKey, sessionId); - return { - type: "m.forwarded_room_key", - content: { - algorithm: olmlib.MEGOLM_ALGORITHM, - room_id: roomId, - sender_key: senderKey, - sender_claimed_ed25519_key: key.sender_claimed_ed25519_key, - session_id: sessionId, - session_key: key.key, - chain_index: key.chain_index, - forwarding_curve25519_key_chain: key.forwarding_curve25519_key_chain - } - }; -}; -/** - * @inheritdoc - * - * @param {module:crypto/OlmDevice.MegolmSessionData} session - * @param {object} [opts={}] options for the import - * @param {boolean} [opts.untrusted] whether the key should be considered as untrusted - * @param {string} [opts.source] where the key came from - */ - - -MegolmDecryption.prototype.importRoomKey = function (session, opts = {}) { - return this._olmDevice.addInboundGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true, opts.untrusted ? { - untrusted: opts.untrusted - } : {}).then(() => { - if (this._crypto.backupInfo && opts.source !== "backup") { - // don't wait for it to complete - this._crypto.backupGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true).catch(e => { - // This throws if the upload failed, but this is fine - // since it will have written it to the db and will retry. - _logger.logger.log("Failed to back up megolm session", e); + this.prefixedLogger.debug("sharing keys for session " + body.sender_key + "|" + body.session_id + " with device " + userId + ":" + deviceId); + return this.buildKeyForwardingMessage(body.room_id, body.sender_key, body.session_id); + }).then(payload => { + const encryptedContent = { + algorithm: olmlib.OLM_ALGORITHM, + sender_key: this.olmDevice.deviceCurve25519Key, + ciphertext: {}, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() + }; + return this.olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this.userId, undefined, this.olmDevice, userId, deviceInfo, payload).then(() => { + // TODO: retries + return this.baseApis.sendToDevice("m.room.encrypted", new Map([[userId, new Map([[deviceId, encryptedContent]])]])); }); - } // have another go at decrypting events sent with this session. - - - this._retryDecryption(session.sender_key, session.session_id); - }); -}; -/** - * Have another go at decrypting events after we receive a key. Resolves once - * decryption has been re-attempted on all events. - * - * @private - * @param {String} senderKey - * @param {String} sessionId - * - * @return {Boolean} whether all messages were successfully decrypted - */ - - -MegolmDecryption.prototype._retryDecryption = async function (senderKey, sessionId) { - const senderPendingEvents = this._pendingEvents[senderKey]; - - if (!senderPendingEvents) { - return true; + }); + } + async buildKeyForwardingMessage(roomId, senderKey, sessionId) { + const key = await this.olmDevice.getInboundGroupSessionKey(roomId, senderKey, sessionId); + return { + type: "m.forwarded_room_key", + content: { + "algorithm": olmlib.MEGOLM_ALGORITHM, + "room_id": roomId, + "sender_key": senderKey, + "sender_claimed_ed25519_key": key.sender_claimed_ed25519_key, + "session_id": sessionId, + "session_key": key.key, + "chain_index": key.chain_index, + "forwarding_curve25519_key_chain": key.forwarding_curve25519_key_chain, + "org.matrix.msc3061.shared_history": key.shared_history || false + } + }; } - const pending = senderPendingEvents.get(sessionId); - - if (!pending) { - return true; - } - - _logger.logger.debug("Retrying decryption on events", [...pending]); - - await Promise.all([...pending].map(async ev => { - try { - await ev.attemptDecryption(this._crypto, true); - } catch (e) {// don't die if something goes wrong + /** + * @param untrusted - whether the key should be considered as untrusted + * @param source - where the key came from + */ + importRoomKey(session, { + untrusted, + source + } = {}) { + const extraSessionData = {}; + if (untrusted || session.untrusted) { + extraSessionData.untrusted = true; } - })); // If decrypted successfully, they'll have been removed from _pendingEvents - - return !(this._pendingEvents[senderKey] || {})[sessionId]; -}; - -MegolmDecryption.prototype.retryDecryptionFromSender = async function (senderKey) { - const senderPendingEvents = this._pendingEvents[senderKey]; - - if (!senderPendingEvents) { - return true; + if (session["org.matrix.msc3061.shared_history"]) { + extraSessionData.sharedHistory = true; + } + return this.olmDevice.addInboundGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true, extraSessionData).then(() => { + if (source !== "backup") { + // don't wait for it to complete + this.crypto.backupManager.backupGroupSession(session.sender_key, session.session_id).catch(e => { + // This throws if the upload failed, but this is fine + // since it will have written it to the db and will retry. + this.prefixedLogger.debug("Failed to back up megolm session", e); + }); + } + // have another go at decrypting events sent with this session. + this.retryDecryption(session.sender_key, session.session_id, !extraSessionData.untrusted); + }); } - delete this._pendingEvents[senderKey]; - await Promise.all([...senderPendingEvents].map(async ([_sessionId, pending]) => { - await Promise.all([...pending].map(async ev => { + /** + * Have another go at decrypting events after we receive a key. Resolves once + * decryption has been re-attempted on all events. + * + * @internal + * @param forceRedecryptIfUntrusted - whether messages that were already + * successfully decrypted using untrusted keys should be re-decrypted + * + * @returns whether all messages were successfully + * decrypted with trusted keys + */ + async retryDecryption(senderKey, sessionId, forceRedecryptIfUntrusted) { + var _this$pendingEvents$g; + const senderPendingEvents = this.pendingEvents.get(senderKey); + if (!senderPendingEvents) { + return true; + } + const pending = senderPendingEvents.get(sessionId); + if (!pending) { + return true; + } + const pendingList = [...pending]; + this.prefixedLogger.debug("Retrying decryption on events:", pendingList.map(e => `${e.getId()}`)); + await Promise.all(pendingList.map(async ev => { try { - await ev.attemptDecryption(this._crypto); - } catch (e) {// don't die if something goes wrong + await ev.attemptDecryption(this.crypto, { + isRetry: true, + forceRedecryptIfUntrusted + }); + } catch (e) { + // don't die if something goes wrong } })); - })); - return !this._pendingEvents[senderKey]; -}; + // If decrypted successfully with trusted keys, they'll have + // been removed from pendingEvents + return !((_this$pendingEvents$g = this.pendingEvents.get(senderKey)) !== null && _this$pendingEvents$g !== void 0 && _this$pendingEvents$g.has(sessionId)); + } + async retryDecryptionFromSender(senderKey) { + const senderPendingEvents = this.pendingEvents.get(senderKey); + if (!senderPendingEvents) { + return true; + } + this.pendingEvents.delete(senderKey); + await Promise.all([...senderPendingEvents].map(async ([_sessionId, pending]) => { + await Promise.all([...pending].map(async ev => { + try { + await ev.attemptDecryption(this.crypto); + } catch (e) { + // don't die if something goes wrong + } + })); + })); + return !this.pendingEvents.has(senderKey); + } + async sendSharedHistoryInboundSessions(devicesByUser) { + await olmlib.ensureOlmSessionsForDevices(this.olmDevice, this.baseApis, devicesByUser); + const sharedHistorySessions = await this.olmDevice.getSharedHistoryInboundGroupSessions(this.roomId); + this.prefixedLogger.debug(`Sharing history in with users ${Array.from(devicesByUser.keys())}`, sharedHistorySessions.map(([senderKey, sessionId]) => `${senderKey}|${sessionId}`)); + for (const [senderKey, sessionId] of sharedHistorySessions) { + const payload = await this.buildKeyForwardingMessage(this.roomId, senderKey, sessionId); + + // FIXME: use encryptAndSendToDevices() rather than duplicating it here. + const promises = []; + const contentMap = new Map(); + for (const [userId, devices] of devicesByUser) { + const deviceMessages = new Map(); + contentMap.set(userId, deviceMessages); + for (const deviceInfo of devices) { + const encryptedContent = { + algorithm: olmlib.OLM_ALGORITHM, + sender_key: this.olmDevice.deviceCurve25519Key, + ciphertext: {}, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() + }; + deviceMessages.set(deviceInfo.deviceId, encryptedContent); + promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this.userId, undefined, this.olmDevice, userId, deviceInfo, payload)); + } + } + await Promise.all(promises); + + // prune out any devices that encryptMessageForDevice could not encrypt for, + // in which case it will have just not added anything to the ciphertext object. + // There's no point sending messages to devices if we couldn't encrypt to them, + // since that's effectively a blank message. + for (const [userId, deviceMessages] of contentMap) { + for (const [deviceId, content] of deviceMessages) { + if (!hasCiphertext(content)) { + this.prefixedLogger.debug("No ciphertext for device " + userId + ":" + deviceId + ": pruning"); + deviceMessages.delete(deviceId); + } + } + // No devices left for that user? Strip that too. + if (deviceMessages.size === 0) { + this.prefixedLogger.debug("Pruned all devices for user " + userId); + contentMap.delete(userId); + } + } + + // Is there anything left? + if (contentMap.size === 0) { + this.prefixedLogger.debug("No users left to send to: aborting"); + return; + } + await this.baseApis.sendToDevice("m.room.encrypted", contentMap); + } + } +} +exports.MegolmDecryption = MegolmDecryption; +const PROBLEM_DESCRIPTIONS = { + no_olm: "The sender was unable to establish a secure channel.", + unknown: "The secure channel with the sender was corrupted." +}; (0, _base.registerAlgorithm)(olmlib.MEGOLM_ALGORITHM, MegolmEncryption, MegolmDecryption); +//# sourceMappingURL=megolm.js.map /***/ }), /***/ 3659: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - -var _logger = __webpack_require__(3854); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var olmlib = _interopRequireWildcard(__webpack_require__(7131)); - -var _deviceinfo = __webpack_require__(5232); - -var _base = __webpack_require__(1058); - +var _interopRequireDefault = __nccwpck_require__(3286); +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var olmlib = _interopRequireWildcard(__nccwpck_require__(7131)); +var _deviceinfo = __nccwpck_require__(5232); +var _base = __nccwpck_require__(1058); +var _cryptoApi = __nccwpck_require__(3819); +var _CryptoBackend = __nccwpck_require__(3959); +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; } /* -Copyright 2016 OpenMarket Ltd +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -38995,304 +147124,1434 @@ limitations under the License. /** * Defines m.olm encryption/decryption - * - * @module crypto/algorithms/olm */ + const DeviceVerification = _deviceinfo.DeviceInfo.DeviceVerification; /** * Olm encryption implementation * - * @constructor - * @extends {module:crypto/algorithms/EncryptionAlgorithm} - * - * @param {object} params parameters, as per - * {@link module:crypto/algorithms/EncryptionAlgorithm} + * @param params - parameters, as per {@link EncryptionAlgorithm} */ +class OlmEncryption extends _base.EncryptionAlgorithm { + constructor(...args) { + super(...args); + (0, _defineProperty2.default)(this, "sessionPrepared", false); + (0, _defineProperty2.default)(this, "prepPromise", null); + } + /** + * @internal + * @param roomMembers - list of currently-joined users in the room + * @returns Promise which resolves when setup is complete + */ + ensureSession(roomMembers) { + if (this.prepPromise) { + // prep already in progress + return this.prepPromise; + } + if (this.sessionPrepared) { + // prep already done + return Promise.resolve(); + } + this.prepPromise = this.crypto.downloadKeys(roomMembers).then(() => { + return this.crypto.ensureOlmSessionsForUsers(roomMembers); + }).then(() => { + this.sessionPrepared = true; + }).finally(() => { + this.prepPromise = null; + }); + return this.prepPromise; + } -function OlmEncryption(params) { - (0, utils.polyfillSuper)(this, _base.EncryptionAlgorithm, params); - this._sessionPrepared = false; - this._prepPromise = null; + /** + * @param content - plaintext event content + * + * @returns Promise which resolves to the new event body + */ + async encryptMessage(room, eventType, content) { + // pick the list of recipients based on the membership list. + // + // TODO: there is a race condition here! What if a new user turns up + // just as you are sending a secret message? + + const members = await room.getEncryptionTargetMembers(); + const users = members.map(function (u) { + return u.userId; + }); + await this.ensureSession(users); + const payloadFields = { + room_id: room.roomId, + type: eventType, + content: content + }; + const encryptedContent = { + algorithm: olmlib.OLM_ALGORITHM, + sender_key: this.olmDevice.deviceCurve25519Key, + ciphertext: {} + }; + const promises = []; + for (const userId of users) { + const devices = this.crypto.getStoredDevicesForUser(userId) || []; + for (const deviceInfo of devices) { + const key = deviceInfo.getIdentityKey(); + if (key == this.olmDevice.deviceCurve25519Key) { + // don't bother sending to ourself + continue; + } + if (deviceInfo.verified == DeviceVerification.BLOCKED) { + // don't bother setting up sessions with blocked users + continue; + } + promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this.userId, this.deviceId, this.olmDevice, userId, deviceInfo, payloadFields)); + } + } + return Promise.all(promises).then(() => encryptedContent); + } } -utils.inherits(OlmEncryption, _base.EncryptionAlgorithm); -/** - * @private - - * @param {string[]} roomMembers list of currently-joined users in the room - * @return {Promise} Promise which resolves when setup is complete - */ - -OlmEncryption.prototype._ensureSession = function (roomMembers) { - if (this._prepPromise) { - // prep already in progress - return this._prepPromise; - } - - if (this._sessionPrepared) { - // prep already done - return Promise.resolve(); - } - - const self = this; - this._prepPromise = self._crypto.downloadKeys(roomMembers).then(function (res) { - return self._crypto.ensureOlmSessionsForUsers(roomMembers); - }).then(function () { - self._sessionPrepared = true; - }).finally(function () { - self._prepPromise = null; - }); - return this._prepPromise; -}; -/** - * @inheritdoc - * - * @param {module:models/room} room - * @param {string} eventType - * @param {object} content plaintext event content - * - * @return {Promise} Promise which resolves to the new event body - */ - - -OlmEncryption.prototype.encryptMessage = async function (room, eventType, content) { - // pick the list of recipients based on the membership list. - // - // TODO: there is a race condition here! What if a new user turns up - // just as you are sending a secret message? - const members = await room.getEncryptionTargetMembers(); - const users = utils.map(members, function (u) { - return u.userId; - }); - const self = this; - await this._ensureSession(users); - const payloadFields = { - room_id: room.roomId, - type: eventType, - content: content - }; - const encryptedContent = { - algorithm: olmlib.OLM_ALGORITHM, - sender_key: self._olmDevice.deviceCurve25519Key, - ciphertext: {} - }; - const promises = []; - - for (let i = 0; i < users.length; ++i) { - const userId = users[i]; - - const devices = self._crypto.getStoredDevicesForUser(userId); - - for (let j = 0; j < devices.length; ++j) { - const deviceInfo = devices[j]; - const key = deviceInfo.getIdentityKey(); - - if (key == self._olmDevice.deviceCurve25519Key) { - // don't bother sending to ourself - continue; - } - - if (deviceInfo.verified == DeviceVerification.BLOCKED) { - // don't bother setting up sessions with blocked users - continue; - } - - promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, self._userId, self._deviceId, self._olmDevice, userId, deviceInfo, payloadFields)); - } - } - - return await Promise.all(promises).then(() => encryptedContent); -}; /** * Olm decryption implementation * - * @constructor - * @extends {module:crypto/algorithms/DecryptionAlgorithm} - * @param {object} params parameters, as per - * {@link module:crypto/algorithms/DecryptionAlgorithm} + * @param params - parameters, as per {@link DecryptionAlgorithm} + */ +class OlmDecryption extends _base.DecryptionAlgorithm { + /** + * returns a promise which resolves to a + * {@link EventDecryptionResult} once we have finished + * decrypting. Rejects with an `algorithms.DecryptionError` if there is a + * problem decrypting the event. + */ + async decryptEvent(event) { + const content = event.getWireContent(); + const deviceKey = content.sender_key; + const ciphertext = content.ciphertext; + if (!ciphertext) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_MISSING_CIPHERTEXT, "Missing ciphertext"); + } + if (!(this.olmDevice.deviceCurve25519Key in ciphertext)) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_NOT_INCLUDED_IN_RECIPIENTS, "Not included in recipients"); + } + const message = ciphertext[this.olmDevice.deviceCurve25519Key]; + let payloadString; + try { + payloadString = await this.decryptMessage(deviceKey, message); + } catch (e) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_BAD_ENCRYPTED_MESSAGE, "Bad Encrypted Message", { + sender: deviceKey, + err: e + }); + } + const payload = JSON.parse(payloadString); + + // check that we were the intended recipient, to avoid unknown-key attack + // https://github.com/vector-im/vector-web/issues/2483 + if (payload.recipient != this.userId) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_BAD_RECIPIENT, "Message was intended for " + payload.recipient); + } + if (payload.recipient_keys.ed25519 != this.olmDevice.deviceEd25519Key) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_BAD_RECIPIENT_KEY, "Message not intended for this device", { + intended: payload.recipient_keys.ed25519, + our_key: this.olmDevice.deviceEd25519Key + }); + } + + // check that the device that encrypted the event belongs to the user that the event claims it's from. + // + // If the device is unknown then we check that we don't have any pending key-query requests for the sender. If + // after that the device is still unknown, then we can only assume that the device logged out and accept it + // anyway. Some event handlers, such as secret sharing, may be more strict and reject events that come from + // unknown devices. + // + // This is a defence against the following scenario: + // + // * Alice has verified Bob and Mallory. + // * Mallory gets control of Alice's server, and sends a megolm session to Alice using her (Mallory's) + // senderkey, but claiming to be from Bob. + // * Mallory sends more events using that session, claiming to be from Bob. + // * Alice sees that the senderkey is verified (since she verified Mallory) so marks events those events as + // verified even though the sender is forged. + // + // In practice, it's not clear that the js-sdk would behave that way, so this may be only a defence in depth. + + let senderKeyUser = this.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, deviceKey); + if (senderKeyUser === undefined || senderKeyUser === null) { + // Wait for any pending key query fetches for the user to complete before trying the lookup again. + try { + await this.crypto.deviceList.downloadKeys([event.getSender()], false); + } catch (e) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_BAD_SENDER_CHECK_FAILED, "Could not verify sender identity", { + sender: deviceKey, + err: e + }); + } + senderKeyUser = this.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, deviceKey); + } + if (senderKeyUser !== event.getSender() && senderKeyUser !== undefined && senderKeyUser !== null) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_BAD_SENDER, "Message claimed to be from " + event.getSender(), { + real_sender: senderKeyUser + }); + } + + // check that the original sender matches what the homeserver told us, to + // avoid people masquerading as others. + // (this check is also provided via the sender's embedded ed25519 key, + // which is checked elsewhere). + if (payload.sender != event.getSender()) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_FORWARDED_MESSAGE, "Message forwarded from " + payload.sender, { + reported_sender: event.getSender() + }); + } + + // Olm events intended for a room have a room_id. + if (payload.room_id !== event.getRoomId()) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_BAD_ROOM, "Message intended for room " + payload.room_id, { + reported_room: event.getRoomId() || "ROOM_ID_UNDEFINED" + }); + } + const claimedKeys = payload.keys || {}; + return { + clearEvent: payload, + senderCurve25519Key: deviceKey, + claimedEd25519Key: claimedKeys.ed25519 || null + }; + } + + /** + * Attempt to decrypt an Olm message + * + * @param theirDeviceIdentityKey - Curve25519 identity key of the sender + * @param message - message object, with 'type' and 'body' fields + * + * @returns payload, if decrypted successfully. + */ + decryptMessage(theirDeviceIdentityKey, message) { + // This is a wrapper that serialises decryptions of prekey messages, because + // otherwise we race between deciding we have no active sessions for the message + // and creating a new one, which we can only do once because it removes the OTK. + if (message.type !== 0) { + // not a prekey message: we can safely just try & decrypt it + return this.reallyDecryptMessage(theirDeviceIdentityKey, message); + } else { + const myPromise = this.olmDevice.olmPrekeyPromise.then(() => { + return this.reallyDecryptMessage(theirDeviceIdentityKey, message); + }); + // we want the error, but don't propagate it to the next decryption + this.olmDevice.olmPrekeyPromise = myPromise.catch(() => {}); + return myPromise; + } + } + async reallyDecryptMessage(theirDeviceIdentityKey, message) { + const sessionIds = await this.olmDevice.getSessionIdsForDevice(theirDeviceIdentityKey); + + // try each session in turn. + const decryptionErrors = {}; + for (const sessionId of sessionIds) { + try { + const payload = await this.olmDevice.decryptMessage(theirDeviceIdentityKey, sessionId, message.type, message.body); + _logger.logger.log("Decrypted Olm message from " + theirDeviceIdentityKey + " with session " + sessionId); + return payload; + } catch (e) { + const foundSession = await this.olmDevice.matchesSession(theirDeviceIdentityKey, sessionId, message.type, message.body); + if (foundSession) { + // decryption failed, but it was a prekey message matching this + // session, so it should have worked. + throw new Error("Error decrypting prekey message with existing session id " + sessionId + ": " + e.message); + } + + // otherwise it's probably a message for another session; carry on, but + // keep a record of the error + decryptionErrors[sessionId] = e.message; + } + } + if (message.type !== 0) { + // not a prekey message, so it should have matched an existing session, but it + // didn't work. + + if (sessionIds.length === 0) { + throw new Error("No existing sessions"); + } + throw new Error("Error decrypting non-prekey message with existing sessions: " + JSON.stringify(decryptionErrors)); + } + + // prekey message which doesn't match any existing sessions: make a new + // session. + + let res; + try { + res = await this.olmDevice.createInboundSession(theirDeviceIdentityKey, message.type, message.body); + } catch (e) { + decryptionErrors["(new)"] = e.message; + throw new Error("Error decrypting prekey message: " + JSON.stringify(decryptionErrors)); + } + _logger.logger.log("created new inbound Olm session ID " + res.session_id + " with " + theirDeviceIdentityKey); + return res.payload; + } +} +(0, _base.registerAlgorithm)(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption); +//# sourceMappingURL=olm.js.map + +/***/ }), + +/***/ 3180: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "CrossSigningKey", ({ + enumerable: true, + get: function () { + return _cryptoApi.CrossSigningKey; + } +})); +var _cryptoApi = __nccwpck_require__(3819); +//# sourceMappingURL=api.js.map + +/***/ }), + +/***/ 9366: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.algorithmsByName = exports.LibOlmBackupDecryptor = exports.DefaultAlgorithm = exports.Curve25519 = exports.BackupManager = exports.Aes256 = void 0; +exports.backupTrustInfoFromLegacyTrustInfo = backupTrustInfoFromLegacyTrustInfo; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _client = __nccwpck_require__(9058); +var _logger = __nccwpck_require__(3854); +var _olmlib = __nccwpck_require__(7131); +var _key_passphrase = __nccwpck_require__(7664); +var _utils = __nccwpck_require__(2557); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +var _recoverykey = __nccwpck_require__(4531); +var _aes = __nccwpck_require__(7502); +var _NamespacedValue = __nccwpck_require__(2418); +var _index = __nccwpck_require__(9839); +var _crypto = __nccwpck_require__(8532); +var _httpApi = __nccwpck_require__(7082); +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Classes for dealing with key backup. */ +const KEY_BACKUP_KEYS_PER_REQUEST = 200; +const KEY_BACKUP_CHECK_RATE_LIMIT = 5000; // ms -function OlmDecryption(params) { - (0, utils.polyfillSuper)(this, _base.DecryptionAlgorithm, params); +/** @deprecated Prefer {@link BackupTrustInfo} */ + +/* eslint-disable camelcase */ + +/* eslint-enable camelcase */ + +/** A function used to get the secret key for a backup. + */ + +/** + * Manages the key backup. + */ +class BackupManager { + constructor(baseApis, getKey) { + // The info dict from /room_keys/version + // Have we checked the server for a backup we can use? + // Are we currently sending backups? + (0, _defineProperty2.default)(this, "sessionLastCheckAttemptedTime", {}); + // When did we last try to check the server for a given session id? + // The backup manager will schedule backup of keys when active (`scheduleKeyBackupSend`), this allows cancel when client is stopped + (0, _defineProperty2.default)(this, "clientRunning", true); + this.baseApis = baseApis; + this.getKey = getKey; + this.checkedForBackup = false; + this.sendingBackups = false; + } + + /** + * Stop the backup manager from backing up keys and allow a clean shutdown. + */ + stop() { + this.clientRunning = false; + } + get version() { + return this.backupInfo && this.backupInfo.version; + } + + /** + * Performs a quick check to ensure that the backup info looks sane. + * + * Throws an error if a problem is detected. + * + * @param info - the key backup info + */ + static checkBackupVersion(info) { + const Algorithm = algorithmsByName[info.algorithm]; + if (!Algorithm) { + throw new Error("Unknown backup algorithm: " + info.algorithm); + } + if (typeof info.auth_data !== "object") { + throw new Error("Invalid backup data returned"); + } + return Algorithm.checkBackupVersion(info); + } + static makeAlgorithm(info, getKey) { + const Algorithm = algorithmsByName[info.algorithm]; + if (!Algorithm) { + throw new Error("Unknown backup algorithm"); + } + return Algorithm.init(info.auth_data, getKey); + } + async enableKeyBackup(info) { + this.backupInfo = info; + if (this.algorithm) { + this.algorithm.free(); + } + this.algorithm = await BackupManager.makeAlgorithm(info, this.getKey); + this.baseApis.emit(_index.CryptoEvent.KeyBackupStatus, true); + + // There may be keys left over from a partially completed backup, so + // schedule a send to check. + this.scheduleKeyBackupSend(); + } + + /** + * Disable backing up of keys. + */ + disableKeyBackup() { + if (this.algorithm) { + this.algorithm.free(); + } + this.algorithm = undefined; + this.backupInfo = undefined; + this.baseApis.emit(_index.CryptoEvent.KeyBackupStatus, false); + } + getKeyBackupEnabled() { + if (!this.checkedForBackup) { + return null; + } + return Boolean(this.algorithm); + } + async prepareKeyBackupVersion(key, algorithm) { + const Algorithm = algorithm ? algorithmsByName[algorithm] : DefaultAlgorithm; + if (!Algorithm) { + throw new Error("Unknown backup algorithm"); + } + const [privateKey, authData] = await Algorithm.prepare(key); + const recoveryKey = (0, _recoverykey.encodeRecoveryKey)(privateKey); + return { + algorithm: Algorithm.algorithmName, + auth_data: authData, + recovery_key: recoveryKey, + privateKey + }; + } + async createKeyBackupVersion(info) { + this.algorithm = await BackupManager.makeAlgorithm(info, this.getKey); + } + + /** + * Deletes all key backups. + * + * Will call the API to delete active backup until there is no more present. + */ + async deleteAllKeyBackupVersions() { + var _await$this$baseApis$, _await$this$baseApis$2; + // there could be several backup versions, delete all to be safe. + let current = (_await$this$baseApis$ = (_await$this$baseApis$2 = await this.baseApis.getKeyBackupVersion()) === null || _await$this$baseApis$2 === void 0 ? void 0 : _await$this$baseApis$2.version) !== null && _await$this$baseApis$ !== void 0 ? _await$this$baseApis$ : null; + while (current != null) { + var _await$this$baseApis$3, _await$this$baseApis$4; + await this.deleteKeyBackupVersion(current); + this.disableKeyBackup(); + current = (_await$this$baseApis$3 = (_await$this$baseApis$4 = await this.baseApis.getKeyBackupVersion()) === null || _await$this$baseApis$4 === void 0 ? void 0 : _await$this$baseApis$4.version) !== null && _await$this$baseApis$3 !== void 0 ? _await$this$baseApis$3 : null; + } + } + + /** + * Deletes the given key backup. + * + * @param version - The backup version to delete. + */ + async deleteKeyBackupVersion(version) { + const path = (0, _utils.encodeUri)("/room_keys/version/$version", { + $version: version + }); + await this.baseApis.http.authedRequest(_httpApi.Method.Delete, path, undefined, undefined, { + prefix: _httpApi.ClientPrefix.V3 + }); + } + + /** + * Check the server for an active key backup and + * if one is present and has a valid signature from + * one of the user's verified devices, start backing up + * to it. + */ + async checkAndStart() { + _logger.logger.log("Checking key backup status..."); + if (this.baseApis.isGuest()) { + _logger.logger.log("Skipping key backup check since user is guest"); + this.checkedForBackup = true; + return null; + } + let backupInfo; + try { + var _await$this$baseApis$5; + backupInfo = (_await$this$baseApis$5 = await this.baseApis.getKeyBackupVersion()) !== null && _await$this$baseApis$5 !== void 0 ? _await$this$baseApis$5 : undefined; + } catch (e) { + _logger.logger.log("Error checking for active key backup", e); + if (e.httpStatus === 404) { + // 404 is returned when the key backup does not exist, so that + // counts as successfully checking. + this.checkedForBackup = true; + } + return null; + } + this.checkedForBackup = true; + const trustInfo = await this.isKeyBackupTrusted(backupInfo); + if (trustInfo.usable && !this.backupInfo) { + _logger.logger.log(`Found usable key backup v${backupInfo.version}: enabling key backups`); + await this.enableKeyBackup(backupInfo); + } else if (!trustInfo.usable && this.backupInfo) { + _logger.logger.log("No usable key backup: disabling key backup"); + this.disableKeyBackup(); + } else if (!trustInfo.usable && !this.backupInfo) { + _logger.logger.log("No usable key backup: not enabling key backup"); + } else if (trustInfo.usable && this.backupInfo) { + // may not be the same version: if not, we should switch + if (backupInfo.version !== this.backupInfo.version) { + _logger.logger.log(`On backup version ${this.backupInfo.version} but ` + `found version ${backupInfo.version}: switching.`); + this.disableKeyBackup(); + await this.enableKeyBackup(backupInfo); + // We're now using a new backup, so schedule all the keys we have to be + // uploaded to the new backup. This is a bit of a workaround to upload + // keys to a new backup in *most* cases, but it won't cover all cases + // because we don't remember what backup version we uploaded keys to: + // see https://github.com/vector-im/element-web/issues/14833 + await this.scheduleAllGroupSessionsForBackup(); + } else { + _logger.logger.log(`Backup version ${backupInfo.version} still current`); + } + } + return { + backupInfo, + trustInfo + }; + } + + /** + * Forces a re-check of the key backup and enables/disables it + * as appropriate. + * + * @returns Object with backup info (as returned by + * getKeyBackupVersion) in backupInfo and + * trust information (as returned by isKeyBackupTrusted) + * in trustInfo. + */ + async checkKeyBackup() { + this.checkedForBackup = false; + return this.checkAndStart(); + } + + /** + * Attempts to retrieve a session from a key backup, if enough time + * has elapsed since the last check for this session id. + */ + async queryKeyBackupRateLimited(targetRoomId, targetSessionId) { + if (!this.backupInfo) { + return; + } + const now = new Date().getTime(); + if (!this.sessionLastCheckAttemptedTime[targetSessionId] || now - this.sessionLastCheckAttemptedTime[targetSessionId] > KEY_BACKUP_CHECK_RATE_LIMIT) { + this.sessionLastCheckAttemptedTime[targetSessionId] = now; + await this.baseApis.restoreKeyBackupWithCache(targetRoomId, targetSessionId, this.backupInfo, {}); + } + } + + /** + * Check if the given backup info is trusted. + * + * @param backupInfo - key backup info dict from /room_keys/version + */ + async isKeyBackupTrusted(backupInfo) { + const ret = { + usable: false, + trusted_locally: false, + sigs: [] + }; + if (!backupInfo || !backupInfo.algorithm || !backupInfo.auth_data || !backupInfo.auth_data.signatures) { + _logger.logger.info(`Key backup is absent or missing required data: ${JSON.stringify(backupInfo)}`); + return ret; + } + const userId = this.baseApis.getUserId(); + const privKey = await this.baseApis.crypto.getSessionBackupPrivateKey(); + if (privKey) { + let algorithm = null; + try { + algorithm = await BackupManager.makeAlgorithm(backupInfo, async () => privKey); + if (await algorithm.keyMatches(privKey)) { + _logger.logger.info("Backup is trusted locally"); + ret.trusted_locally = true; + } + } catch { + // do nothing -- if we have an error, then we don't mark it as + // locally trusted + } finally { + var _algorithm; + (_algorithm = algorithm) === null || _algorithm === void 0 || _algorithm.free(); + } + } + const mySigs = backupInfo.auth_data.signatures[userId] || {}; + for (const keyId of Object.keys(mySigs)) { + const keyIdParts = keyId.split(":"); + if (keyIdParts[0] !== "ed25519") { + _logger.logger.log("Ignoring unknown signature type: " + keyIdParts[0]); + continue; + } + // Could be a cross-signing master key, but just say this is the device + // ID for backwards compat + const sigInfo = { + deviceId: keyIdParts[1] + }; + + // first check to see if it's from our cross-signing key + const crossSigningId = this.baseApis.crypto.crossSigningInfo.getId(); + if (crossSigningId === sigInfo.deviceId) { + sigInfo.crossSigningId = true; + try { + await (0, _olmlib.verifySignature)(this.baseApis.crypto.olmDevice, backupInfo.auth_data, userId, sigInfo.deviceId, crossSigningId); + sigInfo.valid = true; + } catch (e) { + _logger.logger.warn("Bad signature from cross signing key " + crossSigningId, e); + sigInfo.valid = false; + } + ret.sigs.push(sigInfo); + continue; + } + + // Now look for a sig from a device + // At some point this can probably go away and we'll just support + // it being signed by the cross-signing master key + const device = this.baseApis.crypto.deviceList.getStoredDevice(userId, sigInfo.deviceId); + if (device) { + sigInfo.device = device; + sigInfo.deviceTrust = this.baseApis.checkDeviceTrust(userId, sigInfo.deviceId); + try { + await (0, _olmlib.verifySignature)(this.baseApis.crypto.olmDevice, backupInfo.auth_data, userId, device.deviceId, device.getFingerprint()); + sigInfo.valid = true; + } catch (e) { + _logger.logger.info("Bad signature from key ID " + keyId + " userID " + this.baseApis.getUserId() + " device ID " + device.deviceId + " fingerprint: " + device.getFingerprint(), backupInfo.auth_data, e); + sigInfo.valid = false; + } + } else { + sigInfo.valid = null; // Can't determine validity because we don't have the signing device + _logger.logger.info("Ignoring signature from unknown key " + keyId); + } + ret.sigs.push(sigInfo); + } + ret.usable = ret.sigs.some(s => { + var _s$deviceTrust; + return s.valid && (s.device && ((_s$deviceTrust = s.deviceTrust) === null || _s$deviceTrust === void 0 ? void 0 : _s$deviceTrust.isVerified()) || s.crossSigningId); + }); + return ret; + } + + /** + * Schedules sending all keys waiting to be sent to the backup, if not already + * scheduled. Retries if necessary. + * + * @param maxDelay - Maximum delay to wait in ms. 0 means no delay. + */ + async scheduleKeyBackupSend(maxDelay = 10000) { + _logger.logger.debug(`Key backup: scheduleKeyBackupSend currentSending:${this.sendingBackups} delay:${maxDelay}`); + if (this.sendingBackups) return; + this.sendingBackups = true; + try { + // wait between 0 and `maxDelay` seconds, to avoid backup + // requests from different clients hitting the server all at + // the same time when a new key is sent + const delay = Math.random() * maxDelay; + await (0, _utils.sleep)(delay); + if (!this.clientRunning) { + this.sendingBackups = false; + return; + } + let numFailures = 0; // number of consecutive failures + for (;;) { + if (!this.algorithm) { + return; + } + try { + const numBackedUp = await this.backupPendingKeys(KEY_BACKUP_KEYS_PER_REQUEST); + if (numBackedUp === 0) { + // no sessions left needing backup: we're done + this.sendingBackups = false; + return; + } + numFailures = 0; + } catch (err) { + numFailures++; + _logger.logger.log("Key backup request failed", err); + if (err instanceof _httpApi.MatrixError) { + const errCode = err.data.errcode; + if (errCode == "M_NOT_FOUND" || errCode == "M_WRONG_ROOM_KEYS_VERSION") { + // Set to false now as `checkKeyBackup` might schedule a backupsend before this one ends. + this.sendingBackups = false; + // Backup version has changed or this backup version + // has been deleted + this.baseApis.crypto.emit(_index.CryptoEvent.KeyBackupFailed, errCode); + // Re-check key backup status on error, so we can be + // sure to present the current situation when asked. + // This call might restart the backup loop if new backup version is trusted + await this.checkKeyBackup(); + return; + } + } + } + if (numFailures) { + // exponential backoff if we have failures + await (0, _utils.sleep)(1000 * Math.pow(2, Math.min(numFailures - 1, 4))); + } + if (!this.clientRunning) { + _logger.logger.debug("Key backup send loop aborted, client stopped"); + this.sendingBackups = false; + return; + } + } + } catch (err) { + // No one actually checks errors on this promise, it's spawned internally. + // Just log, apps/client should use events to check status + _logger.logger.log(`Backup loop failed ${err}`); + this.sendingBackups = false; + } + } + + /** + * Take some e2e keys waiting to be backed up and send them + * to the backup. + * + * @param limit - Maximum number of keys to back up + * @returns Number of sessions backed up + */ + async backupPendingKeys(limit) { + const sessions = await this.baseApis.crypto.cryptoStore.getSessionsNeedingBackup(limit); + if (!sessions.length) { + return 0; + } + let remaining = await this.baseApis.crypto.cryptoStore.countSessionsNeedingBackup(); + this.baseApis.crypto.emit(_index.CryptoEvent.KeyBackupSessionsRemaining, remaining); + const rooms = {}; + for (const session of sessions) { + var _deviceList$getDevice; + const roomId = session.sessionData.room_id; + (0, _utils.safeSet)(rooms, roomId, rooms[roomId] || { + sessions: {} + }); + const sessionData = this.baseApis.crypto.olmDevice.exportInboundGroupSession(session.senderKey, session.sessionId, session.sessionData); + sessionData.algorithm = _olmlib.MEGOLM_ALGORITHM; + const forwardedCount = (sessionData.forwarding_curve25519_key_chain || []).length; + const userId = this.baseApis.crypto.deviceList.getUserByIdentityKey(_olmlib.MEGOLM_ALGORITHM, session.senderKey); + const device = (_deviceList$getDevice = this.baseApis.crypto.deviceList.getDeviceByIdentityKey(_olmlib.MEGOLM_ALGORITHM, session.senderKey)) !== null && _deviceList$getDevice !== void 0 ? _deviceList$getDevice : undefined; + const verified = this.baseApis.crypto.checkDeviceInfoTrust(userId, device).isVerified(); + (0, _utils.safeSet)(rooms[roomId]["sessions"], session.sessionId, { + first_message_index: sessionData.first_known_index, + forwarded_count: forwardedCount, + is_verified: verified, + session_data: await this.algorithm.encryptSession(sessionData) + }); + } + await this.baseApis.sendKeyBackup(undefined, undefined, this.backupInfo.version, { + rooms + }); + await this.baseApis.crypto.cryptoStore.unmarkSessionsNeedingBackup(sessions); + remaining = await this.baseApis.crypto.cryptoStore.countSessionsNeedingBackup(); + this.baseApis.crypto.emit(_index.CryptoEvent.KeyBackupSessionsRemaining, remaining); + return sessions.length; + } + async backupGroupSession(senderKey, sessionId) { + await this.baseApis.crypto.cryptoStore.markSessionsNeedingBackup([{ + senderKey: senderKey, + sessionId: sessionId + }]); + if (this.backupInfo) { + // don't wait for this to complete: it will delay so + // happens in the background + this.scheduleKeyBackupSend(); + } + // if this.backupInfo is not set, then the keys will be backed up when + // this.enableKeyBackup is called + } + + /** + * Marks all group sessions as needing to be backed up and schedules them to + * upload in the background as soon as possible. + */ + async scheduleAllGroupSessionsForBackup() { + await this.flagAllGroupSessionsForBackup(); + + // Schedule keys to upload in the background as soon as possible. + this.scheduleKeyBackupSend(0 /* maxDelay */); + } + + /** + * Marks all group sessions as needing to be backed up without scheduling + * them to upload in the background. + * @returns Promise which resolves to the number of sessions now requiring a backup + * (which will be equal to the number of sessions in the store). + */ + async flagAllGroupSessionsForBackup() { + await this.baseApis.crypto.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_BACKUP], txn => { + this.baseApis.crypto.cryptoStore.getAllEndToEndInboundGroupSessions(txn, session => { + if (session !== null) { + this.baseApis.crypto.cryptoStore.markSessionsNeedingBackup([session], txn); + } + }); + }); + const remaining = await this.baseApis.crypto.cryptoStore.countSessionsNeedingBackup(); + this.baseApis.emit(_index.CryptoEvent.KeyBackupSessionsRemaining, remaining); + return remaining; + } + + /** + * Counts the number of end to end session keys that are waiting to be backed up + * @returns Promise which resolves to the number of sessions requiring backup + */ + countSessionsNeedingBackup() { + return this.baseApis.crypto.cryptoStore.countSessionsNeedingBackup(); + } +} +exports.BackupManager = BackupManager; +class Curve25519 { + constructor(authData, publicKey, + // FIXME: PkEncryption + getKey) { + this.authData = authData; + this.publicKey = publicKey; + this.getKey = getKey; + } + static async init(authData, getKey) { + if (!authData || !("public_key" in authData)) { + throw new Error("auth_data missing required information"); + } + const publicKey = new global.Olm.PkEncryption(); + publicKey.set_recipient_key(authData.public_key); + return new Curve25519(authData, publicKey, getKey); + } + static async prepare(key) { + const decryption = new global.Olm.PkDecryption(); + try { + const authData = {}; + if (!key) { + authData.public_key = decryption.generate_key(); + } else if (key instanceof Uint8Array) { + authData.public_key = decryption.init_with_private_key(key); + } else { + const derivation = await (0, _key_passphrase.keyFromPassphrase)(key); + authData.private_key_salt = derivation.salt; + authData.private_key_iterations = derivation.iterations; + authData.public_key = decryption.init_with_private_key(derivation.key); + } + const publicKey = new global.Olm.PkEncryption(); + publicKey.set_recipient_key(authData.public_key); + return [decryption.get_private_key(), authData]; + } finally { + decryption.free(); + } + } + static checkBackupVersion(info) { + if (!("public_key" in info.auth_data)) { + throw new Error("Invalid backup data returned"); + } + } + get untrusted() { + return true; + } + async encryptSession(data) { + const plainText = Object.assign({}, data); + delete plainText.session_id; + delete plainText.room_id; + delete plainText.first_known_index; + return this.publicKey.encrypt(JSON.stringify(plainText)); + } + async decryptSessions(sessions) { + const privKey = await this.getKey(); + const decryption = new global.Olm.PkDecryption(); + try { + const backupPubKey = decryption.init_with_private_key(privKey); + if (backupPubKey !== this.authData.public_key) { + throw new _httpApi.MatrixError({ + errcode: _client.MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY + }); + } + const keys = []; + for (const [sessionId, sessionData] of Object.entries(sessions)) { + try { + const decrypted = JSON.parse(decryption.decrypt(sessionData.session_data.ephemeral, sessionData.session_data.mac, sessionData.session_data.ciphertext)); + decrypted.session_id = sessionId; + keys.push(decrypted); + } catch (e) { + _logger.logger.log("Failed to decrypt megolm session from backup", e, sessionData); + } + } + return keys; + } finally { + decryption.free(); + } + } + async keyMatches(key) { + const decryption = new global.Olm.PkDecryption(); + let pubKey; + try { + pubKey = decryption.init_with_private_key(key); + } finally { + decryption.free(); + } + return pubKey === this.authData.public_key; + } + free() { + this.publicKey.free(); + } +} +exports.Curve25519 = Curve25519; +(0, _defineProperty2.default)(Curve25519, "algorithmName", "m.megolm_backup.v1.curve25519-aes-sha2"); +function randomBytes(size) { + const buf = new Uint8Array(size); + _crypto.crypto.getRandomValues(buf); + return buf; +} +const UNSTABLE_MSC3270_NAME = new _NamespacedValue.UnstableValue("m.megolm_backup.v1.aes-hmac-sha2", "org.matrix.msc3270.v1.aes-hmac-sha2"); +class Aes256 { + constructor(authData, key) { + this.authData = authData; + this.key = key; + } + static async init(authData, getKey) { + if (!authData) { + throw new Error("auth_data missing"); + } + const key = await getKey(); + if (authData.mac) { + const { + mac + } = await (0, _aes.calculateKeyCheck)(key, authData.iv); + if (authData.mac.replace(/=+$/g, "") !== mac.replace(/=+/g, "")) { + throw new Error("Key does not match"); + } + } + return new Aes256(authData, key); + } + static async prepare(key) { + let outKey; + const authData = {}; + if (!key) { + outKey = randomBytes(32); + } else if (key instanceof Uint8Array) { + outKey = new Uint8Array(key); + } else { + const derivation = await (0, _key_passphrase.keyFromPassphrase)(key); + authData.private_key_salt = derivation.salt; + authData.private_key_iterations = derivation.iterations; + outKey = derivation.key; + } + const { + iv, + mac + } = await (0, _aes.calculateKeyCheck)(outKey); + authData.iv = iv; + authData.mac = mac; + return [outKey, authData]; + } + static checkBackupVersion(info) { + if (!("iv" in info.auth_data && "mac" in info.auth_data)) { + throw new Error("Invalid backup data returned"); + } + } + get untrusted() { + return false; + } + encryptSession(data) { + const plainText = Object.assign({}, data); + delete plainText.session_id; + delete plainText.room_id; + delete plainText.first_known_index; + return (0, _aes.encryptAES)(JSON.stringify(plainText), this.key, data.session_id); + } + async decryptSessions(sessions) { + const keys = []; + for (const [sessionId, sessionData] of Object.entries(sessions)) { + try { + const decrypted = JSON.parse(await (0, _aes.decryptAES)(sessionData.session_data, this.key, sessionId)); + decrypted.session_id = sessionId; + keys.push(decrypted); + } catch (e) { + _logger.logger.log("Failed to decrypt megolm session from backup", e, sessionData); + } + } + return keys; + } + async keyMatches(key) { + if (this.authData.mac) { + const { + mac + } = await (0, _aes.calculateKeyCheck)(key, this.authData.iv); + return this.authData.mac.replace(/=+$/g, "") === mac.replace(/=+/g, ""); + } else { + // if we have no information, we have to assume the key is right + return true; + } + } + free() { + this.key.fill(0); + } +} +exports.Aes256 = Aes256; +(0, _defineProperty2.default)(Aes256, "algorithmName", UNSTABLE_MSC3270_NAME.name); +const algorithmsByName = exports.algorithmsByName = { + [Curve25519.algorithmName]: Curve25519, + [Aes256.algorithmName]: Aes256 +}; + +// the linter doesn't like this but knip does +// eslint-disable-next-line tsdoc/syntax +/** @alias */ +const DefaultAlgorithm = exports.DefaultAlgorithm = Curve25519; + +/** + * Map a legacy {@link TrustInfo} into a new-style {@link BackupTrustInfo}. + * + * @param trustInfo - trustInfo to convert + */ +function backupTrustInfoFromLegacyTrustInfo(trustInfo) { + var _trustInfo$trusted_lo; + return { + trusted: trustInfo.usable, + matchesDecryptionKey: (_trustInfo$trusted_lo = trustInfo.trusted_locally) !== null && _trustInfo$trusted_lo !== void 0 ? _trustInfo$trusted_lo : false + }; } -utils.inherits(OlmDecryption, _base.DecryptionAlgorithm); /** - * @inheritdoc - * - * @param {MatrixEvent} event - * - * returns a promise which resolves to a - * {@link module:crypto~EventDecryptionResult} once we have finished - * decrypting. Rejects with an `algorithms.DecryptionError` if there is a - * problem decrypting the event. + * Implementation of {@link BackupDecryptor} for the libolm crypto backend. */ - -OlmDecryption.prototype.decryptEvent = async function (event) { - const content = event.getWireContent(); - const deviceKey = content.sender_key; - const ciphertext = content.ciphertext; - - if (!ciphertext) { - throw new _base.DecryptionError("OLM_MISSING_CIPHERTEXT", "Missing ciphertext"); +class LibOlmBackupDecryptor { + constructor(algorithm) { + this.algorithm = algorithm; + this.sourceTrusted = !algorithm.untrusted; } - if (!(this._olmDevice.deviceCurve25519Key in ciphertext)) { - throw new _base.DecryptionError("OLM_NOT_INCLUDED_IN_RECIPIENTS", "Not included in recipients"); + /** + * Implements {@link BackupDecryptor#free} + */ + free() { + this.algorithm.free(); } - const message = ciphertext[this._olmDevice.deviceCurve25519Key]; - let payloadString; + /** + * Implements {@link BackupDecryptor#decryptSessions} + */ + async decryptSessions(sessions) { + return await this.algorithm.decryptSessions(sessions); + } +} +exports.LibOlmBackupDecryptor = LibOlmBackupDecryptor; +//# sourceMappingURL=backup.js.map +/***/ }), + +/***/ 8532: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.crypto = exports.TextEncoder = void 0; +exports.setCrypto = setCrypto; +exports.setTextEncoder = setTextEncoder; +exports.subtleCrypto = void 0; +var _logger = __nccwpck_require__(3854); +var _crypto$subtle, _crypto2, _crypto3; +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let crypto = exports.crypto = globalThis.crypto; +let subtleCrypto = exports.subtleCrypto = (_crypto$subtle = (_crypto2 = crypto) === null || _crypto2 === void 0 ? void 0 : _crypto2.subtle) !== null && _crypto$subtle !== void 0 ? _crypto$subtle : (_crypto3 = crypto) === null || _crypto3 === void 0 ? void 0 : _crypto3.webkitSubtle; // TODO: Stop using webkitSubtle fallback +let TextEncoder = exports.TextEncoder = globalThis.TextEncoder; + +/* eslint-disable @typescript-eslint/no-var-requires */ +if (!crypto) { try { - payloadString = await this._decryptMessage(deviceKey, message); + exports.crypto = crypto = (__nccwpck_require__(6113).webcrypto); } catch (e) { - throw new _base.DecryptionError("OLM_BAD_ENCRYPTED_MESSAGE", "Bad Encrypted Message", { - sender: deviceKey, - err: e + _logger.logger.error("Failed to load webcrypto", e); + } +} +if (!subtleCrypto) { + var _crypto4; + exports.subtleCrypto = subtleCrypto = (_crypto4 = crypto) === null || _crypto4 === void 0 ? void 0 : _crypto4.subtle; +} +if (!TextEncoder) { + try { + exports.TextEncoder = TextEncoder = (__nccwpck_require__(3837).TextEncoder); + } catch (e) { + _logger.logger.error("Failed to load TextEncoder util", e); + } +} +/* eslint-enable @typescript-eslint/no-var-requires */ + +function setCrypto(_crypto) { + var _crypto$subtle2; + exports.crypto = crypto = _crypto; + exports.subtleCrypto = subtleCrypto = (_crypto$subtle2 = _crypto.subtle) !== null && _crypto$subtle2 !== void 0 ? _crypto$subtle2 : _crypto.webkitSubtle; +} +function setTextEncoder(_TextEncoder) { + exports.TextEncoder = TextEncoder = _TextEncoder; +} +//# sourceMappingURL=crypto.js.map + +/***/ }), + +/***/ 1546: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DehydrationManager = exports.DEHYDRATION_ALGORITHM = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _anotherJson = _interopRequireDefault(__nccwpck_require__(7775)); +var _base = __nccwpck_require__(7477); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +var _aes = __nccwpck_require__(7502); +var _logger = __nccwpck_require__(3854); +var _httpApi = __nccwpck_require__(7082); +/* +Copyright 2020-2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const DEHYDRATION_ALGORITHM = exports.DEHYDRATION_ALGORITHM = "org.matrix.msc2697.v1.olm.libolm_pickle"; +const oneweek = 7 * 24 * 60 * 60 * 1000; +class DehydrationManager { + constructor(crypto) { + (0, _defineProperty2.default)(this, "inProgress", false); + this.crypto = crypto; + this.getDehydrationKeyFromCache(); + } + getDehydrationKeyFromCache() { + return this.crypto.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.crypto.cryptoStore.getSecretStorePrivateKey(txn, async result => { + if (result) { + const { + key, + keyInfo, + deviceDisplayName, + time + } = result; + const pickleKey = Buffer.from(this.crypto.olmDevice.pickleKey); + const decrypted = await (0, _aes.decryptAES)(key, pickleKey, DEHYDRATION_ALGORITHM); + this.key = (0, _base.decodeBase64)(decrypted); + this.keyInfo = keyInfo; + this.deviceDisplayName = deviceDisplayName; + const now = Date.now(); + const delay = Math.max(1, time + oneweek - now); + this.timeoutId = global.setTimeout(this.dehydrateDevice.bind(this), delay); + } + }, "dehydration"); }); } - const payload = JSON.parse(payloadString); // check that we were the intended recipient, to avoid unknown-key attack - // https://github.com/vector-im/vector-web/issues/2483 + /** set the key, and queue periodic dehydration to the server in the background */ + async setKeyAndQueueDehydration(key, keyInfo = {}, deviceDisplayName) { + const matches = await this.setKey(key, keyInfo, deviceDisplayName); + if (!matches) { + // start dehydration in the background + this.dehydrateDevice(); + } + } + async setKey(key, keyInfo = {}, deviceDisplayName) { + if (!key) { + // unsetting the key -- cancel any pending dehydration task + if (this.timeoutId) { + global.clearTimeout(this.timeoutId); + this.timeoutId = undefined; + } + // clear storage + await this.crypto.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.crypto.cryptoStore.storeSecretStorePrivateKey(txn, "dehydration", null); + }); + this.key = undefined; + this.keyInfo = undefined; + return; + } - if (payload.recipient != this._userId) { - throw new _base.DecryptionError("OLM_BAD_RECIPIENT", "Message was intented for " + payload.recipient); + // Check to see if it's the same key as before. If it's different, + // dehydrate a new device. If it's the same, we can keep the same + // device. (Assume that keyInfo and deviceDisplayName will be the + // same if the key is the same.) + let matches = !!this.key && key.length == this.key.length; + for (let i = 0; matches && i < key.length; i++) { + if (key[i] != this.key[i]) { + matches = false; + } + } + if (!matches) { + this.key = key; + this.keyInfo = keyInfo; + this.deviceDisplayName = deviceDisplayName; + } + return matches; } - if (payload.recipient_keys.ed25519 != this._olmDevice.deviceEd25519Key) { - throw new _base.DecryptionError("OLM_BAD_RECIPIENT_KEY", "Message not intended for this device", { - intended: payload.recipient_keys.ed25519, - our_key: this._olmDevice.deviceEd25519Key - }); - } // check that the original sender matches what the homeserver told us, to - // avoid people masquerading as others. - // (this check is also provided via the sender's embedded ed25519 key, - // which is checked elsewhere). - - - if (payload.sender != event.getSender()) { - throw new _base.DecryptionError("OLM_FORWARDED_MESSAGE", "Message forwarded from " + payload.sender, { - reported_sender: event.getSender() - }); - } // Olm events intended for a room have a room_id. - - - if (payload.room_id !== event.getRoomId()) { - throw new _base.DecryptionError("OLM_BAD_ROOM", "Message intended for room " + payload.room_id, { - reported_room: event.room_id - }); - } - - const claimedKeys = payload.keys || {}; - return { - clearEvent: payload, - senderCurve25519Key: deviceKey, - claimedEd25519Key: claimedKeys.ed25519 || null - }; -}; -/** - * Attempt to decrypt an Olm message - * - * @param {string} theirDeviceIdentityKey Curve25519 identity key of the sender - * @param {object} message message object, with 'type' and 'body' fields - * - * @return {string} payload, if decrypted successfully. - */ - - -OlmDecryption.prototype._decryptMessage = async function (theirDeviceIdentityKey, message) { - // This is a wrapper that serialises decryptions of prekey messages, because - // otherwise we race between deciding we have no active sessions for the message - // and creating a new one, which we can only do once because it removes the OTK. - if (message.type !== 0) { - // not a prekey message: we can safely just try & decrypt it - return this._reallyDecryptMessage(theirDeviceIdentityKey, message); - } else { - const myPromise = this._olmDevice._olmPrekeyPromise.then(() => { - return this._reallyDecryptMessage(theirDeviceIdentityKey, message); - }); // we want the error, but don't propagate it to the next decryption - - - this._olmDevice._olmPrekeyPromise = myPromise.catch(() => {}); - return await myPromise; - } -}; - -OlmDecryption.prototype._reallyDecryptMessage = async function (theirDeviceIdentityKey, message) { - const sessionIds = await this._olmDevice.getSessionIdsForDevice(theirDeviceIdentityKey); // try each session in turn. - - const decryptionErrors = {}; - - for (let i = 0; i < sessionIds.length; i++) { - const sessionId = sessionIds[i]; - + /** returns the device id of the newly created dehydrated device */ + async dehydrateDevice() { + if (this.inProgress) { + _logger.logger.log("Dehydration already in progress -- not starting new dehydration"); + return; + } + this.inProgress = true; + if (this.timeoutId) { + global.clearTimeout(this.timeoutId); + this.timeoutId = undefined; + } try { - const payload = await this._olmDevice.decryptMessage(theirDeviceIdentityKey, sessionId, message.type, message.body); + const pickleKey = Buffer.from(this.crypto.olmDevice.pickleKey); - _logger.logger.log("Decrypted Olm message from " + theirDeviceIdentityKey + " with session " + sessionId); + // update the crypto store with the timestamp + const key = await (0, _aes.encryptAES)((0, _base.encodeBase64)(this.key), pickleKey, DEHYDRATION_ALGORITHM); + await this.crypto.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.crypto.cryptoStore.storeSecretStorePrivateKey(txn, "dehydration", { + keyInfo: this.keyInfo, + key, + deviceDisplayName: this.deviceDisplayName, + time: Date.now() + }); + }); + _logger.logger.log("Attempting to dehydrate device"); + _logger.logger.log("Creating account"); + // create the account and all the necessary keys + const account = new global.Olm.Account(); + account.create(); + const e2eKeys = JSON.parse(account.identity_keys()); + const maxKeys = account.max_number_of_one_time_keys(); + // FIXME: generate in small batches? + account.generate_one_time_keys(maxKeys / 2); + account.generate_fallback_key(); + const otks = JSON.parse(account.one_time_keys()); + const fallbacks = JSON.parse(account.fallback_key()); + account.mark_keys_as_published(); - return payload; - } catch (e) { - const foundSession = await this._olmDevice.matchesSession(theirDeviceIdentityKey, sessionId, message.type, message.body); + // dehydrate the account and store it on the server + const pickledAccount = account.pickle(new Uint8Array(this.key)); + const deviceData = { + algorithm: DEHYDRATION_ALGORITHM, + account: pickledAccount + }; + if (this.keyInfo.passphrase) { + deviceData.passphrase = this.keyInfo.passphrase; + } + _logger.logger.log("Uploading account to server"); + // eslint-disable-next-line camelcase + const dehydrateResult = await this.crypto.baseApis.http.authedRequest(_httpApi.Method.Put, "/dehydrated_device", undefined, { + device_data: deviceData, + initial_device_display_name: this.deviceDisplayName + }, { + prefix: "/_matrix/client/unstable/org.matrix.msc2697.v2" + }); - if (foundSession) { - // decryption failed, but it was a prekey message matching this - // session, so it should have worked. - throw new Error("Error decrypting prekey message with existing session id " + sessionId + ": " + e.message); - } // otherwise it's probably a message for another session; carry on, but - // keep a record of the error + // send the keys to the server + const deviceId = dehydrateResult.device_id; + _logger.logger.log("Preparing device keys", deviceId); + const deviceKeys = { + algorithms: this.crypto.supportedAlgorithms, + device_id: deviceId, + user_id: this.crypto.userId, + keys: { + [`ed25519:${deviceId}`]: e2eKeys.ed25519, + [`curve25519:${deviceId}`]: e2eKeys.curve25519 + } + }; + const deviceSignature = account.sign(_anotherJson.default.stringify(deviceKeys)); + deviceKeys.signatures = { + [this.crypto.userId]: { + [`ed25519:${deviceId}`]: deviceSignature + } + }; + if (this.crypto.crossSigningInfo.getId("self_signing")) { + await this.crypto.crossSigningInfo.signObject(deviceKeys, "self_signing"); + } + _logger.logger.log("Preparing one-time keys"); + const oneTimeKeys = {}; + for (const [keyId, key] of Object.entries(otks.curve25519)) { + const k = { + key + }; + const signature = account.sign(_anotherJson.default.stringify(k)); + k.signatures = { + [this.crypto.userId]: { + [`ed25519:${deviceId}`]: signature + } + }; + oneTimeKeys[`signed_curve25519:${keyId}`] = k; + } + _logger.logger.log("Preparing fallback keys"); + const fallbackKeys = {}; + for (const [keyId, key] of Object.entries(fallbacks.curve25519)) { + const k = { + key, + fallback: true + }; + const signature = account.sign(_anotherJson.default.stringify(k)); + k.signatures = { + [this.crypto.userId]: { + [`ed25519:${deviceId}`]: signature + } + }; + fallbackKeys[`signed_curve25519:${keyId}`] = k; + } + _logger.logger.log("Uploading keys to server"); + await this.crypto.baseApis.http.authedRequest(_httpApi.Method.Post, "/keys/upload/" + encodeURI(deviceId), undefined, { + "device_keys": deviceKeys, + "one_time_keys": oneTimeKeys, + "org.matrix.msc2732.fallback_keys": fallbackKeys + }); + _logger.logger.log("Done dehydrating"); - - decryptionErrors[sessionId] = e.message; + // dehydrate again in a week + this.timeoutId = global.setTimeout(this.dehydrateDevice.bind(this), oneweek); + return deviceId; + } finally { + this.inProgress = false; } } - - if (message.type !== 0) { - // not a prekey message, so it should have matched an existing session, but it - // didn't work. - if (sessionIds.length === 0) { - throw new Error("No existing sessions"); + stop() { + if (this.timeoutId) { + global.clearTimeout(this.timeoutId); + this.timeoutId = undefined; } - - throw new Error("Error decrypting non-prekey message with existing sessions: " + JSON.stringify(decryptionErrors)); - } // prekey message which doesn't match any existing sessions: make a new - // session. - - - let res; - - try { - res = await this._olmDevice.createInboundSession(theirDeviceIdentityKey, message.type, message.body); - } catch (e) { - decryptionErrors["(new)"] = e.message; - throw new Error("Error decrypting prekey message: " + JSON.stringify(decryptionErrors)); } +} +exports.DehydrationManager = DehydrationManager; +//# sourceMappingURL=dehydration.js.map - _logger.logger.log("created new inbound Olm session ID " + res.session_id + " with " + theirDeviceIdentityKey); +/***/ }), - return res.payload; -}; +/***/ 2730: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -(0, _base.registerAlgorithm)(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption); +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.deviceInfoToDevice = deviceInfoToDevice; +var _device = __nccwpck_require__(7482); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Convert a {@link DeviceInfo} to a {@link Device}. + * @param deviceInfo - deviceInfo to convert + * @param userId - id of the user that owns the device. + */ +function deviceInfoToDevice(deviceInfo, userId) { + const keys = new Map(Object.entries(deviceInfo.keys)); + const displayName = deviceInfo.getDisplayName() || undefined; + const signatures = new Map(); + if (deviceInfo.signatures) { + for (const userId in deviceInfo.signatures) { + signatures.set(userId, new Map(Object.entries(deviceInfo.signatures[userId]))); + } + } + return new _device.Device({ + deviceId: deviceInfo.deviceId, + userId: userId, + keys, + algorithms: deviceInfo.algorithms, + verified: deviceInfo.verified, + signatures, + displayName + }); +} +//# sourceMappingURL=device-converter.js.map /***/ }), /***/ 5232: -/***/ ((__unused_webpack_module, exports) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.DeviceInfo = DeviceInfo; - +exports.DeviceInfo = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _device = __nccwpck_require__(7482); /* -Copyright 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -39308,241 +148567,205 @@ limitations under the License. */ /** - * @module crypto/deviceinfo - */ - -/** - * Information about a user's device - * - * @constructor - * @alias module:crypto/deviceinfo - * - * @property {string} deviceId the ID of this device - * - * @property {string[]} algorithms list of algorithms supported by this device - * - * @property {Object.} keys a map from - * <key type>:<id> -> <base64-encoded key>> - * - * @property {module:crypto/deviceinfo.DeviceVerification} verified - * whether the device has been verified/blocked by the user - * - * @property {boolean} known - * whether the user knows of this device's existence (useful when warning - * the user that a user has added new devices) - * - * @property {Object} unsigned additional data from the homeserver - * - * @param {string} deviceId id of the device - */ -function DeviceInfo(deviceId) { - // you can't change the deviceId - Object.defineProperty(this, 'deviceId', { - enumerable: true, - value: deviceId - }); - this.algorithms = []; - this.keys = {}; - this.verified = DeviceVerification.UNVERIFIED; - this.known = false; - this.unsigned = {}; - this.signatures = {}; -} -/** - * rehydrate a DeviceInfo from the session store + * Information about a user's device * - * @param {object} obj raw object from session store - * @param {string} deviceId id of the device - * - * @return {module:crypto~DeviceInfo} new DeviceInfo + * Superceded by {@link Device}. */ - - -DeviceInfo.fromStorage = function (obj, deviceId) { - const res = new DeviceInfo(deviceId); - - for (const prop in obj) { - if (obj.hasOwnProperty(prop)) { - res[prop] = obj[prop]; +class DeviceInfo { + /** + * rehydrate a DeviceInfo from the session store + * + * @param obj - raw object from session store + * @param deviceId - id of the device + * + * @returns new DeviceInfo + */ + static fromStorage(obj, deviceId) { + const res = new DeviceInfo(deviceId); + for (const prop in obj) { + if (obj.hasOwnProperty(prop)) { + // @ts-ignore - this is messy and typescript doesn't like it + res[prop] = obj[prop]; + } } + return res; + } + /** + * @param deviceId - id of the device + */ + constructor(deviceId) { + /** list of algorithms supported by this device */ + (0, _defineProperty2.default)(this, "algorithms", []); + /** a map from `: -> ` */ + (0, _defineProperty2.default)(this, "keys", {}); + /** whether the device has been verified/blocked by the user */ + (0, _defineProperty2.default)(this, "verified", _device.DeviceVerification.Unverified); + /** + * whether the user knows of this device's existence + * (useful when warning the user that a user has added new devices) + */ + (0, _defineProperty2.default)(this, "known", false); + /** additional data from the homeserver */ + (0, _defineProperty2.default)(this, "unsigned", {}); + (0, _defineProperty2.default)(this, "signatures", {}); + this.deviceId = deviceId; } - return res; -}; -/** - * Prepare a DeviceInfo for JSON serialisation in the session store - * - * @return {object} deviceinfo with non-serialised members removed - */ + /** + * Prepare a DeviceInfo for JSON serialisation in the session store + * + * @returns deviceinfo with non-serialised members removed + */ + toStorage() { + return { + algorithms: this.algorithms, + keys: this.keys, + verified: this.verified, + known: this.known, + unsigned: this.unsigned, + signatures: this.signatures + }; + } + /** + * Get the fingerprint for this device (ie, the Ed25519 key) + * + * @returns base64-encoded fingerprint of this device + */ + getFingerprint() { + return this.keys["ed25519:" + this.deviceId]; + } -DeviceInfo.prototype.toStorage = function () { - return { - algorithms: this.algorithms, - keys: this.keys, - verified: this.verified, - known: this.known, - unsigned: this.unsigned, - signatures: this.signatures - }; -}; -/** - * Get the fingerprint for this device (ie, the Ed25519 key) - * - * @return {string} base64-encoded fingerprint of this device - */ + /** + * Get the identity key for this device (ie, the Curve25519 key) + * + * @returns base64-encoded identity key of this device + */ + getIdentityKey() { + return this.keys["curve25519:" + this.deviceId]; + } + /** + * Get the configured display name for this device, if any + * + * @returns displayname + */ + getDisplayName() { + return this.unsigned.device_display_name || null; + } -DeviceInfo.prototype.getFingerprint = function () { - return this.keys["ed25519:" + this.deviceId]; -}; -/** - * Get the identity key for this device (ie, the Curve25519 key) - * - * @return {string} base64-encoded identity key of this device - */ + /** + * Returns true if this device is blocked + * + * @returns true if blocked + */ + isBlocked() { + return this.verified == _device.DeviceVerification.Blocked; + } + /** + * Returns true if this device is verified + * + * @returns true if verified + */ + isVerified() { + return this.verified == _device.DeviceVerification.Verified; + } -DeviceInfo.prototype.getIdentityKey = function () { - return this.keys["curve25519:" + this.deviceId]; -}; -/** - * Get the configured display name for this device, if any - * - * @return {string?} displayname - */ + /** + * Returns true if this device is unverified + * + * @returns true if unverified + */ + isUnverified() { + return this.verified == _device.DeviceVerification.Unverified; + } - -DeviceInfo.prototype.getDisplayName = function () { - return this.unsigned.device_display_name || null; -}; -/** - * Returns true if this device is blocked - * - * @return {Boolean} true if blocked - */ - - -DeviceInfo.prototype.isBlocked = function () { - return this.verified == DeviceVerification.BLOCKED; -}; -/** - * Returns true if this device is verified - * - * @return {Boolean} true if verified - */ - - -DeviceInfo.prototype.isVerified = function () { - return this.verified == DeviceVerification.VERIFIED; -}; -/** - * Returns true if this device is unverified - * - * @return {Boolean} true if unverified - */ - - -DeviceInfo.prototype.isUnverified = function () { - return this.verified == DeviceVerification.UNVERIFIED; -}; -/** - * Returns true if the user knows about this device's existence - * - * @return {Boolean} true if known - */ - - -DeviceInfo.prototype.isKnown = function () { - return this.known == true; -}; -/** - * @enum - */ - - -DeviceInfo.DeviceVerification = { - VERIFIED: 1, - UNVERIFIED: 0, - BLOCKED: -1 -}; -const DeviceVerification = DeviceInfo.DeviceVerification; + /** + * Returns true if the user knows about this device's existence + * + * @returns true if known + */ + isKnown() { + return this.known === true; + } +} +exports.DeviceInfo = DeviceInfo; +(0, _defineProperty2.default)(DeviceInfo, "DeviceVerification", { + VERIFIED: _device.DeviceVerification.Verified, + UNVERIFIED: _device.DeviceVerification.Unverified, + BLOCKED: _device.DeviceVerification.Blocked +}); +//# sourceMappingURL=deviceinfo.js.map /***/ }), /***/ 9839: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - -var _interopRequireDefault = __webpack_require__(3298); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isCryptoAvailable = isCryptoAvailable; -exports.Crypto = Crypto; +exports.IncomingRoomKeyRequest = exports.CryptoEvent = exports.Crypto = void 0; exports.fixBackupKey = fixBackupKey; +exports.isCryptoAvailable = isCryptoAvailable; exports.verificationMethods = void 0; - -var _anotherJson = _interopRequireDefault(__webpack_require__(7775)); - -var _events = __webpack_require__(8614); - -var _ReEmitter = __webpack_require__(9554); - -var _logger = __webpack_require__(3854); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _OlmDevice = __webpack_require__(3033); - -var olmlib = _interopRequireWildcard(__webpack_require__(7131)); - -var _DeviceList = __webpack_require__(7989); - -var _deviceinfo = __webpack_require__(5232); - -var algorithms = _interopRequireWildcard(__webpack_require__(1534)); - -var _CrossSigning = __webpack_require__(2933); - -var _EncryptionSetup = __webpack_require__(6337); - -var _SecretStorage = __webpack_require__(5833); - -var _OutgoingRoomKeyRequestManager = __webpack_require__(4724); - -var _indexeddbCryptoStore = __webpack_require__(5651); - -var _QRCode = __webpack_require__(6612); - -var _SAS = __webpack_require__(7911); - -var _key_passphrase = __webpack_require__(7664); - -var _recoverykey = __webpack_require__(4531); - -var _VerificationRequest = __webpack_require__(9685); - -var _InRoomChannel = __webpack_require__(8434); - -var _ToDeviceChannel = __webpack_require__(626); - -var _IllegalMethod = __webpack_require__(1646); - -var _errors = __webpack_require__(1905); - -var _aes = __webpack_require__(7502); - -/* +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _anotherJson = _interopRequireDefault(__nccwpck_require__(7775)); +var _uuid = __nccwpck_require__(5840); +var _event = __nccwpck_require__(7487); +var _ReEmitter = __nccwpck_require__(9554); +var _logger = __nccwpck_require__(3854); +var _OlmDevice = __nccwpck_require__(3033); +var olmlib = _interopRequireWildcard(__nccwpck_require__(7131)); +var _DeviceList = __nccwpck_require__(7989); +var _deviceinfo = __nccwpck_require__(5232); +var algorithms = _interopRequireWildcard(__nccwpck_require__(1534)); +var _CrossSigning = __nccwpck_require__(2933); +var _EncryptionSetup = __nccwpck_require__(6337); +var _SecretStorage = __nccwpck_require__(5833); +var _api = __nccwpck_require__(3180); +var _OutgoingRoomKeyRequestManager = __nccwpck_require__(4724); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +var _QRCode = __nccwpck_require__(6612); +var _SAS = __nccwpck_require__(7911); +var _key_passphrase = __nccwpck_require__(7664); +var _recoverykey = __nccwpck_require__(4531); +var _VerificationRequest = __nccwpck_require__(9685); +var _InRoomChannel = __nccwpck_require__(8434); +var _ToDeviceChannel = __nccwpck_require__(626); +var _IllegalMethod = __nccwpck_require__(1646); +var _errors = __nccwpck_require__(1905); +var _aes = __nccwpck_require__(7502); +var _dehydration = __nccwpck_require__(1546); +var _backup = __nccwpck_require__(9366); +var _room = __nccwpck_require__(7688); +var _roomMember = __nccwpck_require__(7024); +var _event2 = __nccwpck_require__(9564); +var _client = __nccwpck_require__(9058); +var _RoomList = __nccwpck_require__(4472); +var _typedEventEmitter = __nccwpck_require__(7150); +var _CryptoBackend = __nccwpck_require__(3959); +var _roomState = __nccwpck_require__(1513); +var _utils = __nccwpck_require__(2557); +var _secretStorage = __nccwpck_require__(8597); +var _cryptoApi = __nccwpck_require__(3819); +var _deviceConverter = __nccwpck_require__(2730); +var _httpApi = __nccwpck_require__(7082); +var _base = __nccwpck_require__(7477); +var _membership = __nccwpck_require__(9225); +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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* Copyright 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd Copyright 2018-2019 New Vector Ltd -Copyright 2019-2020 The Matrix.org Foundation C.I.C. +Copyright 2019-2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -39556,10 +148779,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +/* re-exports for backwards compatibility */ -/** - * @module crypto - */ const DeviceVerification = _deviceinfo.DeviceInfo.DeviceVerification; const defaultVerificationMethods = { [_QRCode.ReciprocateQRCode.NAME]: _QRCode.ReciprocateQRCode, @@ -39570,1949 +148791,2056 @@ const defaultVerificationMethods = { [_QRCode.SHOW_QR_CODE_METHOD]: _IllegalMethod.IllegalMethod, [_QRCode.SCAN_QR_CODE_METHOD]: _IllegalMethod.IllegalMethod }; + /** * verification method names */ - -const verificationMethods = { +// legacy export identifier +const verificationMethods = exports.verificationMethods = { RECIPROCATE_QR_CODE: _QRCode.ReciprocateQRCode.NAME, SAS: _SAS.SAS.NAME }; -exports.verificationMethods = verificationMethods; - function isCryptoAvailable() { - return Boolean(global.Olm); + return Boolean(globalThis.Olm); } -const MIN_FORCE_SESSION_INTERVAL_MS = 60 * 60 * 1000; -const KEY_BACKUP_KEYS_PER_REQUEST = 200; +// minimum time between attempting to unwedge an Olm session, if we succeeded +// in creating a new session +const MIN_FORCE_SESSION_INTERVAL_MS = 60 * 60 * 1000; // 1 hour +// minimum time between attempting to unwedge an Olm session, if we failed +// to create a new session +const FORCE_SESSION_RETRY_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes + +/* eslint-disable camelcase */ + /** - * Cryptography bits - * - * This module is internal to the js-sdk; the public API is via MatrixClient. - * - * @constructor - * @alias module:crypto - * - * @internal - * - * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface - * - * @param {module:store/session/webstorage~WebStorageSessionStore} sessionStore - * Store to be used for end-to-end crypto session data - * - * @param {string} userId The user ID for the local user - * - * @param {string} deviceId The identifier for this device. - * - * @param {Object} clientStore the MatrixClient data store. - * - * @param {module:crypto/store/base~CryptoStore} cryptoStore - * storage for the crypto layer. - * - * @param {RoomList} roomList An initialised RoomList object - * - * @param {Array} verificationMethods Array of verification methods to use. - * Each element can either be a string from MatrixClient.verificationMethods - * or a class that implements a verification method. + * The parameters of a room key request. The details of the request may + * vary with the crypto algorithm, but the management and storage layers for + * outgoing requests expect it to have 'room_id' and 'session_id' properties. */ -function Crypto(baseApis, sessionStore, userId, deviceId, clientStore, cryptoStore, roomList, verificationMethods) { - this._onDeviceListUserCrossSigningUpdated = this._onDeviceListUserCrossSigningUpdated.bind(this); - this._trustCrossSignedDevices = true; - this._reEmitter = new _ReEmitter.ReEmitter(this); - this._baseApis = baseApis; - this._sessionStore = sessionStore; - this._userId = userId; - this._deviceId = deviceId; - this._clientStore = clientStore; - this._cryptoStore = cryptoStore; - this._roomList = roomList; +/* eslint-enable camelcase */ - if (verificationMethods) { - this._verificationMethods = new Map(); +/* eslint-disable camelcase */ - for (const method of verificationMethods) { - if (typeof method === "string") { - if (defaultVerificationMethods[method]) { - this._verificationMethods.set(method, defaultVerificationMethods[method]); +/* eslint-enable camelcase */ +let CryptoEvent = exports.CryptoEvent = /*#__PURE__*/function (CryptoEvent) { + CryptoEvent["DeviceVerificationChanged"] = "deviceVerificationChanged"; + CryptoEvent["UserTrustStatusChanged"] = "userTrustStatusChanged"; + CryptoEvent["UserCrossSigningUpdated"] = "userCrossSigningUpdated"; + CryptoEvent["RoomKeyRequest"] = "crypto.roomKeyRequest"; + CryptoEvent["RoomKeyRequestCancellation"] = "crypto.roomKeyRequestCancellation"; + CryptoEvent["KeyBackupStatus"] = "crypto.keyBackupStatus"; + CryptoEvent["KeyBackupFailed"] = "crypto.keyBackupFailed"; + CryptoEvent["KeyBackupSessionsRemaining"] = "crypto.keyBackupSessionsRemaining"; + CryptoEvent["KeyBackupDecryptionKeyCached"] = "crypto.keyBackupDecryptionKeyCached"; + CryptoEvent["KeySignatureUploadFailure"] = "crypto.keySignatureUploadFailure"; + CryptoEvent["VerificationRequest"] = "crypto.verification.request"; + CryptoEvent["VerificationRequestReceived"] = "crypto.verificationRequestReceived"; + CryptoEvent["Warning"] = "crypto.warning"; + CryptoEvent["WillUpdateDevices"] = "crypto.willUpdateDevices"; + CryptoEvent["DevicesUpdated"] = "crypto.devicesUpdated"; + CryptoEvent["KeysChanged"] = "crossSigning.keysChanged"; + CryptoEvent["LegacyCryptoStoreMigrationProgress"] = "crypto.legacyCryptoStoreMigrationProgress"; + return CryptoEvent; +}({}); +class Crypto extends _typedEventEmitter.TypedEventEmitter { + /** + * @returns The version of Olm. + */ + static getOlmVersion() { + return _OlmDevice.OlmDevice.getOlmVersion(); + } + /** + * Cryptography bits + * + * This module is internal to the js-sdk; the public API is via MatrixClient. + * + * @internal + * + * @param baseApis - base matrix api interface + * + * @param userId - The user ID for the local user + * + * @param deviceId - The identifier for this device. + * + * @param clientStore - the MatrixClient data store. + * + * @param cryptoStore - storage for the crypto layer. + * + * @param verificationMethods - Array of verification methods to use. + * Each element can either be a string from MatrixClient.verificationMethods + * or a class that implements a verification method. + */ + constructor(baseApis, _userId, deviceId, clientStore, cryptoStore, verificationMethods) { + super(); + (0, _defineProperty2.default)(this, "trustCrossSignedDevices", true); + // the last time we did a check for the number of one-time-keys on the server. + (0, _defineProperty2.default)(this, "lastOneTimeKeyCheck", null); + (0, _defineProperty2.default)(this, "oneTimeKeyCheckInProgress", false); + // EncryptionAlgorithm instance for each room + (0, _defineProperty2.default)(this, "roomEncryptors", new Map()); + // map from algorithm to DecryptionAlgorithm instance, for each room + (0, _defineProperty2.default)(this, "roomDecryptors", new Map()); + (0, _defineProperty2.default)(this, "deviceKeys", {}); + // type: key + (0, _defineProperty2.default)(this, "globalBlacklistUnverifiedDevices", false); + (0, _defineProperty2.default)(this, "globalErrorOnUnknownDevices", true); + // list of IncomingRoomKeyRequests/IncomingRoomKeyRequestCancellations + // we received in the current sync. + (0, _defineProperty2.default)(this, "receivedRoomKeyRequests", []); + (0, _defineProperty2.default)(this, "receivedRoomKeyRequestCancellations", []); + // true if we are currently processing received room key requests + (0, _defineProperty2.default)(this, "processingRoomKeyRequests", false); + // controls whether device tracking is delayed + // until calling encryptEvent or trackRoomDevices, + // or done immediately upon enabling room encryption. + (0, _defineProperty2.default)(this, "lazyLoadMembers", false); + // in case lazyLoadMembers is true, + // track if an initial tracking of all the room members + // has happened for a given room. This is delayed + // to avoid loading room members as long as possible. + (0, _defineProperty2.default)(this, "roomDeviceTrackingState", {}); + // The timestamp of the minimum time at which we will retry forcing establishment + // of a new session for each device, in milliseconds. + // { + // userId: { + // deviceId: 1234567890000, + // }, + // } + // Map: user Id → device Id → timestamp + (0, _defineProperty2.default)(this, "forceNewSessionRetryTime", new _utils.MapWithDefault(() => new _utils.MapWithDefault(() => 0))); + // This flag will be unset whilst the client processes a sync response + // so that we don't start requesting keys until we've actually finished + // processing the response. + (0, _defineProperty2.default)(this, "sendKeyRequestsImmediately", false); + /* + * Event handler for DeviceList's userNewDevices event + */ + (0, _defineProperty2.default)(this, "onDeviceListUserCrossSigningUpdated", async userId => { + if (userId === this.userId) { + // An update to our own cross-signing key. + // Get the new key first: + const newCrossSigning = this.deviceList.getStoredCrossSigningForUser(userId); + const seenPubkey = newCrossSigning ? newCrossSigning.getId() : null; + const currentPubkey = this.crossSigningInfo.getId(); + const changed = currentPubkey !== seenPubkey; + if (currentPubkey && seenPubkey && !changed) { + // If it's not changed, just make sure everything is up to date + await this.checkOwnCrossSigningTrust(); + } else { + // We'll now be in a state where cross-signing on the account is not trusted + // because our locally stored cross-signing keys will not match the ones + // on the server for our account. So we clear our own stored cross-signing keys, + // effectively disabling cross-signing until the user gets verified by the device + // that reset the keys + this.storeTrustedSelfKeys(null); + // emit cross-signing has been disabled + this.emit(CryptoEvent.KeysChanged, {}); + // as the trust for our own user has changed, + // also emit an event for this + this.emit(CryptoEvent.UserTrustStatusChanged, this.userId, this.checkUserTrust(userId)); } - } else if (method.NAME) { - this._verificationMethods.set(method.NAME, method); } else { - console.warn(`Excluding unknown verification method ${method}`); - } - } - } else { - this._verificationMethods = defaultVerificationMethods; - } // track whether this device's megolm keys are being backed up incrementally - // to the server or not. - // XXX: this should probably have a single source of truth from OlmAccount + await this.checkDeviceVerifications(userId); - - this.backupInfo = null; // The info dict from /room_keys/version - - this.backupKey = null; // The encryption key object - - this._checkedForBackup = false; // Have we checked the server for a backup we can use? - - this._sendingBackups = false; // Are we currently sending backups? - - this._olmDevice = new _OlmDevice.OlmDevice(cryptoStore); - this._deviceList = new _DeviceList.DeviceList(baseApis, cryptoStore, this._olmDevice); // XXX: This isn't removed at any point, but then none of the event listeners - // this class sets seem to be removed at any point... :/ - - this._deviceList.on('userCrossSigningUpdated', this._onDeviceListUserCrossSigningUpdated); - - this._reEmitter.reEmit(this._deviceList, ["crypto.devicesUpdated", "crypto.willUpdateDevices"]); // the last time we did a check for the number of one-time-keys on the - // server. - - - this._lastOneTimeKeyCheck = null; - this._oneTimeKeyCheckInProgress = false; // EncryptionAlgorithm instance for each room - - this._roomEncryptors = {}; // map from algorithm to DecryptionAlgorithm instance, for each room - - this._roomDecryptors = {}; - this._supportedAlgorithms = utils.keys(algorithms.DECRYPTION_CLASSES); - this._deviceKeys = {}; - this._globalBlacklistUnverifiedDevices = false; - this._globalErrorOnUnknownDevices = true; - this._outgoingRoomKeyRequestManager = new _OutgoingRoomKeyRequestManager.OutgoingRoomKeyRequestManager(baseApis, this._deviceId, this._cryptoStore); // list of IncomingRoomKeyRequests/IncomingRoomKeyRequestCancellations - // we received in the current sync. - - this._receivedRoomKeyRequests = []; - this._receivedRoomKeyRequestCancellations = []; // true if we are currently processing received room key requests - - this._processingRoomKeyRequests = false; // controls whether device tracking is delayed - // until calling encryptEvent or trackRoomDevices, - // or done immediately upon enabling room encryption. - - this._lazyLoadMembers = false; // in case _lazyLoadMembers is true, - // track if an initial tracking of all the room members - // has happened for a given room. This is delayed - // to avoid loading room members as long as possible. - - this._roomDeviceTrackingState = {}; // The timestamp of the last time we forced establishment - // of a new session for each device, in milliseconds. - // { - // userId: { - // deviceId: 1234567890000, - // }, - // } - - this._lastNewSessionForced = {}; - this._toDeviceVerificationRequests = new _ToDeviceChannel.ToDeviceRequests(); - this._inRoomVerificationRequests = new _InRoomChannel.InRoomRequests(); // This flag will be unset whilst the client processes a sync response - // so that we don't start requesting keys until we've actually finished - // processing the response. - - this._sendKeyRequestsImmediately = false; - const cryptoCallbacks = this._baseApis._cryptoCallbacks || {}; - const cacheCallbacks = (0, _CrossSigning.createCryptoStoreCacheCallbacks)(cryptoStore, this._olmDevice); - this._crossSigningInfo = new _CrossSigning.CrossSigningInfo(userId, cryptoCallbacks, cacheCallbacks); - this._secretStorage = new _SecretStorage.SecretStorage(baseApis, cryptoCallbacks); // Assuming no app-supplied callback, default to getting from SSSS. - - if (!cryptoCallbacks.getCrossSigningKey && cryptoCallbacks.getSecretStorageKey) { - cryptoCallbacks.getCrossSigningKey = async type => { - return _CrossSigning.CrossSigningInfo.getFromSecretStorage(type, this._secretStorage); - }; - } -} - -utils.inherits(Crypto, _events.EventEmitter); -/** - * Initialise the crypto module so that it is ready for use - * - * Returns a promise which resolves once the crypto module is ready for use. - * - * @param {Object} opts keyword arguments. - * @param {string} opts.exportedOlmDevice (Optional) data from exported device - * that must be re-created. - */ - -Crypto.prototype.init = async function (opts) { - const { - exportedOlmDevice, - pickleKey - } = opts || {}; - - _logger.logger.log("Crypto: initialising Olm..."); - - await global.Olm.init(); - - _logger.logger.log(exportedOlmDevice ? "Crypto: initialising Olm device from exported device..." : "Crypto: initialising Olm device..."); - - await this._olmDevice.init({ - fromExportedDevice: exportedOlmDevice, - pickleKey - }); - - _logger.logger.log("Crypto: loading device list..."); - - await this._deviceList.load(); // build our device keys: these will later be uploaded - - this._deviceKeys["ed25519:" + this._deviceId] = this._olmDevice.deviceEd25519Key; - this._deviceKeys["curve25519:" + this._deviceId] = this._olmDevice.deviceCurve25519Key; - - _logger.logger.log("Crypto: fetching own devices..."); - - let myDevices = this._deviceList.getRawStoredDevicesForUser(this._userId); - - if (!myDevices) { - myDevices = {}; - } - - if (!myDevices[this._deviceId]) { - // add our own deviceinfo to the cryptoStore - _logger.logger.log("Crypto: adding this device to the store..."); - - const deviceInfo = { - keys: this._deviceKeys, - algorithms: this._supportedAlgorithms, - verified: DeviceVerification.VERIFIED, - known: true - }; - myDevices[this._deviceId] = deviceInfo; - - this._deviceList.storeDevicesForUser(this._userId, myDevices); - - this._deviceList.saveIfDirty(); - } - - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - this._cryptoStore.getCrossSigningKeys(txn, keys => { - // can be an empty object after resetting cross-signing keys, see _storeTrustedSelfKeys - if (keys && Object.keys(keys).length !== 0) { - _logger.logger.log("Loaded cross-signing public keys from crypto store"); - - this._crossSigningInfo.setKeys(keys); + // Update verified before latch using the current state and save the new + // latch value in the device list store. + const crossSigning = this.deviceList.getStoredCrossSigningForUser(userId); + if (crossSigning) { + crossSigning.updateCrossSigningVerifiedBefore(this.checkUserTrust(userId).isCrossSigningVerified()); + this.deviceList.setRawStoredCrossSigningForUser(userId, crossSigning.toStorage()); + } + this.emit(CryptoEvent.UserTrustStatusChanged, userId, this.checkUserTrust(userId)); } }); - }); // make sure we are keeping track of our own devices - // (this is important for key backups & things) - - this._deviceList.startTrackingDeviceList(this._userId); - - _logger.logger.log("Crypto: checking for key backup..."); - - this._checkAndStartKeyBackup(); -}; -/** - * Whether to trust a others users signatures of their devices. - * If false, devices will only be considered 'verified' if we have - * verified that device individually (effectively disabling cross-signing). - * - * Default: true - * - * @return {bool} True if trusting cross-signed devices - */ - - -Crypto.prototype.getCryptoTrustCrossSignedDevices = function () { - return this._trustCrossSignedDevices; -}; -/** - * See getCryptoTrustCrossSignedDevices - - * This may be set before initCrypto() is called to ensure no races occur. - * - * @param {bool} val True to trust cross-signed devices - */ - - -Crypto.prototype.setCryptoTrustCrossSignedDevices = function (val) { - this._trustCrossSignedDevices = val; - - for (const userId of this._deviceList.getKnownUserIds()) { - const devices = this._deviceList.getRawStoredDevicesForUser(userId); - - for (const deviceId of Object.keys(devices)) { - const deviceTrust = this.checkDeviceTrust(userId, deviceId); // If the device is locally verified then isVerified() is always true, - // so this will only have caused the value to change if the device is - // cross-signing verified but not locally verified - - if (!deviceTrust.isLocallyVerified() && deviceTrust.isCrossSigningVerified()) { - const deviceObj = this._deviceList.getStoredDevice(userId, deviceId); - - this.emit("deviceVerificationChanged", userId, deviceId, deviceObj); + (0, _defineProperty2.default)(this, "onMembership", (event, member, oldMembership) => { + try { + this.onRoomMembership(event, member, oldMembership); + } catch (e) { + _logger.logger.error("Error handling membership change:", e); } - } - } -}; -/** - * Create a recovery key from a user-supplied passphrase. - * - * @param {string} password Passphrase string that can be entered by the user - * when restoring the backup as an alternative to entering the recovery key. - * Optional. - * @returns {Promise} Object with public key metadata, encoded private - * recovery key which should be disposed of after displaying to the user, - * and raw private key to avoid round tripping if needed. - */ - - -Crypto.prototype.createRecoveryKeyFromPassphrase = async function (password) { - const decryption = new global.Olm.PkDecryption(); - - try { - const keyInfo = {}; - - if (password) { - const derivation = await (0, _key_passphrase.keyFromPassphrase)(password); - keyInfo.passphrase = { - algorithm: "m.pbkdf2", - iterations: derivation.iterations, - salt: derivation.salt - }; - keyInfo.pubkey = decryption.init_with_private_key(derivation.key); - } else { - keyInfo.pubkey = decryption.generate_key(); - } - - const privateKey = decryption.get_private_key(); - const encodedPrivateKey = (0, _recoverykey.encodeRecoveryKey)(privateKey); - return { - keyInfo, - encodedPrivateKey, - privateKey - }; - } finally { - if (decryption) decryption.free(); - } -}; -/** - * Checks whether cross signing: - * - is enabled on this account and trusted by this device - * - has private keys either cached locally or stored in secret storage - * - * If this function returns false, bootstrapCrossSigning() can be used - * to fix things such that it returns true. That is to say, after - * bootstrapCrossSigning() completes successfully, this function should - * return true. - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @return {bool} True if cross-signing is ready to be used on this device - */ - - -Crypto.prototype.isCrossSigningReady = async function () { - const publicKeysOnDevice = this._crossSigningInfo.getId(); - - const privateKeysExistSomewhere = (await this._crossSigningInfo.isStoredInKeyCache()) || (await this._crossSigningInfo.isStoredInSecretStorage(this._secretStorage)); - return !!(publicKeysOnDevice && privateKeysExistSomewhere); -}; -/** - * Checks whether secret storage: - * - is enabled on this account - * - is storing cross-signing private keys - * - is storing session backup key (if enabled) - * - * If this function returns false, bootstrapSecretStorage() can be used - * to fix things such that it returns true. That is to say, after - * bootstrapSecretStorage() completes successfully, this function should - * return true. - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @return {bool} True if secret storage is ready to be used on this device - */ - - -Crypto.prototype.isSecretStorageReady = async function () { - const secretStorageKeyInAccount = await this._secretStorage.hasKey(); - const privateKeysInStorage = await this._crossSigningInfo.isStoredInSecretStorage(this._secretStorage); - - const sessionBackupInStorage = !this._baseApis.getKeyBackupEnabled() || this._baseApis.isKeyBackupKeyStored(); - - return !!(secretStorageKeyInAccount && privateKeysInStorage && sessionBackupInStorage); -}; -/** - * Bootstrap cross-signing by creating keys if needed. If everything is already - * set up, then no changes are made, so this is safe to run to ensure - * cross-signing is ready for use. - * - * This function: - * - creates new cross-signing keys if they are not found locally cached nor in - * secret storage (if it has been setup) - * - * The cross-signing API is currently UNSTABLE and may change without notice. - * - * @param {function} opts.authUploadDeviceSigningKeys Function - * called to await an interactive auth flow when uploading device signing keys. - * @param {bool} [opts.setupNewCrossSigning] Optional. Reset even if keys - * already exist. - * Args: - * {function} A function that makes the request requiring auth. Receives the - * auth data as an object. Can be called multiple times, first with an empty - * authDict, to obtain the flows. - */ - - -Crypto.prototype.bootstrapCrossSigning = async function ({ - authUploadDeviceSigningKeys, - setupNewCrossSigning -} = {}) { - _logger.logger.log("Bootstrapping cross-signing"); - - const delegateCryptoCallbacks = this._baseApis._cryptoCallbacks; - const builder = new _EncryptionSetup.EncryptionSetupBuilder(this._baseApis.store.accountData, delegateCryptoCallbacks); - const crossSigningInfo = new _CrossSigning.CrossSigningInfo(this._userId, builder.crossSigningCallbacks, builder.crossSigningCallbacks); // Reset the cross-signing keys - - const resetCrossSigning = async () => { - crossSigningInfo.resetKeys(); // Sign master key with device key - - await this._signObject(crossSigningInfo.keys.master); // Store auth flow helper function, as we need to call it when uploading - // to ensure we handle auth errors properly. - - builder.addCrossSigningKeys(authUploadDeviceSigningKeys, crossSigningInfo.keys); // Cross-sign own device - - const device = this._deviceList.getStoredDevice(this._userId, this._deviceId); - - const deviceSignature = await crossSigningInfo.signDevice(this._userId, device); - builder.addKeySignature(this._userId, this._deviceId, deviceSignature); // Sign message key backup with cross-signing master key - - if (this.backupInfo) { - await crossSigningInfo.signObject(this.backupInfo.auth_data, "master"); - builder.addSessionBackup(this.backupInfo); - } - }; - - const publicKeysOnDevice = this._crossSigningInfo.getId(); - - const privateKeysInCache = await this._crossSigningInfo.isStoredInKeyCache(); - const privateKeysInStorage = await this._crossSigningInfo.isStoredInSecretStorage(this._secretStorage); - const privateKeysExistSomewhere = privateKeysInCache || privateKeysInStorage; // Log all relevant state for easier parsing of debug logs. - - _logger.logger.log({ - setupNewCrossSigning, - publicKeysOnDevice, - privateKeysInCache, - privateKeysInStorage, - privateKeysExistSomewhere - }); - - if (!privateKeysExistSomewhere || setupNewCrossSigning) { - _logger.logger.log("Cross-signing private keys not found locally or in secret storage, " + "creating new keys"); // If a user has multiple devices, it important to only call bootstrap - // as part of some UI flow (and not silently during startup), as they - // may have setup cross-signing on a platform which has not saved keys - // to secret storage, and this would reset them. In such a case, you - // should prompt the user to verify any existing devices first (and - // request private keys from those devices) before calling bootstrap. - - - await resetCrossSigning(); - } else if (publicKeysOnDevice && privateKeysInCache) { - _logger.logger.log("Cross-signing public keys trusted and private keys found locally"); - } else if (privateKeysInStorage) { - _logger.logger.log("Cross-signing private keys not found locally, but they are available " + "in secret storage, reading storage and caching locally"); - - await this.checkOwnCrossSigningTrust(); - } // Assuming no app-supplied callback, default to storing new private keys in - // secret storage if it exists. If it does not, it is assumed this will be - // done as part of setting up secret storage later. - - - const crossSigningPrivateKeys = builder.crossSigningCallbacks.privateKeys; - - if (crossSigningPrivateKeys.size && !this._baseApis._cryptoCallbacks.saveCrossSigningKeys) { - const secretStorage = new _SecretStorage.SecretStorage(builder.accountDataClientAdapter, builder.ssssCryptoCallbacks); - - if (await secretStorage.hasKey()) { - _logger.logger.log("Storing new cross-signing private keys in secret storage"); // This is writing to in-memory account data in - // builder.accountDataClientAdapter so won't fail - - - await _CrossSigning.CrossSigningInfo.storeInSecretStorage(crossSigningPrivateKeys, secretStorage); - } - } - - const operation = builder.buildOperation(); - await operation.apply(this); // This persists private keys and public keys as trusted, - // only do this if apply succeeded for now as retry isn't in place yet - - await builder.persist(this); - - _logger.logger.log("Cross-signing ready"); -}; -/** - * Bootstrap Secure Secret Storage if needed by creating a default key. If everything is - * already set up, then no changes are made, so this is safe to run to ensure secret - * storage is ready for use. - * - * This function - * - creates a new Secure Secret Storage key if no default key exists - * - if a key backup exists, it is migrated to store the key in the Secret - * Storage - * - creates a backup if none exists, and one is requested - * - migrates Secure Secret Storage to use the latest algorithm, if an outdated - * algorithm is found - * - * The Secure Secret Storage API is currently UNSTABLE and may change without notice. - * - * @param {function} [opts.createSecretStorageKey] Optional. Function - * called to await a secret storage key creation flow. - * Returns: - * {Promise} Object with public key metadata, encoded private - * recovery key which should be disposed of after displaying to the user, - * and raw private key to avoid round tripping if needed. - * @param {object} [opts.keyBackupInfo] The current key backup object. If passed, - * the passphrase and recovery key from this backup will be used. - * @param {bool} [opts.setupNewKeyBackup] If true, a new key backup version will be - * created and the private key stored in the new SSSS store. Ignored if keyBackupInfo - * is supplied. - * @param {bool} [opts.setupNewSecretStorage] Optional. Reset even if keys already exist. - * @param {func} [opts.getKeyBackupPassphrase] Optional. Function called to get the user's - * current key backup passphrase. Should return a promise that resolves with a Buffer - * containing the key, or rejects if the key cannot be obtained. - * Returns: - * {Promise} A promise which resolves to key creation data for - * SecretStorage#addKey: an object with `passphrase` and/or `pubkey` fields. - */ - - -Crypto.prototype.bootstrapSecretStorage = async function ({ - createSecretStorageKey = async () => ({}), - keyBackupInfo, - setupNewKeyBackup, - setupNewSecretStorage, - getKeyBackupPassphrase -} = {}) { - _logger.logger.log("Bootstrapping Secure Secret Storage"); - - const delegateCryptoCallbacks = this._baseApis._cryptoCallbacks; - const builder = new _EncryptionSetup.EncryptionSetupBuilder(this._baseApis.store.accountData, delegateCryptoCallbacks); - const secretStorage = new _SecretStorage.SecretStorage(builder.accountDataClientAdapter, builder.ssssCryptoCallbacks); // the ID of the new SSSS key, if we create one - - let newKeyId = null; // create a new SSSS key and set it as default - - const createSSSS = async (opts, privateKey) => { - opts = opts || {}; - - if (privateKey) { - opts.key = privateKey; - } - - const keyId = await secretStorage.addKey(_SecretStorage.SECRET_STORAGE_ALGORITHM_V1_AES, opts); - - if (privateKey) { - // make the private key available to encrypt 4S secrets - builder.ssssCryptoCallbacks.addPrivateKey(keyId, privateKey); - } - - await secretStorage.setDefaultKeyId(keyId); - return keyId; - }; - - const ensureCanCheckPassphrase = async (keyId, keyInfo) => { - if (!keyInfo.mac) { - const key = await this._baseApis._cryptoCallbacks.getSecretStorageKey({ - keys: { - [keyId]: keyInfo + }); + (0, _defineProperty2.default)(this, "onToDeviceEvent", event => { + try { + _logger.logger.log(`received to-device ${event.getType()} from: ` + `${event.getSender()} id: ${event.getContent()[_event.ToDeviceMessageId]}`); + if (event.getType() == "m.room_key" || event.getType() == "m.forwarded_room_key") { + this.onRoomKeyEvent(event); + } else if (event.getType() == "m.room_key_request") { + this.onRoomKeyRequestEvent(event); + } else if (event.getType() === "m.secret.request") { + this.secretStorage.onRequestReceived(event); + } else if (event.getType() === "m.secret.send") { + this.secretStorage.onSecretReceived(event); + } else if (event.getType() === "m.room_key.withheld") { + this.onRoomKeyWithheldEvent(event); + } else if (event.getContent().transaction_id) { + this.onKeyVerificationMessage(event); + } else if (event.getContent().msgtype === "m.bad.encrypted") { + this.onToDeviceBadEncrypted(event); + } else if (event.isBeingDecrypted() || event.shouldAttemptDecryption()) { + if (!event.isBeingDecrypted()) { + event.attemptDecryption(this); + } + // once the event has been decrypted, try again + event.once(_event2.MatrixEventEvent.Decrypted, ev => { + this.onToDeviceEvent(ev); + }); } - }, ""); + } catch (e) { + _logger.logger.error("Error handling toDeviceEvent:", e); + } + }); + /** + * Handle key verification requests sent as timeline events + * + * @internal + * @param event - the timeline event + * @param room - not used + * @param atStart - not used + * @param removed - not used + * @param whether - this is a live event + */ + (0, _defineProperty2.default)(this, "onTimelineEvent", (event, room, atStart, removed, { + liveEvent = true + } = {}) => { + if (!_InRoomChannel.InRoomChannel.validateEvent(event, this.baseApis)) { + return; + } + const createRequest = event => { + const channel = new _InRoomChannel.InRoomChannel(this.baseApis, event.getRoomId()); + return new _VerificationRequest.VerificationRequest(channel, this.verificationMethods, this.baseApis); + }; + this.handleVerificationEvent(event, this.inRoomVerificationRequests, createRequest, liveEvent); + }); + this.baseApis = baseApis; + this.userId = _userId; + this.deviceId = deviceId; + this.clientStore = clientStore; + this.cryptoStore = cryptoStore; + _logger.logger.debug("Crypto: initialising roomlist..."); + this.roomList = new _RoomList.RoomList(cryptoStore); + this.reEmitter = new _ReEmitter.TypedReEmitter(this); + if (verificationMethods) { + this.verificationMethods = new Map(); + for (const method of verificationMethods) { + if (typeof method === "string") { + if (defaultVerificationMethods[method]) { + this.verificationMethods.set(method, defaultVerificationMethods[method]); + } + } else if (method["NAME"]) { + this.verificationMethods.set(method["NAME"], method); + } else { + _logger.logger.warn(`Excluding unknown verification method ${method}`); + } + } + } else { + this.verificationMethods = new Map(Object.entries(defaultVerificationMethods)); + } + this.backupManager = new _backup.BackupManager(baseApis, async () => { + // try to get key from cache + const cachedKey = await this.getSessionBackupPrivateKey(); + if (cachedKey) { + return cachedKey; + } - if (key) { - const keyData = key[1]; - builder.ssssCryptoCallbacks.addPrivateKey(keyId, keyData); - const { - iv, - mac - } = await _SecretStorage.SecretStorage._calculateKeyCheck(keyData); - keyInfo.iv = iv; - keyInfo.mac = mac; - await builder.setAccountData(`m.secret_storage.key.${keyId}`, keyInfo); + // try to get key from secret storage + const storedKey = await this.secretStorage.get("m.megolm_backup.v1"); + if (storedKey) { + // ensure that the key is in the right format. If not, fix the key and + // store the fixed version + const fixedKey = fixBackupKey(storedKey); + if (fixedKey) { + const keys = await this.secretStorage.getKey(); + await this.secretStorage.store("m.megolm_backup.v1", fixedKey, [keys[0]]); + } + return (0, _base.decodeBase64)(fixedKey || storedKey); + } + + // try to get key from app + if (this.baseApis.cryptoCallbacks && this.baseApis.cryptoCallbacks.getBackupKey) { + return this.baseApis.cryptoCallbacks.getBackupKey(); + } + throw new Error("Unable to get private key"); + }); + this.olmDevice = new _OlmDevice.OlmDevice(cryptoStore); + this.deviceList = new _DeviceList.DeviceList(baseApis, cryptoStore, this.olmDevice); + + // XXX: This isn't removed at any point, but then none of the event listeners + // this class sets seem to be removed at any point... :/ + this.deviceList.on(CryptoEvent.UserCrossSigningUpdated, this.onDeviceListUserCrossSigningUpdated); + this.reEmitter.reEmit(this.deviceList, [CryptoEvent.DevicesUpdated, CryptoEvent.WillUpdateDevices]); + this.supportedAlgorithms = Array.from(algorithms.DECRYPTION_CLASSES.keys()); + this.outgoingRoomKeyRequestManager = new _OutgoingRoomKeyRequestManager.OutgoingRoomKeyRequestManager(baseApis, this.deviceId, this.cryptoStore); + this.toDeviceVerificationRequests = new _ToDeviceChannel.ToDeviceRequests(); + this.inRoomVerificationRequests = new _InRoomChannel.InRoomRequests(); + const cryptoCallbacks = this.baseApis.cryptoCallbacks || {}; + const cacheCallbacks = (0, _CrossSigning.createCryptoStoreCacheCallbacks)(cryptoStore, this.olmDevice); + this.crossSigningInfo = new _CrossSigning.CrossSigningInfo(_userId, cryptoCallbacks, cacheCallbacks); + // Yes, we pass the client twice here: see SecretStorage + this.secretStorage = new _SecretStorage.SecretStorage(baseApis, cryptoCallbacks, baseApis); + this.dehydrationManager = new _dehydration.DehydrationManager(this); + + // Assuming no app-supplied callback, default to getting from SSSS. + if (!cryptoCallbacks.getCrossSigningKey && cryptoCallbacks.getSecretStorageKey) { + cryptoCallbacks.getCrossSigningKey = async type => { + return _CrossSigning.CrossSigningInfo.getFromSecretStorage(type, this.secretStorage); + }; + } + } + + /** + * Initialise the crypto module so that it is ready for use + * + * Returns a promise which resolves once the crypto module is ready for use. + * + * @param exportedOlmDevice - (Optional) data from exported device + * that must be re-created. + */ + async init({ + exportedOlmDevice, + pickleKey + } = {}) { + _logger.logger.log("Crypto: initialising Olm..."); + await global.Olm.init(); + _logger.logger.log(exportedOlmDevice ? "Crypto: initialising Olm device from exported device..." : "Crypto: initialising Olm device..."); + await this.olmDevice.init({ + fromExportedDevice: exportedOlmDevice, + pickleKey + }); + _logger.logger.log("Crypto: loading device list..."); + await this.deviceList.load(); + + // build our device keys: these will later be uploaded + this.deviceKeys["ed25519:" + this.deviceId] = this.olmDevice.deviceEd25519Key; + this.deviceKeys["curve25519:" + this.deviceId] = this.olmDevice.deviceCurve25519Key; + _logger.logger.log("Crypto: fetching own devices..."); + let myDevices = this.deviceList.getRawStoredDevicesForUser(this.userId); + if (!myDevices) { + myDevices = {}; + } + if (!myDevices[this.deviceId]) { + // add our own deviceinfo to the cryptoStore + _logger.logger.log("Crypto: adding this device to the store..."); + const deviceInfo = { + keys: this.deviceKeys, + algorithms: this.supportedAlgorithms, + verified: DeviceVerification.VERIFIED, + known: true + }; + myDevices[this.deviceId] = deviceInfo; + this.deviceList.storeDevicesForUser(this.userId, myDevices); + this.deviceList.saveIfDirty(); + } + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.cryptoStore.getCrossSigningKeys(txn, keys => { + // can be an empty object after resetting cross-signing keys, see storeTrustedSelfKeys + if (keys && Object.keys(keys).length !== 0) { + _logger.logger.log("Loaded cross-signing public keys from crypto store"); + this.crossSigningInfo.setKeys(keys); + } + }); + }); + // make sure we are keeping track of our own devices + // (this is important for key backups & things) + this.deviceList.startTrackingDeviceList(this.userId); + _logger.logger.debug("Crypto: initialising roomlist..."); + await this.roomList.init(); + _logger.logger.log("Crypto: checking for key backup..."); + this.backupManager.checkAndStart(); + } + + /** + * Implementation of {@link CryptoApi#getVersion}. + */ + getVersion() { + const olmVersionTuple = Crypto.getOlmVersion(); + return `Olm ${olmVersionTuple[0]}.${olmVersionTuple[1]}.${olmVersionTuple[2]}`; + } + + /** + * Whether to trust a others users signatures of their devices. + * If false, devices will only be considered 'verified' if we have + * verified that device individually (effectively disabling cross-signing). + * + * Default: true + * + * @returns True if trusting cross-signed devices + */ + getTrustCrossSignedDevices() { + return this.trustCrossSignedDevices; + } + + /** + * @deprecated Use {@link Crypto.CryptoApi#getTrustCrossSignedDevices}. + */ + getCryptoTrustCrossSignedDevices() { + return this.trustCrossSignedDevices; + } + + /** + * See getCryptoTrustCrossSignedDevices + * + * @param val - True to trust cross-signed devices + */ + setTrustCrossSignedDevices(val) { + this.trustCrossSignedDevices = val; + for (const userId of this.deviceList.getKnownUserIds()) { + const devices = this.deviceList.getRawStoredDevicesForUser(userId); + for (const deviceId of Object.keys(devices)) { + const deviceTrust = this.checkDeviceTrust(userId, deviceId); + // If the device is locally verified then isVerified() is always true, + // so this will only have caused the value to change if the device is + // cross-signing verified but not locally verified + if (!deviceTrust.isLocallyVerified() && deviceTrust.isCrossSigningVerified()) { + const deviceObj = this.deviceList.getStoredDevice(userId, deviceId); + this.emit(CryptoEvent.DeviceVerificationChanged, userId, deviceId, deviceObj); + } } } - }; + } - const oldSSSSKey = await this.getSecretStorageKey(); - const [oldKeyId, oldKeyInfo] = oldSSSSKey || [null, null]; - const storageExists = !setupNewSecretStorage && oldKeyInfo && oldKeyInfo.algorithm === _SecretStorage.SECRET_STORAGE_ALGORITHM_V1_AES; // Log all relevant state for easier parsing of debug logs. + /** + * @deprecated Use {@link Crypto.CryptoApi#setTrustCrossSignedDevices}. + */ + setCryptoTrustCrossSignedDevices(val) { + this.setTrustCrossSignedDevices(val); + } - _logger.logger.log({ + /** + * Create a recovery key from a user-supplied passphrase. + * + * @param password - Passphrase string that can be entered by the user + * when restoring the backup as an alternative to entering the recovery key. + * Optional. + * @returns Object with public key metadata, encoded private + * recovery key which should be disposed of after displaying to the user, + * and raw private key to avoid round tripping if needed. + */ + async createRecoveryKeyFromPassphrase(password) { + const decryption = new global.Olm.PkDecryption(); + try { + if (password) { + const derivation = await (0, _key_passphrase.keyFromPassphrase)(password); + decryption.init_with_private_key(derivation.key); + const privateKey = decryption.get_private_key(); + return { + keyInfo: { + passphrase: { + algorithm: "m.pbkdf2", + iterations: derivation.iterations, + salt: derivation.salt + } + }, + privateKey: privateKey, + encodedPrivateKey: (0, _recoverykey.encodeRecoveryKey)(privateKey) + }; + } else { + decryption.generate_key(); + const privateKey = decryption.get_private_key(); + return { + privateKey: privateKey, + encodedPrivateKey: (0, _recoverykey.encodeRecoveryKey)(privateKey) + }; + } + } finally { + decryption === null || decryption === void 0 || decryption.free(); + } + } + + /** + * Checks if the user has previously published cross-signing keys + * + * This means downloading the devicelist for the user and checking if the list includes + * the cross-signing pseudo-device. + * + * @internal + */ + async userHasCrossSigningKeys(userId = this.userId) { + await this.downloadKeys([userId]); + return this.deviceList.getStoredCrossSigningForUser(userId) !== null; + } + + /** + * Checks whether cross signing: + * - is enabled on this account and trusted by this device + * - has private keys either cached locally or stored in secret storage + * + * If this function returns false, bootstrapCrossSigning() can be used + * to fix things such that it returns true. That is to say, after + * bootstrapCrossSigning() completes successfully, this function should + * return true. + * + * The cross-signing API is currently UNSTABLE and may change without notice. + * + * @returns True if cross-signing is ready to be used on this device + */ + async isCrossSigningReady() { + const publicKeysOnDevice = this.crossSigningInfo.getId(); + const privateKeysExistSomewhere = (await this.crossSigningInfo.isStoredInKeyCache()) || (await this.crossSigningInfo.isStoredInSecretStorage(this.secretStorage)); + return !!(publicKeysOnDevice && privateKeysExistSomewhere); + } + + /** + * Checks whether secret storage: + * - is enabled on this account + * - is storing cross-signing private keys + * - is storing session backup key (if enabled) + * + * If this function returns false, bootstrapSecretStorage() can be used + * to fix things such that it returns true. That is to say, after + * bootstrapSecretStorage() completes successfully, this function should + * return true. + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * @returns True if secret storage is ready to be used on this device + */ + async isSecretStorageReady() { + const secretStorageKeyInAccount = await this.secretStorage.hasKey(); + const privateKeysInStorage = await this.crossSigningInfo.isStoredInSecretStorage(this.secretStorage); + const sessionBackupInStorage = !this.backupManager.getKeyBackupEnabled() || (await this.baseApis.isKeyBackupKeyStored()); + return !!(secretStorageKeyInAccount && privateKeysInStorage && sessionBackupInStorage); + } + + /** + * Implementation of {@link CryptoApi#getCrossSigningStatus} + */ + async getCrossSigningStatus() { + var _cacheCallbacks$getCr, _cacheCallbacks$getCr2, _cacheCallbacks$getCr3; + const publicKeysOnDevice = Boolean(this.crossSigningInfo.getId()); + const privateKeysInSecretStorage = Boolean(await this.crossSigningInfo.isStoredInSecretStorage(this.secretStorage)); + const cacheCallbacks = this.crossSigningInfo.getCacheCallbacks(); + const masterKey = Boolean(await ((_cacheCallbacks$getCr = cacheCallbacks.getCrossSigningKeyCache) === null || _cacheCallbacks$getCr === void 0 ? void 0 : _cacheCallbacks$getCr.call(cacheCallbacks, "master"))); + const selfSigningKey = Boolean(await ((_cacheCallbacks$getCr2 = cacheCallbacks.getCrossSigningKeyCache) === null || _cacheCallbacks$getCr2 === void 0 ? void 0 : _cacheCallbacks$getCr2.call(cacheCallbacks, "self_signing"))); + const userSigningKey = Boolean(await ((_cacheCallbacks$getCr3 = cacheCallbacks.getCrossSigningKeyCache) === null || _cacheCallbacks$getCr3 === void 0 ? void 0 : _cacheCallbacks$getCr3.call(cacheCallbacks, "user_signing"))); + return { + publicKeysOnDevice, + privateKeysInSecretStorage, + privateKeysCachedLocally: { + masterKey, + selfSigningKey, + userSigningKey + } + }; + } + + /** + * Bootstrap cross-signing by creating keys if needed. If everything is already + * set up, then no changes are made, so this is safe to run to ensure + * cross-signing is ready for use. + * + * This function: + * - creates new cross-signing keys if they are not found locally cached nor in + * secret storage (if it has been setup) + * + * The cross-signing API is currently UNSTABLE and may change without notice. + */ + async bootstrapCrossSigning({ + authUploadDeviceSigningKeys, + setupNewCrossSigning + } = {}) { + _logger.logger.log("Bootstrapping cross-signing"); + const delegateCryptoCallbacks = this.baseApis.cryptoCallbacks; + const builder = new _EncryptionSetup.EncryptionSetupBuilder(this.baseApis.store.accountData, delegateCryptoCallbacks); + const crossSigningInfo = new _CrossSigning.CrossSigningInfo(this.userId, builder.crossSigningCallbacks, builder.crossSigningCallbacks); + + // Reset the cross-signing keys + const resetCrossSigning = async () => { + crossSigningInfo.resetKeys(); + // Sign master key with device key + await this.signObject(crossSigningInfo.keys.master); + + // Store auth flow helper function, as we need to call it when uploading + // to ensure we handle auth errors properly. + builder.addCrossSigningKeys(authUploadDeviceSigningKeys, crossSigningInfo.keys); + + // Cross-sign own device + const device = this.deviceList.getStoredDevice(this.userId, this.deviceId); + const deviceSignature = await crossSigningInfo.signDevice(this.userId, device); + builder.addKeySignature(this.userId, this.deviceId, deviceSignature); + + // Sign message key backup with cross-signing master key + if (this.backupManager.backupInfo) { + await crossSigningInfo.signObject(this.backupManager.backupInfo.auth_data, "master"); + builder.addSessionBackup(this.backupManager.backupInfo); + } + }; + const publicKeysOnDevice = this.crossSigningInfo.getId(); + const privateKeysInCache = await this.crossSigningInfo.isStoredInKeyCache(); + const privateKeysInStorage = await this.crossSigningInfo.isStoredInSecretStorage(this.secretStorage); + const privateKeysExistSomewhere = privateKeysInCache || privateKeysInStorage; + + // Log all relevant state for easier parsing of debug logs. + _logger.logger.log({ + setupNewCrossSigning, + publicKeysOnDevice, + privateKeysInCache, + privateKeysInStorage, + privateKeysExistSomewhere + }); + if (!privateKeysExistSomewhere || setupNewCrossSigning) { + _logger.logger.log("Cross-signing private keys not found locally or in secret storage, " + "creating new keys"); + // If a user has multiple devices, it important to only call bootstrap + // as part of some UI flow (and not silently during startup), as they + // may have setup cross-signing on a platform which has not saved keys + // to secret storage, and this would reset them. In such a case, you + // should prompt the user to verify any existing devices first (and + // request private keys from those devices) before calling bootstrap. + await resetCrossSigning(); + } else if (publicKeysOnDevice && privateKeysInCache) { + _logger.logger.log("Cross-signing public keys trusted and private keys found locally"); + } else if (privateKeysInStorage) { + _logger.logger.log("Cross-signing private keys not found locally, but they are available " + "in secret storage, reading storage and caching locally"); + await this.checkOwnCrossSigningTrust({ + allowPrivateKeyRequests: true + }); + } + + // Assuming no app-supplied callback, default to storing new private keys in + // secret storage if it exists. If it does not, it is assumed this will be + // done as part of setting up secret storage later. + const crossSigningPrivateKeys = builder.crossSigningCallbacks.privateKeys; + if (crossSigningPrivateKeys.size && !this.baseApis.cryptoCallbacks.saveCrossSigningKeys) { + const secretStorage = new _secretStorage.ServerSideSecretStorageImpl(builder.accountDataClientAdapter, builder.ssssCryptoCallbacks); + if (await secretStorage.hasKey()) { + _logger.logger.log("Storing new cross-signing private keys in secret storage"); + // This is writing to in-memory account data in + // builder.accountDataClientAdapter so won't fail + await _CrossSigning.CrossSigningInfo.storeInSecretStorage(crossSigningPrivateKeys, secretStorage); + } + } + const operation = builder.buildOperation(); + await operation.apply(this); + // This persists private keys and public keys as trusted, + // only do this if apply succeeded for now as retry isn't in place yet + await builder.persist(this); + _logger.logger.log("Cross-signing ready"); + } + + /** + * Bootstrap Secure Secret Storage if needed by creating a default key. If everything is + * already set up, then no changes are made, so this is safe to run to ensure secret + * storage is ready for use. + * + * This function + * - creates a new Secure Secret Storage key if no default key exists + * - if a key backup exists, it is migrated to store the key in the Secret + * Storage + * - creates a backup if none exists, and one is requested + * - migrates Secure Secret Storage to use the latest algorithm, if an outdated + * algorithm is found + * + * The Secure Secret Storage API is currently UNSTABLE and may change without notice. + * + * Returns: + * A promise which resolves to key creation data for + * SecretStorage#addKey: an object with `passphrase` etc fields. + */ + // TODO this does not resolve with what it says it does + async bootstrapSecretStorage({ + createSecretStorageKey = async () => ({}), keyBackupInfo, setupNewKeyBackup, setupNewSecretStorage, - storageExists, - oldKeyInfo - }); + getKeyBackupPassphrase + } = {}) { + _logger.logger.log("Bootstrapping Secure Secret Storage"); + const delegateCryptoCallbacks = this.baseApis.cryptoCallbacks; + const builder = new _EncryptionSetup.EncryptionSetupBuilder(this.baseApis.store.accountData, delegateCryptoCallbacks); + const secretStorage = new _secretStorage.ServerSideSecretStorageImpl(builder.accountDataClientAdapter, builder.ssssCryptoCallbacks); - if (!storageExists && !keyBackupInfo) { - // either we don't have anything, or we've been asked to restart - // from scratch - _logger.logger.log("Secret storage does not exist, creating new storage key"); // if we already have a usable default SSSS key and aren't resetting - // SSSS just use it. otherwise, create a new one - // Note: we leave the old SSSS key in place: there could be other - // secrets using it, in theory. We could move them to the new key but a) - // that would mean we'd need to prompt for the old passphrase, and b) - // it's not clear that would be the right thing to do anyway. + // the ID of the new SSSS key, if we create one + let newKeyId = null; + // create a new SSSS key and set it as default + const createSSSS = async opts => { + const { + keyId, + keyInfo + } = await secretStorage.addKey(_secretStorage.SECRET_STORAGE_ALGORITHM_V1_AES, opts); - const { - keyInfo, - privateKey - } = await createSecretStorageKey(); - newKeyId = await createSSSS(keyInfo, privateKey); - } else if (!storageExists && keyBackupInfo) { - // we have an existing backup, but no SSSS - _logger.logger.log("Secret storage does not exist, using key backup key"); // if we have the backup key already cached, use it; otherwise use the - // callback to prompt for the key - - - const backupKey = (await this.getSessionBackupPrivateKey()) || (await getKeyBackupPassphrase()); // create a new SSSS key and use the backup key as the new SSSS key - - const opts = {}; - - if (keyBackupInfo.auth_data.private_key_salt && keyBackupInfo.auth_data.private_key_iterations) { - opts.passphrase = { - algorithm: "m.pbkdf2", - iterations: keyBackupInfo.auth_data.private_key_iterations, - salt: keyBackupInfo.auth_data.private_key_salt, - bits: 256 - }; - } - - newKeyId = await createSSSS(opts, backupKey); // store the backup key in secret storage - - await secretStorage.store("m.megolm_backup.v1", olmlib.encodeBase64(backupKey), [newKeyId]); // The backup is trusted because the user provided the private key. - // Sign the backup with the cross-signing key so the key backup can - // be trusted via cross-signing. - - if (this._crossSigningInfo.getId() && this._crossSigningInfo.isStoredInKeyCache("master")) { - _logger.logger.log("Adding cross-signing signature to key backup"); - - await this._crossSigningInfo.signObject(keyBackupInfo.auth_data, "master"); - } else { - _logger.logger.warn("Cross-signing keys not available, skipping signature on key backup"); - } - - builder.addSessionBackup(keyBackupInfo); - } else { - // 4S is already set up - _logger.logger.log("Secret storage exists"); - - if (oldKeyInfo && oldKeyInfo.algorithm === _SecretStorage.SECRET_STORAGE_ALGORITHM_V1_AES) { - // make sure that the default key has the information needed to - // check the passphrase - await ensureCanCheckPassphrase(oldKeyId, oldKeyInfo); - } - } // If we have cross-signing private keys cached, store them in secret - // storage if they are not there already. - - - if (!this._baseApis._cryptoCallbacks.saveCrossSigningKeys && (await this.isCrossSigningReady()) && (newKeyId || !(await this._crossSigningInfo.isStoredInSecretStorage(secretStorage)))) { - _logger.logger.log("Copying cross-signing private keys from cache to secret storage"); - - const crossSigningPrivateKeys = await this._crossSigningInfo.getCrossSigningKeysFromCache(); // This is writing to in-memory account data in - // builder.accountDataClientAdapter so won't fail - - await _CrossSigning.CrossSigningInfo.storeInSecretStorage(crossSigningPrivateKeys, secretStorage); - } - - if (setupNewKeyBackup && !keyBackupInfo) { - _logger.logger.log("Creating new message key backup version"); - - const info = await this._baseApis.prepareKeyBackupVersion(null - /* random key */ - , // don't write to secret storage, as it will write to this._secretStorage. - // Here, we want to capture all the side-effects of bootstrapping, - // and want to write to the local secretStorage object - { - secureSecretStorage: false - }); // write the key ourselves to 4S - - const privateKey = (0, _recoverykey.decodeRecoveryKey)(info.recovery_key); - await secretStorage.store("m.megolm_backup.v1", olmlib.encodeBase64(privateKey)); // create keyBackupInfo object to add to builder - - const data = { - algorithm: info.algorithm, - auth_data: info.auth_data + // make the private key available to encrypt 4S secrets + builder.ssssCryptoCallbacks.addPrivateKey(keyId, keyInfo, opts.key); + await secretStorage.setDefaultKeyId(keyId); + return keyId; }; + const ensureCanCheckPassphrase = async (keyId, keyInfo) => { + if (!keyInfo.mac) { + var _this$baseApis$crypto, _this$baseApis$crypto2; + const key = await ((_this$baseApis$crypto = (_this$baseApis$crypto2 = this.baseApis.cryptoCallbacks).getSecretStorageKey) === null || _this$baseApis$crypto === void 0 ? void 0 : _this$baseApis$crypto.call(_this$baseApis$crypto2, { + keys: { + [keyId]: keyInfo + } + }, "")); + if (key) { + const privateKey = key[1]; + builder.ssssCryptoCallbacks.addPrivateKey(keyId, keyInfo, privateKey); + const { + iv, + mac + } = await (0, _aes.calculateKeyCheck)(privateKey); + keyInfo.iv = iv; + keyInfo.mac = mac; + await builder.setAccountData(`m.secret_storage.key.${keyId}`, keyInfo); + } + } + }; + const signKeyBackupWithCrossSigning = async keyBackupAuthData => { + if (this.crossSigningInfo.getId() && (await this.crossSigningInfo.isStoredInKeyCache("master"))) { + try { + _logger.logger.log("Adding cross-signing signature to key backup"); + await this.crossSigningInfo.signObject(keyBackupAuthData, "master"); + } catch (e) { + // This step is not critical (just helpful), so we catch here + // and continue if it fails. + _logger.logger.error("Signing key backup with cross-signing keys failed", e); + } + } else { + _logger.logger.warn("Cross-signing keys not available, skipping signature on key backup"); + } + }; + const oldSSSSKey = await this.secretStorage.getKey(); + const [oldKeyId, oldKeyInfo] = oldSSSSKey || [null, null]; + const storageExists = !setupNewSecretStorage && oldKeyInfo && oldKeyInfo.algorithm === _secretStorage.SECRET_STORAGE_ALGORITHM_V1_AES; - if (this._crossSigningInfo.getId() && this._crossSigningInfo.isStoredInKeyCache("master")) { - // sign with cross-sign master key - _logger.logger.log("Adding cross-signing signature to key backup"); + // Log all relevant state for easier parsing of debug logs. + _logger.logger.log({ + keyBackupInfo, + setupNewKeyBackup, + setupNewSecretStorage, + storageExists, + oldKeyInfo + }); + if (!storageExists && !keyBackupInfo) { + // either we don't have anything, or we've been asked to restart + // from scratch + _logger.logger.log("Secret storage does not exist, creating new storage key"); - await this._crossSigningInfo.signObject(data.auth_data, "master"); + // if we already have a usable default SSSS key and aren't resetting + // SSSS just use it. otherwise, create a new one + // Note: we leave the old SSSS key in place: there could be other + // secrets using it, in theory. We could move them to the new key but a) + // that would mean we'd need to prompt for the old passphrase, and b) + // it's not clear that would be the right thing to do anyway. + const { + keyInfo, + privateKey + } = await createSecretStorageKey(); + newKeyId = await createSSSS({ + passphrase: keyInfo === null || keyInfo === void 0 ? void 0 : keyInfo.passphrase, + key: privateKey, + name: keyInfo === null || keyInfo === void 0 ? void 0 : keyInfo.name + }); + } else if (!storageExists && keyBackupInfo) { + // we have an existing backup, but no SSSS + _logger.logger.log("Secret storage does not exist, using key backup key"); + + // if we have the backup key already cached, use it; otherwise use the + // callback to prompt for the key + const backupKey = (await this.getSessionBackupPrivateKey()) || (await (getKeyBackupPassphrase === null || getKeyBackupPassphrase === void 0 ? void 0 : getKeyBackupPassphrase())); + + // create a new SSSS key and use the backup key as the new SSSS key + const opts = { + key: backupKey + }; + if (keyBackupInfo.auth_data.private_key_salt && keyBackupInfo.auth_data.private_key_iterations) { + // FIXME: ??? + opts.passphrase = { + algorithm: "m.pbkdf2", + iterations: keyBackupInfo.auth_data.private_key_iterations, + salt: keyBackupInfo.auth_data.private_key_salt, + bits: 256 + }; + } + newKeyId = await createSSSS(opts); + + // store the backup key in secret storage + await secretStorage.store("m.megolm_backup.v1", (0, _base.encodeBase64)(backupKey), [newKeyId]); + + // The backup is trusted because the user provided the private key. + // Sign the backup with the cross-signing key so the key backup can + // be trusted via cross-signing. + await signKeyBackupWithCrossSigning(keyBackupInfo.auth_data); + builder.addSessionBackup(keyBackupInfo); } else { - _logger.logger.warn("Cross-signing keys not available, skipping signature on key backup"); - } // sign with the device fingerprint - - - await this._signObject(data.auth_data); - builder.addSessionBackup(data); - } // Cache the session backup key - - - const sessionBackupKey = await secretStorage.get('m.megolm_backup.v1'); - - if (sessionBackupKey) { - _logger.logger.info("Got session backup key from secret storage: caching"); // fix up the backup key if it's in the wrong format, and replace - // in secret storage - - - const fixedBackupKey = fixBackupKey(sessionBackupKey); - - if (fixedBackupKey) { - await secretStorage.store("m.megolm_backup.v1", fixedBackupKey, [newKeyId || oldKeyId]); + // 4S is already set up + _logger.logger.log("Secret storage exists"); + if (oldKeyInfo && oldKeyInfo.algorithm === _secretStorage.SECRET_STORAGE_ALGORITHM_V1_AES) { + // make sure that the default key has the information needed to + // check the passphrase + await ensureCanCheckPassphrase(oldKeyId, oldKeyInfo); + } } - const decodedBackupKey = new Uint8Array(olmlib.decodeBase64(fixedBackupKey || sessionBackupKey)); - await builder.addSessionBackupPrivateKeyToCache(decodedBackupKey); + // If we have cross-signing private keys cached, store them in secret + // storage if they are not there already. + if (!this.baseApis.cryptoCallbacks.saveCrossSigningKeys && (await this.isCrossSigningReady()) && (newKeyId || !(await this.crossSigningInfo.isStoredInSecretStorage(secretStorage)))) { + _logger.logger.log("Copying cross-signing private keys from cache to secret storage"); + const crossSigningPrivateKeys = await this.crossSigningInfo.getCrossSigningKeysFromCache(); + // This is writing to in-memory account data in + // builder.accountDataClientAdapter so won't fail + await _CrossSigning.CrossSigningInfo.storeInSecretStorage(crossSigningPrivateKeys, secretStorage); + } + if (setupNewKeyBackup && !keyBackupInfo) { + _logger.logger.log("Creating new message key backup version"); + const info = await this.baseApis.prepareKeyBackupVersion(null /* random key */, + // don't write to secret storage, as it will write to this.secretStorage. + // Here, we want to capture all the side-effects of bootstrapping, + // and want to write to the local secretStorage object + { + secureSecretStorage: false + }); + // write the key to 4S + const privateKey = (0, _recoverykey.decodeRecoveryKey)(info.recovery_key); + await secretStorage.store("m.megolm_backup.v1", (0, _base.encodeBase64)(privateKey)); + + // create keyBackupInfo object to add to builder + const data = { + algorithm: info.algorithm, + auth_data: info.auth_data + }; + + // Sign with cross-signing master key + await signKeyBackupWithCrossSigning(data.auth_data); + + // sign with the device fingerprint + await this.signObject(data.auth_data); + builder.addSessionBackup(data); + } + + // Cache the session backup key + const sessionBackupKey = await secretStorage.get("m.megolm_backup.v1"); + if (sessionBackupKey) { + _logger.logger.info("Got session backup key from secret storage: caching"); + // fix up the backup key if it's in the wrong format, and replace + // in secret storage + const fixedBackupKey = fixBackupKey(sessionBackupKey); + if (fixedBackupKey) { + const keyId = newKeyId || oldKeyId; + await secretStorage.store("m.megolm_backup.v1", fixedBackupKey, keyId ? [keyId] : null); + } + const decodedBackupKey = new Uint8Array((0, _base.decodeBase64)(fixedBackupKey || sessionBackupKey)); + builder.addSessionBackupPrivateKeyToCache(decodedBackupKey); + } else if (this.backupManager.getKeyBackupEnabled()) { + // key backup is enabled but we don't have a session backup key in SSSS: see if we have one in + // the cache or the user can provide one, and if so, write it to SSSS + const backupKey = (await this.getSessionBackupPrivateKey()) || (await (getKeyBackupPassphrase === null || getKeyBackupPassphrase === void 0 ? void 0 : getKeyBackupPassphrase())); + if (!backupKey) { + // This will require user intervention to recover from since we don't have the key + // backup key anywhere. The user should probably just set up a new key backup and + // the key for the new backup will be stored. If we hit this scenario in the wild + // with any frequency, we should do more than just log an error. + _logger.logger.error("Key backup is enabled but couldn't get key backup key!"); + return; + } + _logger.logger.info("Got session backup key from cache/user that wasn't in SSSS: saving to SSSS"); + await secretStorage.store("m.megolm_backup.v1", (0, _base.encodeBase64)(backupKey)); + } + const operation = builder.buildOperation(); + await operation.apply(this); + // this persists private keys and public keys as trusted, + // only do this if apply succeeded for now as retry isn't in place yet + await builder.persist(this); + _logger.logger.log("Secure Secret Storage ready"); } - const operation = builder.buildOperation(); - await operation.apply(this); // this persists private keys and public keys as trusted, - // only do this if apply succeeded for now as retry isn't in place yet + /** + * Implementation of {@link CryptoApi#resetKeyBackup}. + */ + async resetKeyBackup() { + // Delete existing ones + // There is no use case for having several key backup version live server side. + // Even if not deleted it would be lost as the key to restore is lost. + // There should be only one backup at a time. + await this.backupManager.deleteAllKeyBackupVersions(); + const info = await this.backupManager.prepareKeyBackupVersion(); + await this.signObject(info.auth_data); - await builder.persist(this); + // add new key backup + const { + version + } = await this.baseApis.http.authedRequest(_httpApi.Method.Post, "/room_keys/version", undefined, info, { + prefix: _httpApi.ClientPrefix.V3 + }); + _logger.logger.log(`Created backup version ${version}`); - _logger.logger.log("Secure Secret Storage ready"); -}; -/** - * Fix up the backup key, that may be in the wrong format due to a bug in a - * migration step. Some backup keys were stored as a comma-separated list of - * integers, rather than a base64-encoded byte array. If this function is - * passed a string that looks like a list of integers rather than a base64 - * string, it will attempt to convert it to the right format. - * - * @param {string} key the key to check - * @returns {null | string} If the key is in the wrong format, then the fixed - * key will be returned. Otherwise null will be returned. - * - */ + // write the key to 4S + const privateKey = info.privateKey; + await this.secretStorage.store("m.megolm_backup.v1", (0, _base.encodeBase64)(privateKey)); + await this.storeSessionBackupPrivateKey(privateKey); + await this.backupManager.checkAndStart(); + await this.backupManager.scheduleAllGroupSessionsForBackup(); + } + /** + * Implementation of {@link CryptoApi#deleteKeyBackupVersion}. + */ + async deleteKeyBackupVersion(version) { + await this.backupManager.deleteKeyBackupVersion(version); + } -function fixBackupKey(key) { - if (typeof key !== "string" || key.indexOf(",") < 0) { + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#addKey}. + */ + addSecretStorageKey(algorithm, opts, keyID) { + return this.secretStorage.addKey(algorithm, opts, keyID); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#hasKey}. + */ + hasSecretStorageKey(keyID) { + return this.secretStorage.hasKey(keyID); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#getKey}. + */ + getSecretStorageKey(keyID) { + return this.secretStorage.getKey(keyID); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#store}. + */ + storeSecret(name, secret, keys) { + return this.secretStorage.store(name, secret, keys); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#get}. + */ + getSecret(name) { + return this.secretStorage.get(name); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#isStored}. + */ + isSecretStored(name) { + return this.secretStorage.isStored(name); + } + requestSecret(name, devices) { + if (!devices) { + devices = Object.keys(this.deviceList.getRawStoredDevicesForUser(this.userId)); + } + return this.secretStorage.request(name, devices); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#getDefaultKeyId}. + */ + getDefaultSecretStorageKeyId() { + return this.secretStorage.getDefaultKeyId(); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#setDefaultKeyId}. + */ + setDefaultSecretStorageKeyId(k) { + return this.secretStorage.setDefaultKeyId(k); + } + + /** + * @deprecated Use {@link MatrixClient#secretStorage} and {@link SecretStorage.ServerSideSecretStorage#checkKey}. + */ + checkSecretStorageKey(key, info) { + return this.secretStorage.checkKey(key, info); + } + + /** + * Checks that a given secret storage private key matches a given public key. + * This can be used by the getSecretStorageKey callback to verify that the + * private key it is about to supply is the one that was requested. + * + * @param privateKey - The private key + * @param expectedPublicKey - The public key + * @returns true if the key matches, otherwise false + */ + checkSecretStoragePrivateKey(privateKey, expectedPublicKey) { + let decryption = null; + try { + decryption = new global.Olm.PkDecryption(); + const gotPubkey = decryption.init_with_private_key(privateKey); + // make sure it agrees with the given pubkey + return gotPubkey === expectedPublicKey; + } finally { + var _decryption; + (_decryption = decryption) === null || _decryption === void 0 || _decryption.free(); + } + } + + /** + * Fetches the backup private key, if cached + * @returns the key, if any, or null + */ + async getSessionBackupPrivateKey() { + const encodedKey = await new Promise(resolve => { + this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.cryptoStore.getSecretStorePrivateKey(txn, resolve, "m.megolm_backup.v1"); + }); + }); + let key = null; + + // make sure we have a Uint8Array, rather than a string + if (typeof encodedKey === "string") { + key = new Uint8Array((0, _base.decodeBase64)(fixBackupKey(encodedKey) || encodedKey)); + await this.storeSessionBackupPrivateKey(key); + } + if (encodedKey && typeof encodedKey === "object" && "ciphertext" in encodedKey) { + const pickleKey = Buffer.from(this.olmDevice.pickleKey); + const decrypted = await (0, _aes.decryptAES)(encodedKey, pickleKey, "m.megolm_backup.v1"); + key = (0, _base.decodeBase64)(decrypted); + } + return key; + } + + /** + * Stores the session backup key to the cache + * @param key - the private key + * @returns a promise so you can catch failures + */ + async storeSessionBackupPrivateKey(key, version) { + if (!(key instanceof Uint8Array)) { + // eslint-disable-next-line @typescript-eslint/no-base-to-string + throw new Error(`storeSessionBackupPrivateKey expects Uint8Array, got ${key}`); + } + const pickleKey = Buffer.from(this.olmDevice.pickleKey); + const encryptedKey = await (0, _aes.encryptAES)((0, _base.encodeBase64)(key), pickleKey, "m.megolm_backup.v1"); + return this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.cryptoStore.storeSecretStorePrivateKey(txn, "m.megolm_backup.v1", encryptedKey); + }); + } + + /** + * Get the current status of key backup. + * + * Implementation of {@link CryptoApi.getActiveSessionBackupVersion}. + */ + async getActiveSessionBackupVersion() { + if (this.backupManager.getKeyBackupEnabled()) { + var _this$backupManager$v; + return (_this$backupManager$v = this.backupManager.version) !== null && _this$backupManager$v !== void 0 ? _this$backupManager$v : null; + } return null; } - const fixedKey = Uint8Array.from(key.split(","), x => parseInt(x)); - return olmlib.encodeBase64(fixedKey); -} - -Crypto.prototype.addSecretStorageKey = function (algorithm, opts, keyID) { - return this._secretStorage.addKey(algorithm, opts, keyID); -}; - -Crypto.prototype.hasSecretStorageKey = function (keyID) { - return this._secretStorage.hasKey(keyID); -}; - -Crypto.prototype.getSecretStorageKey = function (keyID) { - return this._secretStorage.getKey(keyID); -}; - -Crypto.prototype.storeSecret = function (name, secret, keys) { - return this._secretStorage.store(name, secret, keys); -}; - -Crypto.prototype.getSecret = function (name) { - return this._secretStorage.get(name); -}; - -Crypto.prototype.isSecretStored = function (name, checkKey) { - return this._secretStorage.isStored(name, checkKey); -}; - -Crypto.prototype.requestSecret = function (name, devices) { - if (!devices) { - devices = Object.keys(this._deviceList.getRawStoredDevicesForUser(this._userId)); + /** + * Determine if a key backup can be trusted. + * + * Implementation of {@link Crypto.CryptoApi.isKeyBackupTrusted}. + */ + async isKeyBackupTrusted(info) { + const trustInfo = await this.backupManager.isKeyBackupTrusted(info); + return (0, _backup.backupTrustInfoFromLegacyTrustInfo)(trustInfo); } - return this._secretStorage.request(name, devices); -}; - -Crypto.prototype.getDefaultSecretStorageKeyId = function () { - return this._secretStorage.getDefaultKeyId(); -}; - -Crypto.prototype.setDefaultSecretStorageKeyId = function (k) { - return this._secretStorage.setDefaultKeyId(k); -}; - -Crypto.prototype.checkSecretStorageKey = function (key, info) { - return this._secretStorage.checkKey(key, info); -}; -/** - * Checks that a given secret storage private key matches a given public key. - * This can be used by the getSecretStorageKey callback to verify that the - * private key it is about to supply is the one that was requested. - * - * @param {Uint8Array} privateKey The private key - * @param {string} expectedPublicKey The public key - * @returns {boolean} true if the key matches, otherwise false - */ - - -Crypto.prototype.checkSecretStoragePrivateKey = function (privateKey, expectedPublicKey) { - let decryption = null; - - try { - decryption = new global.Olm.PkDecryption(); - const gotPubkey = decryption.init_with_private_key(privateKey); // make sure it agrees with the given pubkey - - return gotPubkey === expectedPublicKey; - } finally { - if (decryption) decryption.free(); - } -}; -/** - * Fetches the backup private key, if cached - * @returns {Promise} the key, if any, or null - */ - - -Crypto.prototype.getSessionBackupPrivateKey = async function () { - let key = await new Promise(resolve => { - this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - this._cryptoStore.getSecretStorePrivateKey(txn, resolve, "m.megolm_backup.v1"); - }); - }); // make sure we have a Uint8Array, rather than a string - - if (key && typeof key === "string") { - key = new Uint8Array(olmlib.decodeBase64(fixBackupKey(key) || key)); - await this.storeSessionBackupPrivateKey(key); + /** + * Force a re-check of the key backup and enable/disable it as appropriate. + * + * Implementation of {@link CryptoApi.checkKeyBackupAndEnable}. + */ + async checkKeyBackupAndEnable() { + const checkResult = await this.backupManager.checkKeyBackup(); + if (!checkResult || !checkResult.backupInfo) return null; + return { + backupInfo: checkResult.backupInfo, + trustInfo: (0, _backup.backupTrustInfoFromLegacyTrustInfo)(checkResult.trustInfo) + }; } - if (key && key.ciphertext) { - const pickleKey = Buffer.from(this._olmDevice._pickleKey); - const decrypted = await (0, _aes.decryptAES)(key, pickleKey, "m.megolm_backup.v1"); - key = olmlib.decodeBase64(decrypted); - } - - return key; -}; -/** - * Stores the session backup key to the cache - * @param {Uint8Array} key the private key - * @returns {Promise} so you can catch failures - */ - - -Crypto.prototype.storeSessionBackupPrivateKey = async function (key) { - if (!(key instanceof Uint8Array)) { - throw new Error(`storeSessionBackupPrivateKey expects Uint8Array, got ${key}`); - } - - const pickleKey = Buffer.from(this._olmDevice._pickleKey); - key = await (0, _aes.encryptAES)(olmlib.encodeBase64(key), pickleKey, "m.megolm_backup.v1"); - return this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - this._cryptoStore.storeSecretStorePrivateKey(txn, "m.megolm_backup.v1", key); - }); -}; -/** - * Checks that a given cross-signing private key matches a given public key. - * This can be used by the getCrossSigningKey callback to verify that the - * private key it is about to supply is the one that was requested. - * - * @param {Uint8Array} privateKey The private key - * @param {string} expectedPublicKey The public key - * @returns {boolean} true if the key matches, otherwise false - */ - - -Crypto.prototype.checkCrossSigningPrivateKey = function (privateKey, expectedPublicKey) { - let signing = null; - - try { - signing = new global.Olm.PkSigning(); - const gotPubkey = signing.init_with_seed(privateKey); // make sure it agrees with the given pubkey - - return gotPubkey === expectedPublicKey; - } finally { - if (signing) signing.free(); - } -}; -/** - * Run various follow-up actions after cross-signing keys have changed locally - * (either by resetting the keys for the account or by getting them from secret - * storage), such as signing the current device, upgrading device - * verifications, etc. - */ - - -Crypto.prototype._afterCrossSigningLocalKeyChange = async function () { - _logger.logger.info("Starting cross-signing key change post-processing"); // sign the current device with the new key, and upload to the server - - - const device = this._deviceList.getStoredDevice(this._userId, this._deviceId); - - const signedDevice = await this._crossSigningInfo.signDevice(this._userId, device); - - _logger.logger.info(`Starting background key sig upload for ${this._deviceId}`); - - const upload = ({ - shouldEmit - }) => { - return this._baseApis.uploadKeySignatures({ - [this._userId]: { - [this._deviceId]: signedDevice - } - }).then(response => { - const { - failures - } = response || {}; - - if (Object.keys(failures || []).length > 0) { - if (shouldEmit) { - this._baseApis.emit("crypto.keySignatureUploadFailure", failures, "_afterCrossSigningLocalKeyChange", upload // continuation - ); - } - - throw new _errors.KeySignatureUploadError("Key upload failed", { - failures - }); - } - - _logger.logger.info(`Finished background key sig upload for ${this._deviceId}`); - }).catch(e => { - _logger.logger.error(`Error during background key sig upload for ${this._deviceId}`, e); - }); - }; - - upload({ - shouldEmit: true - }); - const shouldUpgradeCb = this._baseApis._cryptoCallbacks.shouldUpgradeDeviceVerifications; - - if (shouldUpgradeCb) { - _logger.logger.info("Starting device verification upgrade"); // Check all users for signatures if upgrade callback present - // FIXME: do this in batches - - - const users = {}; - - for (const [userId, crossSigningInfo] of Object.entries(this._deviceList._crossSigningInfo)) { - const upgradeInfo = await this._checkForDeviceVerificationUpgrade(userId, _CrossSigning.CrossSigningInfo.fromStorage(crossSigningInfo, userId)); - - if (upgradeInfo) { - users[userId] = upgradeInfo; - } - } - - if (Object.keys(users).length > 0) { - _logger.logger.info(`Found ${Object.keys(users).length} verif users to upgrade`); - - try { - const usersToUpgrade = await shouldUpgradeCb({ - users: users - }); - - if (usersToUpgrade) { - for (const userId of usersToUpgrade) { - if (userId in users) { - await this._baseApis.setDeviceVerified(userId, users[userId].crossSigningInfo.getId()); - } - } - } - } catch (e) { - _logger.logger.log("shouldUpgradeDeviceVerifications threw an error: not upgrading", e); - } - } - - _logger.logger.info("Finished device verification upgrade"); - } - - _logger.logger.info("Finished cross-signing key change post-processing"); -}; -/** - * Check if a user's cross-signing key is a candidate for upgrading from device - * verification. - * - * @param {string} userId the user whose cross-signing information is to be checked - * @param {object} crossSigningInfo the cross-signing information to check - */ - - -Crypto.prototype._checkForDeviceVerificationUpgrade = async function (userId, crossSigningInfo) { - // only upgrade if this is the first cross-signing key that we've seen for - // them, and if their cross-signing key isn't already verified - const trustLevel = this._crossSigningInfo.checkUserTrust(crossSigningInfo); - - if (crossSigningInfo.firstUse && !trustLevel.verified) { - const devices = this._deviceList.getRawStoredDevicesForUser(userId); - - const deviceIds = await this._checkForValidDeviceSignature(userId, crossSigningInfo.keys.master, devices); - - if (deviceIds.length) { - return { - devices: deviceIds.map(deviceId => _deviceinfo.DeviceInfo.fromStorage(devices[deviceId], deviceId)), - crossSigningInfo - }; - } - } -}; -/** - * Check if the cross-signing key is signed by a verified device. - * - * @param {string} userId the user ID whose key is being checked - * @param {object} key the key that is being checked - * @param {object} devices the user's devices. Should be a map from device ID - * to device info - */ - - -Crypto.prototype._checkForValidDeviceSignature = async function (userId, key, devices) { - const deviceIds = []; - - if (devices && key.signatures && key.signatures[userId]) { - for (const signame of Object.keys(key.signatures[userId])) { - const [, deviceId] = signame.split(':', 2); - - if (deviceId in devices && devices[deviceId].verified === DeviceVerification.VERIFIED) { - try { - await olmlib.verifySignature(this._olmDevice, key, userId, deviceId, devices[deviceId].keys[signame]); - deviceIds.push(deviceId); - } catch (e) {} - } - } - } - - return deviceIds; -}; -/** - * Get the user's cross-signing key ID. - * - * @param {string} [type=master] The type of key to get the ID of. One of - * "master", "self_signing", or "user_signing". Defaults to "master". - * - * @returns {string} the key ID - */ - - -Crypto.prototype.getCrossSigningId = function (type) { - return this._crossSigningInfo.getId(type); -}; -/** - * Get the cross signing information for a given user. - * - * @param {string} userId the user ID to get the cross-signing info for. - * - * @returns {CrossSigningInfo} the cross signing informmation for the user. - */ - - -Crypto.prototype.getStoredCrossSigningForUser = function (userId) { - return this._deviceList.getStoredCrossSigningForUser(userId); -}; -/** - * Check whether a given user is trusted. - * - * @param {string} userId The ID of the user to check. - * - * @returns {UserTrustLevel} - */ - - -Crypto.prototype.checkUserTrust = function (userId) { - const userCrossSigning = this._deviceList.getStoredCrossSigningForUser(userId); - - if (!userCrossSigning) { - return new _CrossSigning.UserTrustLevel(false, false, false); - } - - return this._crossSigningInfo.checkUserTrust(userCrossSigning); -}; -/** - * Check whether a given device is trusted. - * - * @param {string} userId The ID of the user whose devices is to be checked. - * @param {string} deviceId The ID of the device to check - * - * @returns {DeviceTrustLevel} - */ - - -Crypto.prototype.checkDeviceTrust = function (userId, deviceId) { - const device = this._deviceList.getStoredDevice(userId, deviceId); - - return this._checkDeviceInfoTrust(userId, device); -}; -/** - * Check whether a given deviceinfo is trusted. - * - * @param {string} userId The ID of the user whose devices is to be checked. - * @param {module:crypto/deviceinfo?} device The device info object to check - * - * @returns {DeviceTrustLevel} - */ - - -Crypto.prototype._checkDeviceInfoTrust = function (userId, device) { - const trustedLocally = !!(device && device.isVerified()); - - const userCrossSigning = this._deviceList.getStoredCrossSigningForUser(userId); - - if (device && userCrossSigning) { - // The _trustCrossSignedDevices only affects trust of other people's cross-signing - // signatures - const trustCrossSig = this._trustCrossSignedDevices || userId === this._userId; - return this._crossSigningInfo.checkDeviceTrust(userCrossSigning, device, trustedLocally, trustCrossSig); - } else { - return new _CrossSigning.DeviceTrustLevel(false, false, trustedLocally, false); - } -}; -/* - * Event handler for DeviceList's userNewDevices event - */ - - -Crypto.prototype._onDeviceListUserCrossSigningUpdated = async function (userId) { - if (userId === this._userId) { - // An update to our own cross-signing key. - // Get the new key first: - const newCrossSigning = this._deviceList.getStoredCrossSigningForUser(userId); - - const seenPubkey = newCrossSigning ? newCrossSigning.getId() : null; - - const currentPubkey = this._crossSigningInfo.getId(); - - const changed = currentPubkey !== seenPubkey; - - if (currentPubkey && seenPubkey && !changed) { - // If it's not changed, just make sure everything is up to date - await this.checkOwnCrossSigningTrust(); - } else { - // We'll now be in a state where cross-signing on the account is not trusted - // because our locally stored cross-signing keys will not match the ones - // on the server for our account. So we clear our own stored cross-signing keys, - // effectively disabling cross-signing until the user gets verified by the device - // that reset the keys - this._storeTrustedSelfKeys(null); // emit cross-signing has been disabled - - - this.emit("crossSigning.keysChanged", {}); // as the trust for our own user has changed, - // also emit an event for this - - this.emit("userTrustStatusChanged", this._userId, this.checkUserTrust(userId)); - } - } else { - await this._checkDeviceVerifications(userId); // Update verified before latch using the current state and save the new - // latch value in the device list store. - - const crossSigning = this._deviceList.getStoredCrossSigningForUser(userId); - - if (crossSigning) { - crossSigning.updateCrossSigningVerifiedBefore(this.checkUserTrust(userId).isCrossSigningVerified()); - - this._deviceList.setRawStoredCrossSigningForUser(userId, crossSigning.toStorage()); - } - - this.emit("userTrustStatusChanged", userId, this.checkUserTrust(userId)); - } -}; -/** - * Check the copy of our cross-signing key that we have in the device list and - * see if we can get the private key. If so, mark it as trusted. - */ - - -Crypto.prototype.checkOwnCrossSigningTrust = async function () { - const userId = this._userId; // Before proceeding, ensure our cross-signing public keys have been - // downloaded via the device list. - - await this.downloadKeys([this._userId]); // If we see an update to our own master key, check it against the master - // key we have and, if it matches, mark it as verified - // First, get the new cross-signing info - - const newCrossSigning = this._deviceList.getStoredCrossSigningForUser(userId); - - if (!newCrossSigning) { - _logger.logger.error("Got cross-signing update event for user " + userId + " but no new cross-signing information found!"); - - return; - } - - const seenPubkey = newCrossSigning.getId(); - const masterChanged = this._crossSigningInfo.getId() !== seenPubkey; - - if (masterChanged) { - _logger.logger.info("Got new master public key", seenPubkey); - - _logger.logger.info("Attempting to retrieve cross-signing master private key"); - + /** + * Checks that a given cross-signing private key matches a given public key. + * This can be used by the getCrossSigningKey callback to verify that the + * private key it is about to supply is the one that was requested. + * + * @param privateKey - The private key + * @param expectedPublicKey - The public key + * @returns true if the key matches, otherwise false + */ + checkCrossSigningPrivateKey(privateKey, expectedPublicKey) { let signing = null; - try { - const ret = await this._crossSigningInfo.getCrossSigningKey('master', seenPubkey); - signing = ret[1]; - - _logger.logger.info("Got cross-signing master private key"); - } catch (e) { - _logger.logger.error("Cross-signing master private key not available", e); + signing = new global.Olm.PkSigning(); + const gotPubkey = signing.init_with_seed(privateKey); + // make sure it agrees with the given pubkey + return gotPubkey === expectedPublicKey; } finally { - if (signing) signing.free(); + var _signing; + (_signing = signing) === null || _signing === void 0 || _signing.free(); } } - const oldSelfSigningId = this._crossSigningInfo.getId("self_signing"); + /** + * Run various follow-up actions after cross-signing keys have changed locally + * (either by resetting the keys for the account or by getting them from secret + * storage), such as signing the current device, upgrading device + * verifications, etc. + */ + async afterCrossSigningLocalKeyChange() { + _logger.logger.info("Starting cross-signing key change post-processing"); - const oldUserSigningId = this._crossSigningInfo.getId("user_signing"); // Update the version of our keys in our cross-signing object and the local store - - - this._storeTrustedSelfKeys(newCrossSigning.keys); - - const selfSigningChanged = oldSelfSigningId !== newCrossSigning.getId("self_signing"); - const userSigningChanged = oldUserSigningId !== newCrossSigning.getId("user_signing"); - const keySignatures = {}; - - if (selfSigningChanged) { - _logger.logger.info("Got new self-signing key", newCrossSigning.getId("self_signing")); - - _logger.logger.info("Attempting to retrieve cross-signing self-signing private key"); - - let signing = null; - - try { - const ret = await this._crossSigningInfo.getCrossSigningKey("self_signing", newCrossSigning.getId("self_signing")); - signing = ret[1]; - - _logger.logger.info("Got cross-signing self-signing private key"); - } catch (e) { - _logger.logger.error("Cross-signing self-signing private key not available", e); - } finally { - if (signing) signing.free(); - } - - const device = this._deviceList.getStoredDevice(this._userId, this._deviceId); - - const signedDevice = await this._crossSigningInfo.signDevice(this._userId, device); - keySignatures[this._deviceId] = signedDevice; - } - - if (userSigningChanged) { - _logger.logger.info("Got new user-signing key", newCrossSigning.getId("user_signing")); - - _logger.logger.info("Attempting to retrieve cross-signing user-signing private key"); - - let signing = null; - - try { - const ret = await this._crossSigningInfo.getCrossSigningKey("user_signing", newCrossSigning.getId("user_signing")); - signing = ret[1]; - - _logger.logger.info("Got cross-signing user-signing private key"); - } catch (e) { - _logger.logger.error("Cross-signing user-signing private key not available", e); - } finally { - if (signing) signing.free(); - } - } - - if (masterChanged) { - const masterKey = this._crossSigningInfo.keys.master; - await this._signObject(masterKey); - const deviceSig = masterKey.signatures[this._userId]["ed25519:" + this._deviceId]; // Include only the _new_ device signature in the upload. - // We may have existing signatures from deleted devices, which will cause - // the entire upload to fail. - - keySignatures[this._crossSigningInfo.getId()] = Object.assign({}, masterKey, { - signatures: { - [this._userId]: { - ["ed25519:" + this._deviceId]: deviceSig - } - } - }); - } - - const keysToUpload = Object.keys(keySignatures); - - if (keysToUpload.length) { + // sign the current device with the new key, and upload to the server + const device = this.deviceList.getStoredDevice(this.userId, this.deviceId); + const signedDevice = await this.crossSigningInfo.signDevice(this.userId, device); + _logger.logger.info(`Starting background key sig upload for ${this.deviceId}`); const upload = ({ - shouldEmit + shouldEmit = false }) => { - _logger.logger.info(`Starting background key sig upload for ${keysToUpload}`); - - return this._baseApis.uploadKeySignatures({ - [this._userId]: keySignatures + return this.baseApis.uploadKeySignatures({ + [this.userId]: { + [this.deviceId]: signedDevice + } }).then(response => { const { failures } = response || {}; - - _logger.logger.info(`Finished background key sig upload for ${keysToUpload}`); - if (Object.keys(failures || []).length > 0) { if (shouldEmit) { - this._baseApis.emit("crypto.keySignatureUploadFailure", failures, "checkOwnCrossSigningTrust", upload); + this.baseApis.emit(CryptoEvent.KeySignatureUploadFailure, failures, "afterCrossSigningLocalKeyChange", upload // continuation + ); } - throw new _errors.KeySignatureUploadError("Key upload failed", { failures }); } + _logger.logger.info(`Finished background key sig upload for ${this.deviceId}`); }).catch(e => { - _logger.logger.error(`Error during background key sig upload for ${keysToUpload}`, e); + _logger.logger.error(`Error during background key sig upload for ${this.deviceId}`, e); }); }; - upload({ shouldEmit: true }); - } + const shouldUpgradeCb = this.baseApis.cryptoCallbacks.shouldUpgradeDeviceVerifications; + if (shouldUpgradeCb) { + _logger.logger.info("Starting device verification upgrade"); - this.emit("userTrustStatusChanged", userId, this.checkUserTrust(userId)); - - if (masterChanged) { - this._baseApis.emit("crossSigning.keysChanged", {}); - - await this._afterCrossSigningLocalKeyChange(); - } // Now we may be able to trust our key backup - - - await this.checkKeyBackup(); // FIXME: if we previously trusted the backup, should we automatically sign - // the backup with the new key (if not already signed)? -}; -/** - * Store a set of keys as our own, trusted, cross-signing keys. - * - * @param {object} keys The new trusted set of keys - */ - - -Crypto.prototype._storeTrustedSelfKeys = async function (keys) { - if (keys) { - this._crossSigningInfo.setKeys(keys); - } else { - this._crossSigningInfo.clearKeys(); - } - - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { - this._cryptoStore.storeCrossSigningKeys(txn, this._crossSigningInfo.keys); - }); -}; -/** - * Check if the master key is signed by a verified device, and if so, prompt - * the application to mark it as verified. - * - * @param {string} userId the user ID whose key should be checked - */ - - -Crypto.prototype._checkDeviceVerifications = async function (userId) { - const shouldUpgradeCb = this._baseApis._cryptoCallbacks.shouldUpgradeDeviceVerifications; - - if (!shouldUpgradeCb) { - // Upgrading skipped when callback is not present. - return; - } - - _logger.logger.info(`Starting device verification upgrade for ${userId}`); - - if (this._crossSigningInfo.keys.user_signing) { - const crossSigningInfo = this._deviceList.getStoredCrossSigningForUser(userId); - - if (crossSigningInfo) { - const upgradeInfo = await this._checkForDeviceVerificationUpgrade(userId, crossSigningInfo); - - if (upgradeInfo) { - const usersToUpgrade = await shouldUpgradeCb({ - users: { - [userId]: upgradeInfo + // Check all users for signatures if upgrade callback present + // FIXME: do this in batches + const users = {}; + for (const [userId, crossSigningInfo] of Object.entries(this.deviceList.crossSigningInfo)) { + const upgradeInfo = await this.checkForDeviceVerificationUpgrade(userId, _CrossSigning.CrossSigningInfo.fromStorage(crossSigningInfo, userId)); + if (upgradeInfo) { + users[userId] = upgradeInfo; + } + } + if (Object.keys(users).length > 0) { + _logger.logger.info(`Found ${Object.keys(users).length} verif users to upgrade`); + try { + const usersToUpgrade = await shouldUpgradeCb({ + users: users + }); + if (usersToUpgrade) { + for (const userId of usersToUpgrade) { + if (userId in users) { + await this.baseApis.setDeviceVerified(userId, users[userId].crossSigningInfo.getId()); + } + } } - }); + } catch (e) { + _logger.logger.log("shouldUpgradeDeviceVerifications threw an error: not upgrading", e); + } + } + _logger.logger.info("Finished device verification upgrade"); + } + _logger.logger.info("Finished cross-signing key change post-processing"); + } - if (usersToUpgrade.includes(userId)) { - await this._baseApis.setDeviceVerified(userId, crossSigningInfo.getId()); + /** + * Check if a user's cross-signing key is a candidate for upgrading from device + * verification. + * + * @param userId - the user whose cross-signing information is to be checked + * @param crossSigningInfo - the cross-signing information to check + */ + async checkForDeviceVerificationUpgrade(userId, crossSigningInfo) { + // only upgrade if this is the first cross-signing key that we've seen for + // them, and if their cross-signing key isn't already verified + const trustLevel = this.crossSigningInfo.checkUserTrust(crossSigningInfo); + if (crossSigningInfo.firstUse && !trustLevel.isVerified()) { + const devices = this.deviceList.getRawStoredDevicesForUser(userId); + const deviceIds = await this.checkForValidDeviceSignature(userId, crossSigningInfo.keys.master, devices); + if (deviceIds.length) { + return { + devices: deviceIds.map(deviceId => _deviceinfo.DeviceInfo.fromStorage(devices[deviceId], deviceId)), + crossSigningInfo + }; + } + } + } + + /** + * Check if the cross-signing key is signed by a verified device. + * + * @param userId - the user ID whose key is being checked + * @param key - the key that is being checked + * @param devices - the user's devices. Should be a map from device ID + * to device info + */ + async checkForValidDeviceSignature(userId, key, devices) { + const deviceIds = []; + if (devices && key.signatures && key.signatures[userId]) { + for (const signame of Object.keys(key.signatures[userId])) { + const [, deviceId] = signame.split(":", 2); + if (deviceId in devices && devices[deviceId].verified === DeviceVerification.VERIFIED) { + try { + await olmlib.verifySignature(this.olmDevice, key, userId, deviceId, devices[deviceId].keys[signame]); + deviceIds.push(deviceId); + } catch (e) {} } } } + return deviceIds; } - _logger.logger.info(`Finished device verification upgrade for ${userId}`); -}; -/** - * Check the server for an active key backup and - * if one is present and has a valid signature from - * one of the user's verified devices, start backing up - * to it. - */ - - -Crypto.prototype._checkAndStartKeyBackup = async function () { - _logger.logger.log("Checking key backup status..."); - - if (this._baseApis.isGuest()) { - _logger.logger.log("Skipping key backup check since user is guest"); - - this._checkedForBackup = true; - return null; + /** + * Get the user's cross-signing key ID. + * + * @param type - The type of key to get the ID of. One of + * "master", "self_signing", or "user_signing". Defaults to "master". + * + * @returns the key ID + */ + getCrossSigningKeyId(type = _api.CrossSigningKey.Master) { + return Promise.resolve(this.getCrossSigningId(type)); } - let backupInfo; + // old name, for backwards compatibility + getCrossSigningId(type) { + return this.crossSigningInfo.getId(type); + } - try { - backupInfo = await this._baseApis.getKeyBackupVersion(); - } catch (e) { - _logger.logger.log("Error checking for active key backup", e); + /** + * Get the cross signing information for a given user. + * + * @param userId - the user ID to get the cross-signing info for. + * + * @returns the cross signing information for the user. + */ + getStoredCrossSigningForUser(userId) { + return this.deviceList.getStoredCrossSigningForUser(userId); + } - if (e.httpStatus === 404) { - // 404 is returned when the key backup does not exist, so that - // counts as successfully checking. - this._checkedForBackup = true; + /** + * Check whether a given user is trusted. + * + * @param userId - The ID of the user to check. + * + * @returns + */ + checkUserTrust(userId) { + const userCrossSigning = this.deviceList.getStoredCrossSigningForUser(userId); + if (!userCrossSigning) { + return new _CrossSigning.UserTrustLevel(false, false, false); } - - return null; + return this.crossSigningInfo.checkUserTrust(userCrossSigning); } - this._checkedForBackup = true; - const trustInfo = await this.isKeyBackupTrusted(backupInfo); + /** + * Implementation of {@link CryptoApi.getUserVerificationStatus}. + */ + async getUserVerificationStatus(userId) { + return this.checkUserTrust(userId); + } - if (trustInfo.usable && !this.backupInfo) { - _logger.logger.log("Found usable key backup v" + backupInfo.version + ": enabling key backups"); + /** + * Check whether a given device is trusted. + * + * @param userId - The ID of the user whose device is to be checked. + * @param deviceId - The ID of the device to check + */ + async getDeviceVerificationStatus(userId, deviceId) { + const device = this.deviceList.getStoredDevice(userId, deviceId); + if (!device) { + return null; + } + return this.checkDeviceInfoTrust(userId, device); + } - this._baseApis.enableKeyBackup(backupInfo); - } else if (!trustInfo.usable && this.backupInfo) { - _logger.logger.log("No usable key backup: disabling key backup"); + /** + * @deprecated Use {@link Crypto.CryptoApi.getDeviceVerificationStatus}. + */ + checkDeviceTrust(userId, deviceId) { + const device = this.deviceList.getStoredDevice(userId, deviceId); + return this.checkDeviceInfoTrust(userId, device); + } - this._baseApis.disableKeyBackup(); - } else if (!trustInfo.usable && !this.backupInfo) { - _logger.logger.log("No usable key backup: not enabling key backup"); - } else if (trustInfo.usable && this.backupInfo) { - // may not be the same version: if not, we should switch - if (backupInfo.version !== this.backupInfo.version) { - _logger.logger.log("On backup version " + this.backupInfo.version + " but found " + "version " + backupInfo.version + ": switching."); - - this._baseApis.disableKeyBackup(); - - this._baseApis.enableKeyBackup(backupInfo); // We're now using a new backup, so schedule all the keys we have to be - // uploaded to the new backup. This is a bit of a workaround to upload - // keys to a new backup in *most* cases, but it won't cover all cases - // because we don't remember what backup version we uploaded keys to: - // see https://github.com/vector-im/element-web/issues/14833 - - - await this.scheduleAllGroupSessionsForBackup(); + /** + * Check whether a given deviceinfo is trusted. + * + * @param userId - The ID of the user whose devices is to be checked. + * @param device - The device info object to check + * + * @deprecated Use {@link Crypto.CryptoApi.getDeviceVerificationStatus}. + */ + checkDeviceInfoTrust(userId, device) { + const trustedLocally = !!(device !== null && device !== void 0 && device.isVerified()); + const userCrossSigning = this.deviceList.getStoredCrossSigningForUser(userId); + if (device && userCrossSigning) { + // The trustCrossSignedDevices only affects trust of other people's cross-signing + // signatures + const trustCrossSig = this.trustCrossSignedDevices || userId === this.userId; + return this.crossSigningInfo.checkDeviceTrust(userCrossSigning, device, trustedLocally, trustCrossSig); } else { - _logger.logger.log("Backup version " + backupInfo.version + " still current"); + return new _CrossSigning.DeviceTrustLevel(false, false, trustedLocally, false); } } - return { - backupInfo, - trustInfo - }; -}; - -Crypto.prototype.setTrustedBackupPubKey = async function (trustedPubKey) { - // This should be redundant post cross-signing is a thing, so just - // plonk it in localStorage for now. - this._sessionStore.setLocalTrustedBackupPubKey(trustedPubKey); - - await this.checkKeyBackup(); -}; -/** - * Forces a re-check of the key backup and enables/disables it - * as appropriate. - * - * @return {Object} Object with backup info (as returned by - * getKeyBackupVersion) in backupInfo and - * trust information (as returned by isKeyBackupTrusted) - * in trustInfo. - */ - - -Crypto.prototype.checkKeyBackup = async function () { - this._checkedForBackup = false; - return this._checkAndStartKeyBackup(); -}; -/** - * @param {object} backupInfo key backup info dict from /room_keys/version - * @return {object} { - * usable: [bool], // is the backup trusted, true iff there is a sig that is valid & from a trusted device - * sigs: [ - * valid: [bool || null], // true: valid, false: invalid, null: cannot attempt validation - * deviceId: [string], - * device: [DeviceInfo || null], - * ] - * } - */ - - -Crypto.prototype.isKeyBackupTrusted = async function (backupInfo) { - const ret = { - usable: false, - trusted_locally: false, - sigs: [] - }; - - if (!backupInfo || !backupInfo.algorithm || !backupInfo.auth_data || !backupInfo.auth_data.public_key || !backupInfo.auth_data.signatures) { - _logger.logger.info("Key backup is absent or missing required data"); - - return ret; + /** + * Check whether one of our own devices is cross-signed by our + * user's stored keys, regardless of whether we trust those keys yet. + * + * @param deviceId - The ID of the device to check + * + * @returns true if the device is cross-signed + */ + checkIfOwnDeviceCrossSigned(deviceId) { + var _userCrossSigning$che; + const device = this.deviceList.getStoredDevice(this.userId, deviceId); + if (!device) return false; + const userCrossSigning = this.deviceList.getStoredCrossSigningForUser(this.userId); + return (_userCrossSigning$che = userCrossSigning === null || userCrossSigning === void 0 ? void 0 : userCrossSigning.checkDeviceTrust(userCrossSigning, device, false, true).isCrossSigningVerified()) !== null && _userCrossSigning$che !== void 0 ? _userCrossSigning$che : false; } + /** + * Check the copy of our cross-signing key that we have in the device list and + * see if we can get the private key. If so, mark it as trusted. + */ + async checkOwnCrossSigningTrust({ + allowPrivateKeyRequests = false + } = {}) { + const userId = this.userId; - const trustedPubkey = this._sessionStore.getLocalTrustedBackupPubKey(); + // Before proceeding, ensure our cross-signing public keys have been + // downloaded via the device list. + await this.downloadKeys([this.userId]); - if (backupInfo.auth_data.public_key === trustedPubkey) { - _logger.logger.info("Backup public key " + trustedPubkey + " is trusted locally"); + // Also check which private keys are locally cached. + const crossSigningPrivateKeys = await this.crossSigningInfo.getCrossSigningKeysFromCache(); - ret.trusted_locally = true; - } - - const mySigs = backupInfo.auth_data.signatures[this._userId] || []; - - for (const keyId of Object.keys(mySigs)) { - const keyIdParts = keyId.split(':'); - - if (keyIdParts[0] !== 'ed25519') { - _logger.logger.log("Ignoring unknown signature type: " + keyIdParts[0]); - - continue; - } // Could be a cross-signing master key, but just say this is the device - // ID for backwards compat - - - const sigInfo = { - deviceId: keyIdParts[1] - }; // first check to see if it's from our cross-signing key - - const crossSigningId = this._crossSigningInfo.getId(); - - if (crossSigningId === sigInfo.deviceId) { - sigInfo.crossSigningId = true; + // If we see an update to our own master key, check it against the master + // key we have and, if it matches, mark it as verified + // First, get the new cross-signing info + const newCrossSigning = this.deviceList.getStoredCrossSigningForUser(userId); + if (!newCrossSigning) { + _logger.logger.error("Got cross-signing update event for user " + userId + " but no new cross-signing information found!"); + return; + } + const seenPubkey = newCrossSigning.getId(); + const masterChanged = this.crossSigningInfo.getId() !== seenPubkey; + const masterExistsNotLocallyCached = newCrossSigning.getId() && !crossSigningPrivateKeys.has("master"); + if (masterChanged) { + _logger.logger.info("Got new master public key", seenPubkey); + } + if (allowPrivateKeyRequests && (masterChanged || masterExistsNotLocallyCached)) { + _logger.logger.info("Attempting to retrieve cross-signing master private key"); + let signing = null; + // It's important for control flow that we leave any errors alone for + // higher levels to handle so that e.g. cancelling access properly + // aborts any larger operation as well. try { - await olmlib.verifySignature(this._olmDevice, backupInfo.auth_data, this._userId, sigInfo.deviceId, crossSigningId); - sigInfo.valid = true; - } catch (e) { - _logger.logger.warning("Bad signature from cross signing key " + crossSigningId, e); - - sigInfo.valid = false; + const ret = await this.crossSigningInfo.getCrossSigningKey("master", seenPubkey); + signing = ret[1]; + _logger.logger.info("Got cross-signing master private key"); + } finally { + var _signing2; + (_signing2 = signing) === null || _signing2 === void 0 || _signing2.free(); } + } + const oldSelfSigningId = this.crossSigningInfo.getId("self_signing"); + const oldUserSigningId = this.crossSigningInfo.getId("user_signing"); - ret.sigs.push(sigInfo); - continue; - } // Now look for a sig from a device - // At some point this can probably go away and we'll just support - // it being signed by the cross-signing master key - - - const device = this._deviceList.getStoredDevice(this._userId, sigInfo.deviceId); - - if (device) { - sigInfo.device = device; - sigInfo.deviceTrust = await this.checkDeviceTrust(this._userId, sigInfo.deviceId); - + // Update the version of our keys in our cross-signing object and the local store + this.storeTrustedSelfKeys(newCrossSigning.keys); + const selfSigningChanged = oldSelfSigningId !== newCrossSigning.getId("self_signing"); + const userSigningChanged = oldUserSigningId !== newCrossSigning.getId("user_signing"); + const selfSigningExistsNotLocallyCached = newCrossSigning.getId("self_signing") && !crossSigningPrivateKeys.has("self_signing"); + const userSigningExistsNotLocallyCached = newCrossSigning.getId("user_signing") && !crossSigningPrivateKeys.has("user_signing"); + const keySignatures = {}; + if (selfSigningChanged) { + _logger.logger.info("Got new self-signing key", newCrossSigning.getId("self_signing")); + } + if (allowPrivateKeyRequests && (selfSigningChanged || selfSigningExistsNotLocallyCached)) { + _logger.logger.info("Attempting to retrieve cross-signing self-signing private key"); + let signing = null; try { - await olmlib.verifySignature(this._olmDevice, backupInfo.auth_data, this._userId, device.deviceId, device.getFingerprint()); - sigInfo.valid = true; - } catch (e) { - _logger.logger.info("Bad signature from key ID " + keyId + " userID " + this._userId + " device ID " + device.deviceId + " fingerprint: " + device.getFingerprint(), backupInfo.auth_data, e); - - sigInfo.valid = false; + const ret = await this.crossSigningInfo.getCrossSigningKey("self_signing", newCrossSigning.getId("self_signing")); + signing = ret[1]; + _logger.logger.info("Got cross-signing self-signing private key"); + } finally { + var _signing3; + (_signing3 = signing) === null || _signing3 === void 0 || _signing3.free(); } - } else { - sigInfo.valid = null; // Can't determine validity because we don't have the signing device - - _logger.logger.info("Ignoring signature from unknown key " + keyId); + const device = this.deviceList.getStoredDevice(this.userId, this.deviceId); + const signedDevice = await this.crossSigningInfo.signDevice(this.userId, device); + keySignatures[this.deviceId] = signedDevice; } - - ret.sigs.push(sigInfo); - } - - ret.usable = ret.sigs.some(s => { - return s.valid && (s.device && s.deviceTrust.isVerified() || s.crossSigningId); - }); - ret.usable |= ret.trusted_locally; - return ret; -}; -/** - */ - - -Crypto.prototype.enableLazyLoading = function () { - this._lazyLoadMembers = true; -}; -/** - * Tell the crypto module to register for MatrixClient events which it needs to - * listen for - * - * @param {external:EventEmitter} eventEmitter event source where we can register - * for event notifications - */ - - -Crypto.prototype.registerEventHandlers = function (eventEmitter) { - const crypto = this; - eventEmitter.on("RoomMember.membership", function (event, member, oldMembership) { - try { - crypto._onRoomMembership(event, member, oldMembership); - } catch (e) { - _logger.logger.error("Error handling membership change:", e); + if (userSigningChanged) { + _logger.logger.info("Got new user-signing key", newCrossSigning.getId("user_signing")); } - }); - eventEmitter.on("toDeviceEvent", crypto._onToDeviceEvent.bind(crypto)); - - const timelineHandler = crypto._onTimelineEvent.bind(crypto); - - eventEmitter.on("Room.timeline", timelineHandler); - eventEmitter.on("Event.decrypted", timelineHandler); -}; -/** Start background processes related to crypto */ - - -Crypto.prototype.start = function () { - this._outgoingRoomKeyRequestManager.start(); -}; -/** Stop background processes related to crypto */ - - -Crypto.prototype.stop = function () { - this._outgoingRoomKeyRequestManager.stop(); - - this._deviceList.stop(); -}; -/** - * @return {string} The version of Olm. - */ - - -Crypto.getOlmVersion = function () { - return _OlmDevice.OlmDevice.getOlmVersion(); -}; -/** - * Get the Ed25519 key for this device - * - * @return {string} base64-encoded ed25519 key. - */ - - -Crypto.prototype.getDeviceEd25519Key = function () { - return this._olmDevice.deviceEd25519Key; -}; -/** - * Get the Curve25519 key for this device - * - * @return {string} base64-encoded curve25519 key. - */ - - -Crypto.prototype.getDeviceCurve25519Key = function () { - return this._olmDevice.deviceCurve25519Key; -}; -/** - * Set the global override for whether the client should ever send encrypted - * messages to unverified devices. This provides the default for rooms which - * do not specify a value. - * - * @param {boolean} value whether to blacklist all unverified devices by default - */ - - -Crypto.prototype.setGlobalBlacklistUnverifiedDevices = function (value) { - this._globalBlacklistUnverifiedDevices = value; -}; -/** - * @return {boolean} whether to blacklist all unverified devices by default - */ - - -Crypto.prototype.getGlobalBlacklistUnverifiedDevices = function () { - return this._globalBlacklistUnverifiedDevices; -}; -/** - * Set whether sendMessage in a room with unknown and unverified devices - * should throw an error and not send them message. This has 'Global' for - * symmertry with setGlobalBlacklistUnverifiedDevices but there is currently - * no room-level equivalent for this setting. - * - * This API is currently UNSTABLE and may change or be removed without notice. - * - * @param {boolean} value whether error on unknown devices - */ - - -Crypto.prototype.setGlobalErrorOnUnknownDevices = function (value) { - this._globalErrorOnUnknownDevices = value; -}; -/** - * @return {boolean} whether to error on unknown devices - * - * This API is currently UNSTABLE and may change or be removed without notice. - */ - - -Crypto.prototype.getGlobalErrorOnUnknownDevices = function () { - return this._globalErrorOnUnknownDevices; -}; -/** - * Upload the device keys to the homeserver. - * @return {object} A promise that will resolve when the keys are uploaded. - */ - - -Crypto.prototype.uploadDeviceKeys = function () { - const crypto = this; - const userId = crypto._userId; - const deviceId = crypto._deviceId; - const deviceKeys = { - algorithms: crypto._supportedAlgorithms, - device_id: deviceId, - keys: crypto._deviceKeys, - user_id: userId - }; - return crypto._signObject(deviceKeys).then(() => { - return crypto._baseApis.uploadKeysRequest({ - device_keys: deviceKeys - }); - }); -}; -/** - * Stores the current one_time_key count which will be handled later (in a call of - * onSyncCompleted). The count is e.g. coming from a /sync response. - * - * @param {Number} currentCount The current count of one_time_keys to be stored - */ - - -Crypto.prototype.updateOneTimeKeyCount = function (currentCount) { - if (isFinite(currentCount)) { - this._oneTimeKeyCount = currentCount; - } else { - throw new TypeError("Parameter for updateOneTimeKeyCount has to be a number"); - } -}; // check if it's time to upload one-time keys, and do so if so. - - -function _maybeUploadOneTimeKeys(crypto) { - // frequency with which to check & upload one-time keys - const uploadPeriod = 1000 * 60; // one minute - // max number of keys to upload at once - // Creating keys can be an expensive operation so we limit the - // number we generate in one go to avoid blocking the application - // for too long. - - const maxKeysPerCycle = 5; - - if (crypto._oneTimeKeyCheckInProgress) { - return; - } - - const now = Date.now(); - - if (crypto._lastOneTimeKeyCheck !== null && now - crypto._lastOneTimeKeyCheck < uploadPeriod) { - // we've done a key upload recently. - return; - } - - crypto._lastOneTimeKeyCheck = now; // We need to keep a pool of one time public keys on the server so that - // other devices can start conversations with us. But we can only store - // a finite number of private keys in the olm Account object. - // To complicate things further then can be a delay between a device - // claiming a public one time key from the server and it sending us a - // message. We need to keep the corresponding private key locally until - // we receive the message. - // But that message might never arrive leaving us stuck with duff - // private keys clogging up our local storage. - // So we need some kind of enginering compromise to balance all of - // these factors. - // Check how many keys we can store in the Account object. - - const maxOneTimeKeys = crypto._olmDevice.maxNumberOfOneTimeKeys(); // Try to keep at most half that number on the server. This leaves the - // rest of the slots free to hold keys that have been claimed from the - // server but we haven't recevied a message for. - // If we run out of slots when generating new keys then olm will - // discard the oldest private keys first. This will eventually clean - // out stale private keys that won't receive a message. - - - const keyLimit = Math.floor(maxOneTimeKeys / 2); - - function uploadLoop(keyCount) { - if (keyLimit <= keyCount) { - // If we don't need to generate any more keys then we are done. - return Promise.resolve(); - } - - const keysThisLoop = Math.min(keyLimit - keyCount, maxKeysPerCycle); // Ask olm to generate new one time keys, then upload them to synapse. - - return crypto._olmDevice.generateOneTimeKeys(keysThisLoop).then(() => { - return _uploadOneTimeKeys(crypto); - }).then(res => { - if (res.one_time_key_counts && res.one_time_key_counts.signed_curve25519) { - // if the response contains a more up to date value use this - // for the next loop - return uploadLoop(res.one_time_key_counts.signed_curve25519); - } else { - throw new Error("response for uploading keys does not contain " + "one_time_key_counts.signed_curve25519"); + if (allowPrivateKeyRequests && (userSigningChanged || userSigningExistsNotLocallyCached)) { + _logger.logger.info("Attempting to retrieve cross-signing user-signing private key"); + let signing = null; + try { + const ret = await this.crossSigningInfo.getCrossSigningKey("user_signing", newCrossSigning.getId("user_signing")); + signing = ret[1]; + _logger.logger.info("Got cross-signing user-signing private key"); + } finally { + var _signing4; + (_signing4 = signing) === null || _signing4 === void 0 || _signing4.free(); } - }); - } - - crypto._oneTimeKeyCheckInProgress = true; - Promise.resolve().then(() => { - if (crypto._oneTimeKeyCount !== undefined) { - // We already have the current one_time_key count from a /sync response. - // Use this value instead of asking the server for the current key count. - return Promise.resolve(crypto._oneTimeKeyCount); - } // ask the server how many keys we have - - - return crypto._baseApis.uploadKeysRequest({}).then(res => { - return res.one_time_key_counts.signed_curve25519 || 0; - }); - }).then(keyCount => { - // Start the uploadLoop with the current keyCount. The function checks if - // we need to upload new keys or not. - // If there are too many keys on the server then we don't need to - // create any more keys. - return uploadLoop(keyCount); - }).catch(e => { - _logger.logger.error("Error uploading one-time keys", e.stack || e); - }).finally(() => { - // reset _oneTimeKeyCount to prevent start uploading based on old data. - // it will be set again on the next /sync-response - crypto._oneTimeKeyCount = undefined; - crypto._oneTimeKeyCheckInProgress = false; - }); -} // returns a promise which resolves to the response - - -async function _uploadOneTimeKeys(crypto) { - const oneTimeKeys = await crypto._olmDevice.getOneTimeKeys(); - const oneTimeJson = {}; - const promises = []; - - for (const keyId in oneTimeKeys.curve25519) { - if (oneTimeKeys.curve25519.hasOwnProperty(keyId)) { - const k = { - key: oneTimeKeys.curve25519[keyId] + } + if (masterChanged) { + const masterKey = this.crossSigningInfo.keys.master; + await this.signObject(masterKey); + const deviceSig = masterKey.signatures[this.userId]["ed25519:" + this.deviceId]; + // Include only the _new_ device signature in the upload. + // We may have existing signatures from deleted devices, which will cause + // the entire upload to fail. + keySignatures[this.crossSigningInfo.getId()] = Object.assign({}, masterKey, { + signatures: { + [this.userId]: { + ["ed25519:" + this.deviceId]: deviceSig + } + } + }); + } + const keysToUpload = Object.keys(keySignatures); + if (keysToUpload.length) { + const upload = ({ + shouldEmit = false + }) => { + _logger.logger.info(`Starting background key sig upload for ${keysToUpload}`); + return this.baseApis.uploadKeySignatures({ + [this.userId]: keySignatures + }).then(response => { + const { + failures + } = response || {}; + _logger.logger.info(`Finished background key sig upload for ${keysToUpload}`); + if (Object.keys(failures || []).length > 0) { + if (shouldEmit) { + this.baseApis.emit(CryptoEvent.KeySignatureUploadFailure, failures, "checkOwnCrossSigningTrust", upload); + } + throw new _errors.KeySignatureUploadError("Key upload failed", { + failures + }); + } + }).catch(e => { + _logger.logger.error(`Error during background key sig upload for ${keysToUpload}`, e); + }); }; - oneTimeJson["signed_curve25519:" + keyId] = k; - promises.push(crypto._signObject(k)); + upload({ + shouldEmit: true + }); } + this.emit(CryptoEvent.UserTrustStatusChanged, userId, this.checkUserTrust(userId)); + if (masterChanged) { + this.emit(CryptoEvent.KeysChanged, {}); + await this.afterCrossSigningLocalKeyChange(); + } + + // Now we may be able to trust our key backup + await this.backupManager.checkKeyBackup(); + // FIXME: if we previously trusted the backup, should we automatically sign + // the backup with the new key (if not already signed)? } - await Promise.all(promises); - const res = await crypto._baseApis.uploadKeysRequest({ - one_time_keys: oneTimeJson - }); - await crypto._olmDevice.markKeysAsPublished(); - return res; -} -/** - * Download the keys for a list of users and stores the keys in the session - * store. - * @param {Array} userIds The users to fetch. - * @param {bool} forceDownload Always download the keys even if cached. - * - * @return {Promise} A promise which resolves to a map userId->deviceId->{@link - * module:crypto/deviceinfo|DeviceInfo}. - */ + /** + * Implementation of {@link CryptoBackend#getBackupDecryptor}. + */ + async getBackupDecryptor(backupInfo, privKey) { + if (!(privKey instanceof Uint8Array)) { + throw new Error(`getBackupDecryptor expects Uint8Array`); + } + const algorithm = await _backup.BackupManager.makeAlgorithm(backupInfo, async () => { + return privKey; + }); + // If the pubkey computed from the private data we've been given + // doesn't match the one in the auth_data, the user has entered + // a different recovery key / the wrong passphrase. + if (!(await algorithm.keyMatches(privKey))) { + return Promise.reject(new _httpApi.MatrixError({ + errcode: _client.MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY + })); + } + return new _backup.LibOlmBackupDecryptor(algorithm); + } -Crypto.prototype.downloadKeys = function (userIds, forceDownload) { - return this._deviceList.downloadKeys(userIds, forceDownload); -}; -/** - * Get the stored device keys for a user id - * - * @param {string} userId the user to list keys for. - * - * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't - * managed to get a list of devices for this user yet. - */ + /** + * Implementation of {@link CryptoBackend#importBackedUpRoomKeys}. + */ + importBackedUpRoomKeys(keys, opts = {}) { + opts.source = "backup"; + return this.importRoomKeys(keys, opts); + } + /** + * Store a set of keys as our own, trusted, cross-signing keys. + * + * @param keys - The new trusted set of keys + */ + async storeTrustedSelfKeys(keys) { + if (keys) { + this.crossSigningInfo.setKeys(keys); + } else { + this.crossSigningInfo.clearKeys(); + } + await this.cryptoStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + this.cryptoStore.storeCrossSigningKeys(txn, this.crossSigningInfo.keys); + }); + } -Crypto.prototype.getStoredDevicesForUser = function (userId) { - return this._deviceList.getStoredDevicesForUser(userId); -}; -/** - * Get the stored keys for a single device - * - * @param {string} userId - * @param {string} deviceId - * - * @return {module:crypto/deviceinfo?} device, or undefined - * if we don't know about this device - */ + /** + * Check if the master key is signed by a verified device, and if so, prompt + * the application to mark it as verified. + * + * @param userId - the user ID whose key should be checked + */ + async checkDeviceVerifications(userId) { + const shouldUpgradeCb = this.baseApis.cryptoCallbacks.shouldUpgradeDeviceVerifications; + if (!shouldUpgradeCb) { + // Upgrading skipped when callback is not present. + return; + } + _logger.logger.info(`Starting device verification upgrade for ${userId}`); + if (this.crossSigningInfo.keys.user_signing) { + const crossSigningInfo = this.deviceList.getStoredCrossSigningForUser(userId); + if (crossSigningInfo) { + const upgradeInfo = await this.checkForDeviceVerificationUpgrade(userId, crossSigningInfo); + if (upgradeInfo) { + const usersToUpgrade = await shouldUpgradeCb({ + users: { + [userId]: upgradeInfo + } + }); + if (usersToUpgrade.includes(userId)) { + await this.baseApis.setDeviceVerified(userId, crossSigningInfo.getId()); + } + } + } + } + _logger.logger.info(`Finished device verification upgrade for ${userId}`); + } + /** + */ + enableLazyLoading() { + this.lazyLoadMembers = true; + } -Crypto.prototype.getStoredDevice = function (userId, deviceId) { - return this._deviceList.getStoredDevice(userId, deviceId); -}; -/** - * Save the device list, if necessary - * - * @param {integer} delay Time in ms before which the save actually happens. - * By default, the save is delayed for a short period in order to batch - * multiple writes, but this behaviour can be disabled by passing 0. - * - * @return {Promise} true if the data was saved, false if - * it was not (eg. because no changes were pending). The promise - * will only resolve once the data is saved, so may take some time - * to resolve. - */ + /** + * Tell the crypto module to register for MatrixClient events which it needs to + * listen for + * + * @param eventEmitter - event source where we can register + * for event notifications + */ + registerEventHandlers(eventEmitter) { + eventEmitter.on(_roomMember.RoomMemberEvent.Membership, this.onMembership); + eventEmitter.on(_client.ClientEvent.ToDeviceEvent, this.onToDeviceEvent); + eventEmitter.on(_room.RoomEvent.Timeline, this.onTimelineEvent); + eventEmitter.on(_event2.MatrixEventEvent.Decrypted, this.onTimelineEvent); + } + /** + * @deprecated this does nothing and will be removed in a future version + */ + start() { + _logger.logger.warn("MatrixClient.crypto.start() is deprecated"); + } -Crypto.prototype.saveDeviceList = function (delay) { - return this._deviceList.saveIfDirty(delay); -}; -/** - * Update the blocked/verified state of the given device - * - * @param {string} userId owner of the device - * @param {string} deviceId unique identifier for the device or user's - * cross-signing public key ID. - * - * @param {?boolean} verified whether to mark the device as verified. Null to - * leave unchanged. - * - * @param {?boolean} blocked whether to mark the device as blocked. Null to - * leave unchanged. - * - * @param {?boolean} known whether to mark that the user has been made aware of - * the existence of this device. Null to leave unchanged - * - * @return {Promise} updated DeviceInfo - */ + /** Stop background processes related to crypto */ + stop() { + this.outgoingRoomKeyRequestManager.stop(); + this.deviceList.stop(); + this.dehydrationManager.stop(); + this.backupManager.stop(); + } + /** + * Get the Ed25519 key for this device + * + * @returns base64-encoded ed25519 key. + * + * @deprecated Use {@link CryptoApi#getOwnDeviceKeys}. + */ + getDeviceEd25519Key() { + return this.olmDevice.deviceEd25519Key; + } -Crypto.prototype.setDeviceVerification = async function (userId, deviceId, verified, blocked, known) { - // get rid of any `undefined`s here so we can just check - // for null rather than null or undefined - if (verified === undefined) verified = null; - if (blocked === undefined) blocked = null; - if (known === undefined) known = null; // Check if the 'device' is actually a cross signing key - // The js-sdk's verification treats cross-signing keys as devices - // and so uses this method to mark them verified. + /** + * Get the Curve25519 key for this device + * + * @returns base64-encoded curve25519 key. + * + * @deprecated Use {@link CryptoApi#getOwnDeviceKeys} + */ + getDeviceCurve25519Key() { + return this.olmDevice.deviceCurve25519Key; + } - const xsk = this._deviceList.getStoredCrossSigningForUser(userId); + /** + * Implementation of {@link CryptoApi#getOwnDeviceKeys}. + */ + async getOwnDeviceKeys() { + if (!this.olmDevice.deviceCurve25519Key) { + throw new Error("Curve25519 key not yet created"); + } + if (!this.olmDevice.deviceEd25519Key) { + throw new Error("Ed25519 key not yet created"); + } + return { + ed25519: this.olmDevice.deviceEd25519Key, + curve25519: this.olmDevice.deviceCurve25519Key + }; + } - if (xsk && xsk.getId() === deviceId) { - if (blocked !== null || known !== null) { - throw new Error("Cannot set blocked or known for a cross-signing key"); + /** + * Set the global override for whether the client should ever send encrypted + * messages to unverified devices. This provides the default for rooms which + * do not specify a value. + * + * @param value - whether to blacklist all unverified devices by default + * + * @deprecated Set {@link Crypto.CryptoApi#globalBlacklistUnverifiedDevices | CryptoApi.globalBlacklistUnverifiedDevices} directly. + */ + setGlobalBlacklistUnverifiedDevices(value) { + this.globalBlacklistUnverifiedDevices = value; + } + + /** + * @returns whether to blacklist all unverified devices by default + * + * @deprecated Reference {@link Crypto.CryptoApi#globalBlacklistUnverifiedDevices | CryptoApi.globalBlacklistUnverifiedDevices} directly. + */ + getGlobalBlacklistUnverifiedDevices() { + return this.globalBlacklistUnverifiedDevices; + } + + /** + * Upload the device keys to the homeserver. + * @returns A promise that will resolve when the keys are uploaded. + */ + uploadDeviceKeys() { + const deviceKeys = { + algorithms: this.supportedAlgorithms, + device_id: this.deviceId, + keys: this.deviceKeys, + user_id: this.userId + }; + return this.signObject(deviceKeys).then(() => { + return this.baseApis.uploadKeysRequest({ + device_keys: deviceKeys + }); + }); + } + getNeedsNewFallback() { + return !!this.needsNewFallback; + } + + // check if it's time to upload one-time keys, and do so if so. + maybeUploadOneTimeKeys() { + // frequency with which to check & upload one-time keys + const uploadPeriod = 1000 * 60; // one minute + + // max number of keys to upload at once + // Creating keys can be an expensive operation so we limit the + // number we generate in one go to avoid blocking the application + // for too long. + const maxKeysPerCycle = 5; + if (this.oneTimeKeyCheckInProgress) { + return; + } + const now = Date.now(); + if (this.lastOneTimeKeyCheck !== null && now - this.lastOneTimeKeyCheck < uploadPeriod) { + // we've done a key upload recently. + return; + } + this.lastOneTimeKeyCheck = now; + + // We need to keep a pool of one time public keys on the server so that + // other devices can start conversations with us. But we can only store + // a finite number of private keys in the olm Account object. + // To complicate things further then can be a delay between a device + // claiming a public one time key from the server and it sending us a + // message. We need to keep the corresponding private key locally until + // we receive the message. + // But that message might never arrive leaving us stuck with duff + // private keys clogging up our local storage. + // So we need some kind of engineering compromise to balance all of + // these factors. + + // Check how many keys we can store in the Account object. + const maxOneTimeKeys = this.olmDevice.maxNumberOfOneTimeKeys(); + // Try to keep at most half that number on the server. This leaves the + // rest of the slots free to hold keys that have been claimed from the + // server but we haven't received a message for. + // If we run out of slots when generating new keys then olm will + // discard the oldest private keys first. This will eventually clean + // out stale private keys that won't receive a message. + const keyLimit = Math.floor(maxOneTimeKeys / 2); + const uploadLoop = async keyCount => { + while (keyLimit > keyCount || this.getNeedsNewFallback()) { + // Ask olm to generate new one time keys, then upload them to synapse. + if (keyLimit > keyCount) { + _logger.logger.info("generating oneTimeKeys"); + const keysThisLoop = Math.min(keyLimit - keyCount, maxKeysPerCycle); + await this.olmDevice.generateOneTimeKeys(keysThisLoop); + } + if (this.getNeedsNewFallback()) { + const fallbackKeys = await this.olmDevice.getFallbackKey(); + // if fallbackKeys is non-empty, we've already generated a + // fallback key, but it hasn't been published yet, so we + // can use that instead of generating a new one + if (!fallbackKeys.curve25519 || Object.keys(fallbackKeys.curve25519).length == 0) { + _logger.logger.info("generating fallback key"); + if (this.fallbackCleanup) { + // cancel any pending fallback cleanup because generating + // a new fallback key will already drop the old fallback + // that would have been dropped, and we don't want to kill + // the current key + clearTimeout(this.fallbackCleanup); + delete this.fallbackCleanup; + } + await this.olmDevice.generateFallbackKey(); + } + } + _logger.logger.info("calling uploadOneTimeKeys"); + const res = await this.uploadOneTimeKeys(); + if (res.one_time_key_counts && res.one_time_key_counts.signed_curve25519) { + // if the response contains a more up to date value use this + // for the next loop + keyCount = res.one_time_key_counts.signed_curve25519; + } else { + throw new Error("response for uploading keys does not contain " + "one_time_key_counts.signed_curve25519"); + } + } + }; + this.oneTimeKeyCheckInProgress = true; + Promise.resolve().then(() => { + if (this.oneTimeKeyCount !== undefined) { + // We already have the current one_time_key count from a /sync response. + // Use this value instead of asking the server for the current key count. + return Promise.resolve(this.oneTimeKeyCount); + } + // ask the server how many keys we have + return this.baseApis.uploadKeysRequest({}).then(res => { + return res.one_time_key_counts.signed_curve25519 || 0; + }); + }).then(keyCount => { + // Start the uploadLoop with the current keyCount. The function checks if + // we need to upload new keys or not. + // If there are too many keys on the server then we don't need to + // create any more keys. + return uploadLoop(keyCount); + }).catch(e => { + _logger.logger.error("Error uploading one-time keys", e.stack || e); + }).finally(() => { + // reset oneTimeKeyCount to prevent start uploading based on old data. + // it will be set again on the next /sync-response + this.oneTimeKeyCount = undefined; + this.oneTimeKeyCheckInProgress = false; + }); + } + + // returns a promise which resolves to the response + async uploadOneTimeKeys() { + const promises = []; + let fallbackJson; + if (this.getNeedsNewFallback()) { + fallbackJson = {}; + const fallbackKeys = await this.olmDevice.getFallbackKey(); + for (const [keyId, key] of Object.entries(fallbackKeys.curve25519)) { + const k = { + key, + fallback: true + }; + fallbackJson["signed_curve25519:" + keyId] = k; + promises.push(this.signObject(k)); + } + this.needsNewFallback = false; + } + const oneTimeKeys = await this.olmDevice.getOneTimeKeys(); + const oneTimeJson = {}; + for (const keyId in oneTimeKeys.curve25519) { + if (oneTimeKeys.curve25519.hasOwnProperty(keyId)) { + const k = { + key: oneTimeKeys.curve25519[keyId] + }; + oneTimeJson["signed_curve25519:" + keyId] = k; + promises.push(this.signObject(k)); + } + } + await Promise.all(promises); + const requestBody = { + one_time_keys: oneTimeJson + }; + if (fallbackJson) { + requestBody["org.matrix.msc2732.fallback_keys"] = fallbackJson; + requestBody["fallback_keys"] = fallbackJson; + } + const res = await this.baseApis.uploadKeysRequest(requestBody); + if (fallbackJson) { + this.fallbackCleanup = setTimeout(() => { + delete this.fallbackCleanup; + this.olmDevice.forgetOldFallbackKey(); + }, 60 * 60 * 1000); + } + await this.olmDevice.markKeysAsPublished(); + return res; + } + + /** + * Download the keys for a list of users and stores the keys in the session + * store. + * @param userIds - The users to fetch. + * @param forceDownload - Always download the keys even if cached. + * + * @returns A promise which resolves to a map `userId->deviceId->{@link DeviceInfo}`. + */ + downloadKeys(userIds, forceDownload) { + return this.deviceList.downloadKeys(userIds, !!forceDownload); + } + + /** + * Get the stored device keys for a user id + * + * @param userId - the user to list keys for. + * + * @returns list of devices, or null if we haven't + * managed to get a list of devices for this user yet. + */ + getStoredDevicesForUser(userId) { + return this.deviceList.getStoredDevicesForUser(userId); + } + + /** + * Get the device information for the given list of users. + * + * @param userIds - The users to fetch. + * @param downloadUncached - If true, download the device list for users whose device list we are not + * currently tracking. Defaults to false, in which case such users will not appear at all in the result map. + * + * @returns A map `{@link DeviceMap}`. + */ + async getUserDeviceInfo(userIds, downloadUncached = false) { + const deviceMapByUserId = new Map(); + // Keep the users without device to download theirs keys + const usersWithoutDeviceInfo = []; + for (const userId of userIds) { + const deviceInfos = await this.getStoredDevicesForUser(userId); + // If there are device infos for a userId, we transform it into a map + // Else, the keys will be downloaded after + if (deviceInfos) { + const deviceMap = new Map( + // Convert DeviceInfo to Device + deviceInfos.map(deviceInfo => [deviceInfo.deviceId, (0, _deviceConverter.deviceInfoToDevice)(deviceInfo, userId)])); + deviceMapByUserId.set(userId, deviceMap); + } else { + usersWithoutDeviceInfo.push(userId); + } } - if (!verified) { - throw new Error("Cannot set a cross-signing key as unverified"); + // Download device info for users without device infos + if (downloadUncached && usersWithoutDeviceInfo.length > 0) { + const newDeviceInfoMap = await this.downloadKeys(usersWithoutDeviceInfo); + newDeviceInfoMap.forEach((deviceInfoMap, userId) => { + const deviceMap = new Map(); + // Convert DeviceInfo to Device + deviceInfoMap.forEach((deviceInfo, deviceId) => deviceMap.set(deviceId, (0, _deviceConverter.deviceInfoToDevice)(deviceInfo, userId))); + + // Put the new device infos into the returned map + deviceMapByUserId.set(userId, deviceMap); + }); + } + return deviceMapByUserId; + } + + /** + * Get the stored keys for a single device + * + * + * @returns device, or undefined + * if we don't know about this device + */ + getStoredDevice(userId, deviceId) { + return this.deviceList.getStoredDevice(userId, deviceId); + } + + /** + * Save the device list, if necessary + * + * @param delay - Time in ms before which the save actually happens. + * By default, the save is delayed for a short period in order to batch + * multiple writes, but this behaviour can be disabled by passing 0. + * + * @returns true if the data was saved, false if + * it was not (eg. because no changes were pending). The promise + * will only resolve once the data is saved, so may take some time + * to resolve. + */ + saveDeviceList(delay) { + return this.deviceList.saveIfDirty(delay); + } + + /** + * Mark the given device as locally verified. + * + * Implementation of {@link CryptoApi#setDeviceVerified}. + */ + async setDeviceVerified(userId, deviceId, verified = true) { + await this.setDeviceVerification(userId, deviceId, verified); + } + + /** + * Blindly cross-sign one of our other devices. + * + * Implementation of {@link CryptoApi#crossSignDevice}. + */ + async crossSignDevice(deviceId) { + await this.setDeviceVerified(this.userId, deviceId, true); + } + + /** + * Update the blocked/verified state of the given device + * + * @param userId - owner of the device + * @param deviceId - unique identifier for the device or user's + * cross-signing public key ID. + * + * @param verified - whether to mark the device as verified. Null to + * leave unchanged. + * + * @param blocked - whether to mark the device as blocked. Null to + * leave unchanged. + * + * @param known - whether to mark that the user has been made aware of + * the existence of this device. Null to leave unchanged + * + * @param keys - The list of keys that was present + * during the device verification. This will be double checked with the list + * of keys the given device has currently. + * + * @returns updated DeviceInfo + */ + async setDeviceVerification(userId, deviceId, verified = null, blocked = null, known = null, keys) { + // Check if the 'device' is actually a cross signing key + // The js-sdk's verification treats cross-signing keys as devices + // and so uses this method to mark them verified. + const xsk = this.deviceList.getStoredCrossSigningForUser(userId); + if ((xsk === null || xsk === void 0 ? void 0 : xsk.getId()) === deviceId) { + if (blocked !== null || known !== null) { + throw new Error("Cannot set blocked or known for a cross-signing key"); + } + if (!verified) { + throw new Error("Cannot set a cross-signing key as unverified"); + } + const gotKeyId = keys ? Object.values(keys)[0] : null; + if (keys && (Object.values(keys).length !== 1 || gotKeyId !== xsk.getId())) { + throw new Error(`Key did not match expected value: expected ${xsk.getId()}, got ${gotKeyId}`); + } + if (!this.crossSigningInfo.getId() && userId === this.crossSigningInfo.userId) { + this.storeTrustedSelfKeys(xsk.keys); + // This will cause our own user trust to change, so emit the event + this.emit(CryptoEvent.UserTrustStatusChanged, this.userId, this.checkUserTrust(userId)); + } + + // Now sign the master key with our user signing key (unless it's ourself) + if (userId !== this.userId) { + _logger.logger.info("Master key " + xsk.getId() + " for " + userId + " marked verified. Signing..."); + const device = await this.crossSigningInfo.signUser(xsk); + if (device) { + const upload = async ({ + shouldEmit = false + }) => { + _logger.logger.info("Uploading signature for " + userId + "..."); + const response = await this.baseApis.uploadKeySignatures({ + [userId]: { + [deviceId]: device + } + }); + const { + failures + } = response || {}; + if (Object.keys(failures || []).length > 0) { + if (shouldEmit) { + this.baseApis.emit(CryptoEvent.KeySignatureUploadFailure, failures, "setDeviceVerification", upload); + } + /* Throwing here causes the process to be cancelled and the other + * user to be notified */ + throw new _errors.KeySignatureUploadError("Key upload failed", { + failures + }); + } + }; + await upload({ + shouldEmit: true + }); + + // This will emit events when it comes back down the sync + // (we could do local echo to speed things up) + } + return device; + } else { + return xsk; + } + } + const devices = this.deviceList.getRawStoredDevicesForUser(userId); + if (!devices || !devices[deviceId]) { + throw new Error("Unknown device " + userId + ":" + deviceId); + } + const dev = devices[deviceId]; + let verificationStatus = dev.verified; + if (verified) { + if (keys) { + for (const [keyId, key] of Object.entries(keys)) { + if (dev.keys[keyId] !== key) { + throw new Error(`Key did not match expected value: expected ${key}, got ${dev.keys[keyId]}`); + } + } + } + verificationStatus = DeviceVerification.VERIFIED; + } else if (verified !== null && verificationStatus == DeviceVerification.VERIFIED) { + verificationStatus = DeviceVerification.UNVERIFIED; + } + if (blocked) { + verificationStatus = DeviceVerification.BLOCKED; + } else if (blocked !== null && verificationStatus == DeviceVerification.BLOCKED) { + verificationStatus = DeviceVerification.UNVERIFIED; + } + let knownStatus = dev.known; + if (known !== null) { + knownStatus = known; + } + if (dev.verified !== verificationStatus || dev.known !== knownStatus) { + dev.verified = verificationStatus; + dev.known = knownStatus; + this.deviceList.storeDevicesForUser(userId, devices); + this.deviceList.saveIfDirty(); } - if (!this._crossSigningInfo.getId() && userId === this._crossSigningInfo.userId) { - this._storeTrustedSelfKeys(xsk.keys); // This will cause our own user trust to change, so emit the event - - - this.emit("userTrustStatusChanged", this._userId, this.checkUserTrust(userId)); - } // Now sign the master key with our user signing key (unless it's ourself) - - - if (userId !== this._userId) { - _logger.logger.info("Master key " + xsk.getId() + " for " + userId + " marked verified. Signing..."); - - const device = await this._crossSigningInfo.signUser(xsk); + // do cross-signing + if (verified && userId === this.userId) { + _logger.logger.info("Own device " + deviceId + " marked verified: signing"); + // Signing only needed if other device not already signed + let device; + const deviceTrust = this.checkDeviceTrust(userId, deviceId); + if (deviceTrust.isCrossSigningVerified()) { + _logger.logger.log(`Own device ${deviceId} already cross-signing verified`); + } else { + device = await this.crossSigningInfo.signDevice(userId, _deviceinfo.DeviceInfo.fromStorage(dev, deviceId)); + } if (device) { const upload = async ({ - shouldEmit + shouldEmit = false }) => { - _logger.logger.info("Uploading signature for " + userId + "..."); - - const response = await this._baseApis.uploadKeySignatures({ + _logger.logger.info("Uploading signature for " + deviceId); + const response = await this.baseApis.uploadKeySignatures({ [userId]: { [deviceId]: device } @@ -41520,1852 +150848,1600 @@ Crypto.prototype.setDeviceVerification = async function (userId, deviceId, verif const { failures } = response || {}; - if (Object.keys(failures || []).length > 0) { if (shouldEmit) { - this._baseApis.emit("crypto.keySignatureUploadFailure", failures, "setDeviceVerification", upload); + this.baseApis.emit(CryptoEvent.KeySignatureUploadFailure, failures, "setDeviceVerification", upload // continuation + ); } - /* Throwing here causes the process to be cancelled and the other - * user to be notified */ - - throw new _errors.KeySignatureUploadError("Key upload failed", { failures }); } }; - await upload({ shouldEmit: true - }); // This will emit events when it comes back down the sync - // (we could do local echo to speed things up) - } - - return device; - } else { - return xsk; - } - } - - const devices = this._deviceList.getRawStoredDevicesForUser(userId); - - if (!devices || !devices[deviceId]) { - throw new Error("Unknown device " + userId + ":" + deviceId); - } - - const dev = devices[deviceId]; - let verificationStatus = dev.verified; - - if (verified) { - verificationStatus = DeviceVerification.VERIFIED; - } else if (verified !== null && verificationStatus == DeviceVerification.VERIFIED) { - verificationStatus = DeviceVerification.UNVERIFIED; - } - - if (blocked) { - verificationStatus = DeviceVerification.BLOCKED; - } else if (blocked !== null && verificationStatus == DeviceVerification.BLOCKED) { - verificationStatus = DeviceVerification.UNVERIFIED; - } - - let knownStatus = dev.known; - - if (known !== null) { - knownStatus = known; - } - - if (dev.verified !== verificationStatus || dev.known !== knownStatus) { - dev.verified = verificationStatus; - dev.known = knownStatus; - - this._deviceList.storeDevicesForUser(userId, devices); - - this._deviceList.saveIfDirty(); - } // do cross-signing - - - if (verified && userId === this._userId) { - _logger.logger.info("Own device " + deviceId + " marked verified: signing"); // Signing only needed if other device not already signed - - - let device; - const deviceTrust = this.checkDeviceTrust(userId, deviceId); - - if (deviceTrust.isCrossSigningVerified()) { - _logger.logger.log(`Own device ${deviceId} already cross-signing verified`); - } else { - device = await this._crossSigningInfo.signDevice(userId, _deviceinfo.DeviceInfo.fromStorage(dev, deviceId)); - } - - if (device) { - const upload = async ({ - shouldEmit - }) => { - _logger.logger.info("Uploading signature for " + deviceId); - - const response = await this._baseApis.uploadKeySignatures({ - [userId]: { - [deviceId]: device - } }); - const { - failures - } = response || {}; - - if (Object.keys(failures || []).length > 0) { - if (shouldEmit) { - this._baseApis.emit("crypto.keySignatureUploadFailure", failures, "setDeviceVerification", upload // continuation - ); - } - - throw new _errors.KeySignatureUploadError("Key upload failed", { - failures - }); - } - }; - - await upload({ - shouldEmit: true - }); // XXX: we'll need to wait for the device list to be updated + // XXX: we'll need to wait for the device list to be updated + } } + const deviceObj = _deviceinfo.DeviceInfo.fromStorage(dev, deviceId); + this.emit(CryptoEvent.DeviceVerificationChanged, userId, deviceId, deviceObj); + return deviceObj; } - - const deviceObj = _deviceinfo.DeviceInfo.fromStorage(dev, deviceId); - - this.emit("deviceVerificationChanged", userId, deviceId, deviceObj); - return deviceObj; -}; - -Crypto.prototype.findVerificationRequestDMInProgress = function (roomId) { - return this._inRoomVerificationRequests.findRequestInProgress(roomId); -}; - -Crypto.prototype.getVerificationRequestsToDeviceInProgress = function (userId) { - return this._toDeviceVerificationRequests.getRequestsInProgress(userId); -}; - -Crypto.prototype.requestVerificationDM = function (userId, roomId) { - const existingRequest = this._inRoomVerificationRequests.findRequestInProgress(roomId); - - if (existingRequest) { - return Promise.resolve(existingRequest); + findVerificationRequestDMInProgress(roomId, userId) { + return this.inRoomVerificationRequests.findRequestInProgress(roomId, userId); } - - const channel = new _InRoomChannel.InRoomChannel(this._baseApis, roomId, userId); - return this._requestVerificationWithChannel(userId, channel, this._inRoomVerificationRequests); -}; - -Crypto.prototype.requestVerification = function (userId, devices) { - if (!devices) { - devices = Object.keys(this._deviceList.getRawStoredDevicesForUser(userId)); + getVerificationRequestsToDeviceInProgress(userId) { + return this.toDeviceVerificationRequests.getRequestsInProgress(userId); } - - const existingRequest = this._toDeviceVerificationRequests.findRequestInProgress(userId, devices); - - if (existingRequest) { - return Promise.resolve(existingRequest); - } - - const channel = new _ToDeviceChannel.ToDeviceChannel(this._baseApis, userId, devices, _ToDeviceChannel.ToDeviceChannel.makeTransactionId()); - return this._requestVerificationWithChannel(userId, channel, this._toDeviceVerificationRequests); -}; - -Crypto.prototype._requestVerificationWithChannel = async function (userId, channel, requestsMap) { - let request = new _VerificationRequest.VerificationRequest(channel, this._verificationMethods, this._baseApis); // if transaction id is already known, add request - - if (channel.transactionId) { - requestsMap.setRequestByChannel(channel, request); - } - - await request.sendRequest(); // don't replace the request created by a racing remote echo - - const racingRequest = requestsMap.getRequestByChannel(channel); - - if (racingRequest) { - request = racingRequest; - } else { - _logger.logger.log(`Crypto: adding new request to ` + `requestsByTxnId with id ${channel.transactionId} ${channel.roomId}`); - - requestsMap.setRequestByChannel(channel, request); - } - - return request; -}; - -Crypto.prototype.beginKeyVerification = function (method, userId, deviceId, transactionId = null) { - let request; - - if (transactionId) { - request = this._toDeviceVerificationRequests.getRequestBySenderAndTxnId(userId, transactionId); - - if (!request) { - throw new Error(`No request found for user ${userId} with ` + `transactionId ${transactionId}`); + requestVerificationDM(userId, roomId) { + const existingRequest = this.inRoomVerificationRequests.findRequestInProgress(roomId); + if (existingRequest) { + return Promise.resolve(existingRequest); } - } else { - transactionId = _ToDeviceChannel.ToDeviceChannel.makeTransactionId(); - const channel = new _ToDeviceChannel.ToDeviceChannel(this._baseApis, userId, [deviceId], transactionId, deviceId); - request = new _VerificationRequest.VerificationRequest(channel, this._verificationMethods, this._baseApis); - - this._toDeviceVerificationRequests.setRequestBySenderAndTxnId(userId, transactionId, request); + const channel = new _InRoomChannel.InRoomChannel(this.baseApis, roomId, userId); + return this.requestVerificationWithChannel(userId, channel, this.inRoomVerificationRequests); } - return request.beginKeyVerification(method, { - userId, - deviceId - }); -}; - -Crypto.prototype.legacyDeviceVerification = async function (userId, deviceId, method) { - const transactionId = _ToDeviceChannel.ToDeviceChannel.makeTransactionId(); - - const channel = new _ToDeviceChannel.ToDeviceChannel(this._baseApis, userId, [deviceId], transactionId, deviceId); - const request = new _VerificationRequest.VerificationRequest(channel, this._verificationMethods, this._baseApis); - - this._toDeviceVerificationRequests.setRequestBySenderAndTxnId(userId, transactionId, request); - - const verifier = request.beginKeyVerification(method, { - userId, - deviceId - }); // either reject by an error from verify() while sending .start - // or resolve when the request receives the - // local (fake remote) echo for sending the .start event - - await Promise.race([verifier.verify(), request.waitFor(r => r.started)]); - return request; -}; -/** - * Get information on the active olm sessions with a user - *

- * Returns a map from device id to an object with keys 'deviceIdKey' (the - * device's curve25519 identity key) and 'sessions' (an array of objects in the - * same format as that returned by - * {@link module:crypto/OlmDevice#getSessionInfoForDevice}). - *

- * This method is provided for debugging purposes. - * - * @param {string} userId id of user to inspect - * - * @return {Promise>} - */ - - -Crypto.prototype.getOlmSessionsForUser = async function (userId) { - const devices = this.getStoredDevicesForUser(userId) || []; - const result = {}; - - for (let j = 0; j < devices.length; ++j) { - const device = devices[j]; - const deviceKey = device.getIdentityKey(); - const sessions = await this._olmDevice.getSessionInfoForDevice(deviceKey); - result[device.deviceId] = { - deviceIdKey: deviceKey, - sessions: sessions - }; - } - - return result; -}; -/** - * Get the device which sent an event - * - * @param {module:models/event.MatrixEvent} event event to be checked - * - * @return {module:crypto/deviceinfo?} - */ - - -Crypto.prototype.getEventSenderDeviceInfo = function (event) { - const senderKey = event.getSenderKey(); - const algorithm = event.getWireContent().algorithm; - - if (!senderKey || !algorithm) { - return null; - } - - const forwardingChain = event.getForwardingCurve25519KeyChain(); - - if (forwardingChain.length > 0) { - // we got the key this event from somewhere else - // TODO: check if we can trust the forwarders. - return null; - } - - if (event.isKeySourceUntrusted()) { - // we got the key for this event from a source that we consider untrusted - return null; - } // senderKey is the Curve25519 identity key of the device which the event - // was sent from. In the case of Megolm, it's actually the Curve25519 - // identity key of the device which set up the Megolm session. - - - const device = this._deviceList.getDeviceByIdentityKey(algorithm, senderKey); - - if (device === null) { - // we haven't downloaded the details of this device yet. - return null; - } // so far so good, but now we need to check that the sender of this event - // hadn't advertised someone else's Curve25519 key as their own. We do that - // by checking the Ed25519 claimed by the event (or, in the case of megolm, - // the event which set up the megolm session), to check that it matches the - // fingerprint of the purported sending device. - // - // (see https://github.com/vector-im/vector-web/issues/2215) - - - const claimedKey = event.getClaimedEd25519Key(); - - if (!claimedKey) { - _logger.logger.warn("Event " + event.getId() + " claims no ed25519 key: " + "cannot verify sending device"); - - return null; - } - - if (claimedKey !== device.getFingerprint()) { - _logger.logger.warn("Event " + event.getId() + " claims ed25519 key " + claimedKey + "but sender device has key " + device.getFingerprint()); - - return null; - } - - return device; -}; -/** - * Get information about the encryption of an event - * - * @param {module:models/event.MatrixEvent} event event to be checked - * - * @return {object} An object with the fields: - * - encrypted: whether the event is encrypted (if not encrypted, some of the - * other properties may not be set) - * - senderKey: the sender's key - * - algorithm: the algorithm used to encrypt the event - * - authenticated: whether we can be sure that the owner of the senderKey - * sent the event - * - sender: the sender's device information, if available - * - mismatchedSender: if the event's ed25519 and curve25519 keys don't match - * (only meaningful if `sender` is set) - */ - - -Crypto.prototype.getEventEncryptionInfo = function (event) { - const ret = {}; - ret.senderKey = event.getSenderKey(); - ret.algorithm = event.getWireContent().algorithm; - - if (!ret.senderKey || !ret.algorithm) { - ret.encrypted = false; - return ret; - } - - ret.encrypted = true; - const forwardingChain = event.getForwardingCurve25519KeyChain(); - - if (forwardingChain.length > 0 || event.isKeySourceUntrusted()) { - // we got the key this event from somewhere else - // TODO: check if we can trust the forwarders. - ret.authenticated = false; - } else { - ret.authenticated = true; - } // senderKey is the Curve25519 identity key of the device which the event - // was sent from. In the case of Megolm, it's actually the Curve25519 - // identity key of the device which set up the Megolm session. - - - ret.sender = this._deviceList.getDeviceByIdentityKey(ret.algorithm, ret.senderKey); // so far so good, but now we need to check that the sender of this event - // hadn't advertised someone else's Curve25519 key as their own. We do that - // by checking the Ed25519 claimed by the event (or, in the case of megolm, - // the event which set up the megolm session), to check that it matches the - // fingerprint of the purported sending device. - // - // (see https://github.com/vector-im/vector-web/issues/2215) - - const claimedKey = event.getClaimedEd25519Key(); - - if (!claimedKey) { - _logger.logger.warn("Event " + event.getId() + " claims no ed25519 key: " + "cannot verify sending device"); - - ret.mismatchedSender = true; - } - - if (ret.sender && claimedKey !== ret.sender.getFingerprint()) { - _logger.logger.warn("Event " + event.getId() + " claims ed25519 key " + claimedKey + "but sender device has key " + ret.sender.getFingerprint()); - - ret.mismatchedSender = true; - } - - return ret; -}; -/** - * Forces the current outbound group session to be discarded such - * that another one will be created next time an event is sent. - * - * @param {string} roomId The ID of the room to discard the session for - * - * This should not normally be necessary. - */ - - -Crypto.prototype.forceDiscardSession = function (roomId) { - const alg = this._roomEncryptors[roomId]; - if (alg === undefined) throw new Error("Room not encrypted"); - - if (alg.forceDiscardSession === undefined) { - throw new Error("Room encryption algorithm doesn't support session discarding"); - } - - alg.forceDiscardSession(); -}; -/** - * Configure a room to use encryption (ie, save a flag in the cryptoStore). - * - * @param {string} roomId The room ID to enable encryption in. - * - * @param {object} config The encryption config for the room. - * - * @param {boolean=} inhibitDeviceQuery true to suppress device list query for - * users in the room (for now). In case lazy loading is enabled, - * the device query is always inhibited as the members are not tracked. - */ - - -Crypto.prototype.setRoomEncryption = async function (roomId, config, inhibitDeviceQuery) { - // ignore crypto events with no algorithm defined - // This will happen if a crypto event is redacted before we fetch the room state - // It would otherwise just throw later as an unknown algorithm would, but we may - // as well catch this here - if (!config.algorithm) { - _logger.logger.log("Ignoring setRoomEncryption with no algorithm"); - - return; - } // if state is being replayed from storage, we might already have a configuration - // for this room as they are persisted as well. - // We just need to make sure the algorithm is initialized in this case. - // However, if the new config is different, - // we should bail out as room encryption can't be changed once set. - - - const existingConfig = this._roomList.getRoomEncryption(roomId); - - if (existingConfig) { - if (JSON.stringify(existingConfig) != JSON.stringify(config)) { - _logger.logger.error("Ignoring m.room.encryption event which requests " + "a change of config in " + roomId); - - return; + /** @deprecated Use `requestOwnUserVerificationToDevice` or `requestDeviceVerification` */ + requestVerification(userId, devices) { + if (!devices) { + devices = Object.keys(this.deviceList.getRawStoredDevicesForUser(userId)); } - } // if we already have encryption in this room, we should ignore this event, - // as it would reset the encryption algorithm. - // This is at least expected to be called twice, as sync calls onCryptoEvent - // for both the timeline and state sections in the /sync response, - // the encryption event would appear in both. - // If it's called more than twice though, - // it signals a bug on client or server. - - - const existingAlg = this._roomEncryptors[roomId]; - - if (existingAlg) { - return; - } // _roomList.getRoomEncryption will not race with _roomList.setRoomEncryption - // because it first stores in memory. We should await the promise only - // after all the in-memory state (_roomEncryptors and _roomList) has been updated - // to avoid races when calling this method multiple times. Hence keep a hold of the promise. - - - let storeConfigPromise = null; - - if (!existingConfig) { - storeConfigPromise = this._roomList.setRoomEncryption(roomId, config); - } - - const AlgClass = algorithms.ENCRYPTION_CLASSES[config.algorithm]; - - if (!AlgClass) { - throw new Error("Unable to encrypt with " + config.algorithm); - } - - const alg = new AlgClass({ - userId: this._userId, - deviceId: this._deviceId, - crypto: this, - olmDevice: this._olmDevice, - baseApis: this._baseApis, - roomId: roomId, - config: config - }); - this._roomEncryptors[roomId] = alg; - - if (storeConfigPromise) { - await storeConfigPromise; - } - - if (!this._lazyLoadMembers) { - _logger.logger.log("Enabling encryption in " + roomId + "; " + "starting to track device lists for all users therein"); - - await this.trackRoomDevices(roomId); // TODO: this flag is only not used from MatrixClient::setRoomEncryption - // which is never used (inside Element at least) - // but didn't want to remove it as it technically would - // be a breaking change. - - if (!this.inhibitDeviceQuery) { - this._deviceList.refreshOutdatedDeviceLists(); + const existingRequest = this.toDeviceVerificationRequests.findRequestInProgress(userId, devices); + if (existingRequest) { + return Promise.resolve(existingRequest); } - } else { - _logger.logger.log("Enabling encryption in " + roomId); + const channel = new _ToDeviceChannel.ToDeviceChannel(this.baseApis, userId, devices, _ToDeviceChannel.ToDeviceChannel.makeTransactionId()); + return this.requestVerificationWithChannel(userId, channel, this.toDeviceVerificationRequests); } -}; -/** - * Make sure we are tracking the device lists for all users in this room. - * - * @param {string} roomId The room ID to start tracking devices in. - * @returns {Promise} when all devices for the room have been fetched and marked to track - */ - - -Crypto.prototype.trackRoomDevices = function (roomId) { - const trackMembers = async () => { - // not an encrypted room - if (!this._roomEncryptors[roomId]) { - return; + requestOwnUserVerification() { + return this.requestVerification(this.userId); + } + requestDeviceVerification(userId, deviceId) { + return this.requestVerification(userId, [deviceId]); + } + async requestVerificationWithChannel(userId, channel, requestsMap) { + let request = new _VerificationRequest.VerificationRequest(channel, this.verificationMethods, this.baseApis); + // if transaction id is already known, add request + if (channel.transactionId) { + requestsMap.setRequestByChannel(channel, request); } - - const room = this._clientStore.getRoom(roomId); - - if (!room) { - throw new Error(`Unable to start tracking devices in unknown room ${roomId}`); + await request.sendRequest(); + // don't replace the request created by a racing remote echo + const racingRequest = requestsMap.getRequestByChannel(channel); + if (racingRequest) { + request = racingRequest; + } else { + _logger.logger.log(`Crypto: adding new request to ` + `requestsByTxnId with id ${channel.transactionId} ${channel.roomId}`); + requestsMap.setRequestByChannel(channel, request); } - - _logger.logger.log(`Starting to track devices for room ${roomId} ...`); - - const members = await room.getEncryptionTargetMembers(); - members.forEach(m => { - this._deviceList.startTrackingDeviceList(m.userId); + return request; + } + beginKeyVerification(method, userId, deviceId, transactionId = null) { + let request; + if (transactionId) { + request = this.toDeviceVerificationRequests.getRequestBySenderAndTxnId(userId, transactionId); + if (!request) { + throw new Error(`No request found for user ${userId} with ` + `transactionId ${transactionId}`); + } + } else { + transactionId = _ToDeviceChannel.ToDeviceChannel.makeTransactionId(); + const channel = new _ToDeviceChannel.ToDeviceChannel(this.baseApis, userId, [deviceId], transactionId, deviceId); + request = new _VerificationRequest.VerificationRequest(channel, this.verificationMethods, this.baseApis); + this.toDeviceVerificationRequests.setRequestBySenderAndTxnId(userId, transactionId, request); + } + return request.beginKeyVerification(method, { + userId, + deviceId }); - }; - - let promise = this._roomDeviceTrackingState[roomId]; - - if (!promise) { - promise = trackMembers(); - this._roomDeviceTrackingState[roomId] = promise; + } + async legacyDeviceVerification(userId, deviceId, method) { + const transactionId = _ToDeviceChannel.ToDeviceChannel.makeTransactionId(); + const channel = new _ToDeviceChannel.ToDeviceChannel(this.baseApis, userId, [deviceId], transactionId, deviceId); + const request = new _VerificationRequest.VerificationRequest(channel, this.verificationMethods, this.baseApis); + this.toDeviceVerificationRequests.setRequestBySenderAndTxnId(userId, transactionId, request); + const verifier = request.beginKeyVerification(method, { + userId, + deviceId + }); + // either reject by an error from verify() while sending .start + // or resolve when the request receives the + // local (fake remote) echo for sending the .start event + await Promise.race([verifier.verify(), request.waitFor(r => r.started)]); + return request; } - return promise; -}; -/** - * @typedef {Object} module:crypto~OlmSessionResult - * @property {module:crypto/deviceinfo} device device info - * @property {string?} sessionId base64 olm session id; null if no session - * could be established - */ - -/** - * Try to make sure we have established olm sessions for all known devices for - * the given users. - * - * @param {string[]} users list of user ids - * - * @return {Promise} resolves once the sessions are complete, to - * an Object mapping from userId to deviceId to - * {@link module:crypto~OlmSessionResult} - */ - - -Crypto.prototype.ensureOlmSessionsForUsers = function (users) { - const devicesByUser = {}; - - for (let i = 0; i < users.length; ++i) { - const userId = users[i]; - devicesByUser[userId] = []; + /** + * Get information on the active olm sessions with a user + *

+ * Returns a map from device id to an object with keys 'deviceIdKey' (the + * device's curve25519 identity key) and 'sessions' (an array of objects in the + * same format as that returned by + * {@link OlmDevice#getSessionInfoForDevice}). + *

+ * This method is provided for debugging purposes. + * + * @param userId - id of user to inspect + */ + async getOlmSessionsForUser(userId) { const devices = this.getStoredDevicesForUser(userId) || []; - - for (let j = 0; j < devices.length; ++j) { - const deviceInfo = devices[j]; - const key = deviceInfo.getIdentityKey(); - - if (key == this._olmDevice.deviceCurve25519Key) { - // don't bother setting up session to ourself - continue; - } - - if (deviceInfo.verified == DeviceVerification.BLOCKED) { - // don't bother setting up sessions with blocked users - continue; - } - - devicesByUser[userId].push(deviceInfo); + const result = {}; + for (const device of devices) { + const deviceKey = device.getIdentityKey(); + const sessions = await this.olmDevice.getSessionInfoForDevice(deviceKey); + result[device.deviceId] = { + deviceIdKey: deviceKey, + sessions: sessions + }; } + return result; } - return olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser); -}; -/** - * Get a list containing all of the room keys - * - * @return {module:crypto/OlmDevice.MegolmSessionData[]} a list of session export objects - */ - - -Crypto.prototype.exportRoomKeys = async function () { - const exportedSessions = []; - await this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], txn => { - this._cryptoStore.getAllEndToEndInboundGroupSessions(txn, s => { - if (s === null) return; - - const sess = this._olmDevice.exportInboundGroupSession(s.senderKey, s.sessionId, s.sessionData); - - delete sess.first_known_index; - sess.algorithm = olmlib.MEGOLM_ALGORITHM; - exportedSessions.push(sess); - }); - }); - return exportedSessions; -}; -/** - * Import a list of room keys previously exported by exportRoomKeys - * - * @param {Object[]} keys a list of session export objects - * @param {Object} opts - * @param {Function} opts.progressCallback called with an object which has a stage param - * @return {Promise} a promise which resolves once the keys have been imported - */ - - -Crypto.prototype.importRoomKeys = function (keys, opts = {}) { - let successes = 0; - let failures = 0; - const total = keys.length; - - function updateProgress() { - opts.progressCallback({ - stage: "load_keys", - successes, - failures, - total - }); - } - - return Promise.all(keys.map(key => { - if (!key.room_id || !key.algorithm) { - _logger.logger.warn("ignoring room key entry with missing fields", key); - - failures++; - - if (opts.progressCallback) { - updateProgress(); - } - + /** + * Get the device which sent an event + * + * @param event - event to be checked + */ + getEventSenderDeviceInfo(event) { + const senderKey = event.getSenderKey(); + const algorithm = event.getWireContent().algorithm; + if (!senderKey || !algorithm) { + return null; + } + if (event.isKeySourceUntrusted()) { + // we got the key for this event from a source that we consider untrusted return null; } - const alg = this._getRoomDecryptor(key.room_id, key.algorithm); + // senderKey is the Curve25519 identity key of the device which the event + // was sent from. In the case of Megolm, it's actually the Curve25519 + // identity key of the device which set up the Megolm session. - return alg.importRoomKey(key, opts).finally(r => { - successes++; + const device = this.deviceList.getDeviceByIdentityKey(algorithm, senderKey); + if (device === null) { + // we haven't downloaded the details of this device yet. + return null; + } - if (opts.progressCallback) { - updateProgress(); - } - }); - })); -}; -/** - * Schedules sending all keys waiting to be sent to the backup, if not already - * scheduled. Retries if necessary. - * - * @param {number} maxDelay Maximum delay to wait in ms. 0 means no delay. - */ + // so far so good, but now we need to check that the sender of this event + // hadn't advertised someone else's Curve25519 key as their own. We do that + // by checking the Ed25519 claimed by the event (or, in the case of megolm, + // the event which set up the megolm session), to check that it matches the + // fingerprint of the purported sending device. + // + // (see https://github.com/vector-im/vector-web/issues/2215) + const claimedKey = event.getClaimedEd25519Key(); + if (!claimedKey) { + _logger.logger.warn("Event " + event.getId() + " claims no ed25519 key: " + "cannot verify sending device"); + return null; + } + if (claimedKey !== device.getFingerprint()) { + _logger.logger.warn("Event " + event.getId() + " claims ed25519 key " + claimedKey + " but sender device has key " + device.getFingerprint()); + return null; + } + return device; + } -Crypto.prototype.scheduleKeyBackupSend = async function (maxDelay = 10000) { - if (this._sendingBackups) return; - this._sendingBackups = true; + /** + * Get information about the encryption of an event + * + * @param event - event to be checked + * + * @returns An object with the fields: + * - encrypted: whether the event is encrypted (if not encrypted, some of the + * other properties may not be set) + * - senderKey: the sender's key + * - algorithm: the algorithm used to encrypt the event + * - authenticated: whether we can be sure that the owner of the senderKey + * sent the event + * - sender: the sender's device information, if available + * - mismatchedSender: if the event's ed25519 and curve25519 keys don't match + * (only meaningful if `sender` is set) + */ + getEventEncryptionInfo(event) { + var _event$getSenderKey, _this$deviceList$getD; + const ret = {}; + ret.senderKey = (_event$getSenderKey = event.getSenderKey()) !== null && _event$getSenderKey !== void 0 ? _event$getSenderKey : undefined; + ret.algorithm = event.getWireContent().algorithm; + if (!ret.senderKey || !ret.algorithm) { + ret.encrypted = false; + return ret; + } + ret.encrypted = true; + if (event.isKeySourceUntrusted()) { + // we got the key this event from somewhere else + // TODO: check if we can trust the forwarders. + ret.authenticated = false; + } else { + ret.authenticated = true; + } - try { - // wait between 0 and `maxDelay` seconds, to avoid backup - // requests from different clients hitting the server all at - // the same time when a new key is sent - const delay = Math.random() * maxDelay; - await (0, utils.sleep)(delay); - let numFailures = 0; // number of consecutive failures + // senderKey is the Curve25519 identity key of the device which the event + // was sent from. In the case of Megolm, it's actually the Curve25519 + // identity key of the device which set up the Megolm session. - while (1) { - if (!this.backupKey) { - return; - } + ret.sender = (_this$deviceList$getD = this.deviceList.getDeviceByIdentityKey(ret.algorithm, ret.senderKey)) !== null && _this$deviceList$getD !== void 0 ? _this$deviceList$getD : undefined; - try { - const numBackedUp = await this._backupPendingKeys(KEY_BACKUP_KEYS_PER_REQUEST); + // so far so good, but now we need to check that the sender of this event + // hadn't advertised someone else's Curve25519 key as their own. We do that + // by checking the Ed25519 claimed by the event (or, in the case of megolm, + // the event which set up the megolm session), to check that it matches the + // fingerprint of the purported sending device. + // + // (see https://github.com/vector-im/vector-web/issues/2215) - if (numBackedUp === 0) { - // no sessions left needing backup: we're done - return; - } + const claimedKey = event.getClaimedEd25519Key(); + if (!claimedKey) { + _logger.logger.warn("Event " + event.getId() + " claims no ed25519 key: " + "cannot verify sending device"); + ret.mismatchedSender = true; + } + if (ret.sender && claimedKey !== ret.sender.getFingerprint()) { + _logger.logger.warn("Event " + event.getId() + " claims ed25519 key " + claimedKey + "but sender device has key " + ret.sender.getFingerprint()); + ret.mismatchedSender = true; + } + return ret; + } - numFailures = 0; - } catch (err) { - numFailures++; + /** + * Implementation of {@link CryptoApi.getEncryptionInfoForEvent}. + */ + async getEncryptionInfoForEvent(event) { + const encryptionInfo = this.getEventEncryptionInfo(event); + if (!encryptionInfo.encrypted) { + return null; + } + const senderId = event.getSender(); + if (!senderId || encryptionInfo.mismatchedSender) { + // something definitely wrong is going on here - _logger.logger.log("Key backup request failed", err); - - if (err.data) { - if (err.data.errcode == 'M_NOT_FOUND' || err.data.errcode == 'M_WRONG_ROOM_KEYS_VERSION') { - // Re-check key backup status on error, so we can be - // sure to present the current situation when asked. - await this.checkKeyBackup(); // Backup version has changed or this backup version - // has been deleted - - this.emit("crypto.keyBackupFailed", err.data.errcode); - throw err; - } - } - } - - if (numFailures) { - // exponential backoff if we have failures - await (0, utils.sleep)(1000 * Math.pow(2, Math.min(numFailures - 1, 4))); + // previously: E2EState.Warning -> E2ePadlockUnverified -> Red/"Encrypted by an unverified session" + return { + shieldColour: _cryptoApi.EventShieldColour.RED, + shieldReason: _cryptoApi.EventShieldReason.MISMATCHED_SENDER_KEY + }; + } + const userTrust = this.checkUserTrust(senderId); + if (!userTrust.isCrossSigningVerified()) { + // If the message is unauthenticated, then display a grey + // shield, otherwise if the user isn't cross-signed then + // nothing's needed + if (!encryptionInfo.authenticated) { + // previously: E2EState.Unauthenticated -> E2ePadlockUnauthenticated -> Grey/"The authenticity of this encrypted message can't be guaranteed on this device." + return { + shieldColour: _cryptoApi.EventShieldColour.GREY, + shieldReason: _cryptoApi.EventShieldReason.AUTHENTICITY_NOT_GUARANTEED + }; + } else { + // previously: E2EState.Normal -> no icon + return { + shieldColour: _cryptoApi.EventShieldColour.NONE, + shieldReason: null + }; } } - } finally { - this._sendingBackups = false; - } -}; -/** - * Take some e2e keys waiting to be backed up and send them - * to the backup. - * - * @param {integer} limit Maximum number of keys to back up - * @returns {integer} Number of sessions backed up - */ - - -Crypto.prototype._backupPendingKeys = async function (limit) { - const sessions = await this._cryptoStore.getSessionsNeedingBackup(limit); - - if (!sessions.length) { - return 0; - } - - let remaining = await this._cryptoStore.countSessionsNeedingBackup(); - this.emit("crypto.keyBackupSessionsRemaining", remaining); - const data = {}; - - for (const session of sessions) { - const roomId = session.sessionData.room_id; - - if (data[roomId] === undefined) { - data[roomId] = { - sessions: {} + const eventSenderTrust = senderId && encryptionInfo.sender && (await this.getDeviceVerificationStatus(senderId, encryptionInfo.sender.deviceId)); + if (!eventSenderTrust) { + // previously: E2EState.Unknown -> E2ePadlockUnknown -> Grey/"Encrypted by a deleted session" + return { + shieldColour: _cryptoApi.EventShieldColour.GREY, + shieldReason: _cryptoApi.EventShieldReason.UNKNOWN_DEVICE + }; + } + if (!eventSenderTrust.isVerified()) { + // previously: E2EState.Warning -> E2ePadlockUnverified -> Red/"Encrypted by an unverified session" + return { + shieldColour: _cryptoApi.EventShieldColour.RED, + shieldReason: _cryptoApi.EventShieldReason.UNSIGNED_DEVICE + }; + } + if (!encryptionInfo.authenticated) { + // previously: E2EState.Unauthenticated -> E2ePadlockUnauthenticated -> Grey/"The authenticity of this encrypted message can't be guaranteed on this device." + return { + shieldColour: _cryptoApi.EventShieldColour.GREY, + shieldReason: _cryptoApi.EventShieldReason.AUTHENTICITY_NOT_GUARANTEED }; } - const sessionData = await this._olmDevice.exportInboundGroupSession(session.senderKey, session.sessionId, session.sessionData); - sessionData.algorithm = olmlib.MEGOLM_ALGORITHM; - delete sessionData.session_id; - delete sessionData.room_id; - const firstKnownIndex = sessionData.first_known_index; - delete sessionData.first_known_index; - const encrypted = this.backupKey.encrypt(JSON.stringify(sessionData)); - const forwardedCount = (sessionData.forwarding_curve25519_key_chain || []).length; - - const userId = this._deviceList.getUserByIdentityKey(olmlib.MEGOLM_ALGORITHM, session.senderKey); - - const device = this._deviceList.getDeviceByIdentityKey(olmlib.MEGOLM_ALGORITHM, session.senderKey); - - const verified = this._checkDeviceInfoTrust(userId, device).isVerified(); - - data[roomId]['sessions'][session.sessionId] = { - first_message_index: firstKnownIndex, - forwarded_count: forwardedCount, - is_verified: verified, - session_data: encrypted + // previously: E2EState.Verified -> no icon + return { + shieldColour: _cryptoApi.EventShieldColour.NONE, + shieldReason: null }; } - await this._baseApis.sendKeyBackup(undefined, undefined, this.backupInfo.version, { - rooms: data - }); - await this._cryptoStore.unmarkSessionsNeedingBackup(sessions); - remaining = await this._cryptoStore.countSessionsNeedingBackup(); - this.emit("crypto.keyBackupSessionsRemaining", remaining); - return sessions.length; -}; - -Crypto.prototype.backupGroupSession = async function (roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat) { - if (!this.backupInfo) { - throw new Error("Key backups are not enabled"); - } - - await this._cryptoStore.markSessionsNeedingBackup([{ - senderKey: senderKey, - sessionId: sessionId - }]); // don't wait for this to complete: it will delay so - // happens in the background - - this.scheduleKeyBackupSend(); -}; -/** - * Marks all group sessions as needing to be backed up and schedules them to - * upload in the background as soon as possible. - */ - - -Crypto.prototype.scheduleAllGroupSessionsForBackup = async function () { - await this.flagAllGroupSessionsForBackup(); // Schedule keys to upload in the background as soon as possible. - - this.scheduleKeyBackupSend(0 - /* maxDelay */ - ); -}; -/** - * Marks all group sessions as needing to be backed up without scheduling - * them to upload in the background. - * @returns {Promise} Resolves to the number of sessions now requiring a backup - * (which will be equal to the number of sessions in the store). - */ - - -Crypto.prototype.flagAllGroupSessionsForBackup = async function () { - await this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_BACKUP], txn => { - this._cryptoStore.getAllEndToEndInboundGroupSessions(txn, session => { - if (session !== null) { - this._cryptoStore.markSessionsNeedingBackup([session], txn); - } - }); - }); - const remaining = await this._cryptoStore.countSessionsNeedingBackup(); - this.emit("crypto.keyBackupSessionsRemaining", remaining); - return remaining; -}; -/** - * Counts the number of end to end session keys that are waiting to be backed up - * @returns {Promise} Resolves to the number of sessions requiring backup - */ - - -Crypto.prototype.countSessionsNeedingBackup = function () { - return this._cryptoStore.countSessionsNeedingBackup(); -}; -/** - * Perform any background tasks that can be done before a message is ready to - * send, in order to speed up sending of the message. - * - * @param {module:models/room} room the room the event is in - */ - - -Crypto.prototype.prepareToEncrypt = function (room) { - const roomId = room.roomId; - const alg = this._roomEncryptors[roomId]; - - if (alg) { - alg.prepareToEncrypt(room); - } -}; -/* eslint-disable valid-jsdoc */ -//https://github.com/eslint/eslint/issues/7307 - -/** - * Encrypt an event according to the configuration of the room. - * - * @param {module:models/event.MatrixEvent} event event to be sent - * - * @param {module:models/room} room destination room. - * - * @return {Promise?} Promise which resolves when the event has been - * encrypted, or null if nothing was needed - */ - -/* eslint-enable valid-jsdoc */ - - -Crypto.prototype.encryptEvent = async function (event, room) { - if (!room) { - throw new Error("Cannot send encrypted messages in unknown rooms"); - } - - const roomId = event.getRoomId(); - const alg = this._roomEncryptors[roomId]; - - if (!alg) { - // MatrixClient has already checked that this room should be encrypted, - // so this is an unexpected situation. - throw new Error("Room was previously configured to use encryption, but is " + "no longer. Perhaps the homeserver is hiding the " + "configuration event."); - } - - if (!this._roomDeviceTrackingState[roomId]) { - this.trackRoomDevices(roomId); - } // wait for all the room devices to be loaded - - - await this._roomDeviceTrackingState[roomId]; - let content = event.getContent(); // If event has an m.relates_to then we need - // to put this on the wrapping event instead - - const mRelatesTo = content['m.relates_to']; - - if (mRelatesTo) { - // Clone content here so we don't remove `m.relates_to` from the local-echo - content = Object.assign({}, content); - delete content['m.relates_to']; - } - - const encryptedContent = await alg.encryptMessage(room, event.getType(), content); - - if (mRelatesTo) { - encryptedContent['m.relates_to'] = mRelatesTo; - } - - event.makeEncrypted("m.room.encrypted", encryptedContent, this._olmDevice.deviceCurve25519Key, this._olmDevice.deviceEd25519Key); -}; -/** - * Decrypt a received event - * - * @param {MatrixEvent} event - * - * @return {Promise} resolves once we have - * finished decrypting. Rejects with an `algorithms.DecryptionError` if there - * is a problem decrypting the event. - */ - - -Crypto.prototype.decryptEvent = function (event) { - if (event.isRedacted()) { - return Promise.resolve({ - clearEvent: { - room_id: event.getRoomId(), - type: "m.room.message", - content: {} - } - }); - } - - const content = event.getWireContent(); - - const alg = this._getRoomDecryptor(event.getRoomId(), content.algorithm); - - return alg.decryptEvent(event); -}; -/** - * Handle the notification from /sync or /keys/changes that device lists have - * been changed. - * - * @param {Object} syncData Object containing sync tokens associated with this sync - * @param {Object} syncDeviceLists device_lists field from /sync, or response from - * /keys/changes - */ - - -Crypto.prototype.handleDeviceListChanges = async function (syncData, syncDeviceLists) { - // Initial syncs don't have device change lists. We'll either get the complete list - // of changes for the interval or will have invalidated everything in willProcessSync - if (!syncData.oldSyncToken) return; // Here, we're relying on the fact that we only ever save the sync data after - // sucessfully saving the device list data, so we're guaranteed that the device - // list store is at least as fresh as the sync token from the sync store, ie. - // any device changes received in sync tokens prior to the 'next' token here - // have been processed and are reflected in the current device list. - // If we didn't make this assumption, we'd have to use the /keys/changes API - // to get key changes between the sync token in the device list and the 'old' - // sync token used here to make sure we didn't miss any. - - await this._evalDeviceListChanges(syncDeviceLists); -}; -/** - * Send a request for some room keys, if we have not already done so - * - * @param {module:crypto~RoomKeyRequestBody} requestBody - * @param {Array<{userId: string, deviceId: string}>} recipients - * @param {boolean} resend whether to resend the key request if there is - * already one - * - * @return {Promise} a promise that resolves when the key request is queued - */ - - -Crypto.prototype.requestRoomKey = function (requestBody, recipients, resend = false) { - return this._outgoingRoomKeyRequestManager.queueRoomKeyRequest(requestBody, recipients, resend).then(() => { - if (this._sendKeyRequestsImmediately) { - this._outgoingRoomKeyRequestManager.sendQueuedRequests(); + /** + * Forces the current outbound group session to be discarded such + * that another one will be created next time an event is sent. + * + * @param roomId - The ID of the room to discard the session for + * + * This should not normally be necessary. + */ + forceDiscardSession(roomId) { + const alg = this.roomEncryptors.get(roomId); + if (alg === undefined) throw new Error("Room not encrypted"); + if (alg.forceDiscardSession === undefined) { + throw new Error("Room encryption algorithm doesn't support session discarding"); } - }).catch(e => { - // this normally means we couldn't talk to the store - _logger.logger.error('Error requesting key for event', e); - }); -}; -/** - * Cancel any earlier room key request - * - * @param {module:crypto~RoomKeyRequestBody} requestBody - * parameters to match for cancellation - */ - - -Crypto.prototype.cancelRoomKeyRequest = function (requestBody) { - this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(requestBody).catch(e => { - _logger.logger.warn("Error clearing pending room key requests", e); - }); -}; -/** - * Re-send any outgoing key requests, eg after verification - * @returns {Promise} - */ - - -Crypto.prototype.cancelAndResendAllOutgoingKeyRequests = function () { - return this._outgoingRoomKeyRequestManager.cancelAndResendAllOutgoingRequests(); -}; -/** - * handle an m.room.encryption event - * - * @param {module:models/event.MatrixEvent} event encryption event - */ - - -Crypto.prototype.onCryptoEvent = async function (event) { - const roomId = event.getRoomId(); - const content = event.getContent(); - - try { - // inhibit the device list refresh for now - it will happen once we've - // finished processing the sync, in onSyncCompleted. - await this.setRoomEncryption(roomId, content, true); - } catch (e) { - _logger.logger.error("Error configuring encryption in room " + roomId + ":", e); - } -}; -/** - * Called before the result of a sync is procesed - * - * @param {Object} syncData the data from the 'MatrixClient.sync' event - */ - - -Crypto.prototype.onSyncWillProcess = async function (syncData) { - if (!syncData.oldSyncToken) { - // If there is no old sync token, we start all our tracking from - // scratch, so mark everything as untracked. onCryptoEvent will - // be called for all e2e rooms during the processing of the sync, - // at which point we'll start tracking all the users of that room. - _logger.logger.log("Initial sync performed - resetting device tracking state"); - - this._deviceList.stopTrackingAllDeviceLists(); // we always track our own device list (for key backups etc) - - - this._deviceList.startTrackingDeviceList(this._userId); - - this._roomDeviceTrackingState = {}; + alg.forceDiscardSession(); + return Promise.resolve(); } - this._sendKeyRequestsImmediately = false; -}; -/** - * handle the completion of a /sync - * - * This is called after the processing of each successful /sync response. - * It is an opportunity to do a batch process on the information received. - * - * @param {Object} syncData the data from the 'MatrixClient.sync' event - */ - - -Crypto.prototype.onSyncCompleted = async function (syncData) { - const nextSyncToken = syncData.nextSyncToken; - - this._deviceList.setSyncToken(syncData.nextSyncToken); - - this._deviceList.saveIfDirty(); // catch up on any new devices we got told about during the sync. - - - this._deviceList.lastKnownSyncToken = nextSyncToken; // we always track our own device list (for key backups etc) - - this._deviceList.startTrackingDeviceList(this._userId); - - this._deviceList.refreshOutdatedDeviceLists(); // we don't start uploading one-time keys until we've caught up with - // to-device messages, to help us avoid throwing away one-time-keys that we - // are about to receive messages for - // (https://github.com/vector-im/element-web/issues/2782). - - - if (!syncData.catchingUp) { - _maybeUploadOneTimeKeys(this); - - this._processReceivedRoomKeyRequests(); // likewise don't start requesting keys until we've caught up - // on to_device messages, otherwise we'll request keys that we're - // just about to get. - - - this._outgoingRoomKeyRequestManager.sendQueuedRequests(); // Sync has finished so send key requests straight away. - - - this._sendKeyRequestsImmediately = true; - } -}; -/** - * Trigger the appropriate invalidations and removes for a given - * device list - * - * @param {Object} deviceLists device_lists field from /sync, or response from - * /keys/changes - */ - - -Crypto.prototype._evalDeviceListChanges = async function (deviceLists) { - if (deviceLists.changed && Array.isArray(deviceLists.changed)) { - deviceLists.changed.forEach(u => { - this._deviceList.invalidateUserDeviceList(u); - }); - } - - if (deviceLists.left && Array.isArray(deviceLists.left) && deviceLists.left.length) { - // Check we really don't share any rooms with these users - // any more: the server isn't required to give us the - // exact correct set. - const e2eUserIds = new Set(await this._getTrackedE2eUsers()); - deviceLists.left.forEach(u => { - if (!e2eUserIds.has(u)) { - this._deviceList.stopTrackingDeviceList(u); - } - }); - } -}; -/** - * Get a list of all the IDs of users we share an e2e room with - * for which we are tracking devices already - * - * @returns {string[]} List of user IDs - */ - - -Crypto.prototype._getTrackedE2eUsers = async function () { - const e2eUserIds = []; - - for (const room of this._getTrackedE2eRooms()) { - const members = await room.getEncryptionTargetMembers(); - - for (const member of members) { - e2eUserIds.push(member.userId); + /** + * Configure a room to use encryption (ie, save a flag in the cryptoStore). + * + * @param roomId - The room ID to enable encryption in. + * + * @param config - The encryption config for the room. + * + * @param inhibitDeviceQuery - true to suppress device list query for + * users in the room (for now). In case lazy loading is enabled, + * the device query is always inhibited as the members are not tracked. + * + * @deprecated It is normally incorrect to call this method directly. Encryption + * is enabled by receiving an `m.room.encryption` event (which we may have sent + * previously). + */ + async setRoomEncryption(roomId, config, inhibitDeviceQuery) { + const room = this.clientStore.getRoom(roomId); + if (!room) { + throw new Error(`Unable to enable encryption tracking devices in unknown room ${roomId}`); + } + await this.setRoomEncryptionImpl(room, config); + if (!this.lazyLoadMembers && !inhibitDeviceQuery) { + this.deviceList.refreshOutdatedDeviceLists(); } } - return e2eUserIds; -}; -/** - * Get a list of the e2e-enabled rooms we are members of, - * and for which we are already tracking the devices - * - * @returns {module:models.Room[]} - */ + /** + * Set up encryption for a room. + * + * This is called when an m.room.encryption event is received. It saves a flag + * for the room in the cryptoStore (if it wasn't already set), sets up an "encryptor" for + * the room, and enables device-list tracking for the room. + * + * It does not initiate a device list query for the room. That is normally + * done once we finish processing the sync, in onSyncCompleted. + * + * @param room - The room to enable encryption in. + * @param config - The encryption config for the room. + */ + async setRoomEncryptionImpl(room, config) { + const roomId = room.roomId; - -Crypto.prototype._getTrackedE2eRooms = function () { - return this._clientStore.getRooms().filter(room => { - // check for rooms with encryption enabled - const alg = this._roomEncryptors[room.roomId]; - - if (!alg) { - return false; + // ignore crypto events with no algorithm defined + // This will happen if a crypto event is redacted before we fetch the room state + // It would otherwise just throw later as an unknown algorithm would, but we may + // as well catch this here + if (!config.algorithm) { + _logger.logger.log("Ignoring setRoomEncryption with no algorithm"); + return; } - if (!this._roomDeviceTrackingState[room.roomId]) { - return false; - } // ignore any rooms which we have left + // if state is being replayed from storage, we might already have a configuration + // for this room as they are persisted as well. + // We just need to make sure the algorithm is initialized in this case. + // However, if the new config is different, + // we should bail out as room encryption can't be changed once set. + const existingConfig = this.roomList.getRoomEncryption(roomId); + if (existingConfig) { + if (JSON.stringify(existingConfig) != JSON.stringify(config)) { + _logger.logger.error("Ignoring m.room.encryption event which requests " + "a change of config in " + roomId); + return; + } + } + // if we already have encryption in this room, we should ignore this event, + // as it would reset the encryption algorithm. + // This is at least expected to be called twice, as sync calls onCryptoEvent + // for both the timeline and state sections in the /sync response, + // the encryption event would appear in both. + // If it's called more than twice though, + // it signals a bug on client or server. + const existingAlg = this.roomEncryptors.get(roomId); + if (existingAlg) { + return; + } + // _roomList.getRoomEncryption will not race with _roomList.setRoomEncryption + // because it first stores in memory. We should await the promise only + // after all the in-memory state (roomEncryptors and _roomList) has been updated + // to avoid races when calling this method multiple times. Hence keep a hold of the promise. + let storeConfigPromise = null; + if (!existingConfig) { + storeConfigPromise = this.roomList.setRoomEncryption(roomId, config); + } + const AlgClass = algorithms.ENCRYPTION_CLASSES.get(config.algorithm); + if (!AlgClass) { + throw new Error("Unable to encrypt with " + config.algorithm); + } + const alg = new AlgClass({ + userId: this.userId, + deviceId: this.deviceId, + crypto: this, + olmDevice: this.olmDevice, + baseApis: this.baseApis, + roomId, + config + }); + this.roomEncryptors.set(roomId, alg); + if (storeConfigPromise) { + await storeConfigPromise; + } + _logger.logger.log(`Enabling encryption in ${roomId}`); - const myMembership = room.getMyMembership(); - return myMembership === "join" || myMembership === "invite"; - }); -}; + // we don't want to force a download of the full membership list of this room, but as soon as we have that + // list we can start tracking the device list. + if (room.membersLoaded()) { + await this.trackRoomDevicesImpl(room); + } else { + // wait for the membership list to be loaded + const onState = _state => { + room.off(_roomState.RoomStateEvent.Update, onState); + if (room.membersLoaded()) { + this.trackRoomDevicesImpl(room).catch(e => { + _logger.logger.error(`Error enabling device tracking in ${roomId}`, e); + }); + } + }; + room.on(_roomState.RoomStateEvent.Update, onState); + } + } -Crypto.prototype._onToDeviceEvent = function (event) { - try { - _logger.logger.log(`received to_device ${event.getType()} from: ` + `${event.getSender()} id: ${event.getId()}`); + /** + * Make sure we are tracking the device lists for all users in this room. + * + * @param roomId - The room ID to start tracking devices in. + * @returns when all devices for the room have been fetched and marked to track + * @deprecated there's normally no need to call this function: device list tracking + * will be enabled as soon as we have the full membership list. + */ + trackRoomDevices(roomId) { + const room = this.clientStore.getRoom(roomId); + if (!room) { + throw new Error(`Unable to start tracking devices in unknown room ${roomId}`); + } + return this.trackRoomDevicesImpl(room); + } - if (event.getType() == "m.room_key" || event.getType() == "m.forwarded_room_key") { - this._onRoomKeyEvent(event); - } else if (event.getType() == "m.room_key_request") { - this._onRoomKeyRequestEvent(event); - } else if (event.getType() === "m.secret.request") { - this._secretStorage._onRequestReceived(event); - } else if (event.getType() === "m.secret.send") { - this._secretStorage._onSecretReceived(event); - } else if (event.getType() === "org.matrix.room_key.withheld") { - this._onRoomKeyWithheldEvent(event); - } else if (event.getContent().transaction_id) { - this._onKeyVerificationMessage(event); - } else if (event.getContent().msgtype === "m.bad.encrypted") { - this._onToDeviceBadEncrypted(event); - } else if (event.isBeingDecrypted()) { - // once the event has been decrypted, try again - event.once('Event.decrypted', ev => { - this._onToDeviceEvent(ev); + /** + * Make sure we are tracking the device lists for all users in this room. + * + * This is normally called when we are about to send an encrypted event, to make sure + * we have all the devices in the room; but it is also called when processing an + * m.room.encryption state event (if lazy-loading is disabled), or when members are + * loaded (if lazy-loading is enabled), to prepare the device list. + * + * @param room - Room to enable device-list tracking in + */ + trackRoomDevicesImpl(room) { + const roomId = room.roomId; + const trackMembers = async () => { + // not an encrypted room + if (!this.roomEncryptors.has(roomId)) { + return; + } + _logger.logger.log(`Starting to track devices for room ${roomId} ...`); + const members = await room.getEncryptionTargetMembers(); + members.forEach(m => { + this.deviceList.startTrackingDeviceList(m.userId); + }); + }; + let promise = this.roomDeviceTrackingState[roomId]; + if (!promise) { + promise = trackMembers(); + this.roomDeviceTrackingState[roomId] = promise.catch(err => { + delete this.roomDeviceTrackingState[roomId]; + throw err; }); } - } catch (e) { - _logger.logger.error("Error handling toDeviceEvent:", e); - } -}; -/** - * Handle a key event - * - * @private - * @param {module:models/event.MatrixEvent} event key event - */ - - -Crypto.prototype._onRoomKeyEvent = function (event) { - const content = event.getContent(); - - if (!content.room_id || !content.algorithm) { - _logger.logger.error("key event is missing fields"); - - return; + return promise; } - if (!this._checkedForBackup) { - // don't bother awaiting on this - the important thing is that we retry if we - // haven't managed to check before - this._checkAndStartKeyBackup(); + /** + * Try to make sure we have established olm sessions for all known devices for + * the given users. + * + * @param users - list of user ids + * @param force - If true, force a new Olm session to be created. Default false. + * + * @returns resolves once the sessions are complete, to + * an Object mapping from userId to deviceId to + * `IOlmSessionResult` + */ + ensureOlmSessionsForUsers(users, force) { + // map user Id → DeviceInfo[] + const devicesByUser = new Map(); + for (const userId of users) { + const userDevices = []; + devicesByUser.set(userId, userDevices); + const devices = this.getStoredDevicesForUser(userId) || []; + for (const deviceInfo of devices) { + const key = deviceInfo.getIdentityKey(); + if (key == this.olmDevice.deviceCurve25519Key) { + // don't bother setting up session to ourself + continue; + } + if (deviceInfo.verified == DeviceVerification.BLOCKED) { + // don't bother setting up sessions with blocked users + continue; + } + userDevices.push(deviceInfo); + } + } + return olmlib.ensureOlmSessionsForDevices(this.olmDevice, this.baseApis, devicesByUser, force); } - const alg = this._getRoomDecryptor(content.room_id, content.algorithm); - - alg.onRoomKeyEvent(event); -}; -/** - * Handle a key withheld event - * - * @private - * @param {module:models/event.MatrixEvent} event key withheld event - */ - - -Crypto.prototype._onRoomKeyWithheldEvent = function (event) { - const content = event.getContent(); - - if (content.code !== "m.no_olm" && (!content.room_id || !content.session_id) || !content.algorithm || !content.sender_key) { - _logger.logger.error("key withheld event is missing fields"); - - return; + /** + * Get a list containing all of the room keys + * + * @returns a list of session export objects + */ + async exportRoomKeys() { + const exportedSessions = []; + await this.cryptoStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], txn => { + this.cryptoStore.getAllEndToEndInboundGroupSessions(txn, s => { + if (s === null) return; + const sess = this.olmDevice.exportInboundGroupSession(s.senderKey, s.sessionId, s.sessionData); + delete sess.first_known_index; + sess.algorithm = olmlib.MEGOLM_ALGORITHM; + exportedSessions.push(sess); + }); + }); + return exportedSessions; } - _logger.logger.info(`Got room key withheld event from ${event.getSender()} (${content.sender_key}) ` + `for ${content.algorithm}/${content.room_id}/${content.session_id} ` + `with reason ${content.code} (${content.reason})`); - - const alg = this._getRoomDecryptor(content.room_id, content.algorithm); - - if (alg.onRoomKeyWithheldEvent) { - alg.onRoomKeyWithheldEvent(event); + /** + * Get a JSON list containing all of the room keys + * + * @returns a JSON string encoding a list of session + * export objects, each of which is an IMegolmSessionData + */ + async exportRoomKeysAsJson() { + return JSON.stringify(await this.exportRoomKeys()); } - if (!content.room_id) { + /** + * Import a list of room keys previously exported by exportRoomKeys + * + * @param keys - a list of session export objects + * @returns a promise which resolves once the keys have been imported + */ + importRoomKeys(keys, opts = {}) { + let successes = 0; + let failures = 0; + const total = keys.length; + function updateProgress() { + var _opts$progressCallbac; + (_opts$progressCallbac = opts.progressCallback) === null || _opts$progressCallbac === void 0 || _opts$progressCallbac.call(opts, { + stage: "load_keys", + successes, + failures, + total + }); + } + return Promise.all(keys.map(key => { + if (!key.room_id || !key.algorithm) { + _logger.logger.warn("ignoring room key entry with missing fields", key); + failures++; + if (opts.progressCallback) { + updateProgress(); + } + return null; + } + const alg = this.getRoomDecryptor(key.room_id, key.algorithm); + return alg.importRoomKey(key, opts).finally(() => { + successes++; + if (opts.progressCallback) { + updateProgress(); + } + }); + })).then(); + } + + /** + * Import a JSON string encoding a list of room keys previously + * exported by exportRoomKeysAsJson + * + * @param keys - a JSON string encoding a list of session export + * objects, each of which is an IMegolmSessionData + * @param opts - options object + * @returns a promise which resolves once the keys have been imported + */ + async importRoomKeysAsJson(keys, opts) { + return await this.importRoomKeys(JSON.parse(keys)); + } + + /** + * Counts the number of end to end session keys that are waiting to be backed up + * @returns Promise which resolves to the number of sessions requiring backup + */ + countSessionsNeedingBackup() { + return this.backupManager.countSessionsNeedingBackup(); + } + + /** + * Perform any background tasks that can be done before a message is ready to + * send, in order to speed up sending of the message. + * + * @param room - the room the event is in + */ + prepareToEncrypt(room) { + const alg = this.roomEncryptors.get(room.roomId); + if (alg) { + alg.prepareToEncrypt(room); + } + } + + /** + * Encrypt an event according to the configuration of the room. + * + * @param event - event to be sent + * + * @param room - destination room. + * + * @returns Promise which resolves when the event has been + * encrypted, or null if nothing was needed + */ + async encryptEvent(event, room) { + const roomId = event.getRoomId(); + const alg = this.roomEncryptors.get(roomId); + if (!alg) { + // MatrixClient has already checked that this room should be encrypted, + // so this is an unexpected situation. + throw new Error("Room " + roomId + " was previously configured to use encryption, but is " + "no longer. Perhaps the homeserver is hiding the " + "configuration event."); + } + + // wait for all the room devices to be loaded + await this.trackRoomDevicesImpl(room); + let content = event.getContent(); + // If event has an m.relates_to then we need + // to put this on the wrapping event instead + const mRelatesTo = content["m.relates_to"]; + if (mRelatesTo) { + // Clone content here so we don't remove `m.relates_to` from the local-echo + content = Object.assign({}, content); + delete content["m.relates_to"]; + } + + // Treat element's performance metrics the same as `m.relates_to` (when present) + const elementPerfMetrics = content["io.element.performance_metrics"]; + if (elementPerfMetrics) { + content = Object.assign({}, content); + delete content["io.element.performance_metrics"]; + } + const encryptedContent = await alg.encryptMessage(room, event.getType(), content); + if (mRelatesTo) { + encryptedContent["m.relates_to"] = mRelatesTo; + } + if (elementPerfMetrics) { + encryptedContent["io.element.performance_metrics"] = elementPerfMetrics; + } + event.makeEncrypted("m.room.encrypted", encryptedContent, this.olmDevice.deviceCurve25519Key, this.olmDevice.deviceEd25519Key); + } + + /** + * Decrypt a received event + * + * + * @returns resolves once we have + * finished decrypting. Rejects with an `algorithms.DecryptionError` if there + * is a problem decrypting the event. + */ + async decryptEvent(event) { + if (event.isRedacted()) { + // Try to decrypt the redaction event, to support encrypted + // redaction reasons. If we can't decrypt, just fall back to using + // the original redacted_because. + const redactionEvent = new _event2.MatrixEvent(_objectSpread({ + room_id: event.getRoomId() + }, event.getUnsigned().redacted_because)); + let redactedBecause = event.getUnsigned().redacted_because; + if (redactionEvent.isEncrypted()) { + try { + const decryptedEvent = await this.decryptEvent(redactionEvent); + redactedBecause = decryptedEvent.clearEvent; + } catch (e) { + _logger.logger.warn("Decryption of redaction failed. Falling back to unencrypted event.", e); + } + } + return { + clearEvent: { + room_id: event.getRoomId(), + type: "m.room.message", + content: {}, + unsigned: { + redacted_because: redactedBecause + } + } + }; + } else { + const content = event.getWireContent(); + const alg = this.getRoomDecryptor(event.getRoomId(), content.algorithm); + return alg.decryptEvent(event); + } + } + + /** + * Handle the notification from /sync that device lists have + * been changed. + * + * @param deviceLists - device_lists field from /sync + */ + async processDeviceLists(deviceLists) { + // Here, we're relying on the fact that we only ever save the sync data after + // sucessfully saving the device list data, so we're guaranteed that the device + // list store is at least as fresh as the sync token from the sync store, ie. + // any device changes received in sync tokens prior to the 'next' token here + // have been processed and are reflected in the current device list. + // If we didn't make this assumption, we'd have to use the /keys/changes API + // to get key changes between the sync token in the device list and the 'old' + // sync token used here to make sure we didn't miss any. + await this.evalDeviceListChanges(deviceLists); + } + + /** + * Send a request for some room keys, if we have not already done so + * + * @param resend - whether to resend the key request if there is + * already one + * + * @returns a promise that resolves when the key request is queued + */ + requestRoomKey(requestBody, recipients, resend = false) { + return this.outgoingRoomKeyRequestManager.queueRoomKeyRequest(requestBody, recipients, resend).then(() => { + if (this.sendKeyRequestsImmediately) { + this.outgoingRoomKeyRequestManager.sendQueuedRequests(); + } + }).catch(e => { + // this normally means we couldn't talk to the store + _logger.logger.error("Error requesting key for event", e); + }); + } + + /** + * Cancel any earlier room key request + * + * @param requestBody - parameters to match for cancellation + */ + cancelRoomKeyRequest(requestBody) { + this.outgoingRoomKeyRequestManager.cancelRoomKeyRequest(requestBody).catch(e => { + _logger.logger.warn("Error clearing pending room key requests", e); + }); + } + + /** + * Re-send any outgoing key requests, eg after verification + * @returns + */ + async cancelAndResendAllOutgoingKeyRequests() { + await this.outgoingRoomKeyRequestManager.cancelAndResendAllOutgoingRequests(); + } + + /** + * handle an m.room.encryption event + * + * @param room - in which the event was received + * @param event - encryption event to be processed + */ + async onCryptoEvent(room, event) { + const content = event.getContent(); + await this.setRoomEncryptionImpl(room, content); + } + + /** + * Called before the result of a sync is processed + * + * @param syncData - the data from the 'MatrixClient.sync' event + */ + async onSyncWillProcess(syncData) { + if (!syncData.oldSyncToken) { + // If there is no old sync token, we start all our tracking from + // scratch, so mark everything as untracked. onCryptoEvent will + // be called for all e2e rooms during the processing of the sync, + // at which point we'll start tracking all the users of that room. + _logger.logger.log("Initial sync performed - resetting device tracking state"); + this.deviceList.stopTrackingAllDeviceLists(); + // we always track our own device list (for key backups etc) + this.deviceList.startTrackingDeviceList(this.userId); + this.roomDeviceTrackingState = {}; + } + this.sendKeyRequestsImmediately = false; + } + + /** + * handle the completion of a /sync + * + * This is called after the processing of each successful /sync response. + * It is an opportunity to do a batch process on the information received. + * + * @param syncData - the data from the 'MatrixClient.sync' event + */ + async onSyncCompleted(syncData) { + var _syncData$nextSyncTok; + this.deviceList.setSyncToken((_syncData$nextSyncTok = syncData.nextSyncToken) !== null && _syncData$nextSyncTok !== void 0 ? _syncData$nextSyncTok : null); + this.deviceList.saveIfDirty(); + + // we always track our own device list (for key backups etc) + this.deviceList.startTrackingDeviceList(this.userId); + this.deviceList.refreshOutdatedDeviceLists(); + + // we don't start uploading one-time keys until we've caught up with + // to-device messages, to help us avoid throwing away one-time-keys that we + // are about to receive messages for + // (https://github.com/vector-im/element-web/issues/2782). + if (!syncData.catchingUp) { + this.maybeUploadOneTimeKeys(); + this.processReceivedRoomKeyRequests(); + + // likewise don't start requesting keys until we've caught up + // on to_device messages, otherwise we'll request keys that we're + // just about to get. + this.outgoingRoomKeyRequestManager.sendQueuedRequests(); + + // Sync has finished so send key requests straight away. + this.sendKeyRequestsImmediately = true; + } + } + + /** + * Trigger the appropriate invalidations and removes for a given + * device list + * + * @param deviceLists - device_lists field from /sync, or response from + * /keys/changes + */ + async evalDeviceListChanges(deviceLists) { + if (Array.isArray(deviceLists === null || deviceLists === void 0 ? void 0 : deviceLists.changed)) { + deviceLists.changed.forEach(u => { + this.deviceList.invalidateUserDeviceList(u); + }); + } + if (Array.isArray(deviceLists === null || deviceLists === void 0 ? void 0 : deviceLists.left) && deviceLists.left.length) { + // Check we really don't share any rooms with these users + // any more: the server isn't required to give us the + // exact correct set. + const e2eUserIds = new Set(await this.getTrackedE2eUsers()); + deviceLists.left.forEach(u => { + if (!e2eUserIds.has(u)) { + this.deviceList.stopTrackingDeviceList(u); + } + }); + } + } + + /** + * Get a list of all the IDs of users we share an e2e room with + * for which we are tracking devices already + * + * @returns List of user IDs + */ + async getTrackedE2eUsers() { + const e2eUserIds = []; + for (const room of this.getTrackedE2eRooms()) { + const members = await room.getEncryptionTargetMembers(); + for (const member of members) { + e2eUserIds.push(member.userId); + } + } + return e2eUserIds; + } + + /** + * Get a list of the e2e-enabled rooms we are members of, + * and for which we are already tracking the devices + * + * @returns + */ + getTrackedE2eRooms() { + return this.clientStore.getRooms().filter(room => { + // check for rooms with encryption enabled + const alg = this.roomEncryptors.get(room.roomId); + if (!alg) { + return false; + } + if (!this.roomDeviceTrackingState[room.roomId]) { + return false; + } + + // ignore any rooms which we have left + const myMembership = room.getMyMembership(); + return myMembership === _membership.KnownMembership.Join || myMembership === _membership.KnownMembership.Invite; + }); + } + + /** + * Encrypts and sends a given object via Olm to-device messages to a given + * set of devices. + * @param userDeviceInfoArr - the devices to send to + * @param payload - fields to include in the encrypted payload + * @returns Promise which + * resolves once the message has been encrypted and sent to the given + * userDeviceMap, and returns the `{ contentMap, deviceInfoByDeviceId }` + * of the successfully sent messages. + */ + async encryptAndSendToDevices(userDeviceInfoArr, payload) { + const toDeviceBatch = { + eventType: _event.EventType.RoomMessageEncrypted, + batch: [] + }; + try { + await Promise.all(userDeviceInfoArr.map(async ({ + userId, + deviceInfo + }) => { + const deviceId = deviceInfo.deviceId; + const encryptedContent = { + algorithm: olmlib.OLM_ALGORITHM, + sender_key: this.olmDevice.deviceCurve25519Key, + ciphertext: {}, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() + }; + toDeviceBatch.batch.push({ + userId, + deviceId, + payload: encryptedContent + }); + await olmlib.ensureOlmSessionsForDevices(this.olmDevice, this.baseApis, new Map([[userId, [deviceInfo]]])); + await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this.userId, this.deviceId, this.olmDevice, userId, deviceInfo, payload); + })); + + // prune out any devices that encryptMessageForDevice could not encrypt for, + // in which case it will have just not added anything to the ciphertext object. + // There's no point sending messages to devices if we couldn't encrypt to them, + // since that's effectively a blank message. + toDeviceBatch.batch = toDeviceBatch.batch.filter(msg => { + if (Object.keys(msg.payload.ciphertext).length > 0) { + return true; + } else { + _logger.logger.log(`No ciphertext for device ${msg.userId}:${msg.deviceId}: pruning`); + return false; + } + }); + try { + await this.baseApis.queueToDevice(toDeviceBatch); + } catch (e) { + _logger.logger.error("sendToDevice failed", e); + throw e; + } + } catch (e) { + _logger.logger.error("encryptAndSendToDevices promises failed", e); + throw e; + } + } + async preprocessToDeviceMessages(events) { + // all we do here is filter out encrypted to-device messages with the wrong algorithm. Decryption + // happens later in decryptEvent, via the EventMapper + return events.filter(toDevice => { + var _toDevice$content; + if (toDevice.type === _event.EventType.RoomMessageEncrypted && !["m.olm.v1.curve25519-aes-sha2"].includes((_toDevice$content = toDevice.content) === null || _toDevice$content === void 0 ? void 0 : _toDevice$content.algorithm)) { + _logger.logger.log("Ignoring invalid encrypted to-device event from " + toDevice.sender); + return false; + } + return true; + }); + } + + /** + * Stores the current one_time_key count which will be handled later (in a call of + * onSyncCompleted). + * + * @param currentCount - The current count of one_time_keys to be stored + */ + updateOneTimeKeyCount(currentCount) { + if (isFinite(currentCount)) { + this.oneTimeKeyCount = currentCount; + } else { + throw new TypeError("Parameter for updateOneTimeKeyCount has to be a number"); + } + } + processKeyCounts(oneTimeKeysCounts, unusedFallbackKeys) { + if (oneTimeKeysCounts !== undefined) { + this.updateOneTimeKeyCount(oneTimeKeysCounts["signed_curve25519"] || 0); + } + if (unusedFallbackKeys !== undefined) { + // If `unusedFallbackKeys` is defined, that means `device_unused_fallback_key_types` + // is present in the sync response, which indicates that the server supports fallback keys. + // + // If there's no unused signed_curve25519 fallback key, we need a new one. + this.needsNewFallback = !unusedFallbackKeys.includes("signed_curve25519"); + } + return Promise.resolve(); + } + /** + * Handle a key event + * + * @internal + * @param event - key event + */ + onRoomKeyEvent(event) { + const content = event.getContent(); + if (!content.room_id || !content.algorithm) { + _logger.logger.error("key event is missing fields"); + return; + } + if (!this.backupManager.checkedForBackup) { + // don't bother awaiting on this - the important thing is that we retry if we + // haven't managed to check before + this.backupManager.checkAndStart(); + } + const alg = this.getRoomDecryptor(content.room_id, content.algorithm); + alg.onRoomKeyEvent(event); + } + + /** + * Handle a key withheld event + * + * @internal + * @param event - key withheld event + */ + onRoomKeyWithheldEvent(event) { + const content = event.getContent(); + if (content.code !== "m.no_olm" && (!content.room_id || !content.session_id) || !content.algorithm || !content.sender_key) { + _logger.logger.error("key withheld event is missing fields"); + return; + } + _logger.logger.info(`Got room key withheld event from ${event.getSender()} ` + `for ${content.algorithm} session ${content.sender_key}|${content.session_id} ` + `in room ${content.room_id} with code ${content.code} (${content.reason})`); + const alg = this.getRoomDecryptor(content.room_id, content.algorithm); + if (alg.onRoomKeyWithheldEvent) { + alg.onRoomKeyWithheldEvent(event); + } + if (!content.room_id) { + // retry decryption for all events sent by the sender_key. This will + // update the events to show a message indicating that the olm session was + // wedged. + const roomDecryptors = this.getRoomDecryptors(content.algorithm); + for (const decryptor of roomDecryptors) { + decryptor.retryDecryptionFromSender(content.sender_key); + } + } + } + + /** + * Handle a general key verification event. + * + * @internal + * @param event - verification start event + */ + onKeyVerificationMessage(event) { + if (!_ToDeviceChannel.ToDeviceChannel.validateEvent(event, this.baseApis)) { + return; + } + const createRequest = event => { + if (!_ToDeviceChannel.ToDeviceChannel.canCreateRequest(_ToDeviceChannel.ToDeviceChannel.getEventType(event))) { + return; + } + const content = event.getContent(); + const deviceId = content && content.from_device; + if (!deviceId) { + return; + } + const userId = event.getSender(); + const channel = new _ToDeviceChannel.ToDeviceChannel(this.baseApis, userId, [deviceId]); + return new _VerificationRequest.VerificationRequest(channel, this.verificationMethods, this.baseApis); + }; + this.handleVerificationEvent(event, this.toDeviceVerificationRequests, createRequest); + } + async handleVerificationEvent(event, requestsMap, createRequest, isLiveEvent = true) { + // Wait for event to get its final ID with pendingEventOrdering: "chronological", since DM channels depend on it. + if (event.isSending() && event.status != _event2.EventStatus.SENT) { + let eventIdListener; + let statusListener; + try { + await new Promise((resolve, reject) => { + eventIdListener = resolve; + statusListener = () => { + if (event.status == _event2.EventStatus.CANCELLED) { + reject(new Error("Event status set to CANCELLED.")); + } + }; + event.once(_event2.MatrixEventEvent.LocalEventIdReplaced, eventIdListener); + event.on(_event2.MatrixEventEvent.Status, statusListener); + }); + } catch (err) { + _logger.logger.error("error while waiting for the verification event to be sent: ", err); + return; + } finally { + event.removeListener(_event2.MatrixEventEvent.LocalEventIdReplaced, eventIdListener); + event.removeListener(_event2.MatrixEventEvent.Status, statusListener); + } + } + let request = requestsMap.getRequest(event); + let isNewRequest = false; + if (!request) { + request = createRequest(event); + // a request could not be made from this event, so ignore event + if (!request) { + _logger.logger.log(`Crypto: could not find VerificationRequest for ` + `${event.getType()}, and could not create one, so ignoring.`); + return; + } + isNewRequest = true; + requestsMap.setRequest(event, request); + } + event.setVerificationRequest(request); + try { + await request.channel.handleEvent(event, request, isLiveEvent); + } catch (err) { + _logger.logger.error("error while handling verification event", err); + } + const shouldEmit = isNewRequest && !request.initiatedByMe && !request.invalid && + // check it has enough events to pass the UNSENT stage + !request.observeOnly; + if (shouldEmit) { + this.baseApis.emit(CryptoEvent.VerificationRequest, request); + this.baseApis.emit(CryptoEvent.VerificationRequestReceived, request); + } + } + + /** + * Handle a toDevice event that couldn't be decrypted + * + * @internal + * @param event - undecryptable event + */ + async onToDeviceBadEncrypted(event) { + const content = event.getWireContent(); + const sender = event.getSender(); + const algorithm = content.algorithm; + const deviceKey = content.sender_key; + this.baseApis.emit(_client.ClientEvent.UndecryptableToDeviceEvent, event); + // retry decryption for all events sent by the sender_key. This will // update the events to show a message indicating that the olm session was // wedged. - const roomDecryptors = this._getRoomDecryptors(content.algorithm); - - for (const decryptor of roomDecryptors) { - decryptor.retryDecryptionFromSender(content.sender_key); - } - } -}; -/** - * Handle a general key verification event. - * - * @private - * @param {module:models/event.MatrixEvent} event verification start event - */ - - -Crypto.prototype._onKeyVerificationMessage = function (event) { - if (!_ToDeviceChannel.ToDeviceChannel.validateEvent(event, this._baseApis)) { - return; - } - - const createRequest = event => { - if (!_ToDeviceChannel.ToDeviceChannel.canCreateRequest(_ToDeviceChannel.ToDeviceChannel.getEventType(event))) { + const retryDecryption = () => { + const roomDecryptors = this.getRoomDecryptors(olmlib.MEGOLM_ALGORITHM); + for (const decryptor of roomDecryptors) { + decryptor.retryDecryptionFromSender(deviceKey); + } + }; + if (sender === undefined || deviceKey === undefined || deviceKey === undefined) { return; } - const content = event.getContent(); - const deviceId = content && content.from_device; - - if (!deviceId) { - return; - } - - const userId = event.getSender(); - const channel = new _ToDeviceChannel.ToDeviceChannel(this._baseApis, userId, [deviceId]); - return new _VerificationRequest.VerificationRequest(channel, this._verificationMethods, this._baseApis); - }; - - this._handleVerificationEvent(event, this._toDeviceVerificationRequests, createRequest); -}; -/** - * Handle key verification requests sent as timeline events - * - * @private - * @param {module:models/event.MatrixEvent} event the timeline event - * @param {module:models/Room} room not used - * @param {bool} atStart not used - * @param {bool} removed not used - * @param {bool} data.liveEvent whether this is a live event - */ - - -Crypto.prototype._onTimelineEvent = function (event, room, atStart, removed, { - liveEvent -} = {}) { - if (!_InRoomChannel.InRoomChannel.validateEvent(event, this._baseApis)) { - return; - } - - const createRequest = event => { - const channel = new _InRoomChannel.InRoomChannel(this._baseApis, event.getRoomId()); - return new _VerificationRequest.VerificationRequest(channel, this._verificationMethods, this._baseApis); - }; - - this._handleVerificationEvent(event, this._inRoomVerificationRequests, createRequest, liveEvent); -}; - -Crypto.prototype._handleVerificationEvent = async function (event, requestsMap, createRequest, isLiveEvent = true) { - let request = requestsMap.getRequest(event); - let isNewRequest = false; - - if (!request) { - request = createRequest(event); // a request could not be made from this event, so ignore event - - if (!request) { - _logger.logger.log(`Crypto: could not find VerificationRequest for ` + `${event.getType()}, and could not create one, so ignoring.`); - - return; - } - - isNewRequest = true; - requestsMap.setRequest(event, request); - } - - event.setVerificationRequest(request); - - try { - await request.channel.handleEvent(event, request, isLiveEvent); - } catch (err) { - _logger.logger.error("error while handling verification event: " + err.message); - } - - const shouldEmit = isNewRequest && !request.initiatedByMe && !request.invalid && // check it has enough events to pass the UNSENT stage - !request.observeOnly; - - if (shouldEmit) { - this._baseApis.emit("crypto.verification.request", request); - } -}; -/** - * Handle a toDevice event that couldn't be decrypted - * - * @private - * @param {module:models/event.MatrixEvent} event undecryptable event - */ - - -Crypto.prototype._onToDeviceBadEncrypted = async function (event) { - const content = event.getWireContent(); - const sender = event.getSender(); - const algorithm = content.algorithm; - const deviceKey = content.sender_key; // retry decryption for all events sent by the sender_key. This will - // update the events to show a message indicating that the olm session was - // wedged. - - const retryDecryption = () => { - const roomDecryptors = this._getRoomDecryptors(olmlib.MEGOLM_ALGORITHM); - - for (const decryptor of roomDecryptors) { - decryptor.retryDecryptionFromSender(deviceKey); - } - }; - - if (sender === undefined || deviceKey === undefined || deviceKey === undefined) { - return; - } // check when we last forced a new session with this device: if we've already done so - // recently, don't do it again. - - - this._lastNewSessionForced[sender] = this._lastNewSessionForced[sender] || {}; - const lastNewSessionForced = this._lastNewSessionForced[sender][deviceKey] || 0; - - if (lastNewSessionForced + MIN_FORCE_SESSION_INTERVAL_MS > Date.now()) { - _logger.logger.debug("New session already forced with device " + sender + ":" + deviceKey + " at " + lastNewSessionForced + ": not forcing another"); - - await this._olmDevice.recordSessionProblem(deviceKey, "wedged", true); - retryDecryption(); - return; - } // establish a new olm session with this device since we're failing to decrypt messages - // on a current session. - // Note that an undecryptable message from another device could easily be spoofed - - // is there anything we can do to mitigate this? - - - let device = this._deviceList.getDeviceByIdentityKey(algorithm, deviceKey); - - if (!device) { - // if we don't know about the device, fetch the user's devices again - // and retry before giving up - await this.downloadKeys([sender], false); - device = this._deviceList.getDeviceByIdentityKey(algorithm, deviceKey); - - if (!device) { - _logger.logger.info("Couldn't find device for identity key " + deviceKey + ": not re-establishing session"); - - await this._olmDevice.recordSessionProblem(deviceKey, "wedged", false); + // check when we can force a new session with this device: if we've already done so + // recently, don't do it again. + const forceNewSessionRetryTimeDevices = this.forceNewSessionRetryTime.getOrCreate(sender); + const forceNewSessionRetryTime = forceNewSessionRetryTimeDevices.getOrCreate(deviceKey); + if (forceNewSessionRetryTime > Date.now()) { + _logger.logger.debug(`New session already forced with device ${sender}:${deviceKey}: ` + `not forcing another until at least ${new Date(forceNewSessionRetryTime).toUTCString()}`); + await this.olmDevice.recordSessionProblem(deviceKey, "wedged", true); retryDecryption(); return; } - } - const devicesByUser = {}; - devicesByUser[sender] = [device]; - await olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser, true); - this._lastNewSessionForced[sender][deviceKey] = Date.now(); // Now send a blank message on that session so the other side knows about it. - // (The keyshare request is sent in the clear so that won't do) - // We send this first such that, as long as the toDevice messages arrive in the - // same order we sent them, the other end will get this first, set up the new session, - // then get the keyshare request and send the key over this new session (because it - // is the session it has most recently received a message on). - - const encryptedContent = { - algorithm: olmlib.OLM_ALGORITHM, - sender_key: this._olmDevice.deviceCurve25519Key, - ciphertext: {} - }; - await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, sender, device, { - type: "m.dummy" - }); - await this._olmDevice.recordSessionProblem(deviceKey, "wedged", true); - retryDecryption(); - await this._baseApis.sendToDevice("m.room.encrypted", { - [sender]: { - [device.deviceId]: encryptedContent - } - }); // Most of the time this probably won't be necessary since we'll have queued up a key request when - // we failed to decrypt the message and will be waiting a bit for the key to arrive before sending - // it. This won't always be the case though so we need to re-send any that have already been sent - // to avoid races. - - const requestsToResend = await this._outgoingRoomKeyRequestManager.getOutgoingSentRoomKeyRequest(sender, device.deviceId); - - for (const keyReq of requestsToResend) { - this.requestRoomKey(keyReq.requestBody, keyReq.recipients, true); - } -}; -/** - * Handle a change in the membership state of a member of a room - * - * @private - * @param {module:models/event.MatrixEvent} event event causing the change - * @param {module:models/room-member} member user whose membership changed - * @param {string=} oldMembership previous membership - */ - - -Crypto.prototype._onRoomMembership = function (event, member, oldMembership) { - // this event handler is registered on the *client* (as opposed to the room - // member itself), which means it is only called on changes to the *live* - // membership state (ie, it is not called when we back-paginate, nor when - // we load the state in the initialsync). - // - // Further, it is automatically registered and called when new members - // arrive in the room. - const roomId = member.roomId; - const alg = this._roomEncryptors[roomId]; - - if (!alg) { - // not encrypting in this room - return; - } // only mark users in this room as tracked if we already started tracking in this room - // this way we don't start device queries after sync on behalf of this room which we won't use - // the result of anyway, as we'll need to do a query again once all the members are fetched - // by calling _trackRoomDevices - - - if (this._roomDeviceTrackingState[roomId]) { - if (member.membership == 'join') { - _logger.logger.log('Join event for ' + member.userId + ' in ' + roomId); // make sure we are tracking the deviceList for this user - - - this._deviceList.startTrackingDeviceList(member.userId); - } else if (member.membership == 'invite' && this._clientStore.getRoom(roomId).shouldEncryptForInvitedMembers()) { - _logger.logger.log('Invite event for ' + member.userId + ' in ' + roomId); - - this._deviceList.startTrackingDeviceList(member.userId); - } - } - - alg.onRoomMembership(event, member, oldMembership); -}; -/** - * Called when we get an m.room_key_request event. - * - * @private - * @param {module:models/event.MatrixEvent} event key request event - */ - - -Crypto.prototype._onRoomKeyRequestEvent = function (event) { - const content = event.getContent(); - - if (content.action === "request") { - // Queue it up for now, because they tend to arrive before the room state - // events at initial sync, and we want to see if we know anything about the - // room before passing them on to the app. - const req = new IncomingRoomKeyRequest(event); - - this._receivedRoomKeyRequests.push(req); - } else if (content.action === "request_cancellation") { - const req = new IncomingRoomKeyRequestCancellation(event); - - this._receivedRoomKeyRequestCancellations.push(req); - } -}; -/** - * Process any m.room_key_request events which were queued up during the - * current sync. - * - * @private - */ - - -Crypto.prototype._processReceivedRoomKeyRequests = async function () { - if (this._processingRoomKeyRequests) { - // we're still processing last time's requests; keep queuing new ones - // up for now. - return; - } - - this._processingRoomKeyRequests = true; - - try { - // we need to grab and clear the queues in the synchronous bit of this method, - // so that we don't end up racing with the next /sync. - const requests = this._receivedRoomKeyRequests; - this._receivedRoomKeyRequests = []; - const cancellations = this._receivedRoomKeyRequestCancellations; - this._receivedRoomKeyRequestCancellations = []; // Process all of the requests, *then* all of the cancellations. - // - // This makes sure that if we get a request and its cancellation in the - // same /sync result, then we process the request before the - // cancellation (and end up with a cancelled request), rather than the - // cancellation before the request (and end up with an outstanding - // request which should have been cancelled.) - - await Promise.all(requests.map(req => this._processReceivedRoomKeyRequest(req))); - await Promise.all(cancellations.map(cancellation => this._processReceivedRoomKeyRequestCancellation(cancellation))); - } catch (e) { - _logger.logger.error(`Error processing room key requsts: ${e}`); - } finally { - this._processingRoomKeyRequests = false; - } -}; -/** - * Helper for processReceivedRoomKeyRequests - * - * @param {IncomingRoomKeyRequest} req - */ - - -Crypto.prototype._processReceivedRoomKeyRequest = async function (req) { - const userId = req.userId; - const deviceId = req.deviceId; - const body = req.requestBody; - const roomId = body.room_id; - const alg = body.algorithm; - - _logger.logger.log(`m.room_key_request from ${userId}:${deviceId}` + ` for ${roomId} / ${body.session_id} (id ${req.requestId})`); - - if (userId !== this._userId) { - if (!this._roomEncryptors[roomId]) { - _logger.logger.debug(`room key request for unencrypted room ${roomId}`); - - return; - } - - const encryptor = this._roomEncryptors[roomId]; - - const device = this._deviceList.getStoredDevice(userId, deviceId); + // make sure we don't retry to unwedge too soon even if we fail to create a new session + forceNewSessionRetryTimeDevices.set(deviceKey, Date.now() + FORCE_SESSION_RETRY_INTERVAL_MS); + // establish a new olm session with this device since we're failing to decrypt messages + // on a current session. + // Note that an undecryptable message from another device could easily be spoofed - + // is there anything we can do to mitigate this? + let device = this.deviceList.getDeviceByIdentityKey(algorithm, deviceKey); if (!device) { - _logger.logger.debug(`Ignoring keyshare for unknown device ${userId}:${deviceId}`); + // if we don't know about the device, fetch the user's devices again + // and retry before giving up + await this.downloadKeys([sender], false); + device = this.deviceList.getDeviceByIdentityKey(algorithm, deviceKey); + if (!device) { + _logger.logger.info("Couldn't find device for identity key " + deviceKey + ": not re-establishing session"); + await this.olmDevice.recordSessionProblem(deviceKey, "wedged", false); + retryDecryption(); + return; + } + } + const devicesByUser = new Map([[sender, [device]]]); + await olmlib.ensureOlmSessionsForDevices(this.olmDevice, this.baseApis, devicesByUser, true); + forceNewSessionRetryTimeDevices.set(deviceKey, Date.now() + MIN_FORCE_SESSION_INTERVAL_MS); + // Now send a blank message on that session so the other side knows about it. + // (The keyshare request is sent in the clear so that won't do) + // We send this first such that, as long as the toDevice messages arrive in the + // same order we sent them, the other end will get this first, set up the new session, + // then get the keyshare request and send the key over this new session (because it + // is the session it has most recently received a message on). + const encryptedContent = { + algorithm: olmlib.OLM_ALGORITHM, + sender_key: this.olmDevice.deviceCurve25519Key, + ciphertext: {}, + [_event.ToDeviceMessageId]: (0, _uuid.v4)() + }; + await olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this.userId, this.deviceId, this.olmDevice, sender, device, { + type: "m.dummy" + }); + await this.olmDevice.recordSessionProblem(deviceKey, "wedged", true); + retryDecryption(); + await this.baseApis.sendToDevice("m.room.encrypted", new Map([[sender, new Map([[device.deviceId, encryptedContent]])]])); + + // Most of the time this probably won't be necessary since we'll have queued up a key request when + // we failed to decrypt the message and will be waiting a bit for the key to arrive before sending + // it. This won't always be the case though so we need to re-send any that have already been sent + // to avoid races. + const requestsToResend = await this.outgoingRoomKeyRequestManager.getOutgoingSentRoomKeyRequest(sender, device.deviceId); + for (const keyReq of requestsToResend) { + this.requestRoomKey(keyReq.requestBody, keyReq.recipients, true); + } + } + + /** + * Handle a change in the membership state of a member of a room + * + * @internal + * @param event - event causing the change + * @param member - user whose membership changed + * @param oldMembership - previous membership + */ + onRoomMembership(event, member, oldMembership) { + // this event handler is registered on the *client* (as opposed to the room + // member itself), which means it is only called on changes to the *live* + // membership state (ie, it is not called when we back-paginate, nor when + // we load the state in the initialsync). + // + // Further, it is automatically registered and called when new members + // arrive in the room. + + const roomId = member.roomId; + const alg = this.roomEncryptors.get(roomId); + if (!alg) { + // not encrypting in this room + return; + } + // only mark users in this room as tracked if we already started tracking in this room + // this way we don't start device queries after sync on behalf of this room which we won't use + // the result of anyway, as we'll need to do a query again once all the members are fetched + // by calling _trackRoomDevices + if (roomId in this.roomDeviceTrackingState) { + var _this$clientStore$get; + if (member.membership == _membership.KnownMembership.Join) { + _logger.logger.log("Join event for " + member.userId + " in " + roomId); + // make sure we are tracking the deviceList for this user + this.deviceList.startTrackingDeviceList(member.userId); + } else if (member.membership == _membership.KnownMembership.Invite && (_this$clientStore$get = this.clientStore.getRoom(roomId)) !== null && _this$clientStore$get !== void 0 && _this$clientStore$get.shouldEncryptForInvitedMembers()) { + _logger.logger.log("Invite event for " + member.userId + " in " + roomId); + this.deviceList.startTrackingDeviceList(member.userId); + } + } + alg.onRoomMembership(event, member, oldMembership); + } + + /** + * Called when we get an m.room_key_request event. + * + * @internal + * @param event - key request event + */ + onRoomKeyRequestEvent(event) { + const content = event.getContent(); + if (content.action === "request") { + // Queue it up for now, because they tend to arrive before the room state + // events at initial sync, and we want to see if we know anything about the + // room before passing them on to the app. + const req = new IncomingRoomKeyRequest(event); + this.receivedRoomKeyRequests.push(req); + } else if (content.action === "request_cancellation") { + const req = new IncomingRoomKeyRequestCancellation(event); + this.receivedRoomKeyRequestCancellations.push(req); + } + } + + /** + * Process any m.room_key_request events which were queued up during the + * current sync. + * + * @internal + */ + async processReceivedRoomKeyRequests() { + if (this.processingRoomKeyRequests) { + // we're still processing last time's requests; keep queuing new ones + // up for now. + return; + } + this.processingRoomKeyRequests = true; + try { + // we need to grab and clear the queues in the synchronous bit of this method, + // so that we don't end up racing with the next /sync. + const requests = this.receivedRoomKeyRequests; + this.receivedRoomKeyRequests = []; + const cancellations = this.receivedRoomKeyRequestCancellations; + this.receivedRoomKeyRequestCancellations = []; + + // Process all of the requests, *then* all of the cancellations. + // + // This makes sure that if we get a request and its cancellation in the + // same /sync result, then we process the request before the + // cancellation (and end up with a cancelled request), rather than the + // cancellation before the request (and end up with an outstanding + // request which should have been cancelled.) + await Promise.all(requests.map(req => this.processReceivedRoomKeyRequest(req))); + await Promise.all(cancellations.map(cancellation => this.processReceivedRoomKeyRequestCancellation(cancellation))); + } catch (e) { + _logger.logger.error(`Error processing room key requsts: ${e}`); + } finally { + this.processingRoomKeyRequests = false; + } + } + + /** + * Helper for processReceivedRoomKeyRequests + * + */ + async processReceivedRoomKeyRequest(req) { + const userId = req.userId; + const deviceId = req.deviceId; + const body = req.requestBody; + const roomId = body.room_id; + const alg = body.algorithm; + _logger.logger.log(`m.room_key_request from ${userId}:${deviceId}` + ` for ${roomId} / ${body.session_id} (id ${req.requestId})`); + if (userId !== this.userId) { + if (!this.roomEncryptors.get(roomId)) { + _logger.logger.debug(`room key request for unencrypted room ${roomId}`); + return; + } + const encryptor = this.roomEncryptors.get(roomId); + const device = this.deviceList.getStoredDevice(userId, deviceId); + if (!device) { + _logger.logger.debug(`Ignoring keyshare for unknown device ${userId}:${deviceId}`); + return; + } + try { + await encryptor.reshareKeyWithDevice(body.sender_key, body.session_id, userId, device); + } catch (e) { + _logger.logger.warn("Failed to re-share keys for session " + body.session_id + " with device " + userId + ":" + device.deviceId, e); + } + return; + } + if (deviceId === this.deviceId) { + // We'll always get these because we send room key requests to + // '*' (ie. 'all devices') which includes the sending device, + // so ignore requests from ourself because apart from it being + // very silly, it won't work because an Olm session cannot send + // messages to itself. + // The log here is probably superfluous since we know this will + // always happen, but let's log anyway for now just in case it + // causes issues. + _logger.logger.log("Ignoring room key request from ourselves"); return; } - try { - await encryptor.reshareKeyWithDevice(body.sender_key, body.session_id, userId, device); - } catch (e) { - _logger.logger.warn("Failed to re-share keys for session " + body.session_id + " with device " + userId + ":" + device.deviceId, e); + // todo: should we queue up requests we don't yet have keys for, + // in case they turn up later? + + // if we don't have a decryptor for this room/alg, we don't have + // the keys for the requested events, and can drop the requests. + if (!this.roomDecryptors.has(roomId)) { + _logger.logger.log(`room key request for unencrypted room ${roomId}`); + return; } - - return; - } - - if (deviceId === this._deviceId) { - // We'll always get these because we send room key requests to - // '*' (ie. 'all devices') which includes the sending device, - // so ignore requests from ourself because apart from it being - // very silly, it won't work because an Olm session cannot send - // messages to itself. - // The log here is probably superfluous since we know this will - // always happen, but let's log anyway for now just in case it - // causes issues. - _logger.logger.log("Ignoring room key request from ourselves"); - - return; - } // todo: should we queue up requests we don't yet have keys for, - // in case they turn up later? - // if we don't have a decryptor for this room/alg, we don't have - // the keys for the requested events, and can drop the requests. - - - if (!this._roomDecryptors[roomId]) { - _logger.logger.log(`room key request for unencrypted room ${roomId}`); - - return; - } - - const decryptor = this._roomDecryptors[roomId][alg]; - - if (!decryptor) { - _logger.logger.log(`room key request for unknown alg ${alg} in room ${roomId}`); - - return; - } - - if (!(await decryptor.hasKeysForKeyRequest(req))) { - _logger.logger.log(`room key request for unknown session ${roomId} / ` + body.session_id); - - return; - } - - req.share = () => { - decryptor.shareKeysWithDevice(req); - }; // if the device is verified already, share the keys - - - if (this.checkDeviceTrust(userId, deviceId).isVerified()) { - _logger.logger.log('device is already verified: sharing keys'); - - req.share(); - return; - } - - this.emit("crypto.roomKeyRequest", req); -}; -/** - * Helper for processReceivedRoomKeyRequests - * - * @param {IncomingRoomKeyRequestCancellation} cancellation - */ - - -Crypto.prototype._processReceivedRoomKeyRequestCancellation = async function (cancellation) { - _logger.logger.log(`m.room_key_request cancellation for ${cancellation.userId}:` + `${cancellation.deviceId} (id ${cancellation.requestId})`); // we should probably only notify the app of cancellations we told it - // about, but we don't currently have a record of that, so we just pass - // everything through. - - - this.emit("crypto.roomKeyRequestCancellation", cancellation); -}; -/** - * Get a decryptor for a given room and algorithm. - * - * If we already have a decryptor for the given room and algorithm, return - * it. Otherwise try to instantiate it. - * - * @private - * - * @param {string?} roomId room id for decryptor. If undefined, a temporary - * decryptor is instantiated. - * - * @param {string} algorithm crypto algorithm - * - * @return {module:crypto.algorithms.base.DecryptionAlgorithm} - * - * @raises {module:crypto.algorithms.DecryptionError} if the algorithm is - * unknown - */ - - -Crypto.prototype._getRoomDecryptor = function (roomId, algorithm) { - let decryptors; - let alg; - roomId = roomId || null; - - if (roomId) { - decryptors = this._roomDecryptors[roomId]; - - if (!decryptors) { - this._roomDecryptors[roomId] = decryptors = {}; + const decryptor = this.roomDecryptors.get(roomId).get(alg); + if (!decryptor) { + _logger.logger.log(`room key request for unknown alg ${alg} in room ${roomId}`); + return; } - - alg = decryptors[algorithm]; - - if (alg) { - return alg; + if (!(await decryptor.hasKeysForKeyRequest(req))) { + _logger.logger.log(`room key request for unknown session ${roomId} / ` + body.session_id); + return; } - } + req.share = () => { + decryptor.shareKeysWithDevice(req); + }; - const AlgClass = algorithms.DECRYPTION_CLASSES[algorithm]; - - if (!AlgClass) { - throw new algorithms.DecryptionError('UNKNOWN_ENCRYPTION_ALGORITHM', 'Unknown encryption algorithm "' + algorithm + '".'); - } - - alg = new AlgClass({ - userId: this._userId, - crypto: this, - olmDevice: this._olmDevice, - baseApis: this._baseApis, - roomId: roomId - }); - - if (decryptors) { - decryptors[algorithm] = alg; - } - - return alg; -}; -/** - * Get all the room decryptors for a given encryption algorithm. - * - * @param {string} algorithm The encryption algorithm - * - * @return {array} An array of room decryptors - */ - - -Crypto.prototype._getRoomDecryptors = function (algorithm) { - const decryptors = []; - - for (const d of Object.values(this._roomDecryptors)) { - if (algorithm in d) { - decryptors.push(d[algorithm]); + // if the device is verified already, share the keys + if (this.checkDeviceTrust(userId, deviceId).isVerified()) { + _logger.logger.log("device is already verified: sharing keys"); + req.share(); + return; } + this.emit(CryptoEvent.RoomKeyRequest, req); } - return decryptors; -}; -/** - * sign the given object with our ed25519 key - * - * @param {Object} obj Object to which we will add a 'signatures' property - */ + /** + * Helper for processReceivedRoomKeyRequests + * + */ + async processReceivedRoomKeyRequestCancellation(cancellation) { + _logger.logger.log(`m.room_key_request cancellation for ${cancellation.userId}:` + `${cancellation.deviceId} (id ${cancellation.requestId})`); + // we should probably only notify the app of cancellations we told it + // about, but we don't currently have a record of that, so we just pass + // everything through. + this.emit(CryptoEvent.RoomKeyRequestCancellation, cancellation); + } + + /** + * Get a decryptor for a given room and algorithm. + * + * If we already have a decryptor for the given room and algorithm, return + * it. Otherwise try to instantiate it. + * + * @internal + * + * @param roomId - room id for decryptor. If undefined, a temporary + * decryptor is instantiated. + * + * @param algorithm - crypto algorithm + * + * @throws `DecryptionError` if the algorithm is unknown + */ + getRoomDecryptor(roomId, algorithm) { + let decryptors; + let alg; + if (roomId) { + decryptors = this.roomDecryptors.get(roomId); + if (!decryptors) { + decryptors = new Map(); + this.roomDecryptors.set(roomId, decryptors); + } + alg = decryptors.get(algorithm); + if (alg) { + return alg; + } + } + const AlgClass = algorithms.DECRYPTION_CLASSES.get(algorithm); + if (!AlgClass) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.UNKNOWN_ENCRYPTION_ALGORITHM, 'Unknown encryption algorithm "' + algorithm + '".'); + } + alg = new AlgClass({ + userId: this.userId, + crypto: this, + olmDevice: this.olmDevice, + baseApis: this.baseApis, + roomId: roomId !== null && roomId !== void 0 ? roomId : undefined + }); + if (decryptors) { + decryptors.set(algorithm, alg); + } + return alg; + } + + /** + * Get all the room decryptors for a given encryption algorithm. + * + * @param algorithm - The encryption algorithm + * + * @returns An array of room decryptors + */ + getRoomDecryptors(algorithm) { + const decryptors = []; + for (const d of this.roomDecryptors.values()) { + if (d.has(algorithm)) { + decryptors.push(d.get(algorithm)); + } + } + return decryptors; + } + + /** + * sign the given object with our ed25519 key + * + * @param obj - Object to which we will add a 'signatures' property + */ + async signObject(obj) { + const sigs = new Map(Object.entries(obj.signatures || {})); + const unsigned = obj.unsigned; + delete obj.signatures; + delete obj.unsigned; + const userSignatures = sigs.get(this.userId) || {}; + sigs.set(this.userId, userSignatures); + userSignatures["ed25519:" + this.deviceId] = await this.olmDevice.sign(_anotherJson.default.stringify(obj)); + obj.signatures = (0, _utils.recursiveMapToObject)(sigs); + if (unsigned !== undefined) obj.unsigned = unsigned; + } + + /** + * @returns true if the room with the supplied ID is encrypted. False if the + * room is not encrypted, or is unknown to us. + */ + isRoomEncrypted(roomId) { + return this.roomList.isRoomEncrypted(roomId); + } + + /** + * Implementation of {@link CryptoApi#isEncryptionEnabledInRoom}. + */ + async isEncryptionEnabledInRoom(roomId) { + return this.isRoomEncrypted(roomId); + } + + /** + * @returns information about the encryption on the room with the supplied + * ID, or null if the room is not encrypted or unknown to us. + */ + getRoomEncryption(roomId) { + return this.roomList.getRoomEncryption(roomId); + } + + /** + * Returns whether dehydrated devices are supported by the crypto backend + * and by the server. + */ + async isDehydrationSupported() { + return false; + } + + /** + * Stub function -- dehydration is not implemented here, so throw error + */ + async startDehydration(createNewKey) { + throw new Error("Not implemented"); + } +} -Crypto.prototype._signObject = async function (obj) { - const sigs = obj.signatures || {}; - const unsigned = obj.unsigned; - delete obj.signatures; - delete obj.unsigned; - sigs[this._userId] = sigs[this._userId] || {}; - sigs[this._userId]["ed25519:" + this._deviceId] = await this._olmDevice.sign(_anotherJson.default.stringify(obj)); - obj.signatures = sigs; - if (unsigned !== undefined) obj.unsigned = unsigned; -}; /** - * The parameters of a room key request. The details of the request may - * vary with the crypto algorithm, but the management and storage layers for - * outgoing requests expect it to have 'room_id' and 'session_id' properties. + * Fix up the backup key, that may be in the wrong format due to a bug in a + * migration step. Some backup keys were stored as a comma-separated list of + * integers, rather than a base64-encoded byte array. If this function is + * passed a string that looks like a list of integers rather than a base64 + * string, it will attempt to convert it to the right format. + * + * @param key - the key to check + * @returns If the key is in the wrong format, then the fixed + * key will be returned. Otherwise null will be returned. * - * @typedef {Object} RoomKeyRequestBody */ +exports.Crypto = Crypto; +function fixBackupKey(key) { + if (typeof key !== "string" || key.indexOf(",") < 0) { + return null; + } + const fixedKey = Uint8Array.from(key.split(","), x => parseInt(x)); + return (0, _base.encodeBase64)(fixedKey); +} /** * Represents a received m.room_key_request event - * - * @property {string} userId user requesting the key - * @property {string} deviceId device requesting the key - * @property {string} requestId unique id for the request - * @property {module:crypto~RoomKeyRequestBody} requestBody - * @property {function()} share callback which, when called, will ask - * the relevant crypto algorithm implementation to share the keys for - * this request. */ - - class IncomingRoomKeyRequest { + /** user requesting the key */ + + /** device requesting the key */ + + /** unique id for the request */ + + /** + * callback which, when called, will ask + * the relevant crypto algorithm implementation to share the keys for + * this request. + */ + constructor(event) { const content = event.getContent(); this.userId = event.getSender(); this.deviceId = content.requesting_device_id; this.requestId = content.request_id; this.requestBody = content.body || {}; - this.share = () => { throw new Error("don't know how to share keys for this request yet"); }; } - } + /** * Represents a received m.room_key_request cancellation - * - * @property {string} userId user requesting the cancellation - * @property {string} deviceId device requesting the cancellation - * @property {string} requestId unique id for the request to be cancelled */ - - +exports.IncomingRoomKeyRequest = IncomingRoomKeyRequest; class IncomingRoomKeyRequestCancellation { + /** user requesting the cancellation */ + + /** device requesting the cancellation */ + + /** unique id for the request to be cancelled */ + constructor(event) { const content = event.getContent(); this.userId = event.getSender(); this.deviceId = content.requesting_device_id; this.requestId = content.request_id; } - } -/** - * The result of a (successful) call to decryptEvent. - * - * @typedef {Object} EventDecryptionResult - * - * @property {Object} clearEvent The plaintext payload for the event - * (typically containing type and content fields). - * - * @property {?string} senderCurve25519Key Key owned by the sender of this - * event. See {@link module:models/event.MatrixEvent#getSenderKey}. - * - * @property {?string} claimedEd25519Key ed25519 key claimed by the sender of - * this event. See - * {@link module:models/event.MatrixEvent#getClaimedEd25519Key}. - * - * @property {?Array} forwardingCurve25519KeyChain list of curve25519 - * keys involved in telling us about the senderCurve25519Key and - * claimedEd25519Key. See - * {@link module:models/event.MatrixEvent#getForwardingCurve25519KeyChain}. - */ -/** - * Fires when we receive a room key request - * - * @event module:client~MatrixClient#"crypto.roomKeyRequest" - * @param {module:crypto~IncomingRoomKeyRequest} req request details - */ - -/** - * Fires when we receive a room key request cancellation - * - * @event module:client~MatrixClient#"crypto.roomKeyRequestCancellation" - * @param {module:crypto~IncomingRoomKeyRequestCancellation} req - */ - -/** - * Fires when the app may wish to warn the user about something related - * the end-to-end crypto. - * - * @event module:client~MatrixClient#"crypto.warning" - * @param {string} type One of the strings listed above - */ +// a number of types are re-exported for backwards compatibility, in case any applications are referencing it. +//# sourceMappingURL=index.js.map /***/ }), /***/ 7664: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -43373,15 +152449,13 @@ class IncomingRoomKeyRequestCancellation { Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.deriveKey = deriveKey; exports.keyFromAuthData = keyFromAuthData; exports.keyFromPassphrase = keyFromPassphrase; -exports.deriveKey = deriveKey; - -var _randomstring = __webpack_require__(2495); - +var _randomstring = __nccwpck_require__(2495); +var _crypto = __nccwpck_require__(8532); /* -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2018 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -43395,26 +152469,27 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ + const DEFAULT_ITERATIONS = 500000; const DEFAULT_BITSIZE = 256; -async function keyFromAuthData(authData, password) { +/* eslint-disable camelcase */ + +/* eslint-enable camelcase */ + +function keyFromAuthData(authData, password) { if (!global.Olm) { throw new Error("Olm is not available"); } - if (!authData.private_key_salt || !authData.private_key_iterations) { throw new Error("Salt and/or iterations not found: " + "this backup cannot be restored with a passphrase"); } - - return await deriveKey(password, authData.private_key_salt, authData.private_key_iterations, authData.private_key_bits || DEFAULT_BITSIZE); + return deriveKey(password, authData.private_key_salt, authData.private_key_iterations, authData.private_key_bits || DEFAULT_BITSIZE); } - async function keyFromPassphrase(password) { if (!global.Olm) { throw new Error("Olm is not available"); } - const salt = (0, _randomstring.randomString)(32); const key = await deriveKey(password, salt, DEFAULT_ITERATIONS, DEFAULT_BITSIZE); return { @@ -43423,64 +152498,51 @@ async function keyFromPassphrase(password) { iterations: DEFAULT_ITERATIONS }; } - async function deriveKey(password, salt, iterations, numBits = DEFAULT_BITSIZE) { - const subtleCrypto = global.crypto.subtle; - const TextEncoder = global.TextEncoder; - - if (!subtleCrypto || !TextEncoder) { - // TODO: Implement this for node - throw new Error("Password-based backup is not avaiable on this platform"); + if (!_crypto.subtleCrypto || !_crypto.TextEncoder) { + throw new Error("Password-based backup is not available on this platform"); } - - const key = await subtleCrypto.importKey('raw', new TextEncoder().encode(password), { - name: 'PBKDF2' - }, false, ['deriveBits']); - const keybits = await subtleCrypto.deriveBits({ - name: 'PBKDF2', - salt: new TextEncoder().encode(salt), + const key = await _crypto.subtleCrypto.importKey("raw", new _crypto.TextEncoder().encode(password), { + name: "PBKDF2" + }, false, ["deriveBits"]); + const keybits = await _crypto.subtleCrypto.deriveBits({ + name: "PBKDF2", + salt: new _crypto.TextEncoder().encode(salt), iterations: iterations, - hash: 'SHA-512' + hash: "SHA-512" }, key, numBits); return new Uint8Array(keybits); } +//# sourceMappingURL=key_passphrase.js.map /***/ }), /***/ 7131: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OLM_ALGORITHM = exports.MEGOLM_BACKUP_ALGORITHM = exports.MEGOLM_ALGORITHM = void 0; exports.encryptMessageForDevice = encryptMessageForDevice; -exports.getExistingOlmSessions = getExistingOlmSessions; exports.ensureOlmSessionsForDevices = ensureOlmSessionsForDevices; -exports.verifySignature = verifySignature; +exports.getExistingOlmSessions = getExistingOlmSessions; +exports.isOlmEncrypted = isOlmEncrypted; exports.pkSign = pkSign; exports.pkVerify = pkVerify; -exports.encodeBase64 = encodeBase64; -exports.encodeUnpaddedBase64 = encodeUnpaddedBase64; -exports.decodeBase64 = decodeBase64; -exports.MEGOLM_BACKUP_ALGORITHM = exports.MEGOLM_ALGORITHM = exports.OLM_ALGORITHM = void 0; - -var _logger = __webpack_require__(3854); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _anotherJson = _interopRequireDefault(__webpack_require__(7775)); - -/* -Copyright 2016 OpenMarket Ltd -Copyright 2019 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +exports.verifySignature = verifySignature; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _anotherJson = _interopRequireDefault(__nccwpck_require__(7775)); +var _logger = __nccwpck_require__(3854); +var _event = __nccwpck_require__(7487); +var _utils = __nccwpck_require__(2557); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -43493,63 +152555,54 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -*/ - -/** - * @module olmlib - * +*/ /** * Utilities common to olm encryption algorithms */ - +var Algorithm = /*#__PURE__*/function (Algorithm) { + Algorithm["Olm"] = "m.olm.v1.curve25519-aes-sha2"; + Algorithm["Megolm"] = "m.megolm.v1.aes-sha2"; + Algorithm["MegolmBackup"] = "m.megolm_backup.v1.curve25519-aes-sha2"; + return Algorithm; +}(Algorithm || {}); /** * matrix algorithm tag for olm */ -const OLM_ALGORITHM = "m.olm.v1.curve25519-aes-sha2"; +const OLM_ALGORITHM = exports.OLM_ALGORITHM = Algorithm.Olm; + /** * matrix algorithm tag for megolm */ +const MEGOLM_ALGORITHM = exports.MEGOLM_ALGORITHM = Algorithm.Megolm; -exports.OLM_ALGORITHM = OLM_ALGORITHM; -const MEGOLM_ALGORITHM = "m.megolm.v1.aes-sha2"; /** * matrix algorithm tag for megolm backups */ - -exports.MEGOLM_ALGORITHM = MEGOLM_ALGORITHM; -const MEGOLM_BACKUP_ALGORITHM = "m.megolm_backup.v1.curve25519-aes-sha2"; +const MEGOLM_BACKUP_ALGORITHM = exports.MEGOLM_BACKUP_ALGORITHM = Algorithm.MegolmBackup; /** * Encrypt an event payload for an Olm device * - * @param {Object} resultsObject The `ciphertext` property + * @param resultsObject - The `ciphertext` property * of the m.room.encrypted event to which to add our result * - * @param {string} ourUserId - * @param {string} ourDeviceId - * @param {module:crypto/OlmDevice} olmDevice olm.js wrapper - * @param {string} recipientUserId - * @param {module:crypto/deviceinfo} recipientDevice - * @param {object} payloadFields fields to include in the encrypted payload + * @param olmDevice - olm.js wrapper + * @param payloadFields - fields to include in the encrypted payload * * Returns a promise which resolves (to undefined) when the payload * has been encrypted into `resultsObject` */ - -exports.MEGOLM_BACKUP_ALGORITHM = MEGOLM_BACKUP_ALGORITHM; - async function encryptMessageForDevice(resultsObject, ourUserId, ourDeviceId, olmDevice, recipientUserId, recipientDevice, payloadFields) { const deviceKey = recipientDevice.getIdentityKey(); const sessionId = await olmDevice.getSessionIdForDevice(deviceKey); - if (sessionId === null) { // If we don't have a session for a device then // we can't encrypt a message for it. + _logger.logger.log(`[olmlib.encryptMessageForDevice] Unable to find Olm session for device ` + `${recipientUserId}:${recipientDevice.deviceId}`); return; } - - _logger.logger.log("Using sessionid " + sessionId + " for device " + recipientUserId + ":" + recipientDevice.deviceId); - - const payload = { + _logger.logger.log(`[olmlib.encryptMessageForDevice] Using Olm session ${sessionId} for device ` + `${recipientUserId}:${recipientDevice.deviceId}`); + const payload = _objectSpread({ sender: ourUserId, + // TODO this appears to no longer be used whatsoever sender_device: ourDeviceId, // Include the Ed25519 key so that the recipient knows what // device this message came from. @@ -43560,114 +152613,125 @@ async function encryptMessageForDevice(resultsObject, ourUserId, ourDeviceId, ol // the curve25519 key and the ed25519 key are owned by // the same device. keys: { - "ed25519": olmDevice.deviceEd25519Key + ed25519: olmDevice.deviceEd25519Key }, // include the recipient device details in the payload, // to avoid unknown key attacks, per // https://github.com/vector-im/vector-web/issues/2483 recipient: recipientUserId, recipient_keys: { - "ed25519": recipientDevice.getFingerprint() + ed25519: recipientDevice.getFingerprint() } - }; // TODO: technically, a bunch of that stuff only needs to be included for + }, payloadFields); + + // TODO: technically, a bunch of that stuff only needs to be included for // pre-key messages: after that, both sides know exactly which devices are // involved in the session. If we're looking to reduce data transfer in the // future, we could elide them for subsequent messages. - utils.extend(payload, payloadFields); resultsObject[deviceKey] = await olmDevice.encryptMessage(deviceKey, sessionId, JSON.stringify(payload)); } /** * Get the existing olm sessions for the given devices, and the devices that * don't have olm sessions. * - * @param {module:crypto/OlmDevice} olmDevice * - * @param {module:base-apis~MatrixBaseApis} baseApis * - * @param {object} devicesByUser - * map from userid to list of devices to ensure sessions for + * @param devicesByUser - map from userid to list of devices to ensure sessions for * - * @return {Promise} resolves to an array. The first element of the array is a + * @returns resolves to an array. The first element of the array is a * a map of user IDs to arrays of deviceInfo, representing the devices that * don't have established olm sessions. The second element of the array is - * a map from userId to deviceId to {@link module:crypto~OlmSessionResult} + * a map from userId to deviceId to {@link OlmSessionResult} */ - - async function getExistingOlmSessions(olmDevice, baseApis, devicesByUser) { - const devicesWithoutSession = {}; - const sessions = {}; + // map user Id → DeviceInfo[] + const devicesWithoutSession = new _utils.MapWithDefault(() => []); + // map user Id → device Id → IExistingOlmSession + const sessions = new _utils.MapWithDefault(() => new Map()); const promises = []; - for (const [userId, devices] of Object.entries(devicesByUser)) { for (const deviceInfo of devices) { const deviceId = deviceInfo.deviceId; const key = deviceInfo.getIdentityKey(); promises.push((async () => { const sessionId = await olmDevice.getSessionIdForDevice(key, true); - if (sessionId === null) { - devicesWithoutSession[userId] = devicesWithoutSession[userId] || []; - devicesWithoutSession[userId].push(deviceInfo); + devicesWithoutSession.getOrCreate(userId).push(deviceInfo); } else { - sessions[userId] = sessions[userId] || {}; - sessions[userId][deviceId] = { + sessions.getOrCreate(userId).set(deviceId, { device: deviceInfo, sessionId: sessionId - }; + }); } })()); } } - await Promise.all(promises); return [devicesWithoutSession, sessions]; } + /** * Try to make sure we have established olm sessions for the given devices. * - * @param {module:crypto/OlmDevice} olmDevice + * @param devicesByUser - map from userid to list of devices to ensure sessions for * - * @param {module:base-apis~MatrixBaseApis} baseApis - * - * @param {object} devicesByUser - * map from userid to list of devices to ensure sessions for - * - * @param {boolean} [force=false] If true, establish a new session even if one + * @param force - If true, establish a new session even if one * already exists. * - * @param {Number} [otkTimeout] The timeout in milliseconds when requesting + * @param otkTimeout - The timeout in milliseconds when requesting * one-time keys for establishing new olm sessions. * - * @param {Array} [failedServers] An array to fill with remote servers that + * @param failedServers - An array to fill with remote servers that * failed to respond to one-time-key requests. * - * @return {Promise} resolves once the sessions are complete, to + * @param log - A possibly customised log + * + * @returns resolves once the sessions are complete, to * an Object mapping from userId to deviceId to - * {@link module:crypto~OlmSessionResult} + * {@link OlmSessionResult} */ - - -async function ensureOlmSessionsForDevices(olmDevice, baseApis, devicesByUser, force, otkTimeout, failedServers) { - if (typeof force === "number") { - failedServers = otkTimeout; - otkTimeout = force; - force = false; - } - - const devicesWithoutSession = [// [userId, deviceId], ... +async function ensureOlmSessionsForDevices(olmDevice, baseApis, devicesByUser, force = false, otkTimeout, failedServers, log = _logger.logger) { + const devicesWithoutSession = [ + // [userId, deviceId], ... ]; - const result = {}; - const resolveSession = {}; - - for (const [userId, devices] of Object.entries(devicesByUser)) { - result[userId] = {}; + // map user Id → device Id → IExistingOlmSession + const result = new Map(); + // map device key → resolve session fn + const resolveSession = new Map(); + // Mark all sessions this task intends to update as in progress. It is + // important to do this for all devices this task cares about in a single + // synchronous operation, as otherwise it is possible to have deadlocks + // where multiple tasks wait indefinitely on another task to update some set + // of common devices. + for (const devices of devicesByUser.values()) { + for (const deviceInfo of devices) { + const key = deviceInfo.getIdentityKey(); + if (key === olmDevice.deviceCurve25519Key) { + // We don't start sessions with ourself, so there's no need to + // mark it in progress. + continue; + } + if (!olmDevice.sessionsInProgress[key]) { + // pre-emptively mark the session as in-progress to avoid race + // conditions. If we find that we already have a session, then + // we'll resolve + olmDevice.sessionsInProgress[key] = new Promise(resolve => { + resolveSession.set(key, v => { + delete olmDevice.sessionsInProgress[key]; + resolve(v); + }); + }); + } + } + } + for (const [userId, devices] of devicesByUser) { + const resultDevices = new Map(); + result.set(userId, resultDevices); for (const deviceInfo of devices) { const deviceId = deviceInfo.deviceId; const key = deviceInfo.getIdentityKey(); - if (key === olmDevice.deviceCurve25519Key) { // We should never be trying to start a session with ourself. // Apart from talking to yourself being the first sign of madness, @@ -43676,333 +152740,254 @@ async function ensureOlmSessionsForDevices(olmDevice, baseApis, devicesByUser, f // new chain when this side has an active sender chain. // If you see this message being logged in the wild, we should find // the thing that is trying to send Olm messages to itself and fix it. - _logger.logger.info("Attempted to start session with ourself! Ignoring"); // We must fill in the section in the return value though, as callers + log.info("Attempted to start session with ourself! Ignoring"); + // We must fill in the section in the return value though, as callers // expect it to be there. - - - result[userId][deviceId] = { + resultDevices.set(deviceId, { device: deviceInfo, sessionId: null - }; + }); continue; } - - if (!olmDevice._sessionsInProgress[key]) { - // pre-emptively mark the session as in-progress to avoid race - // conditions. If we find that we already have a session, then - // we'll resolve - olmDevice._sessionsInProgress[key] = new Promise((resolve, reject) => { - resolveSession[key] = { - resolve: (...args) => { - delete olmDevice._sessionsInProgress[key]; - resolve(...args); - }, - reject: (...args) => { - delete olmDevice._sessionsInProgress[key]; - reject(...args); - } - }; - }); - } - - const sessionId = await olmDevice.getSessionIdForDevice(key, resolveSession[key]); - - if (sessionId !== null && resolveSession[key]) { + const forWhom = `for ${key} (${userId}:${deviceId})`; + const sessionId = await olmDevice.getSessionIdForDevice(key, !!resolveSession.get(key), log); + const resolveSessionFn = resolveSession.get(key); + if (sessionId !== null && resolveSessionFn) { // we found a session, but we had marked the session as - // in-progress, so unmark it and unblock anything that was - // waiting - delete olmDevice._sessionsInProgress[key]; - resolveSession[key].resolve(); - delete resolveSession[key]; + // in-progress, so resolve it now, which will unmark it and + // unblock anything that was waiting + resolveSessionFn(); } - if (sessionId === null || force) { if (force) { - _logger.logger.info("Forcing new Olm session for " + userId + ":" + deviceId); + log.info(`Forcing new Olm session ${forWhom}`); } else { - _logger.logger.info("Making new Olm session for " + userId + ":" + deviceId); + log.info(`Making new Olm session ${forWhom}`); } - devicesWithoutSession.push([userId, deviceId]); } - - result[userId][deviceId] = { + resultDevices.set(deviceId, { device: deviceInfo, sessionId: sessionId - }; + }); } } - if (devicesWithoutSession.length === 0) { return result; } - const oneTimeKeyAlgorithm = "signed_curve25519"; let res; - + let taskDetail = `one-time keys for ${devicesWithoutSession.length} devices`; try { + log.debug(`Claiming ${taskDetail}`); res = await baseApis.claimOneTimeKeys(devicesWithoutSession, oneTimeKeyAlgorithm, otkTimeout); + log.debug(`Claimed ${taskDetail}`); } catch (e) { - for (const resolver of Object.values(resolveSession)) { - resolver.resolve(); + for (const resolver of resolveSession.values()) { + resolver(); } - - _logger.logger.log("failed to claim one-time keys", e, devicesWithoutSession); - + log.debug(`Failed to claim ${taskDetail}`, e, devicesWithoutSession); throw e; } - if (failedServers && "failures" in res) { failedServers.push(...Object.keys(res.failures)); } - - const otk_res = res.one_time_keys || {}; + const otkResult = res.one_time_keys || {}; const promises = []; - - for (const [userId, devices] of Object.entries(devicesByUser)) { - const userRes = otk_res[userId] || {}; - - for (let j = 0; j < devices.length; j++) { - const deviceInfo = devices[j]; + for (const [userId, devices] of devicesByUser) { + const userRes = otkResult[userId] || {}; + for (const deviceInfo of devices) { + var _result$get; const deviceId = deviceInfo.deviceId; const key = deviceInfo.getIdentityKey(); - if (key === olmDevice.deviceCurve25519Key) { // We've already logged about this above. Skip here too // otherwise we'll log saying there are no one-time keys // which will be confusing. continue; } - - if (result[userId][deviceId].sessionId && !force) { + if ((_result$get = result.get(userId)) !== null && _result$get !== void 0 && (_result$get = _result$get.get(deviceId)) !== null && _result$get !== void 0 && _result$get.sessionId && !force) { // we already have a result for this device continue; } - const deviceRes = userRes[deviceId] || {}; let oneTimeKey = null; - for (const keyId in deviceRes) { if (keyId.indexOf(oneTimeKeyAlgorithm + ":") === 0) { oneTimeKey = deviceRes[keyId]; } } - if (!oneTimeKey) { - const msg = "No one-time keys (alg=" + oneTimeKeyAlgorithm + ") for device " + userId + ":" + deviceId; - - _logger.logger.warn(msg); - - if (resolveSession[key]) { - resolveSession[key].resolve(); - } - + var _resolveSession$get; + log.warn(`No one-time keys (alg=${oneTimeKeyAlgorithm}) ` + `for device ${userId}:${deviceId}`); + (_resolveSession$get = resolveSession.get(key)) === null || _resolveSession$get === void 0 || _resolveSession$get(); continue; } - promises.push(_verifyKeyAndStartSession(olmDevice, oneTimeKey, userId, deviceInfo).then(sid => { - if (resolveSession[key]) { - resolveSession[key].resolve(sid); - } - - result[userId][deviceId].sessionId = sid; + var _resolveSession$get2, _result$get2; + (_resolveSession$get2 = resolveSession.get(key)) === null || _resolveSession$get2 === void 0 || _resolveSession$get2(sid !== null && sid !== void 0 ? sid : undefined); + const deviceInfo = (_result$get2 = result.get(userId)) === null || _result$get2 === void 0 ? void 0 : _result$get2.get(deviceId); + if (deviceInfo) deviceInfo.sessionId = sid; }, e => { - if (resolveSession[key]) { - resolveSession[key].resolve(); - } - + var _resolveSession$get3; + (_resolveSession$get3 = resolveSession.get(key)) === null || _resolveSession$get3 === void 0 || _resolveSession$get3(); throw e; })); } } - + taskDetail = `Olm sessions for ${promises.length} devices`; + log.debug(`Starting ${taskDetail}`); await Promise.all(promises); + log.debug(`Started ${taskDetail}`); return result; } - async function _verifyKeyAndStartSession(olmDevice, oneTimeKey, userId, deviceInfo) { const deviceId = deviceInfo.deviceId; - try { await verifySignature(olmDevice, oneTimeKey, userId, deviceId, deviceInfo.getFingerprint()); } catch (e) { _logger.logger.error("Unable to verify signature on one-time key for device " + userId + ":" + deviceId + ":", e); - return null; } - let sid; - try { sid = await olmDevice.createOutboundSession(deviceInfo.getIdentityKey(), oneTimeKey.key); } catch (e) { // possibly a bad key _logger.logger.error("Error starting olm session with device " + userId + ":" + deviceId + ": " + e); - return null; } - _logger.logger.log("Started new olm sessionid " + sid + " for device " + userId + ":" + deviceId); - return sid; } /** * Verify the signature on an object * - * @param {module:crypto/OlmDevice} olmDevice olm wrapper to use for verify op + * @param olmDevice - olm wrapper to use for verify op * - * @param {Object} obj object to check signature on. + * @param obj - object to check signature on. * - * @param {string} signingUserId ID of the user whose signature should be checked + * @param signingUserId - ID of the user whose signature should be checked * - * @param {string} signingDeviceId ID of the device whose signature should be checked + * @param signingDeviceId - ID of the device whose signature should be checked * - * @param {string} signingKey base64-ed ed25519 public key + * @param signingKey - base64-ed ed25519 public key * * Returns a promise which resolves (to undefined) if the the signature is good, * or rejects with an Error if it is bad. */ - - async function verifySignature(olmDevice, obj, signingUserId, signingDeviceId, signingKey) { const signKeyId = "ed25519:" + signingDeviceId; const signatures = obj.signatures || {}; const userSigs = signatures[signingUserId] || {}; const signature = userSigs[signKeyId]; - if (!signature) { throw Error("No signature"); - } // prepare the canonical json: remove unsigned and signatures, and stringify with - // anotherjson - + } + // prepare the canonical json: remove unsigned and signatures, and stringify with anotherjson const mangledObj = Object.assign({}, obj); - delete mangledObj.unsigned; + if ("unsigned" in mangledObj) { + delete mangledObj.unsigned; + } delete mangledObj.signatures; - const json = _anotherJson.default.stringify(mangledObj); - olmDevice.verifySignature(signingKey, json, signature); } + /** * Sign a JSON object using public key cryptography - * @param {Object} obj Object to sign. The object will be modified to include + * @param obj - Object to sign. The object will be modified to include * the new signature - * @param {Olm.PkSigning|Uint8Array} key the signing object or the private key + * @param key - the signing object or the private key * seed - * @param {string} userId The user ID who owns the signing key - * @param {string} pubkey The public key (ignored if key is a seed) - * @returns {string} the signature for the object + * @param userId - The user ID who owns the signing key + * @param pubKey - The public key (ignored if key is a seed) + * @returns the signature for the object */ - - -function pkSign(obj, key, userId, pubkey) { +function pkSign(obj, key, userId, pubKey) { let createdKey = false; - if (key instanceof Uint8Array) { const keyObj = new global.Olm.PkSigning(); - pubkey = keyObj.init_with_seed(key); + pubKey = keyObj.init_with_seed(key); key = keyObj; createdKey = true; } - const sigs = obj.signatures || {}; delete obj.signatures; const unsigned = obj.unsigned; if (obj.unsigned) delete obj.unsigned; - try { const mysigs = sigs[userId] || {}; sigs[userId] = mysigs; - return mysigs['ed25519:' + pubkey] = key.sign(_anotherJson.default.stringify(obj)); + return mysigs["ed25519:" + pubKey] = key.sign(_anotherJson.default.stringify(obj)); } finally { obj.signatures = sigs; if (unsigned) obj.unsigned = unsigned; - if (createdKey) { key.free(); } } } + /** * Verify a signed JSON object - * @param {Object} obj Object to verify - * @param {string} pubkey The public key to use to verify - * @param {string} userId The user ID who signed the object + * @param obj - Object to verify + * @param pubKey - The public key to use to verify + * @param userId - The user ID who signed the object */ - - -function pkVerify(obj, pubkey, userId) { - const keyId = "ed25519:" + pubkey; - +function pkVerify(obj, pubKey, userId) { + const keyId = "ed25519:" + pubKey; if (!(obj.signatures && obj.signatures[userId] && obj.signatures[userId][keyId])) { throw new Error("No signature"); } - const signature = obj.signatures[userId][keyId]; const util = new global.Olm.Utility(); const sigs = obj.signatures; delete obj.signatures; const unsigned = obj.unsigned; if (obj.unsigned) delete obj.unsigned; - try { - util.ed25519_verify(pubkey, _anotherJson.default.stringify(obj), signature); + util.ed25519_verify(pubKey, _anotherJson.default.stringify(obj), signature); } finally { obj.signatures = sigs; if (unsigned) obj.unsigned = unsigned; util.free(); } } + /** - * Encode a typed array of uint8 as base64. - * @param {Uint8Array} uint8Array The data to encode. - * @return {string} The base64. + * Check that an event was encrypted using olm. */ - - -function encodeBase64(uint8Array) { - return Buffer.from(uint8Array).toString("base64"); -} -/** - * Encode a typed array of uint8 as unpadded base64. - * @param {Uint8Array} uint8Array The data to encode. - * @return {string} The unpadded base64. - */ - - -function encodeUnpaddedBase64(uint8Array) { - return encodeBase64(uint8Array).replace(/=+$/g, ''); -} -/** - * Decode a base64 string to a typed array of uint8. - * @param {string} base64 The base64 to decode. - * @return {Uint8Array} The decoded data. - */ - - -function decodeBase64(base64) { - return Buffer.from(base64, "base64"); +function isOlmEncrypted(event) { + if (!event.getSenderKey()) { + _logger.logger.error("Event has no sender key (not encrypted?)"); + return false; + } + if (event.getWireType() !== _event.EventType.RoomMessageEncrypted || !["m.olm.v1.curve25519-aes-sha2"].includes(event.getWireContent().algorithm)) { + _logger.logger.error("Event was not encrypted using an appropriate algorithm"); + return false; + } + return true; } +//# sourceMappingURL=olmlib.js.map /***/ }), /***/ 4531: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.encodeRecoveryKey = encodeRecoveryKey; exports.decodeRecoveryKey = decodeRecoveryKey; - -var _bs = _interopRequireDefault(__webpack_require__(830)); - +exports.encodeRecoveryKey = encodeRecoveryKey; +var bs58 = _interopRequireWildcard(__nccwpck_require__(830)); +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; } /* Copyright 2018 New Vector Ltd @@ -44018,77 +153003,59 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ + // picked arbitrarily but to try & avoid clashing with any bitcoin ones // (which are also base58 encoded, but bitcoin's involve a lot more hashing) -const OLM_RECOVERY_KEY_PREFIX = [0x8B, 0x01]; - +const OLM_RECOVERY_KEY_PREFIX = [0x8b, 0x01]; +const KEY_SIZE = 32; function encodeRecoveryKey(key) { - const buf = new Buffer(OLM_RECOVERY_KEY_PREFIX.length + key.length + 1); + var _base58key$match; + const buf = Buffer.alloc(OLM_RECOVERY_KEY_PREFIX.length + key.length + 1); buf.set(OLM_RECOVERY_KEY_PREFIX, 0); buf.set(key, OLM_RECOVERY_KEY_PREFIX.length); let parity = 0; - for (let i = 0; i < buf.length - 1; ++i) { parity ^= buf[i]; } - buf[buf.length - 1] = parity; - - const base58key = _bs.default.encode(buf); - - return base58key.match(/.{1,4}/g).join(" "); + const base58key = bs58.encode(buf); + return (_base58key$match = base58key.match(/.{1,4}/g)) === null || _base58key$match === void 0 ? void 0 : _base58key$match.join(" "); } - -function decodeRecoveryKey(recoverykey) { - const result = _bs.default.decode(recoverykey.replace(/ /g, '')); - +function decodeRecoveryKey(recoveryKey) { + const result = bs58.decode(recoveryKey.replace(/ /g, "")); let parity = 0; - for (const b of result) { parity ^= b; } - if (parity !== 0) { throw new Error("Incorrect parity"); } - for (let i = 0; i < OLM_RECOVERY_KEY_PREFIX.length; ++i) { if (result[i] !== OLM_RECOVERY_KEY_PREFIX[i]) { throw new Error("Incorrect prefix"); } } - - if (result.length !== OLM_RECOVERY_KEY_PREFIX.length + global.Olm.PRIVATE_KEY_LENGTH + 1) { + if (result.length !== OLM_RECOVERY_KEY_PREFIX.length + KEY_SIZE + 1) { throw new Error("Incorrect length"); } - - return Uint8Array.from(result.slice(OLM_RECOVERY_KEY_PREFIX.length, OLM_RECOVERY_KEY_PREFIX.length + global.Olm.PRIVATE_KEY_LENGTH)); + return Uint8Array.from(result.slice(OLM_RECOVERY_KEY_PREFIX.length, OLM_RECOVERY_KEY_PREFIX.length + KEY_SIZE)); } +//# sourceMappingURL=recoverykey.js.map /***/ }), -/***/ 4717: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 2356: +/***/ ((__unused_webpack_module, exports) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.upgradeDatabase = upgradeDatabase; -exports.Backend = exports.VERSION = void 0; - -var _logger = __webpack_require__(3854); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - +exports.SESSION_BATCH_SIZE = exports.MigrationState = exports.ACCOUNT_OBJECT_KEY_MIGRATION_STATE = void 0; /* -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2020 The Matrix.org Foundation C.I.C. +Copyright 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -44102,337 +153069,404 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const VERSION = 9; + +/** + * Internal module. Definitions for storage for the crypto module + */ + +/** + * Abstraction of things that can store data required for end-to-end encryption + */ + +/** Data on a Megolm session */ + +/** Extended data on a Megolm session */ + +/** Data on an Olm session */ + +/** + * Represents an outgoing room key request + */ + +/** + * Keys for the `account` object store to store the migration state. + * Values are defined in `MigrationState`. + * @internal + */ +const ACCOUNT_OBJECT_KEY_MIGRATION_STATE = exports.ACCOUNT_OBJECT_KEY_MIGRATION_STATE = "migrationState"; + +/** + * A record of which steps have been completed in the libolm to Rust Crypto migration. + * + * Used by {@link CryptoStore#getMigrationState} and {@link CryptoStore#setMigrationState}. + * + * @internal + */ +let MigrationState = exports.MigrationState = /*#__PURE__*/function (MigrationState) { + MigrationState[MigrationState["NOT_STARTED"] = 0] = "NOT_STARTED"; + MigrationState[MigrationState["INITIAL_DATA_MIGRATED"] = 1] = "INITIAL_DATA_MIGRATED"; + MigrationState[MigrationState["OLM_SESSIONS_MIGRATED"] = 2] = "OLM_SESSIONS_MIGRATED"; + MigrationState[MigrationState["MEGOLM_SESSIONS_MIGRATED"] = 3] = "MEGOLM_SESSIONS_MIGRATED"; + MigrationState[MigrationState["ROOM_SETTINGS_MIGRATED"] = 4] = "ROOM_SETTINGS_MIGRATED"; + MigrationState[MigrationState["INITIAL_OWN_KEY_QUERY_DONE"] = 5] = "INITIAL_OWN_KEY_QUERY_DONE"; + return MigrationState; +}({}); +/** + * The size of batches to be returned by {@link CryptoStore#getEndToEndSessionsBatch} and + * {@link CryptoStore#getEndToEndInboundGroupSessionsBatch}. + */ +const SESSION_BATCH_SIZE = exports.SESSION_BATCH_SIZE = 50; +//# sourceMappingURL=base.js.map + +/***/ }), + +/***/ 4717: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.VERSION = exports.Backend = void 0; +exports.upgradeDatabase = upgradeDatabase; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); +var _base = __nccwpck_require__(2356); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +/* +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const PROFILE_TRANSACTIONS = false; + /** * Implementation of a CryptoStore which is backed by an existing * IndexedDB connection. Generally you want IndexedDBCryptoStore * which connects to the database and defers to one of these. * - * @implements {module:crypto/store/base~CryptoStore} + * @internal */ - -exports.VERSION = VERSION; - class Backend { /** - * @param {IDBDatabase} db */ constructor(db) { - this._db = db; // make sure we close the db on `onversionchange` - otherwise + (0, _defineProperty2.default)(this, "nextTxnId", 0); + this.db = db; + // make sure we close the db on `onversionchange` - otherwise // attempts to delete the database will block (and subsequent // attempts to re-create it will also block). - - db.onversionchange = ev => { - _logger.logger.log(`versionchange for indexeddb ${this._dbName}: closing`); - + db.onversionchange = () => { + _logger.logger.log(`versionchange for indexeddb ${this.db.name}: closing`); db.close(); }; } + async containsData() { + throw Error("Not implemented for Backend"); + } + async startup() { + // No work to do, as the startup is done by the caller (e.g IndexedDBCryptoStore) + // by passing us a ready IDBDatabase instance + return this; + } + async deleteAllData() { + throw Error("This is not implemented, call IDBFactory::deleteDatabase(dbName) instead."); + } + + /** + * Get data on how much of the libolm to Rust Crypto migration has been done. + * + * Implementation of {@link CryptoStore.getMigrationState}. + */ + async getMigrationState() { + let migrationState = _base.MigrationState.NOT_STARTED; + await this.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + const objectStore = txn.objectStore(_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT); + const getReq = objectStore.get(_base.ACCOUNT_OBJECT_KEY_MIGRATION_STATE); + getReq.onsuccess = () => { + var _getReq$result; + migrationState = (_getReq$result = getReq.result) !== null && _getReq$result !== void 0 ? _getReq$result : _base.MigrationState.NOT_STARTED; + }; + }); + return migrationState; + } + + /** + * Set data on how much of the libolm to Rust Crypto migration has been done. + * + * Implementation of {@link CryptoStore.setMigrationState}. + */ + async setMigrationState(migrationState) { + await this.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + const objectStore = txn.objectStore(_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT); + objectStore.put(migrationState, _base.ACCOUNT_OBJECT_KEY_MIGRATION_STATE); + }); + } + /** * Look for an existing outgoing room key request, and if none is found, * add a new one * - * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request * - * @returns {Promise} resolves to - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the + * @returns resolves to + * {@link OutgoingRoomKeyRequest}: either the * same instance as passed in, or the existing one. */ - - getOrAddOutgoingRoomKeyRequest(request) { const requestBody = request.requestBody; return new Promise((resolve, reject) => { - const txn = this._db.transaction("outgoingRoomKeyRequests", "readwrite"); - - txn.onerror = reject; // first see if we already have an entry for this request. + const txn = this.db.transaction("outgoingRoomKeyRequests", "readwrite"); + txn.onerror = reject; + // first see if we already have an entry for this request. this._getOutgoingRoomKeyRequest(txn, requestBody, existing => { if (existing) { // this entry matches the request - return it. _logger.logger.log(`already have key request outstanding for ` + `${requestBody.room_id} / ${requestBody.session_id}: ` + `not sending another`); - resolve(existing); return; - } // we got to the end of the list without finding a match + } + + // we got to the end of the list without finding a match // - add the new request. - - _logger.logger.log(`enqueueing key request for ${requestBody.room_id} / ` + requestBody.session_id); - txn.oncomplete = () => { resolve(request); }; - const store = txn.objectStore("outgoingRoomKeyRequests"); store.add(request); }); }); } + /** * Look for an existing room key request * - * @param {module:crypto~RoomKeyRequestBody} requestBody - * existing request to look for + * @param requestBody - existing request to look for * - * @return {Promise} resolves to the matching - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if + * @returns resolves to the matching + * {@link OutgoingRoomKeyRequest}, or null if * not found */ - - getOutgoingRoomKeyRequest(requestBody) { return new Promise((resolve, reject) => { - const txn = this._db.transaction("outgoingRoomKeyRequests", "readonly"); - + const txn = this.db.transaction("outgoingRoomKeyRequests", "readonly"); txn.onerror = reject; - this._getOutgoingRoomKeyRequest(txn, requestBody, existing => { resolve(existing); }); }); } + /** * look for an existing room key request in the db * - * @private - * @param {IDBTransaction} txn database transaction - * @param {module:crypto~RoomKeyRequestBody} requestBody - * existing request to look for - * @param {Function} callback function to call with the results of the + * @internal + * @param txn - database transaction + * @param requestBody - existing request to look for + * @param callback - function to call with the results of the * search. Either passed a matching - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if + * {@link OutgoingRoomKeyRequest}, or null if * not found. */ - - + // eslint-disable-next-line @typescript-eslint/naming-convention _getOutgoingRoomKeyRequest(txn, requestBody, callback) { const store = txn.objectStore("outgoingRoomKeyRequests"); const idx = store.index("session"); const cursorReq = idx.openCursor([requestBody.room_id, requestBody.session_id]); - - cursorReq.onsuccess = ev => { - const cursor = ev.target.result; - + cursorReq.onsuccess = () => { + const cursor = cursorReq.result; if (!cursor) { // no match found callback(null); return; } - const existing = cursor.value; - - if (utils.deepCompare(existing.requestBody, requestBody)) { + if ((0, _utils.deepCompare)(existing.requestBody, requestBody)) { // got a match callback(existing); return; - } // look at the next entry in the index - + } + // look at the next entry in the index cursor.continue(); }; } + /** * Look for room key requests by state * - * @param {Array} wantedStates list of acceptable states + * @param wantedStates - list of acceptable states * - * @return {Promise} resolves to the a - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if + * @returns resolves to the a + * {@link OutgoingRoomKeyRequest}, or null if * there are no pending requests in those states. If there are multiple * requests in those states, an arbitrary one is chosen. */ - - getOutgoingRoomKeyRequestByState(wantedStates) { if (wantedStates.length === 0) { return Promise.resolve(null); - } // this is a bit tortuous because we need to make sure we do the lookup + } + + // this is a bit tortuous because we need to make sure we do the lookup // in a single transaction, to avoid having a race with the insertion // code. + // index into the wantedStates array - - let stateIndex = 0; let result; - - function onsuccess(ev) { - const cursor = ev.target.result; - + function onsuccess() { + const cursor = this.result; if (cursor) { // got a match result = cursor.value; return; - } // try the next state in the list - + } + // try the next state in the list stateIndex++; - if (stateIndex >= wantedStates.length) { // no matches return; } - const wantedState = wantedStates[stateIndex]; - const cursorReq = ev.target.source.openCursor(wantedState); + const cursorReq = this.source.openCursor(wantedState); cursorReq.onsuccess = onsuccess; } - - const txn = this._db.transaction("outgoingRoomKeyRequests", "readonly"); - + const txn = this.db.transaction("outgoingRoomKeyRequests", "readonly"); const store = txn.objectStore("outgoingRoomKeyRequests"); const wantedState = wantedStates[stateIndex]; const cursorReq = store.index("state").openCursor(wantedState); cursorReq.onsuccess = onsuccess; return promiseifyTxn(txn).then(() => result); } + /** * - * @param {Number} wantedState - * @return {Promise>} All elements in a given state + * @returns All elements in a given state */ - - getAllOutgoingRoomKeyRequestsByState(wantedState) { return new Promise((resolve, reject) => { - const txn = this._db.transaction("outgoingRoomKeyRequests", "readonly"); - + const txn = this.db.transaction("outgoingRoomKeyRequests", "readonly"); const store = txn.objectStore("outgoingRoomKeyRequests"); const index = store.index("state"); const request = index.getAll(wantedState); - - request.onsuccess = ev => resolve(ev.target.result); - - request.onerror = ev => reject(ev.target.error); + request.onsuccess = () => resolve(request.result); + request.onerror = () => reject(request.error); }); } - getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates) { let stateIndex = 0; const results = []; - - function onsuccess(ev) { - const cursor = ev.target.result; - + function onsuccess() { + const cursor = this.result; if (cursor) { const keyReq = cursor.value; - - if (keyReq.recipients.includes({ - userId, - deviceId - })) { + if (keyReq.recipients.some(recipient => recipient.userId === userId && recipient.deviceId === deviceId)) { results.push(keyReq); } - cursor.continue(); } else { // try the next state in the list stateIndex++; - if (stateIndex >= wantedStates.length) { // no matches return; } - const wantedState = wantedStates[stateIndex]; - const cursorReq = ev.target.source.openCursor(wantedState); + const cursorReq = this.source.openCursor(wantedState); cursorReq.onsuccess = onsuccess; } } - - const txn = this._db.transaction("outgoingRoomKeyRequests", "readonly"); - + const txn = this.db.transaction("outgoingRoomKeyRequests", "readonly"); const store = txn.objectStore("outgoingRoomKeyRequests"); const wantedState = wantedStates[stateIndex]; const cursorReq = store.index("state").openCursor(wantedState); cursorReq.onsuccess = onsuccess; return promiseifyTxn(txn).then(() => results); } + /** * Look for an existing room key request by id and state, and update it if * found * - * @param {string} requestId ID of request to update - * @param {number} expectedState state we expect to find the request in - * @param {Object} updates name/value map of updates to apply + * @param requestId - ID of request to update + * @param expectedState - state we expect to find the request in + * @param updates - name/value map of updates to apply * - * @returns {Promise} resolves to - * {@link module:crypto/store/base~OutgoingRoomKeyRequest} + * @returns resolves to + * {@link OutgoingRoomKeyRequest} * updated request, or null if no matching row was found */ - - updateOutgoingRoomKeyRequest(requestId, expectedState, updates) { let result = null; - - function onsuccess(ev) { - const cursor = ev.target.result; - + function onsuccess() { + const cursor = this.result; if (!cursor) { return; } - const data = cursor.value; - if (data.state != expectedState) { _logger.logger.warn(`Cannot update room key request from ${expectedState} ` + `as it was already updated to ${data.state}`); - return; } - Object.assign(data, updates); cursor.update(data); result = data; } - - const txn = this._db.transaction("outgoingRoomKeyRequests", "readwrite"); - + const txn = this.db.transaction("outgoingRoomKeyRequests", "readwrite"); const cursorReq = txn.objectStore("outgoingRoomKeyRequests").openCursor(requestId); cursorReq.onsuccess = onsuccess; return promiseifyTxn(txn).then(() => result); } + /** * Look for an existing room key request by id and state, and delete it if * found * - * @param {string} requestId ID of request to update - * @param {number} expectedState state we expect to find the request in + * @param requestId - ID of request to update + * @param expectedState - state we expect to find the request in * - * @returns {Promise} resolves once the operation is completed + * @returns resolves once the operation is completed */ - - deleteOutgoingRoomKeyRequest(requestId, expectedState) { - const txn = this._db.transaction("outgoingRoomKeyRequests", "readwrite"); - + const txn = this.db.transaction("outgoingRoomKeyRequests", "readwrite"); const cursorReq = txn.objectStore("outgoingRoomKeyRequests").openCursor(requestId); - - cursorReq.onsuccess = ev => { - const cursor = ev.target.result; - + cursorReq.onsuccess = () => { + const cursor = cursorReq.result; if (!cursor) { return; } - const data = cursor.value; - if (data.state != expectedState) { _logger.logger.warn(`Cannot delete room key request in state ${data.state} ` + `(expected ${expectedState})`); - return; } - cursor.delete(); }; - return promiseifyTxn(txn); - } // Olm Account + } + // Olm Account getAccount(txn, func) { const objectStore = txn.objectStore("account"); const getReq = objectStore.get("-"); - getReq.onsuccess = function () { try { func(getReq.result || null); @@ -44441,16 +153475,13 @@ class Backend { } }; } - - storeAccount(txn, newData) { + storeAccount(txn, accountPickle) { const objectStore = txn.objectStore("account"); - objectStore.put(newData, "-"); + objectStore.put(accountPickle, "-"); } - getCrossSigningKeys(txn, func) { const objectStore = txn.objectStore("account"); const getReq = objectStore.get("crossSigningKeys"); - getReq.onsuccess = function () { try { func(getReq.result || null); @@ -44459,11 +153490,9 @@ class Backend { } }; } - getSecretStorePrivateKey(txn, func, type) { const objectStore = txn.objectStore("account"); const getReq = objectStore.get(`ssss_cache:${type}`); - getReq.onsuccess = function () { try { func(getReq.result || null); @@ -44472,22 +153501,20 @@ class Backend { } }; } - storeCrossSigningKeys(txn, keys) { const objectStore = txn.objectStore("account"); objectStore.put(keys, "crossSigningKeys"); } - storeSecretStorePrivateKey(txn, type, key) { const objectStore = txn.objectStore("account"); objectStore.put(key, `ssss_cache:${type}`); - } // Olm Sessions + } + // Olm Sessions countEndToEndSessions(txn, func) { const objectStore = txn.objectStore("sessions"); const countReq = objectStore.count(); - countReq.onsuccess = function () { try { func(countReq.result); @@ -44496,16 +153523,13 @@ class Backend { } }; } - getEndToEndSessions(deviceKey, txn, func) { const objectStore = txn.objectStore("sessions"); const idx = objectStore.index("deviceKey"); const getReq = idx.openCursor(deviceKey); const results = {}; - getReq.onsuccess = function () { const cursor = getReq.result; - if (cursor) { results[cursor.value.sessionId] = { session: cursor.value.session, @@ -44521,11 +153545,9 @@ class Backend { } }; } - getEndToEndSession(deviceKey, sessionId, txn, func) { const objectStore = txn.objectStore("sessions"); const getReq = objectStore.get([deviceKey, sessionId]); - getReq.onsuccess = function () { try { if (getReq.result) { @@ -44541,15 +153563,12 @@ class Backend { } }; } - getAllEndToEndSessions(txn, func) { const objectStore = txn.objectStore("sessions"); const getReq = objectStore.openCursor(); - getReq.onsuccess = function () { try { const cursor = getReq.result; - if (cursor) { func(cursor.value); cursor.continue(); @@ -44561,7 +153580,6 @@ class Backend { } }; } - storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) { const objectStore = txn.objectStore("sessions"); objectStore.put({ @@ -44571,10 +153589,8 @@ class Backend { lastReceivedMessageTs: sessionInfo.lastReceivedMessageTs }); } - async storeEndToEndSessionProblem(deviceKey, type, fixed) { - const txn = this._db.transaction("session_problems", "readwrite"); - + const txn = this.db.transaction("session_problems", "readwrite"); const objectStore = txn.objectStore("session_problems"); objectStore.put({ deviceKey, @@ -44582,31 +153598,24 @@ class Backend { fixed, time: Date.now() }); - return promiseifyTxn(txn); + await promiseifyTxn(txn); } - async getEndToEndSessionProblem(deviceKey, timestamp) { - let result; - - const txn = this._db.transaction("session_problems", "readwrite"); - + let result = null; + const txn = this.db.transaction("session_problems", "readwrite"); const objectStore = txn.objectStore("session_problems"); const index = objectStore.index("deviceKey"); const req = index.getAll(deviceKey); - - req.onsuccess = event => { + req.onsuccess = () => { const problems = req.result; - if (!problems.length) { result = null; return; } - problems.sort((a, b) => { return a.time - b.time; }); const lastProblem = problems[problems.length - 1]; - for (const problem of problems) { if (problem.time > timestamp) { result = Object.assign({}, problem, { @@ -44615,22 +153624,19 @@ class Backend { return; } } - if (lastProblem.fixed) { result = null; } else { result = lastProblem; } }; - await promiseifyTxn(txn); return result; - } // FIXME: we should probably prune this when devices get deleted - + } + // FIXME: we should probably prune this when devices get deleted async filterOutNotifiedErrorDevices(devices) { - const txn = this._db.transaction("notified_error_devices", "readwrite"); - + const txn = this.db.transaction("notified_error_devices", "readwrite"); const objectStore = txn.objectStore("notified_error_devices"); const ret = []; await Promise.all(devices.map(device => { @@ -44640,7 +153646,6 @@ class Backend { deviceInfo } = device; const getReq = objectStore.get([userId, deviceInfo.deviceId]); - getReq.onsuccess = function () { if (!getReq.result) { objectStore.put({ @@ -44649,21 +153654,77 @@ class Backend { }); ret.push(device); } - resolve(); }; }); })); return ret; - } // Inbound group sessions + } + /** + * Fetch a batch of Olm sessions from the database. + * + * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}. + */ + async getEndToEndSessionsBatch() { + const result = []; + await this.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => { + const objectStore = txn.objectStore(_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS); + const getReq = objectStore.openCursor(); + getReq.onsuccess = function () { + try { + const cursor = getReq.result; + if (cursor) { + result.push(cursor.value); + if (result.length < _base.SESSION_BATCH_SIZE) { + cursor.continue(); + } + } + } catch (e) { + abortWithException(txn, e); + } + }; + }); + if (result.length === 0) { + // No sessions left. + return null; + } + return result; + } + + /** + * Delete a batch of Olm sessions from the database. + * + * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}. + * + * @internal + */ + async deleteEndToEndSessionsBatch(sessions) { + await this.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], async txn => { + try { + const objectStore = txn.objectStore(_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS); + for (const { + deviceKey, + sessionId + } of sessions) { + const req = objectStore.delete([deviceKey, sessionId]); + await new Promise(resolve => { + req.onsuccess = resolve; + }); + } + } catch (e) { + abortWithException(txn, e); + } + }); + } + + // Inbound group sessions getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) { let session = false; let withheld = false; const objectStore = txn.objectStore("inbound_group_sessions"); const getReq = objectStore.get([senderCurve25519Key, sessionId]); - getReq.onsuccess = function () { try { if (getReq.result) { @@ -44671,7 +153732,6 @@ class Backend { } else { session = null; } - if (withheld !== false) { func(session, withheld); } @@ -44679,10 +153739,8 @@ class Backend { abortWithException(txn, e); } }; - const withheldObjectStore = txn.objectStore("inbound_group_sessions_withheld"); const withheldGetReq = withheldObjectStore.get([senderCurve25519Key, sessionId]); - withheldGetReq.onsuccess = function () { try { if (withheldGetReq.result) { @@ -44690,7 +153748,6 @@ class Backend { } else { withheld = null; } - if (session !== false) { func(session, withheld); } @@ -44699,14 +153756,11 @@ class Backend { } }; } - getAllEndToEndInboundGroupSessions(txn, func) { const objectStore = txn.objectStore("inbound_group_sessions"); const getReq = objectStore.openCursor(); - getReq.onsuccess = function () { const cursor = getReq.result; - if (cursor) { try { func({ @@ -44717,7 +153771,6 @@ class Backend { } catch (e) { abortWithException(txn, e); } - cursor.continue(); } else { try { @@ -44728,7 +153781,6 @@ class Backend { } }; } - addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { const objectStore = txn.objectStore("inbound_group_sessions"); const addReq = objectStore.add({ @@ -44736,21 +153788,19 @@ class Backend { sessionId, session: sessionData }); - addReq.onerror = ev => { - if (addReq.error.name === 'ConstraintError') { + var _addReq$error; + if (((_addReq$error = addReq.error) === null || _addReq$error === void 0 ? void 0 : _addReq$error.name) === "ConstraintError") { // This stops the error from triggering the txn's onerror - ev.stopPropagation(); // ...and this stops it from aborting the transaction - + ev.stopPropagation(); + // ...and this stops it from aborting the transaction ev.preventDefault(); - _logger.logger.log("Ignoring duplicate inbound group session: " + senderCurve25519Key + " / " + sessionId); } else { abortWithException(txn, new Error("Failed to add inbound group session: " + addReq.error)); } }; } - storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { const objectStore = txn.objectStore("inbound_group_sessions"); objectStore.put({ @@ -44759,7 +153809,6 @@ class Backend { session: sessionData }); } - storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn) { const objectStore = txn.objectStore("inbound_group_sessions_withheld"); objectStore.put({ @@ -44769,10 +153818,93 @@ class Backend { }); } + /** + * Count the number of Megolm sessions in the database. + * + * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}. + * + * @internal + */ + async countEndToEndInboundGroupSessions() { + let result = 0; + await this.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], txn => { + const sessionStore = txn.objectStore(_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS); + const countReq = sessionStore.count(); + countReq.onsuccess = () => { + result = countReq.result; + }; + }); + return result; + } + + /** + * Fetch a batch of Megolm sessions from the database. + * + * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}. + */ + async getEndToEndInboundGroupSessionsBatch() { + const result = []; + await this.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, _indexeddbCryptoStore.IndexedDBCryptoStore.STORE_BACKUP], txn => { + const sessionStore = txn.objectStore(_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS); + const backupStore = txn.objectStore(_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_BACKUP); + const getReq = sessionStore.openCursor(); + getReq.onsuccess = function () { + try { + const cursor = getReq.result; + if (cursor) { + const backupGetReq = backupStore.get(cursor.key); + backupGetReq.onsuccess = () => { + result.push({ + senderKey: cursor.value.senderCurve25519Key, + sessionId: cursor.value.sessionId, + sessionData: cursor.value.session, + needsBackup: backupGetReq.result !== undefined + }); + if (result.length < _base.SESSION_BATCH_SIZE) { + cursor.continue(); + } + }; + } + } catch (e) { + abortWithException(txn, e); + } + }; + }); + if (result.length === 0) { + // No sessions left. + return null; + } + return result; + } + + /** + * Delete a batch of Megolm sessions from the database. + * + * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}. + * + * @internal + */ + async deleteEndToEndInboundGroupSessionsBatch(sessions) { + await this.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], async txn => { + try { + const objectStore = txn.objectStore(_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS); + for (const { + senderKey, + sessionId + } of sessions) { + const req = objectStore.delete([senderKey, sessionId]); + await new Promise(resolve => { + req.onsuccess = resolve; + }); + } + } catch (e) { + abortWithException(txn, e); + } + }); + } getEndToEndDeviceData(txn, func) { const objectStore = txn.objectStore("device_data"); const getReq = objectStore.get("-"); - getReq.onsuccess = function () { try { func(getReq.result || null); @@ -44781,25 +153913,20 @@ class Backend { } }; } - storeEndToEndDeviceData(deviceData, txn) { const objectStore = txn.objectStore("device_data"); objectStore.put(deviceData, "-"); } - storeEndToEndRoom(roomId, roomInfo, txn) { const objectStore = txn.objectStore("rooms"); objectStore.put(roomInfo, roomId); } - getEndToEndRooms(txn, func) { const rooms = {}; const objectStore = txn.objectStore("rooms"); const getReq = objectStore.openCursor(); - getReq.onsuccess = function () { const cursor = getReq.result; - if (cursor) { rooms[cursor.key] = cursor.value; cursor.continue(); @@ -44811,31 +153938,25 @@ class Backend { } } }; - } // session backups + } + // session backups getSessionsNeedingBackup(limit) { return new Promise((resolve, reject) => { const sessions = []; - - const txn = this._db.transaction(["sessions_needing_backup", "inbound_group_sessions"], "readonly"); - + const txn = this.db.transaction(["sessions_needing_backup", "inbound_group_sessions"], "readonly"); txn.onerror = reject; - txn.oncomplete = function () { resolve(sessions); }; - const objectStore = txn.objectStore("sessions_needing_backup"); const sessionStore = txn.objectStore("inbound_group_sessions"); const getReq = objectStore.openCursor(); - getReq.onsuccess = function () { const cursor = getReq.result; - if (cursor) { const sessionGetReq = sessionStore.get(cursor.key); - sessionGetReq.onsuccess = function () { sessions.push({ senderKey: sessionGetReq.result.senderCurve25519Key, @@ -44843,7 +153964,6 @@ class Backend { sessionData: sessionGetReq.result.session }); }; - if (!limit || sessions.length < limit) { cursor.continue(); } @@ -44851,28 +153971,23 @@ class Backend { }; }); } - countSessionsNeedingBackup(txn) { if (!txn) { - txn = this._db.transaction("sessions_needing_backup", "readonly"); + txn = this.db.transaction("sessions_needing_backup", "readonly"); } - const objectStore = txn.objectStore("sessions_needing_backup"); return new Promise((resolve, reject) => { const req = objectStore.count(); req.onerror = reject; - req.onsuccess = () => resolve(req.result); }); } - - unmarkSessionsNeedingBackup(sessions, txn) { + async unmarkSessionsNeedingBackup(sessions, txn) { if (!txn) { - txn = this._db.transaction("sessions_needing_backup", "readwrite"); + txn = this.db.transaction("sessions_needing_backup", "readwrite"); } - const objectStore = txn.objectStore("sessions_needing_backup"); - return Promise.all(sessions.map(session => { + await Promise.all(sessions.map(session => { return new Promise((resolve, reject) => { const req = objectStore.delete([session.senderKey, session.sessionId]); req.onsuccess = resolve; @@ -44880,14 +153995,12 @@ class Backend { }); })); } - - markSessionsNeedingBackup(sessions, txn) { + async markSessionsNeedingBackup(sessions, txn) { if (!txn) { - txn = this._db.transaction("sessions_needing_backup", "readwrite"); + txn = this.db.transaction("sessions_needing_backup", "readwrite"); } - const objectStore = txn.objectStore("sessions_needing_backup"); - return Promise.all(sessions.map(session => { + await Promise.all(sessions.map(session => { return new Promise((resolve, reject) => { const req = objectStore.put({ senderCurve25519Key: session.senderKey, @@ -44898,84 +154011,166 @@ class Backend { }); })); } - - doTxn(mode, stores, func) { - const txn = this._db.transaction(stores, mode); - + addSharedHistoryInboundGroupSession(roomId, senderKey, sessionId, txn) { + if (!txn) { + txn = this.db.transaction("shared_history_inbound_group_sessions", "readwrite"); + } + const objectStore = txn.objectStore("shared_history_inbound_group_sessions"); + const req = objectStore.get([roomId]); + req.onsuccess = () => { + const { + sessions + } = req.result || { + sessions: [] + }; + sessions.push([senderKey, sessionId]); + objectStore.put({ + roomId, + sessions + }); + }; + } + getSharedHistoryInboundGroupSessions(roomId, txn) { + if (!txn) { + txn = this.db.transaction("shared_history_inbound_group_sessions", "readonly"); + } + const objectStore = txn.objectStore("shared_history_inbound_group_sessions"); + const req = objectStore.get([roomId]); + return new Promise((resolve, reject) => { + req.onsuccess = () => { + const { + sessions + } = req.result || { + sessions: [] + }; + resolve(sessions); + }; + req.onerror = reject; + }); + } + addParkedSharedHistory(roomId, parkedData, txn) { + if (!txn) { + txn = this.db.transaction("parked_shared_history", "readwrite"); + } + const objectStore = txn.objectStore("parked_shared_history"); + const req = objectStore.get([roomId]); + req.onsuccess = () => { + const { + parked + } = req.result || { + parked: [] + }; + parked.push(parkedData); + objectStore.put({ + roomId, + parked + }); + }; + } + takeParkedSharedHistory(roomId, txn) { + if (!txn) { + txn = this.db.transaction("parked_shared_history", "readwrite"); + } + const cursorReq = txn.objectStore("parked_shared_history").openCursor(roomId); + return new Promise((resolve, reject) => { + cursorReq.onsuccess = () => { + const cursor = cursorReq.result; + if (!cursor) { + resolve([]); + return; + } + const data = cursor.value; + cursor.delete(); + resolve(data); + }; + cursorReq.onerror = reject; + }); + } + doTxn(mode, stores, func, log = _logger.logger) { + let startTime; + let description; + if (PROFILE_TRANSACTIONS) { + const txnId = this.nextTxnId++; + startTime = Date.now(); + description = `${mode} crypto store transaction ${txnId} in ${stores}`; + log.debug(`Starting ${description}`); + } + const txn = this.db.transaction(stores, mode); const promise = promiseifyTxn(txn); const result = func(txn); + if (PROFILE_TRANSACTIONS) { + promise.then(() => { + const elapsedTime = Date.now() - startTime; + log.debug(`Finished ${description}, took ${elapsedTime} ms`); + }, () => { + const elapsedTime = Date.now() - startTime; + log.error(`Failed ${description}, took ${elapsedTime} ms`); + }); + } return promise.then(() => { return result; }); } - } - exports.Backend = Backend; - +const DB_MIGRATIONS = [db => { + createDatabase(db); +}, db => { + db.createObjectStore("account"); +}, db => { + const sessionsStore = db.createObjectStore("sessions", { + keyPath: ["deviceKey", "sessionId"] + }); + sessionsStore.createIndex("deviceKey", "deviceKey"); +}, db => { + db.createObjectStore("inbound_group_sessions", { + keyPath: ["senderCurve25519Key", "sessionId"] + }); +}, db => { + db.createObjectStore("device_data"); +}, db => { + db.createObjectStore("rooms"); +}, db => { + db.createObjectStore("sessions_needing_backup", { + keyPath: ["senderCurve25519Key", "sessionId"] + }); +}, db => { + db.createObjectStore("inbound_group_sessions_withheld", { + keyPath: ["senderCurve25519Key", "sessionId"] + }); +}, db => { + const problemsStore = db.createObjectStore("session_problems", { + keyPath: ["deviceKey", "time"] + }); + problemsStore.createIndex("deviceKey", "deviceKey"); + db.createObjectStore("notified_error_devices", { + keyPath: ["userId", "deviceId"] + }); +}, db => { + db.createObjectStore("shared_history_inbound_group_sessions", { + keyPath: ["roomId"] + }); +}, db => { + db.createObjectStore("parked_shared_history", { + keyPath: ["roomId"] + }); +} +// Expand as needed. +]; +const VERSION = exports.VERSION = DB_MIGRATIONS.length; function upgradeDatabase(db, oldVersion) { _logger.logger.log(`Upgrading IndexedDBCryptoStore from version ${oldVersion}` + ` to ${VERSION}`); - - if (oldVersion < 1) { - // The database did not previously exist. - createDatabase(db); - } - - if (oldVersion < 2) { - db.createObjectStore("account"); - } - - if (oldVersion < 3) { - const sessionsStore = db.createObjectStore("sessions", { - keyPath: ["deviceKey", "sessionId"] - }); - sessionsStore.createIndex("deviceKey", "deviceKey"); - } - - if (oldVersion < 4) { - db.createObjectStore("inbound_group_sessions", { - keyPath: ["senderCurve25519Key", "sessionId"] - }); - } - - if (oldVersion < 5) { - db.createObjectStore("device_data"); - } - - if (oldVersion < 6) { - db.createObjectStore("rooms"); - } - - if (oldVersion < 7) { - db.createObjectStore("sessions_needing_backup", { - keyPath: ["senderCurve25519Key", "sessionId"] - }); - } - - if (oldVersion < 8) { - db.createObjectStore("inbound_group_sessions_withheld", { - keyPath: ["senderCurve25519Key", "sessionId"] - }); - } - - if (oldVersion < 9) { - const problemsStore = db.createObjectStore("session_problems", { - keyPath: ["deviceKey", "time"] - }); - problemsStore.createIndex("deviceKey", "deviceKey"); - db.createObjectStore("notified_error_devices", { - keyPath: ["userId", "deviceId"] - }); - } // Expand as needed. - + DB_MIGRATIONS.forEach((migration, index) => { + if (oldVersion <= index) migration(db); + }); } - function createDatabase(db) { const outgoingRoomKeyRequestsStore = db.createObjectStore("outgoingRoomKeyRequests", { keyPath: "requestId" - }); // we assume that the RoomKeyRequestBody will have room_id and session_id - // properties, to make the index efficient. + }); + // we assume that the RoomKeyRequestBody will have room_id and session_id + // properties, to make the index efficient. outgoingRoomKeyRequestsStore.createIndex("session", ["requestBody.room_id", "requestBody.session_id"]); outgoingRoomKeyRequestsStore.createIndex("state", "state"); } @@ -44983,84 +154178,71 @@ function createDatabase(db) { * Aborts a transaction with a given exception * The transaction promise will be rejected with this exception. */ - - function abortWithException(txn, e) { // We cheekily stick our exception onto the transaction object here // We could alternatively make the thing we pass back to the app // an object containing the transaction and exception. txn._mx_abortexception = e; - try { txn.abort(); - } catch (e) {// sometimes we won't be able to abort the transaction + } catch (e) { + // sometimes we won't be able to abort the transaction // (ie. if it's aborted or completed) } } - function promiseifyTxn(txn) { return new Promise((resolve, reject) => { txn.oncomplete = () => { if (txn._mx_abortexception !== undefined) { reject(txn._mx_abortexception); } - - resolve(); + resolve(null); }; - txn.onerror = event => { if (txn._mx_abortexception !== undefined) { reject(txn._mx_abortexception); } else { _logger.logger.log("Error performing indexeddb txn", event); - - reject(event.target.error); + reject(txn.error); } }; - txn.onabort = event => { if (txn._mx_abortexception !== undefined) { reject(txn._mx_abortexception); } else { _logger.logger.log("Error performing indexeddb txn", event); - - reject(event.target.error); + reject(txn.error); } }; }); } +//# sourceMappingURL=indexeddb-crypto-store-backend.js.map /***/ }), /***/ 5651: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.IndexedDBCryptoStore = void 0; - -var _logger = __webpack_require__(3854); - -var _localStorageCryptoStore = __webpack_require__(8143); - -var _memoryCryptoStore = __webpack_require__(5881); - -var IndexedDBCryptoStoreBackend = _interopRequireWildcard(__webpack_require__(4717)); - -var _errors = __webpack_require__(1905); - -var IndexedDBHelpers = _interopRequireWildcard(__webpack_require__(7978)); - +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _localStorageCryptoStore = __nccwpck_require__(8143); +var _memoryCryptoStore = __nccwpck_require__(5881); +var IndexedDBCryptoStoreBackend = _interopRequireWildcard(__nccwpck_require__(4717)); +var _errors = __nccwpck_require__(1905); +var IndexedDBHelpers = _interopRequireWildcard(__nccwpck_require__(7978)); +var _base = __nccwpck_require__(2356); +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; } /* -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2020 The Matrix.org Foundation C.I.C. +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -45075,147 +154257,171 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** +/* * Internal module. indexeddb storage for e2e. - * - * @module */ /** * An implementation of CryptoStore, which is normally backed by an indexeddb, * but with fallback to MemoryCryptoStore. - * - * @implements {module:crypto/store/base~CryptoStore} */ class IndexedDBCryptoStore { - /** - * Create a new IndexedDBCryptoStore - * - * @param {IDBFactory} indexedDB global indexedDB instance - * @param {string} dbName name of db to connect to - */ - constructor(indexedDB, dbName) { - this._indexedDB = indexedDB; - this._dbName = dbName; - this._backendPromise = null; - this._backend = null; - } - static exists(indexedDB, dbName) { return IndexedDBHelpers.exists(indexedDB, dbName); } + + /** + * Utility to check if a legacy crypto store exists and has not been migrated. + * Returns true if the store exists and has not been migrated, false otherwise. + */ + static existsAndIsNotMigrated(indexedDb, dbName) { + return new Promise((resolve, reject) => { + let exists = true; + const openDBRequest = indexedDb.open(dbName); + openDBRequest.onupgradeneeded = () => { + // Since we did not provide an explicit version when opening, this event + // should only fire if the DB did not exist before at any version. + exists = false; + }; + openDBRequest.onblocked = () => reject(openDBRequest.error); + openDBRequest.onsuccess = () => { + const db = openDBRequest.result; + if (!exists) { + db.close(); + // The DB did not exist before, but has been created as part of this + // existence check. Delete it now to restore previous state. Delete can + // actually take a while to complete in some browsers, so don't wait for + // it. This won't block future open calls that a store might issue next to + // properly set up the DB. + indexedDb.deleteDatabase(dbName); + resolve(false); + } else { + const tx = db.transaction([IndexedDBCryptoStore.STORE_ACCOUNT], "readonly"); + const objectStore = tx.objectStore(IndexedDBCryptoStore.STORE_ACCOUNT); + const getReq = objectStore.get(_base.ACCOUNT_OBJECT_KEY_MIGRATION_STATE); + getReq.onsuccess = () => { + var _getReq$result; + const migrationState = (_getReq$result = getReq.result) !== null && _getReq$result !== void 0 ? _getReq$result : _base.MigrationState.NOT_STARTED; + resolve(migrationState === _base.MigrationState.NOT_STARTED); + }; + getReq.onerror = () => { + reject(getReq.error); + }; + db.close(); + } + }; + openDBRequest.onerror = () => reject(openDBRequest.error); + }); + } + /** + * Create a new IndexedDBCryptoStore + * + * @param indexedDB - global indexedDB instance + * @param dbName - name of db to connect to + */ + constructor(indexedDB, dbName) { + this.indexedDB = indexedDB; + this.dbName = dbName; + } + + /** + * Returns true if this CryptoStore has ever been initialised (ie, it might contain data). + * + * Implementation of {@link CryptoStore.containsData}. + * + * @internal + */ + async containsData() { + return IndexedDBCryptoStore.exists(this.indexedDB, this.dbName); + } + /** * Ensure the database exists and is up-to-date, or fall back to * a local storage or in-memory store. * * This must be called before the store can be used. * - * @return {Promise} resolves to either an IndexedDBCryptoStoreBackend.Backend, + * @returns resolves to either an IndexedDBCryptoStoreBackend.Backend, * or a MemoryCryptoStore */ - - startup() { - if (this._backendPromise) { - return this._backendPromise; + if (this.backendPromise) { + return this.backendPromise; } - - this._backendPromise = new Promise((resolve, reject) => { - if (!this._indexedDB) { - reject(new Error('no indexeddb support available')); + this.backendPromise = new Promise((resolve, reject) => { + if (!this.indexedDB) { + reject(new Error("no indexeddb support available")); return; } - - _logger.logger.log(`connecting to indexeddb ${this._dbName}`); - - const req = this._indexedDB.open(this._dbName, IndexedDBCryptoStoreBackend.VERSION); - + _logger.logger.log(`connecting to indexeddb ${this.dbName}`); + const req = this.indexedDB.open(this.dbName, IndexedDBCryptoStoreBackend.VERSION); req.onupgradeneeded = ev => { - const db = ev.target.result; + const db = req.result; const oldVersion = ev.oldVersion; IndexedDBCryptoStoreBackend.upgradeDatabase(db, oldVersion); }; - req.onblocked = () => { _logger.logger.log(`can't yet open IndexedDBCryptoStore because it is open elsewhere`); }; - req.onerror = ev => { _logger.logger.log("Error connecting to indexeddb", ev); - - reject(ev.target.error); + reject(req.error); }; - - req.onsuccess = r => { - const db = r.target.result; - - _logger.logger.log(`connected to indexeddb ${this._dbName}`); - + req.onsuccess = () => { + const db = req.result; + _logger.logger.log(`connected to indexeddb ${this.dbName}`); resolve(new IndexedDBCryptoStoreBackend.Backend(db)); }; }).then(backend => { // Edge has IndexedDB but doesn't support compund keys which we use fairly extensively. // Try a dummy query which will fail if the browser doesn't support compund keys, so // we can fall back to a different backend. - return backend.doTxn('readonly', [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { - backend.getEndToEndInboundGroupSession('', '', txn, () => {}); - }).then(() => { - return backend; - }); + return backend.doTxn("readonly", [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD], txn => { + backend.getEndToEndInboundGroupSession("", "", txn, () => {}); + }).then(() => backend); }).catch(e => { - if (e.name === 'VersionError') { - _logger.logger.warn("Crypto DB is too new for us to use!", e); // don't fall back to a different store: the user has crypto data + if (e.name === "VersionError") { + _logger.logger.warn("Crypto DB is too new for us to use!", e); + // don't fall back to a different store: the user has crypto data // in this db so we should use it or nothing at all. - - - throw new _errors.InvalidCryptoStoreError(_errors.InvalidCryptoStoreError.TOO_NEW); + throw new _errors.InvalidCryptoStoreError(_errors.InvalidCryptoStoreState.TooNew); } - - _logger.logger.warn(`unable to connect to indexeddb ${this._dbName}` + `: falling back to localStorage store: ${e}`); - + _logger.logger.warn(`unable to connect to indexeddb ${this.dbName}` + `: falling back to localStorage store: ${e}`); try { return new _localStorageCryptoStore.LocalStorageCryptoStore(global.localStorage); } catch (e) { _logger.logger.warn(`unable to open localStorage: falling back to in-memory store: ${e}`); - return new _memoryCryptoStore.MemoryCryptoStore(); } }).then(backend => { - this._backend = backend; + this.backend = backend; + return backend; }); - return this._backendPromise; + return this.backendPromise; } + /** * Delete all data from this store. * - * @returns {Promise} resolves when the store has been cleared. + * @returns resolves when the store has been cleared. */ - - deleteAllData() { return new Promise((resolve, reject) => { - if (!this._indexedDB) { - reject(new Error('no indexeddb support available')); + if (!this.indexedDB) { + reject(new Error("no indexeddb support available")); return; } - - _logger.logger.log(`Removing indexeddb instance: ${this._dbName}`); - - const req = this._indexedDB.deleteDatabase(this._dbName); - + _logger.logger.log(`Removing indexeddb instance: ${this.dbName}`); + const req = this.indexedDB.deleteDatabase(this.dbName); req.onblocked = () => { _logger.logger.log(`can't yet delete IndexedDBCryptoStore because it is open elsewhere`); }; - req.onerror = ev => { _logger.logger.log("Error deleting data from indexeddb", ev); - - reject(ev.target.error); + reject(req.error); }; - req.onsuccess = () => { - _logger.logger.log(`Removed indexeddb instance: ${this._dbName}`); - + _logger.logger.log(`Removed indexeddb instance: ${this.dbName}`); resolve(); }; }).catch(e => { @@ -45225,319 +154431,372 @@ class IndexedDBCryptoStore { _logger.logger.warn(`unable to delete IndexedDBCryptoStore: ${e}`); }); } + + /** + * Get data on how much of the libolm to Rust Crypto migration has been done. + * + * Implementation of {@link CryptoStore.getMigrationState}. + * + * @internal + */ + getMigrationState() { + return this.backend.getMigrationState(); + } + + /** + * Set data on how much of the libolm to Rust Crypto migration has been done. + * + * Implementation of {@link CryptoStore.setMigrationState}. + * + * @internal + */ + setMigrationState(migrationState) { + return this.backend.setMigrationState(migrationState); + } + /** * Look for an existing outgoing room key request, and if none is found, * add a new one * - * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request * - * @returns {Promise} resolves to - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the + * @returns resolves to + * {@link OutgoingRoomKeyRequest}: either the * same instance as passed in, or the existing one. */ - - getOrAddOutgoingRoomKeyRequest(request) { - return this._backend.getOrAddOutgoingRoomKeyRequest(request); + return this.backend.getOrAddOutgoingRoomKeyRequest(request); } + /** * Look for an existing room key request * - * @param {module:crypto~RoomKeyRequestBody} requestBody - * existing request to look for + * @param requestBody - existing request to look for * - * @return {Promise} resolves to the matching - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if + * @returns resolves to the matching + * {@link OutgoingRoomKeyRequest}, or null if * not found */ - - getOutgoingRoomKeyRequest(requestBody) { - return this._backend.getOutgoingRoomKeyRequest(requestBody); + return this.backend.getOutgoingRoomKeyRequest(requestBody); } + /** * Look for room key requests by state * - * @param {Array} wantedStates list of acceptable states + * @param wantedStates - list of acceptable states * - * @return {Promise} resolves to the a - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if + * @returns resolves to the a + * {@link OutgoingRoomKeyRequest}, or null if * there are no pending requests in those states. If there are multiple * requests in those states, an arbitrary one is chosen. */ - - getOutgoingRoomKeyRequestByState(wantedStates) { - return this._backend.getOutgoingRoomKeyRequestByState(wantedStates); + return this.backend.getOutgoingRoomKeyRequestByState(wantedStates); } + /** * Look for room key requests by state – * unlike above, return a list of all entries in one state. * - * @param {Number} wantedState - * @return {Promise>} Returns an array of requests in the given state + * @returns Returns an array of requests in the given state */ - - getAllOutgoingRoomKeyRequestsByState(wantedState) { - return this._backend.getAllOutgoingRoomKeyRequestsByState(wantedState); + return this.backend.getAllOutgoingRoomKeyRequestsByState(wantedState); } + /** * Look for room key requests by target device and state * - * @param {string} userId Target user ID - * @param {string} deviceId Target device ID - * @param {Array} wantedStates list of acceptable states + * @param userId - Target user ID + * @param deviceId - Target device ID + * @param wantedStates - list of acceptable states * - * @return {Promise} resolves to a list of all the - * {@link module:crypto/store/base~OutgoingRoomKeyRequest} + * @returns resolves to a list of all the + * {@link OutgoingRoomKeyRequest} */ - - getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates) { - return this._backend.getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates); + return this.backend.getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates); } + /** * Look for an existing room key request by id and state, and update it if * found * - * @param {string} requestId ID of request to update - * @param {number} expectedState state we expect to find the request in - * @param {Object} updates name/value map of updates to apply + * @param requestId - ID of request to update + * @param expectedState - state we expect to find the request in + * @param updates - name/value map of updates to apply * - * @returns {Promise} resolves to - * {@link module:crypto/store/base~OutgoingRoomKeyRequest} + * @returns resolves to + * {@link OutgoingRoomKeyRequest} * updated request, or null if no matching row was found */ - - updateOutgoingRoomKeyRequest(requestId, expectedState, updates) { - return this._backend.updateOutgoingRoomKeyRequest(requestId, expectedState, updates); + return this.backend.updateOutgoingRoomKeyRequest(requestId, expectedState, updates); } + /** * Look for an existing room key request by id and state, and delete it if * found * - * @param {string} requestId ID of request to update - * @param {number} expectedState state we expect to find the request in + * @param requestId - ID of request to update + * @param expectedState - state we expect to find the request in * - * @returns {Promise} resolves once the operation is completed + * @returns resolves once the operation is completed */ - - deleteOutgoingRoomKeyRequest(requestId, expectedState) { - return this._backend.deleteOutgoingRoomKeyRequest(requestId, expectedState); - } // Olm Account + return this.backend.deleteOutgoingRoomKeyRequest(requestId, expectedState); + } + + // Olm Account /* * Get the account pickle from the store. * This requires an active transaction. See doTxn(). * - * @param {*} txn An active transaction. See doTxn(). - * @param {function(string)} func Called with the account pickle + * @param txn - An active transaction. See doTxn(). + * @param func - Called with the account pickle */ - - getAccount(txn, func) { - this._backend.getAccount(txn, func); + this.backend.getAccount(txn, func); } + /** * Write the account pickle to the store. * This requires an active transaction. See doTxn(). * - * @param {*} txn An active transaction. See doTxn(). - * @param {string} newData The new account pickle to store. + * @param txn - An active transaction. See doTxn(). + * @param accountPickle - The new account pickle to store. */ - - - storeAccount(txn, newData) { - this._backend.storeAccount(txn, newData); + storeAccount(txn, accountPickle) { + this.backend.storeAccount(txn, accountPickle); } + /** * Get the public part of the cross-signing keys (eg. self-signing key, * user signing key). * - * @param {*} txn An active transaction. See doTxn(). - * @param {function(string)} func Called with the account keys object: - * { key_type: base64 encoded seed } where key type = user_signing_key_seed or self_signing_key_seed + * @param txn - An active transaction. See doTxn(). + * @param func - Called with the account keys object: + * `{ key_type: base64 encoded seed }` where key type = user_signing_key_seed or self_signing_key_seed */ - - getCrossSigningKeys(txn, func) { - this._backend.getCrossSigningKeys(txn, func); + this.backend.getCrossSigningKeys(txn, func); } + /** - * @param {*} txn An active transaction. See doTxn(). - * @param {function(string)} func Called with the private key - * @param {string} type A key type + * @param txn - An active transaction. See doTxn(). + * @param func - Called with the private key + * @param type - A key type */ - - getSecretStorePrivateKey(txn, func, type) { - this._backend.getSecretStorePrivateKey(txn, func, type); + this.backend.getSecretStorePrivateKey(txn, func, type); } + /** * Write the cross-signing keys back to the store * - * @param {*} txn An active transaction. See doTxn(). - * @param {string} keys keys object as getCrossSigningKeys() + * @param txn - An active transaction. See doTxn(). + * @param keys - keys object as getCrossSigningKeys() */ - - storeCrossSigningKeys(txn, keys) { - this._backend.storeCrossSigningKeys(txn, keys); + this.backend.storeCrossSigningKeys(txn, keys); } + /** * Write the cross-signing private keys back to the store * - * @param {*} txn An active transaction. See doTxn(). - * @param {string} type The type of cross-signing private key to store - * @param {string} key keys object as getCrossSigningKeys() + * @param txn - An active transaction. See doTxn(). + * @param type - The type of cross-signing private key to store + * @param key - keys object as getCrossSigningKeys() */ - - storeSecretStorePrivateKey(txn, type, key) { - this._backend.storeSecretStorePrivateKey(txn, type, key); - } // Olm sessions + this.backend.storeSecretStorePrivateKey(txn, type, key); + } + + // Olm sessions /** * Returns the number of end-to-end sessions in the store - * @param {*} txn An active transaction. See doTxn(). - * @param {function(int)} func Called with the count of sessions + * @param txn - An active transaction. See doTxn(). + * @param func - Called with the count of sessions */ - - countEndToEndSessions(txn, func) { - this._backend.countEndToEndSessions(txn, func); + this.backend.countEndToEndSessions(txn, func); } + /** * Retrieve a specific end-to-end session between the logged-in user * and another device. - * @param {string} deviceKey The public key of the other device. - * @param {string} sessionId The ID of the session to retrieve - * @param {*} txn An active transaction. See doTxn(). - * @param {function(object)} func Called with A map from sessionId + * @param deviceKey - The public key of the other device. + * @param sessionId - The ID of the session to retrieve + * @param txn - An active transaction. See doTxn(). + * @param func - Called with A map from sessionId * to session information object with 'session' key being the * Base64 end-to-end session and lastReceivedMessageTs being the * timestamp in milliseconds at which the session last received * a message. */ - - getEndToEndSession(deviceKey, sessionId, txn, func) { - this._backend.getEndToEndSession(deviceKey, sessionId, txn, func); + this.backend.getEndToEndSession(deviceKey, sessionId, txn, func); } + /** * Retrieve the end-to-end sessions between the logged-in user and another * device. - * @param {string} deviceKey The public key of the other device. - * @param {*} txn An active transaction. See doTxn(). - * @param {function(object)} func Called with A map from sessionId + * @param deviceKey - The public key of the other device. + * @param txn - An active transaction. See doTxn(). + * @param func - Called with A map from sessionId * to session information object with 'session' key being the * Base64 end-to-end session and lastReceivedMessageTs being the * timestamp in milliseconds at which the session last received * a message. */ - - getEndToEndSessions(deviceKey, txn, func) { - this._backend.getEndToEndSessions(deviceKey, txn, func); + this.backend.getEndToEndSessions(deviceKey, txn, func); } + /** * Retrieve all end-to-end sessions - * @param {*} txn An active transaction. See doTxn(). - * @param {function(object)} func Called one for each session with + * @param txn - An active transaction. See doTxn(). + * @param func - Called one for each session with * an object with, deviceKey, lastReceivedMessageTs, sessionId * and session keys. */ - - getAllEndToEndSessions(txn, func) { - this._backend.getAllEndToEndSessions(txn, func); + this.backend.getAllEndToEndSessions(txn, func); } + /** * Store a session between the logged-in user and another device - * @param {string} deviceKey The public key of the other device. - * @param {string} sessionId The ID for this end-to-end session. - * @param {string} sessionInfo Session information object - * @param {*} txn An active transaction. See doTxn(). + * @param deviceKey - The public key of the other device. + * @param sessionId - The ID for this end-to-end session. + * @param sessionInfo - Session information object + * @param txn - An active transaction. See doTxn(). */ - - storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) { - this._backend.storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn); + this.backend.storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn); } - storeEndToEndSessionProblem(deviceKey, type, fixed) { - return this._backend.storeEndToEndSessionProblem(deviceKey, type, fixed); + return this.backend.storeEndToEndSessionProblem(deviceKey, type, fixed); } - getEndToEndSessionProblem(deviceKey, timestamp) { - return this._backend.getEndToEndSessionProblem(deviceKey, timestamp); + return this.backend.getEndToEndSessionProblem(deviceKey, timestamp); + } + filterOutNotifiedErrorDevices(devices) { + return this.backend.filterOutNotifiedErrorDevices(devices); } - filterOutNotifiedErrorDevices(devices) { - return this._backend.filterOutNotifiedErrorDevices(devices); - } // Inbound group sessions + /** + * Count the number of Megolm sessions in the database. + * + * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}. + * + * @internal + */ + countEndToEndInboundGroupSessions() { + return this.backend.countEndToEndInboundGroupSessions(); + } + + /** + * Fetch a batch of Olm sessions from the database. + * + * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}. + * + * @internal + */ + getEndToEndSessionsBatch() { + return this.backend.getEndToEndSessionsBatch(); + } + + /** + * Delete a batch of Olm sessions from the database. + * + * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}. + * + * @internal + */ + deleteEndToEndSessionsBatch(sessions) { + return this.backend.deleteEndToEndSessionsBatch(sessions); + } + + // Inbound group sessions /** * Retrieve the end-to-end inbound group session for a given * server key and session ID - * @param {string} senderCurve25519Key The sender's curve 25519 key - * @param {string} sessionId The ID of the session - * @param {*} txn An active transaction. See doTxn(). - * @param {function(object)} func Called with A map from sessionId + * @param senderCurve25519Key - The sender's curve 25519 key + * @param sessionId - The ID of the session + * @param txn - An active transaction. See doTxn(). + * @param func - Called with A map from sessionId * to Base64 end-to-end session. */ - - getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) { - this._backend.getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func); + this.backend.getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func); } + /** * Fetches all inbound group sessions in the store - * @param {*} txn An active transaction. See doTxn(). - * @param {function(object)} func Called once for each group session - * in the store with an object having keys {senderKey, sessionId, - * sessionData}, then once with null to indicate the end of the list. + * @param txn - An active transaction. See doTxn(). + * @param func - Called once for each group session + * in the store with an object having keys `{senderKey, sessionId, sessionData}`, + * then once with null to indicate the end of the list. */ - - getAllEndToEndInboundGroupSessions(txn, func) { - this._backend.getAllEndToEndInboundGroupSessions(txn, func); + this.backend.getAllEndToEndInboundGroupSessions(txn, func); } + /** * Adds an end-to-end inbound group session to the store. * If there already exists an inbound group session with the same * senderCurve25519Key and sessionID, the session will not be added. - * @param {string} senderCurve25519Key The sender's curve 25519 key - * @param {string} sessionId The ID of the session - * @param {object} sessionData The session data structure - * @param {*} txn An active transaction. See doTxn(). + * @param senderCurve25519Key - The sender's curve 25519 key + * @param sessionId - The ID of the session + * @param sessionData - The session data structure + * @param txn - An active transaction. See doTxn(). */ - - addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { - this._backend.addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn); + this.backend.addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn); } + /** * Writes an end-to-end inbound group session to the store. * If there already exists an inbound group session with the same * senderCurve25519Key and sessionID, it will be overwritten. - * @param {string} senderCurve25519Key The sender's curve 25519 key - * @param {string} sessionId The ID of the session - * @param {object} sessionData The session data structure - * @param {*} txn An active transaction. See doTxn(). + * @param senderCurve25519Key - The sender's curve 25519 key + * @param sessionId - The ID of the session + * @param sessionData - The session data structure + * @param txn - An active transaction. See doTxn(). */ - - storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { - this._backend.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn); + this.backend.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn); + } + storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn) { + this.backend.storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn); } - storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn) { - this._backend.storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn); - } // End-to-end device tracking + /** + * Fetch a batch of Megolm sessions from the database. + * + * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}. + * + * @internal + */ + getEndToEndInboundGroupSessionsBatch() { + return this.backend.getEndToEndInboundGroupSessionsBatch(); + } + + /** + * Delete a batch of Megolm sessions from the database. + * + * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}. + * + * @internal + */ + deleteEndToEndInboundGroupSessionsBatch(sessions) { + return this.backend.deleteEndToEndInboundGroupSessionsBatch(sessions); + } + + // End-to-end device tracking /** * Store the state of all tracked devices @@ -45546,134 +154805,162 @@ class IndexedDBCryptoStore { * These all need to be written out in full each time such that the snapshot * is always consistent, so they are stored in one object. * - * @param {Object} deviceData - * @param {*} txn An active transaction. See doTxn(). + * @param txn - An active transaction. See doTxn(). */ - - storeEndToEndDeviceData(deviceData, txn) { - this._backend.storeEndToEndDeviceData(deviceData, txn); + this.backend.storeEndToEndDeviceData(deviceData, txn); } + /** * Get the state of all tracked devices * - * @param {*} txn An active transaction. See doTxn(). - * @param {function(Object)} func Function called with the + * @param txn - An active transaction. See doTxn(). + * @param func - Function called with the * device data */ - - getEndToEndDeviceData(txn, func) { - this._backend.getEndToEndDeviceData(txn, func); - } // End to End Rooms + this.backend.getEndToEndDeviceData(txn, func); + } + + // End to End Rooms /** * Store the end-to-end state for a room. - * @param {string} roomId The room's ID. - * @param {object} roomInfo The end-to-end info for the room. - * @param {*} txn An active transaction. See doTxn(). + * @param roomId - The room's ID. + * @param roomInfo - The end-to-end info for the room. + * @param txn - An active transaction. See doTxn(). */ - - storeEndToEndRoom(roomId, roomInfo, txn) { - this._backend.storeEndToEndRoom(roomId, roomInfo, txn); + this.backend.storeEndToEndRoom(roomId, roomInfo, txn); } + /** - * Get an object of roomId->roomInfo for all e2e rooms in the store - * @param {*} txn An active transaction. See doTxn(). - * @param {function(Object)} func Function called with the end to end encrypted rooms + * Get an object of `roomId->roomInfo` for all e2e rooms in the store + * @param txn - An active transaction. See doTxn(). + * @param func - Function called with the end-to-end encrypted rooms */ - - getEndToEndRooms(txn, func) { - this._backend.getEndToEndRooms(txn, func); - } // session backups + this.backend.getEndToEndRooms(txn, func); + } + + // session backups /** * Get the inbound group sessions that need to be backed up. - * @param {integer} limit The maximum number of sessions to retrieve. 0 + * @param limit - The maximum number of sessions to retrieve. 0 * for no limit. - * @returns {Promise} resolves to an array of inbound group sessions + * @returns resolves to an array of inbound group sessions */ - - getSessionsNeedingBackup(limit) { - return this._backend.getSessionsNeedingBackup(limit); + return this.backend.getSessionsNeedingBackup(limit); } + /** * Count the inbound group sessions that need to be backed up. - * @param {*} txn An active transaction. See doTxn(). (optional) - * @returns {Promise} resolves to the number of sessions + * @param txn - An active transaction. See doTxn(). (optional) + * @returns resolves to the number of sessions */ - - countSessionsNeedingBackup(txn) { - return this._backend.countSessionsNeedingBackup(txn); + return this.backend.countSessionsNeedingBackup(txn); } + /** * Unmark sessions as needing to be backed up. - * @param {Array} sessions The sessions that need to be backed up. - * @param {*} txn An active transaction. See doTxn(). (optional) - * @returns {Promise} resolves when the sessions are unmarked + * @param sessions - The sessions that need to be backed up. + * @param txn - An active transaction. See doTxn(). (optional) + * @returns resolves when the sessions are unmarked */ - - unmarkSessionsNeedingBackup(sessions, txn) { - return this._backend.unmarkSessionsNeedingBackup(sessions, txn); + return this.backend.unmarkSessionsNeedingBackup(sessions, txn); } + /** * Mark sessions as needing to be backed up. - * @param {Array} sessions The sessions that need to be backed up. - * @param {*} txn An active transaction. See doTxn(). (optional) - * @returns {Promise} resolves when the sessions are marked + * @param sessions - The sessions that need to be backed up. + * @param txn - An active transaction. See doTxn(). (optional) + * @returns resolves when the sessions are marked */ - - markSessionsNeedingBackup(sessions, txn) { - return this._backend.markSessionsNeedingBackup(sessions, txn); + return this.backend.markSessionsNeedingBackup(sessions, txn); } + + /** + * Add a shared-history group session for a room. + * @param roomId - The room that the key belongs to + * @param senderKey - The sender's curve 25519 key + * @param sessionId - The ID of the session + * @param txn - An active transaction. See doTxn(). (optional) + */ + addSharedHistoryInboundGroupSession(roomId, senderKey, sessionId, txn) { + this.backend.addSharedHistoryInboundGroupSession(roomId, senderKey, sessionId, txn); + } + + /** + * Get the shared-history group session for a room. + * @param roomId - The room that the key belongs to + * @param txn - An active transaction. See doTxn(). (optional) + * @returns Promise which resolves to an array of [senderKey, sessionId] + */ + getSharedHistoryInboundGroupSessions(roomId, txn) { + return this.backend.getSharedHistoryInboundGroupSessions(roomId, txn); + } + + /** + * Park a shared-history group session for a room we may be invited to later. + */ + addParkedSharedHistory(roomId, parkedData, txn) { + this.backend.addParkedSharedHistory(roomId, parkedData, txn); + } + + /** + * Pop out all shared-history group sessions for a room. + */ + takeParkedSharedHistory(roomId, txn) { + return this.backend.takeParkedSharedHistory(roomId, txn); + } + /** * Perform a transaction on the crypto store. Any store methods * that require a transaction (txn) object to be passed in may * only be called within a callback of either this function or * one of the store functions operating on the same transaction. * - * @param {string} mode 'readwrite' if you need to call setter + * @param mode - 'readwrite' if you need to call setter * functions with this transaction. Otherwise, 'readonly'. - * @param {string[]} stores List IndexedDBCryptoStore.STORE_* + * @param stores - List IndexedDBCryptoStore.STORE_* * options representing all types of object that will be * accessed or written to with this transaction. - * @param {function(*)} func Function called with the + * @param func - Function called with the * transaction object: an opaque object that should be passed * to store functions. - * @return {Promise} Promise that resolves with the result of the `func` + * @param log - A possibly customised log + * @returns Promise that resolves with the result of the `func` * when the transaction is complete. If the backend is * async (ie. the indexeddb backend) any of the callback * functions throwing an exception will cause this promise to * reject with that exception. On synchronous backends, the * exception will propagate to the caller of the getFoo method. */ - - - doTxn(mode, stores, func) { - return this._backend.doTxn(mode, stores, func); + doTxn(mode, stores, func, log) { + return this.backend.doTxn(mode, stores, func, log); } - } - exports.IndexedDBCryptoStore = IndexedDBCryptoStore; -IndexedDBCryptoStore.STORE_ACCOUNT = 'account'; -IndexedDBCryptoStore.STORE_SESSIONS = 'sessions'; -IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS = 'inbound_group_sessions'; -IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD = 'inbound_group_sessions_withheld'; -IndexedDBCryptoStore.STORE_DEVICE_DATA = 'device_data'; -IndexedDBCryptoStore.STORE_ROOMS = 'rooms'; -IndexedDBCryptoStore.STORE_BACKUP = 'sessions_needing_backup'; +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_ACCOUNT", "account"); +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_SESSIONS", "sessions"); +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_INBOUND_GROUP_SESSIONS", "inbound_group_sessions"); +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_INBOUND_GROUP_SESSIONS_WITHHELD", "inbound_group_sessions_withheld"); +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_SHARED_HISTORY_INBOUND_GROUP_SESSIONS", "shared_history_inbound_group_sessions"); +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_PARKED_SHARED_HISTORY", "parked_shared_history"); +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_DEVICE_DATA", "device_data"); +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_ROOMS", "rooms"); +(0, _defineProperty2.default)(IndexedDBCryptoStore, "STORE_BACKUP", "sessions_needing_backup"); +//# sourceMappingURL=indexeddb-crypto-store.js.map /***/ }), /***/ 8143: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -45682,14 +154969,12 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LocalStorageCryptoStore = void 0; - -var _logger = __webpack_require__(3854); - -var _memoryCryptoStore = __webpack_require__(5881); - +var _logger = __nccwpck_require__(3854); +var _memoryCryptoStore = __nccwpck_require__(5881); +var _base = __nccwpck_require__(2356); +var _utils = __nccwpck_require__(2557); /* -Copyright 2017, 2018 New Vector Ltd -Copyright 2020 The Matrix.org Foundation C.I.C. +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -45710,10 +154995,10 @@ limitations under the License. * some things backed by localStorage. It exists because indexedDB * is broken in Firefox private mode or set to, "will not remember * history". - * - * @module */ + const E2E_PREFIX = "crypto."; +const KEY_END_TO_END_MIGRATION_STATE = E2E_PREFIX + "migration"; const KEY_END_TO_END_ACCOUNT = E2E_PREFIX + "account"; const KEY_CROSS_SIGNING_KEYS = E2E_PREFIX + "cross_signing_keys"; const KEY_NOTIFIED_ERROR_DEVICES = E2E_PREFIX + "notified_error_devices"; @@ -45722,66 +155007,93 @@ const KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + "inboundgroupsessions/"; const KEY_INBOUND_SESSION_WITHHELD_PREFIX = E2E_PREFIX + "inboundgroupsessions.withheld/"; const KEY_ROOMS_PREFIX = E2E_PREFIX + "rooms/"; const KEY_SESSIONS_NEEDING_BACKUP = E2E_PREFIX + "sessionsneedingbackup"; - function keyEndToEndSessions(deviceKey) { return E2E_PREFIX + "sessions/" + deviceKey; } - function keyEndToEndSessionProblems(deviceKey) { return E2E_PREFIX + "session.problems/" + deviceKey; } - function keyEndToEndInboundGroupSession(senderKey, sessionId) { return KEY_INBOUND_SESSION_PREFIX + senderKey + "/" + sessionId; } - function keyEndToEndInboundGroupSessionWithheld(senderKey, sessionId) { return KEY_INBOUND_SESSION_WITHHELD_PREFIX + senderKey + "/" + sessionId; } - function keyEndToEndRoomsPrefix(roomId) { return KEY_ROOMS_PREFIX + roomId; } -/** - * @implements {module:crypto/store/base~CryptoStore} - */ - - class LocalStorageCryptoStore extends _memoryCryptoStore.MemoryCryptoStore { - constructor(webStore) { - super(); - this.store = webStore; - } - - static exists(webStore) { - const length = webStore.length; - + static exists(store) { + const length = store.length; for (let i = 0; i < length; i++) { - if (webStore.key(i).startsWith(E2E_PREFIX)) { + var _store$key; + if ((_store$key = store.key(i)) !== null && _store$key !== void 0 && _store$key.startsWith(E2E_PREFIX)) { return true; } } - return false; - } // Olm Sessions + } + constructor(store) { + super(); + this.store = store; + } + /** + * Returns true if this CryptoStore has ever been initialised (ie, it might contain data). + * + * Implementation of {@link CryptoStore.containsData}. + * + * @internal + */ + async containsData() { + return LocalStorageCryptoStore.exists(this.store); + } + + /** + * Get data on how much of the libolm to Rust Crypto migration has been done. + * + * Implementation of {@link CryptoStore.getMigrationState}. + * + * @internal + */ + async getMigrationState() { + var _getJsonItem; + return (_getJsonItem = getJsonItem(this.store, KEY_END_TO_END_MIGRATION_STATE)) !== null && _getJsonItem !== void 0 ? _getJsonItem : _base.MigrationState.NOT_STARTED; + } + + /** + * Set data on how much of the libolm to Rust Crypto migration has been done. + * + * Implementation of {@link CryptoStore.setMigrationState}. + * + * @internal + */ + async setMigrationState(migrationState) { + setJsonItem(this.store, KEY_END_TO_END_MIGRATION_STATE, migrationState); + } + + // Olm Sessions countEndToEndSessions(txn, func) { let count = 0; - for (let i = 0; i < this.store.length; ++i) { - if (this.store.key(i).startsWith(keyEndToEndSessions(''))) ++count; + const key = this.store.key(i); + if (key !== null && key !== void 0 && key.startsWith(keyEndToEndSessions(""))) { + const sessions = getJsonItem(this.store, key); + count += Object.keys(sessions !== null && sessions !== void 0 ? sessions : {}).length; + } } - func(count); } - _getEndToEndSessions(deviceKey, txn, func) { + // eslint-disable-next-line @typescript-eslint/naming-convention + _getEndToEndSessions(deviceKey) { const sessions = getJsonItem(this.store, keyEndToEndSessions(deviceKey)); - const fixedSessions = {}; // fix up any old sessions to be objects rather than just the base64 pickle + const fixedSessions = {}; + // fix up any old sessions to be objects rather than just the base64 pickle for (const [sid, val] of Object.entries(sessions || {})) { - if (typeof val === 'string') { + if (typeof val === "string") { fixedSessions[sid] = { session: val }; @@ -45789,38 +155101,31 @@ class LocalStorageCryptoStore extends _memoryCryptoStore.MemoryCryptoStore { fixedSessions[sid] = val; } } - return fixedSessions; } - getEndToEndSession(deviceKey, sessionId, txn, func) { const sessions = this._getEndToEndSessions(deviceKey); - func(sessions[sessionId] || {}); } - getEndToEndSessions(deviceKey, txn, func) { func(this._getEndToEndSessions(deviceKey) || {}); } - getAllEndToEndSessions(txn, func) { for (let i = 0; i < this.store.length; ++i) { - if (this.store.key(i).startsWith(keyEndToEndSessions(''))) { - const deviceKey = this.store.key(i).split('/')[1]; - + var _this$store$key; + if ((_this$store$key = this.store.key(i)) !== null && _this$store$key !== void 0 && _this$store$key.startsWith(keyEndToEndSessions(""))) { + const deviceKey = this.store.key(i).split("/")[1]; for (const sess of Object.values(this._getEndToEndSessions(deviceKey))) { func(sess); } } } } - storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) { const sessions = this._getEndToEndSessions(deviceKey) || {}; sessions[sessionId] = sessionInfo; setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions); } - async storeEndToEndSessionProblem(deviceKey, type, fixed) { const key = keyEndToEndSessionProblems(deviceKey); const problems = getJsonItem(this.store, key) || []; @@ -45834,17 +155139,13 @@ class LocalStorageCryptoStore extends _memoryCryptoStore.MemoryCryptoStore { }); setJsonItem(this.store, key, problems); } - async getEndToEndSessionProblem(deviceKey, timestamp) { const key = keyEndToEndSessionProblems(deviceKey); const problems = getJsonItem(this.store, key) || []; - if (!problems.length) { return null; } - const lastProblem = problems[problems.length - 1]; - for (const problem of problems) { if (problem.time > timestamp) { return Object.assign({}, problem, { @@ -45852,119 +155153,228 @@ class LocalStorageCryptoStore extends _memoryCryptoStore.MemoryCryptoStore { }); } } - if (lastProblem.fixed) { return null; } else { return lastProblem; } } - async filterOutNotifiedErrorDevices(devices) { const notifiedErrorDevices = getJsonItem(this.store, KEY_NOTIFIED_ERROR_DEVICES) || {}; const ret = []; - for (const device of devices) { const { userId, deviceInfo } = device; - if (userId in notifiedErrorDevices) { if (!(deviceInfo.deviceId in notifiedErrorDevices[userId])) { ret.push(device); - notifiedErrorDevices[userId][deviceInfo.deviceId] = true; + (0, _utils.safeSet)(notifiedErrorDevices[userId], deviceInfo.deviceId, true); } } else { ret.push(device); - notifiedErrorDevices[userId] = { + (0, _utils.safeSet)(notifiedErrorDevices, userId, { [deviceInfo.deviceId]: true - }; + }); } } - setJsonItem(this.store, KEY_NOTIFIED_ERROR_DEVICES, notifiedErrorDevices); return ret; - } // Inbound Group Sessions + } + /** + * Fetch a batch of Olm sessions from the database. + * + * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}. + * + * @internal + */ + async getEndToEndSessionsBatch() { + const result = []; + for (let i = 0; i < this.store.length; ++i) { + var _this$store$key2; + if ((_this$store$key2 = this.store.key(i)) !== null && _this$store$key2 !== void 0 && _this$store$key2.startsWith(keyEndToEndSessions(""))) { + const deviceKey = this.store.key(i).split("/")[1]; + for (const session of Object.values(this._getEndToEndSessions(deviceKey))) { + result.push(session); + if (result.length >= _base.SESSION_BATCH_SIZE) { + return result; + } + } + } + } + if (result.length === 0) { + // No sessions left. + return null; + } + + // There are fewer sessions than the batch size; return the final batch of sessions. + return result; + } + + /** + * Delete a batch of Olm sessions from the database. + * + * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}. + * + * @internal + */ + async deleteEndToEndSessionsBatch(sessions) { + for (const { + deviceKey, + sessionId + } of sessions) { + const deviceSessions = this._getEndToEndSessions(deviceKey) || {}; + delete deviceSessions[sessionId]; + if (Object.keys(deviceSessions).length === 0) { + // No more sessions for this device. + this.store.removeItem(keyEndToEndSessions(deviceKey)); + } else { + setJsonItem(this.store, keyEndToEndSessions(deviceKey), deviceSessions); + } + } + } + + // Inbound Group Sessions getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) { func(getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)), getJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId))); } - getAllEndToEndInboundGroupSessions(txn, func) { for (let i = 0; i < this.store.length; ++i) { const key = this.store.key(i); - - if (key.startsWith(KEY_INBOUND_SESSION_PREFIX)) { + if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) { // we can't use split, as the components we are trying to split out // might themselves contain '/' characters. We rely on the // senderKey being a (32-byte) curve25519 key, base64-encoded // (hence 43 characters long). + func({ - senderKey: key.substr(KEY_INBOUND_SESSION_PREFIX.length, 43), - sessionId: key.substr(KEY_INBOUND_SESSION_PREFIX.length + 44), + senderKey: key.slice(KEY_INBOUND_SESSION_PREFIX.length, KEY_INBOUND_SESSION_PREFIX.length + 43), + sessionId: key.slice(KEY_INBOUND_SESSION_PREFIX.length + 44), sessionData: getJsonItem(this.store, key) }); } } - func(null); } - addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { const existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)); - if (!existing) { this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn); } } - storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData); } - storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn) { setJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId), sessionData); } + /** + * Count the number of Megolm sessions in the database. + * + * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}. + * + * @internal + */ + async countEndToEndInboundGroupSessions() { + let count = 0; + for (let i = 0; i < this.store.length; ++i) { + const key = this.store.key(i); + if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) { + count += 1; + } + } + return count; + } + + /** + * Fetch a batch of Megolm sessions from the database. + * + * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}. + * + * @internal + */ + async getEndToEndInboundGroupSessionsBatch() { + const sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {}; + const result = []; + for (let i = 0; i < this.store.length; ++i) { + const key = this.store.key(i); + if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) { + const key2 = key.slice(KEY_INBOUND_SESSION_PREFIX.length); + + // we can't use split, as the components we are trying to split out + // might themselves contain '/' characters. We rely on the + // senderKey being a (32-byte) curve25519 key, base64-encoded + // (hence 43 characters long). + + result.push({ + senderKey: key2.slice(0, 43), + sessionId: key2.slice(44), + sessionData: getJsonItem(this.store, key), + needsBackup: key2 in sessionsNeedingBackup + }); + if (result.length >= _base.SESSION_BATCH_SIZE) { + return result; + } + } + } + if (result.length === 0) { + // No sessions left. + return null; + } + + // There are fewer sessions than the batch size; return the final batch of sessions. + return result; + } + + /** + * Delete a batch of Megolm sessions from the database. + * + * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}. + * + * @internal + */ + async deleteEndToEndInboundGroupSessionsBatch(sessions) { + for (const { + senderKey, + sessionId + } of sessions) { + const k = keyEndToEndInboundGroupSession(senderKey, sessionId); + this.store.removeItem(k); + } + } getEndToEndDeviceData(txn, func) { func(getJsonItem(this.store, KEY_DEVICE_DATA)); } - storeEndToEndDeviceData(deviceData, txn) { setJsonItem(this.store, KEY_DEVICE_DATA, deviceData); } - storeEndToEndRoom(roomId, roomInfo, txn) { setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo); } - getEndToEndRooms(txn, func) { const result = {}; - const prefix = keyEndToEndRoomsPrefix(''); - + const prefix = keyEndToEndRoomsPrefix(""); for (let i = 0; i < this.store.length; ++i) { const key = this.store.key(i); - - if (key.startsWith(prefix)) { - const roomId = key.substr(prefix.length); + if (key !== null && key !== void 0 && key.startsWith(prefix)) { + const roomId = key.slice(prefix.length); result[roomId] = getJsonItem(this.store, key); } } - func(result); } - getSessionsNeedingBackup(limit) { const sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {}; const sessions = []; - for (const session in sessionsNeedingBackup) { if (Object.prototype.hasOwnProperty.call(sessionsNeedingBackup, session)) { // see getAllEndToEndInboundGroupSessions for the magic number explanations - const senderKey = session.substr(0, 43); - const sessionId = session.substr(44); + const senderKey = session.slice(0, 43); + const sessionId = session.slice(44); this.getEndToEndInboundGroupSession(senderKey, sessionId, null, sessionData => { sessions.push({ senderKey: senderKey, @@ -45972,417 +155382,406 @@ class LocalStorageCryptoStore extends _memoryCryptoStore.MemoryCryptoStore { sessionData: sessionData }); }); - - if (limit && session.length >= limit) { + if (limit && sessions.length >= limit) { break; } } } - return Promise.resolve(sessions); } - countSessionsNeedingBackup() { const sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {}; return Promise.resolve(Object.keys(sessionsNeedingBackup).length); } - unmarkSessionsNeedingBackup(sessions) { const sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {}; - for (const session of sessions) { - delete sessionsNeedingBackup[session.senderKey + '/' + session.sessionId]; + delete sessionsNeedingBackup[session.senderKey + "/" + session.sessionId]; } - setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup); return Promise.resolve(); } - markSessionsNeedingBackup(sessions) { const sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {}; - for (const session of sessions) { - sessionsNeedingBackup[session.senderKey + '/' + session.sessionId] = true; + sessionsNeedingBackup[session.senderKey + "/" + session.sessionId] = true; } - setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup); return Promise.resolve(); } + /** * Delete all data from this store. * - * @returns {Promise} Promise which resolves when the store has been cleared. + * @returns Promise which resolves when the store has been cleared. */ - - deleteAllData() { this.store.removeItem(KEY_END_TO_END_ACCOUNT); return Promise.resolve(); - } // Olm account + } + // Olm account getAccount(txn, func) { - const account = getJsonItem(this.store, KEY_END_TO_END_ACCOUNT); - func(account); + const accountPickle = getJsonItem(this.store, KEY_END_TO_END_ACCOUNT); + func(accountPickle); } - - storeAccount(txn, newData) { - setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, newData); + storeAccount(txn, accountPickle) { + setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, accountPickle); } - getCrossSigningKeys(txn, func) { const keys = getJsonItem(this.store, KEY_CROSS_SIGNING_KEYS); func(keys); } - getSecretStorePrivateKey(txn, func, type) { const key = getJsonItem(this.store, E2E_PREFIX + `ssss_cache.${type}`); func(key); } - storeCrossSigningKeys(txn, keys) { setJsonItem(this.store, KEY_CROSS_SIGNING_KEYS, keys); } - storeSecretStorePrivateKey(txn, type, key) { setJsonItem(this.store, E2E_PREFIX + `ssss_cache.${type}`, key); } - doTxn(mode, stores, func) { return Promise.resolve(func(null)); } - } - exports.LocalStorageCryptoStore = LocalStorageCryptoStore; - function getJsonItem(store, key) { try { // if the key is absent, store.getItem() returns null, and // JSON.parse(null) === null, so this returns null. return JSON.parse(store.getItem(key)); } catch (e) { - _logger.logger.log("Error: Failed to get key %s: %s", key, e.stack || e); - + _logger.logger.log("Error: Failed to get key %s: %s", key, e.message); _logger.logger.log(e.stack); } - return null; } - function setJsonItem(store, key, val) { store.setItem(key, JSON.stringify(val)); } +//# sourceMappingURL=localStorage-crypto-store.js.map /***/ }), /***/ 5881: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - -var _interopRequireDefault = __webpack_require__(3298); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.MemoryCryptoStore = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); +var _base = __nccwpck_require__(2356); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. -var _defineProperty2 = _interopRequireDefault(__webpack_require__(3561)); +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at -var _logger = __webpack_require__(3854); + http://www.apache.org/licenses/LICENSE-2.0 -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +function encodeSessionKey(senderCurve25519Key, sessionId) { + return encodeURIComponent(senderCurve25519Key) + "/" + encodeURIComponent(sessionId); +} +function decodeSessionKey(key) { + const keyParts = key.split("/"); + const senderKey = decodeURIComponent(keyParts[0]); + const sessionId = decodeURIComponent(keyParts[1]); + return { + senderKey, + sessionId + }; +} /** * Internal module. in-memory storage for e2e. - * - * @module */ -/** - * @implements {module:crypto/store/base~CryptoStore} - */ class MemoryCryptoStore { constructor() { - this._outgoingRoomKeyRequests = []; - this._account = null; - this._crossSigningKeys = null; - this._privateKeys = {}; - this._backupKeys = {}; // Map of {devicekey -> {sessionId -> session pickle}} - - this._sessions = {}; // Map of {devicekey -> array of problems} - - this._sessionProblems = {}; // Map of {userId -> deviceId -> true} - - this._notifiedErrorDevices = {}; // Map of {senderCurve25519Key+'/'+sessionId -> session data object} - - this._inboundGroupSessions = {}; - this._inboundGroupSessionsWithheld = {}; // Opaque device data object - - this._deviceData = null; // roomId -> Opaque roomInfo object - - this._rooms = {}; // Set of {senderCurve25519Key+'/'+sessionId} - - this._sessionsNeedingBackup = {}; + (0, _defineProperty2.default)(this, "migrationState", _base.MigrationState.NOT_STARTED); + (0, _defineProperty2.default)(this, "outgoingRoomKeyRequests", []); + (0, _defineProperty2.default)(this, "account", null); + (0, _defineProperty2.default)(this, "crossSigningKeys", null); + (0, _defineProperty2.default)(this, "privateKeys", {}); + (0, _defineProperty2.default)(this, "sessions", {}); + (0, _defineProperty2.default)(this, "sessionProblems", {}); + (0, _defineProperty2.default)(this, "notifiedErrorDevices", {}); + (0, _defineProperty2.default)(this, "inboundGroupSessions", {}); + (0, _defineProperty2.default)(this, "inboundGroupSessionsWithheld", {}); + // Opaque device data object + (0, _defineProperty2.default)(this, "deviceData", null); + (0, _defineProperty2.default)(this, "rooms", {}); + (0, _defineProperty2.default)(this, "sessionsNeedingBackup", {}); + (0, _defineProperty2.default)(this, "sharedHistoryInboundGroupSessions", {}); + (0, _defineProperty2.default)(this, "parkedSharedHistory", new Map()); } + // keyed by room ID + + /** + * Returns true if this CryptoStore has ever been initialised (ie, it might contain data). + * + * Implementation of {@link CryptoStore.containsData}. + * + * @internal + */ + async containsData() { + // If it contains anything, it should contain an account. + return this.account !== null; + } + /** * Ensure the database exists and is up-to-date. * * This must be called before the store can be used. * - * @return {Promise} resolves to the store. + * @returns resolves to the store. */ - - async startup() { // No startup work to do for the memory store. return this; } + /** * Delete all data from this store. * - * @returns {Promise} Promise which resolves when the store has been cleared. + * @returns Promise which resolves when the store has been cleared. */ - - deleteAllData() { return Promise.resolve(); } + + /** + * Get data on how much of the libolm to Rust Crypto migration has been done. + * + * Implementation of {@link CryptoStore.getMigrationState}. + * + * @internal + */ + async getMigrationState() { + return this.migrationState; + } + + /** + * Set data on how much of the libolm to Rust Crypto migration has been done. + * + * Implementation of {@link CryptoStore.setMigrationState}. + * + * @internal + */ + async setMigrationState(migrationState) { + this.migrationState = migrationState; + } + /** * Look for an existing outgoing room key request, and if none is found, * add a new one * - * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request * - * @returns {Promise} resolves to - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the + * @returns resolves to + * {@link OutgoingRoomKeyRequest}: either the * same instance as passed in, or the existing one. */ - - getOrAddOutgoingRoomKeyRequest(request) { const requestBody = request.requestBody; - return utils.promiseTry(() => { + return (0, _utils.promiseTry)(() => { // first see if we already have an entry for this request. const existing = this._getOutgoingRoomKeyRequest(requestBody); - if (existing) { // this entry matches the request - return it. _logger.logger.log(`already have key request outstanding for ` + `${requestBody.room_id} / ${requestBody.session_id}: ` + `not sending another`); - return existing; - } // we got to the end of the list without finding a match + } + + // we got to the end of the list without finding a match // - add the new request. - - _logger.logger.log(`enqueueing key request for ${requestBody.room_id} / ` + requestBody.session_id); - - this._outgoingRoomKeyRequests.push(request); - + this.outgoingRoomKeyRequests.push(request); return request; }); } + /** * Look for an existing room key request * - * @param {module:crypto~RoomKeyRequestBody} requestBody - * existing request to look for + * @param requestBody - existing request to look for * - * @return {Promise} resolves to the matching - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if + * @returns resolves to the matching + * {@link OutgoingRoomKeyRequest}, or null if * not found */ - - getOutgoingRoomKeyRequest(requestBody) { return Promise.resolve(this._getOutgoingRoomKeyRequest(requestBody)); } + /** * Looks for existing room key request, and returns the result synchronously. * * @internal * - * @param {module:crypto~RoomKeyRequestBody} requestBody - * existing request to look for + * @param requestBody - existing request to look for * - * @return {module:crypto/store/base~OutgoingRoomKeyRequest?} + * @returns * the matching request, or null if not found */ - - + // eslint-disable-next-line @typescript-eslint/naming-convention _getOutgoingRoomKeyRequest(requestBody) { - for (const existing of this._outgoingRoomKeyRequests) { - if (utils.deepCompare(existing.requestBody, requestBody)) { + for (const existing of this.outgoingRoomKeyRequests) { + if ((0, _utils.deepCompare)(existing.requestBody, requestBody)) { return existing; } } - return null; } + /** * Look for room key requests by state * - * @param {Array} wantedStates list of acceptable states + * @param wantedStates - list of acceptable states * - * @return {Promise} resolves to the a - * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if + * @returns resolves to the a + * {@link OutgoingRoomKeyRequest}, or null if * there are no pending requests in those states */ - - getOutgoingRoomKeyRequestByState(wantedStates) { - for (const req of this._outgoingRoomKeyRequests) { + for (const req of this.outgoingRoomKeyRequests) { for (const state of wantedStates) { if (req.state === state) { return Promise.resolve(req); } } } - return Promise.resolve(null); } + /** * - * @param {Number} wantedState - * @return {Promise>} All OutgoingRoomKeyRequests in state + * @returns All OutgoingRoomKeyRequests in state */ - - getAllOutgoingRoomKeyRequestsByState(wantedState) { - return Promise.resolve(this._outgoingRoomKeyRequests.filter(r => r.state == wantedState)); + return Promise.resolve(this.outgoingRoomKeyRequests.filter(r => r.state == wantedState)); } - getOutgoingRoomKeyRequestsByTarget(userId, deviceId, wantedStates) { const results = []; - - for (const req of this._outgoingRoomKeyRequests) { + for (const req of this.outgoingRoomKeyRequests) { for (const state of wantedStates) { - if (req.state === state && req.recipients.includes({ - userId, - deviceId - })) { + if (req.state === state && req.recipients.some(recipient => recipient.userId === userId && recipient.deviceId === deviceId)) { results.push(req); } } } - return Promise.resolve(results); } + /** * Look for an existing room key request by id and state, and update it if * found * - * @param {string} requestId ID of request to update - * @param {number} expectedState state we expect to find the request in - * @param {Object} updates name/value map of updates to apply + * @param requestId - ID of request to update + * @param expectedState - state we expect to find the request in + * @param updates - name/value map of updates to apply * - * @returns {Promise} resolves to - * {@link module:crypto/store/base~OutgoingRoomKeyRequest} + * @returns resolves to + * {@link OutgoingRoomKeyRequest} * updated request, or null if no matching row was found */ - - updateOutgoingRoomKeyRequest(requestId, expectedState, updates) { - for (const req of this._outgoingRoomKeyRequests) { + for (const req of this.outgoingRoomKeyRequests) { if (req.requestId !== requestId) { continue; } - - if (req.state != expectedState) { + if (req.state !== expectedState) { _logger.logger.warn(`Cannot update room key request from ${expectedState} ` + `as it was already updated to ${req.state}`); - return Promise.resolve(null); } - Object.assign(req, updates); return Promise.resolve(req); } - return Promise.resolve(null); } + /** * Look for an existing room key request by id and state, and delete it if * found * - * @param {string} requestId ID of request to update - * @param {number} expectedState state we expect to find the request in + * @param requestId - ID of request to update + * @param expectedState - state we expect to find the request in * - * @returns {Promise} resolves once the operation is completed + * @returns resolves once the operation is completed */ - - deleteOutgoingRoomKeyRequest(requestId, expectedState) { - for (let i = 0; i < this._outgoingRoomKeyRequests.length; i++) { - const req = this._outgoingRoomKeyRequests[i]; - + for (let i = 0; i < this.outgoingRoomKeyRequests.length; i++) { + const req = this.outgoingRoomKeyRequests[i]; if (req.requestId !== requestId) { continue; } - if (req.state != expectedState) { _logger.logger.warn(`Cannot delete room key request in state ${req.state} ` + `(expected ${expectedState})`); - return Promise.resolve(null); } - - this._outgoingRoomKeyRequests.splice(i, 1); - + this.outgoingRoomKeyRequests.splice(i, 1); return Promise.resolve(req); } - return Promise.resolve(null); - } // Olm Account + } + // Olm Account getAccount(txn, func) { - func(this._account); + func(this.account); } - - storeAccount(txn, newData) { - this._account = newData; + storeAccount(txn, accountPickle) { + this.account = accountPickle; } - getCrossSigningKeys(txn, func) { - func(this._crossSigningKeys); + func(this.crossSigningKeys); } - getSecretStorePrivateKey(txn, func, type) { - const result = this._privateKeys[type]; - return func(result || null); + const result = this.privateKeys[type]; + func(result || null); } - storeCrossSigningKeys(txn, keys) { - this._crossSigningKeys = keys; + this.crossSigningKeys = keys; + } + storeSecretStorePrivateKey(txn, type, key) { + this.privateKeys[type] = key; } - storeSecretStorePrivateKey(txn, type, key) { - this._privateKeys[type] = key; - } // Olm Sessions - + // Olm Sessions countEndToEndSessions(txn, func) { - return Object.keys(this._sessions).length; + let count = 0; + for (const deviceSessions of Object.values(this.sessions)) { + count += Object.keys(deviceSessions).length; + } + func(count); } - getEndToEndSession(deviceKey, sessionId, txn, func) { - const deviceSessions = this._sessions[deviceKey] || {}; + const deviceSessions = this.sessions[deviceKey] || {}; func(deviceSessions[sessionId] || null); } - getEndToEndSessions(deviceKey, txn, func) { - func(this._sessions[deviceKey] || {}); + func(this.sessions[deviceKey] || {}); } - getAllEndToEndSessions(txn, func) { - Object.entries(this._sessions).forEach(([deviceKey, deviceSessions]) => { + Object.entries(this.sessions).forEach(([deviceKey, deviceSessions]) => { Object.entries(deviceSessions).forEach(([sessionId, session]) => { func(_objectSpread(_objectSpread({}, session), {}, { deviceKey, @@ -46391,20 +155790,16 @@ class MemoryCryptoStore { }); }); } - storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) { - let deviceSessions = this._sessions[deviceKey]; - + let deviceSessions = this.sessions[deviceKey]; if (deviceSessions === undefined) { deviceSessions = {}; - this._sessions[deviceKey] = deviceSessions; + this.sessions[deviceKey] = deviceSessions; } - - deviceSessions[sessionId] = sessionInfo; + (0, _utils.safeSet)(deviceSessions, sessionId, sessionInfo); } - async storeEndToEndSessionProblem(deviceKey, type, fixed) { - const problems = this._sessionProblems[deviceKey] = this._sessionProblems[deviceKey] || []; + const problems = this.sessionProblems[deviceKey] = this.sessionProblems[deviceKey] || []; problems.push({ type, fixed, @@ -46414,16 +155809,12 @@ class MemoryCryptoStore { return a.time - b.time; }); } - async getEndToEndSessionProblem(deviceKey, timestamp) { - const problems = this._sessionProblems[deviceKey] || []; - + const problems = this.sessionProblems[deviceKey] || []; if (!problems.length) { return null; } - const lastProblem = problems[problems.length - 1]; - for (const problem of problems) { if (problem.time > timestamp) { return Object.assign({}, problem, { @@ -46431,173 +155822,266 @@ class MemoryCryptoStore { }); } } - if (lastProblem.fixed) { return null; } else { return lastProblem; } } - async filterOutNotifiedErrorDevices(devices) { - const notifiedErrorDevices = this._notifiedErrorDevices; + const notifiedErrorDevices = this.notifiedErrorDevices; const ret = []; - for (const device of devices) { const { userId, deviceInfo } = device; - if (userId in notifiedErrorDevices) { if (!(deviceInfo.deviceId in notifiedErrorDevices[userId])) { ret.push(device); - notifiedErrorDevices[userId][deviceInfo.deviceId] = true; + (0, _utils.safeSet)(notifiedErrorDevices[userId], deviceInfo.deviceId, true); } } else { ret.push(device); - notifiedErrorDevices[userId] = { + (0, _utils.safeSet)(notifiedErrorDevices, userId, { [deviceInfo.deviceId]: true - }; + }); } } - return ret; - } // Inbound Group Sessions + } + /** + * Fetch a batch of Olm sessions from the database. + * + * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}. + * + * @internal + */ + async getEndToEndSessionsBatch() { + const result = []; + for (const deviceSessions of Object.values(this.sessions)) { + for (const session of Object.values(deviceSessions)) { + result.push(session); + if (result.length >= _base.SESSION_BATCH_SIZE) { + return result; + } + } + } + if (result.length === 0) { + // No sessions left. + return null; + } + + // There are fewer sessions than the batch size; return the final batch of sessions. + return result; + } + + /** + * Delete a batch of Olm sessions from the database. + * + * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}. + * + * @internal + */ + async deleteEndToEndSessionsBatch(sessions) { + for (const { + deviceKey, + sessionId + } of sessions) { + const deviceSessions = this.sessions[deviceKey] || {}; + delete deviceSessions[sessionId]; + if (Object.keys(deviceSessions).length === 0) { + // No more sessions for this device. + delete this.sessions[deviceKey]; + } + } + } + + // Inbound Group Sessions getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) { - const k = senderCurve25519Key + '/' + sessionId; - func(this._inboundGroupSessions[k] || null, this._inboundGroupSessionsWithheld[k] || null); + const k = encodeSessionKey(senderCurve25519Key, sessionId); + func(this.inboundGroupSessions[k] || null, this.inboundGroupSessionsWithheld[k] || null); } - getAllEndToEndInboundGroupSessions(txn, func) { - for (const key of Object.keys(this._inboundGroupSessions)) { - // we can't use split, as the components we are trying to split out - // might themselves contain '/' characters. We rely on the - // senderKey being a (32-byte) curve25519 key, base64-encoded - // (hence 43 characters long). - func({ - senderKey: key.substr(0, 43), - sessionId: key.substr(44), - sessionData: this._inboundGroupSessions[key] - }); + for (const key of Object.keys(this.inboundGroupSessions)) { + func(_objectSpread(_objectSpread({}, decodeSessionKey(key)), {}, { + sessionData: this.inboundGroupSessions[key] + })); } - func(null); } - addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { - const k = senderCurve25519Key + '/' + sessionId; + const k = encodeSessionKey(senderCurve25519Key, sessionId); + if (this.inboundGroupSessions[k] === undefined) { + this.inboundGroupSessions[k] = sessionData; + } + } + storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { + const k = encodeSessionKey(senderCurve25519Key, sessionId); + this.inboundGroupSessions[k] = sessionData; + } + storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn) { + const k = encodeSessionKey(senderCurve25519Key, sessionId); + this.inboundGroupSessionsWithheld[k] = sessionData; + } - if (this._inboundGroupSessions[k] === undefined) { - this._inboundGroupSessions[k] = sessionData; + /** + * Count the number of Megolm sessions in the database. + * + * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}. + * + * @internal + */ + async countEndToEndInboundGroupSessions() { + return Object.keys(this.inboundGroupSessions).length; + } + + /** + * Fetch a batch of Megolm sessions from the database. + * + * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}. + * + * @internal + */ + async getEndToEndInboundGroupSessionsBatch() { + const result = []; + for (const [key, session] of Object.entries(this.inboundGroupSessions)) { + result.push(_objectSpread(_objectSpread({}, decodeSessionKey(key)), {}, { + sessionData: session, + needsBackup: key in this.sessionsNeedingBackup + })); + if (result.length >= _base.SESSION_BATCH_SIZE) { + return result; + } + } + if (result.length === 0) { + // No sessions left. + return null; + } + + // There are fewer sessions than the batch size; return the final batch of sessions. + return result; + } + + /** + * Delete a batch of Megolm sessions from the database. + * + * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}. + * + * @internal + */ + async deleteEndToEndInboundGroupSessionsBatch(sessions) { + for (const { + senderKey, + sessionId + } of sessions) { + const k = encodeSessionKey(senderKey, sessionId); + delete this.inboundGroupSessions[k]; } } - storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) { - this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] = sessionData; - } - - storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn) { - const k = senderCurve25519Key + '/' + sessionId; - this._inboundGroupSessionsWithheld[k] = sessionData; - } // Device Data - + // Device Data getEndToEndDeviceData(txn, func) { - func(this._deviceData); + func(this.deviceData); + } + storeEndToEndDeviceData(deviceData, txn) { + this.deviceData = deviceData; } - storeEndToEndDeviceData(deviceData, txn) { - this._deviceData = deviceData; - } // E2E rooms - + // E2E rooms storeEndToEndRoom(roomId, roomInfo, txn) { - this._rooms[roomId] = roomInfo; + this.rooms[roomId] = roomInfo; } - getEndToEndRooms(txn, func) { - func(this._rooms); + func(this.rooms); } - getSessionsNeedingBackup(limit) { const sessions = []; - - for (const session in this._sessionsNeedingBackup) { - if (this._inboundGroupSessions[session]) { - sessions.push({ - senderKey: session.substr(0, 43), - sessionId: session.substr(44), - sessionData: this._inboundGroupSessions[session] - }); - + for (const session in this.sessionsNeedingBackup) { + if (this.inboundGroupSessions[session]) { + sessions.push(_objectSpread(_objectSpread({}, decodeSessionKey(session)), {}, { + sessionData: this.inboundGroupSessions[session] + })); if (limit && session.length >= limit) { break; } } } - return Promise.resolve(sessions); } - countSessionsNeedingBackup() { - return Promise.resolve(Object.keys(this._sessionsNeedingBackup).length); + return Promise.resolve(Object.keys(this.sessionsNeedingBackup).length); } - unmarkSessionsNeedingBackup(sessions) { for (const session of sessions) { - const sessionKey = session.senderKey + '/' + session.sessionId; - delete this._sessionsNeedingBackup[sessionKey]; + const sessionKey = encodeSessionKey(session.senderKey, session.sessionId); + delete this.sessionsNeedingBackup[sessionKey]; } - return Promise.resolve(); } - markSessionsNeedingBackup(sessions) { for (const session of sessions) { - const sessionKey = session.senderKey + '/' + session.sessionId; - this._sessionsNeedingBackup[sessionKey] = true; + const sessionKey = encodeSessionKey(session.senderKey, session.sessionId); + this.sessionsNeedingBackup[sessionKey] = true; } - return Promise.resolve(); - } // Session key backups + } + addSharedHistoryInboundGroupSession(roomId, senderKey, sessionId) { + const sessions = this.sharedHistoryInboundGroupSessions[roomId] || []; + sessions.push([senderKey, sessionId]); + this.sharedHistoryInboundGroupSessions[roomId] = sessions; + } + getSharedHistoryInboundGroupSessions(roomId) { + return Promise.resolve(this.sharedHistoryInboundGroupSessions[roomId] || []); + } + addParkedSharedHistory(roomId, parkedData) { + var _this$parkedSharedHis; + const parked = (_this$parkedSharedHis = this.parkedSharedHistory.get(roomId)) !== null && _this$parkedSharedHis !== void 0 ? _this$parkedSharedHis : []; + parked.push(parkedData); + this.parkedSharedHistory.set(roomId, parked); + } + takeParkedSharedHistory(roomId) { + var _this$parkedSharedHis2; + const parked = (_this$parkedSharedHis2 = this.parkedSharedHistory.get(roomId)) !== null && _this$parkedSharedHis2 !== void 0 ? _this$parkedSharedHis2 : []; + this.parkedSharedHistory.delete(roomId); + return Promise.resolve(parked); + } + // Session key backups doTxn(mode, stores, func) { return Promise.resolve(func(null)); } - } - exports.MemoryCryptoStore = MemoryCryptoStore; +//# sourceMappingURL=memory-crypto-store.js.map /***/ }), /***/ 6971: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.VerificationBase = exports.SwitchStartEventError = void 0; - -var _event = __webpack_require__(9564); - -var _events = __webpack_require__(8614); - -var _logger = __webpack_require__(3854); - -var _deviceinfo = __webpack_require__(5232); - -var _Error = __webpack_require__(9697); - -var _CrossSigning = __webpack_require__(2933); - +exports.VerificationEvent = exports.VerificationBase = exports.SwitchStartEventError = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _event = __nccwpck_require__(9564); +var _event2 = __nccwpck_require__(7487); +var _logger = __nccwpck_require__(3854); +var _deviceinfo = __nccwpck_require__(5232); +var _Error = __nccwpck_require__(9697); +var _CrossSigning = __nccwpck_require__(2933); +var _typedEventEmitter = __nccwpck_require__(7150); +var _verification = __nccwpck_require__(6825); /* Copyright 2018 New Vector Ltd Copyright 2020 The Matrix.org Foundation C.I.C. @@ -46617,21 +156101,27 @@ limitations under the License. /** * Base class for verification methods. - * @module crypto/verification/Base */ -const timeoutException = new Error("Verification timed out"); +const timeoutException = new Error("Verification timed out"); class SwitchStartEventError extends Error { constructor(startEvent) { super(); this.startEvent = startEvent; } - } +/** @deprecated use VerifierEvent */ exports.SwitchStartEventError = SwitchStartEventError; +/** @deprecated use VerifierEvent */ +const VerificationEvent = exports.VerificationEvent = _verification.VerifierEvent; -class VerificationBase extends _events.EventEmitter { +/** @deprecated use VerifierEventHandlerMap */ + +/** @deprecated Avoid referencing this class directly; instead use {@link Crypto.Verifier}. */ +// The type parameters of VerificationBase are no longer used, but we need some placeholders to maintain +// backwards compatibility with applications that reference the class. +class VerificationBase extends _typedEventEmitter.TypedEventEmitter { /** * Base class for verification methods. * @@ -46642,36 +156132,34 @@ class VerificationBase extends _events.EventEmitter { * *

Subclasses must have a NAME class property.

* - * @class + * @param channel - the verification channel to send verification messages over. + * TODO: Channel types * - * @param {module:base-apis~Channel} channel the verification channel to send verification messages over. + * @param baseApis - base matrix api interface * - * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface + * @param userId - the user ID that is being verified * - * @param {string} userId the user ID that is being verified + * @param deviceId - the device ID that is being verified * - * @param {string} deviceId the device ID that is being verified - * - * @param {object} [startEvent] the m.key.verification.start event that + * @param startEvent - the m.key.verification.start event that * initiated this verification, if any * - * @param {object} [request] the key verification request object related to + * @param request - the key verification request object related to * this verification, if any */ constructor(channel, baseApis, userId, deviceId, startEvent, request) { super(); - this._channel = channel; - this._baseApis = baseApis; + (0, _defineProperty2.default)(this, "cancelled", false); + (0, _defineProperty2.default)(this, "_done", false); + (0, _defineProperty2.default)(this, "promise", null); + (0, _defineProperty2.default)(this, "transactionTimeoutTimer", null); + this.channel = channel; + this.baseApis = baseApis; this.userId = userId; this.deviceId = deviceId; this.startEvent = startEvent; this.request = request; - this.cancelled = false; - this._done = false; - this._promise = null; - this._transactionTimeoutTimer = null; } - get initiatedByMe() { // if there is no start event yet, // we probably want to send it, @@ -46679,95 +156167,82 @@ class VerificationBase extends _events.EventEmitter { if (!this.startEvent) { return true; } - const sender = this.startEvent.getSender(); const content = this.startEvent.getContent(); - return sender === this._baseApis.getUserId() && content.from_device === this._baseApis.getDeviceId(); + return sender === this.baseApis.getUserId() && content.from_device === this.baseApis.getDeviceId(); } - - _resetTimer() { + get hasBeenCancelled() { + return this.cancelled; + } + resetTimer() { _logger.logger.info("Refreshing/starting the verification transaction timeout timer"); - - if (this._transactionTimeoutTimer !== null) { - clearTimeout(this._transactionTimeoutTimer); + if (this.transactionTimeoutTimer !== null) { + clearTimeout(this.transactionTimeoutTimer); } - - this._transactionTimeoutTimer = setTimeout(() => { + this.transactionTimeoutTimer = setTimeout(() => { if (!this._done && !this.cancelled) { _logger.logger.info("Triggering verification timeout"); - this.cancel(timeoutException); } }, 10 * 60 * 1000); // 10 minutes } - - _endTimer() { - if (this._transactionTimeoutTimer !== null) { - clearTimeout(this._transactionTimeoutTimer); - this._transactionTimeoutTimer = null; + endTimer() { + if (this.transactionTimeoutTimer !== null) { + clearTimeout(this.transactionTimeoutTimer); + this.transactionTimeoutTimer = null; } } - - _send(type, uncompletedContent) { - return this._channel.send(type, uncompletedContent); + send(type, uncompletedContent) { + return this.channel.send(type, uncompletedContent); } - - _waitForEvent(type) { + waitForEvent(type) { if (this._done) { return Promise.reject(new Error("Verification is already done")); } - const existingEvent = this.request.getEventFromOtherParty(type); - if (existingEvent) { return Promise.resolve(existingEvent); } - - this._expectedEvent = type; + this.expectedEvent = type; return new Promise((resolve, reject) => { - this._resolveEvent = resolve; - this._rejectEvent = reject; + this.resolveEvent = resolve; + this.rejectEvent = reject; }); } - - canSwitchStartEvent() { + canSwitchStartEvent(event) { return false; } - switchStartEvent(event) { if (this.canSwitchStartEvent(event)) { _logger.logger.log("Verification Base: switching verification start event", { - restartingFlow: !!this._rejectEvent + restartingFlow: !!this.rejectEvent }); - - if (this._rejectEvent) { - const reject = this._rejectEvent; - this._rejectEvent = undefined; + if (this.rejectEvent) { + const reject = this.rejectEvent; + this.rejectEvent = undefined; reject(new SwitchStartEventError(event)); } else { this.startEvent = event; } } } - handleEvent(e) { if (this._done) { return; - } else if (e.getType() === this._expectedEvent) { + } else if (e.getType() === this.expectedEvent) { // if we receive an expected m.key.verification.done, then just // ignore it, since we don't need to do anything about it - if (this._expectedEvent !== "m.key.verification.done") { - this._expectedEvent = undefined; - this._rejectEvent = undefined; - - this._resetTimer(); - - this._resolveEvent(e); + if (this.expectedEvent !== _event2.EventType.KeyVerificationDone) { + var _this$resolveEvent; + this.expectedEvent = undefined; + this.rejectEvent = undefined; + this.resetTimer(); + (_this$resolveEvent = this.resolveEvent) === null || _this$resolveEvent === void 0 || _this$resolveEvent.call(this, e); } - } else if (e.getType() === "m.key.verification.cancel") { - const reject = this._reject; - this._reject = undefined; // there is only promise to reject if verify has been called - + } else if (e.getType() === _event2.EventType.KeyVerificationCancel) { + const reject = this.reject; + this.reject = undefined; + // there is only promise to reject if verify has been called if (reject) { const content = e.getContent(); const { @@ -46776,187 +156251,191 @@ class VerificationBase extends _events.EventEmitter { } = content; reject(new Error(`Other side cancelled verification ` + `because ${reason} (${code})`)); } - } else if (this._expectedEvent) { + } else if (this.expectedEvent) { // only cancel if there is an event expected. // if there is no event expected, it means verify() wasn't called // and we're just replaying the timeline events when syncing // after a refresh when the events haven't been stored in the cache yet. - const exception = new Error("Unexpected message: expecting " + this._expectedEvent + " but got " + e.getType()); - this._expectedEvent = undefined; - - if (this._rejectEvent) { - const reject = this._rejectEvent; - this._rejectEvent = undefined; + const exception = new Error("Unexpected message: expecting " + this.expectedEvent + " but got " + e.getType()); + this.expectedEvent = undefined; + if (this.rejectEvent) { + const reject = this.rejectEvent; + this.rejectEvent = undefined; reject(exception); } - this.cancel(exception); } } - - done() { - this._endTimer(); // always kill the activity timer - - + async done() { + this.endTimer(); // always kill the activity timer if (!this._done) { + var _this$resolve; this.request.onVerifierFinished(); - - this._resolve(); - - return (0, _CrossSigning.requestKeysDuringVerification)(this._baseApis, this.userId, this.deviceId); + (_this$resolve = this.resolve) === null || _this$resolve === void 0 || _this$resolve.call(this); + return (0, _CrossSigning.requestKeysDuringVerification)(this.baseApis, this.userId, this.deviceId); } } - cancel(e) { - this._endTimer(); // always kill the activity timer - - + this.endTimer(); // always kill the activity timer if (!this._done) { this.cancelled = true; this.request.onVerifierCancelled(); - if (this.userId && this.deviceId) { // send a cancellation to the other user (if it wasn't // cancelled by the other user) if (e === timeoutException) { const timeoutEvent = (0, _Error.newTimeoutError)(); - - this._send(timeoutEvent.getType(), timeoutEvent.getContent()); + this.send(timeoutEvent.getType(), timeoutEvent.getContent()); } else if (e instanceof _event.MatrixEvent) { const sender = e.getSender(); - if (sender !== this.userId) { const content = e.getContent(); - - if (e.getType() === "m.key.verification.cancel") { + if (e.getType() === _event2.EventType.KeyVerificationCancel) { content.code = content.code || "m.unknown"; content.reason = content.reason || content.body || "Unknown reason"; - - this._send("m.key.verification.cancel", content); + this.send(_event2.EventType.KeyVerificationCancel, content); } else { - this._send("m.key.verification.cancel", { + this.send(_event2.EventType.KeyVerificationCancel, { code: "m.unknown", reason: content.body || "Unknown reason" }); } } } else { - this._send("m.key.verification.cancel", { + this.send(_event2.EventType.KeyVerificationCancel, { code: "m.unknown", reason: e.toString() }); } } - - if (this._promise !== null) { + if (this.promise !== null) { // when we cancel without a promise, we end up with a promise // but no reject function. If cancel is called again, we'd error. - if (this._reject) this._reject(e); + if (this.reject) this.reject(e); } else { // FIXME: this causes an "Uncaught promise" console message // if nothing ends up chaining this promise. - this._promise = Promise.reject(e); - } // Also emit a 'cancel' event that the app can listen for to detect cancellation + this.promise = Promise.reject(e); + } + // Also emit a 'cancel' event that the app can listen for to detect cancellation // before calling verify() - - - this.emit('cancel', e); + this.emit(VerificationEvent.Cancel, e); } } + /** * Begin the key verification * - * @returns {Promise} Promise which resolves when the verification has + * @returns Promise which resolves when the verification has * completed. */ - - verify() { - if (this._promise) return this._promise; - this._promise = new Promise((resolve, reject) => { - this._resolve = (...args) => { + if (this.promise) return this.promise; + this.promise = new Promise((resolve, reject) => { + this.resolve = (...args) => { this._done = true; - - this._endTimer(); - + this.endTimer(); resolve(...args); }; - - this._reject = (...args) => { + this.reject = e => { this._done = true; - - this._endTimer(); - - reject(...args); + this.endTimer(); + reject(e); }; }); - - if (this._doVerification && !this._started) { - this._started = true; - - this._resetTimer(); // restart the timeout - - - Promise.resolve(this._doVerification()).then(this.done.bind(this), this.cancel.bind(this)); + if (this.doVerification && !this.started) { + this.started = true; + this.resetTimer(); // restart the timeout + new Promise((resolve, reject) => { + var _deviceList$getStored; + const crossSignId = (_deviceList$getStored = this.baseApis.crypto.deviceList.getStoredCrossSigningForUser(this.userId)) === null || _deviceList$getStored === void 0 ? void 0 : _deviceList$getStored.getId(); + if (crossSignId === this.deviceId) { + reject(new Error("Device ID is the same as the cross-signing ID")); + } + resolve(); + }).then(() => this.doVerification()).then(this.done.bind(this), this.cancel.bind(this)); } - - return this._promise; + return this.promise; } - - async _verifyKeys(userId, keys, verifier) { + async verifyKeys(userId, keys, verifier) { // we try to verify all the keys that we're told about, but we might // not know about all of them, so keep track of the keys that we know // about, and ignore the rest const verifiedDevices = []; - for (const [keyId, keyInfo] of Object.entries(keys)) { - const deviceId = keyId.split(':', 2)[1]; - - const device = this._baseApis.getStoredDevice(userId, deviceId); - + const deviceId = keyId.split(":", 2)[1]; + const device = this.baseApis.getStoredDevice(userId, deviceId); if (device) { - await verifier(keyId, device, keyInfo); - verifiedDevices.push(deviceId); + verifier(keyId, device, keyInfo); + verifiedDevices.push([deviceId, keyId, device.keys[keyId]]); } else { - const crossSigningInfo = this._baseApis._crypto._deviceList.getStoredCrossSigningForUser(userId); - + const crossSigningInfo = this.baseApis.crypto.deviceList.getStoredCrossSigningForUser(userId); if (crossSigningInfo && crossSigningInfo.getId() === deviceId) { - await verifier(keyId, _deviceinfo.DeviceInfo.fromStorage({ + verifier(keyId, _deviceinfo.DeviceInfo.fromStorage({ keys: { [keyId]: deviceId } }, deviceId), keyInfo); - verifiedDevices.push(deviceId); + verifiedDevices.push([deviceId, keyId, deviceId]); } else { _logger.logger.warn(`verification: Could not find device ${deviceId} to verify`); } } - } // if none of the keys could be verified, then error because the app + } + + // if none of the keys could be verified, then error because the app // should be informed about that - - if (!verifiedDevices.length) { throw new Error("No devices could be verified"); } - - _logger.logger.info("Verification completed! Marking devices verified: ", verifiedDevices); // TODO: There should probably be a batch version of this, otherwise it's going + _logger.logger.info("Verification completed! Marking devices verified: ", verifiedDevices); + // TODO: There should probably be a batch version of this, otherwise it's going // to upload each signature in a separate API call which is silly because the // API supports as many signatures as you like. + for (const [deviceId, keyId, key] of verifiedDevices) { + await this.baseApis.crypto.setDeviceVerification(userId, deviceId, true, null, null, { + [keyId]: key + }); + } - - for (const deviceId of verifiedDevices) { - await this._baseApis.setDeviceVerified(userId, deviceId); + // if one of the user's own devices is being marked as verified / unverified, + // check the key backup status, since whether or not we use this depends on + // whether it has a signature from a verified device + if (userId == this.baseApis.credentials.userId) { + await this.baseApis.checkKeyBackup(); } } + get events() { + return undefined; + } + /** + * Get the details for an SAS verification, if one is in progress + * + * Returns `null`, unless this verifier is for a SAS-based verification and we are waiting for the user to confirm + * the SAS matches. + */ + getShowSasCallbacks() { + return null; + } + + /** + * Get the details for reciprocating QR code verification, if one is in progress + * + * Returns `null`, unless this verifier is for reciprocating a QR-code-based verification (ie, the other user has + * already scanned our QR code), and we are waiting for the user to confirm. + */ + getReciprocateQrCodeCallbacks() { + return null; + } } - exports.VerificationBase = VerificationBase; +//# sourceMappingURL=Base.js.map /***/ }), /***/ 9697: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -46964,15 +156443,14 @@ exports.VerificationBase = VerificationBase; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.newVerificationError = newVerificationError; exports.errorFactory = errorFactory; exports.errorFromEvent = errorFromEvent; -exports.newInvalidMessageError = exports.newUserMismatchError = exports.newKeyMismatchError = exports.newUnexpectedMessageError = exports.newUnknownMethodError = exports.newUnknownTransactionError = exports.newTimeoutError = exports.newUserCancelledError = void 0; - -var _event = __webpack_require__(9564); - +exports.newUserCancelledError = exports.newUnknownMethodError = exports.newUnexpectedMessageError = exports.newTimeoutError = exports.newKeyMismatchError = exports.newInvalidMessageError = void 0; +exports.newVerificationError = newVerificationError; +var _event = __nccwpck_require__(9564); +var _event2 = __nccwpck_require__(7487); /* -Copyright 2018 New Vector Ltd +Copyright 2018 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -46989,78 +156467,55 @@ limitations under the License. /** * Error messages. - * - * @module crypto/verification/Error */ -function newVerificationError(code, reason, extradata) { + +function newVerificationError(code, reason, extraData) { const content = Object.assign({}, { code, reason - }, extradata); + }, extraData); return new _event.MatrixEvent({ - type: "m.key.verification.cancel", + type: _event2.EventType.KeyVerificationCancel, content }); } - function errorFactory(code, reason) { - return function (extradata) { - return newVerificationError(code, reason, extradata); + return function (extraData) { + return newVerificationError(code, reason, extraData); }; } + /** * The verification was cancelled by the user. */ +const newUserCancelledError = exports.newUserCancelledError = errorFactory("m.user", "Cancelled by user"); - -const newUserCancelledError = errorFactory("m.user", "Cancelled by user"); /** * The verification timed out. */ +const newTimeoutError = exports.newTimeoutError = errorFactory("m.timeout", "Timed out"); -exports.newUserCancelledError = newUserCancelledError; -const newTimeoutError = errorFactory("m.timeout", "Timed out"); -/** - * The transaction is unknown. - */ - -exports.newTimeoutError = newTimeoutError; -const newUnknownTransactionError = errorFactory("m.unknown_transaction", "Unknown transaction"); /** * An unknown method was selected. */ +const newUnknownMethodError = exports.newUnknownMethodError = errorFactory("m.unknown_method", "Unknown method"); -exports.newUnknownTransactionError = newUnknownTransactionError; -const newUnknownMethodError = errorFactory("m.unknown_method", "Unknown method"); /** * An unexpected message was sent. */ +const newUnexpectedMessageError = exports.newUnexpectedMessageError = errorFactory("m.unexpected_message", "Unexpected message"); -exports.newUnknownMethodError = newUnknownMethodError; -const newUnexpectedMessageError = errorFactory("m.unexpected_message", "Unexpected message"); /** * The key does not match. */ +const newKeyMismatchError = exports.newKeyMismatchError = errorFactory("m.key_mismatch", "Key mismatch"); -exports.newUnexpectedMessageError = newUnexpectedMessageError; -const newKeyMismatchError = errorFactory("m.key_mismatch", "Key mismatch"); -/** - * The user does not match. - */ - -exports.newKeyMismatchError = newKeyMismatchError; -const newUserMismatchError = errorFactory("m.user_error", "User mismatch"); /** * An invalid message was sent. */ - -exports.newUserMismatchError = newUserMismatchError; -const newInvalidMessageError = errorFactory("m.invalid_message", "Invalid message"); -exports.newInvalidMessageError = newInvalidMessageError; - +const newInvalidMessageError = exports.newInvalidMessageError = errorFactory("m.invalid_message", "Invalid message"); function errorFromEvent(event) { const content = event.getContent(); - if (content) { const { code, @@ -47077,22 +156532,23 @@ function errorFromEvent(event) { }; } } +//# sourceMappingURL=Error.js.map /***/ }), /***/ 1646: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.IllegalMethod = void 0; - -var _Base = __webpack_require__(6971); - +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _Base = __nccwpck_require__(6971); /* Copyright 2020 The Matrix.org Foundation C.I.C. @@ -47112,54 +156568,52 @@ limitations under the License. /** * Verification method that is illegal to have (cannot possibly * do verification with this method). - * @module crypto/verification/IllegalMethod */ -/** - * @class crypto/verification/IllegalMethod/IllegalMethod - * @extends {module:crypto/verification/Base} - */ class IllegalMethod extends _Base.VerificationBase { - static factory(...args) { - return new IllegalMethod(...args); + constructor(...args) { + super(...args); + (0, _defineProperty2.default)(this, "doVerification", async () => { + throw new Error("Verification is not possible with this method"); + }); + } + static factory(channel, baseApis, userId, deviceId, startEvent, request) { + return new IllegalMethod(channel, baseApis, userId, deviceId, startEvent, request); } + // eslint-disable-next-line @typescript-eslint/naming-convention static get NAME() { // Typically the name will be something else, but to complete // the contract we offer a default one here. return "org.matrix.illegal_method"; } - - async _doVerification() { - throw new Error("Verification is not possible with this method"); - } - } - exports.IllegalMethod = IllegalMethod; +//# sourceMappingURL=IllegalMethod.js.map /***/ }), /***/ 6612: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.QRCodeData = exports.ReciprocateQRCode = exports.SCAN_QR_CODE_METHOD = exports.SHOW_QR_CODE_METHOD = void 0; - -var _Base = __webpack_require__(6971); - -var _Error = __webpack_require__(9697); - -var _olmlib = __webpack_require__(7131); - +exports.SHOW_QR_CODE_METHOD = exports.SCAN_QR_CODE_METHOD = exports.ReciprocateQRCode = exports.QrCodeEvent = exports.QRCodeData = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _crypto = __nccwpck_require__(8532); +var _Base = __nccwpck_require__(6971); +var _Error = __nccwpck_require__(9697); +var _base = __nccwpck_require__(7477); +var _logger = __nccwpck_require__(3854); +var _verification = __nccwpck_require__(6825); +var _types = __nccwpck_require__(2756); /* -Copyright 2018 New Vector Ltd -Copyright 2020 The Matrix.org Foundation C.I.C. +Copyright 2018 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -47176,233 +156630,184 @@ limitations under the License. /** * QR code key verification. - * @module crypto/verification/QRCode - */ -const SHOW_QR_CODE_METHOD = "m.qr_code.show.v1"; -exports.SHOW_QR_CODE_METHOD = SHOW_QR_CODE_METHOD; -const SCAN_QR_CODE_METHOD = "m.qr_code.scan.v1"; -/** - * @class crypto/verification/QRCode/ReciprocateQRCode - * @extends {module:crypto/verification/Base} */ -exports.SCAN_QR_CODE_METHOD = SCAN_QR_CODE_METHOD; +const SHOW_QR_CODE_METHOD = exports.SHOW_QR_CODE_METHOD = _types.VerificationMethod.ShowQrCode; +const SCAN_QR_CODE_METHOD = exports.SCAN_QR_CODE_METHOD = _types.VerificationMethod.ScanQrCode; +/** @deprecated use VerifierEvent */ + +/** @deprecated use VerifierEvent */ +const QrCodeEvent = exports.QrCodeEvent = _verification.VerifierEvent; + +/** @deprecated Avoid referencing this class directly; instead use {@link Crypto.Verifier}. */ class ReciprocateQRCode extends _Base.VerificationBase { - static factory(...args) { - return new ReciprocateQRCode(...args); - } - - static get NAME() { - return "m.reciprocate.v1"; - } - - async _doVerification() { - if (!this.startEvent) { - // TODO: Support scanning QR codes - throw new Error("It is not currently possible to start verification" + "with this method yet."); - } - - const { - qrCodeData - } = this.request; // 1. check the secret - - if (this.startEvent.getContent()['secret'] !== qrCodeData.encodedSharedSecret) { - throw (0, _Error.newKeyMismatchError)(); - } // 2. ask if other user shows shield as well - - - await new Promise((resolve, reject) => { - this.reciprocateQREvent = { - confirm: resolve, - cancel: () => reject((0, _Error.newUserCancelledError)()) - }; - this.emit("show_reciprocate_qr", this.reciprocateQREvent); - }); // 3. determine key to sign / mark as trusted - - const keys = {}; - - switch (qrCodeData.mode) { - case MODE_VERIFY_OTHER_USER: - { - // add master key to keys to be signed, only if we're not doing self-verification - const masterKey = qrCodeData.otherUserMasterKey; - keys[`ed25519:${masterKey}`] = masterKey; - break; - } - - case MODE_VERIFY_SELF_TRUSTED: - { - const deviceId = this.request.targetDevice.deviceId; - keys[`ed25519:${deviceId}`] = qrCodeData.otherDeviceKey; - break; - } - - case MODE_VERIFY_SELF_UNTRUSTED: - { - const masterKey = qrCodeData.myMasterKey; - keys[`ed25519:${masterKey}`] = masterKey; - break; - } - } // 4. sign the key (or mark own MSK as verified in case of MODE_VERIFY_SELF_TRUSTED) - - - await this._verifyKeys(this.userId, keys, (keyId, device, keyInfo) => { - // make sure the device has the expected keys - const targetKey = keys[keyId]; - if (!targetKey) throw (0, _Error.newKeyMismatchError)(); - - if (keyInfo !== targetKey) { - console.error("key ID from key info does not match"); + constructor(...args) { + super(...args); + (0, _defineProperty2.default)(this, "doVerification", async () => { + if (!this.startEvent) { + // TODO: Support scanning QR codes + throw new Error("It is not currently possible to start verification" + "with this method yet."); + } + const { + qrCodeData + } = this.request; + // 1. check the secret + if (this.startEvent.getContent()["secret"] !== (qrCodeData === null || qrCodeData === void 0 ? void 0 : qrCodeData.encodedSharedSecret)) { throw (0, _Error.newKeyMismatchError)(); } - for (const deviceKeyId in device.keys) { - if (!deviceKeyId.startsWith("ed25519")) continue; - const deviceTargetKey = keys[deviceKeyId]; - if (!deviceTargetKey) throw (0, _Error.newKeyMismatchError)(); + // 2. ask if other user shows shield as well + await new Promise((resolve, reject) => { + this.reciprocateQREvent = { + confirm: resolve, + cancel: () => reject((0, _Error.newUserCancelledError)()) + }; + this.emit(QrCodeEvent.ShowReciprocateQr, this.reciprocateQREvent); + }); - if (device.keys[deviceKeyId] !== deviceTargetKey) { - console.error("master key does not match"); + // 3. determine key to sign / mark as trusted + const keys = {}; + switch (qrCodeData === null || qrCodeData === void 0 ? void 0 : qrCodeData.mode) { + case Mode.VerifyOtherUser: + { + // add master key to keys to be signed, only if we're not doing self-verification + const masterKey = qrCodeData.otherUserMasterKey; + keys[`ed25519:${masterKey}`] = masterKey; + break; + } + case Mode.VerifySelfTrusted: + { + const deviceId = this.request.targetDevice.deviceId; + keys[`ed25519:${deviceId}`] = qrCodeData.otherDeviceKey; + break; + } + case Mode.VerifySelfUntrusted: + { + const masterKey = qrCodeData.myMasterKey; + keys[`ed25519:${masterKey}`] = masterKey; + break; + } + } + + // 4. sign the key (or mark own MSK as verified in case of MODE_VERIFY_SELF_TRUSTED) + await this.verifyKeys(this.userId, keys, (keyId, device, keyInfo) => { + // make sure the device has the expected keys + const targetKey = keys[keyId]; + if (!targetKey) throw (0, _Error.newKeyMismatchError)(); + if (keyInfo !== targetKey) { + _logger.logger.error("key ID from key info does not match"); throw (0, _Error.newKeyMismatchError)(); } - } + for (const deviceKeyId in device.keys) { + if (!deviceKeyId.startsWith("ed25519")) continue; + const deviceTargetKey = keys[deviceKeyId]; + if (!deviceTargetKey) throw (0, _Error.newKeyMismatchError)(); + if (device.keys[deviceKeyId] !== deviceTargetKey) { + _logger.logger.error("master key does not match"); + throw (0, _Error.newKeyMismatchError)(); + } + } + }); }); } - -} - -exports.ReciprocateQRCode = ReciprocateQRCode; -const CODE_VERSION = 0x02; // the version of binary QR codes we support - -const BINARY_PREFIX = "MATRIX"; // ASCII, used to prefix the binary format - -const MODE_VERIFY_OTHER_USER = 0x00; // Verifying someone who isn't us - -const MODE_VERIFY_SELF_TRUSTED = 0x01; // We trust the master key - -const MODE_VERIFY_SELF_UNTRUSTED = 0x02; // We do not trust the master key - -class QRCodeData { - constructor(mode, sharedSecret, otherUserMasterKey, otherDeviceKey, myMasterKey, buffer) { - this._sharedSecret = sharedSecret; - this._mode = mode; - this._otherUserMasterKey = otherUserMasterKey; - this._otherDeviceKey = otherDeviceKey; - this._myMasterKey = myMasterKey; - this._buffer = buffer; + static factory(channel, baseApis, userId, deviceId, startEvent, request) { + return new ReciprocateQRCode(channel, baseApis, userId, deviceId, startEvent, request); } + // eslint-disable-next-line @typescript-eslint/naming-convention + static get NAME() { + return "m.reciprocate.v1"; + } + getReciprocateQrCodeCallbacks() { + var _this$reciprocateQREv; + return (_this$reciprocateQREv = this.reciprocateQREvent) !== null && _this$reciprocateQREv !== void 0 ? _this$reciprocateQREv : null; + } +} +exports.ReciprocateQRCode = ReciprocateQRCode; +const CODE_VERSION = 0x02; // the version of binary QR codes we support +const BINARY_PREFIX = "MATRIX"; // ASCII, used to prefix the binary format +var Mode = /*#__PURE__*/function (Mode) { + Mode[Mode["VerifyOtherUser"] = 0] = "VerifyOtherUser"; + Mode[Mode["VerifySelfTrusted"] = 1] = "VerifySelfTrusted"; + Mode[Mode["VerifySelfUntrusted"] = 2] = "VerifySelfUntrusted"; + return Mode; +}(Mode || {}); // We do not trust the master key +class QRCodeData { + constructor(mode, sharedSecret, + // only set when mode is MODE_VERIFY_OTHER_USER, master key of other party at time of generating QR code + otherUserMasterKey, + // only set when mode is MODE_VERIFY_SELF_TRUSTED, device key of other party at time of generating QR code + otherDeviceKey, + // only set when mode is MODE_VERIFY_SELF_UNTRUSTED, own master key at time of generating QR code + myMasterKey, buffer) { + this.mode = mode; + this.sharedSecret = sharedSecret; + this.otherUserMasterKey = otherUserMasterKey; + this.otherDeviceKey = otherDeviceKey; + this.myMasterKey = myMasterKey; + this.buffer = buffer; + } static async create(request, client) { - const sharedSecret = QRCodeData._generateSharedSecret(); - - const mode = QRCodeData._determineMode(request, client); - + const sharedSecret = QRCodeData.generateSharedSecret(); + const mode = QRCodeData.determineMode(request, client); let otherUserMasterKey = null; let otherDeviceKey = null; let myMasterKey = null; - - if (mode === MODE_VERIFY_OTHER_USER) { + if (mode === Mode.VerifyOtherUser) { const otherUserCrossSigningInfo = client.getStoredCrossSigningForUser(request.otherUserId); otherUserMasterKey = otherUserCrossSigningInfo.getId("master"); - } else if (mode === MODE_VERIFY_SELF_TRUSTED) { - otherDeviceKey = await QRCodeData._getOtherDeviceKey(request, client); - } else if (mode === MODE_VERIFY_SELF_UNTRUSTED) { + } else if (mode === Mode.VerifySelfTrusted) { + otherDeviceKey = await QRCodeData.getOtherDeviceKey(request, client); + } else if (mode === Mode.VerifySelfUntrusted) { const myUserId = client.getUserId(); const myCrossSigningInfo = client.getStoredCrossSigningForUser(myUserId); myMasterKey = myCrossSigningInfo.getId("master"); } - - const qrData = QRCodeData._generateQrData(request, client, mode, sharedSecret, otherUserMasterKey, otherDeviceKey, myMasterKey); - - const buffer = QRCodeData._generateBuffer(qrData); - + const qrData = QRCodeData.generateQrData(request, client, mode, sharedSecret, otherUserMasterKey, otherDeviceKey, myMasterKey); + const buffer = QRCodeData.generateBuffer(qrData); return new QRCodeData(mode, sharedSecret, otherUserMasterKey, otherDeviceKey, myMasterKey, buffer); } - get buffer() { - return this._buffer; - } - - get mode() { - return this._mode; - } - /** - * only set when mode is MODE_VERIFY_SELF_TRUSTED - * @return {string} device key of other party at time of generating QR code - */ - - - get otherDeviceKey() { - return this._otherDeviceKey; - } - /** - * only set when mode is MODE_VERIFY_OTHER_USER - * @return {string} master key of other party at time of generating QR code - */ - - - get otherUserMasterKey() { - return this._otherUserMasterKey; - } - /** - * only set when mode is MODE_VERIFY_SELF_UNTRUSTED - * @return {string} own master key at time of generating QR code - */ - - - get myMasterKey() { - return this._myMasterKey; - } /** * The unpadded base64 encoded shared secret. */ - - get encodedSharedSecret() { - return this._sharedSecret; + return this.sharedSecret; } - - static _generateSharedSecret() { + getBuffer() { + return this.buffer; + } + static generateSharedSecret() { const secretBytes = new Uint8Array(11); - global.crypto.getRandomValues(secretBytes); - return (0, _olmlib.encodeUnpaddedBase64)(secretBytes); + _crypto.crypto.getRandomValues(secretBytes); + return (0, _base.encodeUnpaddedBase64)(secretBytes); } - - static async _getOtherDeviceKey(request, client) { + static async getOtherDeviceKey(request, client) { const myUserId = client.getUserId(); const otherDevice = request.targetDevice; - const otherDeviceId = otherDevice ? otherDevice.deviceId : null; - const device = client.getStoredDevice(myUserId, otherDeviceId); - + const device = otherDevice.deviceId ? client.getStoredDevice(myUserId, otherDevice.deviceId) : undefined; if (!device) { - throw new Error("could not find device " + otherDeviceId); + throw new Error("could not find device " + (otherDevice === null || otherDevice === void 0 ? void 0 : otherDevice.deviceId)); } - - const key = device.getFingerprint(); - return key; + return device.getFingerprint(); } - - static _determineMode(request, client) { + static determineMode(request, client) { const myUserId = client.getUserId(); const otherUserId = request.otherUserId; - let mode = MODE_VERIFY_OTHER_USER; - + let mode = Mode.VerifyOtherUser; if (myUserId === otherUserId) { // Mode changes depending on whether or not we trust the master cross signing key const myTrust = client.checkUserTrust(myUserId); - if (myTrust.isCrossSigningVerified()) { - mode = MODE_VERIFY_SELF_TRUSTED; + mode = Mode.VerifySelfTrusted; } else { - mode = MODE_VERIFY_SELF_UNTRUSTED; + mode = Mode.VerifySelfUntrusted; } } - return mode; } - - static _generateQrData(request, client, mode, encodedSharedSecret, otherUserMasterKey, otherDeviceKey, myMasterKey) { + static generateQrData(request, client, mode, encodedSharedSecret, otherUserMasterKey, otherDeviceKey, myMasterKey) { const myUserId = client.getUserId(); const transactionId = request.channel.transactionId; const qrData = { @@ -47410,60 +156815,54 @@ class QRCodeData { version: CODE_VERSION, mode, transactionId, - firstKeyB64: '', + firstKeyB64: "", // worked out shortly - secondKeyB64: '', + secondKeyB64: "", // worked out shortly secretB64: encodedSharedSecret }; const myCrossSigningInfo = client.getStoredCrossSigningForUser(myUserId); - - if (mode === MODE_VERIFY_OTHER_USER) { + if (mode === Mode.VerifyOtherUser) { // First key is our master cross signing key - qrData.firstKeyB64 = myCrossSigningInfo.getId("master"); // Second key is the other user's master cross signing key - + qrData.firstKeyB64 = myCrossSigningInfo.getId("master"); + // Second key is the other user's master cross signing key qrData.secondKeyB64 = otherUserMasterKey; - } else if (mode === MODE_VERIFY_SELF_TRUSTED) { + } else if (mode === Mode.VerifySelfTrusted) { // First key is our master cross signing key qrData.firstKeyB64 = myCrossSigningInfo.getId("master"); qrData.secondKeyB64 = otherDeviceKey; - } else if (mode === MODE_VERIFY_SELF_UNTRUSTED) { + } else if (mode === Mode.VerifySelfUntrusted) { // First key is our device's key - qrData.firstKeyB64 = client.getDeviceEd25519Key(); // Second key is what we think our master cross signing key is - + qrData.firstKeyB64 = client.getDeviceEd25519Key(); + // Second key is what we think our master cross signing key is qrData.secondKeyB64 = myMasterKey; } - return qrData; } - - static _generateBuffer(qrData) { + static generateBuffer(qrData) { let buf = Buffer.alloc(0); // we'll concat our way through life const appendByte = b => { const tmpBuf = Buffer.from([b]); buf = Buffer.concat([buf, tmpBuf]); }; - const appendInt = i => { const tmpBuf = Buffer.alloc(2); tmpBuf.writeInt16BE(i, 0); buf = Buffer.concat([buf, tmpBuf]); }; - const appendStr = (s, enc, withLengthPrefix = true) => { const tmpBuf = Buffer.from(s, enc); if (withLengthPrefix) appendInt(tmpBuf.byteLength); buf = Buffer.concat([buf, tmpBuf]); }; - const appendEncBase64 = b64 => { - const b = (0, _olmlib.decodeBase64)(b64); + const b = (0, _base.decodeBase64)(b64); const tmpBuf = Buffer.from(b); buf = Buffer.concat([buf, tmpBuf]); - }; // Actually build the buffer for the QR code - + }; + // Actually build the buffer for the QR code appendStr(qrData.prefix, "ascii", false); appendByte(qrData.version); appendByte(qrData.mode); @@ -47473,36 +156872,34 @@ class QRCodeData { appendEncBase64(qrData.secretB64); return buf; } - } - exports.QRCodeData = QRCodeData; +//# sourceMappingURL=QRCode.js.map /***/ }), /***/ 7911: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SAS = void 0; - -var _Base = __webpack_require__(6971); - -var _anotherJson = _interopRequireDefault(__webpack_require__(7775)); - -var _Error = __webpack_require__(9697); - -var _logger = __webpack_require__(3854); - +exports.SasEvent = exports.SAS = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _anotherJson = _interopRequireDefault(__nccwpck_require__(7775)); +var _Base = __nccwpck_require__(6971); +var _Error = __nccwpck_require__(9697); +var _logger = __nccwpck_require__(3854); +var _SASDecimal = __nccwpck_require__(4288); +var _event = __nccwpck_require__(7487); +var _verification = __nccwpck_require__(6825); +var _types = __nccwpck_require__(2756); /* -Copyright 2018 New Vector Ltd +Copyright 2018 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -47519,16 +156916,473 @@ limitations under the License. /** * Short Authentication String (SAS) verification. - * @module crypto/verification/SAS */ -const START_TYPE = "m.key.verification.start"; -const EVENTS = ["m.key.verification.accept", "m.key.verification.key", "m.key.verification.mac"]; + +// backwards-compatibility exports + +const START_TYPE = _event.EventType.KeyVerificationStart; +const EVENTS = [_event.EventType.KeyVerificationAccept, _event.EventType.KeyVerificationKey, _event.EventType.KeyVerificationMac]; let olmutil; const newMismatchedSASError = (0, _Error.errorFactory)("m.mismatched_sas", "Mismatched short authentication string"); const newMismatchedCommitmentError = (0, _Error.errorFactory)("m.mismatched_commitment", "Mismatched commitment"); +// This list was generated from the data in the Matrix specification [1] with the following command: +// +// jq -r '.[] | " [\"" + .emoji + "\", \"" + (.description|ascii_downcase) + "\"], // " + (.number|tostring)' sas-emoji.json +// +// [1]: https://github.com/matrix-org/matrix-spec/blob/main/data-definitions/sas-emoji.json +const emojiMapping = [["🐶", "dog"], +// 0 +["🐱", "cat"], +// 1 +["🦁", "lion"], +// 2 +["🐎", "horse"], +// 3 +["🦄", "unicorn"], +// 4 +["🐷", "pig"], +// 5 +["🐘", "elephant"], +// 6 +["🐰", "rabbit"], +// 7 +["🐼", "panda"], +// 8 +["🐓", "rooster"], +// 9 +["🐧", "penguin"], +// 10 +["🐢", "turtle"], +// 11 +["🐟", "fish"], +// 12 +["🐙", "octopus"], +// 13 +["🦋", "butterfly"], +// 14 +["🌷", "flower"], +// 15 +["🌳", "tree"], +// 16 +["🌵", "cactus"], +// 17 +["🍄", "mushroom"], +// 18 +["🌏", "globe"], +// 19 +["🌙", "moon"], +// 20 +["☁️", "cloud"], +// 21 +["🔥", "fire"], +// 22 +["🍌", "banana"], +// 23 +["🍎", "apple"], +// 24 +["🍓", "strawberry"], +// 25 +["🌽", "corn"], +// 26 +["🍕", "pizza"], +// 27 +["🎂", "cake"], +// 28 +["❤️", "heart"], +// 29 +["😀", "smiley"], +// 30 +["🤖", "robot"], +// 31 +["🎩", "hat"], +// 32 +["👓", "glasses"], +// 33 +["🔧", "spanner"], +// 34 +["🎅", "santa"], +// 35 +["👍", "thumbs up"], +// 36 +["☂️", "umbrella"], +// 37 +["⌛", "hourglass"], +// 38 +["⏰", "clock"], +// 39 +["🎁", "gift"], +// 40 +["💡", "light bulb"], +// 41 +["📕", "book"], +// 42 +["✏️", "pencil"], +// 43 +["📎", "paperclip"], +// 44 +["✂️", "scissors"], +// 45 +["🔒", "lock"], +// 46 +["🔑", "key"], +// 47 +["🔨", "hammer"], +// 48 +["☎️", "telephone"], +// 49 +["🏁", "flag"], +// 50 +["🚂", "train"], +// 51 +["🚲", "bicycle"], +// 52 +["✈️", "aeroplane"], +// 53 +["🚀", "rocket"], +// 54 +["🏆", "trophy"], +// 55 +["⚽", "ball"], +// 56 +["🎸", "guitar"], +// 57 +["🎺", "trumpet"], +// 58 +["🔔", "bell"], +// 59 +["⚓", "anchor"], +// 60 +["🎧", "headphones"], +// 61 +["📁", "folder"], +// 62 +["📌", "pin"] // 63 +]; +function generateEmojiSas(sasBytes) { + const emojis = [ + // just like base64 encoding + sasBytes[0] >> 2, (sasBytes[0] & 0x3) << 4 | sasBytes[1] >> 4, (sasBytes[1] & 0xf) << 2 | sasBytes[2] >> 6, sasBytes[2] & 0x3f, sasBytes[3] >> 2, (sasBytes[3] & 0x3) << 4 | sasBytes[4] >> 4, (sasBytes[4] & 0xf) << 2 | sasBytes[5] >> 6]; + return emojis.map(num => emojiMapping[num]); +} +const sasGenerators = { + decimal: _SASDecimal.generateDecimalSas, + emoji: generateEmojiSas +}; +function generateSas(sasBytes, methods) { + const sas = {}; + for (const method of methods) { + if (method in sasGenerators) { + // @ts-ignore - ts doesn't like us mixing types like this + sas[method] = sasGenerators[method](Array.from(sasBytes)); + } + } + return sas; +} +const macMethods = { + "hkdf-hmac-sha256": "calculate_mac", + "org.matrix.msc3783.hkdf-hmac-sha256": "calculate_mac_fixed_base64", + "hkdf-hmac-sha256.v2": "calculate_mac_fixed_base64", + "hmac-sha256": "calculate_mac_long_kdf" +}; +function calculateMAC(olmSAS, method) { + return function (input, info) { + const mac = olmSAS[macMethods[method]](input, info); + _logger.logger.log("SAS calculateMAC:", method, [input, info], mac); + return mac; + }; +} +const calculateKeyAgreement = { + // eslint-disable-next-line @typescript-eslint/naming-convention + "curve25519-hkdf-sha256": function (sas, olmSAS, bytes) { + const ourInfo = `${sas.baseApis.getUserId()}|${sas.baseApis.deviceId}|` + `${sas.ourSASPubKey}|`; + const theirInfo = `${sas.userId}|${sas.deviceId}|${sas.theirSASPubKey}|`; + const sasInfo = "MATRIX_KEY_VERIFICATION_SAS|" + (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) + sas.channel.transactionId; + return olmSAS.generate_bytes(sasInfo, bytes); + }, + "curve25519": function (sas, olmSAS, bytes) { + const ourInfo = `${sas.baseApis.getUserId()}${sas.baseApis.deviceId}`; + const theirInfo = `${sas.userId}${sas.deviceId}`; + const sasInfo = "MATRIX_KEY_VERIFICATION_SAS" + (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) + sas.channel.transactionId; + return olmSAS.generate_bytes(sasInfo, bytes); + } +}; +/* lists of algorithms/methods that are supported. The key agreement, hashes, + * and MAC lists should be sorted in order of preference (most preferred + * first). + */ +const KEY_AGREEMENT_LIST = ["curve25519-hkdf-sha256", "curve25519"]; +const HASHES_LIST = ["sha256"]; +const MAC_LIST = ["hkdf-hmac-sha256.v2", "org.matrix.msc3783.hkdf-hmac-sha256", "hkdf-hmac-sha256", "hmac-sha256"]; +const SAS_LIST = Object.keys(sasGenerators); +const KEY_AGREEMENT_SET = new Set(KEY_AGREEMENT_LIST); +const HASHES_SET = new Set(HASHES_LIST); +const MAC_SET = new Set(MAC_LIST); +const SAS_SET = new Set(SAS_LIST); +function intersection(anArray, aSet) { + return Array.isArray(anArray) ? anArray.filter(x => aSet.has(x)) : []; +} + +/** @deprecated use VerifierEvent */ + +/** @deprecated use VerifierEvent */ +const SasEvent = exports.SasEvent = _verification.VerifierEvent; + +/** @deprecated Avoid referencing this class directly; instead use {@link Crypto.Verifier}. */ +class SAS extends _Base.VerificationBase { + constructor(...args) { + super(...args); + (0, _defineProperty2.default)(this, "doVerification", async () => { + await global.Olm.init(); + olmutil = olmutil || new global.Olm.Utility(); + + // make sure user's keys are downloaded + await this.baseApis.downloadKeys([this.userId]); + let retry = false; + do { + try { + if (this.initiatedByMe) { + return await this.doSendVerification(); + } else { + return await this.doRespondVerification(); + } + } catch (err) { + if (err instanceof _Base.SwitchStartEventError) { + // this changes what initiatedByMe returns + this.startEvent = err.startEvent; + retry = true; + } else { + throw err; + } + } + } while (retry); + }); + } + // eslint-disable-next-line @typescript-eslint/naming-convention + static get NAME() { + return _types.VerificationMethod.Sas; + } + get events() { + return EVENTS; + } + canSwitchStartEvent(event) { + if (event.getType() !== START_TYPE) { + return false; + } + const content = event.getContent(); + return (content === null || content === void 0 ? void 0 : content.method) === SAS.NAME && !!this.waitingForAccept; + } + async sendStart() { + const startContent = this.channel.completeContent(START_TYPE, { + method: SAS.NAME, + from_device: this.baseApis.deviceId, + key_agreement_protocols: KEY_AGREEMENT_LIST, + hashes: HASHES_LIST, + message_authentication_codes: MAC_LIST, + // FIXME: allow app to specify what SAS methods can be used + short_authentication_string: SAS_LIST + }); + await this.channel.sendCompleted(START_TYPE, startContent); + return startContent; + } + async verifyAndCheckMAC(keyAgreement, sasMethods, olmSAS, macMethod) { + const sasBytes = calculateKeyAgreement[keyAgreement](this, olmSAS, 6); + const verifySAS = new Promise((resolve, reject) => { + this.sasEvent = { + sas: generateSas(sasBytes, sasMethods), + confirm: async () => { + try { + await this.sendMAC(olmSAS, macMethod); + resolve(); + } catch (err) { + reject(err); + } + }, + cancel: () => reject((0, _Error.newUserCancelledError)()), + mismatch: () => reject(newMismatchedSASError()) + }; + this.emit(SasEvent.ShowSas, this.sasEvent); + }); + const [e] = await Promise.all([this.waitForEvent(_event.EventType.KeyVerificationMac).then(e => { + // we don't expect any more messages from the other + // party, and they may send a m.key.verification.done + // when they're done on their end + this.expectedEvent = _event.EventType.KeyVerificationDone; + return e; + }), verifySAS]); + const content = e.getContent(); + await this.checkMAC(olmSAS, content, macMethod); + } + async doSendVerification() { + this.waitingForAccept = true; + let startContent; + if (this.startEvent) { + startContent = this.channel.completedContentFromEvent(this.startEvent); + } else { + startContent = await this.sendStart(); + } + + // we might have switched to a different start event, + // but was we didn't call _waitForEvent there was no + // call that could throw yet. So check manually that + // we're still on the initiator side + if (!this.initiatedByMe) { + throw new _Base.SwitchStartEventError(this.startEvent); + } + let e; + try { + e = await this.waitForEvent(_event.EventType.KeyVerificationAccept); + } finally { + this.waitingForAccept = false; + } + let content = e.getContent(); + const sasMethods = intersection(content.short_authentication_string, SAS_SET); + if (!(KEY_AGREEMENT_SET.has(content.key_agreement_protocol) && HASHES_SET.has(content.hash) && MAC_SET.has(content.message_authentication_code) && sasMethods.length)) { + throw (0, _Error.newUnknownMethodError)(); + } + if (typeof content.commitment !== "string") { + throw (0, _Error.newInvalidMessageError)(); + } + const keyAgreement = content.key_agreement_protocol; + const macMethod = content.message_authentication_code; + const hashCommitment = content.commitment; + const olmSAS = new global.Olm.SAS(); + try { + this.ourSASPubKey = olmSAS.get_pubkey(); + await this.send(_event.EventType.KeyVerificationKey, { + key: this.ourSASPubKey + }); + e = await this.waitForEvent(_event.EventType.KeyVerificationKey); + // FIXME: make sure event is properly formed + content = e.getContent(); + const commitmentStr = content.key + _anotherJson.default.stringify(startContent); + // TODO: use selected hash function (when we support multiple) + if (olmutil.sha256(commitmentStr) !== hashCommitment) { + throw newMismatchedCommitmentError(); + } + this.theirSASPubKey = content.key; + olmSAS.set_their_key(content.key); + await this.verifyAndCheckMAC(keyAgreement, sasMethods, olmSAS, macMethod); + } finally { + olmSAS.free(); + } + } + async doRespondVerification() { + // as m.related_to is not included in the encrypted content in e2e rooms, + // we need to make sure it is added + let content = this.channel.completedContentFromEvent(this.startEvent); + + // Note: we intersect using our pre-made lists, rather than the sets, + // so that the result will be in our order of preference. Then + // fetching the first element from the array will give our preferred + // method out of the ones offered by the other party. + const keyAgreement = intersection(KEY_AGREEMENT_LIST, new Set(content.key_agreement_protocols))[0]; + const hashMethod = intersection(HASHES_LIST, new Set(content.hashes))[0]; + const macMethod = intersection(MAC_LIST, new Set(content.message_authentication_codes))[0]; + // FIXME: allow app to specify what SAS methods can be used + const sasMethods = intersection(content.short_authentication_string, SAS_SET); + if (!(keyAgreement !== undefined && hashMethod !== undefined && macMethod !== undefined && sasMethods.length)) { + throw (0, _Error.newUnknownMethodError)(); + } + const olmSAS = new global.Olm.SAS(); + try { + const commitmentStr = olmSAS.get_pubkey() + _anotherJson.default.stringify(content); + await this.send(_event.EventType.KeyVerificationAccept, { + key_agreement_protocol: keyAgreement, + hash: hashMethod, + message_authentication_code: macMethod, + short_authentication_string: sasMethods, + // TODO: use selected hash function (when we support multiple) + commitment: olmutil.sha256(commitmentStr) + }); + const e = await this.waitForEvent(_event.EventType.KeyVerificationKey); + // FIXME: make sure event is properly formed + content = e.getContent(); + this.theirSASPubKey = content.key; + olmSAS.set_their_key(content.key); + this.ourSASPubKey = olmSAS.get_pubkey(); + await this.send(_event.EventType.KeyVerificationKey, { + key: this.ourSASPubKey + }); + await this.verifyAndCheckMAC(keyAgreement, sasMethods, olmSAS, macMethod); + } finally { + olmSAS.free(); + } + } + sendMAC(olmSAS, method) { + const mac = {}; + const keyList = []; + const baseInfo = "MATRIX_KEY_VERIFICATION_MAC" + this.baseApis.getUserId() + this.baseApis.deviceId + this.userId + this.deviceId + this.channel.transactionId; + const deviceKeyId = `ed25519:${this.baseApis.deviceId}`; + mac[deviceKeyId] = calculateMAC(olmSAS, method)(this.baseApis.getDeviceEd25519Key(), baseInfo + deviceKeyId); + keyList.push(deviceKeyId); + const crossSigningId = this.baseApis.getCrossSigningId(); + if (crossSigningId) { + const crossSigningKeyId = `ed25519:${crossSigningId}`; + mac[crossSigningKeyId] = calculateMAC(olmSAS, method)(crossSigningId, baseInfo + crossSigningKeyId); + keyList.push(crossSigningKeyId); + } + const keys = calculateMAC(olmSAS, method)(keyList.sort().join(","), baseInfo + "KEY_IDS"); + return this.send(_event.EventType.KeyVerificationMac, { + mac, + keys + }); + } + async checkMAC(olmSAS, content, method) { + const baseInfo = "MATRIX_KEY_VERIFICATION_MAC" + this.userId + this.deviceId + this.baseApis.getUserId() + this.baseApis.deviceId + this.channel.transactionId; + if (content.keys !== calculateMAC(olmSAS, method)(Object.keys(content.mac).sort().join(","), baseInfo + "KEY_IDS")) { + throw (0, _Error.newKeyMismatchError)(); + } + await this.verifyKeys(this.userId, content.mac, (keyId, device, keyInfo) => { + if (keyInfo !== calculateMAC(olmSAS, method)(device.keys[keyId], baseInfo + keyId)) { + throw (0, _Error.newKeyMismatchError)(); + } + }); + } + getShowSasCallbacks() { + var _this$sasEvent; + return (_this$sasEvent = this.sasEvent) !== null && _this$sasEvent !== void 0 ? _this$sasEvent : null; + } +} +exports.SAS = SAS; +//# sourceMappingURL=SAS.js.map + +/***/ }), + +/***/ 4288: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.generateDecimalSas = generateDecimalSas; +/* +Copyright 2018 - 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Implementation of decimal encoding of SAS as per: + * https://spec.matrix.org/v1.4/client-server-api/#sas-method-decimal + * @param sasBytes - the five bytes generated by HKDF + * @returns the derived three numbers between 1000 and 9191 inclusive + */ function generateDecimalSas(sasBytes) { - /** + /* * +--------+--------+--------+--------+--------+ * | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | * +--------+--------+--------+--------+--------+ @@ -47538,431 +157392,25 @@ function generateDecimalSas(sasBytes) { */ return [(sasBytes[0] << 5 | sasBytes[1] >> 3) + 1000, ((sasBytes[1] & 0x7) << 10 | sasBytes[2] << 2 | sasBytes[3] >> 6) + 1000, ((sasBytes[3] & 0x3f) << 7 | sasBytes[4] >> 1) + 1000]; } - -const emojiMapping = [["🐶", "dog"], // 0 -["🐱", "cat"], // 1 -["🦁", "lion"], // 2 -["🐎", "horse"], // 3 -["🦄", "unicorn"], // 4 -["🐷", "pig"], // 5 -["🐘", "elephant"], // 6 -["🐰", "rabbit"], // 7 -["🐼", "panda"], // 8 -["🐓", "rooster"], // 9 -["🐧", "penguin"], // 10 -["🐢", "turtle"], // 11 -["🐟", "fish"], // 12 -["🐙", "octopus"], // 13 -["🦋", "butterfly"], // 14 -["🌷", "flower"], // 15 -["🌳", "tree"], // 16 -["🌵", "cactus"], // 17 -["🍄", "mushroom"], // 18 -["🌏", "globe"], // 19 -["🌙", "moon"], // 20 -["☁️", "cloud"], // 21 -["🔥", "fire"], // 22 -["🍌", "banana"], // 23 -["🍎", "apple"], // 24 -["🍓", "strawberry"], // 25 -["🌽", "corn"], // 26 -["🍕", "pizza"], // 27 -["🎂", "cake"], // 28 -["❤️", "heart"], // 29 -["🙂", "smiley"], // 30 -["🤖", "robot"], // 31 -["🎩", "hat"], // 32 -["👓", "glasses"], // 33 -["🔧", "spanner"], // 34 -["🎅", "santa"], // 35 -["👍", "thumbs up"], // 36 -["☂️", "umbrella"], // 37 -["⌛", "hourglass"], // 38 -["⏰", "clock"], // 39 -["🎁", "gift"], // 40 -["💡", "light bulb"], // 41 -["📕", "book"], // 42 -["✏️", "pencil"], // 43 -["📎", "paperclip"], // 44 -["✂️", "scissors"], // 45 -["🔒", "lock"], // 46 -["🔑", "key"], // 47 -["🔨", "hammer"], // 48 -["☎️", "telephone"], // 49 -["🏁", "flag"], // 50 -["🚂", "train"], // 51 -["🚲", "bicycle"], // 52 -["✈️", "aeroplane"], // 53 -["🚀", "rocket"], // 54 -["🏆", "trophy"], // 55 -["⚽", "ball"], // 56 -["🎸", "guitar"], // 57 -["🎺", "trumpet"], // 58 -["🔔", "bell"], // 59 -["⚓️", "anchor"], // 60 -["🎧", "headphones"], // 61 -["📁", "folder"], // 62 -["📌", "pin"] // 63 -]; - -function generateEmojiSas(sasBytes) { - const emojis = [// just like base64 encoding - sasBytes[0] >> 2, (sasBytes[0] & 0x3) << 4 | sasBytes[1] >> 4, (sasBytes[1] & 0xf) << 2 | sasBytes[2] >> 6, sasBytes[2] & 0x3f, sasBytes[3] >> 2, (sasBytes[3] & 0x3) << 4 | sasBytes[4] >> 4, (sasBytes[4] & 0xf) << 2 | sasBytes[5] >> 6]; - return emojis.map(num => emojiMapping[num]); -} - -const sasGenerators = { - decimal: generateDecimalSas, - emoji: generateEmojiSas -}; - -function generateSas(sasBytes, methods) { - const sas = {}; - - for (const method of methods) { - if (method in sasGenerators) { - sas[method] = sasGenerators[method](sasBytes); - } - } - - return sas; -} - -const macMethods = { - "hkdf-hmac-sha256": "calculate_mac", - "hmac-sha256": "calculate_mac_long_kdf" -}; - -function calculateMAC(olmSAS, method) { - return function (...args) { - const macFunction = olmSAS[macMethods[method]]; - const mac = macFunction.apply(olmSAS, args); - - _logger.logger.log("SAS calculateMAC:", method, args, mac); - - return mac; - }; -} - -const calculateKeyAgreement = { - "curve25519-hkdf-sha256": function (sas, olmSAS, bytes) { - const ourInfo = `${sas._baseApis.getUserId()}|${sas._baseApis.deviceId}|` + `${sas.ourSASPubKey}|`; - const theirInfo = `${sas.userId}|${sas.deviceId}|${sas.theirSASPubKey}|`; - const sasInfo = "MATRIX_KEY_VERIFICATION_SAS|" + (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) + sas._channel.transactionId; - return olmSAS.generate_bytes(sasInfo, bytes); - }, - "curve25519": function (sas, olmSAS, bytes) { - const ourInfo = `${sas._baseApis.getUserId()}${sas._baseApis.deviceId}`; - const theirInfo = `${sas.userId}${sas.deviceId}`; - const sasInfo = "MATRIX_KEY_VERIFICATION_SAS" + (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) + sas._channel.transactionId; - return olmSAS.generate_bytes(sasInfo, bytes); - } -}; -/* lists of algorithms/methods that are supported. The key agreement, hashes, - * and MAC lists should be sorted in order of preference (most preferred - * first). - */ - -const KEY_AGREEMENT_LIST = ["curve25519-hkdf-sha256", "curve25519"]; -const HASHES_LIST = ["sha256"]; -const MAC_LIST = ["hkdf-hmac-sha256", "hmac-sha256"]; -const SAS_LIST = Object.keys(sasGenerators); -const KEY_AGREEMENT_SET = new Set(KEY_AGREEMENT_LIST); -const HASHES_SET = new Set(HASHES_LIST); -const MAC_SET = new Set(MAC_LIST); -const SAS_SET = new Set(SAS_LIST); - -function intersection(anArray, aSet) { - return anArray instanceof Array ? anArray.filter(x => aSet.has(x)) : []; -} -/** - * @alias module:crypto/verification/SAS - * @extends {module:crypto/verification/Base} - */ - - -class SAS extends _Base.VerificationBase { - static get NAME() { - return "m.sas.v1"; - } - - get events() { - return EVENTS; - } - - async _doVerification() { - await global.Olm.init(); - olmutil = olmutil || new global.Olm.Utility(); // make sure user's keys are downloaded - - await this._baseApis.downloadKeys([this.userId]); - let retry = false; - - do { - try { - if (this.initiatedByMe) { - return await this._doSendVerification(); - } else { - return await this._doRespondVerification(); - } - } catch (err) { - if (err instanceof _Base.SwitchStartEventError) { - // this changes what initiatedByMe returns - this.startEvent = err.startEvent; - retry = true; - } else { - throw err; - } - } - } while (retry); - } - - canSwitchStartEvent(event) { - if (event.getType() !== START_TYPE) { - return false; - } - - const content = event.getContent(); - return content && content.method === SAS.NAME && this._waitingForAccept; - } - - async _sendStart() { - const startContent = this._channel.completeContent(START_TYPE, { - method: SAS.NAME, - from_device: this._baseApis.deviceId, - key_agreement_protocols: KEY_AGREEMENT_LIST, - hashes: HASHES_LIST, - message_authentication_codes: MAC_LIST, - // FIXME: allow app to specify what SAS methods can be used - short_authentication_string: SAS_LIST - }); - - await this._channel.sendCompleted(START_TYPE, startContent); - return startContent; - } - - async _doSendVerification() { - this._waitingForAccept = true; - let startContent; - - if (this.startEvent) { - startContent = this._channel.completedContentFromEvent(this.startEvent); - } else { - startContent = await this._sendStart(); - } // we might have switched to a different start event, - // but was we didn't call _waitForEvent there was no - // call that could throw yet. So check manually that - // we're still on the initiator side - - - if (!this.initiatedByMe) { - throw new _Base.SwitchStartEventError(this.startEvent); - } - - let e; - - try { - e = await this._waitForEvent("m.key.verification.accept"); - } finally { - this._waitingForAccept = false; - } - - let content = e.getContent(); - const sasMethods = intersection(content.short_authentication_string, SAS_SET); - - if (!(KEY_AGREEMENT_SET.has(content.key_agreement_protocol) && HASHES_SET.has(content.hash) && MAC_SET.has(content.message_authentication_code) && sasMethods.length)) { - throw (0, _Error.newUnknownMethodError)(); - } - - if (typeof content.commitment !== "string") { - throw (0, _Error.newInvalidMessageError)(); - } - - const keyAgreement = content.key_agreement_protocol; - const macMethod = content.message_authentication_code; - const hashCommitment = content.commitment; - const olmSAS = new global.Olm.SAS(); - - try { - this.ourSASPubKey = olmSAS.get_pubkey(); - await this._send("m.key.verification.key", { - key: this.ourSASPubKey - }); - e = await this._waitForEvent("m.key.verification.key"); // FIXME: make sure event is properly formed - - content = e.getContent(); - - const commitmentStr = content.key + _anotherJson.default.stringify(startContent); // TODO: use selected hash function (when we support multiple) - - - if (olmutil.sha256(commitmentStr) !== hashCommitment) { - throw newMismatchedCommitmentError(); - } - - this.theirSASPubKey = content.key; - olmSAS.set_their_key(content.key); - const sasBytes = calculateKeyAgreement[keyAgreement](this, olmSAS, 6); - const verifySAS = new Promise((resolve, reject) => { - this.sasEvent = { - sas: generateSas(sasBytes, sasMethods), - confirm: async () => { - try { - await this._sendMAC(olmSAS, macMethod); - resolve(); - } catch (err) { - reject(err); - } - }, - cancel: () => reject((0, _Error.newUserCancelledError)()), - mismatch: () => reject(newMismatchedSASError()) - }; - this.emit("show_sas", this.sasEvent); - }); - [e] = await Promise.all([this._waitForEvent("m.key.verification.mac").then(e => { - // we don't expect any more messages from the other - // party, and they may send a m.key.verification.done - // when they're done on their end - this._expectedEvent = "m.key.verification.done"; - return e; - }), verifySAS]); - content = e.getContent(); - await this._checkMAC(olmSAS, content, macMethod); - } finally { - olmSAS.free(); - } - } - - async _doRespondVerification() { - // as m.related_to is not included in the encrypted content in e2e rooms, - // we need to make sure it is added - let content = this._channel.completedContentFromEvent(this.startEvent); // Note: we intersect using our pre-made lists, rather than the sets, - // so that the result will be in our order of preference. Then - // fetching the first element from the array will give our preferred - // method out of the ones offered by the other party. - - - const keyAgreement = intersection(KEY_AGREEMENT_LIST, new Set(content.key_agreement_protocols))[0]; - const hashMethod = intersection(HASHES_LIST, new Set(content.hashes))[0]; - const macMethod = intersection(MAC_LIST, new Set(content.message_authentication_codes))[0]; // FIXME: allow app to specify what SAS methods can be used - - const sasMethods = intersection(content.short_authentication_string, SAS_SET); - - if (!(keyAgreement !== undefined && hashMethod !== undefined && macMethod !== undefined && sasMethods.length)) { - throw (0, _Error.newUnknownMethodError)(); - } - - const olmSAS = new global.Olm.SAS(); - - try { - const commitmentStr = olmSAS.get_pubkey() + _anotherJson.default.stringify(content); - - await this._send("m.key.verification.accept", { - key_agreement_protocol: keyAgreement, - hash: hashMethod, - message_authentication_code: macMethod, - short_authentication_string: sasMethods, - // TODO: use selected hash function (when we support multiple) - commitment: olmutil.sha256(commitmentStr) - }); - let e = await this._waitForEvent("m.key.verification.key"); // FIXME: make sure event is properly formed - - content = e.getContent(); - this.theirSASPubKey = content.key; - olmSAS.set_their_key(content.key); - this.ourSASPubKey = olmSAS.get_pubkey(); - await this._send("m.key.verification.key", { - key: this.ourSASPubKey - }); - const sasBytes = calculateKeyAgreement[keyAgreement](this, olmSAS, 6); - const verifySAS = new Promise((resolve, reject) => { - this.sasEvent = { - sas: generateSas(sasBytes, sasMethods), - confirm: async () => { - try { - await this._sendMAC(olmSAS, macMethod); - resolve(); - } catch (err) { - reject(err); - } - }, - cancel: () => reject((0, _Error.newUserCancelledError)()), - mismatch: () => reject(newMismatchedSASError()) - }; - this.emit("show_sas", this.sasEvent); - }); - [e] = await Promise.all([this._waitForEvent("m.key.verification.mac").then(e => { - // we don't expect any more messages from the other - // party, and they may send a m.key.verification.done - // when they're done on their end - this._expectedEvent = "m.key.verification.done"; - return e; - }), verifySAS]); - content = e.getContent(); - await this._checkMAC(olmSAS, content, macMethod); - } finally { - olmSAS.free(); - } - } - - _sendMAC(olmSAS, method) { - const mac = {}; - const keyList = []; - - const baseInfo = "MATRIX_KEY_VERIFICATION_MAC" + this._baseApis.getUserId() + this._baseApis.deviceId + this.userId + this.deviceId + this._channel.transactionId; - - const deviceKeyId = `ed25519:${this._baseApis.deviceId}`; - mac[deviceKeyId] = calculateMAC(olmSAS, method)(this._baseApis.getDeviceEd25519Key(), baseInfo + deviceKeyId); - keyList.push(deviceKeyId); - - const crossSigningId = this._baseApis.getCrossSigningId(); - - if (crossSigningId) { - const crossSigningKeyId = `ed25519:${crossSigningId}`; - mac[crossSigningKeyId] = calculateMAC(olmSAS, method)(crossSigningId, baseInfo + crossSigningKeyId); - keyList.push(crossSigningKeyId); - } - - const keys = calculateMAC(olmSAS, method)(keyList.sort().join(","), baseInfo + "KEY_IDS"); - return this._send("m.key.verification.mac", { - mac, - keys - }); - } - - async _checkMAC(olmSAS, content, method) { - const baseInfo = "MATRIX_KEY_VERIFICATION_MAC" + this.userId + this.deviceId + this._baseApis.getUserId() + this._baseApis.deviceId + this._channel.transactionId; - - if (content.keys !== calculateMAC(olmSAS, method)(Object.keys(content.mac).sort().join(","), baseInfo + "KEY_IDS")) { - throw (0, _Error.newKeyMismatchError)(); - } - - await this._verifyKeys(this.userId, content.mac, (keyId, device, keyInfo) => { - if (keyInfo !== calculateMAC(olmSAS, method)(device.keys[keyId], baseInfo + keyId)) { - throw (0, _Error.newKeyMismatchError)(); - } - }); - } - -} - -exports.SAS = SAS; +//# sourceMappingURL=SASDecimal.js.map /***/ }), /***/ 8434: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.InRoomRequests = exports.InRoomChannel = void 0; - -var _VerificationRequest = __webpack_require__(9685); - -var _logger = __webpack_require__(3854); - +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _VerificationRequest = __nccwpck_require__(9685); +var _logger = __nccwpck_require__(3854); +var _event = __nccwpck_require__(7487); /* Copyright 2018 New Vector Ltd Copyright 2019 The Matrix.org Foundation C.I.C. @@ -47979,232 +157427,206 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const MESSAGE_TYPE = "m.room.message"; + +const MESSAGE_TYPE = _event.EventType.RoomMessage; const M_REFERENCE = "m.reference"; const M_RELATES_TO = "m.relates_to"; + /** * A key verification channel that sends verification events in the timeline of a room. * Uses the event id of the initial m.key.verification.request event as a transaction id. */ - class InRoomChannel { /** - * @param {MatrixClient} client the matrix client, to send messages with and get current user & device from. - * @param {string} roomId id of the room where verification events should be posted in, should be a DM with the given user. - * @param {string} userId id of user that the verification request is directed at, should be present in the room. + * @param client - the matrix client, to send messages with and get current user & device from. + * @param roomId - id of the room where verification events should be posted in, should be a DM with the given user. + * @param userId - id of user that the verification request is directed at, should be present in the room. */ - constructor(client, roomId, userId = null) { - this._client = client; - this._roomId = roomId; + constructor(client, roomId, userId) { + this.client = client; + this.roomId = roomId; this.userId = userId; - this._requestEventId = null; } - get receiveStartFromOtherDevices() { return true; } - get roomId() { - return this._roomId; - } /** The transaction id generated/used by this verification channel */ - - get transactionId() { - return this._requestEventId; + return this.requestEventId; } - static getOtherPartyUserId(event, client) { const type = InRoomChannel.getEventType(event); - if (type !== _VerificationRequest.REQUEST_TYPE) { return; } - const ownUserId = client.getUserId(); const sender = event.getSender(); const content = event.getContent(); const receiver = content.to; - if (sender === ownUserId) { return receiver; } else if (receiver === ownUserId) { return sender; } } + /** - * @param {MatrixEvent} event the event to get the timestamp of - * @return {number} the timestamp when the event was sent + * @param event - the event to get the timestamp of + * @returns the timestamp when the event was sent */ - - getTimestamp(event) { return event.getTs(); } + /** * Checks whether the given event type should be allowed to initiate a new VerificationRequest over this channel - * @param {string} type the event type to check - * @returns {bool} boolean flag + * @param type - the event type to check + * @returns boolean flag */ - - static canCreateRequest(type) { return type === _VerificationRequest.REQUEST_TYPE; } + canCreateRequest(type) { + return InRoomChannel.canCreateRequest(type); + } + /** * Extract the transaction id used by a given key verification event, if any - * @param {MatrixEvent} event the event - * @returns {string} the transaction id + * @param event - the event + * @returns the transaction id */ - - static getTransactionId(event) { if (InRoomChannel.getEventType(event) === _VerificationRequest.REQUEST_TYPE) { return event.getId(); } else { const relation = event.getRelation(); - - if (relation && relation.rel_type === M_REFERENCE) { + if ((relation === null || relation === void 0 ? void 0 : relation.rel_type) === M_REFERENCE) { return relation.event_id; } } } + /** * Checks whether this event is a well-formed key verification event. * This only does checks that don't rely on the current state of a potentially already channel * so we can prevent channels being created by invalid events. * `handleEvent` can do more checks and choose to ignore invalid events. - * @param {MatrixEvent} event the event to validate - * @param {MatrixClient} client the client to get the current user and device id from - * @returns {bool} whether the event is valid and should be passed to handleEvent + * @param event - the event to validate + * @param client - the client to get the current user and device id from + * @returns whether the event is valid and should be passed to handleEvent */ - - static validateEvent(event, client) { const txnId = InRoomChannel.getTransactionId(event); - if (typeof txnId !== "string" || txnId.length === 0) { return false; } - const type = InRoomChannel.getEventType(event); - const content = event.getContent(); // from here on we're fairly sure that this is supposed to be - // part of a verification request, so be noisy when rejecting something + const content = event.getContent(); + // from here on we're fairly sure that this is supposed to be + // part of a verification request, so be noisy when rejecting something if (type === _VerificationRequest.REQUEST_TYPE) { if (!content || typeof content.to !== "string" || !content.to.length) { - _logger.logger.log("InRoomChannel: validateEvent: " + "no valid to " + (content && content.to)); - + _logger.logger.log("InRoomChannel: validateEvent: " + "no valid to " + content.to); return false; - } // ignore requests that are not direct to or sent by the syncing user - + } + // ignore requests that are not direct to or sent by the syncing user if (!InRoomChannel.getOtherPartyUserId(event, client)) { - _logger.logger.log("InRoomChannel: validateEvent: " + `not directed to or sent by me: ${event.getSender()}` + `, ${content && content.to}`); - + _logger.logger.log("InRoomChannel: validateEvent: " + `not directed to or sent by me: ${event.getSender()}` + `, ${content.to}`); return false; } } - return _VerificationRequest.VerificationRequest.validateEvent(type, event, client); } + /** * As m.key.verification.request events are as m.room.message events with the InRoomChannel * to have a fallback message in non-supporting clients, we map the real event type * to the symbolic one to keep things in unison with ToDeviceChannel - * @param {MatrixEvent} event the event to get the type of - * @returns {string} the "symbolic" event type + * @param event - the event to get the type of + * @returns the "symbolic" event type */ - - static getEventType(event) { const type = event.getType(); - if (type === MESSAGE_TYPE) { const content = event.getContent(); - if (content) { const { msgtype } = content; - if (msgtype === _VerificationRequest.REQUEST_TYPE) { return _VerificationRequest.REQUEST_TYPE; } } } - if (type && type !== _VerificationRequest.REQUEST_TYPE) { return type; } else { return ""; } } + /** * Changes the state of the channel, request, and verifier in response to a key verification event. - * @param {MatrixEvent} event to handle - * @param {VerificationRequest} request the request to forward handling to - * @param {bool} isLiveEvent whether this is an even received through sync or not - * @returns {Promise} a promise that resolves when any requests as an anwser to the passed-in event are sent. + * @param event - to handle + * @param request - the request to forward handling to + * @param isLiveEvent - whether this is an even received through sync or not + * @returns a promise that resolves when any requests as an answer to the passed-in event are sent. */ - - - async handleEvent(event, request, isLiveEvent) { + async handleEvent(event, request, isLiveEvent = false) { // prevent processing the same event multiple times, as under // some circumstances Room.timeline can get emitted twice for the same event if (request.hasEventId(event.getId())) { return; } - - const type = InRoomChannel.getEventType(event); // do validations that need state (roomId, userId), + const type = InRoomChannel.getEventType(event); + // do validations that need state (roomId, userId), // ignore if invalid - if (event.getRoomId() !== this._roomId) { + if (event.getRoomId() !== this.roomId) { return; - } // set userId if not set already - - - if (this.userId === null) { - const userId = InRoomChannel.getOtherPartyUserId(event, this._client); - + } + // set userId if not set already + if (!this.userId) { + const userId = InRoomChannel.getOtherPartyUserId(event, this.client); if (userId) { this.userId = userId; } - } // ignore events not sent by us or the other party - - - const ownUserId = this._client.getUserId(); - + } + // ignore events not sent by us or the other party + const ownUserId = this.client.getUserId(); const sender = event.getSender(); - - if (this.userId !== null) { + if (this.userId) { if (sender !== ownUserId && sender !== this.userId) { - _logger.logger.log(`InRoomChannel: ignoring verification event from ` + `non-participating sender ${sender}`); - + _logger.logger.log(`InRoomChannel: ignoring verification event from non-participating sender ${sender}`); return; } } - - if (this._requestEventId === null) { - this._requestEventId = InRoomChannel.getTransactionId(event); + if (!this.requestEventId) { + this.requestEventId = InRoomChannel.getTransactionId(event); } + // With pendingEventOrdering: "chronological", we will see events that have been sent but not yet reflected + // back via /sync. These are "local echoes" and are identifiable by their txnId + const isLocalEcho = !!event.getTxnId(); + + // Alternatively, we may see an event that we sent that is reflected back via /sync. These are "remote echoes" + // and have a transaction ID in the "unsigned" data const isRemoteEcho = !!event.getUnsigned().transaction_id; - - const isSentByUs = event.getSender() === this._client.getUserId(); - - return await request.handleEvent(type, event, isLiveEvent, isRemoteEcho, isSentByUs); + const isSentByUs = event.getSender() === this.client.getUserId(); + return request.handleEvent(type, event, isLiveEvent, isLocalEcho || isRemoteEcho, isSentByUs); } + /** * Adds the transaction id (relation) back to a received event * so it has the same format as returned by `completeContent` before sending. * The relation can not appear on the event content because of encryption, * relations are excluded from encryption. - * @param {MatrixEvent} event the received event - * @returns {Object} the content object with the relation added again + * @param event - the received event + * @returns the content object with the relation added again */ - - completedContentFromEvent(event) { // ensure m.related_to is included in e2ee rooms // as the field is excluded from encryption @@ -48212,28 +157634,25 @@ class InRoomChannel { content[M_RELATES_TO] = event.getRelation(); return content; } + /** * Add all the fields to content needed for sending it over this channel. * This is public so verification methods (SAS uses this) can get the exact * content that will be sent independent of the used channel, * as they need to calculate the hash of it. - * @param {string} type the event type - * @param {object} content the (incomplete) content - * @returns {object} the complete content, as it will be sent. + * @param type - the event type + * @param content - the (incomplete) content + * @returns the complete content, as it will be sent. */ - - completeContent(type, content) { content = Object.assign({}, content); - if (type === _VerificationRequest.REQUEST_TYPE || type === _VerificationRequest.READY_TYPE || type === _VerificationRequest.START_TYPE) { - content.from_device = this._client.getDeviceId(); + content.from_device = this.client.getDeviceId(); } - if (type === _VerificationRequest.REQUEST_TYPE) { // type is mapped to m.room.message in the send method content = { - body: this._client.getUserId() + " is requesting to verify " + "your key, but your client does not support in-chat key " + "verification. You will need to use legacy key " + "verification to verify keys.", + body: this.client.getUserId() + " is requesting to verify " + "your key, but your client does not support in-chat key " + "verification. You will need to use legacy key " + "verification to verify keys.", msgtype: _VerificationRequest.REQUEST_TYPE, to: this.userId, from_device: content.from_device, @@ -48245,143 +157664,112 @@ class InRoomChannel { event_id: this.transactionId }; } - return content; } + /** * Send an event over the channel with the content not having gone through `completeContent`. - * @param {string} type the event type - * @param {object} uncompletedContent the (incomplete) content - * @returns {Promise} the promise of the request + * @param type - the event type + * @param uncompletedContent - the (incomplete) content + * @returns the promise of the request */ - - send(type, uncompletedContent) { const content = this.completeContent(type, uncompletedContent); return this.sendCompleted(type, content); } + /** * Send an event over the channel with the content having gone through `completeContent` already. - * @param {string} type the event type - * @param {object} content - * @returns {Promise} the promise of the request + * @param type - the event type + * @returns the promise of the request */ - - async sendCompleted(type, content) { let sendType = type; - if (type === _VerificationRequest.REQUEST_TYPE) { sendType = MESSAGE_TYPE; } - - const response = await this._client.sendEvent(this._roomId, sendType, content); - + const response = await this.client.sendEvent(this.roomId, sendType, content); if (type === _VerificationRequest.REQUEST_TYPE) { - this._requestEventId = response.event_id; + this.requestEventId = response.event_id; } } - } - exports.InRoomChannel = InRoomChannel; - class InRoomRequests { constructor() { - this._requestsByRoomId = new Map(); + (0, _defineProperty2.default)(this, "requestsByRoomId", new Map()); } - getRequest(event) { const roomId = event.getRoomId(); const txnId = InRoomChannel.getTransactionId(event); - return this._getRequestByTxnId(roomId, txnId); + return this.getRequestByTxnId(roomId, txnId); } - getRequestByChannel(channel) { - return this._getRequestByTxnId(channel.roomId, channel.transactionId); + return this.getRequestByTxnId(channel.roomId, channel.transactionId); } - - _getRequestByTxnId(roomId, txnId) { - const requestsByTxnId = this._requestsByRoomId.get(roomId); - + getRequestByTxnId(roomId, txnId) { + const requestsByTxnId = this.requestsByRoomId.get(roomId); if (requestsByTxnId) { return requestsByTxnId.get(txnId); } } - setRequest(event, request) { - this._setRequest(event.getRoomId(), InRoomChannel.getTransactionId(event), request); + this.doSetRequest(event.getRoomId(), InRoomChannel.getTransactionId(event), request); } - setRequestByChannel(channel, request) { - this._setRequest(channel.roomId, channel.transactionId, request); + this.doSetRequest(channel.roomId, channel.transactionId, request); } - - _setRequest(roomId, txnId, request) { - let requestsByTxnId = this._requestsByRoomId.get(roomId); - + doSetRequest(roomId, txnId, request) { + let requestsByTxnId = this.requestsByRoomId.get(roomId); if (!requestsByTxnId) { requestsByTxnId = new Map(); - - this._requestsByRoomId.set(roomId, requestsByTxnId); + this.requestsByRoomId.set(roomId, requestsByTxnId); } - requestsByTxnId.set(txnId, request); } - removeRequest(event) { const roomId = event.getRoomId(); - - const requestsByTxnId = this._requestsByRoomId.get(roomId); - + const requestsByTxnId = this.requestsByRoomId.get(roomId); if (requestsByTxnId) { requestsByTxnId.delete(InRoomChannel.getTransactionId(event)); - if (requestsByTxnId.size === 0) { - this._requestsByRoomId.delete(roomId); + this.requestsByRoomId.delete(roomId); } } } - - findRequestInProgress(roomId) { - const requestsByTxnId = this._requestsByRoomId.get(roomId); - + findRequestInProgress(roomId, userId) { + const requestsByTxnId = this.requestsByRoomId.get(roomId); if (requestsByTxnId) { for (const request of requestsByTxnId.values()) { - if (request.pending) { + if (request.pending && (userId === undefined || request.requestingUserId === userId)) { return request; } } } } - } - exports.InRoomRequests = InRoomRequests; +//# sourceMappingURL=InRoomChannel.js.map /***/ }), /***/ 626: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.ToDeviceRequests = exports.ToDeviceChannel = void 0; - -var _randomstring = __webpack_require__(2495); - -var _logger = __webpack_require__(3854); - -var _VerificationRequest = __webpack_require__(9685); - -var _Error = __webpack_require__(9697); - -var _event = __webpack_require__(9564); - +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _randomstring = __nccwpck_require__(2495); +var _logger = __nccwpck_require__(3854); +var _VerificationRequest = __nccwpck_require__(9685); +var _Error = __nccwpck_require__(9697); +var _event = __nccwpck_require__(9564); /* Copyright 2018 New Vector Ltd Copyright 2019 The Matrix.org Foundation C.I.C. @@ -48405,348 +157793,275 @@ limitations under the License. */ class ToDeviceChannel { // userId and devices of user we're about to verify - constructor(client, userId, devices, transactionId = null, deviceId = null) { - this._client = client; + constructor(client, userId, devices, transactionId, deviceId) { + this.client = client; this.userId = userId; - this._devices = devices; + this.devices = devices; this.transactionId = transactionId; - this._deviceId = deviceId; + this.deviceId = deviceId; } - isToDevices(devices) { - if (devices.length === this._devices.length) { + if (devices.length === this.devices.length) { for (const device of devices) { - const d = this._devices.find(d => d.deviceId === device.deviceId); - - if (!d) { + if (!this.devices.includes(device)) { return false; } } - return true; } else { return false; } } - - get deviceId() { - return this._deviceId; - } - static getEventType(event) { return event.getType(); } + /** * Extract the transaction id used by a given key verification event, if any - * @param {MatrixEvent} event the event - * @returns {string} the transaction id + * @param event - the event + * @returns the transaction id */ - - static getTransactionId(event) { const content = event.getContent(); return content && content.transaction_id; } + /** * Checks whether the given event type should be allowed to initiate a new VerificationRequest over this channel - * @param {string} type the event type to check - * @returns {bool} boolean flag + * @param type - the event type to check + * @returns boolean flag */ - - static canCreateRequest(type) { return type === _VerificationRequest.REQUEST_TYPE || type === _VerificationRequest.START_TYPE; } + canCreateRequest(type) { + return ToDeviceChannel.canCreateRequest(type); + } + /** * Checks whether this event is a well-formed key verification event. * This only does checks that don't rely on the current state of a potentially already channel * so we can prevent channels being created by invalid events. * `handleEvent` can do more checks and choose to ignore invalid events. - * @param {MatrixEvent} event the event to validate - * @param {MatrixClient} client the client to get the current user and device id from - * @returns {bool} whether the event is valid and should be passed to handleEvent + * @param event - the event to validate + * @param client - the client to get the current user and device id from + * @returns whether the event is valid and should be passed to handleEvent */ - - static validateEvent(event, client) { if (event.isCancelled()) { _logger.logger.warn("Ignoring flagged verification request from " + event.getSender()); - return false; } - const content = event.getContent(); - if (!content) { _logger.logger.warn("ToDeviceChannel.validateEvent: invalid: no content"); - return false; } - if (!content.transaction_id) { _logger.logger.warn("ToDeviceChannel.validateEvent: invalid: no transaction_id"); - return false; } - const type = event.getType(); - if (type === _VerificationRequest.REQUEST_TYPE) { if (!Number.isFinite(content.timestamp)) { _logger.logger.warn("ToDeviceChannel.validateEvent: invalid: no timestamp"); - return false; } - if (event.getSender() === client.getUserId() && content.from_device == client.getDeviceId()) { // ignore requests from ourselves, because it doesn't make sense for a // device to verify itself _logger.logger.warn("ToDeviceChannel.validateEvent: invalid: from own device"); - return false; } } - return _VerificationRequest.VerificationRequest.validateEvent(type, event, client); } + /** - * @param {MatrixEvent} event the event to get the timestamp of - * @return {number} the timestamp when the event was sent + * @param event - the event to get the timestamp of + * @returns the timestamp when the event was sent */ - - getTimestamp(event) { const content = event.getContent(); return content && content.timestamp; } + /** * Changes the state of the channel, request, and verifier in response to a key verification event. - * @param {MatrixEvent} event to handle - * @param {VerificationRequest} request the request to forward handling to - * @param {bool} isLiveEvent whether this is an even received through sync or not - * @returns {Promise} a promise that resolves when any requests as an anwser to the passed-in event are sent. + * @param event - to handle + * @param request - the request to forward handling to + * @param isLiveEvent - whether this is an even received through sync or not + * @returns a promise that resolves when any requests as an answer to the passed-in event are sent. */ - - - async handleEvent(event, request, isLiveEvent) { + async handleEvent(event, request, isLiveEvent = false) { const type = event.getType(); const content = event.getContent(); - if (type === _VerificationRequest.REQUEST_TYPE || type === _VerificationRequest.READY_TYPE || type === _VerificationRequest.START_TYPE) { if (!this.transactionId) { this.transactionId = content.transaction_id; } - - const deviceId = content.from_device; // adopt deviceId if not set before and valid - - if (!this._deviceId && this._devices.includes(deviceId)) { - this._deviceId = deviceId; - } // if no device id or different from addopted one, cancel with sender - - - if (!this._deviceId || this._deviceId !== deviceId) { + const deviceId = content.from_device; + // adopt deviceId if not set before and valid + if (!this.deviceId && this.devices.includes(deviceId)) { + this.deviceId = deviceId; + } + // if no device id or different from adopted one, cancel with sender + if (!this.deviceId || this.deviceId !== deviceId) { // also check that message came from the device we sent the request to earlier on // and do send a cancel message to that device // (but don't cancel the request for the device we should be talking to) - const cancelContent = this.completeContent((0, _Error.errorFromEvent)((0, _Error.newUnexpectedMessageError)())); - return this._sendToDevices(_VerificationRequest.CANCEL_TYPE, cancelContent, [deviceId]); + const cancelContent = this.completeContent(_VerificationRequest.CANCEL_TYPE, (0, _Error.errorFromEvent)((0, _Error.newUnexpectedMessageError)())); + return this.sendToDevices(_VerificationRequest.CANCEL_TYPE, cancelContent, [deviceId]); } } - const wasStarted = request.phase === _VerificationRequest.PHASE_STARTED || request.phase === _VerificationRequest.PHASE_READY; await request.handleEvent(event.getType(), event, isLiveEvent, false, false); const isStarted = request.phase === _VerificationRequest.PHASE_STARTED || request.phase === _VerificationRequest.PHASE_READY; - const isAcceptingEvent = type === _VerificationRequest.START_TYPE || type === _VerificationRequest.READY_TYPE; // the request has picked a ready or start event, tell the other devices about it - - if (isAcceptingEvent && !wasStarted && isStarted && this._deviceId) { - const nonChosenDevices = this._devices.filter(d => d !== this._deviceId); - + const isAcceptingEvent = type === _VerificationRequest.START_TYPE || type === _VerificationRequest.READY_TYPE; + // the request has picked a ready or start event, tell the other devices about it + if (isAcceptingEvent && !wasStarted && isStarted && this.deviceId) { + const nonChosenDevices = this.devices.filter(d => d !== this.deviceId && d !== this.client.getDeviceId()); if (nonChosenDevices.length) { - const message = this.completeContent({ + const message = this.completeContent(_VerificationRequest.CANCEL_TYPE, { code: "m.accepted", reason: "Verification request accepted by another device" }); - await this._sendToDevices(_VerificationRequest.CANCEL_TYPE, message, nonChosenDevices); + await this.sendToDevices(_VerificationRequest.CANCEL_TYPE, message, nonChosenDevices); } } } + /** - * See {InRoomChannel.completedContentFromEvent} why this is needed. - * @param {MatrixEvent} event the received event - * @returns {Object} the content object + * See {@link InRoomChannel#completedContentFromEvent} for why this is needed. + * @param event - the received event + * @returns the content object */ - - completedContentFromEvent(event) { return event.getContent(); } + /** * Add all the fields to content needed for sending it over this channel. * This is public so verification methods (SAS uses this) can get the exact * content that will be sent independent of the used channel, * as they need to calculate the hash of it. - * @param {string} type the event type - * @param {object} content the (incomplete) content - * @returns {object} the complete content, as it will be sent. + * @param type - the event type + * @param content - the (incomplete) content + * @returns the complete content, as it will be sent. */ - - completeContent(type, content) { // make a copy content = Object.assign({}, content); - if (this.transactionId) { content.transaction_id = this.transactionId; } - if (type === _VerificationRequest.REQUEST_TYPE || type === _VerificationRequest.READY_TYPE || type === _VerificationRequest.START_TYPE) { - content.from_device = this._client.getDeviceId(); + content.from_device = this.client.getDeviceId(); } - if (type === _VerificationRequest.REQUEST_TYPE) { content.timestamp = Date.now(); } - return content; } + /** * Send an event over the channel with the content not having gone through `completeContent`. - * @param {string} type the event type - * @param {object} uncompletedContent the (incomplete) content - * @returns {Promise} the promise of the request + * @param type - the event type + * @param uncompletedContent - the (incomplete) content + * @returns the promise of the request */ - - send(type, uncompletedContent = {}) { // create transaction id when sending request if ((type === _VerificationRequest.REQUEST_TYPE || type === _VerificationRequest.START_TYPE) && !this.transactionId) { this.transactionId = ToDeviceChannel.makeTransactionId(); } - const content = this.completeContent(type, uncompletedContent); return this.sendCompleted(type, content); } + /** * Send an event over the channel with the content having gone through `completeContent` already. - * @param {string} type the event type - * @param {object} content - * @returns {Promise} the promise of the request + * @param type - the event type + * @returns the promise of the request */ - - async sendCompleted(type, content) { let result; - - if (type === _VerificationRequest.REQUEST_TYPE) { - result = await this._sendToDevices(type, content, this._devices); + if (type === _VerificationRequest.REQUEST_TYPE || type === _VerificationRequest.CANCEL_TYPE && !this.deviceId) { + result = await this.sendToDevices(type, content, this.devices); } else { - result = await this._sendToDevices(type, content, [this._deviceId]); - } // the VerificationRequest state machine requires remote echos of the event + result = await this.sendToDevices(type, content, [this.deviceId]); + } + // the VerificationRequest state machine requires remote echos of the event // the client sends itself, so we fake this for to_device messages - - const remoteEchoEvent = new _event.MatrixEvent({ - sender: this._client.getUserId(), + sender: this.client.getUserId(), content, type }); - await this._request.handleEvent(type, remoteEchoEvent, - /*isLiveEvent=*/ - true, - /*isRemoteEcho=*/ - true, - /*isSentByUs=*/ - true); + await this.request.handleEvent(type, remoteEchoEvent, /*isLiveEvent=*/true, /*isRemoteEcho=*/true, /*isSentByUs=*/true); return result; } - - _sendToDevices(type, content, devices) { + async sendToDevices(type, content, devices) { if (devices.length) { - const msgMap = {}; - + const deviceMessages = new Map(); for (const deviceId of devices) { - msgMap[deviceId] = content; + deviceMessages.set(deviceId, content); } - - return this._client.sendToDevice(type, { - [this.userId]: msgMap - }); - } else { - return Promise.resolve(); + await this.client.sendToDevice(type, new Map([[this.userId, deviceMessages]])); } } + /** * Allow Crypto module to create and know the transaction id before the .start event gets sent. - * @returns {string} the transaction id + * @returns the transaction id */ - - static makeTransactionId() { return (0, _randomstring.randomString)(32); } - } - exports.ToDeviceChannel = ToDeviceChannel; - class ToDeviceRequests { constructor() { - this._requestsByUserId = new Map(); + (0, _defineProperty2.default)(this, "requestsByUserId", new Map()); } - getRequest(event) { return this.getRequestBySenderAndTxnId(event.getSender(), ToDeviceChannel.getTransactionId(event)); } - getRequestByChannel(channel) { return this.getRequestBySenderAndTxnId(channel.userId, channel.transactionId); } - getRequestBySenderAndTxnId(sender, txnId) { - const requestsByTxnId = this._requestsByUserId.get(sender); - + const requestsByTxnId = this.requestsByUserId.get(sender); if (requestsByTxnId) { return requestsByTxnId.get(txnId); } } - setRequest(event, request) { this.setRequestBySenderAndTxnId(event.getSender(), ToDeviceChannel.getTransactionId(event), request); } - setRequestByChannel(channel, request) { this.setRequestBySenderAndTxnId(channel.userId, channel.transactionId, request); } - setRequestBySenderAndTxnId(sender, txnId, request) { - let requestsByTxnId = this._requestsByUserId.get(sender); - + let requestsByTxnId = this.requestsByUserId.get(sender); if (!requestsByTxnId) { requestsByTxnId = new Map(); - - this._requestsByUserId.set(sender, requestsByTxnId); + this.requestsByUserId.set(sender, requestsByTxnId); } - requestsByTxnId.set(txnId, request); } - removeRequest(event) { const userId = event.getSender(); - - const requestsByTxnId = this._requestsByUserId.get(userId); - + const requestsByTxnId = this.requestsByUserId.get(userId); if (requestsByTxnId) { requestsByTxnId.delete(ToDeviceChannel.getTransactionId(event)); - if (requestsByTxnId.size === 0) { - this._requestsByUserId.delete(userId); + this.requestsByUserId.delete(userId); } } } - findRequestInProgress(userId, devices) { - const requestsByTxnId = this._requestsByUserId.get(userId); - + const requestsByTxnId = this.requestsByUserId.get(userId); if (requestsByTxnId) { for (const request of requestsByTxnId.values()) { if (request.pending && request.channel.isToDevices(devices)) { @@ -48755,49 +158070,52 @@ class ToDeviceRequests { } } } - getRequestsInProgress(userId) { - const requestsByTxnId = this._requestsByUserId.get(userId); - + const requestsByTxnId = this.requestsByUserId.get(userId); if (requestsByTxnId) { return Array.from(requestsByTxnId.values()).filter(r => r.pending); } - return []; } - } - exports.ToDeviceRequests = ToDeviceRequests; +//# sourceMappingURL=ToDeviceChannel.js.map /***/ }), /***/ 9685: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.VerificationRequest = exports.PHASE_DONE = exports.PHASE_CANCELLED = exports.PHASE_STARTED = exports.PHASE_READY = exports.PHASE_REQUESTED = exports.PHASE_UNSENT = exports.READY_TYPE = exports.DONE_TYPE = exports.CANCEL_TYPE = exports.START_TYPE = exports.REQUEST_TYPE = exports.EVENT_PREFIX = void 0; - -var _defineProperty2 = _interopRequireDefault(__webpack_require__(3561)); - -var _logger = __webpack_require__(3854); - -var _events = __webpack_require__(8614); - -var _Error = __webpack_require__(9697); - -var _QRCode = __webpack_require__(6612); - +exports.PHASE_UNSENT = exports.PHASE_STARTED = exports.PHASE_REQUESTED = exports.PHASE_READY = exports.PHASE_DONE = exports.PHASE_CANCELLED = exports.EVENT_PREFIX = exports.DONE_TYPE = exports.CANCEL_TYPE = void 0; +Object.defineProperty(exports, "Phase", ({ + enumerable: true, + get: function () { + return _verification.VerificationPhase; + } +})); +exports.VerificationRequest = exports.START_TYPE = exports.REQUEST_TYPE = exports.READY_TYPE = void 0; +Object.defineProperty(exports, "VerificationRequestEvent", ({ + enumerable: true, + get: function () { + return _verification.VerificationRequestEvent; + } +})); +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _Error = __nccwpck_require__(9697); +var _QRCode = __nccwpck_require__(6612); +var _event = __nccwpck_require__(7487); +var _typedEventEmitter = __nccwpck_require__(7150); +var _verification = __nccwpck_require__(6825); /* -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2018 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -48811,62 +158129,73 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ + +// backwards-compatibility exports + // How long after the event's timestamp that the request times out const TIMEOUT_FROM_EVENT_TS = 10 * 60 * 1000; // 10 minutes -// How long after we receive the event that the request times out +// How long after we receive the event that the request times out const TIMEOUT_FROM_EVENT_RECEIPT = 2 * 60 * 1000; // 2 minutes + // to avoid almost expired verification notifications // from showing a notification and almost immediately // disappearing, also ignore verification requests that // are this amount of time away from expiring. - const VERIFICATION_REQUEST_MARGIN = 3 * 1000; // 3 seconds -const EVENT_PREFIX = "m.key.verification."; -exports.EVENT_PREFIX = EVENT_PREFIX; -const REQUEST_TYPE = EVENT_PREFIX + "request"; -exports.REQUEST_TYPE = REQUEST_TYPE; -const START_TYPE = EVENT_PREFIX + "start"; -exports.START_TYPE = START_TYPE; -const CANCEL_TYPE = EVENT_PREFIX + "cancel"; -exports.CANCEL_TYPE = CANCEL_TYPE; -const DONE_TYPE = EVENT_PREFIX + "done"; -exports.DONE_TYPE = DONE_TYPE; -const READY_TYPE = EVENT_PREFIX + "ready"; -exports.READY_TYPE = READY_TYPE; -const PHASE_UNSENT = 1; -exports.PHASE_UNSENT = PHASE_UNSENT; -const PHASE_REQUESTED = 2; -exports.PHASE_REQUESTED = PHASE_REQUESTED; -const PHASE_READY = 3; -exports.PHASE_READY = PHASE_READY; -const PHASE_STARTED = 4; -exports.PHASE_STARTED = PHASE_STARTED; -const PHASE_CANCELLED = 5; -exports.PHASE_CANCELLED = PHASE_CANCELLED; -const PHASE_DONE = 6; +const EVENT_PREFIX = exports.EVENT_PREFIX = "m.key.verification."; +const REQUEST_TYPE = exports.REQUEST_TYPE = EVENT_PREFIX + "request"; +const START_TYPE = exports.START_TYPE = EVENT_PREFIX + "start"; +const CANCEL_TYPE = exports.CANCEL_TYPE = EVENT_PREFIX + "cancel"; +const DONE_TYPE = exports.DONE_TYPE = EVENT_PREFIX + "done"; +const READY_TYPE = exports.READY_TYPE = EVENT_PREFIX + "ready"; + +// Legacy export fields +const PHASE_UNSENT = exports.PHASE_UNSENT = _verification.VerificationPhase.Unsent; +const PHASE_REQUESTED = exports.PHASE_REQUESTED = _verification.VerificationPhase.Requested; +const PHASE_READY = exports.PHASE_READY = _verification.VerificationPhase.Ready; +const PHASE_STARTED = exports.PHASE_STARTED = _verification.VerificationPhase.Started; +const PHASE_CANCELLED = exports.PHASE_CANCELLED = _verification.VerificationPhase.Cancelled; +const PHASE_DONE = exports.PHASE_DONE = _verification.VerificationPhase.Done; /** * State machine for verification requests. * Things that differ based on what channel is used to * send and receive verification events are put in `InRoomChannel` or `ToDeviceChannel`. - * @event "change" whenever the state of the request object has changed. + * + * @deprecated Avoid direct references: instead prefer {@link Crypto.VerificationRequest}. */ +class VerificationRequest extends _typedEventEmitter.TypedEventEmitter { + // Used in tests only -exports.PHASE_DONE = PHASE_DONE; - -class VerificationRequest extends _events.EventEmitter { constructor(channel, verificationMethods, client) { super(); - (0, _defineProperty2.default)(this, "_cancelOnTimeout", () => { + (0, _defineProperty2.default)(this, "eventsByUs", new Map()); + (0, _defineProperty2.default)(this, "eventsByThem", new Map()); + (0, _defineProperty2.default)(this, "_observeOnly", false); + (0, _defineProperty2.default)(this, "timeoutTimer", null); + (0, _defineProperty2.default)(this, "_accepting", false); + (0, _defineProperty2.default)(this, "_declining", false); + (0, _defineProperty2.default)(this, "verifierHasFinished", false); + (0, _defineProperty2.default)(this, "_cancelled", false); + (0, _defineProperty2.default)(this, "_chosenMethod", null); + // we keep a copy of the QR Code data (including other user master key) around + // for QR reciprocate verification, to protect against + // cross-signing identity reset between the .ready and .start event + // and signing the wrong key after .start + (0, _defineProperty2.default)(this, "_qrCodeData", null); + // The timestamp when we received the request event from the other side + (0, _defineProperty2.default)(this, "requestReceivedAt", null); + (0, _defineProperty2.default)(this, "commonMethods", []); + (0, _defineProperty2.default)(this, "cancelOnTimeout", async () => { try { if (this.initiatedByMe) { - this.cancel({ + await this.cancel({ reason: "Other party didn't accept in time", code: "m.timeout" }); } else { - this.cancel({ + await this.cancel({ reason: "User didn't accept in time", code: "m.timeout" }); @@ -48876,421 +158205,385 @@ class VerificationRequest extends _events.EventEmitter { } }); this.channel = channel; - this.channel._request = this; - this._verificationMethods = verificationMethods; - this._client = client; - this._commonMethods = []; - - this._setPhase(PHASE_UNSENT, false); - - this._eventsByUs = new Map(); - this._eventsByThem = new Map(); - this._observeOnly = false; - this._timeoutTimer = null; - this._accepting = false; - this._declining = false; - this._verifierHasFinished = false; - this._cancelled = false; - this._chosenMethod = null; // we keep a copy of the QR Code data (including other user master key) around - // for QR reciprocate verification, to protect against - // cross-signing identity reset between the .ready and .start event - // and signing the wrong key after .start - - this._qrCodeData = null; // The timestamp when we received the request event from the other side - - this._requestReceivedAt = null; + this.verificationMethods = verificationMethods; + this.client = client; + this.channel.request = this; + this.setPhase(PHASE_UNSENT, false); } + /** * Stateless validation logic not specific to the channel. * Invoked by the same static method in either channel. - * @param {string} type the "symbolic" event type, as returned by the `getEventType` function on the channel. - * @param {MatrixEvent} event the event to validate. Don't call getType() on it but use the `type` parameter instead. - * @param {MatrixClient} client the client to get the current user and device id from - * @returns {bool} whether the event is valid and should be passed to handleEvent + * @param type - the "symbolic" event type, as returned by the `getEventType` function on the channel. + * @param event - the event to validate. Don't call getType() on it but use the `type` parameter instead. + * @param client - the client to get the current user and device id from + * @returns whether the event is valid and should be passed to handleEvent */ - - static validateEvent(type, event, client) { const content = event.getContent(); - if (!type || !type.startsWith(EVENT_PREFIX)) { - return false; - } // from here on we're fairly sure that this is supposed to be - // part of a verification request, so be noisy when rejecting something - - - if (!content) { - _logger.logger.log("VerificationRequest: validateEvent: no content"); - return false; } + // from here on we're fairly sure that this is supposed to be + // part of a verification request, so be noisy when rejecting something + if (!content) { + _logger.logger.log("VerificationRequest: validateEvent: no content"); + return false; + } if (type === REQUEST_TYPE || type === READY_TYPE) { if (!Array.isArray(content.methods)) { _logger.logger.log("VerificationRequest: validateEvent: " + "fail because methods"); - return false; } } - if (type === REQUEST_TYPE || type === READY_TYPE || type === START_TYPE) { if (typeof content.from_device !== "string" || content.from_device.length === 0) { _logger.logger.log("VerificationRequest: validateEvent: " + "fail because from_device"); - return false; } } - return true; } + /** + * Unique ID for this verification request. + * + * An ID isn't assigned until the first message is sent, so this may be `undefined` in the early phases. + */ + get transactionId() { + return this.channel.transactionId; + } + + /** + * For an in-room verification, the ID of the room. + */ + get roomId() { + return this.channel.roomId; + } get invalid() { return this.phase === PHASE_UNSENT; } + /** returns whether the phase is PHASE_REQUESTED */ - - get requested() { return this.phase === PHASE_REQUESTED; } + /** returns whether the phase is PHASE_CANCELLED */ - - get cancelled() { return this.phase === PHASE_CANCELLED; } + /** returns whether the phase is PHASE_READY */ - - get ready() { return this.phase === PHASE_READY; } + /** returns whether the phase is PHASE_STARTED */ - - get started() { return this.phase === PHASE_STARTED; } + /** returns whether the phase is PHASE_DONE */ - - get done() { return this.phase === PHASE_DONE; } + /** once the phase is PHASE_STARTED (and !initiatedByMe) or PHASE_READY: common methods supported by both sides */ - - get methods() { - return this._commonMethods; + return this.commonMethods; } + /** the method picked in the .start event */ - - get chosenMethod() { return this._chosenMethod; } - calculateEventTimeout(event) { let effectiveExpiresAt = this.channel.getTimestamp(event) + TIMEOUT_FROM_EVENT_TS; - - if (this._requestReceivedAt && !this.initiatedByMe && this.phase <= PHASE_REQUESTED) { - const expiresAtByReceipt = this._requestReceivedAt + TIMEOUT_FROM_EVENT_RECEIPT; + if (this.requestReceivedAt && !this.initiatedByMe && this.phase <= PHASE_REQUESTED) { + const expiresAtByReceipt = this.requestReceivedAt + TIMEOUT_FROM_EVENT_RECEIPT; effectiveExpiresAt = Math.min(effectiveExpiresAt, expiresAtByReceipt); } - return Math.max(0, effectiveExpiresAt - Date.now()); } + /** The current remaining amount of ms before the request should be automatically cancelled */ - - get timeout() { - const requestEvent = this._getEventByEither(REQUEST_TYPE); - + const requestEvent = this.getEventByEither(REQUEST_TYPE); if (requestEvent) { return this.calculateEventTimeout(requestEvent); } - return 0; } + /** * The key verification request event. - * @returns {MatrixEvent} The request event, or falsey if not found. + * @returns The request event, or falsey if not found. */ - - get requestEvent() { - return this._getEventByEither(REQUEST_TYPE); + return this.getEventByEither(REQUEST_TYPE); } + /** current phase of the request. Some properties might only be defined in a current phase. */ - - get phase() { return this._phase; } + /** The verifier to do the actual verification, once the method has been established. Only defined when the `phase` is PHASE_STARTED. */ - - get verifier() { return this._verifier; } - get canAccept() { - return this.phase < PHASE_READY && !this._accepting && !this._declining; + return (0, _verification.canAcceptVerificationRequest)(this); } - get accepting() { return this._accepting; } - get declining() { return this._declining; } + /** whether this request has sent it's initial event and needs more events to complete */ - - get pending() { return !this.observeOnly && this._phase !== PHASE_DONE && this._phase !== PHASE_CANCELLED; } - /** Only set after a .ready if the other party can scan a QR code */ - + /** Only set after a .ready if the other party can scan a QR code + * + * @deprecated Prefer `generateQRCode`. + */ get qrCodeData() { return this._qrCodeData; } + + /** + * Get the data for a QR code allowing the other device to verify this one, if it supports it. + * + * Only set after a .ready if the other party can scan a QR code, otherwise undefined. + * + * @deprecated Prefer `generateQRCode`. + */ + getQRCodeBytes() { + var _this$_qrCodeData; + return (_this$_qrCodeData = this._qrCodeData) === null || _this$_qrCodeData === void 0 ? void 0 : _this$_qrCodeData.getBuffer(); + } + + /** + * Generate the data for a QR code allowing the other device to verify this one, if it supports it. + * + * Only returns data once `phase` is `Ready` and the other party can scan a QR code; + * otherwise returns `undefined`. + */ + async generateQRCode() { + return this.getQRCodeBytes(); + } + /** Checks whether the other party supports a given verification method. * This is useful when setting up the QR code UI, as it is somewhat asymmetrical: * if the other party supports SCAN_QR, we should show a QR code in the UI, and vice versa. * For methods that need to be supported by both ends, use the `methods` property. - * @param {string} method the method to check - * @param {boolean} force to check even if the phase is not ready or started yet, internal usage - * @return {bool} whether or not the other party said the supported the method */ - - + * @param method - the method to check + * @param force - to check even if the phase is not ready or started yet, internal usage + * @returns whether or not the other party said the supported the method */ otherPartySupportsMethod(method, force = false) { if (!force && !this.ready && !this.started) { return false; } - - const theirMethodEvent = this._eventsByThem.get(REQUEST_TYPE) || this._eventsByThem.get(READY_TYPE); - + const theirMethodEvent = this.eventsByThem.get(REQUEST_TYPE) || this.eventsByThem.get(READY_TYPE); if (!theirMethodEvent) { // if we started straight away with .start event, // we are assuming that the other side will support the // chosen method, so return true for that. if (this.started && this.initiatedByMe) { - const myStartEvent = this._eventsByUs.get(START_TYPE); - + const myStartEvent = this.eventsByUs.get(START_TYPE); const content = myStartEvent && myStartEvent.getContent(); const myStartMethod = content && content.method; return method == myStartMethod; } - return false; } - const content = theirMethodEvent.getContent(); - if (!content) { return false; } - const { methods } = content; - if (!Array.isArray(methods)) { return false; } - return methods.includes(method); } + /** Whether this request was initiated by the syncing user. * For InRoomChannel, this is who sent the .request event. * For ToDeviceChannel, this is who sent the .start event */ - - get initiatedByMe() { // event created by us but no remote echo has been received yet - const noEventsYet = this._eventsByUs.size + this._eventsByThem.size === 0; - + const noEventsYet = this.eventsByUs.size + this.eventsByThem.size === 0; if (this._phase === PHASE_UNSENT && noEventsYet) { return true; } - - const hasMyRequest = this._eventsByUs.has(REQUEST_TYPE); - - const hasTheirRequest = this._eventsByThem.has(REQUEST_TYPE); - + const hasMyRequest = this.eventsByUs.has(REQUEST_TYPE); + const hasTheirRequest = this.eventsByThem.has(REQUEST_TYPE); if (hasMyRequest && !hasTheirRequest) { return true; } - if (!hasMyRequest && hasTheirRequest) { return false; } - - const hasMyStart = this._eventsByUs.has(START_TYPE); - - const hasTheirStart = this._eventsByThem.has(START_TYPE); - + const hasMyStart = this.eventsByUs.has(START_TYPE); + const hasTheirStart = this.eventsByThem.has(START_TYPE); if (hasMyStart && !hasTheirStart) { return true; } - return false; } + /** The id of the user that initiated the request */ - - get requestingUserId() { if (this.initiatedByMe) { - return this._client.getUserId(); + return this.client.getUserId(); } else { return this.otherUserId; } } + /** The id of the user that (will) receive(d) the request */ - - get receivingUserId() { if (this.initiatedByMe) { return this.otherUserId; } else { - return this._client.getUserId(); + return this.client.getUserId(); } } + /** The user id of the other party in this request */ - - get otherUserId() { return this.channel.userId; } - get isSelfVerification() { - return this._client.getUserId() === this.otherUserId; + /** The device id of the other party in this request, for requests happening over to-device messages only. */ + get otherDeviceId() { + return this.channel.deviceId; } + get isSelfVerification() { + return this.client.getUserId() === this.otherUserId; + } + /** * The id of the user that cancelled the request, * only defined when phase is PHASE_CANCELLED */ - - get cancellingUserId() { - const myCancel = this._eventsByUs.get(CANCEL_TYPE); - - const theirCancel = this._eventsByThem.get(CANCEL_TYPE); - + const myCancel = this.eventsByUs.get(CANCEL_TYPE); + const theirCancel = this.eventsByThem.get(CANCEL_TYPE); if (myCancel && (!theirCancel || myCancel.getId() < theirCancel.getId())) { return myCancel.getSender(); } - if (theirCancel) { return theirCancel.getSender(); } - return undefined; } + /** * The cancellation code e.g m.user which is responsible for cancelling this verification */ - - get cancellationCode() { - const ev = this._getEventByEither(CANCEL_TYPE); - + const ev = this.getEventByEither(CANCEL_TYPE); return ev ? ev.getContent().code : null; } - get observeOnly() { return this._observeOnly; } + /** * Gets which device the verification should be started with * given the events sent so far in the verification. This is the * same algorithm used to determine which device to send the * verification to when no specific device is specified. - * @returns {{userId: *, deviceId: *}} The device information + * @returns The device information */ - - get targetDevice() { - const theirFirstEvent = this._eventsByThem.get(REQUEST_TYPE) || this._eventsByThem.get(READY_TYPE) || this._eventsByThem.get(START_TYPE); - - const theirFirstContent = theirFirstEvent.getContent(); - const fromDevice = theirFirstContent.from_device; + const theirFirstEvent = this.eventsByThem.get(REQUEST_TYPE) || this.eventsByThem.get(READY_TYPE) || this.eventsByThem.get(START_TYPE); + const theirFirstContent = theirFirstEvent === null || theirFirstEvent === void 0 ? void 0 : theirFirstEvent.getContent(); + const fromDevice = theirFirstContent === null || theirFirstContent === void 0 ? void 0 : theirFirstContent.from_device; return { userId: this.otherUserId, deviceId: fromDevice }; } + /* Start the key verification, creating a verifier and sending a .start event. * If no previous events have been sent, pass in `targetDevice` to set who to direct this request to. - * @param {string} method the name of the verification method to use. - * @param {string?} targetDevice.userId the id of the user to direct this request to - * @param {string?} targetDevice.deviceId the id of the device to direct this request to - * @returns {VerifierBase} the verifier of the given method + * @param method - the name of the verification method to use. + * @param targetDevice.userId the id of the user to direct this request to + * @param targetDevice.deviceId the id of the device to direct this request to + * @returns the verifier of the given method */ - - beginKeyVerification(method, targetDevice = null) { // need to allow also when unsent in case of to_device if (!this.observeOnly && !this._verifier) { - const validStartPhase = this.phase === PHASE_REQUESTED || this.phase === PHASE_READY || this.phase === PHASE_UNSENT && this.channel.constructor.canCreateRequest(START_TYPE); - + const validStartPhase = this.phase === PHASE_REQUESTED || this.phase === PHASE_READY || this.phase === PHASE_UNSENT && this.channel.canCreateRequest(START_TYPE); if (validStartPhase) { // when called on a request that was initiated with .request event // check the method is supported by both sides - if (this._commonMethods.length && !this._commonMethods.includes(method)) { + if (this.commonMethods.length && !this.commonMethods.includes(method)) { throw (0, _Error.newUnknownMethodError)(); } - - this._verifier = this._createVerifier(method, null, targetDevice); - + this._verifier = this.createVerifier(method, null, targetDevice); if (!this._verifier) { throw (0, _Error.newUnknownMethodError)(); } - this._chosenMethod = method; } } - return this._verifier; } + async startVerification(method) { + const verifier = this.beginKeyVerification(method); + // kick off the verification in the background, but *don't* wait for to complete: we need to return the `Verifier`. + verifier.verify(); + return verifier; + } + scanQRCode(qrCodeData) { + throw new Error("QR code scanning not supported by legacy crypto"); + } + /** * sends the initial .request event. - * @returns {Promise} resolves when the event has been sent. + * @returns resolves when the event has been sent. */ - - async sendRequest() { if (!this.observeOnly && this._phase === PHASE_UNSENT) { - const methods = [...this._verificationMethods.keys()]; + const methods = [...this.verificationMethods.keys()]; await this.channel.send(REQUEST_TYPE, { methods }); } } + /** * Cancels the request, sending a cancellation to the other party - * @param {string?} error.reason the error reason to send the cancellation with - * @param {string?} error.code the error code to send the cancellation with - * @returns {Promise} resolves when the event has been sent. + * @param params + * @param params.reason - the error reason to send the cancellation with + * @param params.code - the error code to send the cancellation with + * @returns resolves when the event has been sent. */ - - async cancel({ reason = "User declined", code = "m.user" } = {}) { if (!this.observeOnly && this._phase !== PHASE_CANCELLED) { this._declining = true; - this.emit("change"); - + this.emit(_verification.VerificationRequestEvent.Change); if (this._verifier) { return this._verifier.cancel((0, _Error.errorFactory)(code, reason)()); } else { - this._cancellingUserId = this._client.getUserId(); + this._cancellingUserId = this.client.getUserId(); await this.channel.send(CANCEL_TYPE, { code, reason @@ -49298,36 +158591,33 @@ class VerificationRequest extends _events.EventEmitter { } } } + /** * Accepts the request, sending a .ready event to the other party - * @returns {Promise} resolves when the event has been sent. + * @returns resolves when the event has been sent. */ - - async accept() { if (!this.observeOnly && this.phase === PHASE_REQUESTED && !this.initiatedByMe) { - const methods = [...this._verificationMethods.keys()]; + const methods = [...this.verificationMethods.keys()]; this._accepting = true; - this.emit("change"); + this.emit(_verification.VerificationRequestEvent.Change); await this.channel.send(READY_TYPE, { methods }); } } + /** * Can be used to listen for state changes until the callback returns true. - * @param {Function} fn callback to evaluate whether the request is in the desired state. + * @param fn - callback to evaluate whether the request is in the desired state. * Takes the request as an argument. - * @returns {Promise} that resolves once the callback returns true - * @throws {Error} when the request is cancelled + * @returns that resolves once the callback returns true + * @throws Error when the request is cancelled */ - - waitFor(fn) { return new Promise((resolve, reject) => { const check = () => { let handled = false; - if (fn(this)) { resolve(this); handled = true; @@ -49335,89 +158625,70 @@ class VerificationRequest extends _events.EventEmitter { reject(new Error("cancelled")); handled = true; } - if (handled) { - this.off("change", check); + this.off(_verification.VerificationRequestEvent.Change, check); } - return handled; }; - if (!check()) { - this.on("change", check); + this.on(_verification.VerificationRequestEvent.Change, check); } }); } - - _setPhase(phase, notify = true) { + setPhase(phase, notify = true) { this._phase = phase; - if (notify) { - this.emit("change"); + this.emit(_verification.VerificationRequestEvent.Change); } } - - _getEventByEither(type) { - return this._eventsByThem.get(type) || this._eventsByUs.get(type); + getEventByEither(type) { + return this.eventsByThem.get(type) || this.eventsByUs.get(type); } - - _getEventBy(type, byThem) { + getEventBy(type, byThem = false) { if (byThem) { - return this._eventsByThem.get(type); + return this.eventsByThem.get(type); } else { - return this._eventsByUs.get(type); + return this.eventsByUs.get(type); } } - - _calculatePhaseTransitions() { + calculatePhaseTransitions() { const transitions = [{ phase: PHASE_UNSENT }]; + const phase = () => transitions[transitions.length - 1].phase; - const phase = () => transitions[transitions.length - 1].phase; // always pass by .request first to be sure channel.userId has been set - - - const hasRequestByThem = this._eventsByThem.has(REQUEST_TYPE); - - const requestEvent = this._getEventBy(REQUEST_TYPE, hasRequestByThem); - + // always pass by .request first to be sure channel.userId has been set + const hasRequestByThem = this.eventsByThem.has(REQUEST_TYPE); + const requestEvent = this.getEventBy(REQUEST_TYPE, hasRequestByThem); if (requestEvent) { transitions.push({ phase: PHASE_REQUESTED, event: requestEvent }); } - - const readyEvent = requestEvent && this._getEventBy(READY_TYPE, !hasRequestByThem); - + const readyEvent = requestEvent && this.getEventBy(READY_TYPE, !hasRequestByThem); if (readyEvent && phase() === PHASE_REQUESTED) { transitions.push({ phase: PHASE_READY, event: readyEvent }); } - let startEvent; - if (readyEvent || !requestEvent) { - const theirStartEvent = this._eventsByThem.get(START_TYPE); - - const ourStartEvent = this._eventsByUs.get(START_TYPE); // any party can send .start after a .ready or unsent - - + const theirStartEvent = this.eventsByThem.get(START_TYPE); + const ourStartEvent = this.eventsByUs.get(START_TYPE); + // any party can send .start after a .ready or unsent if (theirStartEvent && ourStartEvent) { startEvent = theirStartEvent.getSender() < ourStartEvent.getSender() ? theirStartEvent : ourStartEvent; } else { startEvent = theirStartEvent ? theirStartEvent : ourStartEvent; } } else { - startEvent = this._getEventBy(START_TYPE, !hasRequestByThem); + startEvent = this.getEventBy(START_TYPE, !hasRequestByThem); } - if (startEvent) { - const fromRequestPhase = phase() === PHASE_REQUESTED && requestEvent.getSender() !== startEvent.getSender(); - const fromUnsentPhase = phase() === PHASE_UNSENT && this.channel.constructor.canCreateRequest(START_TYPE); - + const fromRequestPhase = phase() === PHASE_REQUESTED && (requestEvent === null || requestEvent === void 0 ? void 0 : requestEvent.getSender()) !== startEvent.getSender(); + const fromUnsentPhase = phase() === PHASE_UNSENT && this.channel.canCreateRequest(START_TYPE); if (fromRequestPhase || phase() === PHASE_READY || fromUnsentPhase) { transitions.push({ phase: PHASE_STARTED, @@ -49425,17 +158696,13 @@ class VerificationRequest extends _events.EventEmitter { }); } } - - const ourDoneEvent = this._eventsByUs.get(DONE_TYPE); - - if (this._verifierHasFinished || ourDoneEvent && phase() === PHASE_STARTED) { + const ourDoneEvent = this.eventsByUs.get(DONE_TYPE); + if (this.verifierHasFinished || ourDoneEvent && phase() === PHASE_STARTED) { transitions.push({ phase: PHASE_DONE }); } - - const cancelEvent = this._getEventByEither(CANCEL_TYPE); - + const cancelEvent = this.getEventByEither(CANCEL_TYPE); if ((this._cancelled || cancelEvent) && phase() !== PHASE_DONE) { transitions.push({ phase: PHASE_CANCELLED, @@ -49443,42 +158710,36 @@ class VerificationRequest extends _events.EventEmitter { }); return transitions; } - return transitions; } - - _transitionToPhase(transition) { + transitionToPhase(transition) { const { phase, event - } = transition; // get common methods - + } = transition; + // get common methods if (phase === PHASE_REQUESTED || phase === PHASE_READY) { - if (!this._wasSentByOwnDevice(event)) { + if (!this.wasSentByOwnDevice(event)) { const content = event.getContent(); - this._commonMethods = content.methods.filter(m => this._verificationMethods.has(m)); + this.commonMethods = content.methods.filter(m => this.verificationMethods.has(m)); } - } // detect if we're not a party in the request, and we should just observe - - + } + // detect if we're not a party in the request, and we should just observe if (!this.observeOnly) { // if requested or accepted by one of my other devices if (phase === PHASE_REQUESTED || phase === PHASE_STARTED || phase === PHASE_READY) { - if (this.channel.receiveStartFromOtherDevices && this._wasSentByOwnUser(event) && !this._wasSentByOwnDevice(event)) { + if (this.channel.receiveStartFromOtherDevices && this.wasSentByOwnUser(event) && !this.wasSentByOwnDevice(event)) { this._observeOnly = true; } } - } // create verifier - - + } + // create verifier if (phase === PHASE_STARTED) { const { method } = event.getContent(); - if (!this._verifier && !this.observeOnly) { - this._verifier = this._createVerifier(method, event); - + this._verifier = this.createVerifier(method, event); if (!this._verifier) { this.cancel({ code: "m.unknown_method", @@ -49490,29 +158751,23 @@ class VerificationRequest extends _events.EventEmitter { } } } - - _applyPhaseTransitions() { - const transitions = this._calculatePhaseTransitions(); - - const existingIdx = transitions.findIndex(t => t.phase === this.phase); // trim off phases we already went through, if any - - const newTransitions = transitions.slice(existingIdx + 1); // transition to all new phases - + applyPhaseTransitions() { + const transitions = this.calculatePhaseTransitions(); + const existingIdx = transitions.findIndex(t => t.phase === this.phase); + // trim off phases we already went through, if any + const newTransitions = transitions.slice(existingIdx + 1); + // transition to all new phases for (const transition of newTransitions) { - this._transitionToPhase(transition); + this.transitionToPhase(transition); } - return newTransitions; } - - _isWinningStartRace(newEvent) { + isWinningStartRace(newEvent) { if (newEvent.getType() !== START_TYPE) { return false; } - const oldEvent = this._verifier.startEvent; let oldRaceIdentifier; - if (this.isSelfVerification) { // if the verifier does not have a startEvent, // it is because it's still sending and we are on the initator side @@ -49522,104 +158777,89 @@ class VerificationRequest extends _events.EventEmitter { const oldContent = oldEvent.getContent(); oldRaceIdentifier = oldContent && oldContent.from_device; } else { - oldRaceIdentifier = this._client.getDeviceId(); + oldRaceIdentifier = this.client.getDeviceId(); } } else { if (oldEvent) { oldRaceIdentifier = oldEvent.getSender(); } else { - oldRaceIdentifier = this._client.getUserId(); + oldRaceIdentifier = this.client.getUserId(); } } - let newRaceIdentifier; - if (this.isSelfVerification) { const newContent = newEvent.getContent(); newRaceIdentifier = newContent && newContent.from_device; } else { newRaceIdentifier = newEvent.getSender(); } - return newRaceIdentifier < oldRaceIdentifier; } - hasEventId(eventId) { - for (const event of this._eventsByUs.values()) { + for (const event of this.eventsByUs.values()) { if (event.getId() === eventId) { return true; } } - - for (const event of this._eventsByThem.values()) { + for (const event of this.eventsByThem.values()) { if (event.getId() === eventId) { return true; } } - return false; } + /** * Changes the state of the request and verifier in response to a key verification event. - * @param {string} type the "symbolic" event type, as returned by the `getEventType` function on the channel. - * @param {MatrixEvent} event the event to handle. Don't call getType() on it but use the `type` parameter instead. - * @param {bool} isLiveEvent whether this is an even received through sync or not - * @param {bool} isRemoteEcho whether this is the remote echo of an event sent by the same device - * @param {bool} isSentByUs whether this event is sent by a party that can accept and/or observe the request like one of our peers. + * @param type - the "symbolic" event type, as returned by the `getEventType` function on the channel. + * @param event - the event to handle. Don't call getType() on it but use the `type` parameter instead. + * @param isLiveEvent - whether this is an even received through sync or not + * @param isRemoteEcho - whether this is the remote echo of an event sent by the same device + * @param isSentByUs - whether this event is sent by a party that can accept and/or observe the request like one of our peers. * For InRoomChannel this means any device for the syncing user. For ToDeviceChannel, just the syncing device. - * @returns {Promise} a promise that resolves when any requests as an anwser to the passed-in event are sent. + * @returns a promise that resolves when any requests as an answer to the passed-in event are sent. */ - - async handleEvent(type, event, isLiveEvent, isRemoteEcho, isSentByUs) { // if reached phase cancelled or done, ignore anything else that comes if (this.done || this.cancelled) { return; } - const wasObserveOnly = this._observeOnly; - - this._adjustObserveOnly(event, isLiveEvent); - + this.adjustObserveOnly(event, isLiveEvent); if (!this.observeOnly && !isRemoteEcho) { - if (await this._cancelOnError(type, event)) { + if (await this.cancelOnError(type, event)) { return; } - } // This assumes verification won't need to send an event with + } + + // This assumes verification won't need to send an event with // the same type for the same party twice. // This is true for QR and SAS verification, and was // added here to prevent verification getting cancelled // when the server duplicates an event (https://github.com/matrix-org/synapse/issues/3365) - - - const isDuplicateEvent = isSentByUs ? this._eventsByUs.has(type) : this._eventsByThem.has(type); - + const isDuplicateEvent = isSentByUs ? this.eventsByUs.has(type) : this.eventsByThem.has(type); if (isDuplicateEvent) { return; } - const oldPhase = this.phase; + this.addEvent(type, event, isSentByUs); - this._addEvent(type, event, isSentByUs); // this will create if needed the verifier so needs to happen before calling it - - - const newTransitions = this._applyPhaseTransitions(); - + // this will create if needed the verifier so needs to happen before calling it + const newTransitions = this.applyPhaseTransitions(); try { // only pass events from the other side to the verifier, // no remote echos of our own events if (this._verifier && !this.observeOnly) { - const newEventWinsRace = this._isWinningStartRace(event); - + const newEventWinsRace = this.isWinningStartRace(event); if (this._verifier.canSwitchStartEvent(event) && newEventWinsRace) { this._verifier.switchStartEvent(event); } else if (!isRemoteEcho) { - if (type === CANCEL_TYPE || this._verifier.events && this._verifier.events.includes(type)) { + var _this$_verifier$event; + if (type === CANCEL_TYPE || (_this$_verifier$event = this._verifier.events) !== null && _this$_verifier$event !== void 0 && _this$_verifier$event.includes(type)) { this._verifier.handleEvent(event); } } } - if (newTransitions.length) { // create QRCodeData if the other side can scan // important this happens before emitting a phase change, @@ -49629,261 +158869,170 @@ class VerificationRequest extends _events.EventEmitter { // we happen to have at some later point in time. if (isLiveEvent && newTransitions.some(t => t.phase === PHASE_READY)) { const shouldGenerateQrCode = this.otherPartySupportsMethod(_QRCode.SCAN_QR_CODE_METHOD, true); - if (shouldGenerateQrCode) { - this._qrCodeData = await _QRCode.QRCodeData.create(this, this._client); + this._qrCodeData = await _QRCode.QRCodeData.create(this, this.client); } } - const lastTransition = newTransitions[newTransitions.length - 1]; const { phase } = lastTransition; - - this._setupTimeout(phase); // set phase as last thing as this emits the "change" event - - - this._setPhase(phase); + this.setupTimeout(phase); + // set phase as last thing as this emits the "change" event + this.setPhase(phase); } else if (this._observeOnly !== wasObserveOnly) { - this.emit("change"); + this.emit(_verification.VerificationRequestEvent.Change); } } finally { // log events we processed so we can see from rageshakes what events were added to a request _logger.logger.log(`Verification request ${this.channel.transactionId}: ` + `${type} event with id:${event.getId()}, ` + `content:${JSON.stringify(event.getContent())} ` + `deviceId:${this.channel.deviceId}, ` + `sender:${event.getSender()}, isSentByUs:${isSentByUs}, ` + `isLiveEvent:${isLiveEvent}, isRemoteEcho:${isRemoteEcho}, ` + `phase:${oldPhase}=>${this.phase}, ` + `observeOnly:${wasObserveOnly}=>${this._observeOnly}`); } } - - _setupTimeout(phase) { - const shouldTimeout = !this._timeoutTimer && !this.observeOnly && phase === PHASE_REQUESTED; - + setupTimeout(phase) { + const shouldTimeout = !this.timeoutTimer && !this.observeOnly && phase === PHASE_REQUESTED; if (shouldTimeout) { - this._timeoutTimer = setTimeout(this._cancelOnTimeout, this.timeout); + this.timeoutTimer = setTimeout(this.cancelOnTimeout, this.timeout); } - - if (this._timeoutTimer) { + if (this.timeoutTimer) { const shouldClear = phase === PHASE_STARTED || phase === PHASE_READY || phase === PHASE_DONE || phase === PHASE_CANCELLED; - if (shouldClear) { - clearTimeout(this._timeoutTimer); - this._timeoutTimer = null; + clearTimeout(this.timeoutTimer); + this.timeoutTimer = null; } } } - - async _cancelOnError(type, event) { + async cancelOnError(type, event) { if (type === START_TYPE) { const method = event.getContent().method; - - if (!this._verificationMethods.has(method)) { + if (!this.verificationMethods.has(method)) { await this.cancel((0, _Error.errorFromEvent)((0, _Error.newUnknownMethodError)())); return true; } } - const isUnexpectedRequest = type === REQUEST_TYPE && this.phase !== PHASE_UNSENT; - const isUnexpectedReady = type === READY_TYPE && this.phase !== PHASE_REQUESTED; // only if phase has passed from PHASE_UNSENT should we cancel, because events + const isUnexpectedReady = type === READY_TYPE && this.phase !== PHASE_REQUESTED && this.phase !== PHASE_STARTED; + // only if phase has passed from PHASE_UNSENT should we cancel, because events // are allowed to come in in any order (at least with InRoomChannel). So we only know - // we're dealing with a valid request we should participate in once we've moved to PHASE_REQUESTED - // before that, we could be looking at somebody elses verification request and we just + // we're dealing with a valid request we should participate in once we've moved to PHASE_REQUESTED. + // Before that, we could be looking at somebody else's verification request and we just // happen to be in the room - if (this.phase !== PHASE_UNSENT && (isUnexpectedRequest || isUnexpectedReady)) { _logger.logger.warn(`Cancelling, unexpected ${type} verification ` + `event from ${event.getSender()}`); - const reason = `Unexpected ${type} event in phase ${this.phase}`; await this.cancel((0, _Error.errorFromEvent)((0, _Error.newUnexpectedMessageError)({ reason }))); return true; } - return false; } - - _adjustObserveOnly(event, isLiveEvent) { + adjustObserveOnly(event, isLiveEvent = false) { // don't send out events for historical requests if (!isLiveEvent) { this._observeOnly = true; } - if (this.calculateEventTimeout(event) < VERIFICATION_REQUEST_MARGIN) { this._observeOnly = true; } } - - _addEvent(type, event, isSentByUs) { + addEvent(type, event, isSentByUs = false) { if (isSentByUs) { - this._eventsByUs.set(type, event); + this.eventsByUs.set(type, event); } else { - this._eventsByThem.set(type, event); - } // once we know the userId of the other party (from the .request event) - // see if any event by anyone else crept into this._eventsByThem - + this.eventsByThem.set(type, event); + } + // once we know the userId of the other party (from the .request event) + // see if any event by anyone else crept into this.eventsByThem if (type === REQUEST_TYPE) { - for (const [type, event] of this._eventsByThem.entries()) { + for (const [type, event] of this.eventsByThem.entries()) { if (event.getSender() !== this.otherUserId) { - this._eventsByThem.delete(type); + this.eventsByThem.delete(type); } - } // also remember when we received the request event - - - this._requestReceivedAt = Date.now(); + } + // also remember when we received the request event + this.requestReceivedAt = Date.now(); } } - - _createVerifier(method, startEvent = null, targetDevice = null) { + createVerifier(method, startEvent = null, targetDevice = null) { if (!targetDevice) { targetDevice = this.targetDevice; } - const { userId, deviceId } = targetDevice; - - const VerifierCtor = this._verificationMethods.get(method); - + const VerifierCtor = this.verificationMethods.get(method); if (!VerifierCtor) { _logger.logger.warn("could not find verifier constructor for method", method); - return; } - - return new VerifierCtor(this.channel, this._client, userId, deviceId, startEvent, this); + return new VerifierCtor(this.channel, this.client, userId, deviceId, startEvent, this); + } + wasSentByOwnUser(event) { + return (event === null || event === void 0 ? void 0 : event.getSender()) === this.client.getUserId(); } - _wasSentByOwnUser(event) { - return event.getSender() === this._client.getUserId(); - } // only for .request, .ready or .start - - - _wasSentByOwnDevice(event) { - if (!this._wasSentByOwnUser(event)) { + // only for .request, .ready or .start + wasSentByOwnDevice(event) { + if (!this.wasSentByOwnUser(event)) { return false; } - const content = event.getContent(); - - if (!content || content.from_device !== this._client.getDeviceId()) { + if (!content || content.from_device !== this.client.getDeviceId()) { return false; } - return true; } - onVerifierCancelled() { - this._cancelled = true; // move to cancelled phase - - const newTransitions = this._applyPhaseTransitions(); - + this._cancelled = true; + // move to cancelled phase + const newTransitions = this.applyPhaseTransitions(); if (newTransitions.length) { - this._setPhase(newTransitions[newTransitions.length - 1].phase); + this.setPhase(newTransitions[newTransitions.length - 1].phase); } } - onVerifierFinished() { - this.channel.send("m.key.verification.done", {}); - this._verifierHasFinished = true; // move to .done phase - - const newTransitions = this._applyPhaseTransitions(); - + this.channel.send(_event.EventType.KeyVerificationDone, {}); + this.verifierHasFinished = true; + // move to .done phase + const newTransitions = this.applyPhaseTransitions(); if (newTransitions.length) { - this._setPhase(newTransitions[newTransitions.length - 1].phase); + this.setPhase(newTransitions[newTransitions.length - 1].phase); } } - getEventFromOtherParty(type) { - return this._eventsByThem.get(type); + return this.eventsByThem.get(type); } - } - exports.VerificationRequest = VerificationRequest; +//# sourceMappingURL=VerificationRequest.js.map /***/ }), -/***/ 1905: -/***/ ((__unused_webpack_module, exports) => { +/***/ 7742: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.InvalidStoreError = InvalidStoreError; -exports.InvalidCryptoStoreError = InvalidCryptoStoreError; -exports.KeySignatureUploadError = void 0; - -// can't just do InvalidStoreError extends Error -// because of http://babeljs.io/docs/usage/caveats/#classes -function InvalidStoreError(reason, value) { - const message = `Store is invalid because ${reason}, ` + `please stop the client, delete all data and start the client again`; - const instance = Reflect.construct(Error, [message]); - Reflect.setPrototypeOf(instance, Reflect.getPrototypeOf(this)); - instance.reason = reason; - instance.value = value; - return instance; -} - -InvalidStoreError.TOGGLED_LAZY_LOADING = "TOGGLED_LAZY_LOADING"; -InvalidStoreError.prototype = Object.create(Error.prototype, { - constructor: { - value: Error, - enumerable: false, - writable: true, - configurable: true - } -}); -Reflect.setPrototypeOf(InvalidStoreError, Error); - -function InvalidCryptoStoreError(reason) { - const message = `Crypto store is invalid because ${reason}, ` + `please stop the client, delete all data and start the client again`; - const instance = Reflect.construct(Error, [message]); - Reflect.setPrototypeOf(instance, Reflect.getPrototypeOf(this)); - instance.reason = reason; - instance.name = 'InvalidCryptoStoreError'; - return instance; -} - -InvalidCryptoStoreError.TOO_NEW = "TOO_NEW"; -InvalidCryptoStoreError.prototype = Object.create(Error.prototype, { - constructor: { - value: Error, - enumerable: false, - writable: true, - configurable: true - } -}); -Reflect.setPrototypeOf(InvalidCryptoStoreError, Error); - -class KeySignatureUploadError extends Error { - constructor(message, value) { - super(message); - this.value = value; - } - -} - -exports.KeySignatureUploadError = KeySignatureUploadError; - -/***/ }), - -/***/ 2098: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.FilterComponent = FilterComponent; - +exports.RoomWidgetClient = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _matrixWidgetApi = __nccwpck_require__(8242); +var _event = __nccwpck_require__(9564); +var _event2 = __nccwpck_require__(7487); +var _logger = __nccwpck_require__(3854); +var _client = __nccwpck_require__(9058); +var _sync = __nccwpck_require__(9779); +var _slidingSyncSdk = __nccwpck_require__(9113); +var _user = __nccwpck_require__(1104); +var _utils = __nccwpck_require__(2557); /* -Copyright 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2022 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -49899,24 +159048,611 @@ limitations under the License. */ /** - * @module filter-component + * A MatrixClient that routes its requests through the widget API instead of the + * real CS API. + * @experimental This class is considered unstable! */ +class RoomWidgetClient extends _client.MatrixClient { + /** + * + * @param widgetApi - The widget api to use for communication. + * @param capabilities - The capabilities the widget client will request. + * @param roomId - The room id the widget is associated with. + * @param opts - The configuration options for this client. + * @param sendContentLoaded - Whether to send a content loaded widget action immediately after initial setup. + * Set to `false` if the widget uses `waitForIFrameLoad=true` (in this case the client does not expect a content loaded action at all), + * or if the the widget wants to send the `ContentLoaded` action at a later point in time after the initial setup. + */ + constructor(widgetApi, capabilities, _roomId, opts, sendContentLoaded) { + var _capabilities$sendEve, _capabilities$receive, _capabilities$sendSta, _capabilities$receive2, _capabilities$sendEve2, _capabilities$receive3, _capabilities$sendSta2, _capabilities$receive4, _capabilities$sendToD, _capabilities$receive5; + super(opts); + (0, _defineProperty2.default)(this, "syncState", null); + (0, _defineProperty2.default)(this, "onEvent", async ev => { + ev.preventDefault(); + + // Verify the room ID matches, since it's possible for the client to + // send us events from other rooms if this widget is always on screen + if (ev.detail.data.room_id === this.roomId) { + const event = new _event.MatrixEvent(ev.detail.data); + await this.syncApi.injectRoomEvents(this.room, [], [event]); + this.emit(_client.ClientEvent.Event, event); + this.setSyncState(_sync.SyncState.Syncing); + _logger.logger.info(`Received event ${event.getId()} ${event.getType()} ${event.getStateKey()}`); + } else { + const { + event_id: eventId, + room_id: roomId + } = ev.detail.data; + _logger.logger.info(`Received event ${eventId} for a different room ${roomId}; discarding`); + } + await this.ack(ev); + }); + (0, _defineProperty2.default)(this, "onToDevice", async ev => { + ev.preventDefault(); + const event = new _event.MatrixEvent({ + type: ev.detail.data.type, + sender: ev.detail.data.sender, + content: ev.detail.data.content + }); + // Mark the event as encrypted if it was, using fake contents and keys since those are unknown to us + if (ev.detail.data.encrypted) event.makeEncrypted(_event2.EventType.RoomMessageEncrypted, {}, "", ""); + this.emit(_client.ClientEvent.ToDeviceEvent, event); + this.setSyncState(_sync.SyncState.Syncing); + await this.ack(ev); + }); + this.widgetApi = widgetApi; + this.capabilities = capabilities; + this.roomId = _roomId; + this.widgetApiReady = new Promise(resolve => this.widgetApi.once("ready", resolve)); + + // Request capabilities for the functionality this client needs to support + if ((_capabilities$sendEve = capabilities.sendEvent) !== null && _capabilities$sendEve !== void 0 && _capabilities$sendEve.length || (_capabilities$receive = capabilities.receiveEvent) !== null && _capabilities$receive !== void 0 && _capabilities$receive.length || capabilities.sendMessage === true || Array.isArray(capabilities.sendMessage) && capabilities.sendMessage.length || capabilities.receiveMessage === true || Array.isArray(capabilities.receiveMessage) && capabilities.receiveMessage.length || (_capabilities$sendSta = capabilities.sendState) !== null && _capabilities$sendSta !== void 0 && _capabilities$sendSta.length || (_capabilities$receive2 = capabilities.receiveState) !== null && _capabilities$receive2 !== void 0 && _capabilities$receive2.length) { + widgetApi.requestCapabilityForRoomTimeline(_roomId); + } + (_capabilities$sendEve2 = capabilities.sendEvent) === null || _capabilities$sendEve2 === void 0 || _capabilities$sendEve2.forEach(eventType => widgetApi.requestCapabilityToSendEvent(eventType)); + (_capabilities$receive3 = capabilities.receiveEvent) === null || _capabilities$receive3 === void 0 || _capabilities$receive3.forEach(eventType => widgetApi.requestCapabilityToReceiveEvent(eventType)); + if (capabilities.sendMessage === true) { + widgetApi.requestCapabilityToSendMessage(); + } else if (Array.isArray(capabilities.sendMessage)) { + capabilities.sendMessage.forEach(msgType => widgetApi.requestCapabilityToSendMessage(msgType)); + } + if (capabilities.receiveMessage === true) { + widgetApi.requestCapabilityToReceiveMessage(); + } else if (Array.isArray(capabilities.receiveMessage)) { + capabilities.receiveMessage.forEach(msgType => widgetApi.requestCapabilityToReceiveMessage(msgType)); + } + (_capabilities$sendSta2 = capabilities.sendState) === null || _capabilities$sendSta2 === void 0 || _capabilities$sendSta2.forEach(({ + eventType, + stateKey + }) => widgetApi.requestCapabilityToSendState(eventType, stateKey)); + (_capabilities$receive4 = capabilities.receiveState) === null || _capabilities$receive4 === void 0 || _capabilities$receive4.forEach(({ + eventType, + stateKey + }) => widgetApi.requestCapabilityToReceiveState(eventType, stateKey)); + (_capabilities$sendToD = capabilities.sendToDevice) === null || _capabilities$sendToD === void 0 || _capabilities$sendToD.forEach(eventType => widgetApi.requestCapabilityToSendToDevice(eventType)); + (_capabilities$receive5 = capabilities.receiveToDevice) === null || _capabilities$receive5 === void 0 || _capabilities$receive5.forEach(eventType => widgetApi.requestCapabilityToReceiveToDevice(eventType)); + if (capabilities.turnServers) { + widgetApi.requestCapability(_matrixWidgetApi.MatrixCapabilities.MSC3846TurnServers); + } + widgetApi.on(`action:${_matrixWidgetApi.WidgetApiToWidgetAction.SendEvent}`, this.onEvent); + widgetApi.on(`action:${_matrixWidgetApi.WidgetApiToWidgetAction.SendToDevice}`, this.onToDevice); + + // Open communication with the host + widgetApi.start(); + // Send a content loaded event now we've started the widget API + // Note that element-web currently does not use waitForIFrameLoad=false and so + // does *not* (yes, that is the right way around) wait for this event. Let's + // start sending this, then once this has rolled out, we can change element-web to + // use waitForIFrameLoad=false and have a widget API that's less racy. + if (sendContentLoaded) widgetApi.sendContentLoaded(); + } + async startClient(opts = {}) { + var _this$capabilities$re, _this$capabilities$re2; + this.lifecycle = new AbortController(); + + // Create our own user object artificially (instead of waiting for sync) + // so it's always available, even if the user is not in any rooms etc. + const userId = this.getUserId(); + if (userId) { + this.store.storeUser(new _user.User(userId)); + } + + // Even though we have no access token and cannot sync, the sync class + // still has some valuable helper methods that we make use of, so we + // instantiate it anyways + if (opts.slidingSync) { + this.syncApi = new _slidingSyncSdk.SlidingSyncSdk(opts.slidingSync, this, opts, this.buildSyncApiOptions()); + } else { + this.syncApi = new _sync.SyncApi(this, opts, this.buildSyncApiOptions()); + } + this.room = this.syncApi.createRoom(this.roomId); + this.store.storeRoom(this.room); + await this.widgetApiReady; + + // Backfill the requested events + // We only get the most recent event for every type + state key combo, + // so it doesn't really matter what order we inject them in + await Promise.all((_this$capabilities$re = (_this$capabilities$re2 = this.capabilities.receiveState) === null || _this$capabilities$re2 === void 0 ? void 0 : _this$capabilities$re2.map(async ({ + eventType, + stateKey + }) => { + const rawEvents = await this.widgetApi.readStateEvents(eventType, undefined, stateKey, [this.roomId]); + const events = rawEvents.map(rawEvent => new _event.MatrixEvent(rawEvent)); + await this.syncApi.injectRoomEvents(this.room, [], events); + events.forEach(event => { + this.emit(_client.ClientEvent.Event, event); + _logger.logger.info(`Backfilled event ${event.getId()} ${event.getType()} ${event.getStateKey()}`); + }); + })) !== null && _this$capabilities$re !== void 0 ? _this$capabilities$re : []); + this.setSyncState(_sync.SyncState.Syncing); + _logger.logger.info("Finished backfilling events"); + this.matrixRTC.start(); + + // Watch for TURN servers, if requested + if (this.capabilities.turnServers) this.watchTurnServers(); + } + stopClient() { + this.widgetApi.off(`action:${_matrixWidgetApi.WidgetApiToWidgetAction.SendEvent}`, this.onEvent); + this.widgetApi.off(`action:${_matrixWidgetApi.WidgetApiToWidgetAction.SendToDevice}`, this.onToDevice); + super.stopClient(); + this.lifecycle.abort(); // Signal to other async tasks that the client has stopped + } + async joinRoom(roomIdOrAlias) { + if (roomIdOrAlias === this.roomId) return this.room; + throw new Error(`Unknown room: ${roomIdOrAlias}`); + } + async encryptAndSendEvent(room, event) { + let response; + try { + response = await this.widgetApi.sendRoomEvent(event.getType(), event.getContent(), room.roomId); + } catch (e) { + this.updatePendingEventStatus(room, event, _event.EventStatus.NOT_SENT); + throw e; + } + room.updatePendingEvent(event, _event.EventStatus.SENT, response.event_id); + return { + event_id: response.event_id + }; + } + async sendStateEvent(roomId, eventType, content, stateKey = "") { + return await this.widgetApi.sendStateEvent(eventType, stateKey, content, roomId); + } + async sendToDevice(eventType, contentMap) { + await this.widgetApi.sendToDevice(eventType, false, (0, _utils.recursiveMapToObject)(contentMap)); + return {}; + } + async getOpenIdToken() { + const token = await this.widgetApi.requestOpenIDConnectToken(); + // the IOpenIDCredentials from the widget-api and IOpenIDToken form the matrix-js-sdk are compatible. + // we still recreate the token to make this transparent and catch'able by the linter in case the types change in the future. + return { + access_token: token.access_token, + expires_in: token.expires_in, + matrix_server_name: token.matrix_server_name, + token_type: token.token_type + }; + } + async queueToDevice({ + eventType, + batch + }) { + // map: user Id → device Id → payload + const contentMap = new _utils.MapWithDefault(() => new Map()); + for (const { + userId, + deviceId, + payload + } of batch) { + contentMap.getOrCreate(userId).set(deviceId, payload); + } + await this.widgetApi.sendToDevice(eventType, false, (0, _utils.recursiveMapToObject)(contentMap)); + } + async encryptAndSendToDevices(userDeviceInfoArr, payload) { + // map: user Id → device Id → payload + const contentMap = new _utils.MapWithDefault(() => new Map()); + for (const { + userId, + deviceInfo: { + deviceId + } + } of userDeviceInfoArr) { + contentMap.getOrCreate(userId).set(deviceId, payload); + } + await this.widgetApi.sendToDevice(payload.type, true, (0, _utils.recursiveMapToObject)(contentMap)); + } + + // Overridden since we get TURN servers automatically over the widget API, + // and this method would otherwise complain about missing an access token + async checkTurnServers() { + return this.turnServers.length > 0; + } + + // Overridden since we 'sync' manually without the sync API + getSyncState() { + return this.syncState; + } + setSyncState(state) { + const oldState = this.syncState; + this.syncState = state; + this.emit(_client.ClientEvent.Sync, state, oldState); + } + async ack(ev) { + await this.widgetApi.transport.reply(ev.detail, {}); + } + async watchTurnServers() { + const servers = this.widgetApi.getTurnServers(); + const onClientStopped = () => { + servers.return(undefined); + }; + this.lifecycle.signal.addEventListener("abort", onClientStopped); + try { + for await (const server of servers) { + this.turnServers = [{ + urls: server.uris, + username: server.username, + credential: server.password + }]; + this.emit(_client.ClientEvent.TurnServers, this.turnServers); + _logger.logger.log(`Received TURN server: ${server.uris}`); + } + } catch (e) { + _logger.logger.warn("Error watching TURN servers", e); + } finally { + this.lifecycle.signal.removeEventListener("abort", onClientStopped); + } + } +} +exports.RoomWidgetClient = RoomWidgetClient; +//# sourceMappingURL=embedded.js.map + +/***/ }), + +/***/ 1905: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.KeySignatureUploadError = exports.InvalidCryptoStoreState = exports.InvalidCryptoStoreError = exports.ClientStoppedError = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let InvalidCryptoStoreState = exports.InvalidCryptoStoreState = /*#__PURE__*/function (InvalidCryptoStoreState) { + InvalidCryptoStoreState["TooNew"] = "TOO_NEW"; + return InvalidCryptoStoreState; +}({}); +class InvalidCryptoStoreError extends Error { + constructor(reason) { + const message = `Crypto store is invalid because ${reason}, ` + `please stop the client, delete all data and start the client again`; + super(message); + this.reason = reason; + this.name = "InvalidCryptoStoreError"; + } +} +exports.InvalidCryptoStoreError = InvalidCryptoStoreError; +(0, _defineProperty2.default)(InvalidCryptoStoreError, "TOO_NEW", InvalidCryptoStoreState.TooNew); +class KeySignatureUploadError extends Error { + constructor(message, value) { + super(message); + this.value = value; + } +} + +/** + * It is invalid to call most methods once {@link MatrixClient#stopClient} has been called. + * + * This error will be thrown if you attempt to do so. + * + * {@link MatrixClient#stopClient} itself is an exception to this: it may safely be called multiple times on the same + * instance. + */ +exports.KeySignatureUploadError = KeySignatureUploadError; +class ClientStoppedError extends Error { + constructor() { + super("MatrixClient has been stopped"); + } +} +exports.ClientStoppedError = ClientStoppedError; +//# sourceMappingURL=errors.js.map + +/***/ }), + +/***/ 7138: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.eventMapperFor = eventMapperFor; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _event = __nccwpck_require__(9564); +var _event2 = __nccwpck_require__(7487); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +function eventMapperFor(client, options) { + let preventReEmit = Boolean(options.preventReEmit); + const decrypt = options.decrypt !== false; + function mapper(plainOldJsObject) { + if (options.toDevice) { + delete plainOldJsObject.room_id; + } + const room = client.getRoom(plainOldJsObject.room_id); + let event; + // If the event is already known to the room, let's re-use the model rather than duplicating. + // We avoid doing this to state events as they may be forward or backwards looking which tweaks behaviour. + if (room && plainOldJsObject.state_key === undefined) { + event = room.findEventById(plainOldJsObject.event_id); + } + if (!event || event.status) { + event = new _event.MatrixEvent(plainOldJsObject); + } else { + // merge the latest unsigned data from the server + event.setUnsigned(_objectSpread(_objectSpread({}, event.getUnsigned()), plainOldJsObject.unsigned)); + // prevent doubling up re-emitters + preventReEmit = true; + } + + // if there is a complete edit bundled alongside the event, perform the replacement. + // (prior to MSC3925, events were automatically replaced on the server-side. MSC3925 proposes that that doesn't + // happen automatically but the server does provide us with the whole content of the edit event.) + const bundledEdit = event.getServerAggregatedRelation(_event2.RelationType.Replace); + if (bundledEdit !== null && bundledEdit !== void 0 && bundledEdit.content) { + const replacement = mapper(bundledEdit); + // XXX: it's worth noting that the spec says we should only respect encrypted edits if, once decrypted, the + // replacement has a `m.new_content` property. The problem is that we haven't yet decrypted the replacement + // (it should be happening in the background), so we can't enforce this. Possibly we should for decryption + // to complete, but that sounds a bit racy. For now, we just assume it's ok. + event.makeReplaced(replacement); + } + const thread = room === null || room === void 0 ? void 0 : room.findThreadForEvent(event); + if (thread) { + event.setThread(thread); + } + + // TODO: once we get rid of the old libolm-backed crypto, we can restrict this to room events (rather than + // to-device events), because the rust implementation decrypts to-device messages at a higher level. + // Generally we probably want to use a different eventMapper implementation for to-device events because + if (event.isEncrypted()) { + if (!preventReEmit) { + client.reEmitter.reEmit(event, [_event.MatrixEventEvent.Decrypted]); + } + if (decrypt) { + client.decryptEventIfNeeded(event); + } + } + if (!preventReEmit) { + client.reEmitter.reEmit(event, [_event.MatrixEventEvent.Replaced, _event.MatrixEventEvent.VisibilityChange]); + room === null || room === void 0 || room.reEmitter.reEmit(event, [_event.MatrixEventEvent.BeforeRedaction]); + } + return event; + } + return mapper; +} +//# sourceMappingURL=event-mapper.js.map + +/***/ }), + +/***/ 8305: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isOptionalAString = isOptionalAString; +exports.isProvided = isProvided; +/* +Copyright 2021 - 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Determines if the given optional was provided a value. + * @param s - The optional to test. + * @returns True if the value is defined. + */ +function isProvided(s) { + return s !== null && s !== undefined; +} + +/** + * Determines if the given optional string is a defined string. + * @param s - The input string. + * @returns True if the input is a defined string. + */ +function isOptionalAString(s) { + return isProvided(s) && typeof s === "string"; +} +//# sourceMappingURL=utilities.js.map + +/***/ }), + +/***/ 1685: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ServerSupport = exports.Feature = void 0; +exports.buildFeatureSupportMap = buildFeatureSupportMap; +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let ServerSupport = exports.ServerSupport = /*#__PURE__*/function (ServerSupport) { + ServerSupport[ServerSupport["Stable"] = 0] = "Stable"; + ServerSupport[ServerSupport["Unstable"] = 1] = "Unstable"; + ServerSupport[ServerSupport["Unsupported"] = 2] = "Unsupported"; + return ServerSupport; +}({}); +let Feature = exports.Feature = /*#__PURE__*/function (Feature) { + Feature["Thread"] = "Thread"; + Feature["ThreadUnreadNotifications"] = "ThreadUnreadNotifications"; + Feature["LoginTokenRequest"] = "LoginTokenRequest"; + Feature["RelationBasedRedactions"] = "RelationBasedRedactions"; + Feature["AccountDataDeletion"] = "AccountDataDeletion"; + Feature["RelationsRecursion"] = "RelationsRecursion"; + Feature["IntentionalMentions"] = "IntentionalMentions"; + return Feature; +}({}); +const featureSupportResolver = { + [Feature.Thread]: { + unstablePrefixes: ["org.matrix.msc3440"], + matrixVersion: "v1.3" + }, + [Feature.ThreadUnreadNotifications]: { + unstablePrefixes: ["org.matrix.msc3771", "org.matrix.msc3773"], + matrixVersion: "v1.4" + }, + [Feature.LoginTokenRequest]: { + unstablePrefixes: ["org.matrix.msc3882"] + }, + [Feature.RelationBasedRedactions]: { + unstablePrefixes: ["org.matrix.msc3912"] + }, + [Feature.AccountDataDeletion]: { + unstablePrefixes: ["org.matrix.msc3391"] + }, + [Feature.RelationsRecursion]: { + unstablePrefixes: ["org.matrix.msc3981"] + }, + [Feature.IntentionalMentions]: { + unstablePrefixes: ["org.matrix.msc3952_intentional_mentions"], + matrixVersion: "v1.7" + } +}; +async function buildFeatureSupportMap(versions) { + const supportMap = new Map(); + for (const [feature, supportCondition] of Object.entries(featureSupportResolver)) { + var _versions$versions$in, _versions$versions, _supportCondition$uns, _supportCondition$uns2; + const supportMatrixVersion = (_versions$versions$in = (_versions$versions = versions.versions) === null || _versions$versions === void 0 ? void 0 : _versions$versions.includes(supportCondition.matrixVersion || "")) !== null && _versions$versions$in !== void 0 ? _versions$versions$in : false; + const supportUnstablePrefixes = (_supportCondition$uns = (_supportCondition$uns2 = supportCondition.unstablePrefixes) === null || _supportCondition$uns2 === void 0 ? void 0 : _supportCondition$uns2.every(unstablePrefix => { + var _versions$unstable_fe; + return ((_versions$unstable_fe = versions.unstable_features) === null || _versions$unstable_fe === void 0 ? void 0 : _versions$unstable_fe[unstablePrefix]) === true; + })) !== null && _supportCondition$uns !== void 0 ? _supportCondition$uns : false; + if (supportMatrixVersion) { + supportMap.set(feature, ServerSupport.Stable); + } else if (supportUnstablePrefixes) { + supportMap.set(feature, ServerSupport.Unstable); + } else { + supportMap.set(feature, ServerSupport.Unsupported); + } + } + return supportMap; +} +//# sourceMappingURL=feature.js.map + +/***/ }), + +/***/ 2098: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FilterComponent = void 0; +var _thread = __nccwpck_require__(3379); +/* +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ /** * Checks if a value matches a given field value, which may be a * terminated * wildcard pattern. - * @param {String} actual_value The value to be compared - * @param {String} filter_value The filter pattern to be compared - * @return {bool} true if the actual_value matches the filter_value + * @param actualValue - The value to be compared + * @param filterValue - The filter pattern to be compared + * @returns true if the actualValue matches the filterValue */ -function _matches_wildcard(actual_value, filter_value) { - if (filter_value.endsWith("*")) { - const type_prefix = filter_value.slice(0, -1); - return actual_value.substr(0, type_prefix.length) === type_prefix; +function matchesWildcard(actualValue, filterValue) { + if (filterValue.endsWith("*")) { + const typePrefix = filterValue.slice(0, -1); + return actualValue.slice(0, typePrefix.length) === typePrefix; } else { - return actual_value === filter_value; + return actualValue === filterValue; } } + +/* eslint-disable camelcase */ + +/* eslint-enable camelcase */ + /** * FilterComponent is a section of a Filter definition which defines the * types, rooms, senders filters etc to be applied to a particular type of resource. @@ -49924,112 +159660,352 @@ function _matches_wildcard(actual_value, filter_value) { * * N.B. that synapse refers to these as 'Filters', and what js-sdk refers to as * 'Filters' are referred to as 'FilterCollections'. - * - * @constructor - * @param {Object} filter_json the definition of this filter JSON, e.g. { 'contains_url': true } */ +class FilterComponent { + constructor(filterJson, userId) { + this.filterJson = filterJson; + this.userId = userId; + } - -function FilterComponent(filter_json) { - this.filter_json = filter_json; - this.types = filter_json.types || null; - this.not_types = filter_json.not_types || []; - this.rooms = filter_json.rooms || null; - this.not_rooms = filter_json.not_rooms || []; - this.senders = filter_json.senders || null; - this.not_senders = filter_json.not_senders || []; - this.contains_url = filter_json.contains_url || null; -} -/** - * Checks with the filter component matches the given event - * @param {MatrixEvent} event event to be checked against the filter - * @return {bool} true if the event matches the filter - */ - - -FilterComponent.prototype.check = function (event) { - return this._checkFields(event.getRoomId(), event.getSender(), event.getType(), event.getContent() ? event.getContent().url !== undefined : false); -}; -/** - * Checks whether the filter component matches the given event fields. - * @param {String} room_id the room_id for the event being checked - * @param {String} sender the sender of the event being checked - * @param {String} event_type the type of the event being checked - * @param {String} contains_url whether the event contains a content.url field - * @return {bool} true if the event fields match the filter - */ - - -FilterComponent.prototype._checkFields = function (room_id, sender, event_type, contains_url) { - const literal_keys = { - "rooms": function (v) { - return room_id === v; - }, - "senders": function (v) { - return sender === v; - }, - "types": function (v) { - return _matches_wildcard(event_type, v); + /** + * Checks with the filter component matches the given event + * @param event - event to be checked against the filter + * @returns true if the event matches the filter + */ + check(event) { + var _event$getUnsigned, _bundledRelationships; + const bundledRelationships = ((_event$getUnsigned = event.getUnsigned()) === null || _event$getUnsigned === void 0 ? void 0 : _event$getUnsigned["m.relations"]) || {}; + const relations = Object.keys(bundledRelationships); + // Relation senders allows in theory a look-up of any senders + // however clients can only know about the current user participation status + // as sending a whole list of participants could be proven problematic in terms + // of performance + // This should be improved when bundled relationships solve that problem + const relationSenders = []; + if (this.userId && bundledRelationships !== null && bundledRelationships !== void 0 && (_bundledRelationships = bundledRelationships[_thread.THREAD_RELATION_TYPE.name]) !== null && _bundledRelationships !== void 0 && _bundledRelationships.current_user_participated) { + relationSenders.push(this.userId); } - }; - const self = this; + return this.checkFields(event.getRoomId(), event.getSender(), event.getType(), event.getContent() ? event.getContent().url !== undefined : false, relations, relationSenders); + } - for (let n = 0; n < Object.keys(literal_keys).length; n++) { - const name = Object.keys(literal_keys)[n]; - const match_func = literal_keys[name]; - const not_name = "not_" + name; - const disallowed_values = self[not_name]; + /** + * Converts the filter component into the form expected over the wire + */ + toJSON() { + return { + types: this.filterJson.types || null, + not_types: this.filterJson.not_types || [], + rooms: this.filterJson.rooms || null, + not_rooms: this.filterJson.not_rooms || [], + senders: this.filterJson.senders || null, + not_senders: this.filterJson.not_senders || [], + contains_url: this.filterJson.contains_url || null, + [_thread.FILTER_RELATED_BY_SENDERS.name]: this.filterJson[_thread.FILTER_RELATED_BY_SENDERS.name] || [], + [_thread.FILTER_RELATED_BY_REL_TYPES.name]: this.filterJson[_thread.FILTER_RELATED_BY_REL_TYPES.name] || [] + }; + } - if (disallowed_values.filter(match_func).length > 0) { - return false; - } - - const allowed_values = self[name]; - - if (allowed_values && allowed_values.length > 0) { - const anyMatch = allowed_values.some(match_func); - - if (!anyMatch) { + /** + * Checks whether the filter component matches the given event fields. + * @param roomId - the roomId for the event being checked + * @param sender - the sender of the event being checked + * @param eventType - the type of the event being checked + * @param containsUrl - whether the event contains a content.url field + * @param relationTypes - whether has aggregated relation of the given type + * @param relationSenders - whether one of the relation is sent by the user listed + * @returns true if the event fields match the filter + */ + checkFields(roomId, sender, eventType, containsUrl, relationTypes, relationSenders) { + const literalKeys = { + rooms: function (v) { + return roomId === v; + }, + senders: function (v) { + return sender === v; + }, + types: function (v) { + return matchesWildcard(eventType, v); + } + }; + for (const name in literalKeys) { + const matchFunc = literalKeys[name]; + const notName = "not_" + name; + const disallowedValues = this.filterJson[notName]; + if (disallowedValues !== null && disallowedValues !== void 0 && disallowedValues.some(matchFunc)) { + return false; + } + const allowedValues = this.filterJson[name]; + if (allowedValues && !allowedValues.some(matchFunc)) { return false; } } - } - - const contains_url_filter = this.filter_json.contains_url; - - if (contains_url_filter !== undefined) { - if (contains_url_filter !== contains_url) { + const containsUrlFilter = this.filterJson.contains_url; + if (containsUrlFilter !== undefined && containsUrlFilter !== containsUrl) { return false; } + const relationTypesFilter = this.filterJson[_thread.FILTER_RELATED_BY_REL_TYPES.name]; + if (relationTypesFilter !== undefined) { + if (!this.arrayMatchesFilter(relationTypesFilter, relationTypes)) { + return false; + } + } + const relationSendersFilter = this.filterJson[_thread.FILTER_RELATED_BY_SENDERS.name]; + if (relationSendersFilter !== undefined) { + if (!this.arrayMatchesFilter(relationSendersFilter, relationSenders)) { + return false; + } + } + return true; + } + arrayMatchesFilter(filter, values) { + return values.length > 0 && filter.every(value => { + return values.includes(value); + }); } - return true; -}; -/** - * Filters a list of events down to those which match this filter component - * @param {MatrixEvent[]} events Events to be checked againt the filter component - * @return {MatrixEvent[]} events which matched the filter component - */ + /** + * Filters a list of events down to those which match this filter component + * @param events - Events to be checked against the filter component + * @returns events which matched the filter component + */ + filter(events) { + return events.filter(this.check, this); + } - -FilterComponent.prototype.filter = function (events) { - return events.filter(this.check, this); -}; -/** - * Returns the limit field for a given filter component, providing a default of - * 10 if none is otherwise specified. Cargo-culted from Synapse. - * @return {Number} the limit for this filter component. - */ - - -FilterComponent.prototype.limit = function () { - return this.filter_json.limit !== undefined ? this.filter_json.limit : 10; -}; + /** + * Returns the limit field for a given filter component, providing a default of + * 10 if none is otherwise specified. Cargo-culted from Synapse. + * @returns the limit for this filter component. + */ + limit() { + return this.filterJson.limit !== undefined ? this.filterJson.limit : 10; + } +} +exports.FilterComponent = FilterComponent; +//# sourceMappingURL=filter-component.js.map /***/ }), /***/ 3768: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Filter = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _sync = __nccwpck_require__(2478); +var _filterComponent = __nccwpck_require__(2098); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2015 - 2021 Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + */ +function setProp(obj, keyNesting, val) { + const nestedKeys = keyNesting.split("."); + let currentObj = obj; + for (let i = 0; i < nestedKeys.length - 1; i++) { + if (!currentObj[nestedKeys[i]]) { + currentObj[nestedKeys[i]] = {}; + } + currentObj = currentObj[nestedKeys[i]]; + } + currentObj[nestedKeys[nestedKeys.length - 1]] = val; +} + +/* eslint-disable camelcase */ + +/* eslint-enable camelcase */ + +class Filter { + /** + * Create a filter from existing data. + */ + static fromJson(userId, filterId, jsonObj) { + const filter = new Filter(userId, filterId); + filter.setDefinition(jsonObj); + return filter; + } + /** + * Construct a new Filter. + * @param userId - The user ID for this filter. + * @param filterId - The filter ID if known. + */ + constructor(userId, filterId) { + (0, _defineProperty2.default)(this, "definition", {}); + this.userId = userId; + this.filterId = filterId; + } + + /** + * Get the ID of this filter on your homeserver (if known) + * @returns The filter ID + */ + getFilterId() { + return this.filterId; + } + + /** + * Get the JSON body of the filter. + * @returns The filter definition + */ + getDefinition() { + return this.definition; + } + + /** + * Set the JSON body of the filter + * @param definition - The filter definition + */ + setDefinition(definition) { + this.definition = definition; + + // This is all ported from synapse's FilterCollection() + + // definitions look something like: + // { + // "room": { + // "rooms": ["!abcde:example.com"], + // "not_rooms": ["!123456:example.com"], + // "state": { + // "types": ["m.room.*"], + // "not_rooms": ["!726s6s6q:example.com"], + // "lazy_load_members": true, + // }, + // "timeline": { + // "limit": 10, + // "types": ["m.room.message"], + // "not_rooms": ["!726s6s6q:example.com"], + // "not_senders": ["@spam:example.com"] + // "contains_url": true + // }, + // "ephemeral": { + // "types": ["m.receipt", "m.typing"], + // "not_rooms": ["!726s6s6q:example.com"], + // "not_senders": ["@spam:example.com"] + // } + // }, + // "presence": { + // "types": ["m.presence"], + // "not_senders": ["@alice:example.com"] + // }, + // "event_format": "client", + // "event_fields": ["type", "content", "sender"] + // } + + const roomFilterJson = definition.room; + + // consider the top level rooms/not_rooms filter + const roomFilterFields = {}; + if (roomFilterJson) { + if (roomFilterJson.rooms) { + roomFilterFields.rooms = roomFilterJson.rooms; + } + if (roomFilterJson.rooms) { + roomFilterFields.not_rooms = roomFilterJson.not_rooms; + } + } + this.roomFilter = new _filterComponent.FilterComponent(roomFilterFields, this.userId); + this.roomTimelineFilter = new _filterComponent.FilterComponent((roomFilterJson === null || roomFilterJson === void 0 ? void 0 : roomFilterJson.timeline) || {}, this.userId); + + // don't bother porting this from synapse yet: + // this._room_state_filter = + // new FilterComponent(roomFilterJson.state || {}); + // this._room_ephemeral_filter = + // new FilterComponent(roomFilterJson.ephemeral || {}); + // this._room_account_data_filter = + // new FilterComponent(roomFilterJson.account_data || {}); + // this._presence_filter = + // new FilterComponent(definition.presence || {}); + // this._account_data_filter = + // new FilterComponent(definition.account_data || {}); + } + + /** + * Get the room.timeline filter component of the filter + * @returns room timeline filter component + */ + getRoomTimelineFilterComponent() { + return this.roomTimelineFilter; + } + + /** + * Filter the list of events based on whether they are allowed in a timeline + * based on this filter + * @param events - the list of events being filtered + * @returns the list of events which match the filter + */ + filterRoomTimeline(events) { + if (this.roomFilter) { + events = this.roomFilter.filter(events); + } + if (this.roomTimelineFilter) { + events = this.roomTimelineFilter.filter(events); + } + return events; + } + + /** + * Set the max number of events to return for each room's timeline. + * @param limit - The max number of events to return for each room. + */ + setTimelineLimit(limit) { + setProp(this.definition, "room.timeline.limit", limit); + } + + /** + * Enable threads unread notification + */ + setUnreadThreadNotifications(enabled) { + var _this$definition, _this$definition2; + this.definition = _objectSpread(_objectSpread({}, this.definition), {}, { + room: _objectSpread(_objectSpread({}, (_this$definition = this.definition) === null || _this$definition === void 0 ? void 0 : _this$definition.room), {}, { + timeline: _objectSpread(_objectSpread({}, (_this$definition2 = this.definition) === null || _this$definition2 === void 0 || (_this$definition2 = _this$definition2.room) === null || _this$definition2 === void 0 ? void 0 : _this$definition2.timeline), {}, { + [_sync.UNREAD_THREAD_NOTIFICATIONS.name]: enabled + }) + }) + }); + } + setLazyLoadMembers(enabled) { + setProp(this.definition, "room.state.lazy_load_members", enabled); + } + + /** + * Control whether left rooms should be included in responses. + * @param includeLeave - True to make rooms the user has left appear + * in responses. + */ + setIncludeLeaveRooms(includeLeave) { + setProp(this.definition, "room.include_leave", includeLeave); + } +} +exports.Filter = Filter; +(0, _defineProperty2.default)(Filter, "LAZY_LOADING_MESSAGES_FILTER", { + lazy_load_members: true +}); +//# sourceMappingURL=filter.js.map + +/***/ }), + +/***/ 3810: +/***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -50037,13 +160013,9 @@ FilterComponent.prototype.limit = function () { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Filter = Filter; - -var _filterComponent = __webpack_require__(2098); - +exports.MatrixError = exports.HTTPError = exports.ConnectionError = void 0; /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2022 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -50059,1156 +160031,925 @@ limitations under the License. */ /** - * @module filter + * Construct a generic HTTP error. This is a JavaScript Error with additional information + * specific to HTTP responses. + * @param msg - The error message to include. + * @param httpStatus - The HTTP response status code. */ - -/** - * @param {Object} obj - * @param {string} keyNesting - * @param {*} val - */ -function setProp(obj, keyNesting, val) { - const nestedKeys = keyNesting.split("."); - let currentObj = obj; - - for (let i = 0; i < nestedKeys.length - 1; i++) { - if (!currentObj[nestedKeys[i]]) { - currentObj[nestedKeys[i]] = {}; - } - - currentObj = currentObj[nestedKeys[i]]; +class HTTPError extends Error { + constructor(msg, httpStatus) { + super(msg); + this.httpStatus = httpStatus; } - - currentObj[nestedKeys[nestedKeys.length - 1]] = val; } -/** - * Construct a new Filter. - * @constructor - * @param {string} userId The user ID for this filter. - * @param {string=} filterId The filter ID if known. - * @prop {string} userId The user ID of the filter - * @prop {?string} filterId The filter ID - */ +exports.HTTPError = HTTPError; +class MatrixError extends HTTPError { + // The Matrix 'errcode' value, e.g. "M_FORBIDDEN". + // The raw Matrix error JSON used to construct this object. -function Filter(userId, filterId) { - this.userId = userId; - this.filterId = filterId; - this.definition = {}; + /** + * Construct a Matrix error. This is a JavaScript Error with additional + * information specific to the standard Matrix error response. + * @param errorJson - The Matrix error JSON returned from the homeserver. + * @param httpStatus - The numeric HTTP status code given + */ + constructor(errorJson = {}, httpStatus, url, event) { + let message = errorJson.error || "Unknown message"; + if (httpStatus) { + message = `[${httpStatus}] ${message}`; + } + if (url) { + message = `${message} (${url})`; + } + super(`MatrixError: ${message}`, httpStatus); + this.httpStatus = httpStatus; + this.url = url; + this.event = event; + this.errcode = errorJson.errcode; + this.name = errorJson.errcode || "Unknown error code"; + this.data = errorJson; + } } -Filter.LAZY_LOADING_MESSAGES_FILTER = { - lazy_load_members: true -}; /** - * Get the ID of this filter on your homeserver (if known) - * @return {?Number} The filter ID + * Construct a ConnectionError. This is a JavaScript Error indicating + * that a request failed because of some error with the connection, either + * CORS was not correctly configured on the server, the server didn't response, + * the request timed out, or the internet connection on the client side went down. */ - -Filter.prototype.getFilterId = function () { - return this.filterId; -}; -/** - * Get the JSON body of the filter. - * @return {Object} The filter definition - */ - - -Filter.prototype.getDefinition = function () { - return this.definition; -}; -/** - * Set the JSON body of the filter - * @param {Object} definition The filter definition - */ - - -Filter.prototype.setDefinition = function (definition) { - this.definition = definition; // This is all ported from synapse's FilterCollection() - // definitions look something like: - // { - // "room": { - // "rooms": ["!abcde:example.com"], - // "not_rooms": ["!123456:example.com"], - // "state": { - // "types": ["m.room.*"], - // "not_rooms": ["!726s6s6q:example.com"], - // "lazy_load_members": true, - // }, - // "timeline": { - // "limit": 10, - // "types": ["m.room.message"], - // "not_rooms": ["!726s6s6q:example.com"], - // "not_senders": ["@spam:example.com"] - // "contains_url": true - // }, - // "ephemeral": { - // "types": ["m.receipt", "m.typing"], - // "not_rooms": ["!726s6s6q:example.com"], - // "not_senders": ["@spam:example.com"] - // } - // }, - // "presence": { - // "types": ["m.presence"], - // "not_senders": ["@alice:example.com"] - // }, - // "event_format": "client", - // "event_fields": ["type", "content", "sender"] - // } - - const room_filter_json = definition.room; // consider the top level rooms/not_rooms filter - - const room_filter_fields = {}; - - if (room_filter_json) { - if (room_filter_json.rooms) { - room_filter_fields.rooms = room_filter_json.rooms; - } - - if (room_filter_json.rooms) { - room_filter_fields.not_rooms = room_filter_json.not_rooms; - } - - this._include_leave = room_filter_json.include_leave || false; +exports.MatrixError = MatrixError; +class ConnectionError extends Error { + constructor(message, cause) { + super(message + (cause ? `: ${cause.message}` : "")); } - - this._room_filter = new _filterComponent.FilterComponent(room_filter_fields); - this._room_timeline_filter = new _filterComponent.FilterComponent(room_filter_json ? room_filter_json.timeline || {} : {}); // don't bother porting this from synapse yet: - // this._room_state_filter = - // new FilterComponent(room_filter_json.state || {}); - // this._room_ephemeral_filter = - // new FilterComponent(room_filter_json.ephemeral || {}); - // this._room_account_data_filter = - // new FilterComponent(room_filter_json.account_data || {}); - // this._presence_filter = - // new FilterComponent(definition.presence || {}); - // this._account_data_filter = - // new FilterComponent(definition.account_data || {}); -}; -/** - * Get the room.timeline filter component of the filter - * @return {FilterComponent} room timeline filter component - */ - - -Filter.prototype.getRoomTimelineFilterComponent = function () { - return this._room_timeline_filter; -}; -/** - * Filter the list of events based on whether they are allowed in a timeline - * based on this filter - * @param {MatrixEvent[]} events the list of events being filtered - * @return {MatrixEvent[]} the list of events which match the filter - */ - - -Filter.prototype.filterRoomTimeline = function (events) { - return this._room_timeline_filter.filter(this._room_filter.filter(events)); -}; -/** - * Set the max number of events to return for each room's timeline. - * @param {Number} limit The max number of events to return for each room. - */ - - -Filter.prototype.setTimelineLimit = function (limit) { - setProp(this.definition, "room.timeline.limit", limit); -}; - -Filter.prototype.setLazyLoadMembers = function (enabled) { - setProp(this.definition, "room.state.lazy_load_members", !!enabled); -}; -/** - * Control whether left rooms should be included in responses. - * @param {boolean} includeLeave True to make rooms the user has left appear - * in responses. - */ - - -Filter.prototype.setIncludeLeaveRooms = function (includeLeave) { - setProp(this.definition, "room.include_leave", includeLeave); -}; -/** - * Create a filter from existing data. - * @static - * @param {string} userId - * @param {string} filterId - * @param {Object} jsonObj - * @return {Filter} - */ - - -Filter.fromJson = function (userId, filterId, jsonObj) { - const filter = new Filter(userId, filterId); - filter.setDefinition(jsonObj); - return filter; -}; + get name() { + return "ConnectionError"; + } +} +exports.ConnectionError = ConnectionError; +//# sourceMappingURL=errors.js.map /***/ }), -/***/ 263: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 6142: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FetchHttpApi = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _utils = __nccwpck_require__(2557); +var _method = __nccwpck_require__(3688); +var _errors = __nccwpck_require__(3810); +var _interface = __nccwpck_require__(7639); +var _utils2 = __nccwpck_require__(1138); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ /** + * This is an internal module. See {@link MatrixHttpApi} for the public class. + */ +class FetchHttpApi { + constructor(eventEmitter, opts) { + var _opts$useAuthorizatio; + (0, _defineProperty2.default)(this, "abortController", new AbortController()); + this.eventEmitter = eventEmitter; + this.opts = opts; + (0, _utils.checkObjectHasKeys)(opts, ["baseUrl", "prefix"]); + opts.onlyData = !!opts.onlyData; + opts.useAuthorizationHeader = (_opts$useAuthorizatio = opts.useAuthorizationHeader) !== null && _opts$useAuthorizatio !== void 0 ? _opts$useAuthorizatio : true; + } + abort() { + this.abortController.abort(); + this.abortController = new AbortController(); + } + fetch(resource, options) { + if (this.opts.fetchFn) { + return this.opts.fetchFn(resource, options); + } + return global.fetch(resource, options); + } + + /** + * Sets the base URL for the identity server + * @param url - The new base url + */ + setIdBaseUrl(url) { + this.opts.idBaseUrl = url; + } + idServerRequest(method, path, params, prefix, accessToken) { + if (!this.opts.idBaseUrl) { + throw new Error("No identity server base URL set"); + } + let queryParams = undefined; + let body = undefined; + if (method === _method.Method.Get) { + queryParams = params; + } else { + body = params; + } + const fullUri = this.getUrl(path, queryParams, prefix, this.opts.idBaseUrl); + const opts = { + json: true, + headers: {} + }; + if (accessToken) { + opts.headers.Authorization = `Bearer ${accessToken}`; + } + return this.requestOtherUrl(method, fullUri, body, opts); + } + + /** + * Perform an authorised request to the homeserver. + * @param method - The HTTP method e.g. "GET". + * @param path - The HTTP path after the supplied prefix e.g. + * "/createRoom". + * + * @param queryParams - A dict of query params (these will NOT be + * urlencoded). If unspecified, there will be no query params. + * + * @param body - The HTTP JSON body. + * + * @param paramOpts - additional options. + * When `paramOpts.doNotAttemptTokenRefresh` is true, token refresh will not be attempted + * when an expired token is encountered. Used to only attempt token refresh once. + * + * @returns Promise which resolves to + * ``` + * { + * data: {Object}, + * headers: {Object}, + * code: {Number}, + * } + * ``` + * If `onlyData` is set, this will resolve to the `data` object only. + * @returns Rejects with an error if a problem occurred. + * This includes network problems and Matrix-specific error JSON. + */ + async authedRequest(method, path, queryParams, body, paramOpts = {}) { + if (!queryParams) queryParams = {}; + + // avoid mutating paramOpts so they can be used on retry + const opts = _objectSpread({}, paramOpts); + if (this.opts.accessToken) { + if (this.opts.useAuthorizationHeader) { + if (!opts.headers) { + opts.headers = {}; + } + if (!opts.headers.Authorization) { + opts.headers.Authorization = "Bearer " + this.opts.accessToken; + } + if (queryParams.access_token) { + delete queryParams.access_token; + } + } else if (!queryParams.access_token) { + queryParams.access_token = this.opts.accessToken; + } + } + try { + const response = await this.request(method, path, queryParams, body, opts); + return response; + } catch (error) { + const err = error; + if (err.errcode === "M_UNKNOWN_TOKEN" && !opts.doNotAttemptTokenRefresh) { + const shouldRetry = await this.tryRefreshToken(); + // if we got a new token retry the request + if (shouldRetry) { + return this.authedRequest(method, path, queryParams, body, _objectSpread(_objectSpread({}, paramOpts), {}, { + doNotAttemptTokenRefresh: true + })); + } + } + // otherwise continue with error handling + if (err.errcode == "M_UNKNOWN_TOKEN" && !(opts !== null && opts !== void 0 && opts.inhibitLogoutEmit)) { + this.eventEmitter.emit(_interface.HttpApiEvent.SessionLoggedOut, err); + } else if (err.errcode == "M_CONSENT_NOT_GIVEN") { + this.eventEmitter.emit(_interface.HttpApiEvent.NoConsent, err.message, err.data.consent_uri); + } + throw err; + } + } + + /** + * Attempt to refresh access tokens. + * On success, sets new access and refresh tokens in opts. + * @returns Promise that resolves to a boolean - true when token was refreshed successfully + */ + async tryRefreshToken() { + if (!this.opts.refreshToken || !this.opts.tokenRefreshFunction) { + return false; + } + try { + const { + accessToken, + refreshToken + } = await this.opts.tokenRefreshFunction(this.opts.refreshToken); + this.opts.accessToken = accessToken; + this.opts.refreshToken = refreshToken; + // successfully got new tokens + return true; + } catch (error) { + var _this$opts$logger; + (_this$opts$logger = this.opts.logger) === null || _this$opts$logger === void 0 || _this$opts$logger.warn("Failed to refresh token", error); + return false; + } + } + + /** + * Perform a request to the homeserver without any credentials. + * @param method - The HTTP method e.g. "GET". + * @param path - The HTTP path after the supplied prefix e.g. + * "/createRoom". + * + * @param queryParams - A dict of query params (these will NOT be + * urlencoded). If unspecified, there will be no query params. + * + * @param body - The HTTP JSON body. + * + * @param opts - additional options + * + * @returns Promise which resolves to + * ``` + * { + * data: {Object}, + * headers: {Object}, + * code: {Number}, + * } + * ``` + * If `onlyData is set, this will resolve to the data` + * object only. + * @returns Rejects with an error if a problem + * occurred. This includes network problems and Matrix-specific error JSON. + */ + request(method, path, queryParams, body, opts) { + const fullUri = this.getUrl(path, queryParams, opts === null || opts === void 0 ? void 0 : opts.prefix, opts === null || opts === void 0 ? void 0 : opts.baseUrl); + return this.requestOtherUrl(method, fullUri, body, opts); + } + + /** + * Perform a request to an arbitrary URL. + * @param method - The HTTP method e.g. "GET". + * @param url - The HTTP URL object. + * + * @param body - The HTTP JSON body. + * + * @param opts - additional options + * + * @returns Promise which resolves to data unless `onlyData` is specified as false, + * where the resolved value will be a fetch Response object. + * @returns Rejects with an error if a problem + * occurred. This includes network problems and Matrix-specific error JSON. + */ + async requestOtherUrl(method, url, body, opts = {}) { + var _this$opts$logger2, _opts$json, _body$constructor, _opts$localTimeoutMs, _opts$keepAlive; + const urlForLogs = this.sanitizeUrlForLogs(url); + (_this$opts$logger2 = this.opts.logger) === null || _this$opts$logger2 === void 0 || _this$opts$logger2.debug(`FetchHttpApi: --> ${method} ${urlForLogs}`); + const headers = Object.assign({}, opts.headers || {}); + const json = (_opts$json = opts.json) !== null && _opts$json !== void 0 ? _opts$json : true; + // We can't use getPrototypeOf here as objects made in other contexts e.g. over postMessage won't have same ref + const jsonBody = json && (body === null || body === void 0 || (_body$constructor = body.constructor) === null || _body$constructor === void 0 ? void 0 : _body$constructor.name) === Object.name; + if (json) { + if (jsonBody && !headers["Content-Type"]) { + headers["Content-Type"] = "application/json"; + } + if (!headers["Accept"]) { + headers["Accept"] = "application/json"; + } + } + const timeout = (_opts$localTimeoutMs = opts.localTimeoutMs) !== null && _opts$localTimeoutMs !== void 0 ? _opts$localTimeoutMs : this.opts.localTimeoutMs; + const keepAlive = (_opts$keepAlive = opts.keepAlive) !== null && _opts$keepAlive !== void 0 ? _opts$keepAlive : false; + const signals = [this.abortController.signal]; + if (timeout !== undefined) { + signals.push((0, _utils2.timeoutSignal)(timeout)); + } + if (opts.abortSignal) { + signals.push(opts.abortSignal); + } + let data; + if (jsonBody) { + data = JSON.stringify(body); + } else { + data = body; + } + const { + signal, + cleanup + } = (0, _utils2.anySignal)(signals); + let res; + const start = Date.now(); + try { + var _this$opts$logger3; + res = await this.fetch(url, { + signal, + method, + body: data, + headers, + mode: "cors", + redirect: "follow", + referrer: "", + referrerPolicy: "no-referrer", + cache: "no-cache", + credentials: "omit", + // we send credentials via headers + keepalive: keepAlive, + priority: opts.priority + }); + (_this$opts$logger3 = this.opts.logger) === null || _this$opts$logger3 === void 0 || _this$opts$logger3.debug(`FetchHttpApi: <-- ${method} ${urlForLogs} [${Date.now() - start}ms ${res.status}]`); + } catch (e) { + var _this$opts$logger4; + (_this$opts$logger4 = this.opts.logger) === null || _this$opts$logger4 === void 0 || _this$opts$logger4.debug(`FetchHttpApi: <-- ${method} ${urlForLogs} [${Date.now() - start}ms ${e}]`); + if (e.name === "AbortError") { + throw e; + } + throw new _errors.ConnectionError("fetch failed", e); + } finally { + cleanup(); + } + if (!res.ok) { + throw (0, _utils2.parseErrorResponse)(res, await res.text()); + } + if (this.opts.onlyData) { + return json ? res.json() : res.text(); + } + return res; + } + sanitizeUrlForLogs(url) { + try { + let asUrl; + if (typeof url === "string") { + asUrl = new URL(url); + } else { + asUrl = url; + } + // Remove the values of any URL params that could contain potential secrets + const sanitizedQs = new URLSearchParams(); + for (const key of asUrl.searchParams.keys()) { + sanitizedQs.append(key, "xxx"); + } + const sanitizedQsString = sanitizedQs.toString(); + const sanitizedQsUrlPiece = sanitizedQsString ? `?${sanitizedQsString}` : ""; + return asUrl.origin + asUrl.pathname + sanitizedQsUrlPiece; + } catch (error) { + // defensive coding for malformed url + return "??"; + } + } + /** + * Form and return a homeserver request URL based on the given path params and prefix. + * @param path - The HTTP path after the supplied prefix e.g. "/createRoom". + * @param queryParams - A dict of query params (these will NOT be urlencoded). + * @param prefix - The full prefix to use e.g. "/_matrix/client/v2_alpha", defaulting to this.opts.prefix. + * @param baseUrl - The baseUrl to use e.g. "https://matrix.org", defaulting to this.opts.baseUrl. + * @returns URL + */ + getUrl(path, queryParams, prefix, baseUrl) { + const baseUrlWithFallback = baseUrl !== null && baseUrl !== void 0 ? baseUrl : this.opts.baseUrl; + const baseUrlWithoutTrailingSlash = baseUrlWithFallback.endsWith("/") ? baseUrlWithFallback.slice(0, -1) : baseUrlWithFallback; + const url = new URL(baseUrlWithoutTrailingSlash + (prefix !== null && prefix !== void 0 ? prefix : this.opts.prefix) + path); + if (queryParams) { + (0, _utils.encodeParams)(queryParams, url.searchParams); + } + return url; + } +} +exports.FetchHttpApi = FetchHttpApi; +//# sourceMappingURL=fetch.js.map + +/***/ }), + +/***/ 7082: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _exportNames = { + MatrixHttpApi: true +}; +exports.MatrixHttpApi = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _fetch = __nccwpck_require__(6142); +var _prefix = __nccwpck_require__(7314); +Object.keys(_prefix).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _prefix[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _prefix[key]; + } + }); +}); +var _utils = __nccwpck_require__(2557); +var callbacks = _interopRequireWildcard(__nccwpck_require__(5773)); +var _method = __nccwpck_require__(3688); +Object.keys(_method).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _method[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _method[key]; + } + }); +}); +var _errors = __nccwpck_require__(3810); +Object.keys(_errors).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _errors[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _errors[key]; + } + }); +}); +var _utils2 = __nccwpck_require__(1138); +Object.keys(_utils2).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _utils2[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _utils2[key]; + } + }); +}); +var _interface = __nccwpck_require__(7639); +Object.keys(_interface).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _interface[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _interface[key]; + } + }); +}); +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; } +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +class MatrixHttpApi extends _fetch.FetchHttpApi { + constructor(...args) { + super(...args); + (0, _defineProperty2.default)(this, "uploads", []); + } + /** + * Upload content to the homeserver + * + * @param file - The object to upload. On a browser, something that + * can be sent to XMLHttpRequest.send (typically a File). Under node.js, + * a Buffer, String or ReadStream. + * + * @param opts - options object + * + * @returns Promise which resolves to response object, as + * determined by this.opts.onlyData, opts.rawResponse, and + * opts.onlyContentUri. Rejects with an error (usually a MatrixError). + */ + uploadContent(file, opts = {}) { + var _opts$includeFilename, _opts$abortController, _opts$type, _opts$name; + const includeFilename = (_opts$includeFilename = opts.includeFilename) !== null && _opts$includeFilename !== void 0 ? _opts$includeFilename : true; + const abortController = (_opts$abortController = opts.abortController) !== null && _opts$abortController !== void 0 ? _opts$abortController : new AbortController(); + + // If the file doesn't have a mime type, use a default since the HS errors if we don't supply one. + const contentType = ((_opts$type = opts.type) !== null && _opts$type !== void 0 ? _opts$type : file.type) || "application/octet-stream"; + const fileName = (_opts$name = opts.name) !== null && _opts$name !== void 0 ? _opts$name : file.name; + const upload = { + loaded: 0, + total: 0, + abortController + }; + const deferred = (0, _utils.defer)(); + if (global.XMLHttpRequest) { + const xhr = new global.XMLHttpRequest(); + const timeoutFn = function () { + xhr.abort(); + deferred.reject(new Error("Timeout")); + }; + + // set an initial timeout of 30s; we'll advance it each time we get a progress notification + let timeoutTimer = callbacks.setTimeout(timeoutFn, 30000); + xhr.onreadystatechange = function () { + switch (xhr.readyState) { + case global.XMLHttpRequest.DONE: + callbacks.clearTimeout(timeoutTimer); + try { + if (xhr.status === 0) { + throw new DOMException(xhr.statusText, "AbortError"); // mimic fetch API + } + if (!xhr.responseText) { + throw new Error("No response body."); + } + if (xhr.status >= 400) { + deferred.reject((0, _utils2.parseErrorResponse)(xhr, xhr.responseText)); + } else { + deferred.resolve(JSON.parse(xhr.responseText)); + } + } catch (err) { + if (err.name === "AbortError") { + deferred.reject(err); + return; + } + deferred.reject(new _errors.ConnectionError("request failed", err)); + } + break; + } + }; + xhr.upload.onprogress = ev => { + var _opts$progressHandler; + callbacks.clearTimeout(timeoutTimer); + upload.loaded = ev.loaded; + upload.total = ev.total; + timeoutTimer = callbacks.setTimeout(timeoutFn, 30000); + (_opts$progressHandler = opts.progressHandler) === null || _opts$progressHandler === void 0 || _opts$progressHandler.call(opts, { + loaded: ev.loaded, + total: ev.total + }); + }; + const url = this.getUrl("/upload", undefined, _prefix.MediaPrefix.V3); + if (includeFilename && fileName) { + url.searchParams.set("filename", encodeURIComponent(fileName)); + } + if (!this.opts.useAuthorizationHeader && this.opts.accessToken) { + url.searchParams.set("access_token", encodeURIComponent(this.opts.accessToken)); + } + xhr.open(_method.Method.Post, url.href); + if (this.opts.useAuthorizationHeader && this.opts.accessToken) { + xhr.setRequestHeader("Authorization", "Bearer " + this.opts.accessToken); + } + xhr.setRequestHeader("Content-Type", contentType); + xhr.send(file); + abortController.signal.addEventListener("abort", () => { + xhr.abort(); + }); + } else { + const queryParams = {}; + if (includeFilename && fileName) { + queryParams.filename = fileName; + } + const headers = { + "Content-Type": contentType + }; + this.authedRequest(_method.Method.Post, "/upload", queryParams, file, { + prefix: _prefix.MediaPrefix.V3, + headers, + abortSignal: abortController.signal + }).then(response => { + return this.opts.onlyData ? response : response.json(); + }).then(deferred.resolve, deferred.reject); + } + + // remove the upload from the list on completion + upload.promise = deferred.promise.finally(() => { + (0, _utils.removeElement)(this.uploads, elem => elem === upload); + }); + abortController.signal.addEventListener("abort", () => { + (0, _utils.removeElement)(this.uploads, elem => elem === upload); + deferred.reject(new DOMException("Aborted", "AbortError")); + }); + this.uploads.push(upload); + return upload.promise; + } + cancelUpload(promise) { + const upload = this.uploads.find(u => u.promise === promise); + if (upload) { + upload.abortController.abort(); + return true; + } + return false; + } + getCurrentUploads() { + return this.uploads; + } + + /** + * Get the content repository url with query parameters. + * @returns An object with a 'base', 'path' and 'params' for base URL, + * path and query parameters respectively. + */ + getContentUri() { + return { + base: this.opts.baseUrl, + path: _prefix.MediaPrefix.V3 + "/upload", + params: { + access_token: this.opts.accessToken + } + }; + } +} +exports.MatrixHttpApi = MatrixHttpApi; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 7639: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; -var _interopRequireDefault = __webpack_require__(3298); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.MatrixHttpApi = MatrixHttpApi; -exports.retryNetworkOperation = retryNetworkOperation; -exports.AbortError = exports.ConnectionError = exports.MatrixError = exports.PREFIX_MEDIA_R0 = exports.PREFIX_IDENTITY_V2 = exports.PREFIX_IDENTITY_V1 = exports.PREFIX_UNSTABLE = exports.PREFIX_R0 = void 0; - -var _defineProperty2 = _interopRequireDefault(__webpack_require__(3561)); - -var _contentType = __webpack_require__(9915); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _logger = __webpack_require__(3854); - -var callbacks = _interopRequireWildcard(__webpack_require__(5773)); - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - +exports.HttpApiEvent = void 0; /* -TODO: -- CS: complete register function (doing stages) -- Identity server: linkEmail, authEmail, bindEmail, lookup3pid +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * @experimental + * Unencrypted access and (optional) refresh token + */ +/** + * @experimental + * Function that performs token refresh using the given refreshToken. + * Returns a promise that resolves to the refreshed access and (optional) refresh tokens. + * + * Can be passed to HttpApi instance as {@link IHttpOpts.tokenRefreshFunction} during client creation {@link ICreateClientOpts} + */ +let HttpApiEvent = exports.HttpApiEvent = /*#__PURE__*/function (HttpApiEvent) { + HttpApiEvent["SessionLoggedOut"] = "Session.logged_out"; + HttpApiEvent["NoConsent"] = "no_consent"; + return HttpApiEvent; +}({}); +//# sourceMappingURL=interface.js.map + +/***/ }), + +/***/ 3688: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Method = void 0; +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let Method = exports.Method = /*#__PURE__*/function (Method) { + Method["Get"] = "GET"; + Method["Put"] = "PUT"; + Method["Post"] = "POST"; + Method["Delete"] = "DELETE"; + return Method; +}({}); +//# sourceMappingURL=method.js.map + +/***/ }), + +/***/ 7314: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MediaPrefix = exports.IdentityPrefix = exports.ClientPrefix = void 0; +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let ClientPrefix = exports.ClientPrefix = /*#__PURE__*/function (ClientPrefix) { + ClientPrefix["V1"] = "/_matrix/client/v1"; + ClientPrefix["V3"] = "/_matrix/client/v3"; + ClientPrefix["Unstable"] = "/_matrix/client/unstable"; + return ClientPrefix; +}({}); +let IdentityPrefix = exports.IdentityPrefix = /*#__PURE__*/function (IdentityPrefix) { + IdentityPrefix["V2"] = "/_matrix/identity/v2"; + return IdentityPrefix; +}({}); +let MediaPrefix = exports.MediaPrefix = /*#__PURE__*/function (MediaPrefix) { + MediaPrefix["V1"] = "/_matrix/media/v1"; + MediaPrefix["V3"] = "/_matrix/media/v3"; + return MediaPrefix; +}({}); +//# sourceMappingURL=prefix.js.map + +/***/ }), + +/***/ 1138: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.anySignal = anySignal; +exports.calculateRetryBackoff = calculateRetryBackoff; +exports.parseErrorResponse = parseErrorResponse; +exports.retryNetworkOperation = retryNetworkOperation; +exports.timeoutSignal = timeoutSignal; +var _contentType3 = __nccwpck_require__(9915); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); +var _errors = __nccwpck_require__(3810); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. */ -/** - * A constant representing the URI path for release 0 of the Client-Server HTTP API. - */ -const PREFIX_R0 = "/_matrix/client/r0"; -/** - * A constant representing the URI path for as-yet unspecified Client-Server HTTP APIs. - */ - -exports.PREFIX_R0 = PREFIX_R0; -const PREFIX_UNSTABLE = "/_matrix/client/unstable"; -/** - * URI path for v1 of the the identity API - * @deprecated Use v2. - */ - -exports.PREFIX_UNSTABLE = PREFIX_UNSTABLE; -const PREFIX_IDENTITY_V1 = "/_matrix/identity/api/v1"; -/** - * URI path for the v2 identity API - */ - -exports.PREFIX_IDENTITY_V1 = PREFIX_IDENTITY_V1; -const PREFIX_IDENTITY_V2 = "/_matrix/identity/v2"; -/** - * URI path for the media repo API - */ - -exports.PREFIX_IDENTITY_V2 = PREFIX_IDENTITY_V2; -const PREFIX_MEDIA_R0 = "/_matrix/media/r0"; -/** - * Construct a MatrixHttpApi. - * @constructor - * @param {EventEmitter} event_emitter The event emitter to use for emitting events - * @param {Object} opts The options to use for this HTTP API. - * @param {string} opts.baseUrl Required. The base client-server URL e.g. - * 'http://localhost:8008'. - * @param {Function} opts.request Required. The function to call for HTTP - * requests. This function must look like function(opts, callback){ ... }. - * @param {string} opts.prefix Required. The matrix client prefix to use, e.g. - * '/_matrix/client/r0'. See PREFIX_R0 and PREFIX_UNSTABLE for constants. - * - * @param {boolean} opts.onlyData True to return only the 'data' component of the - * response (e.g. the parsed HTTP body). If false, requests will return an - * object with the properties code, headers and data. - * - * @param {string} opts.accessToken The access_token to send with requests. Can be - * null to not send an access token. - * @param {Object=} opts.extraParams Optional. Extra query parameters to send on - * requests. - * @param {Number=} opts.localTimeoutMs The default maximum amount of time to wait - * before timing out the request. If not specified, there is no timeout. - * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use - * Authorization header instead of query param to send the access token to the server. - */ - -exports.PREFIX_MEDIA_R0 = PREFIX_MEDIA_R0; - -function MatrixHttpApi(event_emitter, opts) { - utils.checkObjectHasKeys(opts, ["baseUrl", "request", "prefix"]); - opts.onlyData = opts.onlyData || false; - this.event_emitter = event_emitter; - this.opts = opts; - this.useAuthorizationHeader = Boolean(opts.useAuthorizationHeader); - this.uploads = []; +// Ponyfill for https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout +function timeoutSignal(ms) { + const controller = new AbortController(); + setTimeout(() => { + controller.abort(); + }, ms); + return controller.signal; +} +function anySignal(signals) { + const controller = new AbortController(); + function cleanup() { + for (const signal of signals) { + signal.removeEventListener("abort", onAbort); + } + } + function onAbort() { + controller.abort(); + cleanup(); + } + for (const signal of signals) { + if (signal.aborted) { + onAbort(); + break; + } + signal.addEventListener("abort", onAbort); + } + return { + signal: controller.signal, + cleanup + }; } -MatrixHttpApi.prototype = { - /** - * Sets the baase URL for the identity server - * @param {string} url The new base url - */ - setIdBaseUrl: function (url) { - this.opts.idBaseUrl = url; - }, - - /** - * Get the content repository url with query parameters. - * @return {Object} An object with a 'base', 'path' and 'params' for base URL, - * path and query parameters respectively. - */ - getContentUri: function () { - const params = { - access_token: this.opts.accessToken - }; - return { - base: this.opts.baseUrl, - path: "/_matrix/media/r0/upload", - params: params - }; - }, - - /** - * Upload content to the Home Server - * - * @param {object} file The object to upload. On a browser, something that - * can be sent to XMLHttpRequest.send (typically a File). Under node.js, - * a Buffer, String or ReadStream. - * - * @param {object} opts options object - * - * @param {string=} opts.name Name to give the file on the server. Defaults - * to file.name. - * - * @param {boolean=} opts.includeFilename if false will not send the filename, - * e.g for encrypted file uploads where filename leaks are undesirable. - * Defaults to true. - * - * @param {string=} opts.type Content-type for the upload. Defaults to - * file.type, or applicaton/octet-stream. - * - * @param {boolean=} opts.rawResponse Return the raw body, rather than - * parsing the JSON. Defaults to false (except on node.js, where it - * defaults to true for backwards compatibility). - * - * @param {boolean=} opts.onlyContentUri Just return the content URI, - * rather than the whole body. Defaults to false (except on browsers, - * where it defaults to true for backwards compatibility). Ignored if - * opts.rawResponse is true. - * - * @param {Function=} opts.callback Deprecated. Optional. The callback to - * invoke on success/failure. See the promise return values for more - * information. - * - * @param {Function=} opts.progressHandler Optional. Called when a chunk of - * data has been uploaded, with an object containing the fields `loaded` - * (number of bytes transferred) and `total` (total size, if known). - * - * @return {Promise} Resolves to response object, as - * determined by this.opts.onlyData, opts.rawResponse, and - * opts.onlyContentUri. Rejects with an error (usually a MatrixError). - */ - uploadContent: function (file, opts) { - if (utils.isFunction(opts)) { - // opts used to be callback - opts = { - callback: opts - }; - } else if (opts === undefined) { - opts = {}; - } // default opts.includeFilename to true (ignoring falsey values) - - - const includeFilename = opts.includeFilename !== false; // if the file doesn't have a mime type, use a default since - // the HS errors if we don't supply one. - - const contentType = opts.type || file.type || 'application/octet-stream'; - const fileName = opts.name || file.name; // We used to recommend setting file.stream to the thing to upload on - // Node.js. As of 2019-06-11, this is still in widespread use in various - // clients, so we should preserve this for simple objects used in - // Node.js. File API objects (via either the File or Blob interfaces) in - // the browser now define a `stream` method, which leads to trouble - // here, so we also check the type of `stream`. - - let body = file; - - if (body.stream && typeof body.stream !== "function") { - _logger.logger.warn("Using `file.stream` as the content to upload. Future " + "versions of the js-sdk will change this to expect `file` to " + "be the content directly."); - - body = body.stream; - } // backwards-compatibility hacks where we used to do different things - // between browser and node. - - - let rawResponse = opts.rawResponse; - - if (rawResponse === undefined) { - if (global.XMLHttpRequest) { - rawResponse = false; - } else { - _logger.logger.warn("Returning the raw JSON from uploadContent(). Future " + "versions of the js-sdk will change this default, to " + "return the parsed object. Set opts.rawResponse=false " + "to change this behaviour now."); - - rawResponse = true; - } - } - - let onlyContentUri = opts.onlyContentUri; - - if (!rawResponse && onlyContentUri === undefined) { - if (global.XMLHttpRequest) { - _logger.logger.warn("Returning only the content-uri from uploadContent(). " + "Future versions of the js-sdk will change this " + "default, to return the whole response object. Set " + "opts.onlyContentUri=false to change this behaviour now."); - - onlyContentUri = true; - } else { - onlyContentUri = false; - } - } // browser-request doesn't support File objects because it deep-copies - // the options using JSON.parse(JSON.stringify(options)). Instead of - // loading the whole file into memory as a string and letting - // browser-request base64 encode and then decode it again, we just - // use XMLHttpRequest directly. - // (browser-request doesn't support progress either, which is also kind - // of important here) - - - const upload = { - loaded: 0, - total: 0 - }; - let promise; // XMLHttpRequest doesn't parse JSON for us. request normally does, but - // we're setting opts.json=false so that it doesn't JSON-encode the - // request, which also means it doesn't JSON-decode the response. Either - // way, we have to JSON-parse the response ourselves. - - let bodyParser = null; - - if (!rawResponse) { - bodyParser = function (rawBody) { - let body = JSON.parse(rawBody); - - if (onlyContentUri) { - body = body.content_uri; - - if (body === undefined) { - throw Error('Bad response'); - } - } - - return body; - }; - } - - if (global.XMLHttpRequest) { - const defer = utils.defer(); - const xhr = new global.XMLHttpRequest(); - upload.xhr = xhr; - const cb = requestCallback(defer, opts.callback, this.opts.onlyData); - - const timeout_fn = function () { - xhr.abort(); - cb(new Error('Timeout')); - }; // set an initial timeout of 30s; we'll advance it each time we get - // a progress notification - - - xhr.timeout_timer = callbacks.setTimeout(timeout_fn, 30000); - - xhr.onreadystatechange = function () { - switch (xhr.readyState) { - case global.XMLHttpRequest.DONE: - callbacks.clearTimeout(xhr.timeout_timer); - var resp; - - try { - if (xhr.status === 0) { - throw new AbortError(); - } - - if (!xhr.responseText) { - throw new Error('No response body.'); - } - - resp = xhr.responseText; - - if (bodyParser) { - resp = bodyParser(resp); - } - } catch (err) { - err.http_status = xhr.status; - cb(err); - return; - } - - cb(undefined, xhr, resp); - break; - } - }; - - xhr.upload.addEventListener("progress", function (ev) { - callbacks.clearTimeout(xhr.timeout_timer); - upload.loaded = ev.loaded; - upload.total = ev.total; - xhr.timeout_timer = callbacks.setTimeout(timeout_fn, 30000); - - if (opts.progressHandler) { - opts.progressHandler({ - loaded: ev.loaded, - total: ev.total - }); - } - }); - let url = this.opts.baseUrl + "/_matrix/media/r0/upload"; - const queryArgs = []; - - if (includeFilename && fileName) { - queryArgs.push("filename=" + encodeURIComponent(fileName)); - } - - if (!this.useAuthorizationHeader) { - queryArgs.push("access_token=" + encodeURIComponent(this.opts.accessToken)); - } - - if (queryArgs.length > 0) { - url += "?" + queryArgs.join("&"); - } - - xhr.open("POST", url); - - if (this.useAuthorizationHeader) { - xhr.setRequestHeader("Authorization", "Bearer " + this.opts.accessToken); - } - - xhr.setRequestHeader("Content-Type", contentType); - xhr.send(body); - promise = defer.promise; // dirty hack (as per _request) to allow the upload to be cancelled. - - promise.abort = xhr.abort.bind(xhr); - } else { - const queryParams = {}; - - if (includeFilename && fileName) { - queryParams.filename = fileName; - } - - promise = this.authedRequest(opts.callback, "POST", "/upload", queryParams, body, { - prefix: "/_matrix/media/r0", - headers: { - "Content-Type": contentType - }, - json: false, - bodyParser: bodyParser - }); - } - - const self = this; // remove the upload from the list on completion - - const promise0 = promise.finally(function () { - for (let i = 0; i < self.uploads.length; ++i) { - if (self.uploads[i] === upload) { - self.uploads.splice(i, 1); - return; - } - } - }); // copy our dirty abort() method to the new promise - - promise0.abort = promise.abort; - upload.promise = promise0; - this.uploads.push(upload); - return promise0; - }, - cancelUpload: function (promise) { - if (promise.abort) { - promise.abort(); - return true; - } - - return false; - }, - getCurrentUploads: function () { - return this.uploads; - }, - idServerRequest: function (callback, method, path, params, prefix, accessToken) { - if (!this.opts.idBaseUrl) { - throw new Error("No Identity Server base URL set"); - } - - const fullUri = this.opts.idBaseUrl + prefix + path; - - if (callback !== undefined && !utils.isFunction(callback)) { - throw Error("Expected callback to be a function but got " + typeof callback); - } - - const opts = { - uri: fullUri, - method: method, - withCredentials: false, - json: true, - // we want a JSON response if we can - _matrix_opts: this.opts, - headers: {} - }; - - if (method === 'GET') { - opts.qs = params; - } else if (typeof params === "object") { - opts.json = params; - } - - if (accessToken) { - opts.headers['Authorization'] = `Bearer ${accessToken}`; - } - - const defer = utils.defer(); - this.opts.request(opts, requestCallback(defer, callback, this.opts.onlyData)); - return defer.promise; - }, - - /** - * Perform an authorised request to the homeserver. - * @param {Function} callback Optional. The callback to invoke on - * success/failure. See the promise return values for more information. - * @param {string} method The HTTP method e.g. "GET". - * @param {string} path The HTTP path after the supplied prefix e.g. - * "/createRoom". - * - * @param {Object=} queryParams A dict of query params (these will NOT be - * urlencoded). If unspecified, there will be no query params. - * - * @param {Object} [data] The HTTP JSON body. - * - * @param {Object|Number=} opts additional options. If a number is specified, - * this is treated as `opts.localTimeoutMs`. - * - * @param {Number=} opts.localTimeoutMs The maximum amount of time to wait before - * timing out the request. If not specified, there is no timeout. - * - * @param {sting=} opts.prefix The full prefix to use e.g. - * "/_matrix/client/v2_alpha". If not specified, uses this.opts.prefix. - * - * @param {Object=} opts.headers map of additional request headers - * - * @return {Promise} Resolves to {data: {Object}, - * headers: {Object}, code: {Number}}. - * If onlyData is set, this will resolve to the data - * object only. - * @return {module:http-api.MatrixError} Rejects with an error if a problem - * occurred. This includes network problems and Matrix-specific error JSON. - */ - authedRequest: function (callback, method, path, queryParams, data, opts) { - if (!queryParams) { - queryParams = {}; - } - - if (this.useAuthorizationHeader) { - if (isFinite(opts)) { - // opts used to be localTimeoutMs - opts = { - localTimeoutMs: opts - }; - } - - if (!opts) { - opts = {}; - } - - if (!opts.headers) { - opts.headers = {}; - } - - if (!opts.headers.Authorization) { - opts.headers.Authorization = "Bearer " + this.opts.accessToken; - } - - if (queryParams.access_token) { - delete queryParams.access_token; - } - } else { - if (!queryParams.access_token) { - queryParams.access_token = this.opts.accessToken; - } - } - - const requestPromise = this.request(callback, method, path, queryParams, data, opts); - const self = this; - requestPromise.catch(function (err) { - if (err.errcode == 'M_UNKNOWN_TOKEN') { - self.event_emitter.emit("Session.logged_out", err); - } else if (err.errcode == 'M_CONSENT_NOT_GIVEN') { - self.event_emitter.emit("no_consent", err.message, err.data.consent_uri); - } - }); // return the original promise, otherwise tests break due to it having to - // go around the event loop one more time to process the result of the request - - return requestPromise; - }, - - /** - * Perform a request to the homeserver without any credentials. - * @param {Function} callback Optional. The callback to invoke on - * success/failure. See the promise return values for more information. - * @param {string} method The HTTP method e.g. "GET". - * @param {string} path The HTTP path after the supplied prefix e.g. - * "/createRoom". - * - * @param {Object=} queryParams A dict of query params (these will NOT be - * urlencoded). If unspecified, there will be no query params. - * - * @param {Object} [data] The HTTP JSON body. - * - * @param {Object=} opts additional options - * - * @param {Number=} opts.localTimeoutMs The maximum amount of time to wait before - * timing out the request. If not specified, there is no timeout. - * - * @param {sting=} opts.prefix The full prefix to use e.g. - * "/_matrix/client/v2_alpha". If not specified, uses this.opts.prefix. - * - * @param {Object=} opts.headers map of additional request headers - * - * @return {Promise} Resolves to {data: {Object}, - * headers: {Object}, code: {Number}}. - * If onlyData is set, this will resolve to the data - * object only. - * @return {module:http-api.MatrixError} Rejects with an error if a problem - * occurred. This includes network problems and Matrix-specific error JSON. - */ - request: function (callback, method, path, queryParams, data, opts) { - opts = opts || {}; - const prefix = opts.prefix !== undefined ? opts.prefix : this.opts.prefix; - const fullUri = this.opts.baseUrl + prefix + path; - return this.requestOtherUrl(callback, method, fullUri, queryParams, data, opts); - }, - - /** - * Perform a request to an arbitrary URL. - * @param {Function} callback Optional. The callback to invoke on - * success/failure. See the promise return values for more information. - * @param {string} method The HTTP method e.g. "GET". - * @param {string} uri The HTTP URI - * - * @param {Object=} queryParams A dict of query params (these will NOT be - * urlencoded). If unspecified, there will be no query params. - * - * @param {Object} [data] The HTTP JSON body. - * - * @param {Object=} opts additional options - * - * @param {Number=} opts.localTimeoutMs The maximum amount of time to wait before - * timing out the request. If not specified, there is no timeout. - * - * @param {sting=} opts.prefix The full prefix to use e.g. - * "/_matrix/client/v2_alpha". If not specified, uses this.opts.prefix. - * - * @param {Object=} opts.headers map of additional request headers - * - * @return {Promise} Resolves to {data: {Object}, - * headers: {Object}, code: {Number}}. - * If onlyData is set, this will resolve to the data - * object only. - * @return {module:http-api.MatrixError} Rejects with an error if a problem - * occurred. This includes network problems and Matrix-specific error JSON. - */ - requestOtherUrl: function (callback, method, uri, queryParams, data, opts) { - if (opts === undefined || opts === null) { - opts = {}; - } else if (isFinite(opts)) { - // opts used to be localTimeoutMs - opts = { - localTimeoutMs: opts - }; - } - - return this._request(callback, method, uri, queryParams, data, opts); - }, - - /** - * Form and return a homeserver request URL based on the given path - * params and prefix. - * @param {string} path The HTTP path after the supplied prefix e.g. - * "/createRoom". - * @param {Object} queryParams A dict of query params (these will NOT be - * urlencoded). - * @param {string} prefix The full prefix to use e.g. - * "/_matrix/client/v2_alpha". - * @return {string} URL - */ - getUrl: function (path, queryParams, prefix) { - let queryString = ""; - - if (queryParams) { - queryString = "?" + utils.encodeParams(queryParams); - } - - return this.opts.baseUrl + prefix + path + queryString; - }, - - /** - * @private - * - * @param {function} callback - * @param {string} method - * @param {string} uri - * @param {object} queryParams - * @param {object|string} data - * @param {object=} opts - * - * @param {boolean} [opts.json =true] Json-encode data before sending, and - * decode response on receipt. (We will still json-decode error - * responses, even if this is false.) - * - * @param {object=} opts.headers extra request headers - * - * @param {number=} opts.localTimeoutMs client-side timeout for the - * request. Default timeout if falsy. - * - * @param {function=} opts.bodyParser function to parse the body of the - * response before passing it to the promise and callback. - * - * @return {Promise} a promise which resolves to either the - * response object (if this.opts.onlyData is truthy), or the parsed - * body. Rejects - */ - _request: function (callback, method, uri, queryParams, data, opts) { - if (callback !== undefined && !utils.isFunction(callback)) { - throw Error("Expected callback to be a function but got " + typeof callback); - } - - opts = opts || {}; - const self = this; - - if (this.opts.extraParams) { - queryParams = _objectSpread(_objectSpread({}, queryParams), this.opts.extraParams); - } - - const headers = utils.extend({}, opts.headers || {}); - const json = opts.json === undefined ? true : opts.json; - let bodyParser = opts.bodyParser; // we handle the json encoding/decoding here, because request and - // browser-request make a mess of it. Specifically, they attempt to - // json-decode plain-text error responses, which in turn means that the - // actual error gets swallowed by a SyntaxError. - - if (json) { - if (data) { - data = JSON.stringify(data); - headers['content-type'] = 'application/json'; - } - - if (!headers['accept']) { - headers['accept'] = 'application/json'; - } - - if (bodyParser === undefined) { - bodyParser = function (rawBody) { - return JSON.parse(rawBody); - }; - } - } - - const defer = utils.defer(); - let timeoutId; - let timedOut = false; - let req; - const localTimeoutMs = opts.localTimeoutMs || this.opts.localTimeoutMs; - - const resetTimeout = () => { - if (localTimeoutMs) { - if (timeoutId) { - callbacks.clearTimeout(timeoutId); - } - - timeoutId = callbacks.setTimeout(function () { - timedOut = true; - - if (req && req.abort) { - req.abort(); - } - - defer.reject(new MatrixError({ - error: "Locally timed out waiting for a response", - errcode: "ORG.MATRIX.JSSDK_TIMEOUT", - timeout: localTimeoutMs - })); - }, localTimeoutMs); - } - }; - - resetTimeout(); - const reqPromise = defer.promise; - - try { - req = this.opts.request({ - uri: uri, - method: method, - withCredentials: false, - qs: queryParams, - qsStringifyOptions: opts.qsStringifyOptions, - useQuerystring: true, - body: data, - json: false, - timeout: localTimeoutMs, - headers: headers || {}, - _matrix_opts: this.opts - }, function (err, response, body) { - if (localTimeoutMs) { - callbacks.clearTimeout(timeoutId); - - if (timedOut) { - return; // already rejected promise - } - } - - const handlerFn = requestCallback(defer, callback, self.opts.onlyData, bodyParser); - handlerFn(err, response, body); - }); - - if (req) { - // This will only work in a browser, where opts.request is the - // `browser-request` import. Currently `request` does not support progress - // updates - see https://github.com/request/request/pull/2346. - // `browser-request` returns an XHRHttpRequest which exposes `onprogress` - if ('onprogress' in req) { - req.onprogress = e => { - // Prevent the timeout from rejecting the deferred promise if progress is - // seen with the request - resetTimeout(); - }; - } // FIXME: This is EVIL, but I can't think of a better way to expose - // abort() operations on underlying HTTP requests :( - - - if (req.abort) reqPromise.abort = req.abort.bind(req); - } - } catch (ex) { - defer.reject(ex); - - if (callback) { - callback(ex); - } - } - - return reqPromise; - } -}; -/* - * Returns a callback that can be invoked by an HTTP request on completion, - * that will either resolve or reject the given defer as well as invoke the - * given userDefinedCallback (if any). - * - * HTTP errors are transformed into javascript errors and the deferred is rejected. - * - * If bodyParser is given, it is used to transform the body of the successful - * responses before passing to the defer/callback. - * - * If onlyData is true, the defer/callback is invoked with the body of the - * response, otherwise the result object (with `code` and `data` fields) - * - */ - -const requestCallback = function (defer, userDefinedCallback, onlyData, bodyParser) { - userDefinedCallback = userDefinedCallback || function () {}; - - return function (err, response, body) { - if (err) { - // the unit tests use matrix-mock-request, which throw the string "aborted" when aborting a request. - // See https://github.com/matrix-org/matrix-mock-request/blob/3276d0263a561b5b8326b47bae720578a2c7473a/src/index.js#L48 - const aborted = err.name === "AbortError" || err === "aborted"; - - if (!aborted && !(err instanceof MatrixError)) { - // browser-request just throws normal Error objects, - // not `TypeError`s like fetch does. So just assume any - // error is due to the connection. - err = new ConnectionError("request failed", err); - } - } - - if (!err) { - try { - if (response.statusCode >= 400) { - err = parseErrorResponse(response, body); - } else if (bodyParser) { - body = bodyParser(body); - } - } catch (e) { - err = new Error(`Error parsing server response: ${e}`); - } - } - - if (err) { - defer.reject(err); - userDefinedCallback(err); - } else { - const res = { - code: response.statusCode, - // XXX: why do we bother with this? it doesn't work for - // XMLHttpRequest, so clearly we don't use it. - headers: response.headers, - data: body - }; - defer.resolve(onlyData ? body : res); - userDefinedCallback(null, onlyData ? body : res); - } - }; -}; /** * Attempt to turn an HTTP error response into a Javascript Error. * * If it is a JSON response, we will parse it into a MatrixError. Otherwise * we return a generic Error. * - * @param {XMLHttpRequest|http.IncomingMessage} response response object - * @param {String} body raw body of the response - * @returns {Error} + * @param response - response object + * @param body - raw body of the response + * @returns */ - - function parseErrorResponse(response, body) { - const httpStatus = response.statusCode; - const contentType = getResponseContentType(response); - let err; - - if (contentType) { - if (contentType.type === 'application/json') { - const jsonBody = typeof body === 'object' ? body : JSON.parse(body); - err = new MatrixError(jsonBody); - } else if (contentType.type === 'text/plain') { - err = new Error(`Server returned ${httpStatus} error: ${body}`); - } + var _contentType, _contentType2; + let contentType; + try { + contentType = getResponseContentType(response); + } catch (e) { + return e; } - - if (!err) { - err = new Error(`Server returned ${httpStatus} error`); + if (((_contentType = contentType) === null || _contentType === void 0 ? void 0 : _contentType.type) === "application/json" && body) { + return new _errors.MatrixError(JSON.parse(body), response.status, isXhr(response) ? response.responseURL : response.url); } - - err.httpStatus = httpStatus; - return err; + if (((_contentType2 = contentType) === null || _contentType2 === void 0 ? void 0 : _contentType2.type) === "text/plain") { + return new _errors.HTTPError(`Server returned ${response.status} error: ${body}`, response.status); + } + return new _errors.HTTPError(`Server returned ${response.status} error`, response.status); } +function isXhr(response) { + return "getResponseHeader" in response; +} + /** * extract the Content-Type header from the response object, and * parse it to a `{type, parameters}` object. * * returns null if no content-type header could be found. * - * @param {XMLHttpRequest|http.IncomingMessage} response response object - * @returns {{type: String, parameters: Object}?} parsed content-type header, or null if not found + * @param response - response object + * @returns parsed content-type header, or null if not found */ - - function getResponseContentType(response) { let contentType; - - if (response.getResponseHeader) { - // XMLHttpRequest provides getResponseHeader + if (isXhr(response)) { contentType = response.getResponseHeader("Content-Type"); - } else if (response.headers) { - // request provides http.IncomingMessage which has a message.headers map - contentType = response.headers['content-type'] || null; + } else { + contentType = response.headers.get("Content-Type"); } - - if (!contentType) { - return null; - } - + if (!contentType) return null; try { - return (0, _contentType.parse)(contentType); + return (0, _contentType3.parse)(contentType); } catch (e) { throw new Error(`Error parsing Content-Type '${contentType}': ${e}`); } } -/** - * Construct a Matrix error. This is a JavaScript Error with additional - * information specific to the standard Matrix error response. - * @constructor - * @param {Object} errorJson The Matrix error JSON returned from the homeserver. - * @prop {string} errcode The Matrix 'errcode' value, e.g. "M_FORBIDDEN". - * @prop {string} name Same as MatrixError.errcode but with a default unknown string. - * @prop {string} message The Matrix 'error' value, e.g. "Missing token." - * @prop {Object} data The raw Matrix error JSON used to construct this object. - * @prop {integer} httpStatus The numeric HTTP status code given - */ - -class MatrixError extends Error { - constructor(errorJson) { - errorJson = errorJson || {}; - super(`MatrixError: ${errorJson.errcode}`); - this.errcode = errorJson.errcode; - this.name = errorJson.errcode || "Unknown error code"; - this.message = errorJson.error || "Unknown message"; - this.data = errorJson; - } - -} -/** - * Construct a ConnectionError. This is a JavaScript Error indicating - * that a request failed because of some error with the connection, either - * CORS was not correctly configured on the server, the server didn't response, - * the request timed out, or the internet connection on the client side went down. - * @constructor - */ - - -exports.MatrixError = MatrixError; - -class ConnectionError extends Error { - constructor(message, cause = undefined) { - super(message + (cause ? `: ${cause.message}` : "")); - this._cause = cause; - } - - get name() { - return "ConnectionError"; - } - - get cause() { - return this._cause; - } - -} - -exports.ConnectionError = ConnectionError; - -class AbortError extends Error { - constructor() { - super("Operation aborted"); - } - - get name() { - return "AbortError"; - } - -} /** * Retries a network operation run in a callback. - * @param {number} maxAttempts maximum attempts to try - * @param {Function} callback callback that returns a promise of the network operation. If rejected with ConnectionError, it will be retried by calling the callback again. - * @return {any} the result of the network operation - * @throws {ConnectionError} If after maxAttempts the callback still throws ConnectionError + * @param maxAttempts - maximum attempts to try + * @param callback - callback that returns a promise of the network operation. If rejected with ConnectionError, it will be retried by calling the callback again. + * @returns the result of the network operation + * @throws {@link ConnectionError} If after maxAttempts the callback still throws ConnectionError */ - - -exports.AbortError = AbortError; - async function retryNetworkOperation(maxAttempts, callback) { let attempts = 0; let lastConnectionError = null; - while (attempts < maxAttempts) { try { if (attempts > 0) { const timeout = 1000 * Math.pow(2, attempts); - console.log(`network operation failed ${attempts} times,` + ` retrying in ${timeout}ms...`); - await new Promise(r => setTimeout(r, timeout)); + _logger.logger.log(`network operation failed ${attempts} times, retrying in ${timeout}ms...`); + await (0, _utils.sleep)(timeout); } - return await callback(); } catch (err) { - if (err instanceof ConnectionError) { + if (err instanceof _errors.ConnectionError) { attempts += 1; lastConnectionError = err; } else { @@ -51216,33 +160957,69 @@ async function retryNetworkOperation(maxAttempts, callback) { } } } - throw lastConnectionError; } +/** + * Calculate the backoff time for a request retry attempt. + * This produces wait times of 2, 4, 8, and 16 seconds (30s total) after which we give up. If the + * failure was due to a rate limited request, the time specified in the error is returned. + * + * Returns -1 if the error is not retryable, or if we reach the maximum number of attempts. + * + * @param err - The error thrown by the http call + * @param attempts - The number of attempts made so far, including the one that just failed. + * @param retryConnectionError - Whether to retry on {@link ConnectionError} (CORS, connection is down, etc.) + */ +function calculateRetryBackoff(err, attempts, retryConnectionError) { + if (attempts > 4) { + return -1; // give up + } + if (err instanceof _errors.ConnectionError && !retryConnectionError) { + return -1; + } + if (err.httpStatus && (err.httpStatus === 400 || err.httpStatus === 403 || err.httpStatus === 401)) { + // client error; no amount of retrying will save you now. + return -1; + } + if (err.name === "AbortError") { + // this is a client timeout, that is already very high 60s/80s + // we don't want to retry, as it could do it for very long + return -1; + } + + // If we are trying to send an event (or similar) that is too large in any way, then retrying won't help + if (err.name === "M_TOO_LARGE") { + return -1; + } + if (err.name === "M_LIMIT_EXCEEDED") { + const waitTime = err.data.retry_after_ms; + if (waitTime > 0) { + return waitTime; + } + } + return 1000 * Math.pow(2, attempts); +} +//# sourceMappingURL=utils.js.map + /***/ }), /***/ 2205: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - -var _interopRequireWildcard = __webpack_require__(8429); - Object.defineProperty(exports, "__esModule", ({ value: true })); var _exportNames = {}; -exports.default = void 0; - -var matrixcs = _interopRequireWildcard(__webpack_require__(1354)); - +exports["default"] = void 0; +var matrixcs = _interopRequireWildcard(__nccwpck_require__(1354)); Object.keys(matrixcs).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === matrixcs[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -51250,11 +161027,8 @@ Object.keys(matrixcs).forEach(function (key) { } }); }); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _request = _interopRequireDefault(__webpack_require__(8699)); - +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; } /* Copyright 2019 The Matrix.org Foundation C.I.C. @@ -51270,20 +161044,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -matrixcs.request(_request.default); -utils.runPolyfills(); -try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const crypto = __webpack_require__(6417); - - utils.setCrypto(crypto); -} catch (err) { - console.log('nodejs was compiled without crypto support'); +if (global.__js_sdk_entrypoint) { + throw new Error("Multiple matrix-js-sdk entrypoints detected!"); } - -var _default = matrixcs; -exports.default = _default; +global.__js_sdk_entrypoint = true; +var _default = exports["default"] = matrixcs; +//# sourceMappingURL=index.js.map /***/ }), @@ -51297,7 +161064,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.exists = exists; - /* Copyright 2019 New Vector Ltd @@ -51318,27 +161084,23 @@ limitations under the License. * Check if an IndexedDB database exists. The only way to do so is to try opening it, so * we do that and then delete it did not exist before. * - * @param {Object} indexedDB The `indexedDB` interface - * @param {string} dbName The database name to test for - * @returns {boolean} Whether the database exists + * @param indexedDB - The `indexedDB` interface + * @param dbName - The database name to test for + * @returns Whether the database exists */ function exists(indexedDB, dbName) { return new Promise((resolve, reject) => { let exists = true; const req = indexedDB.open(dbName); - req.onupgradeneeded = () => { // Since we did not provide an explicit version when opening, this event // should only fire if the DB did not exist before at any version. exists = false; }; - - req.onblocked = () => reject(); - + req.onblocked = () => reject(req.error); req.onsuccess = () => { const db = req.result; db.close(); - if (!exists) { // The DB did not exist before, but has been created as part of this // existence check. Delete it now to restore previous state. Delete can @@ -51347,37 +161109,30 @@ function exists(indexedDB, dbName) { // properly set up the DB. indexedDB.deleteDatabase(dbName); } - resolve(exists); }; - - req.onerror = ev => reject(ev.target.error); + req.onerror = () => reject(req.error); }); } +//# sourceMappingURL=indexeddb-helpers.js.map /***/ }), /***/ 8714: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - -var _interopRequireDefault = __webpack_require__(3298); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.InteractiveAuth = InteractiveAuth; - -var _url = _interopRequireDefault(__webpack_require__(8835)); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _logger = __webpack_require__(3854); - +exports.NoAuthFlowFoundError = exports.InteractiveAuth = exports.AuthType = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); +var _httpApi = __nccwpck_require__(7082); /* Copyright 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd @@ -51396,9 +161151,62 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** @module interactive-auth */ const EMAIL_STAGE_TYPE = "m.login.email.identity"; const MSISDN_STAGE_TYPE = "m.login.msisdn"; + +/** + * Data returned in the body of a 401 response from a UIA endpoint. + * + * @see https://spec.matrix.org/v1.6/client-server-api/#user-interactive-api-in-the-rest-api + */ +let AuthType = exports.AuthType = /*#__PURE__*/function (AuthType) { + AuthType["Password"] = "m.login.password"; + AuthType["Recaptcha"] = "m.login.recaptcha"; + AuthType["Terms"] = "m.login.terms"; + AuthType["Email"] = "m.login.email.identity"; + AuthType["Msisdn"] = "m.login.msisdn"; + AuthType["Sso"] = "m.login.sso"; + AuthType["SsoUnstable"] = "org.matrix.login.sso"; + AuthType["Dummy"] = "m.login.dummy"; + AuthType["RegistrationToken"] = "m.login.registration_token"; + AuthType["UnstableRegistrationToken"] = "org.matrix.msc3231.login.registration_token"; + return AuthType; +}({}); +/** + * https://spec.matrix.org/v1.7/client-server-api/#password-based + */ +/** + * https://spec.matrix.org/v1.7/client-server-api/#google-recaptcha + */ +/** + * https://spec.matrix.org/v1.7/client-server-api/#email-based-identity--homeserver + */ +/** + * The parameters which are submitted as the `auth` dict in a UIA request + * + * @see https://spec.matrix.org/v1.6/client-server-api/#authentication-types + */ +class NoAuthFlowFoundError extends Error { + constructor(m, + // eslint-disable-next-line @typescript-eslint/naming-convention, camelcase + required_stages, flows) { + super(m); + (0, _defineProperty2.default)(this, "name", "NoAuthFlowFoundError"); + this.required_stages = required_stages; + this.flows = flows; + } +} + +/** + * The type of an application callback to perform the user-interactive bit of UIA. + * + * It is called with a single parameter, `makeRequest`, which is a function which takes the UIA parameters and + * makes the HTTP request. The `authData` parameter in `makeRequest` can be set to null to omit the `auth` field + * from the UIA request. + * + * The generic parameter `T` is the type of the response of the endpoint, once it is eventually successful. + */ +exports.NoAuthFlowFoundError = NoAuthFlowFoundError; /** * Abstracts the logic used to drive the interactive auth process. * @@ -51411,160 +161219,114 @@ const MSISDN_STAGE_TYPE = "m.login.msisdn"; * callbacks, and information gathered from the user can be submitted with * submitAuthDict. * - * @constructor - * @alias module:interactive-auth - * - * @param {object} opts options object - * - * @param {object} opts.matrixClient A matrix client to use for the auth process - * - * @param {object?} opts.authData error response from the last request. If - * null, a request will be made with no auth before starting. - * - * @param {function(object?): Promise} opts.doRequest - * called with the new auth dict to submit the request. Also passes a - * second deprecated arg which is a flag set to true if this request - * is a background request. The busyChanged callback should be used - * instead of the backfround flag. Should return a promise which resolves - * to the successful response or rejects with a MatrixError. - * - * @param {function(bool): Promise} opts.busyChanged - * called whenever the interactive auth logic becomes busy submitting - * information provided by the user or finsihes. After this has been - * called with true the UI should indicate that a request is in progress - * until it is called again with false. - * - * @param {function(string, object?)} opts.stateUpdated - * called when the status of the UI auth changes, ie. when the state of - * an auth stage changes of when the auth flow moves to a new stage. - * The arguments are: the login type (eg m.login.password); and an object - * which is either an error or an informational object specific to the - * login type. If the 'errcode' key is defined, the object is an error, - * and has keys: - * errcode: string, the textual error code, eg. M_UNKNOWN - * error: string, human readable string describing the error - * - * The login type specific objects are as follows: - * m.login.email.identity: - * * emailSid: string, the sid of the active email auth session - * - * @param {object?} opts.inputs Inputs provided by the user and used by different - * stages of the auto process. The inputs provided will affect what flow is chosen. - * - * @param {string?} opts.inputs.emailAddress An email address. If supplied, a flow - * using email verification will be chosen. - * - * @param {string?} opts.inputs.phoneCountry An ISO two letter country code. Gives - * the country that opts.phoneNumber should be resolved relative to. - * - * @param {string?} opts.inputs.phoneNumber A phone number. If supplied, a flow - * using phone number validation will be chosen. - * - * @param {string?} opts.sessionId If resuming an existing interactive auth session, - * the sessionId of that session. - * - * @param {string?} opts.clientSecret If resuming an existing interactive auth session, - * the client secret for that session - * - * @param {string?} opts.emailSid If returning from having completed m.login.email.identity - * auth, the sid for the email verification session. - * - * @param {function?} opts.requestEmailToken A function that takes the email address (string), - * clientSecret (string), attempt number (int) and sessionId (string) and calls the - * relevant requestToken function and returns the promise returned by that function. - * If the resulting promise rejects, the rejection will propagate through to the - * attemptAuth promise. - * + * @param opts - options object + * @typeParam T - the return type of the request when it is successful */ +class InteractiveAuth { + constructor(opts) { + // The current latest data or error received from the server during the user interactive auth flow. + (0, _defineProperty2.default)(this, "requestingEmailToken", false); + (0, _defineProperty2.default)(this, "attemptAuthDeferred", null); + (0, _defineProperty2.default)(this, "chosenFlow", null); + (0, _defineProperty2.default)(this, "currentStage", null); + (0, _defineProperty2.default)(this, "emailAttempt", 1); + // if we are currently trying to submit an auth dict (which includes polling) + // the promise the will resolve/reject when it completes + (0, _defineProperty2.default)(this, "submitPromise", null); + /** + * Requests a new email token and sets the email sid for the validation session + */ + (0, _defineProperty2.default)(this, "requestEmailToken", async () => { + if (!this.requestingEmailToken) { + _logger.logger.trace("Requesting email token. Attempt: " + this.emailAttempt); + // If we've picked a flow with email auth, we send the email + // now because we want the request to fail as soon as possible + // if the email address is not valid (ie. already taken or not + // registered, depending on what the operation is). + this.requestingEmailToken = true; + try { + const requestTokenResult = await this.requestEmailTokenCallback(this.inputs.emailAddress, this.clientSecret, this.emailAttempt++, this.data.session); + this.emailSid = requestTokenResult.sid; + _logger.logger.trace("Email token request succeeded"); + } finally { + this.requestingEmailToken = false; + } + } else { + _logger.logger.warn("Could not request email token: Already requesting"); + } + }); + this.matrixClient = opts.matrixClient; + this.data = opts.authData || { + flows: [] + }; + this.requestCallback = opts.doRequest; + this.busyChangedCallback = opts.busyChanged; + // startAuthStage included for backwards compat + this.stateUpdatedCallback = opts.stateUpdated || opts.startAuthStage; + this.requestEmailTokenCallback = opts.requestEmailToken; + this.inputs = opts.inputs || {}; + if (opts.sessionId) this.data.session = opts.sessionId; + this.clientSecret = opts.clientSecret || this.matrixClient.generateClientSecret(); + this.emailSid = opts.emailSid; + if (opts.supportedStages !== undefined) this.supportedStages = new Set(opts.supportedStages); + } -function InteractiveAuth(opts) { - this._matrixClient = opts.matrixClient; - this._data = opts.authData || {}; - this._requestCallback = opts.doRequest; - this._busyChangedCallback = opts.busyChanged; // startAuthStage included for backwards compat - - this._stateUpdatedCallback = opts.stateUpdated || opts.startAuthStage; - this._resolveFunc = null; - this._rejectFunc = null; - this._inputs = opts.inputs || {}; - this._requestEmailTokenCallback = opts.requestEmailToken; - if (opts.sessionId) this._data.session = opts.sessionId; - this._clientSecret = opts.clientSecret || this._matrixClient.generateClientSecret(); - this._emailSid = opts.emailSid; - if (this._emailSid === undefined) this._emailSid = null; - this._requestingEmailToken = false; - this._chosenFlow = null; - this._currentStage = null; // if we are currently trying to submit an auth dict (which includes polling) - // the promise the will resolve/reject when it completes - - this._submitPromise = null; -} - -InteractiveAuth.prototype = { /** * begin the authentication process. * - * @return {Promise} which resolves to the response on success, + * @returns which resolves to the response on success, * or rejects with the error on failure. Rejects with NoAuthFlowFoundError if * no suitable authentication flow can be found */ - attemptAuth: function () { + async attemptAuth() { + var _this$data; // This promise will be quite long-lived and will resolve when the // request is authenticated and completes successfully. - return new Promise((resolve, reject) => { - this._resolveFunc = resolve; - this._rejectFunc = reject; - const hasFlows = this._data && this._data.flows; // if we have no flows, try a request to acquire the flows + this.attemptAuthDeferred = (0, _utils.defer)(); + // pluck the promise out now, as doRequest may clear before we return + const promise = this.attemptAuthDeferred.promise; - if (!hasFlows) { - if (this._busyChangedCallback) this._busyChangedCallback(true); // use the existing sessionid, if one is present. - - let auth = null; - - if (this._data.session) { - auth = { - session: this._data.session - }; - } - - this._doRequest(auth).finally(() => { - if (this._busyChangedCallback) this._busyChangedCallback(false); - }); - } else { - this._startNextAuthStage(); - } - }); - }, + // if we have no flows, try a request to acquire the flows + if (!((_this$data = this.data) !== null && _this$data !== void 0 && (_this$data = _this$data.flows) !== null && _this$data !== void 0 && _this$data.length)) { + var _this$busyChangedCall; + (_this$busyChangedCall = this.busyChangedCallback) === null || _this$busyChangedCall === void 0 || _this$busyChangedCall.call(this, true); + // use the existing sessionId, if one is present. + const auth = this.data.session ? { + session: this.data.session + } : null; + this.doRequest(auth).finally(() => { + var _this$busyChangedCall2; + (_this$busyChangedCall2 = this.busyChangedCallback) === null || _this$busyChangedCall2 === void 0 || _this$busyChangedCall2.call(this, false); + }); + } else { + this.startNextAuthStage(); + } + return promise; + } /** * Poll to check if the auth session or current stage has been * completed out-of-band. If so, the attemptAuth promise will * be resolved. */ - poll: async function () { - if (!this._data.session) return; // likewise don't poll if there is no auth session in progress - - if (!this._resolveFunc) return; // if we currently have a request in flight, there's no point making + async poll() { + if (!this.data.session) return; + // likewise don't poll if there is no auth session in progress + if (!this.attemptAuthDeferred) return; + // if we currently have a request in flight, there's no point making // another just to check what the status is - - if (this._submitPromise) return; + if (this.submitPromise) return; let authDict = {}; - - if (this._currentStage == EMAIL_STAGE_TYPE) { + if (this.currentStage == EMAIL_STAGE_TYPE) { // The email can be validated out-of-band, but we need to provide the // creds so the HS can go & check it. - if (this._emailSid) { + if (this.emailSid) { const creds = { - sid: this._emailSid, - client_secret: this._clientSecret + sid: this.emailSid, + client_secret: this.clientSecret }; - - if (await this._matrixClient.doesServerRequireIdServerParam()) { - const idServerParsedUrl = _url.default.parse(this._matrixClient.getIdentityServerUrl()); - - creds.id_server = idServerParsedUrl.host; - } - + const idServerParsedUrl = new URL(this.matrixClient.getIdentityServerUrl()); + creds.id_server = idServerParsedUrl.host; authDict = { type: EMAIL_STAGE_TYPE, // TODO: Remove `threepid_creds` once servers support proper UIA @@ -51575,116 +161337,109 @@ InteractiveAuth.prototype = { }; } } - this.submitAuthDict(authDict, true); - }, + } /** * get the auth session ID * - * @return {string} session id + * @returns session id */ - getSessionId: function () { - return this._data ? this._data.session : undefined; - }, + getSessionId() { + var _this$data2; + return (_this$data2 = this.data) === null || _this$data2 === void 0 ? void 0 : _this$data2.session; + } /** * get the client secret used for validation sessions - * with the ID server. + * with the identity server. * - * @return {string} client secret + * @returns client secret */ - getClientSecret: function () { - return this._clientSecret; - }, + getClientSecret() { + return this.clientSecret; + } /** * get the server params for a given stage * - * @param {string} loginType login type for the stage - * @return {object?} any parameters from the server for this stage + * @param loginType - login type for the stage + * @returns any parameters from the server for this stage */ - getStageParams: function (loginType) { - let params = {}; - - if (this._data && this._data.params) { - params = this._data.params; - } - - return params[loginType]; - }, - + getStageParams(loginType) { + var _this$data3; + return (_this$data3 = this.data) === null || _this$data3 === void 0 || (_this$data3 = _this$data3.params) === null || _this$data3 === void 0 ? void 0 : _this$data3[loginType]; + } getChosenFlow() { - return this._chosenFlow; - }, + return this.chosenFlow; + } /** * submit a new auth dict and fire off the request. This will either * make attemptAuth resolve/reject, or cause the startAuthStage callback * to be called for a new stage. * - * @param {object} authData new auth dict to send to the server. Should - * include a `type` propterty denoting the login type, as well as any + * @param authData - new auth dict to send to the server. Should + * include a `type` property denoting the login type, as well as any * other params for that stage. - * @param {bool} background If true, this request failing will not result + * @param background - If true, this request failing will not result * in the attemptAuth promise being rejected. This can be set to true * for requests that just poll to see if auth has been completed elsewhere. */ - submitAuthDict: async function (authData, background) { - if (!this._resolveFunc) { + async submitAuthDict(authData, background = false) { + var _this$data4; + if (!this.attemptAuthDeferred) { throw new Error("submitAuthDict() called before attemptAuth()"); } + if (!background) { + var _this$busyChangedCall3; + (_this$busyChangedCall3 = this.busyChangedCallback) === null || _this$busyChangedCall3 === void 0 || _this$busyChangedCall3.call(this, true); + } - if (!background && this._busyChangedCallback) { - this._busyChangedCallback(true); - } // if we're currently trying a request, wait for it to finish + // if we're currently trying a request, wait for it to finish // as otherwise we can get multiple 200 responses which can mean // things like multiple logins for register requests. - // (but discard any expections as we only care when its done, + // (but discard any exceptions as we only care when its done, // not whether it worked or not) - - - while (this._submitPromise) { + while (this.submitPromise) { try { - await this._submitPromise; + await this.submitPromise; } catch (e) {} - } // use the sessionid from the last request, if one is present. - + } + // use the sessionid from the last request, if one is present. let auth; - - if (this._data.session) { + if ((_this$data4 = this.data) !== null && _this$data4 !== void 0 && _this$data4.session) { auth = { - session: this._data.session + session: this.data.session }; - utils.extend(auth, authData); + Object.assign(auth, authData); } else { auth = authData; } - try { // NB. the 'background' flag is deprecated by the busyChanged // callback and is here for backwards compat - this._submitPromise = this._doRequest(auth, background); - await this._submitPromise; + this.submitPromise = this.doRequest(auth, background); + await this.submitPromise; } finally { - this._submitPromise = null; - - if (!background && this._busyChangedCallback) { - this._busyChangedCallback(false); + this.submitPromise = null; + if (!background) { + var _this$busyChangedCall4; + (_this$busyChangedCall4 = this.busyChangedCallback) === null || _this$busyChangedCall4 === void 0 || _this$busyChangedCall4.call(this, false); } } - }, + } /** * Gets the sid for the email validation session * Specific to m.login.email.identity * - * @returns {string} The sid of the email auth session + * @returns The sid of the email auth session */ - getEmailSid: function () { - return this._emailSid; - }, + getEmailSid() { + return this.emailSid; + } /** * Sets the sid for the email validation session @@ -51692,81 +161447,73 @@ InteractiveAuth.prototype = { * of the email validation. * Specific to m.login.email.identity * - * @param {string} sid The sid for the email validation session + * @param sid - The sid for the email validation session */ - setEmailSid: function (sid) { - this._emailSid = sid; - }, - + setEmailSid(sid) { + this.emailSid = sid; + } /** * Fire off a request, and either resolve the promise, or call * startAuthStage. * - * @private - * @param {object?} auth new auth dict, including session id - * @param {bool?} background If true, this request is a background poll, so it + * @internal + * @param auth - new auth dict, including session id + * @param background - If true, this request is a background poll, so it * failing will not result in the attemptAuth promise being rejected. * This can be set to true for requests that just poll to see if auth has * been completed elsewhere. */ - _doRequest: async function (auth, background) { + async doRequest(auth, background = false) { try { - const result = await this._requestCallback(auth, background); - - this._resolveFunc(result); - - this._resolveFunc = null; - this._rejectFunc = null; + const result = await this.requestCallback(auth, background); + this.attemptAuthDeferred.resolve(result); + this.attemptAuthDeferred = null; } catch (error) { - // sometimes UI auth errors don't come with flows - const errorFlows = error.data ? error.data.flows : null; - const haveFlows = this._data.flows || Boolean(errorFlows); + var _matrixError$data$flo, _matrixError$data, _this$data5, _this$chosenFlow; + const matrixError = error instanceof _httpApi.MatrixError ? error : null; - if (error.httpStatus !== 401 || !error.data || !haveFlows) { + // sometimes UI auth errors don't come with flows + const errorFlows = (_matrixError$data$flo = matrixError === null || matrixError === void 0 || (_matrixError$data = matrixError.data) === null || _matrixError$data === void 0 ? void 0 : _matrixError$data.flows) !== null && _matrixError$data$flo !== void 0 ? _matrixError$data$flo : null; + const haveFlows = ((_this$data5 = this.data) === null || _this$data5 === void 0 ? void 0 : _this$data5.flows) || Boolean(errorFlows); + if (!matrixError || matrixError.httpStatus !== 401 || !matrixError.data || !haveFlows) { // doesn't look like an interactive-auth failure. if (!background) { - this._rejectFunc(error); + var _this$attemptAuthDefe; + (_this$attemptAuthDefe = this.attemptAuthDeferred) === null || _this$attemptAuthDefe === void 0 || _this$attemptAuthDefe.reject(error); } else { // We ignore all failures here (even non-UI auth related ones) // since we don't want to suddenly fail if the internet connection // had a blip whilst we were polling _logger.logger.log("Background poll request failed doing UI auth: ignoring", error); } - } // if the error didn't come with flows, completed flows or session ID, + } + if (matrixError && !matrixError.data) { + matrixError.data = {}; + } + // if the error didn't come with flows, completed flows or session ID, // copy over the ones we have. Synapse sometimes sends responses without // any UI auth data (eg. when polling for email validation, if the email // has not yet been validated). This appears to be a Synapse bug, which // we workaround here. - - - if (!error.data.flows && !error.data.completed && !error.data.session) { - error.data.flows = this._data.flows; - error.data.completed = this._data.completed; - error.data.session = this._data.session; + if (matrixError && !matrixError.data.flows && !matrixError.data.completed && !matrixError.data.session) { + matrixError.data.flows = this.data.flows; + matrixError.data.completed = this.data.completed; + matrixError.data.session = this.data.session; + } + if (matrixError) { + this.data = matrixError.data; } - - this._data = error.data; - try { - this._startNextAuthStage(); + this.startNextAuthStage(); } catch (e) { - this._rejectFunc(e); - - this._resolveFunc = null; - this._rejectFunc = null; + this.attemptAuthDeferred.reject(e); + this.attemptAuthDeferred = null; + return; } - - if (!this._emailSid && !this._requestingEmailToken && this._chosenFlow.stages.includes('m.login.email.identity')) { - // If we've picked a flow with email auth, we send the email - // now because we want the request to fail as soon as possible - // if the email address is not valid (ie. already taken or not - // registered, depending on what the operation is). - this._requestingEmailToken = true; - + if (!this.emailSid && (_this$chosenFlow = this.chosenFlow) !== null && _this$chosenFlow !== void 0 && _this$chosenFlow.stages.includes(AuthType.Email)) { try { - const requestTokenResult = await this._requestEmailTokenCallback(this._inputs.emailAddress, this._clientSecret, 1, // TODO: Multiple send attempts? - this._data.session); - this._emailSid = requestTokenResult.sid; // NB. promise is not resolved here - at some point, doRequest + await this.requestEmailToken(); + // NB. promise is not resolved here - at some point, doRequest // will be called again and if the user has jumped through all // the hoops correctly, auth will be complete and the request // will succeed. @@ -51779,77 +161526,72 @@ InteractiveAuth.prototype = { // to do) or it could be a network failure. Either way, pass // the failure up as the user can't complete auth if we can't // send the email, for whatever reason. - this._rejectFunc(e); - - this._resolveFunc = null; - this._rejectFunc = null; - } finally { - this._requestingEmailToken = false; + this.attemptAuthDeferred.reject(e); + this.attemptAuthDeferred = null; } } } - }, + } /** * Pick the next stage and call the callback * - * @private - * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found + * @internal + * @throws {@link NoAuthFlowFoundError} If no suitable authentication flow can be found */ - _startNextAuthStage: function () { - const nextStage = this._chooseStage(); - + startNextAuthStage() { + var _this$data6, _this$data7; + const nextStage = this.chooseStage(); if (!nextStage) { throw new Error("No incomplete flows from the server"); } - - this._currentStage = nextStage; - - if (nextStage === 'm.login.dummy') { + this.currentStage = nextStage; + if (nextStage === AuthType.Dummy) { this.submitAuthDict({ - type: 'm.login.dummy' + type: "m.login.dummy" }); return; } - - if (this._data && this._data.errcode || this._data.error) { - this._stateUpdatedCallback(nextStage, { - errcode: this._data.errcode || "", - error: this._data.error || "" + if ((_this$data6 = this.data) !== null && _this$data6 !== void 0 && _this$data6.errcode || (_this$data7 = this.data) !== null && _this$data7 !== void 0 && _this$data7.error) { + var _this$data8, _this$data9; + this.stateUpdatedCallback(nextStage, { + errcode: ((_this$data8 = this.data) === null || _this$data8 === void 0 ? void 0 : _this$data8.errcode) || "", + error: ((_this$data9 = this.data) === null || _this$data9 === void 0 ? void 0 : _this$data9.error) || "" }); - return; } - - const stageStatus = {}; - - if (nextStage == EMAIL_STAGE_TYPE) { - stageStatus.emailSid = this._emailSid; - } - - this._stateUpdatedCallback(nextStage, stageStatus); - }, + this.stateUpdatedCallback(nextStage, nextStage === EMAIL_STAGE_TYPE ? { + emailSid: this.emailSid + } : {}); + } /** * Pick the next auth stage * - * @private - * @return {string?} login type - * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found + * @internal + * @returns login type + * @throws {@link NoAuthFlowFoundError} If no suitable authentication flow can be found */ - _chooseStage: function () { - if (this._chosenFlow === null) { - this._chosenFlow = this._chooseFlow(); + chooseStage() { + if (this.chosenFlow === null) { + this.chosenFlow = this.chooseFlow(); } - - _logger.logger.log("Active flow => %s", JSON.stringify(this._chosenFlow)); - - const nextStage = this._firstUncompletedStage(this._chosenFlow); - + _logger.logger.log("Active flow => %s", JSON.stringify(this.chosenFlow)); + const nextStage = this.firstUncompletedStage(this.chosenFlow); _logger.logger.log("Next stage: %s", nextStage); - return nextStage; - }, + } + + // Returns a low number for flows we consider best. Counts increase for longer flows and even more so + // for flows which contain stages not listed in `supportedStages`. + scoreFlow(flow) { + let score = flow.stages.length; + if (this.supportedStages !== undefined) { + // Add 10 points to the score for each unsupported stage in the flow. + score += flow.stages.filter(stage => !this.supportedStages.has(stage)).length * 10; + } + return score; + } /** * Pick one of the flows from the returned list @@ -51857,25 +161599,29 @@ InteractiveAuth.prototype = { * be returned, otherwise, null will be returned. * * Only flows using all given inputs are chosen because it - * is likley to be surprising if the user provides a + * is likely to be surprising if the user provides a * credential and it is not used. For example, for registration, * this could result in the email not being used which would leave * the account with no means to reset a password. * - * @private - * @return {object} flow - * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found + * @internal + * @returns flow + * @throws {@link NoAuthFlowFoundError} If no suitable authentication flow can be found */ - _chooseFlow: function () { - const flows = this._data.flows || []; // we've been given an email or we've already done an email part + chooseFlow() { + var _this$data10; + const flows = ((_this$data10 = this.data) === null || _this$data10 === void 0 ? void 0 : _this$data10.flows) || []; - const haveEmail = Boolean(this._inputs.emailAddress) || Boolean(this._emailSid); - const haveMsisdn = Boolean(this._inputs.phoneCountry) && Boolean(this._inputs.phoneNumber); + // we've been given an email or we've already done an email part + const haveEmail = Boolean(this.inputs.emailAddress) || Boolean(this.emailSid); + const haveMsisdn = Boolean(this.inputs.phoneCountry) && Boolean(this.inputs.phoneNumber); + // Flows are not represented in a significant order, so we can choose any we support best + // Sort flows based on how many unsupported stages they contain ascending + flows.sort((a, b) => this.scoreFlow(a) - this.scoreFlow(b)); for (const flow of flows) { let flowHasEmail = false; let flowHasMsisdn = false; - for (const stage of flow.stages) { if (stage === EMAIL_STAGE_TYPE) { flowHasEmail = true; @@ -51883,63 +161629,50 @@ InteractiveAuth.prototype = { flowHasMsisdn = true; } } - if (flowHasEmail == haveEmail && flowHasMsisdn == haveMsisdn) { return flow; } - } // Throw an error with a fairly generic description, but with more + } + const requiredStages = []; + if (haveEmail) requiredStages.push(EMAIL_STAGE_TYPE); + if (haveMsisdn) requiredStages.push(MSISDN_STAGE_TYPE); + // Throw an error with a fairly generic description, but with more // information such that the app can give a better one if so desired. - - - const err = new Error("No appropriate authentication flow found"); - err.name = 'NoAuthFlowFoundError'; - err.required_stages = []; - if (haveEmail) err.required_stages.push(EMAIL_STAGE_TYPE); - if (haveMsisdn) err.required_stages.push(MSISDN_STAGE_TYPE); - err.available_flows = flows; - throw err; - }, + throw new NoAuthFlowFoundError("No appropriate authentication flow found", requiredStages, flows); + } /** * Get the first uncompleted stage in the given flow * - * @private - * @param {object} flow - * @return {string} login type + * @internal + * @returns login type */ - _firstUncompletedStage: function (flow) { - const completed = (this._data || {}).completed || []; - - for (let i = 0; i < flow.stages.length; ++i) { - const stageType = flow.stages[i]; - - if (completed.indexOf(stageType) === -1) { - return stageType; - } - } + firstUncompletedStage(flow) { + var _this$data11; + const completed = ((_this$data11 = this.data) === null || _this$data11 === void 0 ? void 0 : _this$data11.completed) || []; + return flow.stages.find(stageType => !completed.includes(stageType)); } -}; +} +exports.InteractiveAuth = InteractiveAuth; +//# sourceMappingURL=interactive-auth.js.map /***/ }), /***/ 3854: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.logger = void 0; - -var _loglevel = _interopRequireDefault(__webpack_require__(8063)); - +exports.logger = exports.LogSpan = void 0; +var _loglevel = _interopRequireDefault(__nccwpck_require__(8063)); /* Copyright 2018 André Jaenisch -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2019, 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -51954,72 +161687,284 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** - * @module logger - */ +/** Logger interface used within the js-sdk codebase */ + +/** The basic interface for a logger which doesn't support children */ + // This is to demonstrate, that you can use any namespace you want. // Namespaces allow you to turn on/off the logging for specific parts of the // application. // An idea would be to control this via an environment variable (on Node.js). // See https://www.npmjs.com/package/debug to see how this could be implemented // Part of #332 is introducing a logging library in the first place. -const DEFAULT_NAMESPACE = "matrix"; // because rageshakes in react-sdk hijack the console log, also at module load time, +const DEFAULT_NAMESPACE = "matrix"; + +// because rageshakes in react-sdk hijack the console log, also at module load time, // initializing the logger here races with the initialization of rageshakes. // to avoid the issue, we override the methodFactory of loglevel that binds to the // console methods at initialization time by a factory that looks up the console methods // when logging so we always get the current value of console methods. - _loglevel.default.methodFactory = function (methodName, logLevel, loggerName) { return function (...args) { - const supportedByConsole = methodName === "error" || methodName === "warn" || methodName === "trace" || methodName === "info"; - + /* eslint-disable @typescript-eslint/no-invalid-this */ + if (this.prefix) { + args.unshift(this.prefix); + } + /* eslint-enable @typescript-eslint/no-invalid-this */ + const supportedByConsole = methodName === "error" || methodName === "warn" || methodName === "trace" || methodName === "info" || methodName === "debug"; + /* eslint-disable no-console */ if (supportedByConsole) { return console[methodName](...args); } else { return console.log(...args); } + /* eslint-enable no-console */ }; }; + /** - * Drop-in replacement for console using {@link https://www.npmjs.com/package/loglevel|loglevel}. - * Can be tailored down to specific use cases if needed. + * Implementation of {@link Logger} based on `loglevel`. + * + * @deprecated this shouldn't be public; prefer {@link Logger}. */ +/** Internal utility function to turn a `loglevel.Logger` into a `PrefixedLogger` */ +function extendLogger(logger) { + const prefixedLogger = logger; + prefixedLogger.getChild = prefixedLogger.withPrefix = function (prefix) { + const existingPrefix = this.prefix || ""; + return getPrefixedLogger(existingPrefix + prefix); + }; +} +function getPrefixedLogger(prefix) { + const prefixLogger = _loglevel.default.getLogger(`${DEFAULT_NAMESPACE}-${prefix}`); + if (prefixLogger.prefix !== prefix) { + // Only do this setup work the first time through, as loggers are saved by name. + extendLogger(prefixLogger); + prefixLogger.prefix = prefix; + prefixLogger.setLevel(_loglevel.default.levels.DEBUG, false); + } + return prefixLogger; +} -const logger = _loglevel.default.getLogger(DEFAULT_NAMESPACE); +/** + * Drop-in replacement for `console` using {@link https://www.npmjs.com/package/loglevel|loglevel}. + * Can be tailored down to specific use cases if needed. + */ +const logger = exports.logger = _loglevel.default.getLogger(DEFAULT_NAMESPACE); +logger.setLevel(_loglevel.default.levels.DEBUG, false); +extendLogger(logger); -exports.logger = logger; -logger.setLevel(_loglevel.default.levels.DEBUG); +/** + * A "span" for grouping related log lines together. + * + * The current implementation just adds the name at the start of each log line. + * + * This offers a lighter-weight alternative to 'child' loggers returned by {@link Logger#getChild}. In particular, + * it's not possible to apply individual filters to the LogSpan such as setting the verbosity level. On the other hand, + * no reference to the LogSpan is retained in the logging framework, so it is safe to make lots of them over the course + * of an application's life and just drop references to them when the job is done. + */ +class LogSpan { + constructor(parent, name) { + this.parent = parent; + this.name = name + ":"; + } + trace(...msg) { + this.parent.trace(this.name, ...msg); + } + debug(...msg) { + this.parent.debug(this.name, ...msg); + } + info(...msg) { + this.parent.info(this.name, ...msg); + } + warn(...msg) { + this.parent.warn(this.name, ...msg); + } + error(...msg) { + this.parent.error(this.name, ...msg); + } +} +exports.LogSpan = LogSpan; +//# sourceMappingURL=logger.js.map /***/ }), /***/ 1354: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - Object.defineProperty(exports, "__esModule", ({ value: true })); var _exportNames = { - ContentHelpers: true, - request: true, - getRequest: true, - wrapRequest: true, setCryptoStoreFactory: true, createClient: true, + createRoomWidgetClient: true, + TypedEventEmitter: true, + LocationAssetType: true, + IdentityProviderBrand: true, + SSOAction: true, + ContentHelpers: true, + SecretStorage: true, createNewMatrixCall: true, - setMatrixCallAudioOutput: true, - setMatrixCallAudioInput: true, - setMatrixCallVideoInput: true + CallEvent: true, + GroupCall: true, + GroupCallEvent: true, + GroupCallIntent: true, + GroupCallState: true, + GroupCallType: true, + GroupCallStatsReportEvent: true, + CryptoEvent: true, + SyncState: true, + SetPresence: true, + SlidingSyncEvent: true, + MediaHandlerEvent: true, + CallFeedEvent: true, + StatsReport: true, + Relations: true, + RelationsEvent: true, + LocalStorageErrors: true, + DeviceVerificationStatus: true, + Crypto: true }; -exports.request = request; -exports.getRequest = getRequest; -exports.wrapRequest = wrapRequest; -exports.setCryptoStoreFactory = setCryptoStoreFactory; +Object.defineProperty(exports, "CallEvent", ({ + enumerable: true, + get: function () { + return _call.CallEvent; + } +})); +Object.defineProperty(exports, "CallFeedEvent", ({ + enumerable: true, + get: function () { + return _callFeed.CallFeedEvent; + } +})); +exports.Crypto = exports.ContentHelpers = void 0; +Object.defineProperty(exports, "CryptoEvent", ({ + enumerable: true, + get: function () { + return _crypto2.CryptoEvent; + } +})); +Object.defineProperty(exports, "DeviceVerificationStatus", ({ + enumerable: true, + get: function () { + return _Crypto.DeviceVerificationStatus; + } +})); +Object.defineProperty(exports, "GroupCall", ({ + enumerable: true, + get: function () { + return _groupCall.GroupCall; + } +})); +Object.defineProperty(exports, "GroupCallEvent", ({ + enumerable: true, + get: function () { + return _groupCall.GroupCallEvent; + } +})); +Object.defineProperty(exports, "GroupCallIntent", ({ + enumerable: true, + get: function () { + return _groupCall.GroupCallIntent; + } +})); +Object.defineProperty(exports, "GroupCallState", ({ + enumerable: true, + get: function () { + return _groupCall.GroupCallState; + } +})); +Object.defineProperty(exports, "GroupCallStatsReportEvent", ({ + enumerable: true, + get: function () { + return _groupCall.GroupCallStatsReportEvent; + } +})); +Object.defineProperty(exports, "GroupCallType", ({ + enumerable: true, + get: function () { + return _groupCall.GroupCallType; + } +})); +Object.defineProperty(exports, "IdentityProviderBrand", ({ + enumerable: true, + get: function () { + return _auth.IdentityProviderBrand; + } +})); +Object.defineProperty(exports, "LocalStorageErrors", ({ + enumerable: true, + get: function () { + return _localStorageEventsEmitter.LocalStorageErrors; + } +})); +Object.defineProperty(exports, "LocationAssetType", ({ + enumerable: true, + get: function () { + return _location.LocationAssetType; + } +})); +Object.defineProperty(exports, "MediaHandlerEvent", ({ + enumerable: true, + get: function () { + return _mediaHandler.MediaHandlerEvent; + } +})); +Object.defineProperty(exports, "Relations", ({ + enumerable: true, + get: function () { + return _relations.Relations; + } +})); +Object.defineProperty(exports, "RelationsEvent", ({ + enumerable: true, + get: function () { + return _relations.RelationsEvent; + } +})); +Object.defineProperty(exports, "SSOAction", ({ + enumerable: true, + get: function () { + return _auth.SSOAction; + } +})); +exports.SecretStorage = void 0; +Object.defineProperty(exports, "SetPresence", ({ + enumerable: true, + get: function () { + return _sync.SetPresence; + } +})); +Object.defineProperty(exports, "SlidingSyncEvent", ({ + enumerable: true, + get: function () { + return _slidingSync.SlidingSyncEvent; + } +})); +Object.defineProperty(exports, "StatsReport", ({ + enumerable: true, + get: function () { + return _statsReport.StatsReport; + } +})); +Object.defineProperty(exports, "SyncState", ({ + enumerable: true, + get: function () { + return _sync.SyncState; + } +})); +Object.defineProperty(exports, "TypedEventEmitter", ({ + enumerable: true, + get: function () { + return _typedEventEmitter.TypedEventEmitter; + } +})); exports.createClient = createClient; Object.defineProperty(exports, "createNewMatrixCall", ({ enumerable: true, @@ -52027,33 +161972,13 @@ Object.defineProperty(exports, "createNewMatrixCall", ({ return _call.createNewMatrixCall; } })); -Object.defineProperty(exports, "setMatrixCallAudioOutput", ({ - enumerable: true, - get: function () { - return _call.setAudioOutput; - } -})); -Object.defineProperty(exports, "setMatrixCallAudioInput", ({ - enumerable: true, - get: function () { - return _call.setAudioInput; - } -})); -Object.defineProperty(exports, "setMatrixCallVideoInput", ({ - enumerable: true, - get: function () { - return _call.setVideoInput; - } -})); -exports.ContentHelpers = void 0; - -var _interopRequireWildcard2 = _interopRequireDefault(__webpack_require__(8429)); - -var _memoryCryptoStore = __webpack_require__(5881); - +exports.createRoomWidgetClient = createRoomWidgetClient; +exports.setCryptoStoreFactory = setCryptoStoreFactory; +var _memoryCryptoStore = __nccwpck_require__(5881); Object.keys(_memoryCryptoStore).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _memoryCryptoStore[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52061,12 +161986,11 @@ Object.keys(_memoryCryptoStore).forEach(function (key) { } }); }); - -var _memory = __webpack_require__(7309); - +var _memory = __nccwpck_require__(7309); Object.keys(_memory).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _memory[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52074,12 +161998,11 @@ Object.keys(_memory).forEach(function (key) { } }); }); - -var _scheduler = __webpack_require__(8314); - +var _scheduler = __nccwpck_require__(8314); Object.keys(_scheduler).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _scheduler[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52087,12 +162010,11 @@ Object.keys(_scheduler).forEach(function (key) { } }); }); - -var _client = __webpack_require__(9058); - +var _client = __nccwpck_require__(9058); Object.keys(_client).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _client[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52100,12 +162022,23 @@ Object.keys(_client).forEach(function (key) { } }); }); - -var _httpApi = __webpack_require__(263); - +var _embedded = __nccwpck_require__(7742); +Object.keys(_embedded).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _embedded[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _embedded[key]; + } + }); +}); +var _httpApi = __nccwpck_require__(7082); Object.keys(_httpApi).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _httpApi[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52113,12 +162046,11 @@ Object.keys(_httpApi).forEach(function (key) { } }); }); - -var _autodiscovery = __webpack_require__(4514); - +var _autodiscovery = __nccwpck_require__(4514); Object.keys(_autodiscovery).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _autodiscovery[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52126,12 +162058,11 @@ Object.keys(_autodiscovery).forEach(function (key) { } }); }); - -var _syncAccumulator = __webpack_require__(2768); - +var _syncAccumulator = __nccwpck_require__(2768); Object.keys(_syncAccumulator).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _syncAccumulator[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52139,12 +162070,11 @@ Object.keys(_syncAccumulator).forEach(function (key) { } }); }); - -var _errors = __webpack_require__(1905); - +var _errors = __nccwpck_require__(1905); Object.keys(_errors).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _errors[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52152,12 +162082,35 @@ Object.keys(_errors).forEach(function (key) { } }); }); - -var _event = __webpack_require__(9564); - +var _base = __nccwpck_require__(7477); +Object.keys(_base).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _base[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _base[key]; + } + }); +}); +var _beacon = __nccwpck_require__(23); +Object.keys(_beacon).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _beacon[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _beacon[key]; + } + }); +}); +var _event = __nccwpck_require__(9564); Object.keys(_event).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _event[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52165,12 +162118,11 @@ Object.keys(_event).forEach(function (key) { } }); }); - -var _room = __webpack_require__(7688); - +var _room = __nccwpck_require__(7688); Object.keys(_room).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _room[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52178,25 +162130,11 @@ Object.keys(_room).forEach(function (key) { } }); }); - -var _group = __webpack_require__(2390); - -Object.keys(_group).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _group[key]; - } - }); -}); - -var _eventTimeline = __webpack_require__(2763); - +var _eventTimeline = __nccwpck_require__(2763); Object.keys(_eventTimeline).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _eventTimeline[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52204,12 +162142,11 @@ Object.keys(_eventTimeline).forEach(function (key) { } }); }); - -var _eventTimelineSet = __webpack_require__(7256); - +var _eventTimelineSet = __nccwpck_require__(7256); Object.keys(_eventTimelineSet).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _eventTimelineSet[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52217,12 +162154,23 @@ Object.keys(_eventTimelineSet).forEach(function (key) { } }); }); - -var _roomMember = __webpack_require__(7024); - +var _poll = __nccwpck_require__(5333); +Object.keys(_poll).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _poll[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _poll[key]; + } + }); +}); +var _roomMember = __nccwpck_require__(7024); Object.keys(_roomMember).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _roomMember[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52230,12 +162178,11 @@ Object.keys(_roomMember).forEach(function (key) { } }); }); - -var _roomState = __webpack_require__(1513); - +var _roomState = __nccwpck_require__(1513); Object.keys(_roomState).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _roomState[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52243,12 +162190,35 @@ Object.keys(_roomState).forEach(function (key) { } }); }); - -var _user = __webpack_require__(1104); - +var _thread = __nccwpck_require__(3379); +Object.keys(_thread).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _thread[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _thread[key]; + } + }); +}); +var _typedEventEmitter = __nccwpck_require__(7150); +Object.keys(_typedEventEmitter).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _typedEventEmitter[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _typedEventEmitter[key]; + } + }); +}); +var _user = __nccwpck_require__(1104); Object.keys(_user).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _user[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52256,12 +162226,47 @@ Object.keys(_user).forEach(function (key) { } }); }); - -var _filter = __webpack_require__(3768); - +var _device = __nccwpck_require__(7482); +Object.keys(_device).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _device[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _device[key]; + } + }); +}); +var _searchResult = __nccwpck_require__(8543); +Object.keys(_searchResult).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _searchResult[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _searchResult[key]; + } + }); +}); +var _oidc = __nccwpck_require__(1827); +Object.keys(_oidc).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _oidc[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _oidc[key]; + } + }); +}); +var _filter = __nccwpck_require__(3768); Object.keys(_filter).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _filter[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52269,12 +162274,11 @@ Object.keys(_filter).forEach(function (key) { } }); }); - -var _timelineWindow = __webpack_require__(3376); - +var _timelineWindow = __nccwpck_require__(4876); Object.keys(_timelineWindow).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _timelineWindow[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52282,12 +162286,11 @@ Object.keys(_timelineWindow).forEach(function (key) { } }); }); - -var _interactiveAuth = __webpack_require__(8714); - +var _interactiveAuth = __nccwpck_require__(8714); Object.keys(_interactiveAuth).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _interactiveAuth[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52295,12 +162298,11 @@ Object.keys(_interactiveAuth).forEach(function (key) { } }); }); - -var _serviceTypes = __webpack_require__(2967); - +var _serviceTypes = __nccwpck_require__(2967); Object.keys(_serviceTypes).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _serviceTypes[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52308,12 +162310,11 @@ Object.keys(_serviceTypes).forEach(function (key) { } }); }); - -var _indexeddb = __webpack_require__(9252); - +var _indexeddb = __nccwpck_require__(9252); Object.keys(_indexeddb).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _indexeddb[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52321,25 +162322,23 @@ Object.keys(_indexeddb).forEach(function (key) { } }); }); - -var _webstorage = __webpack_require__(4974); - -Object.keys(_webstorage).forEach(function (key) { +var _localStorageCryptoStore = __nccwpck_require__(8143); +Object.keys(_localStorageCryptoStore).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _localStorageCryptoStore[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { - return _webstorage[key]; + return _localStorageCryptoStore[key]; } }); }); - -var _indexeddbCryptoStore = __webpack_require__(5651); - +var _indexeddbCryptoStore = __nccwpck_require__(5651); Object.keys(_indexeddbCryptoStore).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _indexeddbCryptoStore[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52347,12 +162346,11 @@ Object.keys(_indexeddbCryptoStore).forEach(function (key) { } }); }); - -var _contentRepo = __webpack_require__(4233); - +var _contentRepo = __nccwpck_require__(4233); Object.keys(_contentRepo).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _contentRepo[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { @@ -52360,13 +162358,278 @@ Object.keys(_contentRepo).forEach(function (key) { } }); }); - -var _call = __webpack_require__(7823); - +var _common = __nccwpck_require__(7480); +Object.keys(_common).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _common[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _common[key]; + } + }); +}); +var _uia = __nccwpck_require__(7821); +Object.keys(_uia).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _uia[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _uia[key]; + } + }); +}); +var _event2 = __nccwpck_require__(7487); +Object.keys(_event2).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _event2[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _event2[key]; + } + }); +}); +var _PushRules = __nccwpck_require__(5393); +Object.keys(_PushRules).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _PushRules[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _PushRules[key]; + } + }); +}); +var _partials = __nccwpck_require__(3653); +Object.keys(_partials).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _partials[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _partials[key]; + } + }); +}); +var _requests = __nccwpck_require__(7878); +Object.keys(_requests).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _requests[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _requests[key]; + } + }); +}); +var _search = __nccwpck_require__(9245); +Object.keys(_search).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _search[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _search[key]; + } + }); +}); +var _beacon2 = __nccwpck_require__(8544); +Object.keys(_beacon2).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _beacon2[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _beacon2[key]; + } + }); +}); +var _topic = __nccwpck_require__(1489); +Object.keys(_topic).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _topic[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _topic[key]; + } + }); +}); +var _location = __nccwpck_require__(1028); +Object.keys(_location).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _location[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _location[key]; + } + }); +}); +var _threepids = __nccwpck_require__(6969); +Object.keys(_threepids).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _threepids[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _threepids[key]; + } + }); +}); +var _auth = __nccwpck_require__(4291); +Object.keys(_auth).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _auth[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _auth[key]; + } + }); +}); +var _polls = __nccwpck_require__(6156); +Object.keys(_polls).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _polls[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _polls[key]; + } + }); +}); +var _local_notifications = __nccwpck_require__(4999); +Object.keys(_local_notifications).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _local_notifications[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _local_notifications[key]; + } + }); +}); +var _registration = __nccwpck_require__(6647); +Object.keys(_registration).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _registration[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _registration[key]; + } + }); +}); +var _read_receipts = __nccwpck_require__(3255); +Object.keys(_read_receipts).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _read_receipts[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _read_receipts[key]; + } + }); +}); +var _crypto = __nccwpck_require__(153); +Object.keys(_crypto).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _crypto[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _crypto[key]; + } + }); +}); +var _extensible_events = __nccwpck_require__(8572); +Object.keys(_extensible_events).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _extensible_events[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _extensible_events[key]; + } + }); +}); +var _IIdentityServerProvider = __nccwpck_require__(4020); +Object.keys(_IIdentityServerProvider).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _IIdentityServerProvider[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _IIdentityServerProvider[key]; + } + }); +}); +var _roomSummary = __nccwpck_require__(6518); +Object.keys(_roomSummary).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _roomSummary[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _roomSummary[key]; + } + }); +}); +var _eventStatus = __nccwpck_require__(8615); +Object.keys(_eventStatus).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _eventStatus[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _eventStatus[key]; + } + }); +}); +var _ContentHelpers = _interopRequireWildcard(__nccwpck_require__(4000)); +exports.ContentHelpers = _ContentHelpers; +var _SecretStorage = _interopRequireWildcard(__nccwpck_require__(8597)); +exports.SecretStorage = _SecretStorage; +var _call = __nccwpck_require__(9690); +var _groupCall = __nccwpck_require__(9843); +var _crypto2 = __nccwpck_require__(9839); +var _sync = __nccwpck_require__(9779); +var _slidingSync = __nccwpck_require__(4885); +var _mediaHandler = __nccwpck_require__(3866); +var _callFeed = __nccwpck_require__(41); +var _statsReport = __nccwpck_require__(4491); +var _relations = __nccwpck_require__(7920); +var _localStorageEventsEmitter = __nccwpck_require__(4172); +var _Crypto = _interopRequireWildcard(__nccwpck_require__(3819)); +exports.Crypto = _Crypto; +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; } /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015-2022 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -52380,139 +162643,2271 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const ContentHelpers = Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(__webpack_require__(4000))); -exports.ContentHelpers = ContentHelpers; -// expose the underlying request object so different environments can use -// different request libs (e.g. request or browser-request) -let requestInstance; + +// used to be located here + /** - * The function used to perform HTTP requests. Only use this if you want to - * use a different HTTP library, e.g. Angular's $http. This should - * be set prior to calling {@link createClient}. - * @param {requestFunction} r The request function to use. + * Types supporting cryptography. + * + * The most important is {@link Crypto.CryptoApi}, an instance of which can be retrieved via + * {@link MatrixClient.getCrypto}. */ -function request(r) { - requestInstance = r; -} /** - * Return the currently-set request function. - * @return {requestFunction} The current request function. + * Backwards compatibility re-export + * @internal + * @deprecated use {@link Crypto.CryptoApi} */ - -function getRequest() { - return requestInstance; -} /** - * Apply wrapping code around the request function. The wrapper function is - * installed as the new request handler, and when invoked it is passed the - * previous value, along with the options and callback arguments. - * @param {requestWrapperFunction} wrapper The wrapping function. + * Backwards compatibility re-export + * @internal + * @deprecated use {@link Crypto.DeviceVerificationStatus} */ - -function wrapRequest(wrapper) { - const origRequest = requestInstance; - - requestInstance = function (options, callback) { - return wrapper(origRequest, options, callback); - }; -} - let cryptoStoreFactory = () => new _memoryCryptoStore.MemoryCryptoStore(); + /** * Configure a different factory to be used for creating crypto stores * - * @param {Function} fac a function which will return a new - * {@link module:crypto.store.base~CryptoStore}. + * @param fac - a function which will return a new `CryptoStore` */ - - function setCryptoStoreFactory(fac) { cryptoStoreFactory = fac; } +function amendClientOpts(opts) { + var _opts$store, _opts$scheduler, _opts$cryptoStore; + opts.store = (_opts$store = opts.store) !== null && _opts$store !== void 0 ? _opts$store : new _memory.MemoryStore({ + localStorage: global.localStorage + }); + opts.scheduler = (_opts$scheduler = opts.scheduler) !== null && _opts$scheduler !== void 0 ? _opts$scheduler : new _scheduler.MatrixScheduler(); + opts.cryptoStore = (_opts$cryptoStore = opts.cryptoStore) !== null && _opts$cryptoStore !== void 0 ? _opts$cryptoStore : cryptoStoreFactory(); + return opts; +} /** - * Construct a Matrix Client. Similar to {@link module:client.MatrixClient} + * Construct a Matrix Client. Similar to {@link MatrixClient} * except that the 'request', 'store' and 'scheduler' dependencies are satisfied. - * @param {(Object|string)} opts The configuration options for this client. If - * this is a string, it is assumed to be the base URL. These configuration - * options will be passed directly to {@link module:client.MatrixClient}. - * @param {Object} opts.store If not set, defaults to - * {@link module:store/memory.MemoryStore}. - * @param {Object} opts.scheduler If not set, defaults to - * {@link module:scheduler~MatrixScheduler}. - * @param {requestFunction} opts.request If not set, defaults to the function - * supplied to {@link request} which defaults to the request module from NPM. + * @param opts - The configuration options for this client. These configuration + * options will be passed directly to {@link MatrixClient}. * - * @param {module:crypto.store.base~CryptoStore=} opts.cryptoStore - * crypto store implementation. Calls the factory supplied to - * {@link setCryptoStoreFactory} if unspecified; or if no factory has been - * specified, uses a default implementation (indexeddb in the browser, - * in-memory otherwise). - * - * @return {MatrixClient} A new matrix client. - * @see {@link module:client.MatrixClient} for the full list of options for - * opts. + * @returns A new matrix client. + * @see {@link MatrixClient} for the full list of options for + * `opts`. */ function createClient(opts) { - if (typeof opts === "string") { - opts = { - "baseUrl": opts + return new _client.MatrixClient(amendClientOpts(opts)); +} + +/** + * Construct a Matrix Client that works in a widget. + * This client has a subset of features compared to a full client. + * It uses the widget-api to communicate with matrix. (widget \<-\> client \<-\> homeserver) + * @returns A new matrix client with a subset of features. + * @param opts - The configuration options for this client. These configuration + * options will be passed directly to {@link MatrixClient}. + * @param widgetApi - The widget api to use for communication. + * @param capabilities - The capabilities the widget client will request. + * @param roomId - The room id the widget is associated with. + * @param sendContentLoaded - Whether to send a content loaded widget action immediately after initial setup. + * Set to `false` if the widget uses `waitForIFrameLoad=true` (in this case the client does not expect a content loaded action at all), + * or if the the widget wants to send the `ContentLoaded` action at a later point in time after the initial setup. + */ +function createRoomWidgetClient(widgetApi, capabilities, roomId, opts, sendContentLoaded = true) { + return new _embedded.RoomWidgetClient(widgetApi, capabilities, roomId, amendClientOpts(opts), sendContentLoaded); +} +//# sourceMappingURL=matrix.js.map + +/***/ }), + +/***/ 9004: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CallMembership = void 0; +var _utils = __nccwpck_require__(2557); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Represents an entry in the memberships section of an m.call.member event as it is on the wire + +class CallMembership { + static equal(a, b) { + return (0, _utils.deepCompare)(a.data, b.data); + } + constructor(parentEvent, data) { + this.parentEvent = parentEvent; + this.data = data; + if (!(data.expires || data.expires_ts)) { + throw new Error("Malformed membership: expires_ts or expires must be present"); + } + if (data.expires) { + if (typeof data.expires !== "number") { + throw new Error("Malformed membership: expires must be numeric"); + } + } + if (data.expires_ts) { + if (typeof data.expires_ts !== "number") { + throw new Error("Malformed membership: expires_ts must be numeric"); + } + } + if (typeof data.device_id !== "string") throw new Error("Malformed membership event: device_id must be string"); + if (typeof data.call_id !== "string") throw new Error("Malformed membership event: call_id must be string"); + if (typeof data.scope !== "string") throw new Error("Malformed membership event: scope must be string"); + if (!parentEvent.getSender()) throw new Error("Invalid parent event: sender is null"); + } + get sender() { + return this.parentEvent.getSender(); + } + get callId() { + return this.data.call_id; + } + get deviceId() { + return this.data.device_id; + } + get application() { + return this.data.application; + } + get scope() { + return this.data.scope; + } + get membershipID() { + return this.data.membershipID; + } + createdTs() { + var _this$data$created_ts; + return (_this$data$created_ts = this.data.created_ts) !== null && _this$data$created_ts !== void 0 ? _this$data$created_ts : this.parentEvent.getTs(); + } + getAbsoluteExpiry() { + if (this.data.expires) { + return this.createdTs() + this.data.expires; + } else { + // We know it exists because we checked for this in the constructor. + return this.data.expires_ts; + } + } + + // gets the expiry time of the event, converted into the device's local time + getLocalExpiry() { + if (this.data.expires) { + const relativeCreationTime = this.parentEvent.getTs() - this.createdTs(); + const localCreationTs = this.parentEvent.localTimestamp - relativeCreationTime; + return localCreationTs + this.data.expires; + } else { + // With expires_ts we cannot convert to local time. + // TODO: Check the server timestamp and compute a diff to local time. + return this.data.expires_ts; + } + } + getMsUntilExpiry() { + return this.getLocalExpiry() - Date.now(); + } + isExpired() { + return this.getMsUntilExpiry() <= 0; + } + getActiveFoci() { + var _this$data$foci_activ; + return (_this$data$foci_activ = this.data.foci_active) !== null && _this$data$foci_activ !== void 0 ? _this$data$foci_activ : []; + } +} +exports.CallMembership = CallMembership; +//# sourceMappingURL=CallMembership.js.map + +/***/ }), + +/***/ 6878: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MatrixRTCSessionEvent = exports.MatrixRTCSession = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _typedEventEmitter = __nccwpck_require__(7150); +var _eventTimeline = __nccwpck_require__(2763); +var _event = __nccwpck_require__(7487); +var _CallMembership = __nccwpck_require__(9004); +var _roomState = __nccwpck_require__(1513); +var _randomstring = __nccwpck_require__(2495); +var _base = __nccwpck_require__(7477); +var _membership = __nccwpck_require__(9225); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const MEMBERSHIP_EXPIRY_TIME = 60 * 60 * 1000; +const MEMBER_EVENT_CHECK_PERIOD = 2 * 60 * 1000; // How often we check to see if we need to re-send our member event +const CALL_MEMBER_EVENT_RETRY_DELAY_MIN = 3000; +const UPDATE_ENCRYPTION_KEY_THROTTLE = 3000; + +// A delay after a member leaves before we create and publish a new key, because people +// tend to leave calls at the same time +const MAKE_KEY_DELAY = 3000; +// The delay between creating and sending a new key and starting to encrypt with it. This gives others +// a chance to receive the new key to minimise the chance they don't get media they can't decrypt. +// The total time between a member leaving and the call switching to new keys is therefore +// MAKE_KEY_DELAY + SEND_KEY_DELAY +const USE_KEY_DELAY = 5000; +const getParticipantId = (userId, deviceId) => `${userId}:${deviceId}`; +const getParticipantIdFromMembership = m => getParticipantId(m.sender, m.deviceId); +function keysEqual(a, b) { + if (a === b) return true; + return a && b && a.length === b.length && a.every((x, i) => x === b[i]); +} +let MatrixRTCSessionEvent = exports.MatrixRTCSessionEvent = /*#__PURE__*/function (MatrixRTCSessionEvent) { + MatrixRTCSessionEvent["MembershipsChanged"] = "memberships_changed"; + MatrixRTCSessionEvent["JoinStateChanged"] = "join_state_changed"; + MatrixRTCSessionEvent["EncryptionKeyChanged"] = "encryption_key_changed"; + return MatrixRTCSessionEvent; +}({}); +/** + * A MatrixRTCSession manages the membership & properties of a MatrixRTC session. + * This class doesn't deal with media at all, just membership & properties of a session. + */ +class MatrixRTCSession extends _typedEventEmitter.TypedEventEmitter { + /** + * The callId (sessionId) of the call. + * + * It can be undefined since the callId is only known once the first membership joins. + * The callId is the property that, per definition, groups memberships into one call. + */ + get callId() { + return this._callId; + } + /** + * Returns all the call memberships for a room, oldest first + */ + static callMembershipsForRoom(room) { + const roomState = room.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + if (!roomState) { + _logger.logger.warn("Couldn't get state for room " + room.roomId); + throw new Error("Could't get state for room " + room.roomId); + } + const callMemberEvents = roomState.getStateEvents(_event.EventType.GroupCallMemberPrefix); + const callMemberships = []; + for (const memberEvent of callMemberEvents) { + const eventMemberships = memberEvent.getContent()["memberships"]; + if (eventMemberships === undefined) { + continue; + } + if (!Array.isArray(eventMemberships)) { + _logger.logger.warn(`Malformed member event from ${memberEvent.getSender()}: memberships is not an array`); + continue; + } + for (const membershipData of eventMemberships) { + try { + var _membership$sender; + const membership = new _CallMembership.CallMembership(memberEvent, membershipData); + if (membership.callId !== "" || membership.scope !== "m.room") { + // for now, just ignore anything that isn't the a room scope call + _logger.logger.info(`Ignoring user-scoped call`); + continue; + } + if (membership.isExpired()) { + _logger.logger.info(`Ignoring expired device membership ${membership.sender}/${membership.deviceId}`); + continue; + } + if (!room.hasMembershipState((_membership$sender = membership.sender) !== null && _membership$sender !== void 0 ? _membership$sender : "", _membership.KnownMembership.Join)) { + _logger.logger.info(`Ignoring membership of user ${membership.sender} who is not in the room.`); + continue; + } + callMemberships.push(membership); + } catch (e) { + _logger.logger.warn("Couldn't construct call membership: ", e); + } + } + } + callMemberships.sort((a, b) => a.createdTs() - b.createdTs()); + if (callMemberships.length > 1) { + _logger.logger.debug(`Call memberships in room ${room.roomId}, in order: `, callMemberships.map(m => [m.createdTs(), m.sender])); + } + return callMemberships; + } + + /** + * Return the MatrixRTC session for the room, whether there are currently active members or not + */ + static roomSessionForRoom(client, room) { + const callMemberships = MatrixRTCSession.callMembershipsForRoom(room); + return new MatrixRTCSession(client, room, callMemberships); + } + constructor(client, room, memberships) { + var _memberships$; + super(); + // The session Id of the call, this is the call_id of the call Member event. + // How many ms after we joined the call, that our membership should expire, or undefined + // if we're not yet joined + // An identifier for our membership of the call. This will allow us to easily recognise + // whether a membership was sent by this session or is stale from some other time. + // It also forces our membership events to be unique, because otherwise we could try + // to overwrite a membership from a previous session but it would do nothing because the + // event content would be identical. We need the origin_server_ts to update though, so + // forcing unique content fixes this. + (0, _defineProperty2.default)(this, "setNewKeyTimeouts", new Set()); + (0, _defineProperty2.default)(this, "updateCallMembershipRunning", false); + (0, _defineProperty2.default)(this, "needCallMembershipUpdate", false); + (0, _defineProperty2.default)(this, "manageMediaKeys", false); + // userId:deviceId => array of keys + (0, _defineProperty2.default)(this, "encryptionKeys", new Map()); + /** + * Re-sends the encryption keys room event + */ + (0, _defineProperty2.default)(this, "sendEncryptionKeysEvent", async () => { + if (this.keysEventUpdateTimeout !== undefined) { + clearTimeout(this.keysEventUpdateTimeout); + this.keysEventUpdateTimeout = undefined; + } + this.lastEncryptionKeyUpdateRequest = Date.now(); + _logger.logger.info("Sending encryption keys event"); + if (!this.isJoined()) return; + const userId = this.client.getUserId(); + const deviceId = this.client.getDeviceId(); + if (!userId) throw new Error("No userId"); + if (!deviceId) throw new Error("No deviceId"); + const myKeys = this.getKeysForParticipant(userId, deviceId); + if (!myKeys) { + _logger.logger.warn("Tried to send encryption keys event but no keys found!"); + return; + } + try { + await this.client.sendEvent(this.room.roomId, _event.EventType.CallEncryptionKeysPrefix, { + keys: myKeys.map((key, index) => { + return { + index, + key: (0, _base.encodeUnpaddedBase64)(key) + }; + }), + device_id: deviceId, + call_id: "" + }); + _logger.logger.debug(`Embedded-E2EE-LOG updateEncryptionKeyEvent participantId=${userId}:${deviceId} numSent=${myKeys.length}`, this.encryptionKeys); + } catch (error) { + const matrixError = error; + if (matrixError.event) { + // cancel the pending event: we'll just generate a new one with our latest + // keys when we resend + this.client.cancelPendingEvent(matrixError.event); + } + if (this.keysEventUpdateTimeout === undefined) { + var _matrixError$data$ret, _matrixError$data; + const resendDelay = (_matrixError$data$ret = (_matrixError$data = matrixError.data) === null || _matrixError$data === void 0 ? void 0 : _matrixError$data.retry_after_ms) !== null && _matrixError$data$ret !== void 0 ? _matrixError$data$ret : 5000; + _logger.logger.warn(`Failed to send m.call.encryption_key, retrying in ${resendDelay}`, error); + this.keysEventUpdateTimeout = setTimeout(this.sendEncryptionKeysEvent, resendDelay); + } else { + _logger.logger.info("Not scheduling key resend as another re-send is already pending"); + } + } + }); + (0, _defineProperty2.default)(this, "onCallEncryption", event => { + const userId = event.getSender(); + const content = event.getContent(); + const deviceId = content["device_id"]; + const callId = content["call_id"]; + if (!userId) { + _logger.logger.warn(`Received m.call.encryption_keys with no userId: callId=${callId}`); + return; + } + + // We currently only handle callId = "" (which is the default for room scoped calls) + if (callId !== "") { + _logger.logger.warn(`Received m.call.encryption_keys with unsupported callId: userId=${userId}, deviceId=${deviceId}, callId=${callId}`); + return; + } + if (!Array.isArray(content.keys)) { + _logger.logger.warn(`Received m.call.encryption_keys where keys wasn't an array: callId=${callId}`); + return; + } + if (userId === this.client.getUserId() && deviceId === this.client.getDeviceId()) { + // We store our own sender key in the same set along with keys from others, so it's + // important we don't allow our own keys to be set by one of these events (apart from + // the fact that we don't need it anyway because we already know our own keys). + _logger.logger.info("Ignoring our own keys event"); + return; + } + for (const key of content.keys) { + if (!key) { + _logger.logger.info("Ignoring false-y key in keys event"); + continue; + } + const encryptionKey = key.key; + const encryptionKeyIndex = key.index; + if (!encryptionKey || encryptionKeyIndex === undefined || encryptionKeyIndex === null || callId === undefined || callId === null || typeof deviceId !== "string" || typeof callId !== "string" || typeof encryptionKey !== "string" || typeof encryptionKeyIndex !== "number") { + _logger.logger.warn(`Malformed call encryption_key: userId=${userId}, deviceId=${deviceId}, encryptionKeyIndex=${encryptionKeyIndex} callId=${callId}`); + } else { + _logger.logger.debug(`Embedded-E2EE-LOG onCallEncryption userId=${userId}:${deviceId} encryptionKeyIndex=${encryptionKeyIndex}`, this.encryptionKeys); + this.setEncryptionKey(userId, deviceId, encryptionKeyIndex, encryptionKey); + } + } + }); + (0, _defineProperty2.default)(this, "onMembershipUpdate", () => { + var _this$_callId, _this$memberships$; + const oldMemberships = this.memberships; + this.memberships = MatrixRTCSession.callMembershipsForRoom(this.room); + this._callId = (_this$_callId = this._callId) !== null && _this$_callId !== void 0 ? _this$_callId : (_this$memberships$ = this.memberships[0]) === null || _this$memberships$ === void 0 ? void 0 : _this$memberships$.callId; + const changed = oldMemberships.length != this.memberships.length || oldMemberships.some((m, i) => !_CallMembership.CallMembership.equal(m, this.memberships[i])); + if (changed) { + _logger.logger.info(`Memberships for call in room ${this.room.roomId} have changed: emitting`); + this.emit(MatrixRTCSessionEvent.MembershipsChanged, oldMemberships, this.memberships); + } + const isMyMembership = m => m.sender === this.client.getUserId() && m.deviceId === this.client.getDeviceId(); + if (this.manageMediaKeys && this.isJoined() && this.makeNewKeyTimeout === undefined) { + const oldMebershipIds = new Set(oldMemberships.filter(m => !isMyMembership(m)).map(getParticipantIdFromMembership)); + const newMebershipIds = new Set(this.memberships.filter(m => !isMyMembership(m)).map(getParticipantIdFromMembership)); + const anyLeft = Array.from(oldMebershipIds).some(x => !newMebershipIds.has(x)); + const anyJoined = Array.from(newMebershipIds).some(x => !oldMebershipIds.has(x)); + if (anyLeft) { + _logger.logger.debug(`Member(s) have left: queueing sender key rotation`); + this.makeNewKeyTimeout = setTimeout(this.onRotateKeyTimeout, MAKE_KEY_DELAY); + } else if (anyJoined) { + _logger.logger.debug(`New member(s) have joined: re-sending keys`); + this.requestKeyEventSend(); + } + } + this.setExpiryTimer(); + }); + (0, _defineProperty2.default)(this, "triggerCallMembershipEventUpdate", async () => { + if (this.updateCallMembershipRunning) { + this.needCallMembershipUpdate = true; + return; + } + this.updateCallMembershipRunning = true; + try { + // if anything triggers an update while the update is running, do another update afterwards + do { + this.needCallMembershipUpdate = false; + await this.updateCallMembershipEvent(); + } while (this.needCallMembershipUpdate); + } finally { + this.updateCallMembershipRunning = false; + } + }); + (0, _defineProperty2.default)(this, "onRotateKeyTimeout", () => { + if (!this.manageMediaKeys) return; + this.makeNewKeyTimeout = undefined; + _logger.logger.info("Making new sender key for key rotation"); + this.makeNewSenderKey(true); + // send immediately: if we're about to start sending with a new key, it's + // important we get it out to others as soon as we can. + this.sendEncryptionKeysEvent(); + }); + this.client = client; + this.room = room; + this.memberships = memberships; + this._callId = (_memberships$ = memberships[0]) === null || _memberships$ === void 0 ? void 0 : _memberships$.callId; + const roomState = this.room.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + roomState === null || roomState === void 0 || roomState.on(_roomState.RoomStateEvent.Members, this.onMembershipUpdate); + this.setExpiryTimer(); + } + + /* + * Returns true if we intend to be participating in the MatrixRTC session. + */ + isJoined() { + return this.relativeExpiry !== undefined; + } + + /** + * Performs cleanup & removes timers for client shutdown + */ + async stop() { + await this.leaveRoomSession(1000); + if (this.expiryTimeout) { + clearTimeout(this.expiryTimeout); + this.expiryTimeout = undefined; + } + if (this.memberEventTimeout) { + clearTimeout(this.memberEventTimeout); + this.memberEventTimeout = undefined; + } + const roomState = this.room.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + roomState === null || roomState === void 0 || roomState.off(_roomState.RoomStateEvent.Members, this.onMembershipUpdate); + } + + /** + * Announces this user and device as joined to the MatrixRTC session, + * and continues to update the membership event to keep it valid until + * leaveRoomSession() is called + * This will not subscribe to updates: remember to call subscribe() separately if + * desired. + * This method will return immediately and the session will be joined in the background. + * + * @param activeFoci - The list of foci to set as currently active in the call member event + * @param manageMediaKeys - If true, generate and share a a media key for this participant, + * and emit MatrixRTCSessionEvent.EncryptionKeyChanged when + * media keys for other participants become available. + */ + joinRoomSession(activeFoci, manageMediaKeys) { + if (this.isJoined()) { + _logger.logger.info(`Already joined to session in room ${this.room.roomId}: ignoring join call`); + return; + } + _logger.logger.info(`Joining call session in room ${this.room.roomId} with manageMediaKeys=${manageMediaKeys}`); + this.activeFoci = activeFoci; + this.relativeExpiry = MEMBERSHIP_EXPIRY_TIME; + this.manageMediaKeys = manageMediaKeys !== null && manageMediaKeys !== void 0 ? manageMediaKeys : false; + this.membershipId = (0, _randomstring.randomString)(5); + this.emit(MatrixRTCSessionEvent.JoinStateChanged, true); + if (manageMediaKeys) { + this.makeNewSenderKey(); + this.requestKeyEventSend(); + } + // We don't wait for this, mostly because it may fail and schedule a retry, so this + // function returning doesn't really mean anything at all. + this.triggerCallMembershipEventUpdate(); + } + + /** + * Announces this user and device as having left the MatrixRTC session + * and stops scheduled updates. + * This will not unsubscribe from updates: remember to call unsubscribe() separately if + * desired. + * The membership update required to leave the session will retry if it fails. + * Without network connection the promise will never resolve. + * A timeout can be provided so that there is a guarantee for the promise to resolve. + */ + async leaveRoomSession(timeout = undefined) { + if (!this.isJoined()) { + _logger.logger.info(`Not joined to session in room ${this.room.roomId}: ignoring leave call`); + return new Promise(resolve => resolve(false)); + } + const userId = this.client.getUserId(); + const deviceId = this.client.getDeviceId(); + if (!userId) throw new Error("No userId"); + if (!deviceId) throw new Error("No deviceId"); + + // clear our encryption keys as we're done with them now (we'll + // make new keys if we rejoin). We leave keys for other participants + // as they may still be using the same ones. + this.encryptionKeys.set(getParticipantId(userId, deviceId), []); + if (this.makeNewKeyTimeout !== undefined) { + clearTimeout(this.makeNewKeyTimeout); + this.makeNewKeyTimeout = undefined; + } + for (const t of this.setNewKeyTimeouts) { + clearTimeout(t); + } + this.setNewKeyTimeouts.clear(); + _logger.logger.info(`Leaving call session in room ${this.room.roomId}`); + this.relativeExpiry = undefined; + this.activeFoci = undefined; + this.manageMediaKeys = false; + this.membershipId = undefined; + this.emit(MatrixRTCSessionEvent.JoinStateChanged, false); + const timeoutPromise = new Promise(r => { + if (timeout) { + // will never resolve if timeout is not set + setTimeout(r, timeout, "timeout"); + } + }); + return new Promise(resolve => { + Promise.race([this.triggerCallMembershipEventUpdate(), timeoutPromise]).then(value => { + // The timeoutPromise returns the string 'timeout' and the membership update void + // A success implies that the membership update was quicker then the timeout. + resolve(value != "timeout"); + }); + }); + } + getKeysForParticipant(userId, deviceId) { + return this.encryptionKeys.get(getParticipantId(userId, deviceId)); + } + + /** + * A map of keys used to encrypt and decrypt (we are using a symmetric + * cipher) given participant's media. This also includes our own key + */ + getEncryptionKeys() { + return this.encryptionKeys.entries(); + } + getNewEncryptionKeyIndex() { + var _this$getKeysForParti, _this$getKeysForParti2; + const userId = this.client.getUserId(); + const deviceId = this.client.getDeviceId(); + if (!userId) throw new Error("No userId!"); + if (!deviceId) throw new Error("No deviceId!"); + return ((_this$getKeysForParti = (_this$getKeysForParti2 = this.getKeysForParticipant(userId, deviceId)) === null || _this$getKeysForParti2 === void 0 ? void 0 : _this$getKeysForParti2.length) !== null && _this$getKeysForParti !== void 0 ? _this$getKeysForParti : 0) % 16; + } + + /** + * Sets an encryption key at a specified index for a participant. + * The encryption keys for the local participanmt are also stored here under the + * user and device ID of the local participant. + * @param userId - The user ID of the participant + * @param deviceId - Device ID of the participant + * @param encryptionKeyIndex - The index of the key to set + * @param encryptionKeyString - The string represenation of the key to set in base64 + * @param delayBeforeuse - If true, delay before emitting a key changed event. Useful when setting + * encryption keys for the local participant to allow time for the key to + * be distributed. + */ + setEncryptionKey(userId, deviceId, encryptionKeyIndex, encryptionKeyString, delayBeforeuse = false) { + var _this$encryptionKeys$; + const keyBin = (0, _base.decodeBase64)(encryptionKeyString); + const participantId = getParticipantId(userId, deviceId); + const encryptionKeys = (_this$encryptionKeys$ = this.encryptionKeys.get(participantId)) !== null && _this$encryptionKeys$ !== void 0 ? _this$encryptionKeys$ : []; + if (keysEqual(encryptionKeys[encryptionKeyIndex], keyBin)) return; + encryptionKeys[encryptionKeyIndex] = keyBin; + this.encryptionKeys.set(participantId, encryptionKeys); + if (delayBeforeuse) { + const useKeyTimeout = setTimeout(() => { + this.setNewKeyTimeouts.delete(useKeyTimeout); + _logger.logger.info(`Delayed-emitting key changed event for ${participantId} idx ${encryptionKeyIndex}`); + this.emit(MatrixRTCSessionEvent.EncryptionKeyChanged, keyBin, encryptionKeyIndex, participantId); + }, USE_KEY_DELAY); + this.setNewKeyTimeouts.add(useKeyTimeout); + } else { + this.emit(MatrixRTCSessionEvent.EncryptionKeyChanged, keyBin, encryptionKeyIndex, participantId); + } + } + + /** + * Generate a new sender key and add it at the next available index + * @param delayBeforeUse - If true, wait for a short period before settign the key for the + * media encryptor to use. If false, set the key immediately. + */ + makeNewSenderKey(delayBeforeUse = false) { + const userId = this.client.getUserId(); + const deviceId = this.client.getDeviceId(); + if (!userId) throw new Error("No userId"); + if (!deviceId) throw new Error("No deviceId"); + const encryptionKey = (0, _randomstring.secureRandomBase64Url)(16); + const encryptionKeyIndex = this.getNewEncryptionKeyIndex(); + _logger.logger.info("Generated new key at index " + encryptionKeyIndex); + this.setEncryptionKey(userId, deviceId, encryptionKeyIndex, encryptionKey, delayBeforeUse); + } + + /** + * Requests that we resend our keys to the room. May send a keys event immediately + * or queue for alter if one has already been sent recently. + */ + requestKeyEventSend() { + if (!this.manageMediaKeys) return; + if (this.lastEncryptionKeyUpdateRequest && this.lastEncryptionKeyUpdateRequest + UPDATE_ENCRYPTION_KEY_THROTTLE > Date.now()) { + _logger.logger.info("Last encryption key event sent too recently: postponing"); + if (this.keysEventUpdateTimeout === undefined) { + this.keysEventUpdateTimeout = setTimeout(this.sendEncryptionKeysEvent, UPDATE_ENCRYPTION_KEY_THROTTLE); + } + return; + } + this.sendEncryptionKeysEvent(); + } + /** + * Sets a timer for the soonest membership expiry + */ + setExpiryTimer() { + if (this.expiryTimeout) { + clearTimeout(this.expiryTimeout); + this.expiryTimeout = undefined; + } + let soonestExpiry; + for (const membership of this.memberships) { + const thisExpiry = membership.getMsUntilExpiry(); + if (soonestExpiry === undefined || thisExpiry < soonestExpiry) { + soonestExpiry = thisExpiry; + } + } + if (soonestExpiry != undefined) { + this.expiryTimeout = setTimeout(this.onMembershipUpdate, soonestExpiry); + } + } + getOldestMembership() { + return this.memberships[0]; + } + /** + * Constructs our own membership + * @param prevMembership - The previous value of our call membership, if any + */ + makeMyMembership(prevMembership) { + var _m$expires, _m$expires2; + if (this.relativeExpiry === undefined) { + throw new Error("Tried to create our own membership event when we're not joined!"); + } + if (this.membershipId === undefined) { + throw new Error("Tried to create our own membership event when we have no membership ID!"); + } + const m = { + call_id: "", + scope: "m.room", + application: "m.call", + device_id: this.client.getDeviceId(), + expires: this.relativeExpiry, + foci_active: this.activeFoci, + membershipID: this.membershipId + }; + if (prevMembership) m.created_ts = prevMembership.createdTs(); + if (m.created_ts) m.expires_ts = m.created_ts + ((_m$expires = m.expires) !== null && _m$expires !== void 0 ? _m$expires : 0); + // TODO: Date.now() should be the origin_server_ts (now). + else m.expires_ts = Date.now() + ((_m$expires2 = m.expires) !== null && _m$expires2 !== void 0 ? _m$expires2 : 0); + return m; + } + + /** + * Returns true if our membership event needs to be updated + */ + membershipEventNeedsUpdate(myPrevMembershipData, myPrevMembership) { + // work out if we need to update our membership event + let needsUpdate = false; + // Need to update if there's a membership for us but we're not joined (valid or otherwise) + if (!this.isJoined() && myPrevMembershipData) needsUpdate = true; + if (this.isJoined()) { + // ...or if we are joined, but there's no valid membership event + if (!myPrevMembership) { + needsUpdate = true; + } else if (myPrevMembership.getMsUntilExpiry() < MEMBERSHIP_EXPIRY_TIME / 2) { + // ...or if the expiry time needs bumping + needsUpdate = true; + this.relativeExpiry += MEMBERSHIP_EXPIRY_TIME; + } + } + return needsUpdate; + } + + /** + * Makes a new membership list given the old list alonng with this user's previous membership event + * (if any) and this device's previous membership (if any) + */ + makeNewMemberships(oldMemberships, myCallMemberEvent, myPrevMembership) { + const localDeviceId = this.client.getDeviceId(); + if (!localDeviceId) throw new Error("Local device ID is null!"); + const filterExpired = m => { + let membershipObj; + try { + membershipObj = new _CallMembership.CallMembership(myCallMemberEvent, m); + } catch (e) { + return false; + } + return !membershipObj.isExpired(); + }; + const transformMemberships = m => { + if (m.created_ts === undefined) { + // we need to fill this in with the origin_server_ts from its original event + m.created_ts = myCallMemberEvent.getTs(); + } + return m; + }; + + // Filter our any invalid or expired memberships, and also our own - we'll add that back in next + let newMemberships = oldMemberships.filter(filterExpired).filter(m => m.device_id !== localDeviceId); + + // Fix up any memberships that need their created_ts adding + newMemberships = newMemberships.map(transformMemberships); + + // If we're joined, add our own + if (this.isJoined()) { + newMemberships.push(this.makeMyMembership(myPrevMembership)); + } + return newMemberships; + } + async updateCallMembershipEvent() { + var _roomState$getStateEv, _myCallMemberEvent$ge; + if (this.memberEventTimeout) { + clearTimeout(this.memberEventTimeout); + this.memberEventTimeout = undefined; + } + const roomState = this.room.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + if (!roomState) throw new Error("Couldn't get room state for room " + this.room.roomId); + const localUserId = this.client.getUserId(); + const localDeviceId = this.client.getDeviceId(); + if (!localUserId || !localDeviceId) throw new Error("User ID or device ID was null!"); + const myCallMemberEvent = (_roomState$getStateEv = roomState.getStateEvents(_event.EventType.GroupCallMemberPrefix, localUserId)) !== null && _roomState$getStateEv !== void 0 ? _roomState$getStateEv : undefined; + const content = (_myCallMemberEvent$ge = myCallMemberEvent === null || myCallMemberEvent === void 0 ? void 0 : myCallMemberEvent.getContent()) !== null && _myCallMemberEvent$ge !== void 0 ? _myCallMemberEvent$ge : {}; + const memberships = Array.isArray(content["memberships"]) ? content["memberships"] : []; + const myPrevMembershipData = memberships.find(m => m.device_id === localDeviceId); + let myPrevMembership; + try { + if (myCallMemberEvent && myPrevMembershipData && myPrevMembershipData.membershipID === this.membershipId) { + myPrevMembership = new _CallMembership.CallMembership(myCallMemberEvent, myPrevMembershipData); + } + } catch (e) { + // This would indicate a bug or something weird if our own call membership + // wasn't valid + _logger.logger.warn("Our previous call membership was invalid - this shouldn't happen.", e); + } + if (myPrevMembership) { + _logger.logger.debug(`${myPrevMembership.getMsUntilExpiry()} until our membership expires`); + } + if (!this.membershipEventNeedsUpdate(myPrevMembershipData, myPrevMembership)) { + // nothing to do - reschedule the check again + this.memberEventTimeout = setTimeout(this.triggerCallMembershipEventUpdate, MEMBER_EVENT_CHECK_PERIOD); + return; + } + const newContent = { + memberships: this.makeNewMemberships(memberships, myCallMemberEvent, myPrevMembership) + }; + try { + await this.client.sendStateEvent(this.room.roomId, _event.EventType.GroupCallMemberPrefix, newContent, localUserId); + _logger.logger.info(`Sent updated call member event.`); + + // check periodically to see if we need to refresh our member event + if (this.isJoined()) { + this.memberEventTimeout = setTimeout(this.triggerCallMembershipEventUpdate, MEMBER_EVENT_CHECK_PERIOD); + } + } catch (e) { + const resendDelay = CALL_MEMBER_EVENT_RETRY_DELAY_MIN + Math.random() * 2000; + _logger.logger.warn(`Failed to send call member event: retrying in ${resendDelay}`); + await new Promise(resolve => setTimeout(resolve, resendDelay)); + await this.triggerCallMembershipEventUpdate(); + } + } +} +exports.MatrixRTCSession = MatrixRTCSession; +//# sourceMappingURL=MatrixRTCSession.js.map + +/***/ }), + +/***/ 2575: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MatrixRTCSessionManagerEvents = exports.MatrixRTCSessionManager = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _client = __nccwpck_require__(9058); +var _typedEventEmitter = __nccwpck_require__(7150); +var _room = __nccwpck_require__(7688); +var _roomState = __nccwpck_require__(1513); +var _MatrixRTCSession = __nccwpck_require__(6878); +var _event = __nccwpck_require__(7487); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let MatrixRTCSessionManagerEvents = exports.MatrixRTCSessionManagerEvents = /*#__PURE__*/function (MatrixRTCSessionManagerEvents) { + MatrixRTCSessionManagerEvents["SessionStarted"] = "session_started"; + MatrixRTCSessionManagerEvents["SessionEnded"] = "session_ended"; + return MatrixRTCSessionManagerEvents; +}({}); +/** + * Holds all active MatrixRTC session objects and creates new ones as events arrive. + * This interface is UNSTABLE and may change without warning. + */ +class MatrixRTCSessionManager extends _typedEventEmitter.TypedEventEmitter { + constructor(client) { + super(); + // All the room-scoped sessions we know about. This will include any where the app + // has queried for the MatrixRTC sessions in a room, whether it's ever had any members + // or not). We keep a (lazily created) session object for every room to ensure that there + // is only ever one single room session object for any given room for the lifetime of the + // client: that way there can never be any code holding onto a stale object that is no + // longer the correct session object for the room. + (0, _defineProperty2.default)(this, "roomSessions", new Map()); + (0, _defineProperty2.default)(this, "onTimeline", event => { + this.consumeCallEncryptionEvent(event); + }); + (0, _defineProperty2.default)(this, "onRoom", room => { + this.refreshRoom(room); + }); + (0, _defineProperty2.default)(this, "onRoomState", (event, _state) => { + const room = this.client.getRoom(event.getRoomId()); + if (!room) { + _logger.logger.error(`Got room state event for unknown room ${event.getRoomId()}!`); + return; + } + if (event.getType() == _event.EventType.GroupCallMemberPrefix) { + this.refreshRoom(room); + } + }); + this.client = client; + } + start() { + // We shouldn't need to null-check here, but matrix-client.spec.ts mocks getRooms + // returing nothing, and breaks tests if you change it to return an empty array :'( + for (const room of (_this$client$getRooms = this.client.getRooms()) !== null && _this$client$getRooms !== void 0 ? _this$client$getRooms : []) { + var _this$client$getRooms; + const session = _MatrixRTCSession.MatrixRTCSession.roomSessionForRoom(this.client, room); + if (session.memberships.length > 0) { + this.roomSessions.set(room.roomId, session); + } + } + this.client.on(_client.ClientEvent.Room, this.onRoom); + this.client.on(_room.RoomEvent.Timeline, this.onTimeline); + this.client.on(_roomState.RoomStateEvent.Events, this.onRoomState); + } + stop() { + for (const sess of this.roomSessions.values()) { + sess.stop(); + } + this.roomSessions.clear(); + this.client.removeListener(_client.ClientEvent.Room, this.onRoom); + this.client.removeListener(_room.RoomEvent.Timeline, this.onTimeline); + this.client.removeListener(_roomState.RoomStateEvent.Events, this.onRoomState); + } + + /** + * Gets the main MatrixRTC session for a room, or undefined if there is + * no current session + */ + getActiveRoomSession(room) { + return this.roomSessions.get(room.roomId); + } + + /** + * Gets the main MatrixRTC session for a room, returning an empty session + * if no members are currently participating + */ + getRoomSession(room) { + if (!this.roomSessions.has(room.roomId)) { + this.roomSessions.set(room.roomId, _MatrixRTCSession.MatrixRTCSession.roomSessionForRoom(this.client, room)); + } + return this.roomSessions.get(room.roomId); + } + async consumeCallEncryptionEvent(event) { + await this.client.decryptEventIfNeeded(event); + if (event.getType() !== _event.EventType.CallEncryptionKeysPrefix) return Promise.resolve(); + const room = this.client.getRoom(event.getRoomId()); + if (!room) { + _logger.logger.error(`Got room state event for unknown room ${event.getRoomId()}!`); + return Promise.resolve(); + } + this.getRoomSession(room).onCallEncryption(event); + } + refreshRoom(room) { + const isNewSession = !this.roomSessions.has(room.roomId); + const sess = this.getRoomSession(room); + const wasActiveAndKnown = sess.memberships.length > 0 && !isNewSession; + sess.onMembershipUpdate(); + const nowActive = sess.memberships.length > 0; + if (wasActiveAndKnown && !nowActive) { + this.emit(MatrixRTCSessionManagerEvents.SessionEnded, room.roomId, this.roomSessions.get(room.roomId)); + } else if (!wasActiveAndKnown && nowActive) { + this.emit(MatrixRTCSessionManagerEvents.SessionStarted, room.roomId, this.roomSessions.get(room.roomId)); + } + } +} +exports.MatrixRTCSessionManager = MatrixRTCSessionManager; +//# sourceMappingURL=MatrixRTCSessionManager.js.map + +/***/ }), + +/***/ 7861: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MSC3089Branch = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _event = __nccwpck_require__(7487); +var _eventTimeline = __nccwpck_require__(2763); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * Represents a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) branch - a reference + * to a file (leaf) in the tree. Note that this is UNSTABLE and subject to breaking changes + * without notice. + */ +class MSC3089Branch { + constructor(client, indexEvent, directory) { + this.client = client; + this.indexEvent = indexEvent; + this.directory = directory; + } // Nothing to do + + /** + * The file ID. + */ + get id() { + const stateKey = this.indexEvent.getStateKey(); + if (!stateKey) { + throw new Error("State key not found for branch"); + } + return stateKey; + } + + /** + * Whether this branch is active/valid. + */ + get isActive() { + return this.indexEvent.getContent()["active"] === true; + } + + /** + * Version for the file, one-indexed. + */ + get version() { + var _this$indexEvent$getC; + return (_this$indexEvent$getC = this.indexEvent.getContent()["version"]) !== null && _this$indexEvent$getC !== void 0 ? _this$indexEvent$getC : 1; + } + get roomId() { + return this.indexEvent.getRoomId(); + } + + /** + * Deletes the file from the tree, including all prior edits/versions. + * @returns Promise which resolves when complete. + */ + async delete() { + await this.client.sendStateEvent(this.roomId, _event.UNSTABLE_MSC3089_BRANCH.name, {}, this.id); + await this.client.redactEvent(this.roomId, this.id); + const nextVersion = (await this.getVersionHistory())[1]; // [0] will be us + if (nextVersion) await nextVersion.delete(); // implicit recursion + } + + /** + * Gets the name for this file. + * @returns The name, or "Unnamed File" if unknown. + */ + getName() { + return this.indexEvent.getContent()["name"] || "Unnamed File"; + } + + /** + * Sets the name for this file. + * @param name - The new name for this file. + * @returns Promise which resolves when complete. + */ + async setName(name) { + await this.client.sendStateEvent(this.roomId, _event.UNSTABLE_MSC3089_BRANCH.name, _objectSpread(_objectSpread({}, this.indexEvent.getContent()), {}, { + name: name + }), this.id); + } + + /** + * Gets whether or not a file is locked. + * @returns True if locked, false otherwise. + */ + isLocked() { + return this.indexEvent.getContent()["locked"] || false; + } + + /** + * Sets a file as locked or unlocked. + * @param locked - True to lock the file, false otherwise. + * @returns Promise which resolves when complete. + */ + async setLocked(locked) { + await this.client.sendStateEvent(this.roomId, _event.UNSTABLE_MSC3089_BRANCH.name, _objectSpread(_objectSpread({}, this.indexEvent.getContent()), {}, { + locked: locked + }), this.id); + } + + /** + * Gets information about the file needed to download it. + * @returns Information about the file. + */ + async getFileInfo() { + const event = await this.getFileEvent(); + const file = event.getOriginalContent()["file"]; + const httpUrl = this.client.mxcUrlToHttp(file["url"]); + if (!httpUrl) { + throw new Error(`No HTTP URL available for ${file["url"]}`); + } + return { + info: file, + httpUrl: httpUrl }; } - opts.request = opts.request || requestInstance; - opts.store = opts.store || new _memory.MemoryStore({ - localStorage: global.localStorage - }); - opts.scheduler = opts.scheduler || new _scheduler.MatrixScheduler(); - opts.cryptoStore = opts.cryptoStore || cryptoStoreFactory(); - return new _client.MatrixClient(opts); + /** + * Gets the event the file points to. + * @returns Promise which resolves to the file's event. + */ + async getFileEvent() { + const room = this.client.getRoom(this.roomId); + if (!room) throw new Error("Unknown room"); + let event = room.getUnfilteredTimelineSet().findEventById(this.id); + + // keep scrolling back if needed until we find the event or reach the start of the room: + while (!event && room.getLiveTimeline().getState(_eventTimeline.EventTimeline.BACKWARDS).paginationToken) { + await this.client.scrollback(room, 100); + event = room.getUnfilteredTimelineSet().findEventById(this.id); + } + if (!event) throw new Error("Failed to find event"); + + // Sometimes the event isn't decrypted for us, so do that. + await this.client.decryptEventIfNeeded(event); + return event; + } + + /** + * Creates a new version of this file with contents in a type that is compatible with MatrixClient.uploadContent(). + * @param name - The name of the file. + * @param encryptedContents - The encrypted contents. + * @param info - The encrypted file information. + * @param additionalContent - Optional event content fields to include in the message. + * @returns Promise which resolves to the file event's sent response. + */ + async createNewVersion(name, encryptedContents, info, additionalContent) { + const fileEventResponse = await this.directory.createFile(name, encryptedContents, info, _objectSpread(_objectSpread({}, additionalContent !== null && additionalContent !== void 0 ? additionalContent : {}), {}, { + "m.new_content": true, + "m.relates_to": { + rel_type: _event.RelationType.Replace, + event_id: this.id + } + })); + + // Update the version of the new event + await this.client.sendStateEvent(this.roomId, _event.UNSTABLE_MSC3089_BRANCH.name, { + active: true, + name: name, + version: this.version + 1 + }, fileEventResponse["event_id"]); + + // Deprecate ourselves + await this.client.sendStateEvent(this.roomId, _event.UNSTABLE_MSC3089_BRANCH.name, _objectSpread(_objectSpread({}, this.indexEvent.getContent()), {}, { + active: false + }), this.id); + return fileEventResponse; + } + + /** + * Gets the file's version history, starting at this file. + * @returns Promise which resolves to the file's version history, with the + * first element being the current version and the last element being the first version. + */ + async getVersionHistory() { + const fileHistory = []; + fileHistory.push(this); // start with ourselves + + const room = this.client.getRoom(this.roomId); + if (!room) throw new Error("Invalid or unknown room"); + + // Clone the timeline to reverse it, getting most-recent-first ordering, hopefully + // shortening the awful loop below. Without the clone, we can unintentionally mutate + // the timeline. + const timelineEvents = [...room.getLiveTimeline().getEvents()].reverse(); + + // XXX: This is a very inefficient search, but it's the best we can do with the + // relations structure we have in the SDK. As of writing, it is not worth the + // investment in improving the structure. + let childEvent; + let parentEvent = await this.getFileEvent(); + do { + childEvent = timelineEvents.find(e => e.replacingEventId() === parentEvent.getId()); + if (childEvent) { + const branch = this.directory.getFile(childEvent.getId()); + if (branch) { + fileHistory.push(branch); + parentEvent = childEvent; + } else { + break; // prevent infinite loop + } + } + } while (childEvent); + return fileHistory; + } } +exports.MSC3089Branch = MSC3089Branch; +//# sourceMappingURL=MSC3089Branch.js.map + +/***/ }), + +/***/ 7436: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TreePermissions = exports.MSC3089TreeSpace = exports.DEFAULT_TREE_POWER_LEVELS_TEMPLATE = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _pRetry = _interopRequireDefault(__nccwpck_require__(2548)); +var _event = __nccwpck_require__(7487); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); +var _MSC3089Branch = __nccwpck_require__(7861); +var _megolm = __nccwpck_require__(7509); +var _membership = __nccwpck_require__(9225); +var _media = __nccwpck_require__(915); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ /** - * The request function interface for performing HTTP requests. This matches the - * API for the {@link https://github.com/request/request#requestoptions-callback| - * request NPM module}. The SDK will attempt to call this function in order to - * perform an HTTP request. - * @callback requestFunction - * @param {Object} opts The options for this HTTP request. - * @param {string} opts.uri The complete URI. - * @param {string} opts.method The HTTP method. - * @param {Object} opts.qs The query parameters to append to the URI. - * @param {Object} opts.body The JSON-serializable object. - * @param {boolean} opts.json True if this is a JSON request. - * @param {Object} opts._matrix_opts The underlying options set for - * {@link MatrixHttpApi}. - * @param {requestCallback} callback The request callback. + * The recommended defaults for a tree space's power levels. Note that this + * is UNSTABLE and subject to breaking changes without notice. */ +const DEFAULT_TREE_POWER_LEVELS_TEMPLATE = exports.DEFAULT_TREE_POWER_LEVELS_TEMPLATE = { + // Owner + invite: 100, + kick: 100, + ban: 100, + // Editor + redact: 50, + state_default: 50, + events_default: 50, + // Viewer + users_default: 0, + // Mixed + events: { + [_event.EventType.RoomPowerLevels]: 100, + [_event.EventType.RoomHistoryVisibility]: 100, + [_event.EventType.RoomTombstone]: 100, + [_event.EventType.RoomEncryption]: 100, + [_event.EventType.RoomName]: 50, + [_event.EventType.RoomMessage]: 50, + [_event.EventType.RoomMessageEncrypted]: 50, + [_event.EventType.Sticker]: 50 + }, + users: {} // defined by calling code +}; /** - * A wrapper for the request function interface. - * @callback requestWrapperFunction - * @param {requestFunction} origRequest The underlying request function being - * wrapped - * @param {Object} opts The options for this HTTP request, given in the same - * form as {@link requestFunction}. - * @param {requestCallback} callback The request callback. + * Ease-of-use representation for power levels represented as simple roles. + * Note that this is UNSTABLE and subject to breaking changes without notice. */ +let TreePermissions = exports.TreePermissions = /*#__PURE__*/function (TreePermissions) { + TreePermissions["Viewer"] = "viewer"; + TreePermissions["Editor"] = "editor"; + TreePermissions["Owner"] = "owner"; + return TreePermissions; +}({}); // "Admin" or PL100 +/** + * Represents a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) + * file tree Space. Note that this is UNSTABLE and subject to breaking changes + * without notice. + */ +class MSC3089TreeSpace { + constructor(client, roomId) { + this.client = client; + this.roomId = roomId; + this.room = this.client.getRoom(this.roomId); + if (!this.room) throw new Error("Unknown room"); + } + + /** + * Syntactic sugar for room ID of the Space. + */ + get id() { + return this.roomId; + } + + /** + * Whether or not this is a top level space. + */ + get isTopLevel() { + // XXX: This is absolutely not how you find out if the space is top level + // but is safe for a managed usecase like we offer in the SDK. + const parentEvents = this.room.currentState.getStateEvents(_event.EventType.SpaceParent); + if (!(parentEvents !== null && parentEvents !== void 0 && parentEvents.length)) return true; + return parentEvents.every(e => { + var _e$getContent; + return !((_e$getContent = e.getContent()) !== null && _e$getContent !== void 0 && _e$getContent["via"]); + }); + } + + /** + * Sets the name of the tree space. + * @param name - The new name for the space. + * @returns Promise which resolves when complete. + */ + async setName(name) { + await this.client.sendStateEvent(this.roomId, _event.EventType.RoomName, { + name + }, ""); + } + + /** + * Invites a user to the tree space. They will be given the default Viewer + * permission level unless specified elsewhere. + * @param userId - The user ID to invite. + * @param andSubspaces - True (default) to invite the user to all + * directories/subspaces too, recursively. + * @param shareHistoryKeys - True (default) to share encryption keys + * with the invited user. This will allow them to decrypt the events (files) + * in the tree. Keys will not be shared if the room is lacking appropriate + * history visibility (by default, history visibility is "shared" in trees, + * which is an appropriate visibility for these purposes). + * @returns Promise which resolves when complete. + */ + async invite(userId, andSubspaces = true, shareHistoryKeys = true) { + const promises = [this.retryInvite(userId)]; + if (andSubspaces) { + promises.push(...this.getDirectories().map(d => d.invite(userId, andSubspaces, shareHistoryKeys))); + } + return Promise.all(promises).then(() => { + // Note: key sharing is default on because for file trees it is relatively important that the invite + // target can actually decrypt the files. The implied use case is that by inviting a user to the tree + // it means the sender would like the receiver to view/download the files contained within, much like + // sharing a folder in other circles. + if (shareHistoryKeys && (0, _megolm.isRoomSharedHistory)(this.room)) { + // noinspection JSIgnoredPromiseFromCall - we aren't concerned as much if this fails. + this.client.sendSharedHistoryKeys(this.roomId, [userId]); + } + }); + } + retryInvite(userId) { + return (0, _utils.simpleRetryOperation)(async () => { + await this.client.invite(this.roomId, userId).catch(e => { + // We don't want to retry permission errors forever... + if ((e === null || e === void 0 ? void 0 : e.errcode) === "M_FORBIDDEN") { + throw new _pRetry.default.AbortError(e); + } + throw e; + }); + }); + } + + /** + * Sets the permissions of a user to the given role. Note that if setting a user + * to Owner then they will NOT be able to be demoted. If the user does not have + * permission to change the power level of the target, an error will be thrown. + * @param userId - The user ID to change the role of. + * @param role - The role to assign. + * @returns Promise which resolves when complete. + */ + async setPermissions(userId, role) { + var _pls$events; + const currentPls = this.room.currentState.getStateEvents(_event.EventType.RoomPowerLevels, ""); + if (Array.isArray(currentPls)) throw new Error("Unexpected return type for power levels"); + const pls = (currentPls === null || currentPls === void 0 ? void 0 : currentPls.getContent()) || {}; + const viewLevel = pls["users_default"] || 0; + const editLevel = pls["events_default"] || 50; + const adminLevel = ((_pls$events = pls["events"]) === null || _pls$events === void 0 ? void 0 : _pls$events[_event.EventType.RoomPowerLevels]) || 100; + const users = pls["users"] || {}; + switch (role) { + case TreePermissions.Viewer: + users[userId] = viewLevel; + break; + case TreePermissions.Editor: + users[userId] = editLevel; + break; + case TreePermissions.Owner: + users[userId] = adminLevel; + break; + default: + throw new Error("Invalid role: " + role); + } + pls["users"] = users; + await this.client.sendStateEvent(this.roomId, _event.EventType.RoomPowerLevels, pls, ""); + } + + /** + * Gets the current permissions of a user. Note that any users missing explicit permissions (or not + * in the space) will be considered Viewers. Appropriate membership checks need to be performed + * elsewhere. + * @param userId - The user ID to check permissions of. + * @returns The permissions for the user, defaulting to Viewer. + */ + getPermissions(userId) { + var _pls$events2, _pls$users; + const currentPls = this.room.currentState.getStateEvents(_event.EventType.RoomPowerLevels, ""); + if (Array.isArray(currentPls)) throw new Error("Unexpected return type for power levels"); + const pls = (currentPls === null || currentPls === void 0 ? void 0 : currentPls.getContent()) || {}; + const viewLevel = pls["users_default"] || 0; + const editLevel = pls["events_default"] || 50; + const adminLevel = ((_pls$events2 = pls["events"]) === null || _pls$events2 === void 0 ? void 0 : _pls$events2[_event.EventType.RoomPowerLevels]) || 100; + const userLevel = ((_pls$users = pls["users"]) === null || _pls$users === void 0 ? void 0 : _pls$users[userId]) || viewLevel; + if (userLevel >= adminLevel) return TreePermissions.Owner; + if (userLevel >= editLevel) return TreePermissions.Editor; + return TreePermissions.Viewer; + } + + /** + * Creates a directory under this tree space, represented as another tree space. + * @param name - The name for the directory. + * @returns Promise which resolves to the created directory. + */ + async createDirectory(name) { + const directory = await this.client.unstableCreateFileTree(name); + await this.client.sendStateEvent(this.roomId, _event.EventType.SpaceChild, { + via: [this.client.getDomain()] + }, directory.roomId); + await this.client.sendStateEvent(directory.roomId, _event.EventType.SpaceParent, { + via: [this.client.getDomain()] + }, this.roomId); + return directory; + } + + /** + * Gets a list of all known immediate subdirectories to this tree space. + * @returns The tree spaces (directories). May be empty, but not null. + */ + getDirectories() { + const trees = []; + const children = this.room.currentState.getStateEvents(_event.EventType.SpaceChild); + for (const child of children) { + try { + const stateKey = child.getStateKey(); + if (stateKey) { + const tree = this.client.unstableGetFileTreeSpace(stateKey); + if (tree) trees.push(tree); + } + } catch (e) { + _logger.logger.warn("Unable to create tree space instance for listing. Are we joined?", e); + } + } + return trees; + } + + /** + * Gets a subdirectory of a given ID under this tree space. Note that this will not recurse + * into children and instead only look one level deep. + * @param roomId - The room ID (directory ID) to find. + * @returns The directory, or undefined if not found. + */ + getDirectory(roomId) { + return this.getDirectories().find(r => r.roomId === roomId); + } + + /** + * Deletes the tree, kicking all members and deleting **all subdirectories**. + * @returns Promise which resolves when complete. + */ + async delete() { + const subdirectories = this.getDirectories(); + for (const dir of subdirectories) { + await dir.delete(); + } + const kickMemberships = [_membership.KnownMembership.Invite, _membership.KnownMembership.Knock, _membership.KnownMembership.Join]; + const members = this.room.currentState.getStateEvents(_event.EventType.RoomMember); + for (const member of members) { + const isNotUs = member.getStateKey() !== this.client.getUserId(); + if (isNotUs && kickMemberships.includes(member.getContent().membership)) { + const stateKey = member.getStateKey(); + if (!stateKey) { + throw new Error("State key not found for branch"); + } + await this.client.kick(this.roomId, stateKey, "Room deleted"); + } + } + await this.client.leave(this.roomId); + } + getOrderedChildren(children) { + const ordered = children.map(c => ({ + roomId: c.getStateKey(), + order: c.getContent()["order"] + })).filter(c => c.roomId); + ordered.sort((a, b) => { + if (a.order && !b.order) { + return -1; + } else if (!a.order && b.order) { + return 1; + } else if (!a.order && !b.order) { + var _roomA$currentState$g, _roomA$currentState$g2, _roomB$currentState$g, _roomB$currentState$g2; + const roomA = this.client.getRoom(a.roomId); + const roomB = this.client.getRoom(b.roomId); + if (!roomA || !roomB) { + // just don't bother trying to do more partial sorting + return (0, _utils.lexicographicCompare)(a.roomId, b.roomId); + } + const createTsA = (_roomA$currentState$g = (_roomA$currentState$g2 = roomA.currentState.getStateEvents(_event.EventType.RoomCreate, "")) === null || _roomA$currentState$g2 === void 0 ? void 0 : _roomA$currentState$g2.getTs()) !== null && _roomA$currentState$g !== void 0 ? _roomA$currentState$g : 0; + const createTsB = (_roomB$currentState$g = (_roomB$currentState$g2 = roomB.currentState.getStateEvents(_event.EventType.RoomCreate, "")) === null || _roomB$currentState$g2 === void 0 ? void 0 : _roomB$currentState$g2.getTs()) !== null && _roomB$currentState$g !== void 0 ? _roomB$currentState$g : 0; + if (createTsA === createTsB) { + return (0, _utils.lexicographicCompare)(a.roomId, b.roomId); + } + return createTsA - createTsB; + } else { + // both not-null orders + return (0, _utils.lexicographicCompare)(a.order, b.order); + } + }); + return ordered; + } + getParentRoom() { + const parents = this.room.currentState.getStateEvents(_event.EventType.SpaceParent); + const parent = parents[0]; // XXX: Wild assumption + if (!parent) throw new Error("Expected to have a parent in a non-top level space"); + + // XXX: We are assuming the parent is a valid tree space. + // We probably don't need to validate the parent room state for this usecase though. + const stateKey = parent.getStateKey(); + if (!stateKey) throw new Error("No state key found for parent"); + const parentRoom = this.client.getRoom(stateKey); + if (!parentRoom) throw new Error("Unable to locate room for parent"); + return parentRoom; + } + + /** + * Gets the current order index for this directory. Note that if this is the top level space + * then -1 will be returned. + * @returns The order index of this space. + */ + getOrder() { + if (this.isTopLevel) return -1; + const parentRoom = this.getParentRoom(); + const children = parentRoom.currentState.getStateEvents(_event.EventType.SpaceChild); + const ordered = this.getOrderedChildren(children); + return ordered.findIndex(c => c.roomId === this.roomId); + } + + /** + * Sets the order index for this directory within its parent. Note that if this is a top level + * space then an error will be thrown. -1 can be used to move the child to the start, and numbers + * larger than the number of children can be used to move the child to the end. + * @param index - The new order index for this space. + * @returns Promise which resolves when complete. + * @throws Throws if this is a top level space. + */ + async setOrder(index) { + var _currentChild$getCont2; + if (this.isTopLevel) throw new Error("Cannot set order of top level spaces currently"); + const parentRoom = this.getParentRoom(); + const children = parentRoom.currentState.getStateEvents(_event.EventType.SpaceChild); + const ordered = this.getOrderedChildren(children); + index = Math.max(Math.min(index, ordered.length - 1), 0); + const currentIndex = this.getOrder(); + const movingUp = currentIndex < index; + if (movingUp && index === ordered.length - 1) { + index--; + } else if (!movingUp && index === 0) { + index++; + } + const prev = ordered[movingUp ? index : index - 1]; + const next = ordered[movingUp ? index + 1 : index]; + let newOrder = _utils.DEFAULT_ALPHABET[0]; + let ensureBeforeIsSane = false; + if (!prev) { + // Move to front + if (next !== null && next !== void 0 && next.order) { + newOrder = (0, _utils.prevString)(next.order); + } + } else if (index === ordered.length - 1) { + // Move to back + if (next !== null && next !== void 0 && next.order) { + newOrder = (0, _utils.nextString)(next.order); + } + } else { + // Move somewhere in the middle + const startOrder = prev === null || prev === void 0 ? void 0 : prev.order; + const endOrder = next === null || next === void 0 ? void 0 : next.order; + if (startOrder && endOrder) { + if (startOrder === endOrder) { + // Error case: just move +1 to break out of awful math + newOrder = (0, _utils.nextString)(startOrder); + } else { + newOrder = (0, _utils.averageBetweenStrings)(startOrder, endOrder); + } + } else { + if (startOrder) { + // We're at the end (endOrder is null, so no explicit order) + newOrder = (0, _utils.nextString)(startOrder); + } else if (endOrder) { + // We're at the start (startOrder is null, so nothing before us) + newOrder = (0, _utils.prevString)(endOrder); + } else { + // Both points are unknown. We're likely in a range where all the children + // don't have particular order values, so we may need to update them too. + // The other possibility is there's only us as a child, but we should have + // shown up in the other states. + ensureBeforeIsSane = true; + } + } + } + if (ensureBeforeIsSane) { + // We were asked by the order algorithm to prepare the moving space for a landing + // in the undefined order part of the order array, which means we need to update the + // spaces that come before it with a stable order value. + let lastOrder; + for (let i = 0; i <= index; i++) { + const target = ordered[i]; + if (i === 0) { + lastOrder = target.order; + } + if (!target.order) { + var _currentChild$getCont; + // XXX: We should be creating gaps to avoid conflicts + lastOrder = lastOrder ? (0, _utils.nextString)(lastOrder) : _utils.DEFAULT_ALPHABET[0]; + const currentChild = parentRoom.currentState.getStateEvents(_event.EventType.SpaceChild, target.roomId); + const content = (_currentChild$getCont = currentChild === null || currentChild === void 0 ? void 0 : currentChild.getContent()) !== null && _currentChild$getCont !== void 0 ? _currentChild$getCont : { + via: [this.client.getDomain()] + }; + await this.client.sendStateEvent(parentRoom.roomId, _event.EventType.SpaceChild, _objectSpread(_objectSpread({}, content), {}, { + order: lastOrder + }), target.roomId); + } else { + lastOrder = target.order; + } + } + if (lastOrder) { + newOrder = (0, _utils.nextString)(lastOrder); + } + } + + // TODO: Deal with order conflicts by reordering + + // Now we can finally update our own order state + const currentChild = parentRoom.currentState.getStateEvents(_event.EventType.SpaceChild, this.roomId); + const content = (_currentChild$getCont2 = currentChild === null || currentChild === void 0 ? void 0 : currentChild.getContent()) !== null && _currentChild$getCont2 !== void 0 ? _currentChild$getCont2 : { + via: [this.client.getDomain()] + }; + await this.client.sendStateEvent(parentRoom.roomId, _event.EventType.SpaceChild, _objectSpread(_objectSpread({}, content), {}, { + // TODO: Safely constrain to 50 character limit required by spaces. + order: newOrder + }), this.roomId); + } + + /** + * Creates (uploads) a new file to this tree. The file must have already been encrypted for the room. + * The file contents are in a type that is compatible with MatrixClient.uploadContent(). + * @param name - The name of the file. + * @param encryptedContents - The encrypted contents. + * @param info - The encrypted file information. + * @param additionalContent - Optional event content fields to include in the message. + * @returns Promise which resolves to the file event's sent response. + */ + async createFile(name, encryptedContents, info, additionalContent) { + var _additionalContent; + const { + content_uri: mxc + } = await this.client.uploadContent(encryptedContents, { + includeFilename: false + }); + info.url = mxc; + const fileContent = { + msgtype: _event.MsgType.File, + body: name, + url: mxc, + file: info + }; + additionalContent = (_additionalContent = additionalContent) !== null && _additionalContent !== void 0 ? _additionalContent : {}; + if (additionalContent["m.new_content"]) { + // We do the right thing according to the spec, but due to how relations are + // handled we also end up duplicating this information to the regular `content` + // as well. + additionalContent["m.new_content"] = fileContent; + } + const res = await this.client.sendMessage(this.roomId, _objectSpread(_objectSpread(_objectSpread({}, additionalContent), fileContent), {}, { + [_event.UNSTABLE_MSC3089_LEAF.name]: {} + })); + await this.client.sendStateEvent(this.roomId, _event.UNSTABLE_MSC3089_BRANCH.name, { + active: true, + name: name + }, res["event_id"]); + return res; + } + + /** + * Retrieves a file from the tree. + * @param fileEventId - The event ID of the file. + * @returns The file, or null if not found. + */ + getFile(fileEventId) { + const branch = this.room.currentState.getStateEvents(_event.UNSTABLE_MSC3089_BRANCH.name, fileEventId); + return branch ? new _MSC3089Branch.MSC3089Branch(this.client, branch, this) : null; + } + + /** + * Gets an array of all known files for the tree. + * @returns The known files. May be empty, but not null. + */ + listFiles() { + return this.listAllFiles().filter(b => b.isActive); + } + + /** + * Gets an array of all known files for the tree, including inactive/invalid ones. + * @returns The known files. May be empty, but not null. + */ + listAllFiles() { + var _this$room$currentSta; + const branches = (_this$room$currentSta = this.room.currentState.getStateEvents(_event.UNSTABLE_MSC3089_BRANCH.name)) !== null && _this$room$currentSta !== void 0 ? _this$room$currentSta : []; + return branches.map(e => new _MSC3089Branch.MSC3089Branch(this.client, e, this)); + } +} +exports.MSC3089TreeSpace = MSC3089TreeSpace; +//# sourceMappingURL=MSC3089TreeSpace.js.map + +/***/ }), + +/***/ 23: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isTimestampInDuration = exports.getBeaconInfoIdentifier = exports.BeaconEvent = exports.Beacon = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _contentHelpers = __nccwpck_require__(4000); +var _utils = __nccwpck_require__(2557); +var _typedEventEmitter = __nccwpck_require__(7150); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let BeaconEvent = exports.BeaconEvent = /*#__PURE__*/function (BeaconEvent) { + BeaconEvent["New"] = "Beacon.new"; + BeaconEvent["Update"] = "Beacon.update"; + BeaconEvent["LivenessChange"] = "Beacon.LivenessChange"; + BeaconEvent["Destroy"] = "Beacon.Destroy"; + BeaconEvent["LocationUpdate"] = "Beacon.LocationUpdate"; + return BeaconEvent; +}({}); +const isTimestampInDuration = (startTimestamp, durationMs, timestamp) => timestamp >= startTimestamp && startTimestamp + durationMs >= timestamp; + +// beacon info events are uniquely identified by +// `_` +exports.isTimestampInDuration = isTimestampInDuration; +const getBeaconInfoIdentifier = event => `${event.getRoomId()}_${event.getStateKey()}`; + +// https://github.com/matrix-org/matrix-spec-proposals/pull/3672 +exports.getBeaconInfoIdentifier = getBeaconInfoIdentifier; +class Beacon extends _typedEventEmitter.TypedEventEmitter { + // beaconInfo is assigned by setBeaconInfo in the constructor + // ! to make tsc believe it is definitely assigned + + constructor(rootEvent) { + super(); + (0, _defineProperty2.default)(this, "clearLatestLocation", () => { + this._latestLocationEvent = undefined; + this.emit(BeaconEvent.LocationUpdate, this.latestLocationState); + }); + this.rootEvent = rootEvent; + this.roomId = this.rootEvent.getRoomId(); + this.setBeaconInfo(this.rootEvent); + } + get isLive() { + return !!this._isLive; + } + get identifier() { + return getBeaconInfoIdentifier(this.rootEvent); + } + get beaconInfoId() { + return this.rootEvent.getId(); + } + get beaconInfoOwner() { + return this.rootEvent.getStateKey(); + } + get beaconInfoEventType() { + return this.rootEvent.getType(); + } + get beaconInfo() { + return this._beaconInfo; + } + get latestLocationState() { + return this._latestLocationEvent && (0, _contentHelpers.parseBeaconContent)(this._latestLocationEvent.getContent()); + } + get latestLocationEvent() { + return this._latestLocationEvent; + } + update(beaconInfoEvent) { + if (getBeaconInfoIdentifier(beaconInfoEvent) !== this.identifier) { + throw new Error("Invalid updating event"); + } + // don't update beacon with an older event + if (beaconInfoEvent.getTs() < this.rootEvent.getTs()) { + return; + } + this.rootEvent = beaconInfoEvent; + this.setBeaconInfo(this.rootEvent); + this.emit(BeaconEvent.Update, beaconInfoEvent, this); + this.clearLatestLocation(); + } + destroy() { + if (this.livenessWatchTimeout) { + clearTimeout(this.livenessWatchTimeout); + } + this._isLive = false; + this.emit(BeaconEvent.Destroy, this.identifier); + } + + /** + * Monitor liveness of a beacon + * Emits BeaconEvent.LivenessChange when beacon expires + */ + monitorLiveness() { + if (this.livenessWatchTimeout) { + clearTimeout(this.livenessWatchTimeout); + } + this.checkLiveness(); + if (!this.beaconInfo) return; + if (this.isLive) { + const expiryInMs = this.beaconInfo.timestamp + this.beaconInfo.timeout - Date.now(); + if (expiryInMs > 1) { + this.livenessWatchTimeout = setTimeout(() => { + this.monitorLiveness(); + }, expiryInMs); + } + } else if (this.beaconInfo.timestamp > Date.now()) { + // beacon start timestamp is in the future + // check liveness again then + this.livenessWatchTimeout = setTimeout(() => { + this.monitorLiveness(); + }, this.beaconInfo.timestamp - Date.now()); + } + } + + /** + * Process Beacon locations + * Emits BeaconEvent.LocationUpdate + */ + addLocations(beaconLocationEvents) { + var _validLocationEvents$; + // discard locations for beacons that are not live + if (!this.isLive) { + return; + } + const validLocationEvents = beaconLocationEvents.filter(event => { + const content = event.getContent(); + const parsed = (0, _contentHelpers.parseBeaconContent)(content); + if (!parsed.uri || !parsed.timestamp) return false; // we won't be able to process these + const { + timestamp + } = parsed; + return this._beaconInfo.timestamp && + // only include positions that were taken inside the beacon's live period + isTimestampInDuration(this._beaconInfo.timestamp, this._beaconInfo.timeout, timestamp) && ( + // ignore positions older than our current latest location + !this.latestLocationState || timestamp > this.latestLocationState.timestamp); + }); + const latestLocationEvent = (_validLocationEvents$ = validLocationEvents.sort(_utils.sortEventsByLatestContentTimestamp)) === null || _validLocationEvents$ === void 0 ? void 0 : _validLocationEvents$[0]; + if (latestLocationEvent) { + this._latestLocationEvent = latestLocationEvent; + this.emit(BeaconEvent.LocationUpdate, this.latestLocationState); + } + } + setBeaconInfo(event) { + this._beaconInfo = (0, _contentHelpers.parseBeaconInfoContent)(event.getContent()); + this.checkLiveness(); + } + checkLiveness() { + const prevLiveness = this.isLive; + + // element web sets a beacon's start timestamp to the senders local current time + // when Alice's system clock deviates slightly from Bob's a beacon Alice intended to be live + // may have a start timestamp in the future from Bob's POV + // handle this by adding 6min of leniency to the start timestamp when it is in the future + if (!this.beaconInfo) return; + const startTimestamp = this.beaconInfo.timestamp > Date.now() ? this.beaconInfo.timestamp - 360000 /* 6min */ : this.beaconInfo.timestamp; + this._isLive = !!this._beaconInfo.live && !!startTimestamp && isTimestampInDuration(startTimestamp, this._beaconInfo.timeout, Date.now()); + if (prevLiveness !== this.isLive) { + this.emit(BeaconEvent.LivenessChange, this.isLive, this); + } + } +} +exports.Beacon = Beacon; +//# sourceMappingURL=beacon.js.map + +/***/ }), + +/***/ 668: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.compareEventOrdering = compareEventOrdering; +var _client = __nccwpck_require__(9058); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ /** - * The request callback interface for performing HTTP requests. This matches the - * API for the {@link https://github.com/request/request#requestoptions-callback| - * request NPM module}. The SDK will implement a callback which meets this - * interface in order to handle the HTTP response. - * @callback requestCallback - * @param {Error} err The error if one occurred, else falsey. - * @param {Object} response The HTTP response which consists of - * {statusCode: {Number}, headers: {Object}} - * @param {Object} body The parsed HTTP response body. - */ + * Determine the order of two events in a room. + * + * In principle this should use the same order as the server, but in practice + * this is difficult for events that were not received over the Sync API. See + * MSC4033 for details. + * + * This implementation leans on the order of events within their timelines, and + * falls back to comparing event timestamps when they are in different + * timelines. + * + * See https://github.com/matrix-org/matrix-js-sdk/issues/3325 for where we are + * tracking the work to fix this. + * + * @param room - the room we are looking in + * @param leftEventId - the id of the first event + * @param rightEventId - the id of the second event + + * @returns -1 if left \< right, 1 if left \> right, 0 if left == right, null if + * we can't tell (because we can't find the events). + */ +function compareEventOrdering(room, leftEventId, rightEventId) { + const leftEvent = room.findEventById(leftEventId); + const rightEvent = room.findEventById(rightEventId); + if (!leftEvent || !rightEvent) { + // Without the events themselves, we can't find their thread or + // timeline, or guess based on timestamp, so we just don't know. + return null; + } + + // Check whether the events are in the main timeline + const isLeftEventInMainTimeline = (0, _client.inMainTimelineForReceipt)(leftEvent); + const isRightEventInMainTimeline = (0, _client.inMainTimelineForReceipt)(rightEvent); + if (isLeftEventInMainTimeline && isRightEventInMainTimeline) { + return compareEventsInMainTimeline(room, leftEventId, rightEventId, leftEvent, rightEvent); + } else { + // At least one event is not in the timeline, so we can't use the room's + // unfiltered timeline set. + return compareEventsInThreads(leftEventId, rightEventId, leftEvent, rightEvent); + } +} +function compareEventsInMainTimeline(room, leftEventId, rightEventId, leftEvent, rightEvent) { + // Get the timeline set that contains all the events. + const timelineSet = room.getUnfilteredTimelineSet(); + + // If they are in the same timeline, compareEventOrdering does what we need + const compareSameTimeline = timelineSet.compareEventOrdering(leftEventId, rightEventId); + if (compareSameTimeline !== null) { + return compareSameTimeline; + } + + // Find which timeline each event is in. Refuse to provide an ordering if we + // can't find either of the events. + + const leftTimeline = timelineSet.getTimelineForEvent(leftEventId); + if (leftTimeline === timelineSet.getLiveTimeline()) { + // The left event is part of the live timeline, so it must be after the + // right event (since they are not in the same timeline or we would have + // returned after compareEventOrdering. + return 1; + } + const rightTimeline = timelineSet.getTimelineForEvent(rightEventId); + if (rightTimeline === timelineSet.getLiveTimeline()) { + // The right event is part of the live timeline, so it must be after the + // left event. + return -1; + } + + // They are in older timeline sets (because they were fetched by paging up). + return guessOrderBasedOnTimestamp(leftEvent, rightEvent); +} +function compareEventsInThreads(leftEventId, rightEventId, leftEvent, rightEvent) { + const leftEventThreadId = (0, _client.threadIdForReceipt)(leftEvent); + const rightEventThreadId = (0, _client.threadIdForReceipt)(rightEvent); + const leftThread = leftEvent.getThread(); + if (leftThread && leftEventThreadId === rightEventThreadId) { + // They are in the same thread, so we can ask the thread's timeline to + // figure it out for us + return leftThread.timelineSet.compareEventOrdering(leftEventId, rightEventId); + } else { + return guessOrderBasedOnTimestamp(leftEvent, rightEvent); + } +} + +/** + * Guess the order of events based on server timestamp. This is not good, but + * difficult to avoid without MSC4033. + * + * See https://github.com/matrix-org/matrix-js-sdk/issues/3325 + */ +function guessOrderBasedOnTimestamp(leftEvent, rightEvent) { + const leftTs = leftEvent.getTs(); + const rightTs = rightEvent.getTs(); + if (leftTs < rightTs) { + return -1; + } else if (leftTs > rightTs) { + return 1; + } else { + return 0; + } +} +//# sourceMappingURL=compare-event-ordering.js.map + +/***/ }), + +/***/ 7482: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DeviceVerification = exports.Device = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** State of the verification of the device. */ +let DeviceVerification = exports.DeviceVerification = /*#__PURE__*/function (DeviceVerification) { + DeviceVerification[DeviceVerification["Blocked"] = -1] = "Blocked"; + DeviceVerification[DeviceVerification["Unverified"] = 0] = "Unverified"; + DeviceVerification[DeviceVerification["Verified"] = 1] = "Verified"; + return DeviceVerification; +}({}); +/** A map from user ID to device ID to Device */ +/** + * Information on a user's device, as returned by {@link Crypto.CryptoApi.getUserDeviceInfo}. + */ +class Device { + constructor(opts) { + /** id of the device */ + /** id of the user that owns the device */ + /** list of algorithms supported by this device */ + /** a map from `: -> ` */ + /** whether the device has been verified/blocked by the user */ + /** a map `>` */ + /** display name of the device */ + /** whether the device is a dehydrated device */ + (0, _defineProperty2.default)(this, "dehydrated", false); + this.deviceId = opts.deviceId; + this.userId = opts.userId; + this.algorithms = opts.algorithms; + this.keys = opts.keys; + this.verified = opts.verified || DeviceVerification.Unverified; + this.signatures = opts.signatures || new Map(); + this.displayName = opts.displayName; + this.dehydrated = !!opts.dehydrated; + } + + /** + * Get the fingerprint for this device (ie, the Ed25519 key) + * + * @returns base64-encoded fingerprint of this device + */ + getFingerprint() { + return this.keys.get(`ed25519:${this.deviceId}`); + } + + /** + * Get the identity key for this device (ie, the Curve25519 key) + * + * @returns base64-encoded identity key of this device + */ + getIdentityKey() { + return this.keys.get(`curve25519:${this.deviceId}`); + } +} +exports.Device = Device; +//# sourceMappingURL=device.js.map /***/ }), /***/ 1765: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.EventContext = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _eventTimeline = __nccwpck_require__(2763); +/* +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +class EventContext { + /** + * Construct a new EventContext + * + * An eventcontext is used for circumstances such as search results, when we + * have a particular event of interest, and a bunch of events before and after + * it. + * + * It also stores pagination tokens for going backwards and forwards in the + * timeline. + * + * @param ourEvent - the event at the centre of this context + */ + constructor(ourEvent) { + (0, _defineProperty2.default)(this, "ourEventIndex", 0); + (0, _defineProperty2.default)(this, "paginateTokens", { + [_eventTimeline.Direction.Backward]: null, + [_eventTimeline.Direction.Forward]: null + }); + this.ourEvent = ourEvent; + this.timeline = [ourEvent]; + } + + /** + * Get the main event of interest + * + * This is a convenience function for getTimeline()[getOurEventIndex()]. + * + * @returns The event at the centre of this context. + */ + getEvent() { + return this.timeline[this.ourEventIndex]; + } + + /** + * Get the list of events in this context + * + * @returns An array of MatrixEvents + */ + getTimeline() { + return this.timeline; + } + + /** + * Get the index in the timeline of our event + */ + getOurEventIndex() { + return this.ourEventIndex; + } + + /** + * Get a pagination token. + * + * @param backwards - true to get the pagination token for going + */ + getPaginateToken(backwards = false) { + return this.paginateTokens[backwards ? _eventTimeline.Direction.Backward : _eventTimeline.Direction.Forward]; + } + + /** + * Set a pagination token. + * + * Generally this will be used only by the matrix js sdk. + * + * @param token - pagination token + * @param backwards - true to set the pagination token for going + * backwards in time + */ + setPaginateToken(token, backwards = false) { + this.paginateTokens[backwards ? _eventTimeline.Direction.Backward : _eventTimeline.Direction.Forward] = token !== null && token !== void 0 ? token : null; + } + + /** + * Add more events to the timeline + * + * @param events - new events, in timeline order + * @param atStart - true to insert new events at the start + */ + addEvents(events, atStart = false) { + // TODO: should we share logic with Room.addEventsToTimeline? + // Should Room even use EventContext? + + if (atStart) { + this.timeline = events.concat(this.timeline); + this.ourEventIndex += events.length; + } else { + this.timeline = this.timeline.concat(events); + } + } +} +exports.EventContext = EventContext; +//# sourceMappingURL=event-context.js.map + +/***/ }), + +/***/ 8615: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -52521,11 +164916,9 @@ function createClient(opts) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.EventContext = EventContext; - +exports.EventStatus = void 0; /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2022 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -52539,145 +164932,42 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - /** - * @module models/event-context + * Enum for event statuses. + * @readonly */ - -/** - * Construct a new EventContext - * - * An eventcontext is used for circumstances such as search results, when we - * have a particular event of interest, and a bunch of events before and after - * it. - * - * It also stores pagination tokens for going backwards and forwards in the - * timeline. - * - * @param {MatrixEvent} ourEvent the event at the centre of this context - * - * @constructor - */ -function EventContext(ourEvent) { - this._timeline = [ourEvent]; - this._ourEventIndex = 0; - this._paginateTokens = { - b: null, - f: null - }; // this is used by MatrixClient to keep track of active requests - - this._paginateRequests = { - b: null, - f: null - }; -} -/** - * Get the main event of interest - * - * This is a convenience function for getTimeline()[getOurEventIndex()]. - * - * @return {MatrixEvent} The event at the centre of this context. - */ - - -EventContext.prototype.getEvent = function () { - return this._timeline[this._ourEventIndex]; -}; -/** - * Get the list of events in this context - * - * @return {Array} An array of MatrixEvents - */ - - -EventContext.prototype.getTimeline = function () { - return this._timeline; -}; -/** - * Get the index in the timeline of our event - * - * @return {Number} - */ - - -EventContext.prototype.getOurEventIndex = function () { - return this._ourEventIndex; -}; -/** - * Get a pagination token. - * - * @param {boolean} backwards true to get the pagination token for going - * backwards in time - * @return {string} - */ - - -EventContext.prototype.getPaginateToken = function (backwards) { - return this._paginateTokens[backwards ? 'b' : 'f']; -}; -/** - * Set a pagination token. - * - * Generally this will be used only by the matrix js sdk. - * - * @param {string} token pagination token - * @param {boolean} backwards true to set the pagination token for going - * backwards in time - */ - - -EventContext.prototype.setPaginateToken = function (token, backwards) { - this._paginateTokens[backwards ? 'b' : 'f'] = token; -}; -/** - * Add more events to the timeline - * - * @param {Array} events new events, in timeline order - * @param {boolean} atStart true to insert new events at the start - */ - - -EventContext.prototype.addEvents = function (events, atStart) { - // TODO: should we share logic with Room.addEventsToTimeline? - // Should Room even use EventContext? - if (atStart) { - this._timeline = events.concat(this._timeline); - this._ourEventIndex += events.length; - } else { - this._timeline = this._timeline.concat(events); - } -}; +let EventStatus = exports.EventStatus = /*#__PURE__*/function (EventStatus) { + EventStatus["NOT_SENT"] = "not_sent"; + EventStatus["ENCRYPTING"] = "encrypting"; + EventStatus["SENDING"] = "sending"; + EventStatus["QUEUED"] = "queued"; + EventStatus["SENT"] = "sent"; + EventStatus["CANCELLED"] = "cancelled"; + return EventStatus; +}({}); +//# sourceMappingURL=event-status.js.map /***/ }), /***/ 7256: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.EventTimelineSet = EventTimelineSet; - -var _events = __webpack_require__(8614); - -var _eventTimeline = __webpack_require__(2763); - -var _event = __webpack_require__(9564); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _logger = __webpack_require__(3854); - -var _relations = __webpack_require__(7920); - +exports.EventTimelineSet = exports.DuplicateStrategy = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _eventTimeline = __nccwpck_require__(2763); +var _logger = __nccwpck_require__(3854); +var _room = __nccwpck_require__(7688); +var _typedEventEmitter = __nccwpck_require__(7150); +var _relationsContainer = __nccwpck_require__(4061); /* -Copyright 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -52692,863 +164982,821 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** - * @module models/event-timeline-set - */ -// var DEBUG = false; const DEBUG = true; -let debuglog; +/* istanbul ignore next */ +let debuglog; if (DEBUG) { // using bind means that we get to keep useful line numbers in the console debuglog = _logger.logger.log.bind(_logger.logger); } else { + /* istanbul ignore next */ debuglog = function () {}; } -/** - * Construct a set of EventTimeline objects, typically on behalf of a given - * room. A room may have multiple EventTimelineSets for different levels - * of filtering. The global notification list is also an EventTimelineSet, but - * lacks a room. - * - *

This is an ordered sequence of timelines, which may or may not - * be continuous. Each timeline lists a series of events, as well as tracking - * the room state at the start and the end of the timeline (if appropriate). - * It also tracks forward and backward pagination tokens, as well as containing - * links to the next timeline in the sequence. - * - *

There is one special timeline - the 'live' timeline, which represents the - * timeline to which events are being added in real-time as they are received - * from the /sync API. Note that you should not retain references to this - * timeline - even if it is the current timeline right now, it may not remain - * so if the server gives us a timeline gap in /sync. - * - *

In order that we can find events from their ids later, we also maintain a - * map from event_id to timeline and index. - * - * @constructor - * @param {?Room} room - * Room for this timelineSet. May be null for non-room cases, such as the - * notification timeline. - * @param {Object} opts Options inherited from Room. - * - * @param {boolean} [opts.timelineSupport = false] - * Set to true to enable improved timeline support. - * @param {Object} [opts.filter = null] - * The filter object, if any, for this timelineSet. - * @param {boolean} [opts.unstableClientRelationAggregation = false] - * Optional. Set to true to enable client-side aggregation of event relations - * via `getRelationsForEvent`. - * This feature is currently unstable and the API may change without notice. - */ +let DuplicateStrategy = exports.DuplicateStrategy = /*#__PURE__*/function (DuplicateStrategy) { + DuplicateStrategy["Ignore"] = "ignore"; + DuplicateStrategy["Replace"] = "replace"; + return DuplicateStrategy; +}({}); +class EventTimelineSet extends _typedEventEmitter.TypedEventEmitter { + /** + * Construct a set of EventTimeline objects, typically on behalf of a given + * room. A room may have multiple EventTimelineSets for different levels + * of filtering. The global notification list is also an EventTimelineSet, but + * lacks a room. + * + *

This is an ordered sequence of timelines, which may or may not + * be continuous. Each timeline lists a series of events, as well as tracking + * the room state at the start and the end of the timeline (if appropriate). + * It also tracks forward and backward pagination tokens, as well as containing + * links to the next timeline in the sequence. + * + *

There is one special timeline - the 'live' timeline, which represents the + * timeline to which events are being added in real-time as they are received + * from the /sync API. Note that you should not retain references to this + * timeline - even if it is the current timeline right now, it may not remain + * so if the server gives us a timeline gap in /sync. + * + *

In order that we can find events from their ids later, we also maintain a + * map from event_id to timeline and index. + * + * @param room - Room for this timelineSet. May be null for non-room cases, such as the + * notification timeline. + * @param opts - Options inherited from Room. + * @param client - the Matrix client which owns this EventTimelineSet, + * can be omitted if room is specified. + * @param thread - the thread to which this timeline set relates. + * @param threadListType - the type of thread list represented, if any + * (e.g., All threads or My threads) + */ + constructor(room, opts = {}, client, thread, threadListType = null) { + var _this$room$relations, _this$room, _room$client; + super(); + (0, _defineProperty2.default)(this, "_eventIdToTimeline", new Map()); + this.room = room; + this.thread = thread; + this.threadListType = threadListType; + this.timelineSupport = Boolean(opts.timelineSupport); + this.liveTimeline = new _eventTimeline.EventTimeline(this); + this.displayPendingEvents = opts.pendingEvents !== false; - -function EventTimelineSet(room, opts) { - this.room = room; - this._timelineSupport = Boolean(opts.timelineSupport); - this._liveTimeline = new _eventTimeline.EventTimeline(this); - this._unstableClientRelationAggregation = !!opts.unstableClientRelationAggregation; // just a list - *not* ordered. - - this._timelines = [this._liveTimeline]; - this._eventIdToTimeline = {}; - this._filter = opts.filter || null; - - if (this._unstableClientRelationAggregation) { - // A tree of objects to access a set of relations for an event, as in: - // this._relations[relatesToEventId][relationType][relationEventType] - this._relations = {}; - } -} - -utils.inherits(EventTimelineSet, _events.EventEmitter); -/** - * Get all the timelines in this set - * @return {module:models/event-timeline~EventTimeline[]} the timelines in this set - */ - -EventTimelineSet.prototype.getTimelines = function () { - return this._timelines; -}; -/** - * Get the filter object this timeline set is filtered on, if any - * @return {?Filter} the optional filter for this timelineSet - */ - - -EventTimelineSet.prototype.getFilter = function () { - return this._filter; -}; -/** - * Set the filter object this timeline set is filtered on - * (passed to the server when paginating via /messages). - * @param {Filter} filter the filter for this timelineSet - */ - - -EventTimelineSet.prototype.setFilter = function (filter) { - this._filter = filter; -}; -/** - * Get the list of pending sent events for this timelineSet's room, filtered - * by the timelineSet's filter if appropriate. - * - * @return {module:models/event.MatrixEvent[]} A list of the sent events - * waiting for remote echo. - * - * @throws If opts.pendingEventOrdering was not 'detached' - */ - - -EventTimelineSet.prototype.getPendingEvents = function () { - if (!this.room) { - return []; + // just a list - *not* ordered. + this.timelines = [this.liveTimeline]; + this._eventIdToTimeline = new Map(); + this.filter = opts.filter; + this.relations = (_this$room$relations = (_this$room = this.room) === null || _this$room === void 0 ? void 0 : _this$room.relations) !== null && _this$room$relations !== void 0 ? _this$room$relations : new _relationsContainer.RelationsContainer((_room$client = room === null || room === void 0 ? void 0 : room.client) !== null && _room$client !== void 0 ? _room$client : client); } - if (this._filter) { - return this._filter.filterRoomTimeline(this.room.getPendingEvents()); - } else { + /** + * Get all the timelines in this set + * @returns the timelines in this set + */ + getTimelines() { + return this.timelines; + } + + /** + * Get the filter object this timeline set is filtered on, if any + * @returns the optional filter for this timelineSet + */ + getFilter() { + return this.filter; + } + + /** + * Set the filter object this timeline set is filtered on + * (passed to the server when paginating via /messages). + * @param filter - the filter for this timelineSet + */ + setFilter(filter) { + this.filter = filter; + } + + /** + * Get the list of pending sent events for this timelineSet's room, filtered + * by the timelineSet's filter if appropriate. + * + * @returns A list of the sent events + * waiting for remote echo. + * + * @throws If `opts.pendingEventOrdering` was not 'detached' + */ + getPendingEvents() { + if (!this.room || !this.displayPendingEvents) { + return []; + } return this.room.getPendingEvents(); } -}; -/** - * Get the live timeline for this room. - * - * @return {module:models/event-timeline~EventTimeline} live timeline - */ - - -EventTimelineSet.prototype.getLiveTimeline = function () { - return this._liveTimeline; -}; -/** - * Return the timeline (if any) this event is in. - * @param {String} eventId the eventId being sought - * @return {module:models/event-timeline~EventTimeline} timeline - */ - - -EventTimelineSet.prototype.eventIdToTimeline = function (eventId) { - return this._eventIdToTimeline[eventId]; -}; -/** - * Track a new event as if it were in the same timeline as an old event, - * replacing it. - * @param {String} oldEventId event ID of the original event - * @param {String} newEventId event ID of the replacement event - */ - - -EventTimelineSet.prototype.replaceEventId = function (oldEventId, newEventId) { - const existingTimeline = this._eventIdToTimeline[oldEventId]; - - if (existingTimeline) { - delete this._eventIdToTimeline[oldEventId]; - this._eventIdToTimeline[newEventId] = existingTimeline; - } -}; -/** - * Reset the live timeline, and start a new one. - * - *

This is used when /sync returns a 'limited' timeline. - * - * @param {string=} backPaginationToken token for back-paginating the new timeline - * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline, - * if absent or null, all timelines are reset. - * - * @fires module:client~MatrixClient#event:"Room.timelineReset" - */ - - -EventTimelineSet.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) { - // Each EventTimeline has RoomState objects tracking the state at the start - // and end of that timeline. The copies at the end of the live timeline are - // special because they will have listeners attached to monitor changes to - // the current room state, so we move this RoomState from the end of the - // current live timeline to the end of the new one and, if necessary, - // replace it with a newly created one. We also make a copy for the start - // of the new timeline. - // if timeline support is disabled, forget about the old timelines - const resetAllTimelines = !this._timelineSupport || !forwardPaginationToken; - const oldTimeline = this._liveTimeline; - const newTimeline = resetAllTimelines ? oldTimeline.forkLive(_eventTimeline.EventTimeline.FORWARDS) : oldTimeline.fork(_eventTimeline.EventTimeline.FORWARDS); - - if (resetAllTimelines) { - this._timelines = [newTimeline]; - this._eventIdToTimeline = {}; - } else { - this._timelines.push(newTimeline); + /** + * Get the live timeline for this room. + * + * @returns live timeline + */ + getLiveTimeline() { + return this.liveTimeline; } - if (forwardPaginationToken) { - // Now set the forward pagination token on the old live timeline - // so it can be forward-paginated. - oldTimeline.setPaginationToken(forwardPaginationToken, _eventTimeline.EventTimeline.FORWARDS); - } // make sure we set the pagination token before firing timelineReset, - // otherwise clients which start back-paginating will fail, and then get - // stuck without realising that they *can* back-paginate. - - - newTimeline.setPaginationToken(backPaginationToken, _eventTimeline.EventTimeline.BACKWARDS); // Now we can swap the live timeline to the new one. - - this._liveTimeline = newTimeline; - this.emit("Room.timelineReset", this.room, this, resetAllTimelines); -}; -/** - * Get the timeline which contains the given event, if any - * - * @param {string} eventId event ID to look for - * @return {?module:models/event-timeline~EventTimeline} timeline containing - * the given event, or null if unknown - */ - - -EventTimelineSet.prototype.getTimelineForEvent = function (eventId) { - const res = this._eventIdToTimeline[eventId]; - return res === undefined ? null : res; -}; -/** - * Get an event which is stored in our timelines - * - * @param {string} eventId event ID to look for - * @return {?module:models/event~MatrixEvent} the given event, or undefined if unknown - */ - - -EventTimelineSet.prototype.findEventById = function (eventId) { - const tl = this.getTimelineForEvent(eventId); - - if (!tl) { - return undefined; + /** + * Set the live timeline for this room. + * + * @returns live timeline + */ + setLiveTimeline(timeline) { + this.liveTimeline = timeline; } - return utils.findElement(tl.getEvents(), function (ev) { - return ev.getId() == eventId; - }); -}; -/** - * Add a new timeline to this timeline list - * - * @return {module:models/event-timeline~EventTimeline} newly-created timeline - */ - - -EventTimelineSet.prototype.addTimeline = function () { - if (!this._timelineSupport) { - throw new Error("timeline support is disabled. Set the 'timelineSupport'" + " parameter to true when creating MatrixClient to enable" + " it."); + /** + * Return the timeline (if any) this event is in. + * @param eventId - the eventId being sought + * @returns timeline + */ + eventIdToTimeline(eventId) { + return this._eventIdToTimeline.get(eventId); } - const timeline = new _eventTimeline.EventTimeline(this); - - this._timelines.push(timeline); - - return timeline; -}; -/** - * Add events to a timeline - * - *

Will fire "Room.timeline" for each event added. - * - * @param {MatrixEvent[]} events A list of events to add. - * - * @param {boolean} toStartOfTimeline True to add these events to the start - * (oldest) instead of the end (newest) of the timeline. If true, the oldest - * event will be the last element of 'events'. - * - * @param {module:models/event-timeline~EventTimeline} timeline timeline to - * add events to. - * - * @param {string=} paginationToken token for the next batch of events - * - * @fires module:client~MatrixClient#event:"Room.timeline" - * - */ - - -EventTimelineSet.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) { - if (!timeline) { - throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline"); - } - - if (!toStartOfTimeline && timeline == this._liveTimeline) { - throw new Error("EventTimelineSet.addEventsToTimeline cannot be used for adding events to " + "the live timeline - use Room.addLiveEvents instead"); - } - - if (this._filter) { - events = this._filter.filterRoomTimeline(events); - - if (!events.length) { - return; + /** + * Track a new event as if it were in the same timeline as an old event, + * replacing it. + * @param oldEventId - event ID of the original event + * @param newEventId - event ID of the replacement event + */ + replaceEventId(oldEventId, newEventId) { + const existingTimeline = this._eventIdToTimeline.get(oldEventId); + if (existingTimeline) { + this._eventIdToTimeline.delete(oldEventId); + this._eventIdToTimeline.set(newEventId, existingTimeline); } } - const direction = toStartOfTimeline ? _eventTimeline.EventTimeline.BACKWARDS : _eventTimeline.EventTimeline.FORWARDS; - const inverseDirection = toStartOfTimeline ? _eventTimeline.EventTimeline.FORWARDS : _eventTimeline.EventTimeline.BACKWARDS; // Adding events to timelines can be quite complicated. The following - // illustrates some of the corner-cases. - // - // Let's say we start by knowing about four timelines. timeline3 and - // timeline4 are neighbours: - // - // timeline1 timeline2 timeline3 timeline4 - // [M] [P] [S] <------> [T] - // - // Now we paginate timeline1, and get the following events from the server: - // [M, N, P, R, S, T, U]. - // - // 1. First, we ignore event M, since we already know about it. - // - // 2. Next, we append N to timeline 1. - // - // 3. Next, we don't add event P, since we already know about it, - // but we do link together the timelines. We now have: - // - // timeline1 timeline2 timeline3 timeline4 - // [M, N] <---> [P] [S] <------> [T] - // - // 4. Now we add event R to timeline2: - // - // timeline1 timeline2 timeline3 timeline4 - // [M, N] <---> [P, R] [S] <------> [T] - // - // Note that we have switched the timeline we are working on from - // timeline1 to timeline2. - // - // 5. We ignore event S, but again join the timelines: - // - // timeline1 timeline2 timeline3 timeline4 - // [M, N] <---> [P, R] <---> [S] <------> [T] - // - // 6. We ignore event T, and the timelines are already joined, so there - // is nothing to do. - // - // 7. Finally, we add event U to timeline4: - // - // timeline1 timeline2 timeline3 timeline4 - // [M, N] <---> [P, R] <---> [S] <------> [T, U] - // - // The important thing to note in the above is what happened when we - // already knew about a given event: - // - // - if it was appropriate, we joined up the timelines (steps 3, 5). - // - in any case, we started adding further events to the timeline which - // contained the event we knew about (steps 3, 5, 6). - // - // - // So much for adding events to the timeline. But what do we want to do - // with the pagination token? - // - // In the case above, we will be given a pagination token which tells us how to - // get events beyond 'U' - in this case, it makes sense to store this - // against timeline4. But what if timeline4 already had 'U' and beyond? in - // that case, our best bet is to throw away the pagination token we were - // given and stick with whatever token timeline4 had previously. In short, - // we want to only store the pagination token if the last event we receive - // is one we didn't previously know about. - // - // We make an exception for this if it turns out that we already knew about - // *all* of the events, and we weren't able to join up any timelines. When - // that happens, it means our existing pagination token is faulty, since it - // is only telling us what we already know. Rather than repeatedly - // paginating with the same token, we might as well use the new pagination - // token in the hope that we eventually work our way out of the mess. + /** + * Reset the live timeline, and start a new one. + * + *

This is used when /sync returns a 'limited' timeline. + * + * @param backPaginationToken - token for back-paginating the new timeline + * @param forwardPaginationToken - token for forward-paginating the old live timeline, + * if absent or null, all timelines are reset. + * + * @remarks + * Fires {@link RoomEvent.TimelineReset} + */ + resetLiveTimeline(backPaginationToken, forwardPaginationToken) { + // Each EventTimeline has RoomState objects tracking the state at the start + // and end of that timeline. The copies at the end of the live timeline are + // special because they will have listeners attached to monitor changes to + // the current room state, so we move this RoomState from the end of the + // current live timeline to the end of the new one and, if necessary, + // replace it with a newly created one. We also make a copy for the start + // of the new timeline. - let didUpdate = false; - let lastEventWasNew = false; - - for (let i = 0; i < events.length; i++) { - const event = events[i]; - const eventId = event.getId(); - const existingTimeline = this._eventIdToTimeline[eventId]; - - if (!existingTimeline) { - // we don't know about this event yet. Just add it to the timeline. - this.addEventToTimeline(event, timeline, toStartOfTimeline); - lastEventWasNew = true; - didUpdate = true; - continue; + // if timeline support is disabled, forget about the old timelines + const resetAllTimelines = !this.timelineSupport || !forwardPaginationToken; + const oldTimeline = this.liveTimeline; + const newTimeline = resetAllTimelines ? oldTimeline.forkLive(_eventTimeline.EventTimeline.FORWARDS) : oldTimeline.fork(_eventTimeline.EventTimeline.FORWARDS); + if (resetAllTimelines) { + this.timelines = [newTimeline]; + this._eventIdToTimeline = new Map(); + } else { + this.timelines.push(newTimeline); + } + if (forwardPaginationToken) { + // Now set the forward pagination token on the old live timeline + // so it can be forward-paginated. + oldTimeline.setPaginationToken(forwardPaginationToken, _eventTimeline.EventTimeline.FORWARDS); } - lastEventWasNew = false; + // make sure we set the pagination token before firing timelineReset, + // otherwise clients which start back-paginating will fail, and then get + // stuck without realising that they *can* back-paginate. + newTimeline.setPaginationToken(backPaginationToken !== null && backPaginationToken !== void 0 ? backPaginationToken : null, _eventTimeline.EventTimeline.BACKWARDS); - if (existingTimeline == timeline) { - debuglog("Event " + eventId + " already in timeline " + timeline); - continue; + // Now we can swap the live timeline to the new one. + this.liveTimeline = newTimeline; + this.emit(_room.RoomEvent.TimelineReset, this.room, this, resetAllTimelines); + } + + /** + * Get the timeline which contains the given event, if any + * + * @param eventId - event ID to look for + * @returns timeline containing + * the given event, or null if unknown + */ + getTimelineForEvent(eventId) { + if (eventId === null || eventId === undefined) { + return null; } + const res = this._eventIdToTimeline.get(eventId); + return res === undefined ? null : res; + } - const neighbour = timeline.getNeighbouringTimeline(direction); + /** + * Get an event which is stored in our timelines + * + * @param eventId - event ID to look for + * @returns the given event, or undefined if unknown + */ + findEventById(eventId) { + const tl = this.getTimelineForEvent(eventId); + if (!tl) { + return undefined; + } + return tl.getEvents().find(function (ev) { + return ev.getId() == eventId; + }); + } - if (neighbour) { - // this timeline already has a neighbour in the relevant direction; - // let's assume the timelines are already correctly linked up, and - // skip over to it. - // - // there's probably some edge-case here where we end up with an - // event which is in a timeline a way down the chain, and there is - // a break in the chain somewhere. But I can't really imagine how - // that would happen, so I'm going to ignore it for now. - // - if (existingTimeline == neighbour) { - debuglog("Event " + eventId + " in neighbouring timeline - " + "switching to " + existingTimeline); - } else { - debuglog("Event " + eventId + " already in a different " + "timeline " + existingTimeline); + /** + * Add a new timeline to this timeline list + * + * @returns newly-created timeline + */ + addTimeline() { + if (!this.timelineSupport) { + throw new Error("timeline support is disabled. Set the 'timelineSupport'" + " parameter to true when creating MatrixClient to enable" + " it."); + } + const timeline = new _eventTimeline.EventTimeline(this); + this.timelines.push(timeline); + return timeline; + } + + /** + * Add events to a timeline + * + *

Will fire "Room.timeline" for each event added. + * + * @param events - A list of events to add. + * + * @param toStartOfTimeline - True to add these events to the start + * (oldest) instead of the end (newest) of the timeline. If true, the oldest + * event will be the last element of 'events'. + * + * @param timeline - timeline to + * add events to. + * + * @param paginationToken - token for the next batch of events + * + * @remarks + * Fires {@link RoomEvent.Timeline} + * + */ + addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken) { + if (!timeline) { + throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline"); + } + if (!toStartOfTimeline && timeline == this.liveTimeline) { + throw new Error("EventTimelineSet.addEventsToTimeline cannot be used for adding events to " + "the live timeline - use Room.addLiveEvents instead"); + } + if (this.filter) { + events = this.filter.filterRoomTimeline(events); + if (!events.length) { + return; + } + } + const direction = toStartOfTimeline ? _eventTimeline.EventTimeline.BACKWARDS : _eventTimeline.EventTimeline.FORWARDS; + const inverseDirection = toStartOfTimeline ? _eventTimeline.EventTimeline.FORWARDS : _eventTimeline.EventTimeline.BACKWARDS; + + // Adding events to timelines can be quite complicated. The following + // illustrates some of the corner-cases. + // + // Let's say we start by knowing about four timelines. timeline3 and + // timeline4 are neighbours: + // + // timeline1 timeline2 timeline3 timeline4 + // [M] [P] [S] <------> [T] + // + // Now we paginate timeline1, and get the following events from the server: + // [M, N, P, R, S, T, U]. + // + // 1. First, we ignore event M, since we already know about it. + // + // 2. Next, we append N to timeline 1. + // + // 3. Next, we don't add event P, since we already know about it, + // but we do link together the timelines. We now have: + // + // timeline1 timeline2 timeline3 timeline4 + // [M, N] <---> [P] [S] <------> [T] + // + // 4. Now we add event R to timeline2: + // + // timeline1 timeline2 timeline3 timeline4 + // [M, N] <---> [P, R] [S] <------> [T] + // + // Note that we have switched the timeline we are working on from + // timeline1 to timeline2. + // + // 5. We ignore event S, but again join the timelines: + // + // timeline1 timeline2 timeline3 timeline4 + // [M, N] <---> [P, R] <---> [S] <------> [T] + // + // 6. We ignore event T, and the timelines are already joined, so there + // is nothing to do. + // + // 7. Finally, we add event U to timeline4: + // + // timeline1 timeline2 timeline3 timeline4 + // [M, N] <---> [P, R] <---> [S] <------> [T, U] + // + // The important thing to note in the above is what happened when we + // already knew about a given event: + // + // - if it was appropriate, we joined up the timelines (steps 3, 5). + // - in any case, we started adding further events to the timeline which + // contained the event we knew about (steps 3, 5, 6). + // + // + // So much for adding events to the timeline. But what do we want to do + // with the pagination token? + // + // In the case above, we will be given a pagination token which tells us how to + // get events beyond 'U' - in this case, it makes sense to store this + // against timeline4. But what if timeline4 already had 'U' and beyond? in + // that case, our best bet is to throw away the pagination token we were + // given and stick with whatever token timeline4 had previously. In short, + // we want to only store the pagination token if the last event we receive + // is one we didn't previously know about. + // + // We make an exception for this if it turns out that we already knew about + // *all* of the events, and we weren't able to join up any timelines. When + // that happens, it means our existing pagination token is faulty, since it + // is only telling us what we already know. Rather than repeatedly + // paginating with the same token, we might as well use the new pagination + // token in the hope that we eventually work our way out of the mess. + + let didUpdate = false; + let lastEventWasNew = false; + for (const event of events) { + const eventId = event.getId(); + const existingTimeline = this._eventIdToTimeline.get(eventId); + if (!existingTimeline) { + // we don't know about this event yet. Just add it to the timeline. + this.addEventToTimeline(event, timeline, { + toStartOfTimeline + }); + lastEventWasNew = true; + didUpdate = true; + continue; + } + lastEventWasNew = false; + if (existingTimeline == timeline) { + debuglog("Event " + eventId + " already in timeline " + timeline); + continue; + } + const neighbour = timeline.getNeighbouringTimeline(direction); + if (neighbour) { + // this timeline already has a neighbour in the relevant direction; + // let's assume the timelines are already correctly linked up, and + // skip over to it. + // + // there's probably some edge-case here where we end up with an + // event which is in a timeline a way down the chain, and there is + // a break in the chain somewhere. But I can't really imagine how + // that would happen, so I'm going to ignore it for now. + // + if (existingTimeline == neighbour) { + debuglog("Event " + eventId + " in neighbouring timeline - " + "switching to " + existingTimeline); + } else { + debuglog("Event " + eventId + " already in a different " + "timeline " + existingTimeline); + } + timeline = existingTimeline; + continue; } + // time to join the timelines. + _logger.logger.info("Already have timeline for " + eventId + " - joining timeline " + timeline + " to " + existingTimeline); + + // Variables to keep the line length limited below. + const existingIsLive = existingTimeline === this.liveTimeline; + const timelineIsLive = timeline === this.liveTimeline; + const backwardsIsLive = direction === _eventTimeline.EventTimeline.BACKWARDS && existingIsLive; + const forwardsIsLive = direction === _eventTimeline.EventTimeline.FORWARDS && timelineIsLive; + if (backwardsIsLive || forwardsIsLive) { + // The live timeline should never be spliced into a non-live position. + // We use independent logging to better discover the problem at a glance. + if (backwardsIsLive) { + _logger.logger.warn("Refusing to set a preceding existingTimeLine on our " + "timeline as the existingTimeLine is live (" + existingTimeline + ")"); + } + if (forwardsIsLive) { + _logger.logger.warn("Refusing to set our preceding timeline on a existingTimeLine " + "as our timeline is live (" + timeline + ")"); + } + continue; // abort splicing - try next event + } + timeline.setNeighbouringTimeline(existingTimeline, direction); + existingTimeline.setNeighbouringTimeline(timeline, inverseDirection); timeline = existingTimeline; - continue; - } // time to join the timelines. - - - _logger.logger.info("Already have timeline for " + eventId + " - joining timeline " + timeline + " to " + existingTimeline); // Variables to keep the line length limited below. - - - const existingIsLive = existingTimeline === this._liveTimeline; - const timelineIsLive = timeline === this._liveTimeline; - const backwardsIsLive = direction === _eventTimeline.EventTimeline.BACKWARDS && existingIsLive; - const forwardsIsLive = direction === _eventTimeline.EventTimeline.FORWARDS && timelineIsLive; - - if (backwardsIsLive || forwardsIsLive) { - // The live timeline should never be spliced into a non-live position. - // We use independent logging to better discover the problem at a glance. - if (backwardsIsLive) { - _logger.logger.warn("Refusing to set a preceding existingTimeLine on our " + "timeline as the existingTimeLine is live (" + existingTimeline + ")"); - } - - if (forwardsIsLive) { - _logger.logger.warn("Refusing to set our preceding timeline on a existingTimeLine " + "as our timeline is live (" + timeline + ")"); - } - - continue; // abort splicing - try next event + didUpdate = true; } - timeline.setNeighbouringTimeline(existingTimeline, direction); - existingTimeline.setNeighbouringTimeline(timeline, inverseDirection); - timeline = existingTimeline; - didUpdate = true; - } // see above - if the last event was new to us, or if we didn't find any - // new information, we update the pagination token for whatever - // timeline we ended up on. - - - if (lastEventWasNew || !didUpdate) { - if (direction === _eventTimeline.EventTimeline.FORWARDS && timeline === this._liveTimeline) { - _logger.logger.warn({ - lastEventWasNew, - didUpdate - }); // for debugging - - - _logger.logger.warn(`Refusing to set forwards pagination token of live timeline ` + `${timeline} to ${paginationToken}`); - - return; - } - - timeline.setPaginationToken(paginationToken, direction); - } -}; -/** - * Add an event to the end of this live timeline. - * - * @param {MatrixEvent} event Event to be added - * @param {string?} duplicateStrategy 'ignore' or 'replace' - * @param {boolean} fromCache whether the sync response came from cache - */ - - -EventTimelineSet.prototype.addLiveEvent = function (event, duplicateStrategy, fromCache) { - if (this._filter) { - const events = this._filter.filterRoomTimeline([event]); - - if (!events.length) { - return; + // see above - if the last event was new to us, or if we didn't find any + // new information, we update the pagination token for whatever + // timeline we ended up on. + if (lastEventWasNew || !didUpdate) { + if (direction === _eventTimeline.EventTimeline.FORWARDS && timeline === this.liveTimeline) { + _logger.logger.warn({ + lastEventWasNew, + didUpdate + }); // for debugging + _logger.logger.warn(`Refusing to set forwards pagination token of live timeline ` + `${timeline} to ${paginationToken}`); + return; + } + timeline.setPaginationToken(paginationToken !== null && paginationToken !== void 0 ? paginationToken : null, direction); } } - const timeline = this._eventIdToTimeline[event.getId()]; + /** + * Add an event to the end of this live timeline. + * + * @param event - Event to be added + * @param options - addLiveEvent options + */ - if (timeline) { - if (duplicateStrategy === "replace") { - debuglog("EventTimelineSet.addLiveEvent: replacing duplicate event " + event.getId()); - const tlEvents = timeline.getEvents(); + /** + * @deprecated In favor of the overload with `IAddLiveEventOptions` + */ - for (let j = 0; j < tlEvents.length; j++) { - if (tlEvents[j].getId() === event.getId()) { - // still need to set the right metadata on this event - _eventTimeline.EventTimeline.setEventMetadata(event, timeline.getState(_eventTimeline.EventTimeline.FORWARDS), false); - - if (!tlEvents[j].encryptedType) { + addLiveEvent(event, duplicateStrategyOrOpts, fromCache = false, roomState) { + let duplicateStrategy = duplicateStrategyOrOpts || DuplicateStrategy.Ignore; + let timelineWasEmpty; + if (typeof duplicateStrategyOrOpts === "object") { + ({ + duplicateStrategy = DuplicateStrategy.Ignore, + fromCache = false, + roomState, + timelineWasEmpty + } = duplicateStrategyOrOpts); + } else if (duplicateStrategyOrOpts !== undefined) { + // Deprecation warning + // FIXME: Remove after 2023-06-01 (technical debt) + _logger.logger.warn("Overload deprecated: " + "`EventTimelineSet.addLiveEvent(event, duplicateStrategy?, fromCache?, roomState?)` " + "is deprecated in favor of the overload with " + "`EventTimelineSet.addLiveEvent(event, IAddLiveEventOptions)`"); + } + if (this.filter) { + const events = this.filter.filterRoomTimeline([event]); + if (!events.length) { + return; + } + } + const timeline = this._eventIdToTimeline.get(event.getId()); + if (timeline) { + if (duplicateStrategy === DuplicateStrategy.Replace) { + debuglog("EventTimelineSet.addLiveEvent: replacing duplicate event " + event.getId()); + const tlEvents = timeline.getEvents(); + for (let j = 0; j < tlEvents.length; j++) { + if (tlEvents[j].getId() === event.getId()) { + // still need to set the right metadata on this event + if (!roomState) { + roomState = timeline.getState(_eventTimeline.EventTimeline.FORWARDS); + } + _eventTimeline.EventTimeline.setEventMetadata(event, roomState, false); tlEvents[j] = event; - } // XXX: we need to fire an event when this happens. + // XXX: we need to fire an event when this happens. + break; + } + } + } else { + debuglog("EventTimelineSet.addLiveEvent: ignoring duplicate event " + event.getId()); + } + return; + } + this.addEventToTimeline(event, this.liveTimeline, { + toStartOfTimeline: false, + fromCache, + roomState, + timelineWasEmpty + }); + } - break; + /** + * Add event to the given timeline, and emit Room.timeline. Assumes + * we have already checked we don't know about this event. + * + * Will fire "Room.timeline" for each event added. + * + * @param event - the event to add + * @param timeline - the timeline onto which to add it + * @param options - addEventToTimeline options + * + * @remarks + * Fires {@link RoomEvent.Timeline} + */ + + /** + * @deprecated In favor of the overload with `IAddEventToTimelineOptions` + */ + + addEventToTimeline(event, timeline, toStartOfTimelineOrOpts, fromCache = false, roomState) { + let toStartOfTimeline = !!toStartOfTimelineOrOpts; + let timelineWasEmpty; + if (typeof toStartOfTimelineOrOpts === "object") { + ({ + toStartOfTimeline, + fromCache = false, + roomState, + timelineWasEmpty + } = toStartOfTimelineOrOpts); + } else if (toStartOfTimelineOrOpts !== undefined) { + // Deprecation warning + // FIXME: Remove after 2023-06-01 (technical debt) + _logger.logger.warn("Overload deprecated: " + "`EventTimelineSet.addEventToTimeline(event, timeline, toStartOfTimeline, fromCache?, roomState?)` " + "is deprecated in favor of the overload with " + "`EventTimelineSet.addEventToTimeline(event, timeline, IAddEventToTimelineOptions)`"); + } + if (timeline.getTimelineSet() !== this) { + var _this$thread; + throw new Error(`EventTimelineSet.addEventToTimeline: Timeline=${timeline.toString()} does not belong " + + "in timelineSet(threadId=${(_this$thread = this.thread) === null || _this$thread === void 0 ? void 0 : _this$thread.id})`); + } + const eventId = event.getId(); + this.relations.aggregateParentEvent(event); + this.relations.aggregateChildEvent(event, this); + + // Make sure events don't get mixed in timelines they shouldn't be in (e.g. a + // threaded message should not be in the main timeline). + // + // We can only run this check for timelines with a `room` because `canContain` + // requires it + if (this.room && !this.canContain(event)) { + var _this$thread2; + let eventDebugString = `event=${eventId}`; + if (event.threadRootId) { + eventDebugString += `(belongs to thread=${event.threadRootId})`; + } + _logger.logger.warn(`EventTimelineSet.addEventToTimeline: Ignoring ${eventDebugString} that does not belong ` + `in timeline=${timeline.toString()} timelineSet(threadId=${(_this$thread2 = this.thread) === null || _this$thread2 === void 0 ? void 0 : _this$thread2.id})`); + return; + } + timeline.addEvent(event, { + toStartOfTimeline, + roomState, + timelineWasEmpty + }); + this._eventIdToTimeline.set(eventId, timeline); + const data = { + timeline: timeline, + liveEvent: !toStartOfTimeline && timeline == this.liveTimeline && !fromCache + }; + this.emit(_room.RoomEvent.Timeline, event, this.room, Boolean(toStartOfTimeline), false, data); + } + + /** + * Insert event to the given timeline, and emit Room.timeline. Assumes + * we have already checked we don't know about this event. + * + * TEMPORARY: until we have recursive relations, we need this function + * to exist to allow us to insert events in timeline order, which is our + * best guess for Sync Order. + * This is a copy of addEventToTimeline above, modified to insert the event + * after the event it relates to, and before any event with a later + * timestamp. This is our best guess at Sync Order. + * + * Will fire "Room.timeline" for each event added. + * + * @internal + * + * @remarks + * Fires {@link RoomEvent.Timeline} + */ + insertEventIntoTimeline(event, timeline, roomState) { + if (timeline.getTimelineSet() !== this) { + var _this$thread3; + throw new Error(`EventTimelineSet.insertEventIntoTimeline: Timeline=${timeline.toString()} does not belong " + + "in timelineSet(threadId=${(_this$thread3 = this.thread) === null || _this$thread3 === void 0 ? void 0 : _this$thread3.id})`); + } + const eventId = event.getId(); + this.relations.aggregateParentEvent(event); + this.relations.aggregateChildEvent(event, this); + + // Make sure events don't get mixed in timelines they shouldn't be in (e.g. a + // threaded message should not be in the main timeline). + // + // We can only run this check for timelines with a `room` because `canContain` + // requires it + if (this.room && !this.canContain(event)) { + var _this$thread4; + let eventDebugString = `event=${eventId}`; + if (event.threadRootId) { + eventDebugString += `(belongs to thread=${event.threadRootId})`; + } + _logger.logger.warn(`EventTimelineSet.insertEventIntoTimeline: Ignoring ${eventDebugString} that does not belong ` + `in timeline=${timeline.toString()} timelineSet(threadId=${(_this$thread4 = this.thread) === null || _this$thread4 === void 0 ? void 0 : _this$thread4.id})`); + return; + } + + // Find the event that this event is related to - the "parent" + const parentEventId = event.relationEventId; + if (!parentEventId) { + // Not related to anything - we just append + this.addEventToTimeline(event, timeline, { + toStartOfTimeline: false, + fromCache: false, + timelineWasEmpty: false, + roomState + }); + return; + } + const parentEvent = this.findEventById(parentEventId); + const timelineEvents = timeline.getEvents(); + + // Start searching from the parent event, or if it's not loaded, start + // at the beginning and insert purely using timestamp order. + const parentIndex = parentEvent !== undefined ? timelineEvents.indexOf(parentEvent) : 0; + let insertIndex = parentIndex; + for (; insertIndex < timelineEvents.length; insertIndex++) { + const nextEvent = timelineEvents[insertIndex]; + if (nextEvent.getTs() > event.getTs()) { + // We found an event later than ours, so insert before that. + break; + } + } + // If we got to the end of the loop, insertIndex points at the end of + // the list. + + timeline.insertEvent(event, insertIndex, roomState); + this._eventIdToTimeline.set(eventId, timeline); + const data = { + timeline: timeline, + // The purpose of this method is inserting events in the middle of the + // timeline, so the events are, by definition, not live (whether or not + // we're adding them to the live timeline). + liveEvent: false + }; + this.emit(_room.RoomEvent.Timeline, event, this.room, false, false, data); + } + + /** + * Replaces event with ID oldEventId with one with newEventId, if oldEventId is + * recognised. Otherwise, add to the live timeline. Used to handle remote echos. + * + * @param localEvent - the new event to be added to the timeline + * @param oldEventId - the ID of the original event + * @param newEventId - the ID of the replacement event + * + * @remarks + * Fires {@link RoomEvent.Timeline} + */ + handleRemoteEcho(localEvent, oldEventId, newEventId) { + // XXX: why don't we infer newEventId from localEvent? + const existingTimeline = this._eventIdToTimeline.get(oldEventId); + if (existingTimeline) { + this._eventIdToTimeline.delete(oldEventId); + this._eventIdToTimeline.set(newEventId, existingTimeline); + } else if (!this.filter || this.filter.filterRoomTimeline([localEvent]).length) { + this.addEventToTimeline(localEvent, this.liveTimeline, { + toStartOfTimeline: false + }); + } + } + + /** + * Removes a single event from this room. + * + * @param eventId - The id of the event to remove + * + * @returns the removed event, or null if the event was not found + * in this room. + */ + removeEvent(eventId) { + const timeline = this._eventIdToTimeline.get(eventId); + if (!timeline) { + return null; + } + const removed = timeline.removeEvent(eventId); + if (removed) { + this._eventIdToTimeline.delete(eventId); + const data = { + timeline: timeline + }; + this.emit(_room.RoomEvent.Timeline, removed, this.room, undefined, true, data); + } + return removed; + } + + /** + * Determine where two events appear in the timeline relative to one another + * + * @param eventId1 - The id of the first event + * @param eventId2 - The id of the second event + * @returns -1 if eventId1 precedes eventId2, and +1 eventId1 succeeds + * eventId2. 0 if they are the same event; null if we can't tell (either + * because we don't know about one of the events, or because they are in + * separate timelines which don't join up). + */ + compareEventOrdering(eventId1, eventId2) { + if (eventId1 == eventId2) { + // optimise this case + return 0; + } + const timeline1 = this._eventIdToTimeline.get(eventId1); + const timeline2 = this._eventIdToTimeline.get(eventId2); + if (timeline1 === undefined) { + return null; + } + if (timeline2 === undefined) { + return null; + } + if (timeline1 === timeline2) { + // both events are in the same timeline - figure out their relative indices + let idx1 = undefined; + let idx2 = undefined; + const events = timeline1.getEvents(); + for (let idx = 0; idx < events.length && (idx1 === undefined || idx2 === undefined); idx++) { + const evId = events[idx].getId(); + if (evId == eventId1) { + idx1 = idx; + } + if (evId == eventId2) { + idx2 = idx; } } - } else { - debuglog("EventTimelineSet.addLiveEvent: ignoring duplicate event " + event.getId()); - } + const difference = idx1 - idx2; - return; - } - - this.addEventToTimeline(event, this._liveTimeline, false, fromCache); -}; -/** - * Add event to the given timeline, and emit Room.timeline. Assumes - * we have already checked we don't know about this event. - * - * Will fire "Room.timeline" for each event added. - * - * @param {MatrixEvent} event - * @param {EventTimeline} timeline - * @param {boolean} toStartOfTimeline - * @param {boolean} fromCache whether the sync response came from cache - * - * @fires module:client~MatrixClient#event:"Room.timeline" - */ - - -EventTimelineSet.prototype.addEventToTimeline = function (event, timeline, toStartOfTimeline, fromCache) { - const eventId = event.getId(); - timeline.addEvent(event, toStartOfTimeline); - this._eventIdToTimeline[eventId] = timeline; - this.setRelationsTarget(event); - this.aggregateRelations(event); - const data = { - timeline: timeline, - liveEvent: !toStartOfTimeline && timeline == this._liveTimeline && !fromCache - }; - this.emit("Room.timeline", event, this.room, Boolean(toStartOfTimeline), false, data); -}; -/** - * Replaces event with ID oldEventId with one with newEventId, if oldEventId is - * recognised. Otherwise, add to the live timeline. Used to handle remote echos. - * - * @param {MatrixEvent} localEvent the new event to be added to the timeline - * @param {String} oldEventId the ID of the original event - * @param {boolean} newEventId the ID of the replacement event - * - * @fires module:client~MatrixClient#event:"Room.timeline" - */ - - -EventTimelineSet.prototype.handleRemoteEcho = function (localEvent, oldEventId, newEventId) { - // XXX: why don't we infer newEventId from localEvent? - const existingTimeline = this._eventIdToTimeline[oldEventId]; - - if (existingTimeline) { - delete this._eventIdToTimeline[oldEventId]; - this._eventIdToTimeline[newEventId] = existingTimeline; - } else { - if (this._filter) { - if (this._filter.filterRoomTimeline([localEvent]).length) { - this.addEventToTimeline(localEvent, this._liveTimeline, false); - } - } else { - this.addEventToTimeline(localEvent, this._liveTimeline, false); - } - } -}; -/** - * Removes a single event from this room. - * - * @param {String} eventId The id of the event to remove - * - * @return {?MatrixEvent} the removed event, or null if the event was not found - * in this room. - */ - - -EventTimelineSet.prototype.removeEvent = function (eventId) { - const timeline = this._eventIdToTimeline[eventId]; - - if (!timeline) { - return null; - } - - const removed = timeline.removeEvent(eventId); - - if (removed) { - delete this._eventIdToTimeline[eventId]; - const data = { - timeline: timeline - }; - this.emit("Room.timeline", removed, this.room, undefined, true, data); - } - - return removed; -}; -/** - * Determine where two events appear in the timeline relative to one another - * - * @param {string} eventId1 The id of the first event - * @param {string} eventId2 The id of the second event - - * @return {?number} a number less than zero if eventId1 precedes eventId2, and - * greater than zero if eventId1 succeeds eventId2. zero if they are the - * same event; null if we can't tell (either because we don't know about one - * of the events, or because they are in separate timelines which don't join - * up). - */ - - -EventTimelineSet.prototype.compareEventOrdering = function (eventId1, eventId2) { - if (eventId1 == eventId2) { - // optimise this case - return 0; - } - - const timeline1 = this._eventIdToTimeline[eventId1]; - const timeline2 = this._eventIdToTimeline[eventId2]; - - if (timeline1 === undefined) { - return null; - } - - if (timeline2 === undefined) { - return null; - } - - if (timeline1 === timeline2) { - // both events are in the same timeline - figure out their - // relative indices - let idx1; - let idx2; - const events = timeline1.getEvents(); - - for (let idx = 0; idx < events.length && (idx1 === undefined || idx2 === undefined); idx++) { - const evId = events[idx].getId(); - - if (evId == eventId1) { - idx1 = idx; - } - - if (evId == eventId2) { - idx2 = idx; + // Return the sign of difference. + if (difference < 0) { + return -1; + } else if (difference > 0) { + return 1; + } else { + return 0; } } - return idx1 - idx2; - } // the events are in different timelines. Iterate through the - // linkedlist to see which comes first. - // first work forwards from timeline1 + // the events are in different timelines. Iterate through the + // linkedlist to see which comes first. - - let tl = timeline1; - - while (tl) { - if (tl === timeline2) { - // timeline1 is before timeline2 - return -1; + // first work forwards from timeline1 + let tl = timeline1; + while (tl) { + if (tl === timeline2) { + // timeline1 is before timeline2 + return -1; + } + tl = tl.getNeighbouringTimeline(_eventTimeline.EventTimeline.FORWARDS); } - tl = tl.getNeighbouringTimeline(_eventTimeline.EventTimeline.FORWARDS); - } // now try backwards from timeline1 - - - tl = timeline1; - - while (tl) { - if (tl === timeline2) { - // timeline2 is before timeline1 - return 1; + // now try backwards from timeline1 + tl = timeline1; + while (tl) { + if (tl === timeline2) { + // timeline2 is before timeline1 + return 1; + } + tl = tl.getNeighbouringTimeline(_eventTimeline.EventTimeline.BACKWARDS); } - tl = tl.getNeighbouringTimeline(_eventTimeline.EventTimeline.BACKWARDS); - } // the timelines are not contiguous. - - - return null; -}; -/** - * Get a collection of relations to a given event in this timeline set. - * - * @param {String} eventId - * The ID of the event that you'd like to access relation events for. - * For example, with annotations, this would be the ID of the event being annotated. - * @param {String} relationType - * The type of relation involved, such as "m.annotation", "m.reference", "m.replace", etc. - * @param {String} eventType - * The relation event's type, such as "m.reaction", etc. - * @throws If eventId, relationType or eventType - * are not valid. - * - * @returns {?Relations} - * A container for relation events or undefined if there are no relation events for - * the relationType. - */ - - -EventTimelineSet.prototype.getRelationsForEvent = function (eventId, relationType, eventType) { - if (!this._unstableClientRelationAggregation) { - throw new Error("Client-side relation aggregation is disabled"); + // the timelines are not contiguous. + return null; } - if (!eventId || !relationType || !eventType) { - throw new Error("Invalid arguments for `getRelationsForEvent`"); - } // debuglog("Getting relations for: ", eventId, relationType, eventType); - - - const relationsForEvent = this._relations[eventId] || {}; - const relationsWithRelType = relationsForEvent[relationType] || {}; - return relationsWithRelType[eventType]; -}; -/** - * Set an event as the target event if any Relations exist for it already - * - * @param {MatrixEvent} event - * The event to check as relation target. - */ - - -EventTimelineSet.prototype.setRelationsTarget = function (event) { - if (!this._unstableClientRelationAggregation) { - return; - } - - const relationsForEvent = this._relations[event.getId()]; - - if (!relationsForEvent) { - return; - } // don't need it for non m.replace relations for now - - - const relationsWithRelType = relationsForEvent["m.replace"]; - - if (!relationsWithRelType) { - return; - } // only doing replacements for messages for now (e.g. edits) - - - const relationsWithEventType = relationsWithRelType["m.room.message"]; - - if (relationsWithEventType) { - relationsWithEventType.setTargetEvent(event); - } -}; -/** - * Add relation events to the relevant relation collection. - * - * @param {MatrixEvent} event - * The new relation event to be aggregated. - */ - - -EventTimelineSet.prototype.aggregateRelations = function (event) { - if (!this._unstableClientRelationAggregation) { - return; - } - - if (event.isRedacted() || event.status === _event.EventStatus.CANCELLED) { - return; - } // If the event is currently encrypted, wait until it has been decrypted. - - - if (event.isBeingDecrypted()) { - event.once("Event.decrypted", () => { - this.aggregateRelations(event); - }); - return; - } - - const relation = event.getRelation(); - - if (!relation) { - return; - } - - const relatesToEventId = relation.event_id; - const relationType = relation.rel_type; - const eventType = event.getType(); // debuglog("Aggregating relation: ", event.getId(), eventType, relation); - - let relationsForEvent = this._relations[relatesToEventId]; - - if (!relationsForEvent) { - relationsForEvent = this._relations[relatesToEventId] = {}; - } - - let relationsWithRelType = relationsForEvent[relationType]; - - if (!relationsWithRelType) { - relationsWithRelType = relationsForEvent[relationType] = {}; - } - - let relationsWithEventType = relationsWithRelType[eventType]; - let isNewRelations = false; - let relatesToEvent; - - if (!relationsWithEventType) { - relationsWithEventType = relationsWithRelType[eventType] = new _relations.Relations(relationType, eventType, this.room); - isNewRelations = true; - relatesToEvent = this.findEventById(relatesToEventId); - - if (relatesToEvent) { - relationsWithEventType.setTargetEvent(relatesToEvent); + /** + * Determine whether a given event can sanely be added to this event timeline set, + * for timeline sets relating to a thread, only return true for events in the same + * thread timeline, for timeline sets not relating to a thread only return true + * for events which should be shown in the main room timeline. + * Requires the `room` property to have been set at EventTimelineSet construction time. + * + * @param event - the event to check whether it belongs to this timeline set. + * @throws Error if `room` was not set when constructing this timeline set. + * @returns whether the event belongs to this timeline set. + */ + canContain(event) { + if (!this.room) { + throw new Error("Cannot call `EventTimelineSet::canContain without a `room` set. " + "Set the room when creating the EventTimelineSet to call this method."); } + const { + threadId, + shouldLiveInRoom, + shouldLiveInThread + } = this.room.eventShouldLiveIn(event); + if (this.thread) { + return this.thread.id === threadId; + } + if (!shouldLiveInRoom && !shouldLiveInThread) { + var _this$room2; + _logger.logger.warn(`EventTimelineSet:canContain event encountered which cannot be added to any timeline roomId=${(_this$room2 = this.room) === null || _this$room2 === void 0 ? void 0 : _this$room2.roomId} eventId=${event.getId()} threadId=${event.threadRootId}`); + } + return shouldLiveInRoom; } - - relationsWithEventType.addEvent(event); // only emit once event has been added to relations - - if (isNewRelations && relatesToEvent) { - relatesToEvent.emit("Event.relationsCreated", relationType, eventType); - } -}; -/** - * Fires whenever the timeline in a room is updated. - * @event module:client~MatrixClient#"Room.timeline" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {?Room} room The room, if any, whose timeline was updated. - * @param {boolean} toStartOfTimeline True if this event was added to the start - * @param {boolean} removed True if this event has just been removed from the timeline - * (beginning; oldest) of the timeline e.g. due to pagination. - * - * @param {object} data more data about the event - * - * @param {module:models/event-timeline.EventTimeline} data.timeline the timeline the - * event was added to/removed from - * - * @param {boolean} data.liveEvent true if the event was a real-time event - * added to the end of the live timeline - * - * @example - * matrixClient.on("Room.timeline", - * function(event, room, toStartOfTimeline, removed, data) { - * if (!toStartOfTimeline && data.liveEvent) { - * var messageToAppend = room.timeline.[room.timeline.length - 1]; - * } - * }); - */ - -/** - * Fires whenever the live timeline in a room is reset. - * - * When we get a 'limited' sync (for example, after a network outage), we reset - * the live timeline to be empty before adding the recent events to the new - * timeline. This event is fired after the timeline is reset, and before the - * new events are added. - * - * @event module:client~MatrixClient#"Room.timelineReset" - * @param {Room} room The room whose live timeline was reset, if any - * @param {EventTimelineSet} timelineSet timelineSet room whose live timeline was reset - * @param {boolean} resetAllTimelines True if all timelines were reset. - */ +} +exports.EventTimelineSet = EventTimelineSet; +//# sourceMappingURL=event-timeline-set.js.map /***/ }), /***/ 2763: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.EventTimeline = EventTimeline; - -var _roomState = __webpack_require__(1513); - +exports.EventTimeline = exports.Direction = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _roomState2 = __nccwpck_require__(1513); +var _event = __nccwpck_require__(7487); /* -Copyright 2016, 2017 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -53562,429 +165810,484 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +let Direction = exports.Direction = /*#__PURE__*/function (Direction) { + Direction["Backward"] = "b"; + Direction["Forward"] = "f"; + return Direction; +}({}); +class EventTimeline { + /** + * Static helper method to set sender and target properties + * + * @param event - the event whose metadata is to be set + * @param stateContext - the room state to be queried + * @param toStartOfTimeline - if true the event's forwardLooking flag is set false + */ + static setEventMetadata(event, stateContext, toStartOfTimeline) { + var _event$sender, _event$target; + // When we try to generate a sentinel member before we have that member + // in the members object, we still generate a sentinel but it doesn't + // have a membership event, so test to see if events.member is set. We + // check this to avoid overriding non-sentinel members by sentinel ones + // when adding the event to a filtered timeline + if (!((_event$sender = event.sender) !== null && _event$sender !== void 0 && (_event$sender = _event$sender.events) !== null && _event$sender !== void 0 && _event$sender.member)) { + event.sender = stateContext.getSentinelMember(event.getSender()); + } + if (!((_event$target = event.target) !== null && _event$target !== void 0 && (_event$target = _event$target.events) !== null && _event$target !== void 0 && _event$target.member) && event.getType() === _event.EventType.RoomMember) { + event.target = stateContext.getSentinelMember(event.getStateKey()); + } + if (event.isState()) { + // room state has no concept of 'old' or 'current', but we want the + // room state to regress back to previous values if toStartOfTimeline + // is set, which means inspecting prev_content if it exists. This + // is done by toggling the forwardLooking flag. + if (toStartOfTimeline) { + event.forwardLooking = false; + } + } + } + /** + * Construct a new EventTimeline + * + *

An EventTimeline represents a contiguous sequence of events in a room. + * + *

As well as keeping track of the events themselves, it stores the state of + * the room at the beginning and end of the timeline, and pagination tokens for + * going backwards and forwards in the timeline. + * + *

In order that clients can meaningfully maintain an index into a timeline, + * the EventTimeline object tracks a 'baseIndex'. This starts at zero, but is + * incremented when events are prepended to the timeline. The index of an event + * relative to baseIndex therefore remains constant. + * + *

Once a timeline joins up with its neighbour, they are linked together into a + * doubly-linked list. + * + * @param eventTimelineSet - the set of timelines this is part of + */ + constructor(eventTimelineSet) { + var _eventTimelineSet$roo, _eventTimelineSet$roo2; + (0, _defineProperty2.default)(this, "events", []); + (0, _defineProperty2.default)(this, "baseIndex", 0); + // If we have a roomId then we delegate pagination token storage to the room state objects `startState` and + // `endState`, but for things like the notification timeline which mix multiple rooms we store the tokens ourselves. + (0, _defineProperty2.default)(this, "startToken", null); + (0, _defineProperty2.default)(this, "endToken", null); + (0, _defineProperty2.default)(this, "prevTimeline", null); + (0, _defineProperty2.default)(this, "nextTimeline", null); + (0, _defineProperty2.default)(this, "paginationRequests", { + [Direction.Backward]: null, + [Direction.Forward]: null + }); + this.eventTimelineSet = eventTimelineSet; + this.roomId = (_eventTimelineSet$roo = (_eventTimelineSet$roo2 = eventTimelineSet.room) === null || _eventTimelineSet$roo2 === void 0 ? void 0 : _eventTimelineSet$roo2.roomId) !== null && _eventTimelineSet$roo !== void 0 ? _eventTimelineSet$roo : null; + if (this.roomId) { + this.startState = new _roomState2.RoomState(this.roomId); + this.endState = new _roomState2.RoomState(this.roomId); + } -/** - * @module models/event-timeline - */ + // this is used by client.js + this.paginationRequests = { + b: null, + f: null + }; + this.name = this.roomId + ":" + new Date().toISOString(); + } -/** - * Construct a new EventTimeline - * - *

An EventTimeline represents a contiguous sequence of events in a room. - * - *

As well as keeping track of the events themselves, it stores the state of - * the room at the beginning and end of the timeline, and pagination tokens for - * going backwards and forwards in the timeline. - * - *

In order that clients can meaningfully maintain an index into a timeline, - * the EventTimeline object tracks a 'baseIndex'. This starts at zero, but is - * incremented when events are prepended to the timeline. The index of an event - * relative to baseIndex therefore remains constant. - * - *

Once a timeline joins up with its neighbour, they are linked together into a - * doubly-linked list. - * - * @param {EventTimelineSet} eventTimelineSet the set of timelines this is part of - * @constructor - */ -function EventTimeline(eventTimelineSet) { - this._eventTimelineSet = eventTimelineSet; - this._roomId = eventTimelineSet.room ? eventTimelineSet.room.roomId : null; - this._events = []; - this._baseIndex = 0; - this._startState = new _roomState.RoomState(this._roomId); - this._startState.paginationToken = null; - this._endState = new _roomState.RoomState(this._roomId); - this._endState.paginationToken = null; - this._prevTimeline = null; - this._nextTimeline = null; // this is used by client.js + /** + * Initialise the start and end state with the given events + * + *

This can only be called before any events are added. + * + * @param stateEvents - list of state events to initialise the + * state with. + * @throws Error if an attempt is made to call this after addEvent is called. + */ + initialiseState(stateEvents, { + timelineWasEmpty + } = {}) { + var _this$startState, _this$endState; + if (this.events.length > 0) { + throw new Error("Cannot initialise state after events are added"); + } + (_this$startState = this.startState) === null || _this$startState === void 0 || _this$startState.setStateEvents(stateEvents, { + timelineWasEmpty + }); + (_this$endState = this.endState) === null || _this$endState === void 0 || _this$endState.setStateEvents(stateEvents, { + timelineWasEmpty + }); + } - this._paginationRequests = { - 'b': null, - 'f': null - }; - this._name = this._roomId + ":" + new Date().toISOString(); + /** + * Forks the (live) timeline, taking ownership of the existing directional state of this timeline. + * All attached listeners will keep receiving state updates from the new live timeline state. + * The end state of this timeline gets replaced with an independent copy of the current RoomState, + * and will need a new pagination token if it ever needs to paginate forwards. + * @param direction - EventTimeline.BACKWARDS to get the state at the + * start of the timeline; EventTimeline.FORWARDS to get the state at the end + * of the timeline. + * + * @returns the new timeline + */ + forkLive(direction) { + const forkState = this.getState(direction); + const timeline = new EventTimeline(this.eventTimelineSet); + timeline.startState = forkState === null || forkState === void 0 ? void 0 : forkState.clone(); + // Now clobber the end state of the new live timeline with that from the + // previous live timeline. It will be identical except that we'll keep + // using the same RoomMember objects for the 'live' set of members with any + // listeners still attached + timeline.endState = forkState; + // Firstly, we just stole the current timeline's end state, so it needs a new one. + // Make an immutable copy of the state so back pagination will get the correct sentinels. + this.endState = forkState === null || forkState === void 0 ? void 0 : forkState.clone(); + return timeline; + } + + /** + * Creates an independent timeline, inheriting the directional state from this timeline. + * + * @param direction - EventTimeline.BACKWARDS to get the state at the + * start of the timeline; EventTimeline.FORWARDS to get the state at the end + * of the timeline. + * + * @returns the new timeline + */ + fork(direction) { + const forkState = this.getState(direction); + const timeline = new EventTimeline(this.eventTimelineSet); + timeline.startState = forkState === null || forkState === void 0 ? void 0 : forkState.clone(); + timeline.endState = forkState === null || forkState === void 0 ? void 0 : forkState.clone(); + return timeline; + } + + /** + * Get the ID of the room for this timeline + * @returns room ID + */ + getRoomId() { + return this.roomId; + } + + /** + * Get the filter for this timeline's timelineSet (if any) + * @returns filter + */ + getFilter() { + return this.eventTimelineSet.getFilter(); + } + + /** + * Get the timelineSet for this timeline + * @returns timelineSet + */ + getTimelineSet() { + return this.eventTimelineSet; + } + + /** + * Get the base index. + * + *

This is an index which is incremented when events are prepended to the + * timeline. An individual event therefore stays at the same index in the array + * relative to the base index (although note that a given event's index may + * well be less than the base index, thus giving that event a negative relative + * index). + */ + getBaseIndex() { + return this.baseIndex; + } + + /** + * Get the list of events in this context + * + * @returns An array of MatrixEvents + */ + getEvents() { + return this.events; + } + + /** + * Get the room state at the start/end of the timeline + * + * @param direction - EventTimeline.BACKWARDS to get the state at the + * start of the timeline; EventTimeline.FORWARDS to get the state at the end + * of the timeline. + * + * @returns state at the start/end of the timeline + */ + getState(direction) { + if (direction == EventTimeline.BACKWARDS) { + return this.startState; + } else if (direction == EventTimeline.FORWARDS) { + return this.endState; + } else { + throw new Error("Invalid direction '" + direction + "'"); + } + } + + /** + * Get a pagination token + * + * @param direction - EventTimeline.BACKWARDS to get the pagination + * token for going backwards in time; EventTimeline.FORWARDS to get the + * pagination token for going forwards in time. + * + * @returns pagination token + */ + getPaginationToken(direction) { + if (this.roomId) { + return this.getState(direction).paginationToken; + } else if (direction === Direction.Backward) { + return this.startToken; + } else { + return this.endToken; + } + } + + /** + * Set a pagination token + * + * @param token - pagination token + * + * @param direction - EventTimeline.BACKWARDS to set the pagination + * token for going backwards in time; EventTimeline.FORWARDS to set the + * pagination token for going forwards in time. + */ + setPaginationToken(token, direction) { + if (this.roomId) { + this.getState(direction).paginationToken = token; + } else if (direction === Direction.Backward) { + this.startToken = token; + } else { + this.endToken = token; + } + } + + /** + * Get the next timeline in the series + * + * @param direction - EventTimeline.BACKWARDS to get the previous + * timeline; EventTimeline.FORWARDS to get the next timeline. + * + * @returns previous or following timeline, if they have been + * joined up. + */ + getNeighbouringTimeline(direction) { + if (direction == EventTimeline.BACKWARDS) { + return this.prevTimeline; + } else if (direction == EventTimeline.FORWARDS) { + return this.nextTimeline; + } else { + throw new Error("Invalid direction '" + direction + "'"); + } + } + + /** + * Set the next timeline in the series + * + * @param neighbour - previous/following timeline + * + * @param direction - EventTimeline.BACKWARDS to set the previous + * timeline; EventTimeline.FORWARDS to set the next timeline. + * + * @throws Error if an attempt is made to set the neighbouring timeline when + * it is already set. + */ + setNeighbouringTimeline(neighbour, direction) { + if (this.getNeighbouringTimeline(direction)) { + throw new Error("timeline already has a neighbouring timeline - " + "cannot reset neighbour (direction: " + direction + ")"); + } + if (direction == EventTimeline.BACKWARDS) { + this.prevTimeline = neighbour; + } else if (direction == EventTimeline.FORWARDS) { + this.nextTimeline = neighbour; + } else { + throw new Error("Invalid direction '" + direction + "'"); + } + + // make sure we don't try to paginate this timeline + this.setPaginationToken(null, direction); + } + + /** + * Add a new event to the timeline, and update the state + * + * @param event - new event + * @param options - addEvent options + */ + + /** + * @deprecated In favor of the overload with `IAddEventOptions` + */ + + addEvent(event, toStartOfTimelineOrOpts, roomState) { + let toStartOfTimeline = !!toStartOfTimelineOrOpts; + let timelineWasEmpty; + if (typeof toStartOfTimelineOrOpts === "object") { + ({ + toStartOfTimeline, + roomState, + timelineWasEmpty + } = toStartOfTimelineOrOpts); + } else if (toStartOfTimelineOrOpts !== undefined) { + // Deprecation warning + // FIXME: Remove after 2023-06-01 (technical debt) + _logger.logger.warn("Overload deprecated: " + "`EventTimeline.addEvent(event, toStartOfTimeline, roomState?)` " + "is deprecated in favor of the overload with `EventTimeline.addEvent(event, IAddEventOptions)`"); + } + if (!roomState) { + roomState = toStartOfTimeline ? this.startState : this.endState; + } + const timelineSet = this.getTimelineSet(); + if (timelineSet.room) { + EventTimeline.setEventMetadata(event, roomState, toStartOfTimeline); + + // modify state but only on unfiltered timelineSets + if (event.isState() && timelineSet.room.getUnfilteredTimelineSet() === timelineSet) { + var _roomState; + (_roomState = roomState) === null || _roomState === void 0 || _roomState.setStateEvents([event], { + timelineWasEmpty + }); + // it is possible that the act of setting the state event means we + // can set more metadata (specifically sender/target props), so try + // it again if the prop wasn't previously set. It may also mean that + // the sender/target is updated (if the event set was a room member event) + // so we want to use the *updated* member (new avatar/name) instead. + // + // However, we do NOT want to do this on member events if we're going + // back in time, else we'll set the .sender value for BEFORE the given + // member event, whereas we want to set the .sender value for the ACTUAL + // member event itself. + if (!event.sender || event.getType() === _event.EventType.RoomMember && !toStartOfTimeline) { + EventTimeline.setEventMetadata(event, roomState, toStartOfTimeline); + } + } + } + let insertIndex; + if (toStartOfTimeline) { + insertIndex = 0; + } else { + insertIndex = this.events.length; + } + this.events.splice(insertIndex, 0, event); // insert element + if (toStartOfTimeline) { + this.baseIndex++; + } + } + + /** + * Insert a new event into the timeline, and update the state. + * + * TEMPORARY: until we have recursive relations, we need this function + * to exist to allow us to insert events in timeline order, which is our + * best guess for Sync Order. + * This is a copy of addEvent above, modified to allow inserting an event at + * a specific index. + * + * @internal + */ + insertEvent(event, insertIndex, roomState) { + const timelineSet = this.getTimelineSet(); + if (timelineSet.room) { + EventTimeline.setEventMetadata(event, roomState, false); + + // modify state but only on unfiltered timelineSets + if (event.isState() && timelineSet.room.getUnfilteredTimelineSet() === timelineSet) { + roomState.setStateEvents([event], {}); + // it is possible that the act of setting the state event means we + // can set more metadata (specifically sender/target props), so try + // it again if the prop wasn't previously set. It may also mean that + // the sender/target is updated (if the event set was a room member event) + // so we want to use the *updated* member (new avatar/name) instead. + // + // However, we do NOT want to do this on member events if we're going + // back in time, else we'll set the .sender value for BEFORE the given + // member event, whereas we want to set the .sender value for the ACTUAL + // member event itself. + if (!event.sender || event.getType() === _event.EventType.RoomMember) { + EventTimeline.setEventMetadata(event, roomState, false); + } + } + } + this.events.splice(insertIndex, 0, event); // insert element + } + + /** + * Remove an event from the timeline + * + * @param eventId - ID of event to be removed + * @returns removed event, or null if not found + */ + removeEvent(eventId) { + for (let i = this.events.length - 1; i >= 0; i--) { + const ev = this.events[i]; + if (ev.getId() == eventId) { + this.events.splice(i, 1); + if (i < this.baseIndex) { + this.baseIndex--; + } + return ev; + } + } + return null; + } + + /** + * Return a string to identify this timeline, for debugging + * + * @returns name for this timeline + */ + toString() { + return this.name; + } } +exports.EventTimeline = EventTimeline; /** * Symbolic constant for methods which take a 'direction' argument: * refers to the start of the timeline, or backwards in time. */ - - -EventTimeline.BACKWARDS = "b"; +(0, _defineProperty2.default)(EventTimeline, "BACKWARDS", Direction.Backward); /** * Symbolic constant for methods which take a 'direction' argument: * refers to the end of the timeline, or forwards in time. */ - -EventTimeline.FORWARDS = "f"; -/** - * Initialise the start and end state with the given events - * - *

This can only be called before any events are added. - * - * @param {MatrixEvent[]} stateEvents list of state events to initialise the - * state with. - * @throws {Error} if an attempt is made to call this after addEvent is called. - */ - -EventTimeline.prototype.initialiseState = function (stateEvents) { - if (this._events.length > 0) { - throw new Error("Cannot initialise state after events are added"); - } // We previously deep copied events here and used different copies in - // the oldState and state events: this decision seems to date back - // quite a way and was apparently made to fix a bug where modifications - // made to the start state leaked through to the end state. - // This really shouldn't be possible though: the events themselves should - // not change. Duplicating the events uses a lot of extra memory, - // so we now no longer do it. To assert that they really do never change, - // freeze them! Note that we can't do this for events in general: - // although it looks like the only things preventing us are the - // 'status' flag, forwardLooking (which is only set once when adding to the - // timeline) and possibly the sender (which seems like it should never be - // reset but in practice causes a lot of the tests to break). - - - for (const e of stateEvents) { - Object.freeze(e); - } - - this._startState.setStateEvents(stateEvents); - - this._endState.setStateEvents(stateEvents); -}; -/** - * Forks the (live) timeline, taking ownership of the existing directional state of this timeline. - * All attached listeners will keep receiving state updates from the new live timeline state. - * The end state of this timeline gets replaced with an independent copy of the current RoomState, - * and will need a new pagination token if it ever needs to paginate forwards. - - * @param {string} direction EventTimeline.BACKWARDS to get the state at the - * start of the timeline; EventTimeline.FORWARDS to get the state at the end - * of the timeline. - * - * @return {EventTimeline} the new timeline - */ - - -EventTimeline.prototype.forkLive = function (direction) { - const forkState = this.getState(direction); - const timeline = new EventTimeline(this._eventTimelineSet); - timeline._startState = forkState.clone(); // Now clobber the end state of the new live timeline with that from the - // previous live timeline. It will be identical except that we'll keep - // using the same RoomMember objects for the 'live' set of members with any - // listeners still attached - - timeline._endState = forkState; // Firstly, we just stole the current timeline's end state, so it needs a new one. - // Make an immutable copy of the state so back pagination will get the correct sentinels. - - this._endState = forkState.clone(); - return timeline; -}; -/** - * Creates an independent timeline, inheriting the directional state from this timeline. - * - * @param {string} direction EventTimeline.BACKWARDS to get the state at the - * start of the timeline; EventTimeline.FORWARDS to get the state at the end - * of the timeline. - * - * @return {EventTimeline} the new timeline - */ - - -EventTimeline.prototype.fork = function (direction) { - const forkState = this.getState(direction); - const timeline = new EventTimeline(this._eventTimelineSet); - timeline._startState = forkState.clone(); - timeline._endState = forkState.clone(); - return timeline; -}; -/** - * Get the ID of the room for this timeline - * @return {string} room ID - */ - - -EventTimeline.prototype.getRoomId = function () { - return this._roomId; -}; -/** - * Get the filter for this timeline's timelineSet (if any) - * @return {Filter} filter - */ - - -EventTimeline.prototype.getFilter = function () { - return this._eventTimelineSet.getFilter(); -}; -/** - * Get the timelineSet for this timeline - * @return {EventTimelineSet} timelineSet - */ - - -EventTimeline.prototype.getTimelineSet = function () { - return this._eventTimelineSet; -}; -/** - * Get the base index. - * - *

This is an index which is incremented when events are prepended to the - * timeline. An individual event therefore stays at the same index in the array - * relative to the base index (although note that a given event's index may - * well be less than the base index, thus giving that event a negative relative - * index). - * - * @return {number} - */ - - -EventTimeline.prototype.getBaseIndex = function () { - return this._baseIndex; -}; -/** - * Get the list of events in this context - * - * @return {MatrixEvent[]} An array of MatrixEvents - */ - - -EventTimeline.prototype.getEvents = function () { - return this._events; -}; -/** - * Get the room state at the start/end of the timeline - * - * @param {string} direction EventTimeline.BACKWARDS to get the state at the - * start of the timeline; EventTimeline.FORWARDS to get the state at the end - * of the timeline. - * - * @return {RoomState} state at the start/end of the timeline - */ - - -EventTimeline.prototype.getState = function (direction) { - if (direction == EventTimeline.BACKWARDS) { - return this._startState; - } else if (direction == EventTimeline.FORWARDS) { - return this._endState; - } else { - throw new Error("Invalid direction '" + direction + "'"); - } -}; -/** - * Get a pagination token - * - * @param {string} direction EventTimeline.BACKWARDS to get the pagination - * token for going backwards in time; EventTimeline.FORWARDS to get the - * pagination token for going forwards in time. - * - * @return {?string} pagination token - */ - - -EventTimeline.prototype.getPaginationToken = function (direction) { - return this.getState(direction).paginationToken; -}; -/** - * Set a pagination token - * - * @param {?string} token pagination token - * - * @param {string} direction EventTimeline.BACKWARDS to set the pagination - * token for going backwards in time; EventTimeline.FORWARDS to set the - * pagination token for going forwards in time. - */ - - -EventTimeline.prototype.setPaginationToken = function (token, direction) { - this.getState(direction).paginationToken = token; -}; -/** - * Get the next timeline in the series - * - * @param {string} direction EventTimeline.BACKWARDS to get the previous - * timeline; EventTimeline.FORWARDS to get the next timeline. - * - * @return {?EventTimeline} previous or following timeline, if they have been - * joined up. - */ - - -EventTimeline.prototype.getNeighbouringTimeline = function (direction) { - if (direction == EventTimeline.BACKWARDS) { - return this._prevTimeline; - } else if (direction == EventTimeline.FORWARDS) { - return this._nextTimeline; - } else { - throw new Error("Invalid direction '" + direction + "'"); - } -}; -/** - * Set the next timeline in the series - * - * @param {EventTimeline} neighbour previous/following timeline - * - * @param {string} direction EventTimeline.BACKWARDS to set the previous - * timeline; EventTimeline.FORWARDS to set the next timeline. - * - * @throws {Error} if an attempt is made to set the neighbouring timeline when - * it is already set. - */ - - -EventTimeline.prototype.setNeighbouringTimeline = function (neighbour, direction) { - if (this.getNeighbouringTimeline(direction)) { - throw new Error("timeline already has a neighbouring timeline - " + "cannot reset neighbour (direction: " + direction + ")"); - } - - if (direction == EventTimeline.BACKWARDS) { - this._prevTimeline = neighbour; - } else if (direction == EventTimeline.FORWARDS) { - this._nextTimeline = neighbour; - } else { - throw new Error("Invalid direction '" + direction + "'"); - } // make sure we don't try to paginate this timeline - - - this.setPaginationToken(null, direction); -}; -/** - * Add a new event to the timeline, and update the state - * - * @param {MatrixEvent} event new event - * @param {boolean} atStart true to insert new event at the start - */ - - -EventTimeline.prototype.addEvent = function (event, atStart) { - const stateContext = atStart ? this._startState : this._endState; // only call setEventMetadata on the unfiltered timelineSets - - const timelineSet = this.getTimelineSet(); - - if (timelineSet.room && timelineSet.room.getUnfilteredTimelineSet() === timelineSet) { - EventTimeline.setEventMetadata(event, stateContext, atStart); // modify state - - if (event.isState()) { - stateContext.setStateEvents([event]); // it is possible that the act of setting the state event means we - // can set more metadata (specifically sender/target props), so try - // it again if the prop wasn't previously set. It may also mean that - // the sender/target is updated (if the event set was a room member event) - // so we want to use the *updated* member (new avatar/name) instead. - // - // However, we do NOT want to do this on member events if we're going - // back in time, else we'll set the .sender value for BEFORE the given - // member event, whereas we want to set the .sender value for the ACTUAL - // member event itself. - - if (!event.sender || event.getType() === "m.room.member" && !atStart) { - EventTimeline.setEventMetadata(event, stateContext, atStart); - } - } - } - - let insertIndex; - - if (atStart) { - insertIndex = 0; - } else { - insertIndex = this._events.length; - } - - this._events.splice(insertIndex, 0, event); // insert element - - - if (atStart) { - this._baseIndex++; - } -}; -/** - * Static helper method to set sender and target properties - * - * @param {MatrixEvent} event the event whose metadata is to be set - * @param {RoomState} stateContext the room state to be queried - * @param {bool} toStartOfTimeline if true the event's forwardLooking flag is set false - */ - - -EventTimeline.setEventMetadata = function (event, stateContext, toStartOfTimeline) { - // set sender and target properties - event.sender = stateContext.getSentinelMember(event.getSender()); - - if (event.getType() === "m.room.member") { - event.target = stateContext.getSentinelMember(event.getStateKey()); - } - - if (event.isState()) { - // room state has no concept of 'old' or 'current', but we want the - // room state to regress back to previous values if toStartOfTimeline - // is set, which means inspecting prev_content if it exists. This - // is done by toggling the forwardLooking flag. - if (toStartOfTimeline) { - event.forwardLooking = false; - } - } -}; -/** - * Remove an event from the timeline - * - * @param {string} eventId ID of event to be removed - * @return {?MatrixEvent} removed event, or null if not found - */ - - -EventTimeline.prototype.removeEvent = function (eventId) { - for (let i = this._events.length - 1; i >= 0; i--) { - const ev = this._events[i]; - - if (ev.getId() == eventId) { - this._events.splice(i, 1); - - if (i < this._baseIndex) { - this._baseIndex--; - } - - return ev; - } - } - - return null; -}; -/** - * Return a string to identify this timeline, for debugging - * - * @return {string} name for this timeline - */ - - -EventTimeline.prototype.toString = function () { - return this._name; -}; +(0, _defineProperty2.default)(EventTimeline, "FORWARDS", Direction.Forward); +//# sourceMappingURL=event-timeline.js.map /***/ }), /***/ 9564: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.MatrixEvent = exports.EventStatus = void 0; - -var _events = __webpack_require__(8614); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _logger = __webpack_require__(3854); - +Object.defineProperty(exports, "EventStatus", ({ + enumerable: true, + get: function () { + return _eventStatus.EventStatus; + } +})); +exports.MatrixEventEvent = exports.MatrixEvent = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _matrixEventsSdk = __nccwpck_require__(9446); +var _logger = __nccwpck_require__(3854); +var _event = __nccwpck_require__(7487); +var _utils = __nccwpck_require__(2557); +var _thread = __nccwpck_require__(3379); +var _ReEmitter = __nccwpck_require__(9554); +var _typedEventEmitter = __nccwpck_require__(7150); +var _CryptoBackend = __nccwpck_require__(3959); +var _OlmDevice = __nccwpck_require__(3033); +var _eventTimeline = __nccwpck_require__(2763); +var _cryptoApi = __nccwpck_require__(3819); +var _eventStatus = __nccwpck_require__(8615); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -54002,239 +166305,341 @@ limitations under the License. /** * This is an internal module. See {@link MatrixEvent} and {@link RoomEvent} for * the public classes. - * @module models/event + */ + +/* eslint-disable camelcase */ + +/** + * When an event is a visibility change event, as per MSC3531, + * the visibility change implied by the event. + */ + +/* eslint-enable camelcase */ + +/** + * Message hiding, as specified by https://github.com/matrix-org/matrix-doc/pull/3531. */ /** - * Enum for event statuses. - * @readonly - * @enum {string} + * Variant of `MessageVisibility` for the case in which the message should be displayed. */ -const EventStatus = { - /** The event was not sent and will no longer be retried. */ - NOT_SENT: "not_sent", - /** The message is being encrypted */ - ENCRYPTING: "encrypting", - - /** The event is in the process of being sent. */ - SENDING: "sending", - - /** The event is in a queue waiting to be sent. */ - QUEUED: "queued", - - /** The event has been sent to the server, but we have not yet received the - * echo. */ - SENT: "sent", - - /** The event was cancelled before it was successfully sent. */ - CANCELLED: "cancelled" -}; -exports.EventStatus = EventStatus; -const interns = {}; - -function intern(str) { - if (!interns[str]) { - interns[str] = str; - } - - return interns[str]; -} /** - * Construct a Matrix Event object - * @constructor - * - * @param {Object} event The raw event to be wrapped in this DAO - * - * @prop {Object} event The raw (possibly encrypted) event. Do not access - * this property directly unless you absolutely have to. Prefer the getter - * methods defined on this class. Using the getter methods shields your app - * from changes to event JSON between Matrix versions. - * - * @prop {RoomMember} sender The room member who sent this event, or null e.g. - * this is a presence event. This is only guaranteed to be set for events that - * appear in a timeline, ie. do not guarantee that it will be set on state - * events. - * @prop {RoomMember} target The room member who is the target of this event, e.g. - * the invitee, the person being banned, etc. - * @prop {EventStatus} status The sending status of the event. - * @prop {Error} error most recent error associated with sending the event, if any - * @prop {boolean} forwardLooking True if this event is 'forward looking', meaning - * that getDirectionalContent() will return event.content and not event.prev_content. - * Default: true. This property is experimental and may change. + * Variant of `MessageVisibility` for the case in which the message should be hidden. */ - -const MatrixEvent = function (event) { - // intern the values of matrix events to force share strings and reduce the - // amount of needless string duplication. This can save moderate amounts of - // memory (~10% on a 350MB heap). - // 'membership' at the event level (rather than the content level) is a legacy - // field that Element never otherwise looks at, but it will still take up a lot - // of space if we don't intern it. - ["state_key", "type", "sender", "room_id", "membership"].forEach(prop => { - if (!event[prop]) { - return; - } - - event[prop] = intern(event[prop]); - }); - ["membership", "avatar_url", "displayname"].forEach(prop => { - if (!event.content || !event.content[prop]) { - return; - } - - event.content[prop] = intern(event.content[prop]); - }); - ["rel_type"].forEach(prop => { - if (!event.content || !event.content["m.relates_to"] || !event.content["m.relates_to"][prop]) { - return; - } - - event.content["m.relates_to"][prop] = intern(event.content["m.relates_to"][prop]); - }); - this.event = event || {}; - this.sender = null; - this.target = null; - this.status = null; - this.error = null; - this.forwardLooking = true; - this._pushActions = null; - this._replacingEvent = null; - this._localRedactionEvent = null; - this._isCancelled = false; - this._clearEvent = {}; - /* curve25519 key which we believe belongs to the sender of the event. See - * getSenderKey() - */ - - this._senderCurve25519Key = null; - /* ed25519 key which the sender of this event (for olm) or the creator of - * the megolm session (for megolm) claims to own. See getClaimedEd25519Key() - */ - - this._claimedEd25519Key = null; - /* curve25519 keys of devices involved in telling us about the - * _senderCurve25519Key and _claimedEd25519Key. - * See getForwardingCurve25519KeyChain(). - */ - - this._forwardingCurve25519KeyChain = []; - /* where the decryption key is untrusted - */ - - this._untrusted = null; - /* if we have a process decrypting this event, a Promise which resolves - * when it is finished. Normally null. - */ - - this._decryptionPromise = null; - /* flag to indicate if we should retry decrypting this event after the - * first attempt (eg, we have received new data which means that a second - * attempt may succeed) - */ - - this._retryDecryption = false; +// A singleton implementing `IMessageVisibilityVisible`. +const MESSAGE_VISIBLE = Object.freeze({ + visible: true +}); +let MatrixEventEvent = exports.MatrixEventEvent = /*#__PURE__*/function (MatrixEventEvent) { + MatrixEventEvent["Decrypted"] = "Event.decrypted"; + MatrixEventEvent["BeforeRedaction"] = "Event.beforeRedaction"; + MatrixEventEvent["VisibilityChange"] = "Event.visibilityChange"; + MatrixEventEvent["LocalEventIdReplaced"] = "Event.localEventIdReplaced"; + MatrixEventEvent["Status"] = "Event.status"; + MatrixEventEvent["Replaced"] = "Event.replaced"; + MatrixEventEvent["RelationsCreated"] = "Event.relationsCreated"; + return MatrixEventEvent; +}({}); +class MatrixEvent extends _typedEventEmitter.TypedEventEmitter { /* If the event is a `m.key.verification.request` (or to_device `m.key.verification.start`) event, * `Crypto` will set this the `VerificationRequest` for the event * so it can be easily accessed from the timeline. */ - this.verificationRequest = null; - /* The txnId with which this event was sent if it was during this session, - allows for a unique ID which does not change when the event comes back down sync. + /** + * Construct a Matrix Event object + * + * @param event - The raw (possibly encrypted) event. Do not access + * this property directly unless you absolutely have to. Prefer the getter + * methods defined on this class. Using the getter methods shields your app + * from changes to event JSON between Matrix versions. */ + constructor(event = {}) { + var _this$getTs; + super(); - this._txnId = null; -}; + // intern the values of matrix events to force share strings and reduce the + // amount of needless string duplication. This can save moderate amounts of + // memory (~10% on a 350MB heap). + // 'membership' at the event level (rather than the content level) is a legacy + // field that Element never otherwise looks at, but it will still take up a lot + // of space if we don't intern it. + // applied push rule and action for this event + (0, _defineProperty2.default)(this, "pushDetails", {}); + (0, _defineProperty2.default)(this, "_replacingEvent", null); + (0, _defineProperty2.default)(this, "_localRedactionEvent", null); + (0, _defineProperty2.default)(this, "_isCancelled", false); + /* Message hiding, as specified by https://github.com/matrix-org/matrix-doc/pull/3531. + Note: We're returning this object, so any value stored here MUST be frozen. + */ + (0, _defineProperty2.default)(this, "visibility", MESSAGE_VISIBLE); + // Not all events will be extensible-event compatible, so cache a flag in + // addition to a falsy cached event value. We check the flag later on in + // a public getter to decide if the cache is valid. + (0, _defineProperty2.default)(this, "_hasCachedExtEv", false); + (0, _defineProperty2.default)(this, "_cachedExtEv", undefined); + /** If we failed to decrypt this event, the reason for the failure. Otherwise, `null`. */ + (0, _defineProperty2.default)(this, "_decryptionFailureReason", null); + /* curve25519 key which we believe belongs to the sender of the event. See + * getSenderKey() + */ + (0, _defineProperty2.default)(this, "senderCurve25519Key", null); + /* ed25519 key which the sender of this event (for olm) or the creator of + * the megolm session (for megolm) claims to own. See getClaimedEd25519Key() + */ + (0, _defineProperty2.default)(this, "claimedEd25519Key", null); + /* curve25519 keys of devices involved in telling us about the + * senderCurve25519Key and claimedEd25519Key. + * See getForwardingCurve25519KeyChain(). + */ + (0, _defineProperty2.default)(this, "forwardingCurve25519KeyChain", []); + /* where the decryption key is untrusted + */ + (0, _defineProperty2.default)(this, "untrusted", null); + /* if we have a process decrypting this event, a Promise which resolves + * when it is finished. Normally null. + */ + (0, _defineProperty2.default)(this, "decryptionPromise", null); + /* flag to indicate if we should retry decrypting this event after the + * first attempt (eg, we have received new data which means that a second + * attempt may succeed) + */ + (0, _defineProperty2.default)(this, "retryDecryption", false); + /* + * True if this event is an encrypted event which we failed to decrypt, the receiver's device is unverified and + * the sender has disabled encrypting to unverified devices. + */ + (0, _defineProperty2.default)(this, "encryptedDisabledForUnverifiedDevices", false); + /** + * The room member who sent this event, or null e.g. + * this is a presence event. This is only guaranteed to be set for events that + * appear in a timeline, ie. do not guarantee that it will be set on state + * events. + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "sender", null); + /** + * The room member who is the target of this event, e.g. + * the invitee, the person being banned, etc. + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "target", null); + /** + * The sending status of the event. + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "status", null); + /** + * most recent error associated with sending the event, if any + * @privateRemarks + * Should be read-only. May not be a MatrixError. + */ + (0, _defineProperty2.default)(this, "error", null); + /** + * True if this event is 'forward looking', meaning + * that getDirectionalContent() will return event.content and not event.prev_content. + * Only state events may be backwards looking + * Default: true. This property is experimental and may change. + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "forwardLooking", true); + this.event = event; + ["state_key", "type", "sender", "room_id", "membership"].forEach(prop => { + if (typeof event[prop] !== "string") return; + event[prop] = (0, _utils.internaliseString)(event[prop]); + }); + ["membership", "avatar_url", "displayname"].forEach(prop => { + var _event$content; + if (typeof ((_event$content = event.content) === null || _event$content === void 0 ? void 0 : _event$content[prop]) !== "string") return; + event.content[prop] = (0, _utils.internaliseString)(event.content[prop]); + }); + ["rel_type"].forEach(prop => { + var _event$content2; + if (typeof ((_event$content2 = event.content) === null || _event$content2 === void 0 || (_event$content2 = _event$content2["m.relates_to"]) === null || _event$content2 === void 0 ? void 0 : _event$content2[prop]) !== "string") return; + event.content["m.relates_to"][prop] = (0, _utils.internaliseString)(event.content["m.relates_to"][prop]); + }); + this.txnId = event.txn_id; + // The localTimestamp is calculated using the age. + // Some events lack an `age` property, either because they are EDUs such as typing events, + // or due to server-side bugs such as https://github.com/matrix-org/synapse/issues/8429. + // The fallback in these cases will be to use the origin_server_ts. + // For EDUs, the origin_server_ts also is not defined so we use Date.now(). + const age = this.getAge(); + this.localTimestamp = age !== undefined ? Date.now() - age : (_this$getTs = this.getTs()) !== null && _this$getTs !== void 0 ? _this$getTs : Date.now(); + this.reEmitter = new _ReEmitter.TypedReEmitter(this); + } + + /** + * Unstable getter to try and get an extensible event. Note that this might + * return a falsy value if the event could not be parsed as an extensible + * event. + * + * @deprecated Use stable functions where possible. + */ + get unstableExtensibleEvent() { + if (!this._hasCachedExtEv) { + this._cachedExtEv = _matrixEventsSdk.ExtensibleEvents.parse(this.getEffectiveEvent()); + } + return this._cachedExtEv; + } + invalidateExtensibleEvent() { + // just reset the flag - that'll trick the getter into parsing a new event + this._hasCachedExtEv = false; + } + + /** + * Gets the event as it would appear if it had been sent unencrypted. + * + * If the event is encrypted, we attempt to mock up an event as it would have looked had the sender not encrypted it. + * If the event is not encrypted, a copy of it is simply returned as-is. + * + * @returns A shallow copy of the event, in wire format, as it would have been had it not been encrypted. + */ + getEffectiveEvent() { + const content = Object.assign({}, this.getContent()); // clone for mutation + + if (this.getWireType() === _event.EventType.RoomMessageEncrypted) { + // Encrypted events sometimes aren't symmetrical on the `content` so we'll copy + // that over too, but only for missing properties. We don't copy over mismatches + // between the plain and decrypted copies of `content` because we assume that the + // app is relying on the decrypted version, so we want to expose that as a source + // of truth here too. + for (const [key, value] of Object.entries(this.getWireContent())) { + // Skip fields from the encrypted event schema though - we don't want to leak + // these. + if (["algorithm", "ciphertext", "device_id", "sender_key", "session_id"].includes(key)) { + continue; + } + if (content[key] === undefined) content[key] = value; + } + } + + // clearEvent doesn't have all the fields, so we'll copy what we can from this.event. + // We also copy over our "fixed" content key. + return Object.assign({}, this.event, this.clearEvent, { + content + }); + } -exports.MatrixEvent = MatrixEvent; -utils.inherits(MatrixEvent, _events.EventEmitter); -utils.extend(MatrixEvent.prototype, { /** * Get the event_id for this event. - * @return {string} The event ID, e.g. $143350589368169JsLZx:localhost + * @returns The event ID, e.g. $143350589368169JsLZx:localhost * */ - getId: function () { + getId() { return this.event.event_id; - }, + } /** * Get the user_id for this event. - * @return {string} The user ID, e.g. @alice:matrix.org + * @returns The user ID, e.g. `@alice:matrix.org` */ - getSender: function () { + getSender() { return this.event.sender || this.event.user_id; // v2 / v1 - }, + } /** * Get the (decrypted, if necessary) type of event. * - * @return {string} The event type, e.g. m.room.message + * @returns The event type, e.g. `m.room.message` */ - getType: function () { - return this._clearEvent.type || this.event.type; - }, + getType() { + if (this.clearEvent) { + return this.clearEvent.type; + } + return this.event.type; + } /** * Get the (possibly encrypted) type of the event that will be sent to the * homeserver. * - * @return {string} The event type. + * @returns The event type. */ - getWireType: function () { + getWireType() { return this.event.type; - }, + } /** - * Get the room_id for this event. This will return undefined - * for m.presence events. - * @return {string} The room ID, e.g. !cURbafjkfsMDVwdRDQ:matrix.org + * Get the room_id for this event. This will return `undefined` + * for `m.presence` events. + * @returns The room ID, e.g. !cURbafjkfsMDVwdRDQ:matrix.org * */ - getRoomId: function () { + getRoomId() { return this.event.room_id; - }, + } /** * Get the timestamp of this event. - * @return {Number} The event timestamp, e.g. 1433502692297 + * @returns The event timestamp, e.g. `1433502692297` */ - getTs: function () { + getTs() { return this.event.origin_server_ts; - }, + } /** * Get the timestamp of this event, as a Date object. - * @return {Date} The event date, e.g. new Date(1433502692297) + * @returns The event date, e.g. `new Date(1433502692297)` */ - getDate: function () { + getDate() { return this.event.origin_server_ts ? new Date(this.event.origin_server_ts) : null; - }, + } + + /** + * Get a string containing details of this event + * + * This is intended for logging, to help trace errors. Example output: + * + * @example + * ``` + * id=$HjnOHV646n0SjLDAqFrgIjim7RCpB7cdMXFrekWYAn type=m.room.encrypted + * sender=@user:example.com room=!room:example.com ts=2022-10-25T17:30:28.404Z + * ``` + */ + getDetails() { + const room = this.getRoomId(); + if (room) { + var _this$getDate; + // in-room event + return `id=${this.getId()} type=${this.getWireType()} sender=${this.getSender()} room=${room} ts=${(_this$getDate = this.getDate()) === null || _this$getDate === void 0 ? void 0 : _this$getDate.toISOString()}`; + } else { + // to-device event + const msgid = this.getContent()[_event.ToDeviceMessageId]; + return `msgid=${msgid} type=${this.getWireType()} sender=${this.getSender()}`; + } + } /** * Get the (decrypted, if necessary) event content JSON, even if the event * was replaced by another event. * - * @return {Object} The event content JSON, or an empty object. + * @returns The event content JSON, or an empty object. */ - getOriginalContent: function () { + getOriginalContent() { if (this._localRedactionEvent) { return {}; } - - return this._clearEvent.content || this.event.content || {}; - }, + if (this.clearEvent) { + return this.clearEvent.content || {}; + } + return this.event.content || {}; + } /** * Get the (decrypted, if necessary) event content JSON, * or the content from the replacing event, if any. * See `makeReplaced`. * - * @return {Object} The event content JSON, or an empty object. + * @returns The event content JSON, or an empty object. */ - getContent: function () { + getContent() { if (this._localRedactionEvent) { return {}; } else if (this._replacingEvent) { @@ -54242,27 +166647,77 @@ utils.extend(MatrixEvent.prototype, { } else { return this.getOriginalContent(); } - }, + } /** * Get the (possibly encrypted) event content JSON that will be sent to the * homeserver. * - * @return {Object} The event content JSON, or an empty object. + * @returns The event content JSON, or an empty object. */ - getWireContent: function () { + getWireContent() { return this.event.content || {}; - }, + } + + /** + * Get the event ID of the thread head + */ + get threadRootId() { + var _this$getWireContent; + // don't allow state events to be threaded as per the spec + if (this.isState()) { + return undefined; + } + const relatesTo = (_this$getWireContent = this.getWireContent()) === null || _this$getWireContent === void 0 ? void 0 : _this$getWireContent["m.relates_to"]; + if ((relatesTo === null || relatesTo === void 0 ? void 0 : relatesTo.rel_type) === _thread.THREAD_RELATION_TYPE.name) { + return relatesTo.event_id; + } + if (this.thread) { + return this.thread.id; + } + if (this.threadId !== undefined) { + return this.threadId; + } + const unsigned = this.getUnsigned(); + if (typeof unsigned[_event.UNSIGNED_THREAD_ID_FIELD.name] === "string") { + return unsigned[_event.UNSIGNED_THREAD_ID_FIELD.name]; + } + return undefined; + } + + /** + * A helper to check if an event is a thread's head or not + */ + get isThreadRoot() { + // don't allow state events to be threaded as per the spec + if (this.isState()) { + return false; + } + const threadDetails = this.getServerAggregatedRelation(_thread.THREAD_RELATION_TYPE.name); + + // Bundled relationships only returned when the sync response is limited + // hence us having to check both bundled relation and inspect the thread + // model + return !!threadDetails || this.threadRootId === this.getId(); + } + get replyEventId() { + var _this$getWireContent$; + return (_this$getWireContent$ = this.getWireContent()["m.relates_to"]) === null || _this$getWireContent$ === void 0 || (_this$getWireContent$ = _this$getWireContent$["m.in_reply_to"]) === null || _this$getWireContent$ === void 0 ? void 0 : _this$getWireContent$.event_id; + } + get relationEventId() { + var _this$getWireContent2; + return (_this$getWireContent2 = this.getWireContent()) === null || _this$getWireContent2 === void 0 || (_this$getWireContent2 = _this$getWireContent2["m.relates_to"]) === null || _this$getWireContent2 === void 0 ? void 0 : _this$getWireContent2.event_id; + } /** * Get the previous event content JSON. This will only return something for * state events which exist in the timeline. - * @return {Object} The previous event content JSON, or an empty object. + * @returns The previous event content JSON, or an empty object. */ - getPrevContent: function () { + getPrevContent() { // v2 then v1 then default return this.getUnsigned().prev_content || this.event.prev_content || {}; - }, + } /** * Get either 'content' or 'prev_content' depending on if this event is @@ -54270,48 +166725,66 @@ utils.extend(MatrixEvent.prototype, { * In practice, this means we get the chronologically earlier content value * for this event (this method should surely be called getEarlierContent) * This method is experimental and may change. - * @return {Object} event.content if this event is forward-looking, else + * @returns event.content if this event is forward-looking, else * event.prev_content. */ - getDirectionalContent: function () { + getDirectionalContent() { return this.forwardLooking ? this.getContent() : this.getPrevContent(); - }, + } /** * Get the age of this event. This represents the age of the event when the * event arrived at the device, and not the age of the event when this * function was called. - * @return {Number} The age of this event in milliseconds. + * Can only be returned once the server has echo'ed back + * @returns The age of this event in milliseconds. */ - getAge: function () { + getAge() { return this.getUnsigned().age || this.event.age; // v2 / v1 - }, + } /** * Get the age of the event when this function was called. - * Relies on the local clock being in sync with the clock of the original homeserver. - * @return {Number} The age of this event in milliseconds. + * This is the 'age' field adjusted according to how long this client has + * had the event. + * @returns The age of this event in milliseconds. */ - getLocalAge: function () { - return Date.now() - this.getTs(); - }, + getLocalAge() { + return Date.now() - this.localTimestamp; + } /** * Get the event state_key if it has one. This will return undefined * for message events. - * @return {string} The event's state_key. + * @returns The event's `state_key`. */ - getStateKey: function () { + getStateKey() { return this.event.state_key; - }, + } /** * Check if this event is a state event. - * @return {boolean} True if this is a state event. + * @returns True if this is a state event. */ - isState: function () { + isState() { return this.event.state_key !== undefined; - }, + } + + /** + * Get the user's room membership at the time the event was sent, as reported + * by the server. This uses MSC4115. + * + * @returns The user's room membership, or `undefined` if the server does + * not report it. + */ + getMembershipAtEvent() { + const unsigned = this.getUnsigned(); + if (typeof unsigned[_event.UNSIGNED_MEMBERSHIP_FIELD.name] === "string") { + return unsigned[_event.UNSIGNED_MEMBERSHIP_FIELD.name]; + } else { + return undefined; + } + } /** * Replace the content of this event with encrypted versions. @@ -54319,51 +166792,74 @@ utils.extend(MatrixEvent.prototype, { * * @internal * - * @param {string} crypto_type type of the encrypted event - typically + * @param cryptoType - type of the encrypted event - typically * "m.room.encrypted" * - * @param {object} crypto_content raw 'content' for the encrypted event. + * @param cryptoContent - raw 'content' for the encrypted event. * - * @param {string} senderCurve25519Key curve25519 key to record for the + * @param senderCurve25519Key - curve25519 key to record for the * sender of this event. - * See {@link module:models/event.MatrixEvent#getSenderKey}. + * See {@link MatrixEvent#getSenderKey}. * - * @param {string} claimedEd25519Key claimed ed25519 key to record for the + * @param claimedEd25519Key - claimed ed25519 key to record for the * sender if this event. - * See {@link module:models/event.MatrixEvent#getClaimedEd25519Key} + * See {@link MatrixEvent#getClaimedEd25519Key} */ - makeEncrypted: function (crypto_type, crypto_content, senderCurve25519Key, claimedEd25519Key) { + makeEncrypted(cryptoType, cryptoContent, senderCurve25519Key, claimedEd25519Key) { // keep the plain-text data for 'view source' - this._clearEvent = { + this.clearEvent = { type: this.event.type, content: this.event.content }; - this.event.type = crypto_type; - this.event.content = crypto_content; - this._senderCurve25519Key = senderCurve25519Key; - this._claimedEd25519Key = claimedEd25519Key; - }, + this.event.type = cryptoType; + this.event.content = cryptoContent; + this.senderCurve25519Key = senderCurve25519Key; + this.claimedEd25519Key = claimedEd25519Key; + } /** * Check if this event is currently being decrypted. * - * @return {boolean} True if this event is currently being decrypted, else false. + * @returns True if this event is currently being decrypted, else false. */ - isBeingDecrypted: function () { - return this._decryptionPromise != null; - }, + isBeingDecrypted() { + return this.decryptionPromise != null; + } + getDecryptionPromise() { + return this.decryptionPromise; + } /** * Check if this event is an encrypted event which we failed to decrypt * * (This implies that we might retry decryption at some point in the future) * - * @return {boolean} True if this event is an encrypted event which we + * @returns True if this event is an encrypted event which we * couldn't decrypt. */ - isDecryptionFailure: function () { - return this._clearEvent && this._clearEvent.content && this._clearEvent.content.msgtype === "m.bad.encrypted"; - }, + isDecryptionFailure() { + return this._decryptionFailureReason !== null; + } + + /** If we failed to decrypt this event, the reason for the failure. Otherwise, `null`. */ + get decryptionFailureReason() { + return this._decryptionFailureReason; + } + + /* + * True if this event is an encrypted event which we failed to decrypt, the receiver's device is unverified and + * the sender has disabled encrypting to unverified devices. + */ + get isEncryptedDisabledForUnverifiedDevices() { + return this.isDecryptionFailure() && this.encryptedDisabledForUnverifiedDevices; + } + shouldAttemptDecryption() { + if (this.isRedacted()) return false; + if (this.isBeingDecrypted()) return false; + if (this.clearEvent) return false; + if (!this.isEncrypted()) return false; + return true; + } /** * Start the process of trying to decrypt this event. @@ -54372,49 +166868,47 @@ utils.extend(MatrixEvent.prototype, { * * @internal * - * @param {module:crypto} crypto crypto module - * @param {bool} isRetry True if this is a retry (enables more logging) + * @param crypto - crypto module * - * @returns {Promise} promise which resolves (to undefined) when the decryption + * @returns promise which resolves (to undefined) when the decryption * attempt is completed. */ - attemptDecryption: async function (crypto, isRetry) { + async attemptDecryption(crypto, options = {}) { // start with a couple of sanity checks. if (!this.isEncrypted()) { throw new Error("Attempt to decrypt event which isn't encrypted"); } - - if (this._clearEvent && this._clearEvent.content && this._clearEvent.content.msgtype !== "m.bad.encrypted") { + const alreadyDecrypted = this.clearEvent && !this.isDecryptionFailure(); + const forceRedecrypt = options.forceRedecryptIfUntrusted && this.isKeySourceUntrusted(); + if (alreadyDecrypted && !forceRedecrypt) { // we may want to just ignore this? let's start with rejecting it. throw new Error("Attempt to decrypt event which has already been decrypted"); - } // if we already have a decryption attempt in progress, then it may + } + + // if we already have a decryption attempt in progress, then it may // fail because it was using outdated info. We now have reason to // succeed where it failed before, but we don't want to have multiple // attempts going at the same time, so just set a flag that says we have // new info. // - - - if (this._decryptionPromise) { + if (this.decryptionPromise) { _logger.logger.log(`Event ${this.getId()} already being decrypted; queueing a retry`); - - this._retryDecryption = true; - return this._decryptionPromise; + this.retryDecryption = true; + return this.decryptionPromise; } - - this._decryptionPromise = this._decryptionLoop(crypto, isRetry); - return this._decryptionPromise; - }, + this.decryptionPromise = this.decryptionLoop(crypto, options); + return this.decryptionPromise; + } /** * Cancel any room key request for this event and resend another. * - * @param {module:crypto} crypto crypto module - * @param {string} userId the user who received this event + * @param crypto - crypto module + * @param userId - the user who received this event * - * @returns {Promise} a promise that resolves when the request is queued + * @returns a promise that resolves when the request is queued */ - cancelAndResendKeyRequest: function (crypto, userId) { + cancelAndResendKeyRequest(crypto, userId) { const wireContent = this.getWireContent(); return crypto.requestRoomKey({ algorithm: wireContent.algorithm, @@ -54422,135 +166916,97 @@ utils.extend(MatrixEvent.prototype, { session_id: wireContent.session_id, sender_key: wireContent.sender_key }, this.getKeyRequestRecipients(userId), true); - }, + } /** * Calculate the recipients for keyshare requests. * - * @param {string} userId the user who received this event. + * @param userId - the user who received this event. * - * @returns {Array} array of recipients + * @returns array of recipients */ - getKeyRequestRecipients: function (userId) { - // send the request to all of our own devices, and the - // original sending device if it wasn't us. - const wireContent = this.getWireContent(); + getKeyRequestRecipients(userId) { + // send the request to all of our own devices const recipients = [{ userId, - deviceId: '*' + deviceId: "*" }]; - const sender = this.getSender(); - - if (sender !== userId) { - recipients.push({ - userId: sender, - deviceId: wireContent.device_id - }); - } - return recipients; - }, - _decryptionLoop: async function (crypto, isRetry) { + } + async decryptionLoop(crypto, options = {}) { // make sure that this method never runs completely synchronously. - // (doing so would mean that we would clear _decryptionPromise *before* + // (doing so would mean that we would clear decryptionPromise *before* // it is set in attemptDecryption - and hence end up with a stuck - // `_decryptionPromise`). + // `decryptionPromise`). await Promise.resolve(); + // eslint-disable-next-line no-constant-condition while (true) { - this._retryDecryption = false; - let res; - let err; - + this.retryDecryption = false; + let err = undefined; try { - if (!crypto) { - res = this._badEncryptedMessage("Encryption not enabled"); - } else { - res = await crypto.decryptEvent(this); - - if (isRetry) { - _logger.logger.info(`Decrypted event on retry (id=${this.getId()})`); - } + const res = await crypto.decryptEvent(this); + if (options.isRetry === true) { + _logger.logger.info(`Decrypted event on retry (${this.getDetails()})`); } + this.setClearData(res); + this._decryptionFailureReason = null; } catch (e) { - if (e.name !== "DecryptionError") { - // not a decryption error: log the whole exception as an error - // (and don't bother with a retry) - const re = isRetry ? 're' : ''; + const detailedError = e instanceof _CryptoBackend.DecryptionError ? e.detailedString : String(e); + err = e; - _logger.logger.error(`Error ${re}decrypting event ` + `(id=${this.getId()}): ${e.stack || e}`); - - this._decryptionPromise = null; - this._retryDecryption = false; - return; - } - - err = e; // see if we have a retry queued. + // see if we have a retry queued. // // NB: make sure to keep this check in the same tick of the - // event loop as `_decryptionPromise = null` below - otherwise we + // event loop as `decryptionPromise = null` below - otherwise we // risk a race: // - // * A: we check _retryDecryption here and see that it is + // * A: we check retryDecryption here and see that it is // false // * B: we get a second call to attemptDecryption, which sees - // that _decryptionPromise is set so sets - // _retryDecryption - // * A: we continue below, clear _decryptionPromise, and + // that decryptionPromise is set so sets + // retryDecryption + // * A: we continue below, clear decryptionPromise, and // never do the retry. // - - if (this._retryDecryption) { + if (this.retryDecryption) { // decryption error, but we have a retry queued. - _logger.logger.log(`Got error decrypting event (id=${this.getId()}: ` + `${e}), but retrying`); - + _logger.logger.log(`Error decrypting event (${this.getDetails()}), but retrying: ${detailedError}`); continue; - } // decryption error, no retries queued. Warn about the error and + } + + // decryption error, no retries queued. Warn about the error and // set it to m.bad.encrypted. + // + // the detailedString already includes the name and message of the error, and the stack isn't much use, + // so we don't bother to log `e` separately. + _logger.logger.warn(`Error decrypting event (${this.getDetails()}): ${detailedError}`); + this.setClearDataForDecryptionFailure(String(e)); + this._decryptionFailureReason = e instanceof _CryptoBackend.DecryptionError ? e.code : _cryptoApi.DecryptionFailureCode.UNKNOWN_ERROR; + } - - _logger.logger.warn(`Error decrypting event (id=${this.getId()}): ${e.detailedString}`); - - res = this._badEncryptedMessage(e.message); - } // at this point, we've either successfully decrypted the event, or have given up - // (and set res to a 'badEncryptedMessage'). Either way, we can now set the - // cleartext of the event and raise Event.decrypted. - // - // make sure we clear '_decryptionPromise' before sending the 'Event.decrypted' event, + // Make sure we clear 'decryptionPromise' before sending the 'Event.decrypted' event, // otherwise the app will be confused to see `isBeingDecrypted` still set when // there isn't an `Event.decrypted` on the way. // - // see also notes on _retryDecryption above. + // see also notes on retryDecryption above. // + this.decryptionPromise = null; + this.retryDecryption = false; - - this._decryptionPromise = null; - this._retryDecryption = false; - - this._setClearData(res); // Before we emit the event, clear the push actions so that they can be recalculated + // Before we emit the event, clear the push actions so that they can be recalculated // by relevant code. We do this because the clear event has now changed, making it // so that existing rules can be re-run over the applicable properties. Stuff like // highlighting when the user's name is mentioned rely on this happening. We also want // to set the push actions before emitting so that any notification listeners don't // pick up the wrong contents. - - - this.setPushActions(null); - this.emit("Event.decrypted", this, err); + this.setPushDetails(); + if (options.emit !== false) { + this.emit(MatrixEventEvent.Decrypted, this, err); + } return; } - }, - _badEncryptedMessage: function (reason) { - return { - clearEvent: { - type: "m.room.message", - content: { - msgtype: "m.bad.encrypted", - body: "** Unable to decrypt: " + reason + " **" - } - } - }; - }, + } /** * Update the cleartext data on this event. @@ -54559,37 +167015,57 @@ utils.extend(MatrixEvent.prototype, { * * @internal * - * @fires module:models/event.MatrixEvent#"Event.decrypted" - * - * @param {module:crypto~EventDecryptionResult} decryptionResult - * the decryption result, including the plaintext and some key info + * @param decryptionResult - the decryption result, including the plaintext and some key info */ - _setClearData: function (decryptionResult) { - this._clearEvent = decryptionResult.clearEvent; - this._senderCurve25519Key = decryptionResult.senderCurve25519Key || null; - this._claimedEd25519Key = decryptionResult.claimedEd25519Key || null; - this._forwardingCurve25519KeyChain = decryptionResult.forwardingCurve25519KeyChain || []; - this._untrusted = decryptionResult.untrusted || false; - }, + setClearData(decryptionResult) { + var _decryptionResult$sen, _decryptionResult$cla; + this.clearEvent = decryptionResult.clearEvent; + this.senderCurve25519Key = (_decryptionResult$sen = decryptionResult.senderCurve25519Key) !== null && _decryptionResult$sen !== void 0 ? _decryptionResult$sen : null; + this.claimedEd25519Key = (_decryptionResult$cla = decryptionResult.claimedEd25519Key) !== null && _decryptionResult$cla !== void 0 ? _decryptionResult$cla : null; + this.forwardingCurve25519KeyChain = decryptionResult.forwardingCurve25519KeyChain || []; + this.untrusted = decryptionResult.untrusted || false; + this.encryptedDisabledForUnverifiedDevices = false; + this.invalidateExtensibleEvent(); + } + + /** + * Update the cleartext data on this event after a decryption failure. + * + * @param reason - the textual reason for the failure + */ + setClearDataForDecryptionFailure(reason) { + this.clearEvent = { + type: _event.EventType.RoomMessage, + content: { + msgtype: "m.bad.encrypted", + body: `** Unable to decrypt: ${reason} **` + } + }; + this.senderCurve25519Key = null; + this.claimedEd25519Key = null; + this.forwardingCurve25519KeyChain = []; + this.untrusted = false; + this.encryptedDisabledForUnverifiedDevices = reason === `DecryptionError: ${_OlmDevice.WITHHELD_MESSAGES["m.unverified"]}`; + this.invalidateExtensibleEvent(); + } /** * Gets the cleartext content for this event. If the event is not encrypted, * or encryption has not been completed, this will return null. * - * @returns {Object} The cleartext (decrypted) content for the event + * @returns The cleartext (decrypted) content for the event */ - getClearContent: function () { - const ev = this._clearEvent; - return ev && ev.content ? ev.content : null; - }, + getClearContent() { + return this.clearEvent ? this.clearEvent.content : null; + } /** * Check if the event is encrypted. - * @return {boolean} True if this event is encrypted. + * @returns True if this event is encrypted. */ - isEncrypted: function () { - return !this.isState() && this.event.type === "m.room.encrypted"; - }, + isEncrypted() { + return !this.isState() && this.event.type === _event.EventType.RoomMessageEncrypted; + } /** * The curve25519 key for the device that we think sent this event @@ -54601,25 +167077,22 @@ utils.extend(MatrixEvent.prototype, { * * For a megolm-encrypted event, it is inferred from the Olm message which * established the megolm session - * - * @return {string} */ - getSenderKey: function () { - return this._senderCurve25519Key; - }, + getSenderKey() { + return this.senderCurve25519Key; + } /** * The additional keys the sender of this encrypted event claims to possess. * * Just a wrapper for #getClaimedEd25519Key (q.v.) - * - * @return {Object} */ - getKeysClaimed: function () { + getKeysClaimed() { + if (!this.claimedEd25519Key) return {}; return { - ed25519: this._claimedEd25519Key + ed25519: this.claimedEd25519Key }; - }, + } /** * Get the ed25519 the sender of this event claims to own. @@ -54634,13 +167107,11 @@ utils.extend(MatrixEvent.prototype, { * signing the public curve25519 key with the ed25519 key. * * In general, applications should not use this method directly, but should - * instead use MatrixClient.getEventSenderDeviceInfo. - * - * @return {string} + * instead use {@link CryptoApi#getEncryptionInfoForEvent}. */ - getClaimedEd25519Key: function () { - return this._claimedEd25519Key; - }, + getClaimedEd25519Key() { + return this.claimedEd25519Key; + } /** * Get the curve25519 keys of the devices which were involved in telling us @@ -54654,226 +167125,373 @@ utils.extend(MatrixEvent.prototype, { * If the device that sent us the key (A) got it from another device which * it wasn't prepared to vouch for (B), the result will be [A, B]. And so on. * - * @return {string[]} base64-encoded curve25519 keys, from oldest to newest. + * @returns base64-encoded curve25519 keys, from oldest to newest. */ - getForwardingCurve25519KeyChain: function () { - return this._forwardingCurve25519KeyChain; - }, + getForwardingCurve25519KeyChain() { + return this.forwardingCurve25519KeyChain; + } /** * Whether the decryption key was obtained from an untrusted source. If so, * we cannot verify the authenticity of the message. - * - * @return {boolean} */ - isKeySourceUntrusted: function () { - return this._untrusted; - }, - getUnsigned: function () { + isKeySourceUntrusted() { + return !!this.untrusted; + } + getUnsigned() { return this.event.unsigned || {}; - }, - unmarkLocallyRedacted: function () { + } + setUnsigned(unsigned) { + this.event.unsigned = unsigned; + } + unmarkLocallyRedacted() { const value = this._localRedactionEvent; this._localRedactionEvent = null; - if (this.event.unsigned) { - this.event.unsigned.redacted_because = null; + this.event.unsigned.redacted_because = undefined; } - return !!value; - }, - markLocallyRedacted: function (redactionEvent) { - if (this._localRedactionEvent) { - return; - } - - this.emit("Event.beforeRedaction", this, redactionEvent); + } + markLocallyRedacted(redactionEvent) { + if (this._localRedactionEvent) return; + this.emit(MatrixEventEvent.BeforeRedaction, this, redactionEvent); this._localRedactionEvent = redactionEvent; - if (!this.event.unsigned) { this.event.unsigned = {}; } - this.event.unsigned.redacted_because = redactionEvent.event; - }, + } + + /** + * Change the visibility of an event, as per https://github.com/matrix-org/matrix-doc/pull/3531 . + * + * @param visibilityChange - event holding a hide/unhide payload, or nothing + * if the event is being reset to its original visibility (presumably + * by a visibility event being redacted). + * + * @remarks + * Fires {@link MatrixEventEvent.VisibilityChange} if `visibilityEvent` + * caused a change in the actual visibility of this event, either by making it + * visible (if it was hidden), by making it hidden (if it was visible) or by + * changing the reason (if it was hidden). + */ + applyVisibilityEvent(visibilityChange) { + var _visibilityChange$vis, _visibilityChange$rea; + const visible = (_visibilityChange$vis = visibilityChange === null || visibilityChange === void 0 ? void 0 : visibilityChange.visible) !== null && _visibilityChange$vis !== void 0 ? _visibilityChange$vis : true; + const reason = (_visibilityChange$rea = visibilityChange === null || visibilityChange === void 0 ? void 0 : visibilityChange.reason) !== null && _visibilityChange$rea !== void 0 ? _visibilityChange$rea : null; + let change = false; + if (this.visibility.visible !== visible) { + change = true; + } else if (!this.visibility.visible && this.visibility["reason"] !== reason) { + change = true; + } + if (change) { + if (visible) { + this.visibility = MESSAGE_VISIBLE; + } else { + this.visibility = Object.freeze({ + visible: false, + reason + }); + } + this.emit(MatrixEventEvent.VisibilityChange, this, visible); + } + } + + /** + * Return instructions to display or hide the message. + * + * @returns Instructions determining whether the message + * should be displayed. + */ + messageVisibility() { + // Note: We may return `this.visibility` without fear, as + // this is a shallow frozen object. + return this.visibility; + } /** * Update the content of an event in the same way it would be by the server * if it were redacted before it was sent to us * - * @param {module:models/event.MatrixEvent} redaction_event - * event causing the redaction + * @param redactionEvent - event causing the redaction + * @param room - the room in which the event exists */ - makeRedacted: function (redaction_event) { + makeRedacted(redactionEvent, room) { // quick sanity-check - if (!redaction_event.event) { - throw new Error("invalid redaction_event in makeRedacted"); + if (!redactionEvent.event) { + throw new Error("invalid redactionEvent in makeRedacted"); } - this._localRedactionEvent = null; - this.emit("Event.beforeRedaction", this, redaction_event); - this._replacingEvent = null; // we attempt to replicate what we would see from the server if + this.emit(MatrixEventEvent.BeforeRedaction, this, redactionEvent); + this._replacingEvent = null; + // we attempt to replicate what we would see from the server if // the event had been redacted before we saw it. // // The server removes (most of) the content of the event, and adds a // "redacted_because" key to the unsigned section containing the // redacted event. - if (!this.event.unsigned) { this.event.unsigned = {}; } - - this.event.unsigned.redacted_because = redaction_event.event; - let key; - - for (key in this.event) { - if (!this.event.hasOwnProperty(key)) { - continue; - } - - if (!_REDACT_KEEP_KEY_MAP[key]) { + this.event.unsigned.redacted_because = redactionEvent.event; + for (const key in this.event) { + if (this.event.hasOwnProperty(key) && !REDACT_KEEP_KEYS.has(key)) { delete this.event[key]; } } - const keeps = _REDACT_KEEP_CONTENT_MAP[this.getType()] || {}; + // If the event is encrypted prune the decrypted bits + if (this.isEncrypted()) { + this.clearEvent = undefined; + } + const keeps = this.getType() in REDACT_KEEP_CONTENT_MAP ? REDACT_KEEP_CONTENT_MAP[this.getType()] : {}; const content = this.getContent(); - - for (key in content) { - if (!content.hasOwnProperty(key)) { - continue; - } - - if (!keeps[key]) { + for (const key in content) { + if (content.hasOwnProperty(key) && !keeps[key]) { delete content[key]; } } - }, + + // If the redacted event was in a thread (but not thread root), move it + // to the main timeline. This will change if MSC3389 is merged. + if (!this.isThreadRoot && this.threadRootId && this.threadRootId !== this.getId()) { + this.moveAllRelatedToMainTimeline(room); + redactionEvent.moveToMainTimeline(room); + } + this.invalidateExtensibleEvent(); + } + moveAllRelatedToMainTimeline(room) { + const thread = this.thread; + this.moveToMainTimeline(room); + + // If we dont have access to the thread, we can only move this + // event, not things related to it. + if (thread) { + for (const event of thread.events) { + var _event$getRelation; + if (((_event$getRelation = event.getRelation()) === null || _event$getRelation === void 0 ? void 0 : _event$getRelation.event_id) === this.getId()) { + event.moveAllRelatedToMainTimeline(room); + } + } + } + } + moveToMainTimeline(room) { + var _this$thread; + // Remove it from its thread + (_this$thread = this.thread) === null || _this$thread === void 0 || _this$thread.timelineSet.removeEvent(this.getId()); + this.setThread(undefined); + + // And insert it into the main timeline + const timeline = room.getLiveTimeline(); + // We use insertEventIntoTimeline to insert it in timestamp order, + // because we don't know where it should go (until we have MSC4033). + timeline.getTimelineSet().insertEventIntoTimeline(this, timeline, timeline.getState(_eventTimeline.EventTimeline.FORWARDS)); + } /** * Check if this event has been redacted * - * @return {boolean} True if this event has been redacted + * @returns True if this event has been redacted */ - isRedacted: function () { + isRedacted() { return Boolean(this.getUnsigned().redacted_because); - }, + } /** * Check if this event is a redaction of another event * - * @return {boolean} True if this event is a redaction + * @returns True if this event is a redaction */ - isRedaction: function () { - return this.getType() === "m.room.redaction"; - }, + isRedaction() { + return this.getType() === _event.EventType.RoomRedaction; + } + + /** + * Return the visibility change caused by this event, + * as per https://github.com/matrix-org/matrix-doc/pull/3531. + * + * @returns If the event is a well-formed visibility change event, + * an instance of `IVisibilityChange`, otherwise `null`. + */ + asVisibilityChange() { + if (!_event.EVENT_VISIBILITY_CHANGE_TYPE.matches(this.getType())) { + // Not a visibility change event. + return null; + } + const relation = this.getRelation(); + if (!relation || relation.rel_type != "m.reference") { + // Ill-formed, ignore this event. + return null; + } + const eventId = relation.event_id; + if (!eventId) { + // Ill-formed, ignore this event. + return null; + } + const content = this.getWireContent(); + const visible = !!content.visible; + const reason = content.reason; + if (reason && typeof reason != "string") { + // Ill-formed, ignore this event. + return null; + } + // Well-formed visibility change event. + return { + visible, + reason, + eventId + }; + } + + /** + * Check if this event alters the visibility of another event, + * as per https://github.com/matrix-org/matrix-doc/pull/3531. + * + * @returns True if this event alters the visibility + * of another event. + */ + isVisibilityEvent() { + return _event.EVENT_VISIBILITY_CHANGE_TYPE.matches(this.getType()); + } + + /** + * Get the (decrypted, if necessary) redaction event JSON + * if event was redacted + * + * @returns The redaction event JSON, or an empty object + */ + getRedactionEvent() { + var _this$clearEvent, _this$event$unsigned; + if (!this.isRedacted()) return null; + if ((_this$clearEvent = this.clearEvent) !== null && _this$clearEvent !== void 0 && _this$clearEvent.unsigned) { + var _this$clearEvent$unsi, _this$clearEvent2; + return (_this$clearEvent$unsi = (_this$clearEvent2 = this.clearEvent) === null || _this$clearEvent2 === void 0 ? void 0 : _this$clearEvent2.unsigned.redacted_because) !== null && _this$clearEvent$unsi !== void 0 ? _this$clearEvent$unsi : null; + } else if ((_this$event$unsigned = this.event.unsigned) !== null && _this$event$unsigned !== void 0 && _this$event$unsigned.redacted_because) { + return this.event.unsigned.redacted_because; + } else { + return {}; + } + } /** * Get the push actions, if known, for this event * - * @return {?Object} push actions + * @returns push actions */ - getPushActions: function () { - return this._pushActions; - }, + getPushActions() { + return this.pushDetails.actions || null; + } /** - * Set the push actions for this event. + * Get the push details, if known, for this event * - * @param {Object} pushActions push actions + * @returns push actions */ - setPushActions: function (pushActions) { - this._pushActions = pushActions; - }, + getPushDetails() { + return this.pushDetails; + } + + /** + * Set the push details for this event. + * + * @param pushActions - push actions + * @param rule - the executed push rule + */ + setPushDetails(pushActions, rule) { + this.pushDetails = { + actions: pushActions, + rule + }; + } /** * Replace the `event` property and recalculate any properties based on it. - * @param {Object} event the object to assign to the `event` property + * @param event - the object to assign to the `event` property */ - handleRemoteEcho: function (event) { + handleRemoteEcho(event) { const oldUnsigned = this.getUnsigned(); const oldId = this.getId(); - this.event = event; // if this event was redacted before it was sent, it's locally marked as redacted. + this.event = event; + // if this event was redacted before it was sent, it's locally marked as redacted. // At this point, we've received the remote echo for the event, but not yet for // the redaction that we are sending ourselves. Preserve the locally redacted // state by copying over redacted_because so we don't get a flash of // redacted, not-redacted, redacted as remote echos come in - if (oldUnsigned.redacted_because) { if (!this.event.unsigned) { this.event.unsigned = {}; } - this.event.unsigned.redacted_because = oldUnsigned.redacted_because; - } // successfully sent. - - + } + // successfully sent. this.setStatus(null); - if (this.getId() !== oldId) { // emit the event if it changed - this.emit("Event.localEventIdReplaced", this); + this.emit(MatrixEventEvent.LocalEventIdReplaced, this); } - }, + this.localTimestamp = Date.now() - this.getAge(); + } /** * Whether the event is in any phase of sending, send failure, waiting for * remote echo, etc. - * - * @return {boolean} */ isSending() { return !!this.status; - }, + } /** * Update the event's sending status and emit an event as well. * - * @param {String} status The new status + * @param status - The new status */ setStatus(status) { this.status = status; - this.emit("Event.status", this, status); - }, - + this.emit(MatrixEventEvent.Status, this, status); + } replaceLocalEventId(eventId) { this.event.event_id = eventId; - this.emit("Event.localEventIdReplaced", this); - }, + this.emit(MatrixEventEvent.LocalEventIdReplaced, this); + } /** * Get whether the event is a relation event, and of a given type if - * `relType` is passed in. + * `relType` is passed in. State events cannot be relation events * - * @param {string?} relType if given, checks that the relation is of the + * @param relType - if given, checks that the relation is of the * given type - * @return {boolean} */ - isRelation(relType = undefined) { + isRelation(relType) { + var _this$getWireContent3; // Relation info is lifted out of the encrypted content when sent to // encrypted rooms, so we have to check `getWireContent` for this. - const content = this.getWireContent(); - const relation = content && content["m.relates_to"]; - return relation && relation.rel_type && relation.event_id && (relType && relation.rel_type === relType || !relType); - }, + const relation = (_this$getWireContent3 = this.getWireContent()) === null || _this$getWireContent3 === void 0 ? void 0 : _this$getWireContent3["m.relates_to"]; + if (this.isState() && !!(relation !== null && relation !== void 0 && relation.rel_type) && [_event.RelationType.Replace, _event.RelationType.Thread].includes(relation.rel_type)) { + // State events cannot be m.replace or m.thread relations + return false; + } + return !!(relation !== null && relation !== void 0 && relation.rel_type && relation.event_id && (relType ? relation.rel_type === relType : true)); + } /** * Get relation info for the event, if any. - * - * @return {Object} */ getRelation() { + var _this$getWireContent$2; if (!this.isRelation()) { return null; } - - return this.getWireContent()["m.relates_to"]; - }, + return (_this$getWireContent$2 = this.getWireContent()["m.relates_to"]) !== null && _this$getWireContent$2 !== void 0 ? _this$getWireContent$2 : null; + } /** * Set an event that replaces the content of this event, through an m.replace relation. * - * @param {MatrixEvent?} newEvent the event with the replacing content, if any. + * @param newEvent - the event with the replacing content, if any. + * + * @remarks + * Fires {@link MatrixEventEvent.Replaced} */ makeReplaced(newEvent) { // don't allow redacted events to be replaced. @@ -54883,19 +167501,21 @@ utils.extend(MatrixEvent.prototype, { if (this.isRedacted() && newEvent) { return; } - - if (this._replacingEvent !== newEvent) { - this._replacingEvent = newEvent; - this.emit("Event.replaced", this); + // don't allow state events to be replaced using this mechanism as per MSC2676 + if (this.isState()) { + return; } - }, + if (this._replacingEvent !== newEvent) { + this._replacingEvent = newEvent !== null && newEvent !== void 0 ? newEvent : null; + this.emit(MatrixEventEvent.Replaced, this); + this.invalidateExtensibleEvent(); + } + } /** * Returns the status of any associated edit or redaction - * (not for reactions/annotations as their local echo doesn't affect the orignal event), + * (not for reactions/annotations as their local echo doesn't affect the original event), * or else the status of the event. - * - * @return {EventStatus} */ getAssociatedStatus() { if (this._replacingEvent) { @@ -54903,94 +167523,78 @@ utils.extend(MatrixEvent.prototype, { } else if (this._localRedactionEvent) { return this._localRedactionEvent.status; } - return this.status; - }, - + } getServerAggregatedRelation(relType) { - const relations = this.getUnsigned()["m.relations"]; - - if (relations) { - return relations[relType]; - } - }, + var _this$getUnsigned$mR; + return (_this$getUnsigned$mR = this.getUnsigned()["m.relations"]) === null || _this$getUnsigned$mR === void 0 ? void 0 : _this$getUnsigned$mR[relType]; + } /** * Returns the event ID of the event replacing the content of this event, if any. - * - * @return {string?} */ replacingEventId() { - const replaceRelation = this.getServerAggregatedRelation("m.replace"); - + const replaceRelation = this.getServerAggregatedRelation(_event.RelationType.Replace); if (replaceRelation) { return replaceRelation.event_id; } else if (this._replacingEvent) { return this._replacingEvent.getId(); } - }, + } /** * Returns the event replacing the content of this event, if any. * Replacements are aggregated on the server, so this would only * return an event in case it came down the sync, or for local echo of edits. - * - * @return {MatrixEvent?} */ replacingEvent() { return this._replacingEvent; - }, + } /** * Returns the origin_server_ts of the event replacing the content of this event, if any. - * - * @return {Date?} */ replacingEventDate() { - const replaceRelation = this.getServerAggregatedRelation("m.replace"); - + const replaceRelation = this.getServerAggregatedRelation(_event.RelationType.Replace); if (replaceRelation) { const ts = replaceRelation.origin_server_ts; - if (Number.isFinite(ts)) { return new Date(ts); } } else if (this._replacingEvent) { - return this._replacingEvent.getDate(); + var _this$_replacingEvent; + return (_this$_replacingEvent = this._replacingEvent.getDate()) !== null && _this$_replacingEvent !== void 0 ? _this$_replacingEvent : undefined; } - }, + } /** * Returns the event that wants to redact this event, but hasn't been sent yet. - * @return {MatrixEvent} the event + * @returns the event */ localRedactionEvent() { return this._localRedactionEvent; - }, + } /** * For relations and redactions, returns the event_id this event is referring to. - * - * @return {string?} */ getAssociatedId() { const relation = this.getRelation(); - - if (relation) { + if (this.replyEventId) { + return this.replyEventId; + } else if (relation) { return relation.event_id; } else if (this.isRedaction()) { return this.event.redacts; } - }, + } /** * Checks if this event is associated with another event. See `getAssociatedId`. - * - * @return {bool} */ - hasAssocation() { + hasAssociation() { return !!this.getAssociatedId(); - }, + } /** * Update the related id with a new one. @@ -54998,84 +167602,145 @@ utils.extend(MatrixEvent.prototype, { * Used to replace a local id with remote one before sending * an event with a related id. * - * @param {string} eventId the new event id + * @param eventId - the new event id */ updateAssociatedId(eventId) { const relation = this.getRelation(); - if (relation) { relation.event_id = eventId; } else if (this.isRedaction()) { this.event.redacts = eventId; } - }, + } /** * Flags an event as cancelled due to future conditions. For example, a verification * request event in the same sync transaction may be flagged as cancelled to warn * listeners that a cancellation event is coming down the same pipe shortly. - * @param {boolean} cancelled Whether the event is to be cancelled or not. + * @param cancelled - Whether the event is to be cancelled or not. */ flagCancelled(cancelled = true) { this._isCancelled = cancelled; - }, + } /** * Gets whether or not the event is flagged as cancelled. See flagCancelled() for * more information. - * @returns {boolean} True if the event is cancelled, false otherwise. + * @returns True if the event is cancelled, false otherwise. */ isCancelled() { return this._isCancelled; - }, + } /** - * Summarise the event as JSON for debugging. If encrypted, include both the - * decrypted and encrypted view of the event. This is named `toJSON` for use - * with `JSON.stringify` which checks objects for functions named `toJSON` - * and will call them to customise the output if they are defined. + * Get a copy/snapshot of this event. The returned copy will be loosely linked + * back to this instance, though will have "frozen" event information. Other + * properties of this MatrixEvent instance will be copied verbatim, which can + * mean they are in reference to this instance despite being on the copy too. + * The reference the snapshot uses does not change, however members aside from + * the underlying event will not be deeply cloned, thus may be mutated internally. + * For example, the sender profile will be copied over at snapshot time, and + * the sender profile internally may mutate without notice to the consumer. * - * @return {Object} + * This is meant to be used to snapshot the event details themselves, not the + * features (such as sender) surrounding the event. + * @returns A snapshot of this event. + */ + toSnapshot() { + const ev = new MatrixEvent(JSON.parse(JSON.stringify(this.event))); + for (const [p, v] of Object.entries(this)) { + if (p !== "event") { + // exclude the thing we just cloned + // @ts-ignore - XXX: this is just nasty + ev[p] = v; + } + } + return ev; + } + + /** + * Determines if this event is equivalent to the given event. This only checks + * the event object itself, not the other properties of the event. Intended for + * use with toSnapshot() to identify events changing. + * @param otherEvent - The other event to check against. + * @returns True if the events are the same, false otherwise. + */ + isEquivalentTo(otherEvent) { + if (!otherEvent) return false; + if (otherEvent === this) return true; + const myProps = (0, _utils.deepSortedObjectEntries)(this.event); + const theirProps = (0, _utils.deepSortedObjectEntries)(otherEvent.event); + return JSON.stringify(myProps) === JSON.stringify(theirProps); + } + + /** + * Summarise the event as JSON. + * + * If encrypted, include both the decrypted and encrypted view of the event. + * + * This is named `toJSON` for use with `JSON.stringify` which checks objects + * for functions named `toJSON` and will call them to customise the output + * if they are defined. + * + * **WARNING** Do not log the result of this method; otherwise, it will end up + * in rageshakes, leading to a privacy violation. + * + * @deprecated Prefer to use {@link MatrixEvent#getEffectiveEvent} or similar. + * This method will be removed soon; it is too easy to use it accidentally + * and cause a privacy violation (cf https://github.com/vector-im/element-web/issues/26380). + * In any case, the value it returns is not a faithful serialization of the object. */ toJSON() { - const event = { - type: this.getType(), - sender: this.getSender(), - content: this.getContent(), - event_id: this.getId(), - origin_server_ts: this.getTs(), - unsigned: this.getUnsigned(), - room_id: this.getRoomId() - }; // if this is a redaction then attach the redacts key - - if (this.isRedaction()) { - event.redacts = this.event.redacts; - } - + const event = this.getEffectiveEvent(); if (!this.isEncrypted()) { return event; } - return { decrypted: event, encrypted: this.event }; - }, - - setVerificationRequest: function (request) { + } + setVerificationRequest(request) { this.verificationRequest = request; - }, - + } setTxnId(txnId) { - this._txnId = txnId; - }, - + this.txnId = txnId; + } getTxnId() { - return this._txnId; + return this.txnId; } -}); -/* _REDACT_KEEP_KEY_MAP gives the keys we keep when an event is redacted + /** + * Set the instance of a thread associated with the current event + * @param thread - the thread + */ + setThread(thread) { + // don't allow state events to be threaded as per the spec + if (this.isState()) { + return; + } + if (this.thread) { + this.reEmitter.stopReEmitting(this.thread, [_thread.ThreadEvent.Update]); + } + this.thread = thread; + this.setThreadId(thread === null || thread === void 0 ? void 0 : thread.id); + if (thread) { + this.reEmitter.reEmit(thread, [_thread.ThreadEvent.Update]); + } + } + + /** + * Get the instance of the thread associated with the current event + */ + getThread() { + return this.thread; + } + setThreadId(threadId) { + this.threadId = threadId; + } +} + +/* REDACT_KEEP_KEYS gives the keys we keep when an event is redacted * * This is specified here: * http://matrix.org/speculator/spec/HEAD/client_server/latest.html#redactions @@ -55084,71 +167749,49 @@ utils.extend(MatrixEvent.prototype, { * - We keep 'unsigned' since that is created by the local server * - We keep user_id for backwards-compat with v1 */ +exports.MatrixEvent = MatrixEvent; +const REDACT_KEEP_KEYS = new Set(["event_id", "type", "room_id", "user_id", "sender", "state_key", "prev_state", "content", "unsigned", "origin_server_ts"]); -const _REDACT_KEEP_KEY_MAP = ['event_id', 'type', 'room_id', 'user_id', 'sender', 'state_key', 'prev_state', 'content', 'unsigned', 'origin_server_ts'].reduce(function (ret, val) { - ret[val] = 1; - return ret; -}, {}); // a map from event type to the .content keys we keep when an event is redacted - - -const _REDACT_KEEP_CONTENT_MAP = { - 'm.room.member': { - 'membership': 1 +// a map from state event type to the .content keys we keep when an event is redacted +const REDACT_KEEP_CONTENT_MAP = { + [_event.EventType.RoomMember]: { + membership: 1 }, - 'm.room.create': { - 'creator': 1 + [_event.EventType.RoomJoinRules]: { + join_rule: 1 }, - 'm.room.join_rules': { - 'join_rule': 1 - }, - 'm.room.power_levels': { - 'ban': 1, - 'events': 1, - 'events_default': 1, - 'kick': 1, - 'redact': 1, - 'state_default': 1, - 'users': 1, - 'users_default': 1 - }, - 'm.room.aliases': { - 'aliases': 1 + [_event.EventType.RoomPowerLevels]: { + ban: 1, + events: 1, + events_default: 1, + kick: 1, + redact: 1, + state_default: 1, + users: 1, + users_default: 1 } }; -/** - * Fires when an event is decrypted - * - * @event module:models/event.MatrixEvent#"Event.decrypted" - * - * @param {module:models/event.MatrixEvent} event - * The matrix event which has been decrypted - * @param {module:crypto/algorithms/base.DecryptionError?} err - * The error that occured during decryption, or `undefined` if no - * error occured. - */ +//# sourceMappingURL=event.js.map /***/ }), -/***/ 2390: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 5364: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Group = Group; - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _events = __webpack_require__(8614); - +exports.PolicyScope = exports.PolicyRecommendation = exports.POLICIES_ACCOUNT_EVENT_TYPE = exports.IgnoredInvites = exports.IGNORE_INVITES_ACCOUNT_EVENT_KEY = void 0; +var _matrixEventsSdk = __nccwpck_require__(9446); +var _eventTimeline = __nccwpck_require__(2763); +var _partials = __nccwpck_require__(3653); +var _utils = __nccwpck_require__(2557); +var _event = __nccwpck_require__(7487); /* -Copyright 2017 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2022 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -55163,101 +167806,1130 @@ See the License for the specific language governing permissions and limitations under the License. */ +/// The event type storing the user's individual policies. +/// +/// Exported for testing purposes. +const POLICIES_ACCOUNT_EVENT_TYPE = exports.POLICIES_ACCOUNT_EVENT_TYPE = new _matrixEventsSdk.UnstableValue("m.policies", "org.matrix.msc3847.policies"); + +/// The key within the user's individual policies storing the user's ignored invites. +/// +/// Exported for testing purposes. +const IGNORE_INVITES_ACCOUNT_EVENT_KEY = exports.IGNORE_INVITES_ACCOUNT_EVENT_KEY = new _matrixEventsSdk.UnstableValue("m.ignore.invites", "org.matrix.msc3847.ignore.invites"); + +/// The types of recommendations understood. +let PolicyRecommendation = exports.PolicyRecommendation = /*#__PURE__*/function (PolicyRecommendation) { + PolicyRecommendation["Ban"] = "m.ban"; + return PolicyRecommendation; +}({}); /** - * @module models/group + * The various scopes for policies. */ +let PolicyScope = exports.PolicyScope = /*#__PURE__*/function (PolicyScope) { + PolicyScope["User"] = "m.policy.user"; + PolicyScope["Room"] = "m.policy.room"; + PolicyScope["Server"] = "m.policy.server"; + return PolicyScope; +}({}); +const scopeToEventTypeMap = { + [PolicyScope.User]: _event.EventType.PolicyRuleUser, + [PolicyScope.Room]: _event.EventType.PolicyRuleRoom, + [PolicyScope.Server]: _event.EventType.PolicyRuleServer +}; /** - * Construct a new Group. + * A container for ignored invites. * - * @param {string} groupId The ID of this group. + * # Performance * - * @prop {string} groupId The ID of this group. - * @prop {string} name The human-readable display name for this group. - * @prop {string} avatarUrl The mxc URL for this group's avatar. - * @prop {string} myMembership The logged in user's membership of this group - * @prop {Object} inviter Infomation about the user who invited the logged in user - * to the group, if myMembership is 'invite'. - * @prop {string} inviter.userId The user ID of the inviter + * This implementation is extremely naive. It expects that we are dealing + * with a very short list of sources (e.g. only one). If real-world + * applications turn out to require longer lists, we may need to rework + * our data structures. */ -function Group(groupId) { - this.groupId = groupId; - this.name = null; - this.avatarUrl = null; - this.myMembership = null; - this.inviter = null; +class IgnoredInvites { + constructor(client) { + this.client = client; + } + + /** + * Add a new rule. + * + * @param scope - The scope for this rule. + * @param entity - The entity covered by this rule. Globs are supported. + * @param reason - A human-readable reason for introducing this new rule. + * @returns The event id for the new rule. + */ + async addRule(scope, entity, reason) { + const target = await this.getOrCreateTargetRoom(); + const response = await this.client.sendStateEvent(target.roomId, scopeToEventTypeMap[scope], { + entity, + reason, + recommendation: PolicyRecommendation.Ban + }); + return response.event_id; + } + + /** + * Remove a rule. + */ + async removeRule(event) { + await this.client.redactEvent(event.getRoomId(), event.getId()); + } + + /** + * Add a new room to the list of sources. If the user isn't a member of the + * room, attempt to join it. + * + * @param roomId - A valid room id. If this room is already in the list + * of sources, it will not be duplicated. + * @returns `true` if the source was added, `false` if it was already present. + * @throws If `roomId` isn't the id of a room that the current user is already + * member of or can join. + * + * # Safety + * + * This method will rewrite the `Policies` object in the user's account data. + * This rewrite is inherently racy and could overwrite or be overwritten by + * other concurrent rewrites of the same object. + */ + async addSource(roomId) { + // We attempt to join the room *before* calling + // `await this.getOrCreateSourceRooms()` to decrease the duration + // of the racy section. + await this.client.joinRoom(roomId); + // Race starts. + const sources = (await this.getOrCreateSourceRooms()).map(room => room.roomId); + if (sources.includes(roomId)) { + return false; + } + sources.push(roomId); + await this.withIgnoreInvitesPolicies(ignoreInvitesPolicies => { + ignoreInvitesPolicies.sources = sources; + }); + + // Race ends. + return true; + } + + /** + * Find out whether an invite should be ignored. + * + * @param params + * @param params.sender - The user id for the user who issued the invite. + * @param params.roomId - The room to which the user is invited. + * @returns A rule matching the entity, if any was found, `null` otherwise. + */ + async getRuleForInvite({ + sender, + roomId + }) { + // In this implementation, we perform a very naive lookup: + // - search in each policy room; + // - turn each (potentially glob) rule entity into a regexp. + // + // Real-world testing will tell us whether this is performant enough. + // In the (unfortunately likely) case it isn't, there are several manners + // in which we could optimize this: + // - match several entities per go; + // - pre-compile each rule entity into a regexp; + // - pre-compile entire rooms into a single regexp. + const policyRooms = await this.getOrCreateSourceRooms(); + const senderServer = sender.split(":")[1]; + const roomServer = roomId.split(":")[1]; + for (const room of policyRooms) { + const state = room.getUnfilteredTimelineSet().getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + for (const { + scope, + entities + } of [{ + scope: PolicyScope.Room, + entities: [roomId] + }, { + scope: PolicyScope.User, + entities: [sender] + }, { + scope: PolicyScope.Server, + entities: [senderServer, roomServer] + }]) { + const events = state.getStateEvents(scopeToEventTypeMap[scope]); + for (const event of events) { + const content = event.getContent(); + if ((content === null || content === void 0 ? void 0 : content.recommendation) != PolicyRecommendation.Ban) { + // Ignoring invites only looks at `m.ban` recommendations. + continue; + } + const glob = content === null || content === void 0 ? void 0 : content.entity; + if (!glob) { + // Invalid event. + continue; + } + let regexp; + try { + regexp = new RegExp((0, _utils.globToRegexp)(glob)); + } catch (ex) { + // Assume invalid event. + continue; + } + for (const entity of entities) { + if (entity && regexp.test(entity)) { + return event; + } + } + // No match. + } + } + } + return null; + } + + /** + * Get the target room, i.e. the room in which any new rule should be written. + * + * If there is no target room setup, a target room is created. + * + * Note: This method is public for testing reasons. Most clients should not need + * to call it directly. + * + * # Safety + * + * This method will rewrite the `Policies` object in the user's account data. + * This rewrite is inherently racy and could overwrite or be overwritten by + * other concurrent rewrites of the same object. + */ + async getOrCreateTargetRoom() { + const ignoreInvitesPolicies = this.getIgnoreInvitesPolicies(); + let target = ignoreInvitesPolicies.target; + // Validate `target`. If it is invalid, trash out the current `target` + // and create a new room. + if (typeof target !== "string") { + target = null; + } + if (target) { + // Check that the room exists and is valid. + const room = this.client.getRoom(target); + if (room) { + return room; + } else { + target = null; + } + } + // We need to create our own policy room for ignoring invites. + target = (await this.client.createRoom({ + name: "Individual Policy Room", + preset: _partials.Preset.PrivateChat + })).room_id; + await this.withIgnoreInvitesPolicies(ignoreInvitesPolicies => { + ignoreInvitesPolicies.target = target; + }); + + // Since we have just called `createRoom`, `getRoom` should not be `null`. + return this.client.getRoom(target); + } + + /** + * Get the list of source rooms, i.e. the rooms from which rules need to be read. + * + * If no source rooms are setup, the target room is used as sole source room. + * + * Note: This method is public for testing reasons. Most clients should not need + * to call it directly. + * + * # Safety + * + * This method will rewrite the `Policies` object in the user's account data. + * This rewrite is inherently racy and could overwrite or be overwritten by + * other concurrent rewrites of the same object. + */ + async getOrCreateSourceRooms() { + const ignoreInvitesPolicies = this.getIgnoreInvitesPolicies(); + let sources = ignoreInvitesPolicies.sources; + + // Validate `sources`. If it is invalid, trash out the current `sources` + // and create a new list of sources from `target`. + let hasChanges = false; + if (!Array.isArray(sources)) { + // `sources` could not be an array. + hasChanges = true; + sources = []; + } + let sourceRooms = sources + // `sources` could contain non-string / invalid room ids + .filter(roomId => typeof roomId === "string").map(roomId => this.client.getRoom(roomId)).filter(room => !!room); + if (sourceRooms.length != sources.length) { + hasChanges = true; + } + if (sourceRooms.length == 0) { + // `sources` could be empty (possibly because we've removed + // invalid content) + const target = await this.getOrCreateTargetRoom(); + hasChanges = true; + sourceRooms = [target]; + } + if (hasChanges) { + // Reload `policies`/`ignoreInvitesPolicies` in case it has been changed + // during or by our call to `this.getTargetRoom()`. + await this.withIgnoreInvitesPolicies(ignoreInvitesPolicies => { + ignoreInvitesPolicies.sources = sources; + }); + } + return sourceRooms; + } + + /** + * Fetch the `IGNORE_INVITES_POLICIES` object from account data. + * + * If both an unstable prefix version and a stable prefix version are available, + * it will return the stable prefix version preferentially. + * + * The result is *not* validated but is guaranteed to be a non-null object. + * + * @returns A non-null object. + */ + getIgnoreInvitesPolicies() { + return this.getPoliciesAndIgnoreInvitesPolicies().ignoreInvitesPolicies; + } + + /** + * Modify in place the `IGNORE_INVITES_POLICIES` object from account data. + */ + async withIgnoreInvitesPolicies(cb) { + const { + policies, + ignoreInvitesPolicies + } = this.getPoliciesAndIgnoreInvitesPolicies(); + cb(ignoreInvitesPolicies); + policies[IGNORE_INVITES_ACCOUNT_EVENT_KEY.name] = ignoreInvitesPolicies; + await this.client.setAccountData(POLICIES_ACCOUNT_EVENT_TYPE.name, policies); + } + + /** + * As `getIgnoreInvitesPolicies` but also return the `POLICIES_ACCOUNT_EVENT_TYPE` + * object. + */ + getPoliciesAndIgnoreInvitesPolicies() { + let policies = {}; + for (const key of [POLICIES_ACCOUNT_EVENT_TYPE.name, POLICIES_ACCOUNT_EVENT_TYPE.altName]) { + var _this$client$getAccou; + if (!key) { + continue; + } + const value = (_this$client$getAccou = this.client.getAccountData(key)) === null || _this$client$getAccou === void 0 ? void 0 : _this$client$getAccou.getContent(); + if (value) { + policies = value; + break; + } + } + let ignoreInvitesPolicies = {}; + let hasIgnoreInvitesPolicies = false; + for (const key of [IGNORE_INVITES_ACCOUNT_EVENT_KEY.name, IGNORE_INVITES_ACCOUNT_EVENT_KEY.altName]) { + if (!key) { + continue; + } + const value = policies[key]; + if (value && typeof value == "object") { + ignoreInvitesPolicies = value; + hasIgnoreInvitesPolicies = true; + break; + } + } + if (!hasIgnoreInvitesPolicies) { + policies[IGNORE_INVITES_ACCOUNT_EVENT_KEY.name] = ignoreInvitesPolicies; + } + return { + policies, + ignoreInvitesPolicies + }; + } +} +exports.IgnoredInvites = IgnoredInvites; +//# sourceMappingURL=invites-ignorer.js.map + +/***/ }), + +/***/ 5333: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isPollEvent = exports.PollEvent = exports.Poll = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _matrixEventsSdk = __nccwpck_require__(9446); +var _polls = __nccwpck_require__(6156); +var _relations = __nccwpck_require__(7920); +var _typedEventEmitter = __nccwpck_require__(7150); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let PollEvent = exports.PollEvent = /*#__PURE__*/function (PollEvent) { + PollEvent["New"] = "Poll.new"; + PollEvent["End"] = "Poll.end"; + PollEvent["Update"] = "Poll.update"; + PollEvent["Responses"] = "Poll.Responses"; + PollEvent["Destroy"] = "Poll.Destroy"; + PollEvent["UndecryptableRelations"] = "Poll.UndecryptableRelations"; + return PollEvent; +}({}); +const filterResponseRelations = (relationEvents, pollEndTimestamp) => { + const responseEvents = relationEvents.filter(event => { + if (event.isDecryptionFailure()) { + return; + } + return _polls.M_POLL_RESPONSE.matches(event.getType()) && + // From MSC3381: + // "Votes sent on or before the end event's timestamp are valid votes" + event.getTs() <= pollEndTimestamp; + }); + return { + responseEvents + }; +}; +class Poll extends _typedEventEmitter.TypedEventEmitter { + constructor(rootEvent, matrixClient, room) { + super(); + (0, _defineProperty2.default)(this, "_isFetchingResponses", false); + (0, _defineProperty2.default)(this, "responses", null); + /** + * Keep track of undecryptable relations + * As incomplete result sets affect poll results + */ + (0, _defineProperty2.default)(this, "undecryptableRelationEventIds", new Set()); + (0, _defineProperty2.default)(this, "countUndecryptableEvents", events => { + const undecryptableEventIds = events.filter(event => event.isDecryptionFailure()).map(event => event.getId()); + const previousCount = this.undecryptableRelationsCount; + this.undecryptableRelationEventIds = new Set([...this.undecryptableRelationEventIds, ...undecryptableEventIds]); + if (this.undecryptableRelationsCount !== previousCount) { + this.emit(PollEvent.UndecryptableRelations, this.undecryptableRelationsCount); + } + }); + this.rootEvent = rootEvent; + this.matrixClient = matrixClient; + this.room = room; + if (!this.rootEvent.getRoomId() || !this.rootEvent.getId()) { + throw new Error("Invalid poll start event."); + } + this.roomId = this.rootEvent.getRoomId(); + this.pollEvent = this.rootEvent.unstableExtensibleEvent; + } + get pollId() { + return this.rootEvent.getId(); + } + get endEventId() { + var _this$endEvent; + return (_this$endEvent = this.endEvent) === null || _this$endEvent === void 0 ? void 0 : _this$endEvent.getId(); + } + get isEnded() { + return !!this.endEvent; + } + get isFetchingResponses() { + return this._isFetchingResponses; + } + get undecryptableRelationsCount() { + return this.undecryptableRelationEventIds.size; + } + async getResponses() { + // if we have already fetched some responses + // just return them + if (this.responses) { + return this.responses; + } + + // if there is no fetching in progress + // start fetching + if (!this.isFetchingResponses) { + await this.fetchResponses(); + } + // return whatever responses we got from the first page + return this.responses; + } + + /** + * + * @param event - event with a relation to the rootEvent + * @returns void + */ + onNewRelation(event) { + var _this$endEvent2; + if (_polls.M_POLL_END.matches(event.getType()) && this.validateEndEvent(event)) { + this.endEvent = event; + this.refilterResponsesOnEnd(); + this.emit(PollEvent.End); + } + + // wait for poll responses to be initialised + if (!this.responses) { + return; + } + const pollEndTimestamp = ((_this$endEvent2 = this.endEvent) === null || _this$endEvent2 === void 0 ? void 0 : _this$endEvent2.getTs()) || Number.MAX_SAFE_INTEGER; + const { + responseEvents + } = filterResponseRelations([event], pollEndTimestamp); + this.countUndecryptableEvents([event]); + if (responseEvents.length) { + responseEvents.forEach(event => { + this.responses.addEvent(event); + }); + this.emit(PollEvent.Responses, this.responses); + } + } + async fetchResponses() { + var _this$endEvent3, _allRelations$nextBat; + this._isFetchingResponses = true; + + // we want: + // - stable and unstable M_POLL_RESPONSE + // - stable and unstable M_POLL_END + // so make one api call and filter by event type client side + const allRelations = await this.matrixClient.relations(this.roomId, this.rootEvent.getId(), "m.reference", undefined, { + from: this.relationsNextBatch || undefined + }); + await Promise.all(allRelations.events.map(event => this.matrixClient.decryptEventIfNeeded(event))); + const responses = this.responses || new _relations.Relations("m.reference", _polls.M_POLL_RESPONSE.name, this.matrixClient, [_polls.M_POLL_RESPONSE.altName]); + const pollEndEvent = allRelations.events.find(event => _polls.M_POLL_END.matches(event.getType())); + if (this.validateEndEvent(pollEndEvent)) { + this.endEvent = pollEndEvent; + this.refilterResponsesOnEnd(); + this.emit(PollEvent.End); + } + const pollCloseTimestamp = ((_this$endEvent3 = this.endEvent) === null || _this$endEvent3 === void 0 ? void 0 : _this$endEvent3.getTs()) || Number.MAX_SAFE_INTEGER; + const { + responseEvents + } = filterResponseRelations(allRelations.events, pollCloseTimestamp); + responseEvents.forEach(event => { + responses.addEvent(event); + }); + this.relationsNextBatch = (_allRelations$nextBat = allRelations.nextBatch) !== null && _allRelations$nextBat !== void 0 ? _allRelations$nextBat : undefined; + this.responses = responses; + this.countUndecryptableEvents(allRelations.events); + + // while there are more pages of relations + // fetch them + if (this.relationsNextBatch) { + // don't await + // we want to return the first page as soon as possible + this.fetchResponses(); + } else { + // no more pages + this._isFetchingResponses = false; + } + + // emit after updating _isFetchingResponses state + this.emit(PollEvent.Responses, this.responses); + } + + /** + * Only responses made before the poll ended are valid + * Refilter after an end event is recieved + * To ensure responses are valid + */ + refilterResponsesOnEnd() { + var _this$endEvent4; + if (!this.responses) { + return; + } + const pollEndTimestamp = ((_this$endEvent4 = this.endEvent) === null || _this$endEvent4 === void 0 ? void 0 : _this$endEvent4.getTs()) || Number.MAX_SAFE_INTEGER; + this.responses.getRelations().forEach(event => { + if (event.getTs() > pollEndTimestamp) { + var _this$responses; + (_this$responses = this.responses) === null || _this$responses === void 0 || _this$responses.removeEvent(event); + } + }); + this.emit(PollEvent.Responses, this.responses); + } + validateEndEvent(endEvent) { + if (!endEvent) { + return false; + } + /** + * Repeated end events are ignored - + * only the first (valid) closure event by origin_server_ts is counted. + */ + if (this.endEvent && this.endEvent.getTs() < endEvent.getTs()) { + return false; + } + + /** + * MSC3381 + * If a m.poll.end event is received from someone other than the poll creator or user with permission to redact + * others' messages in the room, the event must be ignored by clients due to being invalid. + */ + const roomCurrentState = this.room.currentState; + const endEventSender = endEvent.getSender(); + return !!endEventSender && (endEventSender === this.rootEvent.getSender() || roomCurrentState.maySendRedactionForEvent(this.rootEvent, endEventSender)); + } } -utils.inherits(Group, _events.EventEmitter); - -Group.prototype.setProfile = function (name, avatarUrl) { - if (this.name === name && this.avatarUrl === avatarUrl) return; - this.name = name || this.groupId; - this.avatarUrl = avatarUrl; - this.emit("Group.profile", this); -}; - -Group.prototype.setMyMembership = function (membership) { - if (this.myMembership === membership) return; - this.myMembership = membership; - this.emit("Group.myMembership", this); -}; /** - * Sets the 'inviter' property. This does not emit an event (the inviter - * will only change when the user is revited / reinvited to a room), - * so set this before setting myMembership. - * @param {Object} inviter Infomation about who invited us to the room + * Tests whether the event is a start, response or end poll event. + * + * @param event - Event to test + * @returns true if the event is a poll event, else false */ - - -Group.prototype.setInviter = function (inviter) { - this.inviter = inviter; +exports.Poll = Poll; +const isPollEvent = event => { + const eventType = event.getType(); + return _matrixEventsSdk.M_POLL_START.matches(eventType) || _polls.M_POLL_RESPONSE.matches(eventType) || _polls.M_POLL_END.matches(eventType); }; -/** - * Fires whenever a group's profile information is updated. - * This means the 'name' and 'avatarUrl' properties. - * @event module:client~MatrixClient#"Group.profile" - * @param {Group} group The group whose profile was updated. - * @example - * matrixClient.on("Group.profile", function(group){ - * var name = group.name; - * }); - */ +exports.isPollEvent = isPollEvent; +//# sourceMappingURL=poll.js.map +/***/ }), + +/***/ 1086: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ReadReceipt = void 0; +exports.synthesizeReceipt = synthesizeReceipt; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _read_receipts = __nccwpck_require__(3255); +var _typedEventEmitter = __nccwpck_require__(7150); +var _utils = __nccwpck_require__(2557); +var _event = __nccwpck_require__(9564); +var _event2 = __nccwpck_require__(7487); +var _room = __nccwpck_require__(7688); +var _logger = __nccwpck_require__(3854); +var _client = __nccwpck_require__(9058); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2022 The Matrix.org Foundation C.I.C. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ /** - * Fires whenever the logged in user's membership status of - * the group is updated. - * @event module:client~MatrixClient#"Group.myMembership" - * @param {Group} group The group in which the user's membership changed - * @example - * matrixClient.on("Group.myMembership", function(group){ - * var myMembership = group.myMembership; - * }); + * Create a synthetic receipt for the given event + * @param userId - The user ID if the receipt sender + * @param event - The event that is to be acknowledged + * @param receiptType - The type of receipt + * @param unthreaded - the receipt is unthreaded + * @returns a new event with the synthetic receipt in it */ +function synthesizeReceipt(userId, event, receiptType, unthreaded = false) { + return new _event.MatrixEvent({ + content: { + [event.getId()]: { + [receiptType]: { + [userId]: _objectSpread({ + ts: event.getTs() + }, !unthreaded && { + thread_id: (0, _client.threadIdForReceipt)(event) + }) + } + } + }, + type: _event2.EventType.Receipt, + room_id: event.getRoomId() + }); +} +const ReceiptPairRealIndex = 0; +const ReceiptPairSyntheticIndex = 1; +class ReadReceipt extends _typedEventEmitter.TypedEventEmitter { + constructor(...args) { + super(...args); + // receipts should clobber based on receipt_type and user_id pairs hence + // the form of this structure. This is sub-optimal for the exposed APIs + // which pass in an event ID and get back some receipts, so we also store + // a pre-cached list for this purpose. + // Map: receipt type → user Id → receipt + (0, _defineProperty2.default)(this, "receipts", new _utils.MapWithDefault(() => new Map())); + (0, _defineProperty2.default)(this, "receiptCacheByEventId", new Map()); + } + /** + * Gets the latest receipt for a given user in the room + * @param userId - The id of the user for which we want the receipt + * @param ignoreSynthesized - Whether to ignore synthesized receipts or not + * @param receiptType - Optional. The type of the receipt we want to get + * @returns the latest receipts of the chosen type for the chosen user + */ + getReadReceiptForUserId(userId, ignoreSynthesized = false, receiptType = _read_receipts.ReceiptType.Read) { + var _this$receipts$get$ge, _this$receipts$get; + const [realReceipt, syntheticReceipt] = (_this$receipts$get$ge = (_this$receipts$get = this.receipts.get(receiptType)) === null || _this$receipts$get === void 0 ? void 0 : _this$receipts$get.get(userId)) !== null && _this$receipts$get$ge !== void 0 ? _this$receipts$get$ge : [null, null]; + if (ignoreSynthesized) { + return realReceipt; + } + return syntheticReceipt !== null && syntheticReceipt !== void 0 ? syntheticReceipt : realReceipt; + } + compareReceipts(a, b) { + var _this$getUnfilteredTi; + // Try compare them in our unfiltered timeline set order, falling back to receipt timestamp which should be + // relatively sane as receipts are set only by the originating homeserver so as long as its clock doesn't + // jump around then it should be valid. + return (_this$getUnfilteredTi = this.getUnfilteredTimelineSet().compareEventOrdering(a.eventId, b.eventId)) !== null && _this$getUnfilteredTi !== void 0 ? _this$getUnfilteredTi : a.data.ts - b.data.ts; + } + + /** + * Get the ID of the event that a given user has read up to, or null if: + * - we have received no read receipts for them, or + * - the receipt we have points at an event we don't have, or + * - the thread ID in the receipt does not match the thread root of the + * referenced event. + * + * (The event might not exist if it is not loaded, and the thread ID might + * not match if the event has moved thread because it was redacted.) + * + * @param userId - The user ID to get read receipt event ID for + * @param ignoreSynthesized - If true, return only receipts that have been + * sent by the server, not implicit ones generated + * by the JS SDK. + * @returns ID of the latest existing event that the given user has read, or null. + */ + getEventReadUpTo(userId, ignoreSynthesized = false) { + // Find what the latest receipt says is the latest event we have read + const latestReceipt = this.getLatestReceipt(userId, ignoreSynthesized); + if (!latestReceipt) { + return null; + } + return this.receiptPointsAtConsistentEvent(latestReceipt) ? latestReceipt.eventId : null; + } + + /** + * Returns true if the event pointed at by this receipt exists, and its + * threadRootId is consistent with the thread information in the receipt. + */ + receiptPointsAtConsistentEvent(receipt) { + var _receipt$data; + const event = this.findEventById(receipt.eventId); + if (!event) { + // If the receipt points at a non-existent event, we have multiple + // possibilities: + // + // 1. We don't have the event because it's not loaded yet - probably + // it's old and we're best off ignoring the receipt - we can just + // send a new one when we read a new event. + // + // 2. We have a bug e.g. we misclassified this event into the wrong + // thread. + // + // 3. The referenced event moved out of this thread (e.g. because it + // was deleted.) + // + // 4. The receipt had the incorrect thread ID (due to a bug in a + // client, or malicious behaviour). + + // This receipt is not "valid" because it doesn't point at an event + // we have. We want to pretend it doesn't exist. + return false; + } + if (!((_receipt$data = receipt.data) !== null && _receipt$data !== void 0 && _receipt$data.thread_id)) { + // If this is an unthreaded receipt, it could point at any event, so + // there is no need to validate further - this receipt is valid. + return true; + } + // Otherwise it is a threaded receipt... + + if (receipt.data.thread_id === _read_receipts.MAIN_ROOM_TIMELINE) { + // The receipt is for the main timeline: we check that the event is + // in the main timeline. + + // Check if the event is in the main timeline + const eventIsInMainTimeline = (0, _client.inMainTimelineForReceipt)(event); + if (eventIsInMainTimeline) { + // The receipt is for the main timeline, and so is the event, so + // the receipt is valid. + return true; + } + } else { + // The receipt is for a different thread (not the main timeline) + + if (event.threadRootId === receipt.data.thread_id) { + // If the receipt and event agree on the thread ID, the receipt + // is valid. + return true; + } + } + + // The receipt thread ID disagrees with the event thread ID. There are 2 + // possibilities: + // + // 1. The event moved to a different thread after the receipt was + // created. This can happen if the event was redacted because that + // moves it to the main timeline. + // + // 2. There is a bug somewhere - either we put the event into the wrong + // thread, or someone sent an incorrect receipt. + // + // In many cases, we won't get here because the call to findEventById + // would have already returned null. We include this check to cover + // cases when `this` is a room, meaning findEventById will find events + // in any thread, and to be defensive against unforeseen code paths. + _logger.logger.warn(`Ignoring receipt because its thread_id (${receipt.data.thread_id}) disagrees ` + `with the thread root (${event.threadRootId}) of the referenced event ` + `(event ID = ${receipt.eventId})`); + + // This receipt is not "valid" because it disagrees with us about what + // thread the event is in. We want to pretend it doesn't exist. + return false; + } + getLatestReceipt(userId, ignoreSynthesized) { + var _ref, _ref2; + // XXX: This is very very ugly and I hope I won't have to ever add a new + // receipt type here again. IMHO this should be done by the server in + // some more intelligent manner or the client should just use timestamps + + const publicReadReceipt = this.getReadReceiptForUserId(userId, ignoreSynthesized, _read_receipts.ReceiptType.Read); + const privateReadReceipt = this.getReadReceiptForUserId(userId, ignoreSynthesized, _read_receipts.ReceiptType.ReadPrivate); + + // If we have both, compare them + let comparison; + if (publicReadReceipt !== null && publicReadReceipt !== void 0 && publicReadReceipt.eventId && privateReadReceipt !== null && privateReadReceipt !== void 0 && privateReadReceipt.eventId) { + comparison = this.compareReceipts(publicReadReceipt, privateReadReceipt); + } + + // The public receipt is more likely to drift out of date so the private + // one has precedence + if (!comparison) return (_ref = privateReadReceipt !== null && privateReadReceipt !== void 0 ? privateReadReceipt : publicReadReceipt) !== null && _ref !== void 0 ? _ref : null; + + // If public read receipt is older, return the private one + return (_ref2 = comparison < 0 ? privateReadReceipt : publicReadReceipt) !== null && _ref2 !== void 0 ? _ref2 : null; + } + addReceiptToStructure(eventId, receiptType, userId, receipt, synthetic) { + var _pair$ReceiptPairSynt2, _pair$ReceiptPairSynt3; + const receiptTypesMap = this.receipts.getOrCreate(receiptType); + let pair = receiptTypesMap.get(userId); + if (!pair) { + pair = [null, null]; + receiptTypesMap.set(userId, pair); + } + let existingReceipt = pair[ReceiptPairRealIndex]; + if (synthetic) { + var _pair$ReceiptPairSynt; + existingReceipt = (_pair$ReceiptPairSynt = pair[ReceiptPairSyntheticIndex]) !== null && _pair$ReceiptPairSynt !== void 0 ? _pair$ReceiptPairSynt : pair[ReceiptPairRealIndex]; + } + const wrappedReceipt = { + eventId, + data: receipt + }; + if (existingReceipt) { + // We only want to add this receipt if we think it is later than the one we already have. + // This is managed server-side, but because we synthesize RRs locally we have to do it here too. + const ordering = this.compareReceipts(existingReceipt, wrappedReceipt); + if (ordering >= 0) { + return; + } + } + const realReceipt = synthetic ? pair[ReceiptPairRealIndex] : wrappedReceipt; + const syntheticReceipt = synthetic ? wrappedReceipt : pair[ReceiptPairSyntheticIndex]; + let ordering = null; + if (realReceipt && syntheticReceipt) { + ordering = this.getUnfilteredTimelineSet().compareEventOrdering(realReceipt.eventId, syntheticReceipt.eventId); + } + const preferSynthetic = ordering === null || ordering < 0; + + // we don't bother caching just real receipts by event ID as there's nothing that would read it. + // Take the current cached receipt before we overwrite the pair elements. + const cachedReceipt = (_pair$ReceiptPairSynt2 = pair[ReceiptPairSyntheticIndex]) !== null && _pair$ReceiptPairSynt2 !== void 0 ? _pair$ReceiptPairSynt2 : pair[ReceiptPairRealIndex]; + if (synthetic && preferSynthetic) { + pair[ReceiptPairSyntheticIndex] = wrappedReceipt; + } else if (!synthetic) { + pair[ReceiptPairRealIndex] = wrappedReceipt; + if (!preferSynthetic) { + pair[ReceiptPairSyntheticIndex] = null; + } + } + const newCachedReceipt = (_pair$ReceiptPairSynt3 = pair[ReceiptPairSyntheticIndex]) !== null && _pair$ReceiptPairSynt3 !== void 0 ? _pair$ReceiptPairSynt3 : pair[ReceiptPairRealIndex]; + if (cachedReceipt === newCachedReceipt) return; + + // clean up any previous cache entry + if (cachedReceipt && this.receiptCacheByEventId.get(cachedReceipt.eventId)) { + const previousEventId = cachedReceipt.eventId; + // Remove the receipt we're about to clobber out of existence from the cache + this.receiptCacheByEventId.set(previousEventId, this.receiptCacheByEventId.get(previousEventId).filter(r => { + return r.type !== receiptType || r.userId !== userId; + })); + if (this.receiptCacheByEventId.get(previousEventId).length < 1) { + this.receiptCacheByEventId.delete(previousEventId); // clean up the cache keys + } + } + + // cache the new one + if (!this.receiptCacheByEventId.get(eventId)) { + this.receiptCacheByEventId.set(eventId, []); + } + this.receiptCacheByEventId.get(eventId).push({ + userId: userId, + type: receiptType, + data: receipt + }); + } + + /** + * Get a list of receipts for the given event. + * @param event - the event to get receipts for + * @returns A list of receipts with a userId, type and data keys or + * an empty list. + */ + getReceiptsForEvent(event) { + return this.receiptCacheByEventId.get(event.getId()) || []; + } + + /** + * Look in this room/thread's timeline to find an event. If `this` is a + * room, we look in all threads, but if `this` is a thread, we look only + * inside this thread. + */ + + /** + * This issue should also be addressed on synapse's side and is tracked as part + * of https://github.com/matrix-org/synapse/issues/14837 + * + * Retrieves the read receipt for the logged in user and checks if it matches + * the last event in the room and whether that event originated from the logged + * in user. + * Under those conditions we can consider the context as read. This is useful + * because we never send read receipts against our own events + * @param userId - the logged in user + */ + fixupNotifications(userId) { + const receipt = this.getReadReceiptForUserId(userId, false); + const lastEvent = this.timeline[this.timeline.length - 1]; + if (lastEvent && (receipt === null || receipt === void 0 ? void 0 : receipt.eventId) === lastEvent.getId() && userId === lastEvent.getSender()) { + this.setUnread(_room.NotificationCountType.Total, 0); + this.setUnread(_room.NotificationCountType.Highlight, 0); + } + } + + /** + * Add a temporary local-echo receipt to the room to reflect in the + * client the fact that we've sent one. + * @param userId - The user ID if the receipt sender + * @param e - The event that is to be acknowledged + * @param receiptType - The type of receipt + * @param unthreaded - the receipt is unthreaded + */ + addLocalEchoReceipt(userId, e, receiptType, unthreaded = false) { + this.addReceipt(synthesizeReceipt(userId, e, receiptType, unthreaded), true); + } + + /** + * Get a list of user IDs who have read up to the given event. + * @param event - the event to get read receipts for. + * @returns A list of user IDs. + */ + getUsersReadUpTo(event) { + return this.getReceiptsForEvent(event).filter(function (receipt) { + return (0, _utils.isSupportedReceiptType)(receipt.type); + }).map(function (receipt) { + return receipt.userId; + }); + } + + /** + * Determines if the given user has read a particular event ID with the known + * history of the room. This is not a definitive check as it relies only on + * what is available to the room at the time of execution. + * @param userId - The user ID to check the read state of. + * @param eventId - The event ID to check if the user read. + * @returns True if the user has read the event, false otherwise. + */ + + /** + * Returns the most recent unthreaded receipt for a given user + * @param userId - the MxID of the User + * @returns an unthreaded Receipt. Can be undefined if receipts have been disabled + * or a user chooses to use private read receipts (or we have simply not received + * a receipt from this user yet). + * + * @deprecated use `hasUserReadEvent` or `getEventReadUpTo` instead + */ +} +exports.ReadReceipt = ReadReceipt; +//# sourceMappingURL=read-receipt.js.map + +/***/ }), + +/***/ 4061: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RelationsContainer = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _relations = __nccwpck_require__(7920); +var _event = __nccwpck_require__(9564); +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +class RelationsContainer { + constructor(client, room) { + // A tree of objects to access a set of related children for an event, as in: + // this.relations.get(parentEventId).get(relationType).get(relationEventType) + (0, _defineProperty2.default)(this, "relations", new Map()); + this.client = client; + this.room = room; + } + + /** + * Get a collection of child events to a given event in this timeline set. + * + * @param eventId - The ID of the event that you'd like to access child events for. + * For example, with annotations, this would be the ID of the event being annotated. + * @param relationType - The type of relationship involved, such as "m.annotation", "m.reference", "m.replace", etc. + * @param eventType - The relation event's type, such as "m.reaction", etc. + * @throws If `eventId, relationType or eventType` + * are not valid. + * + * @returns + * A container for relation events or undefined if there are no relation events for + * the relationType. + */ + getChildEventsForEvent(eventId, relationType, eventType) { + var _this$relations$get; + return (_this$relations$get = this.relations.get(eventId)) === null || _this$relations$get === void 0 || (_this$relations$get = _this$relations$get.get(relationType)) === null || _this$relations$get === void 0 ? void 0 : _this$relations$get.get(eventType); + } + getAllChildEventsForEvent(parentEventId) { + var _this$relations$get2; + const relationsForEvent = (_this$relations$get2 = this.relations.get(parentEventId)) !== null && _this$relations$get2 !== void 0 ? _this$relations$get2 : new Map(); + const events = []; + for (const relationsRecord of relationsForEvent.values()) { + for (const relations of relationsRecord.values()) { + events.push(...relations.getRelations()); + } + } + return events; + } + + /** + * Set an event as the target event if any Relations exist for it already. + * Child events can point to other child events as their parent, so this method may be + * called for events which are also logically child events. + * + * @param event - The event to check as relation target. + */ + aggregateParentEvent(event) { + const relationsForEvent = this.relations.get(event.getId()); + if (!relationsForEvent) return; + for (const relationsWithRelType of relationsForEvent.values()) { + for (const relationsWithEventType of relationsWithRelType.values()) { + relationsWithEventType.setTargetEvent(event); + } + } + } + + /** + * Add relation events to the relevant relation collection. + * + * @param event - The new child event to be aggregated. + * @param timelineSet - The event timeline set within which to search for the related event if any. + */ + aggregateChildEvent(event, timelineSet) { + if (event.isRedacted() || event.status === _event.EventStatus.CANCELLED) { + return; + } + const relation = event.getRelation(); + if (!relation) return; + const onEventDecrypted = () => { + if (event.isDecryptionFailure()) { + // This could for example happen if the encryption keys are not yet available. + // The event may still be decrypted later. Register the listener again. + event.once(_event.MatrixEventEvent.Decrypted, onEventDecrypted); + return; + } + this.aggregateChildEvent(event, timelineSet); + }; + + // If the event is currently encrypted, wait until it has been decrypted. + if (event.isBeingDecrypted() || event.shouldAttemptDecryption()) { + event.once(_event.MatrixEventEvent.Decrypted, onEventDecrypted); + return; + } + const { + event_id: relatesToEventId, + rel_type: relationType + } = relation; + const eventType = event.getType(); + let relationsForEvent = this.relations.get(relatesToEventId); + if (!relationsForEvent) { + relationsForEvent = new Map(); + this.relations.set(relatesToEventId, relationsForEvent); + } + let relationsWithRelType = relationsForEvent.get(relationType); + if (!relationsWithRelType) { + relationsWithRelType = new Map(); + relationsForEvent.set(relationType, relationsWithRelType); + } + let relationsWithEventType = relationsWithRelType.get(eventType); + if (!relationsWithEventType) { + var _this$room, _ref, _timelineSet$findEven; + relationsWithEventType = new _relations.Relations(relationType, eventType, this.client); + relationsWithRelType.set(eventType, relationsWithEventType); + const room = (_this$room = this.room) !== null && _this$room !== void 0 ? _this$room : timelineSet === null || timelineSet === void 0 ? void 0 : timelineSet.room; + const relatesToEvent = (_ref = (_timelineSet$findEven = timelineSet === null || timelineSet === void 0 ? void 0 : timelineSet.findEventById(relatesToEventId)) !== null && _timelineSet$findEven !== void 0 ? _timelineSet$findEven : room === null || room === void 0 ? void 0 : room.findEventById(relatesToEventId)) !== null && _ref !== void 0 ? _ref : room === null || room === void 0 ? void 0 : room.getPendingEvent(relatesToEventId); + if (relatesToEvent) { + relationsWithEventType.setTargetEvent(relatesToEvent); + } + } + relationsWithEventType.addEvent(event); + } +} +exports.RelationsContainer = RelationsContainer; +//# sourceMappingURL=relations-container.js.map /***/ }), /***/ 7920: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Relations = void 0; - -var _defineProperty2 = _interopRequireDefault(__webpack_require__(3561)); - -var _events = __webpack_require__(8614); - -var _event = __webpack_require__(9564); - +exports.RelationsEvent = exports.Relations = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _event = __nccwpck_require__(9564); +var _logger = __nccwpck_require__(3854); +var _event2 = __nccwpck_require__(7487); +var _typedEventEmitter = __nccwpck_require__(7150); +var _room = __nccwpck_require__(7688); /* -Copyright 2019 New Vector Ltd +Copyright 2019, 2021, 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -55271,6 +168943,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +let RelationsEvent = exports.RelationsEvent = /*#__PURE__*/function (RelationsEvent) { + RelationsEvent["Add"] = "Relations.add"; + RelationsEvent["Remove"] = "Relations.remove"; + RelationsEvent["Redaction"] = "Relations.redaction"; + return RelationsEvent; +}({}); +const matchesEventType = (eventType, targetEventType, altTargetEventTypes = []) => [targetEventType, ...altTargetEventTypes].includes(eventType); /** * A container for relation events that supports easy access to common ways of @@ -55280,151 +168959,129 @@ limitations under the License. * The typical way to get one of these containers is via * EventTimelineSet#getRelationsForEvent. */ -class Relations extends _events.EventEmitter { +class Relations extends _typedEventEmitter.TypedEventEmitter { /** - * @param {String} relationType - * The type of relation involved, such as "m.annotation", "m.reference", - * "m.replace", etc. - * @param {String} eventType - * The relation event's type, such as "m.reaction", etc. - * @param {?Room} room - * Room for this container. May be null for non-room cases, such as the - * notification timeline. + * @param relationType - The type of relation involved, such as "m.annotation", "m.reference", "m.replace", etc. + * @param eventType - The relation event's type, such as "m.reaction", etc. + * @param client - The client which created this instance. For backwards compatibility also accepts a Room. + * @param altEventTypes - alt event types for relation events, for example to support unstable prefixed event types */ - constructor(relationType, eventType, room) { + constructor(relationType, eventType, client, altEventTypes) { super(); - (0, _defineProperty2.default)(this, "_onEventStatus", (event, status) => { + (0, _defineProperty2.default)(this, "relationEventIds", new Set()); + (0, _defineProperty2.default)(this, "relations", new Set()); + (0, _defineProperty2.default)(this, "annotationsByKey", {}); + (0, _defineProperty2.default)(this, "annotationsBySender", {}); + (0, _defineProperty2.default)(this, "sortedAnnotationsByKey", []); + (0, _defineProperty2.default)(this, "targetEvent", null); + (0, _defineProperty2.default)(this, "creationEmitted", false); + /** + * Listens for event status changes to remove cancelled events. + * + * @param event - The event whose status has changed + * @param status - The new status + */ + (0, _defineProperty2.default)(this, "onEventStatus", (event, status) => { if (!event.isSending()) { // Sending is done, so we don't need to listen anymore - event.removeListener("Event.status", this._onEventStatus); + event.removeListener(_event.MatrixEventEvent.Status, this.onEventStatus); return; } - if (status !== _event.EventStatus.CANCELLED) { return; - } // Event was cancelled, remove from the collection - - - event.removeListener("Event.status", this._onEventStatus); - - this._removeEvent(event); + } + // Event was cancelled, remove from the collection + event.removeListener(_event.MatrixEventEvent.Status, this.onEventStatus); + this.removeEvent(event); }); - (0, _defineProperty2.default)(this, "_onBeforeRedaction", redactedEvent => { - if (!this._relations.has(redactedEvent)) { + /** + * For relations that have been redacted, we want to remove them from + * aggregation data sets and emit an update event. + * + * To do so, we listen for `Event.beforeRedaction`, which happens: + * - after the server accepted the redaction and remote echoed back to us + * - before the original event has been marked redacted in the client + * + * @param redactedEvent - The original relation event that is about to be redacted. + */ + (0, _defineProperty2.default)(this, "onBeforeRedaction", async redactedEvent => { + if (!this.relations.has(redactedEvent)) { return; } - - this._relations.delete(redactedEvent); - - if (this.relationType === "m.annotation") { + this.relations.delete(redactedEvent); + if (this.relationType === _event2.RelationType.Annotation) { // Remove the redacted annotation from aggregation by key - this._removeAnnotationFromAggregation(redactedEvent); - } else if (this.relationType === "m.replace" && this._targetEvent) { - this._targetEvent.makeReplaced(this.getLastReplacement()); + this.removeAnnotationFromAggregation(redactedEvent); + } else if (this.relationType === _event2.RelationType.Replace && this.targetEvent && !this.targetEvent.isState()) { + const lastReplacement = await this.getLastReplacement(); + this.targetEvent.makeReplaced(lastReplacement); } - - redactedEvent.removeListener("Event.beforeRedaction", this._onBeforeRedaction); - this.emit("Relations.redaction", redactedEvent); + redactedEvent.removeListener(_event.MatrixEventEvent.BeforeRedaction, this.onBeforeRedaction); + this.emit(RelationsEvent.Redaction, redactedEvent); }); this.relationType = relationType; this.eventType = eventType; - this._relations = new Set(); - this._annotationsByKey = {}; - this._annotationsBySender = {}; - this._sortedAnnotationsByKey = []; - this._targetEvent = null; + this.altEventTypes = altEventTypes; + this.client = client instanceof _room.Room ? client.client : client; } + /** * Add relation events to this collection. * - * @param {MatrixEvent} event - * The new relation event to be added. + * @param event - The new relation event to be added. */ - - - addEvent(event) { - if (this._relations.has(event)) { + async addEvent(event) { + if (this.relationEventIds.has(event.getId())) { return; } - const relation = event.getRelation(); - if (!relation) { - console.error("Event must have relation info"); + _logger.logger.error("Event must have relation info"); return; } - const relationType = relation.rel_type; const eventType = event.getType(); - - if (this.relationType !== relationType || this.eventType !== eventType) { - console.error("Event relation info doesn't match this container"); + if (this.relationType !== relationType || !matchesEventType(eventType, this.eventType, this.altEventTypes)) { + _logger.logger.error("Event relation info doesn't match this container"); return; - } // If the event is in the process of being sent, listen for cancellation + } + + // If the event is in the process of being sent, listen for cancellation // so we can remove the event from the collection. - - if (event.isSending()) { - event.on("Event.status", this._onEventStatus); + event.on(_event.MatrixEventEvent.Status, this.onEventStatus); } - - this._relations.add(event); - - if (this.relationType === "m.annotation") { - this._addAnnotationToAggregation(event); - } else if (this.relationType === "m.replace" && this._targetEvent) { - this._targetEvent.makeReplaced(this.getLastReplacement()); + this.relations.add(event); + this.relationEventIds.add(event.getId()); + if (this.relationType === _event2.RelationType.Annotation) { + this.addAnnotationToAggregation(event); + } else if (this.relationType === _event2.RelationType.Replace && this.targetEvent && !this.targetEvent.isState()) { + const lastReplacement = await this.getLastReplacement(); + this.targetEvent.makeReplaced(lastReplacement); } - - event.on("Event.beforeRedaction", this._onBeforeRedaction); - this.emit("Relations.add", event); + event.on(_event.MatrixEventEvent.BeforeRedaction, this.onBeforeRedaction); + this.emit(RelationsEvent.Add, event); + this.maybeEmitCreated(); } + /** * Remove relation event from this collection. * - * @param {MatrixEvent} event - * The relation event to remove. + * @param event - The relation event to remove. */ - - - _removeEvent(event) { - if (!this._relations.has(event)) { + async removeEvent(event) { + if (!this.relations.has(event)) { return; } - - const relation = event.getRelation(); - - if (!relation) { - console.error("Event must have relation info"); - return; + this.relations.delete(event); + if (this.relationType === _event2.RelationType.Annotation) { + this.removeAnnotationFromAggregation(event); + } else if (this.relationType === _event2.RelationType.Replace && this.targetEvent && !this.targetEvent.isState()) { + const lastReplacement = await this.getLastReplacement(); + this.targetEvent.makeReplaced(lastReplacement); } - - const relationType = relation.rel_type; - const eventType = event.getType(); - - if (this.relationType !== relationType || this.eventType !== eventType) { - console.error("Event relation info doesn't match this container"); - return; - } - - this._relations.delete(event); - - if (this.relationType === "m.annotation") { - this._removeAnnotationFromAggregation(event); - } else if (this.relationType === "m.replace" && this._targetEvent) { - this._targetEvent.makeReplaced(this.getLastReplacement()); - } - - this.emit("Relations.remove", event); + this.emit(RelationsEvent.Remove, event); } - /** - * Listens for event status changes to remove cancelled events. - * - * @param {MatrixEvent} event The event whose status has changed - * @param {EventStatus} status The new status - */ - - /** * Get all relation events in this collection. * @@ -55432,222 +169089,544 @@ class Relations extends _events.EventEmitter { * won't match timeline order in the case of scrollback. * TODO: Tweak `addEvent` to insert correctly for scrollback. * - * @return {Array} * Relation events in insertion order. */ getRelations() { - return [...this._relations]; + return [...this.relations]; } - - _addAnnotationToAggregation(event) { + addAnnotationToAggregation(event) { + var _event$getRelation; const { key - } = event.getRelation(); - - if (!key) { - return; - } - - let eventsForKey = this._annotationsByKey[key]; - + } = (_event$getRelation = event.getRelation()) !== null && _event$getRelation !== void 0 ? _event$getRelation : {}; + if (!key) return; + let eventsForKey = this.annotationsByKey[key]; if (!eventsForKey) { - eventsForKey = this._annotationsByKey[key] = new Set(); - - this._sortedAnnotationsByKey.push([key, eventsForKey]); - } // Add the new event to the set for this key - - - eventsForKey.add(event); // Re-sort the [key, events] pairs in descending order of event count - - this._sortedAnnotationsByKey.sort((a, b) => { + eventsForKey = this.annotationsByKey[key] = new Set(); + this.sortedAnnotationsByKey.push([key, eventsForKey]); + } + // Add the new event to the set for this key + eventsForKey.add(event); + // Re-sort the [key, events] pairs in descending order of event count + this.sortedAnnotationsByKey.sort((a, b) => { const aEvents = a[1]; const bEvents = b[1]; return bEvents.size - aEvents.size; }); - const sender = event.getSender(); - let eventsFromSender = this._annotationsBySender[sender]; - + let eventsFromSender = this.annotationsBySender[sender]; if (!eventsFromSender) { - eventsFromSender = this._annotationsBySender[sender] = new Set(); - } // Add the new event to the set for this sender - - + eventsFromSender = this.annotationsBySender[sender] = new Set(); + } + // Add the new event to the set for this sender eventsFromSender.add(event); } - - _removeAnnotationFromAggregation(event) { + removeAnnotationFromAggregation(event) { + var _event$getRelation2; const { key - } = event.getRelation(); - - if (!key) { - return; - } - - const eventsForKey = this._annotationsByKey[key]; - + } = (_event$getRelation2 = event.getRelation()) !== null && _event$getRelation2 !== void 0 ? _event$getRelation2 : {}; + if (!key) return; + const eventsForKey = this.annotationsByKey[key]; if (eventsForKey) { - eventsForKey.delete(event); // Re-sort the [key, events] pairs in descending order of event count + eventsForKey.delete(event); - this._sortedAnnotationsByKey.sort((a, b) => { + // Re-sort the [key, events] pairs in descending order of event count + this.sortedAnnotationsByKey.sort((a, b) => { const aEvents = a[1]; const bEvents = b[1]; return bEvents.size - aEvents.size; }); } - const sender = event.getSender(); - const eventsFromSender = this._annotationsBySender[sender]; - + const eventsFromSender = this.annotationsBySender[sender]; if (eventsFromSender) { eventsFromSender.delete(event); } } - /** - * For relations that have been redacted, we want to remove them from - * aggregation data sets and emit an update event. - * - * To do so, we listen for `Event.beforeRedaction`, which happens: - * - after the server accepted the redaction and remote echoed back to us - * - before the original event has been marked redacted in the client - * - * @param {MatrixEvent} redactedEvent - * The original relation event that is about to be redacted. - */ - - /** * Get all events in this collection grouped by key and sorted by descending * event count in each group. * * This is currently only supported for the annotation relation type. * - * @return {Array} * An array of [key, events] pairs sorted by descending event count. * The events are stored in a Set (which preserves insertion order). */ getSortedAnnotationsByKey() { - if (this.relationType !== "m.annotation") { + if (this.relationType !== _event2.RelationType.Annotation) { // Other relation types are not grouped currently. return null; } - - return this._sortedAnnotationsByKey; + return this.sortedAnnotationsByKey; } + /** * Get all events in this collection grouped by sender. * * This is currently only supported for the annotation relation type. * - * @return {Object} * An object with each relation sender as a key and the matching Set of * events for that sender as a value. */ - - getAnnotationsBySender() { - if (this.relationType !== "m.annotation") { + if (this.relationType !== _event2.RelationType.Annotation) { // Other relation types are not grouped currently. return null; } - - return this._annotationsBySender; + return this.annotationsBySender; } + /** * Returns the most recent (and allowed) m.replace relation, if any. * * This is currently only supported for the m.replace relation type, * once the target event is known, see `addEvent`. - * - * @return {MatrixEvent?} */ - - - getLastReplacement() { - if (this.relationType !== "m.replace") { + async getLastReplacement() { + if (this.relationType !== _event2.RelationType.Replace) { // Aggregating on last only makes sense for this relation type return null; } - - if (!this._targetEvent) { + if (!this.targetEvent) { // Don't know which replacements to accept yet. // This method shouldn't be called before the original // event is known anyway. return null; - } // the all-knowning server tells us that the event at some point had + } + + // the all-knowning server tells us that the event at some point had // this timestamp for its replacement, so any following replacement should definitely not be less - - - const replaceRelation = this._targetEvent.getServerAggregatedRelation("m.replace"); - - const minTs = replaceRelation && replaceRelation.origin_server_ts; - return this.getRelations().reduce((last, event) => { - if (event.getSender() !== this._targetEvent.getSender()) { + const replaceRelation = this.targetEvent.getServerAggregatedRelation(_event2.RelationType.Replace); + const minTs = replaceRelation === null || replaceRelation === void 0 ? void 0 : replaceRelation.origin_server_ts; + const lastReplacement = this.getRelations().reduce((last, event) => { + if (event.getSender() !== this.targetEvent.getSender()) { return last; } - if (minTs && minTs > event.getTs()) { return last; } - if (last && last.getTs() > event.getTs()) { return last; } - return event; }, null); + if (lastReplacement !== null && lastReplacement !== void 0 && lastReplacement.shouldAttemptDecryption() && this.client.isCryptoEnabled()) { + await lastReplacement.attemptDecryption(this.client.crypto); + } else if (lastReplacement !== null && lastReplacement !== void 0 && lastReplacement.isBeingDecrypted()) { + await lastReplacement.getDecryptionPromise(); + } + return lastReplacement; } + /* - * @param {MatrixEvent} targetEvent the event the relations are related to. + * @param targetEvent - the event the relations are related to. */ - - - setTargetEvent(event) { - if (this._targetEvent) { + async setTargetEvent(event) { + if (this.targetEvent) { return; } - - this._targetEvent = event; - - if (this.relationType === "m.replace") { - const replacement = this.getLastReplacement(); // this is the initial update, so only call it if we already have something + this.targetEvent = event; + if (this.relationType === _event2.RelationType.Replace && !this.targetEvent.isState()) { + const replacement = await this.getLastReplacement(); + // this is the initial update, so only call it if we already have something // to not emit Event.replaced needlessly - if (replacement) { - this._targetEvent.makeReplaced(replacement); + this.targetEvent.makeReplaced(replacement); } } + this.maybeEmitCreated(); + } + maybeEmitCreated() { + if (this.creationEmitted) { + return; + } + // Only emit we're "created" once we have a target event instance _and_ + // at least one related event. + if (!this.targetEvent || !this.relations.size) { + return; + } + this.creationEmitted = true; + this.targetEvent.emit(_event.MatrixEventEvent.RelationsCreated, this.relationType, this.eventType); } - } - exports.Relations = Relations; +//# sourceMappingURL=relations.js.map /***/ }), /***/ 7024: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RoomMember = RoomMember; - -var _events = __webpack_require__(8614); - -var _contentRepo = __webpack_require__(4233); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - +exports.RoomMemberEvent = exports.RoomMember = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _contentRepo = __nccwpck_require__(4233); +var _utils = __nccwpck_require__(2557); +var _logger = __nccwpck_require__(3854); +var _typedEventEmitter = __nccwpck_require__(7150); +var _event = __nccwpck_require__(7487); +var _membership = __nccwpck_require__(9225); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let RoomMemberEvent = exports.RoomMemberEvent = /*#__PURE__*/function (RoomMemberEvent) { + RoomMemberEvent["Membership"] = "RoomMember.membership"; + RoomMemberEvent["Name"] = "RoomMember.name"; + RoomMemberEvent["PowerLevel"] = "RoomMember.powerLevel"; + RoomMemberEvent["Typing"] = "RoomMember.typing"; + return RoomMemberEvent; +}({}); +class RoomMember extends _typedEventEmitter.TypedEventEmitter { + /** + * Construct a new room member. + * + * @param roomId - The room ID of the member. + * @param userId - The user ID of the member. + */ + constructor(roomId, userId) { + super(); + (0, _defineProperty2.default)(this, "_isOutOfBand", false); + (0, _defineProperty2.default)(this, "modified", -1); + (0, _defineProperty2.default)(this, "requestedProfileInfo", false); + // used by sync.ts + // XXX these should be read-only + /** + * True if the room member is currently typing. + */ + (0, _defineProperty2.default)(this, "typing", false); + /** + * The power level for this room member. + */ + (0, _defineProperty2.default)(this, "powerLevel", 0); + /** + * The normalised power level (0-100) for this room member. + */ + (0, _defineProperty2.default)(this, "powerLevelNorm", 0); + /** + * True if the member's name is disambiguated. + */ + (0, _defineProperty2.default)(this, "disambiguate", false); + /** + * The events describing this RoomMember. + */ + (0, _defineProperty2.default)(this, "events", {}); + this.roomId = roomId; + this.userId = userId; + this.name = userId; + this.rawDisplayName = userId; + this.updateModifiedTime(); + } + + /** + * Mark the member as coming from a channel that is not sync + */ + markOutOfBand() { + this._isOutOfBand = true; + } + + /** + * @returns does the member come from a channel that is not sync? + * This is used to store the member seperately + * from the sync state so it available across browser sessions. + */ + isOutOfBand() { + return this._isOutOfBand; + } + + /** + * Update this room member's membership event. May fire "RoomMember.name" if + * this event updates this member's name. + * @param event - The `m.room.member` event + * @param roomState - Optional. The room state to take into account + * when calculating (e.g. for disambiguating users with the same name). + * + * @remarks + * Fires {@link RoomMemberEvent.Name} + * Fires {@link RoomMemberEvent.Membership} + */ + setMembershipEvent(event, roomState) { + var _event$getDirectional, _event$getDirectional2; + const displayName = (_event$getDirectional = event.getDirectionalContent().displayname) !== null && _event$getDirectional !== void 0 ? _event$getDirectional : ""; + if (event.getType() !== _event.EventType.RoomMember) { + return; + } + this._isOutOfBand = false; + this.events.member = event; + const oldMembership = this.membership; + this.membership = event.getDirectionalContent().membership; + if (this.membership === undefined) { + // logging to diagnose https://github.com/vector-im/element-web/issues/20962 + // (logs event content, although only of membership events) + _logger.logger.trace(`membership event with membership undefined (forwardLooking: ${event.forwardLooking})!`, event.getContent(), `prevcontent is `, event.getPrevContent()); + } + this.disambiguate = shouldDisambiguate(this.userId, displayName, roomState); + const oldName = this.name; + this.name = calculateDisplayName(this.userId, displayName, this.disambiguate); + + // not quite raw: we strip direction override chars so it can safely be inserted into + // blocks of text without breaking the text direction + this.rawDisplayName = (0, _utils.removeDirectionOverrideChars)((_event$getDirectional2 = event.getDirectionalContent().displayname) !== null && _event$getDirectional2 !== void 0 ? _event$getDirectional2 : ""); + if (!this.rawDisplayName || !(0, _utils.removeHiddenChars)(this.rawDisplayName)) { + this.rawDisplayName = this.userId; + } + if (oldMembership !== this.membership) { + this.updateModifiedTime(); + this.emit(RoomMemberEvent.Membership, event, this, oldMembership); + } + if (oldName !== this.name) { + this.updateModifiedTime(); + this.emit(RoomMemberEvent.Name, event, this, oldName); + } + } + + /** + * Update this room member's power level event. May fire + * "RoomMember.powerLevel" if this event updates this member's power levels. + * @param powerLevelEvent - The `m.room.power_levels` event + * + * @remarks + * Fires {@link RoomMemberEvent.PowerLevel} + */ + setPowerLevelEvent(powerLevelEvent) { + if (powerLevelEvent.getType() !== _event.EventType.RoomPowerLevels || powerLevelEvent.getStateKey() !== "") { + return; + } + const evContent = powerLevelEvent.getDirectionalContent(); + let maxLevel = evContent.users_default || 0; + const users = evContent.users || {}; + Object.values(users).forEach(lvl => { + maxLevel = Math.max(maxLevel, lvl); + }); + const oldPowerLevel = this.powerLevel; + const oldPowerLevelNorm = this.powerLevelNorm; + if (users[this.userId] !== undefined && Number.isInteger(users[this.userId])) { + this.powerLevel = users[this.userId]; + } else if (evContent.users_default !== undefined) { + this.powerLevel = evContent.users_default; + } else { + this.powerLevel = 0; + } + this.powerLevelNorm = 0; + if (maxLevel > 0) { + this.powerLevelNorm = this.powerLevel * 100 / maxLevel; + } + + // emit for changes in powerLevelNorm as well (since the app will need to + // redraw everyone's level if the max has changed) + if (oldPowerLevel !== this.powerLevel || oldPowerLevelNorm !== this.powerLevelNorm) { + this.updateModifiedTime(); + this.emit(RoomMemberEvent.PowerLevel, powerLevelEvent, this); + } + } + + /** + * Update this room member's typing event. May fire "RoomMember.typing" if + * this event changes this member's typing state. + * @param event - The typing event + * + * @remarks + * Fires {@link RoomMemberEvent.Typing} + */ + setTypingEvent(event) { + if (event.getType() !== "m.typing") { + return; + } + const oldTyping = this.typing; + this.typing = false; + const typingList = event.getContent().user_ids; + if (!Array.isArray(typingList)) { + // malformed event :/ bail early. TODO: whine? + return; + } + if (typingList.indexOf(this.userId) !== -1) { + this.typing = true; + } + if (oldTyping !== this.typing) { + this.updateModifiedTime(); + this.emit(RoomMemberEvent.Typing, event, this); + } + } + + /** + * Update the last modified time to the current time. + */ + updateModifiedTime() { + this.modified = Date.now(); + } + + /** + * Get the timestamp when this RoomMember was last updated. This timestamp is + * updated when properties on this RoomMember are updated. + * It is updated before firing events. + * @returns The timestamp + */ + getLastModifiedTime() { + return this.modified; + } + isKicked() { + return this.membership === _membership.KnownMembership.Leave && this.events.member !== undefined && this.events.member.getSender() !== this.events.member.getStateKey(); + } + + /** + * If this member was invited with the is_direct flag set, return + * the user that invited this member + * @returns user id of the inviter + */ + getDMInviter() { + // when not available because that room state hasn't been loaded in, + // we don't really know, but more likely to not be a direct chat + if (this.events.member) { + // TODO: persist the is_direct flag on the member as more member events + // come in caused by displayName changes. + + // the is_direct flag is set on the invite member event. + // This is copied on the prev_content section of the join member event + // when the invite is accepted. + + const memberEvent = this.events.member; + let memberContent = memberEvent.getContent(); + let inviteSender = memberEvent.getSender(); + if (memberContent.membership === _membership.KnownMembership.Join) { + memberContent = memberEvent.getPrevContent(); + inviteSender = memberEvent.getUnsigned().prev_sender; + } + if (memberContent.membership === _membership.KnownMembership.Invite && memberContent.is_direct) { + return inviteSender; + } + } + } + + /** + * Get the avatar URL for a room member. + * @param baseUrl - The base homeserver URL See + * {@link MatrixClient#getHomeserverUrl}. + * @param width - The desired width of the thumbnail. + * @param height - The desired height of the thumbnail. + * @param resizeMethod - The thumbnail resize method to use, either + * "crop" or "scale". + * @param allowDefault - (optional) Passing false causes this method to + * return null if the user has no avatar image. Otherwise, a default image URL + * will be returned. Default: true. (Deprecated) + * @param allowDirectLinks - (optional) If true, the avatar URL will be + * returned even if it is a direct hyperlink rather than a matrix content URL. + * If false, any non-matrix content URLs will be ignored. Setting this option to + * true will expose URLs that, if fetched, will leak information about the user + * to anyone who they share a room with. + * @returns the avatar URL or null. + */ + getAvatarUrl(baseUrl, width, height, resizeMethod, allowDefault = true, allowDirectLinks) { + const rawUrl = this.getMxcAvatarUrl(); + if (!rawUrl && !allowDefault) { + return null; + } + const httpUrl = (0, _contentRepo.getHttpUriForMxc)(baseUrl, rawUrl, width, height, resizeMethod, allowDirectLinks); + if (httpUrl) { + return httpUrl; + } + return null; + } + + /** + * get the mxc avatar url, either from a state event, or from a lazily loaded member + * @returns the mxc avatar url + */ + getMxcAvatarUrl() { + if (this.events.member) { + return this.events.member.getDirectionalContent().avatar_url; + } else if (this.user) { + return this.user.avatarUrl; + } + } +} +exports.RoomMember = RoomMember; +const MXID_PATTERN = /@.+:.+/; +const LTR_RTL_PATTERN = /[\u200E\u200F\u202A-\u202F]/; +function shouldDisambiguate(selfUserId, displayName, roomState) { + if (!displayName || displayName === selfUserId) return false; + + // First check if the displayname is something we consider truthy + // after stripping it of zero width characters and padding spaces + if (!(0, _utils.removeHiddenChars)(displayName)) return false; + if (!roomState) return false; + + // Next check if the name contains something that look like a mxid + // If it does, it may be someone trying to impersonate someone else + // Show full mxid in this case + if (MXID_PATTERN.test(displayName)) return true; + + // Also show mxid if the display name contains any LTR/RTL characters as these + // make it very difficult for us to find similar *looking* display names + // E.g "Mark" could be cloned by writing "kraM" but in RTL. + if (LTR_RTL_PATTERN.test(displayName)) return true; + + // Also show mxid if there are other people with the same or similar + // displayname, after hidden character removal. + const userIds = roomState.getUserIdsWithDisplayName(displayName); + if (userIds.some(u => u !== selfUserId)) return true; + return false; +} +function calculateDisplayName(selfUserId, displayName, disambiguate) { + if (!displayName || displayName === selfUserId) return selfUserId; + if (disambiguate) return (0, _utils.removeDirectionOverrideChars)(displayName) + " (" + selfUserId + ")"; + + // First check if the displayname is something we consider truthy + // after stripping it of zero width characters and padding spaces + if (!(0, _utils.removeHiddenChars)(displayName)) return selfUserId; + + // We always strip the direction override characters (LRO and RLO). + // These override the text direction for all subsequent characters + // in the paragraph so if display names contained these, they'd + // need to be wrapped in something to prevent this from leaking out + // (which we can do in HTML but not text) or we'd need to add + // control characters to the string to reset any overrides (eg. + // adding PDF characters at the end). As far as we can see, + // there should be no reason these would be necessary - rtl display + // names should flip into the correct direction automatically based on + // the characters, and you can still embed rtl in ltr or vice versa + // with the embed chars or marker chars. + return (0, _utils.removeDirectionOverrideChars)(displayName); +} +//# sourceMappingURL=room-member.js.map + +/***/ }), + +/***/ 4721: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RoomReceipts = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _read_receipts = __nccwpck_require__(3255); +var _client = __nccwpck_require__(9058); +var _room = __nccwpck_require__(7688); +var _logger = __nccwpck_require__(3854); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -55663,403 +169642,397 @@ limitations under the License. */ /** - * @module models/room-member + * The latest receipts we have for a room. */ +class RoomReceipts { + constructor(room) { + /** + * Look for dangling receipts for the given event ID, + * and add them to the thread of unthread receipts if found. + * @param event - the event to look for + */ + (0, _defineProperty2.default)(this, "onTimelineEvent", event => { + const eventId = event.getId(); + if (!eventId) return; + const danglingReceipts = this.danglingReceipts.remove(eventId); + danglingReceipts === null || danglingReceipts === void 0 || danglingReceipts.forEach(danglingReceipt => { + // The receipt is a thread receipt + if (danglingReceipt.receipt.thread_id) { + this.threadedReceipts.set(danglingReceipt.receipt.thread_id, danglingReceipt.eventId, danglingReceipt.receiptType, danglingReceipt.userId, danglingReceipt.receipt.ts, danglingReceipt.synthetic); + } else { + this.unthreadedReceipts.set(eventId, danglingReceipt.receiptType, danglingReceipt.userId, danglingReceipt.receipt.ts, danglingReceipt.synthetic); + } + }); + }); + this.room = room; + this.threadedReceipts = new ThreadedReceipts(room); + this.unthreadedReceipts = new ReceiptsByUser(room); + this.danglingReceipts = new DanglingReceipts(); + // We listen for timeline events so we can process dangling receipts + room.on(_room.RoomEvent.Timeline, this.onTimelineEvent); + } -/** - * Construct a new room member. - * - * @constructor - * @alias module:models/room-member - * - * @param {string} roomId The room ID of the member. - * @param {string} userId The user ID of the member. - * @prop {string} roomId The room ID for this member. - * @prop {string} userId The user ID of this member. - * @prop {boolean} typing True if the room member is currently typing. - * @prop {string} name The human-readable name for this room member. This will be - * disambiguated with a suffix of " (@user_id:matrix.org)" if another member shares the - * same displayname. - * @prop {string} rawDisplayName The ambiguous displayname of this room member. - * @prop {Number} powerLevel The power level for this room member. - * @prop {Number} powerLevelNorm The normalised power level (0-100) for this - * room member. - * @prop {User} user The User object for this room member, if one exists. - * @prop {string} membership The membership state for this room member e.g. 'join'. - * @prop {Object} events The events describing this RoomMember. - * @prop {MatrixEvent} events.member The m.room.member event for this RoomMember. - */ -function RoomMember(roomId, userId) { - this.roomId = roomId; - this.userId = userId; - this.typing = false; - this.name = userId; - this.rawDisplayName = userId; - this.powerLevel = 0; - this.powerLevelNorm = 0; - this.user = null; - this.membership = null; - this.events = { - member: null - }; - this._isOutOfBand = false; + /** + * Remember the receipt information supplied. For each receipt: + * + * If we don't have the event for this receipt, store it as "dangling" so we + * can process it later. + * + * Otherwise store it per-user in either the threaded store for its + * thread_id, or the unthreaded store if there is no thread_id. + * + * Ignores any receipt that is before an existing receipt for the same user + * (in the same thread, if applicable). "Before" is defined by the + * unfilteredTimelineSet of the room. + */ + add(receiptContent, synthetic) { + /* + Transform this structure: + { + "$EVENTID": { + "m.read|m.read.private": { + "@user:example.org": { + "ts": 1661, + "thread_id": "main|$THREAD_ROOT_ID" // or missing/undefined for an unthreaded receipt + } + } + }, + ... + } + into maps of: + threaded :: threadid :: userId :: ReceiptInfo + unthreaded :: userId :: ReceiptInfo + dangling :: eventId :: DanglingReceipt + */ + for (const [eventId, eventReceipt] of Object.entries(receiptContent)) { + for (const [receiptType, receiptsByUser] of Object.entries(eventReceipt)) { + for (const [userId, receipt] of Object.entries(receiptsByUser)) { + const referencedEvent = this.room.findEventById(eventId); + if (!referencedEvent) { + this.danglingReceipts.add(new DanglingReceipt(eventId, receiptType, userId, receipt, synthetic)); + } else if (receipt.thread_id) { + this.threadedReceipts.set(receipt.thread_id, eventId, receiptType, userId, receipt.ts, synthetic); + } else { + this.unthreadedReceipts.set(eventId, receiptType, userId, receipt.ts, synthetic); + } + } + } + } + } + hasUserReadEvent(userId, eventId) { + const unthreaded = this.unthreadedReceipts.get(userId); + if (unthreaded) { + if (isAfterOrSame(unthreaded.eventId, eventId, this.room)) { + // The unthreaded receipt is after this event, so we have read it. + return true; + } + } + const event = this.room.findEventById(eventId); + if (!event) { + // We don't know whether the user has read it - default to caution and say no. + // This shouldn't really happen and feels like it ought to be an exception: let's + // log a warn for now. + _logger.logger.warn(`hasUserReadEvent event ID ${eventId} not found in room ${this.room.roomId}: this shouldn't happen!`); + return false; + } + const threadId = (0, _client.threadIdForReceipt)(event); + const threaded = this.threadedReceipts.get(threadId, userId); + if (threaded) { + if (isAfterOrSame(threaded.eventId, eventId, this.room)) { + // The threaded receipt is after this event, so we have read it. + return true; + } + } - this._updateModifiedTime(); + // TODO: what if they sent the second-last event in the thread? + if (this.userSentLatestEventInThread(threadId, userId)) { + // The user sent the latest message in this event's thread, so we + // consider everything in the thread to be read. + // + // Note: maybe we don't need this because synthetic receipts should + // do this job for us? + return true; + } + + // Neither of the receipts were after the event, so it's unread. + return false; + } + + /** + * @returns true if the thread with this ID can be found, and the supplied + * user sent the latest message in it. + */ + userSentLatestEventInThread(threadId, userId) { + var _this$room$getThread; + const timeline = threadId === _read_receipts.MAIN_ROOM_TIMELINE ? this.room.getLiveTimeline().getEvents() : (_this$room$getThread = this.room.getThread(threadId)) === null || _this$room$getThread === void 0 ? void 0 : _this$room$getThread.timeline; + return !!(timeline && timeline.length > 0 && timeline[timeline.length - 1].getSender() === userId); + } } -utils.inherits(RoomMember, _events.EventEmitter); +// --- implementation details --- + /** - * Mark the member as coming from a channel that is not sync + * The information "inside" a receipt once it has been stored inside + * RoomReceipts - what eventId it refers to, its type, and its ts. + * + * Does not contain userId or threadId since these are stored as keys of the + * maps in RoomReceipts. */ +exports.RoomReceipts = RoomReceipts; +class ReceiptInfo { + constructor(eventId, receiptType, ts) { + this.eventId = eventId; + this.receiptType = receiptType; + this.ts = ts; + } +} -RoomMember.prototype.markOutOfBand = function () { - this._isOutOfBand = true; -}; /** - * @return {bool} does the member come from a channel that is not sync? - * This is used to store the member seperately - * from the sync state so it available across browser sessions. + * Everything we know about a receipt that is "dangling" because we can't find + * the event to which it refers. */ +class DanglingReceipt { + constructor(eventId, receiptType, userId, receipt, synthetic) { + this.eventId = eventId; + this.receiptType = receiptType; + this.userId = userId; + this.receipt = receipt; + this.synthetic = synthetic; + } +} +class UserReceipts { + /** + * The real receipt for this user. + */ + /** + * The synthetic receipt for this user. If this is defined, it is later than real. + */ -RoomMember.prototype.isOutOfBand = function () { - return this._isOutOfBand; -}; -/** - * Update this room member's membership event. May fire "RoomMember.name" if - * this event updates this member's name. - * @param {MatrixEvent} event The m.room.member event - * @param {RoomState} roomState Optional. The room state to take into account - * when calculating (e.g. for disambiguating users with the same name). - * @fires module:client~MatrixClient#event:"RoomMember.name" - * @fires module:client~MatrixClient#event:"RoomMember.membership" - */ + constructor(room) { + this.room = room; + this.real = undefined; + this.synthetic = undefined; + } + set(synthetic, receiptInfo) { + if (synthetic) { + this.synthetic = receiptInfo; + } else { + this.real = receiptInfo; + } - -RoomMember.prototype.setMembershipEvent = function (event, roomState) { - if (event.getType() !== "m.room.member") { - return; + // Preserve the invariant: synthetic is only defined if it's later than real + if (this.synthetic && this.real) { + if (isAfterOrSame(this.real.eventId, this.synthetic.eventId, this.room)) { + this.synthetic = undefined; + } + } } - this._isOutOfBand = false; - this.events.member = event; - const oldMembership = this.membership; - this.membership = event.getDirectionalContent().membership; - const oldName = this.name; - this.name = calculateDisplayName(this.userId, event.getDirectionalContent().displayname, roomState); - this.rawDisplayName = event.getDirectionalContent().displayname || this.userId; - - if (oldMembership !== this.membership) { - this._updateModifiedTime(); - - this.emit("RoomMember.membership", event, this, oldMembership); + /** + * Return the latest receipt we have - synthetic if we have one (and it's + * later), otherwise real. + */ + get() { + var _this$synthetic; + // Relies on the invariant that synthetic is only defined if it's later than real. + return (_this$synthetic = this.synthetic) !== null && _this$synthetic !== void 0 ? _this$synthetic : this.real; } - if (oldName !== this.name) { - this._updateModifiedTime(); - - this.emit("RoomMember.name", event, this, oldName); + /** + * Return the latest receipt we have of the specified type (synthetic or not). + */ + getByType(synthetic) { + return synthetic ? this.synthetic : this.real; } -}; +} + /** - * Update this room member's power level event. May fire - * "RoomMember.powerLevel" if this event updates this member's power levels. - * @param {MatrixEvent} powerLevelEvent The m.room.power_levels - * event - * @fires module:client~MatrixClient#event:"RoomMember.powerLevel" + * The latest receipt info we have, either for a single thread, or all the + * unthreaded receipts for a room. + * + * userId: ReceiptInfo */ +class ReceiptsByUser { + /** map of userId: UserReceipts */ - -RoomMember.prototype.setPowerLevelEvent = function (powerLevelEvent) { - if (powerLevelEvent.getType() !== "m.room.power_levels") { - return; + constructor(room) { + this.room = room; + this.data = new Map(); } - const evContent = powerLevelEvent.getDirectionalContent(); - let maxLevel = evContent.users_default || 0; - utils.forEach(utils.values(evContent.users), function (lvl) { - maxLevel = Math.max(maxLevel, lvl); - }); - const oldPowerLevel = this.powerLevel; - const oldPowerLevelNorm = this.powerLevelNorm; + /** + * Add the supplied receipt to our structure, if it is not earlier than the + * one we already hold for this user. + */ + set(eventId, receiptType, userId, ts, synthetic) { + const userReceipts = getOrCreate(this.data, userId, () => new UserReceipts(this.room)); + const existingReceipt = userReceipts.getByType(synthetic); + if (existingReceipt && isAfter(existingReceipt.eventId, eventId, this.room)) { + // The new receipt is before the existing one - don't store it. + return; + } - if (evContent.users && evContent.users[this.userId] !== undefined) { - this.powerLevel = evContent.users[this.userId]; - } else if (evContent.users_default !== undefined) { - this.powerLevel = evContent.users_default; + // Possibilities: + // + // 1. there was no existing receipt, or + // 2. the existing receipt was before this one, or + // 3. we were unable to compare the receipts. + // + // In the case of 3 it's difficult to decide what to do, so the + // most-recently-received receipt wins. + // + // Case 3 can only happen if the events for these receipts have + // disappeared, which is quite unlikely since the new one has just been + // checked, and the old one was checked before it was inserted here. + // + // We go ahead and store this receipt (replacing the other if it exists) + userReceipts.set(synthetic, new ReceiptInfo(eventId, receiptType, ts)); + } + + /** + * Find the latest receipt we have for this user. (Note - there is only one + * receipt per user, because we are already inside a specific thread or + * unthreaded list.) + * + * If there is a later synthetic receipt for this user, return that. + * Otherwise, return the real receipt. + * + * @returns the found receipt info, or undefined if we have no receipt for this user. + */ + get(userId) { + var _this$data$get; + return (_this$data$get = this.data.get(userId)) === null || _this$data$get === void 0 ? void 0 : _this$data$get.get(); + } +} + +/** + * The latest threaded receipts we have for a room. + */ +class ThreadedReceipts { + /** map of threadId: ReceiptsByUser */ + + constructor(room) { + this.room = room; + this.data = new Map(); + } + + /** + * Add the supplied receipt to our structure, if it is not earlier than one + * we already hold for this user in this thread. + */ + set(threadId, eventId, receiptType, userId, ts, synthetic) { + const receiptsByUser = getOrCreate(this.data, threadId, () => new ReceiptsByUser(this.room)); + receiptsByUser.set(eventId, receiptType, userId, ts, synthetic); + } + + /** + * Find the latest threaded receipt for the supplied user in the supplied thread. + * + * @returns the found receipt info or undefined if we don't have one. + */ + get(threadId, userId) { + var _this$data$get2; + return (_this$data$get2 = this.data.get(threadId)) === null || _this$data$get2 === void 0 ? void 0 : _this$data$get2.get(userId); + } +} + +/** + * All the receipts that we have received but can't process because we can't + * find the event they refer to. + * + * We hold on to them so we can process them if their event arrives later. + */ +class DanglingReceipts { + constructor() { + /** + * eventId: DanglingReceipt[] + */ + (0, _defineProperty2.default)(this, "data", new Map()); + } + /** + * Remember the supplied dangling receipt. + */ + add(danglingReceipt) { + const danglingReceipts = getOrCreate(this.data, danglingReceipt.eventId, () => []); + danglingReceipts.push(danglingReceipt); + } + + /** + * Remove and return the dangling receipts for the given event ID. + * @param eventId - the event ID to look for + * @returns the found dangling receipts, or undefined if we don't have one. + */ + remove(eventId) { + const danglingReceipts = this.data.get(eventId); + this.data.delete(eventId); + return danglingReceipts; + } +} +function getOrCreate(m, key, createFn) { + const found = m.get(key); + if (found) { + return found; } else { - this.powerLevel = 0; + const created = createFn(); + m.set(key, created); + return created; } - - this.powerLevelNorm = 0; - - if (maxLevel > 0) { - this.powerLevelNorm = this.powerLevel * 100 / maxLevel; - } // emit for changes in powerLevelNorm as well (since the app will need to - // redraw everyone's level if the max has changed) - - - if (oldPowerLevel !== this.powerLevel || oldPowerLevelNorm !== this.powerLevelNorm) { - this._updateModifiedTime(); - - this.emit("RoomMember.powerLevel", powerLevelEvent, this); - } -}; -/** - * Update this room member's typing event. May fire "RoomMember.typing" if - * this event changes this member's typing state. - * @param {MatrixEvent} event The typing event - * @fires module:client~MatrixClient#event:"RoomMember.typing" - */ - - -RoomMember.prototype.setTypingEvent = function (event) { - if (event.getType() !== "m.typing") { - return; - } - - const oldTyping = this.typing; - this.typing = false; - const typingList = event.getContent().user_ids; - - if (!utils.isArray(typingList)) { - // malformed event :/ bail early. TODO: whine? - return; - } - - if (typingList.indexOf(this.userId) !== -1) { - this.typing = true; - } - - if (oldTyping !== this.typing) { - this._updateModifiedTime(); - - this.emit("RoomMember.typing", event, this); - } -}; -/** - * Update the last modified time to the current time. - */ - - -RoomMember.prototype._updateModifiedTime = function () { - this._modified = Date.now(); -}; -/** - * Get the timestamp when this RoomMember was last updated. This timestamp is - * updated when properties on this RoomMember are updated. - * It is updated before firing events. - * @return {number} The timestamp - */ - - -RoomMember.prototype.getLastModifiedTime = function () { - return this._modified; -}; - -RoomMember.prototype.isKicked = function () { - return this.membership === "leave" && this.events.member.getSender() !== this.events.member.getStateKey(); -}; -/** - * If this member was invited with the is_direct flag set, return - * the user that invited this member - * @return {string} user id of the inviter - */ - - -RoomMember.prototype.getDMInviter = function () { - // when not available because that room state hasn't been loaded in, - // we don't really know, but more likely to not be a direct chat - if (this.events.member) { - // TODO: persist the is_direct flag on the member as more member events - // come in caused by displayName changes. - // the is_direct flag is set on the invite member event. - // This is copied on the prev_content section of the join member event - // when the invite is accepted. - const memberEvent = this.events.member; - let memberContent = memberEvent.getContent(); - let inviteSender = memberEvent.getSender(); - - if (memberContent.membership === "join") { - memberContent = memberEvent.getPrevContent(); - inviteSender = memberEvent.getUnsigned().prev_sender; - } - - if (memberContent.membership === "invite" && memberContent.is_direct) { - return inviteSender; - } - } -}; -/** - * Get the avatar URL for a room member. - * @param {string} baseUrl The base homeserver URL See - * {@link module:client~MatrixClient#getHomeserverUrl}. - * @param {Number} width The desired width of the thumbnail. - * @param {Number} height The desired height of the thumbnail. - * @param {string} resizeMethod The thumbnail resize method to use, either - * "crop" or "scale". - * @param {Boolean} allowDefault (optional) Passing false causes this method to - * return null if the user has no avatar image. Otherwise, a default image URL - * will be returned. Default: true. (Deprecated) - * @param {Boolean} allowDirectLinks (optional) If true, the avatar URL will be - * returned even if it is a direct hyperlink rather than a matrix content URL. - * If false, any non-matrix content URLs will be ignored. Setting this option to - * true will expose URLs that, if fetched, will leak information about the user - * to anyone who they share a room with. - * @return {?string} the avatar URL or null. - */ - - -RoomMember.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault, allowDirectLinks) { - if (allowDefault === undefined) { - allowDefault = true; - } - - const rawUrl = this.getMxcAvatarUrl(); - - if (!rawUrl && !allowDefault) { - return null; - } - - const httpUrl = (0, _contentRepo.getHttpUriForMxc)(baseUrl, rawUrl, width, height, resizeMethod, allowDirectLinks); - - if (httpUrl) { - return httpUrl; - } - - return null; -}; -/** - * get the mxc avatar url, either from a state event, or from a lazily loaded member - * @return {string} the mxc avatar url - */ - - -RoomMember.prototype.getMxcAvatarUrl = function () { - if (this.events.member) { - return this.events.member.getDirectionalContent().avatar_url; - } else if (this.user) { - return this.user.avatarUrl; - } - - return null; -}; - -function calculateDisplayName(selfUserId, displayName, roomState) { - if (!displayName || displayName === selfUserId) { - return selfUserId; - } // First check if the displayname is something we consider truthy - // after stripping it of zero width characters and padding spaces - - - if (!utils.removeHiddenChars(displayName)) { - return selfUserId; - } - - if (!roomState) { - return displayName; - } // Next check if the name contains something that look like a mxid - // If it does, it may be someone trying to impersonate someone else - // Show full mxid in this case - - - let disambiguate = /@.+:.+/.test(displayName); - - if (!disambiguate) { - // Also show mxid if the display name contains any LTR/RTL characters as these - // make it very difficult for us to find similar *looking* display names - // E.g "Mark" could be cloned by writing "kraM" but in RTL. - disambiguate = /[\u200E\u200F\u202A-\u202F]/.test(displayName); - } - - if (!disambiguate) { - // Also show mxid if there are other people with the same or similar - // displayname, after hidden character removal. - const userIds = roomState.getUserIdsWithDisplayName(displayName); - disambiguate = userIds.some(u => u !== selfUserId); - } - - if (disambiguate) { - return displayName + " (" + selfUserId + ")"; - } - - return displayName; } -/** - * Fires whenever any room member's name changes. - * @event module:client~MatrixClient#"RoomMember.name" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {RoomMember} member The member whose RoomMember.name changed. - * @param {string?} oldName The previous name. Null if the member didn't have a - * name previously. - * @example - * matrixClient.on("RoomMember.name", function(event, member){ - * var newName = member.name; - * }); - */ /** - * Fires whenever any room member's membership state changes. - * @event module:client~MatrixClient#"RoomMember.membership" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {RoomMember} member The member whose RoomMember.membership changed. - * @param {string?} oldMembership The previous membership state. Null if it's a - * new member. - * @example - * matrixClient.on("RoomMember.membership", function(event, member, oldMembership){ - * var newState = member.membership; - * }); + * Is left after right (or the same)? + * + * Only returns true if both events can be found, and left is after or the same + * as right. + * + * @returns left \>= right */ +function isAfterOrSame(leftEventId, rightEventId, room) { + const comparison = room.compareEventOrdering(leftEventId, rightEventId); + return comparison !== null && comparison >= 0; +} /** - * Fires whenever any room member's typing state changes. - * @event module:client~MatrixClient#"RoomMember.typing" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {RoomMember} member The member whose RoomMember.typing changed. - * @example - * matrixClient.on("RoomMember.typing", function(event, member){ - * var isTyping = member.typing; - * }); - */ - -/** - * Fires whenever any room member's power level changes. - * @event module:client~MatrixClient#"RoomMember.powerLevel" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {RoomMember} member The member whose RoomMember.powerLevel changed. - * @example - * matrixClient.on("RoomMember.powerLevel", function(event, member){ - * var newPowerLevel = member.powerLevel; - * var newNormPowerLevel = member.powerLevelNorm; - * }); + * Is left strictly after right? + * + * Only returns true if both events can be found, and left is strictly after right. + * + * @returns left \> right */ +function isAfter(leftEventId, rightEventId, room) { + const comparison = room.compareEventOrdering(leftEventId, rightEventId); + return comparison !== null && comparison > 0; +} +//# sourceMappingURL=room-receipts.js.map /***/ }), /***/ 1513: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RoomState = RoomState; - -var _events = __webpack_require__(8614); - -var _roomMember = __webpack_require__(7024); - -var _logger = __webpack_require__(3854); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - +exports.RoomStateEvent = exports.RoomState = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _roomMember = __nccwpck_require__(7024); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); +var _event = __nccwpck_require__(7487); +var _event2 = __nccwpck_require__(9564); +var _partials = __nccwpck_require__(3653); +var _typedEventEmitter = __nccwpck_require__(7150); +var _beacon = __nccwpck_require__(23); +var _ReEmitter = __nccwpck_require__(9554); +var _beacon2 = __nccwpck_require__(8544); +var _membership = __nccwpck_require__(9225); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -56073,848 +170046,919 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - -/** - * @module models/room-state - */ // possible statuses for out-of-band member loading -const OOB_STATUS_NOTSTARTED = 1; -const OOB_STATUS_INPROGRESS = 2; -const OOB_STATUS_FINISHED = 3; -/** - * Construct room state. - * - * Room State represents the state of the room at a given point. - * It can be mutated by adding state events to it. - * There are two types of room member associated with a state event: - * normal member objects (accessed via getMember/getMembers) which mutate - * with the state to represent the current state of that room/user, eg. - * the object returned by getMember('@bob:example.com') will mutate to - * get a different display name if Bob later changes his display name - * in the room. - * There are also 'sentinel' members (accessed via getSentinelMember). - * These also represent the state of room members at the point in time - * represented by the RoomState object, but unlike objects from getMember, - * sentinel objects will always represent the room state as at the time - * getSentinelMember was called, so if Bob subsequently changes his display - * name, a room member object previously acquired with getSentinelMember - * will still have his old display name. Calling getSentinelMember again - * after the display name change will return a new RoomMember object - * with Bob's new display name. - * - * @constructor - * @param {?string} roomId Optional. The ID of the room which has this state. - * If none is specified it just tracks paginationTokens, useful for notifTimelineSet - * @param {?object} oobMemberFlags Optional. The state of loading out of bound members. - * As the timeline might get reset while they are loading, this state needs to be inherited - * and shared when the room state is cloned for the new timeline. - * This should only be passed from clone. - * @prop {Object.} members The room member dictionary, keyed - * on the user's ID. - * @prop {Object.>} events The state - * events dictionary, keyed on the event type and then the state_key value. - * @prop {string} paginationToken The pagination token for this state. - */ - -function RoomState(roomId, oobMemberFlags = undefined) { - this.roomId = roomId; - this.members = {// userId: RoomMember - }; - this.events = new Map(); // Map> - - this.paginationToken = null; - this._sentinels = {// userId: RoomMember - }; - - this._updateModifiedTime(); // stores fuzzy matches to a list of userIDs (applies utils.removeHiddenChars to keys) - - - this._displayNameToUserIds = {}; - this._userIdsToDisplayNames = {}; - this._tokenToInvite = {}; // 3pid invite state_key to m.room.member invite - - this._joinedMemberCount = null; // cache of the number of joined members - // joined members count from summary api - // once set, we know the server supports the summary api - // and we should only trust that - // we could also only trust that before OOB members - // are loaded but doesn't seem worth the hassle atm - - this._summaryJoinedMemberCount = null; // same for invited member count - - this._invitedMemberCount = null; - this._summaryInvitedMemberCount = null; - - if (!oobMemberFlags) { - oobMemberFlags = { - status: OOB_STATUS_NOTSTARTED - }; +var OobStatus = /*#__PURE__*/function (OobStatus) { + OobStatus[OobStatus["NotStarted"] = 0] = "NotStarted"; + OobStatus[OobStatus["InProgress"] = 1] = "InProgress"; + OobStatus[OobStatus["Finished"] = 2] = "Finished"; + return OobStatus; +}(OobStatus || {}); +let RoomStateEvent = exports.RoomStateEvent = /*#__PURE__*/function (RoomStateEvent) { + RoomStateEvent["Events"] = "RoomState.events"; + RoomStateEvent["Members"] = "RoomState.members"; + RoomStateEvent["NewMember"] = "RoomState.newMember"; + RoomStateEvent["Update"] = "RoomState.update"; + RoomStateEvent["BeaconLiveness"] = "RoomState.BeaconLiveness"; + RoomStateEvent["Marker"] = "RoomState.Marker"; + return RoomStateEvent; +}({}); +class RoomState extends _typedEventEmitter.TypedEventEmitter { + /** + * Construct room state. + * + * Room State represents the state of the room at a given point. + * It can be mutated by adding state events to it. + * There are two types of room member associated with a state event: + * normal member objects (accessed via getMember/getMembers) which mutate + * with the state to represent the current state of that room/user, e.g. + * the object returned by `getMember('@bob:example.com')` will mutate to + * get a different display name if Bob later changes his display name + * in the room. + * There are also 'sentinel' members (accessed via getSentinelMember). + * These also represent the state of room members at the point in time + * represented by the RoomState object, but unlike objects from getMember, + * sentinel objects will always represent the room state as at the time + * getSentinelMember was called, so if Bob subsequently changes his display + * name, a room member object previously acquired with getSentinelMember + * will still have his old display name. Calling getSentinelMember again + * after the display name change will return a new RoomMember object + * with Bob's new display name. + * + * @param roomId - Optional. The ID of the room which has this state. + * If none is specified it just tracks paginationTokens, useful for notifTimelineSet + * @param oobMemberFlags - Optional. The state of loading out of bound members. + * As the timeline might get reset while they are loading, this state needs to be inherited + * and shared when the room state is cloned for the new timeline. + * This should only be passed from clone. + */ + constructor(roomId, oobMemberFlags = { + status: OobStatus.NotStarted + }) { + super(); + (0, _defineProperty2.default)(this, "reEmitter", new _ReEmitter.TypedReEmitter(this)); + (0, _defineProperty2.default)(this, "sentinels", {}); + // userId: RoomMember + // stores fuzzy matches to a list of userIDs (applies utils.removeHiddenChars to keys) + (0, _defineProperty2.default)(this, "displayNameToUserIds", new Map()); + (0, _defineProperty2.default)(this, "userIdsToDisplayNames", {}); + (0, _defineProperty2.default)(this, "tokenToInvite", {}); + // 3pid invite state_key to m.room.member invite + (0, _defineProperty2.default)(this, "joinedMemberCount", null); + // cache of the number of joined members + // joined members count from summary api + // once set, we know the server supports the summary api + // and we should only trust that + // we could also only trust that before OOB members + // are loaded but doesn't seem worth the hassle atm + (0, _defineProperty2.default)(this, "summaryJoinedMemberCount", null); + // same for invited member count + (0, _defineProperty2.default)(this, "invitedMemberCount", null); + (0, _defineProperty2.default)(this, "summaryInvitedMemberCount", null); + (0, _defineProperty2.default)(this, "modified", -1); + // XXX: Should be read-only + // The room member dictionary, keyed on the user's ID. + (0, _defineProperty2.default)(this, "members", {}); + // userId: RoomMember + // The state events dictionary, keyed on the event type and then the state_key value. + (0, _defineProperty2.default)(this, "events", new Map()); + // Map> + // The pagination token for this state. + (0, _defineProperty2.default)(this, "paginationToken", null); + (0, _defineProperty2.default)(this, "beacons", new Map()); + (0, _defineProperty2.default)(this, "_liveBeaconIds", []); + this.roomId = roomId; + this.oobMemberFlags = oobMemberFlags; + this.updateModifiedTime(); } - this._oobMemberFlags = oobMemberFlags; -} - -utils.inherits(RoomState, _events.EventEmitter); -/** - * Returns the number of joined members in this room - * This method caches the result. - * @return {integer} The number of members in this room whose membership is 'join' - */ - -RoomState.prototype.getJoinedMemberCount = function () { - if (this._summaryJoinedMemberCount !== null) { - return this._summaryJoinedMemberCount; + /** + * Returns the number of joined members in this room + * This method caches the result. + * @returns The number of members in this room whose membership is 'join' + */ + getJoinedMemberCount() { + if (this.summaryJoinedMemberCount !== null) { + return this.summaryJoinedMemberCount; + } + if (this.joinedMemberCount === null) { + this.joinedMemberCount = this.getMembers().reduce((count, m) => { + return m.membership === _membership.KnownMembership.Join ? count + 1 : count; + }, 0); + } + return this.joinedMemberCount; } - if (this._joinedMemberCount === null) { - this._joinedMemberCount = this.getMembers().reduce((count, m) => { - return m.membership === 'join' ? count + 1 : count; - }, 0); + /** + * Set the joined member count explicitly (like from summary part of the sync response) + * @param count - the amount of joined members + */ + setJoinedMemberCount(count) { + this.summaryJoinedMemberCount = count; } - return this._joinedMemberCount; -}; -/** - * Set the joined member count explicitly (like from summary part of the sync response) - * @param {number} count the amount of joined members - */ - - -RoomState.prototype.setJoinedMemberCount = function (count) { - this._summaryJoinedMemberCount = count; -}; -/** - * Returns the number of invited members in this room - * @return {integer} The number of members in this room whose membership is 'invite' - */ - - -RoomState.prototype.getInvitedMemberCount = function () { - if (this._summaryInvitedMemberCount !== null) { - return this._summaryInvitedMemberCount; + /** + * Returns the number of invited members in this room + * @returns The number of members in this room whose membership is 'invite' + */ + getInvitedMemberCount() { + if (this.summaryInvitedMemberCount !== null) { + return this.summaryInvitedMemberCount; + } + if (this.invitedMemberCount === null) { + this.invitedMemberCount = this.getMembers().reduce((count, m) => { + return m.membership === _membership.KnownMembership.Invite ? count + 1 : count; + }, 0); + } + return this.invitedMemberCount; } - if (this._invitedMemberCount === null) { - this._invitedMemberCount = this.getMembers().reduce((count, m) => { - return m.membership === 'invite' ? count + 1 : count; - }, 0); + /** + * Set the amount of invited members in this room + * @param count - the amount of invited members + */ + setInvitedMemberCount(count) { + this.summaryInvitedMemberCount = count; } - return this._invitedMemberCount; -}; -/** - * Set the amount of invited members in this room - * @param {number} count the amount of invited members - */ + /** + * Get all RoomMembers in this room. + * @returns A list of RoomMembers. + */ + getMembers() { + return Object.values(this.members); + } + /** + * Get all RoomMembers in this room, excluding the user IDs provided. + * @param excludedIds - The user IDs to exclude. + * @returns A list of RoomMembers. + */ + getMembersExcept(excludedIds) { + return this.getMembers().filter(m => !excludedIds.includes(m.userId)); + } -RoomState.prototype.setInvitedMemberCount = function (count) { - this._summaryInvitedMemberCount = count; -}; -/** - * Get all RoomMembers in this room. - * @return {Array} A list of RoomMembers. - */ + /** + * Get a room member by their user ID. + * @param userId - The room member's user ID. + * @returns The member or null if they do not exist. + */ + getMember(userId) { + return this.members[userId] || null; + } + /** + * Get a room member whose properties will not change with this room state. You + * typically want this if you want to attach a RoomMember to a MatrixEvent which + * may no longer be represented correctly by Room.currentState or Room.oldState. + * The term 'sentinel' refers to the fact that this RoomMember is an unchanging + * guardian for state at this particular point in time. + * @param userId - The room member's user ID. + * @returns The member or null if they do not exist. + */ + getSentinelMember(userId) { + if (!userId) return null; + let sentinel = this.sentinels[userId]; + if (sentinel === undefined) { + sentinel = new _roomMember.RoomMember(this.roomId, userId); + const member = this.members[userId]; + if (member !== null && member !== void 0 && member.events.member) { + sentinel.setMembershipEvent(member.events.member, this); + } + this.sentinels[userId] = sentinel; + } + return sentinel; + } -RoomState.prototype.getMembers = function () { - return utils.values(this.members); -}; -/** - * Get all RoomMembers in this room, excluding the user IDs provided. - * @param {Array} excludedIds The user IDs to exclude. - * @return {Array} A list of RoomMembers. - */ + /** + * Get state events from the state of the room. + * @param eventType - The event type of the state event. + * @returns A list of events + */ + /** + * Get state events from the state of the room. + * @param eventType - The event type of the state event. + * @param stateKey - The state_key of the state event. + * @returns A single event (or null if no match found). + */ -RoomState.prototype.getMembersExcept = function (excludedIds) { - return utils.values(this.members).filter(m => !excludedIds.includes(m.userId)); -}; -/** - * Get a room member by their user ID. - * @param {string} userId The room member's user ID. - * @return {RoomMember} The member or null if they do not exist. - */ + getStateEvents(eventType, stateKey) { + if (!this.events.has(eventType)) { + // no match + return stateKey === undefined ? [] : null; + } + if (stateKey === undefined) { + // return all values + return Array.from(this.events.get(eventType).values()); + } + const event = this.events.get(eventType).get(stateKey); + return event ? event : null; + } + get hasLiveBeacons() { + var _this$liveBeaconIds; + return !!((_this$liveBeaconIds = this.liveBeaconIds) !== null && _this$liveBeaconIds !== void 0 && _this$liveBeaconIds.length); + } + get liveBeaconIds() { + return this._liveBeaconIds; + } + /** + * Creates a copy of this room state so that mutations to either won't affect the other. + * @returns the copy of the room state + */ + clone() { + const copy = new RoomState(this.roomId, this.oobMemberFlags); -RoomState.prototype.getMember = function (userId) { - return this.members[userId] || null; -}; -/** - * Get a room member whose properties will not change with this room state. You - * typically want this if you want to attach a RoomMember to a MatrixEvent which - * may no longer be represented correctly by Room.currentState or Room.oldState. - * The term 'sentinel' refers to the fact that this RoomMember is an unchanging - * guardian for state at this particular point in time. - * @param {string} userId The room member's user ID. - * @return {RoomMember} The member or null if they do not exist. - */ + // Ugly hack: because setStateEvents will mark + // members as susperseding future out of bound members + // if loading is in progress (through oobMemberFlags) + // since these are not new members, we're merely copying them + // set the status to not started + // after copying, we set back the status + const status = this.oobMemberFlags.status; + this.oobMemberFlags.status = OobStatus.NotStarted; + Array.from(this.events.values()).forEach(eventsByStateKey => { + copy.setStateEvents(Array.from(eventsByStateKey.values())); + }); - -RoomState.prototype.getSentinelMember = function (userId) { - if (!userId) return null; - let sentinel = this._sentinels[userId]; - - if (sentinel === undefined) { - sentinel = new _roomMember.RoomMember(this.roomId, userId); - const member = this.members[userId]; - - if (member) { - sentinel.setMembershipEvent(member.events.member, this); + // Ugly hack: see above + this.oobMemberFlags.status = status; + if (this.summaryInvitedMemberCount !== null) { + copy.setInvitedMemberCount(this.getInvitedMemberCount()); + } + if (this.summaryJoinedMemberCount !== null) { + copy.setJoinedMemberCount(this.getJoinedMemberCount()); } - this._sentinels[userId] = sentinel; + // copy out of band flags if needed + if (this.oobMemberFlags.status == OobStatus.Finished) { + // copy markOutOfBand flags + this.getMembers().forEach(member => { + if (member.isOutOfBand()) { + var _copy$getMember; + (_copy$getMember = copy.getMember(member.userId)) === null || _copy$getMember === void 0 || _copy$getMember.markOutOfBand(); + } + }); + } + return copy; } - return sentinel; -}; -/** - * Get state events from the state of the room. - * @param {string} eventType The event type of the state event. - * @param {string} stateKey Optional. The state_key of the state event. If - * this is undefined then all matching state events will be - * returned. - * @return {MatrixEvent[]|MatrixEvent} A list of events if state_key was - * undefined, else a single event (or null if no match found). - */ - - -RoomState.prototype.getStateEvents = function (eventType, stateKey) { - if (!this.events.has(eventType)) { - // no match - return stateKey === undefined ? [] : null; + /** + * Add previously unknown state events. + * When lazy loading members while back-paginating, + * the relevant room state for the timeline chunk at the end + * of the chunk can be set with this method. + * @param events - state events to prepend + */ + setUnknownStateEvents(events) { + const unknownStateEvents = events.filter(event => { + return !this.events.has(event.getType()) || !this.events.get(event.getType()).has(event.getStateKey()); + }); + this.setStateEvents(unknownStateEvents); } - if (stateKey === undefined) { - // return all values - return Array.from(this.events.get(eventType).values()); - } + /** + * Add an array of one or more state MatrixEvents, overwriting any existing + * state with the same `{type, stateKey}` tuple. Will fire "RoomState.events" + * for every event added. May fire "RoomState.members" if there are + * `m.room.member` events. May fire "RoomStateEvent.Marker" if there are + * `UNSTABLE_MSC2716_MARKER` events. + * @param stateEvents - a list of state events for this room. + * + * @remarks + * Fires {@link RoomStateEvent.Members} + * Fires {@link RoomStateEvent.NewMember} + * Fires {@link RoomStateEvent.Events} + * Fires {@link RoomStateEvent.Marker} + */ + setStateEvents(stateEvents, markerFoundOptions) { + this.updateModifiedTime(); - const event = this.events.get(eventType).get(stateKey); - return event ? event : null; -}; -/** - * Creates a copy of this room state so that mutations to either won't affect the other. - * @return {RoomState} the copy of the room state - */ - - -RoomState.prototype.clone = function () { - const copy = new RoomState(this.roomId, this._oobMemberFlags); // Ugly hack: because setStateEvents will mark - // members as susperseding future out of bound members - // if loading is in progress (through _oobMemberFlags) - // since these are not new members, we're merely copying them - // set the status to not started - // after copying, we set back the status - - const status = this._oobMemberFlags.status; - this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED; - Array.from(this.events.values()).forEach(eventsByStateKey => { - copy.setStateEvents(Array.from(eventsByStateKey.values())); - }); // Ugly hack: see above - - this._oobMemberFlags.status = status; - - if (this._summaryInvitedMemberCount !== null) { - copy.setInvitedMemberCount(this.getInvitedMemberCount()); - } - - if (this._summaryJoinedMemberCount !== null) { - copy.setJoinedMemberCount(this.getJoinedMemberCount()); - } // copy out of band flags if needed - - - if (this._oobMemberFlags.status == OOB_STATUS_FINISHED) { - // copy markOutOfBand flags - this.getMembers().forEach(member => { - if (member.isOutOfBand()) { - const copyMember = copy.getMember(member.userId); - copyMember.markOutOfBand(); + // update the core event dict + stateEvents.forEach(event => { + if (event.getRoomId() !== this.roomId || !event.isState()) return; + if (_beacon2.M_BEACON_INFO.matches(event.getType())) { + this.setBeacon(event); } + const lastStateEvent = this.getStateEventMatching(event); + this.setStateEvent(event); + if (event.getType() === _event.EventType.RoomMember) { + var _event$getContent$dis; + this.updateDisplayNameCache(event.getStateKey(), (_event$getContent$dis = event.getContent().displayname) !== null && _event$getContent$dis !== void 0 ? _event$getContent$dis : ""); + this.updateThirdPartyTokenCache(event); + } + this.emit(RoomStateEvent.Events, event, this, lastStateEvent); + }); + this.onBeaconLivenessChange(); + // update higher level data structures. This needs to be done AFTER the + // core event dict as these structures may depend on other state events in + // the given array (e.g. disambiguating display names in one go to do both + // clashing names rather than progressively which only catches 1 of them). + stateEvents.forEach(event => { + if (event.getRoomId() !== this.roomId || !event.isState()) return; + if (event.getType() === _event.EventType.RoomMember) { + const userId = event.getStateKey(); + + // leave events apparently elide the displayname or avatar_url, + // so let's fake one up so that we don't leak user ids + // into the timeline + if (event.getContent().membership === _membership.KnownMembership.Leave || event.getContent().membership === _membership.KnownMembership.Ban) { + event.getContent().avatar_url = event.getContent().avatar_url || event.getPrevContent().avatar_url; + event.getContent().displayname = event.getContent().displayname || event.getPrevContent().displayname; + } + const member = this.getOrCreateMember(userId, event); + member.setMembershipEvent(event, this); + this.updateMember(member); + this.emit(RoomStateEvent.Members, event, this, member); + } else if (event.getType() === _event.EventType.RoomPowerLevels) { + // events with unknown state keys should be ignored + // and should not aggregate onto members power levels + if (event.getStateKey() !== "") { + return; + } + const members = Object.values(this.members); + members.forEach(member => { + // We only propagate `RoomState.members` event if the + // power levels has been changed + // large room suffer from large re-rendering especially when not needed + const oldLastModified = member.getLastModifiedTime(); + member.setPowerLevelEvent(event); + if (oldLastModified !== member.getLastModifiedTime()) { + this.emit(RoomStateEvent.Members, event, this, member); + } + }); + + // assume all our sentinels are now out-of-date + this.sentinels = {}; + } else if (_event.UNSTABLE_MSC2716_MARKER.matches(event.getType())) { + this.emit(RoomStateEvent.Marker, event, markerFoundOptions); + } + }); + this.emit(RoomStateEvent.Update, this); + } + async processBeaconEvents(events, matrixClient) { + if (!events.length || + // discard locations if we have no beacons + !this.beacons.size) { + return; + } + const beaconByEventIdDict = [...this.beacons.values()].reduce((dict, beacon) => { + dict[beacon.beaconInfoId] = beacon; + return dict; + }, {}); + const processBeaconRelation = (beaconInfoEventId, event) => { + if (!_beacon2.M_BEACON.matches(event.getType())) { + return; + } + const beacon = beaconByEventIdDict[beaconInfoEventId]; + if (beacon) { + beacon.addLocations([event]); + } + }; + for (const event of events) { + var _event$getRelation; + const relatedToEventId = (_event$getRelation = event.getRelation()) === null || _event$getRelation === void 0 ? void 0 : _event$getRelation.event_id; + // not related to a beacon we know about; discard + if (!relatedToEventId || !beaconByEventIdDict[relatedToEventId]) return; + if (!_beacon2.M_BEACON.matches(event.getType()) && !event.isEncrypted()) return; + try { + await matrixClient.decryptEventIfNeeded(event); + processBeaconRelation(relatedToEventId, event); + } catch { + if (event.isDecryptionFailure()) { + // add an event listener for once the event is decrypted. + event.once(_event2.MatrixEventEvent.Decrypted, async () => { + processBeaconRelation(relatedToEventId, event); + }); + } + } + } + } + + /** + * Looks up a member by the given userId, and if it doesn't exist, + * create it and emit the `RoomState.newMember` event. + * This method makes sure the member is added to the members dictionary + * before emitting, as this is done from setStateEvents and setOutOfBandMember. + * @param userId - the id of the user to look up + * @param event - the membership event for the (new) member. Used to emit. + * @returns the member, existing or newly created. + * + * @remarks + * Fires {@link RoomStateEvent.NewMember} + */ + getOrCreateMember(userId, event) { + let member = this.members[userId]; + if (!member) { + member = new _roomMember.RoomMember(this.roomId, userId); + // add member to members before emitting any events, + // as event handlers often lookup the member + this.members[userId] = member; + this.emit(RoomStateEvent.NewMember, event, this, member); + } + return member; + } + setStateEvent(event) { + if (!this.events.has(event.getType())) { + this.events.set(event.getType(), new Map()); + } + this.events.get(event.getType()).set(event.getStateKey(), event); + } + + /** + * @experimental + */ + setBeacon(event) { + const beaconIdentifier = (0, _beacon.getBeaconInfoIdentifier)(event); + if (this.beacons.has(beaconIdentifier)) { + const beacon = this.beacons.get(beaconIdentifier); + if (event.isRedacted()) { + var _event$getRedactionEv; + if (beacon.beaconInfoId === ((_event$getRedactionEv = event.getRedactionEvent()) === null || _event$getRedactionEv === void 0 ? void 0 : _event$getRedactionEv.redacts)) { + beacon.destroy(); + this.beacons.delete(beaconIdentifier); + } + return; + } + return beacon.update(event); + } + if (event.isRedacted()) { + return; + } + const beacon = new _beacon.Beacon(event); + this.reEmitter.reEmit(beacon, [_beacon.BeaconEvent.New, _beacon.BeaconEvent.Update, _beacon.BeaconEvent.Destroy, _beacon.BeaconEvent.LivenessChange]); + this.emit(_beacon.BeaconEvent.New, event, beacon); + beacon.on(_beacon.BeaconEvent.LivenessChange, this.onBeaconLivenessChange.bind(this)); + beacon.on(_beacon.BeaconEvent.Destroy, this.onBeaconLivenessChange.bind(this)); + this.beacons.set(beacon.identifier, beacon); + } + + /** + * @experimental + * Check liveness of room beacons + * emit RoomStateEvent.BeaconLiveness event + */ + onBeaconLivenessChange() { + this._liveBeaconIds = Array.from(this.beacons.values()).filter(beacon => beacon.isLive).map(beacon => beacon.identifier); + this.emit(RoomStateEvent.BeaconLiveness, this, this.hasLiveBeacons); + } + getStateEventMatching(event) { + var _this$events$get$get, _this$events$get; + return (_this$events$get$get = (_this$events$get = this.events.get(event.getType())) === null || _this$events$get === void 0 ? void 0 : _this$events$get.get(event.getStateKey())) !== null && _this$events$get$get !== void 0 ? _this$events$get$get : null; + } + updateMember(member) { + // this member may have a power level already, so set it. + const pwrLvlEvent = this.getStateEvents(_event.EventType.RoomPowerLevels, ""); + if (pwrLvlEvent) { + member.setPowerLevelEvent(pwrLvlEvent); + } + + // blow away the sentinel which is now outdated + delete this.sentinels[member.userId]; + this.members[member.userId] = member; + this.joinedMemberCount = null; + this.invitedMemberCount = null; + } + + /** + * Get the out-of-band members loading state, whether loading is needed or not. + * Note that loading might be in progress and hence isn't needed. + * @returns whether or not the members of this room need to be loaded + */ + needsOutOfBandMembers() { + return this.oobMemberFlags.status === OobStatus.NotStarted; + } + + /** + * Check if loading of out-of-band-members has completed + * + * @returns true if the full membership list of this room has been loaded. False if it is not started or is in + * progress. + */ + outOfBandMembersReady() { + return this.oobMemberFlags.status === OobStatus.Finished; + } + + /** + * Mark this room state as waiting for out-of-band members, + * ensuring it doesn't ask for them to be requested again + * through needsOutOfBandMembers + */ + markOutOfBandMembersStarted() { + if (this.oobMemberFlags.status !== OobStatus.NotStarted) { + return; + } + this.oobMemberFlags.status = OobStatus.InProgress; + } + + /** + * Mark this room state as having failed to fetch out-of-band members + */ + markOutOfBandMembersFailed() { + if (this.oobMemberFlags.status !== OobStatus.InProgress) { + return; + } + this.oobMemberFlags.status = OobStatus.NotStarted; + } + + /** + * Clears the loaded out-of-band members + */ + clearOutOfBandMembers() { + let count = 0; + Object.keys(this.members).forEach(userId => { + const member = this.members[userId]; + if (member.isOutOfBand()) { + ++count; + delete this.members[userId]; + } + }); + _logger.logger.log(`LL: RoomState removed ${count} members...`); + this.oobMemberFlags.status = OobStatus.NotStarted; + } + + /** + * Sets the loaded out-of-band members. + * @param stateEvents - array of membership state events + */ + setOutOfBandMembers(stateEvents) { + _logger.logger.log(`LL: RoomState about to set ${stateEvents.length} OOB members ...`); + if (this.oobMemberFlags.status !== OobStatus.InProgress) { + return; + } + _logger.logger.log(`LL: RoomState put in finished state ...`); + this.oobMemberFlags.status = OobStatus.Finished; + stateEvents.forEach(e => this.setOutOfBandMember(e)); + this.emit(RoomStateEvent.Update, this); + } + + /** + * Sets a single out of band member, used by both setOutOfBandMembers and clone + * @param stateEvent - membership state event + */ + setOutOfBandMember(stateEvent) { + if (stateEvent.getType() !== _event.EventType.RoomMember) { + return; + } + const userId = stateEvent.getStateKey(); + const existingMember = this.getMember(userId); + // never replace members received as part of the sync + if (existingMember && !existingMember.isOutOfBand()) { + return; + } + const member = this.getOrCreateMember(userId, stateEvent); + member.setMembershipEvent(stateEvent, this); + // needed to know which members need to be stored seperately + // as they are not part of the sync accumulator + // this is cleared by setMembershipEvent so when it's updated through /sync + member.markOutOfBand(); + this.updateDisplayNameCache(member.userId, member.name); + this.setStateEvent(stateEvent); + this.updateMember(member); + this.emit(RoomStateEvent.Members, stateEvent, this, member); + } + + /** + * Set the current typing event for this room. + * @param event - The typing event + */ + setTypingEvent(event) { + Object.values(this.members).forEach(function (member) { + member.setTypingEvent(event); }); } - return copy; -}; -/** - * Add previously unknown state events. - * When lazy loading members while back-paginating, - * the relevant room state for the timeline chunk at the end - * of the chunk can be set with this method. - * @param {MatrixEvent[]} events state events to prepend - */ + /** + * Get the m.room.member event which has the given third party invite token. + * + * @param token - The token + * @returns The m.room.member event or null + */ + getInviteForThreePidToken(token) { + return this.tokenToInvite[token] || null; + } + /** + * Update the last modified time to the current time. + */ + updateModifiedTime() { + this.modified = Date.now(); + } -RoomState.prototype.setUnknownStateEvents = function (events) { - const unknownStateEvents = events.filter(event => { - return !this.events.has(event.getType()) || !this.events.get(event.getType()).has(event.getStateKey()); - }); - this.setStateEvents(unknownStateEvents); -}; -/** - * Add an array of one or more state MatrixEvents, overwriting - * any existing state with the same {type, stateKey} tuple. Will fire - * "RoomState.events" for every event added. May fire "RoomState.members" - * if there are m.room.member events. - * @param {MatrixEvent[]} stateEvents a list of state events for this room. - * @fires module:client~MatrixClient#event:"RoomState.members" - * @fires module:client~MatrixClient#event:"RoomState.newMember" - * @fires module:client~MatrixClient#event:"RoomState.events" - */ + /** + * Get the timestamp when this room state was last updated. This timestamp is + * updated when this object has received new state events. + * @returns The timestamp + */ + getLastModifiedTime() { + return this.modified; + } + /** + * Get user IDs with the specified or similar display names. + * @param displayName - The display name to get user IDs from. + * @returns An array of user IDs or an empty array. + */ + getUserIdsWithDisplayName(displayName) { + var _this$displayNameToUs; + return (_this$displayNameToUs = this.displayNameToUserIds.get((0, _utils.removeHiddenChars)(displayName))) !== null && _this$displayNameToUs !== void 0 ? _this$displayNameToUs : []; + } -RoomState.prototype.setStateEvents = function (stateEvents) { - const self = this; + /** + * Returns true if userId is in room, event is not redacted and either sender of + * mxEvent or has power level sufficient to redact events other than their own. + * @param mxEvent - The event to test permission for + * @param userId - The user ID of the user to test permission for + * @returns true if the given used ID can redact given event + */ + maySendRedactionForEvent(mxEvent, userId) { + const member = this.getMember(userId); + if (!member || member.membership === _membership.KnownMembership.Leave) return false; + if (mxEvent.status || mxEvent.isRedacted()) return false; - this._updateModifiedTime(); // update the core event dict + // The user may have been the sender, but they can't redact their own message + // if redactions are blocked. + const canRedact = this.maySendEvent(_event.EventType.RoomRedaction, userId); + if (!canRedact) return false; + if (mxEvent.getSender() === userId) return true; + return this.hasSufficientPowerLevelFor("redact", member.powerLevel); + } - - utils.forEach(stateEvents, function (event) { - if (event.getRoomId() !== self.roomId) { - return; + /** + * Returns true if the given power level is sufficient for action + * @param action - The type of power level to check + * @param powerLevel - The power level of the member + * @returns true if the given power level is sufficient + */ + hasSufficientPowerLevelFor(action, powerLevel) { + const powerLevelsEvent = this.getStateEvents(_event.EventType.RoomPowerLevels, ""); + let powerLevels = {}; + if (powerLevelsEvent) { + powerLevels = powerLevelsEvent.getContent(); } - - if (!event.isState()) { - return; + let requiredLevel = 50; + if ((0, _utils.isNumber)(powerLevels[action])) { + requiredLevel = powerLevels[action]; } + return powerLevel >= requiredLevel; + } - const lastStateEvent = self._getStateEventMatching(event); + /** + * Short-form for maySendEvent('m.room.message', userId) + * @param userId - The user ID of the user to test permission for + * @returns true if the given user ID should be permitted to send + * message events into the given room. + */ + maySendMessage(userId) { + return this.maySendEventOfType(_event.EventType.RoomMessage, userId, false); + } - self._setStateEvent(event); + /** + * Returns true if the given user ID has permission to send a normal + * event of type `eventType` into this room. + * @param eventType - The type of event to test + * @param userId - The user ID of the user to test permission for + * @returns true if the given user ID should be permitted to send + * the given type of event into this room, + * according to the room's state. + */ + maySendEvent(eventType, userId) { + return this.maySendEventOfType(eventType, userId, false); + } - if (event.getType() === "m.room.member") { - _updateDisplayNameCache(self, event.getStateKey(), event.getContent().displayname); - - _updateThirdPartyTokenCache(self, event); + /** + * Returns true if the given MatrixClient has permission to send a state + * event of type `stateEventType` into this room. + * @param stateEventType - The type of state events to test + * @param cli - The client to test permission for + * @returns true if the given client should be permitted to send + * the given type of state event into this room, + * according to the room's state. + */ + mayClientSendStateEvent(stateEventType, cli) { + if (cli.isGuest() || !cli.credentials.userId) { + return false; } + return this.maySendStateEvent(stateEventType, cli.credentials.userId); + } - self.emit("RoomState.events", event, self, lastStateEvent); - }); // update higher level data structures. This needs to be done AFTER the - // core event dict as these structures may depend on other state events in - // the given array (e.g. disambiguating display names in one go to do both - // clashing names rather than progressively which only catches 1 of them). + /** + * Returns true if the given user ID has permission to send a state + * event of type `stateEventType` into this room. + * @param stateEventType - The type of state events to test + * @param userId - The user ID of the user to test permission for + * @returns true if the given user ID should be permitted to send + * the given type of state event into this room, + * according to the room's state. + */ + maySendStateEvent(stateEventType, userId) { + return this.maySendEventOfType(stateEventType, userId, true); + } - utils.forEach(stateEvents, function (event) { - if (event.getRoomId() !== self.roomId) { - return; - } - - if (!event.isState()) { - return; - } - - if (event.getType() === "m.room.member") { - const userId = event.getStateKey(); // leave events apparently elide the displayname or avatar_url, - // so let's fake one up so that we don't leak user ids - // into the timeline - - if (event.getContent().membership === "leave" || event.getContent().membership === "ban") { - event.getContent().avatar_url = event.getContent().avatar_url || event.getPrevContent().avatar_url; - event.getContent().displayname = event.getContent().displayname || event.getPrevContent().displayname; + /** + * Returns true if the given user ID has permission to send a normal or state + * event of type `eventType` into this room. + * @param eventType - The type of event to test + * @param userId - The user ID of the user to test permission for + * @param state - If true, tests if the user may send a state + event of this type. Otherwise tests whether + they may send a regular event. + * @returns true if the given user ID should be permitted to send + * the given type of event into this room, + * according to the room's state. + */ + maySendEventOfType(eventType, userId, state) { + const powerLevelsEvent = this.getStateEvents(_event.EventType.RoomPowerLevels, ""); + let powerLevels; + let eventsLevels = {}; + let stateDefault = 0; + let eventsDefault = 0; + let powerLevel = 0; + if (powerLevelsEvent) { + powerLevels = powerLevelsEvent.getContent(); + eventsLevels = powerLevels.events || {}; + if (Number.isSafeInteger(powerLevels.state_default)) { + stateDefault = powerLevels.state_default; + } else { + stateDefault = 50; + } + const userPowerLevel = powerLevels.users && powerLevels.users[userId]; + if (Number.isSafeInteger(userPowerLevel)) { + powerLevel = userPowerLevel; + } else if (Number.isSafeInteger(powerLevels.users_default)) { + powerLevel = powerLevels.users_default; + } + if (Number.isSafeInteger(powerLevels.events_default)) { + eventsDefault = powerLevels.events_default; } - - const member = self._getOrCreateMember(userId, event); - - member.setMembershipEvent(event, self); - - self._updateMember(member); - - self.emit("RoomState.members", event, self, member); - } else if (event.getType() === "m.room.power_levels") { - const members = utils.values(self.members); - utils.forEach(members, function (member) { - member.setPowerLevelEvent(event); - self.emit("RoomState.members", event, self, member); - }); // assume all our sentinels are now out-of-date - - self._sentinels = {}; } - }); -}; -/** - * Looks up a member by the given userId, and if it doesn't exist, - * create it and emit the `RoomState.newMember` event. - * This method makes sure the member is added to the members dictionary - * before emitting, as this is done from setStateEvents and _setOutOfBandMember. - * @param {string} userId the id of the user to look up - * @param {MatrixEvent} event the membership event for the (new) member. Used to emit. - * @fires module:client~MatrixClient#event:"RoomState.newMember" - * @returns {RoomMember} the member, existing or newly created. - */ - - -RoomState.prototype._getOrCreateMember = function (userId, event) { - let member = this.members[userId]; - - if (!member) { - member = new _roomMember.RoomMember(this.roomId, userId); // add member to members before emitting any events, - // as event handlers often lookup the member - - this.members[userId] = member; - this.emit("RoomState.newMember", event, this, member); - } - - return member; -}; - -RoomState.prototype._setStateEvent = function (event) { - if (!this.events.has(event.getType())) { - this.events.set(event.getType(), new Map()); - } - - this.events.get(event.getType()).set(event.getStateKey(), event); -}; - -RoomState.prototype._getStateEventMatching = function (event) { - if (!this.events.has(event.getType())) return null; - return this.events.get(event.getType()).get(event.getStateKey()); -}; - -RoomState.prototype._updateMember = function (member) { - // this member may have a power level already, so set it. - const pwrLvlEvent = this.getStateEvents("m.room.power_levels", ""); - - if (pwrLvlEvent) { - member.setPowerLevelEvent(pwrLvlEvent); - } // blow away the sentinel which is now outdated - - - delete this._sentinels[member.userId]; - this.members[member.userId] = member; - this._joinedMemberCount = null; - this._invitedMemberCount = null; -}; -/** - * Get the out-of-band members loading state, whether loading is needed or not. - * Note that loading might be in progress and hence isn't needed. - * @return {bool} whether or not the members of this room need to be loaded - */ - - -RoomState.prototype.needsOutOfBandMembers = function () { - return this._oobMemberFlags.status === OOB_STATUS_NOTSTARTED; -}; -/** - * Mark this room state as waiting for out-of-band members, - * ensuring it doesn't ask for them to be requested again - * through needsOutOfBandMembers - */ - - -RoomState.prototype.markOutOfBandMembersStarted = function () { - if (this._oobMemberFlags.status !== OOB_STATUS_NOTSTARTED) { - return; - } - - this._oobMemberFlags.status = OOB_STATUS_INPROGRESS; -}; -/** - * Mark this room state as having failed to fetch out-of-band members - */ - - -RoomState.prototype.markOutOfBandMembersFailed = function () { - if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) { - return; - } - - this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED; -}; -/** - * Clears the loaded out-of-band members - */ - - -RoomState.prototype.clearOutOfBandMembers = function () { - let count = 0; - Object.keys(this.members).forEach(userId => { - const member = this.members[userId]; - - if (member.isOutOfBand()) { - ++count; - delete this.members[userId]; + let requiredLevel = state ? stateDefault : eventsDefault; + if (Number.isSafeInteger(eventsLevels[eventType])) { + requiredLevel = eventsLevels[eventType]; } - }); - - _logger.logger.log(`LL: RoomState removed ${count} members...`); - - this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED; -}; -/** - * Sets the loaded out-of-band members. - * @param {MatrixEvent[]} stateEvents array of membership state events - */ - - -RoomState.prototype.setOutOfBandMembers = function (stateEvents) { - _logger.logger.log(`LL: RoomState about to set ${stateEvents.length} OOB members ...`); - - if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) { - return; + return powerLevel >= requiredLevel; } - _logger.logger.log(`LL: RoomState put in OOB_STATUS_FINISHED state ...`); - - this._oobMemberFlags.status = OOB_STATUS_FINISHED; - stateEvents.forEach(e => this._setOutOfBandMember(e)); -}; -/** - * Sets a single out of band member, used by both setOutOfBandMembers and clone - * @param {MatrixEvent} stateEvent membership state event - */ - - -RoomState.prototype._setOutOfBandMember = function (stateEvent) { - if (stateEvent.getType() !== 'm.room.member') { - return; - } - - const userId = stateEvent.getStateKey(); - const existingMember = this.getMember(userId); // never replace members received as part of the sync - - if (existingMember && !existingMember.isOutOfBand()) { - return; - } - - const member = this._getOrCreateMember(userId, stateEvent); - - member.setMembershipEvent(stateEvent, this); // needed to know which members need to be stored seperately - // as they are not part of the sync accumulator - // this is cleared by setMembershipEvent so when it's updated through /sync - - member.markOutOfBand(); - - _updateDisplayNameCache(this, member.userId, member.name); - - this._setStateEvent(stateEvent); - - this._updateMember(member); - - this.emit("RoomState.members", stateEvent, this, member); -}; -/** - * Set the current typing event for this room. - * @param {MatrixEvent} event The typing event - */ - - -RoomState.prototype.setTypingEvent = function (event) { - utils.forEach(utils.values(this.members), function (member) { - member.setTypingEvent(event); - }); -}; -/** - * Get the m.room.member event which has the given third party invite token. - * - * @param {string} token The token - * @return {?MatrixEvent} The m.room.member event or null - */ - - -RoomState.prototype.getInviteForThreePidToken = function (token) { - return this._tokenToInvite[token] || null; -}; -/** - * Update the last modified time to the current time. - */ - - -RoomState.prototype._updateModifiedTime = function () { - this._modified = Date.now(); -}; -/** - * Get the timestamp when this room state was last updated. This timestamp is - * updated when this object has received new state events. - * @return {number} The timestamp - */ - - -RoomState.prototype.getLastModifiedTime = function () { - return this._modified; -}; -/** - * Get user IDs with the specified or similar display names. - * @param {string} displayName The display name to get user IDs from. - * @return {string[]} An array of user IDs or an empty array. - */ - - -RoomState.prototype.getUserIdsWithDisplayName = function (displayName) { - return this._displayNameToUserIds[utils.removeHiddenChars(displayName)] || []; -}; -/** - * Returns true if userId is in room, event is not redacted and either sender of - * mxEvent or has power level sufficient to redact events other than their own. - * @param {MatrixEvent} mxEvent The event to test permission for - * @param {string} userId The user ID of the user to test permission for - * @return {boolean} true if the given used ID can redact given event - */ - - -RoomState.prototype.maySendRedactionForEvent = function (mxEvent, userId) { - const member = this.getMember(userId); - if (!member || member.membership === 'leave') return false; - if (mxEvent.status || mxEvent.isRedacted()) return false; // The user may have been the sender, but they can't redact their own message - // if redactions are blocked. - - const canRedact = this.maySendEvent("m.room.redaction", userId); - if (mxEvent.getSender() === userId) return canRedact; - return this._hasSufficientPowerLevelFor('redact', member.powerLevel); -}; -/** - * Returns true if the given power level is sufficient for action - * @param {string} action The type of power level to check - * @param {number} powerLevel The power level of the member - * @return {boolean} true if the given power level is sufficient - */ - - -RoomState.prototype._hasSufficientPowerLevelFor = function (action, powerLevel) { - const powerLevelsEvent = this.getStateEvents('m.room.power_levels', ''); - let powerLevels = {}; - - if (powerLevelsEvent) { - powerLevels = powerLevelsEvent.getContent(); - } - - let requiredLevel = 50; - - if (utils.isNumber(powerLevels[action])) { - requiredLevel = powerLevels[action]; - } - - return powerLevel >= requiredLevel; -}; -/** - * Short-form for maySendEvent('m.room.message', userId) - * @param {string} userId The user ID of the user to test permission for - * @return {boolean} true if the given user ID should be permitted to send - * message events into the given room. - */ - - -RoomState.prototype.maySendMessage = function (userId) { - return this._maySendEventOfType('m.room.message', userId, false); -}; -/** - * Returns true if the given user ID has permission to send a normal - * event of type `eventType` into this room. - * @param {string} eventType The type of event to test - * @param {string} userId The user ID of the user to test permission for - * @return {boolean} true if the given user ID should be permitted to send - * the given type of event into this room, - * according to the room's state. - */ - - -RoomState.prototype.maySendEvent = function (eventType, userId) { - return this._maySendEventOfType(eventType, userId, false); -}; -/** - * Returns true if the given MatrixClient has permission to send a state - * event of type `stateEventType` into this room. - * @param {string} stateEventType The type of state events to test - * @param {MatrixClient} cli The client to test permission for - * @return {boolean} true if the given client should be permitted to send - * the given type of state event into this room, - * according to the room's state. - */ - - -RoomState.prototype.mayClientSendStateEvent = function (stateEventType, cli) { - if (cli.isGuest()) { - return false; - } - - return this.maySendStateEvent(stateEventType, cli.credentials.userId); -}; -/** - * Returns true if the given user ID has permission to send a state - * event of type `stateEventType` into this room. - * @param {string} stateEventType The type of state events to test - * @param {string} userId The user ID of the user to test permission for - * @return {boolean} true if the given user ID should be permitted to send - * the given type of state event into this room, - * according to the room's state. - */ - - -RoomState.prototype.maySendStateEvent = function (stateEventType, userId) { - return this._maySendEventOfType(stateEventType, userId, true); -}; -/** - * Returns true if the given user ID has permission to send a normal or state - * event of type `eventType` into this room. - * @param {string} eventType The type of event to test - * @param {string} userId The user ID of the user to test permission for - * @param {boolean} state If true, tests if the user may send a state - event of this type. Otherwise tests whether - they may send a regular event. - * @return {boolean} true if the given user ID should be permitted to send - * the given type of event into this room, - * according to the room's state. - */ - - -RoomState.prototype._maySendEventOfType = function (eventType, userId, state) { - const power_levels_event = this.getStateEvents('m.room.power_levels', ''); - let power_levels; - let events_levels = {}; - let state_default = 0; - let events_default = 0; - let powerLevel = 0; - - if (power_levels_event) { - power_levels = power_levels_event.getContent(); - events_levels = power_levels.events || {}; - - if (Number.isFinite(power_levels.state_default)) { - state_default = power_levels.state_default; - } else { - state_default = 50; + /** + * Returns true if the given user ID has permission to trigger notification + * of type `notifLevelKey` + * @param notifLevelKey - The level of notification to test (eg. 'room') + * @param userId - The user ID of the user to test permission for + * @returns true if the given user ID has permission to trigger a + * notification of this type. + */ + mayTriggerNotifOfType(notifLevelKey, userId) { + const member = this.getMember(userId); + if (!member) { + return false; } - - const userPowerLevel = power_levels.users && power_levels.users[userId]; - - if (Number.isFinite(userPowerLevel)) { - powerLevel = userPowerLevel; - } else if (Number.isFinite(power_levels.users_default)) { - powerLevel = power_levels.users_default; + const powerLevelsEvent = this.getStateEvents(_event.EventType.RoomPowerLevels, ""); + let notifLevel = 50; + if (powerLevelsEvent && powerLevelsEvent.getContent() && powerLevelsEvent.getContent().notifications && (0, _utils.isNumber)(powerLevelsEvent.getContent().notifications[notifLevelKey])) { + notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey]; } + return member.powerLevel >= notifLevel; + } - if (Number.isFinite(power_levels.events_default)) { - events_default = power_levels.events_default; + /** + * Returns the join rule based on the m.room.join_rule state event, defaulting to `invite`. + * @returns the join_rule applied to this room + */ + getJoinRule() { + var _joinRuleEvent$getCon; + const joinRuleEvent = this.getStateEvents(_event.EventType.RoomJoinRules, ""); + const joinRuleContent = (_joinRuleEvent$getCon = joinRuleEvent === null || joinRuleEvent === void 0 ? void 0 : joinRuleEvent.getContent()) !== null && _joinRuleEvent$getCon !== void 0 ? _joinRuleEvent$getCon : {}; + return joinRuleContent["join_rule"] || _partials.JoinRule.Invite; + } + + /** + * Returns the history visibility based on the m.room.history_visibility state event, defaulting to `shared`. + * @returns the history_visibility applied to this room + */ + getHistoryVisibility() { + var _historyVisibilityEve; + const historyVisibilityEvent = this.getStateEvents(_event.EventType.RoomHistoryVisibility, ""); + const historyVisibilityContent = (_historyVisibilityEve = historyVisibilityEvent === null || historyVisibilityEvent === void 0 ? void 0 : historyVisibilityEvent.getContent()) !== null && _historyVisibilityEve !== void 0 ? _historyVisibilityEve : {}; + return historyVisibilityContent["history_visibility"] || _partials.HistoryVisibility.Shared; + } + + /** + * Returns the guest access based on the m.room.guest_access state event, defaulting to `shared`. + * @returns the guest_access applied to this room + */ + getGuestAccess() { + var _guestAccessEvent$get; + const guestAccessEvent = this.getStateEvents(_event.EventType.RoomGuestAccess, ""); + const guestAccessContent = (_guestAccessEvent$get = guestAccessEvent === null || guestAccessEvent === void 0 ? void 0 : guestAccessEvent.getContent()) !== null && _guestAccessEvent$get !== void 0 ? _guestAccessEvent$get : {}; + return guestAccessContent["guest_access"] || _partials.GuestAccess.Forbidden; + } + + /** + * Find the predecessor room based on this room state. + * + * @param msc3946ProcessDynamicPredecessor - if true, look for an + * m.room.predecessor state event and use it if found (MSC3946). + * @returns null if this room has no predecessor. Otherwise, returns + * the roomId, last eventId and viaServers of the predecessor room. + * + * If msc3946ProcessDynamicPredecessor is true, use m.predecessor events + * as well as m.room.create events to find predecessors. + * + * Note: if an m.predecessor event is used, eventId may be undefined + * since last_known_event_id is optional. + * + * Note: viaServers may be undefined, and will definitely be undefined if + * this predecessor comes from a RoomCreate event (rather than a + * RoomPredecessor, which has the optional via_servers property). + */ + findPredecessor(msc3946ProcessDynamicPredecessor = false) { + // Note: the tests for this function are against Room.findPredecessor, + // which just calls through to here. + + if (msc3946ProcessDynamicPredecessor) { + const predecessorEvent = this.getStateEvents(_event.EventType.RoomPredecessor, ""); + if (predecessorEvent) { + const content = predecessorEvent.getContent(); + const roomId = content.predecessor_room_id; + let eventId = content.last_known_event_id; + if (typeof eventId !== "string") { + eventId = undefined; + } + let viaServers = content.via_servers; + if (!Array.isArray(viaServers)) { + viaServers = undefined; + } + if (typeof roomId === "string") { + return { + roomId, + eventId, + viaServers + }; + } + } } - } - - let required_level = state ? state_default : events_default; - - if (Number.isFinite(events_levels[eventType])) { - required_level = events_levels[eventType]; - } - - return powerLevel >= required_level; -}; -/** - * Returns true if the given user ID has permission to trigger notification - * of type `notifLevelKey` - * @param {string} notifLevelKey The level of notification to test (eg. 'room') - * @param {string} userId The user ID of the user to test permission for - * @return {boolean} true if the given user ID has permission to trigger a - * notification of this type. - */ - - -RoomState.prototype.mayTriggerNotifOfType = function (notifLevelKey, userId) { - const member = this.getMember(userId); - - if (!member) { - return false; - } - - const powerLevelsEvent = this.getStateEvents('m.room.power_levels', ''); - let notifLevel = 50; - - if (powerLevelsEvent && powerLevelsEvent.getContent() && powerLevelsEvent.getContent().notifications && utils.isNumber(powerLevelsEvent.getContent().notifications[notifLevelKey])) { - notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey]; - } - - return member.powerLevel >= notifLevel; -}; - -function _updateThirdPartyTokenCache(roomState, memberEvent) { - if (!memberEvent.getContent().third_party_invite) { - return; - } - - const token = (memberEvent.getContent().third_party_invite.signed || {}).token; - - if (!token) { - return; - } - - const threePidInvite = roomState.getStateEvents("m.room.third_party_invite", token); - - if (!threePidInvite) { - return; - } - - roomState._tokenToInvite[token] = memberEvent; -} - -function _updateDisplayNameCache(roomState, userId, displayName) { - const oldName = roomState._userIdsToDisplayNames[userId]; - delete roomState._userIdsToDisplayNames[userId]; - - if (oldName) { - // Remove the old name from the cache. - // We clobber the user_id > name lookup but the name -> [user_id] lookup - // means we need to remove that user ID from that array rather than nuking - // the lot. - const strippedOldName = utils.removeHiddenChars(oldName); - const existingUserIds = roomState._displayNameToUserIds[strippedOldName]; - - if (existingUserIds) { - // remove this user ID from this array - const filteredUserIDs = existingUserIds.filter(id => id !== userId); - roomState._displayNameToUserIds[strippedOldName] = filteredUserIDs; + const createEvent = this.getStateEvents(_event.EventType.RoomCreate, ""); + if (createEvent) { + const predecessor = createEvent.getContent()["predecessor"]; + if (predecessor) { + const roomId = predecessor["room_id"]; + if (typeof roomId === "string") { + let eventId = predecessor["event_id"]; + if (typeof eventId !== "string" || eventId === "") { + eventId = undefined; + } + return { + roomId, + eventId + }; + } + } } + return null; } - - roomState._userIdsToDisplayNames[userId] = displayName; - const strippedDisplayname = displayName && utils.removeHiddenChars(displayName); // an empty stripped displayname (undefined/'') will be set to MXID in room-member.js - - if (strippedDisplayname) { - if (!roomState._displayNameToUserIds[strippedDisplayname]) { - roomState._displayNameToUserIds[strippedDisplayname] = []; + updateThirdPartyTokenCache(memberEvent) { + if (!memberEvent.getContent().third_party_invite) { + return; + } + const token = (memberEvent.getContent().third_party_invite.signed || {}).token; + if (!token) { + return; + } + const threePidInvite = this.getStateEvents(_event.EventType.RoomThirdPartyInvite, token); + if (!threePidInvite) { + return; + } + this.tokenToInvite[token] = memberEvent; + } + updateDisplayNameCache(userId, displayName) { + const oldName = this.userIdsToDisplayNames[userId]; + delete this.userIdsToDisplayNames[userId]; + if (oldName) { + // Remove the old name from the cache. + // We clobber the user_id > name lookup but the name -> [user_id] lookup + // means we need to remove that user ID from that array rather than nuking + // the lot. + const strippedOldName = (0, _utils.removeHiddenChars)(oldName); + const existingUserIds = this.displayNameToUserIds.get(strippedOldName); + if (existingUserIds) { + // remove this user ID from this array + const filteredUserIDs = existingUserIds.filter(id => id !== userId); + this.displayNameToUserIds.set(strippedOldName, filteredUserIDs); + } + } + this.userIdsToDisplayNames[userId] = displayName; + const strippedDisplayname = displayName && (0, _utils.removeHiddenChars)(displayName); + // an empty stripped displayname (undefined/'') will be set to MXID in room-member.js + if (strippedDisplayname) { + var _this$displayNameToUs2; + const arr = (_this$displayNameToUs2 = this.displayNameToUserIds.get(strippedDisplayname)) !== null && _this$displayNameToUs2 !== void 0 ? _this$displayNameToUs2 : []; + arr.push(userId); + this.displayNameToUserIds.set(strippedDisplayname, arr); } - - roomState._displayNameToUserIds[strippedDisplayname].push(userId); } } -/** - * Fires whenever the event dictionary in room state is updated. - * @event module:client~MatrixClient#"RoomState.events" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {RoomState} state The room state whose RoomState.events dictionary - * was updated. - * @param {MatrixEvent} prevEvent The event being replaced by the new state, if - * known. Note that this can differ from `getPrevContent()` on the new state event - * as this is the store's view of the last state, not the previous state provided - * by the server. - * @example - * matrixClient.on("RoomState.events", function(event, state, prevEvent){ - * var newStateEvent = event; - * }); - */ - -/** - * Fires whenever a member in the members dictionary is updated in any way. - * @event module:client~MatrixClient#"RoomState.members" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {RoomState} state The room state whose RoomState.members dictionary - * was updated. - * @param {RoomMember} member The room member that was updated. - * @example - * matrixClient.on("RoomState.members", function(event, state, member){ - * var newMembershipState = member.membership; - * }); - */ - -/** -* Fires whenever a member is added to the members dictionary. The RoomMember -* will not be fully populated yet (e.g. no membership state) but will already -* be available in the members dictionary. -* @event module:client~MatrixClient#"RoomState.newMember" -* @param {MatrixEvent} event The matrix event which caused this event to fire. -* @param {RoomState} state The room state whose RoomState.members dictionary -* was updated with a new entry. -* @param {RoomMember} member The room member that was added. -* @example -* matrixClient.on("RoomState.newMember", function(event, state, member){ -* // add event listeners on 'member' -* }); -*/ +exports.RoomState = RoomState; +//# sourceMappingURL=room-state.js.map /***/ }), @@ -56927,11 +170971,9 @@ function _updateDisplayNameCache(roomState, userId, displayName) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RoomSummary = RoomSummary; - +exports.RoomSummary = void 0; /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -56946,67 +170988,64 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** - * @module models/room-summary - */ - /** * Construct a new Room Summary. A summary can be used for display on a recent * list, without having to load the entire room list into memory. - * @constructor - * @param {string} roomId Required. The ID of this room. - * @param {Object} info Optional. The summary info. Additional keys are supported. - * @param {string} info.title The title of the room (e.g. m.room.name) - * @param {string} info.desc The description of the room (e.g. - * m.room.topic) - * @param {Number} info.numMembers The number of joined users. - * @param {string[]} info.aliases The list of aliases for this room. - * @param {Number} info.timestamp The timestamp for this room. + * @param roomId - Required. The ID of this room. + * @param info - Optional. The summary info. Additional keys are supported. */ -function RoomSummary(roomId, info) { - this.roomId = roomId; - this.info = info; +class RoomSummary { + constructor(roomId, info) { + this.roomId = roomId; + } } +exports.RoomSummary = RoomSummary; +//# sourceMappingURL=room-summary.js.map /***/ }), /***/ 7688: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Room = Room; - -var _events = __webpack_require__(8614); - -var _eventTimelineSet = __webpack_require__(7256); - -var _eventTimeline = __webpack_require__(2763); - -var _contentRepo = __webpack_require__(4233); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _event = __webpack_require__(9564); - -var _roomMember = __webpack_require__(7024); - -var _roomSummary = __webpack_require__(6518); - -var _logger = __webpack_require__(3854); - -var _ReEmitter = __webpack_require__(9554); - -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2018, 2019 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +exports.RoomNameType = exports.RoomEvent = exports.Room = exports.NotificationCountType = exports.KNOWN_SAFE_ROOM_VERSION = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _matrixEventsSdk = __nccwpck_require__(9446); +var _eventTimelineSet = __nccwpck_require__(7256); +var _eventTimeline = __nccwpck_require__(2763); +var _contentRepo = __nccwpck_require__(4233); +var _utils = _interopRequireWildcard(__nccwpck_require__(2557)); +var utils = _utils; +var _event = __nccwpck_require__(9564); +var _eventStatus = __nccwpck_require__(8615); +var _roomMember = __nccwpck_require__(7024); +var _roomSummary = __nccwpck_require__(6518); +var _logger = __nccwpck_require__(3854); +var _ReEmitter = __nccwpck_require__(9554); +var _event2 = __nccwpck_require__(7487); +var _client = __nccwpck_require__(9058); +var _filter = __nccwpck_require__(3768); +var _roomState = __nccwpck_require__(1513); +var _beacon = __nccwpck_require__(23); +var _thread = __nccwpck_require__(3379); +var _read_receipts = __nccwpck_require__(3255); +var _relationsContainer = __nccwpck_require__(4061); +var _readReceipt = __nccwpck_require__(1086); +var _poll = __nccwpck_require__(5333); +var _roomReceipts = __nccwpck_require__(4721); +var _compareEventOrdering = __nccwpck_require__(668); +var _membership = __nccwpck_require__(9225); +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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2015 - 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -57020,1931 +171059,3224 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - -/** - * @module models/room - */ // These constants are used as sane defaults when the homeserver doesn't support // the m.room_versions capability. In practice, KNOWN_SAFE_ROOM_VERSION should be // the same as the common default room version whereas SAFE_ROOM_VERSIONS are the // room versions which are considered okay for people to run without being asked // to upgrade (ie: "stable"). Eventually, we should remove these when all homeservers // return an m.room_versions capability. -const KNOWN_SAFE_ROOM_VERSION = '5'; -const SAFE_ROOM_VERSIONS = ['1', '2', '3', '4', '5']; - -function synthesizeReceipt(userId, event, receiptType) { - // console.log("synthesizing receipt for "+event.getId()); - // This is really ugly because JS has no way to express an object literal - // where the name of a key comes from an expression - const fakeReceipt = { - content: {}, - type: "m.receipt", - room_id: event.getRoomId() - }; - fakeReceipt.content[event.getId()] = {}; - fakeReceipt.content[event.getId()][receiptType] = {}; - fakeReceipt.content[event.getId()][receiptType][userId] = { - ts: event.getTs() - }; - return new _event.MatrixEvent(fakeReceipt); -} -/** - * Construct a new Room. - * - *

For a room, we store an ordered sequence of timelines, which may or may not - * be continuous. Each timeline lists a series of events, as well as tracking - * the room state at the start and the end of the timeline. It also tracks - * forward and backward pagination tokens, as well as containing links to the - * next timeline in the sequence. - * - *

There is one special timeline - the 'live' timeline, which represents the - * timeline to which events are being added in real-time as they are received - * from the /sync API. Note that you should not retain references to this - * timeline - even if it is the current timeline right now, it may not remain - * so if the server gives us a timeline gap in /sync. - * - *

In order that we can find events from their ids later, we also maintain a - * map from event_id to timeline and index. - * - * @constructor - * @alias module:models/room - * @param {string} roomId Required. The ID of this room. - * @param {MatrixClient} client Required. The client, used to lazy load members. - * @param {string} myUserId Required. The ID of the syncing user. - * @param {Object=} opts Configuration options - * @param {*} opts.storageToken Optional. The token which a data store can use - * to remember the state of the room. What this means is dependent on the store - * implementation. - * - * @param {String=} opts.pendingEventOrdering Controls where pending messages - * appear in a room's timeline. If "chronological", messages will appear - * in the timeline when the call to sendEvent was made. If - * "detached", pending messages will appear in a separate list, - * accessbile via {@link module:models/room#getPendingEvents}. Default: - * "chronological". - * @param {boolean} [opts.timelineSupport = false] Set to true to enable improved - * timeline support. - * @param {boolean} [opts.unstableClientRelationAggregation = false] - * Optional. Set to true to enable client-side aggregation of event relations - * via `EventTimelineSet#getRelationsForEvent`. - * This feature is currently unstable and the API may change without notice. - * - * @prop {string} roomId The ID of this room. - * @prop {string} name The human-readable display name for this room. - * @prop {Array} timeline The live event timeline for this room, - * with the oldest event at index 0. Present for backwards compatibility - - * prefer getLiveTimeline().getEvents(). - * @prop {object} tags Dict of room tags; the keys are the tag name and the values - * are any metadata associated with the tag - e.g. { "fav" : { order: 1 } } - * @prop {object} accountData Dict of per-room account_data events; the keys are the - * event type and the values are the events. - * @prop {RoomState} oldState The state of the room at the time of the oldest - * event in the live timeline. Present for backwards compatibility - - * prefer getLiveTimeline().getState(EventTimeline.BACKWARDS). - * @prop {RoomState} currentState The state of the room at the time of the - * newest event in the timeline. Present for backwards compatibility - - * prefer getLiveTimeline().getState(EventTimeline.FORWARDS). - * @prop {RoomSummary} summary The room summary. - * @prop {*} storageToken A token which a data store can use to remember - * the state of the room. - */ - - -function Room(roomId, client, myUserId, opts) { - opts = opts || {}; - opts.pendingEventOrdering = opts.pendingEventOrdering || "chronological"; // In some cases, we add listeners for every displayed Matrix event, so it's - // common to have quite a few more than the default limit. - - this.setMaxListeners(100); - this.reEmitter = new _ReEmitter.ReEmitter(this); - - if (["chronological", "detached"].indexOf(opts.pendingEventOrdering) === -1) { - throw new Error("opts.pendingEventOrdering MUST be either 'chronological' or " + "'detached'. Got: '" + opts.pendingEventOrdering + "'"); - } - - this.myUserId = myUserId; - this.roomId = roomId; - this.name = roomId; - this.tags = {// $tagName: { $metadata: $value }, - // $tagName: { $metadata: $value }, - }; - this.accountData = {// $eventType: $event - }; - this.summary = null; - this.storageToken = opts.storageToken; - this._opts = opts; - this._txnToEvent = {}; // Pending in-flight requests { string: MatrixEvent } - // receipts should clobber based on receipt_type and user_id pairs hence - // the form of this structure. This is sub-optimal for the exposed APIs - // which pass in an event ID and get back some receipts, so we also store - // a pre-cached list for this purpose. - - this._receipts = {// receipt_type: { - // user_id: { - // eventId: , - // data: - // } - // } - }; - this._receiptCacheByEventId = {// $event_id: [{ - // type: $type, - // userId: $user_id, - // data: - // }] - }; // only receipts that came from the server, not synthesized ones - - this._realReceipts = {}; - this._notificationCounts = {}; // all our per-room timeline sets. the first one is the unfiltered ones; - // the subsequent ones are the filtered ones in no particular order. - - this._timelineSets = [new _eventTimelineSet.EventTimelineSet(this, opts)]; - this.reEmitter.reEmit(this.getUnfilteredTimelineSet(), ["Room.timeline", "Room.timelineReset"]); - - this._fixUpLegacyTimelineFields(); // any filtered timeline sets we're maintaining for this room - - - this._filteredTimelineSets = {// filter_id: timelineSet - }; - - if (this._opts.pendingEventOrdering == "detached") { - this._pendingEventList = []; - } // read by megolm; boolean value - null indicates "use global value" - - - this._blacklistUnverifiedDevices = null; - this._selfMembership = null; - this._summaryHeroes = null; // awaited by getEncryptionTargetMembers while room members are loading - - this._client = client; - - if (!this._opts.lazyLoadMembers) { - this._membersPromise = Promise.resolve(); - } else { - this._membersPromise = null; - } -} - -utils.inherits(Room, _events.EventEmitter); -/** - * Gets the version of the room - * @returns {string} The version of the room, or null if it could not be determined - */ - -Room.prototype.getVersion = function () { - const createEvent = this.currentState.getStateEvents("m.room.create", ""); - - if (!createEvent) { - _logger.logger.warn("Room " + this.roomId + " does not have an m.room.create event"); - - return '1'; - } - - const ver = createEvent.getContent()['room_version']; - if (ver === undefined) return '1'; - return ver; -}; -/** - * Determines whether this room needs to be upgraded to a new version - * @returns {string?} What version the room should be upgraded to, or null if - * the room does not require upgrading at this time. - * @deprecated Use #getRecommendedVersion() instead - */ - - -Room.prototype.shouldUpgradeToVersion = function () { - // TODO: Remove this function. - // This makes assumptions about which versions are safe, and can easily - // be wrong. Instead, people are encouraged to use getRecommendedVersion - // which determines a safer value. This function doesn't use that function - // because this is not async-capable, and to avoid breaking the contract - // we're deprecating this. - if (!SAFE_ROOM_VERSIONS.includes(this.getVersion())) { - return KNOWN_SAFE_ROOM_VERSION; - } - - return null; -}; -/** - * Determines the recommended room version for the room. This returns an - * object with 3 properties: version as the new version the - * room should be upgraded to (may be the same as the current version); - * needsUpgrade to indicate if the room actually can be - * upgraded (ie: does the current version not match?); and urgent - * to indicate if the new version patches a vulnerability in a previous - * version. - * @returns {Promise<{version: string, needsUpgrade: bool, urgent: bool}>} - * Resolves to the version the room should be upgraded to. - */ - - -Room.prototype.getRecommendedVersion = async function () { - const capabilities = await this._client.getCapabilities(); - let versionCap = capabilities["m.room_versions"]; - - if (!versionCap) { - versionCap = { - default: KNOWN_SAFE_ROOM_VERSION, - available: {} - }; - - for (const safeVer of SAFE_ROOM_VERSIONS) { - versionCap.available[safeVer] = "stable"; - } - } - - let result = this._checkVersionAgainstCapability(versionCap); - - if (result.urgent && result.needsUpgrade) { - // Something doesn't feel right: we shouldn't need to update - // because the version we're on should be in the protocol's - // namespace. This usually means that the server was updated - // before the client was, making us think the newest possible - // room version is not stable. As a solution, we'll refresh - // the capability we're using to determine this. - _logger.logger.warn("Refreshing room version capability because the server looks " + "to be supporting a newer room version we don't know about."); - - const caps = await this._client.getCapabilities(true); - versionCap = caps["m.room_versions"]; - - if (!versionCap) { - _logger.logger.warn("No room version capability - assuming upgrade required."); - - return result; - } else { - result = this._checkVersionAgainstCapability(versionCap); - } - } - - return result; -}; - -Room.prototype._checkVersionAgainstCapability = function (versionCap) { - const currentVersion = this.getVersion(); - - _logger.logger.log(`[${this.roomId}] Current version: ${currentVersion}`); - - _logger.logger.log(`[${this.roomId}] Version capability: `, versionCap); - - const result = { - version: currentVersion, - needsUpgrade: false, - urgent: false - }; // If the room is on the default version then nothing needs to change - - if (currentVersion === versionCap.default) return result; - const stableVersions = Object.keys(versionCap.available).filter(v => versionCap.available[v] === 'stable'); // Check if the room is on an unstable version. We determine urgency based - // off the version being in the Matrix spec namespace or not (if the version - // is in the current namespace and unstable, the room is probably vulnerable). - - if (!stableVersions.includes(currentVersion)) { - result.version = versionCap.default; - result.needsUpgrade = true; - result.urgent = !!this.getVersion().match(/^[0-9]+[0-9.]*$/g); - - if (result.urgent) { - _logger.logger.warn(`URGENT upgrade required on ${this.roomId}`); - } else { - _logger.logger.warn(`Non-urgent upgrade required on ${this.roomId}`); - } - - return result; - } // The room is on a stable, but non-default, version by this point. - // No upgrade needed. - - - return result; -}; -/** - * Determines whether the given user is permitted to perform a room upgrade - * @param {String} userId The ID of the user to test against - * @returns {bool} True if the given user is permitted to upgrade the room - */ - - -Room.prototype.userMayUpgradeRoom = function (userId) { - return this.currentState.maySendStateEvent("m.room.tombstone", userId); -}; -/** - * Get the list of pending sent events for this room - * - * @return {module:models/event.MatrixEvent[]} A list of the sent events - * waiting for remote echo. - * - * @throws If opts.pendingEventOrdering was not 'detached' - */ - - -Room.prototype.getPendingEvents = function () { - if (this._opts.pendingEventOrdering !== "detached") { - throw new Error("Cannot call getPendingEvents with pendingEventOrdering == " + this._opts.pendingEventOrdering); - } - - return this._pendingEventList; -}; -/** - * Check whether the pending event list contains a given event by ID. - * - * @param {string} eventId The event ID to check for. - * @return {boolean} - * @throws If opts.pendingEventOrdering was not 'detached' - */ - - -Room.prototype.hasPendingEvent = function (eventId) { - if (this._opts.pendingEventOrdering !== "detached") { - throw new Error("Cannot call hasPendingEvent with pendingEventOrdering == " + this._opts.pendingEventOrdering); - } - - return this._pendingEventList.some(event => event.getId() === eventId); -}; -/** - * Get the live unfiltered timeline for this room. - * - * @return {module:models/event-timeline~EventTimeline} live timeline - */ - - -Room.prototype.getLiveTimeline = function () { - return this.getUnfilteredTimelineSet().getLiveTimeline(); -}; -/** - * Get the timestamp of the last message in the room - * - * @return {number} the timestamp of the last message in the room - */ - - -Room.prototype.getLastActiveTimestamp = function () { - const timeline = this.getLiveTimeline(); - const events = timeline.getEvents(); - - if (events.length) { - const lastEvent = events[events.length - 1]; - return lastEvent.getTs(); - } else { - return Number.MIN_SAFE_INTEGER; - } -}; -/** - * @param {string} myUserId the user id for the logged in member - * @return {string} the membership type (join | leave | invite) for the logged in user - */ - - -Room.prototype.getMyMembership = function () { - return this._selfMembership; -}; -/** - * If this room is a DM we're invited to, - * try to find out who invited us - * @return {string} user id of the inviter - */ - - -Room.prototype.getDMInviter = function () { - if (this.myUserId) { - const me = this.getMember(this.myUserId); - - if (me) { - return me.getDMInviter(); - } - } - - if (this._selfMembership === "invite") { - // fall back to summary information - const memberCount = this.getInvitedAndJoinedMemberCount(); - - if (memberCount == 2 && this._summaryHeroes.length) { - return this._summaryHeroes[0]; - } - } -}; -/** - * Assuming this room is a DM room, tries to guess with which user. - * @return {string} user id of the other member (could be syncing user) - */ - - -Room.prototype.guessDMUserId = function () { - const me = this.getMember(this.myUserId); - - if (me) { - const inviterId = me.getDMInviter(); - - if (inviterId) { - return inviterId; - } - } // remember, we're assuming this room is a DM, - // so returning the first member we find should be fine - - - const hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length; - - if (hasHeroes) { - return this._summaryHeroes[0]; - } - - const members = this.currentState.getMembers(); - const anyMember = members.find(m => m.userId !== this.myUserId); - - if (anyMember) { - return anyMember.userId; - } // it really seems like I'm the only user in the room - // so I probably created a room with just me in it - // and marked it as a DM. Ok then - - - return this.myUserId; -}; - -Room.prototype.getAvatarFallbackMember = function () { - const memberCount = this.getInvitedAndJoinedMemberCount(); - - if (memberCount > 2) { - return; - } - - const hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length; - - if (hasHeroes) { - const availableMember = this._summaryHeroes.map(userId => { - return this.getMember(userId); - }).find(member => !!member); - - if (availableMember) { - return availableMember; - } - } - - const members = this.currentState.getMembers(); // could be different than memberCount - // as this includes left members - - if (members.length <= 2) { - const availableMember = members.find(m => { - return m.userId !== this.myUserId; - }); - - if (availableMember) { - return availableMember; - } - } // if all else fails, try falling back to a user, - // and create a one-off member for it - - - if (hasHeroes) { - const availableUser = this._summaryHeroes.map(userId => { - return this._client.getUser(userId); - }).find(user => !!user); - - if (availableUser) { - const member = new _roomMember.RoomMember(this.roomId, availableUser.userId); - member.user = availableUser; - return member; - } - } -}; -/** - * Sets the membership this room was received as during sync - * @param {string} membership join | leave | invite - */ - - -Room.prototype.updateMyMembership = function (membership) { - const prevMembership = this._selfMembership; - this._selfMembership = membership; - - if (prevMembership !== membership) { - if (membership === "leave") { - this._cleanupAfterLeaving(); - } - - this.emit("Room.myMembership", this, membership, prevMembership); - } -}; - -Room.prototype._loadMembersFromServer = async function () { - const lastSyncToken = this._client.store.getSyncToken(); - - const queryString = utils.encodeParams({ - not_membership: "leave", - at: lastSyncToken - }); - const path = utils.encodeUri("/rooms/$roomId/members?" + queryString, { - $roomId: this.roomId - }); - const http = this._client._http; - const response = await http.authedRequest(undefined, "GET", path); - return response.chunk; -}; - -Room.prototype._loadMembers = async function () { - // were the members loaded from the server? - let fromServer = false; - let rawMembersEvents = await this._client.store.getOutOfBandMembers(this.roomId); - - if (rawMembersEvents === null) { - fromServer = true; - rawMembersEvents = await this._loadMembersFromServer(); - - _logger.logger.log(`LL: got ${rawMembersEvents.length} ` + `members from server for room ${this.roomId}`); - } - - const memberEvents = rawMembersEvents.map(this._client.getEventMapper()); - return { - memberEvents, - fromServer - }; -}; -/** - * Preloads the member list in case lazy loading - * of memberships is in use. Can be called multiple times, - * it will only preload once. - * @return {Promise} when preloading is done and - * accessing the members on the room will take - * all members in the room into account - */ - - -Room.prototype.loadMembersIfNeeded = function () { - if (this._membersPromise) { - return this._membersPromise; - } // mark the state so that incoming messages while - // the request is in flight get marked as superseding - // the OOB members - - - this.currentState.markOutOfBandMembersStarted(); - - const inMemoryUpdate = this._loadMembers().then(result => { - this.currentState.setOutOfBandMembers(result.memberEvents); // now the members are loaded, start to track the e2e devices if needed - - if (this._client.isCryptoEnabled() && this._client.isRoomEncrypted(this.roomId)) { - this._client._crypto.trackRoomDevices(this.roomId); - } - - return result.fromServer; - }).catch(err => { - // allow retries on fail - this._membersPromise = null; - this.currentState.markOutOfBandMembersFailed(); - throw err; - }); // update members in storage, but don't wait for it - - - inMemoryUpdate.then(fromServer => { - if (fromServer) { - const oobMembers = this.currentState.getMembers().filter(m => m.isOutOfBand()).map(m => m.events.member.event); - - _logger.logger.log(`LL: telling store to write ${oobMembers.length}` + ` members for room ${this.roomId}`); - - const store = this._client.store; - return store.setOutOfBandMembers(this.roomId, oobMembers) // swallow any IDB error as we don't want to fail - // because of this - .catch(err => { - _logger.logger.log("LL: storing OOB room members failed, oh well", err); - }); - } - }).catch(err => { - // as this is not awaited anywhere, - // at least show the error in the console - _logger.logger.error(err); - }); - this._membersPromise = inMemoryUpdate; - return this._membersPromise; -}; -/** - * Removes the lazily loaded members from storage if needed - */ - - -Room.prototype.clearLoadedMembersIfNeeded = async function () { - if (this._opts.lazyLoadMembers && this._membersPromise) { - await this.loadMembersIfNeeded(); - await this._client.store.clearOutOfBandMembers(this.roomId); - this.currentState.clearOutOfBandMembers(); - this._membersPromise = null; - } -}; -/** - * called when sync receives this room in the leave section - * to do cleanup after leaving a room. Possibly called multiple times. - */ - - -Room.prototype._cleanupAfterLeaving = function () { - this.clearLoadedMembersIfNeeded().catch(err => { - _logger.logger.error(`error after clearing loaded members from ` + `room ${this.roomId} after leaving`); - - _logger.logger.log(err); - }); -}; -/** - * Reset the live timeline of all timelineSets, and start new ones. - * - *

This is used when /sync returns a 'limited' timeline. - * - * @param {string=} backPaginationToken token for back-paginating the new timeline - * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline, - * if absent or null, all timelines are reset, removing old ones (including the previous live - * timeline which would otherwise be unable to paginate forwards without this token). - * Removing just the old live timeline whilst preserving previous ones is not supported. - */ - - -Room.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) { - for (let i = 0; i < this._timelineSets.length; i++) { - this._timelineSets[i].resetLiveTimeline(backPaginationToken, forwardPaginationToken); - } - - this._fixUpLegacyTimelineFields(); -}; -/** - * Fix up this.timeline, this.oldState and this.currentState - * - * @private - */ - - -Room.prototype._fixUpLegacyTimelineFields = function () { - // maintain this.timeline as a reference to the live timeline, - // and this.oldState and this.currentState as references to the - // state at the start and end of that timeline. These are more - // for backwards-compatibility than anything else. - this.timeline = this.getLiveTimeline().getEvents(); - this.oldState = this.getLiveTimeline().getState(_eventTimeline.EventTimeline.BACKWARDS); - this.currentState = this.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); -}; -/** - * Returns whether there are any devices in the room that are unverified - * - * Note: Callers should first check if crypto is enabled on this device. If it is - * disabled, then we aren't tracking room devices at all, so we can't answer this, and an - * error will be thrown. - * - * @return {bool} the result - */ - - -Room.prototype.hasUnverifiedDevices = async function () { - if (!this._client.isRoomEncrypted(this.roomId)) { - return false; - } - - const e2eMembers = await this.getEncryptionTargetMembers(); - - for (const member of e2eMembers) { - const devices = this._client.getStoredDevicesForUser(member.userId); - - if (devices.some(device => device.isUnverified())) { - return true; - } - } - - return false; -}; -/** - * Return the timeline sets for this room. - * @return {EventTimelineSet[]} array of timeline sets for this room - */ - - -Room.prototype.getTimelineSets = function () { - return this._timelineSets; -}; -/** - * Helper to return the main unfiltered timeline set for this room - * @return {EventTimelineSet} room's unfiltered timeline set - */ - - -Room.prototype.getUnfilteredTimelineSet = function () { - return this._timelineSets[0]; -}; -/** - * Get the timeline which contains the given event from the unfiltered set, if any - * - * @param {string} eventId event ID to look for - * @return {?module:models/event-timeline~EventTimeline} timeline containing - * the given event, or null if unknown - */ - - -Room.prototype.getTimelineForEvent = function (eventId) { - return this.getUnfilteredTimelineSet().getTimelineForEvent(eventId); -}; -/** - * Add a new timeline to this room's unfiltered timeline set - * - * @return {module:models/event-timeline~EventTimeline} newly-created timeline - */ - - -Room.prototype.addTimeline = function () { - return this.getUnfilteredTimelineSet().addTimeline(); -}; -/** - * Get an event which is stored in our unfiltered timeline set - * - * @param {string} eventId event ID to look for - * @return {?module:models/event.MatrixEvent} the given event, or undefined if unknown - */ - - -Room.prototype.findEventById = function (eventId) { - return this.getUnfilteredTimelineSet().findEventById(eventId); -}; -/** - * Get one of the notification counts for this room - * @param {String} type The type of notification count to get. default: 'total' - * @return {Number} The notification count, or undefined if there is no count - * for this type. - */ - - -Room.prototype.getUnreadNotificationCount = function (type) { - type = type || 'total'; - return this._notificationCounts[type]; -}; -/** - * Set one of the notification counts for this room - * @param {String} type The type of notification count to set. - * @param {Number} count The new count - */ - - -Room.prototype.setUnreadNotificationCount = function (type, count) { - this._notificationCounts[type] = count; -}; - -Room.prototype.setSummary = function (summary) { - const heroes = summary["m.heroes"]; - const joinedCount = summary["m.joined_member_count"]; - const invitedCount = summary["m.invited_member_count"]; - - if (Number.isInteger(joinedCount)) { - this.currentState.setJoinedMemberCount(joinedCount); - } - - if (Number.isInteger(invitedCount)) { - this.currentState.setInvitedMemberCount(invitedCount); - } - - if (Array.isArray(heroes)) { - // be cautious about trusting server values, - // and make sure heroes doesn't contain our own id - // just to be sure - this._summaryHeroes = heroes.filter(userId => { - return userId !== this.myUserId; - }); - } -}; -/** - * Whether to send encrypted messages to devices within this room. - * @param {Boolean} value true to blacklist unverified devices, null - * to use the global value for this room. - */ - - -Room.prototype.setBlacklistUnverifiedDevices = function (value) { - this._blacklistUnverifiedDevices = value; -}; -/** - * Whether to send encrypted messages to devices within this room. - * @return {Boolean} true if blacklisting unverified devices, null - * if the global value should be used for this room. - */ - - -Room.prototype.getBlacklistUnverifiedDevices = function () { - return this._blacklistUnverifiedDevices; -}; -/** - * Get the avatar URL for a room if one was set. - * @param {String} baseUrl The homeserver base URL. See - * {@link module:client~MatrixClient#getHomeserverUrl}. - * @param {Number} width The desired width of the thumbnail. - * @param {Number} height The desired height of the thumbnail. - * @param {string} resizeMethod The thumbnail resize method to use, either - * "crop" or "scale". - * @param {boolean} allowDefault True to allow an identicon for this room if an - * avatar URL wasn't explicitly set. Default: true. (Deprecated) - * @return {?string} the avatar URL or null. - */ - - -Room.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault) { - const roomAvatarEvent = this.currentState.getStateEvents("m.room.avatar", ""); - - if (allowDefault === undefined) { - allowDefault = true; - } - - if (!roomAvatarEvent && !allowDefault) { - return null; - } - - const mainUrl = roomAvatarEvent ? roomAvatarEvent.getContent().url : null; - - if (mainUrl) { - return (0, _contentRepo.getHttpUriForMxc)(baseUrl, mainUrl, width, height, resizeMethod); - } - - return null; -}; -/** - * Get the aliases this room has according to the room's state - * The aliases returned by this function may not necessarily - * still point to this room. - * @return {array} The room's alias as an array of strings - */ - - -Room.prototype.getAliases = function () { - const aliasStrings = []; - const aliasEvents = this.currentState.getStateEvents("m.room.aliases"); - - if (aliasEvents) { - for (let i = 0; i < aliasEvents.length; ++i) { - const aliasEvent = aliasEvents[i]; - - if (utils.isArray(aliasEvent.getContent().aliases)) { - const filteredAliases = aliasEvent.getContent().aliases.filter(a => { - if (typeof a !== "string") return false; - if (a[0] !== '#') return false; - if (!a.endsWith(`:${aliasEvent.getStateKey()}`)) return false; // It's probably valid by here. - - return true; - }); - Array.prototype.push.apply(aliasStrings, filteredAliases); - } - } - } - - return aliasStrings; -}; -/** - * Get this room's canonical alias - * The alias returned by this function may not necessarily - * still point to this room. - * @return {?string} The room's canonical alias, or null if there is none - */ - - -Room.prototype.getCanonicalAlias = function () { - const canonicalAlias = this.currentState.getStateEvents("m.room.canonical_alias", ""); - - if (canonicalAlias) { - return canonicalAlias.getContent().alias || null; - } - - return null; -}; -/** - * Get this room's alternative aliases - * @return {array} The room's alternative aliases, or an empty array - */ - - -Room.prototype.getAltAliases = function () { - const canonicalAlias = this.currentState.getStateEvents("m.room.canonical_alias", ""); - - if (canonicalAlias) { - return canonicalAlias.getContent().alt_aliases || []; - } - - return []; -}; -/** - * Add events to a timeline - * - *

Will fire "Room.timeline" for each event added. - * - * @param {MatrixEvent[]} events A list of events to add. - * - * @param {boolean} toStartOfTimeline True to add these events to the start - * (oldest) instead of the end (newest) of the timeline. If true, the oldest - * event will be the last element of 'events'. - * - * @param {module:models/event-timeline~EventTimeline} timeline timeline to - * add events to. - * - * @param {string=} paginationToken token for the next batch of events - * - * @fires module:client~MatrixClient#event:"Room.timeline" - * - */ - - -Room.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) { - timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken); -}; -/** - * Get a member from the current room state. - * @param {string} userId The user ID of the member. - * @return {RoomMember} The member or null. - */ - - -Room.prototype.getMember = function (userId) { - return this.currentState.getMember(userId); -}; -/** - * Get a list of members whose membership state is "join". - * @return {RoomMember[]} A list of currently joined members. - */ - - -Room.prototype.getJoinedMembers = function () { - return this.getMembersWithMembership("join"); -}; -/** - * Returns the number of joined members in this room - * This method caches the result. - * This is a wrapper around the method of the same name in roomState, returning - * its result for the room's current state. - * @return {integer} The number of members in this room whose membership is 'join' - */ - - -Room.prototype.getJoinedMemberCount = function () { - return this.currentState.getJoinedMemberCount(); -}; -/** - * Returns the number of invited members in this room - * @return {integer} The number of members in this room whose membership is 'invite' - */ - - -Room.prototype.getInvitedMemberCount = function () { - return this.currentState.getInvitedMemberCount(); -}; -/** - * Returns the number of invited + joined members in this room - * @return {integer} The number of members in this room whose membership is 'invite' or 'join' - */ - - -Room.prototype.getInvitedAndJoinedMemberCount = function () { - return this.getInvitedMemberCount() + this.getJoinedMemberCount(); -}; -/** - * Get a list of members with given membership state. - * @param {string} membership The membership state. - * @return {RoomMember[]} A list of members with the given membership state. - */ - - -Room.prototype.getMembersWithMembership = function (membership) { - return utils.filter(this.currentState.getMembers(), function (m) { - return m.membership === membership; - }); -}; -/** - * Get a list of members we should be encrypting for in this room - * @return {Promise} A list of members who - * we should encrypt messages for in this room. - */ - - -Room.prototype.getEncryptionTargetMembers = async function () { - await this.loadMembersIfNeeded(); - let members = this.getMembersWithMembership("join"); - - if (this.shouldEncryptForInvitedMembers()) { - members = members.concat(this.getMembersWithMembership("invite")); - } - - return members; -}; -/** - * Determine whether we should encrypt messages for invited users in this room - * @return {boolean} if we should encrypt messages for invited users - */ - - -Room.prototype.shouldEncryptForInvitedMembers = function () { - const ev = this.currentState.getStateEvents("m.room.history_visibility", ""); - return ev && ev.getContent() && ev.getContent().history_visibility !== "joined"; -}; -/** - * Get the default room name (i.e. what a given user would see if the - * room had no m.room.name) - * @param {string} userId The userId from whose perspective we want - * to calculate the default name - * @return {string} The default room name - */ - - -Room.prototype.getDefaultRoomName = function (userId) { - return calculateRoomName(this, userId, true); -}; -/** -* Check if the given user_id has the given membership state. -* @param {string} userId The user ID to check. -* @param {string} membership The membership e.g. 'join' -* @return {boolean} True if this user_id has the given membership state. -*/ - - -Room.prototype.hasMembershipState = function (userId, membership) { - const member = this.getMember(userId); - - if (!member) { - return false; - } - - return member.membership === membership; -}; -/** - * Add a timelineSet for this room with the given filter - * @param {Filter} filter The filter to be applied to this timelineSet - * @return {EventTimelineSet} The timelineSet - */ - - -Room.prototype.getOrCreateFilteredTimelineSet = function (filter) { - if (this._filteredTimelineSets[filter.filterId]) { - return this._filteredTimelineSets[filter.filterId]; - } - - const opts = Object.assign({ - filter: filter - }, this._opts); - const timelineSet = new _eventTimelineSet.EventTimelineSet(this, opts); - this.reEmitter.reEmit(timelineSet, ["Room.timeline", "Room.timelineReset"]); - this._filteredTimelineSets[filter.filterId] = timelineSet; - - this._timelineSets.push(timelineSet); // populate up the new timelineSet with filtered events from our live - // unfiltered timeline. - // - // XXX: This is risky as our timeline - // may have grown huge and so take a long time to filter. - // see https://github.com/vector-im/vector-web/issues/2109 - - - const unfilteredLiveTimeline = this.getLiveTimeline(); - unfilteredLiveTimeline.getEvents().forEach(function (event) { - timelineSet.addLiveEvent(event); - }); // find the earliest unfiltered timeline - - let timeline = unfilteredLiveTimeline; - - while (timeline.getNeighbouringTimeline(_eventTimeline.EventTimeline.BACKWARDS)) { - timeline = timeline.getNeighbouringTimeline(_eventTimeline.EventTimeline.BACKWARDS); - } - - timelineSet.getLiveTimeline().setPaginationToken(timeline.getPaginationToken(_eventTimeline.EventTimeline.BACKWARDS), _eventTimeline.EventTimeline.BACKWARDS); // alternatively, we could try to do something like this to try and re-paginate - // in the filtered events from nothing, but Mark says it's an abuse of the API - // to do so: - // - // timelineSet.resetLiveTimeline( - // unfilteredLiveTimeline.getPaginationToken(EventTimeline.FORWARDS) - // ); - - return timelineSet; -}; -/** - * Forget the timelineSet for this room with the given filter - * - * @param {Filter} filter the filter whose timelineSet is to be forgotten - */ - - -Room.prototype.removeFilteredTimelineSet = function (filter) { - const timelineSet = this._filteredTimelineSets[filter.filterId]; - delete this._filteredTimelineSets[filter.filterId]; - - const i = this._timelineSets.indexOf(timelineSet); - - if (i > -1) { - this._timelineSets.splice(i, 1); - } -}; -/** - * Add an event to the end of this room's live timelines. Will fire - * "Room.timeline". - * - * @param {MatrixEvent} event Event to be added - * @param {string?} duplicateStrategy 'ignore' or 'replace' - * @param {boolean} fromCache whether the sync response came from cache - * @fires module:client~MatrixClient#event:"Room.timeline" - * @private - */ - - -Room.prototype._addLiveEvent = function (event, duplicateStrategy, fromCache) { - if (event.isRedaction()) { - const redactId = event.event.redacts; // if we know about this event, redact its contents now. - - const redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId); - - if (redactedEvent) { - redactedEvent.makeRedacted(event); // If this is in the current state, replace it with the redacted version - - if (redactedEvent.getStateKey()) { - const currentStateEvent = this.currentState.getStateEvents(redactedEvent.getType(), redactedEvent.getStateKey()); - - if (currentStateEvent.getId() === redactedEvent.getId()) { - this.currentState.setStateEvents([redactedEvent]); +const KNOWN_SAFE_ROOM_VERSION = exports.KNOWN_SAFE_ROOM_VERSION = "10"; +const SAFE_ROOM_VERSIONS = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]; +// When inserting a visibility event affecting event `eventId`, we +// need to scan through existing visibility events for `eventId`. +// In theory, this could take an unlimited amount of time if: +// +// - the visibility event was sent by a moderator; and +// - `eventId` already has many visibility changes (usually, it should +// be 2 or less); and +// - for some reason, the visibility changes are received out of order +// (usually, this shouldn't happen at all). +// +// For this reason, we limit the number of events to scan through, +// expecting that a broken visibility change for a single event in +// an extremely uncommon case (possibly a DoS) is a small +// price to pay to keep matrix-js-sdk responsive. +const MAX_NUMBER_OF_VISIBILITY_EVENTS_TO_SCAN_THROUGH = 30; +let NotificationCountType = exports.NotificationCountType = /*#__PURE__*/function (NotificationCountType) { + NotificationCountType["Highlight"] = "highlight"; + NotificationCountType["Total"] = "total"; + return NotificationCountType; +}({}); +let RoomEvent = exports.RoomEvent = /*#__PURE__*/function (RoomEvent) { + RoomEvent["MyMembership"] = "Room.myMembership"; + RoomEvent["Tags"] = "Room.tags"; + RoomEvent["AccountData"] = "Room.accountData"; + RoomEvent["Receipt"] = "Room.receipt"; + RoomEvent["Name"] = "Room.name"; + RoomEvent["Redaction"] = "Room.redaction"; + RoomEvent["RedactionCancelled"] = "Room.redactionCancelled"; + RoomEvent["LocalEchoUpdated"] = "Room.localEchoUpdated"; + RoomEvent["Timeline"] = "Room.timeline"; + RoomEvent["TimelineReset"] = "Room.timelineReset"; + RoomEvent["TimelineRefresh"] = "Room.TimelineRefresh"; + RoomEvent["OldStateUpdated"] = "Room.OldStateUpdated"; + RoomEvent["CurrentStateUpdated"] = "Room.CurrentStateUpdated"; + RoomEvent["HistoryImportedWithinTimeline"] = "Room.historyImportedWithinTimeline"; + RoomEvent["UnreadNotifications"] = "Room.UnreadNotifications"; + RoomEvent["Summary"] = "Room.Summary"; + return RoomEvent; +}({}); +class Room extends _readReceipt.ReadReceipt { + /** + * Construct a new Room. + * + *

For a room, we store an ordered sequence of timelines, which may or may not + * be continuous. Each timeline lists a series of events, as well as tracking + * the room state at the start and the end of the timeline. It also tracks + * forward and backward pagination tokens, as well as containing links to the + * next timeline in the sequence. + * + *

There is one special timeline - the 'live' timeline, which represents the + * timeline to which events are being added in real-time as they are received + * from the /sync API. Note that you should not retain references to this + * timeline - even if it is the current timeline right now, it may not remain + * so if the server gives us a timeline gap in /sync. + * + *

In order that we can find events from their ids later, we also maintain a + * map from event_id to timeline and index. + * + * @param roomId - Required. The ID of this room. + * @param client - Required. The client, used to lazy load members. + * @param myUserId - Required. The ID of the syncing user. + * @param opts - Configuration options + */ + constructor(roomId, client, myUserId, opts = {}) { + super(); + // In some cases, we add listeners for every displayed Matrix event, so it's + // common to have quite a few more than the default limit. + (0, _defineProperty2.default)(this, "txnToEvent", new Map()); + // Pending in-flight requests { string: MatrixEvent } + (0, _defineProperty2.default)(this, "notificationCounts", {}); + (0, _defineProperty2.default)(this, "threadNotifications", new Map()); + (0, _defineProperty2.default)(this, "cachedThreadReadReceipts", new Map()); + // Useful to know at what point the current user has started using threads in this room + (0, _defineProperty2.default)(this, "oldestThreadedReceiptTs", Infinity); + /** + * A record of the latest unthread receipts per user + * This is useful in determining whether a user has read a thread or not + */ + (0, _defineProperty2.default)(this, "unthreadedReceipts", new Map()); + (0, _defineProperty2.default)(this, "polls", new Map()); + /** + * Empty array if the timeline sets have not been initialised. After initialisation: + * 0: All threads + * 1: Threads the current user has participated in + */ + (0, _defineProperty2.default)(this, "threadsTimelineSets", []); + // any filtered timeline sets we're maintaining for this room + (0, _defineProperty2.default)(this, "filteredTimelineSets", {}); + // filter_id: timelineSet + (0, _defineProperty2.default)(this, "timelineNeedsRefresh", false); + (0, _defineProperty2.default)(this, "summaryHeroes", null); + // flags to stop logspam about missing m.room.create events + (0, _defineProperty2.default)(this, "getTypeWarning", false); + (0, _defineProperty2.default)(this, "getVersionWarning", false); + /** + * Dict of room tags; the keys are the tag name and the values + * are any metadata associated with the tag - e.g. `{ "fav" : { order: 1 } }` + */ + (0, _defineProperty2.default)(this, "tags", {}); + // $tagName: { $metadata: $value } + /** + * accountData Dict of per-room account_data events; the keys are the + * event type and the values are the events. + */ + (0, _defineProperty2.default)(this, "accountData", new Map()); + // $eventType: $event + /** + * The room summary. + */ + (0, _defineProperty2.default)(this, "summary", null); + (0, _defineProperty2.default)(this, "relations", new _relationsContainer.RelationsContainer(this.client, this)); + /** + * A collection of events known by the client + * This is not a comprehensive list of the threads that exist in this room + */ + (0, _defineProperty2.default)(this, "threads", new Map()); + /** + * A mapping of eventId to all visibility changes to apply + * to the event, by chronological order, as per + * https://github.com/matrix-org/matrix-doc/pull/3531 + * + * # Invariants + * + * - within each list, all events are classed by + * chronological order; + * - all events are events such that + * `asVisibilityEvent()` returns a non-null `IVisibilityChange`; + * - within each list with key `eventId`, all events + * are in relation to `eventId`. + * + * @experimental + */ + (0, _defineProperty2.default)(this, "visibilityEvents", new Map()); + /** + * The latest receipts (synthetic and real) for each user in each thread + * (and unthreaded). + */ + (0, _defineProperty2.default)(this, "roomReceipts", new _roomReceipts.RoomReceipts(this)); + (0, _defineProperty2.default)(this, "threadTimelineSetsPromise", null); + (0, _defineProperty2.default)(this, "threadsReady", false); + (0, _defineProperty2.default)(this, "updateThreadRootEvents", (thread, toStartOfTimeline, recreateEvent) => { + if (thread.length) { + var _this$threadsTimeline; + this.updateThreadRootEvent((_this$threadsTimeline = this.threadsTimelineSets) === null || _this$threadsTimeline === void 0 ? void 0 : _this$threadsTimeline[0], thread, toStartOfTimeline, recreateEvent); + if (thread.hasCurrentUserParticipated) { + var _this$threadsTimeline2; + this.updateThreadRootEvent((_this$threadsTimeline2 = this.threadsTimelineSets) === null || _this$threadsTimeline2 === void 0 ? void 0 : _this$threadsTimeline2[1], thread, toStartOfTimeline, recreateEvent); } } - - this.emit("Room.redaction", event, this); // TODO: we stash user displaynames (among other things) in - // RoomMember objects which are then attached to other events - // (in the sender and target fields). We should get those - // RoomMember objects to update themselves when the events that - // they are based on are changed. - } // FIXME: apply redactions to notification list - // NB: We continue to add the redaction event to the timeline so - // clients can say "so and so redacted an event" if they wish to. Also - // this may be needed to trigger an update. - - } - - if (event.getUnsigned().transaction_id) { - const existingEvent = this._txnToEvent[event.getUnsigned().transaction_id]; - - if (existingEvent) { - // remote echo of an event we sent earlier - this._handleRemoteEcho(event, existingEvent); - - return; - } - } // add to our timeline sets - - - for (let i = 0; i < this._timelineSets.length; i++) { - this._timelineSets[i].addLiveEvent(event, duplicateStrategy, fromCache); - } // synthesize and inject implicit read receipts - // Done after adding the event because otherwise the app would get a read receipt - // pointing to an event that wasn't yet in the timeline - // Don't synthesize RR for m.room.redaction as this causes the RR to go missing. - - - if (event.sender && event.getType() !== "m.room.redaction") { - this.addReceipt(synthesizeReceipt(event.sender.userId, event, "m.read"), true); // Any live events from a user could be taken as implicit - // presence information: evidence that they are currently active. - // ...except in a world where we use 'user.currentlyActive' to reduce - // presence spam, this isn't very useful - we'll get a transition when - // they are no longer currently active anyway. So don't bother to - // reset the lastActiveAgo and lastPresenceTs from the RoomState's user. - } -}; -/** - * Add a pending outgoing event to this room. - * - *

The event is added to either the pendingEventList, or the live timeline, - * depending on the setting of opts.pendingEventOrdering. - * - *

This is an internal method, intended for use by MatrixClient. - * - * @param {module:models/event.MatrixEvent} event The event to add. - * - * @param {string} txnId Transaction id for this outgoing event - * - * @fires module:client~MatrixClient#event:"Room.localEchoUpdated" - * - * @throws if the event doesn't have status SENDING, or we aren't given a - * unique transaction id. - */ - - -Room.prototype.addPendingEvent = function (event, txnId) { - if (event.status !== _event.EventStatus.SENDING) { - throw new Error("addPendingEvent called on an event with status " + event.status); - } - - if (this._txnToEvent[txnId]) { - throw new Error("addPendingEvent called on an event with known txnId " + txnId); - } // call setEventMetadata to set up event.sender etc - // as event is shared over all timelineSets, we set up its metadata based - // on the unfiltered timelineSet. - - - _eventTimeline.EventTimeline.setEventMetadata(event, this.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS), false); - - this._txnToEvent[txnId] = event; - - if (this._opts.pendingEventOrdering == "detached") { - if (this._pendingEventList.some(e => e.status === _event.EventStatus.NOT_SENT)) { - _logger.logger.warn("Setting event as NOT_SENT due to messages in the same state"); - - event.setStatus(_event.EventStatus.NOT_SENT); - } - - this._pendingEventList.push(event); - - if (event.isRelation()) { - // For pending events, add them to the relations collection immediately. - // (The alternate case below already covers this as part of adding to - // the timeline set.) - this._aggregateNonLiveRelation(event); - } - - if (event.isRedaction()) { - const redactId = event.event.redacts; - - let redactedEvent = this._pendingEventList && this._pendingEventList.find(e => e.getId() === redactId); - - if (!redactedEvent) { - redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId); - } - - if (redactedEvent) { - redactedEvent.markLocallyRedacted(event); - this.emit("Room.redaction", event, this); - } - } - } else { - for (let i = 0; i < this._timelineSets.length; i++) { - const timelineSet = this._timelineSets[i]; - - if (timelineSet.getFilter()) { - if (timelineSet.getFilter().filterRoomTimeline([event]).length) { - timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false); - } - } else { - timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false); - } - } - } - - this.emit("Room.localEchoUpdated", event, this, null, null); -}; -/** - * Used to aggregate the local echo for a relation, and also - * for re-applying a relation after it's redaction has been cancelled, - * as the local echo for the redaction of the relation would have - * un-aggregated the relation. Note that this is different from regular messages, - * which are just kept detached for their local echo. - * - * Also note that live events are aggregated in the live EventTimelineSet. - * @param {module:models/event.MatrixEvent} event the relation event that needs to be aggregated. - */ - - -Room.prototype._aggregateNonLiveRelation = function (event) { - // TODO: We should consider whether this means it would be a better - // design to lift the relations handling up to the room instead. - for (let i = 0; i < this._timelineSets.length; i++) { - const timelineSet = this._timelineSets[i]; - - if (timelineSet.getFilter()) { - if (timelineSet.getFilter().filterRoomTimeline([event]).length) { - timelineSet.aggregateRelations(event); - } - } else { - timelineSet.aggregateRelations(event); - } - } -}; -/** - * Deal with the echo of a message we sent. - * - *

We move the event to the live timeline if it isn't there already, and - * update it. - * - * @param {module:models/event.MatrixEvent} remoteEvent The event received from - * /sync - * @param {module:models/event.MatrixEvent} localEvent The local echo, which - * should be either in the _pendingEventList or the timeline. - * - * @fires module:client~MatrixClient#event:"Room.localEchoUpdated" - * @private - */ - - -Room.prototype._handleRemoteEcho = function (remoteEvent, localEvent) { - const oldEventId = localEvent.getId(); - const newEventId = remoteEvent.getId(); - const oldStatus = localEvent.status; - - _logger.logger.debug(`Got remote echo for event ${oldEventId} -> ${newEventId} ` + `old status ${oldStatus}`); // no longer pending - - - delete this._txnToEvent[remoteEvent.getUnsigned().transaction_id]; // if it's in the pending list, remove it - - if (this._pendingEventList) { - utils.removeElement(this._pendingEventList, function (ev) { - return ev.getId() == oldEventId; - }, false); - } // replace the event source (this will preserve the plaintext payload if - // any, which is good, because we don't want to try decoding it again). - - - localEvent.handleRemoteEcho(remoteEvent.event); - - for (let i = 0; i < this._timelineSets.length; i++) { - const timelineSet = this._timelineSets[i]; // if it's already in the timeline, update the timeline map. If it's not, add it. - - timelineSet.handleRemoteEcho(localEvent, oldEventId, newEventId); - } - - this.emit("Room.localEchoUpdated", localEvent, this, oldEventId, oldStatus); -}; -/* a map from current event status to a list of allowed next statuses - */ - - -const ALLOWED_TRANSITIONS = {}; -ALLOWED_TRANSITIONS[_event.EventStatus.ENCRYPTING] = [_event.EventStatus.SENDING, _event.EventStatus.NOT_SENT]; -ALLOWED_TRANSITIONS[_event.EventStatus.SENDING] = [_event.EventStatus.ENCRYPTING, _event.EventStatus.QUEUED, _event.EventStatus.NOT_SENT, _event.EventStatus.SENT]; -ALLOWED_TRANSITIONS[_event.EventStatus.QUEUED] = [_event.EventStatus.SENDING, _event.EventStatus.CANCELLED]; -ALLOWED_TRANSITIONS[_event.EventStatus.SENT] = []; -ALLOWED_TRANSITIONS[_event.EventStatus.NOT_SENT] = [_event.EventStatus.SENDING, _event.EventStatus.QUEUED, _event.EventStatus.CANCELLED]; -ALLOWED_TRANSITIONS[_event.EventStatus.CANCELLED] = []; -/** - * Update the status / event id on a pending event, to reflect its transmission - * progress. - * - *

This is an internal method. - * - * @param {MatrixEvent} event local echo event - * @param {EventStatus} newStatus status to assign - * @param {string} newEventId new event id to assign. Ignored unless - * newStatus == EventStatus.SENT. - * @fires module:client~MatrixClient#event:"Room.localEchoUpdated" - */ - -Room.prototype.updatePendingEvent = function (event, newStatus, newEventId) { - _logger.logger.log(`setting pendingEvent status to ${newStatus} in ${event.getRoomId()} ` + `event ID ${event.getId()} -> ${newEventId}`); // if the message was sent, we expect an event id - - - if (newStatus == _event.EventStatus.SENT && !newEventId) { - throw new Error("updatePendingEvent called with status=SENT, " + "but no new event id"); - } // SENT races against /sync, so we have to special-case it. - - - if (newStatus == _event.EventStatus.SENT) { - const timeline = this.getUnfilteredTimelineSet().eventIdToTimeline(newEventId); - - if (timeline) { - // we've already received the event via the event stream. - // nothing more to do here. - return; - } - } - - const oldStatus = event.status; - const oldEventId = event.getId(); - - if (!oldStatus) { - throw new Error("updatePendingEventStatus called on an event which is " + "not a local echo."); - } - - const allowed = ALLOWED_TRANSITIONS[oldStatus]; - - if (!allowed || allowed.indexOf(newStatus) < 0) { - throw new Error("Invalid EventStatus transition " + oldStatus + "->" + newStatus); - } - - event.setStatus(newStatus); - - if (newStatus == _event.EventStatus.SENT) { - // update the event id - event.replaceLocalEventId(newEventId); // if the event was already in the timeline (which will be the case if - // opts.pendingEventOrdering==chronological), we need to update the - // timeline map. - - for (let i = 0; i < this._timelineSets.length; i++) { - this._timelineSets[i].replaceEventId(oldEventId, newEventId); - } - } else if (newStatus == _event.EventStatus.CANCELLED) { - // remove it from the pending event list, or the timeline. - if (this._pendingEventList) { - const idx = this._pendingEventList.findIndex(ev => ev.getId() === oldEventId); - - if (idx !== -1) { - const [removedEvent] = this._pendingEventList.splice(idx, 1); - - if (removedEvent.isRedaction()) { - this._revertRedactionLocalEcho(removedEvent); - } - } - } - - this.removeEvent(oldEventId); - } - - this.emit("Room.localEchoUpdated", event, this, oldEventId, oldStatus); -}; - -Room.prototype._revertRedactionLocalEcho = function (redactionEvent) { - const redactId = redactionEvent.event.redacts; - - if (!redactId) { - return; - } - - const redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId); - - if (redactedEvent) { - redactedEvent.unmarkLocallyRedacted(); // re-render after undoing redaction - - this.emit("Room.redactionCancelled", redactionEvent, this); // reapply relation now redaction failed - - if (redactedEvent.isRelation()) { - this._aggregateNonLiveRelation(redactedEvent); - } - } -}; -/** - * Add some events to this room. This can include state events, message - * events and typing notifications. These events are treated as "live" so - * they will go to the end of the timeline. - * - * @param {MatrixEvent[]} events A list of events to add. - * - * @param {string} duplicateStrategy Optional. Applies to events in the - * timeline only. If this is 'replace' then if a duplicate is encountered, the - * event passed to this function will replace the existing event in the - * timeline. If this is not specified, or is 'ignore', then the event passed to - * this function will be ignored entirely, preserving the existing event in the - * timeline. Events are identical based on their event ID only. - * - * @param {boolean} fromCache whether the sync response came from cache - * @throws If duplicateStrategy is not falsey, 'replace' or 'ignore'. - */ - - -Room.prototype.addLiveEvents = function (events, duplicateStrategy, fromCache) { - let i; - - if (duplicateStrategy && ["replace", "ignore"].indexOf(duplicateStrategy) === -1) { - throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'"); - } // sanity check that the live timeline is still live - - - for (i = 0; i < this._timelineSets.length; i++) { - const liveTimeline = this._timelineSets[i].getLiveTimeline(); - - if (liveTimeline.getPaginationToken(_eventTimeline.EventTimeline.FORWARDS)) { - throw new Error("live timeline " + i + " is no longer live - it has a pagination token " + "(" + liveTimeline.getPaginationToken(_eventTimeline.EventTimeline.FORWARDS) + ")"); - } - - if (liveTimeline.getNeighbouringTimeline(_eventTimeline.EventTimeline.FORWARDS)) { - throw new Error("live timeline " + i + " is no longer live - " + "it has a neighbouring timeline"); - } - } - - for (i = 0; i < events.length; i++) { - // TODO: We should have a filter to say "only add state event - // types X Y Z to the timeline". - this._addLiveEvent(events[i], duplicateStrategy, fromCache); - } -}; -/** - * Adds/handles ephemeral events such as typing notifications and read receipts. - * @param {MatrixEvent[]} events A list of events to process - */ - - -Room.prototype.addEphemeralEvents = function (events) { - for (const event of events) { - if (event.getType() === 'm.typing') { - this.currentState.setTypingEvent(event); - } else if (event.getType() === 'm.receipt') { - this.addReceipt(event); - } // else ignore - life is too short for us to care about these events - - } -}; -/** - * Removes events from this room. - * @param {String[]} eventIds A list of eventIds to remove. - */ - - -Room.prototype.removeEvents = function (eventIds) { - for (let i = 0; i < eventIds.length; ++i) { - this.removeEvent(eventIds[i]); - } -}; -/** - * Removes a single event from this room. - * - * @param {String} eventId The id of the event to remove - * - * @return {bool} true if the event was removed from any of the room's timeline sets - */ - - -Room.prototype.removeEvent = function (eventId) { - let removedAny = false; - - for (let i = 0; i < this._timelineSets.length; i++) { - const removed = this._timelineSets[i].removeEvent(eventId); - - if (removed) { - if (removed.isRedaction()) { - this._revertRedactionLocalEcho(removed); - } - - removedAny = true; - } - } - - return removedAny; -}; -/** - * Recalculate various aspects of the room, including the room name and - * room summary. Call this any time the room's current state is modified. - * May fire "Room.name" if the room name is updated. - * @fires module:client~MatrixClient#event:"Room.name" - */ - - -Room.prototype.recalculate = function () { - // set fake stripped state events if this is an invite room so logic remains - // consistent elsewhere. - const self = this; - const membershipEvent = this.currentState.getStateEvents("m.room.member", this.myUserId); - - if (membershipEvent && membershipEvent.getContent().membership === "invite") { - const strippedStateEvents = membershipEvent.event.invite_room_state || []; - utils.forEach(strippedStateEvents, function (strippedEvent) { - const existingEvent = self.currentState.getStateEvents(strippedEvent.type, strippedEvent.state_key); - - if (!existingEvent) { - // set the fake stripped event instead - self.currentState.setStateEvents([new _event.MatrixEvent({ - type: strippedEvent.type, - state_key: strippedEvent.state_key, - content: strippedEvent.content, - event_id: "$fake" + Date.now(), - room_id: self.roomId, - user_id: self.myUserId // technically a lie - - })]); - } }); - } - - const oldName = this.name; - this.name = calculateRoomName(this, this.myUserId); - this.summary = new _roomSummary.RoomSummary(this.roomId, { - title: this.name - }); - - if (oldName !== this.name) { - this.emit("Room.name", this); - } -}; -/** - * Get a list of user IDs who have read up to the given event. - * @param {MatrixEvent} event the event to get read receipts for. - * @return {String[]} A list of user IDs. - */ - - -Room.prototype.getUsersReadUpTo = function (event) { - return this.getReceiptsForEvent(event).filter(function (receipt) { - return receipt.type === "m.read"; - }).map(function (receipt) { - return receipt.userId; - }); -}; -/** - * Get the ID of the event that a given user has read up to, or null if we - * have received no read receipts from them. - * @param {String} userId The user ID to get read receipt event ID for - * @param {Boolean} ignoreSynthesized If true, return only receipts that have been - * sent by the server, not implicit ones generated - * by the JS SDK. - * @return {String} ID of the latest event that the given user has read, or null. - */ - - -Room.prototype.getEventReadUpTo = function (userId, ignoreSynthesized) { - let receipts = this._receipts; - - if (ignoreSynthesized) { - receipts = this._realReceipts; - } - - if (receipts["m.read"] === undefined || receipts["m.read"][userId] === undefined) { - return null; - } - - return receipts["m.read"][userId].eventId; -}; -/** - * Determines if the given user has read a particular event ID with the known - * history of the room. This is not a definitive check as it relies only on - * what is available to the room at the time of execution. - * @param {String} userId The user ID to check the read state of. - * @param {String} eventId The event ID to check if the user read. - * @returns {Boolean} True if the user has read the event, false otherwise. - */ - - -Room.prototype.hasUserReadEvent = function (userId, eventId) { - const readUpToId = this.getEventReadUpTo(userId, false); - if (readUpToId === eventId) return true; - - if (this.timeline.length && this.timeline[this.timeline.length - 1].getSender() && this.timeline[this.timeline.length - 1].getSender() === userId) { - // It doesn't matter where the event is in the timeline, the user has read - // it because they've sent the latest event. - return true; - } - - for (let i = this.timeline.length - 1; i >= 0; --i) { - const ev = this.timeline[i]; // If we encounter the target event first, the user hasn't read it - // however if we encounter the readUpToId first then the user has read - // it. These rules apply because we're iterating bottom-up. - - if (ev.getId() === eventId) return false; - if (ev.getId() === readUpToId) return true; - } // We don't know if the user has read it, so assume not. - - - return false; -}; -/** - * Get a list of receipts for the given event. - * @param {MatrixEvent} event the event to get receipts for - * @return {Object[]} A list of receipts with a userId, type and data keys or - * an empty list. - */ - - -Room.prototype.getReceiptsForEvent = function (event) { - return this._receiptCacheByEventId[event.getId()] || []; -}; -/** - * Add a receipt event to the room. - * @param {MatrixEvent} event The m.receipt event. - * @param {Boolean} fake True if this event is implicit - */ - - -Room.prototype.addReceipt = function (event, fake) { - // event content looks like: - // content: { - // $event_id: { - // $receipt_type: { - // $user_id: { - // ts: $timestamp - // } - // } - // } - // } - if (fake === undefined) { - fake = false; - } - - if (!fake) { - this._addReceiptsToStructure(event, this._realReceipts); // we don't bother caching real receipts by event ID - // as there's nothing that would read it. - - } - - this._addReceiptsToStructure(event, this._receipts); - - this._receiptCacheByEventId = this._buildReceiptCache(this._receipts); // send events after we've regenerated the cache, otherwise things that - // listened for the event would read from a stale cache - - this.emit("Room.receipt", event, this); -}; -/** - * Add a receipt event to the room. - * @param {MatrixEvent} event The m.receipt event. - * @param {Object} receipts The object to add receipts to - */ - - -Room.prototype._addReceiptsToStructure = function (event, receipts) { - const self = this; - utils.keys(event.getContent()).forEach(function (eventId) { - utils.keys(event.getContent()[eventId]).forEach(function (receiptType) { - utils.keys(event.getContent()[eventId][receiptType]).forEach(function (userId) { - const receipt = event.getContent()[eventId][receiptType][userId]; - - if (!receipts[receiptType]) { - receipts[receiptType] = {}; + (0, _defineProperty2.default)(this, "updateThreadRootEvent", (timelineSet, thread, toStartOfTimeline, recreateEvent) => { + if (timelineSet && thread.rootEvent) { + if (recreateEvent) { + timelineSet.removeEvent(thread.id); } - - const existingReceipt = receipts[receiptType][userId]; - - if (!existingReceipt) { - receipts[receiptType][userId] = {}; + if (_thread.Thread.hasServerSideSupport) { + timelineSet.addLiveEvent(thread.rootEvent, { + duplicateStrategy: _eventTimelineSet.DuplicateStrategy.Replace, + fromCache: false, + roomState: this.currentState + }); } else { - // we only want to add this receipt if we think it is later - // than the one we already have. (This is managed - // server-side, but because we synthesize RRs locally we - // have to do it here too.) - const ordering = self.getUnfilteredTimelineSet().compareEventOrdering(existingReceipt.eventId, eventId); + timelineSet.addEventToTimeline(thread.rootEvent, timelineSet.getLiveTimeline(), { + toStartOfTimeline + }); + } + } + }); + (0, _defineProperty2.default)(this, "applyRedaction", event => { + if (event.isRedaction()) { + const redactId = event.event.redacts; - if (ordering !== null && ordering >= 0) { - return; + // if we know about this event, redact its contents now. + const redactedEvent = redactId ? this.findEventById(redactId) : undefined; + if (redactedEvent) { + const threadRootId = redactedEvent.threadRootId; + redactedEvent.makeRedacted(event, this); + + // If this is in the current state, replace it with the redacted version + if (redactedEvent.isState()) { + const currentStateEvent = this.currentState.getStateEvents(redactedEvent.getType(), redactedEvent.getStateKey()); + if ((currentStateEvent === null || currentStateEvent === void 0 ? void 0 : currentStateEvent.getId()) === redactedEvent.getId()) { + this.currentState.setStateEvents([redactedEvent]); + } + } + this.emit(RoomEvent.Redaction, event, this, threadRootId); + + // TODO: we stash user displaynames (among other things) in + // RoomMember objects which are then attached to other events + // (in the sender and target fields). We should get those + // RoomMember objects to update themselves when the events that + // they are based on are changed. + + // Remove any visibility change on this event. + this.visibilityEvents.delete(redactId); + + // If this event is a visibility change event, remove it from the + // list of visibility changes and update any event affected by it. + if (redactedEvent.isVisibilityEvent()) { + this.redactVisibilityChangeEvent(event); } } - receipts[receiptType][userId] = { - eventId: eventId, - data: receipt - }; - }); + // FIXME: apply redactions to notification list + + // NB: We continue to add the redaction event to the timeline so + // clients can say "so and so redacted an event" if they wish to. Also + // this may be needed to trigger an update. + } }); - }); -}; -/** - * Build and return a map of receipts by event ID - * @param {Object} receipts A map of receipts - * @return {Object} Map of receipts by event ID - */ + this.roomId = roomId; + this.client = client; + this.myUserId = myUserId; + this.opts = opts; + this.setMaxListeners(100); + this.reEmitter = new _ReEmitter.TypedReEmitter(this); + opts.pendingEventOrdering = opts.pendingEventOrdering || _client.PendingEventOrdering.Chronological; + this.name = roomId; + this.normalizedName = roomId; + // Listen to our own receipt event as a more modular way of processing our own + // receipts. No need to remove the listener: it's on ourself anyway. + this.on(RoomEvent.Receipt, this.onReceipt); -Room.prototype._buildReceiptCache = function (receipts) { - const receiptCacheByEventId = {}; - utils.keys(receipts).forEach(function (receiptType) { - utils.keys(receipts[receiptType]).forEach(function (userId) { - const receipt = receipts[receiptType][userId]; + // all our per-room timeline sets. the first one is the unfiltered ones; + // the subsequent ones are the filtered ones in no particular order. + this.timelineSets = [new _eventTimelineSet.EventTimelineSet(this, opts)]; + this.reEmitter.reEmit(this.getUnfilteredTimelineSet(), [RoomEvent.Timeline, RoomEvent.TimelineReset]); + this.fixUpLegacyTimelineFields(); + if (this.opts.pendingEventOrdering === _client.PendingEventOrdering.Detached) { + this.pendingEventList = []; + this.client.store.getPendingEvents(this.roomId).then(events => { + const mapper = this.client.getEventMapper({ + toDevice: false, + decrypt: false + }); + events.forEach(async serializedEvent => { + const event = mapper(serializedEvent); + await client.decryptEventIfNeeded(event); + event.setStatus(_eventStatus.EventStatus.NOT_SENT); + this.addPendingEvent(event, event.getTxnId()); + }); + }); + } - if (!receiptCacheByEventId[receipt.eventId]) { - receiptCacheByEventId[receipt.eventId] = []; + // awaited by getEncryptionTargetMembers while room members are loading + if (!this.opts.lazyLoadMembers) { + this.membersPromise = Promise.resolve(false); + } else { + this.membersPromise = undefined; + } + } + async createThreadsTimelineSets() { + var _this$client; + if (this.threadTimelineSetsPromise) { + return this.threadTimelineSetsPromise; + } + if ((_this$client = this.client) !== null && _this$client !== void 0 && _this$client.supportsThreads()) { + try { + this.threadTimelineSetsPromise = Promise.all([this.createThreadTimelineSet(), this.createThreadTimelineSet(_thread.ThreadFilterType.My)]); + const timelineSets = await this.threadTimelineSetsPromise; + this.threadsTimelineSets[0] = timelineSets[0]; + this.threadsTimelineSets[1] = timelineSets[1]; + return timelineSets; + } catch (e) { + this.threadTimelineSetsPromise = null; + return null; + } + } + return null; + } + + /** + * Bulk decrypt critical events in a room + * + * Critical events represents the minimal set of events to decrypt + * for a typical UI to function properly + * + * - Last event of every room (to generate likely message preview) + * - All events up to the read receipt (to calculate an accurate notification count) + * + * @returns Signals when all events have been decrypted + */ + async decryptCriticalEvents() { + if (!this.client.isCryptoEnabled()) return; + const readReceiptEventId = this.getEventReadUpTo(this.client.getUserId(), true); + const events = this.getLiveTimeline().getEvents(); + const readReceiptTimelineIndex = events.findIndex(matrixEvent => { + return matrixEvent.event.event_id === readReceiptEventId; + }); + const decryptionPromises = events.slice(readReceiptTimelineIndex).reverse().map(event => this.client.decryptEventIfNeeded(event)); + await Promise.allSettled(decryptionPromises); + } + + /** + * Bulk decrypt events in a room + * + * @returns Signals when all events have been decrypted + */ + async decryptAllEvents() { + if (!this.client.isCryptoEnabled()) return; + const decryptionPromises = this.getUnfilteredTimelineSet().getLiveTimeline().getEvents().slice(0) // copy before reversing + .reverse().map(event => this.client.decryptEventIfNeeded(event)); + await Promise.allSettled(decryptionPromises); + } + + /** + * Gets the creator of the room + * @returns The creator of the room, or null if it could not be determined + */ + getCreator() { + var _createEvent$getSende; + const createEvent = this.currentState.getStateEvents(_event2.EventType.RoomCreate, ""); + return (_createEvent$getSende = createEvent === null || createEvent === void 0 ? void 0 : createEvent.getSender()) !== null && _createEvent$getSende !== void 0 ? _createEvent$getSende : null; + } + + /** + * Gets the version of the room + * @returns The version of the room, or null if it could not be determined + */ + getVersion() { + var _createEvent$getConte; + const createEvent = this.currentState.getStateEvents(_event2.EventType.RoomCreate, ""); + if (!createEvent) { + if (!this.getVersionWarning) { + _logger.logger.warn("[getVersion] Room " + this.roomId + " does not have an m.room.create event"); + this.getVersionWarning = true; + } + return "1"; + } + return (_createEvent$getConte = createEvent.getContent()["room_version"]) !== null && _createEvent$getConte !== void 0 ? _createEvent$getConte : "1"; + } + + /** + * Determines whether this room needs to be upgraded to a new version + * @returns What version the room should be upgraded to, or null if + * the room does not require upgrading at this time. + * @deprecated Use #getRecommendedVersion() instead + */ + shouldUpgradeToVersion() { + // TODO: Remove this function. + // This makes assumptions about which versions are safe, and can easily + // be wrong. Instead, people are encouraged to use getRecommendedVersion + // which determines a safer value. This function doesn't use that function + // because this is not async-capable, and to avoid breaking the contract + // we're deprecating this. + + if (!SAFE_ROOM_VERSIONS.includes(this.getVersion())) { + return KNOWN_SAFE_ROOM_VERSION; + } + return null; + } + + /** + * Determines the recommended room version for the room. This returns an + * object with 3 properties: `version` as the new version the + * room should be upgraded to (may be the same as the current version); + * `needsUpgrade` to indicate if the room actually can be + * upgraded (ie: does the current version not match?); and `urgent` + * to indicate if the new version patches a vulnerability in a previous + * version. + * @returns + * Resolves to the version the room should be upgraded to. + */ + async getRecommendedVersion() { + const capabilities = await this.client.getCapabilities(); + let versionCap = capabilities["m.room_versions"]; + if (!versionCap) { + versionCap = { + default: KNOWN_SAFE_ROOM_VERSION, + available: {} + }; + for (const safeVer of SAFE_ROOM_VERSIONS) { + versionCap.available[safeVer] = _client.RoomVersionStability.Stable; + } + } + let result = this.checkVersionAgainstCapability(versionCap); + if (result.urgent && result.needsUpgrade) { + // Something doesn't feel right: we shouldn't need to update + // because the version we're on should be in the protocol's + // namespace. This usually means that the server was updated + // before the client was, making us think the newest possible + // room version is not stable. As a solution, we'll refresh + // the capability we're using to determine this. + _logger.logger.warn("Refreshing room version capability because the server looks " + "to be supporting a newer room version we don't know about."); + const caps = await this.client.getCapabilities(true); + versionCap = caps["m.room_versions"]; + if (!versionCap) { + _logger.logger.warn("No room version capability - assuming upgrade required."); + return result; + } else { + result = this.checkVersionAgainstCapability(versionCap); + } + } + return result; + } + checkVersionAgainstCapability(versionCap) { + const currentVersion = this.getVersion(); + _logger.logger.log(`[${this.roomId}] Current version: ${currentVersion}`); + _logger.logger.log(`[${this.roomId}] Version capability: `, versionCap); + const result = { + version: currentVersion, + needsUpgrade: false, + urgent: false + }; + + // If the room is on the default version then nothing needs to change + if (currentVersion === versionCap.default) return result; + const stableVersions = Object.keys(versionCap.available).filter(v => versionCap.available[v] === "stable"); + + // Check if the room is on an unstable version. We determine urgency based + // off the version being in the Matrix spec namespace or not (if the version + // is in the current namespace and unstable, the room is probably vulnerable). + if (!stableVersions.includes(currentVersion)) { + result.version = versionCap.default; + result.needsUpgrade = true; + result.urgent = !!this.getVersion().match(/^[0-9]+[0-9.]*$/g); + if (result.urgent) { + _logger.logger.warn(`URGENT upgrade required on ${this.roomId}`); + } else { + _logger.logger.warn(`Non-urgent upgrade required on ${this.roomId}`); + } + return result; + } + + // The room is on a stable, but non-default, version by this point. + // No upgrade needed. + return result; + } + + /** + * Determines whether the given user is permitted to perform a room upgrade + * @param userId - The ID of the user to test against + * @returns True if the given user is permitted to upgrade the room + */ + userMayUpgradeRoom(userId) { + return this.currentState.maySendStateEvent(_event2.EventType.RoomTombstone, userId); + } + + /** + * Get the list of pending sent events for this room + * + * @returns A list of the sent events + * waiting for remote echo. + * + * @throws If `opts.pendingEventOrdering` was not 'detached' + */ + getPendingEvents() { + if (!this.pendingEventList) { + throw new Error("Cannot call getPendingEvents with pendingEventOrdering == " + this.opts.pendingEventOrdering); + } + return this.pendingEventList; + } + + /** + * Removes a pending event for this room + * + * @returns True if an element was removed. + */ + removePendingEvent(eventId) { + if (!this.pendingEventList) { + throw new Error("Cannot call removePendingEvent with pendingEventOrdering == " + this.opts.pendingEventOrdering); + } + const removed = (0, _utils.removeElement)(this.pendingEventList, function (ev) { + return ev.getId() == eventId; + }, false); + this.savePendingEvents(); + return removed; + } + + /** + * Check whether the pending event list contains a given event by ID. + * If pending event ordering is not "detached" then this returns false. + * + * @param eventId - The event ID to check for. + */ + hasPendingEvent(eventId) { + var _this$pendingEventLis, _this$pendingEventLis2; + return (_this$pendingEventLis = (_this$pendingEventLis2 = this.pendingEventList) === null || _this$pendingEventLis2 === void 0 ? void 0 : _this$pendingEventLis2.some(event => event.getId() === eventId)) !== null && _this$pendingEventLis !== void 0 ? _this$pendingEventLis : false; + } + + /** + * Get a specific event from the pending event list, if configured, null otherwise. + * + * @param eventId - The event ID to check for. + */ + getPendingEvent(eventId) { + var _this$pendingEventLis3, _this$pendingEventLis4; + return (_this$pendingEventLis3 = (_this$pendingEventLis4 = this.pendingEventList) === null || _this$pendingEventLis4 === void 0 ? void 0 : _this$pendingEventLis4.find(event => event.getId() === eventId)) !== null && _this$pendingEventLis3 !== void 0 ? _this$pendingEventLis3 : null; + } + + /** + * Get the live unfiltered timeline for this room. + * + * @returns live timeline + */ + getLiveTimeline() { + return this.getUnfilteredTimelineSet().getLiveTimeline(); + } + + /** + * The live event timeline for this room, with the oldest event at index 0. + * + * @deprecated Present for backwards compatibility. + * Use getLiveTimeline().getEvents() instead + */ + get timeline() { + return this.getLiveTimeline().getEvents(); + } + + /** + * Get the timestamp of the last message in the room + * + * @returns the timestamp of the last message in the room + */ + getLastActiveTimestamp() { + const timeline = this.getLiveTimeline(); + const events = timeline.getEvents(); + if (events.length) { + const lastEvent = events[events.length - 1]; + return lastEvent.getTs(); + } else { + return Number.MIN_SAFE_INTEGER; + } + } + + /** + * Returns the last live event of this room. + * "last" means latest timestamp. + * Instead of using timestamps, it would be better to do the comparison based on the order of the homeserver DAG. + * Unfortunately, this information is currently not available in the client. + * See {@link https://github.com/matrix-org/matrix-js-sdk/issues/3325}. + * "live of this room" means from all live timelines: the room and the threads. + * + * @returns MatrixEvent if there is a last event; else undefined. + */ + getLastLiveEvent() { + var _lastRoomEvent$getTs, _lastThreadEvent$getT; + const roomEvents = this.getLiveTimeline().getEvents(); + const lastRoomEvent = roomEvents[roomEvents.length - 1]; + const lastThread = this.getLastThread(); + if (!lastThread) return lastRoomEvent; + const lastThreadEvent = lastThread.events[lastThread.events.length - 1]; + return ((_lastRoomEvent$getTs = lastRoomEvent === null || lastRoomEvent === void 0 ? void 0 : lastRoomEvent.getTs()) !== null && _lastRoomEvent$getTs !== void 0 ? _lastRoomEvent$getTs : 0) > ((_lastThreadEvent$getT = lastThreadEvent === null || lastThreadEvent === void 0 ? void 0 : lastThreadEvent.getTs()) !== null && _lastThreadEvent$getT !== void 0 ? _lastThreadEvent$getT : 0) ? lastRoomEvent : lastThreadEvent; + } + + /** + * Returns the last thread of this room. + * "last" means latest timestamp of the last thread event. + * Instead of using timestamps, it would be better to do the comparison based on the order of the homeserver DAG. + * Unfortunately, this information is currently not available in the client. + * See {@link https://github.com/matrix-org/matrix-js-sdk/issues/3325}. + * + * @returns the thread with the most recent event in its live time line. undefined if there is no thread. + */ + getLastThread() { + return this.getThreads().reduce((lastThread, thread) => { + var _threadEvent$getTs, _lastThreadEvent$getT2; + if (!lastThread) return thread; + const threadEvent = thread.events[thread.events.length - 1]; + const lastThreadEvent = lastThread.events[lastThread.events.length - 1]; + if (((_threadEvent$getTs = threadEvent === null || threadEvent === void 0 ? void 0 : threadEvent.getTs()) !== null && _threadEvent$getTs !== void 0 ? _threadEvent$getTs : 0) >= ((_lastThreadEvent$getT2 = lastThreadEvent === null || lastThreadEvent === void 0 ? void 0 : lastThreadEvent.getTs()) !== null && _lastThreadEvent$getT2 !== void 0 ? _lastThreadEvent$getT2 : 0)) { + // Last message of current thread is newer → new last thread. + // Equal also means newer, because it was added to the thread map later. + return thread; + } + return lastThread; + }, undefined); + } + + /** + * @returns the membership type (join | leave | invite | knock) for the logged in user + */ + getMyMembership() { + var _this$selfMembership; + return (_this$selfMembership = this.selfMembership) !== null && _this$selfMembership !== void 0 ? _this$selfMembership : _membership.KnownMembership.Leave; + } + + /** + * If this room is a DM we're invited to, + * try to find out who invited us + * @returns user id of the inviter + */ + getDMInviter() { + const me = this.getMember(this.myUserId); + if (me) { + return me.getDMInviter(); + } + if (this.selfMembership === _membership.KnownMembership.Invite) { + // fall back to summary information + const memberCount = this.getInvitedAndJoinedMemberCount(); + if (memberCount === 2) { + var _this$summaryHeroes; + return (_this$summaryHeroes = this.summaryHeroes) === null || _this$summaryHeroes === void 0 ? void 0 : _this$summaryHeroes[0]; + } + } + } + + /** + * Assuming this room is a DM room, tries to guess with which user. + * @returns user id of the other member (could be syncing user) + */ + guessDMUserId() { + const me = this.getMember(this.myUserId); + if (me) { + const inviterId = me.getDMInviter(); + if (inviterId) { + return inviterId; + } + } + // Remember, we're assuming this room is a DM, so returning the first member we find should be fine + if (Array.isArray(this.summaryHeroes) && this.summaryHeroes.length) { + return this.summaryHeroes[0]; + } + const members = this.currentState.getMembers(); + const anyMember = members.find(m => m.userId !== this.myUserId); + if (anyMember) { + return anyMember.userId; + } + // it really seems like I'm the only user in the room + // so I probably created a room with just me in it + // and marked it as a DM. Ok then + return this.myUserId; + } + + /** + * Gets the "functional members" in this room. + * + * Returns the list of userIDs from the `io.element.functional_members` event. Does not consider the + * current membership states of those users. + * + * @see https://github.com/element-hq/element-meta/blob/develop/spec/functional_members.md. + */ + getFunctionalMembers() { + const mFunctionalMembers = this.currentState.getStateEvents(_event2.UNSTABLE_ELEMENT_FUNCTIONAL_USERS.name, ""); + if (Array.isArray(mFunctionalMembers === null || mFunctionalMembers === void 0 ? void 0 : mFunctionalMembers.getContent().service_members)) { + return mFunctionalMembers.getContent().service_members; + } + return []; + } + getAvatarFallbackMember() { + var _this$summaryHeroes2; + const functionalMembers = this.getFunctionalMembers(); + + // Only generate a fallback avatar if the conversation is with a single specific other user (a "DM"). + let nonFunctionalMemberCount = 0; + this.getMembers().forEach(m => { + if (m.membership !== "join" && m.membership !== "invite") return; + if (functionalMembers.includes(m.userId)) return; + nonFunctionalMemberCount++; + }); + if (nonFunctionalMemberCount > 2) return; + + // Prefer the list of heroes, if present. It should only include the single other user in the DM. + const nonFunctionalHeroes = (_this$summaryHeroes2 = this.summaryHeroes) === null || _this$summaryHeroes2 === void 0 ? void 0 : _this$summaryHeroes2.filter(h => !functionalMembers.includes(h)); + const hasHeroes = Array.isArray(nonFunctionalHeroes) && nonFunctionalHeroes.length; + if (hasHeroes) { + const availableMember = nonFunctionalHeroes.map(userId => { + return this.getMember(userId); + }).find(member => !!member); + if (availableMember) { + return availableMember; + } + } + + // Consider *all*, including previous, members, to generate the avatar for DMs where the other user left. + // Needed to generate a matching avatar for rooms named "Empty Room (was Alice)". + const members = this.getMembers(); + const nonFunctionalMembers = members === null || members === void 0 ? void 0 : members.filter(m => !functionalMembers.includes(m.userId)); + if (nonFunctionalMembers.length <= 2) { + const availableMember = nonFunctionalMembers.find(m => { + return m.userId !== this.myUserId; + }); + if (availableMember) { + return availableMember; + } + } + + // If all else failed, but the homeserver gave us heroes that previously could not be found in the room members, + // trust and try falling back to a hero, creating a one-off member for it + if (hasHeroes) { + const availableUser = nonFunctionalHeroes.map(userId => { + return this.client.getUser(userId); + }).find(user => !!user); + if (availableUser) { + const member = new _roomMember.RoomMember(this.roomId, availableUser.userId); + member.user = availableUser; + return member; + } + } + } + + /** + * Sets the membership this room was received as during sync + * @param membership - join | leave | invite + */ + updateMyMembership(membership) { + const prevMembership = this.selfMembership; + this.selfMembership = membership; + if (prevMembership !== membership) { + if (membership === _membership.KnownMembership.Leave) { + this.cleanupAfterLeaving(); + } + this.emit(RoomEvent.MyMembership, this, membership, prevMembership); + } + } + async loadMembersFromServer() { + const lastSyncToken = this.client.store.getSyncToken(); + const response = await this.client.members(this.roomId, undefined, _membership.KnownMembership.Leave, lastSyncToken !== null && lastSyncToken !== void 0 ? lastSyncToken : undefined); + return response.chunk; + } + async loadMembers() { + // were the members loaded from the server? + let fromServer = false; + let rawMembersEvents = await this.client.store.getOutOfBandMembers(this.roomId); + // If the room is encrypted, we always fetch members from the server at + // least once, in case the latest state wasn't persisted properly. Note + // that this function is only called once (unless loading the members + // fails), since loadMembersIfNeeded always returns this.membersPromise + // if set, which will be the result of the first (successful) call. + if (rawMembersEvents === null || this.hasEncryptionStateEvent()) { + fromServer = true; + rawMembersEvents = await this.loadMembersFromServer(); + _logger.logger.log(`LL: got ${rawMembersEvents.length} ` + `members from server for room ${this.roomId}`); + } + const memberEvents = rawMembersEvents.filter(_utils.noUnsafeEventProps).map(this.client.getEventMapper()); + return { + memberEvents, + fromServer + }; + } + + /** + * Check if loading of out-of-band-members has completed + * + * @returns true if the full membership list of this room has been loaded (including if lazy-loading is disabled). + * False if the load is not started or is in progress. + */ + membersLoaded() { + if (!this.opts.lazyLoadMembers) { + return true; + } + return this.currentState.outOfBandMembersReady(); + } + + /** + * Preloads the member list in case lazy loading + * of memberships is in use. Can be called multiple times, + * it will only preload once. + * @returns when preloading is done and + * accessing the members on the room will take + * all members in the room into account + */ + loadMembersIfNeeded() { + if (this.membersPromise) { + return this.membersPromise; + } + + // mark the state so that incoming messages while + // the request is in flight get marked as superseding + // the OOB members + this.currentState.markOutOfBandMembersStarted(); + const inMemoryUpdate = this.loadMembers().then(result => { + this.currentState.setOutOfBandMembers(result.memberEvents); + return result.fromServer; + }).catch(err => { + // allow retries on fail + this.membersPromise = undefined; + this.currentState.markOutOfBandMembersFailed(); + throw err; + }); + // update members in storage, but don't wait for it + inMemoryUpdate.then(fromServer => { + if (fromServer) { + const oobMembers = this.currentState.getMembers().filter(m => m.isOutOfBand()).map(m => { + var _m$events$member; + return (_m$events$member = m.events.member) === null || _m$events$member === void 0 ? void 0 : _m$events$member.event; + }); + _logger.logger.log(`LL: telling store to write ${oobMembers.length}` + ` members for room ${this.roomId}`); + const store = this.client.store; + return store.setOutOfBandMembers(this.roomId, oobMembers) + // swallow any IDB error as we don't want to fail + // because of this + .catch(err => { + _logger.logger.log("LL: storing OOB room members failed, oh well", err); + }); + } + }).catch(err => { + // as this is not awaited anywhere, + // at least show the error in the console + _logger.logger.error(err); + }); + this.membersPromise = inMemoryUpdate; + return this.membersPromise; + } + + /** + * Removes the lazily loaded members from storage if needed + */ + async clearLoadedMembersIfNeeded() { + if (this.opts.lazyLoadMembers && this.membersPromise) { + await this.loadMembersIfNeeded(); + await this.client.store.clearOutOfBandMembers(this.roomId); + this.currentState.clearOutOfBandMembers(); + this.membersPromise = undefined; + } + } + + /** + * called when sync receives this room in the leave section + * to do cleanup after leaving a room. Possibly called multiple times. + */ + cleanupAfterLeaving() { + this.clearLoadedMembersIfNeeded().catch(err => { + _logger.logger.error(`error after clearing loaded members from ` + `room ${this.roomId} after leaving`); + _logger.logger.log(err); + }); + } + + /** + * Empty out the current live timeline and re-request it. This is used when + * historical messages are imported into the room via MSC2716 `/batch_send` + * because the client may already have that section of the timeline loaded. + * We need to force the client to throw away their current timeline so that + * when they back paginate over the area again with the historical messages + * in between, it grabs the newly imported messages. We can listen for + * `UNSTABLE_MSC2716_MARKER`, in order to tell when historical messages are ready + * to be discovered in the room and the timeline needs a refresh. The SDK + * emits a `RoomEvent.HistoryImportedWithinTimeline` event when we detect a + * valid marker and can check the needs refresh status via + * `room.getTimelineNeedsRefresh()`. + */ + async refreshLiveTimeline() { + const liveTimelineBefore = this.getLiveTimeline(); + const forwardPaginationToken = liveTimelineBefore.getPaginationToken(_eventTimeline.EventTimeline.FORWARDS); + const backwardPaginationToken = liveTimelineBefore.getPaginationToken(_eventTimeline.EventTimeline.BACKWARDS); + const eventsBefore = liveTimelineBefore.getEvents(); + const mostRecentEventInTimeline = eventsBefore[eventsBefore.length - 1]; + _logger.logger.log(`[refreshLiveTimeline for ${this.roomId}] at ` + `mostRecentEventInTimeline=${mostRecentEventInTimeline && mostRecentEventInTimeline.getId()} ` + `liveTimelineBefore=${liveTimelineBefore.toString()} ` + `forwardPaginationToken=${forwardPaginationToken} ` + `backwardPaginationToken=${backwardPaginationToken}`); + + // Get the main TimelineSet + const timelineSet = this.getUnfilteredTimelineSet(); + let newTimeline; + // If there isn't any event in the timeline, let's go fetch the latest + // event and construct a timeline from it. + // + // This should only really happen if the user ran into an error + // with refreshing the timeline before which left them in a blank + // timeline from `resetLiveTimeline`. + if (!mostRecentEventInTimeline) { + newTimeline = await this.client.getLatestTimeline(timelineSet); + } else { + // Empty out all of `this.timelineSets`. But we also need to keep the + // same `timelineSet` references around so the React code updates + // properly and doesn't ignore the room events we emit because it checks + // that the `timelineSet` references are the same. We need the + // `timelineSet` empty so that the `client.getEventTimeline(...)` call + // later, will call `/context` and create a new timeline instead of + // returning the same one. + this.resetLiveTimeline(null, null); + + // Make the UI timeline show the new blank live timeline we just + // reset so that if the network fails below it's showing the + // accurate state of what we're working with instead of the + // disconnected one in the TimelineWindow which is just hanging + // around by reference. + this.emit(RoomEvent.TimelineRefresh, this, timelineSet); + + // Use `client.getEventTimeline(...)` to construct a new timeline from a + // `/context` response state and events for the most recent event before + // we reset everything. The `timelineSet` we pass in needs to be empty + // in order for this function to call `/context` and generate a new + // timeline. + newTimeline = await this.client.getEventTimeline(timelineSet, mostRecentEventInTimeline.getId()); + } + + // If a racing `/sync` beat us to creating a new timeline, use that + // instead because it's the latest in the room and any new messages in + // the scrollback will include the history. + const liveTimeline = timelineSet.getLiveTimeline(); + if (!liveTimeline || liveTimeline.getPaginationToken(_eventTimeline.Direction.Forward) === null && liveTimeline.getPaginationToken(_eventTimeline.Direction.Backward) === null && liveTimeline.getEvents().length === 0) { + _logger.logger.log(`[refreshLiveTimeline for ${this.roomId}] using our new live timeline`); + // Set the pagination token back to the live sync token (`null`) instead + // of using the `/context` historical token (ex. `t12-13_0_0_0_0_0_0_0_0`) + // so that it matches the next response from `/sync` and we can properly + // continue the timeline. + newTimeline.setPaginationToken(forwardPaginationToken, _eventTimeline.EventTimeline.FORWARDS); + + // Set our new fresh timeline as the live timeline to continue syncing + // forwards and back paginating from. + timelineSet.setLiveTimeline(newTimeline); + // Fixup `this.oldstate` so that `scrollback` has the pagination tokens + // available + this.fixUpLegacyTimelineFields(); + } else { + _logger.logger.log(`[refreshLiveTimeline for ${this.roomId}] \`/sync\` or some other request beat us to creating a new ` + `live timeline after we reset it. We'll use that instead since any events in the scrollback from ` + `this timeline will include the history.`); + } + + // The timeline has now been refreshed ✅ + this.setTimelineNeedsRefresh(false); + + // Emit an event which clients can react to and re-load the timeline + // from the SDK + this.emit(RoomEvent.TimelineRefresh, this, timelineSet); + } + + /** + * Reset the live timeline of all timelineSets, and start new ones. + * + *

This is used when /sync returns a 'limited' timeline. + * + * @param backPaginationToken - token for back-paginating the new timeline + * @param forwardPaginationToken - token for forward-paginating the old live timeline, + * if absent or null, all timelines are reset, removing old ones (including the previous live + * timeline which would otherwise be unable to paginate forwards without this token). + * Removing just the old live timeline whilst preserving previous ones is not supported. + */ + resetLiveTimeline(backPaginationToken, forwardPaginationToken) { + for (const timelineSet of this.timelineSets) { + timelineSet.resetLiveTimeline(backPaginationToken !== null && backPaginationToken !== void 0 ? backPaginationToken : undefined, forwardPaginationToken !== null && forwardPaginationToken !== void 0 ? forwardPaginationToken : undefined); + } + for (const thread of this.threads.values()) { + thread.resetLiveTimeline(backPaginationToken, forwardPaginationToken); + } + this.fixUpLegacyTimelineFields(); + } + + /** + * Fix up this.timeline, this.oldState and this.currentState + * + * @internal + */ + fixUpLegacyTimelineFields() { + const previousOldState = this.oldState; + const previousCurrentState = this.currentState; + + // maintain this.oldState and this.currentState as references to the + // state at the start and end of that timeline. These are more + // for backwards-compatibility than anything else. + this.oldState = this.getLiveTimeline().getState(_eventTimeline.EventTimeline.BACKWARDS); + this.currentState = this.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + + // Let people know to register new listeners for the new state + // references. The reference won't necessarily change every time so only + // emit when we see a change. + if (previousOldState !== this.oldState) { + this.emit(RoomEvent.OldStateUpdated, this, previousOldState, this.oldState); + } + if (previousCurrentState !== this.currentState) { + this.emit(RoomEvent.CurrentStateUpdated, this, previousCurrentState, this.currentState); + + // Re-emit various events on the current room state + // TODO: If currentState really only exists for backwards + // compatibility, shouldn't we be doing this some other way? + this.reEmitter.stopReEmitting(previousCurrentState, [_roomState.RoomStateEvent.Events, _roomState.RoomStateEvent.Members, _roomState.RoomStateEvent.NewMember, _roomState.RoomStateEvent.Update, _roomState.RoomStateEvent.Marker, _beacon.BeaconEvent.New, _beacon.BeaconEvent.Update, _beacon.BeaconEvent.Destroy, _beacon.BeaconEvent.LivenessChange]); + this.reEmitter.reEmit(this.currentState, [_roomState.RoomStateEvent.Events, _roomState.RoomStateEvent.Members, _roomState.RoomStateEvent.NewMember, _roomState.RoomStateEvent.Update, _roomState.RoomStateEvent.Marker, _beacon.BeaconEvent.New, _beacon.BeaconEvent.Update, _beacon.BeaconEvent.Destroy, _beacon.BeaconEvent.LivenessChange]); + } + } + onReceipt(event) { + if (this.hasEncryptionStateEvent()) { + this.clearNotificationsOnReceipt(event); + } + } + clearNotificationsOnReceipt(event) { + // Like above, we have to listen for read receipts from ourselves in order to + // correctly handle notification counts on encrypted rooms. + // This fixes https://github.com/vector-im/element-web/issues/9421 + + // Figure out if we've read something or if it's just informational + // We need to work out what threads we've just recieved receipts for, so we + // know which ones to update. If we've received an unthreaded receipt, we'll + // need to update all threads. + let threadIds = []; + let hasUnthreadedReceipt = false; + const content = event.getContent(); + for (const receiptGroup of Object.values(content)) { + for (const [receiptType, userReceipt] of Object.entries(receiptGroup)) { + if (!utils.isSupportedReceiptType(receiptType)) continue; + if (!userReceipt) continue; + for (const [userId, singleReceipt] of Object.entries(userReceipt)) { + if (!singleReceipt || typeof singleReceipt !== "object") continue; + const typedSingleReceipt = singleReceipt; + if (userId !== this.client.getUserId()) continue; + if (typedSingleReceipt.thread_id === undefined) { + hasUnthreadedReceipt = true; + } else if (typeof typedSingleReceipt.thread_id === "string") { + threadIds.push(typedSingleReceipt.thread_id); + } + } + } + } + if (hasUnthreadedReceipt) { + // If we have an unthreaded receipt, we need to update any threads that have a notification + // in them (because we know the receipt can't go backwards so we don't need to check any with + // no notifications: the number can only decrease from a receipt). + threadIds = this.getThreads().filter(thread => this.getThreadUnreadNotificationCount(thread.id, NotificationCountType.Total) > 0 || this.getThreadUnreadNotificationCount(thread.id, NotificationCountType.Highlight) > 0).map(thread => thread.id); + threadIds.push("main"); + } + for (const threadId of threadIds) { + var _this$getThread; + // Work backwards to determine how many events are unread. We also set + // a limit for how back we'll look to avoid spinning CPU for too long. + // If we hit the limit, we assume the count is unchanged. + const maxHistory = 20; + const timeline = threadId === "main" ? this.getLiveTimeline() : (_this$getThread = this.getThread(threadId)) === null || _this$getThread === void 0 ? void 0 : _this$getThread.liveTimeline; + if (!timeline) { + _logger.logger.warn(`Couldn't find timeline for thread ID ${threadId} in room ${this.roomId}`); + continue; + } + const events = timeline.getEvents(); + let highlightCount = 0; + for (let i = events.length - 1; i >= 0; i--) { + var _pushActions$tweaks; + if (i === events.length - maxHistory) return; // limit reached + + const event = events[i]; + if (this.hasUserReadEvent(this.client.getUserId(), event.getId())) { + // If the user has read the event, then the counting is done. + break; + } + const pushActions = this.client.getPushActionsForEvent(event); + highlightCount += pushActions !== null && pushActions !== void 0 && (_pushActions$tweaks = pushActions.tweaks) !== null && _pushActions$tweaks !== void 0 && _pushActions$tweaks.highlight ? 1 : 0; } - receiptCacheByEventId[receipt.eventId].push({ - userId: userId, - type: receiptType, - data: receipt.data + // Note: we don't need to handle 'total' notifications because the counts + // will come from the server. + if (threadId === "main") { + this.setUnreadNotificationCount(NotificationCountType.Highlight, highlightCount); + } else { + this.setThreadUnreadNotificationCount(threadId, NotificationCountType.Highlight, highlightCount); + } + } + } + + /** + * Returns whether there are any devices in the room that are unverified + * + * Note: Callers should first check if crypto is enabled on this device. If it is + * disabled, then we aren't tracking room devices at all, so we can't answer this, and an + * error will be thrown. + * + * @returns the result + * + * @deprecated Not supported under rust crypto. Instead, call {@link Room.getEncryptionTargetMembers}, + * {@link CryptoApi.getUserDeviceInfo}, and {@link CryptoApi.getDeviceVerificationStatus}. + */ + async hasUnverifiedDevices() { + if (!this.hasEncryptionStateEvent()) { + return false; + } + const e2eMembers = await this.getEncryptionTargetMembers(); + for (const member of e2eMembers) { + const devices = this.client.getStoredDevicesForUser(member.userId); + if (devices.some(device => device.isUnverified())) { + return true; + } + } + return false; + } + + /** + * Return the timeline sets for this room. + * @returns array of timeline sets for this room + */ + getTimelineSets() { + return this.timelineSets; + } + + /** + * Helper to return the main unfiltered timeline set for this room + * @returns room's unfiltered timeline set + */ + getUnfilteredTimelineSet() { + return this.timelineSets[0]; + } + + /** + * Get the timeline which contains the given event from the unfiltered set, if any + * + * @param eventId - event ID to look for + * @returns timeline containing + * the given event, or null if unknown + */ + getTimelineForEvent(eventId) { + const event = this.findEventById(eventId); + const thread = this.findThreadForEvent(event); + if (thread) { + return thread.timelineSet.getTimelineForEvent(eventId); + } else { + return this.getUnfilteredTimelineSet().getTimelineForEvent(eventId); + } + } + + /** + * Add a new timeline to this room's unfiltered timeline set + * + * @returns newly-created timeline + */ + addTimeline() { + return this.getUnfilteredTimelineSet().addTimeline(); + } + + /** + * Whether the timeline needs to be refreshed in order to pull in new + * historical messages that were imported. + * @param value - The value to set + */ + setTimelineNeedsRefresh(value) { + this.timelineNeedsRefresh = value; + } + + /** + * Whether the timeline needs to be refreshed in order to pull in new + * historical messages that were imported. + * @returns . + */ + getTimelineNeedsRefresh() { + return this.timelineNeedsRefresh; + } + + /** + * Get an event which is stored in our unfiltered timeline set, or in a thread + * + * @param eventId - event ID to look for + * @returns the given event, or undefined if unknown + */ + findEventById(eventId) { + let event = this.getUnfilteredTimelineSet().findEventById(eventId); + if (!event) { + const threads = this.getThreads(); + for (let i = 0; i < threads.length; i++) { + const thread = threads[i]; + event = thread.findEventById(eventId); + if (event) { + return event; + } + } + } + return event; + } + + /** + * Get one of the notification counts for this room + * @param type - The type of notification count to get. default: 'total' + * @returns The notification count, or undefined if there is no count + * for this type. + */ + getUnreadNotificationCount(type = NotificationCountType.Total) { + let count = this.getRoomUnreadNotificationCount(type); + for (const threadNotification of this.threadNotifications.values()) { + var _threadNotification$t; + count += (_threadNotification$t = threadNotification[type]) !== null && _threadNotification$t !== void 0 ? _threadNotification$t : 0; + } + return count; + } + + /** + * Get the notification for the event context (room or thread timeline) + */ + getUnreadCountForEventContext(type = NotificationCountType.Total, event) { + var _ref; + const isThreadEvent = !!event.threadRootId && !event.isThreadRoot; + return (_ref = isThreadEvent ? this.getThreadUnreadNotificationCount(event.threadRootId, type) : this.getRoomUnreadNotificationCount(type)) !== null && _ref !== void 0 ? _ref : 0; + } + + /** + * Get one of the notification counts for this room + * @param type - The type of notification count to get. default: 'total' + * @returns The notification count, or undefined if there is no count + * for this type. + */ + getRoomUnreadNotificationCount(type = NotificationCountType.Total) { + var _this$notificationCou; + return (_this$notificationCou = this.notificationCounts[type]) !== null && _this$notificationCou !== void 0 ? _this$notificationCou : 0; + } + + /** + * Get one of the notification counts for a thread + * @param threadId - the root event ID + * @param type - The type of notification count to get. default: 'total' + * @returns The notification count, or undefined if there is no count + * for this type. + */ + getThreadUnreadNotificationCount(threadId, type = NotificationCountType.Total) { + var _this$threadNotificat, _this$threadNotificat2; + return (_this$threadNotificat = (_this$threadNotificat2 = this.threadNotifications.get(threadId)) === null || _this$threadNotificat2 === void 0 ? void 0 : _this$threadNotificat2[type]) !== null && _this$threadNotificat !== void 0 ? _this$threadNotificat : 0; + } + + /** + * Checks if the current room has unread thread notifications + * @returns + */ + hasThreadUnreadNotification() { + for (const notification of this.threadNotifications.values()) { + var _notification$highlig, _notification$total; + if (((_notification$highlig = notification.highlight) !== null && _notification$highlig !== void 0 ? _notification$highlig : 0) > 0 || ((_notification$total = notification.total) !== null && _notification$total !== void 0 ? _notification$total : 0) > 0) { + return true; + } + } + return false; + } + + /** + * Swet one of the notification count for a thread + * @param threadId - the root event ID + * @param type - The type of notification count to get. default: 'total' + * @returns + */ + setThreadUnreadNotificationCount(threadId, type, count) { + var _this$threadNotificat3, _this$threadNotificat4; + const notification = _objectSpread({ + highlight: (_this$threadNotificat3 = this.threadNotifications.get(threadId)) === null || _this$threadNotificat3 === void 0 ? void 0 : _this$threadNotificat3.highlight, + total: (_this$threadNotificat4 = this.threadNotifications.get(threadId)) === null || _this$threadNotificat4 === void 0 ? void 0 : _this$threadNotificat4.total + }, { + [type]: count + }); + this.threadNotifications.set(threadId, notification); + this.emit(RoomEvent.UnreadNotifications, notification, threadId); + } + + /** + * @returns the notification count type for all the threads in the room + */ + get threadsAggregateNotificationType() { + let type = null; + for (const threadNotification of this.threadNotifications.values()) { + var _threadNotification$h, _threadNotification$t2; + if (((_threadNotification$h = threadNotification.highlight) !== null && _threadNotification$h !== void 0 ? _threadNotification$h : 0) > 0) { + return NotificationCountType.Highlight; + } else if (((_threadNotification$t2 = threadNotification.total) !== null && _threadNotification$t2 !== void 0 ? _threadNotification$t2 : 0) > 0 && !type) { + type = NotificationCountType.Total; + } + } + return type; + } + + /** + * Resets the total thread notifications for all threads in this room to zero, + * excluding any threads whose IDs are given in `exceptThreadIds`. + * + * If the room is not encrypted, also resets the highlight notification count to zero + * for the same set of threads. + * + * This is intended for use from the sync code since we calculate highlight notification + * counts locally from decrypted messages. We want to partially trust the total from the + * server such that we clear notifications when read receipts arrive. The weird name is + * intended to reflect this. You probably do not want to use this. + * + * @param exceptThreadIds - The thread IDs to exclude from the reset. + */ + resetThreadUnreadNotificationCountFromSync(exceptThreadIds = []) { + const isEncrypted = this.hasEncryptionStateEvent(); + for (const [threadId, notifs] of this.threadNotifications) { + if (!exceptThreadIds.includes(threadId)) { + notifs.total = 0; + if (!isEncrypted) { + notifs.highlight = 0; + } + } + } + this.emit(RoomEvent.UnreadNotifications); + } + + /** + * Set one of the notification counts for this room + * @param type - The type of notification count to set. + * @param count - The new count + */ + setUnreadNotificationCount(type, count) { + this.notificationCounts[type] = count; + this.emit(RoomEvent.UnreadNotifications, this.notificationCounts); + } + setUnread(type, count) { + return this.setUnreadNotificationCount(type, count); + } + setSummary(summary) { + const heroes = summary["m.heroes"]; + const joinedCount = summary["m.joined_member_count"]; + const invitedCount = summary["m.invited_member_count"]; + if (Number.isInteger(joinedCount)) { + this.currentState.setJoinedMemberCount(joinedCount); + } + if (Number.isInteger(invitedCount)) { + this.currentState.setInvitedMemberCount(invitedCount); + } + if (Array.isArray(heroes)) { + // be cautious about trusting server values, + // and make sure heroes doesn't contain our own id + // just to be sure + this.summaryHeroes = heroes.filter(userId => { + return userId !== this.myUserId; + }); + } + this.emit(RoomEvent.Summary, summary); + } + + /** + * Whether to send encrypted messages to devices within this room. + * @param value - true to blacklist unverified devices, null + * to use the global value for this room. + */ + setBlacklistUnverifiedDevices(value) { + this.blacklistUnverifiedDevices = value; + } + + /** + * Whether to send encrypted messages to devices within this room. + * @returns true if blacklisting unverified devices, null + * if the global value should be used for this room. + */ + getBlacklistUnverifiedDevices() { + if (this.blacklistUnverifiedDevices === undefined) return null; + return this.blacklistUnverifiedDevices; + } + + /** + * Get the avatar URL for a room if one was set. + * @param baseUrl - The homeserver base URL. See + * {@link MatrixClient#getHomeserverUrl}. + * @param width - The desired width of the thumbnail. + * @param height - The desired height of the thumbnail. + * @param resizeMethod - The thumbnail resize method to use, either + * "crop" or "scale". + * @param allowDefault - True to allow an identicon for this room if an + * avatar URL wasn't explicitly set. Default: true. (Deprecated) + * @returns the avatar URL or null. + */ + getAvatarUrl(baseUrl, width, height, resizeMethod, allowDefault = true) { + const roomAvatarEvent = this.currentState.getStateEvents(_event2.EventType.RoomAvatar, ""); + if (!roomAvatarEvent && !allowDefault) { + return null; + } + const mainUrl = roomAvatarEvent ? roomAvatarEvent.getContent().url : null; + if (mainUrl) { + return (0, _contentRepo.getHttpUriForMxc)(baseUrl, mainUrl, width, height, resizeMethod); + } + return null; + } + + /** + * Get the mxc avatar url for the room, if one was set. + * @returns the mxc avatar url or falsy + */ + getMxcAvatarUrl() { + var _this$currentState$ge; + return ((_this$currentState$ge = this.currentState.getStateEvents(_event2.EventType.RoomAvatar, "")) === null || _this$currentState$ge === void 0 || (_this$currentState$ge = _this$currentState$ge.getContent()) === null || _this$currentState$ge === void 0 ? void 0 : _this$currentState$ge.url) || null; + } + + /** + * Get this room's canonical alias + * The alias returned by this function may not necessarily + * still point to this room. + * @returns The room's canonical alias, or null if there is none + */ + getCanonicalAlias() { + const canonicalAlias = this.currentState.getStateEvents(_event2.EventType.RoomCanonicalAlias, ""); + if (canonicalAlias) { + return canonicalAlias.getContent().alias || null; + } + return null; + } + + /** + * Get this room's alternative aliases + * @returns The room's alternative aliases, or an empty array + */ + getAltAliases() { + const canonicalAlias = this.currentState.getStateEvents(_event2.EventType.RoomCanonicalAlias, ""); + if (canonicalAlias) { + return canonicalAlias.getContent().alt_aliases || []; + } + return []; + } + + /** + * Add events to a timeline + * + *

Will fire "Room.timeline" for each event added. + * + * @param events - A list of events to add. + * + * @param toStartOfTimeline - True to add these events to the start + * (oldest) instead of the end (newest) of the timeline. If true, the oldest + * event will be the last element of 'events'. + * + * @param timeline - timeline to + * add events to. + * + * @param paginationToken - token for the next batch of events + * + * @remarks + * Fires {@link RoomEvent.Timeline} + */ + addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken) { + timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken); + } + + /** + * Get the instance of the thread associated with the current event + * @param eventId - the ID of the current event + * @returns a thread instance if known + */ + getThread(eventId) { + var _this$threads$get; + return (_this$threads$get = this.threads.get(eventId)) !== null && _this$threads$get !== void 0 ? _this$threads$get : null; + } + + /** + * Get all the known threads in the room + */ + getThreads() { + return Array.from(this.threads.values()); + } + + /** + * Get a member from the current room state. + * @param userId - The user ID of the member. + * @returns The member or `null`. + */ + getMember(userId) { + return this.currentState.getMember(userId); + } + + /** + * Get all currently loaded members from the current + * room state. + * @returns Room members + */ + getMembers() { + return this.currentState.getMembers(); + } + + /** + * Get a list of members whose membership state is "join". + * @returns A list of currently joined members. + */ + getJoinedMembers() { + return this.getMembersWithMembership(_membership.KnownMembership.Join); + } + + /** + * Returns the number of joined members in this room + * This method caches the result. + * This is a wrapper around the method of the same name in roomState, returning + * its result for the room's current state. + * @returns The number of members in this room whose membership is 'join' + */ + getJoinedMemberCount() { + return this.currentState.getJoinedMemberCount(); + } + + /** + * Returns the number of invited members in this room + * @returns The number of members in this room whose membership is 'invite' + */ + getInvitedMemberCount() { + return this.currentState.getInvitedMemberCount(); + } + + /** + * Returns the number of invited + joined members in this room + * @returns The number of members in this room whose membership is 'invite' or 'join' + */ + getInvitedAndJoinedMemberCount() { + return this.getInvitedMemberCount() + this.getJoinedMemberCount(); + } + + /** + * Get a list of members with given membership state. + * @param membership - The membership state. + * @returns A list of members with the given membership state. + */ + getMembersWithMembership(membership) { + return this.currentState.getMembers().filter(function (m) { + return m.membership === membership; + }); + } + + /** + * Get a list of members we should be encrypting for in this room + * @returns A list of members who + * we should encrypt messages for in this room. + */ + async getEncryptionTargetMembers() { + await this.loadMembersIfNeeded(); + let members = this.getMembersWithMembership(_membership.KnownMembership.Join); + if (this.shouldEncryptForInvitedMembers()) { + members = members.concat(this.getMembersWithMembership(_membership.KnownMembership.Invite)); + } + return members; + } + + /** + * Determine whether we should encrypt messages for invited users in this room + * @returns if we should encrypt messages for invited users + */ + shouldEncryptForInvitedMembers() { + var _ev$getContent; + const ev = this.currentState.getStateEvents(_event2.EventType.RoomHistoryVisibility, ""); + return (ev === null || ev === void 0 || (_ev$getContent = ev.getContent()) === null || _ev$getContent === void 0 ? void 0 : _ev$getContent.history_visibility) !== "joined"; + } + + /** + * Get the default room name (i.e. what a given user would see if the + * room had no m.room.name) + * @param userId - The userId from whose perspective we want + * to calculate the default name + * @returns The default room name + */ + getDefaultRoomName(userId) { + return this.calculateRoomName(userId, true); + } + + /** + * Check if the given user_id has the given membership state. + * @param userId - The user ID to check. + * @param membership - The membership e.g. `'join'` + * @returns True if this user_id has the given membership state. + */ + hasMembershipState(userId, membership) { + const member = this.getMember(userId); + if (!member) { + return false; + } + return member.membership === membership; + } + + /** + * Add a timelineSet for this room with the given filter + * @param filter - The filter to be applied to this timelineSet + * @param opts - Configuration options + * @returns The timelineSet + */ + getOrCreateFilteredTimelineSet(filter, { + prepopulateTimeline = true, + useSyncEvents = true, + pendingEvents = true + } = {}) { + if (this.filteredTimelineSets[filter.filterId]) { + return this.filteredTimelineSets[filter.filterId]; + } + const opts = Object.assign({ + filter, + pendingEvents + }, this.opts); + const timelineSet = new _eventTimelineSet.EventTimelineSet(this, opts); + this.reEmitter.reEmit(timelineSet, [RoomEvent.Timeline, RoomEvent.TimelineReset]); + if (useSyncEvents) { + this.filteredTimelineSets[filter.filterId] = timelineSet; + this.timelineSets.push(timelineSet); + } + const unfilteredLiveTimeline = this.getLiveTimeline(); + // Not all filter are possible to replicate client-side only + // When that's the case we do not want to prepopulate from the live timeline + // as we would get incorrect results compared to what the server would send back + if (prepopulateTimeline) { + // populate up the new timelineSet with filtered events from our live + // unfiltered timeline. + // + // XXX: This is risky as our timeline + // may have grown huge and so take a long time to filter. + // see https://github.com/vector-im/vector-web/issues/2109 + + unfilteredLiveTimeline.getEvents().forEach(function (event) { + timelineSet.addLiveEvent(event); + }); + + // find the earliest unfiltered timeline + let timeline = unfilteredLiveTimeline; + while (timeline.getNeighbouringTimeline(_eventTimeline.EventTimeline.BACKWARDS)) { + timeline = timeline.getNeighbouringTimeline(_eventTimeline.EventTimeline.BACKWARDS); + } + timelineSet.getLiveTimeline().setPaginationToken(timeline.getPaginationToken(_eventTimeline.EventTimeline.BACKWARDS), _eventTimeline.EventTimeline.BACKWARDS); + } else if (useSyncEvents) { + const livePaginationToken = unfilteredLiveTimeline.getPaginationToken(_eventTimeline.Direction.Forward); + timelineSet.getLiveTimeline().setPaginationToken(livePaginationToken, _eventTimeline.Direction.Backward); + } + + // alternatively, we could try to do something like this to try and re-paginate + // in the filtered events from nothing, but Mark says it's an abuse of the API + // to do so: + // + // timelineSet.resetLiveTimeline( + // unfilteredLiveTimeline.getPaginationToken(EventTimeline.FORWARDS) + // ); + + return timelineSet; + } + async getThreadListFilter(filterType = _thread.ThreadFilterType.All) { + const myUserId = this.client.getUserId(); + const filter = new _filter.Filter(myUserId); + const definition = { + room: { + timeline: { + [_thread.FILTER_RELATED_BY_REL_TYPES.name]: [_thread.THREAD_RELATION_TYPE.name] + } + } + }; + if (filterType === _thread.ThreadFilterType.My) { + definition.room.timeline[_thread.FILTER_RELATED_BY_SENDERS.name] = [myUserId]; + } + filter.setDefinition(definition); + const filterId = await this.client.getOrCreateFilter(`THREAD_PANEL_${this.roomId}_${filterType}`, filter); + filter.filterId = filterId; + return filter; + } + async createThreadTimelineSet(filterType) { + let timelineSet; + if (_thread.Thread.hasServerSideListSupport) { + timelineSet = new _eventTimelineSet.EventTimelineSet(this, _objectSpread(_objectSpread({}, this.opts), {}, { + pendingEvents: false + }), undefined, undefined, filterType !== null && filterType !== void 0 ? filterType : _thread.ThreadFilterType.All); + this.reEmitter.reEmit(timelineSet, [RoomEvent.Timeline, RoomEvent.TimelineReset]); + } else if (_thread.Thread.hasServerSideSupport) { + const filter = await this.getThreadListFilter(filterType); + timelineSet = this.getOrCreateFilteredTimelineSet(filter, { + prepopulateTimeline: false, + useSyncEvents: false, + pendingEvents: false + }); + } else { + timelineSet = new _eventTimelineSet.EventTimelineSet(this, { + pendingEvents: false + }); + Array.from(this.threads).forEach(([, thread]) => { + if (thread.length === 0) return; + const currentUserParticipated = thread.timeline.some(event => { + return event.getSender() === this.client.getUserId(); + }); + if (filterType !== _thread.ThreadFilterType.My || currentUserParticipated) { + timelineSet.getLiveTimeline().addEvent(thread.rootEvent, { + toStartOfTimeline: false + }); + } + }); + } + return timelineSet; + } + /** + * Takes the given thread root events and creates threads for them. + */ + processThreadRoots(events, toStartOfTimeline) { + if (!this.client.supportsThreads()) return; + for (const rootEvent of events) { + _eventTimeline.EventTimeline.setEventMetadata(rootEvent, this.currentState, toStartOfTimeline); + if (!this.getThread(rootEvent.getId())) { + this.createThread(rootEvent.getId(), rootEvent, [], toStartOfTimeline); + } + } + } + + /** + * Fetch the bare minimum of room threads required for the thread list to work reliably. + * With server support that means fetching one page. + * Without server support that means fetching as much at once as the server allows us to. + */ + async fetchRoomThreads() { + if (this.threadsReady || !this.client.supportsThreads()) { + return; + } + if (_thread.Thread.hasServerSideListSupport) { + await Promise.all([this.fetchRoomThreadList(_thread.ThreadFilterType.All), this.fetchRoomThreadList(_thread.ThreadFilterType.My)]); + } else { + const allThreadsFilter = await this.getThreadListFilter(); + const { + chunk: events + } = await this.client.createMessagesRequest(this.roomId, "", Number.MAX_SAFE_INTEGER, _eventTimeline.Direction.Backward, allThreadsFilter); + if (!events.length) return; + + // Sorted by last_reply origin_server_ts + const threadRoots = events.map(this.client.getEventMapper()).sort((eventA, eventB) => { + /** + * `origin_server_ts` in a decentralised world is far from ideal + * but for lack of any better, we will have to use this + * Long term the sorting should be handled by homeservers and this + * is only meant as a short term patch + */ + const threadAMetadata = eventA.getServerAggregatedRelation(_thread.THREAD_RELATION_TYPE.name); + const threadBMetadata = eventB.getServerAggregatedRelation(_thread.THREAD_RELATION_TYPE.name); + return threadAMetadata.latest_event.origin_server_ts - threadBMetadata.latest_event.origin_server_ts; + }); + let latestMyThreadsRootEvent; + const roomState = this.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + for (const rootEvent of threadRoots) { + var _this$threadsTimeline3; + const opts = { + duplicateStrategy: _eventTimelineSet.DuplicateStrategy.Ignore, + fromCache: false, + roomState + }; + (_this$threadsTimeline3 = this.threadsTimelineSets[0]) === null || _this$threadsTimeline3 === void 0 || _this$threadsTimeline3.addLiveEvent(rootEvent, opts); + const threadRelationship = rootEvent.getServerAggregatedRelation(_thread.THREAD_RELATION_TYPE.name); + if (threadRelationship !== null && threadRelationship !== void 0 && threadRelationship.current_user_participated) { + var _this$threadsTimeline4; + (_this$threadsTimeline4 = this.threadsTimelineSets[1]) === null || _this$threadsTimeline4 === void 0 || _this$threadsTimeline4.addLiveEvent(rootEvent, opts); + latestMyThreadsRootEvent = rootEvent; + } + } + this.processThreadRoots(threadRoots, true); + this.client.decryptEventIfNeeded(threadRoots[threadRoots.length - 1]); + if (latestMyThreadsRootEvent) { + this.client.decryptEventIfNeeded(latestMyThreadsRootEvent); + } + } + this.on(_thread.ThreadEvent.NewReply, this.onThreadReply); + this.on(_thread.ThreadEvent.Update, this.onThreadUpdate); + this.on(_thread.ThreadEvent.Delete, this.onThreadDelete); + this.threadsReady = true; + } + + /** + * Calls {@link processPollEvent} for a list of events. + * + * @param events - List of events + */ + async processPollEvents(events) { + for (const event of events) { + try { + // Continue if the event is a clear text, non-poll event. + if (!event.isEncrypted() && !(0, _poll.isPollEvent)(event)) continue; + + /** + * Try to decrypt the event. Promise resolution does not guarantee a successful decryption. + * Retry is handled in {@link processPollEvent}. + */ + await this.client.decryptEventIfNeeded(event); + this.processPollEvent(event); + } catch (err) { + _logger.logger.warn("Error processing poll event", event.getId(), err); + } + } + } + + /** + * Processes poll events: + * If the event has a decryption failure, it will listen for decryption and tries again. + * If it is a poll start event (`m.poll.start`), + * it creates and stores a Poll model and emits a PollEvent.New event. + * If the event is related to a poll, it will add it to the poll. + * Noop for other cases. + * + * @param event - Event that could be a poll event + */ + async processPollEvent(event) { + if (event.isDecryptionFailure()) { + event.once(_event.MatrixEventEvent.Decrypted, maybeDecryptedEvent => { + this.processPollEvent(maybeDecryptedEvent); + }); + return; + } + if (_matrixEventsSdk.M_POLL_START.matches(event.getType())) { + try { + const poll = new _poll.Poll(event, this.client, this); + this.polls.set(event.getId(), poll); + this.emit(_poll.PollEvent.New, poll); + + // remove the poll when redacted + event.once(_event.MatrixEventEvent.BeforeRedaction, redactedEvent => { + this.polls.delete(redactedEvent.getId()); + }); + } catch {} + // poll creation can fail for malformed poll start events + return; + } + const relationEventId = event.relationEventId; + if (relationEventId && this.polls.has(relationEventId)) { + const poll = this.polls.get(relationEventId); + poll === null || poll === void 0 || poll.onNewRelation(event); + } + } + + /** + * Fetch a single page of threadlist messages for the specific thread filter + * @internal + */ + async fetchRoomThreadList(filter) { + if (!this.client.supportsThreads()) return; + if (this.threadsTimelineSets.length === 0) return; + const timelineSet = filter === _thread.ThreadFilterType.My ? this.threadsTimelineSets[1] : this.threadsTimelineSets[0]; + const { + chunk: events, + end + } = await this.client.createThreadListMessagesRequest(this.roomId, null, undefined, _eventTimeline.Direction.Backward, timelineSet.threadListType, timelineSet.getFilter()); + timelineSet.getLiveTimeline().setPaginationToken(end !== null && end !== void 0 ? end : null, _eventTimeline.Direction.Backward); + if (!events.length) return; + const matrixEvents = events.map(this.client.getEventMapper()); + this.processThreadRoots(matrixEvents, true); + const roomState = this.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + for (const rootEvent of matrixEvents) { + timelineSet.addLiveEvent(rootEvent, { + duplicateStrategy: _eventTimelineSet.DuplicateStrategy.Replace, + fromCache: false, + roomState + }); + } + } + onThreadUpdate(thread) { + this.updateThreadRootEvents(thread, false, false); + } + onThreadReply(thread) { + this.updateThreadRootEvents(thread, false, true); + } + onThreadDelete(thread) { + var _timeline$getEvents; + this.threads.delete(thread.id); + const timeline = this.getTimelineForEvent(thread.id); + const roomEvent = timeline === null || timeline === void 0 || (_timeline$getEvents = timeline.getEvents()) === null || _timeline$getEvents === void 0 ? void 0 : _timeline$getEvents.find(it => it.getId() === thread.id); + if (roomEvent) { + thread.clearEventMetadata(roomEvent); + } else { + _logger.logger.debug("onThreadDelete: Could not find root event in room timeline"); + } + for (const timelineSet of this.threadsTimelineSets) { + timelineSet.removeEvent(thread.id); + } + } + + /** + * Forget the timelineSet for this room with the given filter + * + * @param filter - the filter whose timelineSet is to be forgotten + */ + removeFilteredTimelineSet(filter) { + const timelineSet = this.filteredTimelineSets[filter.filterId]; + delete this.filteredTimelineSets[filter.filterId]; + const i = this.timelineSets.indexOf(timelineSet); + if (i > -1) { + this.timelineSets.splice(i, 1); + } + } + + /** + * Determine which timeline(s) a given event should live in + * Thread roots live in both the main timeline and their corresponding thread timeline + * Relations, redactions, replies to thread relation events live only in the thread timeline + * Relations (other than m.thread), redactions, replies to a thread root live only in the main timeline + * Relations, redactions, replies where the parent cannot be found live in no timelines but should be aggregated regardless. + * Otherwise, the event lives in the main timeline only. + * + * Note: when a redaction is applied, the redacted event, events relating + * to it, and the redaction event itself, will all move to the main thread. + * This method classifies them as inside the thread of the redacted event. + * They are moved later as part of makeRedacted. + * This will change if MSC3389 is merged. + */ + eventShouldLiveIn(event, events, roots) { + var _this$client2; + if (!((_this$client2 = this.client) !== null && _this$client2 !== void 0 && _this$client2.supportsThreads())) { + return { + shouldLiveInRoom: true, + shouldLiveInThread: false + }; + } + + // A thread root is the only event shown in both timelines + if (event.isThreadRoot || roots !== null && roots !== void 0 && roots.has(event.getId())) { + return { + shouldLiveInRoom: true, + shouldLiveInThread: true, + threadId: event.getId() + }; + } + const isThreadRelation = event.isRelation(_thread.THREAD_RELATION_TYPE.name); + const parentEventId = event.getAssociatedId(); + const threadRootId = event.threadRootId; + + // Where the parent is the thread root and this is a non-thread relation this should live only in the main timeline + if (!!parentEventId && !isThreadRelation && (threadRootId === parentEventId || roots !== null && roots !== void 0 && roots.has(parentEventId))) { + return { + shouldLiveInRoom: true, + shouldLiveInThread: false + }; + } + let parentEvent; + if (parentEventId) { + var _this$findEventById; + parentEvent = (_this$findEventById = this.findEventById(parentEventId)) !== null && _this$findEventById !== void 0 ? _this$findEventById : events === null || events === void 0 ? void 0 : events.find(e => e.getId() === parentEventId); + } + + // Treat non-thread-relations, redactions, and replies as extensions of their parents so evaluate parentEvent instead + if (parentEvent && !isThreadRelation) { + return this.eventShouldLiveIn(parentEvent, events, roots); + } + + // A thread relation (1st and 2nd order) is always only shown in a thread + if (threadRootId != undefined) { + return { + shouldLiveInRoom: false, + shouldLiveInThread: true, + threadId: threadRootId + }; + } + + // Due to replies not being typical relations and being used as fallbacks for threads relations + // If we bypass the if case above then we know we are not a thread, so if we are still a reply + // then we know that we must be in the main timeline. Same goes if we have no associated parent event. + if (!parentEventId || !!event.replyEventId) { + return { + shouldLiveInRoom: true, + shouldLiveInThread: false + }; + } + + // We've exhausted all scenarios, + // we cannot assume that it lives in the main timeline as this may be a relation for an unknown thread + // adding the event in the wrong timeline causes stuck notifications and can break ability to send read receipts + return { + shouldLiveInRoom: false, + shouldLiveInThread: false + }; + } + findThreadForEvent(event) { + if (!event) return null; + const { + threadId + } = this.eventShouldLiveIn(event); + return threadId ? this.getThread(threadId) : null; + } + addThreadedEvents(threadId, events, toStartOfTimeline = false) { + const thread = this.getThread(threadId); + if (thread) { + thread.addEvents(events, toStartOfTimeline); + } else { + var _this$findEventById2; + const rootEvent = (_this$findEventById2 = this.findEventById(threadId)) !== null && _this$findEventById2 !== void 0 ? _this$findEventById2 : events.find(e => e.getId() === threadId); + this.createThread(threadId, rootEvent, events, toStartOfTimeline); + } + } + + /** + * Adds events to a thread's timeline. Will fire "Thread.update" + */ + processThreadedEvents(events, toStartOfTimeline) { + events.forEach(this.applyRedaction); + const eventsByThread = {}; + for (const event of events) { + var _eventsByThread; + const { + threadId, + shouldLiveInThread + } = this.eventShouldLiveIn(event); + if (shouldLiveInThread && !eventsByThread[threadId]) { + eventsByThread[threadId] = []; + } + (_eventsByThread = eventsByThread[threadId]) === null || _eventsByThread === void 0 || _eventsByThread.push(event); + } + Object.entries(eventsByThread).map(([threadId, threadEvents]) => this.addThreadedEvents(threadId, threadEvents, toStartOfTimeline)); + } + createThread(threadId, rootEvent, events = [], toStartOfTimeline) { + var _this$cachedThreadRea, _this$lastThread, _this$lastThread$root; + if (this.threads.has(threadId)) { + return this.threads.get(threadId); + } + if (rootEvent) { + const relatedEvents = this.relations.getAllChildEventsForEvent(rootEvent.getId()); + if (relatedEvents !== null && relatedEvents !== void 0 && relatedEvents.length) { + // Include all relations of the root event, given it'll be visible in both timelines, + // except `m.replace` as that will already be applied atop the event using `MatrixEvent::makeReplaced` + events = events.concat(relatedEvents.filter(e => !e.isRelation(_event2.RelationType.Replace))); + } + } + const thread = new _thread.Thread(threadId, rootEvent, { + room: this, + client: this.client, + pendingEventOrdering: this.opts.pendingEventOrdering, + receipts: (_this$cachedThreadRea = this.cachedThreadReadReceipts.get(threadId)) !== null && _this$cachedThreadRea !== void 0 ? _this$cachedThreadRea : [] + }); + + // Add the re-emitter before we start adding events to the thread so we don't miss events + this.reEmitter.reEmit(thread, [_thread.ThreadEvent.Delete, _thread.ThreadEvent.Update, _thread.ThreadEvent.NewReply, RoomEvent.Timeline, RoomEvent.TimelineReset]); + + // All read receipts should now come down from sync, we do not need to keep + // a reference to the cached receipts anymore. + this.cachedThreadReadReceipts.delete(threadId); + + // If we managed to create a thread and figure out its `id` then we can use it + // This has to happen before thread.addEvents, because that adds events to the eventtimeline, and the + // eventtimeline sometimes looks up thread information via the room. + this.threads.set(thread.id, thread); + + // This is necessary to be able to jump to events in threads: + // If we jump to an event in a thread where neither the event, nor the root, + // nor any thread event are loaded yet, we'll load the event as well as the thread root, create the thread, + // and pass the event through this. + thread.addEvents(events, false); + const isNewer = ((_this$lastThread = this.lastThread) === null || _this$lastThread === void 0 ? void 0 : _this$lastThread.rootEvent) && (rootEvent === null || rootEvent === void 0 ? void 0 : rootEvent.localTimestamp) && ((_this$lastThread$root = this.lastThread.rootEvent) === null || _this$lastThread$root === void 0 ? void 0 : _this$lastThread$root.localTimestamp) < (rootEvent === null || rootEvent === void 0 ? void 0 : rootEvent.localTimestamp); + if (!this.lastThread || isNewer) { + this.lastThread = thread; + } + + // We need to update the thread root events, but the thread may not be ready yet. + // If it isn't, it will fire ThreadEvent.Update when it is and we'll call updateThreadRootEvents then. + if (this.threadsReady && thread.initialEventsFetched) { + this.updateThreadRootEvents(thread, toStartOfTimeline, false); + } + this.emit(_thread.ThreadEvent.New, thread, toStartOfTimeline); + return thread; + } + processLiveEvent(event) { + this.applyRedaction(event); + + // Implement MSC3531: hiding messages. + if (event.isVisibilityEvent()) { + // This event changes the visibility of another event, record + // the visibility change, inform clients if necessary. + this.applyNewVisibilityEvent(event); + } + // If any pending visibility change is waiting for this (older) event, + this.applyPendingVisibilityEvents(event); + + // Sliding Sync modifications: + // The proxy cannot guarantee every sent event will have a transaction_id field, so we need + // to check the event ID against the list of pending events if there is no transaction ID + // field. Only do this for events sent by us though as it's potentially expensive to loop + // the pending events map. + const txnId = event.getUnsigned().transaction_id; + if (!txnId && event.getSender() === this.myUserId) { + // check the txn map for a matching event ID + for (const [tid, localEvent] of this.txnToEvent) { + if (localEvent.getId() === event.getId()) { + _logger.logger.debug("processLiveEvent: found sent event without txn ID: ", tid, event.getId()); + // update the unsigned field so we can re-use the same codepaths + const unsigned = event.getUnsigned(); + unsigned.transaction_id = tid; + event.setUnsigned(unsigned); + break; + } + } + } + } + + /** + * Add an event to the end of this room's live timelines. Will fire + * "Room.timeline". + * + * @param event - Event to be added + * @param addLiveEventOptions - addLiveEvent options + * @internal + * + * @remarks + * Fires {@link RoomEvent.Timeline} + */ + addLiveEvent(event, addLiveEventOptions) { + const { + duplicateStrategy, + timelineWasEmpty, + fromCache + } = addLiveEventOptions; + + // add to our timeline sets + for (const timelineSet of this.timelineSets) { + timelineSet.addLiveEvent(event, { + duplicateStrategy, + fromCache, + timelineWasEmpty + }); + } + + // synthesize and inject implicit read receipts + // Done after adding the event because otherwise the app would get a read receipt + // pointing to an event that wasn't yet in the timeline + // Don't synthesize RR for m.room.redaction as this causes the RR to go missing. + if (event.sender && event.getType() !== _event2.EventType.RoomRedaction) { + this.addReceipt((0, _readReceipt.synthesizeReceipt)(event.sender.userId, event, _read_receipts.ReceiptType.Read), true); + + // Any live events from a user could be taken as implicit + // presence information: evidence that they are currently active. + // ...except in a world where we use 'user.currentlyActive' to reduce + // presence spam, this isn't very useful - we'll get a transition when + // they are no longer currently active anyway. So don't bother to + // reset the lastActiveAgo and lastPresenceTs from the RoomState's user. + } + } + + /** + * Add a pending outgoing event to this room. + * + *

The event is added to either the pendingEventList, or the live timeline, + * depending on the setting of opts.pendingEventOrdering. + * + *

This is an internal method, intended for use by MatrixClient. + * + * @param event - The event to add. + * + * @param txnId - Transaction id for this outgoing event + * + * @throws if the event doesn't have status SENDING, or we aren't given a + * unique transaction id. + * + * @remarks + * Fires {@link RoomEvent.LocalEchoUpdated} + */ + addPendingEvent(event, txnId) { + if (event.status !== _eventStatus.EventStatus.SENDING && event.status !== _eventStatus.EventStatus.NOT_SENT) { + throw new Error("addPendingEvent called on an event with status " + event.status); + } + if (this.txnToEvent.get(txnId)) { + throw new Error("addPendingEvent called on an event with known txnId " + txnId); + } + + // call setEventMetadata to set up event.sender etc + // as event is shared over all timelineSets, we set up its metadata based + // on the unfiltered timelineSet. + _eventTimeline.EventTimeline.setEventMetadata(event, this.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS), false); + this.txnToEvent.set(txnId, event); + if (this.pendingEventList) { + if (this.pendingEventList.some(e => e.status === _eventStatus.EventStatus.NOT_SENT)) { + _logger.logger.warn("Setting event as NOT_SENT due to messages in the same state"); + event.setStatus(_eventStatus.EventStatus.NOT_SENT); + } + this.pendingEventList.push(event); + this.savePendingEvents(); + if (event.isRelation()) { + // For pending events, add them to the relations collection immediately. + // (The alternate case below already covers this as part of adding to + // the timeline set.) + this.aggregateNonLiveRelation(event); + } + if (event.isRedaction()) { + const redactId = event.event.redacts; + let redactedEvent = this.pendingEventList.find(e => e.getId() === redactId); + if (!redactedEvent && redactId) { + redactedEvent = this.findEventById(redactId); + } + if (redactedEvent) { + redactedEvent.markLocallyRedacted(event); + this.emit(RoomEvent.Redaction, event, this, redactedEvent.threadRootId); + } + } + } else { + for (const timelineSet of this.timelineSets) { + if (timelineSet.getFilter()) { + if (timelineSet.getFilter().filterRoomTimeline([event]).length) { + timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), { + toStartOfTimeline: false + }); + } + } else { + timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), { + toStartOfTimeline: false + }); + } + } + } + this.emit(RoomEvent.LocalEchoUpdated, event, this); + } + + /** + * Persists all pending events to local storage + * + * If the current room is encrypted only encrypted events will be persisted + * all messages that are not yet encrypted will be discarded + * + * This is because the flow of EVENT_STATUS transition is + * `queued => sending => encrypting => sending => sent` + * + * Steps 3 and 4 are skipped for unencrypted room. + * It is better to discard an unencrypted message rather than persisting + * it locally for everyone to read + */ + savePendingEvents() { + if (this.pendingEventList) { + const pendingEvents = this.pendingEventList.map(event => { + return _objectSpread(_objectSpread({}, event.event), {}, { + txn_id: event.getTxnId() + }); + }).filter(event => { + // Filter out the unencrypted messages if the room is encrypted + const isEventEncrypted = event.type === _event2.EventType.RoomMessageEncrypted; + const isRoomEncrypted = this.hasEncryptionStateEvent(); + return isEventEncrypted || !isRoomEncrypted; + }); + this.client.store.setPendingEvents(this.roomId, pendingEvents); + } + } + + /** + * Used to aggregate the local echo for a relation, and also + * for re-applying a relation after it's redaction has been cancelled, + * as the local echo for the redaction of the relation would have + * un-aggregated the relation. Note that this is different from regular messages, + * which are just kept detached for their local echo. + * + * Also note that live events are aggregated in the live EventTimelineSet. + * @param event - the relation event that needs to be aggregated. + */ + aggregateNonLiveRelation(event) { + this.relations.aggregateChildEvent(event); + } + getEventForTxnId(txnId) { + return this.txnToEvent.get(txnId); + } + + /** + * Deal with the echo of a message we sent. + * + *

We move the event to the live timeline if it isn't there already, and + * update it. + * + * @param remoteEvent - The event received from + * /sync + * @param localEvent - The local echo, which + * should be either in the pendingEventList or the timeline. + * + * @internal + * + * @remarks + * Fires {@link RoomEvent.LocalEchoUpdated} + */ + handleRemoteEcho(remoteEvent, localEvent) { + const oldEventId = localEvent.getId(); + const newEventId = remoteEvent.getId(); + const oldStatus = localEvent.status; + _logger.logger.debug(`Got remote echo for event ${oldEventId} -> ${newEventId} old status ${oldStatus}`); + + // no longer pending + this.txnToEvent.delete(remoteEvent.getUnsigned().transaction_id); + + // if it's in the pending list, remove it + if (this.pendingEventList) { + this.removePendingEvent(oldEventId); + } + + // replace the event source (this will preserve the plaintext payload if + // any, which is good, because we don't want to try decoding it again). + localEvent.handleRemoteEcho(remoteEvent.event); + const { + shouldLiveInRoom, + threadId + } = this.eventShouldLiveIn(remoteEvent); + const thread = threadId ? this.getThread(threadId) : null; + thread === null || thread === void 0 || thread.setEventMetadata(localEvent); + thread === null || thread === void 0 || thread.timelineSet.handleRemoteEcho(localEvent, oldEventId, newEventId); + if (shouldLiveInRoom) { + for (const timelineSet of this.timelineSets) { + // if it's already in the timeline, update the timeline map. If it's not, add it. + timelineSet.handleRemoteEcho(localEvent, oldEventId, newEventId); + } + } + this.emit(RoomEvent.LocalEchoUpdated, localEvent, this, oldEventId, oldStatus); + } + + /** + * Update the status / event id on a pending event, to reflect its transmission + * progress. + * + *

This is an internal method. + * + * @param event - local echo event + * @param newStatus - status to assign + * @param newEventId - new event id to assign. Ignored unless newStatus == EventStatus.SENT. + * + * @remarks + * Fires {@link RoomEvent.LocalEchoUpdated} + */ + updatePendingEvent(event, newStatus, newEventId) { + _logger.logger.log(`setting pendingEvent status to ${newStatus} in ${event.getRoomId()} ` + `event ID ${event.getId()} -> ${newEventId}`); + + // if the message was sent, we expect an event id + if (newStatus == _eventStatus.EventStatus.SENT && !newEventId) { + throw new Error("updatePendingEvent called with status=SENT, but no new event id"); + } + + // SENT races against /sync, so we have to special-case it. + if (newStatus == _eventStatus.EventStatus.SENT) { + const timeline = this.getTimelineForEvent(newEventId); + if (timeline) { + // we've already received the event via the event stream. + // nothing more to do here, assuming the transaction ID was correctly matched. + // Let's check that. + const remoteEvent = this.findEventById(newEventId); + const remoteTxnId = remoteEvent === null || remoteEvent === void 0 ? void 0 : remoteEvent.getUnsigned().transaction_id; + if (!remoteTxnId && remoteEvent) { + // This code path is mostly relevant for the Sliding Sync proxy. + // The remote event did not contain a transaction ID, so we did not handle + // the remote echo yet. Handle it now. + const unsigned = remoteEvent.getUnsigned(); + unsigned.transaction_id = event.getTxnId(); + remoteEvent.setUnsigned(unsigned); + // the remote event is _already_ in the timeline, so we need to remove it so + // we can convert the local event into the final event. + this.removeEvent(remoteEvent.getId()); + this.handleRemoteEcho(remoteEvent, event); + } + return; + } + } + const oldStatus = event.status; + const oldEventId = event.getId(); + if (!oldStatus) { + throw new Error("updatePendingEventStatus called on an event which is not a local echo."); + } + const allowed = ALLOWED_TRANSITIONS[oldStatus]; + if (!(allowed !== null && allowed !== void 0 && allowed.includes(newStatus))) { + throw new Error(`Invalid EventStatus transition ${oldStatus}->${newStatus}`); + } + event.setStatus(newStatus); + if (newStatus == _eventStatus.EventStatus.SENT) { + // update the event id + event.replaceLocalEventId(newEventId); + const { + shouldLiveInRoom, + threadId + } = this.eventShouldLiveIn(event); + const thread = threadId ? this.getThread(threadId) : undefined; + thread === null || thread === void 0 || thread.setEventMetadata(event); + thread === null || thread === void 0 || thread.timelineSet.replaceEventId(oldEventId, newEventId); + if (shouldLiveInRoom) { + // if the event was already in the timeline (which will be the case if + // opts.pendingEventOrdering==chronological), we need to update the + // timeline map. + for (const timelineSet of this.timelineSets) { + timelineSet.replaceEventId(oldEventId, newEventId); + } + } + } else if (newStatus == _eventStatus.EventStatus.CANCELLED) { + // remove it from the pending event list, or the timeline. + if (this.pendingEventList) { + const removedEvent = this.getPendingEvent(oldEventId); + this.removePendingEvent(oldEventId); + if (removedEvent !== null && removedEvent !== void 0 && removedEvent.isRedaction()) { + this.revertRedactionLocalEcho(removedEvent); + } + } + this.removeEvent(oldEventId); + } + this.savePendingEvents(); + this.emit(RoomEvent.LocalEchoUpdated, event, this, oldEventId, oldStatus); + } + revertRedactionLocalEcho(redactionEvent) { + const redactId = redactionEvent.event.redacts; + if (!redactId) { + return; + } + const redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId); + if (redactedEvent) { + redactedEvent.unmarkLocallyRedacted(); + // re-render after undoing redaction + this.emit(RoomEvent.RedactionCancelled, redactionEvent, this); + // reapply relation now redaction failed + if (redactedEvent.isRelation()) { + this.aggregateNonLiveRelation(redactedEvent); + } + } + } + + /** + * Add some events to this room. This can include state events, message + * events and typing notifications. These events are treated as "live" so + * they will go to the end of the timeline. + * + * @param events - A list of events to add. + * @param addLiveEventOptions - addLiveEvent options + * @throws If `duplicateStrategy` is not falsey, 'replace' or 'ignore'. + */ + + /** + * @deprecated In favor of the overload with `IAddLiveEventOptions` + */ + + async addLiveEvents(events, duplicateStrategyOrOpts, fromCache = false) { + let duplicateStrategy = duplicateStrategyOrOpts; + let timelineWasEmpty = false; + if (typeof duplicateStrategyOrOpts === "object") { + ({ + duplicateStrategy, + fromCache = false, + /* roomState, (not used here) */ + timelineWasEmpty + } = duplicateStrategyOrOpts); + } else if (duplicateStrategyOrOpts !== undefined) { + // Deprecation warning + // FIXME: Remove after 2023-06-01 (technical debt) + _logger.logger.warn("Overload deprecated: " + "`Room.addLiveEvents(events, duplicateStrategy?, fromCache?)` " + "is deprecated in favor of the overload with `Room.addLiveEvents(events, IAddLiveEventOptions)`"); + } + if (duplicateStrategy && ["replace", "ignore"].indexOf(duplicateStrategy) === -1) { + throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'"); + } + + // sanity check that the live timeline is still live + for (let i = 0; i < this.timelineSets.length; i++) { + const liveTimeline = this.timelineSets[i].getLiveTimeline(); + if (liveTimeline.getPaginationToken(_eventTimeline.EventTimeline.FORWARDS)) { + throw new Error("live timeline " + i + " is no longer live - it has a pagination token " + "(" + liveTimeline.getPaginationToken(_eventTimeline.EventTimeline.FORWARDS) + ")"); + } + if (liveTimeline.getNeighbouringTimeline(_eventTimeline.EventTimeline.FORWARDS)) { + throw new Error(`live timeline ${i} is no longer live - it has a neighbouring timeline`); + } + } + const threadRoots = this.findThreadRoots(events); + const eventsByThread = {}; + const options = { + duplicateStrategy, + fromCache, + timelineWasEmpty + }; + + // List of extra events to check for being parents of any relations encountered + const neighbouringEvents = [...events]; + for (const event of events) { + var _threadId, _eventsByThread2, _threadId3; + // TODO: We should have a filter to say "only add state event types X Y Z to the timeline". + this.processLiveEvent(event); + if (event.getUnsigned().transaction_id) { + const existingEvent = this.txnToEvent.get(event.getUnsigned().transaction_id); + if (existingEvent) { + // remote echo of an event we sent earlier + this.handleRemoteEcho(event, existingEvent); + continue; // we can skip adding the event to the timeline sets, it is already there + } + } + let { + shouldLiveInRoom, + shouldLiveInThread, + threadId + } = this.eventShouldLiveIn(event, neighbouringEvents, threadRoots); + if (!shouldLiveInThread && !shouldLiveInRoom && event.isRelation()) { + try { + const parentEvent = new _event.MatrixEvent(await this.client.fetchRoomEvent(this.roomId, event.relationEventId)); + neighbouringEvents.push(parentEvent); + if (parentEvent.threadRootId) { + threadRoots.add(parentEvent.threadRootId); + const unsigned = event.getUnsigned(); + unsigned[_event2.UNSIGNED_THREAD_ID_FIELD.name] = parentEvent.threadRootId; + event.setUnsigned(unsigned); + } + ({ + shouldLiveInRoom, + shouldLiveInThread, + threadId + } = this.eventShouldLiveIn(event, neighbouringEvents, threadRoots)); + } catch (e) { + _logger.logger.error("Failed to load parent event of unhandled relation", e); + } + } + if (shouldLiveInThread && !eventsByThread[(_threadId = threadId) !== null && _threadId !== void 0 ? _threadId : ""]) { + var _threadId2; + eventsByThread[(_threadId2 = threadId) !== null && _threadId2 !== void 0 ? _threadId2 : ""] = []; + } + (_eventsByThread2 = eventsByThread[(_threadId3 = threadId) !== null && _threadId3 !== void 0 ? _threadId3 : ""]) === null || _eventsByThread2 === void 0 || _eventsByThread2.push(event); + if (shouldLiveInRoom) { + this.addLiveEvent(event, options); + } else if (!shouldLiveInThread && event.isRelation()) { + this.relations.aggregateChildEvent(event); + } + } + Object.entries(eventsByThread).forEach(([threadId, threadEvents]) => { + this.addThreadedEvents(threadId, threadEvents, false); + }); + } + partitionThreadedEvents(events) { + // Indices to the events array, for readability + const ROOM = 0; + const THREAD = 1; + const UNKNOWN_RELATION = 2; + if (this.client.supportsThreads()) { + const threadRoots = this.findThreadRoots(events); + return events.reduce((memo, event) => { + const { + shouldLiveInRoom, + shouldLiveInThread, + threadId + } = this.eventShouldLiveIn(event, events, threadRoots); + if (shouldLiveInRoom) { + memo[ROOM].push(event); + } + if (shouldLiveInThread) { + event.setThreadId(threadId !== null && threadId !== void 0 ? threadId : ""); + memo[THREAD].push(event); + } + if (!shouldLiveInThread && !shouldLiveInRoom) { + memo[UNKNOWN_RELATION].push(event); + } + return memo; + }, [[], [], []]); + } else { + // When `threadSupport` is disabled treat all events as timelineEvents + return [events, [], []]; + } + } + + /** + * Given some events, find the IDs of all the thread roots that are referred to by them. + */ + findThreadRoots(events) { + const threadRoots = new Set(); + for (const event of events) { + const threadRootId = event.threadRootId; + if (threadRootId != undefined) { + threadRoots.add(threadRootId); + } + } + return threadRoots; + } + + /** + * Add a receipt event to the room. + * @param event - The m.receipt event. + * @param synthetic - True if this event is implicit. + */ + addReceipt(event, synthetic = false) { + const content = event.getContent(); + this.roomReceipts.add(content, synthetic); + + // TODO: delete the following code when it has been replaced by RoomReceipts + Object.keys(content).forEach(eventId => { + Object.keys(content[eventId]).forEach(receiptType => { + Object.keys(content[eventId][receiptType]).forEach(userId => { + var _receipt$thread_id, _this$unthreadedRecei, _this$unthreadedRecei2; + const receipt = content[eventId][receiptType][userId]; + const receiptForMainTimeline = !receipt.thread_id || receipt.thread_id === _read_receipts.MAIN_ROOM_TIMELINE; + const receiptDestination = receiptForMainTimeline ? this : this.threads.get((_receipt$thread_id = receipt.thread_id) !== null && _receipt$thread_id !== void 0 ? _receipt$thread_id : ""); + if (receiptDestination) { + receiptDestination.addReceiptToStructure(eventId, receiptType, userId, receipt, synthetic); + + // If the read receipt sent for the logged in user matches + // the last event of the live timeline, then we know for a fact + // that the user has read that message, so we can mark the room + // as read and not wait for the remote echo from synapse. + // + // This needs to be done after the initial sync as we do not want this + // logic to run whilst the room is being initialised + // + // We only do this for non-synthetic receipts, because + // our intention is to do this when the user really did + // just read a message, not when we are e.g. receiving + // an event during the sync. More explanation at: + // https://github.com/matrix-org/matrix-js-sdk/issues/3684 + if (!synthetic && this.client.isInitialSyncComplete() && userId === this.client.getUserId()) { + const lastEvent = receiptDestination.timeline[receiptDestination.timeline.length - 1]; + if (lastEvent && eventId === lastEvent.getId() && userId === lastEvent.getSender()) { + receiptDestination.setUnread(NotificationCountType.Total, 0); + receiptDestination.setUnread(NotificationCountType.Highlight, 0); + } + } + } else { + var _this$cachedThreadRea2; + // The thread does not exist locally, keep the read receipt + // in a cache locally, and re-apply the `addReceipt` logic + // when the thread is created + this.cachedThreadReadReceipts.set(receipt.thread_id, [...((_this$cachedThreadRea2 = this.cachedThreadReadReceipts.get(receipt.thread_id)) !== null && _this$cachedThreadRea2 !== void 0 ? _this$cachedThreadRea2 : []), { + eventId, + receiptType, + userId, + receipt, + synthetic + }]); + } + const me = this.client.getUserId(); + // Track the time of the current user's oldest threaded receipt in the room. + if (userId === me && !receiptForMainTimeline && receipt.ts < this.oldestThreadedReceiptTs) { + this.oldestThreadedReceiptTs = receipt.ts; + } + + // Track each user's unthreaded read receipt. + if (!receipt.thread_id && receipt.ts > ((_this$unthreadedRecei = (_this$unthreadedRecei2 = this.unthreadedReceipts.get(userId)) === null || _this$unthreadedRecei2 === void 0 ? void 0 : _this$unthreadedRecei2.ts) !== null && _this$unthreadedRecei !== void 0 ? _this$unthreadedRecei : 0)) { + this.unthreadedReceipts.set(userId, receipt); + } + }); }); }); - }); - return receiptCacheByEventId; -}; -/** - * Add a temporary local-echo receipt to the room to reflect in the - * client the fact that we've sent one. - * @param {string} userId The user ID if the receipt sender - * @param {MatrixEvent} e The event that is to be acknowledged - * @param {string} receiptType The type of receipt - */ + // End of code to delete when replaced by RoomReceipts - -Room.prototype._addLocalEchoReceipt = function (userId, e, receiptType) { - this.addReceipt(synthesizeReceipt(userId, e, receiptType), true); -}; -/** - * Update the room-tag event for the room. The previous one is overwritten. - * @param {MatrixEvent} event the m.tag event - */ - - -Room.prototype.addTags = function (event) { - // event content looks like: - // content: { - // tags: { - // $tagName: { $metadata: $value }, - // $tagName: { $metadata: $value }, - // } - // } - // XXX: do we need to deep copy here? - this.tags = event.getContent().tags || {}; // XXX: we could do a deep-comparison to see if the tags have really - // changed - but do we want to bother? - - this.emit("Room.tags", event, this); -}; -/** - * Update the account_data events for this room, overwriting events of the same type. - * @param {Array} events an array of account_data events to add - */ - - -Room.prototype.addAccountData = function (events) { - for (let i = 0; i < events.length; i++) { - const event = events[i]; - - if (event.getType() === "m.tag") { - this.addTags(event); - } - - const lastEvent = this.accountData[event.getType()]; - this.accountData[event.getType()] = event; - this.emit("Room.accountData", event, this, lastEvent); + // send events after we've regenerated the structure & cache, otherwise things that + // listened for the event would read stale data. + this.emit(RoomEvent.Receipt, event, this); } -}; -/** - * Access account_data event of given event type for this room - * @param {string} type the type of account_data event to be accessed - * @return {?MatrixEvent} the account_data event in question - */ - -Room.prototype.getAccountData = function (type) { - return this.accountData[type]; -}; -/** - * Returns wheter the syncing user has permission to send a message in the room - * @return {boolean} true if the user should be permitted to send - * message events into the room. - */ - - -Room.prototype.maySendMessage = function () { - return this.getMyMembership() === 'join' && this.currentState.maySendEvent('m.room.message', this.myUserId); -}; -/** - * This is an internal method. Calculates the name of the room from the current - * room state. - * @param {Room} room The matrix room. - * @param {string} userId The client's user ID. Used to filter room members - * correctly. - * @param {bool} ignoreRoomNameEvent Return the implicit room name that we'd see if there - * was no m.room.name event. - * @return {string} The calculated room name. - */ - - -function calculateRoomName(room, userId, ignoreRoomNameEvent) { - if (!ignoreRoomNameEvent) { - // check for an alias, if any. for now, assume first alias is the - // official one. - const mRoomName = room.currentState.getStateEvents("m.room.name", ""); - - if (mRoomName && mRoomName.getContent() && mRoomName.getContent().name) { - return mRoomName.getContent().name; + /** + * Adds/handles ephemeral events such as typing notifications and read receipts. + * @param events - A list of events to process + */ + addEphemeralEvents(events) { + for (const event of events) { + if (event.getType() === _event2.EventType.Typing) { + this.currentState.setTypingEvent(event); + } else if (event.getType() === _event2.EventType.Receipt) { + this.addReceipt(event); + } // else ignore - life is too short for us to care about these events } } - let alias = room.getCanonicalAlias(); - - if (!alias) { - const aliases = room.getAltAliases(); - - if (aliases.length) { - alias = aliases[0]; + /** + * Removes events from this room. + * @param eventIds - A list of eventIds to remove. + */ + removeEvents(eventIds) { + for (const eventId of eventIds) { + this.removeEvent(eventId); } } - if (alias) { - return alias; + /** + * Removes a single event from this room. + * + * @param eventId - The id of the event to remove + * + * @returns true if the event was removed from any of the room's timeline sets + */ + removeEvent(eventId) { + let removedAny = false; + for (const timelineSet of this.timelineSets) { + const removed = timelineSet.removeEvent(eventId); + if (removed) { + if (removed.isRedaction()) { + this.revertRedactionLocalEcho(removed); + } + removedAny = true; + } + } + return removedAny; } - const joinedMemberCount = room.currentState.getJoinedMemberCount(); - const invitedMemberCount = room.currentState.getInvitedMemberCount(); // -1 because these numbers include the syncing user - - const inviteJoinCount = joinedMemberCount + invitedMemberCount - 1; // get members that are NOT ourselves and are actually in the room. - - let otherNames = null; - - if (room._summaryHeroes) { - // if we have a summary, the member state events - // should be in the room state - otherNames = room._summaryHeroes.map(userId => { - const member = room.getMember(userId); - return member ? member.name : userId; + /** + * Recalculate various aspects of the room, including the room name and + * room summary. Call this any time the room's current state is modified. + * May fire "Room.name" if the room name is updated. + * + * @remarks + * Fires {@link RoomEvent.Name} + */ + recalculate() { + // set fake stripped state events if this is an invite room so logic remains + // consistent elsewhere. + const membershipEvent = this.currentState.getStateEvents(_event2.EventType.RoomMember, this.myUserId); + if (membershipEvent) { + const membership = membershipEvent.getContent().membership; + this.updateMyMembership(membership); + if (membership === _membership.KnownMembership.Invite) { + const strippedStateEvents = membershipEvent.getUnsigned().invite_room_state || []; + strippedStateEvents.forEach(strippedEvent => { + const existingEvent = this.currentState.getStateEvents(strippedEvent.type, strippedEvent.state_key); + if (!existingEvent) { + // set the fake stripped event instead + this.currentState.setStateEvents([new _event.MatrixEvent({ + type: strippedEvent.type, + state_key: strippedEvent.state_key, + content: strippedEvent.content, + event_id: "$fake" + Date.now(), + room_id: this.roomId, + user_id: this.myUserId // technically a lie + })]); + } + }); + } + } + const oldName = this.name; + this.name = this.calculateRoomName(this.myUserId); + this.normalizedName = (0, _utils.normalize)(this.name); + this.summary = new _roomSummary.RoomSummary(this.roomId, { + title: this.name }); - } else { - let otherMembers = room.currentState.getMembers().filter(m => { - return m.userId !== userId && (m.membership === "invite" || m.membership === "join"); - }); // make sure members have stable order - - otherMembers.sort((a, b) => a.userId.localeCompare(b.userId)); // only 5 first members, immitate _summaryHeroes - - otherMembers = otherMembers.slice(0, 5); - otherNames = otherMembers.map(m => m.name); - } - - if (inviteJoinCount) { - return memberNamesToRoomName(otherNames, inviteJoinCount); - } - - const myMembership = room.getMyMembership(); // if I have created a room and invited people throuh - // 3rd party invites - - if (myMembership == 'join') { - const thirdPartyInvites = room.currentState.getStateEvents("m.room.third_party_invite"); - - if (thirdPartyInvites && thirdPartyInvites.length) { - const thirdPartyNames = thirdPartyInvites.map(i => { - return i.getContent().display_name; - }); - return `Inviting ${memberNamesToRoomName(thirdPartyNames)}`; + if (oldName !== this.name) { + this.emit(RoomEvent.Name, this); } - } // let's try to figure out who was here before - - - let leftNames = otherNames; // if we didn't have heroes, try finding them in the room state - - if (!leftNames.length) { - leftNames = room.currentState.getMembers().filter(m => { - return m.userId !== userId && m.membership !== "invite" && m.membership !== "join"; - }).map(m => m.name); } - if (leftNames.length) { - return `Empty room (was ${memberNamesToRoomName(leftNames)})`; - } else { - return "Empty room"; + /** + * Update the room-tag event for the room. The previous one is overwritten. + * @param event - the m.tag event + */ + addTags(event) { + // event content looks like: + // content: { + // tags: { + // $tagName: { $metadata: $value }, + // $tagName: { $metadata: $value }, + // } + // } + + // XXX: do we need to deep copy here? + this.tags = event.getContent().tags || {}; + + // XXX: we could do a deep-comparison to see if the tags have really + // changed - but do we want to bother? + this.emit(RoomEvent.Tags, event, this); + } + + /** + * Update the account_data events for this room, overwriting events of the same type. + * @param events - an array of account_data events to add + */ + addAccountData(events) { + for (const event of events) { + if (event.getType() === "m.tag") { + this.addTags(event); + } + const eventType = event.getType(); + const lastEvent = this.accountData.get(eventType); + this.accountData.set(eventType, event); + this.emit(RoomEvent.AccountData, event, this, lastEvent); + } + } + + /** + * Access account_data event of given event type for this room + * @param type - the type of account_data event to be accessed + * @returns the account_data event in question + */ + getAccountData(type) { + return this.accountData.get(type); + } + + /** + * Returns whether the syncing user has permission to send a message in the room + * @returns true if the user should be permitted to send + * message events into the room. + */ + maySendMessage() { + return this.getMyMembership() === _membership.KnownMembership.Join && (this.hasEncryptionStateEvent() ? this.currentState.maySendEvent(_event2.EventType.RoomMessageEncrypted, this.myUserId) : this.currentState.maySendEvent(_event2.EventType.RoomMessage, this.myUserId)); + } + + /** + * Returns whether the given user has permissions to issue an invite for this room. + * @param userId - the ID of the Matrix user to check permissions for + * @returns true if the user should be permitted to issue invites for this room. + */ + canInvite(userId) { + let canInvite = this.getMyMembership() === _membership.KnownMembership.Join; + const powerLevelsEvent = this.currentState.getStateEvents(_event2.EventType.RoomPowerLevels, ""); + const powerLevels = powerLevelsEvent && powerLevelsEvent.getContent(); + const me = this.getMember(userId); + if (powerLevels && me && powerLevels.invite > me.powerLevel) { + canInvite = false; + } + return canInvite; + } + + /** + * Returns the join rule based on the m.room.join_rule state event, defaulting to `invite`. + * @returns the join_rule applied to this room + */ + getJoinRule() { + return this.currentState.getJoinRule(); + } + + /** + * Returns the history visibility based on the m.room.history_visibility state event, defaulting to `shared`. + * @returns the history_visibility applied to this room + */ + getHistoryVisibility() { + return this.currentState.getHistoryVisibility(); + } + + /** + * Returns the history visibility based on the m.room.history_visibility state event, defaulting to `shared`. + * @returns the history_visibility applied to this room + */ + getGuestAccess() { + return this.currentState.getGuestAccess(); + } + + /** + * Returns the type of the room from the `m.room.create` event content or undefined if none is set + * @returns the type of the room. + */ + getType() { + const createEvent = this.currentState.getStateEvents(_event2.EventType.RoomCreate, ""); + if (!createEvent) { + if (!this.getTypeWarning) { + _logger.logger.warn("[getType] Room " + this.roomId + " does not have an m.room.create event"); + this.getTypeWarning = true; + } + return undefined; + } + return createEvent.getContent()[_event2.RoomCreateTypeField]; + } + + /** + * Returns whether the room is a space-room as defined by MSC1772. + * @returns true if the room's type is RoomType.Space + */ + isSpaceRoom() { + return this.getType() === _event2.RoomType.Space; + } + + /** + * Returns whether the room is a call-room as defined by MSC3417. + * @returns true if the room's type is RoomType.UnstableCall + */ + isCallRoom() { + return this.getType() === _event2.RoomType.UnstableCall; + } + + /** + * Returns whether the room is a video room. + * @returns true if the room's type is RoomType.ElementVideo + */ + isElementVideoRoom() { + return this.getType() === _event2.RoomType.ElementVideo; + } + + /** + * Find the predecessor of this room. + * + * @param msc3946ProcessDynamicPredecessor - if true, look for an + * m.room.predecessor state event and use it if found (MSC3946). + * @returns null if this room has no predecessor. Otherwise, returns + * the roomId, last eventId and viaServers of the predecessor room. + * + * If msc3946ProcessDynamicPredecessor is true, use m.predecessor events + * as well as m.room.create events to find predecessors. + * + * Note: if an m.predecessor event is used, eventId may be undefined + * since last_known_event_id is optional. + * + * Note: viaServers may be undefined, and will definitely be undefined if + * this predecessor comes from a RoomCreate event (rather than a + * RoomPredecessor, which has the optional via_servers property). + */ + findPredecessor(msc3946ProcessDynamicPredecessor = false) { + const currentState = this.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + if (!currentState) { + return null; + } + return currentState.findPredecessor(msc3946ProcessDynamicPredecessor); + } + roomNameGenerator(state) { + if (this.client.roomNameGenerator) { + const name = this.client.roomNameGenerator(this.roomId, state); + if (name !== null) { + return name; + } + } + switch (state.type) { + case RoomNameType.Actual: + return state.name; + case RoomNameType.Generated: + switch (state.subtype) { + case "Inviting": + return `Inviting ${memberNamesToRoomName(state.names, state.count)}`; + default: + return memberNamesToRoomName(state.names, state.count); + } + case RoomNameType.EmptyRoom: + if (state.oldName) { + return `Empty room (was ${state.oldName})`; + } else { + return "Empty room"; + } + } + } + + /** + * This is an internal method. Calculates the name of the room from the current + * room state. + * @param userId - The client's user ID. Used to filter room members + * correctly. + * @param ignoreRoomNameEvent - Return the implicit room name that we'd see if there + * was no m.room.name event. + * @returns The calculated room name. + */ + calculateRoomName(userId, ignoreRoomNameEvent = false) { + if (!ignoreRoomNameEvent) { + // check for an alias, if any. for now, assume first alias is the + // official one. + const mRoomName = this.currentState.getStateEvents(_event2.EventType.RoomName, ""); + if (mRoomName !== null && mRoomName !== void 0 && mRoomName.getContent().name) { + return this.roomNameGenerator({ + type: RoomNameType.Actual, + name: mRoomName.getContent().name + }); + } + } + const alias = this.getCanonicalAlias(); + if (alias) { + return this.roomNameGenerator({ + type: RoomNameType.Actual, + name: alias + }); + } + const joinedMemberCount = this.currentState.getJoinedMemberCount(); + const invitedMemberCount = this.currentState.getInvitedMemberCount(); + // -1 because these numbers include the syncing user + let inviteJoinCount = joinedMemberCount + invitedMemberCount - 1; + + // get service members (e.g. helper bots) for exclusion + const excludedUserIds = this.getFunctionalMembers(); + + // get members that are NOT ourselves and are actually in the room. + let otherNames = []; + if (this.summaryHeroes) { + // if we have a summary, the member state events should be in the room state + this.summaryHeroes.forEach(userId => { + // filter service members + if (excludedUserIds.includes(userId)) { + inviteJoinCount--; + return; + } + const member = this.getMember(userId); + otherNames.push(member ? member.name : userId); + }); + } else { + let otherMembers = this.currentState.getMembers().filter(m => { + return m.userId !== userId && (m.membership === _membership.KnownMembership.Invite || m.membership === _membership.KnownMembership.Join); + }); + otherMembers = otherMembers.filter(({ + userId + }) => { + // filter service members + if (excludedUserIds.includes(userId)) { + inviteJoinCount--; + return false; + } + return true; + }); + // make sure members have stable order + otherMembers.sort((a, b) => (0, _utils.compare)(a.userId, b.userId)); + // only 5 first members, immitate summaryHeroes + otherMembers = otherMembers.slice(0, 5); + otherNames = otherMembers.map(m => m.name); + } + if (inviteJoinCount) { + return this.roomNameGenerator({ + type: RoomNameType.Generated, + names: otherNames, + count: inviteJoinCount + }); + } + const myMembership = this.getMyMembership(); + // if I have created a room and invited people through + // 3rd party invites + if (myMembership == _membership.KnownMembership.Join) { + const thirdPartyInvites = this.currentState.getStateEvents(_event2.EventType.RoomThirdPartyInvite); + if (thirdPartyInvites !== null && thirdPartyInvites !== void 0 && thirdPartyInvites.length) { + const thirdPartyNames = thirdPartyInvites.map(i => { + return i.getContent().display_name; + }); + return this.roomNameGenerator({ + type: RoomNameType.Generated, + subtype: "Inviting", + names: thirdPartyNames, + count: thirdPartyNames.length + 1 + }); + } + } + + // let's try to figure out who was here before + let leftNames = otherNames; + // if we didn't have heroes, try finding them in the room state + if (!leftNames.length) { + leftNames = this.currentState.getMembers().filter(m => { + return m.userId !== userId && m.membership !== _membership.KnownMembership.Invite && m.membership !== _membership.KnownMembership.Join; + }).map(m => m.name); + } + let oldName; + if (leftNames.length) { + oldName = this.roomNameGenerator({ + type: RoomNameType.Generated, + names: leftNames, + count: leftNames.length + 1 + }); + } + return this.roomNameGenerator({ + type: RoomNameType.EmptyRoom, + oldName + }); + } + + /** + * When we receive a new visibility change event: + * + * - store this visibility change alongside the timeline, in case we + * later need to apply it to an event that we haven't received yet; + * - if we have already received the event whose visibility has changed, + * patch it to reflect the visibility change and inform listeners. + */ + applyNewVisibilityEvent(event) { + const visibilityChange = event.asVisibilityChange(); + if (!visibilityChange) { + // The event is ill-formed. + return; + } + + // Ignore visibility change events that are not emitted by moderators. + const userId = event.getSender(); + if (!userId) { + return; + } + const isPowerSufficient = _event2.EVENT_VISIBILITY_CHANGE_TYPE.name && this.currentState.maySendStateEvent(_event2.EVENT_VISIBILITY_CHANGE_TYPE.name, userId) || _event2.EVENT_VISIBILITY_CHANGE_TYPE.altName && this.currentState.maySendStateEvent(_event2.EVENT_VISIBILITY_CHANGE_TYPE.altName, userId); + if (!isPowerSufficient) { + // Powerlevel is insufficient. + return; + } + + // Record this change in visibility. + // If the event is not in our timeline and we only receive it later, + // we may need to apply the visibility change at a later date. + + const visibilityEventsOnOriginalEvent = this.visibilityEvents.get(visibilityChange.eventId); + if (visibilityEventsOnOriginalEvent) { + // It would be tempting to simply erase the latest visibility change + // but we need to record all of the changes in case the latest change + // is ever redacted. + // + // In practice, linear scans through `visibilityEvents` should be fast. + // However, to protect against a potential DoS attack, we limit the + // number of iterations in this loop. + let index = visibilityEventsOnOriginalEvent.length - 1; + const min = Math.max(0, visibilityEventsOnOriginalEvent.length - MAX_NUMBER_OF_VISIBILITY_EVENTS_TO_SCAN_THROUGH); + for (; index >= min; --index) { + const target = visibilityEventsOnOriginalEvent[index]; + if (target.getTs() < event.getTs()) { + break; + } + } + if (index === -1) { + visibilityEventsOnOriginalEvent.unshift(event); + } else { + visibilityEventsOnOriginalEvent.splice(index + 1, 0, event); + } + } else { + this.visibilityEvents.set(visibilityChange.eventId, [event]); + } + + // Finally, let's check if the event is already in our timeline. + // If so, we need to patch it and inform listeners. + + const originalEvent = this.findEventById(visibilityChange.eventId); + if (!originalEvent) { + return; + } + originalEvent.applyVisibilityEvent(visibilityChange); + } + redactVisibilityChangeEvent(event) { + // Sanity checks. + if (!event.isVisibilityEvent) { + throw new Error("expected a visibility change event"); + } + const relation = event.getRelation(); + const originalEventId = relation === null || relation === void 0 ? void 0 : relation.event_id; + const visibilityEventsOnOriginalEvent = this.visibilityEvents.get(originalEventId); + if (!visibilityEventsOnOriginalEvent) { + // No visibility changes on the original event. + // In particular, this change event was not recorded, + // most likely because it was ill-formed. + return; + } + const index = visibilityEventsOnOriginalEvent.findIndex(change => change.getId() === event.getId()); + if (index === -1) { + // This change event was not recorded, most likely because + // it was ill-formed. + return; + } + // Remove visibility change. + visibilityEventsOnOriginalEvent.splice(index, 1); + + // If we removed the latest visibility change event, propagate changes. + if (index === visibilityEventsOnOriginalEvent.length) { + const originalEvent = this.findEventById(originalEventId); + if (!originalEvent) { + return; + } + if (index === 0) { + // We have just removed the only visibility change event. + this.visibilityEvents.delete(originalEventId); + originalEvent.applyVisibilityEvent(); + } else { + const newEvent = visibilityEventsOnOriginalEvent[visibilityEventsOnOriginalEvent.length - 1]; + const newVisibility = newEvent.asVisibilityChange(); + if (!newVisibility) { + // Event is ill-formed. + // This breaks our invariant. + throw new Error("at this stage, visibility changes should be well-formed"); + } + originalEvent.applyVisibilityEvent(newVisibility); + } + } + } + + /** + * When we receive an event whose visibility has been altered by + * a (more recent) visibility change event, patch the event in + * place so that clients now not to display it. + * + * @param event - Any matrix event. If this event has at least one a + * pending visibility change event, apply the latest visibility + * change event. + */ + applyPendingVisibilityEvents(event) { + const visibilityEvents = this.visibilityEvents.get(event.getId()); + if (!visibilityEvents || visibilityEvents.length == 0) { + // No pending visibility change in store. + return; + } + const visibilityEvent = visibilityEvents[visibilityEvents.length - 1]; + const visibilityChange = visibilityEvent.asVisibilityChange(); + if (!visibilityChange) { + return; + } + if (visibilityChange.visible) { + // Events are visible by default, no need to apply a visibility change. + // Note that we need to keep the visibility changes in `visibilityEvents`, + // in case we later fetch an older visibility change event that is superseded + // by `visibilityChange`. + } + if (visibilityEvent.getTs() < event.getTs()) { + // Something is wrong, the visibility change cannot happen before the + // event. Presumably an ill-formed event. + return; + } + event.applyVisibilityEvent(visibilityChange); + } + + /** + * Find when a client has gained thread capabilities by inspecting the oldest + * threaded receipt + * @returns the timestamp of the oldest threaded receipt + */ + getOldestThreadedReceiptTs() { + return this.oldestThreadedReceiptTs; + } + + /** + * Determines if the given user has read a particular event ID with the known + * history of the room. This is not a definitive check as it relies only on + * what is available to the room at the time of execution. + * + * @param userId - The user ID to check the read state of. + * @param eventId - The event ID to check if the user read. + * @returns true if the user has read the event, false otherwise. + */ + hasUserReadEvent(userId, eventId) { + return this.roomReceipts.hasUserReadEvent(userId, eventId); + } + + /** + * Returns the most recent unthreaded receipt for a given user + * @param userId - the MxID of the User + * @returns an unthreaded Receipt. Can be undefined if receipts have been disabled + * or a user chooses to use private read receipts (or we have simply not received + * a receipt from this user yet). + */ + getLastUnthreadedReceiptFor(userId) { + return this.unthreadedReceipts.get(userId); + } + + /** + * This issue should also be addressed on synapse's side and is tracked as part + * of https://github.com/matrix-org/synapse/issues/14837 + * + * + * We consider a room fully read if the current user has sent + * the last event in the live timeline of that context and if the read receipt + * we have on record matches. + * This also detects all unread threads and applies the same logic to those + * contexts + */ + fixupNotifications(userId) { + super.fixupNotifications(userId); + const unreadThreads = this.getThreads().filter(thread => this.getThreadUnreadNotificationCount(thread.id, NotificationCountType.Total) > 0); + for (const thread of unreadThreads) { + thread.fixupNotifications(userId); + } + } + + /** + * Determine the order of two events in this room. + * + * In principle this should use the same order as the server, but in practice + * this is difficult for events that were not received over the Sync API. See + * MSC4033 for details. + * + * This implementation leans on the order of events within their timelines, and + * falls back to comparing event timestamps when they are in different + * timelines. + * + * See https://github.com/matrix-org/matrix-js-sdk/issues/3325 for where we are + * tracking the work to fix this. + * + * @param leftEventId - the id of the first event + * @param rightEventId - the id of the second event + * @returns -1 if left \< right, 1 if left \> right, 0 if left == right, null if + * we can't tell (because we can't find the events). + */ + compareEventOrdering(leftEventId, rightEventId) { + return (0, _compareEventOrdering.compareEventOrdering)(this, leftEventId, rightEventId); + } + + /** + * Return true if this room has an `m.room.encryption` state event. + * + * If this returns `true`, events sent to this room should be encrypted (and `MatrixClient.sendEvent` and friends + * will encrypt outgoing events). + */ + hasEncryptionStateEvent() { + var _this$getLiveTimeline; + return Boolean((_this$getLiveTimeline = this.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS)) === null || _this$getLiveTimeline === void 0 ? void 0 : _this$getLiveTimeline.getStateEvents(_event2.EventType.RoomEncryption, "")); } } -function memberNamesToRoomName(names, count = names.length + 1) { +// a map from current event status to a list of allowed next statuses +exports.Room = Room; +const ALLOWED_TRANSITIONS = { + [_eventStatus.EventStatus.ENCRYPTING]: [_eventStatus.EventStatus.SENDING, _eventStatus.EventStatus.NOT_SENT, _eventStatus.EventStatus.CANCELLED], + [_eventStatus.EventStatus.SENDING]: [_eventStatus.EventStatus.ENCRYPTING, _eventStatus.EventStatus.QUEUED, _eventStatus.EventStatus.NOT_SENT, _eventStatus.EventStatus.SENT], + [_eventStatus.EventStatus.QUEUED]: [_eventStatus.EventStatus.SENDING, _eventStatus.EventStatus.NOT_SENT, _eventStatus.EventStatus.CANCELLED], + [_eventStatus.EventStatus.SENT]: [], + [_eventStatus.EventStatus.NOT_SENT]: [_eventStatus.EventStatus.SENDING, _eventStatus.EventStatus.QUEUED, _eventStatus.EventStatus.CANCELLED], + [_eventStatus.EventStatus.CANCELLED]: [] +}; +let RoomNameType = exports.RoomNameType = /*#__PURE__*/function (RoomNameType) { + RoomNameType[RoomNameType["EmptyRoom"] = 0] = "EmptyRoom"; + RoomNameType[RoomNameType["Generated"] = 1] = "Generated"; + RoomNameType[RoomNameType["Actual"] = 2] = "Actual"; + return RoomNameType; +}({}); +// Can be overriden by IMatrixClientCreateOpts::memberNamesToRoomNameFn +function memberNamesToRoomName(names, count) { const countWithoutMe = count - 1; - if (!names.length) { return "Empty room"; } else if (names.length === 1 && countWithoutMe <= 1) { @@ -58953,7 +174285,6 @@ function memberNamesToRoomName(names, count = names.length + 1) { return `${names[0]} and ${names[1]}`; } else { const plural = countWithoutMe > 1; - if (plural) { return `${names[0]} and ${countWithoutMe} others`; } else { @@ -58961,133 +174292,23 @@ function memberNamesToRoomName(names, count = names.length + 1) { } } } -/** - * Fires when an event we had previously received is redacted. - * - * (Note this is *not* fired when the redaction happens before we receive the - * event). - * - * @event module:client~MatrixClient#"Room.redaction" - * @param {MatrixEvent} event The matrix redaction event - * @param {Room} room The room containing the redacted event - */ - -/** - * Fires when an event that was previously redacted isn't anymore. - * This happens when the redaction couldn't be sent and - * was subsequently cancelled by the user. Redactions have a local echo - * which is undone in this scenario. - * - * @event module:client~MatrixClient#"Room.redactionCancelled" - * @param {MatrixEvent} event The matrix redaction event that was cancelled. - * @param {Room} room The room containing the unredacted event - */ - -/** - * Fires whenever the name of a room is updated. - * @event module:client~MatrixClient#"Room.name" - * @param {Room} room The room whose Room.name was updated. - * @example - * matrixClient.on("Room.name", function(room){ - * var newName = room.name; - * }); - */ - -/** - * Fires whenever a receipt is received for a room - * @event module:client~MatrixClient#"Room.receipt" - * @param {event} event The receipt event - * @param {Room} room The room whose receipts was updated. - * @example - * matrixClient.on("Room.receipt", function(event, room){ - * var receiptContent = event.getContent(); - * }); - */ - -/** - * Fires whenever a room's tags are updated. - * @event module:client~MatrixClient#"Room.tags" - * @param {event} event The tags event - * @param {Room} room The room whose Room.tags was updated. - * @example - * matrixClient.on("Room.tags", function(event, room){ - * var newTags = event.getContent().tags; - * if (newTags["favourite"]) showStar(room); - * }); - */ - -/** - * Fires whenever a room's account_data is updated. - * @event module:client~MatrixClient#"Room.accountData" - * @param {event} event The account_data event - * @param {Room} room The room whose account_data was updated. - * @param {MatrixEvent} prevEvent The event being replaced by - * the new account data, if known. - * @example - * matrixClient.on("Room.accountData", function(event, room, oldEvent){ - * if (event.getType() === "m.room.colorscheme") { - * applyColorScheme(event.getContents()); - * } - * }); - */ - -/** - * Fires when the status of a transmitted event is updated. - * - *

When an event is first transmitted, a temporary copy of the event is - * inserted into the timeline, with a temporary event id, and a status of - * 'SENDING'. - * - *

Once the echo comes back from the server, the content of the event - * (MatrixEvent.event) is replaced by the complete event from the homeserver, - * thus updating its event id, as well as server-generated fields such as the - * timestamp. Its status is set to null. - * - *

Once the /send request completes, if the remote echo has not already - * arrived, the event is updated with a new event id and the status is set to - * 'SENT'. The server-generated fields are of course not updated yet. - * - *

If the /send fails, In this case, the event's status is set to - * 'NOT_SENT'. If it is later resent, the process starts again, setting the - * status to 'SENDING'. Alternatively, the message may be cancelled, which - * removes the event from the room, and sets the status to 'CANCELLED'. - * - *

This event is raised to reflect each of the transitions above. - * - * @event module:client~MatrixClient#"Room.localEchoUpdated" - * - * @param {MatrixEvent} event The matrix event which has been updated - * - * @param {Room} room The room containing the redacted event - * - * @param {string} oldEventId The previous event id (the temporary event id, - * except when updating a successfully-sent event when its echo arrives) - * - * @param {EventStatus} oldStatus The previous event status. - */ +//# sourceMappingURL=room.js.map /***/ }), /***/ 8543: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SearchResult = SearchResult; - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _eventContext = __webpack_require__(1765); - +exports.SearchResult = void 0; +var _eventContext = __nccwpck_require__(1765); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -59102,66 +174323,1072 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** - * @module models/search-result - */ +class SearchResult { + /** + * Create a SearchResponse from the response to /search + */ -/** - * Construct a new SearchResult - * - * @param {number} rank where this SearchResult ranks in the results - * @param {event-context.EventContext} eventContext the matching event and its - * context - * - * @constructor - */ -function SearchResult(rank, eventContext) { - this.rank = rank; - this.context = eventContext; + static fromJson(jsonObj, eventMapper) { + const jsonContext = jsonObj.context || {}; + let eventsBefore = (jsonContext.events_before || []).map(eventMapper); + let eventsAfter = (jsonContext.events_after || []).map(eventMapper); + const context = new _eventContext.EventContext(eventMapper(jsonObj.result)); + + // Filter out any contextual events which do not correspond to the same timeline (thread or room) + const threadRootId = context.ourEvent.threadRootId; + eventsBefore = eventsBefore.filter(e => e.threadRootId === threadRootId); + eventsAfter = eventsAfter.filter(e => e.threadRootId === threadRootId); + context.setPaginateToken(jsonContext.start, true); + context.addEvents(eventsBefore, true); + context.addEvents(eventsAfter, false); + context.setPaginateToken(jsonContext.end, false); + return new SearchResult(jsonObj.rank, context); + } + + /** + * Construct a new SearchResult + * + * @param rank - where this SearchResult ranks in the results + * @param context - the matching event and its + * context + */ + constructor(rank, context) { + this.rank = rank; + this.context = context; + } } +exports.SearchResult = SearchResult; +//# sourceMappingURL=search-result.js.map + +/***/ }), + +/***/ 3379: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ThreadFilterType = exports.ThreadEvent = exports.Thread = exports.THREAD_RELATION_TYPE = exports.FeatureSupport = exports.FILTER_RELATED_BY_SENDERS = exports.FILTER_RELATED_BY_REL_TYPES = void 0; +exports.determineFeatureSupport = determineFeatureSupport; +exports.threadFilterTypeToFilter = threadFilterTypeToFilter; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _client = __nccwpck_require__(9058); +var _ReEmitter = __nccwpck_require__(9554); +var _event = __nccwpck_require__(7487); +var _event2 = __nccwpck_require__(9564); +var _eventTimeline = __nccwpck_require__(2763); +var _eventTimelineSet = __nccwpck_require__(7256); +var _room = __nccwpck_require__(7688); +var _NamespacedValue = __nccwpck_require__(2418); +var _logger = __nccwpck_require__(3854); +var _readReceipt = __nccwpck_require__(1086); +var _read_receipts = __nccwpck_require__(3255); +var _feature = __nccwpck_require__(1685); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2021 - 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let ThreadEvent = exports.ThreadEvent = /*#__PURE__*/function (ThreadEvent) { + ThreadEvent["New"] = "Thread.new"; + ThreadEvent["Update"] = "Thread.update"; + ThreadEvent["NewReply"] = "Thread.newReply"; + ThreadEvent["ViewThread"] = "Thread.viewThread"; + ThreadEvent["Delete"] = "Thread.delete"; + return ThreadEvent; +}({}); +let FeatureSupport = exports.FeatureSupport = /*#__PURE__*/function (FeatureSupport) { + FeatureSupport[FeatureSupport["None"] = 0] = "None"; + FeatureSupport[FeatureSupport["Experimental"] = 1] = "Experimental"; + FeatureSupport[FeatureSupport["Stable"] = 2] = "Stable"; + return FeatureSupport; +}({}); +function determineFeatureSupport(stable, unstable) { + if (stable) { + return FeatureSupport.Stable; + } else if (unstable) { + return FeatureSupport.Experimental; + } else { + return FeatureSupport.None; + } +} +class Thread extends _readReceipt.ReadReceipt { + constructor(id, rootEvent, opts) { + var _opts$pendingEventOrd; + super(); + + // each Event in the thread adds a reemitter, so we could hit the listener limit. + (0, _defineProperty2.default)(this, "_currentUserParticipated", false); + (0, _defineProperty2.default)(this, "replyCount", 0); + (0, _defineProperty2.default)(this, "pendingReplyCount", 0); + /** + * Whether or not we need to fetch the initial set of events for the thread. We can + * only do this if the server has support for it, so if it doesn't we just pretend + * that we've already fetched them. + */ + (0, _defineProperty2.default)(this, "initialEventsFetched", !Thread.hasServerSideSupport); + /** + * An array of events to add to the timeline once the thread has been initialised + * with server suppport. + */ + (0, _defineProperty2.default)(this, "replayEvents", []); + (0, _defineProperty2.default)(this, "onTimelineReset", async () => { + // We hit a gappy sync, ask the server for an update + await this.processRootEventPromise; + this.processRootEventPromise = undefined; + }); + (0, _defineProperty2.default)(this, "onBeforeRedaction", (event, redaction) => { + if (event !== null && event !== void 0 && event.isRelation(THREAD_RELATION_TYPE.name) && this.room.eventShouldLiveIn(event).threadId === this.id && event.getId() !== this.id && + // the root event isn't counted in the length so ignore this redaction + !redaction.status // only respect it when it succeeds + ) { + this.replyCount--; + this.updatePendingReplyCount(); + this.emit(ThreadEvent.Update, this); + } + }); + (0, _defineProperty2.default)(this, "onRedaction", async (event, room, threadRootId) => { + if (threadRootId !== this.id) return; // ignore redactions for other timelines + if (this.replyCount <= 0) { + for (const threadEvent of this.timeline) { + this.clearEventMetadata(threadEvent); + } + this.lastEvent = this.rootEvent; + this._currentUserParticipated = false; + this.emit(ThreadEvent.Delete, this); + } else { + var _this$lastEvent; + if (((_this$lastEvent = this.lastEvent) === null || _this$lastEvent === void 0 ? void 0 : _this$lastEvent.getId()) === event.getAssociatedId()) { + // XXX: If our last event got redacted we query the server for the last event once again + await this.processRootEventPromise; + this.processRootEventPromise = undefined; + } + await this.updateThreadMetadata(); + } + }); + (0, _defineProperty2.default)(this, "onTimelineEvent", (event, room, toStartOfTimeline) => { + // Add a synthesized receipt when paginating forward in the timeline + if (!toStartOfTimeline) { + const sender = event.getSender(); + if (sender && room && this.shouldSendLocalEchoReceipt(sender, event)) { + room.addLocalEchoReceipt(sender, event, _read_receipts.ReceiptType.Read); + } + if (event.getId() !== this.id && event.isRelation(THREAD_RELATION_TYPE.name)) { + this.replyCount++; + } + } + this.onEcho(event, toStartOfTimeline !== null && toStartOfTimeline !== void 0 ? toStartOfTimeline : false); + }); + (0, _defineProperty2.default)(this, "onLocalEcho", event => { + this.onEcho(event, false); + }); + (0, _defineProperty2.default)(this, "onEcho", async (event, toStartOfTimeline) => { + if (event.threadRootId !== this.id) return; // ignore echoes for other timelines + if (this.lastEvent === event) return; // ignore duplicate events + await this.updateThreadMetadata(); + if (!event.isRelation(THREAD_RELATION_TYPE.name)) return; // don't send a new reply event for reactions or edits + if (toStartOfTimeline) return; // ignore messages added to the start of the timeline + // Clear the lastEvent and instead start tracking locally using lastReply + this.lastEvent = undefined; + this.emit(ThreadEvent.NewReply, this, event); + }); + this.id = id; + this.rootEvent = rootEvent; + this.setMaxListeners(1000); + if (!(opts !== null && opts !== void 0 && opts.room)) { + // Logging/debugging for https://github.com/vector-im/element-web/issues/22141 + // Hope is that we end up with a more obvious stack trace. + throw new Error("element-web#22141: A thread requires a room in order to function"); + } + this.room = opts.room; + this.client = opts.client; + this.pendingEventOrdering = (_opts$pendingEventOrd = opts.pendingEventOrdering) !== null && _opts$pendingEventOrd !== void 0 ? _opts$pendingEventOrd : _client.PendingEventOrdering.Chronological; + this.timelineSet = new _eventTimelineSet.EventTimelineSet(this.room, { + timelineSupport: true, + pendingEvents: true + }, this.client, this); + this.reEmitter = new _ReEmitter.TypedReEmitter(this); + this.reEmitter.reEmit(this.timelineSet, [_room.RoomEvent.Timeline, _room.RoomEvent.TimelineReset]); + this.room.on(_event2.MatrixEventEvent.BeforeRedaction, this.onBeforeRedaction); + this.room.on(_room.RoomEvent.Redaction, this.onRedaction); + this.room.on(_room.RoomEvent.LocalEchoUpdated, this.onLocalEcho); + this.room.on(_room.RoomEvent.TimelineReset, this.onTimelineReset); + this.timelineSet.on(_room.RoomEvent.Timeline, this.onTimelineEvent); + this.processReceipts(opts.receipts); + + // even if this thread is thought to be originating from this client, we initialise it as we may be in a + // gappy sync and a thread around this event may already exist. + this.updateThreadMetadata(); + this.setEventMetadata(this.rootEvent); + } + async fetchRootEvent() { + // Always fetch the root event, even if we already have it, so we can get the latest + // state (via unsigned). + try { + const eventData = await this.client.fetchRoomEvent(this.roomId, this.id); + const mapper = this.client.getEventMapper(); + this.rootEvent = mapper(eventData); // will merge with existing event object if such is known + } catch (e) { + _logger.logger.error("Failed to fetch thread root to construct thread with", e); + } + await this.processEvent(this.rootEvent); + } + static setServerSideSupport(status) { + Thread.hasServerSideSupport = status; + if (status !== FeatureSupport.Stable) { + FILTER_RELATED_BY_SENDERS.setPreferUnstable(true); + FILTER_RELATED_BY_REL_TYPES.setPreferUnstable(true); + THREAD_RELATION_TYPE.setPreferUnstable(true); + } + } + static setServerSideListSupport(status) { + Thread.hasServerSideListSupport = status; + } + static setServerSideFwdPaginationSupport(status) { + Thread.hasServerSideFwdPaginationSupport = status; + } + shouldSendLocalEchoReceipt(sender, event) { + var _this$client$canSuppo; + const recursionSupport = (_this$client$canSuppo = this.client.canSupport.get(_feature.Feature.RelationsRecursion)) !== null && _this$client$canSuppo !== void 0 ? _this$client$canSuppo : _feature.ServerSupport.Unsupported; + if (recursionSupport === _feature.ServerSupport.Unsupported) { + var _this$getReadReceiptF; + // Normally we add a local receipt, but if we don't have + // recursion support, then events may arrive out of order, so we + // only create a receipt if it's after our existing receipt. + const oldReceiptEventId = (_this$getReadReceiptF = this.getReadReceiptForUserId(sender)) === null || _this$getReadReceiptF === void 0 ? void 0 : _this$getReadReceiptF.eventId; + if (oldReceiptEventId) { + const receiptEvent = this.findEventById(oldReceiptEventId); + if (receiptEvent && receiptEvent.getTs() > event.getTs()) { + return false; + } + } + } + return true; + } + get roomState() { + return this.room.getLiveTimeline().getState(_eventTimeline.EventTimeline.FORWARDS); + } + addEventToTimeline(event, toStartOfTimeline) { + if (!this.findEventById(event.getId())) { + this.timelineSet.addEventToTimeline(event, this.liveTimeline, { + toStartOfTimeline, + fromCache: false, + roomState: this.roomState + }); + } + } + + /** + * TEMPORARY. Only call this when MSC3981 is not available, and we have some + * late-arriving events to insert, because we recursively found them as part + * of populating a thread. When we have MSC3981 we won't need it, because + * they will all be supplied by the homeserver in one request, and they will + * already be in the right order in that response. + * This is a copy of addEventToTimeline above, modified to call + * insertEventIntoTimeline so this event is inserted into our best guess of + * the right place based on timestamp. (We should be using Sync Order but we + * don't have it.) + * + * @internal + */ + insertEventIntoTimeline(event) { + const eventId = event.getId(); + if (!eventId) { + return; + } + // If the event is already in this thread, bail out + if (this.findEventById(eventId)) { + return; + } + this.timelineSet.insertEventIntoTimeline(event, this.liveTimeline, this.roomState); + } + addEvents(events, toStartOfTimeline) { + events.forEach(ev => this.addEvent(ev, toStartOfTimeline, false)); + this.updateThreadMetadata(); + } + + /** + * Add an event to the thread and updates + * the tail/root references if needed + * Will fire "Thread.update" + * @param event - The event to add + * @param toStartOfTimeline - whether the event is being added + * to the start (and not the end) of the timeline. + * @param emit - whether to emit the Update event if the thread was updated or not. + */ + addEvent(event, toStartOfTimeline, emit = true) { + // Modify this event to point at our room's state, and mark its thread + // as this. + this.setEventMetadata(event); + + // Decide whether this event is going to be added at the end of the timeline. + const lastReply = this.lastReply(); + const isNewestReply = !lastReply || event.localTimestamp >= lastReply.localTimestamp; + if (!Thread.hasServerSideSupport) { + // When there's no server-side support, just add it to the end of the timeline. + this.addEventToTimeline(event, toStartOfTimeline); + this.client.decryptEventIfNeeded(event); + } else if (event.isRelation(_event.RelationType.Annotation) || event.isRelation(_event.RelationType.Replace)) { + this.addRelatedThreadEvent(event, toStartOfTimeline); + return; + } else if (!toStartOfTimeline && isNewestReply) { + // When we've asked for the event to be added to the end, + // and this event belongs at the end, add it. + this.addEventToTimeline(event, false); + this.fetchEditsWhereNeeded(event); + } else { + // Otherwise, we should add it, but we suspect it is out of order. + // This may be because we've just created the thread object and are + // still fetching events, in which case add it where we think is sensible + // and it will be removed and replaced with the events from the pagination + // request once that completes. + if (toStartOfTimeline) { + // If we're adding at the start of the timeline, it doesn't + // matter that it's out of order. + this.addEventToTimeline(event, toStartOfTimeline); + } else { + // We think this event might be out of order, because isNewestReply + // is false (otherwise we would have gone into the earlier if + // clause), so try to insert it in the right place based on + // timestamp. + this.insertEventIntoTimeline(event); + } + } + if (event.getId() !== this.id && event.isRelation(THREAD_RELATION_TYPE.name) && !toStartOfTimeline && isNewestReply) { + // Clear the last event as we have the latest end of the timeline + this.lastEvent = undefined; + } + if (emit) { + this.emit(ThreadEvent.NewReply, this, event); + this.updateThreadMetadata(); + } + } + addRelatedThreadEvent(event, toStartOfTimeline) { + var _this$timelineSet$rel, _this$timelineSet$rel2; + // If this event is not a direct member of the thread, but is a + // reference to something that is, then we have two cases: + + if (!this.initialEventsFetched) { + var _this$replayEvents; + // Case 1: we haven't yet fetched events from the server. In + // this case, when we do, the events we get back might only be + // the first-order ones, so this event (which is second-order - + // a reference to something directly in the thread) needs to be + // kept so we can replay it when the first-order ones turn up. + + /** + * A thread can be fully discovered via a single sync response + * And when that's the case we still ask the server to do an initialisation + * as it's the safest to ensure we have everything. + * However when we are in that scenario we might loose annotation or edits + * + * This fix keeps a reference to those events and replay them once the thread + * has been initialised properly. + */ + (_this$replayEvents = this.replayEvents) === null || _this$replayEvents === void 0 || _this$replayEvents.push(event); + } else { + var _this$client$canSuppo2; + // Case 2: this is happening later, and we have a timeline. In + // this case, these events might be out-of order. + // + // Specifically, if the server doesn't support recursion, so we + // only get these events through sync, they might be coming + // later than the first-order ones, so we insert them based on + // timestamp (despite the problems with this documented in + // #3325). + // + // If the server does support recursion, we should have got all + // the interspersed events from the server when we fetched the + // initial events, so if they are coming via sync they should be + // the latest ones, so we can add them as normal. + // + // (Note that both insertEventIntoTimeline and addEventToTimeline + // do nothing if we have seen this event before.) + + const recursionSupport = (_this$client$canSuppo2 = this.client.canSupport.get(_feature.Feature.RelationsRecursion)) !== null && _this$client$canSuppo2 !== void 0 ? _this$client$canSuppo2 : _feature.ServerSupport.Unsupported; + if (recursionSupport === _feature.ServerSupport.Unsupported) { + this.insertEventIntoTimeline(event); + } else { + this.addEventToTimeline(event, toStartOfTimeline); + } + } + // Apply annotations and replace relations to the relations of the timeline only + (_this$timelineSet$rel = this.timelineSet.relations) === null || _this$timelineSet$rel === void 0 || _this$timelineSet$rel.aggregateParentEvent(event); + (_this$timelineSet$rel2 = this.timelineSet.relations) === null || _this$timelineSet$rel2 === void 0 || _this$timelineSet$rel2.aggregateChildEvent(event, this.timelineSet); + } + async processEvent(event) { + if (event) { + this.setEventMetadata(event); + await this.fetchEditsWhereNeeded(event); + } + } + + /** + * Processes the receipts that were caught during initial sync + * When clients become aware of a thread, they try to retrieve those read receipts + * and apply them to the current thread + * @param receipts - A collection of the receipts cached from initial sync + */ + processReceipts(receipts = []) { + for (const { + eventId, + receiptType, + userId, + receipt, + synthetic + } of receipts) { + this.addReceiptToStructure(eventId, receiptType, userId, receipt, synthetic); + } + } + getRootEventBundledRelationship(rootEvent = this.rootEvent) { + return rootEvent === null || rootEvent === void 0 ? void 0 : rootEvent.getServerAggregatedRelation(THREAD_RELATION_TYPE.name); + } + async processRootEvent() { + const bundledRelationship = this.getRootEventBundledRelationship(); + if (Thread.hasServerSideSupport && bundledRelationship) { + this.replyCount = bundledRelationship.count; + this._currentUserParticipated = !!bundledRelationship.current_user_participated; + const mapper = this.client.getEventMapper(); + // re-insert roomId + this.lastEvent = mapper(_objectSpread(_objectSpread({}, bundledRelationship.latest_event), {}, { + room_id: this.roomId + })); + this.updatePendingReplyCount(); + await this.processEvent(this.lastEvent); + } + } + updatePendingReplyCount() { + const unfilteredPendingEvents = this.pendingEventOrdering === _client.PendingEventOrdering.Detached ? this.room.getPendingEvents() : this.events; + const pendingEvents = unfilteredPendingEvents.filter(ev => { + var _this$lastEvent2; + return ev.threadRootId === this.id && ev.isRelation(THREAD_RELATION_TYPE.name) && ev.status !== null && ev.getId() !== ((_this$lastEvent2 = this.lastEvent) === null || _this$lastEvent2 === void 0 ? void 0 : _this$lastEvent2.getId()); + }); + this.lastPendingEvent = pendingEvents.length ? pendingEvents[pendingEvents.length - 1] : undefined; + this.pendingReplyCount = pendingEvents.length; + } + + /** + * Reset the live timeline of all timelineSets, and start new ones. + * + *

This is used when /sync returns a 'limited' timeline. 'Limited' means that there's a gap between the messages + * /sync returned, and the last known message in our timeline. In such a case, our live timeline isn't live anymore + * and has to be replaced by a new one. To make sure we can continue paginating our timelines correctly, we have to + * set new pagination tokens on the old and the new timeline. + * + * @param backPaginationToken - token for back-paginating the new timeline + * @param forwardPaginationToken - token for forward-paginating the old live timeline, + * if absent or null, all timelines are reset, removing old ones (including the previous live + * timeline which would otherwise be unable to paginate forwards without this token). + * Removing just the old live timeline whilst preserving previous ones is not supported. + */ + async resetLiveTimeline(backPaginationToken, forwardPaginationToken) { + const oldLive = this.liveTimeline; + this.timelineSet.resetLiveTimeline(backPaginationToken !== null && backPaginationToken !== void 0 ? backPaginationToken : undefined, forwardPaginationToken !== null && forwardPaginationToken !== void 0 ? forwardPaginationToken : undefined); + const newLive = this.liveTimeline; + + // FIXME: Remove the following as soon as https://github.com/matrix-org/synapse/issues/14830 is resolved. + // + // The pagination API for thread timelines currently can't handle the type of pagination tokens returned by sync + // + // To make this work anyway, we'll have to transform them into one of the types that the API can handle. + // One option is passing the tokens to /messages, which can handle sync tokens, and returns the right format. + // /messages does not return new tokens on requests with a limit of 0. + // This means our timelines might overlap a slight bit, but that's not an issue, as we deduplicate messages + // anyway. + + let newBackward; + let oldForward; + if (backPaginationToken) { + const res = await this.client.createMessagesRequest(this.roomId, backPaginationToken, 1, _eventTimeline.Direction.Forward); + newBackward = res.end; + } + if (forwardPaginationToken) { + const res = await this.client.createMessagesRequest(this.roomId, forwardPaginationToken, 1, _eventTimeline.Direction.Backward); + oldForward = res.start; + } + // Only replace the token if we don't have paginated away from this position already. This situation doesn't + // occur today, but if the above issue is resolved, we'd have to go down this path. + if (forwardPaginationToken && oldLive.getPaginationToken(_eventTimeline.Direction.Forward) === forwardPaginationToken) { + var _oldForward; + oldLive.setPaginationToken((_oldForward = oldForward) !== null && _oldForward !== void 0 ? _oldForward : null, _eventTimeline.Direction.Forward); + } + if (backPaginationToken && newLive.getPaginationToken(_eventTimeline.Direction.Backward) === backPaginationToken) { + var _newBackward; + newLive.setPaginationToken((_newBackward = newBackward) !== null && _newBackward !== void 0 ? _newBackward : null, _eventTimeline.Direction.Backward); + } + } + async updateThreadFromRootEvent() { + if (Thread.hasServerSideSupport) { + // Ensure we show *something* as soon as possible, we'll update it as soon as we get better data, but we + // don't want the thread preview to be empty if we can avoid it + if (!this.initialEventsFetched && !this.lastEvent) { + await this.processRootEvent(); + } + await this.fetchRootEvent(); + } + await this.processRootEvent(); + } + async updateThreadMetadata() { + this.updatePendingReplyCount(); + if (!this.processRootEventPromise) { + // We only want to do this once otherwise we end up rolling back to the last unsigned summary we have for the thread + this.processRootEventPromise = this.updateThreadFromRootEvent(); + } + await this.processRootEventPromise; + if (!this.initialEventsFetched) { + if (this.initalEventFetchProm) { + await this.initalEventFetchProm; + } else { + // fetch initial events to allow proper pagination + try { + // clear out any events that were added before the pagination request + // completed (eg. from sync). They'll be replaced by those from the pagination. + // Really, we should do this after the pagination request completes, but + // paginateEventTimeline does the request and adds the events in one go, so + // this would need a refactor in order to do. It's therefore possible there's + // a remaining race where an event comes in while the pagination request is + // happening. + this.timelineSet.resetLiveTimeline(); + // if the thread has regular events, this will just load the last reply. + // if the thread is newly created, this will load the root event. + if (this.replyCount === 0 && this.rootEvent) { + this.timelineSet.addEventsToTimeline([this.rootEvent], true, this.liveTimeline, null); + this.liveTimeline.setPaginationToken(null, _eventTimeline.Direction.Backward); + } else { + this.initalEventFetchProm = this.client.paginateEventTimeline(this.liveTimeline, { + backwards: true + }); + await this.initalEventFetchProm; + } + // We have now fetched the initial events, so set the flag. We need to do this before + // we actually add the events, so `this.addEvents` knows that it can now safely add + // them rather than buffer them in the pending event list. The main thing is that this + // must remain false while the async fetch happens, so we don't try to add events before + // the pagination has finished. The important thing is that we're not await-ing anything + // else between setting this and adding events, so no races. + this.initialEventsFetched = true; + for (const event of this.replayEvents) { + this.addEvent(event, false); + } + this.replayEvents = null; + // just to make sure that, if we've created a timeline window for this thread before the thread itself + // existed (e.g. when creating a new thread), we'll make sure the panel is force refreshed correctly. + this.emit(_room.RoomEvent.TimelineReset, this.room, this.timelineSet, true); + } catch (e) { + _logger.logger.error("Failed to load start of newly created thread: ", e); + this.initialEventsFetched = false; + } + } + } + this.emit(ThreadEvent.Update, this); + } + + // XXX: Workaround for https://github.com/matrix-org/matrix-spec-proposals/pull/2676/files#r827240084 + async fetchEditsWhereNeeded(...events) { + var _this$client$canSuppo3; + const recursionSupport = (_this$client$canSuppo3 = this.client.canSupport.get(_feature.Feature.RelationsRecursion)) !== null && _this$client$canSuppo3 !== void 0 ? _this$client$canSuppo3 : _feature.ServerSupport.Unsupported; + if (recursionSupport === _feature.ServerSupport.Unsupported) { + return Promise.all(events.filter(isAnEncryptedThreadMessage).map(async event => { + try { + const relations = await this.client.relations(this.roomId, event.getId(), _event.RelationType.Replace, event.getType(), { + limit: 1 + }); + if (relations.events.length) { + const editEvent = relations.events[0]; + event.makeReplaced(editEvent); + this.insertEventIntoTimeline(editEvent); + } + } catch (e) { + _logger.logger.error("Failed to load edits for encrypted thread event", e); + } + })); + } + } + setEventMetadata(event) { + if (event) { + _eventTimeline.EventTimeline.setEventMetadata(event, this.roomState, false); + event.setThread(this); + } + } + clearEventMetadata(event) { + if (event) { + var _event$event; + event.setThread(undefined); + (_event$event = event.event) === null || _event$event === void 0 || (_event$event = _event$event.unsigned) === null || _event$event === void 0 || (_event$event = _event$event["m.relations"]) === null || _event$event === void 0 || delete _event$event[THREAD_RELATION_TYPE.name]; + } + } + + /** + * Finds an event by ID in the current thread + */ + findEventById(eventId) { + return this.timelineSet.findEventById(eventId); + } + + /** + * Return last reply to the thread, if known. + */ + lastReply(matches = ev => ev.isRelation(THREAD_RELATION_TYPE.name)) { + for (let i = this.timeline.length - 1; i >= 0; i--) { + const event = this.timeline[i]; + if (matches(event)) { + return event; + } + } + return null; + } + get roomId() { + return this.room.roomId; + } + + /** + * The number of messages in the thread + * Only count rel_type=m.thread as we want to + * exclude annotations from that number + */ + get length() { + return this.replyCount + this.pendingReplyCount; + } + + /** + * A getter for the last event of the thread. + * This might be a synthesized event, if so, it will not emit any events to listeners. + */ + get replyToEvent() { + var _ref, _this$lastPendingEven; + return (_ref = (_this$lastPendingEven = this.lastPendingEvent) !== null && _this$lastPendingEven !== void 0 ? _this$lastPendingEven : this.lastEvent) !== null && _ref !== void 0 ? _ref : this.lastReply(); + } + + /** + * The live event timeline for this thread. + * @deprecated Present for backwards compatibility. + * Use this.events instead + * @returns The live event timeline for this thread. + */ + get timeline() { + return this.events; + } + get events() { + return this.liveTimeline.getEvents(); + } + has(eventId) { + return this.timelineSet.findEventById(eventId) instanceof _event2.MatrixEvent; + } + get hasCurrentUserParticipated() { + return this._currentUserParticipated; + } + get liveTimeline() { + return this.timelineSet.getLiveTimeline(); + } + getUnfilteredTimelineSet() { + return this.timelineSet; + } + addReceipt(event, synthetic) { + throw new Error("Unsupported function on the thread model"); + } + + /** + * Get the ID of the event that a given user has read up to within this thread, + * or null if we have received no read receipt (at all) from them. + * @param userId - The user ID to get read receipt event ID for + * @param ignoreSynthesized - If true, return only receipts that have been + * sent by the server, not implicit ones generated + * by the JS SDK. + * @returns ID of the latest event that the given user has read, or null. + */ + getEventReadUpTo(userId, ignoreSynthesized) { + // TODO: we think the implementation here is not right. Here is a sketch + // of the right answer: + // + // for event in timeline.events.reversed(): + // if room.hasUserReadEvent(event): + // return event + // return null + // + // If this is too slow, we might be able to improve it by trying walking + // forward from the threaded receipt in this thread. We could alternate + // between backwards-from-front and forwards-from-threaded-receipt to + // improve our chances of hitting the right answer sooner. + // + // Either way, it's still fundamentally slow because we have to walk + // events. + // + // We also might just want to limit the time we spend on this by giving + // up after, say, 100 events. + // + // --- andyb + + const isCurrentUser = userId === this.client.getUserId(); + const lastReply = this.timeline[this.timeline.length - 1]; + if (isCurrentUser && lastReply) { + // If the last activity in a thread is prior to the first threaded read receipt + // sent in the room (suggesting that it was sent before the user started + // using a client that supported threaded read receipts), we want to + // consider this thread as read. + const beforeFirstThreadedReceipt = lastReply.getTs() < this.room.getOldestThreadedReceiptTs(); + const lastReplyId = lastReply.getId(); + // Some unsent events do not have an ID, we do not want to consider them read + if (beforeFirstThreadedReceipt && lastReplyId) { + return lastReplyId; + } + } + const readUpToId = super.getEventReadUpTo(userId, ignoreSynthesized); + + // Check whether the unthreaded read receipt for that user is more recent + // than the read receipt inside that thread. + if (lastReply) { + const unthreadedReceipt = this.room.getLastUnthreadedReceiptFor(userId); + if (!unthreadedReceipt) { + return readUpToId; + } + for (let i = ((_this$timeline = this.timeline) === null || _this$timeline === void 0 ? void 0 : _this$timeline.length) - 1; i >= 0; --i) { + var _this$timeline, _ev$getId; + const ev = this.timeline[i]; + // If we encounter the `readUpToId` we do not need to look further + // there is no "more recent" unthreaded read receipt + if (ev.getId() === readUpToId) return readUpToId; + + // Inspecting events from most recent to oldest, we're checking + // whether an unthreaded read receipt is more recent that the current event. + // We usually prefer relying on the order of the DAG but in this scenario + // it is not possible and we have to rely on timestamp + if (ev.getTs() < unthreadedReceipt.ts) return (_ev$getId = ev.getId()) !== null && _ev$getId !== void 0 ? _ev$getId : readUpToId; + } + } + return readUpToId; + } + + /** + * Determine if the given user has read a particular event. + * + * It is invalid to call this method with an event that is not part of this thread. + * + * This is not a definitive check as it only checks the events that have been + * loaded client-side at the time of execution. + * @param userId - The user ID to check the read state of. + * @param eventId - The event ID to check if the user read. + * @returns True if the user has read the event, false otherwise. + */ + hasUserReadEvent(userId, eventId) { + if (userId === this.client.getUserId()) { + var _this$lastReply$getTs, _this$lastReply, _this$room$getLastUnt, _this$room$getLastUnt2, _this$lastReply$getTs2, _this$lastReply2; + // Consider an event read if it's part of a thread that is before the + // first threaded receipt sent in that room. It is likely that it is + // part of a thread that was created before MSC3771 was implemented. + // Or before the last unthreaded receipt for the logged in user + const beforeFirstThreadedReceipt = ((_this$lastReply$getTs = (_this$lastReply = this.lastReply()) === null || _this$lastReply === void 0 ? void 0 : _this$lastReply.getTs()) !== null && _this$lastReply$getTs !== void 0 ? _this$lastReply$getTs : 0) < this.room.getOldestThreadedReceiptTs(); + const unthreadedReceiptTs = (_this$room$getLastUnt = (_this$room$getLastUnt2 = this.room.getLastUnthreadedReceiptFor(userId)) === null || _this$room$getLastUnt2 === void 0 ? void 0 : _this$room$getLastUnt2.ts) !== null && _this$room$getLastUnt !== void 0 ? _this$room$getLastUnt : 0; + const beforeLastUnthreadedReceipt = ((_this$lastReply$getTs2 = this === null || this === void 0 || (_this$lastReply2 = this.lastReply()) === null || _this$lastReply2 === void 0 ? void 0 : _this$lastReply2.getTs()) !== null && _this$lastReply$getTs2 !== void 0 ? _this$lastReply$getTs2 : 0) < unthreadedReceiptTs; + if (beforeFirstThreadedReceipt || beforeLastUnthreadedReceipt) { + return true; + } + } + return this.room.hasUserReadEvent(userId, eventId); + } + setUnread(type, count) { + return this.room.setThreadUnreadNotificationCount(this.id, type, count); + } + + /** + * Returns the most recent unthreaded receipt for a given user + * @param userId - the MxID of the User + * @returns an unthreaded Receipt. Can be undefined if receipts have been disabled + * or a user chooses to use private read receipts (or we have simply not received + * a receipt from this user yet). + */ + getLastUnthreadedReceiptFor(userId) { + return this.room.getLastUnthreadedReceiptFor(userId); + } +} + /** - * Create a SearchResponse from the response to /search - * @static - * @param {Object} jsonObj - * @param {function} eventMapper - * @return {SearchResult} + * Decide whether an event deserves to have its potential edits fetched. + * + * @returns true if this event is encrypted and is a message that is part of a + * thread - either inside it, or a root. */ +exports.Thread = Thread; +(0, _defineProperty2.default)(Thread, "hasServerSideSupport", FeatureSupport.None); +(0, _defineProperty2.default)(Thread, "hasServerSideListSupport", FeatureSupport.None); +(0, _defineProperty2.default)(Thread, "hasServerSideFwdPaginationSupport", FeatureSupport.None); +function isAnEncryptedThreadMessage(event) { + return event.isEncrypted() && (event.isRelation(THREAD_RELATION_TYPE.name) || event.isThreadRoot); +} +const FILTER_RELATED_BY_SENDERS = exports.FILTER_RELATED_BY_SENDERS = new _NamespacedValue.ServerControlledNamespacedValue("related_by_senders", "io.element.relation_senders"); +const FILTER_RELATED_BY_REL_TYPES = exports.FILTER_RELATED_BY_REL_TYPES = new _NamespacedValue.ServerControlledNamespacedValue("related_by_rel_types", "io.element.relation_types"); +const THREAD_RELATION_TYPE = exports.THREAD_RELATION_TYPE = new _NamespacedValue.ServerControlledNamespacedValue("m.thread", "io.element.thread"); +let ThreadFilterType = exports.ThreadFilterType = /*#__PURE__*/function (ThreadFilterType) { + ThreadFilterType[ThreadFilterType["My"] = 0] = "My"; + ThreadFilterType[ThreadFilterType["All"] = 1] = "All"; + return ThreadFilterType; +}({}); +function threadFilterTypeToFilter(type) { + switch (type) { + case ThreadFilterType.My: + return "participated"; + default: + return "all"; + } +} +//# sourceMappingURL=thread.js.map + +/***/ }), + +/***/ 7150: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; -SearchResult.fromJson = function (jsonObj, eventMapper) { - const jsonContext = jsonObj.context || {}; - const events_before = jsonContext.events_before || []; - const events_after = jsonContext.events_after || []; - const context = new _eventContext.EventContext(eventMapper(jsonObj.result)); - context.setPaginateToken(jsonContext.start, true); - context.addEvents(utils.map(events_before, eventMapper), true); - context.addEvents(utils.map(events_after, eventMapper), false); - context.setPaginateToken(jsonContext.end, false); - return new SearchResult(jsonObj.rank, context); -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TypedEventEmitter = exports.EventEmitterEvents = void 0; +var _events = __nccwpck_require__(2361); +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +// eslint-disable-next-line no-restricted-imports +/** Events emitted by EventEmitter itself */ +let EventEmitterEvents = exports.EventEmitterEvents = /*#__PURE__*/function (EventEmitterEvents) { + EventEmitterEvents["NewListener"] = "newListener"; + EventEmitterEvents["RemoveListener"] = "removeListener"; + EventEmitterEvents["Error"] = "error"; + return EventEmitterEvents; +}({}); +/** Base class for types mapping from event name to the type of listeners to that event */ +/** + * The expected type of a listener function for a particular event. + * + * Type parameters: + * * `E` - List of all events emitted by the `TypedEventEmitter`. Normally an enum type. + * * `A` - A type providing mappings from event names to listener types. + * * `T` - The name of the actual event that this listener is for. Normally one of the types in `E` or + * {@link EventEmitterEvents}. + */ +/** + * Typed Event Emitter class which can act as a Base Model for all our model + * and communication events. + * This makes it much easier for us to distinguish between events, as we now need + * to properly type this, so that our events are not stringly-based and prone + * to silly typos. + * + * Type parameters: + * * `Events` - List of all events emitted by this `TypedEventEmitter`. Normally an enum type. + * * `Arguments` - A {@link ListenerMap} type providing mappings from event names to listener types. + * * `SuperclassArguments` - TODO: not really sure. Alternative listener mappings, I think? But only honoured for `.emit`? + */ +class TypedEventEmitter extends _events.EventEmitter { + /** + * Alias for {@link TypedEventEmitter#on}. + */ + addListener(event, listener) { + return super.addListener(event, listener); + } + + /** + * Synchronously calls each of the listeners registered for the event named + * `event`, in the order they were registered, passing the supplied arguments + * to each. + * + * @param event - The name of the event to emit + * @param args - Arguments to pass to the listener + * @returns `true` if the event had listeners, `false` otherwise. + */ + + emit(event, ...args) { + return super.emit(event, ...args); + } + + /** + * Similar to `emit` but calls all listeners within a `Promise.all` and returns the promise chain + * @param event - The name of the event to emit + * @param args - Arguments to pass to the listener + * @returns `true` if the event had listeners, `false` otherwise. + */ + + async emitPromised(event, ...args) { + const listeners = this.listeners(event); + return Promise.allSettled(listeners.map(l => l(...args))).then(() => { + return listeners.length > 0; + }); + } + + /** + * Returns the number of listeners listening to the event named `event`. + * + * @param event - The name of the event being listened for + */ + listenerCount(event) { + return super.listenerCount(event); + } + + /** + * Returns a copy of the array of listeners for the event named `event`. + */ + listeners(event) { + return super.listeners(event); + } + + /** + * Alias for {@link TypedEventEmitter#removeListener} + */ + off(event, listener) { + return super.off(event, listener); + } + + /** + * Adds the `listener` function to the end of the listeners array for the + * event named `event`. + * + * No checks are made to see if the `listener` has already been added. Multiple calls + * passing the same combination of `event` and `listener` will result in the `listener` + * being added, and called, multiple times. + * + * By default, event listeners are invoked in the order they are added. The + * {@link TypedEventEmitter#prependListener} method can be used as an alternative to add the + * event listener to the beginning of the listeners array. + * + * @param event - The name of the event. + * @param listener - The callback function + * + * @returns a reference to the `EventEmitter`, so that calls can be chained. + */ + on(event, listener) { + return super.on(event, listener); + } + + /** + * Adds a **one-time** `listener` function for the event named `event`. The + * next time `event` is triggered, this listener is removed and then invoked. + * + * Returns a reference to the `EventEmitter`, so that calls can be chained. + * + * By default, event listeners are invoked in the order they are added. + * The {@link TypedEventEmitter#prependOnceListener} method can be used as an alternative to add the + * event listener to the beginning of the listeners array. + * + * @param event - The name of the event. + * @param listener - The callback function + * + * @returns a reference to the `EventEmitter`, so that calls can be chained. + */ + once(event, listener) { + return super.once(event, listener); + } + + /** + * Adds the `listener` function to the _beginning_ of the listeners array for the + * event named `event`. + * + * No checks are made to see if the `listener` has already been added. Multiple calls + * passing the same combination of `event` and `listener` will result in the `listener` + * being added, and called, multiple times. + * + * @param event - The name of the event. + * @param listener - The callback function + * + * @returns a reference to the `EventEmitter`, so that calls can be chained. + */ + prependListener(event, listener) { + return super.prependListener(event, listener); + } + + /** + * Adds a **one-time**`listener` function for the event named `event` to the _beginning_ of the listeners array. + * The next time `event` is triggered, this listener is removed, and then invoked. + * + * @param event - The name of the event. + * @param listener - The callback function + * + * @returns a reference to the `EventEmitter`, so that calls can be chained. + */ + prependOnceListener(event, listener) { + return super.prependOnceListener(event, listener); + } + + /** + * Removes all listeners, or those of the specified `event`. + * + * It is bad practice to remove listeners added elsewhere in the code, + * particularly when the `EventEmitter` instance was created by some other + * component or module (e.g. sockets or file streams). + * + * @param event - The name of the event. If undefined, all listeners everywhere are removed. + * @returns a reference to the `EventEmitter`, so that calls can be chained. + */ + removeAllListeners(event) { + // EventEmitter::removeAllListeners uses `arguments.length` to determine undefined case + if (event === undefined) { + return super.removeAllListeners(); + } + return super.removeAllListeners(event); + } + + /** + * Removes the specified `listener` from the listener array for the event named `event`. + * + * @returns a reference to the `EventEmitter`, so that calls can be chained. + */ + removeListener(event, listener) { + return super.removeListener(event, listener); + } + + /** + * Returns a copy of the array of listeners for the event named `eventName`, + * including any wrappers (such as those created by `.once()`). + */ + rawListeners(event) { + return super.rawListeners(event); + } +} +exports.TypedEventEmitter = TypedEventEmitter; +//# sourceMappingURL=typed-event-emitter.js.map /***/ }), /***/ 1104: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.User = User; - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _events = __webpack_require__(8614); - +exports.UserEvent = exports.User = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _typedEventEmitter = __nccwpck_require__(7150); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -59175,282 +175402,212 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - -/** - * @module models/user - */ - -/** - * Construct a new User. A User must have an ID and can optionally have extra - * information associated with it. - * @constructor - * @param {string} userId Required. The ID of this user. - * @prop {string} userId The ID of the user. - * @prop {Object} info The info object supplied in the constructor. - * @prop {string} displayName The 'displayname' of the user if known. - * @prop {string} avatarUrl The 'avatar_url' of the user if known. - * @prop {string} presence The presence enum if known. - * @prop {string} presenceStatusMsg The presence status message if known. - * @prop {Number} lastActiveAgo The time elapsed in ms since the user interacted - * proactively with the server, or we saw a message from the user - * @prop {Number} lastPresenceTs Timestamp (ms since the epoch) for when we last - * received presence data for this user. We can subtract - * lastActiveAgo from this to approximate an absolute value for - * when a user was last active. - * @prop {Boolean} currentlyActive Whether we should consider lastActiveAgo to be - * an approximation and that the user should be seen as active 'now' - * @prop {string} _unstable_statusMessage The status message for the user, if known. This is - * different from the presenceStatusMsg in that this is not tied to - * the user's presence, and should be represented differently. - * @prop {Object} events The events describing this user. - * @prop {MatrixEvent} events.presence The m.presence event for this user. - */ -function User(userId) { - this.userId = userId; - this.presence = "offline"; - this.presenceStatusMsg = null; - this._unstable_statusMessage = ""; - this.displayName = userId; - this.rawDisplayName = userId; - this.avatarUrl = null; - this.lastActiveAgo = 0; - this.lastPresenceTs = 0; - this.currentlyActive = false; - this.events = { - presence: null, - profile: null - }; - - this._updateModifiedTime(); -} - -utils.inherits(User, _events.EventEmitter); -/** - * Update this User with the given presence event. May fire "User.presence", - * "User.avatarUrl" and/or "User.displayName" if this event updates this user's - * properties. - * @param {MatrixEvent} event The m.presence event. - * @fires module:client~MatrixClient#event:"User.presence" - * @fires module:client~MatrixClient#event:"User.displayName" - * @fires module:client~MatrixClient#event:"User.avatarUrl" - */ - -User.prototype.setPresenceEvent = function (event) { - if (event.getType() !== "m.presence") { - return; +let UserEvent = exports.UserEvent = /*#__PURE__*/function (UserEvent) { + UserEvent["DisplayName"] = "User.displayName"; + UserEvent["AvatarUrl"] = "User.avatarUrl"; + UserEvent["Presence"] = "User.presence"; + UserEvent["CurrentlyActive"] = "User.currentlyActive"; + UserEvent["LastPresenceTs"] = "User.lastPresenceTs"; + return UserEvent; +}({}); +class User extends _typedEventEmitter.TypedEventEmitter { + /** + * Construct a new User. A User must have an ID and can optionally have extra information associated with it. + * @param userId - Required. The ID of this user. + * @deprecated use `User.createUser` + */ + constructor(userId) { + super(); + (0, _defineProperty2.default)(this, "modified", -1); + /** + * The presence enum if known. + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "presence", "offline"); + /** + * Timestamp (ms since the epoch) for when we last received presence data for this user. + * We can subtract lastActiveAgo from this to approximate an absolute value for when a user was last active. + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "lastActiveAgo", 0); + /** + * The time elapsed in ms since the user interacted proactively with the server, + * or we saw a message from the user + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "lastPresenceTs", 0); + /** + * Whether we should consider lastActiveAgo to be an approximation + * and that the user should be seen as active 'now' + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "currentlyActive", false); + /** + * The events describing this user. + * @privateRemarks + * Should be read-only + */ + (0, _defineProperty2.default)(this, "events", {}); + this.userId = userId; + this.displayName = userId; + this.rawDisplayName = userId; + this.updateModifiedTime(); } - const firstFire = this.events.presence === null; - this.events.presence = event; - const eventsToFire = []; - - if (event.getContent().presence !== this.presence || firstFire) { - eventsToFire.push("User.presence"); + /** + * Construct a new User whose events will also emit on MatrixClient. + * A User must have an ID and can optionally have extra information associated with it. + * @param userId - Required. The ID of this user. + * @param client - An instance of MatrixClient object + * @returns User object with reEmitter setup on client + */ + static createUser(userId, client) { + const user = new User(userId); + client.reEmitter.reEmit(user, [UserEvent.AvatarUrl, UserEvent.DisplayName, UserEvent.Presence, UserEvent.CurrentlyActive, UserEvent.LastPresenceTs]); + return user; } - if (event.getContent().avatar_url && event.getContent().avatar_url !== this.avatarUrl) { - eventsToFire.push("User.avatarUrl"); + /** + * Update this User with the given presence event. May fire "User.presence", + * "User.avatarUrl" and/or "User.displayName" if this event updates this user's + * properties. + * @param event - The `m.presence` event. + * + * @remarks + * Fires {@link UserEvent.Presence} + * Fires {@link UserEvent.DisplayName} + * Fires {@link UserEvent.AvatarUrl} + */ + setPresenceEvent(event) { + if (event.getType() !== "m.presence") { + return; + } + const firstFire = this.events.presence === null; + this.events.presence = event; + const eventsToFire = []; + if (event.getContent().presence !== this.presence || firstFire) { + eventsToFire.push(UserEvent.Presence); + } + if (event.getContent().avatar_url && event.getContent().avatar_url !== this.avatarUrl) { + eventsToFire.push(UserEvent.AvatarUrl); + } + if (event.getContent().displayname && event.getContent().displayname !== this.displayName) { + eventsToFire.push(UserEvent.DisplayName); + } + if (event.getContent().currently_active !== undefined && event.getContent().currently_active !== this.currentlyActive) { + eventsToFire.push(UserEvent.CurrentlyActive); + } + this.presence = event.getContent().presence; + eventsToFire.push(UserEvent.LastPresenceTs); + if (event.getContent().status_msg) { + this.presenceStatusMsg = event.getContent().status_msg; + } + if (event.getContent().displayname) { + this.displayName = event.getContent().displayname; + } + if (event.getContent().avatar_url) { + this.avatarUrl = event.getContent().avatar_url; + } + this.lastActiveAgo = event.getContent().last_active_ago; + this.lastPresenceTs = Date.now(); + this.currentlyActive = event.getContent().currently_active; + this.updateModifiedTime(); + for (const eventToFire of eventsToFire) { + this.emit(eventToFire, event, this); + } } - if (event.getContent().displayname && event.getContent().displayname !== this.displayName) { - eventsToFire.push("User.displayName"); - } - - if (event.getContent().currently_active !== undefined && event.getContent().currently_active !== this.currentlyActive) { - eventsToFire.push("User.currentlyActive"); - } - - this.presence = event.getContent().presence; - eventsToFire.push("User.lastPresenceTs"); - - if (event.getContent().status_msg) { - this.presenceStatusMsg = event.getContent().status_msg; - } - - if (event.getContent().displayname) { - this.displayName = event.getContent().displayname; - } - - if (event.getContent().avatar_url) { - this.avatarUrl = event.getContent().avatar_url; - } - - this.lastActiveAgo = event.getContent().last_active_ago; - this.lastPresenceTs = Date.now(); - this.currentlyActive = event.getContent().currently_active; - - this._updateModifiedTime(); - - for (let i = 0; i < eventsToFire.length; i++) { - this.emit(eventsToFire[i], event, this); - } -}; -/** - * Manually set this user's display name. No event is emitted in response to this - * as there is no underlying MatrixEvent to emit with. - * @param {string} name The new display name. - */ - - -User.prototype.setDisplayName = function (name) { - const oldName = this.displayName; - - if (typeof name === "string") { + /** + * Manually set this user's display name. No event is emitted in response to this + * as there is no underlying MatrixEvent to emit with. + * @param name - The new display name. + */ + setDisplayName(name) { + const oldName = this.displayName; this.displayName = name; - } else { - this.displayName = undefined; + if (name !== oldName) { + this.updateModifiedTime(); + } } - if (name !== oldName) { - this._updateModifiedTime(); - } -}; -/** - * Manually set this user's non-disambiguated display name. No event is emitted - * in response to this as there is no underlying MatrixEvent to emit with. - * @param {string} name The new display name. - */ - - -User.prototype.setRawDisplayName = function (name) { - if (typeof name === "string") { + /** + * Manually set this user's non-disambiguated display name. No event is emitted + * in response to this as there is no underlying MatrixEvent to emit with. + * @param name - The new display name. + */ + setRawDisplayName(name) { this.rawDisplayName = name; - } else { - this.rawDisplayName = undefined; } -}; -/** - * Manually set this user's avatar URL. No event is emitted in response to this - * as there is no underlying MatrixEvent to emit with. - * @param {string} url The new avatar URL. - */ - -User.prototype.setAvatarUrl = function (url) { - const oldUrl = this.avatarUrl; - this.avatarUrl = url; - - if (url !== oldUrl) { - this._updateModifiedTime(); + /** + * Manually set this user's avatar URL. No event is emitted in response to this + * as there is no underlying MatrixEvent to emit with. + * @param url - The new avatar URL. + */ + setAvatarUrl(url) { + const oldUrl = this.avatarUrl; + this.avatarUrl = url; + if (url !== oldUrl) { + this.updateModifiedTime(); + } } -}; -/** - * Update the last modified time to the current time. - */ + /** + * Update the last modified time to the current time. + */ + updateModifiedTime() { + this.modified = Date.now(); + } -User.prototype._updateModifiedTime = function () { - this._modified = Date.now(); -}; -/** - * Get the timestamp when this User was last updated. This timestamp is - * updated when this User receives a new Presence event which has updated a - * property on this object. It is updated before firing events. - * @return {number} The timestamp - */ + /** + * Get the timestamp when this User was last updated. This timestamp is + * updated when this User receives a new Presence event which has updated a + * property on this object. It is updated before firing events. + * @returns The timestamp + */ + getLastModifiedTime() { + return this.modified; + } - -User.prototype.getLastModifiedTime = function () { - return this._modified; -}; -/** - * Get the absolute timestamp when this User was last known active on the server. - * It is *NOT* accurate if this.currentlyActive is true. - * @return {number} The timestamp - */ - - -User.prototype.getLastActiveTs = function () { - return this.lastPresenceTs - this.lastActiveAgo; -}; -/** - * Manually set the user's status message. - * @param {MatrixEvent} event The im.vector.user_status event. - * @fires module:client~MatrixClient#event:"User._unstable_statusMessage" - */ - - -User.prototype._unstable_updateStatusMessage = function (event) { - if (!event.getContent()) this._unstable_statusMessage = "";else this._unstable_statusMessage = event.getContent()["status"]; - - this._updateModifiedTime(); - - this.emit("User._unstable_statusMessage", this); -}; -/** - * Fires whenever any user's lastPresenceTs changes, - * ie. whenever any presence event is received for a user. - * @event module:client~MatrixClient#"User.lastPresenceTs" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {User} user The user whose User.lastPresenceTs changed. - * @example - * matrixClient.on("User.lastPresenceTs", function(event, user){ - * var newlastPresenceTs = user.lastPresenceTs; - * }); - */ - -/** - * Fires whenever any user's presence changes. - * @event module:client~MatrixClient#"User.presence" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {User} user The user whose User.presence changed. - * @example - * matrixClient.on("User.presence", function(event, user){ - * var newPresence = user.presence; - * }); - */ - -/** - * Fires whenever any user's currentlyActive changes. - * @event module:client~MatrixClient#"User.currentlyActive" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {User} user The user whose User.currentlyActive changed. - * @example - * matrixClient.on("User.currentlyActive", function(event, user){ - * var newCurrentlyActive = user.currentlyActive; - * }); - */ - -/** - * Fires whenever any user's display name changes. - * @event module:client~MatrixClient#"User.displayName" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {User} user The user whose User.displayName changed. - * @example - * matrixClient.on("User.displayName", function(event, user){ - * var newName = user.displayName; - * }); - */ - -/** - * Fires whenever any user's avatar URL changes. - * @event module:client~MatrixClient#"User.avatarUrl" - * @param {MatrixEvent} event The matrix event which caused this event to fire. - * @param {User} user The user whose User.avatarUrl changed. - * @example - * matrixClient.on("User.avatarUrl", function(event, user){ - * var newUrl = user.avatarUrl; - * }); - */ + /** + * Get the absolute timestamp when this User was last known active on the server. + * It is *NOT* accurate if this.currentlyActive is true. + * @returns The timestamp + */ + getLastActiveTs() { + return this.lastPresenceTs - this.lastActiveAgo; + } +} +exports.User = User; +//# sourceMappingURL=user.js.map /***/ }), -/***/ 4131: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 6857: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PushProcessor = PushProcessor; - -var _utils = __webpack_require__(2557); - -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 New Vector Ltd +exports.generateScope = exports.generateOidcAuthorizationUrl = exports.generateAuthorizationUrl = exports.generateAuthorizationParams = exports.completeAuthorizationCodeGrant = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _oidcClientTs = __nccwpck_require__(1929); +var _crypto = __nccwpck_require__(8532); +var _logger = __nccwpck_require__(3854); +var _randomstring = __nccwpck_require__(2495); +var _error = __nccwpck_require__(7980); +var _validate = __nccwpck_require__(5522); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -59464,478 +175621,314 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +// reexport for backwards compatibility /** - * @module pushprocessor - */ -const RULEKINDS_IN_ORDER = ['override', 'content', 'room', 'sender', 'underride']; // The default override rules to apply to the push rules that arrive from the server. -// We do this for two reasons: -// 1. Synapse is unlikely to send us the push rule in an incremental sync - see -// https://github.com/matrix-org/synapse/pull/4867#issuecomment-481446072 for -// more details. -// 2. We often want to start using push rules ahead of the server supporting them, -// and so we can put them here. - -const DEFAULT_OVERRIDE_RULES = [{ - // For homeservers which don't support MSC1930 yet - rule_id: ".m.rule.tombstone", - default: true, - enabled: true, - conditions: [{ - kind: "event_match", - key: "type", - pattern: "m.room.tombstone" - }, { - kind: "event_match", - key: "state_key", - pattern: "" - }], - actions: ["notify", { - set_tweak: "highlight", - value: true - }] -}, { - // For homeservers which don't support MSC2153 yet - rule_id: ".m.rule.reaction", - default: true, - enabled: true, - conditions: [{ - kind: "event_match", - key: "type", - pattern: "m.reaction" - }], - actions: ["dont_notify"] -}]; -/** - * Construct a Push Processor. - * @constructor - * @param {Object} client The Matrix client object to use - */ - -function PushProcessor(client) { - const cachedGlobToRegex = {// $glob: RegExp, - }; - - const matchingRuleFromKindSet = (ev, kindset) => { - for (let ruleKindIndex = 0; ruleKindIndex < RULEKINDS_IN_ORDER.length; ++ruleKindIndex) { - const kind = RULEKINDS_IN_ORDER[ruleKindIndex]; - const ruleset = kindset[kind]; - - if (!ruleset) { - continue; - } - - for (let ruleIndex = 0; ruleIndex < ruleset.length; ++ruleIndex) { - const rule = ruleset[ruleIndex]; - - if (!rule.enabled) { - continue; - } - - const rawrule = templateRuleToRaw(kind, rule); - - if (!rawrule) { - continue; - } - - if (this.ruleMatchesEvent(rawrule, ev)) { - rule.kind = kind; - return rule; - } - } - } - - return null; - }; - - const templateRuleToRaw = function (kind, tprule) { - const rawrule = { - 'rule_id': tprule.rule_id, - 'actions': tprule.actions, - 'conditions': [] - }; - - switch (kind) { - case 'underride': - case 'override': - rawrule.conditions = tprule.conditions; - break; - - case 'room': - if (!tprule.rule_id) { - return null; - } - - rawrule.conditions.push({ - 'kind': 'event_match', - 'key': 'room_id', - 'value': tprule.rule_id - }); - break; - - case 'sender': - if (!tprule.rule_id) { - return null; - } - - rawrule.conditions.push({ - 'kind': 'event_match', - 'key': 'user_id', - 'value': tprule.rule_id - }); - break; - - case 'content': - if (!tprule.pattern) { - return null; - } - - rawrule.conditions.push({ - 'kind': 'event_match', - 'key': 'content.body', - 'pattern': tprule.pattern - }); - break; - } - - return rawrule; - }; - - const eventFulfillsCondition = function (cond, ev) { - const condition_functions = { - "event_match": eventFulfillsEventMatchCondition, - "contains_display_name": eventFulfillsDisplayNameCondition, - "room_member_count": eventFulfillsRoomMemberCountCondition, - "sender_notification_permission": eventFulfillsSenderNotifPermCondition - }; - - if (condition_functions[cond.kind]) { - return condition_functions[cond.kind](cond, ev); - } // unknown conditions: we previously matched all unknown conditions, - // but given that rules can be added to the base rules on a server, - // it's probably better to not match unknown conditions. - - - return false; - }; - - const eventFulfillsSenderNotifPermCondition = function (cond, ev) { - const notifLevelKey = cond['key']; - - if (!notifLevelKey) { - return false; - } - - const room = client.getRoom(ev.getRoomId()); - - if (!room || !room.currentState) { - return false; - } // Note that this should not be the current state of the room but the state at - // the point the event is in the DAG. Unfortunately the js-sdk does not store - // this. - - - return room.currentState.mayTriggerNotifOfType(notifLevelKey, ev.getSender()); - }; - - const eventFulfillsRoomMemberCountCondition = function (cond, ev) { - if (!cond.is) { - return false; - } - - const room = client.getRoom(ev.getRoomId()); - - if (!room || !room.currentState || !room.currentState.members) { - return false; - } - - const memberCount = room.currentState.getJoinedMemberCount(); - const m = cond.is.match(/^([=<>]*)([0-9]*)$/); - - if (!m) { - return false; - } - - const ineq = m[1]; - const rhs = parseInt(m[2]); - - if (isNaN(rhs)) { - return false; - } - - switch (ineq) { - case '': - case '==': - return memberCount == rhs; - - case '<': - return memberCount < rhs; - - case '>': - return memberCount > rhs; - - case '<=': - return memberCount <= rhs; - - case '>=': - return memberCount >= rhs; - - default: - return false; - } - }; - - const eventFulfillsDisplayNameCondition = function (cond, ev) { - let content = ev.getContent(); - - if (ev.isEncrypted() && ev.getClearContent()) { - content = ev.getClearContent(); - } - - if (!content || !content.body || typeof content.body != 'string') { - return false; - } - - const room = client.getRoom(ev.getRoomId()); - - if (!room || !room.currentState || !room.currentState.members || !room.currentState.getMember(client.credentials.userId)) { - return false; - } - - const displayName = room.currentState.getMember(client.credentials.userId).name; // N.B. we can't use \b as it chokes on unicode. however \W seems to be okay - // as shorthand for [^0-9A-Za-z_]. - - const pat = new RegExp("(^|\\W)" + (0, _utils.escapeRegExp)(displayName) + "(\\W|$)", 'i'); - return content.body.search(pat) > -1; - }; - - const eventFulfillsEventMatchCondition = function (cond, ev) { - if (!cond.key) { - return false; - } - - const val = valueForDottedKey(cond.key, ev); - - if (typeof val !== 'string') { - return false; - } - - if (cond.value) { - return cond.value === val; - } - - let regex; - - if (cond.key == 'content.body') { - regex = createCachedRegex('(^|\\W)', cond.pattern, '(\\W|$)'); - } else { - regex = createCachedRegex('^', cond.pattern, '$'); - } - - return !!val.match(regex); - }; - - const createCachedRegex = function (prefix, glob, suffix) { - if (cachedGlobToRegex[glob]) { - return cachedGlobToRegex[glob]; - } - - cachedGlobToRegex[glob] = new RegExp(prefix + (0, _utils.globToRegexp)(glob) + suffix, 'i'); - return cachedGlobToRegex[glob]; - }; - - const valueForDottedKey = function (key, ev) { - const parts = key.split('.'); - let val; // special-case the first component to deal with encrypted messages - - const firstPart = parts[0]; - - if (firstPart === 'content') { - val = ev.getContent(); - parts.shift(); - } else if (firstPart === 'type') { - val = ev.getType(); - parts.shift(); - } else { - // use the raw event for any other fields - val = ev.event; - } - - while (parts.length > 0) { - const thisPart = parts.shift(); - - if ((0, _utils.isNullOrUndefined)(val[thisPart])) { - return null; - } - - val = val[thisPart]; - } - - return val; - }; - - const matchingRuleForEventWithRulesets = function (ev, rulesets) { - if (!rulesets) { - return null; - } - - if (ev.getSender() === client.credentials.userId) { - return null; - } - - return matchingRuleFromKindSet(ev, rulesets.global); - }; - - const pushActionsForEventAndRulesets = function (ev, rulesets) { - const rule = matchingRuleForEventWithRulesets(ev, rulesets); - - if (!rule) { - return {}; - } - - const actionObj = PushProcessor.actionListToActionsObject(rule.actions); // Some actions are implicit in some situations: we add those here - - if (actionObj.tweaks.highlight === undefined) { - // if it isn't specified, highlight if it's a content - // rule but otherwise not - actionObj.tweaks.highlight = rule.kind == 'content'; - } - - return actionObj; - }; - - this.ruleMatchesEvent = function (rule, ev) { - let ret = true; - - for (let i = 0; i < rule.conditions.length; ++i) { - const cond = rule.conditions[i]; - ret &= eventFulfillsCondition(cond, ev); - } //console.log("Rule "+rule.rule_id+(ret ? " matches" : " doesn't match")); - - - return ret; - }; - /** - * Get the user's push actions for the given event - * - * @param {module:models/event.MatrixEvent} ev - * - * @return {PushAction} - */ - - - this.actionsForEvent = function (ev) { - return pushActionsForEventAndRulesets(ev, client.pushRules); - }; - /** - * Get one of the users push rules by its ID - * - * @param {string} ruleId The ID of the rule to search for - * @return {object} The push rule, or null if no such rule was found - */ - - - this.getPushRuleById = function (ruleId) { - for (const scope of ['global']) { - if (client.pushRules[scope] === undefined) continue; - - for (const kind of RULEKINDS_IN_ORDER) { - if (client.pushRules[scope][kind] === undefined) continue; - - for (const rule of client.pushRules[scope][kind]) { - if (rule.rule_id === ruleId) return rule; - } - } - } - - return null; - }; -} -/** - * Convert a list of actions into a object with the actions as keys and their values - * eg. [ 'notify', { set_tweak: 'sound', value: 'default' } ] - * becomes { notify: true, tweaks: { sound: 'default' } } - * @param {array} actionlist The actions list + * Authorization parameters which are used in the authentication request of an OIDC auth code flow. * - * @return {object} A object with key 'notify' (true or false) and an object of actions + * See https://openid.net/specs/openid-connect-basic-1_0.html#RequestParameters. */ +/** + * @experimental + * Generate the scope used in authorization request with OIDC OP + * @returns scope + */ +const generateScope = deviceId => { + const safeDeviceId = deviceId !== null && deviceId !== void 0 ? deviceId : (0, _randomstring.randomString)(10); + return `openid urn:matrix:org.matrix.msc2967.client:api:* urn:matrix:org.matrix.msc2967.client:device:${safeDeviceId}`; +}; -PushProcessor.actionListToActionsObject = function (actionlist) { - const actionobj = { - 'notify': false, - 'tweaks': {} +// https://www.rfc-editor.org/rfc/rfc7636 +exports.generateScope = generateScope; +const generateCodeChallenge = async codeVerifier => { + if (!_crypto.subtleCrypto) { + // @TODO(kerrya) should this be allowed? configurable? + _logger.logger.warn("A secure context is required to generate code challenge. Using plain text code challenge"); + return codeVerifier; + } + const utf8 = new _crypto.TextEncoder().encode(codeVerifier); + const digest = await _crypto.subtleCrypto.digest("SHA-256", utf8); + return btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); +}; + +/** + * Generate authorization params to pass to {@link generateAuthorizationUrl}. + * + * Used as part of an authorization code OIDC flow: see https://openid.net/specs/openid-connect-basic-1_0.html#CodeFlow. + * + * @param redirectUri - absolute url for OP to redirect to after authorization + * @returns AuthorizationParams + */ +const generateAuthorizationParams = ({ + redirectUri +}) => ({ + scope: generateScope(), + redirectUri, + state: (0, _randomstring.randomString)(8), + nonce: (0, _randomstring.randomString)(8), + codeVerifier: (0, _randomstring.randomString)(64) // https://tools.ietf.org/html/rfc7636#section-4.1 length needs to be 43-128 characters +}); + +/** + * @deprecated use generateOidcAuthorizationUrl + * Generate a URL to attempt authorization with the OP + * See https://openid.net/specs/openid-connect-basic-1_0.html#CodeRequest + * @param authorizationUrl - endpoint to attempt authorization with the OP + * @param clientId - id of this client as registered with the OP + * @param authorizationParams - params to be used in the url + * @returns a Promise with the url as a string + */ +exports.generateAuthorizationParams = generateAuthorizationParams; +const generateAuthorizationUrl = async (authorizationUrl, clientId, { + scope, + redirectUri, + state, + nonce, + codeVerifier +}) => { + const url = new URL(authorizationUrl); + url.searchParams.append("response_mode", "query"); + url.searchParams.append("response_type", "code"); + url.searchParams.append("redirect_uri", redirectUri); + url.searchParams.append("client_id", clientId); + url.searchParams.append("state", state); + url.searchParams.append("scope", scope); + url.searchParams.append("nonce", nonce); + url.searchParams.append("code_challenge_method", "S256"); + url.searchParams.append("code_challenge", await generateCodeChallenge(codeVerifier)); + return url.toString(); +}; + +/** + * @experimental + * Generate a URL to attempt authorization with the OP + * See https://openid.net/specs/openid-connect-basic-1_0.html#CodeRequest + * @param metadata - validated metadata from OP discovery + * @param clientId - this client's id as registered with the OP + * @param homeserverUrl - used to establish the session on return from the OP + * @param identityServerUrl - used to establish the session on return from the OP + * @param nonce - state + * @param prompt - indicates to the OP which flow the user should see - eg login or registration + * See https://openid.net/specs/openid-connect-prompt-create-1_0.html#name-prompt-parameter + * @param urlState - value to append to the opaque state identifier to uniquely identify the callback + * @returns a Promise with the url as a string + */ +exports.generateAuthorizationUrl = generateAuthorizationUrl; +const generateOidcAuthorizationUrl = async ({ + metadata, + redirectUri, + clientId, + homeserverUrl, + identityServerUrl, + nonce, + prompt, + urlState +}) => { + const scope = generateScope(); + const oidcClient = new _oidcClientTs.OidcClient(_objectSpread(_objectSpread({}, metadata), {}, { + client_id: clientId, + redirect_uri: redirectUri, + authority: metadata.issuer, + response_mode: "query", + response_type: "code", + scope, + stateStore: new _oidcClientTs.WebStorageStateStore({ + prefix: "mx_oidc_", + store: window.sessionStorage + }) + })); + const userState = { + homeserverUrl, + nonce, + identityServerUrl }; - - for (let i = 0; i < actionlist.length; ++i) { - const action = actionlist[i]; - - if (action === 'notify') { - actionobj.notify = true; - } else if (typeof action === 'object') { - if (action.value === undefined) { - action.value = true; - } - - actionobj.tweaks[action.set_tweak] = action.value; - } - } - - return actionobj; + const request = await oidcClient.createSigninRequest({ + state: userState, + nonce, + prompt, + url_state: urlState + }); + return request.url; }; + /** - * Rewrites conditions on a client's push rules to match the defaults - * where applicable. Useful for upgrading push rules to more strict - * conditions when the server is falling behind on defaults. - * @param {object} incomingRules The client's existing push rules - * @returns {object} The rewritten rules + * Normalize token_type to use capital case to make consuming the token response easier + * token_type is case insensitive, and it is spec-compliant for OPs to return token_type: "bearer" + * Later, when used in auth headers it is case sensitive and must be Bearer + * See: https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.4 + * + * @param response - validated token response + * @returns response with token_type set to 'Bearer' */ +exports.generateOidcAuthorizationUrl = generateOidcAuthorizationUrl; +const normalizeBearerTokenResponseTokenType = response => ({ + id_token: response.id_token, + scope: response.scope, + expires_at: response.expires_at, + refresh_token: response.refresh_token, + access_token: response.access_token, + token_type: "Bearer" +}); +/** + * @experimental + * Attempt to exchange authorization code for bearer token. + * + * Takes the authorization code returned by the OpenID Provider via the authorization URL, and makes a + * request to the Token Endpoint, to obtain the access token, refresh token, etc. + * + * @param code - authorization code as returned by OP during authorization + * @param storedAuthorizationParams - stored params from start of oidc login flow + * @returns valid bearer token response + * @throws An `Error` with `message` set to an entry in {@link OidcError}, + * when the request fails, or the returned token response is invalid. + */ +const completeAuthorizationCodeGrant = async (code, state) => { + /** + * Element Web strips and changes the url on starting the app + * Use the code and state from query params to rebuild a url + * so that oidc-client can parse it + */ + const reconstructedUrl = new URL(window.location.origin); + reconstructedUrl.searchParams.append("code", code); + reconstructedUrl.searchParams.append("state", state); -PushProcessor.rewriteDefaultRules = function (incomingRules) { - let newRules = JSON.parse(JSON.stringify(incomingRules)); // deep clone - // These lines are mostly to make the tests happy. We shouldn't run into these - // properties missing in practice. + // set oidc-client to use our logger + _oidcClientTs.Log.setLogger(_logger.logger); + try { + const response = new _oidcClientTs.SigninResponse(reconstructedUrl.searchParams); + const stateStore = new _oidcClientTs.WebStorageStateStore({ + prefix: "mx_oidc_", + store: window.sessionStorage + }); - if (!newRules) newRules = {}; - if (!newRules.global) newRules.global = {}; - if (!newRules.global.override) newRules.global.override = []; // Merge the client-level defaults with the ones from the server - - const globalOverrides = newRules.global.override; - - for (const override of DEFAULT_OVERRIDE_RULES) { - const existingRule = globalOverrides.find(r => r.rule_id === override.rule_id); - - if (existingRule) { - // Copy over the actions, default, and conditions. Don't touch the user's - // preference. - existingRule.default = override.default; - existingRule.conditions = override.conditions; - existingRule.actions = override.actions; - } else { - // Add the rule - const ruleId = override.rule_id; - console.warn(`Adding default global override for ${ruleId}`); - globalOverrides.push(override); + // retrieve the state we put in storage at the start of oidc auth flow + const stateString = await stateStore.get(response.state); + if (!stateString) { + throw new Error(_error.OidcError.MissingOrInvalidStoredState); } - } - return newRules; + // hydrate the sign in state and create a client + // the stored sign in state includes oidc configuration we set at the start of the oidc login flow + const signInState = await _oidcClientTs.SigninState.fromStorageString(stateString); + const client = new _oidcClientTs.OidcClient(_objectSpread(_objectSpread({}, signInState), {}, { + stateStore + })); + + // validate the code and state, and attempt to swap the code for tokens + const signinResponse = await client.processSigninResponse(reconstructedUrl.href); + + // extra values we stored at the start of the login flow + // used to complete login in the client + const userState = signinResponse.userState; + (0, _validate.validateStoredUserState)(userState); + + // throws when response is invalid + (0, _validate.validateBearerTokenResponse)(signinResponse); + // throws when token is invalid + (0, _validate.validateIdToken)(signinResponse.id_token, client.settings.authority, client.settings.client_id, userState.nonce); + const normalizedTokenResponse = normalizeBearerTokenResponseTokenType(signinResponse); + return { + oidcClientSettings: { + clientId: client.settings.client_id, + issuer: client.settings.authority + }, + tokenResponse: normalizedTokenResponse, + homeserverUrl: userState.homeserverUrl, + identityServerUrl: userState.identityServerUrl, + idTokenClaims: signinResponse.profile + }; + } catch (error) { + _logger.logger.error("Oidc login failed", error); + const errorType = error.message; + + // rethrow errors that we recognise + if (Object.values(_error.OidcError).includes(errorType)) { + throw error; + } + throw new Error(_error.OidcError.CodeExchangeFailed); + } }; -/** - * @typedef {Object} PushAction - * @type {Object} - * @property {boolean} notify Whether this event should notify the user or not. - * @property {Object} tweaks How this event should be notified. - * @property {boolean} tweaks.highlight Whether this event should be highlighted - * on the UI. - * @property {boolean} tweaks.sound Whether this notification should produce a - * noise. - */ +exports.completeAuthorizationCodeGrant = completeAuthorizationCodeGrant; +//# sourceMappingURL=authorize.js.map /***/ }), -/***/ 2495: +/***/ 3591: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.discoverAndValidateOIDCIssuerWellKnown = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _oidcClientTs = __nccwpck_require__(1929); +var _validate = __nccwpck_require__(5522); +var _httpApi = __nccwpck_require__(7082); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * @experimental + * Discover and validate delegated auth configuration + * - delegated auth issuer openid-configuration is reachable + * - delegated auth issuer openid-configuration is configured correctly for us + * Fetches https://oidc-issuer.example.com/.well-known/openid-configuration and other files linked therein. + * When successful, validated metadata is returned + * @param issuer - the OIDC issuer as returned by the /auth_issuer API + * @returns validated authentication metadata and optionally signing keys + * @throws when delegated auth config is invalid or unreachable + */ +const discoverAndValidateOIDCIssuerWellKnown = async issuer => { + var _await$metadataServic; + const issuerOpenIdConfigUrl = new URL(".well-known/openid-configuration", issuer); + const issuerWellKnownResponse = await fetch(issuerOpenIdConfigUrl, { + method: _httpApi.Method.Get, + signal: (0, _httpApi.timeoutSignal)(5000) + }); + const issuerWellKnown = await issuerWellKnownResponse.json(); + const validatedIssuerConfig = (0, _validate.validateOIDCIssuerWellKnown)(issuerWellKnown); + + // create a temporary settings store, so we can use metadata service for discovery + const settings = new _oidcClientTs.OidcClientSettingsStore({ + authority: issuer, + redirect_uri: "", + // Not known yet, this is here to make the type checker happy + client_id: "" // Not known yet, this is here to make the type checker happy + }); + const metadataService = new _oidcClientTs.MetadataService(settings); + const metadata = await metadataService.getMetadata(); + const signingKeys = (_await$metadataServic = await metadataService.getSigningKeys()) !== null && _await$metadataServic !== void 0 ? _await$metadataServic : undefined; + (0, _validate.isValidatedIssuerMetadata)(metadata); + return _objectSpread(_objectSpread({}, validatedIssuerConfig), {}, { + metadata, + signingKeys + }); +}; +exports.discoverAndValidateOIDCIssuerWellKnown = discoverAndValidateOIDCIssuerWellKnown; +//# sourceMappingURL=discovery.js.map + +/***/ }), + +/***/ 7980: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -59944,8 +175937,1297 @@ PushProcessor.rewriteDefaultRules = function (incomingRules) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.randomString = randomString; +exports.OidcError = void 0; +/* +Copyright 2023 The Matrix.org Foundation C.I.C. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * Errors expected to be encountered during OIDC discovery, client registration, and authentication. + * Not intended to be displayed directly to the user. + */ +let OidcError = exports.OidcError = /*#__PURE__*/function (OidcError) { + OidcError["NotSupported"] = "OIDC authentication not supported"; + OidcError["Misconfigured"] = "OIDC is misconfigured"; + OidcError["General"] = "Something went wrong with OIDC discovery"; + OidcError["OpSupport"] = "Configured OIDC OP does not support required functions"; + OidcError["DynamicRegistrationNotSupported"] = "Dynamic registration not supported"; + OidcError["DynamicRegistrationFailed"] = "Dynamic registration failed"; + OidcError["DynamicRegistrationInvalid"] = "Dynamic registration invalid response"; + OidcError["CodeExchangeFailed"] = "Failed to exchange code for token"; + OidcError["InvalidBearerTokenResponse"] = "Invalid bearer token response"; + OidcError["InvalidIdToken"] = "Invalid ID token"; + OidcError["MissingOrInvalidStoredState"] = "State required to finish logging in is not found in storage."; + return OidcError; +}({}); +//# sourceMappingURL=error.js.map + +/***/ }), + +/***/ 1827: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _authorize = __nccwpck_require__(6857); +Object.keys(_authorize).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _authorize[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _authorize[key]; + } + }); +}); +var _discovery = __nccwpck_require__(3591); +Object.keys(_discovery).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _discovery[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _discovery[key]; + } + }); +}); +var _error = __nccwpck_require__(7980); +Object.keys(_error).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _error[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _error[key]; + } + }); +}); +var _register = __nccwpck_require__(7875); +Object.keys(_register).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _register[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _register[key]; + } + }); +}); +var _tokenRefresher = __nccwpck_require__(4936); +Object.keys(_tokenRefresher).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _tokenRefresher[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _tokenRefresher[key]; + } + }); +}); +var _validate = __nccwpck_require__(5522); +Object.keys(_validate).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _validate[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _validate[key]; + } + }); +}); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 7875: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.registerOidcClient = void 0; +var _error = __nccwpck_require__(7980); +var _httpApi = __nccwpck_require__(7082); +var _logger = __nccwpck_require__(3854); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Client metadata passed to registration endpoint + */ + +/** + * Attempts dynamic registration against the configured registration endpoint + * @param delegatedAuthConfig - Auth config from {@link discoverAndValidateOIDCIssuerWellKnown} + * @param clientMetadata - The metadata for the client which to register + * @returns Promise resolved with registered clientId + * @throws when registration is not supported, on failed request or invalid response + */ +const registerOidcClient = async (delegatedAuthConfig, clientMetadata) => { + if (!delegatedAuthConfig.registrationEndpoint) { + throw new Error(_error.OidcError.DynamicRegistrationNotSupported); + } + const grantTypes = ["authorization_code", "refresh_token"]; + if (grantTypes.some(scope => !delegatedAuthConfig.metadata.grant_types_supported.includes(scope))) { + throw new Error(_error.OidcError.DynamicRegistrationNotSupported); + } + + // https://openid.net/specs/openid-connect-registration-1_0.html + const metadata = { + client_name: clientMetadata.clientName, + client_uri: clientMetadata.clientUri, + response_types: ["code"], + grant_types: grantTypes, + redirect_uris: clientMetadata.redirectUris, + id_token_signed_response_alg: "RS256", + token_endpoint_auth_method: "none", + application_type: clientMetadata.applicationType, + logo_uri: clientMetadata.logoUri, + contacts: clientMetadata.contacts, + policy_uri: clientMetadata.policyUri, + tos_uri: clientMetadata.tosUri + }; + const headers = { + "Accept": "application/json", + "Content-Type": "application/json" + }; + try { + const response = await fetch(delegatedAuthConfig.registrationEndpoint, { + method: _httpApi.Method.Post, + headers, + body: JSON.stringify(metadata) + }); + if (response.status >= 400) { + throw new Error(_error.OidcError.DynamicRegistrationFailed); + } + const body = await response.json(); + const clientId = body["client_id"]; + if (!clientId || typeof clientId !== "string") { + throw new Error(_error.OidcError.DynamicRegistrationInvalid); + } + return clientId; + } catch (error) { + if (Object.values(_error.OidcError).includes(error.message)) { + throw error; + } else { + _logger.logger.error("Dynamic registration request failed", error); + throw new Error(_error.OidcError.DynamicRegistrationFailed); + } + } +}; +exports.registerOidcClient = registerOidcClient; +//# sourceMappingURL=register.js.map + +/***/ }), + +/***/ 4936: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OidcTokenRefresher = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _oidcClientTs = __nccwpck_require__(1929); +var _authorize = __nccwpck_require__(6857); +var _discovery = __nccwpck_require__(3591); +var _logger = __nccwpck_require__(3854); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * @experimental + * Class responsible for refreshing OIDC access tokens + * + * Client implementations will likely want to override {@link persistTokens} to persist tokens after successful refresh + * + */ +class OidcTokenRefresher { + /** + * Promise which will complete once the OidcClient has been initialised + * and is ready to start refreshing tokens. + * + * Will reject if the client initialisation fails. + */ + + constructor( + /** + * The OIDC issuer as returned by the /auth_issuer API + */ + issuer, + /** + * id of this client as registered with the OP + */ + clientId, + /** + * redirectUri as registered with OP + */ + redirectUri, + /** + * Device ID of current session + */ + deviceId, + /** + * idTokenClaims as returned from authorization grant + * used to validate tokens + */ + idTokenClaims) { + this.idTokenClaims = idTokenClaims; + this.oidcClientReady = this.initialiseOidcClient(issuer, clientId, deviceId, redirectUri); + } + async initialiseOidcClient(issuer, clientId, deviceId, redirectUri) { + try { + const config = await (0, _discovery.discoverAndValidateOIDCIssuerWellKnown)(issuer); + const scope = (0, _authorize.generateScope)(deviceId); + this.oidcClient = new _oidcClientTs.OidcClient(_objectSpread(_objectSpread({}, config.metadata), {}, { + client_id: clientId, + scope, + redirect_uri: redirectUri, + authority: config.metadata.issuer, + stateStore: new _oidcClientTs.WebStorageStateStore({ + prefix: "mx_oidc_", + store: window.sessionStorage + }) + })); + } catch (error) { + _logger.logger.error("Failed to initialise OIDC client.", error); + throw new Error("Failed to initialise OIDC client."); + } + } + + /** + * Attempt token refresh using given refresh token + * @param refreshToken - refresh token to use in request with token issuer + * @returns tokens - Promise that resolves with new access and refresh tokens + * @throws when token refresh fails + */ + async doRefreshAccessToken(refreshToken) { + if (!this.inflightRefreshRequest) { + this.inflightRefreshRequest = this.getNewTokens(refreshToken); + } + try { + const tokens = await this.inflightRefreshRequest; + return tokens; + } finally { + this.inflightRefreshRequest = undefined; + } + } + + /** + * Persist the new tokens, called after tokens are successfully refreshed. + * + * This function is intended to be overriden by the consumer when persistence is necessary. + * + * @param tokens.accessToken - new access token + * @param tokens.refreshToken - OPTIONAL new refresh token + */ + async persistTokens(tokens) { + // NOOP + } + async getNewTokens(refreshToken) { + if (!this.oidcClient) { + throw new Error("Cannot get new token before OIDC client is initialised."); + } + const refreshTokenState = { + refresh_token: refreshToken, + session_state: "test", + data: undefined, + profile: this.idTokenClaims + }; + const response = await this.oidcClient.useRefreshToken({ + state: refreshTokenState, + timeoutInSeconds: 300 + }); + const tokens = { + accessToken: response.access_token, + refreshToken: response.refresh_token + }; + await this.persistTokens(tokens); + return tokens; + } +} +exports.OidcTokenRefresher = OidcTokenRefresher; +//# sourceMappingURL=tokenRefresher.js.map + +/***/ }), + +/***/ 5522: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isValidatedIssuerMetadata = isValidatedIssuerMetadata; +exports.validateBearerTokenResponse = validateBearerTokenResponse; +exports.validateOIDCIssuerWellKnown = exports.validateIdToken = void 0; +exports.validateStoredUserState = validateStoredUserState; +var _jwtDecode = __nccwpck_require__(2971); +var _logger = __nccwpck_require__(3854); +var _error = __nccwpck_require__(7980); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const isRecord = value => !!value && typeof value === "object" && !Array.isArray(value); +const requiredStringProperty = (wellKnown, key) => { + if (!wellKnown[key] || !optionalStringProperty(wellKnown, key)) { + _logger.logger.error(`Missing or invalid property: ${key}`); + return false; + } + return true; +}; +const optionalStringProperty = (wellKnown, key) => { + if (!!wellKnown[key] && typeof wellKnown[key] !== "string") { + _logger.logger.error(`Invalid property: ${key}`); + return false; + } + return true; +}; +const optionalStringArrayProperty = (wellKnown, key) => { + if (!!wellKnown[key] && (!Array.isArray(wellKnown[key]) || !wellKnown[key].every(v => typeof v === "string"))) { + _logger.logger.error(`Invalid property: ${key}`); + return false; + } + return true; +}; +const requiredArrayValue = (wellKnown, key, value) => { + const array = wellKnown[key]; + if (!array || !Array.isArray(array) || !array.includes(value)) { + _logger.logger.error(`Invalid property: ${key}. ${value} is required.`); + return false; + } + return true; +}; + +/** + * Validates issuer `.well-known/openid-configuration` + * As defined in RFC5785 https://openid.net/specs/openid-connect-discovery-1_0.html + * validates that OP is compatible with Element's OIDC flow + * @param wellKnown - json object + * @returns valid issuer config + * @throws Error - when issuer config is not found or is invalid + */ +const validateOIDCIssuerWellKnown = wellKnown => { + if (!isRecord(wellKnown)) { + _logger.logger.error("Issuer configuration not found or malformed"); + throw new Error(_error.OidcError.OpSupport); + } + const isInvalid = [requiredStringProperty(wellKnown, "authorization_endpoint"), requiredStringProperty(wellKnown, "token_endpoint"), requiredStringProperty(wellKnown, "revocation_endpoint"), optionalStringProperty(wellKnown, "registration_endpoint"), optionalStringProperty(wellKnown, "account_management_uri"), optionalStringProperty(wellKnown, "device_authorization_endpoint"), optionalStringArrayProperty(wellKnown, "account_management_actions_supported"), requiredArrayValue(wellKnown, "response_types_supported", "code"), requiredArrayValue(wellKnown, "grant_types_supported", "authorization_code"), requiredArrayValue(wellKnown, "code_challenge_methods_supported", "S256")].some(isValid => !isValid); + if (!isInvalid) { + return { + authorizationEndpoint: wellKnown["authorization_endpoint"], + tokenEndpoint: wellKnown["token_endpoint"], + registrationEndpoint: wellKnown["registration_endpoint"], + accountManagementEndpoint: wellKnown["account_management_uri"], + accountManagementActionsSupported: wellKnown["account_management_actions_supported"] + }; + } + _logger.logger.error("Issuer configuration not valid"); + throw new Error(_error.OidcError.OpSupport); +}; + +/** + * Metadata from OIDC authority discovery + * With validated properties required in type + */ +exports.validateOIDCIssuerWellKnown = validateOIDCIssuerWellKnown; +/** + * Wraps validateOIDCIssuerWellKnown in a type assertion + * that asserts expected properties are present + * (Typescript assertions cannot be arrow functions) + * @param metadata - issuer openid-configuration response + * @throws when metadata validation fails + */ +function isValidatedIssuerMetadata(metadata) { + validateOIDCIssuerWellKnown(metadata); +} + +/** + * Standard JWT claims. + * + * @see https://datatracker.ietf.org/doc/html/rfc7519#section-4.1 + */ + +const decodeIdToken = token => { + try { + return (0, _jwtDecode.jwtDecode)(token); + } catch (error) { + _logger.logger.error("Could not decode id_token", error); + throw error; + } +}; + +/** + * Validate idToken + * https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation + * @param idToken - id token from token endpoint + * @param issuer - issuer for the OP as found during discovery + * @param clientId - this client's id as registered with the OP + * @param nonce - nonce used in the authentication request + * @throws when id token is invalid + */ +const validateIdToken = (idToken, issuer, clientId, nonce) => { + try { + if (!idToken) { + throw new Error("No ID token"); + } + const claims = decodeIdToken(idToken); + + // The Issuer Identifier for the OpenID Provider MUST exactly match the value of the iss (issuer) Claim. + if (claims.iss !== issuer) { + throw new Error("Invalid issuer"); + } + /** + * The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience. + * The aud (audience) Claim MAY contain an array with more than one element. + * The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences not trusted by the Client. + * EW: Don't accept tokens with other untrusted audiences + * */ + if (claims.aud !== clientId) { + throw new Error("Invalid audience"); + } + + /** + * If a nonce value was sent in the Authentication Request, a nonce Claim MUST be present and its value checked + * to verify that it is the same value as the one that was sent in the Authentication Request. + */ + if (nonce !== undefined && claims.nonce !== nonce) { + throw new Error("Invalid nonce"); + } + + /** + * The current time MUST be before the time represented by the exp Claim. + * exp is an epoch timestamp in seconds + * */ + if (!claims.exp || Date.now() > claims.exp * 1000) { + throw new Error("Invalid expiry"); + } + } catch (error) { + _logger.logger.error("Invalid ID token", error); + throw new Error(_error.OidcError.InvalidIdToken); + } +}; + +/** + * State we ask OidcClient to store when starting oidc authorization flow (in `generateOidcAuthorizationUrl`) + * so that we can access it on return from the OP and complete login + */ +exports.validateIdToken = validateIdToken; +/** + * Validate stored user state exists and is valid + * @param userState - userState returned by oidcClient.processSigninResponse + * @throws when userState is invalid + */ +function validateStoredUserState(userState) { + if (!isRecord(userState)) { + _logger.logger.error("Stored user state not found"); + throw new Error(_error.OidcError.MissingOrInvalidStoredState); + } + const isInvalid = [requiredStringProperty(userState, "homeserverUrl"), requiredStringProperty(userState, "nonce"), optionalStringProperty(userState, "identityServerUrl")].some(isValid => !isValid); + if (isInvalid) { + throw new Error(_error.OidcError.MissingOrInvalidStoredState); + } +} + +/** + * The expected response type from the token endpoint during authorization code flow + * Normalized to always use capitalized 'Bearer' for token_type + * + * See https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.4, + * https://openid.net/specs/openid-connect-basic-1_0.html#TokenOK. + */ + +/** + * Make required properties required in type + */ + +const isValidBearerTokenResponse = response => isRecord(response) && requiredStringProperty(response, "token_type") && +// token_type is case insensitive, some OPs return `token_type: "bearer"` +response["token_type"].toLowerCase() === "bearer" && requiredStringProperty(response, "access_token") && requiredStringProperty(response, "refresh_token") && (!("expires_in" in response) || typeof response["expires_in"] === "number"); +function validateBearerTokenResponse(response) { + if (!isValidBearerTokenResponse(response)) { + throw new Error(_error.OidcError.InvalidBearerTokenResponse); + } +} +//# sourceMappingURL=validate.js.map + +/***/ }), + +/***/ 4131: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PushProcessor = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _utils = __nccwpck_require__(2557); +var _logger = __nccwpck_require__(3854); +var _PushRules = __nccwpck_require__(5393); +var _event = __nccwpck_require__(7487); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +const RULEKINDS_IN_ORDER = [_PushRules.PushRuleKind.Override, _PushRules.PushRuleKind.ContentSpecific, _PushRules.PushRuleKind.RoomSpecific, _PushRules.PushRuleKind.SenderSpecific, _PushRules.PushRuleKind.Underride]; + +// The default override rules to apply to the push rules that arrive from the server. +// We do this for two reasons: +// 1. Synapse is unlikely to send us the push rule in an incremental sync - see +// https://github.com/matrix-org/synapse/pull/4867#issuecomment-481446072 for +// more details. +// 2. We often want to start using push rules ahead of the server supporting them, +// and so we can put them here. +const DEFAULT_OVERRIDE_RULES = { + ".m.rule.is_room_mention": { + // Matrix v1.7 + rule_id: ".m.rule.is_room_mention", + default: true, + enabled: true, + conditions: [{ + kind: _PushRules.ConditionKind.EventPropertyIs, + key: "content.m\\.mentions.room", + value: true + }, { + kind: _PushRules.ConditionKind.SenderNotificationPermission, + key: "room" + }], + actions: [_PushRules.PushRuleActionName.Notify, { + set_tweak: _PushRules.TweakName.Highlight + }] + }, + ".m.rule.reaction": { + // For homeservers which don't support MSC2153 yet + rule_id: ".m.rule.reaction", + default: true, + enabled: true, + conditions: [{ + kind: _PushRules.ConditionKind.EventMatch, + key: "type", + pattern: "m.reaction" + }], + actions: [_PushRules.PushRuleActionName.DontNotify] + }, + ".org.matrix.msc3786.rule.room.server_acl": { + // For homeservers which don't support MSC3786 yet + rule_id: ".org.matrix.msc3786.rule.room.server_acl", + default: true, + enabled: true, + conditions: [{ + kind: _PushRules.ConditionKind.EventMatch, + key: "type", + pattern: _event.EventType.RoomServerAcl + }, { + kind: _PushRules.ConditionKind.EventMatch, + key: "state_key", + pattern: "" + }], + actions: [] + } +}; + +// A special rule id for `EXPECTED_DEFAULT_OVERRIDE_RULE_IDS` and friends which denotes where user-defined rules live in the order. +const UserDefinedRules = Symbol("UserDefinedRules"); +const EXPECTED_DEFAULT_OVERRIDE_RULE_IDS = [_PushRules.RuleId.Master, UserDefinedRules, _PushRules.RuleId.SuppressNotices, _PushRules.RuleId.InviteToSelf, _PushRules.RuleId.MemberEvent, _PushRules.RuleId.IsUserMention, _PushRules.RuleId.ContainsDisplayName, _PushRules.RuleId.IsRoomMention, _PushRules.RuleId.AtRoomNotification, _PushRules.RuleId.Tombstone, ".m.rule.reaction", ".m.rule.room.server_acl", ".org.matrix.msc3786.rule.room.server_acl", ".m.rule.suppress_edits"]; +const DEFAULT_UNDERRIDE_RULES = { + ".org.matrix.msc3914.rule.room.call": { + // For homeservers which don't support MSC3914 yet + rule_id: ".org.matrix.msc3914.rule.room.call", + default: true, + enabled: true, + conditions: [{ + kind: _PushRules.ConditionKind.EventMatch, + key: "type", + pattern: "org.matrix.msc3401.call" + }, { + kind: _PushRules.ConditionKind.CallStarted + }], + actions: [_PushRules.PushRuleActionName.Notify, { + set_tweak: _PushRules.TweakName.Sound, + value: "default" + }] + } +}; +const EXPECTED_DEFAULT_UNDERRIDE_RULE_IDS = [UserDefinedRules, _PushRules.RuleId.IncomingCall, ".org.matrix.msc3914.rule.room.call", _PushRules.RuleId.EncryptedDM, _PushRules.RuleId.DM, _PushRules.RuleId.Message, _PushRules.RuleId.EncryptedMessage]; + +/** + * Make sure that each of the rules listed in `defaultRuleIds` is listed in the given set of push rules. + * + * @param kind - the kind of push rule set being merged. + * @param incomingRules - the existing set of known push rules for the user. + * @param defaultRules - a lookup table for the default definitions of push rules. + * @param orderedRuleIds - the IDs of the expected push rules, in order. + * + * @returns A copy of `incomingRules`, with any missing default rules inserted in the right place. + */ +function mergeRulesWithDefaults(kind, incomingRules, defaultRules, orderedRuleIds) { + // Split the incomingRules into defaults and custom + const incomingDefaultRules = incomingRules.filter(rule => rule.default); + const incomingCustomRules = incomingRules.filter(rule => !rule.default); + function insertDefaultPushRule(ruleId) { + if (ruleId === UserDefinedRules) { + // Re-insert any user-defined rules that were in `incomingRules` + newRules.push(...incomingCustomRules); + } else if (ruleId in defaultRules) { + _logger.logger.warn(`Adding default global ${kind} push rule ${ruleId}`); + newRules.push(defaultRules[ruleId]); + } else { + _logger.logger.warn(`Missing default global ${kind} push rule ${ruleId}`); + } + } + let nextExpectedRuleIdIndex = 0; + const newRules = []; + // Merge our expected rules (including the incoming custom rules) into the incoming default rules. + for (const rule of incomingDefaultRules) { + const ruleIndex = orderedRuleIds.indexOf(rule.rule_id); + if (ruleIndex === -1) { + // an unrecognised rule; copy it over + newRules.push(rule); + continue; + } + while (ruleIndex > nextExpectedRuleIdIndex) { + // insert new rules + const defaultRuleId = orderedRuleIds[nextExpectedRuleIdIndex]; + insertDefaultPushRule(defaultRuleId); + nextExpectedRuleIdIndex += 1; + } + // copy over the existing rule + newRules.push(rule); + nextExpectedRuleIdIndex += 1; + } + + // Now copy over any remaining default rules + for (const ruleId of orderedRuleIds.slice(nextExpectedRuleIdIndex)) { + insertDefaultPushRule(ruleId); + } + return newRules; +} +class PushProcessor { + /** + * Construct a Push Processor. + * @param client - The Matrix client object to use + */ + constructor(client) { + /** + * Maps the original key from the push rules to a list of property names + * after unescaping. + */ + (0, _defineProperty2.default)(this, "parsedKeys", new Map()); + this.client = client; + } + /** + * Convert a list of actions into a object with the actions as keys and their values + * @example + * eg. `[ 'notify', { set_tweak: 'sound', value: 'default' } ]` + * becomes `{ notify: true, tweaks: { sound: 'default' } }` + * @param actionList - The actions list + * + * @returns A object with key 'notify' (true or false) and an object of actions + */ + static actionListToActionsObject(actionList) { + const actionObj = { + notify: false, + tweaks: {} + }; + for (const action of actionList) { + if (action === _PushRules.PushRuleActionName.Notify) { + actionObj.notify = true; + } else if (typeof action === "object") { + if (action.value === undefined) { + action.value = true; + } + actionObj.tweaks[action.set_tweak] = action.value; + } + } + return actionObj; + } + + /** + * Rewrites conditions on a client's push rules to match the defaults + * where applicable. Useful for upgrading push rules to more strict + * conditions when the server is falling behind on defaults. + * @param incomingRules - The client's existing push rules + * @param userId - The Matrix ID of the client. + * @returns The rewritten rules + */ + static rewriteDefaultRules(incomingRules, userId = undefined) { + let newRules = JSON.parse(JSON.stringify(incomingRules)); // deep clone + + // These lines are mostly to make the tests happy. We shouldn't run into these + // properties missing in practice. + if (!newRules) newRules = {}; + if (!newRules.global) newRules.global = {}; + if (!newRules.global.override) newRules.global.override = []; + if (!newRules.global.underride) newRules.global.underride = []; + + // Merge the client-level defaults with the ones from the server + newRules.global.override = mergeRulesWithDefaults(_PushRules.PushRuleKind.Override, newRules.global.override, DEFAULT_OVERRIDE_RULES, EXPECTED_DEFAULT_OVERRIDE_RULE_IDS); + newRules.global.underride = mergeRulesWithDefaults(_PushRules.PushRuleKind.Underride, newRules.global.underride, DEFAULT_UNDERRIDE_RULES, EXPECTED_DEFAULT_UNDERRIDE_RULE_IDS); + return newRules; + } + + /** + * Pre-caches the parsed keys for push rules and cleans out any obsolete cache + * entries. Should be called after push rules are updated. + * @param newRules - The new push rules. + */ + updateCachedPushRuleKeys(newRules) { + // These lines are mostly to make the tests happy. We shouldn't run into these + // properties missing in practice. + if (!newRules) newRules = {}; + if (!newRules.global) newRules.global = {}; + if (!newRules.global.override) newRules.global.override = []; + if (!newRules.global.room) newRules.global.room = []; + if (!newRules.global.sender) newRules.global.sender = []; + if (!newRules.global.underride) newRules.global.underride = []; + + // Process the 'key' property on event_match conditions pre-cache the + // values and clean-out any unused values. + const toRemoveKeys = new Set(this.parsedKeys.keys()); + for (const ruleset of [newRules.global.override, newRules.global.room, newRules.global.sender, newRules.global.underride]) { + for (const rule of ruleset) { + if (!rule.conditions) { + continue; + } + for (const condition of rule.conditions) { + if (condition.kind !== _PushRules.ConditionKind.EventMatch) { + continue; + } + + // Ensure we keep this key. + toRemoveKeys.delete(condition.key); + + // Pre-process the key. + this.parsedKeys.set(condition.key, PushProcessor.partsForDottedKey(condition.key)); + } + } + } + // Any keys that were previously cached, but are no longer needed should + // be removed. + toRemoveKeys.forEach(k => this.parsedKeys.delete(k)); + } + // $glob: RegExp + + matchingRuleFromKindSet(ev, kindset) { + for (const kind of RULEKINDS_IN_ORDER) { + const ruleset = kindset[kind]; + if (!ruleset) { + continue; + } + for (const rule of ruleset) { + if (!rule.enabled) { + continue; + } + const rawrule = this.templateRuleToRaw(kind, rule); + if (!rawrule) { + continue; + } + if (this.ruleMatchesEvent(rawrule, ev)) { + return _objectSpread(_objectSpread({}, rule), {}, { + kind + }); + } + } + } + return null; + } + templateRuleToRaw(kind, tprule) { + const rawrule = { + rule_id: tprule.rule_id, + actions: tprule.actions, + conditions: [] + }; + switch (kind) { + case _PushRules.PushRuleKind.Underride: + case _PushRules.PushRuleKind.Override: + rawrule.conditions = tprule.conditions; + break; + case _PushRules.PushRuleKind.RoomSpecific: + if (!tprule.rule_id) { + return null; + } + rawrule.conditions.push({ + kind: _PushRules.ConditionKind.EventMatch, + key: "room_id", + value: tprule.rule_id + }); + break; + case _PushRules.PushRuleKind.SenderSpecific: + if (!tprule.rule_id) { + return null; + } + rawrule.conditions.push({ + kind: _PushRules.ConditionKind.EventMatch, + key: "user_id", + value: tprule.rule_id + }); + break; + case _PushRules.PushRuleKind.ContentSpecific: + if (!tprule.pattern) { + return null; + } + rawrule.conditions.push({ + kind: _PushRules.ConditionKind.EventMatch, + key: "content.body", + pattern: tprule.pattern + }); + break; + } + return rawrule; + } + eventFulfillsCondition(cond, ev) { + switch (cond.kind) { + case _PushRules.ConditionKind.EventMatch: + return this.eventFulfillsEventMatchCondition(cond, ev); + case _PushRules.ConditionKind.EventPropertyIs: + return this.eventFulfillsEventPropertyIsCondition(cond, ev); + case _PushRules.ConditionKind.EventPropertyContains: + return this.eventFulfillsEventPropertyContains(cond, ev); + case _PushRules.ConditionKind.ContainsDisplayName: + return this.eventFulfillsDisplayNameCondition(cond, ev); + case _PushRules.ConditionKind.RoomMemberCount: + return this.eventFulfillsRoomMemberCountCondition(cond, ev); + case _PushRules.ConditionKind.SenderNotificationPermission: + return this.eventFulfillsSenderNotifPermCondition(cond, ev); + case _PushRules.ConditionKind.CallStarted: + case _PushRules.ConditionKind.CallStartedPrefix: + return this.eventFulfillsCallStartedCondition(cond, ev); + } + + // unknown conditions: we previously matched all unknown conditions, + // but given that rules can be added to the base rules on a server, + // it's probably better to not match unknown conditions. + return false; + } + eventFulfillsSenderNotifPermCondition(cond, ev) { + const notifLevelKey = cond["key"]; + if (!notifLevelKey) { + return false; + } + const room = this.client.getRoom(ev.getRoomId()); + if (!(room !== null && room !== void 0 && room.currentState)) { + return false; + } + + // Note that this should not be the current state of the room but the state at + // the point the event is in the DAG. Unfortunately the js-sdk does not store + // this. + return room.currentState.mayTriggerNotifOfType(notifLevelKey, ev.getSender()); + } + eventFulfillsRoomMemberCountCondition(cond, ev) { + if (!cond.is) { + return false; + } + const room = this.client.getRoom(ev.getRoomId()); + if (!room || !room.currentState || !room.currentState.members) { + return false; + } + const memberCount = room.currentState.getJoinedMemberCount(); + const m = cond.is.match(/^([=<>]*)(\d*)$/); + if (!m) { + return false; + } + const ineq = m[1]; + const rhs = parseInt(m[2]); + if (isNaN(rhs)) { + return false; + } + switch (ineq) { + case "": + case "==": + return memberCount == rhs; + case "<": + return memberCount < rhs; + case ">": + return memberCount > rhs; + case "<=": + return memberCount <= rhs; + case ">=": + return memberCount >= rhs; + default: + return false; + } + } + eventFulfillsDisplayNameCondition(cond, ev) { + var _room$currentState; + let content = ev.getContent(); + if (ev.isEncrypted() && ev.getClearContent()) { + content = ev.getClearContent(); + } + if (!content || !content.body || typeof content.body != "string") { + return false; + } + const room = this.client.getRoom(ev.getRoomId()); + const member = room === null || room === void 0 || (_room$currentState = room.currentState) === null || _room$currentState === void 0 ? void 0 : _room$currentState.getMember(this.client.credentials.userId); + if (!member) { + return false; + } + const displayName = member.name; + + // N.B. we can't use \b as it chokes on unicode. however \W seems to be okay + // as shorthand for [^0-9A-Za-z_]. + const pat = new RegExp("(^|\\W)" + (0, _utils.escapeRegExp)(displayName) + "(\\W|$)", "i"); + return content.body.search(pat) > -1; + } + + /** + * Check whether the given event matches the push rule condition by fetching + * the property from the event and comparing against the condition's glob-based + * pattern. + * @param cond - The push rule condition to check for a match. + * @param ev - The event to check for a match. + */ + eventFulfillsEventMatchCondition(cond, ev) { + if (!cond.key) { + return false; + } + const val = this.valueForDottedKey(cond.key, ev); + if (typeof val !== "string") { + return false; + } + + // XXX This does not match in a case-insensitive manner. + // + // See https://spec.matrix.org/v1.5/client-server-api/#conditions-1 + if (cond.value) { + return cond.value === val; + } + if (typeof cond.pattern !== "string") { + return false; + } + const regex = cond.key === "content.body" ? this.createCachedRegex("(^|\\W)", cond.pattern, "(\\W|$)") : this.createCachedRegex("^", cond.pattern, "$"); + return !!val.match(regex); + } + + /** + * Check whether the given event matches the push rule condition by fetching + * the property from the event and comparing exactly against the condition's + * value. + * @param cond - The push rule condition to check for a match. + * @param ev - The event to check for a match. + */ + eventFulfillsEventPropertyIsCondition(cond, ev) { + if (!cond.key || cond.value === undefined) { + return false; + } + return cond.value === this.valueForDottedKey(cond.key, ev); + } + + /** + * Check whether the given event matches the push rule condition by fetching + * the property from the event and comparing exactly against the condition's + * value. + * @param cond - The push rule condition to check for a match. + * @param ev - The event to check for a match. + */ + eventFulfillsEventPropertyContains(cond, ev) { + if (!cond.key || cond.value === undefined) { + return false; + } + const val = this.valueForDottedKey(cond.key, ev); + if (!Array.isArray(val)) { + return false; + } + return val.includes(cond.value); + } + eventFulfillsCallStartedCondition(_cond, ev) { + // Since servers don't support properly sending push notification + // about MSC3401 call events, we do the handling ourselves + return ["m.ring", "m.prompt"].includes(ev.getContent()["m.intent"]) && !("m.terminated" in ev.getContent()) && (ev.getPrevContent()["m.terminated"] !== ev.getContent()["m.terminated"] || (0, _utils.deepCompare)(ev.getPrevContent(), {})); + } + createCachedRegex(prefix, glob, suffix) { + if (PushProcessor.cachedGlobToRegex[glob]) { + return PushProcessor.cachedGlobToRegex[glob]; + } + PushProcessor.cachedGlobToRegex[glob] = new RegExp(prefix + (0, _utils.globToRegexp)(glob) + suffix, "i") // Case insensitive + ; + return PushProcessor.cachedGlobToRegex[glob]; + } + + /** + * Parse the key into the separate fields to search by splitting on + * unescaped ".", and then removing any escape characters. + * + * @param str - The key of the push rule condition: a dotted field. + * @returns The unescaped parts to fetch. + * @internal + */ + static partsForDottedKey(str) { + const result = []; + + // The current field and whether the previous character was the escape + // character (a backslash). + let part = ""; + let escaped = false; + + // Iterate over each character, and decide whether to append to the current + // part (following the escape rules) or to start a new part (based on the + // field separator). + for (const c of str) { + // If the previous character was the escape character (a backslash) + // then decide what to append to the current part. + if (escaped) { + if (c === "\\" || c === ".") { + // An escaped backslash or dot just gets added. + part += c; + } else { + // A character that shouldn't be escaped gets the backslash prepended. + part += "\\" + c; + } + // This always resets being escaped. + escaped = false; + continue; + } + if (c == ".") { + // The field separator creates a new part. + result.push(part); + part = ""; + } else if (c == "\\") { + // A backslash adds no characters, but starts an escape sequence. + escaped = true; + } else { + // Otherwise, just add the current character. + part += c; + } + } + + // Ensure the final part is included. If there's an open escape sequence + // it should be included. + if (escaped) { + part += "\\"; + } + result.push(part); + return result; + } + + /** + * For a dotted field and event, fetch the value at that position, if one + * exists. + * + * @param key - The key of the push rule condition: a dotted field to fetch. + * @param ev - The matrix event to fetch the field from. + * @returns The value at the dotted path given by key. + */ + valueForDottedKey(key, ev) { + // The key should already have been parsed via updateCachedPushRuleKeys, + // but if it hasn't (maybe via an old consumer of the SDK which hasn't + // been updated?) then lazily calculate it here. + let parts = this.parsedKeys.get(key); + if (parts === undefined) { + parts = PushProcessor.partsForDottedKey(key); + this.parsedKeys.set(key, parts); + } + let val; + + // special-case the first component to deal with encrypted messages + const firstPart = parts[0]; + let currentIndex = 0; + if (firstPart === "content") { + val = ev.getContent(); + ++currentIndex; + } else if (firstPart === "type") { + val = ev.getType(); + ++currentIndex; + } else { + // use the raw event for any other fields + val = ev.event; + } + for (; currentIndex < parts.length; ++currentIndex) { + // The previous iteration resulted in null or undefined, bail (and + // avoid the type error of attempting to retrieve a property). + if ((0, _utils.isNullOrUndefined)(val)) { + return undefined; + } + const thisPart = parts[currentIndex]; + val = val[thisPart]; + } + return val; + } + matchingRuleForEventWithRulesets(ev, rulesets) { + if (!rulesets) { + return null; + } + if (ev.getSender() === this.client.getSafeUserId()) { + return null; + } + return this.matchingRuleFromKindSet(ev, rulesets.global); + } + pushActionsForEventAndRulesets(ev, rulesets) { + const rule = this.matchingRuleForEventWithRulesets(ev, rulesets); + if (!rule) { + return {}; + } + const actionObj = PushProcessor.actionListToActionsObject(rule.actions); + + // Some actions are implicit in some situations: we add those here + if (actionObj.tweaks.highlight === undefined) { + // if it isn't specified, highlight if it's a content + // rule but otherwise not + actionObj.tweaks.highlight = rule.kind == _PushRules.PushRuleKind.ContentSpecific; + } + return { + actions: actionObj, + rule + }; + } + ruleMatchesEvent(rule, ev) { + var _rule$conditions; + // Disable the deprecated mentions push rules if the new mentions property exists. + if (this.client.supportsIntentionalMentions() && ev.getContent()["m.mentions"] !== undefined && (rule.rule_id === _PushRules.RuleId.ContainsUserName || rule.rule_id === _PushRules.RuleId.ContainsDisplayName || rule.rule_id === _PushRules.RuleId.AtRoomNotification)) { + return false; + } + return !((_rule$conditions = rule.conditions) !== null && _rule$conditions !== void 0 && _rule$conditions.some(cond => !this.eventFulfillsCondition(cond, ev))); + } + + /** + * Get the user's push actions for the given event + */ + actionsForEvent(ev) { + const { + actions + } = this.pushActionsForEventAndRulesets(ev, this.client.pushRules); + return actions || {}; + } + actionsAndRuleForEvent(ev) { + return this.pushActionsForEventAndRulesets(ev, this.client.pushRules); + } + + /** + * Get one of the users push rules by its ID + * + * @param ruleId - The ID of the rule to search for + * @returns The push rule, or null if no such rule was found + */ + getPushRuleById(ruleId) { + var _result$rule; + const result = this.getPushRuleAndKindById(ruleId); + return (_result$rule = result === null || result === void 0 ? void 0 : result.rule) !== null && _result$rule !== void 0 ? _result$rule : null; + } + + /** + * Get one of the users push rules by its ID + * + * @param ruleId - The ID of the rule to search for + * @returns rule The push rule, or null if no such rule was found + * @returns kind - The PushRuleKind of the rule to search for + */ + getPushRuleAndKindById(ruleId) { + for (const scope of ["global"]) { + var _this$client$pushRule; + if (((_this$client$pushRule = this.client.pushRules) === null || _this$client$pushRule === void 0 ? void 0 : _this$client$pushRule[scope]) === undefined) continue; + for (const kind of RULEKINDS_IN_ORDER) { + if (this.client.pushRules[scope][kind] === undefined) continue; + for (const rule of this.client.pushRules[scope][kind]) { + if (rule.rule_id === ruleId) return { + rule, + kind + }; + } + } + } + return null; + } +} +exports.PushProcessor = PushProcessor; +(0, _defineProperty2.default)(PushProcessor, "cachedGlobToRegex", {}); +//# sourceMappingURL=pushprocessor.js.map + +/***/ }), + +/***/ 2495: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.randomLowercaseString = randomLowercaseString; +exports.randomString = randomString; +exports.randomUppercaseString = randomUppercaseString; +exports.secureRandomBase64Url = secureRandomBase64Url; +var _base = __nccwpck_require__(7477); +var _crypto = __nccwpck_require__(8532); /* Copyright 2018 New Vector Ltd Copyright 2019 The Matrix.org Foundation C.I.C. @@ -59962,21 +177244,37 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -function randomString(len) { - let ret = ""; - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; +const LOWERCASE = "abcdefghijklmnopqrstuvwxyz"; +const UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +const DIGITS = "0123456789"; +function secureRandomBase64Url(len) { + const key = new Uint8Array(len); + _crypto.crypto.getRandomValues(key); + return (0, _base.encodeUnpaddedBase64Url)(key); +} +function randomString(len) { + return randomStringFrom(len, UPPERCASE + LOWERCASE + DIGITS); +} +function randomLowercaseString(len) { + return randomStringFrom(len, LOWERCASE); +} +function randomUppercaseString(len) { + return randomStringFrom(len, UPPERCASE); +} +function randomStringFrom(len, chars) { + let ret = ""; for (let i = 0; i < len; ++i) { ret += chars.charAt(Math.floor(Math.random() * chars.length)); } - return ret; } +//# sourceMappingURL=randomstring.js.map /***/ }), /***/ 5773: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -59984,12 +177282,9 @@ function randomString(len) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.setNow = setNow; -exports.setTimeout = setTimeout; exports.clearTimeout = clearTimeout; - -var _logger = __webpack_require__(3854); - +exports.setTimeout = setTimeout; +var _logger = __nccwpck_require__(3854); /* Copyright 2016 OpenMarket Ltd Copyright 2019 The Matrix.org Foundation C.I.C. @@ -60015,177 +177310,141 @@ limitations under the License. * In particular, if a timeout would have fired while the system was suspended, * it will instead fire as soon as possible after resume. */ + // we schedule a callback at least this often, to check if we've missed out on // some wall-clock time due to being suspended. -const TIMER_CHECK_PERIOD_MS = 1000; // counter, for making up ids to return from setTimeout +const TIMER_CHECK_PERIOD_MS = 1000; -let _count = 0; // the key for our callback with the real global.setTimeout +// counter, for making up ids to return from setTimeout +let count = 0; -let _realCallbackKey; // a sorted list of the callbacks to be run. +// the key for our callback with the real global.setTimeout +let realCallbackKey; +// a sorted list of the callbacks to be run. // each is an object with keys [runAt, func, params, key]. +const callbackList = []; +// var debuglog = logger.log.bind(logger); +/* istanbul ignore next */ +const debuglog = function (...params) {}; -const _callbackList = []; // var debuglog = logger.log.bind(logger); - -const debuglog = function () {}; -/** - * Replace the function used by this module to get the current time. - * - * Intended for use by the unit tests. - * - * @param {function} [f] function which should return a millisecond counter - * - * @internal - */ - - -function setNow(f) { - _now = f || Date.now; -} - -let _now = Date.now; /** * reimplementation of window.setTimeout, which will call the callback if * the wallclock time goes past the deadline. * - * @param {function} func callback to be called after a delay - * @param {Number} delayMs number of milliseconds to delay by + * @param func - callback to be called after a delay + * @param delayMs - number of milliseconds to delay by * - * @return {Number} an identifier for this callback, which may be passed into + * @returns an identifier for this callback, which may be passed into * clearTimeout later. */ - -function setTimeout(func, delayMs) { +function setTimeout(func, delayMs, ...params) { delayMs = delayMs || 0; - if (delayMs < 0) { delayMs = 0; } - - const params = Array.prototype.slice.call(arguments, 2); - const runAt = _now() + delayMs; - const key = _count++; + const runAt = Date.now() + delayMs; + const key = count++; debuglog("setTimeout: scheduling cb", key, "at", runAt, "(delay", delayMs, ")"); const data = { runAt: runAt, func: func, params: params, key: key - }; // figure out where it goes in the list + }; - const idx = binarySearch(_callbackList, function (el) { + // figure out where it goes in the list + const idx = binarySearch(callbackList, function (el) { return el.runAt - runAt; }); - - _callbackList.splice(idx, 0, data); - - _scheduleRealCallback(); - + callbackList.splice(idx, 0, data); + scheduleRealCallback(); return key; } + /** * reimplementation of window.clearTimeout, which mirrors setTimeout * - * @param {Number} key result from an earlier setTimeout call + * @param key - result from an earlier setTimeout call */ - - function clearTimeout(key) { - if (_callbackList.length === 0) { + if (callbackList.length === 0) { return; - } // remove the element from the list - + } + // remove the element from the list let i; - - for (i = 0; i < _callbackList.length; i++) { - const cb = _callbackList[i]; - + for (i = 0; i < callbackList.length; i++) { + const cb = callbackList[i]; if (cb.key == key) { - _callbackList.splice(i, 1); - + callbackList.splice(i, 1); break; } - } // iff it was the first one in the list, reschedule our callback. - + } + // iff it was the first one in the list, reschedule our callback. if (i === 0) { - _scheduleRealCallback(); + scheduleRealCallback(); } -} // use the real global.setTimeout to schedule a callback to _runCallbacks. - - -function _scheduleRealCallback() { - if (_realCallbackKey) { - global.clearTimeout(_realCallbackKey); - } - - const first = _callbackList[0]; - - if (!first) { - debuglog("_scheduleRealCallback: no more callbacks, not rescheduling"); - return; - } - - const now = _now(); - - const delayMs = Math.min(first.runAt - now, TIMER_CHECK_PERIOD_MS); - debuglog("_scheduleRealCallback: now:", now, "delay:", delayMs); - _realCallbackKey = global.setTimeout(_runCallbacks, delayMs); } -function _runCallbacks() { - let cb; - - const now = _now(); - - debuglog("_runCallbacks: now:", now); // get the list of things to call +// use the real global.setTimeout to schedule a callback to runCallbacks. +function scheduleRealCallback() { + if (realCallbackKey) { + global.clearTimeout(realCallbackKey); + } + const first = callbackList[0]; + if (!first) { + debuglog("scheduleRealCallback: no more callbacks, not rescheduling"); + return; + } + const timestamp = Date.now(); + const delayMs = Math.min(first.runAt - timestamp, TIMER_CHECK_PERIOD_MS); + debuglog("scheduleRealCallback: now:", timestamp, "delay:", delayMs); + realCallbackKey = global.setTimeout(runCallbacks, delayMs); +} +function runCallbacks() { + const timestamp = Date.now(); + debuglog("runCallbacks: now:", timestamp); + // get the list of things to call const callbacksToRun = []; - + // eslint-disable-next-line while (true) { - const first = _callbackList[0]; - - if (!first || first.runAt > now) { + const first = callbackList[0]; + if (!first || first.runAt > timestamp) { break; } - - cb = _callbackList.shift(); - debuglog("_runCallbacks: popping", cb.key); + const cb = callbackList.shift(); + debuglog("runCallbacks: popping", cb.key); callbacksToRun.push(cb); - } // reschedule the real callback before running our functions, to + } + + // reschedule the real callback before running our functions, to // keep the codepaths the same whether or not our functions // register their own setTimeouts. - - - _scheduleRealCallback(); - - for (let i = 0; i < callbacksToRun.length; i++) { - cb = callbacksToRun[i]; - + scheduleRealCallback(); + for (const cb of callbacksToRun) { try { cb.func.apply(global, cb.params); } catch (e) { - _logger.logger.error("Uncaught exception in callback function", e.stack || e); + _logger.logger.error("Uncaught exception in callback function", e); } } } + /* search in a sorted array. * * returns the index of the last element for which func returns * greater than zero, or array.length if no such element exists. */ - - function binarySearch(array, func) { // min is inclusive, max exclusive. let min = 0; let max = array.length; - while (min < max) { const mid = min + max >> 1; const res = func(array[mid]); - if (res > 0) { // the element at 'mid' is too big; set it as the new max. max = mid; @@ -60193,34 +177452,5522 @@ function binarySearch(array, func) { // the element at 'mid' is too small. 'min' is inclusive, so +1. min = mid + 1; } - } // presumably, min==max now. - - + } + // presumably, min==max now. return min; } +//# sourceMappingURL=realtime-callbacks.js.map /***/ }), -/***/ 8314: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 7953: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ReceiptAccumulator = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _event = __nccwpck_require__(7487); +var _utils = __nccwpck_require__(2557); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Summarises the read receipts within a room. Used by the sync accumulator. + * + * Given receipts for users, picks the most recently-received one and provides + * the results in a new fake receipt event returned from + * buildAccumulatedReceiptEvent(). + * + * Handles unthreaded receipts and receipts in each thread separately, so the + * returned event contains the most recently received unthreaded receipt, and + * the most recently received receipt in each thread. + */ +class ReceiptAccumulator { + constructor() { + /** user_id -\> most-recently-received unthreaded receipt */ + (0, _defineProperty2.default)(this, "unthreadedReadReceipts", new Map()); + /** thread_id -\> user_id -\> most-recently-received receipt for this thread */ + (0, _defineProperty2.default)(this, "threadedReadReceipts", new _utils.MapWithDefault(() => new Map())); + } + /** + * Provide an unthreaded receipt for this user. Overwrites any other + * unthreaded receipt we have for this user. + */ + setUnthreaded(userId, receipt) { + this.unthreadedReadReceipts.set(userId, receipt); + } + + /** + * Provide a receipt for this user in this thread. Overwrites any other + * receipt we have for this user in this thread. + */ + setThreaded(threadId, userId, receipt) { + this.threadedReadReceipts.getOrCreate(threadId).set(userId, receipt); + } + + /** + * @returns an iterator of pairs of [userId, AccumulatedReceipt] - all the + * most recently-received unthreaded receipts for each user. + */ + allUnthreaded() { + return this.unthreadedReadReceipts.entries(); + } + + /** + * @returns an iterator of pairs of [userId, AccumulatedReceipt] - all the + * most recently-received threaded receipts for each user, in all + * threads. + */ + *allThreaded() { + for (const receiptsForThread of this.threadedReadReceipts.values()) { + for (const e of receiptsForThread.entries()) { + yield e; + } + } + } + + /** + * Given a list of ephemeral events, find the receipts and store the + * relevant ones to be returned later from buildAccumulatedReceiptEvent(). + */ + consumeEphemeralEvents(events) { + events === null || events === void 0 || events.forEach(e => { + if (e.type !== _event.EventType.Receipt || !e.content) { + // This means we'll drop unknown ephemeral events but that + // seems okay. + return; + } + + // Handle m.receipt events. They clobber based on: + // (user_id, receipt_type) + // but they are keyed in the event as: + // content:{ $event_id: { $receipt_type: { $user_id: {json} }}} + // so store them in the former so we can accumulate receipt deltas + // quickly and efficiently (we expect a lot of them). Fold the + // receipt type into the key name since we only have 1 at the + // moment (m.read) and nested JSON objects are slower and more + // of a hassle to work with. We'll inflate this back out when + // getJSON() is called. + Object.keys(e.content).forEach(eventId => { + Object.entries(e.content[eventId]).forEach(([key, value]) => { + if (!(0, _utils.isSupportedReceiptType)(key)) return; + for (const userId of Object.keys(value)) { + const data = e.content[eventId][key][userId]; + const receipt = { + data: e.content[eventId][key][userId], + type: key, + eventId + }; + + // In a world that supports threads, read receipts normally have + // a `thread_id` which is either the thread they belong in or + // `MAIN_ROOM_TIMELINE`, so we normally use `setThreaded(...)` + // here. The `MAIN_ROOM_TIMELINE` is just treated as another + // thread. + // + // We still encounter read receipts that are "unthreaded" + // (missing the `thread_id` property). These come from clients + // that don't support threads, and from threaded clients that + // are doing a "Mark room as read" operation. Unthreaded + // receipts mark everything "before" them as read, in all + // threads, where "before" means in Sync Order i.e. the order + // the events were received from the homeserver in a sync. + // [Note: we have some bugs where we use timestamp order instead + // of Sync Order, because we don't correctly remember the Sync + // Order. See #3325.] + // + // Calling the wrong method will cause incorrect behavior like + // messages re-appearing as "new" when you already read them + // previously. + if (!data.thread_id) { + this.setUnthreaded(userId, receipt); + } else { + this.setThreaded(data.thread_id, userId, receipt); + } + } + }); + }); + }); + } + + /** + * Build a receipt event that contains all relevant information for this + * room, taking the most recently received receipt for each user in an + * unthreaded context, and in each thread. + */ + buildAccumulatedReceiptEvent(roomId) { + const receiptEvent = { + type: _event.EventType.Receipt, + room_id: roomId, + content: { + // $event_id: { "m.read": { $user_id: $json } } + } + }; + const receiptEventContent = new _utils.MapWithDefault(() => new _utils.MapWithDefault(() => new Map())); + for (const [userId, receiptData] of this.allUnthreaded()) { + receiptEventContent.getOrCreate(receiptData.eventId).getOrCreate(receiptData.type).set(userId, receiptData.data); + } + for (const [userId, receiptData] of this.allThreaded()) { + receiptEventContent.getOrCreate(receiptData.eventId).getOrCreate(receiptData.type).set(userId, receiptData.data); + } + receiptEvent.content = (0, _utils.recursiveMapToObject)(receiptEventContent); + return receiptEventContent.size > 0 ? receiptEvent : null; + } +} +exports.ReceiptAccumulator = ReceiptAccumulator; +//# sourceMappingURL=receipt-accumulator.js.map + +/***/ }), + +/***/ 7626: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.MatrixScheduler = MatrixScheduler; - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _logger = __webpack_require__(3854); - +exports.CrossSigningIdentity = void 0; +var _logger = __nccwpck_require__(3854); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** Manages the cross-signing keys for our own user. + * + * @internal + */ +class CrossSigningIdentity { + constructor(olmMachine, outgoingRequestProcessor, secretStorage) { + this.olmMachine = olmMachine; + this.outgoingRequestProcessor = outgoingRequestProcessor; + this.secretStorage = secretStorage; + } + + /** + * Initialise our cross-signing keys by creating new keys if they do not exist, and uploading to the server + */ + async bootstrapCrossSigning(opts) { + if (opts.setupNewCrossSigning) { + await this.resetCrossSigning(opts.authUploadDeviceSigningKeys); + return; + } + const olmDeviceStatus = await this.olmMachine.crossSigningStatus(); + + // Try to fetch cross signing keys from the secret storage + const masterKeyFromSecretStorage = await this.secretStorage.get("m.cross_signing.master"); + const selfSigningKeyFromSecretStorage = await this.secretStorage.get("m.cross_signing.self_signing"); + const userSigningKeyFromSecretStorage = await this.secretStorage.get("m.cross_signing.user_signing"); + const privateKeysInSecretStorage = Boolean(masterKeyFromSecretStorage && selfSigningKeyFromSecretStorage && userSigningKeyFromSecretStorage); + const olmDeviceHasKeys = olmDeviceStatus.hasMaster && olmDeviceStatus.hasUserSigning && olmDeviceStatus.hasSelfSigning; + + // Log all relevant state for easier parsing of debug logs. + _logger.logger.log("bootstrapCrossSigning: starting", { + setupNewCrossSigning: opts.setupNewCrossSigning, + olmDeviceHasMaster: olmDeviceStatus.hasMaster, + olmDeviceHasUserSigning: olmDeviceStatus.hasUserSigning, + olmDeviceHasSelfSigning: olmDeviceStatus.hasSelfSigning, + privateKeysInSecretStorage + }); + if (olmDeviceHasKeys) { + if (!(await this.secretStorage.hasKey())) { + _logger.logger.warn("bootstrapCrossSigning: Olm device has private keys, but secret storage is not yet set up; doing nothing for now."); + // the keys should get uploaded to 4S once that is set up. + } else if (!privateKeysInSecretStorage) { + // the device has the keys but they are not in 4S, so update it + _logger.logger.log("bootstrapCrossSigning: Olm device has private keys: exporting to secret storage"); + await this.exportCrossSigningKeysToStorage(); + } else { + _logger.logger.log("bootstrapCrossSigning: Olm device has private keys and they are saved in secret storage; doing nothing"); + } + } /* (!olmDeviceHasKeys) */else { + if (privateKeysInSecretStorage) { + // they are in 4S, so import from there + _logger.logger.log("bootstrapCrossSigning: Cross-signing private keys not found locally, but they are available " + "in secret storage, reading storage and caching locally"); + await this.olmMachine.importCrossSigningKeys(masterKeyFromSecretStorage, selfSigningKeyFromSecretStorage, userSigningKeyFromSecretStorage); + + // Get the current device + const device = await this.olmMachine.getDevice(this.olmMachine.userId, this.olmMachine.deviceId); + try { + // Sign the device with our cross-signing key and upload the signature + const request = await device.verify(); + await this.outgoingRequestProcessor.makeOutgoingRequest(request); + } finally { + device.free(); + } + } else { + _logger.logger.log("bootstrapCrossSigning: Cross-signing private keys not found locally or in secret storage, creating new keys"); + await this.resetCrossSigning(opts.authUploadDeviceSigningKeys); + } + } + + // TODO: we might previously have bootstrapped cross-signing but not completed uploading the keys to the + // server -- in which case we should call OlmDevice.bootstrap_cross_signing. How do we know? + _logger.logger.log("bootstrapCrossSigning: complete"); + } + + /** Reset our cross-signing keys + * + * This method will: + * * Tell the OlmMachine to create new keys + * * Upload the new public keys and the device signature to the server + * * Upload the private keys to SSSS, if it is set up + */ + async resetCrossSigning(authUploadDeviceSigningKeys) { + // XXX: We must find a way to make this atomic, currently if the user does not remember his account password + // or 4S passphrase/key the process will fail in a bad state, with keys rotated but not uploaded or saved in 4S. + const outgoingRequests = await this.olmMachine.bootstrapCrossSigning(true); + + // If 4S is configured we need to update it. + if (!(await this.secretStorage.hasKey())) { + _logger.logger.warn("resetCrossSigning: Secret storage is not yet set up; not exporting keys to secret storage yet."); + // the keys should get uploaded to 4S once that is set up. + } else { + // Update 4S before uploading cross-signing keys, to stay consistent with legacy that asks + // 4S passphrase before asking for account password. + // Ultimately should be made atomic and resistant to forgotten password/passphrase. + _logger.logger.log("resetCrossSigning: exporting to secret storage"); + await this.exportCrossSigningKeysToStorage(); + } + _logger.logger.log("resetCrossSigning: publishing keys to server"); + for (const req of [outgoingRequests.uploadKeysRequest, outgoingRequests.uploadSigningKeysRequest, outgoingRequests.uploadSignaturesRequest]) { + if (req) { + await this.outgoingRequestProcessor.makeOutgoingRequest(req, authUploadDeviceSigningKeys); + } + } + } + + /** + * Extract the cross-signing keys from the olm machine and save them to secret storage, if it is configured + * + * (If secret storage is *not* configured, we assume that the export will happen when it is set up) + */ + async exportCrossSigningKeysToStorage() { + const exported = await this.olmMachine.exportCrossSigningKeys(); + /* istanbul ignore else (this function is only called when we know the olm machine has keys) */ + if (exported !== null && exported !== void 0 && exported.masterKey) { + await this.secretStorage.store("m.cross_signing.master", exported.masterKey); + } else { + _logger.logger.error(`Cannot export MSK to secret storage, private key unknown`); + } + if (exported !== null && exported !== void 0 && exported.self_signing_key) { + await this.secretStorage.store("m.cross_signing.self_signing", exported.self_signing_key); + } else { + _logger.logger.error(`Cannot export SSK to secret storage, private key unknown`); + } + if (exported !== null && exported !== void 0 && exported.userSigningKey) { + await this.secretStorage.store("m.cross_signing.user_signing", exported.userSigningKey); + } else { + _logger.logger.error(`Cannot export USK to secret storage, private key unknown`); + } + } +} +exports.CrossSigningIdentity = CrossSigningIdentity; +//# sourceMappingURL=CrossSigningIdentity.js.map + +/***/ }), + +/***/ 3151: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UnstablePrefix = exports.DehydratedDeviceManager = void 0; +var RustSdkCryptoJs = _interopRequireWildcard(__nccwpck_require__(4822)); +var _utils = __nccwpck_require__(2557); +var _httpApi = __nccwpck_require__(7082); +var _crypto = __nccwpck_require__(8532); +var _base = __nccwpck_require__(7477); +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; } +/* +Copyright 2024 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * The response body of `GET /_matrix/client/unstable/org.matrix.msc3814.v1/dehydrated_device`. + */ + +/** + * The response body of `POST /_matrix/client/unstable/org.matrix.msc3814.v1/dehydrated_device/events`. + */ + +/** + * The unstable URL prefix for dehydrated device endpoints + */ +const UnstablePrefix = exports.UnstablePrefix = "/_matrix/client/unstable/org.matrix.msc3814.v1"; +/** + * The name used for the dehydration key in Secret Storage + */ +const SECRET_STORAGE_NAME = "org.matrix.msc3814"; + +/** + * The interval between creating dehydrated devices. (one week) + */ +const DEHYDRATION_INTERVAL = 7 * 24 * 60 * 60 * 1000; + +/** + * Manages dehydrated devices + * + * We have one of these per `RustCrypto`. It's responsible for + * + * * determining server support for dehydrated devices + * * creating new dehydrated devices when requested, including periodically + * replacing the dehydrated device with a new one + * * rehydrating a device when requested, and when present + * + * @internal + */ +class DehydratedDeviceManager { + /** the secret key used for dehydrating and rehydrating */ + + /** the ID of the interval for periodically replacing the dehydrated device */ + + constructor(logger, olmMachine, http, outgoingRequestProcessor, secretStorage) { + this.logger = logger; + this.olmMachine = olmMachine; + this.http = http; + this.outgoingRequestProcessor = outgoingRequestProcessor; + this.secretStorage = secretStorage; + } + + /** + * Return whether the server supports dehydrated devices. + */ + async isSupported() { + // call the endpoint to get a dehydrated device. If it returns an + // M_UNRECOGNIZED error, then dehydration is unsupported. If it returns + // a successful response, or an M_NOT_FOUND, then dehydration is supported. + // Any other exceptions are passed through. + try { + await this.http.authedRequest(_httpApi.Method.Get, "/dehydrated_device", undefined, undefined, { + prefix: UnstablePrefix + }); + } catch (error) { + const err = error; + if (err.errcode === "M_UNRECOGNIZED") { + return false; + } else if (err.errcode === "M_NOT_FOUND") { + return true; + } + throw error; + } + return true; + } + + /** + * Start using device dehydration. + * + * - Rehydrates a dehydrated device, if one is available. + * - Creates a new dehydration key, if necessary, and stores it in Secret + * Storage. + * - If `createNewKey` is set to true, always creates a new key. + * - If a dehydration key is not available, creates a new one. + * - Creates a new dehydrated device, and schedules periodically creating + * new dehydrated devices. + * + * @param createNewKey - whether to force creation of a new dehydration key. + * This can be used, for example, if Secret Storage is being reset. + */ + async start(createNewKey) { + this.stop(); + try { + await this.rehydrateDeviceIfAvailable(); + } catch (e) { + // If rehydration fails, there isn't much we can do about it. Log + // the error, and create a new device. + this.logger.info("dehydration: Error rehydrating device:", e); + } + if (createNewKey) { + await this.resetKey(); + } + await this.scheduleDeviceDehydration(); + } + + /** + * Return whether the dehydration key is stored in Secret Storage. + */ + async isKeyStored() { + return Boolean(await this.secretStorage.isStored(SECRET_STORAGE_NAME)); + } + + /** + * Reset the dehydration key. + * + * Creates a new key and stores it in secret storage. + */ + async resetKey() { + const key = new Uint8Array(32); + _crypto.crypto.getRandomValues(key); + await this.secretStorage.store(SECRET_STORAGE_NAME, (0, _base.encodeUnpaddedBase64)(key)); + this.key = key; + } + + /** + * Get and cache the encryption key from secret storage. + * + * If `create` is `true`, creates a new key if no existing key is present. + * + * @returns the key, if available, or `null` if no key is available + */ + async getKey(create) { + if (this.key === undefined) { + const keyB64 = await this.secretStorage.get(SECRET_STORAGE_NAME); + if (keyB64 === undefined) { + if (!create) { + return null; + } + await this.resetKey(); + } else { + this.key = (0, _base.decodeBase64)(keyB64); + } + } + return this.key; + } + + /** + * Rehydrate the dehydrated device stored on the server. + * + * Checks if there is a dehydrated device on the server. If so, rehydrates + * the device and processes the to-device events. + * + * Returns whether or not a dehydrated device was found. + */ + async rehydrateDeviceIfAvailable() { + const key = await this.getKey(false); + if (!key) { + return false; + } + let dehydratedDeviceResp; + try { + dehydratedDeviceResp = await this.http.authedRequest(_httpApi.Method.Get, "/dehydrated_device", undefined, undefined, { + prefix: UnstablePrefix + }); + } catch (error) { + const err = error; + // We ignore M_NOT_FOUND (there is no dehydrated device, so nothing + // us to do) and M_UNRECOGNIZED (the server does not understand the + // endpoint). We pass through any other errors. + if (err.errcode === "M_NOT_FOUND" || err.errcode === "M_UNRECOGNIZED") { + this.logger.info("dehydration: No dehydrated device"); + return false; + } + throw err; + } + this.logger.info("dehydration: dehydrated device found"); + const rehydratedDevice = await this.olmMachine.dehydratedDevices().rehydrate(key, new RustSdkCryptoJs.DeviceId(dehydratedDeviceResp.device_id), JSON.stringify(dehydratedDeviceResp.device_data)); + this.logger.info("dehydration: device rehydrated"); + let nextBatch = undefined; + let toDeviceCount = 0; + let roomKeyCount = 0; + const path = (0, _utils.encodeUri)("/dehydrated_device/$device_id/events", { + $device_id: dehydratedDeviceResp.device_id + }); + // eslint-disable-next-line no-constant-condition + while (true) { + const eventResp = await this.http.authedRequest(_httpApi.Method.Post, path, undefined, nextBatch ? { + next_batch: nextBatch + } : {}, { + prefix: UnstablePrefix + }); + if (eventResp.events.length === 0) { + break; + } + toDeviceCount += eventResp.events.length; + nextBatch = eventResp.next_batch; + const roomKeyInfos = await rehydratedDevice.receiveEvents(JSON.stringify(eventResp.events)); + roomKeyCount += roomKeyInfos.length; + } + this.logger.info(`dehydration: received ${roomKeyCount} room keys from ${toDeviceCount} to-device events`); + return true; + } + + /** + * Creates and uploads a new dehydrated device. + * + * Creates and stores a new key in secret storage if none is available. + */ + async createAndUploadDehydratedDevice() { + const key = await this.getKey(true); + const dehydratedDevice = await this.olmMachine.dehydratedDevices().create(); + const request = await dehydratedDevice.keysForUpload("Dehydrated device", key); + await this.outgoingRequestProcessor.makeOutgoingRequest(request); + this.logger.info("dehydration: uploaded device"); + } + + /** + * Schedule periodic creation of dehydrated devices. + */ + async scheduleDeviceDehydration() { + // cancel any previously-scheduled tasks + this.stop(); + await this.createAndUploadDehydratedDevice(); + this.intervalId = setInterval(() => { + this.createAndUploadDehydratedDevice().catch(error => { + this.logger.error("Error creating dehydrated device:", error); + }); + }, DEHYDRATION_INTERVAL); + } + + /** + * Stop the dehydrated device manager. + * + * Cancels any scheduled dehydration tasks. + */ + stop() { + if (this.intervalId) { + clearInterval(this.intervalId); + this.intervalId = undefined; + } + } +} +exports.DehydratedDeviceManager = DehydratedDeviceManager; +//# sourceMappingURL=DehydratedDeviceManager.js.map + +/***/ }), + +/***/ 5968: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.KeyClaimManager = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * KeyClaimManager: linearises calls to OlmMachine.getMissingSessions to avoid races + * + * We have one of these per `RustCrypto` (and hence per `MatrixClient`). + * + * @internal + */ +class KeyClaimManager { + constructor(olmMachine, outgoingRequestProcessor) { + (0, _defineProperty2.default)(this, "stopped", false); + this.olmMachine = olmMachine; + this.outgoingRequestProcessor = outgoingRequestProcessor; + this.currentClaimPromise = Promise.resolve(); + } + + /** + * Tell the KeyClaimManager to immediately stop processing requests. + * + * Any further calls, and any still in the queue, will fail with an error. + */ + stop() { + this.stopped = true; + } + + /** + * Given a list of users, attempt to ensure that we have Olm Sessions active with each of their devices + * + * If we don't have an active olm session, we will claim a one-time key and start one. + * + * @param userList - list of userIDs to claim + */ + ensureSessionsForUsers(logger, userList) { + // The Rust-SDK requires that we only have one getMissingSessions process in flight at once. This little dance + // ensures that, by only having one call to ensureSessionsForUsersInner active at once (and making them + // queue up in order). + const prom = this.currentClaimPromise.catch(() => { + // any errors in the previous claim will have been reported already, so there is nothing to do here. + // we just throw away the error and start anew. + }).then(() => this.ensureSessionsForUsersInner(logger, userList)); + this.currentClaimPromise = prom; + return prom; + } + async ensureSessionsForUsersInner(logger, userList) { + // bail out quickly if we've been stopped. + if (this.stopped) { + throw new Error(`Cannot ensure Olm sessions: shutting down`); + } + logger.info("Checking for missing Olm sessions"); + // By passing the userId array to rust we transfer ownership of the items to rust, causing + // them to be invalidated on the JS side as soon as the method is called. + // As we haven't created the `userList` let's clone the users, to not break the caller from re-using it. + const claimRequest = await this.olmMachine.getMissingSessions(userList.map(u => u.clone())); + if (claimRequest) { + logger.info("Making /keys/claim request"); + await this.outgoingRequestProcessor.makeOutgoingRequest(claimRequest); + } + logger.info("Olm sessions prepared"); + } +} +exports.KeyClaimManager = KeyClaimManager; +//# sourceMappingURL=KeyClaimManager.js.map + +/***/ }), + +/***/ 4848: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OutgoingRequestProcessor = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _matrixSdkCryptoWasm = __nccwpck_require__(4822); +var _logger = __nccwpck_require__(3854); +var _httpApi = __nccwpck_require__(7082); +var _utils = __nccwpck_require__(2557); +var _event = __nccwpck_require__(7487); +var _DehydratedDeviceManager = __nccwpck_require__(3151); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * Common interface for all the request types returned by `OlmMachine.outgoingRequests`. + * + * @internal + */ + +/** + * OutgoingRequestManager: turns `OutgoingRequest`s from the rust sdk into HTTP requests + * + * We have one of these per `RustCrypto` (and hence per `MatrixClient`), not that it does anything terribly complicated. + * It's responsible for: + * + * * holding the reference to the `MatrixHttpApi` + * * turning `OutgoingRequest`s from the rust backend into HTTP requests, and sending them + * * sending the results of such requests back to the rust backend. + * + * @internal + */ +class OutgoingRequestProcessor { + constructor(olmMachine, http) { + this.olmMachine = olmMachine; + this.http = http; + } + async makeOutgoingRequest(msg, uiaCallback) { + let resp; + + /* refer https://docs.rs/matrix-sdk-crypto/0.6.0/matrix_sdk_crypto/requests/enum.OutgoingRequests.html + * for the complete list of request types + */ + if (msg instanceof _matrixSdkCryptoWasm.KeysUploadRequest) { + resp = await this.requestWithRetry(_httpApi.Method.Post, "/_matrix/client/v3/keys/upload", {}, msg.body); + } else if (msg instanceof _matrixSdkCryptoWasm.KeysQueryRequest) { + resp = await this.requestWithRetry(_httpApi.Method.Post, "/_matrix/client/v3/keys/query", {}, msg.body); + } else if (msg instanceof _matrixSdkCryptoWasm.KeysClaimRequest) { + resp = await this.requestWithRetry(_httpApi.Method.Post, "/_matrix/client/v3/keys/claim", {}, msg.body); + } else if (msg instanceof _matrixSdkCryptoWasm.SignatureUploadRequest) { + resp = await this.requestWithRetry(_httpApi.Method.Post, "/_matrix/client/v3/keys/signatures/upload", {}, msg.body); + } else if (msg instanceof _matrixSdkCryptoWasm.KeysBackupRequest) { + resp = await this.requestWithRetry(_httpApi.Method.Put, "/_matrix/client/v3/room_keys/keys", { + version: msg.version + }, msg.body); + } else if (msg instanceof _matrixSdkCryptoWasm.ToDeviceRequest) { + resp = await this.sendToDeviceRequest(msg); + } else if (msg instanceof _matrixSdkCryptoWasm.RoomMessageRequest) { + const path = `/_matrix/client/v3/rooms/${encodeURIComponent(msg.room_id)}/send/` + `${encodeURIComponent(msg.event_type)}/${encodeURIComponent(msg.txn_id)}`; + resp = await this.requestWithRetry(_httpApi.Method.Put, path, {}, msg.body); + } else if (msg instanceof _matrixSdkCryptoWasm.UploadSigningKeysRequest) { + await this.makeRequestWithUIA(_httpApi.Method.Post, "/_matrix/client/v3/keys/device_signing/upload", {}, msg.body, uiaCallback); + // SigningKeysUploadRequest does not implement OutgoingRequest and does not need to be marked as sent. + return; + } else if (msg instanceof _matrixSdkCryptoWasm.PutDehydratedDeviceRequest) { + const path = _DehydratedDeviceManager.UnstablePrefix + "/dehydrated_device"; + await this.rawJsonRequest(_httpApi.Method.Put, path, {}, msg.body); + // PutDehydratedDeviceRequest does not implement OutgoingRequest and does not need to be marked as sent. + return; + } else { + _logger.logger.warn("Unsupported outgoing message", Object.getPrototypeOf(msg)); + resp = ""; + } + if (msg.id) { + try { + await (0, _utils.logDuration)(_logger.logger, `Mark Request as sent ${msg.type}`, async () => { + await this.olmMachine.markRequestAsSent(msg.id, msg.type, resp); + }); + } catch (e) { + // Ignore errors which are caused by the olmMachine having been freed. The exact error message depends + // on whether we are using a release or develop build of rust-sdk-crypto-wasm. + if (e instanceof Error && (e.message === "Attempt to use a moved value" || e.message === "null pointer passed to rust")) { + _logger.logger.log(`Ignoring error '${e.message}': client is likely shutting down`); + } else { + throw e; + } + } + } else { + _logger.logger.trace(`Outgoing request type:${msg.type} does not have an ID`); + } + } + + /** + * Send the HTTP request for a `ToDeviceRequest` + * + * @param request - request to send + * @returns JSON-serialized body of the response, if successful + */ + async sendToDeviceRequest(request) { + // a bit of extra logging, to help trace to-device messages through the system + const parsedBody = JSON.parse(request.body); + const messageList = []; + for (const [userId, perUserMessages] of Object.entries(parsedBody.messages)) { + for (const [deviceId, message] of Object.entries(perUserMessages)) { + messageList.push(`${userId}/${deviceId} (msgid ${message[_event.ToDeviceMessageId]})`); + } + } + _logger.logger.info(`Sending batch of to-device messages. type=${request.event_type} txnid=${request.txn_id}`, messageList); + const path = `/_matrix/client/v3/sendToDevice/${encodeURIComponent(request.event_type)}/` + encodeURIComponent(request.txn_id); + return await this.requestWithRetry(_httpApi.Method.Put, path, {}, request.body); + } + async makeRequestWithUIA(method, path, queryParams, body, uiaCallback) { + if (!uiaCallback) { + return await this.requestWithRetry(method, path, queryParams, body); + } + const parsedBody = JSON.parse(body); + const makeRequest = async auth => { + const newBody = _objectSpread({}, parsedBody); + if (auth !== null) { + newBody.auth = auth; + } + const resp = await this.requestWithRetry(method, path, queryParams, JSON.stringify(newBody)); + return JSON.parse(resp); + }; + const resp = await uiaCallback(makeRequest); + return JSON.stringify(resp); + } + async requestWithRetry(method, path, queryParams, body) { + let currentRetryCount = 0; + + // eslint-disable-next-line no-constant-condition + while (true) { + try { + return await this.rawJsonRequest(method, path, queryParams, body); + } catch (e) { + currentRetryCount++; + const backoff = (0, _httpApi.calculateRetryBackoff)(e, currentRetryCount, true); + if (backoff < 0) { + // Max number of retries reached, or error is not retryable. rethrow the error + throw e; + } + // wait for the specified time and then retry the request + await (0, _utils.sleep)(backoff); + } + } + } + async rawJsonRequest(method, path, queryParams, body) { + const opts = { + // inhibit the JSON stringification and parsing within HttpApi. + json: false, + // nevertheless, we are sending, and accept, JSON. + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + }, + // we use the full prefix + prefix: "" + }; + return await this.http.authedRequest(method, path, queryParams, body, opts); + } +} +exports.OutgoingRequestProcessor = OutgoingRequestProcessor; +//# sourceMappingURL=OutgoingRequestProcessor.js.map + +/***/ }), + +/***/ 7825: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OutgoingRequestsManager = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _utils = __nccwpck_require__(2557); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * OutgoingRequestsManager: responsible for processing outgoing requests from the OlmMachine. + * Ensure that only one loop is going on at once, and that the requests are processed in order. + */ +class OutgoingRequestsManager { + /** + * If there are additional calls to doProcessOutgoingRequests() while there is a current call running + * we need to remember in order to call `doProcessOutgoingRequests` again (as there could be new requests). + * + * If this is defined, it is an indication that we need to do another iteration; in this case the deferred + * will resolve once that next iteration completes. If it is undefined, there have been no new calls + * to `doProcessOutgoingRequests` since the current iteration started. + */ + + constructor(logger, olmMachine, outgoingRequestProcessor) { + /** whether {@link stop} has been called */ + (0, _defineProperty2.default)(this, "stopped", false); + /** whether {@link outgoingRequestLoop} is currently running */ + (0, _defineProperty2.default)(this, "outgoingRequestLoopRunning", false); + this.logger = logger; + this.olmMachine = olmMachine; + this.outgoingRequestProcessor = outgoingRequestProcessor; + } + + /** + * Shut down as soon as possible the current loop of outgoing requests processing. + */ + stop() { + this.stopped = true; + } + + /** + * Process the OutgoingRequests from the OlmMachine. + * + * This should be called at the end of each sync, to process any OlmMachine OutgoingRequests created by the rust sdk. + * In some cases if OutgoingRequests need to be sent immediately, this can be called directly. + * + * Calls to doProcessOutgoingRequests() are processed synchronously, one after the other, in order. + * If doProcessOutgoingRequests() is called while another call is still being processed, it will be queued. + * Multiple calls to doProcessOutgoingRequests() when a call is already processing will be batched together. + */ + doProcessOutgoingRequests() { + // Flag that we need at least one more iteration of the loop. + // + // It is important that we do this even if the loop is currently running. There is potential for a race whereby + // a request is added to the queue *after* `OlmMachine.outgoingRequests` checks the queue, but *before* it + // returns. In such a case, the item could sit there unnoticed for some time. + // + // In order to circumvent the race, we set a flag which tells the loop to go round once again even if the + // queue appears to be empty. + if (!this.nextLoopDeferred) { + this.nextLoopDeferred = (0, _utils.defer)(); + } + + // ... and wait for it to complete. + const result = this.nextLoopDeferred.promise; + + // set the loop going if it is not already. + if (!this.outgoingRequestLoopRunning) { + this.outgoingRequestLoop().catch(e => { + // this should not happen; outgoingRequestLoop should return any errors via `nextLoopDeferred`. + /* istanbul ignore next */ + this.logger.error("Uncaught error in outgoing request loop", e); + }); + } + return result; + } + async outgoingRequestLoop() { + /* istanbul ignore if */ + if (this.outgoingRequestLoopRunning) { + throw new Error("Cannot run two outgoing request loops"); + } + this.outgoingRequestLoopRunning = true; + try { + while (!this.stopped && this.nextLoopDeferred) { + const deferred = this.nextLoopDeferred; + + // reset `nextLoopDeferred` so that any future calls to `doProcessOutgoingRequests` are queued + // for another additional iteration. + this.nextLoopDeferred = undefined; + + // make the requests and feed the results back to the `nextLoopDeferred` + await this.processOutgoingRequests().then(deferred.resolve, deferred.reject); + } + } finally { + this.outgoingRequestLoopRunning = false; + } + if (this.nextLoopDeferred) { + // the loop was stopped, but there was a call to `doProcessOutgoingRequests`. Make sure that + // we reject the promise in case anything is waiting for it. + this.nextLoopDeferred.reject(new Error("OutgoingRequestsManager was stopped")); + } + } + + /** + * Make a single request to `olmMachine.outgoingRequests` and do the corresponding requests. + */ + async processOutgoingRequests() { + if (this.stopped) return; + const outgoingRequests = await this.olmMachine.outgoingRequests(); + for (const request of outgoingRequests) { + if (this.stopped) return; + try { + await (0, _utils.logDuration)(this.logger, `Make outgoing request ${request.type}`, async () => { + await this.outgoingRequestProcessor.makeOutgoingRequest(request); + }); + } catch (e) { + // as part of the loop we silently ignore errors, but log them. + // The rust sdk will retry the request later as it won't have been marked as sent. + this.logger.error(`Failed to process outgoing request ${request.type}: ${e}`); + } + } + } +} +exports.OutgoingRequestsManager = OutgoingRequestsManager; +//# sourceMappingURL=OutgoingRequestsManager.js.map + +/***/ }), + +/***/ 5991: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PerSessionKeyBackupDownloader = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _httpApi = __nccwpck_require__(7082); +var _matrix = __nccwpck_require__(1354); +var _utils = __nccwpck_require__(2557); +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// The minimum time to wait between two retries in case of errors. To avoid hammering the server. +const KEY_BACKUP_BACKOFF = 5000; // ms + +/** + * Enumerates the different kind of errors that can occurs when downloading and importing a key from backup. + */ +var KeyDownloadErrorCode = /*#__PURE__*/function (KeyDownloadErrorCode) { + KeyDownloadErrorCode["MISSING_DECRYPTION_KEY"] = "MISSING_DECRYPTION_KEY"; + KeyDownloadErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR"; + KeyDownloadErrorCode["STOPPED"] = "STOPPED"; + return KeyDownloadErrorCode; +}(KeyDownloadErrorCode || {}); +class KeyDownloadError extends Error { + constructor(code) { + super(`Failed to get key from backup: ${code}`); + this.code = code; + this.name = "KeyDownloadError"; + } +} +class KeyDownloadRateLimitError extends Error { + constructor(retryMillis) { + super(`Failed to get key from backup: rate limited`); + this.retryMillis = retryMillis; + this.name = "KeyDownloadRateLimitError"; + } +} + +/** Details of a megolm session whose key we are trying to fetch. */ + +/** Holds the current backup decryptor and version that should be used. */ + +/** + * Used when an 'unable to decrypt' error occurs. It attempts to download the key from the backup. + * + * The current backup API lacks pagination, which can lead to lengthy key retrieval times for large histories (several 10s of minutes). + * To mitigate this, keys are downloaded on demand as decryption errors occurs. + * While this approach may result in numerous requests, it improves user experience by reducing wait times for message decryption. + * + * The PerSessionKeyBackupDownloader is resistant to backup configuration changes: it will automatically resume querying when + * the backup is configured correctly. + */ +class PerSessionKeyBackupDownloader { + /** + * Creates a new instance of PerSessionKeyBackupDownloader. + * + * @param backupManager - The backup manager to use. + * @param olmMachine - The olm machine to use. + * @param http - The http instance to use. + * @param logger - The logger to use. + */ + constructor(logger, olmMachine, http, backupManager) { + (0, _defineProperty2.default)(this, "stopped", false); + /** + * The version and decryption key to use with current backup if all set up correctly. + * + * Will not be set unless `hasConfigurationProblem` is `false`. + */ + (0, _defineProperty2.default)(this, "configuration", null); + /** We remember when a session was requested and not found in backup to avoid query again too soon. + * Map of session_id to timestamp */ + (0, _defineProperty2.default)(this, "sessionLastCheckAttemptedTime", new Map()); + /** Whether the download loop is running. */ + (0, _defineProperty2.default)(this, "downloadLoopRunning", false); + /** The list of requests that are queued. */ + (0, _defineProperty2.default)(this, "queuedRequests", []); + /** Remembers if we have a configuration problem. */ + (0, _defineProperty2.default)(this, "hasConfigurationProblem", false); + /** The current server backup version check promise. To avoid doing a server call if one is in flight. */ + (0, _defineProperty2.default)(this, "currentBackupVersionCheck", null); + /** + * Called when the backup status changes (CryptoEvents) + * This will trigger a check of the backup configuration. + */ + (0, _defineProperty2.default)(this, "onBackupStatusChanged", () => { + // we want to force check configuration, so we clear the current one. + this.hasConfigurationProblem = false; + this.configuration = null; + this.getOrCreateBackupConfiguration().then(configuration => { + if (configuration) { + // restart the download loop if it was stopped + this.downloadKeysLoop(); + } + }); + }); + this.olmMachine = olmMachine; + this.http = http; + this.backupManager = backupManager; + this.logger = logger.getChild("[PerSessionKeyBackupDownloader]"); + backupManager.on(_matrix.CryptoEvent.KeyBackupStatus, this.onBackupStatusChanged); + backupManager.on(_matrix.CryptoEvent.KeyBackupFailed, this.onBackupStatusChanged); + backupManager.on(_matrix.CryptoEvent.KeyBackupDecryptionKeyCached, this.onBackupStatusChanged); + } + + /** + * Check if key download is successfully configured and active. + * + * @return `true` if key download is correctly configured and active; otherwise `false`. + */ + isKeyBackupDownloadConfigured() { + return this.configuration !== null; + } + + /** + * Return the details of the latest backup on the server, when we last checked. + * + * This is just a convenience method to expose {@link RustBackupManager.getServerBackupInfo}. + */ + async getServerBackupInfo() { + return await this.backupManager.getServerBackupInfo(); + } + + /** + * Called when a MissingRoomKey or UnknownMessageIndex decryption error is encountered. + * + * This will try to download the key from the backup if there is a trusted active backup. + * In case of success the key will be imported and the onRoomKeysUpdated callback will be called + * internally by the rust-sdk and decryption will be retried. + * + * @param roomId - The room ID of the room where the error occurred. + * @param megolmSessionId - The megolm session ID that is missing. + */ + onDecryptionKeyMissingError(roomId, megolmSessionId) { + // Several messages encrypted with the same session may be decrypted at the same time, + // so we need to be resistant and not query several time the same session. + if (this.isAlreadyInQueue(roomId, megolmSessionId)) { + // There is already a request queued for this session, no need to queue another one. + this.logger.trace(`Not checking key backup for session ${megolmSessionId} as it is already queued`); + return; + } + if (this.wasRequestedRecently(megolmSessionId)) { + // We already tried to download this session recently and it was not in backup, no need to try again. + this.logger.trace(`Not checking key backup for session ${megolmSessionId} as it was already requested recently`); + return; + } + + // We always add the request to the queue, even if we have a configuration problem (can't access backup). + // This is to make sure that if the configuration problem is resolved, we will try to download the key. + // This will happen after an initial sync, at this point the backup will not yet be trusted and the decryption + // key will not be available, but it will be just after the verification. + // We don't need to persist it because currently on refresh the sdk will retry to decrypt the messages in error. + this.queuedRequests.push({ + roomId, + megolmSessionId + }); + + // Start the download loop if it's not already running. + this.downloadKeysLoop(); + } + stop() { + this.stopped = true; + this.backupManager.off(_matrix.CryptoEvent.KeyBackupStatus, this.onBackupStatusChanged); + this.backupManager.off(_matrix.CryptoEvent.KeyBackupFailed, this.onBackupStatusChanged); + this.backupManager.off(_matrix.CryptoEvent.KeyBackupDecryptionKeyCached, this.onBackupStatusChanged); + } + /** Returns true if the megolm session is already queued for download. */ + isAlreadyInQueue(roomId, megolmSessionId) { + return this.queuedRequests.some(info => { + return info.roomId == roomId && info.megolmSessionId == megolmSessionId; + }); + } + + /** + * Marks the session as not found in backup, to avoid retrying to soon for a key not in backup + * + * @param megolmSessionId - The megolm session ID that is missing. + */ + markAsNotFoundInBackup(megolmSessionId) { + const now = Date.now(); + this.sessionLastCheckAttemptedTime.set(megolmSessionId, now); + // if too big make some cleaning to keep under control + if (this.sessionLastCheckAttemptedTime.size > 100) { + this.sessionLastCheckAttemptedTime = new Map(Array.from(this.sessionLastCheckAttemptedTime).filter((sid, ts) => { + return Math.max(now - ts, 0) < KEY_BACKUP_BACKOFF; + })); + } + } + + /** Returns true if the session was requested recently. */ + wasRequestedRecently(megolmSessionId) { + const lastCheck = this.sessionLastCheckAttemptedTime.get(megolmSessionId); + if (!lastCheck) return false; + return Math.max(Date.now() - lastCheck, 0) < KEY_BACKUP_BACKOFF; + } + async getBackupDecryptionKey() { + try { + return await this.olmMachine.getBackupKeys(); + } catch (e) { + return null; + } + } + + /** + * Requests a key from the server side backup. + * + * @param version - The backup version to use. + * @param roomId - The room ID of the room where the error occurred. + * @param sessionId - The megolm session ID that is missing. + */ + async requestRoomKeyFromBackup(version, roomId, sessionId) { + const path = (0, _utils.encodeUri)("/room_keys/keys/$roomId/$sessionId", { + $roomId: roomId, + $sessionId: sessionId + }); + return await this.http.authedRequest(_httpApi.Method.Get, path, { + version + }, undefined, { + prefix: _httpApi.ClientPrefix.V3 + }); + } + async downloadKeysLoop() { + if (this.downloadLoopRunning) return; + + // If we have a configuration problem, we don't want to try to download. + // If any configuration change is detected, we will retry and restart the loop. + if (this.hasConfigurationProblem) return; + this.downloadLoopRunning = true; + try { + while (this.queuedRequests.length > 0) { + // we just peek the first one without removing it, so if a new request for same key comes in while we're + // processing this one, it won't queue another request. + const request = this.queuedRequests[0]; + try { + // The backup could have changed between the time we queued the request and now, so we need to check + const configuration = await this.getOrCreateBackupConfiguration(); + if (!configuration) { + // Backup is not configured correctly, so stop the loop. + this.downloadLoopRunning = false; + return; + } + const result = await this.queryKeyBackup(request.roomId, request.megolmSessionId, configuration); + if (this.stopped) { + return; + } + // We got the encrypted key from backup, let's try to decrypt and import it. + try { + await this.decryptAndImport(request, result, configuration); + } catch (e) { + this.logger.error(`Error while decrypting and importing key backup for session ${request.megolmSessionId}`, e); + } + // now remove the request from the queue as we've processed it. + this.queuedRequests.shift(); + } catch (err) { + if (err instanceof KeyDownloadError) { + switch (err.code) { + case KeyDownloadErrorCode.MISSING_DECRYPTION_KEY: + this.markAsNotFoundInBackup(request.megolmSessionId); + // continue for next one + this.queuedRequests.shift(); + break; + case KeyDownloadErrorCode.NETWORK_ERROR: + // We don't want to hammer if there is a problem, so wait a bit. + await (0, _utils.sleep)(KEY_BACKUP_BACKOFF); + break; + case KeyDownloadErrorCode.STOPPED: + // If the downloader was stopped, we don't want to retry. + this.downloadLoopRunning = false; + return; + } + } else if (err instanceof KeyDownloadRateLimitError) { + // we want to retry after the backoff time + await (0, _utils.sleep)(err.retryMillis); + } + } + } + } finally { + // all pending request have been processed, we can stop the loop. + this.downloadLoopRunning = false; + } + } + + /** + * Query the backup for a key. + * + * @param targetRoomId - ID of the room that the session is used in. + * @param targetSessionId - ID of the session for which to check backup. + * @param configuration - The backup configuration to use. + */ + async queryKeyBackup(targetRoomId, targetSessionId, configuration) { + this.logger.debug(`Checking key backup for session ${targetSessionId}`); + if (this.stopped) throw new KeyDownloadError(KeyDownloadErrorCode.STOPPED); + try { + const res = await this.requestRoomKeyFromBackup(configuration.backupVersion, targetRoomId, targetSessionId); + this.logger.debug(`Got key from backup for sessionId:${targetSessionId}`); + return res; + } catch (e) { + if (this.stopped) throw new KeyDownloadError(KeyDownloadErrorCode.STOPPED); + this.logger.info(`No luck requesting key backup for session ${targetSessionId}: ${e}`); + if (e instanceof _httpApi.MatrixError) { + const errCode = e.data.errcode; + if (errCode == "M_NOT_FOUND") { + // Unfortunately the spec doesn't give us a way to differentiate between a missing key and a wrong version. + // Synapse will return: + // - "error": "Unknown backup version" if the version is wrong. + // - "error": "No room_keys found" if the key is missing. + // It's useful to know if the key is missing or if the version is wrong. + // As it's not spec'ed, we fall back on considering the key is not in backup. + // Notice that this request will be lost if instead the backup got out of sync (updated from other session). + throw new KeyDownloadError(KeyDownloadErrorCode.MISSING_DECRYPTION_KEY); + } + if (errCode == "M_LIMIT_EXCEEDED") { + const waitTime = e.data.retry_after_ms; + if (waitTime > 0) { + this.logger.info(`Rate limited by server, waiting ${waitTime}ms`); + throw new KeyDownloadRateLimitError(waitTime); + } else { + // apply the default backoff time + throw new KeyDownloadRateLimitError(KEY_BACKUP_BACKOFF); + } + } + } + throw new KeyDownloadError(KeyDownloadErrorCode.NETWORK_ERROR); + } + } + async decryptAndImport(sessionInfo, data, configuration) { + const sessionsToImport = { + [sessionInfo.megolmSessionId]: data + }; + const keys = await configuration.decryptor.decryptSessions(sessionsToImport); + for (const k of keys) { + k.room_id = sessionInfo.roomId; + } + await this.backupManager.importBackedUpRoomKeys(keys); + } + + /** + * Gets the current backup configuration or create one if it doesn't exist. + * + * When a valid configuration is found it is cached and returned for subsequent calls. + * Otherwise, if a check is forced or a check has not yet been done, a new check is done. + * + * @returns The backup configuration to use or null if there is a configuration problem. + */ + async getOrCreateBackupConfiguration() { + if (this.configuration) { + return this.configuration; + } + + // We already tried to check the configuration and it failed. + // We don't want to try again immediately, we will retry if a configuration change is detected. + if (this.hasConfigurationProblem) { + return null; + } + + // This method can be called rapidly by several emitted CryptoEvent, so we need to make sure that we don't + // query the server several times. + if (this.currentBackupVersionCheck != null) { + this.logger.debug(`Already checking server version, use current promise`); + return await this.currentBackupVersionCheck; + } + this.currentBackupVersionCheck = this.internalCheckFromServer(); + try { + return await this.currentBackupVersionCheck; + } finally { + this.currentBackupVersionCheck = null; + } + } + async internalCheckFromServer() { + var _currentServerVersion, _currentServerVersion2, _currentServerVersion4; + let currentServerVersion = null; + try { + currentServerVersion = await this.backupManager.getServerBackupInfo(); + } catch (e) { + this.logger.debug(`Backup: error while checking server version: ${e}`); + this.hasConfigurationProblem = true; + return null; + } + this.logger.debug(`Got current backup version from server: ${(_currentServerVersion = currentServerVersion) === null || _currentServerVersion === void 0 ? void 0 : _currentServerVersion.version}`); + if (((_currentServerVersion2 = currentServerVersion) === null || _currentServerVersion2 === void 0 ? void 0 : _currentServerVersion2.algorithm) != "m.megolm_backup.v1.curve25519-aes-sha2") { + var _currentServerVersion3; + this.logger.info(`Unsupported algorithm ${(_currentServerVersion3 = currentServerVersion) === null || _currentServerVersion3 === void 0 ? void 0 : _currentServerVersion3.algorithm}`); + this.hasConfigurationProblem = true; + return null; + } + if (!((_currentServerVersion4 = currentServerVersion) !== null && _currentServerVersion4 !== void 0 && _currentServerVersion4.version)) { + this.logger.info(`No current key backup`); + this.hasConfigurationProblem = true; + return null; + } + const activeVersion = await this.backupManager.getActiveBackupVersion(); + if (activeVersion == null || currentServerVersion.version != activeVersion) { + // Either the current backup version on server side is not trusted, or it is out of sync with the active version on the client side. + this.logger.info(`The current backup version on the server (${currentServerVersion.version}) is not trusted. Version we are currently backing up to: ${activeVersion}`); + this.hasConfigurationProblem = true; + return null; + } + const authData = currentServerVersion.auth_data; + const backupKeys = await this.getBackupDecryptionKey(); + if (!(backupKeys !== null && backupKeys !== void 0 && backupKeys.decryptionKey)) { + this.logger.debug(`Not checking key backup for session (no decryption key)`); + this.hasConfigurationProblem = true; + return null; + } + if (activeVersion != backupKeys.backupVersion) { + this.logger.debug(`Version for which we have a decryption key (${backupKeys.backupVersion}) doesn't match the version we are backing up to (${activeVersion})`); + this.hasConfigurationProblem = true; + return null; + } + if (authData.public_key != backupKeys.decryptionKey.megolmV1PublicKey.publicKeyBase64) { + this.logger.debug(`getBackupDecryptor key mismatch error`); + this.hasConfigurationProblem = true; + return null; + } + const backupDecryptor = this.backupManager.createBackupDecryptor(backupKeys.decryptionKey); + this.hasConfigurationProblem = false; + this.configuration = { + decryptor: backupDecryptor, + backupVersion: activeVersion + }; + return this.configuration; + } +} +exports.PerSessionKeyBackupDownloader = PerSessionKeyBackupDownloader; +//# sourceMappingURL=PerSessionKeyBackupDownloader.js.map + +/***/ }), + +/***/ 2275: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RoomEncryptor = void 0; +exports.toRustHistoryVisibility = toRustHistoryVisibility; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _matrixSdkCryptoWasm = _interopRequireWildcard(__nccwpck_require__(4822)); +var RustSdkCryptoJs = _matrixSdkCryptoWasm; +var _event = __nccwpck_require__(7487); +var _logger = __nccwpck_require__(3854); +var _partials = __nccwpck_require__(3653); +var _utils = __nccwpck_require__(2557); +var _membership = __nccwpck_require__(9225); +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; } +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * RoomEncryptor: responsible for encrypting messages to a given room + * + * @internal + */ +class RoomEncryptor { + /** + * @param olmMachine - The rust-sdk's OlmMachine + * @param keyClaimManager - Our KeyClaimManager, which manages the queue of one-time-key claim requests + * @param outgoingRequestManager - The OutgoingRequestManager, which manages the queue of outgoing requests. + * @param room - The room we want to encrypt for + * @param encryptionSettings - body of the m.room.encryption event currently in force in this room + */ + constructor(olmMachine, keyClaimManager, outgoingRequestManager, room, encryptionSettings) { + /** whether the room members have been loaded and tracked for the first time */ + (0, _defineProperty2.default)(this, "lazyLoadedMembersResolved", false); + /** + * Ensures that there is only one encryption operation at a time for that room. + * + * An encryption operation is either a {@link prepareForEncryption} or an {@link encryptEvent} call. + */ + (0, _defineProperty2.default)(this, "currentEncryptionPromise", Promise.resolve()); + this.olmMachine = olmMachine; + this.keyClaimManager = keyClaimManager; + this.outgoingRequestManager = outgoingRequestManager; + this.room = room; + this.encryptionSettings = encryptionSettings; + this.prefixedLogger = _logger.logger.getChild(`[${room.roomId} encryption]`); + + // start tracking devices for any users already known to be in this room. + // Do not load members here, would defeat lazy loading. + const members = room.getJoinedMembers(); + + // At this point just mark the known members as tracked, it might not be the full list of members + // because of lazy loading. This is fine, because we will get a member list update when sending a message for + // the first time, see `RoomEncryptor#ensureEncryptionSession` + this.olmMachine.updateTrackedUsers(members.map(u => new RustSdkCryptoJs.UserId(u.userId))).catch(e => this.prefixedLogger.error("Error initializing tracked users", e)); + } + + /** + * Handle a new `m.room.encryption` event in this room + * + * @param config - The content of the encryption event + */ + onCryptoEvent(config) { + if (JSON.stringify(this.encryptionSettings) != JSON.stringify(config)) { + // This should currently be unreachable, since the Rust SDK will reject any attempts to change config. + throw new Error("Cannot reconfigure an active RoomEncryptor"); + } + } + + /** + * Handle a new `m.room.member` event in this room + * + * @param member - new membership state + */ + onRoomMembership(member) { + if (member.membership == _membership.KnownMembership.Join || member.membership == _membership.KnownMembership.Invite && this.room.shouldEncryptForInvitedMembers()) { + // make sure we are tracking the deviceList for this user + (0, _utils.logDuration)(this.prefixedLogger, "updateTrackedUsers", async () => { + this.olmMachine.updateTrackedUsers([new _matrixSdkCryptoWasm.UserId(member.userId)]).catch(e => { + this.prefixedLogger.error("Unable to update tracked users", e); + }); + }); + } + + // TODO: handle leaves (including our own) + } + + /** + * Prepare to encrypt events in this room. + * + * This ensures that we have a megolm session ready to use and that we have shared its key with all the devices + * in the room. + * + * @param globalBlacklistUnverifiedDevices - When `true`, it will not send encrypted messages to unverified devices + */ + async prepareForEncryption(globalBlacklistUnverifiedDevices) { + // We consider a prepareForEncryption as an encryption promise as it will potentially share keys + // even if it doesn't send an event. + // Usually this is called when the user starts typing, so we want to make sure we have keys ready when the + // message is finally sent. + // If `encryptEvent` is invoked before `prepareForEncryption` has completed, the `encryptEvent` call will wait for + // `prepareForEncryption` to complete before executing. + // The part where `encryptEvent` shares the room key will then usually be a no-op as it was already performed by `prepareForEncryption`. + await this.encryptEvent(null, globalBlacklistUnverifiedDevices); + } + + /** + * Encrypt an event for this room, or prepare for encryption. + * + * This will ensure that we have a megolm session for this room, share it with the devices in the room, and + * then, if an event is provided, encrypt it using the session. + * + * @param event - Event to be encrypted, or null if only preparing for encryption (in which case we will pre-share the room key). + * @param globalBlacklistUnverifiedDevices - When `true`, it will not send encrypted messages to unverified devices + */ + encryptEvent(event, globalBlacklistUnverifiedDevices) { + var _event$getTxnId; + const logger = new _logger.LogSpan(this.prefixedLogger, event ? (_event$getTxnId = event.getTxnId()) !== null && _event$getTxnId !== void 0 ? _event$getTxnId : "" : "prepareForEncryption"); + // Ensure order of encryption to avoid message ordering issues, as the scheduler only ensures + // events order after they have been encrypted. + const prom = this.currentEncryptionPromise.catch(() => { + // Any errors in the previous call will have been reported already, so there is nothing to do here. + // we just throw away the error and start anew. + }).then(async () => { + await (0, _utils.logDuration)(logger, "ensureEncryptionSession", async () => { + await this.ensureEncryptionSession(logger, globalBlacklistUnverifiedDevices); + }); + if (event) { + await (0, _utils.logDuration)(logger, "encryptEventInner", async () => { + await this.encryptEventInner(logger, event); + }); + } + }); + this.currentEncryptionPromise = prom; + return prom; + } + + /** + * Prepare to encrypt events in this room. + * + * This ensures that we have a megolm session ready to use and that we have shared its key with all the devices + * in the room. + * + * @param logger - a place to write diagnostics to + * @param globalBlacklistUnverifiedDevices - When `true`, it will not send encrypted messages to unverified devices + */ + async ensureEncryptionSession(logger, globalBlacklistUnverifiedDevices) { + var _this$room$getBlackli; + if (this.encryptionSettings.algorithm !== "m.megolm.v1.aes-sha2") { + throw new Error(`Cannot encrypt in ${this.room.roomId} for unsupported algorithm '${this.encryptionSettings.algorithm}'`); + } + logger.debug("Starting encryption"); + const members = await this.room.getEncryptionTargetMembers(); + + // If this is the first time we are sending a message to the room, we may not yet have seen all the members + // (so the Crypto SDK might not have a device list for them). So, if this is the first time we are encrypting + // for this room, give the SDK the full list of members, to be on the safe side. + // + // This could end up being racy (if two calls to ensureEncryptionSession happen at the same time), but that's + // not a particular problem, since `OlmMachine.updateTrackedUsers` just adds any users that weren't already tracked. + if (!this.lazyLoadedMembersResolved) { + await (0, _utils.logDuration)(this.prefixedLogger, "loadMembersIfNeeded: updateTrackedUsers", async () => { + await this.olmMachine.updateTrackedUsers(members.map(u => new RustSdkCryptoJs.UserId(u.userId))); + }); + logger.debug(`Updated tracked users`); + this.lazyLoadedMembersResolved = true; + + // Query keys in case we don't have them for newly tracked members. + // It's important after loading members for the first time, as likely most of them won't be + // known yet and will be unable to decrypt messages despite being in the room for long. + // This must be done before ensuring sessions. If not the devices of these users are not + // known yet and will not get the room key. + // We don't have API to only get the keys queries related to this member list, so we just + // process the pending requests from the olmMachine. (usually these are processed + // at the end of the sync, but we can't wait for that). + // XXX future improvement process only KeysQueryRequests for the users that have never been queried. + logger.debug(`Processing outgoing requests`); + await (0, _utils.logDuration)(this.prefixedLogger, "doProcessOutgoingRequests", async () => { + await this.outgoingRequestManager.doProcessOutgoingRequests(); + }); + } else { + // If members are already loaded it's less critical to await on key queries. + // We might still want to trigger a processOutgoingRequests here. + // The call to `ensureSessionsForUsers` below will wait a bit on in-flight key queries we are + // interested in. If a sync handling happens in the meantime, and some new members are added to the room + // or have new devices it would give us a chance to query them before sending. + // It's less critical due to the racy nature of this process. + logger.debug(`Processing outgoing requests in background`); + this.outgoingRequestManager.doProcessOutgoingRequests(); + } + logger.debug(`Encrypting for users (shouldEncryptForInvitedMembers: ${this.room.shouldEncryptForInvitedMembers()}):`, members.map(u => `${u.userId} (${u.membership})`)); + const userList = members.map(u => new _matrixSdkCryptoWasm.UserId(u.userId)); + await (0, _utils.logDuration)(this.prefixedLogger, "ensureSessionsForUsers", async () => { + await this.keyClaimManager.ensureSessionsForUsers(logger, userList); + }); + const rustEncryptionSettings = new _matrixSdkCryptoWasm.EncryptionSettings(); + rustEncryptionSettings.historyVisibility = toRustHistoryVisibility(this.room.getHistoryVisibility()); + + // We only support megolm + rustEncryptionSettings.algorithm = _matrixSdkCryptoWasm.EncryptionAlgorithm.MegolmV1AesSha2; + + // We need to convert the rotation period from milliseconds to microseconds + // See https://spec.matrix.org/v1.8/client-server-api/#mroomencryption and + // https://matrix-org.github.io/matrix-rust-sdk-crypto-wasm/classes/EncryptionSettings.html#rotationPeriod + if (typeof this.encryptionSettings.rotation_period_ms === "number") { + rustEncryptionSettings.rotationPeriod = BigInt(this.encryptionSettings.rotation_period_ms * 1000); + } + if (typeof this.encryptionSettings.rotation_period_msgs === "number") { + rustEncryptionSettings.rotationPeriodMessages = BigInt(this.encryptionSettings.rotation_period_msgs); + } + + // When this.room.getBlacklistUnverifiedDevices() === null, the global settings should be used + // See Room#getBlacklistUnverifiedDevices + rustEncryptionSettings.onlyAllowTrustedDevices = (_this$room$getBlackli = this.room.getBlacklistUnverifiedDevices()) !== null && _this$room$getBlackli !== void 0 ? _this$room$getBlackli : globalBlacklistUnverifiedDevices; + await (0, _utils.logDuration)(this.prefixedLogger, "shareRoomKey", async () => { + const shareMessages = await this.olmMachine.shareRoomKey(new _matrixSdkCryptoWasm.RoomId(this.room.roomId), + // safe to pass without cloning, as it's not reused here (before or after) + userList, rustEncryptionSettings); + if (shareMessages) { + for (const m of shareMessages) { + await this.outgoingRequestManager.outgoingRequestProcessor.makeOutgoingRequest(m); + } + } + }); + } + + /** + * Discard any existing group session for this room + */ + async forceDiscardSession() { + const r = await this.olmMachine.invalidateGroupSession(new _matrixSdkCryptoWasm.RoomId(this.room.roomId)); + if (r) { + this.prefixedLogger.info("Discarded existing group session"); + } + } + async encryptEventInner(logger, event) { + logger.debug("Encrypting actual message content"); + const encryptedContent = await this.olmMachine.encryptRoomEvent(new _matrixSdkCryptoWasm.RoomId(this.room.roomId), event.getType(), JSON.stringify(event.getContent())); + event.makeEncrypted(_event.EventType.RoomMessageEncrypted, JSON.parse(encryptedContent), this.olmMachine.identityKeys.curve25519.toBase64(), this.olmMachine.identityKeys.ed25519.toBase64()); + logger.debug("Encrypted event successfully"); + } +} + +/** + * Convert a HistoryVisibility to a RustHistoryVisibility + * @param visibility - HistoryVisibility enum + * @returns a RustHistoryVisibility enum + */ +exports.RoomEncryptor = RoomEncryptor; +function toRustHistoryVisibility(visibility) { + switch (visibility) { + case _partials.HistoryVisibility.Invited: + return _matrixSdkCryptoWasm.HistoryVisibility.Invited; + case _partials.HistoryVisibility.Joined: + return _matrixSdkCryptoWasm.HistoryVisibility.Joined; + case _partials.HistoryVisibility.Shared: + return _matrixSdkCryptoWasm.HistoryVisibility.Shared; + case _partials.HistoryVisibility.WorldReadable: + return _matrixSdkCryptoWasm.HistoryVisibility.WorldReadable; + } +} +//# sourceMappingURL=RoomEncryptor.js.map + +/***/ }), + +/***/ 1851: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RustBackupManager = exports.RustBackupDecryptor = void 0; +exports.requestKeyBackupVersion = requestKeyBackupVersion; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var RustSdkCryptoJs = _interopRequireWildcard(__nccwpck_require__(4822)); +var _logger = __nccwpck_require__(3854); +var _httpApi = __nccwpck_require__(7082); +var _crypto = __nccwpck_require__(9839); +var _typedEventEmitter = __nccwpck_require__(7150); +var _utils = __nccwpck_require__(2557); +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; } +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** Authentification of the backup info, depends on algorithm */ + +/** + * Holds information of a created keybackup. + * Useful to get the generated private key material and save it securely somewhere. + */ + +/** + * @internal + */ +class RustBackupManager extends _typedEventEmitter.TypedEventEmitter { + constructor(olmMachine, http, outgoingRequestProcessor) { + super(); + /** Have we checked if there is a backup on the server which we can use */ + (0, _defineProperty2.default)(this, "checkedForBackup", false); + /** + * The latest backup version on the server, when we last checked. + * + * If there was no backup on the server, `null`. If our attempt to check resulted in an error, `undefined`. + * + * Note that the backup was not necessarily verified. + */ + (0, _defineProperty2.default)(this, "serverBackupInfo", undefined); + (0, _defineProperty2.default)(this, "activeBackupVersion", null); + (0, _defineProperty2.default)(this, "stopped", false); + /** whether {@link backupKeysLoop} is currently running */ + (0, _defineProperty2.default)(this, "backupKeysLoopRunning", false); + (0, _defineProperty2.default)(this, "keyBackupCheckInProgress", null); + this.olmMachine = olmMachine; + this.http = http; + this.outgoingRequestProcessor = outgoingRequestProcessor; + } + + /** + * Tells the RustBackupManager to stop. + * The RustBackupManager is scheduling background uploads of keys to the backup, this + * call allows to cancel the process when the client is stoppped. + */ + stop() { + this.stopped = true; + } + + /** + * Get the backup version we are currently backing up to, if any + */ + async getActiveBackupVersion() { + if (!(await this.olmMachine.isBackupEnabled())) return null; + return this.activeBackupVersion; + } + + /** + * Return the details of the latest backup on the server, when we last checked. + * + * This normally returns a cached value, but if we haven't yet made a request to the server, it will fire one off. + * It will always return the details of the active backup if key backup is enabled. + * + * If there was no backup on the server, `null`. If our attempt to check resulted in an error, `undefined`. + */ + async getServerBackupInfo() { + // Do a validity check if we haven't already done one. The check is likely to fail if we don't yet have the + // backup keys -- but as a side-effect, it will populate `serverBackupInfo`. + await this.checkKeyBackupAndEnable(false); + return this.serverBackupInfo; + } + + /** + * Determine if a key backup can be trusted. + * + * @param info - key backup info dict from {@link MatrixClient#getKeyBackupVersion}. + */ + async isKeyBackupTrusted(info) { + const signatureVerification = await this.olmMachine.verifyBackup(info); + const backupKeys = await this.olmMachine.getBackupKeys(); + const decryptionKey = backupKeys === null || backupKeys === void 0 ? void 0 : backupKeys.decryptionKey; + const backupMatchesSavedPrivateKey = !!decryptionKey && backupInfoMatchesBackupDecryptionKey(info, decryptionKey); + return { + matchesDecryptionKey: backupMatchesSavedPrivateKey, + trusted: signatureVerification.trusted() + }; + } + + /** + * Re-check the key backup and enable/disable it as appropriate. + * + * @param force - whether we should force a re-check even if one has already happened. + */ + checkKeyBackupAndEnable(force) { + if (!force && this.checkedForBackup) { + return Promise.resolve(null); + } + + // make sure there is only one check going on at a time + if (!this.keyBackupCheckInProgress) { + this.keyBackupCheckInProgress = this.doCheckKeyBackup().finally(() => { + this.keyBackupCheckInProgress = null; + }); + } + return this.keyBackupCheckInProgress; + } + + /** + * Handles a backup secret received event and store it if it matches the current backup version. + * + * @param secret - The secret as received from a `m.secret.send` event for secret `m.megolm_backup.v1`. + * @returns true if the secret is valid and has been stored, false otherwise. + */ + async handleBackupSecretReceived(secret) { + var _backupCheck$backupIn; + // Currently we only receive the decryption key without any key backup version. It is important to + // check that the secret is valid for the current version before storing it. + // We force a check to ensure to have the latest version. We also want to check that the backup is trusted + // as we don't want to store the secret if the backup is not trusted, and eventually import megolm keys later from an untrusted backup. + const backupCheck = await this.checkKeyBackupAndEnable(true); + if (!(backupCheck !== null && backupCheck !== void 0 && (_backupCheck$backupIn = backupCheck.backupInfo) !== null && _backupCheck$backupIn !== void 0 && _backupCheck$backupIn.version) || !backupCheck.trustInfo.trusted) { + // There is no server-side key backup, or the backup is not signed by a trusted cross-signing key or trusted own device. + // This decryption key is useless to us. + _logger.logger.warn("handleBackupSecretReceived: Received a backup decryption key, but there is no trusted server-side key backup"); + return false; + } + try { + const backupDecryptionKey = RustSdkCryptoJs.BackupDecryptionKey.fromBase64(secret); + const privateKeyMatches = backupInfoMatchesBackupDecryptionKey(backupCheck.backupInfo, backupDecryptionKey); + if (!privateKeyMatches) { + _logger.logger.warn(`handleBackupSecretReceived: Private decryption key does not match the public key of the current remote backup.`); + // just ignore the secret + return false; + } + _logger.logger.info(`handleBackupSecretReceived: A valid backup decryption key has been received and stored in cache.`); + await this.saveBackupDecryptionKey(backupDecryptionKey, backupCheck.backupInfo.version); + return true; + } catch (e) { + _logger.logger.warn("handleBackupSecretReceived: Invalid backup decryption key", e); + } + return false; + } + async saveBackupDecryptionKey(backupDecryptionKey, version) { + await this.olmMachine.saveBackupDecryptionKey(backupDecryptionKey, version); + // Emit an event that we have a new backup decryption key, so that the sdk can start + // importing keys from backup if needed. + this.emit(_crypto.CryptoEvent.KeyBackupDecryptionKeyCached, version); + } + + /** + * Import a list of room keys previously exported by exportRoomKeys + * + * @param keys - a list of session export objects + * @param opts - options object + * @returns a promise which resolves once the keys have been imported + */ + async importRoomKeys(keys, opts) { + await this.importRoomKeysAsJson(JSON.stringify(keys), opts); + } + + /** + * Import a list of room keys previously exported by exportRoomKeysAsJson + * + * @param keys - a JSON string encoding a list of session export objects, + * each of which is an IMegolmSessionData + * @param opts - options object + * @returns a promise which resolves once the keys have been imported + */ + async importRoomKeysAsJson(jsonKeys, opts) { + await this.olmMachine.importExportedRoomKeys(jsonKeys, (progress, total) => { + var _opts$progressCallbac; + const importOpt = { + total: Number(total), + successes: Number(progress), + stage: "load_keys", + failures: 0 + }; + opts === null || opts === void 0 || (_opts$progressCallbac = opts.progressCallback) === null || _opts$progressCallbac === void 0 || _opts$progressCallbac.call(opts, importOpt); + }); + } + + /** + * Implementation of {@link CryptoBackend#importBackedUpRoomKeys}. + */ + async importBackedUpRoomKeys(keys, opts) { + const keysByRoom = new Map(); + for (const key of keys) { + const roomId = new RustSdkCryptoJs.RoomId(key.room_id); + if (!keysByRoom.has(roomId)) { + keysByRoom.set(roomId, new Map()); + } + keysByRoom.get(roomId).set(key.session_id, key); + } + await this.olmMachine.importBackedUpRoomKeys(keysByRoom, (progress, total, failures) => { + var _opts$progressCallbac2; + const importOpt = { + total: Number(total), + successes: Number(progress), + stage: "load_keys", + failures: Number(failures) + }; + opts === null || opts === void 0 || (_opts$progressCallbac2 = opts.progressCallback) === null || _opts$progressCallbac2 === void 0 || _opts$progressCallbac2.call(opts, importOpt); + }); + } + /** Helper for `checkKeyBackup` */ + async doCheckKeyBackup() { + _logger.logger.log("Checking key backup status..."); + let backupInfo; + try { + backupInfo = await this.requestKeyBackupVersion(); + } catch (e) { + _logger.logger.warn("Error checking for active key backup", e); + this.serverBackupInfo = undefined; + return null; + } + this.checkedForBackup = true; + if (backupInfo && !backupInfo.version) { + _logger.logger.warn("active backup lacks a useful 'version'; ignoring it"); + backupInfo = undefined; + } + this.serverBackupInfo = backupInfo; + const activeVersion = await this.getActiveBackupVersion(); + if (!backupInfo) { + if (activeVersion !== null) { + _logger.logger.log("No key backup present on server: disabling key backup"); + await this.disableKeyBackup(); + } else { + _logger.logger.log("No key backup present on server: not enabling key backup"); + } + return null; + } + const trustInfo = await this.isKeyBackupTrusted(backupInfo); + if (!trustInfo.trusted) { + if (activeVersion !== null) { + _logger.logger.log("Key backup present on server but not trusted: disabling key backup"); + await this.disableKeyBackup(); + } else { + _logger.logger.log("Key backup present on server but not trusted: not enabling key backup"); + } + } else { + if (activeVersion === null) { + _logger.logger.log(`Found usable key backup v${backupInfo.version}: enabling key backups`); + await this.enableKeyBackup(backupInfo); + } else if (activeVersion !== backupInfo.version) { + _logger.logger.log(`On backup version ${activeVersion} but found version ${backupInfo.version}: switching.`); + // This will remove any pending backup request, remove the backup key and reset the backup state of each room key we have. + await this.disableKeyBackup(); + // Enabling will now trigger re-upload of all the keys + await this.enableKeyBackup(backupInfo); + } else { + _logger.logger.log(`Backup version ${backupInfo.version} still current`); + } + } + return { + backupInfo, + trustInfo + }; + } + async enableKeyBackup(backupInfo) { + // we know for certain it must be a Curve25519 key, because we have verified it and only Curve25519 + // keys can be verified. + // + // we also checked it has a valid `version`. + await this.olmMachine.enableBackupV1(backupInfo.auth_data.public_key, backupInfo.version); + this.activeBackupVersion = backupInfo.version; + this.emit(_crypto.CryptoEvent.KeyBackupStatus, true); + this.backupKeysLoop(); + } + + /** + * Restart the backup key loop if there is an active trusted backup. + * Doesn't try to check the backup server side. To be called when a new + * megolm key is known locally. + */ + async maybeUploadKey() { + if (this.activeBackupVersion != null) { + this.backupKeysLoop(); + } + } + async disableKeyBackup() { + await this.olmMachine.disableBackup(); + this.activeBackupVersion = null; + this.emit(_crypto.CryptoEvent.KeyBackupStatus, false); + } + async backupKeysLoop(maxDelay = 10000) { + if (this.backupKeysLoopRunning) { + _logger.logger.log(`Backup loop already running`); + return; + } + this.backupKeysLoopRunning = true; + _logger.logger.log(`Backup: Starting keys upload loop for backup version:${this.activeBackupVersion}.`); + + // wait between 0 and `maxDelay` seconds, to avoid backup + // requests from different clients hitting the server all at + // the same time when a new key is sent + const delay = Math.random() * maxDelay; + await (0, _utils.sleep)(delay); + try { + // number of consecutive network failures for exponential backoff + let numFailures = 0; + // The number of keys left to back up. (Populated lazily: see more comments below.) + let remainingToUploadCount = null; + // To avoid computing the key when only a few keys were added (after a sync for example), + // we compute the count only when at least two iterations are needed. + let isFirstIteration = true; + while (!this.stopped) { + // Get a batch of room keys to upload + let request = null; + try { + request = await (0, _utils.logDuration)(_logger.logger, "BackupRoomKeys: Get keys to backup from rust crypto-sdk", async () => { + return await this.olmMachine.backupRoomKeys(); + }); + } catch (err) { + _logger.logger.error("Backup: Failed to get keys to backup from rust crypto-sdk", err); + } + if (!request || this.stopped || !this.activeBackupVersion) { + _logger.logger.log(`Backup: Ending loop for version ${this.activeBackupVersion}.`); + if (!request) { + // nothing more to upload + this.emit(_crypto.CryptoEvent.KeyBackupSessionsRemaining, 0); + } + return; + } + try { + await this.outgoingRequestProcessor.makeOutgoingRequest(request); + numFailures = 0; + if (this.stopped) break; + + // Key count performance (`olmMachine.roomKeyCounts()`) can be pretty bad on some configurations. + // In particular, we detected on some M1 macs that when the object store reaches a threshold, the count + // performance stops growing in O(n) and suddenly becomes very slow (40s, 60s or more). + // For reference, the performance drop occurs around 300-400k keys on the platforms where this issue is observed. + // Even on other configurations, the count can take several seconds. + // This will block other operations on the database, like sending messages. + // + // This is a workaround to avoid calling `olmMachine.roomKeyCounts()` too often, and only when necessary. + // We don't call it on the first loop because there could be only a few keys to upload, and we don't want to wait for the count. + if (!isFirstIteration && remainingToUploadCount === null) { + try { + const keyCount = await this.olmMachine.roomKeyCounts(); + remainingToUploadCount = keyCount.total - keyCount.backedUp; + } catch (err) { + _logger.logger.error("Backup: Failed to get key counts from rust crypto-sdk", err); + } + } + if (remainingToUploadCount !== null) { + this.emit(_crypto.CryptoEvent.KeyBackupSessionsRemaining, remainingToUploadCount); + const keysCountInBatch = this.keysCountInBatch(request); + // `OlmMachine.roomKeyCounts` is called only once for the current backupKeysLoop. But new + // keys could be added during the current loop (after a sync for example). + // So the count can get out of sync with the real number of remaining keys to upload. + // Depending on the number of new keys imported and the time to complete the loop, + // this could result in multiple events being emitted with a remaining key count of 0. + remainingToUploadCount = Math.max(remainingToUploadCount - keysCountInBatch, 0); + } + } catch (err) { + numFailures++; + _logger.logger.error("Backup: Error processing backup request for rust crypto-sdk", err); + if (err instanceof _httpApi.MatrixError) { + const errCode = err.data.errcode; + if (errCode == "M_NOT_FOUND" || errCode == "M_WRONG_ROOM_KEYS_VERSION") { + _logger.logger.log(`Backup: Failed to upload keys to current vesion: ${errCode}.`); + try { + await this.disableKeyBackup(); + } catch (error) { + _logger.logger.error("Backup: An error occurred while disabling key backup:", error); + } + this.emit(_crypto.CryptoEvent.KeyBackupFailed, err.data.errcode); + // There was an active backup and we are out of sync with the server + // force a check server side + this.backupKeysLoopRunning = false; + this.checkKeyBackupAndEnable(true); + return; + } else if (errCode == "M_LIMIT_EXCEEDED") { + // wait for that and then continue? + const waitTime = err.data.retry_after_ms; + if (waitTime > 0) { + await (0, _utils.sleep)(waitTime); + continue; + } // else go to the normal backoff + } + } + + // Some other errors (mx, network, or CORS or invalid urls?) anyhow backoff + // exponential backoff if we have failures + await (0, _utils.sleep)(1000 * Math.pow(2, Math.min(numFailures - 1, 4))); + } + isFirstIteration = false; + } + } finally { + this.backupKeysLoopRunning = false; + } + } + + /** + * Utility method to count the number of keys in a backup request, in order to update the remaining keys count. + * This should be the chunk size of the backup request for all requests but the last, but we don't have access to it + * (it's static in the Rust SDK). + * @param batch - The backup request to count the keys from. + * + * @returns The number of keys in the backup request. + */ + keysCountInBatch(batch) { + const parsedBody = JSON.parse(batch.body); + let count = 0; + for (const { + sessions + } of Object.values(parsedBody.rooms)) { + count += Object.keys(sessions).length; + } + return count; + } + + /** + * Get information about the current key backup from the server + * + * @returns Information object from API or null if there is no active backup. + */ + async requestKeyBackupVersion() { + return await requestKeyBackupVersion(this.http); + } + + /** + * Creates a new key backup by generating a new random private key. + * + * If there is an existing backup server side it will be deleted and replaced + * by the new one. + * + * @param signObject - Method that should sign the backup with existing device and + * existing identity. + * @returns a KeyBackupCreationInfo - All information related to the backup. + */ + async setupKeyBackup(signObject) { + // Clean up any existing backup + await this.deleteAllKeyBackupVersions(); + const randomKey = RustSdkCryptoJs.BackupDecryptionKey.createRandomKey(); + const pubKey = randomKey.megolmV1PublicKey; + const authData = { + public_key: pubKey.publicKeyBase64 + }; + await signObject(authData); + const res = await this.http.authedRequest(_httpApi.Method.Post, "/room_keys/version", undefined, { + algorithm: pubKey.algorithm, + auth_data: authData + }, { + prefix: _httpApi.ClientPrefix.V3 + }); + await this.saveBackupDecryptionKey(randomKey, res.version); + return { + version: res.version, + algorithm: pubKey.algorithm, + authData: authData, + decryptionKey: randomKey + }; + } + + /** + * Deletes all key backups. + * + * Will call the API to delete active backup until there is no more present. + */ + async deleteAllKeyBackupVersions() { + var _await$this$requestKe, _await$this$requestKe2; + // there could be several backup versions. Delete all to be safe. + let current = (_await$this$requestKe = (_await$this$requestKe2 = await this.requestKeyBackupVersion()) === null || _await$this$requestKe2 === void 0 ? void 0 : _await$this$requestKe2.version) !== null && _await$this$requestKe !== void 0 ? _await$this$requestKe : null; + while (current != null) { + var _await$this$requestKe3, _await$this$requestKe4; + await this.deleteKeyBackupVersion(current); + current = (_await$this$requestKe3 = (_await$this$requestKe4 = await this.requestKeyBackupVersion()) === null || _await$this$requestKe4 === void 0 ? void 0 : _await$this$requestKe4.version) !== null && _await$this$requestKe3 !== void 0 ? _await$this$requestKe3 : null; + } + + // XXX: Should this also update Secret Storage and delete any existing keys? + } + + /** + * Deletes the given key backup. + * + * @param version - The backup version to delete. + */ + async deleteKeyBackupVersion(version) { + _logger.logger.debug(`deleteKeyBackupVersion v:${version}`); + const path = (0, _utils.encodeUri)("/room_keys/version/$version", { + $version: version + }); + await this.http.authedRequest(_httpApi.Method.Delete, path, undefined, undefined, { + prefix: _httpApi.ClientPrefix.V3 + }); + } + + /** + * Creates a new backup decryptor for the given private key. + * @param decryptionKey - The private key to use for decryption. + */ + createBackupDecryptor(decryptionKey) { + return new RustBackupDecryptor(decryptionKey); + } +} + +/** + * Checks if the provided backup info matches the given private key. + * + * @param info - The backup info to check. + * @param backupDecryptionKey - The `BackupDecryptionKey` private key to check against. + * @returns `true` if the private key can decrypt the backup, `false` otherwise. + */ +exports.RustBackupManager = RustBackupManager; +function backupInfoMatchesBackupDecryptionKey(info, backupDecryptionKey) { + var _info$auth_data; + if (info.algorithm !== "m.megolm_backup.v1.curve25519-aes-sha2") { + _logger.logger.warn("backupMatchesPrivateKey: Unsupported backup algorithm", info.algorithm); + return false; + } + return ((_info$auth_data = info.auth_data) === null || _info$auth_data === void 0 ? void 0 : _info$auth_data.public_key) === backupDecryptionKey.megolmV1PublicKey.publicKeyBase64; +} + +/** + * Implementation of {@link BackupDecryptor} for the rust crypto backend. + */ +class RustBackupDecryptor { + constructor(decryptionKey) { + this.decryptionKey = decryptionKey; + this.sourceTrusted = false; + } + + /** + * Implements {@link BackupDecryptor#decryptSessions} + */ + async decryptSessions(ciphertexts) { + const keys = []; + for (const [sessionId, sessionData] of Object.entries(ciphertexts)) { + try { + const decrypted = JSON.parse(this.decryptionKey.decryptV1(sessionData.session_data.ephemeral, sessionData.session_data.mac, sessionData.session_data.ciphertext)); + decrypted.session_id = sessionId; + keys.push(decrypted); + } catch (e) { + _logger.logger.log("Failed to decrypt megolm session from backup", e, sessionData); + } + } + return keys; + } + + /** + * Implements {@link BackupDecryptor#free} + */ + free() { + this.decryptionKey.free(); + } +} +exports.RustBackupDecryptor = RustBackupDecryptor; +async function requestKeyBackupVersion(http) { + try { + return await http.authedRequest(_httpApi.Method.Get, "/room_keys/version", undefined, undefined, { + prefix: _httpApi.ClientPrefix.V3 + }); + } catch (e) { + if (e.errcode === "M_NOT_FOUND") { + return null; + } else { + throw e; + } + } +} +//# sourceMappingURL=backup.js.map + +/***/ }), + +/***/ 9743: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RUST_SDK_STORE_PREFIX = void 0; +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** The prefix used on indexeddbs created by rust-crypto */ +const RUST_SDK_STORE_PREFIX = exports.RUST_SDK_STORE_PREFIX = "matrix-js-sdk"; +//# sourceMappingURL=constants.js.map + +/***/ }), + +/***/ 2654: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.deviceKeysToDeviceMap = deviceKeysToDeviceMap; +exports.downloadDeviceToJsDevice = downloadDeviceToJsDevice; +exports.rustDeviceToJsDevice = rustDeviceToJsDevice; +var RustSdkCryptoJs = _interopRequireWildcard(__nccwpck_require__(4822)); +var _device = __nccwpck_require__(7482); +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; } +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Convert a {@link RustSdkCryptoJs.Device} to a {@link Device} + * @param device - Rust Sdk device + * @param userId - owner of the device + * + * @internal + */ +function rustDeviceToJsDevice(device, userId) { + // Copy rust device keys to Device.keys + const keys = new Map(); + for (const [keyId, key] of device.keys.entries()) { + keys.set(keyId.toString(), key.toBase64()); + } + + // Compute verified from device state + let verified = _device.DeviceVerification.Unverified; + if (device.isBlacklisted()) { + verified = _device.DeviceVerification.Blocked; + } else if (device.isVerified()) { + verified = _device.DeviceVerification.Verified; + } + + // Convert rust signatures to Device.signatures + const signatures = new Map(); + const mayBeSignatureMap = device.signatures.get(userId); + if (mayBeSignatureMap) { + const convertedSignatures = new Map(); + // Convert maybeSignatures map to a Map + for (const [key, value] of mayBeSignatureMap.entries()) { + if (value.isValid() && value.signature) { + convertedSignatures.set(key, value.signature.toBase64()); + } + } + signatures.set(userId.toString(), convertedSignatures); + } + + // Convert rust algorithms to algorithms + const rustAlgorithms = device.algorithms; + // Use set to ensure that algorithms are not duplicated + const algorithms = new Set(); + rustAlgorithms.forEach(algorithm => { + switch (algorithm) { + case RustSdkCryptoJs.EncryptionAlgorithm.MegolmV1AesSha2: + algorithms.add("m.megolm.v1.aes-sha2"); + break; + case RustSdkCryptoJs.EncryptionAlgorithm.OlmV1Curve25519AesSha2: + default: + algorithms.add("m.olm.v1.curve25519-aes-sha2"); + break; + } + }); + return new _device.Device({ + deviceId: device.deviceId.toString(), + userId: userId.toString(), + keys, + algorithms: Array.from(algorithms), + verified, + signatures, + displayName: device.displayName, + dehydrated: device.isDehydrated + }); +} + +/** + * Convert {@link DeviceKeys} from `/keys/query` request to a `Map` + * @param deviceKeys - Device keys object to convert + * + * @internal + */ +function deviceKeysToDeviceMap(deviceKeys) { + return new Map(Object.entries(deviceKeys).map(([deviceId, device]) => [deviceId, downloadDeviceToJsDevice(device)])); +} + +// Device from `/keys/query` request + +/** + * Convert `/keys/query` {@link QueryDevice} device to {@link Device} + * @param device - Device from `/keys/query` request + * + * @internal + */ +function downloadDeviceToJsDevice(device) { + var _device$unsigned; + const keys = new Map(Object.entries(device.keys)); + const displayName = (_device$unsigned = device.unsigned) === null || _device$unsigned === void 0 ? void 0 : _device$unsigned.device_display_name; + const signatures = new Map(); + if (device.signatures) { + for (const userId in device.signatures) { + signatures.set(userId, new Map(Object.entries(device.signatures[userId]))); + } + } + return new _device.Device({ + deviceId: device.device_id, + userId: device.user_id, + keys, + algorithms: device.algorithms, + verified: _device.DeviceVerification.Unverified, + signatures, + displayName + }); +} +//# sourceMappingURL=device-converter.js.map + +/***/ }), + +/***/ 9972: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.initRustCrypto = initRustCrypto; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _matrixSdkCryptoWasm = _interopRequireWildcard(__nccwpck_require__(4822)); +var RustSdkCryptoJs = _matrixSdkCryptoWasm; +var _rustCrypto = __nccwpck_require__(5555); +var _base = __nccwpck_require__(2356); +var _libolm_migration = __nccwpck_require__(8824); +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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/** + * Create a new `RustCrypto` implementation + * + * @param args - Parameter object + * @internal + */ +async function initRustCrypto(args) { + var _args$storePrefix, _ref; + const { + logger + } = args; + + // initialise the rust matrix-sdk-crypto-wasm, if it hasn't already been done + logger.debug("Initialising Rust crypto-sdk WASM artifact"); + await RustSdkCryptoJs.initAsync(); + + // enable tracing in the rust-sdk + new RustSdkCryptoJs.Tracing(RustSdkCryptoJs.LoggerLevel.Debug).turnOn(); + logger.debug("Opening Rust CryptoStore"); + const storeHandle = await _matrixSdkCryptoWasm.StoreHandle.open((_args$storePrefix = args.storePrefix) !== null && _args$storePrefix !== void 0 ? _args$storePrefix : undefined, (_ref = args.storePrefix && args.storePassphrase) !== null && _ref !== void 0 ? _ref : undefined); + if (args.legacyCryptoStore) { + // We have a legacy crypto store, which we may need to migrate from. + await (0, _libolm_migration.migrateFromLegacyCrypto)(_objectSpread({ + legacyStore: args.legacyCryptoStore, + storeHandle + }, args)); + } + const rustCrypto = await initOlmMachine(logger, args.http, args.userId, args.deviceId, args.secretStorage, args.cryptoCallbacks, storeHandle, args.legacyCryptoStore); + storeHandle.free(); + logger.debug("Completed rust crypto-sdk setup"); + return rustCrypto; +} +async function initOlmMachine(logger, http, userId, deviceId, secretStorage, cryptoCallbacks, storeHandle, legacyCryptoStore) { + logger.debug("Init OlmMachine"); + const olmMachine = await RustSdkCryptoJs.OlmMachine.initFromStore(new RustSdkCryptoJs.UserId(userId), new RustSdkCryptoJs.DeviceId(deviceId), storeHandle); + + // A final migration step, now that we have an OlmMachine. + if (legacyCryptoStore) { + await (0, _libolm_migration.migrateRoomSettingsFromLegacyCrypto)({ + logger, + legacyStore: legacyCryptoStore, + olmMachine + }); + } + + // Disable room key requests, per https://github.com/vector-im/element-web/issues/26524. + olmMachine.roomKeyRequestsEnabled = false; + const rustCrypto = new _rustCrypto.RustCrypto(logger, olmMachine, http, userId, deviceId, secretStorage, cryptoCallbacks); + await olmMachine.registerRoomKeyUpdatedCallback(sessions => rustCrypto.onRoomKeysUpdated(sessions)); + await olmMachine.registerUserIdentityUpdatedCallback(userId => rustCrypto.onUserIdentityUpdated(userId)); + await olmMachine.registerDevicesUpdatedCallback(userIds => rustCrypto.onDevicesUpdated(userIds)); + + // Check if there are any key backup secrets pending processing. There may be multiple secrets to process if several devices have gossiped them. + // The `registerReceiveSecretCallback` function will only be triggered for new secrets. If the client is restarted before processing them, the secrets will need to be manually handled. + rustCrypto.checkSecrets("m.megolm_backup.v1"); + + // Register a callback to be notified when a new secret is received, as for now only the key backup secret is supported (the cross signing secrets are handled automatically by the OlmMachine) + await olmMachine.registerReceiveSecretCallback((name, _value) => + // Instead of directly checking the secret value, we poll the inbox to get all values for that secret type. + // Once we have all the values, we can safely clear the secret inbox. + rustCrypto.checkSecrets(name)); + + // Tell the OlmMachine to think about its outgoing requests before we hand control back to the application. + // + // This is primarily a fudge to get it to correctly populate the `users_for_key_query` list, so that future + // calls to getIdentity (etc) block until the key queries are performed. + // + // Note that we don't actually need to *make* any requests here; it is sufficient to tell the Rust side to think + // about them. + // + // XXX: find a less hacky way to do this. + await olmMachine.outgoingRequests(); + if (legacyCryptoStore && (await legacyCryptoStore.containsData())) { + const migrationState = await legacyCryptoStore.getMigrationState(); + if (migrationState < _base.MigrationState.INITIAL_OWN_KEY_QUERY_DONE) { + logger.debug(`Performing initial key query after migration`); + // We need to do an initial keys query so that the rust stack can properly update trust of + // the user device and identity from the migrated private keys. + // If not done, there is a short period where the own device/identity trust will be undefined after migration. + let initialKeyQueryDone = false; + while (!initialKeyQueryDone) { + try { + await rustCrypto.userHasCrossSigningKeys(userId); + initialKeyQueryDone = true; + } catch (e) { + // If the initial key query fails, we retry until it succeeds. + logger.error("Failed to check for cross-signing keys after migration, retrying", e); + } + } + + // If the private master cross-signing key was not cached in the legacy store, the rust session + // will not be able to establish the trust of the user identity. + // That means that after migration the session could revert to unverified. + // In order to avoid asking the users to re-verify their sessions, we need to migrate the legacy local trust + // (if the legacy session was already verified) to the new session. + await (0, _libolm_migration.migrateLegacyLocalTrustIfNeeded)({ + legacyCryptoStore, + rustCrypto, + logger + }); + await legacyCryptoStore.setMigrationState(_base.MigrationState.INITIAL_OWN_KEY_QUERY_DONE); + } + } + return rustCrypto; +} +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 8824: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.migrateFromLegacyCrypto = migrateFromLegacyCrypto; +exports.migrateLegacyLocalTrustIfNeeded = migrateLegacyLocalTrustIfNeeded; +exports.migrateRoomSettingsFromLegacyCrypto = migrateRoomSettingsFromLegacyCrypto; +var RustSdkCryptoJs = _interopRequireWildcard(__nccwpck_require__(4822)); +var _base = __nccwpck_require__(2356); +var _indexeddbCryptoStore = __nccwpck_require__(5651); +var _aes = __nccwpck_require__(7502); +var _backup = __nccwpck_require__(1851); +var _utils = __nccwpck_require__(2557); +var _base2 = __nccwpck_require__(7477); +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; } +/* +Copyright 2023-2024 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Determine if any data needs migrating from the legacy store, and do so. + * + * This migrates the base account data, and olm and megolm sessions. It does *not* migrate the room list, which should + * happen after an `OlmMachine` is created, via {@link migrateRoomSettingsFromLegacyCrypto}. + * + * @param args - Arguments object. + */ +async function migrateFromLegacyCrypto(args) { + var _args$legacyMigration2; + const { + logger, + legacyStore + } = args; + + // initialise the rust matrix-sdk-crypto-wasm, if it hasn't already been done + await RustSdkCryptoJs.initAsync(); + + // enable tracing in the rust-sdk + new RustSdkCryptoJs.Tracing(RustSdkCryptoJs.LoggerLevel.Debug).turnOn(); + if (!(await legacyStore.containsData())) { + // This store was never used. Nothing to migrate. + return; + } + await legacyStore.startup(); + let migrationState = await legacyStore.getMigrationState(); + if (migrationState >= _base.MigrationState.MEGOLM_SESSIONS_MIGRATED) { + // All migration is done for now. The room list comes later, once we have an OlmMachine. + return; + } + const nOlmSessions = await countOlmSessions(logger, legacyStore); + const nMegolmSessions = await countMegolmSessions(logger, legacyStore); + const totalSteps = 1 + nOlmSessions + nMegolmSessions; + logger.info(`Migrating data from legacy crypto store. ${nOlmSessions} olm sessions and ${nMegolmSessions} megolm sessions to migrate.`); + let stepsDone = 0; + function onProgress(steps) { + var _args$legacyMigration; + stepsDone += steps; + (_args$legacyMigration = args.legacyMigrationProgressListener) === null || _args$legacyMigration === void 0 || _args$legacyMigration.call(args, stepsDone, totalSteps); + } + onProgress(0); + const pickleKey = new TextEncoder().encode(args.legacyPickleKey); + if (migrationState === _base.MigrationState.NOT_STARTED) { + logger.info("Migrating data from legacy crypto store. Step 1: base data"); + await migrateBaseData(args.http, args.userId, args.deviceId, legacyStore, pickleKey, args.storeHandle, logger); + migrationState = _base.MigrationState.INITIAL_DATA_MIGRATED; + await legacyStore.setMigrationState(migrationState); + } + onProgress(1); + if (migrationState === _base.MigrationState.INITIAL_DATA_MIGRATED) { + logger.info(`Migrating data from legacy crypto store. Step 2: olm sessions (${nOlmSessions} sessions to migrate).`); + await migrateOlmSessions(logger, legacyStore, pickleKey, args.storeHandle, onProgress); + migrationState = _base.MigrationState.OLM_SESSIONS_MIGRATED; + await legacyStore.setMigrationState(migrationState); + } + if (migrationState === _base.MigrationState.OLM_SESSIONS_MIGRATED) { + logger.info(`Migrating data from legacy crypto store. Step 3: megolm sessions (${nMegolmSessions} sessions to migrate).`); + await migrateMegolmSessions(logger, legacyStore, pickleKey, args.storeHandle, onProgress); + migrationState = _base.MigrationState.MEGOLM_SESSIONS_MIGRATED; + await legacyStore.setMigrationState(migrationState); + } + + // Migration is done. + (_args$legacyMigration2 = args.legacyMigrationProgressListener) === null || _args$legacyMigration2 === void 0 || _args$legacyMigration2.call(args, -1, -1); + logger.info("Migration from legacy crypto store complete"); +} +async function migrateBaseData(http, userId, deviceId, legacyStore, pickleKey, storeHandle, logger) { + const migrationData = new RustSdkCryptoJs.BaseMigrationData(); + migrationData.userId = new RustSdkCryptoJs.UserId(userId); + migrationData.deviceId = new RustSdkCryptoJs.DeviceId(deviceId); + await legacyStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => legacyStore.getAccount(txn, a => { + migrationData.pickledAccount = a !== null && a !== void 0 ? a : ""; + })); + const recoveryKey = await getAndDecryptCachedSecretKey(legacyStore, pickleKey, "m.megolm_backup.v1"); + + // If we have a backup recovery key, we need to try to figure out which backup version it is for. + // All we can really do is ask the server for the most recent version and check if the cached key we have matches. + // It is possible that the backup has changed since last time his session was opened. + if (recoveryKey) { + let backupCallDone = false; + let backupInfo = null; + while (!backupCallDone) { + try { + backupInfo = await (0, _backup.requestKeyBackupVersion)(http); + backupCallDone = true; + } catch (e) { + logger.info("Failed to get backup version during migration, retrying in 2 seconds", e); + // Retry until successful, use simple constant delay + await (0, _utils.sleep)(2000); + } + } + if (backupInfo && backupInfo.algorithm == "m.megolm_backup.v1.curve25519-aes-sha2") { + // check if the recovery key matches, as the active backup version may have changed since the key was cached + // and the migration started. + try { + var _backupInfo$auth_data; + const decryptionKey = RustSdkCryptoJs.BackupDecryptionKey.fromBase64(recoveryKey); + const publicKey = (_backupInfo$auth_data = backupInfo.auth_data) === null || _backupInfo$auth_data === void 0 ? void 0 : _backupInfo$auth_data.public_key; + const isValid = decryptionKey.megolmV1PublicKey.publicKeyBase64 == publicKey; + if (isValid) { + migrationData.backupVersion = backupInfo.version; + migrationData.backupRecoveryKey = recoveryKey; + } else { + logger.debug("The backup key to migrate does not match the active backup version", `Cached pub key: ${decryptionKey.megolmV1PublicKey.publicKeyBase64}`, `Active pub key: ${publicKey}`); + } + } catch (e) { + logger.warn("Failed to check if the backup key to migrate matches the active backup version", e); + } + } + } + migrationData.privateCrossSigningMasterKey = await getAndDecryptCachedSecretKey(legacyStore, pickleKey, "master"); + migrationData.privateCrossSigningSelfSigningKey = await getAndDecryptCachedSecretKey(legacyStore, pickleKey, "self_signing"); + migrationData.privateCrossSigningUserSigningKey = await getAndDecryptCachedSecretKey(legacyStore, pickleKey, "user_signing"); + await RustSdkCryptoJs.Migration.migrateBaseData(migrationData, pickleKey, storeHandle); +} +async function countOlmSessions(logger, legacyStore) { + logger.debug("Counting olm sessions to be migrated"); + let nSessions; + await legacyStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_SESSIONS], txn => legacyStore.countEndToEndSessions(txn, n => nSessions = n)); + return nSessions; +} +async function countMegolmSessions(logger, legacyStore) { + logger.debug("Counting megolm sessions to be migrated"); + return await legacyStore.countEndToEndInboundGroupSessions(); +} +async function migrateOlmSessions(logger, legacyStore, pickleKey, storeHandle, onBatchDone) { + // eslint-disable-next-line no-constant-condition + while (true) { + const batch = await legacyStore.getEndToEndSessionsBatch(); + if (batch === null) return; + logger.debug(`Migrating batch of ${batch.length} olm sessions`); + const migrationData = []; + for (const session of batch) { + const pickledSession = new RustSdkCryptoJs.PickledSession(); + pickledSession.senderKey = session.deviceKey; + pickledSession.pickle = session.session; + pickledSession.lastUseTime = pickledSession.creationTime = new Date(session.lastReceivedMessageTs); + migrationData.push(pickledSession); + } + await RustSdkCryptoJs.Migration.migrateOlmSessions(migrationData, pickleKey, storeHandle); + await legacyStore.deleteEndToEndSessionsBatch(batch); + onBatchDone(batch.length); + } +} +async function migrateMegolmSessions(logger, legacyStore, pickleKey, storeHandle, onBatchDone) { + // eslint-disable-next-line no-constant-condition + while (true) { + const batch = await legacyStore.getEndToEndInboundGroupSessionsBatch(); + if (batch === null) return; + logger.debug(`Migrating batch of ${batch.length} megolm sessions`); + const migrationData = []; + for (const session of batch) { + var _sessionData$keysClai; + const sessionData = session.sessionData; + const pickledSession = new RustSdkCryptoJs.PickledInboundGroupSession(); + pickledSession.pickle = sessionData.session; + pickledSession.roomId = new RustSdkCryptoJs.RoomId(sessionData.room_id); + pickledSession.senderKey = session.senderKey; + pickledSession.senderSigningKey = (_sessionData$keysClai = sessionData.keysClaimed) === null || _sessionData$keysClai === void 0 ? void 0 : _sessionData$keysClai["ed25519"]; + pickledSession.backedUp = !session.needsBackup; + + // The Rust SDK `imported` flag is used to indicate the authenticity status of a Megolm + // session, which tells us whether we can reliably tell which Olm device is the owner + // (creator) of the session. + // + // If `imported` is true, then we have no cryptographic proof that the session is owned + // by the device with the identity key `senderKey`. + // + // Only Megolm sessions received directly from the owning device via an encrypted + // `m.room_key` to-device message should have `imported` flag set to false. Megolm + // sessions received by any other currently available means (i.e. from a + // `m.forwarded_room_key`, from v1 asymmetric server-side key backup, imported from a + // file, etc) should have the `imported` flag set to true. + // + // Messages encrypted with such Megolm sessions will have a grey shield in the UI + // ("Authenticity of this message cannot be guaranteed"). + // + // However, we don't want to bluntly mark all sessions as `imported` during migration + // because users will suddenly start seeing all their historic messages decorated with a + // grey shield, which would be seen as a non-actionable regression. + // + // In the legacy crypto stack, the flag encoding similar information was called + // `InboundGroupSessionData.untrusted`. The value of this flag was set as follows: + // + // - For outbound Megolm sessions created by our own device, `untrusted` is `undefined`. + // - For Megolm sessions received via a `m.room_key` to-device message, `untrusted` is + // `undefined`. + // - For Megolm sessions received via a `m.forwarded_room_key` to-device message, + // `untrusted` is `true`. + // - For Megolm sessions imported from a (v1 asymmetric / "legacy") server-side key + // backup, `untrusted` is `true`. + // - For Megolm sessions imported from a file, untrusted is `undefined`. + // + // The main difference between the legacy crypto stack and the Rust crypto stack is that + // the Rust stack considers sessions imported from a file as `imported` (not + // authenticated). This is because the Megolm session export file format does not + // encode this authenticity information. + // + // Given this migration is only a one-time thing, we make a concession to accept the + // loss of information in this case, to avoid degrading UX in a non-actionable way. + pickledSession.imported = sessionData.untrusted === true; + migrationData.push(pickledSession); + } + await RustSdkCryptoJs.Migration.migrateMegolmSessions(migrationData, pickleKey, storeHandle); + await legacyStore.deleteEndToEndInboundGroupSessionsBatch(batch); + onBatchDone(batch.length); + } +} + +/** + * Determine if any room settings need migrating from the legacy store, and do so. + * + * @param args - Arguments object. + */ +async function migrateRoomSettingsFromLegacyCrypto({ + logger, + legacyStore, + olmMachine +}) { + if (!(await legacyStore.containsData())) { + // This store was never used. Nothing to migrate. + return; + } + const migrationState = await legacyStore.getMigrationState(); + if (migrationState >= _base.MigrationState.ROOM_SETTINGS_MIGRATED) { + // We've already migrated the room settings. + return; + } + let rooms = {}; + await legacyStore.doTxn("readwrite", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ROOMS], txn => { + legacyStore.getEndToEndRooms(txn, result => { + rooms = result; + }); + }); + logger.debug(`Migrating ${Object.keys(rooms).length} sets of room settings`); + for (const [roomId, legacySettings] of Object.entries(rooms)) { + try { + const rustSettings = new RustSdkCryptoJs.RoomSettings(); + if (legacySettings.algorithm !== "m.megolm.v1.aes-sha2") { + logger.warn(`Room ${roomId}: ignoring room with invalid algorithm ${legacySettings.algorithm}`); + continue; + } + rustSettings.algorithm = RustSdkCryptoJs.EncryptionAlgorithm.MegolmV1AesSha2; + rustSettings.sessionRotationPeriodMs = legacySettings.rotation_period_ms; + rustSettings.sessionRotationPeriodMessages = legacySettings.rotation_period_msgs; + await olmMachine.setRoomSettings(new RustSdkCryptoJs.RoomId(roomId), rustSettings); + + // We don't attempt to clear out the settings from the old store, or record where we've gotten up to, + // which means that if the app gets restarted while we're in the middle of this migration, we'll start + // again from scratch. So be it. Given that legacy crypto loads the whole room list into memory on startup + // anyway, we know it can't be that big. + } catch (e) { + logger.warn(`Room ${roomId}: ignoring settings ${JSON.stringify(legacySettings)} which caused error ${e}`); + } + } + logger.debug(`Completed room settings migration`); + await legacyStore.setMigrationState(_base.MigrationState.ROOM_SETTINGS_MIGRATED); +} +async function getAndDecryptCachedSecretKey(legacyStore, legacyPickleKey, name) { + const key = await new Promise(resolve => { + legacyStore.doTxn("readonly", [_indexeddbCryptoStore.IndexedDBCryptoStore.STORE_ACCOUNT], txn => { + legacyStore.getSecretStorePrivateKey(txn, resolve, name); + }); + }); + if (key && key.ciphertext && key.iv && key.mac) { + return await (0, _aes.decryptAES)(key, legacyPickleKey, name); + } else if (key instanceof Uint8Array) { + // This is a legacy backward compatibility case where the key was stored in clear. + return (0, _base2.encodeBase64)(key); + } else { + return undefined; + } +} + +/** + * Check if the user's published identity (ie, public cross-signing keys) was trusted by the legacy session, + * and if so mark it as trusted in the Rust session if needed. + * + * By default, if the legacy session didn't have the private MSK, the migrated session will revert to unverified, + * even if the user has verified the session in the past. + * + * This only occurs if the private MSK was not cached in the crypto store (USK and SSK private keys won't help + * to establish trust: the trust is rooted in the MSK). + * + * Rust crypto will only consider the current session as trusted if we import the private MSK itself. + * + * We could prompt the user to verify the session again, but it's probably better to just mark the user identity + * as locally verified if it was before. + * + * See https://github.com/element-hq/element-web/issues/27079 + * + * @param args - Argument object. + */ +async function migrateLegacyLocalTrustIfNeeded(args) { + const { + legacyCryptoStore, + rustCrypto, + logger + } = args; + // Get the public cross-signing identity from rust. + const rustOwnIdentity = await rustCrypto.getOwnIdentity(); + if (!rustOwnIdentity) { + // There are no cross-signing keys published server side, so nothing to do here. + return; + } + if (rustOwnIdentity.isVerified()) { + // The rust session already trusts the keys, so again, nothing to do. + return; + } + const legacyLocallyTrustedMSK = await getLegacyTrustedPublicMasterKeyBase64(legacyCryptoStore); + if (!legacyLocallyTrustedMSK) { + // The user never verified their identity in the legacy session, so nothing to do. + return; + } + const mskInfo = JSON.parse(rustOwnIdentity.masterKey); + if (!mskInfo.keys || Object.keys(mskInfo.keys).length === 0) { + // This should not happen, but let's be safe + logger.error("Post Migration | Unexpected error: no master key in the rust session."); + return; + } + const rustSeenMSK = Object.values(mskInfo.keys)[0]; + if (rustSeenMSK && rustSeenMSK == legacyLocallyTrustedMSK) { + logger.info(`Post Migration: Migrating legacy trusted MSK: ${legacyLocallyTrustedMSK} to locally verified.`); + // Let's mark the user identity as locally verified as part of the migration. + await rustOwnIdentity.verify(); + // As well as marking the MSK as trusted, `OlmMachine.verify` returns a + // `SignatureUploadRequest` which will publish a signature of the MSK using + // this device. In this case, we ignore the request: since the user hasn't + // actually re-verified the MSK, we don't publish a new signature. (`.verify` + // doesn't store the signature, and if we drop the request here it won't be + // retried.) + // + // Not publishing the signature is consistent with the behaviour of + // matrix-crypto-sdk when the private key is imported via + // `importCrossSigningKeys`, and when the identity is verified via interactive + // verification. + // + // [Aside: device signatures on the MSK are not considered by the rust-sdk to + // establish the trust of the user identity so in any case, what we actually do + // here is somewhat moot.] + } +} + +/** + * Checks if the legacy store has a trusted public master key, and returns it if so. + * + * @param legacyStore - The legacy store to check. + * + * @returns `null` if there were no cross signing keys or if they were not trusted. The trusted public master key if it was. + */ +async function getLegacyTrustedPublicMasterKeyBase64(legacyStore) { + let maybeTrustedKeys = null; + await legacyStore.doTxn("readonly", "account", txn => { + legacyStore.getCrossSigningKeys(txn, keys => { + // can be an empty object after resetting cross-signing keys, see storeTrustedSelfKeys + const msk = keys === null || keys === void 0 ? void 0 : keys.master; + if (msk && Object.keys(msk.keys).length != 0) { + // `msk.keys` is an object with { [`ed25519:${pubKey}`]: pubKey } + maybeTrustedKeys = Object.values(msk.keys)[0]; + } + }); + }); + return maybeTrustedKeys; +} +//# sourceMappingURL=libolm_migration.js.map + +/***/ }), + +/***/ 5555: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RustCrypto = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _anotherJson = _interopRequireDefault(__nccwpck_require__(7775)); +var RustSdkCryptoJs = _interopRequireWildcard(__nccwpck_require__(4822)); +var _membership = __nccwpck_require__(9225); +var _event = __nccwpck_require__(9564); +var _CryptoBackend = __nccwpck_require__(3959); +var _logger = __nccwpck_require__(3854); +var _httpApi = __nccwpck_require__(7082); +var _RoomEncryptor = __nccwpck_require__(2275); +var _OutgoingRequestProcessor = __nccwpck_require__(4848); +var _KeyClaimManager = __nccwpck_require__(5968); +var _utils = __nccwpck_require__(2557); +var _cryptoApi = __nccwpck_require__(3819); +var _deviceConverter = __nccwpck_require__(2654); +var _secretStorage = __nccwpck_require__(8597); +var _CrossSigningIdentity = __nccwpck_require__(7626); +var _secretStorage2 = __nccwpck_require__(1359); +var _key_passphrase = __nccwpck_require__(7664); +var _recoverykey = __nccwpck_require__(4531); +var _crypto = __nccwpck_require__(8532); +var _verification = __nccwpck_require__(6059); +var _event2 = __nccwpck_require__(7487); +var _crypto2 = __nccwpck_require__(9839); +var _typedEventEmitter = __nccwpck_require__(7150); +var _backup = __nccwpck_require__(1851); +var _ReEmitter = __nccwpck_require__(9554); +var _randomstring = __nccwpck_require__(2495); +var _errors = __nccwpck_require__(1905); +var _base = __nccwpck_require__(7477); +var _OutgoingRequestsManager = __nccwpck_require__(7825); +var _PerSessionKeyBackupDownloader = __nccwpck_require__(5991); +var _DehydratedDeviceManager = __nccwpck_require__(3151); +var _types = __nccwpck_require__(2756); +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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2022-2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +const ALL_VERIFICATION_METHODS = [_types.VerificationMethod.Sas, _types.VerificationMethod.ScanQrCode, _types.VerificationMethod.ShowQrCode, _types.VerificationMethod.Reciprocate]; +/** + * An implementation of {@link CryptoBackend} using the Rust matrix-sdk-crypto. + * + * @internal + */ +class RustCrypto extends _typedEventEmitter.TypedEventEmitter { + constructor(logger, /** The `OlmMachine` from the underlying rust crypto sdk. */ + olmMachine, + /** + * Low-level HTTP interface: used to make outgoing requests required by the rust SDK. + * + * We expect it to set the access token, etc. + */ + http, /** The local user's User ID. */ + userId, /** The local user's Device ID. */ + _deviceId, /** Interface to server-side secret storage */ + secretStorage, /** Crypto callbacks provided by the application */ + cryptoCallbacks) { + super(); + (0, _defineProperty2.default)(this, "_trustCrossSignedDevices", true); + /** whether {@link stop} has been called */ + (0, _defineProperty2.default)(this, "stopped", false); + /** mapping of roomId → encryptor class */ + (0, _defineProperty2.default)(this, "roomEncryptors", {}); + (0, _defineProperty2.default)(this, "reemitter", new _ReEmitter.TypedReEmitter(this)); + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // CryptoApi implementation + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + (0, _defineProperty2.default)(this, "globalBlacklistUnverifiedDevices", false); + /** + * The verification methods we offer to the other side during an interactive verification. + */ + (0, _defineProperty2.default)(this, "_supportedVerificationMethods", ALL_VERIFICATION_METHODS); + this.logger = logger; + this.olmMachine = olmMachine; + this.http = http; + this.userId = userId; + this.secretStorage = secretStorage; + this.cryptoCallbacks = cryptoCallbacks; + this.outgoingRequestProcessor = new _OutgoingRequestProcessor.OutgoingRequestProcessor(olmMachine, http); + this.outgoingRequestsManager = new _OutgoingRequestsManager.OutgoingRequestsManager(this.logger, olmMachine, this.outgoingRequestProcessor); + this.keyClaimManager = new _KeyClaimManager.KeyClaimManager(olmMachine, this.outgoingRequestProcessor); + this.backupManager = new _backup.RustBackupManager(olmMachine, http, this.outgoingRequestProcessor); + this.perSessionBackupDownloader = new _PerSessionKeyBackupDownloader.PerSessionKeyBackupDownloader(this.logger, this.olmMachine, this.http, this.backupManager); + this.dehydratedDeviceManager = new _DehydratedDeviceManager.DehydratedDeviceManager(this.logger, olmMachine, http, this.outgoingRequestProcessor, secretStorage); + this.eventDecryptor = new EventDecryptor(this.logger, olmMachine, this.perSessionBackupDownloader); + this.reemitter.reEmit(this.backupManager, [_crypto2.CryptoEvent.KeyBackupStatus, _crypto2.CryptoEvent.KeyBackupSessionsRemaining, _crypto2.CryptoEvent.KeyBackupFailed, _crypto2.CryptoEvent.KeyBackupDecryptionKeyCached]); + this.crossSigningIdentity = new _CrossSigningIdentity.CrossSigningIdentity(olmMachine, this.outgoingRequestProcessor, secretStorage); + + // Check and start in background the key backup connection + this.checkKeyBackupAndEnable(); + } + + /** + * Return the OlmMachine only if {@link RustCrypto#stop} has not been called. + * + * This allows us to better handle race conditions where the client is stopped before or during a crypto API call. + * + * @throws ClientStoppedError if {@link RustCrypto#stop} has been called. + */ + getOlmMachineOrThrow() { + if (this.stopped) { + throw new _errors.ClientStoppedError(); + } + return this.olmMachine; + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // CryptoBackend implementation + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + set globalErrorOnUnknownDevices(_v) { + // Not implemented for rust crypto. + } + get globalErrorOnUnknownDevices() { + // Not implemented for rust crypto. + return false; + } + stop() { + // stop() may be called multiple times, but attempting to close() the OlmMachine twice + // will cause an error. + if (this.stopped) { + return; + } + this.stopped = true; + this.keyClaimManager.stop(); + this.backupManager.stop(); + this.outgoingRequestsManager.stop(); + this.perSessionBackupDownloader.stop(); + this.dehydratedDeviceManager.stop(); + + // make sure we close() the OlmMachine; doing so means that all the Rust objects will be + // cleaned up; in particular, the indexeddb connections will be closed, which means they + // can then be deleted. + this.olmMachine.close(); + } + async encryptEvent(event, _room) { + const roomId = event.getRoomId(); + const encryptor = this.roomEncryptors[roomId]; + if (!encryptor) { + throw new Error(`Cannot encrypt event in unconfigured room ${roomId}`); + } + await encryptor.encryptEvent(event, this.globalBlacklistUnverifiedDevices); + } + async decryptEvent(event) { + const roomId = event.getRoomId(); + if (!roomId) { + // presumably, a to-device message. These are normally decrypted in preprocessToDeviceMessages + // so the fact it has come back here suggests that decryption failed. + // + // once we drop support for the libolm crypto implementation, we can stop passing to-device messages + // through decryptEvent and hence get rid of this case. + throw new Error("to-device event was not decrypted in preprocessToDeviceMessages"); + } + return await this.eventDecryptor.attemptEventDecryption(event); + } + + /** + * Implementation of (deprecated) {@link MatrixClient#getEventEncryptionInfo}. + * + * @param event - event to inspect + */ + getEventEncryptionInfo(event) { + var _event$getSenderKey; + const ret = {}; + ret.senderKey = (_event$getSenderKey = event.getSenderKey()) !== null && _event$getSenderKey !== void 0 ? _event$getSenderKey : undefined; + ret.algorithm = event.getWireContent().algorithm; + if (!ret.senderKey || !ret.algorithm) { + ret.encrypted = false; + return ret; + } + ret.encrypted = true; + ret.authenticated = true; + ret.mismatchedSender = true; + return ret; + } + + /** + * Implementation of {@link CryptoBackend#checkUserTrust}. + * + * Stub for backwards compatibility. + * + */ + checkUserTrust(userId) { + return new _cryptoApi.UserVerificationStatus(false, false, false); + } + + /** + * Get the cross signing information for a given user. + * + * The cross-signing API is currently UNSTABLE and may change without notice. + * + * @param userId - the user ID to get the cross-signing info for. + * + * @returns the cross signing information for the user. + */ + getStoredCrossSigningForUser(userId) { + // TODO + return null; + } + + /** + * This function is unneeded for the rust-crypto. + * The cross signing key import and the device verification are done in {@link CryptoApi#bootstrapCrossSigning} + * + * The function is stub to keep the compatibility with the old crypto. + * More information: https://github.com/vector-im/element-web/issues/25648 + * + * Implementation of {@link CryptoBackend#checkOwnCrossSigningTrust} + */ + async checkOwnCrossSigningTrust() { + return; + } + /** + * Implementation of {@link CryptoApi#getVersion}. + */ + getVersion() { + const versions = RustSdkCryptoJs.getVersions(); + return `Rust SDK ${versions.matrix_sdk_crypto} (${versions.git_sha}), Vodozemac ${versions.vodozemac}`; + } + + /** + * Implementation of {@link CryptoApi#isEncryptionEnabledInRoom}. + */ + async isEncryptionEnabledInRoom(roomId) { + const roomSettings = await this.olmMachine.getRoomSettings(new RustSdkCryptoJs.RoomId(roomId)); + return Boolean(roomSettings === null || roomSettings === void 0 ? void 0 : roomSettings.algorithm); + } + + /** + * Implementation of {@link CryptoApi#getOwnDeviceKeys}. + */ + async getOwnDeviceKeys() { + const keys = this.olmMachine.identityKeys; + return { + ed25519: keys.ed25519.toBase64(), + curve25519: keys.curve25519.toBase64() + }; + } + prepareToEncrypt(room) { + const encryptor = this.roomEncryptors[room.roomId]; + if (encryptor) { + encryptor.prepareForEncryption(this.globalBlacklistUnverifiedDevices); + } + } + forceDiscardSession(roomId) { + var _this$roomEncryptors$; + return (_this$roomEncryptors$ = this.roomEncryptors[roomId]) === null || _this$roomEncryptors$ === void 0 ? void 0 : _this$roomEncryptors$.forceDiscardSession(); + } + async exportRoomKeys() { + const raw = await this.olmMachine.exportRoomKeys(() => true); + return JSON.parse(raw); + } + async exportRoomKeysAsJson() { + return await this.olmMachine.exportRoomKeys(() => true); + } + async importRoomKeys(keys, opts) { + return await this.backupManager.importRoomKeys(keys, opts); + } + async importRoomKeysAsJson(keys, opts) { + return await this.backupManager.importRoomKeysAsJson(keys, opts); + } + + /** + * Implementation of {@link CryptoApi.userHasCrossSigningKeys}. + */ + async userHasCrossSigningKeys(userId = this.userId, downloadUncached = false) { + // TODO: could probably do with a more efficient way of doing this than returning the whole set and searching + const rustTrackedUsers = await this.olmMachine.trackedUsers(); + let rustTrackedUser; + for (const u of rustTrackedUsers) { + if (userId === u.toString()) { + rustTrackedUser = u; + break; + } + } + if (rustTrackedUser !== undefined) { + if (userId === this.userId) { + /* make sure we have an *up-to-date* idea of the user's cross-signing keys. This is important, because if we + * return "false" here, we will end up generating new cross-signing keys and replacing the existing ones. + */ + const request = this.olmMachine.queryKeysForUsers( + // clone as rust layer will take ownership and it's reused later + [rustTrackedUser.clone()]); + await this.outgoingRequestProcessor.makeOutgoingRequest(request); + } + const userIdentity = await this.olmMachine.getIdentity(rustTrackedUser); + userIdentity === null || userIdentity === void 0 || userIdentity.free(); + return userIdentity !== undefined; + } else if (downloadUncached) { + var _keyResult$master_key; + // Download the cross signing keys and check if the master key is available + const keyResult = await this.downloadDeviceList(new Set([userId])); + const keys = (_keyResult$master_key = keyResult.master_keys) === null || _keyResult$master_key === void 0 ? void 0 : _keyResult$master_key[userId]; + + // No master key + if (!keys) return false; + + // `keys` is an object with { [`ed25519:${pubKey}`]: pubKey } + // We assume only a single key, and we want the bare form without type + // prefix, so we select the values. + return Boolean(Object.values(keys.keys)[0]); + } else { + return false; + } + } + + /** + * Get the device information for the given list of users. + * + * @param userIds - The users to fetch. + * @param downloadUncached - If true, download the device list for users whose device list we are not + * currently tracking. Defaults to false, in which case such users will not appear at all in the result map. + * + * @returns A map `{@link DeviceMap}`. + */ + async getUserDeviceInfo(userIds, downloadUncached = false) { + const deviceMapByUserId = new Map(); + const rustTrackedUsers = await this.getOlmMachineOrThrow().trackedUsers(); + + // Convert RustSdkCryptoJs.UserId to a `Set` + const trackedUsers = new Set(); + rustTrackedUsers.forEach(rustUserId => trackedUsers.add(rustUserId.toString())); + + // Keep untracked user to download their keys after + const untrackedUsers = new Set(); + for (const userId of userIds) { + // if this is a tracked user, we can just fetch the device list from the rust-sdk + // (NB: this is probably ok even if we race with a leave event such that we stop tracking the user's + // devices: the rust-sdk will return the last-known device list, which will be good enough.) + if (trackedUsers.has(userId)) { + deviceMapByUserId.set(userId, await this.getUserDevices(userId)); + } else { + untrackedUsers.add(userId); + } + } + + // for any users whose device lists we are not tracking, fall back to downloading the device list + // over HTTP. + if (downloadUncached && untrackedUsers.size >= 1) { + const queryResult = await this.downloadDeviceList(untrackedUsers); + Object.entries(queryResult.device_keys).forEach(([userId, deviceKeys]) => deviceMapByUserId.set(userId, (0, _deviceConverter.deviceKeysToDeviceMap)(deviceKeys))); + } + return deviceMapByUserId; + } + + /** + * Get the device list for the given user from the olm machine + * @param userId - Rust SDK UserId + */ + async getUserDevices(userId) { + const rustUserId = new RustSdkCryptoJs.UserId(userId); + + // For reasons I don't really understand, the Javascript FinalizationRegistry doesn't seem to run the + // registered callbacks when `userDevices` goes out of scope, nor when the individual devices in the array + // returned by `userDevices.devices` do so. + // + // This is particularly problematic, because each of those structures holds a reference to the + // VerificationMachine, which in turn holds a reference to the IndexeddbCryptoStore. Hence, we end up leaking + // open connections to the crypto store, which means the store can't be deleted on logout. + // + // To fix this, we explicitly call `.free` on each of the objects, which tells the rust code to drop the + // allocated memory and decrement the refcounts for the crypto store. + + // Wait for up to a second for any in-flight device list requests to complete. + // The reason for this isn't so much to avoid races (some level of raciness is + // inevitable for this method) but to make testing easier. + const userDevices = await this.olmMachine.getUserDevices(rustUserId, 1); + try { + const deviceArray = userDevices.devices(); + try { + return new Map(deviceArray.map(device => [device.deviceId.toString(), (0, _deviceConverter.rustDeviceToJsDevice)(device, rustUserId)])); + } finally { + deviceArray.forEach(d => d.free()); + } + } finally { + userDevices.free(); + } + } + + /** + * Download the given user keys by calling `/keys/query` request + * @param untrackedUsers - download keys of these users + */ + async downloadDeviceList(untrackedUsers) { + const queryBody = { + device_keys: {} + }; + untrackedUsers.forEach(user => queryBody.device_keys[user] = []); + return await this.http.authedRequest(_httpApi.Method.Post, "/_matrix/client/v3/keys/query", undefined, queryBody, { + prefix: "" + }); + } + + /** + * Implementation of {@link CryptoApi#getTrustCrossSignedDevices}. + */ + getTrustCrossSignedDevices() { + return this._trustCrossSignedDevices; + } + + /** + * Implementation of {@link CryptoApi#setTrustCrossSignedDevices}. + */ + setTrustCrossSignedDevices(val) { + this._trustCrossSignedDevices = val; + // TODO: legacy crypto goes through the list of known devices and emits DeviceVerificationChanged + // events. Maybe we need to do the same? + } + + /** + * Mark the given device as locally verified. + * + * Implementation of {@link CryptoApi#setDeviceVerified}. + */ + async setDeviceVerified(userId, deviceId, verified = true) { + const device = await this.olmMachine.getDevice(new RustSdkCryptoJs.UserId(userId), new RustSdkCryptoJs.DeviceId(deviceId)); + if (!device) { + throw new Error(`Unknown device ${userId}|${deviceId}`); + } + try { + await device.setLocalTrust(verified ? RustSdkCryptoJs.LocalTrust.Verified : RustSdkCryptoJs.LocalTrust.Unset); + } finally { + device.free(); + } + } + + /** + * Blindly cross-sign one of our other devices. + * + * Implementation of {@link CryptoApi#crossSignDevice}. + */ + async crossSignDevice(deviceId) { + const device = await this.olmMachine.getDevice(new RustSdkCryptoJs.UserId(this.userId), new RustSdkCryptoJs.DeviceId(deviceId)); + if (!device) { + throw new Error(`Unknown device ${deviceId}`); + } + try { + const outgoingRequest = await device.verify(); + await this.outgoingRequestProcessor.makeOutgoingRequest(outgoingRequest); + } finally { + device.free(); + } + } + + /** + * Implementation of {@link CryptoApi#getDeviceVerificationStatus}. + */ + async getDeviceVerificationStatus(userId, deviceId) { + const device = await this.olmMachine.getDevice(new RustSdkCryptoJs.UserId(userId), new RustSdkCryptoJs.DeviceId(deviceId)); + if (!device) return null; + try { + return new _cryptoApi.DeviceVerificationStatus({ + signedByOwner: device.isCrossSignedByOwner(), + crossSigningVerified: device.isCrossSigningTrusted(), + localVerified: device.isLocallyTrusted(), + trustCrossSignedDevices: this._trustCrossSignedDevices + }); + } finally { + device.free(); + } + } + + /** + * Implementation of {@link CryptoApi#getUserVerificationStatus}. + */ + async getUserVerificationStatus(userId) { + const userIdentity = await this.getOlmMachineOrThrow().getIdentity(new RustSdkCryptoJs.UserId(userId)); + if (userIdentity === undefined) { + return new _cryptoApi.UserVerificationStatus(false, false, false); + } + const verified = userIdentity.isVerified(); + userIdentity.free(); + return new _cryptoApi.UserVerificationStatus(verified, false, false); + } + + /** + * Implementation of {@link CryptoApi#isCrossSigningReady} + */ + async isCrossSigningReady() { + const { + privateKeysInSecretStorage, + privateKeysCachedLocally + } = await this.getCrossSigningStatus(); + const hasKeysInCache = Boolean(privateKeysCachedLocally.masterKey) && Boolean(privateKeysCachedLocally.selfSigningKey) && Boolean(privateKeysCachedLocally.userSigningKey); + const identity = await this.getOwnIdentity(); + + // Cross-signing is ready if the public identity is trusted, and the private keys + // are either cached, or accessible via secret-storage. + return !!(identity !== null && identity !== void 0 && identity.isVerified()) && (hasKeysInCache || privateKeysInSecretStorage); + } + + /** + * Implementation of {@link CryptoApi#getCrossSigningKeyId} + */ + async getCrossSigningKeyId(type = _cryptoApi.CrossSigningKey.Master) { + const userIdentity = await this.olmMachine.getIdentity(new RustSdkCryptoJs.UserId(this.userId)); + if (!userIdentity) { + // The public keys are not available on this device + return null; + } + try { + const crossSigningStatus = await this.olmMachine.crossSigningStatus(); + const privateKeysOnDevice = crossSigningStatus.hasMaster && crossSigningStatus.hasUserSigning && crossSigningStatus.hasSelfSigning; + if (!privateKeysOnDevice) { + // The private keys are not available on this device + return null; + } + if (!userIdentity.isVerified()) { + // We have both public and private keys, but they don't match! + return null; + } + let key; + switch (type) { + case _cryptoApi.CrossSigningKey.Master: + key = userIdentity.masterKey; + break; + case _cryptoApi.CrossSigningKey.SelfSigning: + key = userIdentity.selfSigningKey; + break; + case _cryptoApi.CrossSigningKey.UserSigning: + key = userIdentity.userSigningKey; + break; + default: + // Unknown type + return null; + } + const parsedKey = JSON.parse(key); + // `keys` is an object with { [`ed25519:${pubKey}`]: pubKey } + // We assume only a single key, and we want the bare form without type + // prefix, so we select the values. + return Object.values(parsedKey.keys)[0]; + } finally { + userIdentity.free(); + } + } + + /** + * Implementation of {@link CryptoApi#boostrapCrossSigning} + */ + async bootstrapCrossSigning(opts) { + await this.crossSigningIdentity.bootstrapCrossSigning(opts); + } + + /** + * Implementation of {@link CryptoApi#isSecretStorageReady} + */ + async isSecretStorageReady() { + // make sure that the cross-signing keys are stored + const secretsToCheck = ["m.cross_signing.master", "m.cross_signing.user_signing", "m.cross_signing.self_signing"]; + + // if key backup is active, we also need to check that the backup decryption key is stored + const keyBackupEnabled = (await this.backupManager.getActiveBackupVersion()) != null; + if (keyBackupEnabled) { + secretsToCheck.push("m.megolm_backup.v1"); + } + return (0, _secretStorage2.secretStorageCanAccessSecrets)(this.secretStorage, secretsToCheck); + } + + /** + * Implementation of {@link CryptoApi#bootstrapSecretStorage} + */ + async bootstrapSecretStorage({ + createSecretStorageKey, + setupNewSecretStorage, + setupNewKeyBackup + } = {}) { + // If an AES Key is already stored in the secret storage and setupNewSecretStorage is not set + // we don't want to create a new key + const isNewSecretStorageKeyNeeded = setupNewSecretStorage || !(await this.secretStorageHasAESKey()); + if (isNewSecretStorageKeyNeeded) { + if (!createSecretStorageKey) { + throw new Error("unable to create a new secret storage key, createSecretStorageKey is not set"); + } + + // Create a new storage key and add it to secret storage + this.logger.info("bootstrapSecretStorage: creating new secret storage key"); + const recoveryKey = await createSecretStorageKey(); + await this.addSecretStorageKeyToSecretStorage(recoveryKey); + } + const crossSigningStatus = await this.olmMachine.crossSigningStatus(); + const hasPrivateKeys = crossSigningStatus.hasMaster && crossSigningStatus.hasSelfSigning && crossSigningStatus.hasUserSigning; + + // If we have cross-signing private keys cached, store them in secret + // storage if they are not there already. + if (hasPrivateKeys && (isNewSecretStorageKeyNeeded || !(await (0, _secretStorage2.secretStorageContainsCrossSigningKeys)(this.secretStorage)))) { + this.logger.info("bootstrapSecretStorage: cross-signing keys not yet exported; doing so now."); + const crossSigningPrivateKeys = await this.olmMachine.exportCrossSigningKeys(); + if (!crossSigningPrivateKeys.masterKey) { + throw new Error("missing master key in cross signing private keys"); + } + if (!crossSigningPrivateKeys.userSigningKey) { + throw new Error("missing user signing key in cross signing private keys"); + } + if (!crossSigningPrivateKeys.self_signing_key) { + throw new Error("missing self signing key in cross signing private keys"); + } + await this.secretStorage.store("m.cross_signing.master", crossSigningPrivateKeys.masterKey); + await this.secretStorage.store("m.cross_signing.user_signing", crossSigningPrivateKeys.userSigningKey); + await this.secretStorage.store("m.cross_signing.self_signing", crossSigningPrivateKeys.self_signing_key); + } + if (setupNewKeyBackup) { + await this.resetKeyBackup(); + } + } + + /** + * Add the secretStorage key to the secret storage + * - The secret storage key must have the `keyInfo` field filled + * - The secret storage key is set as the default key of the secret storage + * - Call `cryptoCallbacks.cacheSecretStorageKey` when done + * + * @param secretStorageKey - The secret storage key to add in the secret storage. + */ + async addSecretStorageKeyToSecretStorage(secretStorageKey) { + var _secretStorageKey$key, _secretStorageKey$key2, _this$cryptoCallbacks, _this$cryptoCallbacks2; + const secretStorageKeyObject = await this.secretStorage.addKey(_secretStorage.SECRET_STORAGE_ALGORITHM_V1_AES, { + passphrase: (_secretStorageKey$key = secretStorageKey.keyInfo) === null || _secretStorageKey$key === void 0 ? void 0 : _secretStorageKey$key.passphrase, + name: (_secretStorageKey$key2 = secretStorageKey.keyInfo) === null || _secretStorageKey$key2 === void 0 ? void 0 : _secretStorageKey$key2.name, + key: secretStorageKey.privateKey + }); + await this.secretStorage.setDefaultKeyId(secretStorageKeyObject.keyId); + (_this$cryptoCallbacks = (_this$cryptoCallbacks2 = this.cryptoCallbacks).cacheSecretStorageKey) === null || _this$cryptoCallbacks === void 0 || _this$cryptoCallbacks.call(_this$cryptoCallbacks2, secretStorageKeyObject.keyId, secretStorageKeyObject.keyInfo, secretStorageKey.privateKey); + } + + /** + * Check if a secret storage AES Key is already added in secret storage + * + * @returns True if an AES key is in the secret storage + */ + async secretStorageHasAESKey() { + // See if we already have an AES secret-storage key. + const secretStorageKeyTuple = await this.secretStorage.getKey(); + if (!secretStorageKeyTuple) return false; + const [, keyInfo] = secretStorageKeyTuple; + + // Check if the key is an AES key + return keyInfo.algorithm === _secretStorage.SECRET_STORAGE_ALGORITHM_V1_AES; + } + + /** + * Implementation of {@link CryptoApi#getCrossSigningStatus} + */ + async getCrossSigningStatus() { + const userIdentity = await this.getOlmMachineOrThrow().getIdentity(new RustSdkCryptoJs.UserId(this.userId)); + const publicKeysOnDevice = Boolean(userIdentity === null || userIdentity === void 0 ? void 0 : userIdentity.masterKey) && Boolean(userIdentity === null || userIdentity === void 0 ? void 0 : userIdentity.selfSigningKey) && Boolean(userIdentity === null || userIdentity === void 0 ? void 0 : userIdentity.userSigningKey); + userIdentity === null || userIdentity === void 0 || userIdentity.free(); + const privateKeysInSecretStorage = await (0, _secretStorage2.secretStorageContainsCrossSigningKeys)(this.secretStorage); + const crossSigningStatus = await this.getOlmMachineOrThrow().crossSigningStatus(); + return { + publicKeysOnDevice, + privateKeysInSecretStorage, + privateKeysCachedLocally: { + masterKey: Boolean(crossSigningStatus === null || crossSigningStatus === void 0 ? void 0 : crossSigningStatus.hasMaster), + userSigningKey: Boolean(crossSigningStatus === null || crossSigningStatus === void 0 ? void 0 : crossSigningStatus.hasUserSigning), + selfSigningKey: Boolean(crossSigningStatus === null || crossSigningStatus === void 0 ? void 0 : crossSigningStatus.hasSelfSigning) + } + }; + } + + /** + * Implementation of {@link CryptoApi#createRecoveryKeyFromPassphrase} + */ + async createRecoveryKeyFromPassphrase(password) { + if (password) { + // Generate the key from the passphrase + const derivation = await (0, _key_passphrase.keyFromPassphrase)(password); + return { + keyInfo: { + passphrase: { + algorithm: "m.pbkdf2", + iterations: derivation.iterations, + salt: derivation.salt + } + }, + privateKey: derivation.key, + encodedPrivateKey: (0, _recoverykey.encodeRecoveryKey)(derivation.key) + }; + } else { + // Using the navigator crypto API to generate the private key + const key = new Uint8Array(32); + _crypto.crypto.getRandomValues(key); + return { + privateKey: key, + encodedPrivateKey: (0, _recoverykey.encodeRecoveryKey)(key) + }; + } + } + + /** + * Implementation of {@link CryptoApi.getEncryptionInfoForEvent}. + */ + async getEncryptionInfoForEvent(event) { + return this.eventDecryptor.getEncryptionInfoForEvent(event); + } + + /** + * Returns to-device verification requests that are already in progress for the given user id. + * + * Implementation of {@link CryptoApi#getVerificationRequestsToDeviceInProgress} + * + * @param userId - the ID of the user to query + * + * @returns the VerificationRequests that are in progress + */ + getVerificationRequestsToDeviceInProgress(userId) { + const requests = this.olmMachine.getVerificationRequests(new RustSdkCryptoJs.UserId(userId)); + return requests.filter(request => request.roomId === undefined).map(request => new _verification.RustVerificationRequest(this.olmMachine, request, this.outgoingRequestProcessor, this._supportedVerificationMethods)); + } + + /** + * Finds a DM verification request that is already in progress for the given room id + * + * Implementation of {@link CryptoApi#findVerificationRequestDMInProgress} + * + * @param roomId - the room to use for verification + * @param userId - search the verification request for the given user + * + * @returns the VerificationRequest that is in progress, if any + * + */ + findVerificationRequestDMInProgress(roomId, userId) { + if (!userId) throw new Error("missing userId"); + const requests = this.olmMachine.getVerificationRequests(new RustSdkCryptoJs.UserId(userId)); + + // Search for the verification request for the given room id + const request = requests.find(request => { + var _request$roomId; + return ((_request$roomId = request.roomId) === null || _request$roomId === void 0 ? void 0 : _request$roomId.toString()) === roomId; + }); + if (request) { + return new _verification.RustVerificationRequest(this.olmMachine, request, this.outgoingRequestProcessor, this._supportedVerificationMethods); + } + } + + /** + * Implementation of {@link CryptoApi#requestVerificationDM} + */ + async requestVerificationDM(userId, roomId) { + const userIdentity = await this.olmMachine.getIdentity(new RustSdkCryptoJs.UserId(userId)); + if (!userIdentity) throw new Error(`unknown userId ${userId}`); + try { + // Transform the verification methods into rust objects + const methods = this._supportedVerificationMethods.map(method => (0, _verification.verificationMethodIdentifierToMethod)(method)); + // Get the request content to send to the DM room + const verificationEventContent = await userIdentity.verificationRequestContent(methods); + + // Send the request content to send to the DM room + const eventId = await this.sendVerificationRequestContent(roomId, verificationEventContent); + + // Get a verification request + const request = await userIdentity.requestVerification(new RustSdkCryptoJs.RoomId(roomId), new RustSdkCryptoJs.EventId(eventId), methods); + return new _verification.RustVerificationRequest(this.olmMachine, request, this.outgoingRequestProcessor, this._supportedVerificationMethods); + } finally { + userIdentity.free(); + } + } + + /** + * Send the verification content to a room + * See https://spec.matrix.org/v1.7/client-server-api/#put_matrixclientv3roomsroomidsendeventtypetxnid + * + * Prefer to use {@link OutgoingRequestProcessor.makeOutgoingRequest} when dealing with {@link RustSdkCryptoJs.RoomMessageRequest} + * + * @param roomId - the targeted room + * @param verificationEventContent - the request body. + * + * @returns the event id + */ + async sendVerificationRequestContent(roomId, verificationEventContent) { + const txId = (0, _randomstring.randomString)(32); + // Send the verification request content to the DM room + const { + event_id: eventId + } = await this.http.authedRequest(_httpApi.Method.Put, `/_matrix/client/v3/rooms/${encodeURIComponent(roomId)}/send/m.room.message/${encodeURIComponent(txId)}`, undefined, verificationEventContent, { + prefix: "" + }); + return eventId; + } + /** + * Set the verification methods we offer to the other side during an interactive verification. + * + * If `undefined`, we will offer all the methods supported by the Rust SDK. + */ + setSupportedVerificationMethods(methods) { + // by default, the Rust SDK does not offer `m.qr_code.scan.v1`, but we do want to offer that. + this._supportedVerificationMethods = methods !== null && methods !== void 0 ? methods : ALL_VERIFICATION_METHODS; + } + + /** + * Send a verification request to our other devices. + * + * If a verification is already in flight, returns it. Otherwise, initiates a new one. + * + * Implementation of {@link CryptoApi#requestOwnUserVerification}. + * + * @returns a VerificationRequest when the request has been sent to the other party. + */ + async requestOwnUserVerification() { + const userIdentity = await this.olmMachine.getIdentity(new RustSdkCryptoJs.UserId(this.userId)); + if (userIdentity === undefined) { + throw new Error("cannot request verification for this device when there is no existing cross-signing key"); + } + try { + const [request, outgoingRequest] = await userIdentity.requestVerification(this._supportedVerificationMethods.map(_verification.verificationMethodIdentifierToMethod)); + await this.outgoingRequestProcessor.makeOutgoingRequest(outgoingRequest); + return new _verification.RustVerificationRequest(this.olmMachine, request, this.outgoingRequestProcessor, this._supportedVerificationMethods); + } finally { + userIdentity.free(); + } + } + + /** + * Request an interactive verification with the given device. + * + * If a verification is already in flight, returns it. Otherwise, initiates a new one. + * + * Implementation of {@link CryptoApi#requestDeviceVerification}. + * + * @param userId - ID of the owner of the device to verify + * @param deviceId - ID of the device to verify + * + * @returns a VerificationRequest when the request has been sent to the other party. + */ + async requestDeviceVerification(userId, deviceId) { + const device = await this.olmMachine.getDevice(new RustSdkCryptoJs.UserId(userId), new RustSdkCryptoJs.DeviceId(deviceId)); + if (!device) { + throw new Error("Not a known device"); + } + try { + const [request, outgoingRequest] = await device.requestVerification(this._supportedVerificationMethods.map(_verification.verificationMethodIdentifierToMethod)); + await this.outgoingRequestProcessor.makeOutgoingRequest(outgoingRequest); + return new _verification.RustVerificationRequest(this.olmMachine, request, this.outgoingRequestProcessor, this._supportedVerificationMethods); + } finally { + device.free(); + } + } + + /** + * Fetch the backup decryption key we have saved in our store. + * + * Implementation of {@link CryptoApi#getSessionBackupPrivateKey}. + * + * @returns the key, if any, or null + */ + async getSessionBackupPrivateKey() { + const backupKeys = await this.olmMachine.getBackupKeys(); + if (!backupKeys.decryptionKey) return null; + return Buffer.from(backupKeys.decryptionKey.toBase64(), "base64"); + } + + /** + * Store the backup decryption key. + * + * Implementation of {@link CryptoApi#storeSessionBackupPrivateKey}. + * + * @param key - the backup decryption key + * @param version - the backup version for this key. + */ + async storeSessionBackupPrivateKey(key, version) { + const base64Key = (0, _base.encodeBase64)(key); + if (!version) { + throw new Error("storeSessionBackupPrivateKey: version is required"); + } + await this.backupManager.saveBackupDecryptionKey(RustSdkCryptoJs.BackupDecryptionKey.fromBase64(base64Key), version); + } + + /** + * Get the current status of key backup. + * + * Implementation of {@link CryptoApi#getActiveSessionBackupVersion}. + */ + async getActiveSessionBackupVersion() { + return await this.backupManager.getActiveBackupVersion(); + } + + /** + * Determine if a key backup can be trusted. + * + * Implementation of {@link Crypto.CryptoApi.isKeyBackupTrusted}. + */ + async isKeyBackupTrusted(info) { + return await this.backupManager.isKeyBackupTrusted(info); + } + + /** + * Force a re-check of the key backup and enable/disable it as appropriate. + * + * Implementation of {@link Crypto.CryptoApi.checkKeyBackupAndEnable}. + */ + async checkKeyBackupAndEnable() { + return await this.backupManager.checkKeyBackupAndEnable(true); + } + + /** + * Implementation of {@link CryptoApi#deleteKeyBackupVersion}. + */ + async deleteKeyBackupVersion(version) { + await this.backupManager.deleteKeyBackupVersion(version); + } + + /** + * Implementation of {@link CryptoApi#resetKeyBackup}. + */ + async resetKeyBackup() { + const backupInfo = await this.backupManager.setupKeyBackup(o => this.signObject(o)); + + // we want to store the private key in 4S + // need to check if 4S is set up? + if (await this.secretStorageHasAESKey()) { + await this.secretStorage.store("m.megolm_backup.v1", backupInfo.decryptionKey.toBase64()); + } + + // we can check and start async + this.checkKeyBackupAndEnable(); + } + + /** + * Signs the given object with the current device and current identity (if available). + * As defined in {@link https://spec.matrix.org/v1.8/appendices/#signing-json | Signing JSON}. + * + * @param obj - The object to sign + */ + async signObject(obj) { + const sigs = new Map(Object.entries(obj.signatures || {})); + const unsigned = obj.unsigned; + delete obj.signatures; + delete obj.unsigned; + const userSignatures = sigs.get(this.userId) || {}; + const canonalizedJson = _anotherJson.default.stringify(obj); + const signatures = await this.olmMachine.sign(canonalizedJson); + const map = JSON.parse(signatures.asJSON()); + sigs.set(this.userId, _objectSpread(_objectSpread({}, userSignatures), map[this.userId])); + if (unsigned !== undefined) obj.unsigned = unsigned; + obj.signatures = Object.fromEntries(sigs.entries()); + } + + /** + * Implementation of {@link CryptoBackend#getBackupDecryptor}. + */ + async getBackupDecryptor(backupInfo, privKey) { + if (backupInfo.algorithm != "m.megolm_backup.v1.curve25519-aes-sha2") { + throw new Error(`getBackupDecryptor Unsupported algorithm ${backupInfo.algorithm}`); + } + const authData = backupInfo.auth_data; + if (!(privKey instanceof Uint8Array)) { + throw new Error(`getBackupDecryptor expects Uint8Array`); + } + const backupDecryptionKey = RustSdkCryptoJs.BackupDecryptionKey.fromBase64((0, _base.encodeBase64)(privKey)); + if (authData.public_key != backupDecryptionKey.megolmV1PublicKey.publicKeyBase64) { + throw new Error(`getBackupDecryptor key mismatch error`); + } + return this.backupManager.createBackupDecryptor(backupDecryptionKey); + } + + /** + * Implementation of {@link CryptoBackend#importBackedUpRoomKeys}. + */ + async importBackedUpRoomKeys(keys, opts) { + return await this.backupManager.importBackedUpRoomKeys(keys, opts); + } + + /** + * Implementation of {@link CryptoBackend#isDehydrationSupported}. + */ + async isDehydrationSupported() { + return await this.dehydratedDeviceManager.isSupported(); + } + + /** + * Implementation of {@link CryptoBackend#startDehydration}. + */ + async startDehydration(createNewKey) { + if (!(await this.isCrossSigningReady()) || !(await this.isSecretStorageReady())) { + throw new Error("Device dehydration requires cross-signing and secret storage to be set up"); + } + return await this.dehydratedDeviceManager.start(createNewKey); + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // SyncCryptoCallbacks implementation + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Apply sync changes to the olm machine + * @param events - the received to-device messages + * @param oneTimeKeysCounts - the received one time key counts + * @param unusedFallbackKeys - the received unused fallback keys + * @param devices - the received device list updates + * @returns A list of preprocessed to-device messages. + */ + async receiveSyncChanges({ + events, + oneTimeKeysCounts = new Map(), + unusedFallbackKeys, + devices = new RustSdkCryptoJs.DeviceLists() + }) { + const result = await (0, _utils.logDuration)(_logger.logger, "receiveSyncChanges", async () => { + return await this.olmMachine.receiveSyncChanges(events ? JSON.stringify(events) : "[]", devices, oneTimeKeysCounts, unusedFallbackKeys); + }); + + // receiveSyncChanges returns a JSON-encoded list of decrypted to-device messages. + return JSON.parse(result); + } + + /** called by the sync loop to preprocess incoming to-device messages + * + * @param events - the received to-device messages + * @returns A list of preprocessed to-device messages. + */ + async preprocessToDeviceMessages(events) { + // send the received to-device messages into receiveSyncChanges. We have no info on device-list changes, + // one-time-keys, or fallback keys, so just pass empty data. + const processed = await this.receiveSyncChanges({ + events + }); + + // look for interesting to-device messages + for (const message of processed) { + if (message.type === _event2.EventType.KeyVerificationRequest) { + this.onIncomingKeyVerificationRequest(message.sender, message.content); + } + } + return processed; + } + + /** called by the sync loop to process one time key counts and unused fallback keys + * + * @param oneTimeKeysCounts - the received one time key counts + * @param unusedFallbackKeys - the received unused fallback keys + */ + async processKeyCounts(oneTimeKeysCounts, unusedFallbackKeys) { + const mapOneTimeKeysCount = oneTimeKeysCounts && new Map(Object.entries(oneTimeKeysCounts)); + const setUnusedFallbackKeys = unusedFallbackKeys && new Set(unusedFallbackKeys); + if (mapOneTimeKeysCount !== undefined || setUnusedFallbackKeys !== undefined) { + await this.receiveSyncChanges({ + oneTimeKeysCounts: mapOneTimeKeysCount, + unusedFallbackKeys: setUnusedFallbackKeys + }); + } + } + + /** called by the sync loop to process the notification that device lists have + * been changed. + * + * @param deviceLists - device_lists field from /sync + */ + async processDeviceLists(deviceLists) { + var _deviceLists$changed, _deviceLists$left; + const devices = new RustSdkCryptoJs.DeviceLists((_deviceLists$changed = deviceLists.changed) === null || _deviceLists$changed === void 0 ? void 0 : _deviceLists$changed.map(userId => new RustSdkCryptoJs.UserId(userId)), (_deviceLists$left = deviceLists.left) === null || _deviceLists$left === void 0 ? void 0 : _deviceLists$left.map(userId => new RustSdkCryptoJs.UserId(userId))); + await this.receiveSyncChanges({ + devices + }); + } + + /** called by the sync loop on m.room.encrypted events + * + * @param room - in which the event was received + * @param event - encryption event to be processed + */ + async onCryptoEvent(room, event) { + const config = event.getContent(); + const settings = new RustSdkCryptoJs.RoomSettings(); + if (config.algorithm === "m.megolm.v1.aes-sha2") { + settings.algorithm = RustSdkCryptoJs.EncryptionAlgorithm.MegolmV1AesSha2; + } else { + // Among other situations, this happens if the crypto state event is redacted. + this.logger.warn(`Room ${room.roomId}: ignoring crypto event with invalid algorithm ${config.algorithm}`); + return; + } + try { + settings.sessionRotationPeriodMs = config.rotation_period_ms; + settings.sessionRotationPeriodMessages = config.rotation_period_msgs; + await this.olmMachine.setRoomSettings(new RustSdkCryptoJs.RoomId(room.roomId), settings); + } catch (e) { + this.logger.warn(`Room ${room.roomId}: ignoring crypto event which caused error: ${e}`); + return; + } + + // If we got this far, the SDK found the event acceptable. + // We need to either create or update the active RoomEncryptor. + const existingEncryptor = this.roomEncryptors[room.roomId]; + if (existingEncryptor) { + existingEncryptor.onCryptoEvent(config); + } else { + this.roomEncryptors[room.roomId] = new _RoomEncryptor.RoomEncryptor(this.olmMachine, this.keyClaimManager, this.outgoingRequestsManager, room, config); + } + } + + /** called by the sync loop after processing each sync. + * + * TODO: figure out something equivalent for sliding sync. + * + * @param syncState - information on the completed sync. + */ + onSyncCompleted(syncState) { + // Processing the /sync may have produced new outgoing requests which need sending, so kick off the outgoing + // request loop, if it's not already running. + this.outgoingRequestsManager.doProcessOutgoingRequests().catch(e => { + this.logger.warn("onSyncCompleted: Error processing outgoing requests", e); + }); + } + + /** + * Handle an incoming m.key.verification request event + * + * @param sender - the sender of the event + * @param content - the content of the event + */ + onIncomingKeyVerificationRequest(sender, content) { + const transactionId = content.transaction_id; + if (!transactionId || !sender) { + // not a valid request: ignore + return; + } + const request = this.olmMachine.getVerificationRequest(new RustSdkCryptoJs.UserId(sender), transactionId); + if (request) { + this.emit(_crypto2.CryptoEvent.VerificationRequestReceived, new _verification.RustVerificationRequest(this.olmMachine, request, this.outgoingRequestProcessor, this._supportedVerificationMethods)); + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // + // Other public functions + // + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + /** called by the MatrixClient on a room membership event + * + * @param event - The matrix event which caused this event to fire. + * @param member - The member whose RoomMember.membership changed. + * @param oldMembership - The previous membership state. Null if it's a new member. + */ + onRoomMembership(event, member, oldMembership) { + const enc = this.roomEncryptors[event.getRoomId()]; + if (!enc) { + // not encrypting in this room + return; + } + enc.onRoomMembership(member); + } + + /** Callback for OlmMachine.registerRoomKeyUpdatedCallback + * + * Called by the rust-sdk whenever there is an update to (megolm) room keys. We + * check if we have any events waiting for the given keys, and schedule them for + * a decryption retry if so. + * + * @param keys - details of the updated keys + */ + async onRoomKeysUpdated(keys) { + for (const key of keys) { + this.onRoomKeyUpdated(key); + } + this.backupManager.maybeUploadKey(); + } + onRoomKeyUpdated(key) { + if (this.stopped) return; + this.logger.debug(`Got update for session ${key.senderKey.toBase64()}|${key.sessionId} in ${key.roomId.toString()}`); + const pendingList = this.eventDecryptor.getEventsPendingRoomKey(key); + if (pendingList.length === 0) return; + this.logger.debug("Retrying decryption on events:", pendingList.map(e => `${e.getId()}`)); + + // Have another go at decrypting events with this key. + // + // We don't want to end up blocking the callback from Rust, which could otherwise end up dropping updates, + // so we don't wait for the decryption to complete. In any case, there is no need to wait: + // MatrixEvent.attemptDecryption ensures that there is only one decryption attempt happening at once, + // and deduplicates repeated attempts for the same event. + for (const ev of pendingList) { + ev.attemptDecryption(this, { + isRetry: true + }).catch(_e => { + this.logger.info(`Still unable to decrypt event ${ev.getId()} after receiving key`); + }); + } + } + + /** + * Callback for `OlmMachine.registerUserIdentityUpdatedCallback` + * + * Called by the rust-sdk whenever there is an update to any user's cross-signing status. We re-check their trust + * status and emit a `UserTrustStatusChanged` event, as well as a `KeysChanged` if it is our own identity that changed. + * + * @param userId - the user with the updated identity + */ + async onUserIdentityUpdated(userId) { + const newVerification = await this.getUserVerificationStatus(userId.toString()); + this.emit(_crypto2.CryptoEvent.UserTrustStatusChanged, userId.toString(), newVerification); + + // If our own user identity has changed, we may now trust the key backup where we did not before. + // So, re-check the key backup status and enable it if available. + if (userId.toString() === this.userId) { + this.emit(_crypto2.CryptoEvent.KeysChanged, {}); + await this.checkKeyBackupAndEnable(); + } + } + + /** + * Callback for `OlmMachine.registerDevicesUpdatedCallback` + * + * Called when users' devices have updated. Emits `WillUpdateDevices` and `DevicesUpdated`. In the JavaScript + * crypto backend, these events are called at separate times, with `WillUpdateDevices` being emitted just before + * the devices are saved, and `DevicesUpdated` being emitted just after. But the OlmMachine only gives us + * one event, so we emit both events here. + * + * @param userIds - an array of user IDs of users whose devices have updated. + */ + async onDevicesUpdated(userIds) { + this.emit(_crypto2.CryptoEvent.WillUpdateDevices, userIds, false); + this.emit(_crypto2.CryptoEvent.DevicesUpdated, userIds, false); + } + + /** + * Handles secret received from the rust secret inbox. + * + * The gossipped secrets are received using the `m.secret.send` event type + * and are guaranteed to have been received over a 1-to-1 Olm + * Session from a verified device. + * + * The only secret currently handled in this way is `m.megolm_backup.v1`. + * + * @param name - the secret name + * @param value - the secret value + */ + async handleSecretReceived(name, value) { + this.logger.debug(`onReceiveSecret: Received secret ${name}`); + if (name === "m.megolm_backup.v1") { + return await this.backupManager.handleBackupSecretReceived(value); + // XXX at this point we should probably try to download the backup and import the keys, + // or at least retry for the current decryption failures? + // Maybe add some signaling when a new secret is received, and let clients handle it? + // as it's where the restore from backup APIs are exposed. + } + return false; + } + + /** + * Called when a new secret is received in the rust secret inbox. + * + * Will poll the secret inbox and handle the secrets received. + * + * @param name - The name of the secret received. + */ + async checkSecrets(name) { + const pendingValues = await this.olmMachine.getSecretsFromInbox(name); + for (const value of pendingValues) { + if (await this.handleSecretReceived(name, value)) { + // If we have a valid secret for that name there is no point of processing the other secrets values. + // It's probably the same secret shared by another device. + break; + } + } + + // Important to call this after handling the secrets as good hygiene. + await this.olmMachine.deleteSecretsFromInbox(name); + } + + /** + * Handle a live event received via /sync. + * See {@link ClientEventHandlerMap#event} + * + * @param event - live event + */ + async onLiveEventFromSync(event) { + // Ignore state event or remote echo + // transaction_id is provided in case of remote echo {@link https://spec.matrix.org/v1.7/client-server-api/#local-echo} + if (event.isState() || !!event.getUnsigned().transaction_id) return; + const processEvent = async evt => { + // Process only verification event + if ((0, _verification.isVerificationEvent)(event)) { + await this.onKeyVerificationRequest(evt); + } + }; + + // If the event is encrypted of in failure, we wait for decryption + if (event.isDecryptionFailure() || event.isEncrypted()) { + // 5 mins + const TIMEOUT_DELAY = 5 * 60 * 1000; + + // After 5mins, we are not expecting the event to be decrypted + const timeoutId = setTimeout(() => event.off(_event.MatrixEventEvent.Decrypted, onDecrypted), TIMEOUT_DELAY); + const onDecrypted = (decryptedEvent, error) => { + if (error) return; + clearTimeout(timeoutId); + event.off(_event.MatrixEventEvent.Decrypted, onDecrypted); + processEvent(decryptedEvent); + }; + event.on(_event.MatrixEventEvent.Decrypted, onDecrypted); + } else { + await processEvent(event); + } + } + + /** + * Handle key verification request. + * + * @param event - a key validation request event. + */ + async onKeyVerificationRequest(event) { + const roomId = event.getRoomId(); + if (!roomId) { + throw new Error("missing roomId in the event"); + } + this.logger.debug(`Incoming verification event ${event.getId()} type ${event.getType()} from ${event.getSender()}`); + await this.olmMachine.receiveVerificationEvent(JSON.stringify({ + event_id: event.getId(), + type: event.getType(), + sender: event.getSender(), + state_key: event.getStateKey(), + content: event.getContent(), + origin_server_ts: event.getTs() + }), new RustSdkCryptoJs.RoomId(roomId)); + if (event.getType() === _event2.EventType.RoomMessage && event.getContent().msgtype === _event2.MsgType.KeyVerificationRequest) { + const request = this.olmMachine.getVerificationRequest(new RustSdkCryptoJs.UserId(event.getSender()), event.getId()); + if (!request) { + // There are multiple reasons this can happen; probably the most likely is that the event is too old. + this.logger.info(`Ignoring just-received verification request ${event.getId()} which did not start a rust-side verification`); + } else { + this.emit(_crypto2.CryptoEvent.VerificationRequestReceived, new _verification.RustVerificationRequest(this.olmMachine, request, this.outgoingRequestProcessor, this._supportedVerificationMethods)); + } + } + + // that may have caused us to queue up outgoing requests, so make sure we send them. + this.outgoingRequestsManager.doProcessOutgoingRequests().catch(e => { + this.logger.warn("onKeyVerificationRequest: Error processing outgoing requests", e); + }); + } + + /** + * Returns the cross-signing user identity of the current user. + * + * Not part of the public crypto-api interface. + * Used during migration from legacy js-crypto to update local trust if needed. + */ + async getOwnIdentity() { + return await this.olmMachine.getIdentity(new RustSdkCryptoJs.UserId(this.userId)); + } +} +exports.RustCrypto = RustCrypto; +class EventDecryptor { + constructor(logger, olmMachine, perSessionBackupDownloader) { + /** + * Events which we couldn't decrypt due to unknown sessions / indexes. + * + * Map from senderKey to sessionId to Set of MatrixEvents + */ + (0, _defineProperty2.default)(this, "eventsPendingKey", new _utils.MapWithDefault(() => new _utils.MapWithDefault(() => new Set()))); + this.logger = logger; + this.olmMachine = olmMachine; + this.perSessionBackupDownloader = perSessionBackupDownloader; + } + async attemptEventDecryption(event) { + // add the event to the pending list *before* attempting to decrypt. + // then, if the key turns up while decryption is in progress (and + // decryption fails), we will schedule a retry. + // (fixes https://github.com/vector-im/element-web/issues/5001) + this.addEventToPendingList(event); + try { + const res = await this.olmMachine.decryptRoomEvent(stringifyEvent(event), new RustSdkCryptoJs.RoomId(event.getRoomId())); + + // Success. We can remove the event from the pending list, if + // that hasn't already happened. + this.removeEventFromPendingList(event); + return { + clearEvent: JSON.parse(res.event), + claimedEd25519Key: res.senderClaimedEd25519Key, + senderCurve25519Key: res.senderCurve25519Key, + forwardingCurve25519KeyChain: res.forwardingCurve25519KeyChain + }; + } catch (err) { + if (err instanceof RustSdkCryptoJs.MegolmDecryptionError) { + this.onMegolmDecryptionError(event, err, await this.perSessionBackupDownloader.getServerBackupInfo()); + } else { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.UNKNOWN_ERROR, "Unknown error"); + } + } + } + + /** + * Handle a `MegolmDecryptionError` returned by the rust SDK. + * + * Fires off a request to the `perSessionBackupDownloader`, if appropriate, and then throws a `DecryptionError`. + * + * @param event - The event which could not be decrypted. + * @param err - The error from the Rust SDK. + * @param serverBackupInfo - Details about the current backup from the server. `null` if there is no backup. + * `undefined` if our attempt to check failed. + */ + onMegolmDecryptionError(event, err, serverBackupInfo) { + const content = event.getWireContent(); + const errorDetails = { + session: content.sender_key + "|" + content.session_id + }; + + // If the error looks like it might be recoverable from backup, queue up a request to try that. + if (err.code === RustSdkCryptoJs.DecryptionErrorCode.MissingRoomKey || err.code === RustSdkCryptoJs.DecryptionErrorCode.UnknownMessageIndex) { + this.perSessionBackupDownloader.onDecryptionKeyMissingError(event.getRoomId(), content.session_id); + + // If the server is telling us our membership at the time the event + // was sent, and it isn't "join", we use a different error code. + const membership = event.getMembershipAtEvent(); + if (membership && membership !== _membership.KnownMembership.Join && membership !== _membership.KnownMembership.Invite) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.HISTORICAL_MESSAGE_USER_NOT_JOINED, "This message was sent when we were not a member of the room.", errorDetails); + } + + // If the event was sent before this device was created, we use some different error codes. + if (event.getTs() <= this.olmMachine.deviceCreationTimeMs) { + if (serverBackupInfo === null) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.HISTORICAL_MESSAGE_NO_KEY_BACKUP, "This message was sent before this device logged in, and there is no key backup on the server.", errorDetails); + } else if (!this.perSessionBackupDownloader.isKeyBackupDownloadConfigured()) { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED, "This message was sent before this device logged in, and key backup is not working.", errorDetails); + } else { + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.HISTORICAL_MESSAGE_WORKING_BACKUP, "This message was sent before this device logged in. Key backup is working, but we still do not (yet) have the key.", errorDetails); + } + } + } + switch (err.code) { + case RustSdkCryptoJs.DecryptionErrorCode.MissingRoomKey: + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.MEGOLM_UNKNOWN_INBOUND_SESSION_ID, "The sender's device has not sent us the keys for this message.", errorDetails); + case RustSdkCryptoJs.DecryptionErrorCode.UnknownMessageIndex: + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.OLM_UNKNOWN_MESSAGE_INDEX, "The sender's device has not sent us the keys for this message at this index.", errorDetails); + + // We don't map MismatchedIdentityKeys for now, as there is no equivalent in legacy. + // Just put it on the `UNKNOWN_ERROR` bucket. + default: + throw new _CryptoBackend.DecryptionError(_cryptoApi.DecryptionFailureCode.UNKNOWN_ERROR, err.description, errorDetails); + } + } + async getEncryptionInfoForEvent(event) { + if (!event.getClearContent() || event.isDecryptionFailure()) { + // not successfully decrypted + return null; + } + + // special-case outgoing events, which the rust crypto-sdk will barf on + if (event.status !== null) { + return { + shieldColour: _cryptoApi.EventShieldColour.NONE, + shieldReason: null + }; + } + const encryptionInfo = await this.olmMachine.getRoomEventEncryptionInfo(stringifyEvent(event), new RustSdkCryptoJs.RoomId(event.getRoomId())); + return rustEncryptionInfoToJsEncryptionInfo(this.logger, encryptionInfo); + } + + /** + * Look for events which are waiting for a given megolm session + * + * Returns a list of events which were encrypted by `session` and could not be decrypted + * + * @param session - + */ + getEventsPendingRoomKey(session) { + const senderPendingEvents = this.eventsPendingKey.get(session.senderKey.toBase64()); + if (!senderPendingEvents) return []; + const sessionPendingEvents = senderPendingEvents.get(session.sessionId); + if (!sessionPendingEvents) return []; + const roomId = session.roomId.toString(); + return [...sessionPendingEvents].filter(ev => ev.getRoomId() === roomId); + } + + /** + * Add an event to the list of those awaiting their session keys. + */ + addEventToPendingList(event) { + const content = event.getWireContent(); + const senderKey = content.sender_key; + const sessionId = content.session_id; + const senderPendingEvents = this.eventsPendingKey.getOrCreate(senderKey); + const sessionPendingEvents = senderPendingEvents.getOrCreate(sessionId); + sessionPendingEvents.add(event); + } + + /** + * Remove an event from the list of those awaiting their session keys. + */ + removeEventFromPendingList(event) { + const content = event.getWireContent(); + const senderKey = content.sender_key; + const sessionId = content.session_id; + const senderPendingEvents = this.eventsPendingKey.get(senderKey); + if (!senderPendingEvents) return; + const sessionPendingEvents = senderPendingEvents.get(sessionId); + if (!sessionPendingEvents) return; + sessionPendingEvents.delete(event); + + // also clean up the higher-level maps if they are now empty + if (sessionPendingEvents.size === 0) { + senderPendingEvents.delete(sessionId); + if (senderPendingEvents.size === 0) { + this.eventsPendingKey.delete(senderKey); + } + } + } +} +function stringifyEvent(event) { + return JSON.stringify({ + event_id: event.getId(), + type: event.getWireType(), + sender: event.getSender(), + state_key: event.getStateKey(), + content: event.getWireContent(), + origin_server_ts: event.getTs() + }); +} +function rustEncryptionInfoToJsEncryptionInfo(logger, encryptionInfo) { + if (encryptionInfo === undefined) { + // not decrypted here + return null; + } + + // TODO: use strict shield semantics. + const shieldState = encryptionInfo.shieldState(false); + let shieldColour; + switch (shieldState.color) { + case RustSdkCryptoJs.ShieldColor.Grey: + shieldColour = _cryptoApi.EventShieldColour.GREY; + break; + case RustSdkCryptoJs.ShieldColor.None: + shieldColour = _cryptoApi.EventShieldColour.NONE; + break; + default: + shieldColour = _cryptoApi.EventShieldColour.RED; + } + let shieldReason; + if (shieldState.message === undefined) { + shieldReason = null; + } else if (shieldState.message === "Encrypted by an unverified user.") { + // this case isn't actually used with lax shield semantics. + shieldReason = _cryptoApi.EventShieldReason.UNVERIFIED_IDENTITY; + } else if (shieldState.message === "Encrypted by a device not verified by its owner.") { + shieldReason = _cryptoApi.EventShieldReason.UNSIGNED_DEVICE; + } else if (shieldState.message === "The authenticity of this encrypted message can't be guaranteed on this device.") { + shieldReason = _cryptoApi.EventShieldReason.AUTHENTICITY_NOT_GUARANTEED; + } else if (shieldState.message === "Encrypted by an unknown or deleted device.") { + shieldReason = _cryptoApi.EventShieldReason.UNKNOWN_DEVICE; + } else { + logger.warn(`Unknown shield state message '${shieldState.message}'`); + shieldReason = _cryptoApi.EventShieldReason.UNKNOWN; + } + return { + shieldColour, + shieldReason + }; +} +//# sourceMappingURL=rust-crypto.js.map + +/***/ }), + +/***/ 1359: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.secretStorageCanAccessSecrets = secretStorageCanAccessSecrets; +exports.secretStorageContainsCrossSigningKeys = secretStorageContainsCrossSigningKeys; +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Check that the private cross signing keys (master, self signing, user signing) are stored in the secret storage and encrypted with the default secret storage key. + * + * @param secretStorage - The secret store using account data + * @returns True if the cross-signing keys are all stored and encrypted with the same secret storage key. + * + * @internal + */ +async function secretStorageContainsCrossSigningKeys(secretStorage) { + return secretStorageCanAccessSecrets(secretStorage, ["m.cross_signing.master", "m.cross_signing.user_signing", "m.cross_signing.self_signing"]); +} + +/** + * + * Check that the secret storage can access the given secrets using the default key. + * + * @param secretStorage - The secret store using account data + * @param secretNames - The secret names to check + * @returns True if all the given secrets are accessible and encrypted with the given key. + * + * @internal + */ +async function secretStorageCanAccessSecrets(secretStorage, secretNames) { + const defaultKeyId = await secretStorage.getDefaultKeyId(); + if (!defaultKeyId) return false; + for (const secretName of secretNames) { + // check which keys this particular secret is encrypted with + const record = (await secretStorage.isStored(secretName)) || {}; + // if it's not encrypted with the right key, there is no point continuing + if (!(defaultKeyId in record)) return false; + } + return true; +} +//# sourceMappingURL=secret-storage.js.map + +/***/ }), + +/***/ 6059: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RustVerificationRequest = exports.RustSASVerifier = exports.RustQrCodeVerifier = void 0; +exports.isVerificationEvent = isVerificationEvent; +exports.verificationMethodIdentifierToMethod = verificationMethodIdentifierToMethod; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _matrixSdkCryptoWasm = _interopRequireWildcard(__nccwpck_require__(4822)); +var RustSdkCryptoJs = _matrixSdkCryptoWasm; +var _verification = __nccwpck_require__(6825); +var _typedEventEmitter = __nccwpck_require__(7150); +var _ReEmitter = __nccwpck_require__(9554); +var _event = __nccwpck_require__(7487); +var _utils = __nccwpck_require__(2557); +var _types = __nccwpck_require__(2756); +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; } +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * An incoming, or outgoing, request to verify a user or a device via cross-signing. + * + * @internal + */ +class RustVerificationRequest extends _typedEventEmitter.TypedEventEmitter { + /** + * Construct a new RustVerificationRequest to wrap the rust-level `VerificationRequest`. + * + * @param olmMachine - The `OlmMachine` from the underlying rust crypto sdk. + * @param inner - VerificationRequest from the Rust SDK. + * @param outgoingRequestProcessor - `OutgoingRequestProcessor` to use for making outgoing HTTP requests. + * @param supportedVerificationMethods - Verification methods to use when `accept()` is called. + */ + constructor(olmMachine, inner, outgoingRequestProcessor, supportedVerificationMethods) { + super(); + /** a reëmitter which relays VerificationRequestEvent.Changed events emitted by the verifier */ + /** Are we in the process of sending an `m.key.verification.ready` event? */ + (0, _defineProperty2.default)(this, "_accepting", false); + /** Are we in the process of sending an `m.key.verification.cancellation` event? */ + (0, _defineProperty2.default)(this, "_cancelling", false); + this.olmMachine = olmMachine; + this.inner = inner; + this.outgoingRequestProcessor = outgoingRequestProcessor; + this.supportedVerificationMethods = supportedVerificationMethods; + this.reEmitter = new _ReEmitter.TypedReEmitter(this); + const onChange = async () => { + const verification = this.inner.getVerification(); + + // Set the _verifier object (wrapping the rust `Verification` as a js-sdk Verifier) if: + // - we now have a `Verification` where we lacked one before + // - we have transitioned from QR to SAS + // - we are verifying with SAS, but we need to replace our verifier with a new one because both parties + // tried to start verification at the same time, and we lost the tie breaking + if (verification instanceof RustSdkCryptoJs.Sas) { + if (this._verifier === undefined || this._verifier instanceof RustQrCodeVerifier) { + this.setVerifier(new RustSASVerifier(verification, this, outgoingRequestProcessor)); + } else if (this._verifier instanceof RustSASVerifier) { + this._verifier.replaceInner(verification); + } + } else if (verification instanceof RustSdkCryptoJs.Qr && this._verifier === undefined) { + this.setVerifier(new RustQrCodeVerifier(verification, outgoingRequestProcessor)); + } + this.emit(_verification.VerificationRequestEvent.Change); + }; + inner.registerChangesCallback(onChange); + } + setVerifier(verifier) { + // if we already have a verifier, unsubscribe from its events + if (this._verifier) { + this.reEmitter.stopReEmitting(this._verifier, [_verification.VerificationRequestEvent.Change]); + } + this._verifier = verifier; + this.reEmitter.reEmit(this._verifier, [_verification.VerificationRequestEvent.Change]); + } + + /** + * Unique ID for this verification request. + * + * An ID isn't assigned until the first message is sent, so this may be `undefined` in the early phases. + */ + get transactionId() { + return this.inner.flowId; + } + + /** + * For an in-room verification, the ID of the room. + * + * For to-device verifications, `undefined`. + */ + get roomId() { + var _this$inner$roomId; + return (_this$inner$roomId = this.inner.roomId) === null || _this$inner$roomId === void 0 ? void 0 : _this$inner$roomId.toString(); + } + + /** + * True if this request was initiated by the local client. + * + * For in-room verifications, the initiator is who sent the `m.key.verification.request` event. + * For to-device verifications, the initiator is who sent the `m.key.verification.start` event. + */ + get initiatedByMe() { + return this.inner.weStarted(); + } + + /** The user id of the other party in this request */ + get otherUserId() { + return this.inner.otherUserId.toString(); + } + + /** For verifications via to-device messages: the ID of the other device. Otherwise, undefined. */ + get otherDeviceId() { + var _this$inner$otherDevi; + return (_this$inner$otherDevi = this.inner.otherDeviceId) === null || _this$inner$otherDevi === void 0 ? void 0 : _this$inner$otherDevi.toString(); + } + + /** Get the other device involved in the verification, if it is known */ + async getOtherDevice() { + const otherDeviceId = this.inner.otherDeviceId; + if (!otherDeviceId) { + return undefined; + } + return await this.olmMachine.getDevice(this.inner.otherUserId, otherDeviceId, 5); + } + + /** True if the other party in this request is one of this user's own devices. */ + get isSelfVerification() { + return this.inner.isSelfVerification(); + } + + /** current phase of the request. */ + get phase() { + const phase = this.inner.phase(); + switch (phase) { + case RustSdkCryptoJs.VerificationRequestPhase.Created: + case RustSdkCryptoJs.VerificationRequestPhase.Requested: + return _verification.VerificationPhase.Requested; + case RustSdkCryptoJs.VerificationRequestPhase.Ready: + // if we're still sending the `m.key.verification.ready`, that counts as "Requested" in the js-sdk's + // parlance. + return this._accepting ? _verification.VerificationPhase.Requested : _verification.VerificationPhase.Ready; + case RustSdkCryptoJs.VerificationRequestPhase.Transitioned: + if (!this._verifier) { + // this shouldn't happen, because the onChange handler should have created a _verifier. + throw new Error("VerificationRequest: inner phase == Transitioned but no verifier!"); + } + return this._verifier.verificationPhase; + case RustSdkCryptoJs.VerificationRequestPhase.Done: + return _verification.VerificationPhase.Done; + case RustSdkCryptoJs.VerificationRequestPhase.Cancelled: + return _verification.VerificationPhase.Cancelled; + } + throw new Error(`Unknown verification phase ${phase}`); + } + + /** True if the request has sent its initial event and needs more events to complete + * (ie it is in phase `Requested`, `Ready` or `Started`). + */ + get pending() { + if (this.inner.isPassive()) return false; + const phase = this.phase; + return phase !== _verification.VerificationPhase.Done && phase !== _verification.VerificationPhase.Cancelled; + } + + /** + * True if we have started the process of sending an `m.key.verification.ready` (but have not necessarily received + * the remote echo which causes a transition to {@link VerificationPhase.Ready}. + */ + get accepting() { + return this._accepting; + } + + /** + * True if we have started the process of sending an `m.key.verification.cancel` (but have not necessarily received + * the remote echo which causes a transition to {@link VerificationPhase.Cancelled}). + */ + get declining() { + return this._cancelling; + } + + /** + * The remaining number of ms before the request will be automatically cancelled. + * + * `null` indicates that there is no timeout + */ + get timeout() { + return this.inner.timeRemainingMillis(); + } + + /** once the phase is Started (and !initiatedByMe) or Ready: common methods supported by both sides */ + get methods() { + throw new Error("not implemented"); + } + + /** the method picked in the .start event */ + get chosenMethod() { + if (this.phase !== _verification.VerificationPhase.Started) return null; + const verification = this.inner.getVerification(); + if (verification instanceof RustSdkCryptoJs.Sas) { + return _types.VerificationMethod.Sas; + } else if (verification instanceof RustSdkCryptoJs.Qr) { + return _types.VerificationMethod.Reciprocate; + } else { + return null; + } + } + + /** + * Checks whether the other party supports a given verification method. + * This is useful when setting up the QR code UI, as it is somewhat asymmetrical: + * if the other party supports SCAN_QR, we should show a QR code in the UI, and vice versa. + * For methods that need to be supported by both ends, use the `methods` property. + * + * @param method - the method to check + * @returns true if the other party said they supported the method + */ + otherPartySupportsMethod(method) { + const theirMethods = this.inner.theirSupportedMethods; + if (theirMethods === undefined) { + // no message from the other side yet + return false; + } + const requiredMethod = verificationMethodsByIdentifier[method]; + return theirMethods.some(m => m === requiredMethod); + } + + /** + * Accepts the request, sending a .ready event to the other party + * + * @returns Promise which resolves when the event has been sent. + */ + async accept() { + if (this.inner.phase() !== RustSdkCryptoJs.VerificationRequestPhase.Requested || this._accepting) { + throw new Error(`Cannot accept a verification request in phase ${this.phase}`); + } + this._accepting = true; + try { + const req = this.inner.acceptWithMethods(this.supportedVerificationMethods.map(verificationMethodIdentifierToMethod)); + if (req) { + await this.outgoingRequestProcessor.makeOutgoingRequest(req); + } + } finally { + this._accepting = false; + } + + // phase may have changed, so emit a 'change' event + this.emit(_verification.VerificationRequestEvent.Change); + } + + /** + * Cancels the request, sending a cancellation to the other party + * + * @param params - Details for the cancellation, including `reason` (defaults to "User declined"), and `code` + * (defaults to `m.user`). + * + * @returns Promise which resolves when the event has been sent. + */ + async cancel(params) { + if (this._cancelling) { + // already cancelling; do nothing + return; + } + this._cancelling = true; + try { + const req = this.inner.cancel(); + if (req) { + await this.outgoingRequestProcessor.makeOutgoingRequest(req); + } + } finally { + this._cancelling = false; + } + } + + /** + * Create a {@link Verifier} to do this verification via a particular method. + * + * If a verifier has already been created for this request, returns that verifier. + * + * This does *not* send the `m.key.verification.start` event - to do so, call {@link Verifier#verifier} on the + * returned verifier. + * + * If no previous events have been sent, pass in `targetDevice` to set who to direct this request to. + * + * @param method - the name of the verification method to use. + * @param targetDevice - details of where to send the request to. + * + * @returns The verifier which will do the actual verification. + */ + beginKeyVerification(method, targetDevice) { + throw new Error("not implemented"); + } + + /** + * Send an `m.key.verification.start` event to start verification via a particular method. + * + * Implementation of {@link Crypto.VerificationRequest#startVerification}. + * + * @param method - the name of the verification method to use. + */ + async startVerification(method) { + if (method !== _types.VerificationMethod.Sas) { + throw new Error(`Unsupported verification method ${method}`); + } + + // make sure that we have a list of the other user's devices (workaround https://github.com/matrix-org/matrix-rust-sdk/issues/2896) + if (!(await this.getOtherDevice())) { + throw new Error("startVerification(): other device is unknown"); + } + const res = await this.inner.startSas(); + if (res) { + const [, req] = res; + await this.outgoingRequestProcessor.makeOutgoingRequest(req); + } + + // this should have triggered the onChange callback, and we should now have a verifier + if (!this._verifier) { + throw new Error("Still no verifier after startSas() call"); + } + return this._verifier; + } + + /** + * Start a QR code verification by providing a scanned QR code for this verification flow. + * + * Implementation of {@link Crypto.VerificationRequest#scanQRCode}. + * + * @param qrCodeData - the decoded QR code. + * @returns A verifier; call `.verify()` on it to wait for the other side to complete the verification flow. + */ + async scanQRCode(uint8Array) { + const scan = RustSdkCryptoJs.QrCodeScan.fromBytes(new Uint8ClampedArray(uint8Array)); + const verifier = await this.inner.scanQrCode(scan); + + // this should have triggered the onChange callback, and we should now have a verifier + if (!this._verifier) { + throw new Error("Still no verifier after scanQrCode() call"); + } + + // we can immediately trigger the reciprocate request + const req = verifier.reciprocate(); + if (req) { + await this.outgoingRequestProcessor.makeOutgoingRequest(req); + } + return this._verifier; + } + + /** + * The verifier which is doing the actual verification, once the method has been established. + * Only defined when the `phase` is Started. + */ + get verifier() { + // It's possible for us to have a Verifier before a method has been chosen (in particular, + // if we are showing a QR code which the other device has not yet scanned. At that point, we could + // still switch to SAS). + // + // In that case, we should not return it to the application yet, since the application will not expect the + // Verifier to be replaced during the lifetime of the VerificationRequest. + return this.phase === _verification.VerificationPhase.Started ? this._verifier : undefined; + } + + /** + * Stub implementation of {@link Crypto.VerificationRequest#getQRCodeBytes}. + */ + getQRCodeBytes() { + throw new Error("getQRCodeBytes() unsupported in Rust Crypto; use generateQRCode() instead."); + } + + /** + * Generate the data for a QR code allowing the other device to verify this one, if it supports it. + * + * Implementation of {@link Crypto.VerificationRequest#generateQRCode}. + */ + async generateQRCode() { + // make sure that we have a list of the other user's devices (workaround https://github.com/matrix-org/matrix-rust-sdk/issues/2896) + if (!(await this.getOtherDevice())) { + throw new Error("generateQRCode(): other device is unknown"); + } + const innerVerifier = await this.inner.generateQrCode(); + // If we are unable to generate a QRCode, we return undefined + if (!innerVerifier) return; + return Buffer.from(innerVerifier.toBytes()); + } + + /** + * If this request has been cancelled, the cancellation code (e.g `m.user`) which is responsible for cancelling + * this verification. + */ + get cancellationCode() { + var _this$inner$cancelInf, _this$inner$cancelInf2; + return (_this$inner$cancelInf = (_this$inner$cancelInf2 = this.inner.cancelInfo) === null || _this$inner$cancelInf2 === void 0 ? void 0 : _this$inner$cancelInf2.cancelCode()) !== null && _this$inner$cancelInf !== void 0 ? _this$inner$cancelInf : null; + } + + /** + * The id of the user that cancelled the request. + * + * Only defined when phase is Cancelled + */ + get cancellingUserId() { + const cancelInfo = this.inner.cancelInfo; + if (!cancelInfo) { + return undefined; + } else if (cancelInfo.cancelledbyUs()) { + return this.olmMachine.userId.toString(); + } else { + return this.inner.otherUserId.toString(); + } + } +} + +/** Common base class for `Verifier` implementations which wrap rust classes. + * + * The generic parameter `InnerType` is the type of the rust Verification class which we wrap. + * + * @internal + */ +exports.RustVerificationRequest = RustVerificationRequest; +class BaseRustVerifer extends _typedEventEmitter.TypedEventEmitter { + /** A deferred which completes when the verification completes (or rejects when it is cancelled/fails) */ + + constructor(inner, outgoingRequestProcessor) { + super(); + this.inner = inner; + this.outgoingRequestProcessor = outgoingRequestProcessor; + this.completionDeferred = (0, _utils.defer)(); + inner.registerChangesCallback(async () => { + this.onChange(); + }); + // stop the runtime complaining if nobody catches a failure + this.completionDeferred.promise.catch(() => null); + } + + /** + * Hook which is called when the underlying rust class notifies us that there has been a change. + * + * Can be overridden by subclasses to see if we can notify the application about an update. The overriding method + * must call `super.onChange()`. + */ + onChange() { + if (this.inner.isDone()) { + this.completionDeferred.resolve(undefined); + } else if (this.inner.isCancelled()) { + const cancelInfo = this.inner.cancelInfo(); + this.completionDeferred.reject(new Error(`Verification cancelled by ${cancelInfo.cancelledbyUs() ? "us" : "them"} with code ${cancelInfo.cancelCode()}: ${cancelInfo.reason()}`)); + } + this.emit(_verification.VerificationRequestEvent.Change); + } + + /** + * Returns true if the verification has been cancelled, either by us or the other side. + */ + get hasBeenCancelled() { + return this.inner.isCancelled(); + } + + /** + * The ID of the other user in the verification process. + */ + get userId() { + return this.inner.otherUserId.toString(); + } + + /** + * Cancel a verification. + * + * We will send an `m.key.verification.cancel` if the verification is still in flight. The verification promise + * will reject, and a {@link Crypto.VerifierEvent#Cancel} will be emitted. + * + * @param e - the reason for the cancellation. + */ + cancel(e) { + // TODO: something with `e` + const req = this.inner.cancel(); + if (req) { + this.outgoingRequestProcessor.makeOutgoingRequest(req); + } + } + + /** + * Get the details for an SAS verification, if one is in progress + * + * Returns `null`, unless this verifier is for a SAS-based verification and we are waiting for the user to confirm + * the SAS matches. + */ + getShowSasCallbacks() { + return null; + } + + /** + * Get the details for reciprocating QR code verification, if one is in progress + * + * Returns `null`, unless this verifier is for reciprocating a QR-code-based verification (ie, the other user has + * already scanned our QR code), and we are waiting for the user to confirm. + */ + getReciprocateQrCodeCallbacks() { + return null; + } +} + +/** A Verifier instance which is used to show and/or scan a QR code. */ +class RustQrCodeVerifier extends BaseRustVerifer { + constructor(inner, outgoingRequestProcessor) { + super(inner, outgoingRequestProcessor); + (0, _defineProperty2.default)(this, "callbacks", null); + } + onChange() { + // if the other side has scanned our QR code and sent us a "reciprocate" message, it is now time for the + // application to prompt the user to confirm their side. + if (this.callbacks === null && this.inner.hasBeenScanned()) { + this.callbacks = { + confirm: () => this.confirmScanning(), + cancel: () => this.cancel() + }; + } + super.onChange(); + } + + /** + * Start the key verification, if it has not already been started. + * + * @returns Promise which resolves when the verification has completed, or rejects if the verification is cancelled + * or times out. + */ + async verify() { + // Some applications (hello, matrix-react-sdk) may not check if there is a `ShowQrCodeCallbacks` and instead + // register a `ShowReciprocateQr` listener which they expect to be called once `.verify` is called. + if (this.callbacks !== null) { + this.emit(_verification.VerifierEvent.ShowReciprocateQr, this.callbacks); + } + // Nothing to do here but wait. + await this.completionDeferred.promise; + } + + /** + * Calculate an appropriate VerificationPhase for a VerificationRequest where this is the verifier. + * + * This is abnormally complicated because a rust-side QR Code verifier can span several verification phases. + */ + get verificationPhase() { + switch (this.inner.state()) { + case _matrixSdkCryptoWasm.QrState.Created: + // we have created a QR for display; neither side has yet sent an `m.key.verification.start`. + return _verification.VerificationPhase.Ready; + case _matrixSdkCryptoWasm.QrState.Scanned: + // other side has scanned our QR and sent an `m.key.verification.start` with `m.reciprocate.v1` + return _verification.VerificationPhase.Started; + case _matrixSdkCryptoWasm.QrState.Confirmed: + // we have confirmed the other side's scan and sent an `m.key.verification.done`. + // + // However, the verification is not yet "Done", because we have to wait until we have received the + // `m.key.verification.done` from the other side (in particular, we don't mark the device/identity as + // verified until that happens). If we return "Done" too soon, we risk the user cancelling the flow. + return _verification.VerificationPhase.Started; + case _matrixSdkCryptoWasm.QrState.Reciprocated: + // although the rust SDK doesn't immediately send the `m.key.verification.start` on transition into this + // state, `RustVerificationRequest.scanQrCode` immediately calls `reciprocate()` and does so, so in practice + // we can treat the two the same. + return _verification.VerificationPhase.Started; + case _matrixSdkCryptoWasm.QrState.Done: + return _verification.VerificationPhase.Done; + case _matrixSdkCryptoWasm.QrState.Cancelled: + return _verification.VerificationPhase.Cancelled; + default: + throw new Error(`Unknown qr code state ${this.inner.state()}`); + } + } + + /** + * Get the details for reciprocating QR code verification, if one is in progress + * + * Returns `null`, unless this verifier is for reciprocating a QR-code-based verification (ie, the other user has + * already scanned our QR code), and we are waiting for the user to confirm. + */ + getReciprocateQrCodeCallbacks() { + return this.callbacks; + } + async confirmScanning() { + const req = this.inner.confirmScanning(); + if (req) { + await this.outgoingRequestProcessor.makeOutgoingRequest(req); + } + } +} + +/** A Verifier instance which is used if we are exchanging emojis */ +exports.RustQrCodeVerifier = RustQrCodeVerifier; +class RustSASVerifier extends BaseRustVerifer { + constructor(inner, _verificationRequest, outgoingRequestProcessor) { + super(inner, outgoingRequestProcessor); + (0, _defineProperty2.default)(this, "callbacks", null); + } + + /** + * Start the key verification, if it has not already been started. + * + * This means sending a `m.key.verification.start` if we are the first responder, or a `m.key.verification.accept` + * if the other side has already sent a start event. + * + * @returns Promise which resolves when the verification has completed, or rejects if the verification is cancelled + * or times out. + */ + async verify() { + await this.sendAccept(); + await this.completionDeferred.promise; + } + + /** + * Send the accept or start event, if it hasn't already been sent + */ + async sendAccept() { + const req = this.inner.accept(); + if (req) { + await this.outgoingRequestProcessor.makeOutgoingRequest(req); + } + } + + /** if we can now show the callbacks, do so */ + onChange() { + super.onChange(); + if (this.callbacks === null) { + const emoji = this.inner.emoji(); + const decimal = this.inner.decimals(); + if (emoji === undefined && decimal === undefined) { + return; + } + const sas = {}; + if (emoji) { + sas.emoji = emoji.map(e => [e.symbol, e.description]); + } + if (decimal) { + sas.decimal = [decimal[0], decimal[1], decimal[2]]; + } + this.callbacks = { + sas, + confirm: async () => { + const requests = await this.inner.confirm(); + for (const m of requests) { + await this.outgoingRequestProcessor.makeOutgoingRequest(m); + } + }, + mismatch: () => { + throw new Error("impl"); + }, + cancel: () => { + throw new Error("impl"); + } + }; + this.emit(_verification.VerifierEvent.ShowSas, this.callbacks); + } + } + + /** + * Calculate an appropriate VerificationPhase for a VerificationRequest where this is the verifier. + */ + get verificationPhase() { + return _verification.VerificationPhase.Started; + } + + /** + * Get the details for an SAS verification, if one is in progress + * + * Returns `null`, unless this verifier is for a SAS-based verification and we are waiting for the user to confirm + * the SAS matches. + */ + getShowSasCallbacks() { + return this.callbacks; + } + + /** + * Replace the inner Rust verifier with a different one. + * + * @param inner - the new Rust verifier + * @internal + */ + replaceInner(inner) { + if (this.inner != inner) { + this.inner = inner; + inner.registerChangesCallback(async () => { + this.onChange(); + }); + // replaceInner will only get called if we started the verification at the same time as the other side, and we lost + // the tie breaker. So we need to re-accept their verification. + this.sendAccept(); + this.onChange(); + } + } +} + +/** For each specced verification method, the rust-side `VerificationMethod` corresponding to it */ +exports.RustSASVerifier = RustSASVerifier; +const verificationMethodsByIdentifier = { + [_types.VerificationMethod.Sas]: RustSdkCryptoJs.VerificationMethod.SasV1, + [_types.VerificationMethod.ScanQrCode]: RustSdkCryptoJs.VerificationMethod.QrCodeScanV1, + [_types.VerificationMethod.ShowQrCode]: RustSdkCryptoJs.VerificationMethod.QrCodeShowV1, + [_types.VerificationMethod.Reciprocate]: RustSdkCryptoJs.VerificationMethod.ReciprocateV1 +}; + +/** + * Convert a specced verification method identifier into a rust-side `VerificationMethod`. + * + * @param method - specced method identifier, for example `m.sas.v1`. + * @returns Rust-side `VerificationMethod` corresponding to `method`. + * @throws An error if the method is unknown. + * + * @internal + */ +function verificationMethodIdentifierToMethod(method) { + const meth = verificationMethodsByIdentifier[method]; + if (meth === undefined) { + throw new Error(`Unknown verification method ${method}`); + } + return meth; +} + +/** + * Return true if the event's type matches that of an in-room verification event + * + * @param event - MatrixEvent + * @returns + * + * @internal + */ +function isVerificationEvent(event) { + switch (event.getType()) { + case _event.EventType.KeyVerificationCancel: + case _event.EventType.KeyVerificationDone: + case _event.EventType.KeyVerificationMac: + case _event.EventType.KeyVerificationStart: + case _event.EventType.KeyVerificationKey: + case _event.EventType.KeyVerificationReady: + case _event.EventType.KeyVerificationAccept: + return true; + case _event.EventType.RoomMessage: + return event.getContent().msgtype === _event.MsgType.KeyVerificationRequest; + default: + return false; + } +} +//# sourceMappingURL=verification.js.map + +/***/ }), + +/***/ 8314: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MatrixScheduler = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _event = __nccwpck_require__(7487); +var _utils = __nccwpck_require__(2557); +var _httpApi = __nccwpck_require__(7082); +/* +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -60238,332 +182985,706 @@ limitations under the License. /** * This is an internal module which manages queuing, scheduling and retrying * of requests. - * @module scheduler */ + const DEBUG = false; // set true to enable console logging. /** - * Construct a scheduler for Matrix. Requires - * {@link module:scheduler~MatrixScheduler#setProcessFunction} to be provided - * with a way of processing events. - * @constructor - * @param {module:scheduler~retryAlgorithm} retryAlgorithm Optional. The retry - * algorithm to apply when determining when to try to send an event again. - * Defaults to {@link module:scheduler~MatrixScheduler.RETRY_BACKOFF_RATELIMIT}. - * @param {module:scheduler~queueAlgorithm} queueAlgorithm Optional. The queuing - * algorithm to apply when determining which events should be sent before the - * given event. Defaults to {@link module:scheduler~MatrixScheduler.QUEUE_MESSAGES}. + * The function to invoke to process (send) events in the queue. + * @param event - The event to send. + * @returns Resolved/rejected depending on the outcome of the request. */ -function MatrixScheduler(retryAlgorithm, queueAlgorithm) { - this.retryAlgorithm = retryAlgorithm || MatrixScheduler.RETRY_BACKOFF_RATELIMIT; - this.queueAlgorithm = queueAlgorithm || MatrixScheduler.QUEUE_MESSAGES; - this._queues = {// queueName: [{ - // event: MatrixEvent, // event to send - // defer: Deferred, // defer to resolve/reject at the END of the retries - // attempts: Number // number of times we've called processFn - // }, ...] - }; - this._activeQueues = []; - this._procFn = null; -} -/** - * Retrieve a queue based on an event. The event provided does not need to be in - * the queue. - * @param {MatrixEvent} event An event to get the queue for. - * @return {?Array} A shallow copy of events in the queue or null. - * Modifying this array will not modify the list itself. Modifying events in - * this array will modify the underlying event in the queue. - * @see MatrixScheduler.removeEventFromQueue To remove an event from the queue. - */ +// eslint-disable-next-line camelcase +class MatrixScheduler { + /** + * Default retry algorithm for the matrix scheduler. Retries events up to 4 times with exponential backoff. + * @param attempts - Number of attempts that have been made, including the one that just failed (ie. starting at 1) + * @see retryAlgorithm + */ + // eslint-disable-next-line @typescript-eslint/naming-convention + static RETRY_BACKOFF_RATELIMIT(event, attempts, err) { + return (0, _httpApi.calculateRetryBackoff)(err, attempts, false); + } - -MatrixScheduler.prototype.getQueueForEvent = function (event) { - const name = this.queueAlgorithm(event); - - if (!name || !this._queues[name]) { + /** + * Queues `m.room.message` events and lets other events continue + * concurrently. + * @see queueAlgorithm + */ + // eslint-disable-next-line @typescript-eslint/naming-convention + static QUEUE_MESSAGES(event) { + // enqueue messages or events that associate with another event (redactions and relations) + if (event.getType() === _event.EventType.RoomMessage || event.hasAssociation()) { + // put these events in the 'message' queue. + return "message"; + } + // allow all other events continue concurrently. return null; } - return utils.map(this._queues[name], function (obj) { - return obj.event; - }); -}; -/** - * Remove this event from the queue. The event is equal to another event if they - * have the same ID returned from event.getId(). - * @param {MatrixEvent} event The event to remove. - * @return {boolean} True if this event was removed. - */ + // queueName: [{ + // event: MatrixEvent, // event to send + // defer: Deferred, // defer to resolve/reject at the END of the retries + // attempts: Number // number of times we've called processFn + // }, ...] + /** + * Construct a scheduler for Matrix. Requires + * {@link MatrixScheduler#setProcessFunction} to be provided + * with a way of processing events. + * @param retryAlgorithm - Optional. The retry + * algorithm to apply when determining when to try to send an event again. + * Defaults to {@link MatrixScheduler.RETRY_BACKOFF_RATELIMIT}. + * @param queueAlgorithm - Optional. The queuing + * algorithm to apply when determining which events should be sent before the + * given event. Defaults to {@link MatrixScheduler.QUEUE_MESSAGES}. + */ + constructor( + /** + * The retry algorithm to apply when retrying events. To stop retrying, return + * `-1`. If this event was part of a queue, it will be removed from + * the queue. + * @param event - The event being retried. + * @param attempts - The number of failed attempts. This will always be \>= 1. + * @param err - The most recent error message received when trying + * to send this event. + * @returns The number of milliseconds to wait before trying again. If + * this is 0, the request will be immediately retried. If this is + * `-1`, the event will be marked as + * {@link EventStatus.NOT_SENT} and will not be retried. + */ + retryAlgorithm = MatrixScheduler.RETRY_BACKOFF_RATELIMIT, + /** + * The queuing algorithm to apply to events. This function must be idempotent as + * it may be called multiple times with the same event. All queues created are + * serviced in a FIFO manner. To send the event ASAP, return `null` + * which will not put this event in a queue. Events that fail to send that form + * part of a queue will be removed from the queue and the next event in the + * queue will be sent. + * @param event - The event to be sent. + * @returns The name of the queue to put the event into. If a queue with + * this name does not exist, it will be created. If this is `null`, + * the event is not put into a queue and will be sent concurrently. + */ + queueAlgorithm = MatrixScheduler.QUEUE_MESSAGES) { + (0, _defineProperty2.default)(this, "queues", {}); + (0, _defineProperty2.default)(this, "activeQueues", []); + (0, _defineProperty2.default)(this, "procFn", null); + (0, _defineProperty2.default)(this, "processQueue", queueName => { + // get head of queue + const obj = this.peekNextEvent(queueName); + if (!obj) { + this.disableQueue(queueName); + return; + } + debuglog("Queue '%s' has %s pending events", queueName, this.queues[queueName].length); + // fire the process function and if it resolves, resolve the deferred. Else + // invoke the retry algorithm. -MatrixScheduler.prototype.removeEventFromQueue = function (event) { - const name = this.queueAlgorithm(event); - - if (!name || !this._queues[name]) { - return false; + // First wait for a resolved promise, so the resolve handlers for + // the deferred of the previously sent event can run. + // This way enqueued relations/redactions to enqueued events can receive + // the remove id of their target before being sent. + Promise.resolve().then(() => { + return this.procFn(obj.event); + }).then(res => { + // remove this from the queue + this.removeNextEvent(queueName); + debuglog("Queue '%s' sent event %s", queueName, obj.event.getId()); + obj.defer.resolve(res); + // keep processing + this.processQueue(queueName); + }, err => { + obj.attempts += 1; + // ask the retry algorithm when/if we should try again + const waitTimeMs = this.retryAlgorithm(obj.event, obj.attempts, err); + debuglog("retry(%s) err=%s event_id=%s waitTime=%s", obj.attempts, err, obj.event.getId(), waitTimeMs); + if (waitTimeMs === -1) { + // give up (you quitter!) + _logger.logger.info("Queue '%s' giving up on event %s", queueName, obj.event.getId()); + // remove this from the queue + this.clearQueue(queueName, err); + } else { + setTimeout(this.processQueue, waitTimeMs, queueName); + } + }); + }); + this.retryAlgorithm = retryAlgorithm; + this.queueAlgorithm = queueAlgorithm; } - let removed = false; - utils.removeElement(this._queues[name], function (element) { - if (element.event.getId() === event.getId()) { - // XXX we should probably reject the promise? - // https://github.com/matrix-org/matrix-js-sdk/issues/496 - removed = true; - return true; + /** + * Retrieve a queue based on an event. The event provided does not need to be in + * the queue. + * @param event - An event to get the queue for. + * @returns A shallow copy of events in the queue or null. + * Modifying this array will not modify the list itself. Modifying events in + * this array will modify the underlying event in the queue. + * @see MatrixScheduler.removeEventFromQueue To remove an event from the queue. + */ + getQueueForEvent(event) { + const name = this.queueAlgorithm(event); + if (!name || !this.queues[name]) { + return null; } - }); - return removed; -}; -/** - * Set the process function. Required for events in the queue to be processed. - * If set after events have been added to the queue, this will immediately start - * processing them. - * @param {module:scheduler~processFn} fn The function that can process events - * in the queue. - */ - - -MatrixScheduler.prototype.setProcessFunction = function (fn) { - this._procFn = fn; - - _startProcessingQueues(this); -}; -/** - * Queue an event if it is required and start processing queues. - * @param {MatrixEvent} event The event that may be queued. - * @return {?Promise} A promise if the event was queued, which will be - * resolved or rejected in due time, else null. - */ - - -MatrixScheduler.prototype.queueEvent = function (event) { - const queueName = this.queueAlgorithm(event); - - if (!queueName) { - return null; - } // add the event to the queue and make a deferred for it. - - - if (!this._queues[queueName]) { - this._queues[queueName] = []; + return this.queues[name].map(function (obj) { + return obj.event; + }); } - const defer = utils.defer(); - - this._queues[queueName].push({ - event: event, - defer: defer, - attempts: 0 - }); - - debuglog("Queue algorithm dumped event %s into queue '%s'", event.getId(), queueName); - - _startProcessingQueues(this); - - return defer.promise; -}; -/** - * Retries events up to 4 times using exponential backoff. This produces wait - * times of 2, 4, 8, and 16 seconds (30s total) after which we give up. If the - * failure was due to a rate limited request, the time specified in the error is - * waited before being retried. - * @param {MatrixEvent} event - * @param {Number} attempts - * @param {MatrixError} err - * @return {Number} - * @see module:scheduler~retryAlgorithm - */ - - -MatrixScheduler.RETRY_BACKOFF_RATELIMIT = function (event, attempts, err) { - if (err.httpStatus === 400 || err.httpStatus === 403 || err.httpStatus === 401) { - // client error; no amount of retrying with save you now. - return -1; - } // we ship with browser-request which returns { cors: rejected } when trying - // with no connection, so if we match that, give up since they have no conn. - - - if (err.cors === "rejected") { - return -1; - } // if event that we are trying to send is too large in any way then retrying won't help - - - if (err.name === "M_TOO_LARGE") { - return -1; - } - - if (err.name === "M_LIMIT_EXCEEDED") { - const waitTime = err.data.retry_after_ms; - - if (waitTime) { - return waitTime; + /** + * Remove this event from the queue. The event is equal to another event if they + * have the same ID returned from event.getId(). + * @param event - The event to remove. + * @returns True if this event was removed. + */ + removeEventFromQueue(event) { + const name = this.queueAlgorithm(event); + if (!name || !this.queues[name]) { + return false; } + let removed = false; + (0, _utils.removeElement)(this.queues[name], element => { + if (element.event.getId() === event.getId()) { + // XXX we should probably reject the promise? + // https://github.com/matrix-org/matrix-js-sdk/issues/496 + removed = true; + return true; + } + return false; + }); + return removed; } - if (attempts > 4) { - return -1; // give up + /** + * Set the process function. Required for events in the queue to be processed. + * If set after events have been added to the queue, this will immediately start + * processing them. + * @param fn - The function that can process events + * in the queue. + */ + setProcessFunction(fn) { + this.procFn = fn; + this.startProcessingQueues(); } - return 1000 * Math.pow(2, attempts); -}; -/** - * Queues m.room.message events and lets other events continue - * concurrently. - * @param {MatrixEvent} event - * @return {string} - * @see module:scheduler~queueAlgorithm - */ - - -MatrixScheduler.QUEUE_MESSAGES = function (event) { - // enqueue messages or events that associate with another event (redactions and relations) - if (event.getType() === "m.room.message" || event.hasAssocation()) { - // put these events in the 'message' queue. - return "message"; - } // allow all other events continue concurrently. - - - return null; -}; - -function _startProcessingQueues(scheduler) { - if (!scheduler._procFn) { - return; - } // for each inactive queue with events in them - - - utils.forEach(utils.filter(utils.keys(scheduler._queues), function (queueName) { - return scheduler._activeQueues.indexOf(queueName) === -1 && scheduler._queues[queueName].length > 0; - }), function (queueName) { - // mark the queue as active - scheduler._activeQueues.push(queueName); // begin processing the head of the queue - - - debuglog("Spinning up queue: '%s'", queueName); - - _processQueue(scheduler, queueName); - }); -} - -function _processQueue(scheduler, queueName) { - // get head of queue - const obj = _peekNextEvent(scheduler, queueName); - - if (!obj) { + /** + * Queue an event if it is required and start processing queues. + * @param event - The event that may be queued. + * @returns A promise if the event was queued, which will be + * resolved or rejected in due time, else null. + */ + queueEvent(event) { + const queueName = this.queueAlgorithm(event); + if (!queueName) { + return null; + } + // add the event to the queue and make a deferred for it. + if (!this.queues[queueName]) { + this.queues[queueName] = []; + } + const deferred = (0, _utils.defer)(); + this.queues[queueName].push({ + event: event, + defer: deferred, + attempts: 0 + }); + debuglog("Queue algorithm dumped event %s into queue '%s'", event.getId(), queueName); + this.startProcessingQueues(); + return deferred.promise; + } + startProcessingQueues() { + if (!this.procFn) return; + // for each inactive queue with events in them + Object.keys(this.queues).filter(queueName => { + return this.activeQueues.indexOf(queueName) === -1 && this.queues[queueName].length > 0; + }).forEach(queueName => { + // mark the queue as active + this.activeQueues.push(queueName); + // begin processing the head of the queue + debuglog("Spinning up queue: '%s'", queueName); + this.processQueue(queueName); + }); + } + disableQueue(queueName) { // queue is empty. Mark as inactive and stop recursing. - const index = scheduler._activeQueues.indexOf(queueName); - + const index = this.activeQueues.indexOf(queueName); if (index >= 0) { - scheduler._activeQueues.splice(index, 1); + this.activeQueues.splice(index, 1); } - - debuglog("Stopping queue '%s' as it is now empty", queueName); - return; + _logger.logger.info("Stopping queue '%s' as it is now empty", queueName); } - - debuglog("Queue '%s' has %s pending events", queueName, scheduler._queues[queueName].length); // fire the process function and if it resolves, resolve the deferred. Else - // invoke the retry algorithm. - // First wait for a resolved promise, so the resolve handlers for - // the deferred of the previously sent event can run. - // This way enqueued relations/redactions to enqueued events can receive - // the remove id of their target before being sent. - - Promise.resolve().then(() => { - return scheduler._procFn(obj.event); - }).then(function (res) { - // remove this from the queue - _removeNextEvent(scheduler, queueName); - - debuglog("Queue '%s' sent event %s", queueName, obj.event.getId()); - obj.defer.resolve(res); // keep processing - - _processQueue(scheduler, queueName); - }, function (err) { - obj.attempts += 1; // ask the retry algorithm when/if we should try again - - const waitTimeMs = scheduler.retryAlgorithm(obj.event, obj.attempts, err); - debuglog("retry(%s) err=%s event_id=%s waitTime=%s", obj.attempts, err, obj.event.getId(), waitTimeMs); - - if (waitTimeMs === -1) { - // give up (you quitter!) - debuglog("Queue '%s' giving up on event %s", queueName, obj.event.getId()); // remove this from the queue - - _removeNextEvent(scheduler, queueName); - - obj.defer.reject(err); // process next event - - _processQueue(scheduler, queueName); - } else { - setTimeout(function () { - _processQueue(scheduler, queueName); - }, waitTimeMs); + clearQueue(queueName, err) { + _logger.logger.info("clearing queue '%s'", queueName); + let obj; + while (obj = this.removeNextEvent(queueName)) { + obj.defer.reject(err); } - }); -} - -function _peekNextEvent(scheduler, queueName) { - const queue = scheduler._queues[queueName]; - - if (!utils.isArray(queue)) { - return null; + this.disableQueue(queueName); } - - return queue[0]; -} - -function _removeNextEvent(scheduler, queueName) { - const queue = scheduler._queues[queueName]; - - if (!utils.isArray(queue)) { - return null; + peekNextEvent(queueName) { + const queue = this.queues[queueName]; + if (!Array.isArray(queue)) { + return undefined; + } + return queue[0]; + } + removeNextEvent(queueName) { + const queue = this.queues[queueName]; + if (!Array.isArray(queue)) { + return undefined; + } + return queue.shift(); } - - return queue.shift(); } -function debuglog() { +/* istanbul ignore next */ +exports.MatrixScheduler = MatrixScheduler; +function debuglog(...args) { if (DEBUG) { - _logger.logger.log(...arguments); + _logger.logger.log(...args); } } -/** - * The retry algorithm to apply when retrying events. To stop retrying, return - * -1. If this event was part of a queue, it will be removed from - * the queue. - * @callback retryAlgorithm - * @param {MatrixEvent} event The event being retried. - * @param {Number} attempts The number of failed attempts. This will always be - * >= 1. - * @param {MatrixError} err The most recent error message received when trying - * to send this event. - * @return {Number} The number of milliseconds to wait before trying again. If - * this is 0, the request will be immediately retried. If this is - * -1, the event will be marked as - * {@link module:models/event.EventStatus.NOT_SENT} and will not be retried. - */ +//# sourceMappingURL=scheduler.js.map -/** - * The queuing algorithm to apply to events. This function must be idempotent as - * it may be called multiple times with the same event. All queues created are - * serviced in a FIFO manner. To send the event ASAP, return null - * which will not put this event in a queue. Events that fail to send that form - * part of a queue will be removed from the queue and the next event in the - * queue will be sent. - * @callback queueAlgorithm - * @param {MatrixEvent} event The event to be sent. - * @return {string} The name of the queue to put the event into. If a queue with - * this name does not exist, it will be created. If this is null, - * the event is not put into a queue and will be sent concurrently. - */ +/***/ }), -/** -* The function to invoke to process (send) events in the queue. -* @callback processFn -* @param {MatrixEvent} event The event to send. -* @return {Promise} Resolved/rejected depending on the outcome of the request. +/***/ 8597: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ServerSideSecretStorageImpl = exports.SECRET_STORAGE_ALGORITHM_V1_AES = void 0; +exports.trimTrailingEquals = trimTrailingEquals; +var _client = __nccwpck_require__(9058); +var _aes = __nccwpck_require__(7502); +var _randomstring = __nccwpck_require__(2495); +var _logger = __nccwpck_require__(3854); +/* +Copyright 2021-2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. */ +/** + * Implementation of server-side secret storage + * + * @see https://spec.matrix.org/v1.6/client-server-api/#storage + */ + +const SECRET_STORAGE_ALGORITHM_V1_AES = exports.SECRET_STORAGE_ALGORITHM_V1_AES = "m.secret_storage.v1.aes-hmac-sha2"; + +/** + * Common base interface for Secret Storage Keys. + * + * The common properties for all encryption keys used in server-side secret storage. + * + * @see https://spec.matrix.org/v1.6/client-server-api/#key-storage + */ + +/** + * Properties for a SSSS key using the `m.secret_storage.v1.aes-hmac-sha2` algorithm. + * + * Corresponds to `AesHmacSha2KeyDescription` in the specification. + * + * @see https://spec.matrix.org/v1.6/client-server-api/#msecret_storagev1aes-hmac-sha2 + */ + +/** + * Union type for secret storage keys. + * + * For now, this is only {@link SecretStorageKeyDescriptionAesV1}, but other interfaces may be added in future. + */ + +/** + * Information on how to generate the key from a passphrase. + * + * @see https://spec.matrix.org/v1.6/client-server-api/#deriving-keys-from-passphrases + */ + +/** + * Options for {@link ServerSideSecretStorageImpl#addKey}. + */ + +/** + * Return type for {@link ServerSideSecretStorageImpl#getKey}. + */ + +/** + * Return type for {@link ServerSideSecretStorageImpl#addKey}. + */ + +/** Interface for managing account data on the server. + * + * A subset of {@link MatrixClient}. + */ + +/** + * Application callbacks for use with {@link SecretStorage.ServerSideSecretStorageImpl} + */ + +/** + * Interface provided by SecretStorage implementations + * + * Normally this will just be an {@link ServerSideSecretStorageImpl}, but for backwards + * compatibility some methods allow other implementations. + */ + +/** + * Implementation of Server-side secret storage. + * + * Secret *sharing* is *not* implemented here: this class is strictly about the storage component of + * SSSS. + * + * @see https://spec.matrix.org/v1.6/client-server-api/#storage + */ +class ServerSideSecretStorageImpl { + /** + * Construct a new `SecretStorage`. + * + * Normally, it is unnecessary to call this directly, since MatrixClient automatically constructs one. + * However, it may be useful to construct a new `SecretStorage`, if custom `callbacks` are required, for example. + * + * @param accountDataAdapter - interface for fetching and setting account data on the server. Normally an instance + * of {@link MatrixClient}. + * @param callbacks - application level callbacks for retrieving secret keys + */ + constructor(accountDataAdapter, callbacks) { + this.accountDataAdapter = accountDataAdapter; + this.callbacks = callbacks; + } + + /** + * Get the current default key ID for encrypting secrets. + * + * @returns The default key ID or null if no default key ID is set + */ + async getDefaultKeyId() { + const defaultKey = await this.accountDataAdapter.getAccountDataFromServer("m.secret_storage.default_key"); + if (!defaultKey) return null; + return defaultKey.key; + } + + /** + * Set the default key ID for encrypting secrets. + * + * @param keyId - The new default key ID + */ + setDefaultKeyId(keyId) { + return new Promise((resolve, reject) => { + const listener = ev => { + if (ev.getType() === "m.secret_storage.default_key" && ev.getContent().key === keyId) { + this.accountDataAdapter.removeListener(_client.ClientEvent.AccountData, listener); + resolve(); + } + }; + this.accountDataAdapter.on(_client.ClientEvent.AccountData, listener); + this.accountDataAdapter.setAccountData("m.secret_storage.default_key", { + key: keyId + }).catch(e => { + this.accountDataAdapter.removeListener(_client.ClientEvent.AccountData, listener); + reject(e); + }); + }); + } + + /** + * Add a key for encrypting secrets. + * + * @param algorithm - the algorithm used by the key. + * @param opts - the options for the algorithm. The properties used + * depend on the algorithm given. + * @param keyId - the ID of the key. If not given, a random + * ID will be generated. + * + * @returns An object with: + * keyId: the ID of the key + * keyInfo: details about the key (iv, mac, passphrase) + */ + async addKey(algorithm, opts, keyId) { + if (algorithm !== SECRET_STORAGE_ALGORITHM_V1_AES) { + throw new Error(`Unknown key algorithm ${algorithm}`); + } + const keyInfo = { + algorithm + }; + if (opts.name) { + keyInfo.name = opts.name; + } + if (opts.passphrase) { + keyInfo.passphrase = opts.passphrase; + } + const { + iv, + mac + } = await (0, _aes.calculateKeyCheck)(opts.key); + keyInfo.iv = iv; + keyInfo.mac = mac; + + // Create a unique key id. XXX: this is racey. + if (!keyId) { + do { + keyId = (0, _randomstring.randomString)(32); + } while (await this.accountDataAdapter.getAccountDataFromServer(`m.secret_storage.key.${keyId}`)); + } + await this.accountDataAdapter.setAccountData(`m.secret_storage.key.${keyId}`, keyInfo); + return { + keyId, + keyInfo + }; + } + + /** + * Get the key information for a given ID. + * + * @param keyId - The ID of the key to check + * for. Defaults to the default key ID if not provided. + * @returns If the key was found, the return value is an array of + * the form [keyId, keyInfo]. Otherwise, null is returned. + * XXX: why is this an array when addKey returns an object? + */ + async getKey(keyId) { + if (!keyId) { + keyId = await this.getDefaultKeyId(); + } + if (!keyId) { + return null; + } + const keyInfo = await this.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key." + keyId); + return keyInfo ? [keyId, keyInfo] : null; + } + + /** + * Check whether we have a key with a given ID. + * + * @param keyId - The ID of the key to check + * for. Defaults to the default key ID if not provided. + * @returns Whether we have the key. + */ + async hasKey(keyId) { + const key = await this.getKey(keyId); + return Boolean(key); + } + + /** + * Check whether a key matches what we expect based on the key info + * + * @param key - the key to check + * @param info - the key info + * + * @returns whether or not the key matches + */ + async checkKey(key, info) { + if (info.algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { + if (info.mac) { + const { + mac + } = await (0, _aes.calculateKeyCheck)(key, info.iv); + return trimTrailingEquals(info.mac) === trimTrailingEquals(mac); + } else { + // if we have no information, we have to assume the key is right + return true; + } + } else { + throw new Error("Unknown algorithm"); + } + } + + /** + * Store an encrypted secret on the server. + * + * Details of the encryption keys to be used must previously have been stored in account data + * (for example, via {@link ServerSideSecretStorageImpl#addKey}. {@link SecretStorageCallbacks#getSecretStorageKey} will be called to obtain a secret storage + * key to decrypt the secret. + * + * @param name - The name of the secret - i.e., the "event type" to be stored in the account data + * @param secret - The secret contents. + * @param keys - The IDs of the keys to use to encrypt the secret, or null/undefined to use the default key. + */ + async store(name, secret, keys) { + const encrypted = {}; + if (!keys) { + const defaultKeyId = await this.getDefaultKeyId(); + if (!defaultKeyId) { + throw new Error("No keys specified and no default key present"); + } + keys = [defaultKeyId]; + } + if (keys.length === 0) { + throw new Error("Zero keys given to encrypt with!"); + } + for (const keyId of keys) { + // get key information from key storage + const keyInfo = await this.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key." + keyId); + if (!keyInfo) { + throw new Error("Unknown key: " + keyId); + } + + // encrypt secret, based on the algorithm + if (keyInfo.algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { + const keys = { + [keyId]: keyInfo + }; + const [, encryption] = await this.getSecretStorageKey(keys, name); + encrypted[keyId] = await encryption.encrypt(secret); + } else { + _logger.logger.warn("unknown algorithm for secret storage key " + keyId + ": " + keyInfo.algorithm); + // do nothing if we don't understand the encryption algorithm + } + } + + // save encrypted secret + await this.accountDataAdapter.setAccountData(name, { + encrypted + }); + } + + /** + * Get a secret from storage, and decrypt it. + * + * {@link SecretStorageCallbacks#getSecretStorageKey} will be called to obtain a secret storage + * key to decrypt the secret. + * + * @param name - the name of the secret - i.e., the "event type" stored in the account data + * + * @returns the decrypted contents of the secret, or "undefined" if `name` is not found in + * the user's account data. + */ + async get(name) { + const secretInfo = await this.accountDataAdapter.getAccountDataFromServer(name); + if (!secretInfo) { + return; + } + if (!secretInfo.encrypted) { + throw new Error("Content is not encrypted!"); + } + + // get possible keys to decrypt + const keys = {}; + for (const keyId of Object.keys(secretInfo.encrypted)) { + // get key information from key storage + const keyInfo = await this.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key." + keyId); + const encInfo = secretInfo.encrypted[keyId]; + // only use keys we understand the encryption algorithm of + if ((keyInfo === null || keyInfo === void 0 ? void 0 : keyInfo.algorithm) === SECRET_STORAGE_ALGORITHM_V1_AES) { + if (encInfo.iv && encInfo.ciphertext && encInfo.mac) { + keys[keyId] = keyInfo; + } + } + } + if (Object.keys(keys).length === 0) { + throw new Error(`Could not decrypt ${name} because none of ` + `the keys it is encrypted with are for a supported algorithm`); + } + + // fetch private key from app + const [keyId, decryption] = await this.getSecretStorageKey(keys, name); + const encInfo = secretInfo.encrypted[keyId]; + return decryption.decrypt(encInfo); + } + + /** + * Check if a secret is stored on the server. + * + * @param name - the name of the secret + * + * @returns map of key name to key info the secret is encrypted + * with, or null if it is not present or not encrypted with a trusted + * key + */ + async isStored(name) { + // check if secret exists + const secretInfo = await this.accountDataAdapter.getAccountDataFromServer(name); + if (!(secretInfo !== null && secretInfo !== void 0 && secretInfo.encrypted)) return null; + const ret = {}; + + // filter secret encryption keys with supported algorithm + for (const keyId of Object.keys(secretInfo.encrypted)) { + // get key information from key storage + const keyInfo = await this.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key." + keyId); + if (!keyInfo) continue; + const encInfo = secretInfo.encrypted[keyId]; + + // only use keys we understand the encryption algorithm of + if (keyInfo.algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { + if (encInfo.iv && encInfo.ciphertext && encInfo.mac) { + ret[keyId] = keyInfo; + } + } + } + return Object.keys(ret).length ? ret : null; + } + async getSecretStorageKey(keys, name) { + if (!this.callbacks.getSecretStorageKey) { + throw new Error("No getSecretStorageKey callback supplied"); + } + const returned = await this.callbacks.getSecretStorageKey({ + keys + }, name); + if (!returned) { + throw new Error("getSecretStorageKey callback returned falsey"); + } + if (returned.length < 2) { + throw new Error("getSecretStorageKey callback returned invalid data"); + } + const [keyId, privateKey] = returned; + if (!keys[keyId]) { + throw new Error("App returned unknown key from getSecretStorageKey!"); + } + if (keys[keyId].algorithm === SECRET_STORAGE_ALGORITHM_V1_AES) { + const decryption = { + encrypt: function (secret) { + return (0, _aes.encryptAES)(secret, privateKey, name); + }, + decrypt: function (encInfo) { + return (0, _aes.decryptAES)(encInfo, privateKey, name); + } + }; + return [keyId, decryption]; + } else { + throw new Error("Unknown key type: " + keys[keyId].algorithm); + } + } +} + +/** trim trailing instances of '=' from a string + * + * @internal + * + * @param input - input string + */ +exports.ServerSideSecretStorageImpl = ServerSideSecretStorageImpl; +function trimTrailingEquals(input) { + // according to Sonar and CodeQL, a regex such as /=+$/ is superlinear. + // Not sure I believe it, but it's easy enough to work around. + + // find the number of characters before the trailing = + let i = input.length; + while (i >= 1 && input.charCodeAt(i - 1) == 0x3d) i--; + + // trim to the calculated length + if (i < input.length) { + return input.substring(0, i); + } else { + return input; + } +} +//# sourceMappingURL=secret-storage.js.map + /***/ }), /***/ 2967: @@ -60576,9 +183697,8 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SERVICE_TYPES = void 0; - /* -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2019 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -60592,41 +183712,41 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const SERVICE_TYPES = Object.freeze({ - IS: 'SERVICE_TYPE_IS', - // An Identity Service - IM: 'SERVICE_TYPE_IM' // An Integration Manager - -}); -exports.SERVICE_TYPES = SERVICE_TYPES; +let SERVICE_TYPES = exports.SERVICE_TYPES = /*#__PURE__*/function (SERVICE_TYPES) { + SERVICE_TYPES["IS"] = "SERVICE_TYPE_IS"; + SERVICE_TYPES["IM"] = "SERVICE_TYPE_IM"; + return SERVICE_TYPES; +}({}); // An integration manager +//# sourceMappingURL=service-types.js.map /***/ }), -/***/ 5143: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 9113: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.LocalIndexedDBStoreBackend = LocalIndexedDBStoreBackend; - -var _syncAccumulator = __webpack_require__(2768); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var IndexedDBHelpers = _interopRequireWildcard(__webpack_require__(7978)); - -var _logger = __webpack_require__(3854); - +exports.SlidingSyncSdk = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _room = __nccwpck_require__(7688); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); +var _eventTimeline = __nccwpck_require__(2763); +var _client = __nccwpck_require__(9058); +var _sync = __nccwpck_require__(9779); +var _httpApi = __nccwpck_require__(7082); +var _slidingSync = __nccwpck_require__(4885); +var _event = __nccwpck_require__(7487); +var _roomState = __nccwpck_require__(1513); +var _roomMember = __nccwpck_require__(7024); +var _membership = __nccwpck_require__(9225); /* -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2022 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -60640,294 +183760,1919 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const VERSION = 3; -function createDatabase(db) { +// Number of consecutive failed syncs that will lead to a syncState of ERROR as opposed +// to RECONNECTING. This is needed to inform the client of server issues when the +// keepAlive is successful but the server /sync fails. +const FAILED_SYNC_ERROR_THRESHOLD = 3; +class ExtensionE2EE { + constructor(crypto) { + this.crypto = crypto; + } + name() { + return "e2ee"; + } + when() { + return _slidingSync.ExtensionState.PreProcess; + } + onRequest(isInitial) { + if (!isInitial) { + return undefined; + } + return { + enabled: true // this is sticky so only send it on the initial request + }; + } + async onResponse(data) { + // Handle device list updates + if (data.device_lists) { + await this.crypto.processDeviceLists(data.device_lists); + } + + // Handle one_time_keys_count and unused_fallback_key_types + await this.crypto.processKeyCounts(data.device_one_time_keys_count, data["device_unused_fallback_key_types"] || data["org.matrix.msc2732.device_unused_fallback_key_types"]); + this.crypto.onSyncCompleted({}); + } +} +class ExtensionToDevice { + constructor(client, cryptoCallbacks) { + (0, _defineProperty2.default)(this, "nextBatch", null); + this.client = client; + this.cryptoCallbacks = cryptoCallbacks; + } + name() { + return "to_device"; + } + when() { + return _slidingSync.ExtensionState.PreProcess; + } + onRequest(isInitial) { + const extReq = { + since: this.nextBatch !== null ? this.nextBatch : undefined + }; + if (isInitial) { + extReq["limit"] = 100; + extReq["enabled"] = true; + } + return extReq; + } + async onResponse(data) { + const cancelledKeyVerificationTxns = []; + let events = data["events"] || []; + if (events.length > 0 && this.cryptoCallbacks) { + events = await this.cryptoCallbacks.preprocessToDeviceMessages(events); + } + events.map(this.client.getEventMapper()).map(toDeviceEvent => { + // map is a cheap inline forEach + // We want to flag m.key.verification.start events as cancelled + // if there's an accompanying m.key.verification.cancel event, so + // we pull out the transaction IDs from the cancellation events + // so we can flag the verification events as cancelled in the loop + // below. + if (toDeviceEvent.getType() === "m.key.verification.cancel") { + const txnId = toDeviceEvent.getContent()["transaction_id"]; + if (txnId) { + cancelledKeyVerificationTxns.push(txnId); + } + } + + // as mentioned above, .map is a cheap inline forEach, so return + // the unmodified event. + return toDeviceEvent; + }).forEach(toDeviceEvent => { + const content = toDeviceEvent.getContent(); + if (toDeviceEvent.getType() == "m.room.message" && content.msgtype == "m.bad.encrypted") { + // the mapper already logged a warning. + _logger.logger.log("Ignoring undecryptable to-device event from " + toDeviceEvent.getSender()); + return; + } + if (toDeviceEvent.getType() === "m.key.verification.start" || toDeviceEvent.getType() === "m.key.verification.request") { + const txnId = content["transaction_id"]; + if (cancelledKeyVerificationTxns.includes(txnId)) { + toDeviceEvent.flagCancelled(); + } + } + this.client.emit(_client.ClientEvent.ToDeviceEvent, toDeviceEvent); + }); + this.nextBatch = data.next_batch; + } +} +class ExtensionAccountData { + constructor(client) { + this.client = client; + } + name() { + return "account_data"; + } + when() { + return _slidingSync.ExtensionState.PostProcess; + } + onRequest(isInitial) { + if (!isInitial) { + return undefined; + } + return { + enabled: true + }; + } + async onResponse(data) { + if (data.global && data.global.length > 0) { + this.processGlobalAccountData(data.global); + } + for (const roomId in data.rooms) { + const accountDataEvents = mapEvents(this.client, roomId, data.rooms[roomId]); + const room = this.client.getRoom(roomId); + if (!room) { + _logger.logger.warn("got account data for room but room doesn't exist on client:", roomId); + continue; + } + room.addAccountData(accountDataEvents); + accountDataEvents.forEach(e => { + this.client.emit(_client.ClientEvent.Event, e); + }); + } + } + processGlobalAccountData(globalAccountData) { + const events = mapEvents(this.client, undefined, globalAccountData); + const prevEventsMap = events.reduce((m, c) => { + m[c.getType()] = this.client.store.getAccountData(c.getType()); + return m; + }, {}); + this.client.store.storeAccountDataEvents(events); + events.forEach(accountDataEvent => { + // Honour push rules that come down the sync stream but also + // honour push rules that were previously cached. Base rules + // will be updated when we receive push rules via getPushRules + // (see sync) before syncing over the network. + if (accountDataEvent.getType() === _event.EventType.PushRules) { + const rules = accountDataEvent.getContent(); + this.client.setPushRules(rules); + } + const prevEvent = prevEventsMap[accountDataEvent.getType()]; + this.client.emit(_client.ClientEvent.AccountData, accountDataEvent, prevEvent); + return accountDataEvent; + }); + } +} +class ExtensionTyping { + constructor(client) { + this.client = client; + } + name() { + return "typing"; + } + when() { + return _slidingSync.ExtensionState.PostProcess; + } + onRequest(isInitial) { + if (!isInitial) { + return undefined; // don't send a JSON object for subsequent requests, we don't need to. + } + return { + enabled: true + }; + } + async onResponse(data) { + if (!(data !== null && data !== void 0 && data.rooms)) { + return; + } + for (const roomId in data.rooms) { + processEphemeralEvents(this.client, roomId, [data.rooms[roomId]]); + } + } +} +class ExtensionReceipts { + constructor(client) { + this.client = client; + } + name() { + return "receipts"; + } + when() { + return _slidingSync.ExtensionState.PostProcess; + } + onRequest(isInitial) { + if (isInitial) { + return { + enabled: true + }; + } + return undefined; // don't send a JSON object for subsequent requests, we don't need to. + } + async onResponse(data) { + if (!(data !== null && data !== void 0 && data.rooms)) { + return; + } + for (const roomId in data.rooms) { + processEphemeralEvents(this.client, roomId, [data.rooms[roomId]]); + } + } +} + +/** + * A copy of SyncApi such that it can be used as a drop-in replacement for sync v2. For the actual + * sliding sync API, see sliding-sync.ts or the class SlidingSync. + */ +class SlidingSyncSdk { + // accumulator of sync events in the current sync response + + constructor(slidingSync, client, opts, syncOpts) { + (0, _defineProperty2.default)(this, "syncState", null); + (0, _defineProperty2.default)(this, "lastPos", null); + (0, _defineProperty2.default)(this, "failCount", 0); + (0, _defineProperty2.default)(this, "notifEvents", []); + this.slidingSync = slidingSync; + this.client = client; + this.opts = (0, _sync.defaultClientOpts)(opts); + this.syncOpts = (0, _sync.defaultSyncApiOpts)(syncOpts); + if (client.getNotifTimelineSet()) { + client.reEmitter.reEmit(client.getNotifTimelineSet(), [_room.RoomEvent.Timeline, _room.RoomEvent.TimelineReset]); + } + this.slidingSync.on(_slidingSync.SlidingSyncEvent.Lifecycle, this.onLifecycle.bind(this)); + this.slidingSync.on(_slidingSync.SlidingSyncEvent.RoomData, this.onRoomData.bind(this)); + const extensions = [new ExtensionToDevice(this.client, this.syncOpts.cryptoCallbacks), new ExtensionAccountData(this.client), new ExtensionTyping(this.client), new ExtensionReceipts(this.client)]; + if (this.syncOpts.crypto) { + extensions.push(new ExtensionE2EE(this.syncOpts.crypto)); + } + extensions.forEach(ext => { + this.slidingSync.registerExtension(ext); + }); + } + async onRoomData(roomId, roomData) { + let room = this.client.store.getRoom(roomId); + if (!room) { + if (!roomData.initial) { + _logger.logger.debug("initial flag not set but no stored room exists for room ", roomId, roomData); + return; + } + room = (0, _sync._createAndReEmitRoom)(this.client, roomId, this.opts); + } + await this.processRoomData(this.client, room, roomData); + } + onLifecycle(state, resp, err) { + if (err) { + _logger.logger.debug("onLifecycle", state, err); + } + switch (state) { + case _slidingSync.SlidingSyncState.Complete: + this.purgeNotifications(); + if (!resp) { + break; + } + // Element won't stop showing the initial loading spinner unless we fire SyncState.Prepared + if (!this.lastPos) { + this.updateSyncState(_sync.SyncState.Prepared, { + oldSyncToken: undefined, + nextSyncToken: resp.pos, + catchingUp: false, + fromCache: false + }); + } + // Conversely, Element won't show the room list unless there is at least 1x SyncState.Syncing + // so hence for the very first sync we will fire prepared then immediately syncing. + this.updateSyncState(_sync.SyncState.Syncing, { + oldSyncToken: this.lastPos, + nextSyncToken: resp.pos, + catchingUp: false, + fromCache: false + }); + this.lastPos = resp.pos; + break; + case _slidingSync.SlidingSyncState.RequestFinished: + if (err) { + this.failCount += 1; + this.updateSyncState(this.failCount > FAILED_SYNC_ERROR_THRESHOLD ? _sync.SyncState.Error : _sync.SyncState.Reconnecting, { + error: new _httpApi.MatrixError(err) + }); + if (this.shouldAbortSync(new _httpApi.MatrixError(err))) { + return; // shouldAbortSync actually stops syncing too so we don't need to do anything. + } + } else { + this.failCount = 0; + } + break; + } + } + + /** + * Sync rooms the user has left. + * @returns Resolved when they've been added to the store. + */ + async syncLeftRooms() { + return []; // TODO + } + + /** + * Peek into a room. This will result in the room in question being synced so it + * is accessible via getRooms(). Live updates for the room will be provided. + * @param roomId - The room ID to peek into. + * @returns A promise which resolves once the room has been added to the + * store. + */ + async peek(roomId) { + return null; // TODO + } + + /** + * Stop polling for updates in the peeked room. NOPs if there is no room being + * peeked. + */ + stopPeeking() { + // TODO + } + + /** + * Specify the set_presence value to be used for subsequent calls to the Sync API. + * @param presence - the presence to specify to set_presence of sync calls + */ + setPresence(presence) { + // TODO not possible in sliding sync yet + } + + /** + * Returns the current state of this sync object + * @see MatrixClient#event:"sync" + */ + getSyncState() { + return this.syncState; + } + + /** + * Returns the additional data object associated with + * the current sync state, or null if there is no + * such data. + * Sync errors, if available, are put in the 'error' key of + * this object. + */ + getSyncStateData() { + var _this$syncStateData; + return (_this$syncStateData = this.syncStateData) !== null && _this$syncStateData !== void 0 ? _this$syncStateData : null; + } + + // Helper functions which set up JS SDK structs are below and are identical to the sync v2 counterparts + + createRoom(roomId) { + // XXX cargoculted from sync.ts + const { + timelineSupport + } = this.client; + const room = new _room.Room(roomId, this.client, this.client.getUserId(), { + lazyLoadMembers: this.opts.lazyLoadMembers, + pendingEventOrdering: this.opts.pendingEventOrdering, + timelineSupport + }); + this.client.reEmitter.reEmit(room, [_room.RoomEvent.Name, _room.RoomEvent.Redaction, _room.RoomEvent.RedactionCancelled, _room.RoomEvent.Receipt, _room.RoomEvent.Tags, _room.RoomEvent.LocalEchoUpdated, _room.RoomEvent.AccountData, _room.RoomEvent.MyMembership, _room.RoomEvent.Timeline, _room.RoomEvent.TimelineReset]); + this.registerStateListeners(room); + return room; + } + registerStateListeners(room) { + // XXX cargoculted from sync.ts + // we need to also re-emit room state and room member events, so hook it up + // to the client now. We need to add a listener for RoomState.members in + // order to hook them correctly. + this.client.reEmitter.reEmit(room.currentState, [_roomState.RoomStateEvent.Events, _roomState.RoomStateEvent.Members, _roomState.RoomStateEvent.NewMember, _roomState.RoomStateEvent.Update]); + room.currentState.on(_roomState.RoomStateEvent.NewMember, (event, state, member) => { + var _this$client$getUser; + member.user = (_this$client$getUser = this.client.getUser(member.userId)) !== null && _this$client$getUser !== void 0 ? _this$client$getUser : undefined; + this.client.reEmitter.reEmit(member, [_roomMember.RoomMemberEvent.Name, _roomMember.RoomMemberEvent.Typing, _roomMember.RoomMemberEvent.PowerLevel, _roomMember.RoomMemberEvent.Membership]); + }); + } + + /* + private deregisterStateListeners(room: Room): void { // XXX cargoculted from sync.ts + // could do with a better way of achieving this. + room.currentState.removeAllListeners(RoomStateEvent.Events); + room.currentState.removeAllListeners(RoomStateEvent.Members); + room.currentState.removeAllListeners(RoomStateEvent.NewMember); + } */ + + shouldAbortSync(error) { + if (error.errcode === "M_UNKNOWN_TOKEN") { + // The logout already happened, we just need to stop. + _logger.logger.warn("Token no longer valid - assuming logout"); + this.stop(); + this.updateSyncState(_sync.SyncState.Error, { + error + }); + return true; + } + return false; + } + async processRoomData(client, room, roomData) { + roomData = ensureNameEvent(client, room.roomId, roomData); + const stateEvents = mapEvents(this.client, room.roomId, roomData.required_state); + // Prevent events from being decrypted ahead of time + // this helps large account to speed up faster + // room::decryptCriticalEvent is in charge of decrypting all the events + // required for a client to function properly + let timelineEvents = mapEvents(this.client, room.roomId, roomData.timeline, false); + const ephemeralEvents = []; // TODO this.mapSyncEventsFormat(joinObj.ephemeral); + + // TODO: handle threaded / beacon events + + if (roomData.initial) { + // we should not know about any of these timeline entries if this is a genuinely new room. + // If we do, then we've effectively done scrollback (e.g requesting timeline_limit: 1 for + // this room, then timeline_limit: 50). + const knownEvents = new Set(); + room.getLiveTimeline().getEvents().forEach(e => { + knownEvents.add(e.getId()); + }); + // all unknown events BEFORE a known event must be scrollback e.g: + // D E <-- what we know + // A B C D E F <-- what we just received + // means: + // A B C <-- scrollback + // D E <-- dupes + // F <-- new event + // We bucket events based on if we have seen a known event yet. + const oldEvents = []; + const newEvents = []; + let seenKnownEvent = false; + for (let i = timelineEvents.length - 1; i >= 0; i--) { + const recvEvent = timelineEvents[i]; + if (knownEvents.has(recvEvent.getId())) { + seenKnownEvent = true; + continue; // don't include this event, it's a dupe + } + if (seenKnownEvent) { + // old -> new + oldEvents.push(recvEvent); + } else { + // old -> new + newEvents.unshift(recvEvent); + } + } + timelineEvents = newEvents; + if (oldEvents.length > 0) { + // old events are scrollback, insert them now + room.addEventsToTimeline(oldEvents, true, room.getLiveTimeline(), roomData.prev_batch); + } + } + const encrypted = room.hasEncryptionStateEvent(); + // we do this first so it's correct when any of the events fire + if (roomData.notification_count != null) { + room.setUnreadNotificationCount(_room.NotificationCountType.Total, roomData.notification_count); + } + if (roomData.highlight_count != null) { + // We track unread notifications ourselves in encrypted rooms, so don't + // bother setting it here. We trust our calculations better than the + // server's for this case, and therefore will assume that our non-zero + // count is accurate. + if (!encrypted || encrypted && room.getUnreadNotificationCount(_room.NotificationCountType.Highlight) <= 0) { + room.setUnreadNotificationCount(_room.NotificationCountType.Highlight, roomData.highlight_count); + } + } + if (Number.isInteger(roomData.invited_count)) { + room.currentState.setInvitedMemberCount(roomData.invited_count); + } + if (Number.isInteger(roomData.joined_count)) { + room.currentState.setJoinedMemberCount(roomData.joined_count); + } + if (roomData.invite_state) { + const inviteStateEvents = mapEvents(this.client, room.roomId, roomData.invite_state); + await this.injectRoomEvents(room, inviteStateEvents); + if (roomData.initial) { + room.recalculate(); + this.client.store.storeRoom(room); + this.client.emit(_client.ClientEvent.Room, room); + } + inviteStateEvents.forEach(e => { + this.client.emit(_client.ClientEvent.Event, e); + }); + room.updateMyMembership(_membership.KnownMembership.Invite); + return; + } + if (roomData.initial) { + var _roomData$prev_batch; + // set the back-pagination token. Do this *before* adding any + // events so that clients can start back-paginating. + room.getLiveTimeline().setPaginationToken((_roomData$prev_batch = roomData.prev_batch) !== null && _roomData$prev_batch !== void 0 ? _roomData$prev_batch : null, _eventTimeline.EventTimeline.BACKWARDS); + } + + /* TODO + else if (roomData.limited) { + let limited = true; + // we've got a limited sync, so we *probably* have a gap in the + // timeline, so should reset. But we might have been peeking or + // paginating and already have some of the events, in which + // case we just want to append any subsequent events to the end + // of the existing timeline. + // + // This is particularly important in the case that we already have + // *all* of the events in the timeline - in that case, if we reset + // the timeline, we'll end up with an entirely empty timeline, + // which we'll try to paginate but not get any new events (which + // will stop us linking the empty timeline into the chain). + // + for (let i = timelineEvents.length - 1; i >= 0; i--) { + const eventId = timelineEvents[i].getId(); + if (room.getTimelineForEvent(eventId)) { + logger.debug("Already have event " + eventId + " in limited " + + "sync - not resetting"); + limited = false; + // we might still be missing some of the events before i; + // we don't want to be adding them to the end of the + // timeline because that would put them out of order. + timelineEvents.splice(0, i); + // XXX: there's a problem here if the skipped part of the + // timeline modifies the state set in stateEvents, because + // we'll end up using the state from stateEvents rather + // than the later state from timelineEvents. We probably + // need to wind stateEvents forward over the events we're + // skipping. + break; + } + } + if (limited) { + room.resetLiveTimeline( + roomData.prev_batch, + null, // TODO this.syncOpts.canResetEntireTimeline(room.roomId) ? null : syncEventData.oldSyncToken, + ); + // We have to assume any gap in any timeline is + // reason to stop incrementally tracking notifications and + // reset the timeline. + this.client.resetNotifTimelineSet(); + this.registerStateListeners(room); + } + } */ + + await this.injectRoomEvents(room, stateEvents, timelineEvents, roomData.num_live); + + // we deliberately don't add ephemeral events to the timeline + room.addEphemeralEvents(ephemeralEvents); + + // local fields must be set before any async calls because call site assumes + // synchronous execution prior to emitting SlidingSyncState.Complete + room.updateMyMembership(_membership.KnownMembership.Join); + room.recalculate(); + if (roomData.initial) { + client.store.storeRoom(room); + client.emit(_client.ClientEvent.Room, room); + } + + // check if any timeline events should bing and add them to the notifEvents array: + // we'll purge this once we've fully processed the sync response + this.addNotifications(timelineEvents); + const processRoomEvent = async e => { + client.emit(_client.ClientEvent.Event, e); + if (e.isState() && e.getType() == _event.EventType.RoomEncryption && this.syncOpts.cryptoCallbacks) { + await this.syncOpts.cryptoCallbacks.onCryptoEvent(room, e); + } + }; + await (0, _utils.promiseMapSeries)(stateEvents, processRoomEvent); + await (0, _utils.promiseMapSeries)(timelineEvents, processRoomEvent); + ephemeralEvents.forEach(function (e) { + client.emit(_client.ClientEvent.Event, e); + }); + + // Decrypt only the last message in all rooms to make sure we can generate a preview + // And decrypt all events after the recorded read receipt to ensure an accurate + // notification count + room.decryptCriticalEvents(); + } + + /** + * Injects events into a room's model. + * @param stateEventList - A list of state events. This is the state + * at the *START* of the timeline list if it is supplied. + * @param timelineEventList - A list of timeline events. Lower index + * is earlier in time. Higher index is later. + * @param numLive - the number of events in timelineEventList which just happened, + * supplied from the server. + */ + async injectRoomEvents(room, stateEventList, timelineEventList, numLive) { + timelineEventList = timelineEventList || []; + stateEventList = stateEventList || []; + numLive = numLive || 0; + + // If there are no events in the timeline yet, initialise it with + // the given state events + const liveTimeline = room.getLiveTimeline(); + const timelineWasEmpty = liveTimeline.getEvents().length == 0; + if (timelineWasEmpty) { + // Passing these events into initialiseState will freeze them, so we need + // to compute and cache the push actions for them now, otherwise sync dies + // with an attempt to assign to read only property. + // XXX: This is pretty horrible and is assuming all sorts of behaviour from + // these functions that it shouldn't be. We should probably either store the + // push actions cache elsewhere so we can freeze MatrixEvents, or otherwise + // find some solution where MatrixEvents are immutable but allow for a cache + // field. + for (const ev of stateEventList) { + this.client.getPushActionsForEvent(ev); + } + liveTimeline.initialiseState(stateEventList); + } + + // If the timeline wasn't empty, we process the state events here: they're + // defined as updates to the state before the start of the timeline, so this + // starts to roll the state forward. + // XXX: That's what we *should* do, but this can happen if we were previously + // peeking in a room, in which case we obviously do *not* want to add the + // state events here onto the end of the timeline. Historically, the js-sdk + // has just set these new state events on the old and new state. This seems + // very wrong because there could be events in the timeline that diverge the + // state, in which case this is going to leave things out of sync. However, + // for now I think it;s best to behave the same as the code has done previously. + if (!timelineWasEmpty) { + // XXX: As above, don't do this... + //room.addLiveEvents(stateEventList || []); + // Do this instead... + room.oldState.setStateEvents(stateEventList); + room.currentState.setStateEvents(stateEventList); + } + + // the timeline is broken into 'live' events which just happened and normal timeline events + // which are still to be appended to the end of the live timeline but happened a while ago. + // The live events are marked as fromCache=false to ensure that downstream components know + // this is a live event, not historical (from a remote server cache). + + let liveTimelineEvents = []; + if (numLive > 0) { + // last numLive events are live + liveTimelineEvents = timelineEventList.slice(-1 * numLive); + // everything else is not live + timelineEventList = timelineEventList.slice(0, -1 * liveTimelineEvents.length); + } + + // execute the timeline events. This will continue to diverge the current state + // if the timeline has any state events in it. + // This also needs to be done before running push rules on the events as they need + // to be decorated with sender etc. + await room.addLiveEvents(timelineEventList, { + fromCache: true + }); + if (liveTimelineEvents.length > 0) { + await room.addLiveEvents(liveTimelineEvents, { + fromCache: false + }); + } + room.recalculate(); + + // resolve invites now we have set the latest state + this.resolveInvites(room); + } + resolveInvites(room) { + if (!room || !this.opts.resolveInvitesToProfiles) { + return; + } + const client = this.client; + // For each invited room member we want to give them a displayname/avatar url + // if they have one (the m.room.member invites don't contain this). + room.getMembersWithMembership(_membership.KnownMembership.Invite).forEach(function (member) { + if (member.requestedProfileInfo) return; + member.requestedProfileInfo = true; + // try to get a cached copy first. + const user = client.getUser(member.userId); + let promise; + if (user) { + promise = Promise.resolve({ + avatar_url: user.avatarUrl, + displayname: user.displayName + }); + } else { + promise = client.getProfileInfo(member.userId); + } + promise.then(function (info) { + // slightly naughty by doctoring the invite event but this means all + // the code paths remain the same between invite/join display name stuff + // which is a worthy trade-off for some minor pollution. + const inviteEvent = member.events.member; + if (inviteEvent.getContent().membership !== _membership.KnownMembership.Invite) { + // between resolving and now they have since joined, so don't clobber + return; + } + inviteEvent.getContent().avatar_url = info.avatar_url; + inviteEvent.getContent().displayname = info.displayname; + // fire listeners + member.setMembershipEvent(inviteEvent, room.currentState); + }, function (_err) { + // OH WELL. + }); + }); + } + retryImmediately() { + return true; + } + + /** + * Main entry point. Blocks until stop() is called. + */ + async sync() { + _logger.logger.debug("Sliding sync init loop"); + + // 1) We need to get push rules so we can check if events should bing as we get + // them from /sync. + while (!this.client.isGuest()) { + try { + _logger.logger.debug("Getting push rules..."); + const result = await this.client.getPushRules(); + _logger.logger.debug("Got push rules"); + this.client.pushRules = result; + break; + } catch (err) { + _logger.logger.error("Getting push rules failed", err); + if (this.shouldAbortSync(err)) { + return; + } + } + } + + // start syncing + await this.slidingSync.start(); + } + + /** + * Stops the sync object from syncing. + */ + stop() { + _logger.logger.debug("SyncApi.stop"); + this.slidingSync.stop(); + } + + /** + * Sets the sync state and emits an event to say so + * @param newState - The new state string + * @param data - Object of additional data to emit in the event + */ + updateSyncState(newState, data) { + const old = this.syncState; + this.syncState = newState; + this.syncStateData = data; + this.client.emit(_client.ClientEvent.Sync, this.syncState, old, data); + } + + /** + * Takes a list of timelineEvents and adds and adds to notifEvents + * as appropriate. + * This must be called after the room the events belong to has been stored. + * + * @param timelineEventList - A list of timeline events. Lower index + * is earlier in time. Higher index is later. + */ + addNotifications(timelineEventList) { + // gather our notifications into this.notifEvents + if (!this.client.getNotifTimelineSet()) { + return; + } + for (const timelineEvent of timelineEventList) { + const pushActions = this.client.getPushActionsForEvent(timelineEvent); + if (pushActions && pushActions.notify && pushActions.tweaks && pushActions.tweaks.highlight) { + this.notifEvents.push(timelineEvent); + } + } + } + + /** + * Purge any events in the notifEvents array. Used after a /sync has been complete. + * This should not be called at a per-room scope (e.g in onRoomData) because otherwise the ordering + * will be messed up e.g room A gets a bing, room B gets a newer bing, but both in the same /sync + * response. If we purge at a per-room scope then we could process room B before room A leading to + * room B appearing earlier in the notifications timeline, even though it has the higher origin_server_ts. + */ + purgeNotifications() { + this.notifEvents.sort(function (a, b) { + return a.getTs() - b.getTs(); + }); + this.notifEvents.forEach(event => { + var _this$client$getNotif; + (_this$client$getNotif = this.client.getNotifTimelineSet()) === null || _this$client$getNotif === void 0 || _this$client$getNotif.addLiveEvent(event); + }); + this.notifEvents = []; + } +} +exports.SlidingSyncSdk = SlidingSyncSdk; +function ensureNameEvent(client, roomId, roomData) { + // make sure m.room.name is in required_state if there is a name, replacing anything previously + // there if need be. This ensures clients transparently 'calculate' the right room name. Native + // sliding sync clients should just read the "name" field. + if (!roomData.name) { + return roomData; + } + for (const stateEvent of roomData.required_state) { + if (stateEvent.type === _event.EventType.RoomName && stateEvent.state_key === "") { + stateEvent.content = { + name: roomData.name + }; + return roomData; + } + } + roomData.required_state.push({ + event_id: "$fake-sliding-sync-name-event-" + roomId, + state_key: "", + type: _event.EventType.RoomName, + content: { + name: roomData.name + }, + sender: client.getUserId(), + origin_server_ts: new Date().getTime() + }); + return roomData; +} +// Helper functions which set up JS SDK structs are below and are identical to the sync v2 counterparts, +// just outside the class. +function mapEvents(client, roomId, events, decrypt = true) { + const mapper = client.getEventMapper({ + decrypt + }); + return events.map(function (e) { + e.room_id = roomId; + return mapper(e); + }); +} +function processEphemeralEvents(client, roomId, ephEvents) { + const ephemeralEvents = mapEvents(client, roomId, ephEvents); + const room = client.getRoom(roomId); + if (!room) { + _logger.logger.warn("got ephemeral events for room but room doesn't exist on client:", roomId); + return; + } + room.addEphemeralEvents(ephemeralEvents); + ephemeralEvents.forEach(e => { + client.emit(_client.ClientEvent.Event, e); + }); +} +//# sourceMappingURL=sliding-sync-sdk.js.map + +/***/ }), + +/***/ 4885: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SlidingSyncState = exports.SlidingSyncEvent = exports.SlidingSync = exports.MSC3575_WILDCARD = exports.MSC3575_STATE_KEY_ME = exports.MSC3575_STATE_KEY_LAZY = exports.ExtensionState = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _typedEventEmitter = __nccwpck_require__(7150); +var _utils = __nccwpck_require__(2557); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +// /sync requests allow you to set a timeout= but the request may continue +// beyond that and wedge forever, so we need to track how long we are willing +// to keep open the connection. This constant is *ADDED* to the timeout= value +// to determine the max time we're willing to wait. +const BUFFER_PERIOD_MS = 10 * 1000; +const MSC3575_WILDCARD = exports.MSC3575_WILDCARD = "*"; +const MSC3575_STATE_KEY_ME = exports.MSC3575_STATE_KEY_ME = "$ME"; +const MSC3575_STATE_KEY_LAZY = exports.MSC3575_STATE_KEY_LAZY = "$LAZY"; + +/** + * Represents a subscription to a room or set of rooms. Controls which events are returned. + */ + +/** + * Controls which rooms are returned in a given list. + */ + +/** + * Represents a list subscription. + */ + +/** + * A complete Sliding Sync request. + */ + +/** + * A complete Sliding Sync response + */ +let SlidingSyncState = exports.SlidingSyncState = /*#__PURE__*/function (SlidingSyncState) { + SlidingSyncState["RequestFinished"] = "FINISHED"; + SlidingSyncState["Complete"] = "COMPLETE"; + return SlidingSyncState; +}({}); +/** + * Internal Class. SlidingList represents a single list in sliding sync. The list can have filters, + * multiple sliding windows, and maintains the index-\>room_id mapping. + */ +class SlidingList { + /** + * Construct a new sliding list. + * @param list - The range, sort and filter values to use for this list. + */ + constructor(list) { + // returned data + (0, _defineProperty2.default)(this, "roomIndexToRoomId", {}); + (0, _defineProperty2.default)(this, "joinedCount", 0); + this.replaceList(list); + } + + /** + * Mark this list as modified or not. Modified lists will return sticky params with calls to getList. + * This is useful for the first time the list is sent, or if the list has changed in some way. + * @param modified - True to mark this list as modified so all sticky parameters will be re-sent. + */ + setModified(modified) { + this.isModified = modified; + } + + /** + * Update the list range for this list. Does not affect modified status as list ranges are non-sticky. + * @param newRanges - The new ranges for the list + */ + updateListRange(newRanges) { + this.list.ranges = JSON.parse(JSON.stringify(newRanges)); + } + + /** + * Replace list parameters. All fields will be replaced with the new list parameters. + * @param list - The new list parameters + */ + replaceList(list) { + list.filters = list.filters || {}; + list.ranges = list.ranges || []; + this.list = JSON.parse(JSON.stringify(list)); + this.isModified = true; + + // reset values as the join count may be very different (if filters changed) including the rooms + // (e.g. sort orders or sliding window ranges changed) + + // the constantly changing sliding window ranges. Not an array for performance reasons + // E.g. tracking ranges 0-99, 500-599, we don't want to have a 600 element array + this.roomIndexToRoomId = {}; + // the total number of joined rooms according to the server, always >= len(roomIndexToRoomId) + this.joinedCount = 0; + } + + /** + * Return a copy of the list suitable for a request body. + * @param forceIncludeAllParams - True to forcibly include all params even if the list + * hasn't been modified. Callers may want to do this if they are modifying the list prior to calling + * updateList. + */ + getList(forceIncludeAllParams) { + let list = { + ranges: JSON.parse(JSON.stringify(this.list.ranges)) + }; + if (this.isModified || forceIncludeAllParams) { + list = JSON.parse(JSON.stringify(this.list)); + } + return list; + } + + /** + * Check if a given index is within the list range. This is required even though the /sync API + * provides explicit updates with index positions because of the following situation: + * 0 1 2 3 4 5 6 7 8 indexes + * a b c d e f COMMANDS: SYNC 0 2 a b c; SYNC 6 8 d e f; + * a b c d _ f COMMAND: DELETE 7; + * e a b c d f COMMAND: INSERT 0 e; + * c=3 is wrong as we are not tracking it, ergo we need to see if `i` is in range else drop it + * @param i - The index to check + * @returns True if the index is within a sliding window + */ + isIndexInRange(i) { + for (const r of this.list.ranges) { + if (r[0] <= i && i <= r[1]) { + return true; + } + } + return false; + } +} + +/** + * When onResponse extensions should be invoked: before or after processing the main response. + */ +let ExtensionState = exports.ExtensionState = /*#__PURE__*/function (ExtensionState) { + ExtensionState["PreProcess"] = "ExtState.PreProcess"; + ExtensionState["PostProcess"] = "ExtState.PostProcess"; + return ExtensionState; +}({}); +/** + * An interface that must be satisfied to register extensions + */ +/** + * Events which can be fired by the SlidingSync class. These are designed to provide different levels + * of information when processing sync responses. + * - RoomData: concerns rooms, useful for SlidingSyncSdk to update its knowledge of rooms. + * - Lifecycle: concerns callbacks at various well-defined points in the sync process. + * - List: concerns lists, useful for UI layers to re-render room lists. + * Specifically, the order of event invocation is: + * - Lifecycle (state=RequestFinished) + * - RoomData (N times) + * - Lifecycle (state=Complete) + * - List (at most once per list) + */ +let SlidingSyncEvent = exports.SlidingSyncEvent = /*#__PURE__*/function (SlidingSyncEvent) { + SlidingSyncEvent["RoomData"] = "SlidingSync.RoomData"; + SlidingSyncEvent["Lifecycle"] = "SlidingSync.Lifecycle"; + SlidingSyncEvent["List"] = "SlidingSync.List"; + return SlidingSyncEvent; +}({}); +/** + * SlidingSync is a high-level data structure which controls the majority of sliding sync. + * It has no hooks into JS SDK except for needing a MatrixClient to perform the HTTP request. + * This means this class (and everything it uses) can be used in isolation from JS SDK if needed. + * To hook this up with the JS SDK, you need to use SlidingSyncSdk. + */ +class SlidingSync extends _typedEventEmitter.TypedEventEmitter { + /** + * Create a new sliding sync instance + * @param proxyBaseUrl - The base URL of the sliding sync proxy + * @param lists - The lists to use for sliding sync. + * @param roomSubscriptionInfo - The params to use for room subscriptions. + * @param client - The client to use for /sync calls. + * @param timeoutMS - The number of milliseconds to wait for a response. + */ + constructor(proxyBaseUrl, lists, roomSubscriptionInfo, client, timeoutMS) { + super(); + (0, _defineProperty2.default)(this, "listModifiedCount", 0); + (0, _defineProperty2.default)(this, "terminated", false); + // flag set when resend() is called because we cannot rely on detecting AbortError in JS SDK :( + (0, _defineProperty2.default)(this, "needsResend", false); + // the txn_id to send with the next request. + (0, _defineProperty2.default)(this, "txnId", null); + // a list (in chronological order of when they were sent) of objects containing the txn ID and + // a defer to resolve/reject depending on whether they were successfully sent or not. + (0, _defineProperty2.default)(this, "txnIdDefers", []); + // map of extension name to req/resp handler + (0, _defineProperty2.default)(this, "extensions", {}); + (0, _defineProperty2.default)(this, "desiredRoomSubscriptions", new Set()); + // the *desired* room subscriptions + (0, _defineProperty2.default)(this, "confirmedRoomSubscriptions", new Set()); + // map of custom subscription name to the subscription + (0, _defineProperty2.default)(this, "customSubscriptions", new Map()); + // map of room ID to custom subscription name + (0, _defineProperty2.default)(this, "roomIdToCustomSubscription", new Map()); + this.proxyBaseUrl = proxyBaseUrl; + this.roomSubscriptionInfo = roomSubscriptionInfo; + this.client = client; + this.timeoutMS = timeoutMS; + this.lists = new Map(); + lists.forEach((list, key) => { + this.lists.set(key, new SlidingList(list)); + }); + } + + /** + * Add a custom room subscription, referred to by an arbitrary name. If a subscription with this + * name already exists, it is replaced. No requests are sent by calling this method. + * @param name - The name of the subscription. Only used to reference this subscription in + * useCustomSubscription. + * @param sub - The subscription information. + */ + addCustomSubscription(name, sub) { + if (this.customSubscriptions.has(name)) { + _logger.logger.warn(`addCustomSubscription: ${name} already exists as a custom subscription, ignoring.`); + return; + } + this.customSubscriptions.set(name, sub); + } + + /** + * Use a custom subscription previously added via addCustomSubscription. No requests are sent + * by calling this method. Use modifyRoomSubscriptions to resend subscription information. + * @param roomId - The room to use the subscription in. + * @param name - The name of the subscription. If this name is unknown, the default subscription + * will be used. + */ + useCustomSubscription(roomId, name) { + // We already know about this custom subscription, as it is immutable, + // we don't need to unconfirm the subscription. + if (this.roomIdToCustomSubscription.get(roomId) === name) { + return; + } + this.roomIdToCustomSubscription.set(roomId, name); + // unconfirm this subscription so a resend() will send it up afresh. + this.confirmedRoomSubscriptions.delete(roomId); + } + + /** + * Get the room index data for a list. + * @param key - The list key + * @returns The list data which contains the rooms in this list + */ + getListData(key) { + const data = this.lists.get(key); + if (!data) { + return null; + } + return { + joinedCount: data.joinedCount, + roomIndexToRoomId: Object.assign({}, data.roomIndexToRoomId) + }; + } + + /** + * Get the full request list parameters for a list index. This function is provided for callers to use + * in conjunction with setList to update fields on an existing list. + * @param key - The list key to get the params for. + * @returns A copy of the list params or undefined. + */ + getListParams(key) { + const params = this.lists.get(key); + if (!params) { + return null; + } + return params.getList(true); + } + + /** + * Set new ranges for an existing list. Calling this function when _only_ the ranges have changed + * is more efficient than calling setList(index,list) as this function won't resend sticky params, + * whereas setList always will. + * @param key - The list key to modify + * @param ranges - The new ranges to apply. + * @returns A promise which resolves to the transaction ID when it has been received down sync + * (or rejects with the transaction ID if the action was not applied e.g the request was cancelled + * immediately after sending, in which case the action will be applied in the subsequent request) + */ + setListRanges(key, ranges) { + const list = this.lists.get(key); + if (!list) { + return Promise.reject(new Error("no list with key " + key)); + } + list.updateListRange(ranges); + return this.resend(); + } + + /** + * Add or replace a list. Calling this function will interrupt the /sync request to resend new + * lists. + * @param key - The key to modify + * @param list - The new list parameters. + * @returns A promise which resolves to the transaction ID when it has been received down sync + * (or rejects with the transaction ID if the action was not applied e.g the request was cancelled + * immediately after sending, in which case the action will be applied in the subsequent request) + */ + setList(key, list) { + const existingList = this.lists.get(key); + if (existingList) { + existingList.replaceList(list); + this.lists.set(key, existingList); + } else { + this.lists.set(key, new SlidingList(list)); + } + this.listModifiedCount += 1; + return this.resend(); + } + + /** + * Get the room subscriptions for the sync API. + * @returns A copy of the desired room subscriptions. + */ + getRoomSubscriptions() { + return new Set(Array.from(this.desiredRoomSubscriptions)); + } + + /** + * Modify the room subscriptions for the sync API. Calling this function will interrupt the + * /sync request to resend new subscriptions. If the /sync stream has not started, this will + * prepare the room subscriptions for when start() is called. + * @param s - The new desired room subscriptions. + * @returns A promise which resolves to the transaction ID when it has been received down sync + * (or rejects with the transaction ID if the action was not applied e.g the request was cancelled + * immediately after sending, in which case the action will be applied in the subsequent request) + */ + modifyRoomSubscriptions(s) { + this.desiredRoomSubscriptions = s; + return this.resend(); + } + + /** + * Modify which events to retrieve for room subscriptions. Invalidates all room subscriptions + * such that they will be sent up afresh. + * @param rs - The new room subscription fields to fetch. + * @returns A promise which resolves to the transaction ID when it has been received down sync + * (or rejects with the transaction ID if the action was not applied e.g the request was cancelled + * immediately after sending, in which case the action will be applied in the subsequent request) + */ + modifyRoomSubscriptionInfo(rs) { + this.roomSubscriptionInfo = rs; + this.confirmedRoomSubscriptions = new Set(); + return this.resend(); + } + + /** + * Register an extension to send with the /sync request. + * @param ext - The extension to register. + */ + registerExtension(ext) { + if (this.extensions[ext.name()]) { + throw new Error(`registerExtension: ${ext.name()} already exists as an extension`); + } + this.extensions[ext.name()] = ext; + } + getExtensionRequest(isInitial) { + const ext = {}; + Object.keys(this.extensions).forEach(extName => { + ext[extName] = this.extensions[extName].onRequest(isInitial); + }); + return ext; + } + async onPreExtensionsResponse(ext) { + await Promise.all(Object.keys(ext).map(async extName => { + if (this.extensions[extName].when() == ExtensionState.PreProcess) { + await this.extensions[extName].onResponse(ext[extName]); + } + })); + } + async onPostExtensionsResponse(ext) { + await Promise.all(Object.keys(ext).map(async extName => { + if (this.extensions[extName].when() == ExtensionState.PostProcess) { + await this.extensions[extName].onResponse(ext[extName]); + } + })); + } + + /** + * Invoke all attached room data listeners. + * @param roomId - The room which received some data. + * @param roomData - The raw sliding sync response JSON. + */ + async invokeRoomDataListeners(roomId, roomData) { + if (!roomData.required_state) { + roomData.required_state = []; + } + if (!roomData.timeline) { + roomData.timeline = []; + } + await this.emitPromised(SlidingSyncEvent.RoomData, roomId, roomData); + } + + /** + * Invoke all attached lifecycle listeners. + * @param state - The Lifecycle state + * @param resp - The raw sync response JSON + * @param err - Any error that occurred when making the request e.g. network errors. + */ + invokeLifecycleListeners(state, resp, err) { + this.emit(SlidingSyncEvent.Lifecycle, state, resp, err); + } + shiftRight(listKey, hi, low) { + const list = this.lists.get(listKey); + if (!list) { + return; + } + // l h + // 0,1,2,3,4 <- before + // 0,1,2,2,3 <- after, hi is deleted and low is duplicated + for (let i = hi; i > low; i--) { + if (list.isIndexInRange(i)) { + list.roomIndexToRoomId[i] = list.roomIndexToRoomId[i - 1]; + } + } + } + shiftLeft(listKey, hi, low) { + const list = this.lists.get(listKey); + if (!list) { + return; + } + // l h + // 0,1,2,3,4 <- before + // 0,1,3,4,4 <- after, low is deleted and hi is duplicated + for (let i = low; i < hi; i++) { + if (list.isIndexInRange(i)) { + list.roomIndexToRoomId[i] = list.roomIndexToRoomId[i + 1]; + } + } + } + removeEntry(listKey, index) { + const list = this.lists.get(listKey); + if (!list) { + return; + } + // work out the max index + let max = -1; + for (const n in list.roomIndexToRoomId) { + if (Number(n) > max) { + max = Number(n); + } + } + if (max < 0 || index > max) { + return; + } + // Everything higher than the gap needs to be shifted left. + this.shiftLeft(listKey, max, index); + delete list.roomIndexToRoomId[max]; + } + addEntry(listKey, index) { + const list = this.lists.get(listKey); + if (!list) { + return; + } + // work out the max index + let max = -1; + for (const n in list.roomIndexToRoomId) { + if (Number(n) > max) { + max = Number(n); + } + } + if (max < 0 || index > max) { + return; + } + // Everything higher than the gap needs to be shifted right, +1 so we don't delete the highest element + this.shiftRight(listKey, max + 1, index); + } + processListOps(list, listKey) { + let gapIndex = -1; + const listData = this.lists.get(listKey); + if (!listData) { + return; + } + list.ops.forEach(op => { + if (!listData) { + return; + } + switch (op.op) { + case "DELETE": + { + _logger.logger.debug("DELETE", listKey, op.index, ";"); + delete listData.roomIndexToRoomId[op.index]; + if (gapIndex !== -1) { + // we already have a DELETE operation to process, so process it. + this.removeEntry(listKey, gapIndex); + } + gapIndex = op.index; + break; + } + case "INSERT": + { + _logger.logger.debug("INSERT", listKey, op.index, op.room_id, ";"); + if (listData.roomIndexToRoomId[op.index]) { + // something is in this space, shift items out of the way + if (gapIndex < 0) { + // we haven't been told where to shift from, so make way for a new room entry. + this.addEntry(listKey, op.index); + } else if (gapIndex > op.index) { + // the gap is further down the list, shift every element to the right + // starting at the gap so we can just shift each element in turn: + // [A,B,C,_] gapIndex=3, op.index=0 + // [A,B,C,C] i=3 + // [A,B,B,C] i=2 + // [A,A,B,C] i=1 + // Terminate. We'll assign into op.index next. + this.shiftRight(listKey, gapIndex, op.index); + } else if (gapIndex < op.index) { + // the gap is further up the list, shift every element to the left + // starting at the gap so we can just shift each element in turn + this.shiftLeft(listKey, op.index, gapIndex); + } + } + // forget the gap, we don't need it anymore. This is outside the check for + // a room being present in this index position because INSERTs always universally + // forget the gap, not conditionally based on the presence of a room in the INSERT + // position. Without this, DELETE 0; INSERT 0; would do the wrong thing. + gapIndex = -1; + listData.roomIndexToRoomId[op.index] = op.room_id; + break; + } + case "INVALIDATE": + { + const startIndex = op.range[0]; + for (let i = startIndex; i <= op.range[1]; i++) { + delete listData.roomIndexToRoomId[i]; + } + _logger.logger.debug("INVALIDATE", listKey, op.range[0], op.range[1], ";"); + break; + } + case "SYNC": + { + const startIndex = op.range[0]; + for (let i = startIndex; i <= op.range[1]; i++) { + const roomId = op.room_ids[i - startIndex]; + if (!roomId) { + break; // we are at the end of list + } + listData.roomIndexToRoomId[i] = roomId; + } + _logger.logger.debug("SYNC", listKey, op.range[0], op.range[1], (op.room_ids || []).join(" "), ";"); + break; + } + } + }); + if (gapIndex !== -1) { + // we already have a DELETE operation to process, so process it + // Everything higher than the gap needs to be shifted left. + this.removeEntry(listKey, gapIndex); + } + } + + /** + * Resend a Sliding Sync request. Used when something has changed in the request. Resolves with + * the transaction ID of this request on success. Rejects with the transaction ID of this request + * on failure. + */ + resend() { + var _this$abortController; + if (this.needsResend && this.txnIdDefers.length > 0) { + // we already have a resend queued, so just return the same promise + return this.txnIdDefers[this.txnIdDefers.length - 1].promise; + } + this.needsResend = true; + this.txnId = this.client.makeTxnId(); + const d = (0, _utils.defer)(); + this.txnIdDefers.push(_objectSpread(_objectSpread({}, d), {}, { + txnId: this.txnId + })); + (_this$abortController = this.abortController) === null || _this$abortController === void 0 || _this$abortController.abort(); + this.abortController = new AbortController(); + return d.promise; + } + resolveTransactionDefers(txnId) { + if (!txnId) { + return; + } + // find the matching index + let txnIndex = -1; + for (let i = 0; i < this.txnIdDefers.length; i++) { + if (this.txnIdDefers[i].txnId === txnId) { + txnIndex = i; + break; + } + } + if (txnIndex === -1) { + // this shouldn't happen; we shouldn't be seeing txn_ids for things we don't know about, + // whine about it. + _logger.logger.warn(`resolveTransactionDefers: seen ${txnId} but it isn't a pending txn, ignoring.`); + return; + } + // This list is sorted in time, so if the input txnId ACKs in the middle of this array, + // then everything before it that hasn't been ACKed yet never will and we should reject them. + for (let i = 0; i < txnIndex; i++) { + this.txnIdDefers[i].reject(this.txnIdDefers[i].txnId); + } + this.txnIdDefers[txnIndex].resolve(txnId); + // clear out settled promises, including the one we resolved. + this.txnIdDefers = this.txnIdDefers.slice(txnIndex + 1); + } + + /** + * Stop syncing with the server. + */ + stop() { + var _this$abortController2; + this.terminated = true; + (_this$abortController2 = this.abortController) === null || _this$abortController2 === void 0 || _this$abortController2.abort(); + // remove all listeners so things can be GC'd + this.removeAllListeners(SlidingSyncEvent.Lifecycle); + this.removeAllListeners(SlidingSyncEvent.List); + this.removeAllListeners(SlidingSyncEvent.RoomData); + } + + /** + * Re-setup this connection e.g in the event of an expired session. + */ + resetup() { + var _this$abortController3; + _logger.logger.warn("SlidingSync: resetting connection info"); + // any pending txn ID defers will be forgotten already by the server, so clear them out + this.txnIdDefers.forEach(d => { + d.reject(d.txnId); + }); + this.txnIdDefers = []; + // resend sticky params and de-confirm all subscriptions + this.lists.forEach(l => { + l.setModified(true); + }); + this.confirmedRoomSubscriptions = new Set(); // leave desired ones alone though! + // reset the connection as we might be wedged + this.needsResend = true; + (_this$abortController3 = this.abortController) === null || _this$abortController3 === void 0 || _this$abortController3.abort(); + this.abortController = new AbortController(); + } + + /** + * Start syncing with the server. Blocks until stopped. + */ + async start() { + this.abortController = new AbortController(); + let currentPos; + while (!this.terminated) { + this.needsResend = false; + let doNotUpdateList = false; + let resp; + try { + const listModifiedCount = this.listModifiedCount; + const reqLists = {}; + this.lists.forEach((l, key) => { + reqLists[key] = l.getList(false); + }); + const reqBody = { + lists: reqLists, + pos: currentPos, + timeout: this.timeoutMS, + clientTimeout: this.timeoutMS + BUFFER_PERIOD_MS, + extensions: this.getExtensionRequest(currentPos === undefined) + }; + // check if we are (un)subscribing to a room and modify request this one time for it + const newSubscriptions = difference(this.desiredRoomSubscriptions, this.confirmedRoomSubscriptions); + const unsubscriptions = difference(this.confirmedRoomSubscriptions, this.desiredRoomSubscriptions); + if (unsubscriptions.size > 0) { + reqBody.unsubscribe_rooms = Array.from(unsubscriptions); + } + if (newSubscriptions.size > 0) { + reqBody.room_subscriptions = {}; + for (const roomId of newSubscriptions) { + const customSubName = this.roomIdToCustomSubscription.get(roomId); + let sub = this.roomSubscriptionInfo; + if (customSubName && this.customSubscriptions.has(customSubName)) { + sub = this.customSubscriptions.get(customSubName); + } + reqBody.room_subscriptions[roomId] = sub; + } + } + if (this.txnId) { + reqBody.txn_id = this.txnId; + this.txnId = null; + } + this.pendingReq = this.client.slidingSync(reqBody, this.proxyBaseUrl, this.abortController.signal); + resp = await this.pendingReq; + currentPos = resp.pos; + // update what we think we're subscribed to. + for (const roomId of newSubscriptions) { + this.confirmedRoomSubscriptions.add(roomId); + } + for (const roomId of unsubscriptions) { + this.confirmedRoomSubscriptions.delete(roomId); + } + if (listModifiedCount !== this.listModifiedCount) { + // the lists have been modified whilst we were waiting for 'await' to return, but the abort() + // call did nothing. It is NOT SAFE to modify the list array now. We'll process the response but + // not update list pointers. + _logger.logger.debug("list modified during await call, not updating list"); + doNotUpdateList = true; + } + // mark all these lists as having been sent as sticky so we don't keep sending sticky params + this.lists.forEach(l => { + l.setModified(false); + }); + // set default empty values so we don't need to null check + resp.lists = resp.lists || {}; + resp.rooms = resp.rooms || {}; + resp.extensions = resp.extensions || {}; + Object.keys(resp.lists).forEach(key => { + const list = this.lists.get(key); + if (!list || !resp) { + return; + } + list.joinedCount = resp.lists[key].count; + }); + this.invokeLifecycleListeners(SlidingSyncState.RequestFinished, resp); + } catch (err) { + if (err.httpStatus) { + this.invokeLifecycleListeners(SlidingSyncState.RequestFinished, null, err); + if (err.httpStatus === 400) { + // session probably expired TODO: assign an errcode + // so drop state and re-request + this.resetup(); + currentPos = undefined; + await (0, _utils.sleep)(50); // in case the 400 was for something else; don't tightloop + continue; + } // else fallthrough to generic error handling + } else if (this.needsResend || err.name === "AbortError") { + continue; // don't sleep as we caused this error by abort()ing the request. + } + _logger.logger.error(err); + await (0, _utils.sleep)(5000); + } + if (!resp) { + continue; + } + await this.onPreExtensionsResponse(resp.extensions); + for (const roomId in resp.rooms) { + await this.invokeRoomDataListeners(roomId, resp.rooms[roomId]); + } + const listKeysWithUpdates = new Set(); + if (!doNotUpdateList) { + for (const [key, list] of Object.entries(resp.lists)) { + list.ops = list.ops || []; + if (list.ops.length > 0) { + listKeysWithUpdates.add(key); + } + this.processListOps(list, key); + } + } + this.invokeLifecycleListeners(SlidingSyncState.Complete, resp); + await this.onPostExtensionsResponse(resp.extensions); + listKeysWithUpdates.forEach(listKey => { + const list = this.lists.get(listKey); + if (!list) { + return; + } + this.emit(SlidingSyncEvent.List, listKey, list.joinedCount, Object.assign({}, list.roomIndexToRoomId)); + }); + this.resolveTransactionDefers(resp.txn_id); + } + } +} +exports.SlidingSync = SlidingSync; +const difference = (setA, setB) => { + const diff = new Set(setA); + for (const elem of setB) { + diff.delete(elem); + } + return diff; +}; +//# sourceMappingURL=sliding-sync.js.map + +/***/ }), + +/***/ 5143: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LocalIndexedDBStoreBackend = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _syncAccumulator = __nccwpck_require__(2768); +var _utils = __nccwpck_require__(2557); +var _indexeddbHelpers = __nccwpck_require__(7978); +var _logger = __nccwpck_require__(3854); +/* +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const DB_MIGRATIONS = [db => { // Make user store, clobber based on user ID. (userId property of User objects) db.createObjectStore("users", { keyPath: ["userId"] - }); // Make account data store, clobber based on event type. - // (event.type property of MatrixEvent objects) + }); + // Make account data store, clobber based on event type. + // (event.type property of MatrixEvent objects) db.createObjectStore("accountData", { keyPath: ["type"] - }); // Make /sync store (sync tokens, room data, etc), always clobber (const key). + }); + // Make /sync store (sync tokens, room data, etc), always clobber (const key). db.createObjectStore("sync", { keyPath: ["clobber"] }); -} - -function upgradeSchemaV2(db) { +}, db => { const oobMembersStore = db.createObjectStore("oob_membership_events", { keyPath: ["room_id", "state_key"] }); oobMembersStore.createIndex("room", "room_id"); -} - -function upgradeSchemaV3(db) { +}, db => { db.createObjectStore("client_options", { keyPath: ["clobber"] }); +}, db => { + db.createObjectStore("to_device_queue", { + autoIncrement: true + }); } +// Expand as needed. +]; +const VERSION = DB_MIGRATIONS.length; + /** * Helper method to collect results from a Cursor and promiseify it. - * @param {ObjectStore|Index} store The store to perform openCursor on. - * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor. - * @param {Function} resultMapper A function which is repeatedly called with a + * @param store - The store to perform openCursor on. + * @param keyRange - Optional key range to apply on the cursor. + * @param resultMapper - A function which is repeatedly called with a * Cursor. * Return the data you want to keep. - * @return {Promise} Resolves to an array of whatever you returned from + * @returns Promise which resolves to an array of whatever you returned from * resultMapper. */ - - function selectQuery(store, keyRange, resultMapper) { const query = store.openCursor(keyRange); return new Promise((resolve, reject) => { const results = []; - - query.onerror = event => { - reject(new Error("Query failed: " + event.target.errorCode)); - }; // collect results - - - query.onsuccess = event => { - const cursor = event.target.result; - + query.onerror = () => { + reject(new Error("Query failed: " + query.error)); + }; + // collect results + query.onsuccess = () => { + const cursor = query.result; if (!cursor) { resolve(results); return; // end of results } - results.push(resultMapper(cursor)); cursor.continue(); }; }); } - function txnAsPromise(txn) { return new Promise((resolve, reject) => { txn.oncomplete = function (event) { resolve(event); }; - - txn.onerror = function (event) { - reject(event.target.error); + txn.onerror = function () { + reject(txn.error); }; }); } - function reqAsEventPromise(req) { return new Promise((resolve, reject) => { req.onsuccess = function (event) { resolve(event); }; - - req.onerror = function (event) { - reject(event.target.error); + req.onerror = function () { + reject(req.error); }; }); } - function reqAsPromise(req) { return new Promise((resolve, reject) => { req.onsuccess = () => resolve(req); - req.onerror = err => reject(err); }); } - function reqAsCursorPromise(req) { - return reqAsEventPromise(req).then(event => event.target.result); + return reqAsEventPromise(req).then(event => req.result); } -/** - * Does the actual reading from and writing to the indexeddb - * - * Construct a new Indexed Database store backend. This requires a call to - * connect() before this store can be used. - * @constructor - * @param {Object} indexedDBInterface The Indexed DB interface e.g - * window.indexedDB - * @param {string=} dbName Optional database name. The same name must be used - * to open the same database. - */ +class LocalIndexedDBStoreBackend { + static exists(indexedDB, dbName) { + dbName = "matrix-js-sdk:" + (dbName || "default"); + return (0, _indexeddbHelpers.exists)(indexedDB, dbName); + } + /** + * Does the actual reading from and writing to the indexeddb + * + * Construct a new Indexed Database store backend. This requires a call to + * `connect()` before this store can be used. + * @param indexedDB - The Indexed DB interface e.g + * `window.indexedDB` + * @param dbName - Optional database name. The same name must be used + * to open the same database. + */ + constructor(indexedDB, dbName = "default") { + (0, _defineProperty2.default)(this, "disconnected", true); + (0, _defineProperty2.default)(this, "_isNewlyCreated", false); + (0, _defineProperty2.default)(this, "pendingUserPresenceData", []); + this.indexedDB = indexedDB; + this.dbName = "matrix-js-sdk:" + dbName; + this.syncAccumulator = new _syncAccumulator.SyncAccumulator(); + } - -function LocalIndexedDBStoreBackend(indexedDBInterface, dbName) { - this.indexedDB = indexedDBInterface; - this._dbName = "matrix-js-sdk:" + (dbName || "default"); - this.db = null; - this._disconnected = true; - this._syncAccumulator = new _syncAccumulator.SyncAccumulator(); - this._isNewlyCreated = false; -} - -LocalIndexedDBStoreBackend.exists = function (indexedDB, dbName) { - dbName = "matrix-js-sdk:" + (dbName || "default"); - return IndexedDBHelpers.exists(indexedDB, dbName); -}; - -LocalIndexedDBStoreBackend.prototype = { /** * Attempt to connect to the database. This can fail if the user does not * grant permission. - * @return {Promise} Resolves if successfully connected. + * @returns Promise which resolves if successfully connected. */ - connect: function () { - if (!this._disconnected) { + connect(onClose) { + if (!this.disconnected) { _logger.logger.log(`LocalIndexedDBStoreBackend.connect: already connected or connecting`); - return Promise.resolve(); } - - this._disconnected = false; - + this.disconnected = false; _logger.logger.log(`LocalIndexedDBStoreBackend.connect: connecting...`); - - const req = this.indexedDB.open(this._dbName, VERSION); - + const req = this.indexedDB.open(this.dbName, VERSION); req.onupgradeneeded = ev => { - const db = ev.target.result; + const db = req.result; const oldVersion = ev.oldVersion; - _logger.logger.log(`LocalIndexedDBStoreBackend.connect: upgrading from ${oldVersion}`); - if (oldVersion < 1) { - // The database did not previously exist. + // The database did not previously exist this._isNewlyCreated = true; - createDatabase(db); } - - if (oldVersion < 2) { - upgradeSchemaV2(db); - } - - if (oldVersion < 3) { - upgradeSchemaV3(db); - } // Expand as needed. - + DB_MIGRATIONS.forEach((migration, index) => { + if (oldVersion <= index) migration(db); + }); }; - req.onblocked = () => { _logger.logger.log(`can't yet open LocalIndexedDBStoreBackend because it is open elsewhere`); }; - _logger.logger.log(`LocalIndexedDBStoreBackend.connect: awaiting connection...`); - - return reqAsEventPromise(req).then(ev => { + return reqAsEventPromise(req).then(async () => { _logger.logger.log(`LocalIndexedDBStoreBackend.connect: connected`); + this.db = req.result; - this.db = ev.target.result; // add a poorly-named listener for when deleteDatabase is called + // add a poorly-named listener for when deleteDatabase is called // so we can close our db connections. - this.db.onversionchange = () => { - this.db.close(); + var _this$db; + (_this$db = this.db) === null || _this$db === void 0 || _this$db.close(); // this does not call onclose + this.disconnected = true; + this.db = undefined; }; - - return this._init(); + this.db.onclose = () => { + this.disconnected = true; + this.db = undefined; + onClose === null || onClose === void 0 || onClose(); + }; + await this.init(); }); - }, + } - /** @return {bool} whether or not the database was newly created in this session. */ - isNewlyCreated: function () { + /** @returns whether or not the database was newly created in this session. */ + isNewlyCreated() { return Promise.resolve(this._isNewlyCreated); - }, + } /** * Having connected, load initial data from the database and prepare for use - * @return {Promise} Resolves on success + * @returns Promise which resolves on success */ - _init: function () { - return Promise.all([this._loadAccountData(), this._loadSyncData()]).then(([accountData, syncData]) => { + init() { + return Promise.all([this.loadAccountData(), this.loadSyncData()]).then(([accountData, syncData]) => { _logger.logger.log(`LocalIndexedDBStoreBackend: loaded initial data`); - - this._syncAccumulator.accumulate({ + this.syncAccumulator.accumulate({ next_batch: syncData.nextBatch, rooms: syncData.roomsData, - groups: syncData.groupsData, account_data: { events: accountData } - }); + }, true); }); - }, + } /** * Returns the out-of-band membership events for this room that * were previously loaded. - * @param {string} roomId - * @returns {Promise} the events, potentially an empty array if OOB loading didn't yield any new members - * @returns {null} in case the members for this room haven't been stored yet + * @returns the events, potentially an empty array if OOB loading didn't yield any new members + * @returns in case the members for this room haven't been stored yet */ - getOutOfBandMembers: function (roomId) { + getOutOfBandMembers(roomId) { return new Promise((resolve, reject) => { const tx = this.db.transaction(["oob_membership_events"], "readonly"); const store = tx.objectStore("oob_membership_events"); const roomIndex = store.index("room"); const range = IDBKeyRange.only(roomId); const request = roomIndex.openCursor(range); - const membershipEvents = []; // did we encounter the oob_written marker object + const membershipEvents = []; + // did we encounter the oob_written marker object // amongst the results? That means OOB member // loading already happened for this room // but there were no members to persist as they // were all known already - let oobWritten = false; - - request.onsuccess = event => { - const cursor = event.target.result; - + request.onsuccess = () => { + const cursor = request.result; if (!cursor) { // Unknown room if (!membershipEvents.length && !oobWritten) { return resolve(null); } - return resolve(membershipEvents); } - const record = cursor.value; - if (record.oob_written) { oobWritten = true; } else { membershipEvents.push(record); } - cursor.continue(); }; - request.onerror = err => { reject(err); }; }).then(events => { - _logger.logger.log(`LL: got ${events && events.length}` + ` membershipEvents from storage for room ${roomId} ...`); - + _logger.logger.log(`LL: got ${events === null || events === void 0 ? void 0 : events.length} membershipEvents from storage for room ${roomId} ...`); return events; }); - }, + } /** * Stores the out-of-band membership events for this room. Note that * it still makes sense to store an empty array as the OOB status for the room is * marked as fetched, and getOutOfBandMembers will return an empty array instead of null - * @param {string} roomId - * @param {event[]} membershipEvents the membership events to store + * @param membershipEvents - the membership events to store */ - setOutOfBandMembers: async function (roomId, membershipEvents) { + async setOutOfBandMembers(roomId, membershipEvents) { _logger.logger.log(`LL: backend about to store ${membershipEvents.length}` + ` members for ${roomId}`); - const tx = this.db.transaction(["oob_membership_events"], "readwrite"); const store = tx.objectStore("oob_membership_events"); membershipEvents.forEach(e => { store.put(e); - }); // aside from all the events, we also write a marker object to the store + }); + // aside from all the events, we also write a marker object to the store // to mark the fact that OOB members have been written for this room. // It's possible that 0 members need to be written as all where previously know // but we still need to know whether to return null or [] from getOutOfBandMembers // where null means out of band members haven't been stored yet for this room - const markerObject = { room_id: roomId, oob_written: true, @@ -60935,10 +185680,9 @@ LocalIndexedDBStoreBackend.prototype = { }; store.put(markerObject); await txnAsPromise(tx); - _logger.logger.log(`LL: backend done storing for ${roomId}!`); - }, - clearOutOfBandMembers: async function (roomId) { + } + async clearOutOfBandMembers(roomId) { // the approach to delete all members for a room // is to get the min and max state key from the index // for that room, and then delete between those @@ -60949,227 +185693,228 @@ LocalIndexedDBStoreBackend.prototype = { const store = readTx.objectStore("oob_membership_events"); const roomIndex = store.index("room"); const roomRange = IDBKeyRange.only(roomId); - const minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, "next")).then(cursor => cursor && cursor.primaryKey[1]); - const maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, "prev")).then(cursor => cursor && cursor.primaryKey[1]); + const minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, "next")).then(cursor => (cursor === null || cursor === void 0 ? void 0 : cursor.primaryKey)[1]); + const maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, "prev")).then(cursor => (cursor === null || cursor === void 0 ? void 0 : cursor.primaryKey)[1]); const [minStateKey, maxStateKey] = await Promise.all([minStateKeyProm, maxStateKeyProm]); const writeTx = this.db.transaction(["oob_membership_events"], "readwrite"); const writeStore = writeTx.objectStore("oob_membership_events"); const membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]); - - _logger.logger.log(`LL: Deleting all users + marker in storage for ` + `room ${roomId}, with key range:`, [roomId, minStateKey], [roomId, maxStateKey]); - + _logger.logger.log(`LL: Deleting all users + marker in storage for room ${roomId}, with key range:`, [roomId, minStateKey], [roomId, maxStateKey]); await reqAsPromise(writeStore.delete(membersKeyRange)); - }, + } /** * Clear the entire database. This should be used when logging out of a client - * to prevent mixing data between accounts. - * @return {Promise} Resolved when the database is cleared. + * to prevent mixing data between accounts. Closes the database. + * @returns Resolved when the database is cleared. */ - clearDatabase: function () { - return new Promise((resolve, reject) => { - _logger.logger.log(`Removing indexeddb instance: ${this._dbName}`); - - const req = this.indexedDB.deleteDatabase(this._dbName); + clearDatabase() { + return new Promise(resolve => { + var _this$db2; + _logger.logger.log(`Removing indexeddb instance: ${this.dbName}`); + // Close the database first to avoid firing unexpected close events + (_this$db2 = this.db) === null || _this$db2 === void 0 || _this$db2.close(); + const req = this.indexedDB.deleteDatabase(this.dbName); req.onblocked = () => { - _logger.logger.log(`can't yet delete indexeddb ${this._dbName}` + ` because it is open elsewhere`); + _logger.logger.log(`can't yet delete indexeddb ${this.dbName} because it is open elsewhere`); }; - - req.onerror = ev => { + req.onerror = () => { // in firefox, with indexedDB disabled, this fails with a // DOMError. We treat this as non-fatal, so that we can still // use the app. - _logger.logger.warn(`unable to delete js-sdk store indexeddb: ${ev.target.error}`); - + _logger.logger.warn(`unable to delete js-sdk store indexeddb: ${req.error}`); resolve(); }; - req.onsuccess = () => { - _logger.logger.log(`Removed indexeddb instance: ${this._dbName}`); - + _logger.logger.log(`Removed indexeddb instance: ${this.dbName}`); resolve(); }; }); - }, + } /** - * @param {boolean=} copy If false, the data returned is from internal + * @param copy - If false, the data returned is from internal * buffers and must not be mutated. Otherwise, a copy is made before * returning such that the data can be safely mutated. Default: true. * - * @return {Promise} Resolves with a sync response to restore the + * @returns Promise which resolves with a sync response to restore the * client state to where it was at the last save, or null if there * is no saved sync data. */ - getSavedSync: function (copy) { - if (copy === undefined) copy = true; - - const data = this._syncAccumulator.getJSON(); - + getSavedSync(copy = true) { + const data = this.syncAccumulator.getJSON(); if (!data.nextBatch) return Promise.resolve(null); - if (copy) { // We must deep copy the stored data so that the /sync processing code doesn't // corrupt the internal state of the sync accumulator (it adds non-clonable keys) - return Promise.resolve(utils.deepCopy(data)); + return Promise.resolve((0, _utils.deepCopy)(data)); } else { return Promise.resolve(data); } - }, - getNextBatchToken: function () { - return Promise.resolve(this._syncAccumulator.getNextBatchToken()); - }, - setSyncData: function (syncData) { + } + getNextBatchToken() { + return Promise.resolve(this.syncAccumulator.getNextBatchToken()); + } + setSyncData(syncData) { return Promise.resolve().then(() => { - this._syncAccumulator.accumulate(syncData); + this.syncAccumulator.accumulate(syncData); }); - }, - syncToDatabase: function (userTuples) { - const syncData = this._syncAccumulator.getJSON(); + } - return Promise.all([this._persistUserPresenceEvents(userTuples), this._persistAccountData(syncData.accountData), this._persistSyncData(syncData.nextBatch, syncData.roomsData, syncData.groupsData)]); - }, + /** + * Sync users and all accumulated sync data to the database. + * If a previous sync is in flight, the new data will be added to the + * next sync and the current sync's promise will be returned. + * @param userTuples - The user tuples + * @returns Promise which resolves if the data was persisted. + */ + async syncToDatabase(userTuples) { + if (this.syncToDatabasePromise) { + _logger.logger.warn("Skipping syncToDatabase() as persist already in flight"); + this.pendingUserPresenceData.push(...userTuples); + return this.syncToDatabasePromise; + } + userTuples.unshift(...this.pendingUserPresenceData); + this.syncToDatabasePromise = this.doSyncToDatabase(userTuples); + return this.syncToDatabasePromise; + } + async doSyncToDatabase(userTuples) { + try { + const syncData = this.syncAccumulator.getJSON(true); + await Promise.all([this.persistUserPresenceEvents(userTuples), this.persistAccountData(syncData.accountData), this.persistSyncData(syncData.nextBatch, syncData.roomsData)]); + } finally { + this.syncToDatabasePromise = undefined; + } + } /** * Persist rooms /sync data along with the next batch token. - * @param {string} nextBatch The next_batch /sync value. - * @param {Object} roomsData The 'rooms' /sync data from a SyncAccumulator - * @param {Object} groupsData The 'groups' /sync data from a SyncAccumulator - * @return {Promise} Resolves if the data was persisted. + * @param nextBatch - The next_batch /sync value. + * @param roomsData - The 'rooms' /sync data from a SyncAccumulator + * @returns Promise which resolves if the data was persisted. */ - _persistSyncData: function (nextBatch, roomsData, groupsData) { - _logger.logger.log("Persisting sync data up to ", nextBatch); - - return utils.promiseTry(() => { + persistSyncData(nextBatch, roomsData) { + _logger.logger.log("Persisting sync data up to", nextBatch); + return (0, _utils.promiseTry)(() => { const txn = this.db.transaction(["sync"], "readwrite"); const store = txn.objectStore("sync"); store.put({ clobber: "-", // constant key so will always clobber - nextBatch: nextBatch, - roomsData: roomsData, - groupsData: groupsData + nextBatch, + roomsData }); // put == UPSERT - - return txnAsPromise(txn); + return txnAsPromise(txn).then(() => { + _logger.logger.log("Persisted sync data up to", nextBatch); + }); }); - }, + } /** * Persist a list of account data events. Events with the same 'type' will * be replaced. - * @param {Object[]} accountData An array of raw user-scoped account data events - * @return {Promise} Resolves if the events were persisted. + * @param accountData - An array of raw user-scoped account data events + * @returns Promise which resolves if the events were persisted. */ - _persistAccountData: function (accountData) { - return utils.promiseTry(() => { + persistAccountData(accountData) { + return (0, _utils.promiseTry)(() => { const txn = this.db.transaction(["accountData"], "readwrite"); const store = txn.objectStore("accountData"); - - for (let i = 0; i < accountData.length; i++) { - store.put(accountData[i]); // put == UPSERT + for (const event of accountData) { + store.put(event); // put == UPSERT } - - return txnAsPromise(txn); + return txnAsPromise(txn).then(); }); - }, + } /** * Persist a list of [user id, presence event] they are for. * Users with the same 'userId' will be replaced. * Presence events should be the event in its raw form (not the Event * object) - * @param {Object[]} tuples An array of [userid, event] tuples - * @return {Promise} Resolves if the users were persisted. + * @param tuples - An array of [userid, event] tuples + * @returns Promise which resolves if the users were persisted. */ - _persistUserPresenceEvents: function (tuples) { - return utils.promiseTry(() => { + persistUserPresenceEvents(tuples) { + return (0, _utils.promiseTry)(() => { const txn = this.db.transaction(["users"], "readwrite"); const store = txn.objectStore("users"); - for (const tuple of tuples) { store.put({ userId: tuple[0], event: tuple[1] }); // put == UPSERT } - - return txnAsPromise(txn); + return txnAsPromise(txn).then(); }); - }, + } /** * Load all user presence events from the database. This is not cached. * FIXME: It would probably be more sensible to store the events in the * sync. - * @return {Promise} A list of presence events in their raw form. + * @returns A list of presence events in their raw form. */ - getUserPresenceEvents: function () { - return utils.promiseTry(() => { + getUserPresenceEvents() { + return (0, _utils.promiseTry)(() => { const txn = this.db.transaction(["users"], "readonly"); const store = txn.objectStore("users"); return selectQuery(store, undefined, cursor => { return [cursor.value.userId, cursor.value.event]; }); }); - }, + } /** * Load all the account data events from the database. This is not cached. - * @return {Promise} A list of raw global account events. + * @returns A list of raw global account events. */ - _loadAccountData: function () { + loadAccountData() { _logger.logger.log(`LocalIndexedDBStoreBackend: loading account data...`); - - return utils.promiseTry(() => { + return (0, _utils.promiseTry)(() => { const txn = this.db.transaction(["accountData"], "readonly"); const store = txn.objectStore("accountData"); return selectQuery(store, undefined, cursor => { return cursor.value; }).then(result => { _logger.logger.log(`LocalIndexedDBStoreBackend: loaded account data`); - return result; }); }); - }, + } /** * Load the sync data from the database. - * @return {Promise} An object with "roomsData" and "nextBatch" keys. + * @returns An object with "roomsData" and "nextBatch" keys. */ - _loadSyncData: function () { + loadSyncData() { _logger.logger.log(`LocalIndexedDBStoreBackend: loading sync data...`); - - return utils.promiseTry(() => { + return (0, _utils.promiseTry)(() => { const txn = this.db.transaction(["sync"], "readonly"); const store = txn.objectStore("sync"); return selectQuery(store, undefined, cursor => { return cursor.value; }).then(results => { _logger.logger.log(`LocalIndexedDBStoreBackend: loaded sync data`); - if (results.length > 1) { _logger.logger.warn("loadSyncData: More than 1 sync row found."); } - return results.length > 0 ? results[0] : {}; }); }); - }, - getClientOptions: function () { + } + getClientOptions() { return Promise.resolve().then(() => { const txn = this.db.transaction(["client_options"], "readonly"); const store = txn.objectStore("client_options"); return selectQuery(store, undefined, cursor => { - if (cursor.value && cursor.value && cursor.value.options) { - return cursor.value.options; - } + var _cursor$value; + return (_cursor$value = cursor.value) === null || _cursor$value === void 0 ? void 0 : _cursor$value.options; }).then(results => results[0]); }); - }, - storeClientOptions: async function (options) { + } + async storeClientOptions(options) { const txn = this.db.transaction(["client_options"], "readwrite"); const store = txn.objectStore("client_options"); store.put({ @@ -61177,32 +185922,65 @@ LocalIndexedDBStoreBackend.prototype = { // constant key so will always clobber options: options }); // put == UPSERT - await txnAsPromise(txn); } -}; + async saveToDeviceBatches(batches) { + const txn = this.db.transaction(["to_device_queue"], "readwrite"); + const store = txn.objectStore("to_device_queue"); + for (const batch of batches) { + store.add(batch); + } + await txnAsPromise(txn); + } + async getOldestToDeviceBatch() { + const txn = this.db.transaction(["to_device_queue"], "readonly"); + const store = txn.objectStore("to_device_queue"); + const cursor = await reqAsCursorPromise(store.openCursor()); + if (!cursor) return null; + const resultBatch = cursor.value; + return { + id: cursor.key, + txnId: resultBatch.txnId, + eventType: resultBatch.eventType, + batch: resultBatch.batch + }; + } + async removeToDeviceBatch(id) { + const txn = this.db.transaction(["to_device_queue"], "readwrite"); + const store = txn.objectStore("to_device_queue"); + store.delete(id); + await txnAsPromise(txn); + } + + /* + * Close the database + */ + async destroy() { + var _this$db3; + (_this$db3 = this.db) === null || _this$db3 === void 0 || _this$db3.close(); + } +} +exports.LocalIndexedDBStoreBackend = LocalIndexedDBStoreBackend; +//# sourceMappingURL=indexeddb-local-backend.js.map /***/ }), /***/ 2342: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RemoteIndexedDBStoreBackend = RemoteIndexedDBStoreBackend; - -var _logger = __webpack_require__(3854); - -var _utils = __webpack_require__(2557); - +exports.RemoteIndexedDBStoreBackend = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); /* -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2017 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -61217,210 +185995,207 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** - * An IndexedDB store backend where the actual backend sits in a web - * worker. - * - * Construct a new Indexed Database store backend. This requires a call to - * connect() before this store can be used. - * @constructor - * @param {string} workerScript URL to the worker script - * @param {string=} dbName Optional database name. The same name must be used - * to open the same database. - * @param {Object} workerApi The web worker compatible interface object - */ -function RemoteIndexedDBStoreBackend(workerScript, dbName, workerApi) { - this._workerScript = workerScript; - this._dbName = dbName; - this._workerApi = workerApi; - this._worker = null; - this._nextSeq = 0; // The currently in-flight requests to the actual backend - - this._inFlight = {// seq: promise, - }; // Once we start connecting, we keep the promise and re-use it +class RemoteIndexedDBStoreBackend { + // seq: promise + // Once we start connecting, we keep the promise and re-use it // if we try to connect again - this._startPromise = null; -} + // Callback for when the IndexedDB gets closed unexpectedly + + /** + * An IndexedDB store backend where the actual backend sits in a web + * worker. + * + * Construct a new Indexed Database store backend. This requires a call to + * `connect()` before this store can be used. + * @param workerFactory - Factory which produces a Worker + * @param dbName - Optional database name. The same name must be used + * to open the same database. + */ + constructor(workerFactory, dbName) { + (0, _defineProperty2.default)(this, "nextSeq", 0); + // The currently in-flight requests to the actual backend + (0, _defineProperty2.default)(this, "inFlight", {}); + (0, _defineProperty2.default)(this, "onWorkerMessage", ev => { + const msg = ev.data; + if (msg.command == "closed") { + var _this$onClose; + (_this$onClose = this.onClose) === null || _this$onClose === void 0 || _this$onClose.call(this); + } else if (msg.command == "cmd_success" || msg.command == "cmd_fail") { + if (msg.seq === undefined) { + _logger.logger.error("Got reply from worker with no seq"); + return; + } + const def = this.inFlight[msg.seq]; + if (def === undefined) { + _logger.logger.error("Got reply for unknown seq " + msg.seq); + return; + } + delete this.inFlight[msg.seq]; + if (msg.command == "cmd_success") { + def.resolve(msg.result); + } else { + const error = new Error(msg.error.message); + error.name = msg.error.name; + def.reject(error); + } + } else { + _logger.logger.warn("Unrecognised message from worker: ", msg); + } + }); + this.workerFactory = workerFactory; + this.dbName = dbName; + } -RemoteIndexedDBStoreBackend.prototype = { /** * Attempt to connect to the database. This can fail if the user does not * grant permission. - * @return {Promise} Resolves if successfully connected. + * @returns Promise which resolves if successfully connected. */ - connect: function () { - return this._ensureStarted().then(() => this._doCmd('connect')); - }, + connect(onClose) { + this.onClose = onClose; + return this.ensureStarted().then(() => this.doCmd("connect")); + } /** * Clear the entire database. This should be used when logging out of a client * to prevent mixing data between accounts. - * @return {Promise} Resolved when the database is cleared. + * @returns Resolved when the database is cleared. */ - clearDatabase: function () { - return this._ensureStarted().then(() => this._doCmd('clearDatabase')); - }, + clearDatabase() { + return this.ensureStarted().then(() => this.doCmd("clearDatabase")); + } - /** @return {Promise} whether or not the database was newly created in this session. */ - isNewlyCreated: function () { - return this._doCmd('isNewlyCreated'); - }, + /** @returns whether or not the database was newly created in this session. */ + isNewlyCreated() { + return this.doCmd("isNewlyCreated"); + } /** - * @return {Promise} Resolves with a sync response to restore the + * @returns Promise which resolves with a sync response to restore the * client state to where it was at the last save, or null if there * is no saved sync data. */ - getSavedSync: function () { - return this._doCmd('getSavedSync'); - }, - getNextBatchToken: function () { - return this._doCmd('getNextBatchToken'); - }, - setSyncData: function (syncData) { - return this._doCmd('setSyncData', [syncData]); - }, - syncToDatabase: function (users) { - return this._doCmd('syncToDatabase', [users]); - }, + getSavedSync() { + return this.doCmd("getSavedSync"); + } + getNextBatchToken() { + return this.doCmd("getNextBatchToken"); + } + setSyncData(syncData) { + return this.doCmd("setSyncData", [syncData]); + } + syncToDatabase(userTuples) { + return this.doCmd("syncToDatabase", [userTuples]); + } /** * Returns the out-of-band membership events for this room that * were previously loaded. - * @param {string} roomId - * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members - * @returns {null} in case the members for this room haven't been stored yet + * @returns the events, potentially an empty array if OOB loading didn't yield any new members + * @returns in case the members for this room haven't been stored yet */ - getOutOfBandMembers: function (roomId) { - return this._doCmd('getOutOfBandMembers', [roomId]); - }, + getOutOfBandMembers(roomId) { + return this.doCmd("getOutOfBandMembers", [roomId]); + } /** * Stores the out-of-band membership events for this room. Note that * it still makes sense to store an empty array as the OOB status for the room is * marked as fetched, and getOutOfBandMembers will return an empty array instead of null - * @param {string} roomId - * @param {event[]} membershipEvents the membership events to store - * @returns {Promise} when all members have been stored + * @param membershipEvents - the membership events to store + * @returns when all members have been stored */ - setOutOfBandMembers: function (roomId, membershipEvents) { - return this._doCmd('setOutOfBandMembers', [roomId, membershipEvents]); - }, - clearOutOfBandMembers: function (roomId) { - return this._doCmd('clearOutOfBandMembers', [roomId]); - }, - getClientOptions: function () { - return this._doCmd('getClientOptions'); - }, - storeClientOptions: function (options) { - return this._doCmd('storeClientOptions', [options]); - }, + setOutOfBandMembers(roomId, membershipEvents) { + return this.doCmd("setOutOfBandMembers", [roomId, membershipEvents]); + } + clearOutOfBandMembers(roomId) { + return this.doCmd("clearOutOfBandMembers", [roomId]); + } + getClientOptions() { + return this.doCmd("getClientOptions"); + } + storeClientOptions(options) { + return this.doCmd("storeClientOptions", [options]); + } /** * Load all user presence events from the database. This is not cached. - * @return {Promise} A list of presence events in their raw form. + * @returns A list of presence events in their raw form. */ - getUserPresenceEvents: function () { - return this._doCmd('getUserPresenceEvents'); - }, - _ensureStarted: function () { - if (this._startPromise === null) { - this._worker = new this._workerApi(this._workerScript); - this._worker.onmessage = this._onWorkerMessage.bind(this); // tell the worker the db name. + getUserPresenceEvents() { + return this.doCmd("getUserPresenceEvents"); + } + async saveToDeviceBatches(batches) { + return this.doCmd("saveToDeviceBatches", [batches]); + } + async getOldestToDeviceBatch() { + return this.doCmd("getOldestToDeviceBatch"); + } + async removeToDeviceBatch(id) { + return this.doCmd("removeToDeviceBatch", [id]); + } + ensureStarted() { + if (!this.startPromise) { + this.worker = this.workerFactory(); + this.worker.onmessage = this.onWorkerMessage; - this._startPromise = this._doCmd('_setupWorker', [this._dbName]).then(() => { + // tell the worker the db name. + this.startPromise = this.doCmd("setupWorker", [this.dbName]).then(() => { _logger.logger.log("IndexedDB worker is ready"); }); } - - return this._startPromise; - }, - _doCmd: function (cmd, args) { + return this.startPromise; + } + doCmd(command, args) { // wrap in a q so if the postMessage throws, // the promise automatically gets rejected return Promise.resolve().then(() => { - const seq = this._nextSeq++; + var _this$worker; + const seq = this.nextSeq++; const def = (0, _utils.defer)(); - this._inFlight[seq] = def; - - this._worker.postMessage({ - command: cmd, - seq: seq, - args: args + this.inFlight[seq] = def; + (_this$worker = this.worker) === null || _this$worker === void 0 || _this$worker.postMessage({ + command, + seq, + args }); - return def.promise; }); - }, - _onWorkerMessage: function (ev) { - const msg = ev.data; - - if (msg.command == 'cmd_success' || msg.command == 'cmd_fail') { - if (msg.seq === undefined) { - _logger.logger.error("Got reply from worker with no seq"); - - return; - } - - const def = this._inFlight[msg.seq]; - - if (def === undefined) { - _logger.logger.error("Got reply for unknown seq " + msg.seq); - - return; - } - - delete this._inFlight[msg.seq]; - - if (msg.command == 'cmd_success') { - def.resolve(msg.result); - } else { - const error = new Error(msg.error.message); - error.name = msg.error.name; - def.reject(error); - } - } else { - _logger.logger.warn("Unrecognised message from worker: " + msg); - } } -}; + /* + * Destroy the web worker + */ + async destroy() { + var _this$worker2; + (_this$worker2 = this.worker) === null || _this$worker2 === void 0 || _this$worker2.terminate(); + } +} +exports.RemoteIndexedDBStoreBackend = RemoteIndexedDBStoreBackend; +//# sourceMappingURL=indexeddb-remote-backend.js.map /***/ }), /***/ 9252: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.IndexedDBStore = IndexedDBStore; - -var _memory = __webpack_require__(7309); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _events = __webpack_require__(8614); - -var _indexeddbLocalBackend = __webpack_require__(5143); - -var _indexeddbRemoteBackend = __webpack_require__(2342); - -var _user = __webpack_require__(1104); - -var _event = __webpack_require__(9564); - -var _logger = __webpack_require__(3854); - +exports.IndexedDBStore = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _memory = __nccwpck_require__(7309); +var _indexeddbLocalBackend = __nccwpck_require__(5143); +var _indexeddbRemoteBackend = __nccwpck_require__(2342); +var _event = __nccwpck_require__(9564); +var _logger = __nccwpck_require__(3854); +var _typedEventEmitter = __nccwpck_require__(7150); /* -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2017 - 2021 Vector Creations Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -61435,334 +186210,379 @@ See the License for the specific language governing permissions and limitations under the License. */ -/* eslint-disable babel/no-invalid-this */ +/* eslint-disable @babel/no-invalid-this */ /** * This is an internal module. See {@link IndexedDBStore} for the public class. - * @module store/indexeddb */ + // If this value is too small we'll be writing very often which will cause -// noticable stop-the-world pauses. If this value is too big we'll be writing +// noticeable stop-the-world pauses. If this value is too big we'll be writing // so infrequently that the /sync size gets bigger on reload. Writing more // often does not affect the length of the pause since the entire /sync // response is persisted each time. const WRITE_DELAY_MS = 1000 * 60 * 5; // once every 5 minutes -/** - * Construct a new Indexed Database store, which extends MemoryStore. - * - * This store functions like a MemoryStore except it periodically persists - * the contents of the store to an IndexedDB backend. - * - * All data is still kept in-memory but can be loaded from disk by calling - * startup(). This can make startup times quicker as a complete - * sync from the server is not required. This does not reduce memory usage as all - * the data is eagerly fetched when startup() is called. - *
- * let opts = { localStorage: window.localStorage };
- * let store = new IndexedDBStore();
- * await store.startup(); // load from indexed db
- * let client = sdk.createClient({
- *     store: store,
- * });
- * client.startClient();
- * client.on("sync", function(state, prevState, data) {
- *     if (state === "PREPARED") {
- *         console.log("Started up, now with go faster stripes!");
- *     }
- * });
- * 
- * - * @constructor - * @extends MemoryStore - * @param {Object} opts Options object. - * @param {Object} opts.indexedDB The Indexed DB interface e.g. - * window.indexedDB - * @param {string=} opts.dbName Optional database name. The same name must be used - * to open the same database. - * @param {string=} opts.workerScript Optional URL to a script to invoke a web - * worker with to run IndexedDB queries on the web worker. The IndexedDbStoreWorker - * class is provided for this purpose and requires the application to provide a - * trivial wrapper script around it. - * @param {Object=} opts.workerApi The webWorker API object. If omitted, the global Worker - * object will be used if it exists. - * @prop {IndexedDBStoreBackend} backend The backend instance. Call through to - * this API if you need to perform specific indexeddb actions like deleting the - * database. - */ - -function IndexedDBStore(opts) { - _memory.MemoryStore.call(this, opts); - - if (!opts.indexedDB) { - throw new Error('Missing required option: indexedDB'); +class IndexedDBStore extends _memory.MemoryStore { + static exists(indexedDB, dbName) { + return _indexeddbLocalBackend.LocalIndexedDBStoreBackend.exists(indexedDB, dbName); } - if (opts.workerScript) { - // try & find a webworker-compatible API - let workerApi = opts.workerApi; + /** + * The backend instance. + * Call through to this API if you need to perform specific indexeddb actions like deleting the database. + */ - if (!workerApi) { - // default to the global Worker object (which is where it in a browser) - workerApi = global.Worker; + /** + * Construct a new Indexed Database store, which extends MemoryStore. + * + * This store functions like a MemoryStore except it periodically persists + * the contents of the store to an IndexedDB backend. + * + * All data is still kept in-memory but can be loaded from disk by calling + * `startup()`. This can make startup times quicker as a complete + * sync from the server is not required. This does not reduce memory usage as all + * the data is eagerly fetched when `startup()` is called. + * ``` + * let opts = { indexedDB: window.indexedDB, localStorage: window.localStorage }; + * let store = new IndexedDBStore(opts); + * let client = sdk.createClient({ + * store: store, + * }); + * await store.startup(); // load from indexed db, must be called after createClient + * client.startClient(); + * client.on("sync", function(state, prevState, data) { + * if (state === "PREPARED") { + * console.log("Started up, now with go faster stripes!"); + * } + * }); + * ``` + * + * @param opts - Options object. + */ + constructor(opts) { + super(opts); + (0, _defineProperty2.default)(this, "startedUp", false); + (0, _defineProperty2.default)(this, "syncTs", 0); + // Records the last-modified-time of each user at the last point we saved + // the database, such that we can derive the set if users that have been + // modified since we last saved. + (0, _defineProperty2.default)(this, "userModifiedMap", {}); + // user_id : timestamp + (0, _defineProperty2.default)(this, "emitter", new _typedEventEmitter.TypedEventEmitter()); + (0, _defineProperty2.default)(this, "on", this.emitter.on.bind(this.emitter)); + (0, _defineProperty2.default)(this, "onClose", () => { + this.emitter.emit("closed"); + }); + /** + * @returns Promise which resolves with a sync response to restore the + * client state to where it was at the last save, or null if there + * is no saved sync data. + */ + (0, _defineProperty2.default)(this, "getSavedSync", this.degradable(() => { + return this.backend.getSavedSync(); + }, "getSavedSync")); + /** @returns whether or not the database was newly created in this session. */ + (0, _defineProperty2.default)(this, "isNewlyCreated", this.degradable(() => { + return this.backend.isNewlyCreated(); + }, "isNewlyCreated")); + /** + * @returns If there is a saved sync, the nextBatch token + * for this sync, otherwise null. + */ + (0, _defineProperty2.default)(this, "getSavedSyncToken", this.degradable(() => { + return this.backend.getNextBatchToken(); + }, "getSavedSyncToken")); + /** + * Delete all data from this store. + * @returns Promise which resolves if the data was deleted from the database. + */ + (0, _defineProperty2.default)(this, "deleteAllData", this.degradable(() => { + super.deleteAllData(); + return this.backend.clearDatabase().then(() => { + _logger.logger.log("Deleted indexeddb data."); + }, err => { + _logger.logger.error(`Failed to delete indexeddb data: ${err}`); + throw err; + }); + })); + (0, _defineProperty2.default)(this, "reallySave", this.degradable(() => { + this.syncTs = Date.now(); // set now to guard against multi-writes + + // work out changed users (this doesn't handle deletions but you + // can't 'delete' users as they are just presence events). + const userTuples = []; + for (const u of this.getUsers()) { + if (this.userModifiedMap[u.userId] === u.getLastModifiedTime()) continue; + if (!u.events.presence) continue; + userTuples.push([u.userId, u.events.presence.event]); + + // note that we've saved this version of the user + this.userModifiedMap[u.userId] = u.getLastModifiedTime(); + } + return this.backend.syncToDatabase(userTuples); + })); + (0, _defineProperty2.default)(this, "setSyncData", this.degradable(syncData => { + return this.backend.setSyncData(syncData); + }, "setSyncData")); + /** + * Returns the out-of-band membership events for this room that + * were previously loaded. + * @returns the events, potentially an empty array if OOB loading didn't yield any new members + * @returns in case the members for this room haven't been stored yet + */ + (0, _defineProperty2.default)(this, "getOutOfBandMembers", this.degradable(roomId => { + return this.backend.getOutOfBandMembers(roomId); + }, "getOutOfBandMembers")); + /** + * Stores the out-of-band membership events for this room. Note that + * it still makes sense to store an empty array as the OOB status for the room is + * marked as fetched, and getOutOfBandMembers will return an empty array instead of null + * @param membershipEvents - the membership events to store + * @returns when all members have been stored + */ + (0, _defineProperty2.default)(this, "setOutOfBandMembers", this.degradable((roomId, membershipEvents) => { + super.setOutOfBandMembers(roomId, membershipEvents); + return this.backend.setOutOfBandMembers(roomId, membershipEvents); + }, "setOutOfBandMembers")); + (0, _defineProperty2.default)(this, "clearOutOfBandMembers", this.degradable(roomId => { + super.clearOutOfBandMembers(roomId); + return this.backend.clearOutOfBandMembers(roomId); + }, "clearOutOfBandMembers")); + (0, _defineProperty2.default)(this, "getClientOptions", this.degradable(() => { + return this.backend.getClientOptions(); + }, "getClientOptions")); + (0, _defineProperty2.default)(this, "storeClientOptions", this.degradable(options => { + super.storeClientOptions(options); + return this.backend.storeClientOptions(options); + }, "storeClientOptions")); + if (!opts.indexedDB) { + throw new Error("Missing required option: indexedDB"); } - - this.backend = new _indexeddbRemoteBackend.RemoteIndexedDBStoreBackend(opts.workerScript, opts.dbName, workerApi); - } else { - this.backend = new _indexeddbLocalBackend.LocalIndexedDBStoreBackend(opts.indexedDB, opts.dbName); + if (opts.workerFactory) { + this.backend = new _indexeddbRemoteBackend.RemoteIndexedDBStoreBackend(opts.workerFactory, opts.dbName); + } else { + this.backend = new _indexeddbLocalBackend.LocalIndexedDBStoreBackend(opts.indexedDB, opts.dbName); + } + } + /** + * @returns Resolved when loaded from indexed db. + */ + startup() { + if (this.startedUp) { + _logger.logger.log(`IndexedDBStore.startup: already started`); + return Promise.resolve(); + } + _logger.logger.log(`IndexedDBStore.startup: connecting to backend`); + return this.backend.connect(this.onClose).then(() => { + _logger.logger.log(`IndexedDBStore.startup: loading presence events`); + return this.backend.getUserPresenceEvents(); + }).then(userPresenceEvents => { + _logger.logger.log(`IndexedDBStore.startup: processing presence events`); + userPresenceEvents.forEach(([userId, rawEvent]) => { + if (!this.createUser) { + throw new Error("`IndexedDBStore.startup` must be called after assigning it to the client, not before!"); + } + const u = this.createUser(userId); + if (rawEvent) { + u.setPresenceEvent(new _event.MatrixEvent(rawEvent)); + } + this.userModifiedMap[u.userId] = u.getLastModifiedTime(); + this.storeUser(u); + }); + this.startedUp = true; + }); } - this.startedUp = false; - this._syncTs = 0; // Records the last-modified-time of each user at the last point we saved - // the database, such that we can derive the set if users that have been - // modified since we last saved. - - this._userModifiedMap = {// user_id : timestamp - }; -} - -utils.inherits(IndexedDBStore, _memory.MemoryStore); -utils.extend(IndexedDBStore.prototype, _events.EventEmitter.prototype); - -IndexedDBStore.exists = function (indexedDB, dbName) { - return _indexeddbLocalBackend.LocalIndexedDBStoreBackend.exists(indexedDB, dbName); -}; -/** - * @return {Promise} Resolved when loaded from indexed db. - */ - - -IndexedDBStore.prototype.startup = function () { - if (this.startedUp) { - _logger.logger.log(`IndexedDBStore.startup: already started`); + /* + * Close the database and destroy any associated workers + */ + destroy() { + return this.backend.destroy(); + } + /** + * Whether this store would like to save its data + * Note that obviously whether the store wants to save or + * not could change between calling this function and calling + * save(). + * + * @returns True if calling save() will actually save + * (at the time this function is called). + */ + wantsSave() { + const now = Date.now(); + return now - this.syncTs > WRITE_DELAY_MS; + } + /** + * Possibly write data to the database. + * + * @param force - True to force a save to happen + * @returns Promise resolves after the write completes + * (or immediately if no write is performed) + */ + save(force = false) { + if (force || this.wantsSave()) { + return this.reallySave(); + } return Promise.resolve(); } - - _logger.logger.log(`IndexedDBStore.startup: connecting to backend`); - - return this.backend.connect().then(() => { - _logger.logger.log(`IndexedDBStore.startup: loading presence events`); - - return this.backend.getUserPresenceEvents(); - }).then(userPresenceEvents => { - _logger.logger.log(`IndexedDBStore.startup: processing presence events`); - - userPresenceEvents.forEach(([userId, rawEvent]) => { - const u = new _user.User(userId); - - if (rawEvent) { - u.setPresenceEvent(new _event.MatrixEvent(rawEvent)); - } - - this._userModifiedMap[u.userId] = u.getLastModifiedTime(); - this.storeUser(u); - }); - }); -}; -/** - * @return {Promise} Resolves with a sync response to restore the - * client state to where it was at the last save, or null if there - * is no saved sync data. - */ - - -IndexedDBStore.prototype.getSavedSync = degradable(function () { - return this.backend.getSavedSync(); -}, "getSavedSync"); -/** @return {Promise} whether or not the database was newly created in this session. */ - -IndexedDBStore.prototype.isNewlyCreated = degradable(function () { - return this.backend.isNewlyCreated(); -}, "isNewlyCreated"); -/** - * @return {Promise} If there is a saved sync, the nextBatch token - * for this sync, otherwise null. - */ - -IndexedDBStore.prototype.getSavedSyncToken = degradable(function () { - return this.backend.getNextBatchToken(); -}, "getSavedSyncToken"), -/** - * Delete all data from this store. - * @return {Promise} Resolves if the data was deleted from the database. - */ -IndexedDBStore.prototype.deleteAllData = degradable(function () { - _memory.MemoryStore.prototype.deleteAllData.call(this); - - return this.backend.clearDatabase().then(() => { - _logger.logger.log("Deleted indexeddb data."); - }, err => { - _logger.logger.error(`Failed to delete indexeddb data: ${err}`); - - throw err; - }); -}); -/** - * Whether this store would like to save its data - * Note that obviously whether the store wants to save or - * not could change between calling this function and calling - * save(). - * - * @return {boolean} True if calling save() will actually save - * (at the time this function is called). - */ - -IndexedDBStore.prototype.wantsSave = function () { - const now = Date.now(); - return now - this._syncTs > WRITE_DELAY_MS; -}; -/** - * Possibly write data to the database. - * - * @param {bool} force True to force a save to happen - * @return {Promise} Promise resolves after the write completes - * (or immediately if no write is performed) - */ - - -IndexedDBStore.prototype.save = function (force) { - if (force || this.wantsSave()) { - return this._reallySave(); - } - - return Promise.resolve(); -}; - -IndexedDBStore.prototype._reallySave = degradable(function () { - this._syncTs = Date.now(); // set now to guard against multi-writes - // work out changed users (this doesn't handle deletions but you - // can't 'delete' users as they are just presence events). - - const userTuples = []; - - for (const u of this.getUsers()) { - if (this._userModifiedMap[u.userId] === u.getLastModifiedTime()) continue; - if (!u.events.presence) continue; - userTuples.push([u.userId, u.events.presence.event]); // note that we've saved this version of the user - - this._userModifiedMap[u.userId] = u.getLastModifiedTime(); - } - - return this.backend.syncToDatabase(userTuples); -}); -IndexedDBStore.prototype.setSyncData = degradable(function (syncData) { - return this.backend.setSyncData(syncData); -}, "setSyncData"); -/** - * Returns the out-of-band membership events for this room that - * were previously loaded. - * @param {string} roomId - * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members - * @returns {null} in case the members for this room haven't been stored yet - */ - -IndexedDBStore.prototype.getOutOfBandMembers = degradable(function (roomId) { - return this.backend.getOutOfBandMembers(roomId); -}, "getOutOfBandMembers"); -/** - * Stores the out-of-band membership events for this room. Note that - * it still makes sense to store an empty array as the OOB status for the room is - * marked as fetched, and getOutOfBandMembers will return an empty array instead of null - * @param {string} roomId - * @param {event[]} membershipEvents the membership events to store - * @returns {Promise} when all members have been stored - */ - -IndexedDBStore.prototype.setOutOfBandMembers = degradable(function (roomId, membershipEvents) { - _memory.MemoryStore.prototype.setOutOfBandMembers.call(this, roomId, membershipEvents); - - return this.backend.setOutOfBandMembers(roomId, membershipEvents); -}, "setOutOfBandMembers"); -IndexedDBStore.prototype.clearOutOfBandMembers = degradable(function (roomId) { - _memory.MemoryStore.prototype.clearOutOfBandMembers.call(this); - - return this.backend.clearOutOfBandMembers(roomId); -}, "clearOutOfBandMembers"); -IndexedDBStore.prototype.getClientOptions = degradable(function () { - return this.backend.getClientOptions(); -}, "getClientOptions"); -IndexedDBStore.prototype.storeClientOptions = degradable(function (options) { - _memory.MemoryStore.prototype.storeClientOptions.call(this, options); - - return this.backend.storeClientOptions(options); -}, "storeClientOptions"); -/** - * All member functions of `IndexedDBStore` that access the backend use this wrapper to - * watch for failures after initial store startup, including `QuotaExceededError` as - * free disk space changes, etc. - * - * When IndexedDB fails via any of these paths, we degrade this back to a `MemoryStore` - * in place so that the current operation and all future ones are in-memory only. - * - * @param {Function} func The degradable work to do. - * @param {String} fallback The method name for fallback. - * @returns {Function} A wrapped member function. - */ - -function degradable(func, fallback) { - return async function (...args) { - try { - return await func.call(this, ...args); - } catch (e) { - _logger.logger.error("IndexedDBStore failure, degrading to MemoryStore", e); - - this.emit("degraded", e); - + /** + * All member functions of `IndexedDBStore` that access the backend use this wrapper to + * watch for failures after initial store startup, including `QuotaExceededError` as + * free disk space changes, etc. + * + * When IndexedDB fails via any of these paths, we degrade this back to a `MemoryStore` + * in place so that the current operation and all future ones are in-memory only. + * + * @param func - The degradable work to do. + * @param fallback - The method name for fallback. + * @returns A wrapped member function. + */ + degradable(func, fallback) { + const fallbackFn = fallback ? super[fallback] : null; + return async (...args) => { try { - // We try to delete IndexedDB after degrading since this store is only a - // cache (the app will still function correctly without the data). - // It's possible that deleting repair IndexedDB for the next app load, - // potenially by making a little more space available. - _logger.logger.log("IndexedDBStore trying to delete degraded data"); - - await this.backend.clearDatabase(); - - _logger.logger.log("IndexedDBStore delete after degrading succeeeded"); + return await func.call(this, ...args); } catch (e) { - _logger.logger.warn("IndexedDBStore delete after degrading failed", e); - } // Degrade the store from being an instance of `IndexedDBStore` to instead be - // an instance of `MemoryStore` so that future API calls use the memory path - // directly and skip IndexedDB entirely. This should be safe as - // `IndexedDBStore` already extends from `MemoryStore`, so we are making the - // store become its parent type in a way. The mutator methods of - // `IndexedDBStore` also maintain the state that `MemoryStore` uses (many are - // not overridden at all). + _logger.logger.error("IndexedDBStore failure, degrading to MemoryStore", e); + this.emitter.emit("degraded", e); + try { + // We try to delete IndexedDB after degrading since this store is only a + // cache (the app will still function correctly without the data). + // It's possible that deleting repair IndexedDB for the next app load, + // potentially by making a little more space available. + _logger.logger.log("IndexedDBStore trying to delete degraded data"); + await this.backend.clearDatabase(); + _logger.logger.log("IndexedDBStore delete after degrading succeeded"); + } catch (e) { + _logger.logger.warn("IndexedDBStore delete after degrading failed", e); + } + // Degrade the store from being an instance of `IndexedDBStore` to instead be + // an instance of `MemoryStore` so that future API calls use the memory path + // directly and skip IndexedDB entirely. This should be safe as + // `IndexedDBStore` already extends from `MemoryStore`, so we are making the + // store become its parent type in a way. The mutator methods of + // `IndexedDBStore` also maintain the state that `MemoryStore` uses (many are + // not overridden at all). + if (fallbackFn) { + return fallbackFn.call(this, ...args); + } + } + }; + } - - Object.setPrototypeOf(this, _memory.MemoryStore.prototype); - - if (fallback) { - return await _memory.MemoryStore.prototype[fallback].call(this, ...args); + // XXX: ideally these would be stored in indexeddb as part of the room but, + // we don't store rooms as such and instead accumulate entire sync responses atm. + async getPendingEvents(roomId) { + if (!this.localStorage) return super.getPendingEvents(roomId); + const serialized = this.localStorage.getItem(pendingEventsKey(roomId)); + if (serialized) { + try { + return JSON.parse(serialized); + } catch (e) { + _logger.logger.error("Could not parse persisted pending events", e); } } - }; + return []; + } + async setPendingEvents(roomId, events) { + if (!this.localStorage) return super.setPendingEvents(roomId, events); + if (events.length > 0) { + this.localStorage.setItem(pendingEventsKey(roomId), JSON.stringify(events)); + } else { + this.localStorage.removeItem(pendingEventsKey(roomId)); + } + } + saveToDeviceBatches(batches) { + return this.backend.saveToDeviceBatches(batches); + } + getOldestToDeviceBatch() { + return this.backend.getOldestToDeviceBatch(); + } + removeToDeviceBatch(id) { + return this.backend.removeToDeviceBatch(id); + } } +/** + * @param roomId - ID of the current room + * @returns Storage key to retrieve pending events + */ +exports.IndexedDBStore = IndexedDBStore; +function pendingEventsKey(roomId) { + return `mx_pending_events_${roomId}`; +} +//# sourceMappingURL=indexeddb.js.map + /***/ }), -/***/ 7309: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 4172: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.MemoryStore = MemoryStore; - -var _user = __webpack_require__(1104); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - +exports.localStorageErrorsEventsEmitter = exports.LocalStorageErrors = void 0; +var _typedEventEmitter = __nccwpck_require__(7150); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +let LocalStorageErrors = exports.LocalStorageErrors = /*#__PURE__*/function (LocalStorageErrors) { + LocalStorageErrors["Global"] = "Global"; + LocalStorageErrors["SetItemError"] = "setItem"; + LocalStorageErrors["GetItemError"] = "getItem"; + LocalStorageErrors["RemoveItemError"] = "removeItem"; + LocalStorageErrors["ClearError"] = "clear"; + LocalStorageErrors["QuotaExceededError"] = "QuotaExceededError"; + return LocalStorageErrors; +}({}); +/** + * Used in element-web as a temporary hack to handle all the localStorage errors on the highest level possible + * As of 15.11.2021 (DD/MM/YYYY) we're not properly handling local storage exceptions anywhere. + * This store, as an event emitter, is used to re-emit local storage exceptions so that we can handle them + * and show some kind of a "It's dead Jim" modal to the users, telling them that hey, + * maybe you should check out your disk, as it's probably dying and your session may die with it. + * See: https://github.com/vector-im/element-web/issues/18423 + */ +class LocalStorageErrorsEventsEmitter extends _typedEventEmitter.TypedEventEmitter {} +const localStorageErrorsEventsEmitter = exports.localStorageErrorsEventsEmitter = new LocalStorageErrorsEventsEmitter(); +//# sourceMappingURL=local-storage-events-emitter.js.map + +/***/ }), + +/***/ 7309: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MemoryStore = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _roomState = __nccwpck_require__(1513); +var _utils = __nccwpck_require__(2557); +var _membership = __nccwpck_require__(9225); +/* +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -61779,291 +186599,232 @@ limitations under the License. /** * This is an internal module. See {@link MemoryStore} for the public class. - * @module store/memory */ + function isValidFilterId(filterId) { - const isValidStr = typeof filterId === "string" && !!filterId && filterId !== "undefined" && // exclude these as we've serialized undefined in localStorage before + const isValidStr = typeof filterId === "string" && !!filterId && filterId !== "undefined" && + // exclude these as we've serialized undefined in localStorage before filterId !== "null"; return isValidStr || typeof filterId === "number"; } -/** - * Construct a new in-memory data store for the Matrix Client. - * @constructor - * @param {Object=} opts Config options - * @param {LocalStorage} opts.localStorage The local storage instance to persist - * some forms of data such as tokens. Rooms will NOT be stored. - */ - - -function MemoryStore(opts) { - opts = opts || {}; - this.rooms = {// roomId: Room - }; - this.groups = {// groupId: Group - }; - this.users = {// userId: User - }; - this.syncToken = null; - this.filters = {// userId: { +class MemoryStore { + /** + * Construct a new in-memory data store for the Matrix Client. + * @param opts - Config options + */ + constructor(opts = {}) { + (0, _defineProperty2.default)(this, "rooms", {}); + // roomId: Room + (0, _defineProperty2.default)(this, "users", {}); + // userId: User + (0, _defineProperty2.default)(this, "syncToken", null); + // userId: { // filterId: Filter // } - }; - this.accountData = {// type : content - }; - this.localStorage = opts.localStorage; - this._oobMembers = {// roomId: [member events] - }; - this._clientOptions = {}; -} + (0, _defineProperty2.default)(this, "filters", new _utils.MapWithDefault(() => new Map())); + (0, _defineProperty2.default)(this, "accountData", new Map()); + (0, _defineProperty2.default)(this, "oobMembers", new Map()); + // roomId: [member events] + (0, _defineProperty2.default)(this, "pendingEvents", {}); + (0, _defineProperty2.default)(this, "pendingToDeviceBatches", []); + (0, _defineProperty2.default)(this, "nextToDeviceBatchId", 0); + /** + * Called when a room member in a room being tracked by this store has been + * updated. + */ + (0, _defineProperty2.default)(this, "onRoomMember", (event, state, member) => { + var _this$createUser; + if (member.membership === _membership.KnownMembership.Invite) { + // We do NOT add invited members because people love to typo user IDs + // which would then show up in these lists (!) + return; + } + const user = this.users[member.userId] || ((_this$createUser = this.createUser) === null || _this$createUser === void 0 ? void 0 : _this$createUser.call(this, member.userId)); + if (member.name) { + user.setDisplayName(member.name); + if (member.events.member) { + user.setRawDisplayName(member.events.member.getDirectionalContent().displayname); + } + } + if (member.events.member && member.events.member.getContent().avatar_url) { + user.setAvatarUrl(member.events.member.getContent().avatar_url); + } + this.users[user.userId] = user; + }); + this.localStorage = opts.localStorage; + } -MemoryStore.prototype = { /** * Retrieve the token to stream from. - * @return {string} The token or null. + * @returns The token or null. */ - getSyncToken: function () { + getSyncToken() { return this.syncToken; - }, + } - /** @return {Promise} whether or not the database was newly created in this session. */ - isNewlyCreated: function () { + /** @returns whether or not the database was newly created in this session. */ + isNewlyCreated() { return Promise.resolve(true); - }, + } /** * Set the token to stream from. - * @param {string} token The token to stream from. + * @param token - The token to stream from. */ - setSyncToken: function (token) { + setSyncToken(token) { this.syncToken = token; - }, + } /** * Store the given room. - * @param {Group} group The group to be stored + * @param room - The room to be stored. All properties must be stored. */ - storeGroup: function (group) { - this.groups[group.groupId] = group; - }, - - /** - * Retrieve a group by its group ID. - * @param {string} groupId The group ID. - * @return {Group} The group or null. - */ - getGroup: function (groupId) { - return this.groups[groupId] || null; - }, - - /** - * Retrieve all known groups. - * @return {Group[]} A list of groups, which may be empty. - */ - getGroups: function () { - return utils.values(this.groups); - }, - - /** - * Store the given room. - * @param {Room} room The room to be stored. All properties must be stored. - */ - storeRoom: function (room) { - this.rooms[room.roomId] = room; // add listeners for room member changes so we can keep the room member + storeRoom(room) { + this.rooms[room.roomId] = room; + // add listeners for room member changes so we can keep the room member // map up-to-date. - - room.currentState.on("RoomState.members", this._onRoomMember.bind(this)); // add existing members - - const self = this; - room.currentState.getMembers().forEach(function (m) { - self._onRoomMember(null, room.currentState, m); + room.currentState.on(_roomState.RoomStateEvent.Members, this.onRoomMember); + // add existing members + room.currentState.getMembers().forEach(m => { + this.onRoomMember(null, room.currentState, m); }); - }, - - /** - * Called when a room member in a room being tracked by this store has been - * updated. - * @param {MatrixEvent} event - * @param {RoomState} state - * @param {RoomMember} member - */ - _onRoomMember: function (event, state, member) { - if (member.membership === "invite") { - // We do NOT add invited members because people love to typo user IDs - // which would then show up in these lists (!) - return; - } - - const user = this.users[member.userId] || new _user.User(member.userId); - - if (member.name) { - user.setDisplayName(member.name); - - if (member.events.member) { - user.setRawDisplayName(member.events.member.getDirectionalContent().displayname); - } - } - - if (member.events.member && member.events.member.getContent().avatar_url) { - user.setAvatarUrl(member.events.member.getContent().avatar_url); - } - - this.users[user.userId] = user; - }, - + } + setUserCreator(creator) { + this.createUser = creator; + } /** * Retrieve a room by its' room ID. - * @param {string} roomId The room ID. - * @return {Room} The room or null. + * @param roomId - The room ID. + * @returns The room or null. */ - getRoom: function (roomId) { + getRoom(roomId) { return this.rooms[roomId] || null; - }, + } /** * Retrieve all known rooms. - * @return {Room[]} A list of rooms, which may be empty. + * @returns A list of rooms, which may be empty. */ - getRooms: function () { - return utils.values(this.rooms); - }, + getRooms() { + return Object.values(this.rooms); + } /** * Permanently delete a room. - * @param {string} roomId */ - removeRoom: function (roomId) { + removeRoom(roomId) { if (this.rooms[roomId]) { - this.rooms[roomId].removeListener("RoomState.members", this._onRoomMember); + this.rooms[roomId].currentState.removeListener(_roomState.RoomStateEvent.Members, this.onRoomMember); } - delete this.rooms[roomId]; - }, + } /** * Retrieve a summary of all the rooms. - * @return {RoomSummary[]} A summary of each room. + * @returns A summary of each room. */ - getRoomSummaries: function () { - return utils.map(utils.values(this.rooms), function (room) { + getRoomSummaries() { + return Object.values(this.rooms).map(function (room) { return room.summary; }); - }, + } /** * Store a User. - * @param {User} user The user to store. + * @param user - The user to store. */ - storeUser: function (user) { + storeUser(user) { this.users[user.userId] = user; - }, + } /** * Retrieve a User by its' user ID. - * @param {string} userId The user ID. - * @return {User} The user or null. + * @param userId - The user ID. + * @returns The user or null. */ - getUser: function (userId) { + getUser(userId) { return this.users[userId] || null; - }, + } /** * Retrieve all known users. - * @return {User[]} A list of users, which may be empty. + * @returns A list of users, which may be empty. */ - getUsers: function () { - return utils.values(this.users); - }, + getUsers() { + return Object.values(this.users); + } /** * Retrieve scrollback for this room. - * @param {Room} room The matrix room - * @param {integer} limit The max number of old events to retrieve. - * @return {Array} An array of objects which will be at most 'limit' + * @param room - The matrix room + * @param limit - The max number of old events to retrieve. + * @returns An array of objects which will be at most 'limit' * length and at least 0. The objects are the raw event JSON. */ - scrollback: function (room, limit) { + scrollback(room, limit) { return []; - }, + } /** * Store events for a room. The events have already been added to the timeline - * @param {Room} room The room to store events for. - * @param {Array} events The events to store. - * @param {string} token The token associated with these events. - * @param {boolean} toStart True if these are paginated results. + * @param room - The room to store events for. + * @param events - The events to store. + * @param token - The token associated with these events. + * @param toStart - True if these are paginated results. */ - storeEvents: function (room, events, token, toStart) {// no-op because they've already been added to the room instance. - }, + storeEvents(room, events, token, toStart) { + // no-op because they've already been added to the room instance. + } /** * Store a filter. - * @param {Filter} filter */ - storeFilter: function (filter) { - if (!filter) { - return; - } - - if (!this.filters[filter.userId]) { - this.filters[filter.userId] = {}; - } - - this.filters[filter.userId][filter.filterId] = filter; - }, + storeFilter(filter) { + if (!(filter !== null && filter !== void 0 && filter.userId) || !(filter !== null && filter !== void 0 && filter.filterId)) return; + this.filters.getOrCreate(filter.userId).set(filter.filterId, filter); + } /** * Retrieve a filter. - * @param {string} userId - * @param {string} filterId - * @return {?Filter} A filter or null. + * @returns A filter or null. */ - getFilter: function (userId, filterId) { - if (!this.filters[userId] || !this.filters[userId][filterId]) { - return null; - } - - return this.filters[userId][filterId]; - }, + getFilter(userId, filterId) { + var _this$filters$get; + return ((_this$filters$get = this.filters.get(userId)) === null || _this$filters$get === void 0 ? void 0 : _this$filters$get.get(filterId)) || null; + } /** * Retrieve a filter ID with the given name. - * @param {string} filterName The filter name. - * @return {?string} The filter ID or null. + * @param filterName - The filter name. + * @returns The filter ID or null. */ - getFilterIdByName: function (filterName) { + getFilterIdByName(filterName) { if (!this.localStorage) { return null; } - - const key = "mxjssdk_memory_filter_" + filterName; // XXX Storage.getItem doesn't throw ... + const key = "mxjssdk_memory_filter_" + filterName; + // XXX Storage.getItem doesn't throw ... // or are we using something different // than window.localStorage in some cases // that does throw? // that would be very naughty - try { const value = this.localStorage.getItem(key); - if (isValidFilterId(value)) { return value; } } catch (e) {} - return null; - }, + } /** * Set a filter name to ID mapping. - * @param {string} filterName - * @param {string} filterId */ - setFilterIdByName: function (filterName, filterId) { + setFilterIdByName(filterName, filterId) { if (!this.localStorage) { return; } - const key = "mxjssdk_memory_filter_" + filterName; - try { if (isValidFilterId(filterId)) { this.localStorage.setItem(key, filterId); @@ -62071,435 +186832,186 @@ MemoryStore.prototype = { this.localStorage.removeItem(key); } } catch (e) {} - }, + } /** * Store user-scoped account data events. * N.B. that account data only allows a single event per type, so multiple * events with the same type will replace each other. - * @param {Array} events The events to store. + * @param events - The events to store. */ - storeAccountDataEvents: function (events) { - const self = this; - events.forEach(function (event) { - self.accountData[event.getType()] = event; + storeAccountDataEvents(events) { + events.forEach(event => { + // MSC3391: an event with content of {} should be interpreted as deleted + const isDeleted = !Object.keys(event.getContent()).length; + if (isDeleted) { + this.accountData.delete(event.getType()); + } else { + this.accountData.set(event.getType(), event); + } }); - }, + } /** * Get account data event by event type - * @param {string} eventType The event type being queried - * @return {?MatrixEvent} the user account_data event of given type, if any + * @param eventType - The event type being queried + * @returns the user account_data event of given type, if any */ - getAccountData: function (eventType) { - return this.accountData[eventType]; - }, + getAccountData(eventType) { + return this.accountData.get(eventType); + } /** * setSyncData does nothing as there is no backing data store. * - * @param {Object} syncData The sync data - * @return {Promise} An immediately resolved promise. + * @param syncData - The sync data + * @returns An immediately resolved promise. */ - setSyncData: function (syncData) { + setSyncData(syncData) { return Promise.resolve(); - }, + } /** * We never want to save becase we have nothing to save to. * - * @return {boolean} If the store wants to save + * @returns If the store wants to save */ - wantsSave: function () { + wantsSave() { return false; - }, + } /** * Save does nothing as there is no backing data store. - * @param {bool} force True to force a save (but the memory + * @param force - True to force a save (but the memory * store still can't save anything) */ - save: function (force) {}, + save(force) { + return Promise.resolve(); + } /** * Startup does nothing as this store doesn't require starting up. - * @return {Promise} An immediately resolved promise. + * @returns An immediately resolved promise. */ - startup: function () { + startup() { return Promise.resolve(); - }, + } /** - * @return {Promise} Resolves with a sync response to restore the + * @returns Promise which resolves with a sync response to restore the * client state to where it was at the last save, or null if there * is no saved sync data. */ - getSavedSync: function () { + getSavedSync() { return Promise.resolve(null); - }, + } /** - * @return {Promise} If there is a saved sync, the nextBatch token + * @returns If there is a saved sync, the nextBatch token * for this sync, otherwise null. */ - getSavedSyncToken: function () { + getSavedSyncToken() { return Promise.resolve(null); - }, + } /** * Delete all data from this store. - * @return {Promise} An immediately resolved promise. + * @returns An immediately resolved promise. */ - deleteAllData: function () { - this.rooms = {// roomId: Room + deleteAllData() { + this.rooms = { + // roomId: Room }; - this.users = {// userId: User + this.users = { + // userId: User }; this.syncToken = null; - this.filters = {// userId: { - // filterId: Filter - // } - }; - this.accountData = {// type : content - }; + this.filters = new _utils.MapWithDefault(() => new Map()); + this.accountData = new Map(); // type : content return Promise.resolve(); - }, + } /** * Returns the out-of-band membership events for this room that * were previously loaded. - * @param {string} roomId - * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members - * @returns {null} in case the members for this room haven't been stored yet + * @returns the events, potentially an empty array if OOB loading didn't yield any new members + * @returns in case the members for this room haven't been stored yet */ - getOutOfBandMembers: function (roomId) { - return Promise.resolve(this._oobMembers[roomId] || null); - }, + getOutOfBandMembers(roomId) { + return Promise.resolve(this.oobMembers.get(roomId) || null); + } /** * Stores the out-of-band membership events for this room. Note that * it still makes sense to store an empty array as the OOB status for the room is * marked as fetched, and getOutOfBandMembers will return an empty array instead of null - * @param {string} roomId - * @param {event[]} membershipEvents the membership events to store - * @returns {Promise} when all members have been stored + * @param membershipEvents - the membership events to store + * @returns when all members have been stored */ - setOutOfBandMembers: function (roomId, membershipEvents) { - this._oobMembers[roomId] = membershipEvents; - return Promise.resolve(); - }, - clearOutOfBandMembers: function () { - this._oobMembers = {}; - return Promise.resolve(); - }, - getClientOptions: function () { - return Promise.resolve(this._clientOptions); - }, - storeClientOptions: function (options) { - this._clientOptions = Object.assign({}, options); + setOutOfBandMembers(roomId, membershipEvents) { + this.oobMembers.set(roomId, membershipEvents); return Promise.resolve(); } -}; - -/***/ }), - -/***/ 4974: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var _interopRequireWildcard = __webpack_require__(8429); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.WebStorageSessionStore = WebStorageSessionStore; - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _logger = __webpack_require__(3854); - -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 New Vector Ltd -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/** - * @module store/session/webstorage - */ -const DEBUG = false; // set true to enable console logging. - -const E2E_PREFIX = "session.e2e."; -/** - * Construct a web storage session store, capable of storing account keys, - * session keys and access tokens. - * @constructor - * @param {WebStorage} webStore A web storage implementation, e.g. - * 'window.localStorage' or 'window.sessionStorage' or a custom implementation. - * @throws if the supplied 'store' does not meet the Storage interface of the - * WebStorage API. - */ - -function WebStorageSessionStore(webStore) { - this.store = webStore; - - if (!utils.isFunction(webStore.getItem) || !utils.isFunction(webStore.setItem) || !utils.isFunction(webStore.removeItem) || !utils.isFunction(webStore.key) || typeof webStore.length !== 'number') { - throw new Error("Supplied webStore does not meet the WebStorage API interface"); + clearOutOfBandMembers(roomId) { + this.oobMembers.delete(roomId); + return Promise.resolve(); } -} - -WebStorageSessionStore.prototype = { - /** - * Remove the stored end to end account for the logged-in user. - */ - removeEndToEndAccount: function () { - this.store.removeItem(KEY_END_TO_END_ACCOUNT); - }, - - /** - * Load the end to end account for the logged-in user. - * Note that the end-to-end account is now stored in the - * crypto store rather than here: this remains here so - * old sessions can be migrated out of the session store. - * @return {?string} Base64 encoded account. - */ - getEndToEndAccount: function () { - return this.store.getItem(KEY_END_TO_END_ACCOUNT); - }, - - /** - * Retrieves the known devices for all users. - * @return {object} A map from user ID to map of device ID to keys for the device. - */ - getAllEndToEndDevices: function () { - const prefix = keyEndToEndDevicesForUser(''); - const devices = {}; - - for (let i = 0; i < this.store.length; ++i) { - const key = this.store.key(i); - const userId = key.substr(prefix.length); - if (key.startsWith(prefix)) devices[userId] = getJsonItem(this.store, key); - } - - return devices; - }, - getEndToEndDeviceTrackingStatus: function () { - return getJsonItem(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS); - }, - - /** - * Get the sync token corresponding to the device list. - * - * @return {String?} token - */ - getEndToEndDeviceSyncToken: function () { - return getJsonItem(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN); - }, - - /** - * Removes all end to end device data from the store - */ - removeEndToEndDeviceData: function () { - removeByPrefix(this.store, keyEndToEndDevicesForUser('')); - removeByPrefix(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS); - removeByPrefix(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN); - }, - - /** - * Retrieve the end-to-end sessions between the logged-in user and another - * device. - * @param {string} deviceKey The public key of the other device. - * @return {object} A map from sessionId to Base64 end-to-end session. - */ - getEndToEndSessions: function (deviceKey) { - return getJsonItem(this.store, keyEndToEndSessions(deviceKey)); - }, - - /** - * Retrieve all end-to-end sessions between the logged-in user and other - * devices. - * @return {object} A map of {deviceKey -> {sessionId -> session pickle}} - */ - getAllEndToEndSessions: function () { - const deviceKeys = getKeysWithPrefix(this.store, keyEndToEndSessions('')); - const results = {}; - - for (const k of deviceKeys) { - const unprefixedKey = k.substr(keyEndToEndSessions('').length); - results[unprefixedKey] = getJsonItem(this.store, k); - } - - return results; - }, - - /** - * Remove all end-to-end sessions from the store - * This is used after migrating sessions awat from the sessions store. - */ - removeAllEndToEndSessions: function () { - removeByPrefix(this.store, keyEndToEndSessions('')); - }, - - /** - * Retrieve a list of all known inbound group sessions - * - * @return {{senderKey: string, sessionId: string}} - */ - getAllEndToEndInboundGroupSessionKeys: function () { - const prefix = E2E_PREFIX + 'inboundgroupsessions/'; - const result = []; - - for (let i = 0; i < this.store.length; i++) { - const key = this.store.key(i); - - if (!key.startsWith(prefix)) { - continue; - } // we can't use split, as the components we are trying to split out - // might themselves contain '/' characters. We rely on the - // senderKey being a (32-byte) curve25519 key, base64-encoded - // (hence 43 characters long). - - - result.push({ - senderKey: key.substr(prefix.length, 43), - sessionId: key.substr(prefix.length + 44) + getClientOptions() { + return Promise.resolve(this.clientOptions); + } + storeClientOptions(options) { + this.clientOptions = Object.assign({}, options); + return Promise.resolve(); + } + async getPendingEvents(roomId) { + var _this$pendingEvents$r; + return (_this$pendingEvents$r = this.pendingEvents[roomId]) !== null && _this$pendingEvents$r !== void 0 ? _this$pendingEvents$r : []; + } + async setPendingEvents(roomId, events) { + this.pendingEvents[roomId] = events; + } + saveToDeviceBatches(batches) { + for (const batch of batches) { + this.pendingToDeviceBatches.push({ + id: this.nextToDeviceBatchId++, + eventType: batch.eventType, + txnId: batch.txnId, + batch: batch.batch }); } - - return result; - }, - getEndToEndInboundGroupSession: function (senderKey, sessionId) { - const key = keyEndToEndInboundGroupSession(senderKey, sessionId); - return this.store.getItem(key); - }, - removeAllEndToEndInboundGroupSessions: function () { - removeByPrefix(this.store, E2E_PREFIX + 'inboundgroupsessions/'); - }, - - /** - * Get the end-to-end state for all rooms - * @return {object} roomId -> object with the end-to-end info for the room. - */ - getAllEndToEndRooms: function () { - const roomKeys = getKeysWithPrefix(this.store, keyEndToEndRoom('')); - const results = {}; - - for (const k of roomKeys) { - const unprefixedKey = k.substr(keyEndToEndRoom('').length); - results[unprefixedKey] = getJsonItem(this.store, k); - } - - return results; - }, - removeAllEndToEndRooms: function () { - removeByPrefix(this.store, keyEndToEndRoom('')); - }, - setLocalTrustedBackupPubKey: function (pubkey) { - this.store.setItem(KEY_END_TO_END_TRUSTED_BACKUP_PUBKEY, pubkey); - }, - // XXX: This store is deprecated really, but added this as a temporary - // thing until cross-signing lands. - getLocalTrustedBackupPubKey: function () { - return this.store.getItem(KEY_END_TO_END_TRUSTED_BACKUP_PUBKEY); + return Promise.resolve(); } -}; -const KEY_END_TO_END_ACCOUNT = E2E_PREFIX + "account"; -const KEY_END_TO_END_DEVICE_SYNC_TOKEN = E2E_PREFIX + "device_sync_token"; -const KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS = E2E_PREFIX + "device_tracking"; -const KEY_END_TO_END_TRUSTED_BACKUP_PUBKEY = E2E_PREFIX + "trusted_backup_pubkey"; - -function keyEndToEndDevicesForUser(userId) { - return E2E_PREFIX + "devices/" + userId; -} - -function keyEndToEndSessions(deviceKey) { - return E2E_PREFIX + "sessions/" + deviceKey; -} - -function keyEndToEndInboundGroupSession(senderKey, sessionId) { - return E2E_PREFIX + "inboundgroupsessions/" + senderKey + "/" + sessionId; -} - -function keyEndToEndRoom(roomId) { - return E2E_PREFIX + "rooms/" + roomId; -} - -function getJsonItem(store, key) { - try { - // if the key is absent, store.getItem() returns null, and - // JSON.parse(null) === null, so this returns null. - return JSON.parse(store.getItem(key)); - } catch (e) { - debuglog("Failed to get key %s: %s", key, e); - debuglog(e.stack); + async getOldestToDeviceBatch() { + if (this.pendingToDeviceBatches.length === 0) return null; + return this.pendingToDeviceBatches[0]; } - - return null; -} - -function getKeysWithPrefix(store, prefix) { - const results = []; - - for (let i = 0; i < store.length; ++i) { - const key = store.key(i); - if (key.startsWith(prefix)) results.push(key); + removeToDeviceBatch(id) { + this.pendingToDeviceBatches = this.pendingToDeviceBatches.filter(batch => batch.id !== id); + return Promise.resolve(); } - - return results; -} - -function removeByPrefix(store, prefix) { - const toRemove = []; - - for (let i = 0; i < store.length; ++i) { - const key = store.key(i); - if (key.startsWith(prefix)) toRemove.push(key); - } - - for (const key of toRemove) { - store.removeItem(key); - } -} - -function debuglog() { - if (DEBUG) { - _logger.logger.log(...arguments); + async destroy() { + // Nothing to do } } +exports.MemoryStore = MemoryStore; +//# sourceMappingURL=memory.js.map /***/ }), /***/ 8817: -/***/ ((__unused_webpack_module, exports) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.StubStore = StubStore; - +exports.StubStore = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -62516,282 +187028,270 @@ limitations under the License. /** * This is an internal module. - * @module store/stub */ /** * Construct a stub store. This does no-ops on most store methods. - * @constructor */ -function StubStore() { - this.fromToken = null; -} - -StubStore.prototype = { - /** @return {Promise} whether or not the database was newly created in this session. */ - isNewlyCreated: function () { +class StubStore { + constructor() { + (0, _defineProperty2.default)(this, "accountData", new Map()); + // stub + (0, _defineProperty2.default)(this, "fromToken", null); + } + /** @returns whether or not the database was newly created in this session. */ + isNewlyCreated() { return Promise.resolve(true); - }, + } /** * Get the sync token. - * @return {string} */ - getSyncToken: function () { + getSyncToken() { return this.fromToken; - }, + } /** * Set the sync token. - * @param {string} token */ - setSyncToken: function (token) { + setSyncToken(token) { this.fromToken = token; - }, + } /** * No-op. - * @param {Group} group */ - storeGroup: function (group) {}, + storeRoom(room) {} /** * No-op. - * @param {string} groupId - * @return {null} */ - getGroup: function (groupId) { + getRoom(roomId) { return null; - }, + } /** * No-op. - * @return {Array} An empty array. + * @returns An empty array. */ - getGroups: function () { + getRooms() { return []; - }, - - /** - * No-op. - * @param {Room} room - */ - storeRoom: function (room) {}, - - /** - * No-op. - * @param {string} roomId - * @return {null} - */ - getRoom: function (roomId) { - return null; - }, - - /** - * No-op. - * @return {Array} An empty array. - */ - getRooms: function () { - return []; - }, + } /** * Permanently delete a room. - * @param {string} roomId */ - removeRoom: function (roomId) { + removeRoom(roomId) { return; - }, + } /** * No-op. - * @return {Array} An empty array. + * @returns An empty array. */ - getRoomSummaries: function () { + getRoomSummaries() { return []; - }, + } /** * No-op. - * @param {User} user */ - storeUser: function (user) {}, + storeUser(user) {} /** * No-op. - * @param {string} userId - * @return {null} */ - getUser: function (userId) { + getUser(userId) { return null; - }, + } /** * No-op. - * @return {User[]} */ - getUsers: function () { + getUsers() { return []; - }, + } /** * No-op. - * @param {Room} room - * @param {integer} limit - * @return {Array} */ - scrollback: function (room, limit) { + scrollback(room, limit) { return []; - }, + } + + /** + * No-op. + */ + setUserCreator(creator) { + return; + } /** * Store events for a room. - * @param {Room} room The room to store events for. - * @param {Array} events The events to store. - * @param {string} token The token associated with these events. - * @param {boolean} toStart True if these are paginated results. + * @param room - The room to store events for. + * @param events - The events to store. + * @param token - The token associated with these events. + * @param toStart - True if these are paginated results. */ - storeEvents: function (room, events, token, toStart) {}, + storeEvents(room, events, token, toStart) {} /** * Store a filter. - * @param {Filter} filter */ - storeFilter: function (filter) {}, + storeFilter(filter) {} /** * Retrieve a filter. - * @param {string} userId - * @param {string} filterId - * @return {?Filter} A filter or null. + * @returns A filter or null. */ - getFilter: function (userId, filterId) { + getFilter(userId, filterId) { return null; - }, + } /** * Retrieve a filter ID with the given name. - * @param {string} filterName The filter name. - * @return {?string} The filter ID or null. + * @param filterName - The filter name. + * @returns The filter ID or null. */ - getFilterIdByName: function (filterName) { + getFilterIdByName(filterName) { return null; - }, + } /** * Set a filter name to ID mapping. - * @param {string} filterName - * @param {string} filterId */ - setFilterIdByName: function (filterName, filterId) {}, + setFilterIdByName(filterName, filterId) {} /** * Store user-scoped account data events - * @param {Array} events The events to store. + * @param events - The events to store. */ - storeAccountDataEvents: function (events) {}, + storeAccountDataEvents(events) {} /** * Get account data event by event type - * @param {string} eventType The event type being queried + * @param eventType - The event type being queried */ - getAccountData: function (eventType) {}, + getAccountData(eventType) { + return undefined; + } /** * setSyncData does nothing as there is no backing data store. * - * @param {Object} syncData The sync data - * @return {Promise} An immediately resolved promise. + * @param syncData - The sync data + * @returns An immediately resolved promise. */ - setSyncData: function (syncData) { + setSyncData(syncData) { return Promise.resolve(); - }, + } /** - * We never want to save becase we have nothing to save to. + * We never want to save because we have nothing to save to. * - * @return {boolean} If the store wants to save + * @returns If the store wants to save */ - wantsSave: function () { + wantsSave() { return false; - }, + } /** * Save does nothing as there is no backing data store. */ - save: function () {}, + save() { + return Promise.resolve(); + } /** * Startup does nothing. - * @return {Promise} An immediately resolved promise. + * @returns An immediately resolved promise. */ - startup: function () { + startup() { return Promise.resolve(); - }, + } /** - * @return {Promise} Resolves with a sync response to restore the + * @returns Promise which resolves with a sync response to restore the * client state to where it was at the last save, or null if there * is no saved sync data. */ - getSavedSync: function () { + getSavedSync() { return Promise.resolve(null); - }, + } /** - * @return {Promise} If there is a saved sync, the nextBatch token + * @returns If there is a saved sync, the nextBatch token * for this sync, otherwise null. */ - getSavedSyncToken: function () { + getSavedSyncToken() { return Promise.resolve(null); - }, + } /** * Delete all data from this store. Does nothing since this store * doesn't store anything. - * @return {Promise} An immediately resolved promise. + * @returns An immediately resolved promise. */ - deleteAllData: function () { - return Promise.resolve(); - }, - getOutOfBandMembers: function () { - return Promise.resolve(null); - }, - setOutOfBandMembers: function () { - return Promise.resolve(); - }, - clearOutOfBandMembers: function () { - return Promise.resolve(); - }, - getClientOptions: function () { - return Promise.resolve(); - }, - storeClientOptions: function () { + deleteAllData() { return Promise.resolve(); } -}; + getOutOfBandMembers() { + return Promise.resolve(null); + } + setOutOfBandMembers(roomId, membershipEvents) { + return Promise.resolve(); + } + clearOutOfBandMembers() { + return Promise.resolve(); + } + getClientOptions() { + return Promise.resolve(undefined); + } + storeClientOptions(options) { + return Promise.resolve(); + } + async getPendingEvents(roomId) { + return []; + } + setPendingEvents(roomId, events) { + return Promise.resolve(); + } + async saveToDeviceBatches(batch) { + return Promise.resolve(); + } + getOldestToDeviceBatch() { + return Promise.resolve(null); + } + async removeToDeviceBatch(id) { + return Promise.resolve(); + } + async destroy() { + // Nothing to do + } +} +exports.StubStore = StubStore; +//# sourceMappingURL=stub.js.map /***/ }), /***/ 2768: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SyncAccumulator = void 0; - -var _logger = __webpack_require__(3854); - -var _utils = __webpack_require__(2557); - +exports.SyncAccumulator = exports.Category = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _logger = __nccwpck_require__(3854); +var _utils = __nccwpck_require__(2557); +var _sync = __nccwpck_require__(2478); +var _receiptAccumulator = __nccwpck_require__(7953); /* -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2017 - 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -62805,11 +187305,21 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - /** * This is an internal module. See {@link SyncAccumulator} for the public class. - * @module sync-accumulator */ +/* eslint-disable camelcase */ +/* eslint-enable camelcase */ +let Category = exports.Category = /*#__PURE__*/function (Category) { + Category["Invite"] = "invite"; + Category["Leave"] = "leave"; + Category["Join"] = "join"; + Category["Knock"] = "knock"; + return Category; +}({}); +function isTaggedEvent(event) { + return "_localTs" in event && event["_localTs"] !== undefined; +} /** * The purpose of this class is to accumulate /sync responses such that a @@ -62822,105 +187332,68 @@ limitations under the License. * rather than asking the server to do an initial sync on startup. */ class SyncAccumulator { - /** - * @param {Object} opts - * @param {Number=} opts.maxTimelineEntries The ideal maximum number of - * timeline entries to keep in the sync response. This is best-effort, as - * clients do not always have a back-pagination token for each event, so - * it's possible there may be slightly *less* than this value. There will - * never be more. This cannot be 0 or else it makes it impossible to scroll - * back in a room. Default: 50. - */ - constructor(opts) { - opts = opts || {}; - opts.maxTimelineEntries = opts.maxTimelineEntries || 50; - this.opts = opts; - this.accountData = {//$event_type: Object - }; - this.inviteRooms = {//$roomId: { ... sync 'invite' json data ... } - }; - this.joinRooms = {//$roomId: { - // _currentState: { $event_type: { $state_key: json } }, - // _timeline: [ - // { event: $event, token: null|token }, - // { event: $event, token: null|token }, - // { event: $event, token: null|token }, - // ... - // ], - // _summary: { - // m.heroes: [ $user_id ], - // m.joined_member_count: $count, - // m.invited_member_count: $count - // }, - // _accountData: { $event_type: json }, - // _unreadNotifications: { ... unread_notifications JSON ... }, - // _readReceipts: { $user_id: { data: $json, eventId: $event_id }} - //} - }; // the /sync token which corresponds to the last time rooms were + constructor(opts = {}) { + (0, _defineProperty2.default)(this, "accountData", {}); + // $event_type: Object + (0, _defineProperty2.default)(this, "inviteRooms", {}); + // $roomId: { ... sync 'invite' json data ... } + (0, _defineProperty2.default)(this, "knockRooms", {}); + // $roomId: { ... sync 'knock' json data ... } + (0, _defineProperty2.default)(this, "joinRooms", {}); + // the /sync token which corresponds to the last time rooms were // accumulated. We remember this so that any caller can obtain a // coherent /sync response and know at what point they should be // streaming from without losing events. - - this.nextBatch = null; // { ('invite'|'join'|'leave'): $groupId: { ... sync 'group' data } } - - this.groups = { - invite: {}, - join: {}, - leave: {} - }; + (0, _defineProperty2.default)(this, "nextBatch", null); + this.opts = opts; + this.opts.maxTimelineEntries = this.opts.maxTimelineEntries || 50; } - - accumulate(syncResponse) { - this._accumulateRooms(syncResponse); - - this._accumulateGroups(syncResponse); - - this._accumulateAccountData(syncResponse); - + accumulate(syncResponse, fromDatabase = false) { + this.accumulateRooms(syncResponse, fromDatabase); + this.accumulateAccountData(syncResponse); this.nextBatch = syncResponse.next_batch; } - - _accumulateAccountData(syncResponse) { + accumulateAccountData(syncResponse) { if (!syncResponse.account_data || !syncResponse.account_data.events) { return; - } // Clobbers based on event type. - - + } + // Clobbers based on event type. syncResponse.account_data.events.forEach(e => { this.accountData[e.type] = e; }); } + /** * Accumulate incremental /sync room data. - * @param {Object} syncResponse the complete /sync JSON + * @param syncResponse - the complete /sync JSON + * @param fromDatabase - True if the sync response is one saved to the database */ - - - _accumulateRooms(syncResponse) { + accumulateRooms(syncResponse, fromDatabase = false) { if (!syncResponse.rooms) { return; } - if (syncResponse.rooms.invite) { Object.keys(syncResponse.rooms.invite).forEach(roomId => { - this._accumulateRoom(roomId, "invite", syncResponse.rooms.invite[roomId]); + this.accumulateRoom(roomId, Category.Invite, syncResponse.rooms.invite[roomId], fromDatabase); }); } - if (syncResponse.rooms.join) { Object.keys(syncResponse.rooms.join).forEach(roomId => { - this._accumulateRoom(roomId, "join", syncResponse.rooms.join[roomId]); + this.accumulateRoom(roomId, Category.Join, syncResponse.rooms.join[roomId], fromDatabase); }); } - if (syncResponse.rooms.leave) { Object.keys(syncResponse.rooms.leave).forEach(roomId => { - this._accumulateRoom(roomId, "leave", syncResponse.rooms.leave[roomId]); + this.accumulateRoom(roomId, Category.Leave, syncResponse.rooms.leave[roomId], fromDatabase); + }); + } + if (syncResponse.rooms.knock) { + Object.keys(syncResponse.rooms.knock).forEach(roomId => { + this.accumulateRoom(roomId, Category.Knock, syncResponse.rooms.knock[roomId], fromDatabase); }); } } - - _accumulateRoom(roomId, category, data) { + accumulateRoom(roomId, category, data, fromDatabase = false) { // Valid /sync state transitions // +--------+ <======+ 1: Accept an invite // +== | INVITE | | (5) 2: Leave a room @@ -62933,87 +187406,113 @@ class SyncAccumulator { // // * equivalent to "no state" switch (category) { - case "invite": + case Category.Invite: // (5) - this._accumulateInviteState(roomId, data); - + if (this.knockRooms[roomId]) { + // was previously knock, now invite, need to delete knock state + delete this.knockRooms[roomId]; + } + this.accumulateInviteState(roomId, data); break; - - case "join": + case Category.Knock: + this.accumulateKnockState(roomId, data); + break; + case Category.Join: if (this.inviteRooms[roomId]) { // (1) // was previously invite, now join. We expect /sync to give // the entire state and timeline on 'join', so delete previous // invite state delete this.inviteRooms[roomId]; - } // (3) - - - this._accumulateJoinState(roomId, data); - + } + // (3) + this.accumulateJoinState(roomId, data, fromDatabase); break; - - case "leave": - if (this.inviteRooms[roomId]) { + case Category.Leave: + if (this.knockRooms[roomId]) { + // delete knock state on leave + delete this.knockRooms[roomId]; + } else if (this.inviteRooms[roomId]) { // (4) delete this.inviteRooms[roomId]; } else { // (2) delete this.joinRooms[roomId]; } - break; - default: _logger.logger.error("Unknown cateogory: ", category); - } } - - _accumulateInviteState(roomId, data) { + accumulateInviteState(roomId, data) { if (!data.invite_state || !data.invite_state.events) { // no new data return; } - if (!this.inviteRooms[roomId]) { this.inviteRooms[roomId] = { invite_state: data.invite_state }; return; - } // accumulate extra keys for invite->invite transitions + } + // accumulate extra keys for invite->invite transitions // clobber based on event type / state key // We expect invite_state to be small, so just loop over the events - - const currentData = this.inviteRooms[roomId]; data.invite_state.events.forEach(e => { let hasAdded = false; - for (let i = 0; i < currentData.invite_state.events.length; i++) { const current = currentData.invite_state.events[i]; - if (current.type === e.type && current.state_key == e.state_key) { currentData.invite_state.events[i] = e; // update - hasAdded = true; } } - if (!hasAdded) { currentData.invite_state.events.push(e); } }); - } // Accumulate timeline and state events in a room. + } + accumulateKnockState(roomId, data) { + if (!data.knock_state || !data.knock_state.events) { + // no new data + return; + } + if (!this.knockRooms[roomId]) { + this.knockRooms[roomId] = { + knock_state: data.knock_state + }; + return; + } + // accumulate extra keys + // clobber based on event type / state key + // We expect knock_state to be small, so just loop over the events + const currentData = this.knockRooms[roomId]; + data.knock_state.events.forEach(e => { + let hasAdded = false; + for (let i = 0; i < currentData.knock_state.events.length; i++) { + const current = currentData.knock_state.events[i]; + if (current.type === e.type && current.state_key == e.state_key) { + currentData.knock_state.events[i] = e; // update + hasAdded = true; + } + } + if (!hasAdded) { + currentData.knock_state.events.push(e); + } + }); + } - - _accumulateJoinState(roomId, data) { + // Accumulate timeline and state events in a room. + accumulateJoinState(roomId, data, fromDatabase = false) { + var _ref, _data, _data$ephemeral, _data$state, _data$timeline; // We expect this function to be called a lot (every /sync) so we want // this to be fast. /sync stores events in an array but we often want // to clobber based on type/state_key. Rather than convert arrays to // maps all the time, just keep private maps which contain // the actual current accumulated sync state, and array-ify it when // getJSON() is called. + // State resolution: // The 'state' key is the delta from the previous sync (or start of time // if no token was supplied), to the START of the timeline. To obtain @@ -63027,6 +187526,7 @@ class SyncAccumulator { // // When getJSON() is called, we 'roll back' the current state by the // number of entries in the timeline to work out what 'state' should be. + // Back-pagination: // On an initial /sync, the server provides a back-pagination token for // the start of the timeline. When /sync deltas come down, they also @@ -63040,6 +187540,7 @@ class SyncAccumulator { // opts.maxTimelineEntries, and we may have a few less. We should never // have more though, provided that the /sync limit is less than or equal // to opts.maxTimelineEntries. + if (!this.joinRooms[roomId]) { // Create truly empty objects so event types of 'hasOwnProperty' and co // don't cause this code to break. @@ -63048,112 +187549,88 @@ class SyncAccumulator { _timeline: [], _accountData: Object.create(null), _unreadNotifications: {}, + _unreadThreadNotifications: {}, _summary: {}, - _readReceipts: {} + _receipts: new _receiptAccumulator.ReceiptAccumulator() }; } - const currentData = this.joinRooms[roomId]; - if (data.account_data && data.account_data.events) { // clobber based on type data.account_data.events.forEach(e => { currentData._accountData[e.type] = e; }); - } // these probably clobber, spec is unclear. - + } + // these probably clobber, spec is unclear. if (data.unread_notifications) { currentData._unreadNotifications = data.unread_notifications; } - + currentData._unreadThreadNotifications = (_ref = (_data = data[_sync.UNREAD_THREAD_NOTIFICATIONS.stable]) !== null && _data !== void 0 ? _data : data[_sync.UNREAD_THREAD_NOTIFICATIONS.unstable]) !== null && _ref !== void 0 ? _ref : undefined; if (data.summary) { + var _sum$HEROES_KEY, _sum$JOINED_COUNT_KEY, _sum$INVITED_COUNT_KE; const HEROES_KEY = "m.heroes"; const INVITED_COUNT_KEY = "m.invited_member_count"; const JOINED_COUNT_KEY = "m.joined_member_count"; const acc = currentData._summary; const sum = data.summary; - acc[HEROES_KEY] = sum[HEROES_KEY] || acc[HEROES_KEY]; - acc[JOINED_COUNT_KEY] = sum[JOINED_COUNT_KEY] || acc[JOINED_COUNT_KEY]; - acc[INVITED_COUNT_KEY] = sum[INVITED_COUNT_KEY] || acc[INVITED_COUNT_KEY]; + acc[HEROES_KEY] = (_sum$HEROES_KEY = sum[HEROES_KEY]) !== null && _sum$HEROES_KEY !== void 0 ? _sum$HEROES_KEY : acc[HEROES_KEY]; + acc[JOINED_COUNT_KEY] = (_sum$JOINED_COUNT_KEY = sum[JOINED_COUNT_KEY]) !== null && _sum$JOINED_COUNT_KEY !== void 0 ? _sum$JOINED_COUNT_KEY : acc[JOINED_COUNT_KEY]; + acc[INVITED_COUNT_KEY] = (_sum$INVITED_COUNT_KE = sum[INVITED_COUNT_KEY]) !== null && _sum$INVITED_COUNT_KE !== void 0 ? _sum$INVITED_COUNT_KE : acc[INVITED_COUNT_KEY]; } - if (data.ephemeral && data.ephemeral.events) { - data.ephemeral.events.forEach(e => { - // We purposefully do not persist m.typing events. - // Technically you could refresh a browser before the timer on a - // typing event is up, so it'll look like you aren't typing when - // you really still are. However, the alternative is worse. If - // we do persist typing events, it will look like people are - // typing forever until someone really does start typing (which - // will prompt Synapse to send down an actual m.typing event to - // clobber the one we persisted). - if (e.type !== "m.receipt" || !e.content) { - // This means we'll drop unknown ephemeral events but that - // seems okay. - return; - } // Handle m.receipt events. They clobber based on: - // (user_id, receipt_type) - // but they are keyed in the event as: - // content:{ $event_id: { $receipt_type: { $user_id: {json} }}} - // so store them in the former so we can accumulate receipt deltas - // quickly and efficiently (we expect a lot of them). Fold the - // receipt type into the key name since we only have 1 at the - // moment (m.read) and nested JSON objects are slower and more - // of a hassle to work with. We'll inflate this back out when - // getJSON() is called. + // We purposefully do not persist m.typing events. + // Technically you could refresh a browser before the timer on a + // typing event is up, so it'll look like you aren't typing when + // you really still are. However, the alternative is worse. If + // we do persist typing events, it will look like people are + // typing forever until someone really does start typing (which + // will prompt Synapse to send down an actual m.typing event to + // clobber the one we persisted). + // Persist the receipts + currentData._receipts.consumeEphemeralEvents((_data$ephemeral = data.ephemeral) === null || _data$ephemeral === void 0 ? void 0 : _data$ephemeral.events); - Object.keys(e.content).forEach(eventId => { - if (!e.content[eventId]["m.read"]) { - return; - } - - Object.keys(e.content[eventId]["m.read"]).forEach(userId => { - // clobber on user ID - currentData._readReceipts[userId] = { - data: e.content[eventId]["m.read"][userId], - eventId: eventId - }; - }); - }); - }); - } // if we got a limited sync, we need to remove all timeline entries or else + // if we got a limited sync, we need to remove all timeline entries or else // we will have gaps in the timeline. - - if (data.timeline && data.timeline.limited) { currentData._timeline = []; - } // Work out the current state. The deltas need to be applied in the order: + } + + // Work out the current state. The deltas need to be applied in the order: // - existing state which didn't come down /sync. // - State events under the 'state' key. // - State events in the 'timeline'. - - - if (data.state && data.state.events) { - data.state.events.forEach(e => { - setState(currentData._currentState, e); + (_data$state = data.state) === null || _data$state === void 0 || (_data$state = _data$state.events) === null || _data$state === void 0 || _data$state.forEach(e => { + setState(currentData._currentState, e); + }); + (_data$timeline = data.timeline) === null || _data$timeline === void 0 || (_data$timeline = _data$timeline.events) === null || _data$timeline === void 0 || _data$timeline.forEach((e, index) => { + var _data$timeline$prev_b; + // this nops if 'e' isn't a state event + setState(currentData._currentState, e); + // append the event to the timeline. The back-pagination token + // corresponds to the first event in the timeline + let transformedEvent; + if (!fromDatabase) { + transformedEvent = Object.assign({}, e); + if (transformedEvent.unsigned !== undefined) { + transformedEvent.unsigned = Object.assign({}, transformedEvent.unsigned); + } + const age = e.unsigned ? e.unsigned.age : e.age; + if (age !== undefined) transformedEvent._localTs = Date.now() - age; + } else { + transformedEvent = e; + } + currentData._timeline.push({ + event: transformedEvent, + token: index === 0 ? (_data$timeline$prev_b = data.timeline.prev_batch) !== null && _data$timeline$prev_b !== void 0 ? _data$timeline$prev_b : null : null }); - } + }); - if (data.timeline && data.timeline.events) { - data.timeline.events.forEach((e, index) => { - // this nops if 'e' isn't a state event - setState(currentData._currentState, e); // append the event to the timeline. The back-pagination token - // corresponds to the first event in the timeline - - currentData._timeline.push({ - event: e, - token: index === 0 ? data.timeline.prev_batch : null - }); - }); - } // attempt to prune the timeline by jumping between events which have + // attempt to prune the timeline by jumping between events which have // pagination tokens. - - if (currentData._timeline.length > this.opts.maxTimelineEntries) { const startIndex = currentData._timeline.length - this.opts.maxTimelineEntries; - for (let i = startIndex; i < currentData._timeline.length; i++) { if (currentData._timeline[i].token) { // keep all events after this, including this one @@ -63163,49 +187640,14 @@ class SyncAccumulator { } } } - /** - * Accumulate incremental /sync group data. - * @param {Object} syncResponse the complete /sync JSON - */ - - _accumulateGroups(syncResponse) { - if (!syncResponse.groups) { - return; - } - - if (syncResponse.groups.invite) { - Object.keys(syncResponse.groups.invite).forEach(groupId => { - this._accumulateGroup(groupId, "invite", syncResponse.groups.invite[groupId]); - }); - } - - if (syncResponse.groups.join) { - Object.keys(syncResponse.groups.join).forEach(groupId => { - this._accumulateGroup(groupId, "join", syncResponse.groups.join[groupId]); - }); - } - - if (syncResponse.groups.leave) { - Object.keys(syncResponse.groups.leave).forEach(groupId => { - this._accumulateGroup(groupId, "leave", syncResponse.groups.leave[groupId]); - }); - } - } - - _accumulateGroup(groupId, category, data) { - for (const cat of ['invite', 'join', 'leave']) { - delete this.groups[cat][groupId]; - } - - this.groups[category][groupId] = data; - } /** * Return everything under the 'rooms' key from a /sync response which * represents all room data that should be stored. This should be paired * with the sync token which represents the most recent /sync response * provided to accumulate(). - * @return {Object} An object with a "nextBatch", "roomsData" and "accountData" + * @param forDatabase - True to generate a sync to be saved to storage + * @returns An object with a "nextBatch", "roomsData" and "accountData" * keys. * The "nextBatch" key is a string which represents at what point in the * /sync stream the accumulator reached. This token should be used when @@ -63214,12 +187656,11 @@ class SyncAccumulator { * /sync response from the 'rooms' key onwards. The "accountData" key is * a list of raw events which represent global account data. */ - - - getJSON() { + getJSON(forDatabase = false) { const data = { join: {}, invite: {}, + knock: {}, // always empty. This is set by /sync when a room was previously // in 'invite' or 'join'. On fresh startup, the client won't know // about any previous room being in 'invite' or 'join' so we can @@ -63236,6 +187677,9 @@ class SyncAccumulator { Object.keys(this.inviteRooms).forEach(roomId => { data.invite[roomId] = this.inviteRooms[roomId]; }); + Object.keys(this.knockRooms).forEach(roomId => { + data.knock[roomId] = this.knockRooms[roomId]; + }); Object.keys(this.joinRooms).forEach(roomId => { const roomData = this.joinRooms[roomId]; const roomJson = { @@ -63253,36 +187697,21 @@ class SyncAccumulator { prev_batch: null }, unread_notifications: roomData._unreadNotifications, + unread_thread_notifications: roomData._unreadThreadNotifications, summary: roomData._summary - }; // Add account data - + }; + // Add account data Object.keys(roomData._accountData).forEach(evType => { roomJson.account_data.events.push(roomData._accountData[evType]); - }); // Add receipt data + }); + const receiptEvent = roomData._receipts.buildAccumulatedReceiptEvent(roomId); - const receiptEvent = { - type: "m.receipt", - room_id: roomId, - content: {// $event_id: { "m.read": { $user_id: $json } } - } - }; - Object.keys(roomData._readReceipts).forEach(userId => { - const receiptData = roomData._readReceipts[userId]; - - if (!receiptEvent.content[receiptData.eventId]) { - receiptEvent.content[receiptData.eventId] = { - "m.read": {} - }; - } - - receiptEvent.content[receiptData.eventId]["m.read"][userId] = receiptData.data; - }); // add only if we have some receipt data - - if (Object.keys(receiptEvent.content).length > 0) { + // add only if we have some receipt data + if (receiptEvent) { roomJson.ephemeral.events.push(receiptEvent); - } // Add timeline data - + } + // Add timeline data roomData._timeline.forEach(msgData => { if (!roomJson.timeline.prev_batch) { // the first event we add to the timeline MUST match up to @@ -63290,58 +187719,68 @@ class SyncAccumulator { if (!msgData.token) { return; // this shouldn't happen as we prune constantly. } - roomJson.timeline.prev_batch = msgData.token; } + let transformedEvent; + if (!forDatabase && isTaggedEvent(msgData.event)) { + // This means we have to copy each event, so we can fix it up to + // set a correct 'age' parameter whilst keeping the local timestamp + // on our stored event. If this turns out to be a bottleneck, it could + // be optimised either by doing this in the main process after the data + // has been structured-cloned to go between the worker & main process, + // or special-casing data from saved syncs to read the local timestamp + // directly rather than turning it into age to then immediately be + // transformed back again into a local timestamp. + transformedEvent = Object.assign({}, msgData.event); + if (transformedEvent.unsigned !== undefined) { + transformedEvent.unsigned = Object.assign({}, transformedEvent.unsigned); + } + delete transformedEvent._localTs; + transformedEvent.unsigned = transformedEvent.unsigned || {}; + transformedEvent.unsigned.age = Date.now() - msgData.event._localTs; + } else { + transformedEvent = msgData.event; + } + roomJson.timeline.events.push(transformedEvent); + }); - roomJson.timeline.events.push(msgData.event); - }); // Add state data: roll back current state to the start of timeline, + // Add state data: roll back current state to the start of timeline, // by "reverse clobbering" from the end of the timeline to the start. // Convert maps back into arrays. - - const rollBackState = Object.create(null); - for (let i = roomJson.timeline.events.length - 1; i >= 0; i--) { const timelineEvent = roomJson.timeline.events[i]; - if (timelineEvent.state_key === null || timelineEvent.state_key === undefined) { continue; // not a state event - } // since we're going back in time, we need to use the previous + } + // since we're going back in time, we need to use the previous // state value else we'll break causality. We don't have the // complete previous state event, so we need to create one. - - const prevStateEvent = (0, _utils.deepCopy)(timelineEvent); - if (prevStateEvent.unsigned) { if (prevStateEvent.unsigned.prev_content) { prevStateEvent.content = prevStateEvent.unsigned.prev_content; } - if (prevStateEvent.unsigned.prev_sender) { prevStateEvent.sender = prevStateEvent.unsigned.prev_sender; } } - setState(rollBackState, prevStateEvent); } - Object.keys(roomData._currentState).forEach(evType => { Object.keys(roomData._currentState[evType]).forEach(stateKey => { let ev = roomData._currentState[evType][stateKey]; - if (rollBackState[evType] && rollBackState[evType][stateKey]) { // use the reverse clobbered event instead. ev = rollBackState[evType][stateKey]; } - roomJson.state.events.push(ev); }); }); data.join[roomId] = roomJson; - }); // Add account data + }); + // Add account data const accData = []; Object.keys(this.accountData).forEach(evType => { accData.push(this.accountData[evType]); @@ -63349,69 +187788,60 @@ class SyncAccumulator { return { nextBatch: this.nextBatch, roomsData: data, - groupsData: this.groups, accountData: accData }; } - getNextBatchToken() { return this.nextBatch; } - } - exports.SyncAccumulator = SyncAccumulator; - function setState(eventMap, event) { if (event.state_key === null || event.state_key === undefined || !event.type) { return; } - if (!eventMap[event.type]) { eventMap[event.type] = Object.create(null); } - eventMap[event.type][event.state_key] = event; } +//# sourceMappingURL=sync-accumulator.js.map /***/ }), /***/ 9779: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SyncApi = SyncApi; - -var _user = __webpack_require__(1104); - -var _room = __webpack_require__(7688); - -var _group = __webpack_require__(2390); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - -var _filter = __webpack_require__(3768); - -var _eventTimeline = __webpack_require__(2763); - -var _pushprocessor = __webpack_require__(4131); - -var _logger = __webpack_require__(3854); - -var _errors = __webpack_require__(1905); - -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 Vector Creations Ltd -Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +exports.SyncState = exports.SyncApi = exports.SetPresence = void 0; +exports._createAndReEmitRoom = _createAndReEmitRoom; +exports.defaultClientOpts = defaultClientOpts; +exports.defaultSyncApiOpts = defaultSyncApiOpts; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _user = __nccwpck_require__(1104); +var _room = __nccwpck_require__(7688); +var _utils = __nccwpck_require__(2557); +var _filter = __nccwpck_require__(3768); +var _eventTimeline = __nccwpck_require__(2763); +var _logger = __nccwpck_require__(3854); +var _client = __nccwpck_require__(9058); +var _httpApi = __nccwpck_require__(7082); +var _event = __nccwpck_require__(7487); +var _roomState = __nccwpck_require__(1513); +var _roomMember = __nccwpck_require__(7024); +var _beacon = __nccwpck_require__(23); +var _sync = __nccwpck_require__(2478); +var _feature = __nccwpck_require__(1685); +var _membership = __nccwpck_require__(9225); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2015 - 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -63424,190 +187854,277 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -*/ - -/* +*/ /* * TODO: * This class mainly serves to take all the syncing logic out of client.js and * into a separate file. It's all very fluid, and this class gut wrenches a lot - * of MatrixClient props (e.g. _http). Given we want to support WebSockets as + * of MatrixClient props (e.g. http). Given we want to support WebSockets as * an alternative syncing API, we may want to have a proper syncing interface * for HTTP and WS at some point. */ -const DEBUG = true; // /sync requests allow you to set a timeout= but the request may continue +const DEBUG = true; + +// /sync requests allow you to set a timeout= but the request may continue // beyond that and wedge forever, so we need to track how long we are willing // to keep open the connection. This constant is *ADDED* to the timeout= value // to determine the max time we're willing to wait. +const BUFFER_PERIOD_MS = 80 * 1000; -const BUFFER_PERIOD_MS = 80 * 1000; // Number of consecutive failed syncs that will lead to a syncState of ERROR as opposed +// Number of consecutive failed syncs that will lead to a syncState of ERROR as opposed // to RECONNECTING. This is needed to inform the client of server issues when the // keepAlive is successful but the server /sync fails. - const FAILED_SYNC_ERROR_THRESHOLD = 3; - +let SyncState = exports.SyncState = /*#__PURE__*/function (SyncState) { + SyncState["Error"] = "ERROR"; + SyncState["Prepared"] = "PREPARED"; + SyncState["Stopped"] = "STOPPED"; + SyncState["Syncing"] = "SYNCING"; + SyncState["Catchup"] = "CATCHUP"; + SyncState["Reconnecting"] = "RECONNECTING"; + return SyncState; +}({}); // Room versions where "insertion", "batch", and "marker" events are controlled +// by power-levels. MSC2716 is supported in existing room versions but they +// should only have special meaning when the room creator sends them. +const MSC2716_ROOM_VERSIONS = ["org.matrix.msc2716v3"]; function getFilterName(userId, suffix) { // scope this on the user ID because people may login on many accounts // and they all need to be stored! - return "FILTER_SYNC_" + userId + (suffix ? "_" + suffix : ""); + return `FILTER_SYNC_${userId}` + (suffix ? "_" + suffix : ""); } +/* istanbul ignore next */ function debuglog(...params) { - if (!DEBUG) { - return; - } - + if (!DEBUG) return; _logger.logger.log(...params); } + /** - * Internal class - unstable. - * Construct an entity which is able to sync with a homeserver. - * @constructor - * @param {MatrixClient} client The matrix client instance to use. - * @param {Object} opts Config options - * @param {module:crypto=} opts.crypto Crypto manager - * @param {Function=} opts.canResetEntireTimeline A function which is called - * with a room ID and returns a boolean. It should return 'true' if the SDK can - * SAFELY remove events from this room. It may not be safe to remove events if - * there are other references to the timelines for this room. - * Default: returns false. - * @param {Boolean=} opts.disablePresence True to perform syncing without automatically - * updating presence. + * Options passed into the constructor of SyncApi by MatrixClient */ - - -function SyncApi(client, opts) { - this.client = client; - opts = opts || {}; - opts.initialSyncLimit = opts.initialSyncLimit === undefined ? 8 : opts.initialSyncLimit; - opts.resolveInvitesToProfiles = opts.resolveInvitesToProfiles || false; - opts.pollTimeout = opts.pollTimeout || 30 * 1000; - opts.pendingEventOrdering = opts.pendingEventOrdering || "chronological"; - - if (!opts.canResetEntireTimeline) { - opts.canResetEntireTimeline = function (roomId) { - return false; - }; - } - - this.opts = opts; - this._peekRoomId = null; - this._currentSyncRequest = null; - this._syncState = null; - this._syncStateData = null; // additional data (eg. error object for failed sync) - - this._catchingUp = false; - this._running = false; - this._keepAliveTimer = null; - this._connectionReturnedDefer = null; - this._notifEvents = []; // accumulator of sync events in the current sync response - - this._failedSyncCount = 0; // Number of consecutive failed /sync requests - - this._storeIsInvalid = false; // flag set if the store needs to be cleared before we can start - - if (client.getNotifTimelineSet()) { - client.reEmitter.reEmit(client.getNotifTimelineSet(), ["Room.timeline", "Room.timelineReset"]); - } +let SetPresence = exports.SetPresence = /*#__PURE__*/function (SetPresence) { + SetPresence["Offline"] = "offline"; + SetPresence["Online"] = "online"; + SetPresence["Unavailable"] = "unavailable"; + return SetPresence; +}({}); +/** add default settings to an IStoredClientOpts */ +function defaultClientOpts(opts) { + return _objectSpread({ + initialSyncLimit: 8, + resolveInvitesToProfiles: false, + pollTimeout: 30 * 1000, + pendingEventOrdering: _client.PendingEventOrdering.Chronological, + threadSupport: false + }, opts); } -/** - * @param {string} roomId - * @return {Room} - */ +function defaultSyncApiOpts(syncOpts) { + return _objectSpread({ + canResetEntireTimeline: _roomId => false + }, syncOpts); +} +class SyncApi { + // flag set if the store needs to be cleared before we can start - -SyncApi.prototype.createRoom = function (roomId) { - const client = this.client; - const { - timelineSupport, - unstableClientRelationAggregation - } = client; - const room = new _room.Room(roomId, client, client.getUserId(), { - lazyLoadMembers: this.opts.lazyLoadMembers, - pendingEventOrdering: this.opts.pendingEventOrdering, - timelineSupport, - unstableClientRelationAggregation - }); - client.reEmitter.reEmit(room, ["Room.name", "Room.timeline", "Room.redaction", "Room.redactionCancelled", "Room.receipt", "Room.tags", "Room.timelineReset", "Room.localEchoUpdated", "Room.accountData", "Room.myMembership", "Room.replaceEvent"]); - - this._registerStateListeners(room); - - return room; -}; -/** - * @param {string} groupId - * @return {Group} - */ - - -SyncApi.prototype.createGroup = function (groupId) { - const client = this.client; - const group = new _group.Group(groupId); - client.reEmitter.reEmit(group, ["Group.profile", "Group.myMembership"]); - client.store.storeGroup(group); - return group; -}; -/** - * @param {Room} room - * @private - */ - - -SyncApi.prototype._registerStateListeners = function (room) { - const client = this.client; // we need to also re-emit room state and room member events, so hook it up - // to the client now. We need to add a listener for RoomState.members in - // order to hook them correctly. (TODO: find a better way?) - - client.reEmitter.reEmit(room.currentState, ["RoomState.events", "RoomState.members", "RoomState.newMember"]); - room.currentState.on("RoomState.newMember", function (event, state, member) { - member.user = client.getUser(member.userId); - client.reEmitter.reEmit(member, ["RoomMember.name", "RoomMember.typing", "RoomMember.powerLevel", "RoomMember.membership"]); - }); -}; -/** - * @param {Room} room - * @private - */ - - -SyncApi.prototype._deregisterStateListeners = function (room) { - // could do with a better way of achieving this. - room.currentState.removeAllListeners("RoomState.events"); - room.currentState.removeAllListeners("RoomState.members"); - room.currentState.removeAllListeners("RoomState.newMember"); -}; -/** - * Sync rooms the user has left. - * @return {Promise} Resolved when they've been added to the store. - */ - - -SyncApi.prototype.syncLeftRooms = function () { - const client = this.client; - const self = this; // grab a filter with limit=1 and include_leave=true - - const filter = new _filter.Filter(this.client.credentials.userId); - filter.setTimelineLimit(1); - filter.setIncludeLeaveRooms(true); - const localTimeoutMs = this.opts.pollTimeout + BUFFER_PERIOD_MS; - const qps = { - timeout: 0 // don't want to block since this is a single isolated req - - }; - return client.getOrCreateFilter(getFilterName(client.credentials.userId, "LEFT_ROOMS"), filter).then(function (filterId) { - qps.filter = filterId; - return client._http.authedRequest(undefined, "GET", "/sync", qps, undefined, localTimeoutMs); - }).then(function (data) { - let leaveRooms = []; - - if (data.rooms && data.rooms.leave) { - leaveRooms = self._mapSyncResponseToRoomArray(data.rooms.leave); + /** + * Construct an entity which is able to sync with a homeserver. + * @param client - The matrix client instance to use. + * @param opts - client config options + * @param syncOpts - sync-specific options passed by the client + * @internal + */ + constructor(client, opts, syncOpts) { + (0, _defineProperty2.default)(this, "_peekRoom", null); + (0, _defineProperty2.default)(this, "syncState", null); + // additional data (eg. error object for failed sync) + (0, _defineProperty2.default)(this, "catchingUp", false); + (0, _defineProperty2.default)(this, "running", false); + (0, _defineProperty2.default)(this, "notifEvents", []); + // accumulator of sync events in the current sync response + (0, _defineProperty2.default)(this, "failedSyncCount", 0); + // Number of consecutive failed /sync requests + (0, _defineProperty2.default)(this, "storeIsInvalid", false); + (0, _defineProperty2.default)(this, "getPushRules", async () => { + try { + debuglog("Getting push rules..."); + const result = await this.client.getPushRules(); + debuglog("Got push rules"); + this.client.pushRules = result; + } catch (err) { + _logger.logger.error("Getting push rules failed", err); + if (this.shouldAbortSync(err)) return; + // wait for saved sync to complete before doing anything else, + // otherwise the sync state will end up being incorrect + debuglog("Waiting for saved sync before retrying push rules..."); + await this.recoverFromSyncStartupError(this.savedSyncPromise, err); + return this.getPushRules(); // try again + } + }); + (0, _defineProperty2.default)(this, "buildDefaultFilter", () => { + const filter = new _filter.Filter(this.client.credentials.userId); + if (this.client.canSupport.get(_feature.Feature.ThreadUnreadNotifications) !== _feature.ServerSupport.Unsupported) { + filter.setUnreadThreadNotifications(true); + } + return filter; + }); + (0, _defineProperty2.default)(this, "prepareLazyLoadingForSync", async () => { + debuglog("Prepare lazy loading for sync..."); + if (this.client.isGuest()) { + this.opts.lazyLoadMembers = false; + } + if (this.opts.lazyLoadMembers) { + debuglog("Enabling lazy load on sync filter..."); + if (!this.opts.filter) { + this.opts.filter = this.buildDefaultFilter(); + } + this.opts.filter.setLazyLoadMembers(true); + } + if (this.opts.lazyLoadMembers) { + var _this$syncOpts$crypto; + (_this$syncOpts$crypto = this.syncOpts.crypto) === null || _this$syncOpts$crypto === void 0 || _this$syncOpts$crypto.enableLazyLoading(); + } + }); + (0, _defineProperty2.default)(this, "storeClientOptions", async () => { + try { + debuglog("Storing client options..."); + await this.client.storeClientOptions(); + debuglog("Stored client options"); + } catch (err) { + _logger.logger.error("Storing client options failed", err); + throw err; + } + }); + (0, _defineProperty2.default)(this, "getFilter", async () => { + debuglog("Getting filter..."); + let filter; + if (this.opts.filter) { + filter = this.opts.filter; + } else { + filter = this.buildDefaultFilter(); + } + let filterId; + try { + filterId = await this.client.getOrCreateFilter(getFilterName(this.client.credentials.userId), filter); + } catch (err) { + _logger.logger.error("Getting filter failed", err); + if (this.shouldAbortSync(err)) return {}; + // wait for saved sync to complete before doing anything else, + // otherwise the sync state will end up being incorrect + debuglog("Waiting for saved sync before retrying filter..."); + await this.recoverFromSyncStartupError(this.savedSyncPromise, err); + return this.getFilter(); // try again + } + return { + filter, + filterId + }; + }); + /** + * Event handler for the 'online' event + * This event is generally unreliable and precise behaviour + * varies between browsers, so we poll for connectivity too, + * but this might help us reconnect a little faster. + */ + (0, _defineProperty2.default)(this, "onOnline", () => { + debuglog("Browser thinks we are back online"); + this.startKeepAlives(0); + }); + this.client = client; + this.opts = defaultClientOpts(opts); + this.syncOpts = defaultSyncApiOpts(syncOpts); + if (client.getNotifTimelineSet()) { + client.reEmitter.reEmit(client.getNotifTimelineSet(), [_room.RoomEvent.Timeline, _room.RoomEvent.TimelineReset]); } + } + createRoom(roomId) { + const room = _createAndReEmitRoom(this.client, roomId, this.opts); + room.on(_roomState.RoomStateEvent.Marker, (markerEvent, markerFoundOptions) => { + this.onMarkerStateEvent(room, markerEvent, markerFoundOptions); + }); + return room; + } - const rooms = []; - leaveRooms.forEach(function (leaveObj) { + /** When we see the marker state change in the room, we know there is some + * new historical messages imported by MSC2716 `/batch_send` somewhere in + * the room and we need to throw away the timeline to make sure the + * historical messages are shown when we paginate `/messages` again. + * @param room - The room where the marker event was sent + * @param markerEvent - The new marker event + * @param setStateOptions - When `timelineWasEmpty` is set + * as `true`, the given marker event will be ignored + */ + onMarkerStateEvent(room, markerEvent, { + timelineWasEmpty + } = {}) { + // We don't need to refresh the timeline if it was empty before the + // marker arrived. This could be happen in a variety of cases: + // 1. From the initial sync + // 2. If it's from the first state we're seeing after joining the room + // 3. Or whether it's coming from `syncFromCache` + if (timelineWasEmpty) { + _logger.logger.debug(`MarkerState: Ignoring markerEventId=${markerEvent.getId()} in roomId=${room.roomId} ` + `because the timeline was empty before the marker arrived which means there is nothing to refresh.`); + return; + } + const isValidMsc2716Event = + // Check whether the room version directly supports MSC2716, in + // which case, "marker" events are already auth'ed by + // power_levels + MSC2716_ROOM_VERSIONS.includes(room.getVersion()) || + // MSC2716 is also supported in all existing room versions but + // special meaning should only be given to "insertion", "batch", + // and "marker" events when they come from the room creator + markerEvent.getSender() === room.getCreator(); + + // It would be nice if we could also specifically tell whether the + // historical messages actually affected the locally cached client + // timeline or not. The problem is we can't see the prev_events of + // the base insertion event that the marker was pointing to because + // prev_events aren't available in the client API's. In most cases, + // the history won't be in people's locally cached timelines in the + // client, so we don't need to bother everyone about refreshing + // their timeline. This works for a v1 though and there are use + // cases like initially bootstrapping your bridged room where people + // are likely to encounter the historical messages affecting their + // current timeline (think someone signing up for Beeper and + // importing their Whatsapp history). + if (isValidMsc2716Event) { + // Saw new marker event, let's let the clients know they should + // refresh the timeline. + _logger.logger.debug(`MarkerState: Timeline needs to be refreshed because ` + `a new markerEventId=${markerEvent.getId()} was sent in roomId=${room.roomId}`); + room.setTimelineNeedsRefresh(true); + room.emit(_room.RoomEvent.HistoryImportedWithinTimeline, markerEvent, room); + } else { + _logger.logger.debug(`MarkerState: Ignoring markerEventId=${markerEvent.getId()} in roomId=${room.roomId} because ` + `MSC2716 is not supported in the room version or for any room version, the marker wasn't sent ` + `by the room creator.`); + } + } + + /** + * Sync rooms the user has left. + * @returns Resolved when they've been added to the store. + */ + async syncLeftRooms() { + var _data$rooms; + const client = this.client; + + // grab a filter with limit=1 and include_leave=true + const filter = new _filter.Filter(this.client.credentials.userId); + filter.setTimelineLimit(1); + filter.setIncludeLeaveRooms(true); + const localTimeoutMs = this.opts.pollTimeout + BUFFER_PERIOD_MS; + const filterId = await client.getOrCreateFilter(getFilterName(client.credentials.userId, "LEFT_ROOMS"), filter); + const qps = { + timeout: 0, + // don't want to block since this is a single isolated req + filter: filterId + }; + const data = await client.http.authedRequest(_httpApi.Method.Get, "/sync", qps, undefined, { + localTimeoutMs + }); + let leaveRooms = []; + if ((_data$rooms = data.rooms) !== null && _data$rooms !== void 0 && _data$rooms.leave) { + leaveRooms = this.mapSyncResponseToRoomArray(data.rooms.leave); + } + const rooms = await Promise.all(leaveRooms.map(async leaveObj => { const room = leaveObj.room; - rooms.push(room); - if (!leaveObj.isBrandNewRoom) { // the intention behind syncLeftRooms is to add in rooms which were // *omitted* from the initial /sync. Rooms the user were joined to @@ -63619,1527 +188136,1306 @@ SyncApi.prototype.syncLeftRooms = function () { // complicated... return; } + leaveObj.timeline = leaveObj.timeline || { + prev_batch: null, + events: [] + }; + const events = this.mapSyncEventsFormat(leaveObj.timeline, room); + const stateEvents = this.mapSyncEventsFormat(leaveObj.state, room); - leaveObj.timeline = leaveObj.timeline || {}; - - const timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room); - - const stateEvents = self._mapSyncEventsFormat(leaveObj.state, room); // set the back-pagination token. Do this *before* adding any + // set the back-pagination token. Do this *before* adding any // events so that clients can start back-paginating. - - room.getLiveTimeline().setPaginationToken(leaveObj.timeline.prev_batch, _eventTimeline.EventTimeline.BACKWARDS); - - self._processRoomEvents(room, stateEvents, timelineEvents); - + await this.injectRoomEvents(room, stateEvents, events); room.recalculate(); client.store.storeRoom(room); - client.emit("Room", room); + client.emit(_client.ClientEvent.Room, room); + this.processEventsForNotifs(room, events); + return room; + })); + return rooms.filter(Boolean); + } - self._processEventsForNotifs(room, timelineEvents); + /** + * Peek into a room. This will result in the room in question being synced so it + * is accessible via getRooms(). Live updates for the room will be provided. + * @param roomId - The room ID to peek into. + * @returns A promise which resolves once the room has been added to the + * store. + */ + peek(roomId) { + var _this$_peekRoom; + if (((_this$_peekRoom = this._peekRoom) === null || _this$_peekRoom === void 0 ? void 0 : _this$_peekRoom.roomId) === roomId) { + return Promise.resolve(this._peekRoom); + } + const client = this.client; + this._peekRoom = this.createRoom(roomId); + return this.client.roomInitialSync(roomId, 20).then(response => { + var _this$_peekRoom2; + if (((_this$_peekRoom2 = this._peekRoom) === null || _this$_peekRoom2 === void 0 ? void 0 : _this$_peekRoom2.roomId) !== roomId) { + throw new Error("Peeking aborted"); + } + + // make sure things are init'd + response.messages = response.messages || { + chunk: [] + }; + response.messages.chunk = response.messages.chunk || []; + response.state = response.state || []; + + // FIXME: Mostly duplicated from injectRoomEvents but not entirely + // because "state" in this API is at the BEGINNING of the chunk + const oldStateEvents = (0, _utils.deepCopy)(response.state).map(client.getEventMapper()); + const stateEvents = response.state.map(client.getEventMapper()); + const messages = response.messages.chunk.map(client.getEventMapper()); + + // XXX: copypasted from /sync until we kill off this minging v1 API stuff) + // handle presence events (User objects) + if (Array.isArray(response.presence)) { + response.presence.map(client.getEventMapper()).forEach(function (presenceEvent) { + let user = client.store.getUser(presenceEvent.getContent().user_id); + if (user) { + user.setPresenceEvent(presenceEvent); + } else { + user = _user.User.createUser(presenceEvent.getContent().user_id, client); + user.setPresenceEvent(presenceEvent); + client.store.storeUser(user); + } + client.emit(_client.ClientEvent.Event, presenceEvent); + }); + } + + // set the pagination token before adding the events in case people + // fire off pagination requests in response to the Room.timeline + // events. + if (response.messages.start) { + this._peekRoom.oldState.paginationToken = response.messages.start; + } + + // set the state of the room to as it was after the timeline executes + this._peekRoom.oldState.setStateEvents(oldStateEvents); + this._peekRoom.currentState.setStateEvents(stateEvents); + this.resolveInvites(this._peekRoom); + this._peekRoom.recalculate(); + + // roll backwards to diverge old state. addEventsToTimeline + // will overwrite the pagination token, so make sure it overwrites + // it with the right thing. + this._peekRoom.addEventsToTimeline(messages.reverse(), true, this._peekRoom.getLiveTimeline(), response.messages.start); + client.store.storeRoom(this._peekRoom); + client.emit(_client.ClientEvent.Room, this._peekRoom); + this.peekPoll(this._peekRoom); + return this._peekRoom; }); - return rooms; - }); -}; -/** - * Peek into a room. This will result in the room in question being synced so it - * is accessible via getRooms(). Live updates for the room will be provided. - * @param {string} roomId The room ID to peek into. - * @return {Promise} A promise which resolves once the room has been added to the - * store. - */ + } + /** + * Stop polling for updates in the peeked room. NOPs if there is no room being + * peeked. + */ + stopPeeking() { + this._peekRoom = null; + } -SyncApi.prototype.peek = function (roomId) { - const self = this; - const client = this.client; - this._peekRoomId = roomId; - return this.client.roomInitialSync(roomId, 20).then(function (response) { - // make sure things are init'd - response.messages = response.messages || {}; - response.messages.chunk = response.messages.chunk || []; - response.state = response.state || []; - const peekRoom = self.createRoom(roomId); // FIXME: Mostly duplicated from _processRoomEvents but not entirely - // because "state" in this API is at the BEGINNING of the chunk + /** + * Do a peek room poll. + * @param token - from= token + */ + peekPoll(peekRoom, token) { + var _this$abortController; + if (this._peekRoom !== peekRoom) { + debuglog("Stopped peeking in room %s", peekRoom.roomId); + return; + } - const oldStateEvents = utils.map(utils.deepCopy(response.state), client.getEventMapper()); - const stateEvents = utils.map(response.state, client.getEventMapper()); - const messages = utils.map(response.messages.chunk, client.getEventMapper()); // XXX: copypasted from /sync until we kill off this - // minging v1 API stuff) - // handle presence events (User objects) - - if (response.presence && utils.isArray(response.presence)) { - response.presence.map(client.getEventMapper()).forEach(function (presenceEvent) { - let user = client.store.getUser(presenceEvent.getContent().user_id); + // FIXME: gut wrenching; hard-coded timeout values + this.client.http.authedRequest(_httpApi.Method.Get, "/events", { + room_id: peekRoom.roomId, + timeout: String(30 * 1000), + from: token + }, undefined, { + localTimeoutMs: 50 * 1000, + abortSignal: (_this$abortController = this.abortController) === null || _this$abortController === void 0 ? void 0 : _this$abortController.signal + }).then(async res => { + if (this._peekRoom !== peekRoom) { + debuglog("Stopped peeking in room %s", peekRoom.roomId); + return; + } + // We have a problem that we get presence both from /events and /sync + // however, /sync only returns presence for users in rooms + // you're actually joined to. + // in order to be sure to get presence for all of the users in the + // peeked room, we handle presence explicitly here. This may result + // in duplicate presence events firing for some users, which is a + // performance drain, but such is life. + // XXX: copypasted from /sync until we can kill this minging v1 stuff. + res.chunk.filter(function (e) { + return e.type === "m.presence"; + }).map(this.client.getEventMapper()).forEach(presenceEvent => { + let user = this.client.store.getUser(presenceEvent.getContent().user_id); if (user) { user.setPresenceEvent(presenceEvent); } else { - user = createNewUser(client, presenceEvent.getContent().user_id); + user = _user.User.createUser(presenceEvent.getContent().user_id, this.client); user.setPresenceEvent(presenceEvent); - client.store.storeUser(user); + this.client.store.storeUser(user); } - - client.emit("event", presenceEvent); + this.client.emit(_client.ClientEvent.Event, presenceEvent); }); - } // set the pagination token before adding the events in case people - // fire off pagination requests in response to the Room.timeline - // events. - - if (response.messages.start) { - peekRoom.oldState.paginationToken = response.messages.start; - } // set the state of the room to as it was after the timeline executes - - - peekRoom.oldState.setStateEvents(oldStateEvents); - peekRoom.currentState.setStateEvents(stateEvents); - - self._resolveInvites(peekRoom); - - peekRoom.recalculate(); // roll backwards to diverge old state. addEventsToTimeline - // will overwrite the pagination token, so make sure it overwrites - // it with the right thing. - - peekRoom.addEventsToTimeline(messages.reverse(), true, peekRoom.getLiveTimeline(), response.messages.start); - client.store.storeRoom(peekRoom); - client.emit("Room", peekRoom); - - self._peekPoll(peekRoom); - - return peekRoom; - }); -}; -/** - * Stop polling for updates in the peeked room. NOPs if there is no room being - * peeked. - */ - - -SyncApi.prototype.stopPeeking = function () { - this._peekRoomId = null; -}; -/** - * Do a peek room poll. - * @param {Room} peekRoom - * @param {string} token from= token - */ - - -SyncApi.prototype._peekPoll = function (peekRoom, token) { - if (this._peekRoomId !== peekRoom.roomId) { - debuglog("Stopped peeking in room %s", peekRoom.roomId); - return; - } - - const self = this; // FIXME: gut wrenching; hard-coded timeout values - - this.client._http.authedRequest(undefined, "GET", "/events", { - room_id: peekRoom.roomId, - timeout: 30 * 1000, - from: token - }, undefined, 50 * 1000).then(function (res) { - if (self._peekRoomId !== peekRoom.roomId) { - debuglog("Stopped peeking in room %s", peekRoom.roomId); - return; - } // We have a problem that we get presence both from /events and /sync - // however, /sync only returns presence for users in rooms - // you're actually joined to. - // in order to be sure to get presence for all of the users in the - // peeked room, we handle presence explicitly here. This may result - // in duplicate presence events firing for some users, which is a - // performance drain, but such is life. - // XXX: copypasted from /sync until we can kill this minging v1 stuff. - - - res.chunk.filter(function (e) { - return e.type === "m.presence"; - }).map(self.client.getEventMapper()).forEach(function (presenceEvent) { - let user = self.client.store.getUser(presenceEvent.getContent().user_id); - - if (user) { - user.setPresenceEvent(presenceEvent); - } else { - user = createNewUser(self.client, presenceEvent.getContent().user_id); - user.setPresenceEvent(presenceEvent); - self.client.store.storeUser(user); - } - - self.client.emit("event", presenceEvent); - }); // strip out events which aren't for the given room_id (e.g presence) - // and also ephemeral events (which we're assuming is anything without - // and event ID because the /events API doesn't separate them). - - const events = res.chunk.filter(function (e) { - return e.room_id === peekRoom.roomId && e.event_id; - }).map(self.client.getEventMapper()); - peekRoom.addLiveEvents(events); - - self._peekPoll(peekRoom, res.end); - }, function (err) { - _logger.logger.error("[%s] Peek poll failed: %s", peekRoom.roomId, err); - - setTimeout(function () { - self._peekPoll(peekRoom, token); - }, 30 * 1000); - }); -}; -/** - * Returns the current state of this sync object - * @see module:client~MatrixClient#event:"sync" - * @return {?String} - */ - - -SyncApi.prototype.getSyncState = function () { - return this._syncState; -}; -/** - * Returns the additional data object associated with - * the current sync state, or null if there is no - * such data. - * Sync errors, if available, are put in the 'error' key of - * this object. - * @return {?Object} - */ - - -SyncApi.prototype.getSyncStateData = function () { - return this._syncStateData; -}; - -SyncApi.prototype.recoverFromSyncStartupError = async function (savedSyncPromise, err) { - // Wait for the saved sync to complete - we send the pushrules and filter requests - // before the saved sync has finished so they can run in parallel, but only process - // the results after the saved sync is done. Equivalently, we wait for it to finish - // before reporting failures from these functions. - await savedSyncPromise; - - const keepaliveProm = this._startKeepAlives(); - - this._updateSyncState("ERROR", { - error: err - }); - - await keepaliveProm; -}; -/** - * Is the lazy loading option different than in previous session? - * @param {bool} lazyLoadMembers current options for lazy loading - * @return {bool} whether or not the option has changed compared to the previous session */ - - -SyncApi.prototype._wasLazyLoadingToggled = async function (lazyLoadMembers) { - lazyLoadMembers = !!lazyLoadMembers; // assume it was turned off before - // if we don't know any better - - let lazyLoadMembersBefore = false; - const isStoreNewlyCreated = await this.client.store.isNewlyCreated(); - - if (!isStoreNewlyCreated) { - const prevClientOptions = await this.client.store.getClientOptions(); - - if (prevClientOptions) { - lazyLoadMembersBefore = !!prevClientOptions.lazyLoadMembers; - } - - return lazyLoadMembersBefore !== lazyLoadMembers; - } - - return false; -}; - -SyncApi.prototype._shouldAbortSync = function (error) { - if (error.errcode === "M_UNKNOWN_TOKEN") { - // The logout already happened, we just need to stop. - _logger.logger.warn("Token no longer valid - assuming logout"); - - this.stop(); - return true; - } - - return false; -}; -/** - * Main entry point - */ - - -SyncApi.prototype.sync = function () { - const client = this.client; - const self = this; - this._running = true; - - if (global.document) { - this._onOnlineBound = this._onOnline.bind(this); - global.document.addEventListener("online", this._onOnlineBound, false); - } - - let savedSyncPromise = Promise.resolve(); - let savedSyncToken = null; // We need to do one-off checks before we can begin the /sync loop. - // These are: - // 1) We need to get push rules so we can check if events should bing as we get - // them from /sync. - // 2) We need to get/create a filter which we can use for /sync. - // 3) We need to check the lazy loading option matches what was used in the - // stored sync. If it doesn't, we can't use the stored sync. - - async function getPushRules() { - try { - debuglog("Getting push rules..."); - const result = await client.getPushRules(); - debuglog("Got push rules"); - client.pushRules = result; - } catch (err) { - _logger.logger.error("Getting push rules failed", err); - - if (self._shouldAbortSync(err)) return; // wait for saved sync to complete before doing anything else, - // otherwise the sync state will end up being incorrect - - debuglog("Waiting for saved sync before retrying push rules..."); - await self.recoverFromSyncStartupError(savedSyncPromise, err); - getPushRules(); - return; - } - - checkLazyLoadStatus(); // advance to the next stage - } - - function buildDefaultFilter() { - const filter = new _filter.Filter(client.credentials.userId); - filter.setTimelineLimit(self.opts.initialSyncLimit); - return filter; - } - - const checkLazyLoadStatus = async () => { - debuglog("Checking lazy load status..."); - - if (this.opts.lazyLoadMembers && client.isGuest()) { - this.opts.lazyLoadMembers = false; - } - - if (this.opts.lazyLoadMembers) { - debuglog("Checking server lazy load support..."); - const supported = await client.doesServerSupportLazyLoading(); - - if (supported) { - debuglog("Enabling lazy load on sync filter..."); - - if (!this.opts.filter) { - this.opts.filter = buildDefaultFilter(); - } - - this.opts.filter.setLazyLoadMembers(true); - } else { - debuglog("LL: lazy loading requested but not supported " + "by server, so disabling"); - this.opts.lazyLoadMembers = false; - } - } // need to vape the store when enabling LL and wasn't enabled before - - - debuglog("Checking whether lazy loading has changed in store..."); - const shouldClear = await this._wasLazyLoadingToggled(this.opts.lazyLoadMembers); - - if (shouldClear) { - this._storeIsInvalid = true; - const reason = _errors.InvalidStoreError.TOGGLED_LAZY_LOADING; - const error = new _errors.InvalidStoreError(reason, !!this.opts.lazyLoadMembers); - - this._updateSyncState("ERROR", { - error - }); // bail out of the sync loop now: the app needs to respond to this error. - // we leave the state as 'ERROR' which isn't great since this normally means - // we're retrying. The client must be stopped before clearing the stores anyway - // so the app should stop the client, clear the store and start it again. - - - _logger.logger.warn("InvalidStoreError: store is not usable: stopping sync."); - - return; - } - - if (this.opts.lazyLoadMembers && this.opts.crypto) { - this.opts.crypto.enableLazyLoading(); - } - - try { - debuglog("Storing client options..."); - await this.client._storeClientOptions(); - debuglog("Stored client options"); - } catch (err) { - _logger.logger.error("Storing client options failed", err); - - throw err; - } - - getFilter(); // Now get the filter and start syncing - }; - - async function getFilter() { - debuglog("Getting filter..."); - let filter; - - if (self.opts.filter) { - filter = self.opts.filter; - } else { - filter = buildDefaultFilter(); - } - - let filterId; - - try { - filterId = await client.getOrCreateFilter(getFilterName(client.credentials.userId), filter); - } catch (err) { - _logger.logger.error("Getting filter failed", err); - - if (self._shouldAbortSync(err)) return; // wait for saved sync to complete before doing anything else, - // otherwise the sync state will end up being incorrect - - debuglog("Waiting for saved sync before retrying filter..."); - await self.recoverFromSyncStartupError(savedSyncPromise, err); - getFilter(); - return; - } // reset the notifications timeline to prepare it to paginate from - // the current point in time. - // The right solution would be to tie /sync pagination tokens into - // /notifications API somehow. - - - client.resetNotifTimelineSet(); - - if (self._currentSyncRequest === null) { - // Send this first sync request here so we can then wait for the saved - // sync data to finish processing before we process the results of this one. - debuglog("Sending first sync request..."); - self._currentSyncRequest = self._doSyncRequest({ - filterId - }, savedSyncToken); - } // Now wait for the saved sync to finish... - - - debuglog("Waiting for saved sync before starting sync processing..."); - await savedSyncPromise; - - self._sync({ - filterId + // strip out events which aren't for the given room_id (e.g presence) + // and also ephemeral events (which we're assuming is anything without + // and event ID because the /events API doesn't separate them). + const events = res.chunk.filter(function (e) { + return e.room_id === peekRoom.roomId && e.event_id; + }).map(this.client.getEventMapper()); + await peekRoom.addLiveEvents(events); + this.peekPoll(peekRoom, res.end); + }, err => { + _logger.logger.error("[%s] Peek poll failed: %s", peekRoom.roomId, err); + setTimeout(() => { + this.peekPoll(peekRoom, token); + }, 30 * 1000); }); } - if (client.isGuest()) { - // no push rules for guests, no access to POST filter for guests. - self._sync({}); - } else { + /** + * Returns the current state of this sync object + * @see MatrixClient#event:"sync" + */ + getSyncState() { + return this.syncState; + } + + /** + * Returns the additional data object associated with + * the current sync state, or null if there is no + * such data. + * Sync errors, if available, are put in the 'error' key of + * this object. + */ + getSyncStateData() { + var _this$syncStateData; + return (_this$syncStateData = this.syncStateData) !== null && _this$syncStateData !== void 0 ? _this$syncStateData : null; + } + async recoverFromSyncStartupError(savedSyncPromise, error) { + // Wait for the saved sync to complete - we send the pushrules and filter requests + // before the saved sync has finished so they can run in parallel, but only process + // the results after the saved sync is done. Equivalently, we wait for it to finish + // before reporting failures from these functions. + await savedSyncPromise; + const keepaliveProm = this.startKeepAlives(); + this.updateSyncState(SyncState.Error, { + error + }); + await keepaliveProm; + } + shouldAbortSync(error) { + if (error.errcode === "M_UNKNOWN_TOKEN") { + // The logout already happened, we just need to stop. + _logger.logger.warn("Token no longer valid - assuming logout"); + this.stop(); + this.updateSyncState(SyncState.Error, { + error + }); + return true; + } + return false; + } + /** + * Main entry point + */ + async sync() { + var _global$window, _global$window$addEve; + this.running = true; + this.abortController = new AbortController(); + (_global$window = global.window) === null || _global$window === void 0 || (_global$window$addEve = _global$window.addEventListener) === null || _global$window$addEve === void 0 || _global$window$addEve.call(_global$window, "online", this.onOnline, false); + if (this.client.isGuest()) { + // no push rules for guests, no access to POST filter for guests. + return this.doSync({}); + } + // Pull the saved sync token out first, before the worker starts sending // all the sync data which could take a while. This will let us send our // first incremental sync request before we've processed our saved data. debuglog("Getting saved sync token..."); - savedSyncPromise = client.store.getSavedSyncToken().then(tok => { + const savedSyncTokenPromise = this.client.store.getSavedSyncToken().then(tok => { debuglog("Got saved sync token"); - savedSyncToken = tok; - debuglog("Getting saved sync..."); - return client.store.getSavedSync(); - }).then(savedSync => { + return tok; + }); + this.savedSyncPromise = this.client.store.getSavedSync().then(savedSync => { debuglog(`Got reply from saved sync, exists? ${!!savedSync}`); - if (savedSync) { - return self._syncFromCache(savedSync); + return this.syncFromCache(savedSync); } }).catch(err => { _logger.logger.error("Getting saved sync failed", err); - }); // Now start the first incremental sync request: this can also + }); + + // We need to do one-off checks before we can begin the /sync loop. + // These are: + // 1) We need to get push rules so we can check if events should bing as we get + // them from /sync. + // 2) We need to get/create a filter which we can use for /sync. + // 3) We need to prepare lazy loading for sync + // 4) We need to store the client options + + // Now start the first incremental sync request: this can also // take a while so if we set it going now, we can wait for it // to finish while we process our saved sync data. + await this.getPushRules(); + await this.prepareLazyLoadingForSync(); + await this.storeClientOptions(); + const { + filterId, + filter + } = await this.getFilter(); + if (!filter) return; // bail, getFilter failed - getPushRules(); - } -}; -/** - * Stops the sync object from syncing. - */ + // reset the notifications timeline to prepare it to paginate from + // the current point in time. + // The right solution would be to tie /sync pagination tokens into + // /notifications API somehow. + this.client.resetNotifTimelineSet(); + if (!this.currentSyncRequest) { + let firstSyncFilter = filterId; + const savedSyncToken = await savedSyncTokenPromise; + if (savedSyncToken) { + debuglog("Sending first sync request..."); + } else { + debuglog("Sending initial sync request..."); + const initialFilter = this.buildDefaultFilter(); + initialFilter.setDefinition(filter.getDefinition()); + initialFilter.setTimelineLimit(this.opts.initialSyncLimit); + // Use an inline filter, no point uploading it for a single usage + firstSyncFilter = JSON.stringify(initialFilter.getDefinition()); + } - -SyncApi.prototype.stop = function () { - debuglog("SyncApi.stop"); - - if (global.document) { - global.document.removeEventListener("online", this._onOnlineBound, false); - this._onOnlineBound = undefined; - } - - this._running = false; - - if (this._currentSyncRequest) { - this._currentSyncRequest.abort(); - } - - if (this._keepAliveTimer) { - clearTimeout(this._keepAliveTimer); - this._keepAliveTimer = null; - } -}; -/** - * Retry a backed off syncing request immediately. This should only be used when - * the user explicitly attempts to retry their lost connection. - * @return {boolean} True if this resulted in a request being retried. - */ - - -SyncApi.prototype.retryImmediately = function () { - if (!this._connectionReturnedDefer) { - return false; - } - - this._startKeepAlives(0); - - return true; -}; -/** - * Process a single set of cached sync data. - * @param {Object} savedSync a saved sync that was persisted by a store. This - * should have been acquired via client.store.getSavedSync(). - */ - - -SyncApi.prototype._syncFromCache = async function (savedSync) { - debuglog("sync(): not doing HTTP hit, instead returning stored /sync data"); - const nextSyncToken = savedSync.nextBatch; // Set sync token for future incremental syncing - - this.client.store.setSyncToken(nextSyncToken); // No previous sync, set old token to null - - const syncEventData = { - oldSyncToken: null, - nextSyncToken, - catchingUp: false, - fromCache: true - }; - const data = { - next_batch: nextSyncToken, - rooms: savedSync.roomsData, - groups: savedSync.groupsData, - account_data: { - events: savedSync.accountData - } - }; - - try { - await this._processSyncResponse(syncEventData, data); - } catch (e) { - _logger.logger.error("Error processing cached sync", e.stack || e); - } // Don't emit a prepared if we've bailed because the store is invalid: - // in this case the client will not be usable until stopped & restarted - // so this would be useless and misleading. - - - if (!this._storeIsInvalid) { - this._updateSyncState("PREPARED", syncEventData); - } -}; -/** - * Invoke me to do /sync calls - * @param {Object} syncOptions - * @param {string} syncOptions.filterId - * @param {boolean} syncOptions.hasSyncedBefore - */ - - -SyncApi.prototype._sync = async function (syncOptions) { - const client = this.client; - - if (!this._running) { - debuglog("Sync no longer running: exiting."); - - if (this._connectionReturnedDefer) { - this._connectionReturnedDefer.reject(); - - this._connectionReturnedDefer = null; + // Send this first sync request here so we can then wait for the saved + // sync data to finish processing before we process the results of this one. + this.currentSyncRequest = this.doSyncRequest({ + filter: firstSyncFilter + }, savedSyncToken); } - this._updateSyncState("STOPPED"); - - return; + // Now wait for the saved sync to finish... + debuglog("Waiting for saved sync before starting sync processing..."); + await this.savedSyncPromise; + // process the first sync request and continue syncing with the normal filterId + return this.doSync({ + filter: filterId + }); } - const syncToken = client.store.getSyncToken(); - let data; + /** + * Stops the sync object from syncing. + */ + stop() { + var _global$window2, _global$window2$remov, _this$abortController2; + debuglog("SyncApi.stop"); + // It is necessary to check for the existance of + // global.window AND global.window.removeEventListener. + // Some platforms (e.g. React Native) register global.window, + // but do not have global.window.removeEventListener. + (_global$window2 = global.window) === null || _global$window2 === void 0 || (_global$window2$remov = _global$window2.removeEventListener) === null || _global$window2$remov === void 0 || _global$window2$remov.call(_global$window2, "online", this.onOnline, false); + this.running = false; + (_this$abortController2 = this.abortController) === null || _this$abortController2 === void 0 || _this$abortController2.abort(); + if (this.keepAliveTimer) { + clearTimeout(this.keepAliveTimer); + this.keepAliveTimer = undefined; + } + } - try { - //debuglog('Starting sync since=' + syncToken); - if (this._currentSyncRequest === null) { - this._currentSyncRequest = this._doSyncRequest(syncOptions, syncToken); + /** + * Retry a backed off syncing request immediately. This should only be used when + * the user explicitly attempts to retry their lost connection. + * @returns True if this resulted in a request being retried. + */ + retryImmediately() { + if (!this.connectionReturnedDefer) { + return false; + } + this.startKeepAlives(0); + return true; + } + /** + * Process a single set of cached sync data. + * @param savedSync - a saved sync that was persisted by a store. This + * should have been acquired via client.store.getSavedSync(). + */ + async syncFromCache(savedSync) { + debuglog("sync(): not doing HTTP hit, instead returning stored /sync data"); + const nextSyncToken = savedSync.nextBatch; + + // Set sync token for future incremental syncing + this.client.store.setSyncToken(nextSyncToken); + + // No previous sync, set old token to null + const syncEventData = { + nextSyncToken, + catchingUp: false, + fromCache: true + }; + const data = { + next_batch: nextSyncToken, + rooms: savedSync.roomsData, + account_data: { + events: savedSync.accountData + } + }; + try { + await this.processSyncResponse(syncEventData, data); + } catch (e) { + _logger.logger.error("Error processing cached sync", e); } - data = await this._currentSyncRequest; - } catch (e) { - this._onSyncError(e, syncOptions); - - return; - } finally { - this._currentSyncRequest = null; - } //debuglog('Completed sync, next_batch=' + data.next_batch); - // set the sync token NOW *before* processing the events. We do this so - // if something barfs on an event we can skip it rather than constantly - // polling with the same token. - - - client.store.setSyncToken(data.next_batch); // Reset after a successful sync - - this._failedSyncCount = 0; - await client.store.setSyncData(data); - const syncEventData = { - oldSyncToken: syncToken, - nextSyncToken: data.next_batch, - catchingUp: this._catchingUp - }; - - if (this.opts.crypto) { - // tell the crypto module we're about to process a sync - // response - await this.opts.crypto.onSyncWillProcess(syncEventData); - } - - try { - await this._processSyncResponse(syncEventData, data); - } catch (e) { - // log the exception with stack if we have it, else fall back - // to the plain description - _logger.logger.error("Caught /sync error", e.stack || e); // Emit the exception for client handling - - - this.client.emit("sync.unexpectedError", e); - } // update this as it may have changed - - - syncEventData.catchingUp = this._catchingUp; // emit synced events - - if (!syncOptions.hasSyncedBefore) { - this._updateSyncState("PREPARED", syncEventData); - - syncOptions.hasSyncedBefore = true; - } // tell the crypto module to do its processing. It may block (to do a - // /keys/changes request). - - - if (this.opts.crypto) { - await this.opts.crypto.onSyncCompleted(syncEventData); - } // keep emitting SYNCING -> SYNCING for clients who want to do bulk updates - - - this._updateSyncState("SYNCING", syncEventData); - - if (client.store.wantsSave()) { - // We always save the device list (if it's dirty) before saving the sync data: - // this means we know the saved device list data is at least as fresh as the - // stored sync data which means we don't have to worry that we may have missed - // device changes. We can also skip the delay since we're not calling this very - // frequently (and we don't really want to delay the sync for it). - if (this.opts.crypto) { - await this.opts.crypto.saveDeviceList(0); - } // tell databases that everything is now in a consistent state and can be saved. - - - client.store.save(); - } // Begin next sync - - - this._sync(syncOptions); -}; - -SyncApi.prototype._doSyncRequest = function (syncOptions, syncToken) { - const qps = this._getSyncParams(syncOptions, syncToken); - - return this.client._http.authedRequest(undefined, "GET", "/sync", qps, undefined, qps.timeout + BUFFER_PERIOD_MS); -}; - -SyncApi.prototype._getSyncParams = function (syncOptions, syncToken) { - let pollTimeout = this.opts.pollTimeout; - - if (this.getSyncState() !== 'SYNCING' || this._catchingUp) { - // unless we are happily syncing already, we want the server to return - // as quickly as possible, even if there are no events queued. This - // serves two purposes: - // - // * When the connection dies, we want to know asap when it comes back, - // so that we can hide the error from the user. (We don't want to - // have to wait for an event or a timeout). - // - // * We want to know if the server has any to_device messages queued up - // for us. We do that by calling it with a zero timeout until it - // doesn't give us any more to_device messages. - this._catchingUp = true; - pollTimeout = 0; - } - - let filterId = syncOptions.filterId; - - if (this.client.isGuest() && !filterId) { - filterId = this._getGuestFilter(); - } - - const qps = { - filter: filterId, - timeout: pollTimeout - }; - - if (this.opts.disablePresence) { - qps.set_presence = "offline"; - } - - if (syncToken) { - qps.since = syncToken; - } else { - // use a cachebuster for initialsyncs, to make sure that - // we don't get a stale sync - // (https://github.com/vector-im/vector-web/issues/1354) - qps._cacheBuster = Date.now(); - } - - if (this.getSyncState() == 'ERROR' || this.getSyncState() == 'RECONNECTING') { - // we think the connection is dead. If it comes back up, we won't know - // about it till /sync returns. If the timeout= is high, this could - // be a long time. Set it to 0 when doing retries so we don't have to wait - // for an event or a timeout before emiting the SYNCING event. - qps.timeout = 0; - } - - return qps; -}; - -SyncApi.prototype._onSyncError = function (err, syncOptions) { - if (!this._running) { - debuglog("Sync no longer running: exiting"); - - if (this._connectionReturnedDefer) { - this._connectionReturnedDefer.reject(); - - this._connectionReturnedDefer = null; + // Don't emit a prepared if we've bailed because the store is invalid: + // in this case the client will not be usable until stopped & restarted + // so this would be useless and misleading. + if (!this.storeIsInvalid) { + this.updateSyncState(SyncState.Prepared, syncEventData); } - - this._updateSyncState("STOPPED"); - - return; } - _logger.logger.error("/sync error %s", err); + /** + * Invoke me to do /sync calls + */ + async doSync(syncOptions) { + while (this.running) { + const syncToken = this.client.store.getSyncToken(); + let data; + try { + if (!this.currentSyncRequest) { + this.currentSyncRequest = this.doSyncRequest(syncOptions, syncToken); + } + data = await this.currentSyncRequest; + } catch (e) { + const abort = await this.onSyncError(e); + if (abort) return; + continue; + } finally { + this.currentSyncRequest = undefined; + } - _logger.logger.error(err); + // set the sync token NOW *before* processing the events. We do this so + // if something barfs on an event we can skip it rather than constantly + // polling with the same token. + this.client.store.setSyncToken(data.next_batch); - if (this._shouldAbortSync(err)) { - return; + // Reset after a successful sync + this.failedSyncCount = 0; + const syncEventData = { + oldSyncToken: syncToken !== null && syncToken !== void 0 ? syncToken : undefined, + nextSyncToken: data.next_batch, + catchingUp: this.catchingUp + }; + if (this.syncOpts.crypto) { + // tell the crypto module we're about to process a sync + // response + await this.syncOpts.crypto.onSyncWillProcess(syncEventData); + } + try { + await this.processSyncResponse(syncEventData, data); + } catch (e) { + // log the exception with stack if we have it, else fall back + // to the plain description + _logger.logger.error("Caught /sync error", e); + + // Emit the exception for client handling + this.client.emit(_client.ClientEvent.SyncUnexpectedError, e); + } + + // Persist after processing as `unsigned` may get mutated + // with an `org.matrix.msc4023.thread_id` + await this.client.store.setSyncData(data); + + // update this as it may have changed + syncEventData.catchingUp = this.catchingUp; + + // emit synced events + if (!syncOptions.hasSyncedBefore) { + this.updateSyncState(SyncState.Prepared, syncEventData); + syncOptions.hasSyncedBefore = true; + } + + // tell the crypto module to do its processing. It may block (to do a + // /keys/changes request). + if (this.syncOpts.cryptoCallbacks) { + await this.syncOpts.cryptoCallbacks.onSyncCompleted(syncEventData); + } + + // keep emitting SYNCING -> SYNCING for clients who want to do bulk updates + this.updateSyncState(SyncState.Syncing, syncEventData); + if (this.client.store.wantsSave()) { + // We always save the device list (if it's dirty) before saving the sync data: + // this means we know the saved device list data is at least as fresh as the + // stored sync data which means we don't have to worry that we may have missed + // device changes. We can also skip the delay since we're not calling this very + // frequently (and we don't really want to delay the sync for it). + if (this.syncOpts.crypto) { + await this.syncOpts.crypto.saveDeviceList(0); + } + + // tell databases that everything is now in a consistent state and can be saved. + await this.client.store.save(); + } + } + if (!this.running) { + debuglog("Sync no longer running: exiting."); + if (this.connectionReturnedDefer) { + this.connectionReturnedDefer.reject(); + this.connectionReturnedDefer = undefined; + } + this.updateSyncState(SyncState.Stopped); + } + } + doSyncRequest(syncOptions, syncToken) { + var _this$abortController3; + const qps = this.getSyncParams(syncOptions, syncToken); + return this.client.http.authedRequest(_httpApi.Method.Get, "/sync", qps, undefined, { + localTimeoutMs: qps.timeout + BUFFER_PERIOD_MS, + abortSignal: (_this$abortController3 = this.abortController) === null || _this$abortController3 === void 0 ? void 0 : _this$abortController3.signal + }); + } + getSyncParams(syncOptions, syncToken) { + let timeout = this.opts.pollTimeout; + if (this.getSyncState() !== SyncState.Syncing || this.catchingUp) { + // unless we are happily syncing already, we want the server to return + // as quickly as possible, even if there are no events queued. This + // serves two purposes: + // + // * When the connection dies, we want to know asap when it comes back, + // so that we can hide the error from the user. (We don't want to + // have to wait for an event or a timeout). + // + // * We want to know if the server has any to_device messages queued up + // for us. We do that by calling it with a zero timeout until it + // doesn't give us any more to_device messages. + this.catchingUp = true; + timeout = 0; + } + let filter = syncOptions.filter; + if (this.client.isGuest() && !filter) { + filter = this.getGuestFilter(); + } + const qps = { + filter, + timeout + }; + if (this.opts.disablePresence) { + qps.set_presence = SetPresence.Offline; + } else if (this.presence !== undefined) { + qps.set_presence = this.presence; + } + if (syncToken) { + qps.since = syncToken; + } else { + // use a cachebuster for initialsyncs, to make sure that + // we don't get a stale sync + // (https://github.com/vector-im/vector-web/issues/1354) + qps._cacheBuster = Date.now(); + } + if ([SyncState.Reconnecting, SyncState.Error].includes(this.getSyncState())) { + // we think the connection is dead. If it comes back up, we won't know + // about it till /sync returns. If the timeout= is high, this could + // be a long time. Set it to 0 when doing retries so we don't have to wait + // for an event or a timeout before emiting the SYNCING event. + qps.timeout = 0; + } + return qps; } - this._failedSyncCount++; + /** + * Specify the set_presence value to be used for subsequent calls to the Sync API. + * @param presence - the presence to specify to set_presence of sync calls + */ + setPresence(presence) { + this.presence = presence; + } + async onSyncError(err) { + if (!this.running) { + debuglog("Sync no longer running: exiting"); + if (this.connectionReturnedDefer) { + this.connectionReturnedDefer.reject(); + this.connectionReturnedDefer = undefined; + } + this.updateSyncState(SyncState.Stopped); + return true; // abort + } + _logger.logger.error("/sync error %s", err); + if (this.shouldAbortSync(err)) { + return true; // abort + } + this.failedSyncCount++; + _logger.logger.log("Number of consecutive failed sync requests:", this.failedSyncCount); + debuglog("Starting keep-alive"); + // Note that we do *not* mark the sync connection as + // lost yet: we only do this if a keepalive poke + // fails, since long lived HTTP connections will + // go away sometimes and we shouldn't treat this as + // erroneous. We set the state to 'reconnecting' + // instead, so that clients can observe this state + // if they wish. + const keepAlivePromise = this.startKeepAlives(); + this.currentSyncRequest = undefined; + // Transition from RECONNECTING to ERROR after a given number of failed syncs + this.updateSyncState(this.failedSyncCount >= FAILED_SYNC_ERROR_THRESHOLD ? SyncState.Error : SyncState.Reconnecting, { + error: err + }); + const connDidFail = await keepAlivePromise; - _logger.logger.log('Number of consecutive failed sync requests:', this._failedSyncCount); - - debuglog("Starting keep-alive"); // Note that we do *not* mark the sync connection as - // lost yet: we only do this if a keepalive poke - // fails, since long lived HTTP connections will - // go away sometimes and we shouldn't treat this as - // erroneous. We set the state to 'reconnecting' - // instead, so that clients can observe this state - // if they wish. - - this._startKeepAlives().then(connDidFail => { // Only emit CATCHUP if we detected a connectivity error: if we didn't, // it's quite likely the sync will fail again for the same reason and we // want to stay in ERROR rather than keep flip-flopping between ERROR // and CATCHUP. - if (connDidFail && this.getSyncState() === 'ERROR') { - this._updateSyncState("CATCHUP", { - oldSyncToken: null, - nextSyncToken: null, + if (connDidFail && this.getSyncState() === SyncState.Error) { + this.updateSyncState(SyncState.Catchup, { catchingUp: true }); } - - this._sync(syncOptions); - }); - - this._currentSyncRequest = null; // Transition from RECONNECTING to ERROR after a given number of failed syncs - - this._updateSyncState(this._failedSyncCount >= FAILED_SYNC_ERROR_THRESHOLD ? "ERROR" : "RECONNECTING", { - error: err - }); -}; -/** - * Process data returned from a sync response and propagate it - * into the model objects - * - * @param {Object} syncEventData Object containing sync tokens associated with this sync - * @param {Object} data The response from /sync - */ - - -SyncApi.prototype._processSyncResponse = async function (syncEventData, data) { - const client = this.client; - const self = this; // data looks like: - // { - // next_batch: $token, - // presence: { events: [] }, - // account_data: { events: [] }, - // device_lists: { changed: ["@user:server", ... ]}, - // to_device: { events: [] }, - // device_one_time_keys_count: { signed_curve25519: 42 }, - // rooms: { - // invite: { - // $roomid: { - // invite_state: { events: [] } - // } - // }, - // join: { - // $roomid: { - // state: { events: [] }, - // timeline: { events: [], prev_batch: $token, limited: true }, - // ephemeral: { events: [] }, - // summary: { - // m.heroes: [ $user_id ], - // m.joined_member_count: $count, - // m.invited_member_count: $count - // }, - // account_data: { events: [] }, - // unread_notifications: { - // highlight_count: 0, - // notification_count: 0, - // } - // } - // }, - // leave: { - // $roomid: { - // state: { events: [] }, - // timeline: { events: [], prev_batch: $token } - // } - // } - // }, - // groups: { - // invite: { - // $groupId: { - // inviter: $inviter, - // profile: { - // avatar_url: $avatarUrl, - // name: $groupName, - // }, - // }, - // }, - // join: {}, - // leave: {}, - // }, - // } - // TODO-arch: - // - Each event we pass through needs to be emitted via 'event', can we - // do this in one place? - // - The isBrandNewRoom boilerplate is boilerplatey. - // handle presence events (User objects) - - if (data.presence && utils.isArray(data.presence.events)) { - data.presence.events.map(client.getEventMapper()).forEach(function (presenceEvent) { - let user = client.store.getUser(presenceEvent.getSender()); - - if (user) { - user.setPresenceEvent(presenceEvent); - } else { - user = createNewUser(client, presenceEvent.getSender()); - user.setPresenceEvent(presenceEvent); - client.store.storeUser(user); - } - - client.emit("event", presenceEvent); - }); - } // handle non-room account_data - - - if (data.account_data && utils.isArray(data.account_data.events)) { - const events = data.account_data.events.map(client.getEventMapper()); - const prevEventsMap = events.reduce((m, c) => { - m[c.getId()] = client.store.getAccountData(c.getType()); - return m; - }, {}); - client.store.storeAccountDataEvents(events); - events.forEach(function (accountDataEvent) { - // Honour push rules that come down the sync stream but also - // honour push rules that were previously cached. Base rules - // will be updated when we receive push rules via getPushRules - // (see SyncApi.prototype.sync) before syncing over the network. - if (accountDataEvent.getType() === 'm.push_rules') { - const rules = accountDataEvent.getContent(); - client.pushRules = _pushprocessor.PushProcessor.rewriteDefaultRules(rules); - } - - const prevEvent = prevEventsMap[accountDataEvent.getId()]; - client.emit("accountData", accountDataEvent, prevEvent); - return accountDataEvent; - }); - } // handle to-device events - - - if (data.to_device && utils.isArray(data.to_device.events) && data.to_device.events.length > 0) { - const cancelledKeyVerificationTxns = []; - data.to_device.events.map(client.getEventMapper()).map(toDeviceEvent => { - // map is a cheap inline forEach - // We want to flag m.key.verification.start events as cancelled - // if there's an accompanying m.key.verification.cancel event, so - // we pull out the transaction IDs from the cancellation events - // so we can flag the verification events as cancelled in the loop - // below. - if (toDeviceEvent.getType() === "m.key.verification.cancel") { - const txnId = toDeviceEvent.getContent()['transaction_id']; - - if (txnId) { - cancelledKeyVerificationTxns.push(txnId); - } - } // as mentioned above, .map is a cheap inline forEach, so return - // the unmodified event. - - - return toDeviceEvent; - }).forEach(function (toDeviceEvent) { - const content = toDeviceEvent.getContent(); - - if (toDeviceEvent.getType() == "m.room.message" && content.msgtype == "m.bad.encrypted") { - // the mapper already logged a warning. - _logger.logger.log('Ignoring undecryptable to-device event from ' + toDeviceEvent.getSender()); - - return; - } - - if (toDeviceEvent.getType() === "m.key.verification.start" || toDeviceEvent.getType() === "m.key.verification.request") { - const txnId = content['transaction_id']; - - if (cancelledKeyVerificationTxns.includes(txnId)) { - toDeviceEvent.flagCancelled(); - } - } - - client.emit("toDeviceEvent", toDeviceEvent); - }); - } else { - // no more to-device events: we can stop polling with a short timeout. - this._catchingUp = false; + return false; } - if (data.groups) { - if (data.groups.invite) { - this._processGroupSyncEntry(data.groups.invite, 'invite'); - } + /** + * Process data returned from a sync response and propagate it + * into the model objects + * + * @param syncEventData - Object containing sync tokens associated with this sync + * @param data - The response from /sync + */ + async processSyncResponse(syncEventData, data) { + var _data$presence, _data$account_data, _this$syncOpts$crypto2, _data$device_unused_f; + const client = this.client; - if (data.groups.join) { - this._processGroupSyncEntry(data.groups.join, 'join'); - } + // data looks like: + // { + // next_batch: $token, + // presence: { events: [] }, + // account_data: { events: [] }, + // device_lists: { changed: ["@user:server", ... ]}, + // to_device: { events: [] }, + // device_one_time_keys_count: { signed_curve25519: 42 }, + // rooms: { + // invite: { + // $roomid: { + // invite_state: { events: [] } + // } + // }, + // join: { + // $roomid: { + // state: { events: [] }, + // timeline: { events: [], prev_batch: $token, limited: true }, + // ephemeral: { events: [] }, + // summary: { + // m.heroes: [ $user_id ], + // m.joined_member_count: $count, + // m.invited_member_count: $count + // }, + // account_data: { events: [] }, + // unread_notifications: { + // highlight_count: 0, + // notification_count: 0, + // } + // } + // }, + // leave: { + // $roomid: { + // state: { events: [] }, + // timeline: { events: [], prev_batch: $token } + // } + // } + // } + // } - if (data.groups.leave) { - this._processGroupSyncEntry(data.groups.leave, 'leave'); - } - } // the returned json structure is a bit crap, so make it into a - // nicer form (array) after applying sanity to make sure we don't fail - // on missing keys (on the off chance) - - - let inviteRooms = []; - let joinRooms = []; - let leaveRooms = []; - - if (data.rooms) { - if (data.rooms.invite) { - inviteRooms = this._mapSyncResponseToRoomArray(data.rooms.invite); - } - - if (data.rooms.join) { - joinRooms = this._mapSyncResponseToRoomArray(data.rooms.join); - } - - if (data.rooms.leave) { - leaveRooms = this._mapSyncResponseToRoomArray(data.rooms.leave); - } - } - - this._notifEvents = []; // Handle invites - - inviteRooms.forEach(function (inviteObj) { - const room = inviteObj.room; - - const stateEvents = self._mapSyncEventsFormat(inviteObj.invite_state, room); - - self._processRoomEvents(room, stateEvents); - - if (inviteObj.isBrandNewRoom) { - room.recalculate(); - client.store.storeRoom(room); - client.emit("Room", room); - } - - stateEvents.forEach(function (e) { - client.emit("event", e); - }); - room.updateMyMembership("invite"); - }); // Handle joins - - await utils.promiseMapSeries(joinRooms, async function (joinObj) { - const room = joinObj.room; - - const stateEvents = self._mapSyncEventsFormat(joinObj.state, room); - - const timelineEvents = self._mapSyncEventsFormat(joinObj.timeline, room); - - const ephemeralEvents = self._mapSyncEventsFormat(joinObj.ephemeral); - - const accountDataEvents = self._mapSyncEventsFormat(joinObj.account_data); // we do this first so it's correct when any of the events fire - - - if (joinObj.unread_notifications) { - room.setUnreadNotificationCount('total', joinObj.unread_notifications.notification_count); // We track unread notifications ourselves in encrypted rooms, so don't - // bother setting it here. We trust our calculations better than the - // server's for this case, and therefore will assume that our non-zero - // count is accurate. - - const encrypted = client.isRoomEncrypted(room.roomId); - - if (!encrypted || encrypted && room.getUnreadNotificationCount('highlight') <= 0) { - room.setUnreadNotificationCount('highlight', joinObj.unread_notifications.highlight_count); - } - } - - joinObj.timeline = joinObj.timeline || {}; - - if (joinObj.isBrandNewRoom) { - // set the back-pagination token. Do this *before* adding any - // events so that clients can start back-paginating. - room.getLiveTimeline().setPaginationToken(joinObj.timeline.prev_batch, _eventTimeline.EventTimeline.BACKWARDS); - } else if (joinObj.timeline.limited) { - let limited = true; // we've got a limited sync, so we *probably* have a gap in the - // timeline, so should reset. But we might have been peeking or - // paginating and already have some of the events, in which - // case we just want to append any subsequent events to the end - // of the existing timeline. - // - // This is particularly important in the case that we already have - // *all* of the events in the timeline - in that case, if we reset - // the timeline, we'll end up with an entirely empty timeline, - // which we'll try to paginate but not get any new events (which - // will stop us linking the empty timeline into the chain). - // - - for (let i = timelineEvents.length - 1; i >= 0; i--) { - const eventId = timelineEvents[i].getId(); - - if (room.getTimelineForEvent(eventId)) { - debuglog("Already have event " + eventId + " in limited " + "sync - not resetting"); - limited = false; // we might still be missing some of the events before i; - // we don't want to be adding them to the end of the - // timeline because that would put them out of order. - - timelineEvents.splice(0, i); // XXX: there's a problem here if the skipped part of the - // timeline modifies the state set in stateEvents, because - // we'll end up using the state from stateEvents rather - // than the later state from timelineEvents. We probably - // need to wind stateEvents forward over the events we're - // skipping. - - break; - } - } - - if (limited) { - self._deregisterStateListeners(room); - - room.resetLiveTimeline(joinObj.timeline.prev_batch, self.opts.canResetEntireTimeline(room.roomId) ? null : syncEventData.oldSyncToken); // We have to assume any gap in any timeline is - // reason to stop incrementally tracking notifications and - // reset the timeline. - - client.resetNotifTimelineSet(); - - self._registerStateListeners(room); - } - } - - self._processRoomEvents(room, stateEvents, timelineEvents, syncEventData.fromCache); // set summary after processing events, - // because it will trigger a name calculation - // which needs the room state to be up to date - - - if (joinObj.summary) { - room.setSummary(joinObj.summary); - } // we deliberately don't add ephemeral events to the timeline - - - room.addEphemeralEvents(ephemeralEvents); // we deliberately don't add accountData to the timeline - - room.addAccountData(accountDataEvents); - room.recalculate(); - - if (joinObj.isBrandNewRoom) { - client.store.storeRoom(room); - client.emit("Room", room); - } - - self._processEventsForNotifs(room, timelineEvents); - - async function processRoomEvent(e) { - client.emit("event", e); - - if (e.isState() && e.getType() == "m.room.encryption" && self.opts.crypto) { - await self.opts.crypto.onCryptoEvent(e); - } - - if (e.isState() && e.getType() === "im.vector.user_status") { - let user = client.store.getUser(e.getStateKey()); + // TODO-arch: + // - Each event we pass through needs to be emitted via 'event', can we + // do this in one place? + // - The isBrandNewRoom boilerplate is boilerplatey. + // handle presence events (User objects) + if (Array.isArray((_data$presence = data.presence) === null || _data$presence === void 0 ? void 0 : _data$presence.events)) { + data.presence.events.filter(_utils.noUnsafeEventProps).map(client.getEventMapper()).forEach(function (presenceEvent) { + let user = client.store.getUser(presenceEvent.getSender()); if (user) { - user._unstable_updateStatusMessage(e); + user.setPresenceEvent(presenceEvent); } else { - user = createNewUser(client, e.getStateKey()); - - user._unstable_updateStatusMessage(e); - + user = _user.User.createUser(presenceEvent.getSender(), client); + user.setPresenceEvent(presenceEvent); client.store.storeUser(user); } + client.emit(_client.ClientEvent.Event, presenceEvent); + }); + } + + // handle non-room account_data + if (Array.isArray((_data$account_data = data.account_data) === null || _data$account_data === void 0 ? void 0 : _data$account_data.events)) { + const events = data.account_data.events.filter(_utils.noUnsafeEventProps).map(client.getEventMapper()); + const prevEventsMap = events.reduce((m, c) => { + m[c.getType()] = client.store.getAccountData(c.getType()); + return m; + }, {}); + client.store.storeAccountDataEvents(events); + events.forEach(function (accountDataEvent) { + // Honour push rules that come down the sync stream but also + // honour push rules that were previously cached. Base rules + // will be updated when we receive push rules via getPushRules + // (see sync) before syncing over the network. + if (accountDataEvent.getType() === _event.EventType.PushRules) { + const rules = accountDataEvent.getContent(); + client.setPushRules(rules); + } + const prevEvent = prevEventsMap[accountDataEvent.getType()]; + client.emit(_client.ClientEvent.AccountData, accountDataEvent, prevEvent); + return accountDataEvent; + }); + } + + // handle to-device events + if (data.to_device && Array.isArray(data.to_device.events) && data.to_device.events.length > 0) { + let toDeviceMessages = data.to_device.events.filter(_utils.noUnsafeEventProps); + if (this.syncOpts.cryptoCallbacks) { + toDeviceMessages = await this.syncOpts.cryptoCallbacks.preprocessToDeviceMessages(toDeviceMessages); + } + const cancelledKeyVerificationTxns = []; + toDeviceMessages.map(client.getEventMapper({ + toDevice: true + })).map(toDeviceEvent => { + // map is a cheap inline forEach + // We want to flag m.key.verification.start events as cancelled + // if there's an accompanying m.key.verification.cancel event, so + // we pull out the transaction IDs from the cancellation events + // so we can flag the verification events as cancelled in the loop + // below. + if (toDeviceEvent.getType() === "m.key.verification.cancel") { + const txnId = toDeviceEvent.getContent()["transaction_id"]; + if (txnId) { + cancelledKeyVerificationTxns.push(txnId); + } + } + + // as mentioned above, .map is a cheap inline forEach, so return + // the unmodified event. + return toDeviceEvent; + }).forEach(function (toDeviceEvent) { + const content = toDeviceEvent.getContent(); + if (toDeviceEvent.getType() == "m.room.message" && content.msgtype == "m.bad.encrypted") { + // the mapper already logged a warning. + _logger.logger.log("Ignoring undecryptable to-device event from " + toDeviceEvent.getSender()); + return; + } + if (toDeviceEvent.getType() === "m.key.verification.start" || toDeviceEvent.getType() === "m.key.verification.request") { + const txnId = content["transaction_id"]; + if (cancelledKeyVerificationTxns.includes(txnId)) { + toDeviceEvent.flagCancelled(); + } + } + client.emit(_client.ClientEvent.ToDeviceEvent, toDeviceEvent); + }); + } else { + // no more to-device events: we can stop polling with a short timeout. + this.catchingUp = false; + } + + // the returned json structure is a bit crap, so make it into a + // nicer form (array) after applying sanity to make sure we don't fail + // on missing keys (on the off chance) + let inviteRooms = []; + let joinRooms = []; + let leaveRooms = []; + let knockRooms = []; + if (data.rooms) { + if (data.rooms.invite) { + inviteRooms = this.mapSyncResponseToRoomArray(data.rooms.invite); + } + if (data.rooms.join) { + joinRooms = this.mapSyncResponseToRoomArray(data.rooms.join); + } + if (data.rooms.leave) { + leaveRooms = this.mapSyncResponseToRoomArray(data.rooms.leave); + } + if (data.rooms.knock) { + knockRooms = this.mapSyncResponseToRoomArray(data.rooms.knock); + } + } + this.notifEvents = []; + + // Handle invites + await (0, _utils.promiseMapSeries)(inviteRooms, async inviteObj => { + var _room$currentState$ge; + const room = inviteObj.room; + const stateEvents = this.mapSyncEventsFormat(inviteObj.invite_state, room); + await this.injectRoomEvents(room, stateEvents); + const inviter = (_room$currentState$ge = room.currentState.getStateEvents(_event.EventType.RoomMember, client.getUserId())) === null || _room$currentState$ge === void 0 ? void 0 : _room$currentState$ge.getSender(); + const crypto = client.crypto; + if (crypto) { + const parkedHistory = await crypto.cryptoStore.takeParkedSharedHistory(room.roomId); + for (const parked of parkedHistory) { + if (parked.senderId === inviter) { + await crypto.olmDevice.addInboundGroupSession(room.roomId, parked.senderKey, parked.forwardingCurve25519KeyChain, parked.sessionId, parked.sessionKey, parked.keysClaimed, true, { + sharedHistory: true, + untrusted: true + }); + } + } + } + if (inviteObj.isBrandNewRoom) { + room.recalculate(); + client.store.storeRoom(room); + client.emit(_client.ClientEvent.Room, room); + } else { + // Update room state for invite->reject->invite cycles + room.recalculate(); + } + stateEvents.forEach(function (e) { + client.emit(_client.ClientEvent.Event, e); + }); + }); + + // Handle joins + await (0, _utils.promiseMapSeries)(joinRooms, async joinObj => { + var _joinObj$UNREAD_THREA; + const room = joinObj.room; + const stateEvents = this.mapSyncEventsFormat(joinObj.state, room); + // Prevent events from being decrypted ahead of time + // this helps large account to speed up faster + // room::decryptCriticalEvent is in charge of decrypting all the events + // required for a client to function properly + const events = this.mapSyncEventsFormat(joinObj.timeline, room, false); + const ephemeralEvents = this.mapSyncEventsFormat(joinObj.ephemeral); + const accountDataEvents = this.mapSyncEventsFormat(joinObj.account_data); + const encrypted = this.isRoomEncrypted(room, stateEvents, events); + // We store the server-provided value first so it's correct when any of the events fire. + if (joinObj.unread_notifications) { + /** + * We track unread notifications ourselves in encrypted rooms, so don't + * bother setting it here. We trust our calculations better than the + * server's for this case, and therefore will assume that our non-zero + * count is accurate. + * XXX: this is known faulty as the push rule for `.m.room.encrypted` may be disabled so server + * may issue notification counts of 0 which we wrongly trust. + * https://github.com/matrix-org/matrix-spec-proposals/pull/2654 would fix this + * + * @see import("./client").fixNotificationCountOnDecryption + */ + if (!encrypted || joinObj.unread_notifications.notification_count === 0) { + var _joinObj$unread_notif; + // In an encrypted room, if the room has notifications enabled then it's typical for + // the server to flag all new messages as notifying. However, some push rules calculate + // events as ignored based on their event contents (e.g. ignoring msgtype=m.notice messages) + // so we want to calculate this figure on the client in all cases. + room.setUnreadNotificationCount(_room.NotificationCountType.Total, (_joinObj$unread_notif = joinObj.unread_notifications.notification_count) !== null && _joinObj$unread_notif !== void 0 ? _joinObj$unread_notif : 0); + } + if (!encrypted || room.getUnreadNotificationCount(_room.NotificationCountType.Highlight) <= 0) { + var _joinObj$unread_notif2; + // If the locally stored highlight count is zero, use the server provided value. + room.setUnreadNotificationCount(_room.NotificationCountType.Highlight, (_joinObj$unread_notif2 = joinObj.unread_notifications.highlight_count) !== null && _joinObj$unread_notif2 !== void 0 ? _joinObj$unread_notif2 : 0); + } + } + const unreadThreadNotifications = (_joinObj$UNREAD_THREA = joinObj[_sync.UNREAD_THREAD_NOTIFICATIONS.name]) !== null && _joinObj$UNREAD_THREA !== void 0 ? _joinObj$UNREAD_THREA : joinObj[_sync.UNREAD_THREAD_NOTIFICATIONS.altName]; + if (unreadThreadNotifications) { + // This mirrors the logic above for rooms: take the *total* notification count from + // the server for unencrypted rooms or is it's zero. Any threads not present in this + // object implicitly have zero notifications, so start by clearing the total counts + // for all such threads. + room.resetThreadUnreadNotificationCountFromSync(Object.keys(unreadThreadNotifications)); + for (const [threadId, unreadNotification] of Object.entries(unreadThreadNotifications)) { + if (!encrypted || unreadNotification.notification_count === 0) { + var _unreadNotification$n; + room.setThreadUnreadNotificationCount(threadId, _room.NotificationCountType.Total, (_unreadNotification$n = unreadNotification.notification_count) !== null && _unreadNotification$n !== void 0 ? _unreadNotification$n : 0); + } + const hasNoNotifications = room.getThreadUnreadNotificationCount(threadId, _room.NotificationCountType.Highlight) <= 0; + if (!encrypted || encrypted && hasNoNotifications) { + var _unreadNotification$h; + room.setThreadUnreadNotificationCount(threadId, _room.NotificationCountType.Highlight, (_unreadNotification$h = unreadNotification.highlight_count) !== null && _unreadNotification$h !== void 0 ? _unreadNotification$h : 0); + } + } + } else { + room.resetThreadUnreadNotificationCountFromSync(); + } + joinObj.timeline = joinObj.timeline || {}; + if (joinObj.isBrandNewRoom) { + // set the back-pagination token. Do this *before* adding any + // events so that clients can start back-paginating. + if (joinObj.timeline.prev_batch !== null) { + room.getLiveTimeline().setPaginationToken(joinObj.timeline.prev_batch, _eventTimeline.EventTimeline.BACKWARDS); + } + } else if (joinObj.timeline.limited) { + let limited = true; + + // we've got a limited sync, so we *probably* have a gap in the + // timeline, so should reset. But we might have been peeking or + // paginating and already have some of the events, in which + // case we just want to append any subsequent events to the end + // of the existing timeline. + // + // This is particularly important in the case that we already have + // *all* of the events in the timeline - in that case, if we reset + // the timeline, we'll end up with an entirely empty timeline, + // which we'll try to paginate but not get any new events (which + // will stop us linking the empty timeline into the chain). + // + for (let i = events.length - 1; i >= 0; i--) { + const eventId = events[i].getId(); + if (room.getTimelineForEvent(eventId)) { + debuglog(`Already have event ${eventId} in limited sync - not resetting`); + limited = false; + + // we might still be missing some of the events before i; + // we don't want to be adding them to the end of the + // timeline because that would put them out of order. + events.splice(0, i); + + // XXX: there's a problem here if the skipped part of the + // timeline modifies the state set in stateEvents, because + // we'll end up using the state from stateEvents rather + // than the later state from timelineEvents. We probably + // need to wind stateEvents forward over the events we're + // skipping. + + break; + } + } + if (limited) { + var _syncEventData$oldSyn; + room.resetLiveTimeline(joinObj.timeline.prev_batch, this.syncOpts.canResetEntireTimeline(room.roomId) ? null : (_syncEventData$oldSyn = syncEventData.oldSyncToken) !== null && _syncEventData$oldSyn !== void 0 ? _syncEventData$oldSyn : null); + + // We have to assume any gap in any timeline is + // reason to stop incrementally tracking notifications and + // reset the timeline. + client.resetNotifTimelineSet(); + } + } + + // process any crypto events *before* emitting the RoomStateEvent events. This + // avoids a race condition if the application tries to send a message after the + // state event is processed, but before crypto is enabled, which then causes the + // crypto layer to complain. + if (this.syncOpts.cryptoCallbacks) { + for (const e of stateEvents.concat(events)) { + if (e.isState() && e.getType() === _event.EventType.RoomEncryption && e.getStateKey() === "") { + await this.syncOpts.cryptoCallbacks.onCryptoEvent(room, e); + } + } + } + try { + await this.injectRoomEvents(room, stateEvents, events, syncEventData.fromCache); + } catch (e) { + _logger.logger.error(`Failed to process events on room ${room.roomId}:`, e); + } + + // set summary after processing events, + // because it will trigger a name calculation + // which needs the room state to be up to date + if (joinObj.summary) { + room.setSummary(joinObj.summary); + } + + // we deliberately don't add ephemeral events to the timeline + room.addEphemeralEvents(ephemeralEvents); + + // we deliberately don't add accountData to the timeline + room.addAccountData(accountDataEvents); + room.recalculate(); + if (joinObj.isBrandNewRoom) { + client.store.storeRoom(room); + client.emit(_client.ClientEvent.Room, room); + } + this.processEventsForNotifs(room, events); + const emitEvent = e => client.emit(_client.ClientEvent.Event, e); + stateEvents.forEach(emitEvent); + events.forEach(emitEvent); + ephemeralEvents.forEach(emitEvent); + accountDataEvents.forEach(emitEvent); + + // Decrypt only the last message in all rooms to make sure we can generate a preview + // And decrypt all events after the recorded read receipt to ensure an accurate + // notification count + room.decryptCriticalEvents(); + }); + + // Handle leaves (e.g. kicked rooms) + await (0, _utils.promiseMapSeries)(leaveRooms, async leaveObj => { + const room = leaveObj.room; + const stateEvents = this.mapSyncEventsFormat(leaveObj.state, room); + const events = this.mapSyncEventsFormat(leaveObj.timeline, room); + const accountDataEvents = this.mapSyncEventsFormat(leaveObj.account_data); + await this.injectRoomEvents(room, stateEvents, events); + room.addAccountData(accountDataEvents); + room.recalculate(); + if (leaveObj.isBrandNewRoom) { + client.store.storeRoom(room); + client.emit(_client.ClientEvent.Room, room); + } + this.processEventsForNotifs(room, events); + stateEvents.forEach(function (e) { + client.emit(_client.ClientEvent.Event, e); + }); + events.forEach(function (e) { + client.emit(_client.ClientEvent.Event, e); + }); + accountDataEvents.forEach(function (e) { + client.emit(_client.ClientEvent.Event, e); + }); + }); + + // Handle knocks + await (0, _utils.promiseMapSeries)(knockRooms, async knockObj => { + const room = knockObj.room; + const stateEvents = this.mapSyncEventsFormat(knockObj.knock_state, room); + await this.injectRoomEvents(room, stateEvents); + if (knockObj.isBrandNewRoom) { + room.recalculate(); + client.store.storeRoom(room); + client.emit(_client.ClientEvent.Room, room); + } else { + // Update room state for knock->leave->knock cycles + room.recalculate(); + } + stateEvents.forEach(function (e) { + client.emit(_client.ClientEvent.Event, e); + }); + }); + + // update the notification timeline, if appropriate. + // we only do this for live events, as otherwise we can't order them sanely + // in the timeline relative to ones paginated in by /notifications. + // XXX: we could fix this by making EventTimeline support chronological + // ordering... but it doesn't, right now. + if (syncEventData.oldSyncToken && this.notifEvents.length) { + this.notifEvents.sort(function (a, b) { + return a.getTs() - b.getTs(); + }); + this.notifEvents.forEach(function (event) { + var _client$getNotifTimel; + (_client$getNotifTimel = client.getNotifTimelineSet()) === null || _client$getNotifTimel === void 0 || _client$getNotifTimel.addLiveEvent(event); + }); + } + + // Handle device list updates + if (data.device_lists) { + if (this.syncOpts.cryptoCallbacks) { + await this.syncOpts.cryptoCallbacks.processDeviceLists(data.device_lists); + } else { + // FIXME if we *don't* have a crypto module, we still need to + // invalidate the device lists. But that would require a + // substantial bit of rework :/. } } - await utils.promiseMapSeries(stateEvents, processRoomEvent); - await utils.promiseMapSeries(timelineEvents, processRoomEvent); - ephemeralEvents.forEach(function (e) { - client.emit("event", e); - }); - accountDataEvents.forEach(function (e) { - client.emit("event", e); - }); - room.updateMyMembership("join"); - }); // Handle leaves (e.g. kicked rooms) + // Handle one_time_keys_count and unused fallback keys + await ((_this$syncOpts$crypto2 = this.syncOpts.cryptoCallbacks) === null || _this$syncOpts$crypto2 === void 0 ? void 0 : _this$syncOpts$crypto2.processKeyCounts(data.device_one_time_keys_count, (_data$device_unused_f = data.device_unused_fallback_key_types) !== null && _data$device_unused_f !== void 0 ? _data$device_unused_f : data["org.matrix.msc2732.device_unused_fallback_key_types"])); + } - leaveRooms.forEach(function (leaveObj) { - const room = leaveObj.room; - - const stateEvents = self._mapSyncEventsFormat(leaveObj.state, room); - - const timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room); - - const accountDataEvents = self._mapSyncEventsFormat(leaveObj.account_data); - - self._processRoomEvents(room, stateEvents, timelineEvents); - - room.addAccountData(accountDataEvents); - room.recalculate(); - - if (leaveObj.isBrandNewRoom) { - client.store.storeRoom(room); - client.emit("Room", room); + /** + * Starts polling the connectivity check endpoint + * @param delay - How long to delay until the first poll. + * defaults to a short, randomised interval (to prevent + * tight-looping if /versions succeeds but /sync etc. fail). + * @returns which resolves once the connection returns + */ + startKeepAlives(delay) { + if (delay === undefined) { + delay = 2000 + Math.floor(Math.random() * 5000); } - - self._processEventsForNotifs(room, timelineEvents); - - stateEvents.forEach(function (e) { - client.emit("event", e); - }); - timelineEvents.forEach(function (e) { - client.emit("event", e); - }); - accountDataEvents.forEach(function (e) { - client.emit("event", e); - }); - room.updateMyMembership("leave"); - }); // update the notification timeline, if appropriate. - // we only do this for live events, as otherwise we can't order them sanely - // in the timeline relative to ones paginated in by /notifications. - // XXX: we could fix this by making EventTimeline support chronological - // ordering... but it doesn't, right now. - - if (syncEventData.oldSyncToken && this._notifEvents.length) { - this._notifEvents.sort(function (a, b) { - return a.getTs() - b.getTs(); - }); - - this._notifEvents.forEach(function (event) { - client.getNotifTimelineSet().addLiveEvent(event); - }); - } // Handle device list updates - - - if (data.device_lists) { - if (this.opts.crypto) { - await this.opts.crypto.handleDeviceListChanges(syncEventData, data.device_lists); - } else {// FIXME if we *don't* have a crypto module, we still need to - // invalidate the device lists. But that would require a - // substantial bit of rework :/. + if (this.keepAliveTimer !== null) { + clearTimeout(this.keepAliveTimer); } - } // Handle one_time_keys_count - - - if (this.opts.crypto && data.device_one_time_keys_count) { - const currentCount = data.device_one_time_keys_count.signed_curve25519 || 0; - this.opts.crypto.updateOneTimeKeyCount(currentCount); - } -}; -/** - * Starts polling the connectivity check endpoint - * @param {number} delay How long to delay until the first poll. - * defaults to a short, randomised interval (to prevent - * tightlooping if /versions succeeds but /sync etc. fail). - * @return {promise} which resolves once the connection returns - */ - - -SyncApi.prototype._startKeepAlives = function (delay) { - if (delay === undefined) { - delay = 2000 + Math.floor(Math.random() * 5000); - } - - if (this._keepAliveTimer !== null) { - clearTimeout(this._keepAliveTimer); - } - - const self = this; - - if (delay > 0) { - self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self), delay); - } else { - self._pokeKeepAlive(); - } - - if (!this._connectionReturnedDefer) { - this._connectionReturnedDefer = utils.defer(); - } - - return this._connectionReturnedDefer.promise; -}; -/** - * Make a dummy call to /_matrix/client/versions, to see if the HS is - * reachable. - * - * On failure, schedules a call back to itself. On success, resolves - * this._connectionReturnedDefer. - * - * @param {bool} connDidFail True if a connectivity failure has been detected. Optional. - */ - - -SyncApi.prototype._pokeKeepAlive = function (connDidFail) { - if (connDidFail === undefined) connDidFail = false; - const self = this; - - function success() { - clearTimeout(self._keepAliveTimer); - - if (self._connectionReturnedDefer) { - self._connectionReturnedDefer.resolve(connDidFail); - - self._connectionReturnedDefer = null; - } - } - - this.client._http.request(undefined, // callback - "GET", "/_matrix/client/versions", undefined, // queryParams - undefined, // data - { - prefix: '', - localTimeoutMs: 15 * 1000 - }).then(function () { - success(); - }, function (err) { - if (err.httpStatus == 400 || err.httpStatus == 404) { - // treat this as a success because the server probably just doesn't - // support /versions: point is, we're getting a response. - // We wait a short time though, just in case somehow the server - // is in a mode where it 400s /versions responses and sync etc. - // responses fail, this will mean we don't hammer in a loop. - self._keepAliveTimer = setTimeout(success, 2000); + if (delay > 0) { + this.keepAliveTimer = setTimeout(this.pokeKeepAlive.bind(this), delay); } else { - connDidFail = true; - self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self, connDidFail), 5000 + Math.floor(Math.random() * 5000)); // A keepalive has failed, so we emit the - // error state (whether or not this is the - // first failure). - // Note we do this after setting the timer: - // this lets the unit tests advance the mock - // clock when they get the error. - - self._updateSyncState("ERROR", { - error: err - }); + this.pokeKeepAlive(); } - }); -}; -/** - * @param {Object} groupsSection Groups section object, eg. response.groups.invite - * @param {string} sectionName Which section this is ('invite', 'join' or 'leave') - */ - - -SyncApi.prototype._processGroupSyncEntry = function (groupsSection, sectionName) { - // Processes entries from 'groups' section of the sync stream - for (const groupId of Object.keys(groupsSection)) { - const groupInfo = groupsSection[groupId]; - let group = this.client.store.getGroup(groupId); - const isBrandNew = group === null; - - if (group === null) { - group = this.createGroup(groupId); + if (!this.connectionReturnedDefer) { + this.connectionReturnedDefer = (0, _utils.defer)(); } - - if (groupInfo.profile) { - group.setProfile(groupInfo.profile.name, groupInfo.profile.avatar_url); - } - - if (groupInfo.inviter) { - group.setInviter({ - userId: groupInfo.inviter - }); - } - - group.setMyMembership(sectionName); - - if (isBrandNew) { - // Now we've filled in all the fields, emit the Group event - this.client.emit("Group", group); - } - } -}; -/** - * @param {Object} obj - * @return {Object[]} - */ - - -SyncApi.prototype._mapSyncResponseToRoomArray = function (obj) { - // Maps { roomid: {stuff}, roomid: {stuff} } - // to - // [{stuff+Room+isBrandNewRoom}, {stuff+Room+isBrandNewRoom}] - const client = this.client; - const self = this; - return utils.keys(obj).map(function (roomId) { - const arrObj = obj[roomId]; - let room = client.store.getRoom(roomId); - let isBrandNewRoom = false; - - if (!room) { - room = self.createRoom(roomId); - isBrandNewRoom = true; - } - - arrObj.room = room; - arrObj.isBrandNewRoom = isBrandNewRoom; - return arrObj; - }); -}; -/** - * @param {Object} obj - * @param {Room} room - * @return {MatrixEvent[]} - */ - - -SyncApi.prototype._mapSyncEventsFormat = function (obj, room) { - if (!obj || !utils.isArray(obj.events)) { - return []; + return this.connectionReturnedDefer.promise; } - const mapper = this.client.getEventMapper(); - return obj.events.map(function (e) { - if (room) { - e.room_id = room.roomId; - } - - return mapper(e); - }); -}; -/** - * @param {Room} room - */ - - -SyncApi.prototype._resolveInvites = function (room) { - if (!room || !this.opts.resolveInvitesToProfiles) { - return; - } - - const client = this.client; // For each invited room member we want to give them a displayname/avatar url - // if they have one (the m.room.member invites don't contain this). - - room.getMembersWithMembership("invite").forEach(function (member) { - if (member._requestedProfileInfo) { + /** + * Make a dummy call to /_matrix/client/versions, to see if the HS is + * reachable. + * + * On failure, schedules a call back to itself. On success, resolves + * this.connectionReturnedDefer. + * + * @param connDidFail - True if a connectivity failure has been detected. Optional. + */ + pokeKeepAlive(connDidFail = false) { + var _this$abortController4; + if (!this.running) { + // we are in a keepAlive, retrying to connect, but the syncronization + // was stopped, so we are stopping the retry. + clearTimeout(this.keepAliveTimer); + if (this.connectionReturnedDefer) { + this.connectionReturnedDefer.reject("SyncApi.stop() was called"); + this.connectionReturnedDefer = undefined; + } return; } - - member._requestedProfileInfo = true; // try to get a cached copy first. - - const user = client.getUser(member.userId); - let promise; - - if (user) { - promise = Promise.resolve({ - avatar_url: user.avatarUrl, - displayname: user.displayName - }); - } else { - promise = client.getProfileInfo(member.userId); - } - - promise.then(function (info) { - // slightly naughty by doctoring the invite event but this means all - // the code paths remain the same between invite/join display name stuff - // which is a worthy trade-off for some minor pollution. - const inviteEvent = member.events.member; - - if (inviteEvent.getContent().membership !== "invite") { - // between resolving and now they have since joined, so don't clobber - return; + const success = () => { + clearTimeout(this.keepAliveTimer); + if (this.connectionReturnedDefer) { + this.connectionReturnedDefer.resolve(connDidFail); + this.connectionReturnedDefer = undefined; + } + }; + this.client.http.request(_httpApi.Method.Get, "/_matrix/client/versions", undefined, + // queryParams + undefined, + // data + { + prefix: "", + localTimeoutMs: 15 * 1000, + abortSignal: (_this$abortController4 = this.abortController) === null || _this$abortController4 === void 0 ? void 0 : _this$abortController4.signal + }).then(() => { + success(); + }, err => { + if (err.httpStatus == 400 || err.httpStatus == 404) { + // treat this as a success because the server probably just doesn't + // support /versions: point is, we're getting a response. + // We wait a short time though, just in case somehow the server + // is in a mode where it 400s /versions responses and sync etc. + // responses fail, this will mean we don't hammer in a loop. + this.keepAliveTimer = setTimeout(success, 2000); + } else { + connDidFail = true; + this.keepAliveTimer = setTimeout(this.pokeKeepAlive.bind(this, connDidFail), 5000 + Math.floor(Math.random() * 5000)); + // A keepalive has failed, so we emit the + // error state (whether or not this is the + // first failure). + // Note we do this after setting the timer: + // this lets the unit tests advance the mock + // clock when they get the error. + this.updateSyncState(SyncState.Error, { + error: err + }); } - - inviteEvent.getContent().avatar_url = info.avatar_url; - inviteEvent.getContent().displayname = info.displayname; // fire listeners - - member.setMembershipEvent(inviteEvent, room.currentState); - }, function (err) {// OH WELL. }); - }); -}; -/** - * @param {Room} room - * @param {MatrixEvent[]} stateEventList A list of state events. This is the state - * at the *START* of the timeline list if it is supplied. - * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index - * @param {boolean} fromCache whether the sync response came from cache - * is earlier in time. Higher index is later. - */ - - -SyncApi.prototype._processRoomEvents = function (room, stateEventList, timelineEventList, fromCache) { - // If there are no events in the timeline yet, initialise it with - // the given state events - const liveTimeline = room.getLiveTimeline(); - const timelineWasEmpty = liveTimeline.getEvents().length == 0; - - if (timelineWasEmpty) { - // Passing these events into initialiseState will freeze them, so we need - // to compute and cache the push actions for them now, otherwise sync dies - // with an attempt to assign to read only property. - // XXX: This is pretty horrible and is assuming all sorts of behaviour from - // these functions that it shouldn't be. We should probably either store the - // push actions cache elsewhere so we can freeze MatrixEvents, or otherwise - // find some solution where MatrixEvents are immutable but allow for a cache - // field. - for (const ev of stateEventList) { - this.client.getPushActionsForEvent(ev); + } + mapSyncResponseToRoomArray(obj) { + // Maps { roomid: {stuff}, roomid: {stuff} } + // to + // [{stuff+Room+isBrandNewRoom}, {stuff+Room+isBrandNewRoom}] + const client = this.client; + return Object.keys(obj).filter(k => !(0, _utils.unsafeProp)(k)).map(roomId => { + let room = client.store.getRoom(roomId); + let isBrandNewRoom = false; + if (!room) { + room = this.createRoom(roomId); + isBrandNewRoom = true; + } + return _objectSpread(_objectSpread({}, obj[roomId]), {}, { + room, + isBrandNewRoom + }); + }); + } + mapSyncEventsFormat(obj, room, decrypt = true) { + if (!obj || !Array.isArray(obj.events)) { + return []; } - - liveTimeline.initialiseState(stateEventList); + const mapper = this.client.getEventMapper({ + decrypt + }); + return obj.events.filter(_utils.noUnsafeEventProps).map(function (e) { + if (room) { + e.room_id = room.roomId; + } + return mapper(e); + }); } - this._resolveInvites(room); // recalculate the room name at this point as adding events to the timeline - // may make notifications appear which should have the right name. - // XXX: This looks suspect: we'll end up recalculating the room once here - // and then again after adding events (_processSyncResponse calls it after - // calling us) even if no state events were added. It also means that if - // one of the room events in timelineEventList is something that needs - // a recalculation (like m.room.name) we won't recalculate until we've - // finished adding all the events, which will cause the notification to have - // the old room name rather than the new one. + /** + */ + resolveInvites(room) { + if (!room || !this.opts.resolveInvitesToProfiles) { + return; + } + const client = this.client; + // For each invited room member we want to give them a displayname/avatar url + // if they have one (the m.room.member invites don't contain this). + room.getMembersWithMembership(_membership.KnownMembership.Invite).forEach(function (member) { + if (member.requestedProfileInfo) return; + member.requestedProfileInfo = true; + // try to get a cached copy first. + const user = client.getUser(member.userId); + let promise; + if (user) { + promise = Promise.resolve({ + avatar_url: user.avatarUrl, + displayname: user.displayName + }); + } else { + promise = client.getProfileInfo(member.userId); + } + promise.then(function (info) { + // slightly naughty by doctoring the invite event but this means all + // the code paths remain the same between invite/join display name stuff + // which is a worthy trade-off for some minor pollution. + const inviteEvent = member.events.member; + if ((inviteEvent === null || inviteEvent === void 0 ? void 0 : inviteEvent.getContent().membership) !== _membership.KnownMembership.Invite) { + // between resolving and now they have since joined, so don't clobber + return; + } + inviteEvent.getContent().avatar_url = info.avatar_url; + inviteEvent.getContent().displayname = info.displayname; + // fire listeners + member.setMembershipEvent(inviteEvent, room.currentState); + }, function (err) { + // OH WELL. + }); + }); + } + findEncryptionEvent(events) { + return events === null || events === void 0 ? void 0 : events.find(e => e.getType() === _event.EventType.RoomEncryption && e.getStateKey() === ""); + } + // When processing the sync response we cannot rely on Room.hasEncryptionStateEvent we actually + // inject the events into the room object, so we have to inspect the events themselves. + isRoomEncrypted(room, stateEventList, timelineEventList) { + return room.hasEncryptionStateEvent() || !!this.findEncryptionEvent(stateEventList) || !!this.findEncryptionEvent(timelineEventList); + } - room.recalculate(); // If the timeline wasn't empty, we process the state events here: they're - // defined as updates to the state before the start of the timeline, so this - // starts to roll the state forward. - // XXX: That's what we *should* do, but this can happen if we were previously - // peeking in a room, in which case we obviously do *not* want to add the - // state events here onto the end of the timeline. Historically, the js-sdk - // has just set these new state events on the old and new state. This seems - // very wrong because there could be events in the timeline that diverge the - // state, in which case this is going to leave things out of sync. However, - // for now I think it;s best to behave the same as the code has done previously. + /** + * Injects events into a room's model. + * @param stateEventList - A list of state events. This is the state + * at the *START* of the timeline list if it is supplied. + * @param timelineEventList - A list of timeline events, including threaded. Lower index + * is earlier in time. Higher index is later. + * @param fromCache - whether the sync response came from cache + */ + async injectRoomEvents(room, stateEventList, timelineEventList, fromCache = false) { + // If there are no events in the timeline yet, initialise it with + // the given state events + const liveTimeline = room.getLiveTimeline(); + const timelineWasEmpty = liveTimeline.getEvents().length == 0; + if (timelineWasEmpty) { + // Passing these events into initialiseState will freeze them, so we need + // to compute and cache the push actions for them now, otherwise sync dies + // with an attempt to assign to read only property. + // XXX: This is pretty horrible and is assuming all sorts of behaviour from + // these functions that it shouldn't be. We should probably either store the + // push actions cache elsewhere so we can freeze MatrixEvents, or otherwise + // find some solution where MatrixEvents are immutable but allow for a cache + // field. + for (const ev of stateEventList) { + this.client.getPushActionsForEvent(ev); + } + liveTimeline.initialiseState(stateEventList, { + timelineWasEmpty + }); + } + this.resolveInvites(room); - if (!timelineWasEmpty) { - // XXX: As above, don't do this... - //room.addLiveEvents(stateEventList || []); - // Do this instead... - room.oldState.setStateEvents(stateEventList || []); - room.currentState.setStateEvents(stateEventList || []); - } // execute the timeline events. This will continue to diverge the current state - // if the timeline has any state events in it. - // This also needs to be done before running push rules on the events as they need - // to be decorated with sender etc. + // recalculate the room name at this point as adding events to the timeline + // may make notifications appear which should have the right name. + // XXX: This looks suspect: we'll end up recalculating the room once here + // and then again after adding events (processSyncResponse calls it after + // calling us) even if no state events were added. It also means that if + // one of the room events in timelineEventList is something that needs + // a recalculation (like m.room.name) we won't recalculate until we've + // finished adding all the events, which will cause the notification to have + // the old room name rather than the new one. + room.recalculate(); + // If the timeline wasn't empty, we process the state events here: they're + // defined as updates to the state before the start of the timeline, so this + // starts to roll the state forward. + // XXX: That's what we *should* do, but this can happen if we were previously + // peeking in a room, in which case we obviously do *not* want to add the + // state events here onto the end of the timeline. Historically, the js-sdk + // has just set these new state events on the old and new state. This seems + // very wrong because there could be events in the timeline that diverge the + // state, in which case this is going to leave things out of sync. However, + // for now I think it;s best to behave the same as the code has done previously. + if (!timelineWasEmpty) { + // XXX: As above, don't do this... + //room.addLiveEvents(stateEventList || []); + // Do this instead... + room.oldState.setStateEvents(stateEventList || []); + room.currentState.setStateEvents(stateEventList || []); + } - room.addLiveEvents(timelineEventList || [], null, fromCache); -}; -/** - * Takes a list of timelineEvents and adds and adds to _notifEvents - * as appropriate. - * This must be called after the room the events belong to has been stored. - * - * @param {Room} room - * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index - * is earlier in time. Higher index is later. - */ + // Execute the timeline events. This will continue to diverge the current state + // if the timeline has any state events in it. + // This also needs to be done before running push rules on the events as they need + // to be decorated with sender etc. + await room.addLiveEvents(timelineEventList || [], { + fromCache, + timelineWasEmpty + }); + this.client.processBeaconEvents(room, timelineEventList); + } - -SyncApi.prototype._processEventsForNotifs = function (room, timelineEventList) { - // gather our notifications into this._notifEvents - if (this.client.getNotifTimelineSet()) { - for (let i = 0; i < timelineEventList.length; i++) { - const pushActions = this.client.getPushActionsForEvent(timelineEventList[i]); - - if (pushActions && pushActions.notify && pushActions.tweaks && pushActions.tweaks.highlight) { - this._notifEvents.push(timelineEventList[i]); + /** + * Takes a list of timelineEvents and adds and adds to notifEvents + * as appropriate. + * This must be called after the room the events belong to has been stored. + * + * @param timelineEventList - A list of timeline events. Lower index + * is earlier in time. Higher index is later. + */ + processEventsForNotifs(room, timelineEventList) { + // gather our notifications into this.notifEvents + if (this.client.getNotifTimelineSet()) { + for (const event of timelineEventList) { + var _pushActions$tweaks; + const pushActions = this.client.getPushActionsForEvent(event); + if (pushActions !== null && pushActions !== void 0 && pushActions.notify && (_pushActions$tweaks = pushActions.tweaks) !== null && _pushActions$tweaks !== void 0 && _pushActions$tweaks.highlight) { + this.notifEvents.push(event); + } } } } -}; -/** - * @return {string} - */ - - -SyncApi.prototype._getGuestFilter = function () { - const guestRooms = this.client._guestRooms; // FIXME: horrible gut-wrenching - - if (!guestRooms) { + getGuestFilter() { + // Dev note: This used to be conditional to return a filter of 20 events maximum, but + // the condition never went to the other branch. This is now hardcoded. return "{}"; - } // we just need to specify the filter inline if we're a guest because guests - // can't create filters. + } - - return JSON.stringify({ - room: { - timeline: { - limit: 20 - } - } - }); -}; -/** - * Sets the sync state and emits an event to say so - * @param {String} newState The new state string - * @param {Object} data Object of additional data to emit in the event - */ - - -SyncApi.prototype._updateSyncState = function (newState, data) { - const old = this._syncState; - this._syncState = newState; - this._syncStateData = data; - this.client.emit("sync", this._syncState, old, data); -}; -/** - * Event handler for the 'online' event - * This event is generally unreliable and precise behaviour - * varies between browsers, so we poll for connectivity too, - * but this might help us reconnect a little faster. - */ - - -SyncApi.prototype._onOnline = function () { - debuglog("Browser thinks we are back online"); - - this._startKeepAlives(0); -}; - -function createNewUser(client, userId) { - const user = new _user.User(userId); - client.reEmitter.reEmit(user, ["User.avatarUrl", "User.displayName", "User.presence", "User.currentlyActive", "User.lastPresenceTs"]); - return user; + /** + * Sets the sync state and emits an event to say so + * @param newState - The new state string + * @param data - Object of additional data to emit in the event + */ + updateSyncState(newState, data) { + const old = this.syncState; + this.syncState = newState; + this.syncStateData = data; + this.client.emit(_client.ClientEvent.Sync, this.syncState, old, data); + } } +// /!\ This function is not intended for public use! It's only exported from +// here in order to share some common logic with sliding-sync-sdk.ts. +exports.SyncApi = SyncApi; +function _createAndReEmitRoom(client, roomId, opts) { + const { + timelineSupport + } = client; + const room = new _room.Room(roomId, client, client.getUserId(), { + lazyLoadMembers: opts.lazyLoadMembers, + pendingEventOrdering: opts.pendingEventOrdering, + timelineSupport + }); + client.reEmitter.reEmit(room, [_room.RoomEvent.Name, _room.RoomEvent.Redaction, _room.RoomEvent.RedactionCancelled, _room.RoomEvent.Receipt, _room.RoomEvent.Tags, _room.RoomEvent.LocalEchoUpdated, _room.RoomEvent.AccountData, _room.RoomEvent.MyMembership, _room.RoomEvent.Timeline, _room.RoomEvent.TimelineReset, _roomState.RoomStateEvent.Events, _roomState.RoomStateEvent.Members, _roomState.RoomStateEvent.NewMember, _roomState.RoomStateEvent.Update, _beacon.BeaconEvent.New, _beacon.BeaconEvent.Update, _beacon.BeaconEvent.Destroy, _beacon.BeaconEvent.LivenessChange]); + + // We need to add a listener for RoomState.members in order to hook them + // correctly. + room.on(_roomState.RoomStateEvent.NewMember, (event, state, member) => { + var _client$getUser; + member.user = (_client$getUser = client.getUser(member.userId)) !== null && _client$getUser !== void 0 ? _client$getUser : undefined; + client.reEmitter.reEmit(member, [_roomMember.RoomMemberEvent.Name, _roomMember.RoomMemberEvent.Typing, _roomMember.RoomMemberEvent.PowerLevel, _roomMember.RoomMemberEvent.Membership]); + }); + return room; +} +//# sourceMappingURL=sync.js.map + /***/ }), -/***/ 3376: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 2871: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -65147,16 +189443,10 @@ function createNewUser(client, userId) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TimelineWindow = TimelineWindow; -exports.TimelineIndex = TimelineIndex; - -var _eventTimeline = __webpack_require__(2763); - -var _logger = __webpack_require__(3854); - +exports.getRelationsThreadFilter = getRelationsThreadFilter; +var _thread = __nccwpck_require__(3379); /* -Copyright 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -65171,567 +189461,639 @@ See the License for the specific language governing permissions and limitations under the License. */ -/** @module timeline-window */ +/** + * Returns a filter function for the /relations endpoint to filter out relations directly + * to the thread root event that should not live in the thread timeline + * + * @param threadId - the thread ID (ie. the event ID of the root event of the thread) + * @returns the filtered list of events + */ +function getRelationsThreadFilter(threadId) { + return e => { + var _e$content, _e$content2; + return ((_e$content = e.content) === null || _e$content === void 0 || (_e$content = _e$content["m.relates_to"]) === null || _e$content === void 0 ? void 0 : _e$content.event_id) !== threadId || ((_e$content2 = e.content) === null || _e$content2 === void 0 || (_e$content2 = _e$content2["m.relates_to"]) === null || _e$content2 === void 0 ? void 0 : _e$content2.rel_type) === _thread.THREAD_RELATION_TYPE.name; + }; +} +//# sourceMappingURL=thread-utils.js.map + +/***/ }), + +/***/ 4876: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TimelineWindow = exports.TimelineIndex = void 0; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _eventTimeline = __nccwpck_require__(2763); +var _logger = __nccwpck_require__(3854); +var _room2 = __nccwpck_require__(7688); +/* +Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ /** - * @private + * @internal */ const DEBUG = false; -/** - * @private - */ +/** + * @internal + */ +/* istanbul ignore next */ const debuglog = DEBUG ? _logger.logger.log.bind(_logger.logger) : function () {}; + /** * the number of times we ask the server for more events before giving up + * this is currently higher than it needs to be to workaround lack of a filter + * for excluding thread responses from main timeline pagination which can cause + * giving up incorrectly - https://github.com/matrix-org/matrix-spec-proposals/pull/3874 * - * @private + * @internal */ +const DEFAULT_PAGINATE_LOOP_LIMIT = 10; +class TimelineWindow { + /** + * Construct a TimelineWindow. + * + *

This abstracts the separate timelines in a Matrix {@link Room} into a single iterable thing. + * It keeps track of the start and endpoints of the window, which can be advanced with the help + * of pagination requests. + * + *

Before the window is useful, it must be initialised by calling {@link TimelineWindow#load}. + * + *

Note that the window will not automatically extend itself when new events + * are received from /sync; you should arrange to call {@link TimelineWindow#paginate} + * on {@link RoomEvent.Timeline} events. + * + *

Note that constructing an instance of this class for a room adds a + * listener for RoomEvent.Timeline events which is never removed. In theory + * this should not cause a leak since the EventEmitter uses weak mappings. + * + * @param client - MatrixClient to be used for context/pagination + * requests. + * + * @param timelineSet - The timelineSet to track + * + * @param opts - Configuration options for this window + */ + constructor(client, timelineSet, opts = {}) { + var _timelineSet$room; + // these will be TimelineIndex objects; they delineate the 'start' and + // 'end' of the window. + // + // start.index is inclusive; end.index is exclusive. + (0, _defineProperty2.default)(this, "eventCount", 0); + this.client = client; + this.timelineSet = timelineSet; + this.windowLimit = opts.windowLimit || 1000; + (_timelineSet$room = timelineSet.room) === null || _timelineSet$room === void 0 || _timelineSet$room.on(_room2.RoomEvent.Timeline, this.onTimelineEvent.bind(this)); + } -const DEFAULT_PAGINATE_LOOP_LIMIT = 5; -/** - * Construct a TimelineWindow. - * - *

This abstracts the separate timelines in a Matrix {@link - * module:models/room|Room} into a single iterable thing. It keeps track of - * the start and endpoints of the window, which can be advanced with the help - * of pagination requests. - * - *

Before the window is useful, it must be initialised by calling {@link - * module:timeline-window~TimelineWindow#load|load}. - * - *

Note that the window will not automatically extend itself when new events - * are received from /sync; you should arrange to call {@link - * module:timeline-window~TimelineWindow#paginate|paginate} on {@link - * module:client~MatrixClient.event:"Room.timeline"|Room.timeline} events. - * - * @param {MatrixClient} client MatrixClient to be used for context/pagination - * requests. - * - * @param {EventTimelineSet} timelineSet The timelineSet to track - * - * @param {Object} [opts] Configuration options for this window - * - * @param {number} [opts.windowLimit = 1000] maximum number of events to keep - * in the window. If more events are retrieved via pagination requests, - * excess events will be dropped from the other end of the window. - * - * @constructor - */ - -function TimelineWindow(client, timelineSet, opts) { - opts = opts || {}; - this._client = client; - this._timelineSet = timelineSet; // these will be TimelineIndex objects; they delineate the 'start' and - // 'end' of the window. - // - // _start.index is inclusive; _end.index is exclusive. - - this._start = null; - this._end = null; - this._eventCount = 0; - this._windowLimit = opts.windowLimit || 1000; -} -/** - * Initialise the window to point at a given event, or the live timeline - * - * @param {string} [initialEventId] If given, the window will contain the - * given event - * @param {number} [initialWindowSize = 20] Size of the initial window - * - * @return {Promise} - */ - - -TimelineWindow.prototype.load = function (initialEventId, initialWindowSize) { - const self = this; - initialWindowSize = initialWindowSize || 20; // given an EventTimeline, find the event we were looking for, and initialise our - // fields so that the event in question is in the middle of the window. - - const initFields = function (timeline) { - let eventIndex; - const events = timeline.getEvents(); - - if (!initialEventId) { - // we were looking for the live timeline: initialise to the end - eventIndex = events.length; - } else { - for (let i = 0; i < events.length; i++) { - if (events[i].getId() == initialEventId) { - eventIndex = i; - break; + /** + * Initialise the window to point at a given event, or the live timeline + * + * @param initialEventId - If given, the window will contain the + * given event + * @param initialWindowSize - Size of the initial window + */ + load(initialEventId, initialWindowSize = 20) { + // given an EventTimeline, find the event we were looking for, and initialise our + // fields so that the event in question is in the middle of the window. + const initFields = timeline => { + if (!timeline) { + throw new Error("No timeline given to initFields"); + } + let eventIndex; + const events = timeline.getEvents(); + if (!initialEventId) { + // we were looking for the live timeline: initialise to the end + eventIndex = events.length; + } else { + eventIndex = events.findIndex(e => e.getId() === initialEventId); + if (eventIndex < 0) { + throw new Error("getEventTimeline result didn't include requested event"); } } + const endIndex = Math.min(events.length, eventIndex + Math.ceil(initialWindowSize / 2)); + const startIndex = Math.max(0, endIndex - initialWindowSize); + this.start = new TimelineIndex(timeline, startIndex - timeline.getBaseIndex()); + this.end = new TimelineIndex(timeline, endIndex - timeline.getBaseIndex()); + this.eventCount = endIndex - startIndex; + }; - if (eventIndex === undefined) { - throw new Error("getEventTimeline result didn't include requested event"); + // We avoid delaying the resolution of the promise by a reactor tick if we already have the data we need, + // which is important to keep room-switching feeling snappy. + if (this.timelineSet.getTimelineForEvent(initialEventId)) { + initFields(this.timelineSet.getTimelineForEvent(initialEventId)); + return Promise.resolve(); + } else if (initialEventId) { + return this.client.getEventTimeline(this.timelineSet, initialEventId).then(initFields); + } else { + initFields(this.timelineSet.getLiveTimeline()); + return Promise.resolve(); + } + } + + /** + * Get the TimelineIndex of the window in the given direction. + * + * @param direction - EventTimeline.BACKWARDS to get the TimelineIndex + * at the start of the window; EventTimeline.FORWARDS to get the TimelineIndex at + * the end. + * + * @returns The requested timeline index if one exists, null + * otherwise. + */ + getTimelineIndex(direction) { + if (direction == _eventTimeline.EventTimeline.BACKWARDS) { + var _this$start; + return (_this$start = this.start) !== null && _this$start !== void 0 ? _this$start : null; + } else if (direction == _eventTimeline.EventTimeline.FORWARDS) { + var _this$end; + return (_this$end = this.end) !== null && _this$end !== void 0 ? _this$end : null; + } else { + throw new Error("Invalid direction '" + direction + "'"); + } + } + + /** + * Try to extend the window using events that are already in the underlying + * TimelineIndex. + * + * @param direction - EventTimeline.BACKWARDS to try extending it + * backwards; EventTimeline.FORWARDS to try extending it forwards. + * @param size - number of events to try to extend by. + * + * @returns true if the window was extended, false otherwise. + */ + extend(direction, size) { + const tl = this.getTimelineIndex(direction); + if (!tl) { + debuglog("TimelineWindow: no timeline yet"); + return false; + } + const count = direction == _eventTimeline.EventTimeline.BACKWARDS ? tl.retreat(size) : tl.advance(size); + if (count) { + this.eventCount += count; + debuglog("TimelineWindow: increased cap by " + count + " (now " + this.eventCount + ")"); + // remove some events from the other end, if necessary + const excess = this.eventCount - this.windowLimit; + if (excess > 0) { + this.unpaginate(excess, direction != _eventTimeline.EventTimeline.BACKWARDS); + } + return true; + } + return false; + } + onTimelineEvent(_event, _room, _atStart, removed) { + if (removed) { + this.onEventRemoved(); + } + } + + /** + * If an event was removed, meaning this window is longer than the timeline, + * shorten the window. + */ + onEventRemoved() { + const events = this.getEvents(); + if (events.length > 0 && events[events.length - 1] === undefined && this.end) { + this.end.index--; + } + } + + /** + * Check if this window can be extended + * + *

This returns true if we either have more events, or if we have a + * pagination token which means we can paginate in that direction. It does not + * necessarily mean that there are more events available in that direction at + * this time. + * + * @param direction - EventTimeline.BACKWARDS to check if we can + * paginate backwards; EventTimeline.FORWARDS to check if we can go forwards + * + * @returns true if we can paginate in the given direction + */ + canPaginate(direction) { + const tl = this.getTimelineIndex(direction); + if (!tl) { + debuglog("TimelineWindow: no timeline yet"); + return false; + } + if (direction == _eventTimeline.EventTimeline.BACKWARDS) { + if (tl.index > tl.minIndex()) { + return true; + } + } else { + if (tl.index < tl.maxIndex()) { + return true; + } + } + const hasNeighbouringTimeline = tl.timeline.getNeighbouringTimeline(direction); + const paginationToken = tl.timeline.getPaginationToken(direction); + return Boolean(hasNeighbouringTimeline) || Boolean(paginationToken); + } + + /** + * Attempt to extend the window + * + * @param direction - EventTimeline.BACKWARDS to extend the window + * backwards (towards older events); EventTimeline.FORWARDS to go forwards. + * + * @param size - number of events to try to extend by. If fewer than this + * number are immediately available, then we return immediately rather than + * making an API call. + * + * @param makeRequest - whether we should make API calls to + * fetch further events if we don't have any at all. (This has no effect if + * the room already knows about additional events in the relevant direction, + * even if there are fewer than 'size' of them, as we will just return those + * we already know about.) + * + * @param requestLimit - limit for the number of API requests we + * should make. + * + * @returns Promise which resolves to a boolean which is true if more events + * were successfully retrieved. + */ + async paginate(direction, size, makeRequest = true, requestLimit = DEFAULT_PAGINATE_LOOP_LIMIT) { + // Either wind back the message cap (if there are enough events in the + // timeline to do so), or fire off a pagination request. + const tl = this.getTimelineIndex(direction); + if (!tl) { + debuglog("TimelineWindow: no timeline yet"); + return false; + } + if (tl.pendingPaginate) { + return tl.pendingPaginate; + } + + // try moving the cap + if (this.extend(direction, size)) { + return true; + } + if (!makeRequest || requestLimit === 0) { + // todo: should we return something different to indicate that there + // might be more events out there, but we haven't found them yet? + return false; + } + + // try making a pagination request + const token = tl.timeline.getPaginationToken(direction); + if (!token) { + debuglog("TimelineWindow: no token"); + return false; + } + debuglog("TimelineWindow: starting request"); + const prom = this.client.paginateEventTimeline(tl.timeline, { + backwards: direction == _eventTimeline.EventTimeline.BACKWARDS, + limit: size + }).finally(function () { + tl.pendingPaginate = undefined; + }).then(r => { + debuglog("TimelineWindow: request completed with result " + r); + if (!r) { + return this.paginate(direction, size, false, 0); + } + + // recurse to advance the index into the results. + // + // If we don't get any new events, we want to make sure we keep asking + // the server for events for as long as we have a valid pagination + // token. In particular, we want to know if we've actually hit the + // start of the timeline, or if we just happened to know about all of + // the events thanks to https://matrix.org/jira/browse/SYN-645. + // + // On the other hand, we necessarily want to wait forever for the + // server to make its mind up about whether there are other events, + // because it gives a bad user experience + // (https://github.com/vector-im/vector-web/issues/1204). + return this.paginate(direction, size, true, requestLimit - 1); + }); + tl.pendingPaginate = prom; + return prom; + } + + /** + * Remove `delta` events from the start or end of the timeline. + * + * @param delta - number of events to remove from the timeline + * @param startOfTimeline - if events should be removed from the start + * of the timeline. + */ + unpaginate(delta, startOfTimeline) { + const tl = startOfTimeline ? this.start : this.end; + if (!tl) { + throw new Error(`Attempting to unpaginate startOfTimeline=${startOfTimeline} but don't have this direction`); + } + + // sanity-check the delta + if (delta > this.eventCount || delta < 0) { + throw new Error(`Attemting to unpaginate ${delta} events, but only have ${this.eventCount} in the timeline`); + } + while (delta > 0) { + const count = startOfTimeline ? tl.advance(delta) : tl.retreat(delta); + if (count <= 0) { + // sadness. This shouldn't be possible. + throw new Error("Unable to unpaginate any further, but still have " + this.eventCount + " events"); + } + delta -= count; + this.eventCount -= count; + debuglog("TimelineWindow.unpaginate: dropped " + count + " (now " + this.eventCount + ")"); + } + } + + /** + * Get a list of the events currently in the window + * + * @returns the events in the window + */ + getEvents() { + if (!this.start) { + // not yet loaded + return []; + } + const result = []; + + // iterate through each timeline between this.start and this.end + // (inclusive). + let timeline = this.start.timeline; + // eslint-disable-next-line no-constant-condition + while (timeline) { + var _this$end2, _this$end3; + const events = timeline.getEvents(); + + // For the first timeline in the chain, we want to start at + // this.start.index. For the last timeline in the chain, we want to + // stop before this.end.index. Otherwise, we want to copy all of the + // events in the timeline. + // + // (Note that both this.start.index and this.end.index are relative + // to their respective timelines' BaseIndex). + // + let startIndex = 0; + let endIndex = events.length; + if (timeline === this.start.timeline) { + startIndex = this.start.index + timeline.getBaseIndex(); + } + if (timeline === ((_this$end2 = this.end) === null || _this$end2 === void 0 ? void 0 : _this$end2.timeline)) { + endIndex = this.end.index + timeline.getBaseIndex(); + } + for (let i = startIndex; i < endIndex; i++) { + result.push(events[i]); + } + + // if we're not done, iterate to the next timeline. + if (timeline === ((_this$end3 = this.end) === null || _this$end3 === void 0 ? void 0 : _this$end3.timeline)) { + break; + } else { + timeline = timeline.getNeighbouringTimeline(_eventTimeline.EventTimeline.FORWARDS); + } + } + return result; + } +} + +/** + * A thing which contains a timeline reference, and an index into it. + * @internal + */ +exports.TimelineWindow = TimelineWindow; +class TimelineIndex { + // index: the indexes are relative to BaseIndex, so could well be negative. + constructor(timeline, index) { + this.timeline = timeline; + this.index = index; + } + + /** + * @returns the minimum possible value for the index in the current + * timeline + */ + minIndex() { + return this.timeline.getBaseIndex() * -1; + } + + /** + * @returns the maximum possible value for the index in the current + * timeline (exclusive - ie, it actually returns one more than the index + * of the last element). + */ + maxIndex() { + return this.timeline.getEvents().length - this.timeline.getBaseIndex(); + } + + /** + * Try move the index forward, or into the neighbouring timeline + * + * @param delta - number of events to advance by + * @returns number of events successfully advanced by + */ + advance(delta) { + if (!delta) { + return 0; + } + + // first try moving the index in the current timeline. See if there is room + // to do so. + let cappedDelta; + if (delta < 0) { + // we want to wind the index backwards. + // + // (this.minIndex() - this.index) is a negative number whose magnitude + // is the amount of room we have to wind back the index in the current + // timeline. We cap delta to this quantity. + cappedDelta = Math.max(delta, this.minIndex() - this.index); + if (cappedDelta < 0) { + this.index += cappedDelta; + return cappedDelta; + } + } else { + // we want to wind the index forwards. + // + // (this.maxIndex() - this.index) is a (positive) number whose magnitude + // is the amount of room we have to wind forward the index in the current + // timeline. We cap delta to this quantity. + cappedDelta = Math.min(delta, this.maxIndex() - this.index); + if (cappedDelta > 0) { + this.index += cappedDelta; + return cappedDelta; } } - const endIndex = Math.min(events.length, eventIndex + Math.ceil(initialWindowSize / 2)); - const startIndex = Math.max(0, endIndex - initialWindowSize); - self._start = new TimelineIndex(timeline, startIndex - timeline.getBaseIndex()); - self._end = new TimelineIndex(timeline, endIndex - timeline.getBaseIndex()); - self._eventCount = endIndex - startIndex; - }; // We avoid delaying the resolution of the promise by a reactor tick if - // we already have the data we need, which is important to keep room-switching - // feeling snappy. - // - - - if (initialEventId) { - const timeline = this._timelineSet.getTimelineForEvent(initialEventId); - - if (timeline) { - // hot-path optimization to save a reactor tick by replicating the sync check getTimelineForEvent does. - initFields(timeline); - return Promise.resolve(timeline); - } - - const prom = this._client.getEventTimeline(this._timelineSet, initialEventId); - - return prom.then(initFields); - } else { - const tl = this._timelineSet.getLiveTimeline(); - - initFields(tl); - return Promise.resolve(); - } -}; -/** - * Get the TimelineIndex of the window in the given direction. - * - * @param {string} direction EventTimeline.BACKWARDS to get the TimelineIndex - * at the start of the window; EventTimeline.FORWARDS to get the TimelineIndex at - * the end. - * - * @return {TimelineIndex} The requested timeline index if one exists, null - * otherwise. - */ - - -TimelineWindow.prototype.getTimelineIndex = function (direction) { - if (direction == _eventTimeline.EventTimeline.BACKWARDS) { - return this._start; - } else if (direction == _eventTimeline.EventTimeline.FORWARDS) { - return this._end; - } else { - throw new Error("Invalid direction '" + direction + "'"); - } -}; -/** - * Try to extend the window using events that are already in the underlying - * TimelineIndex. - * - * @param {string} direction EventTimeline.BACKWARDS to try extending it - * backwards; EventTimeline.FORWARDS to try extending it forwards. - * @param {number} size number of events to try to extend by. - * - * @return {boolean} true if the window was extended, false otherwise. - */ - - -TimelineWindow.prototype.extend = function (direction, size) { - const tl = this.getTimelineIndex(direction); - - if (!tl) { - debuglog("TimelineWindow: no timeline yet"); - return false; - } - - const count = direction == _eventTimeline.EventTimeline.BACKWARDS ? tl.retreat(size) : tl.advance(size); - - if (count) { - this._eventCount += count; - debuglog("TimelineWindow: increased cap by " + count + " (now " + this._eventCount + ")"); // remove some events from the other end, if necessary - - const excess = this._eventCount - this._windowLimit; - - if (excess > 0) { - this.unpaginate(excess, direction != _eventTimeline.EventTimeline.BACKWARDS); - } - - return true; - } - - return false; -}; -/** - * Check if this window can be extended - * - *

This returns true if we either have more events, or if we have a - * pagination token which means we can paginate in that direction. It does not - * necessarily mean that there are more events available in that direction at - * this time. - * - * @param {string} direction EventTimeline.BACKWARDS to check if we can - * paginate backwards; EventTimeline.FORWARDS to check if we can go forwards - * - * @return {boolean} true if we can paginate in the given direction - */ - - -TimelineWindow.prototype.canPaginate = function (direction) { - const tl = this.getTimelineIndex(direction); - - if (!tl) { - debuglog("TimelineWindow: no timeline yet"); - return false; - } - - if (direction == _eventTimeline.EventTimeline.BACKWARDS) { - if (tl.index > tl.minIndex()) { - return true; - } - } else { - if (tl.index < tl.maxIndex()) { - return true; - } - } - - return Boolean(tl.timeline.getNeighbouringTimeline(direction) || tl.timeline.getPaginationToken(direction)); -}; -/** - * Attempt to extend the window - * - * @param {string} direction EventTimeline.BACKWARDS to extend the window - * backwards (towards older events); EventTimeline.FORWARDS to go forwards. - * - * @param {number} size number of events to try to extend by. If fewer than this - * number are immediately available, then we return immediately rather than - * making an API call. - * - * @param {boolean} [makeRequest = true] whether we should make API calls to - * fetch further events if we don't have any at all. (This has no effect if - * the room already knows about additional events in the relevant direction, - * even if there are fewer than 'size' of them, as we will just return those - * we already know about.) - * - * @param {number} [requestLimit = 5] limit for the number of API requests we - * should make. - * - * @return {Promise} Resolves to a boolean which is true if more events - * were successfully retrieved. - */ - - -TimelineWindow.prototype.paginate = function (direction, size, makeRequest, requestLimit) { - // Either wind back the message cap (if there are enough events in the - // timeline to do so), or fire off a pagination request. - if (makeRequest === undefined) { - makeRequest = true; - } - - if (requestLimit === undefined) { - requestLimit = DEFAULT_PAGINATE_LOOP_LIMIT; - } - - const tl = this.getTimelineIndex(direction); - - if (!tl) { - debuglog("TimelineWindow: no timeline yet"); - return Promise.resolve(false); - } - - if (tl.pendingPaginate) { - return tl.pendingPaginate; - } // try moving the cap - - - if (this.extend(direction, size)) { - return Promise.resolve(true); - } - - if (!makeRequest || requestLimit === 0) { - // todo: should we return something different to indicate that there - // might be more events out there, but we haven't found them yet? - return Promise.resolve(false); - } // try making a pagination request - - - const token = tl.timeline.getPaginationToken(direction); - - if (!token) { - debuglog("TimelineWindow: no token"); - return Promise.resolve(false); - } - - debuglog("TimelineWindow: starting request"); - const self = this; - - const prom = this._client.paginateEventTimeline(tl.timeline, { - backwards: direction == _eventTimeline.EventTimeline.BACKWARDS, - limit: size - }).finally(function () { - tl.pendingPaginate = null; - }).then(function (r) { - debuglog("TimelineWindow: request completed with result " + r); - - if (!r) { - // end of timeline - return false; - } // recurse to advance the index into the results. + // the index is already at the start/end of the current timeline. // - // If we don't get any new events, we want to make sure we keep asking - // the server for events for as long as we have a valid pagination - // token. In particular, we want to know if we've actually hit the - // start of the timeline, or if we just happened to know about all of - // the events thanks to https://matrix.org/jira/browse/SYN-645. - // - // On the other hand, we necessarily want to wait forever for the - // server to make its mind up about whether there are other events, - // because it gives a bad user experience - // (https://github.com/vector-im/vector-web/issues/1204). + // next see if there is a neighbouring timeline to switch to. + const neighbour = this.timeline.getNeighbouringTimeline(delta < 0 ? _eventTimeline.EventTimeline.BACKWARDS : _eventTimeline.EventTimeline.FORWARDS); + if (neighbour) { + this.timeline = neighbour; + if (delta < 0) { + this.index = this.maxIndex(); + } else { + this.index = this.minIndex(); + } + debuglog("paginate: switched to new neighbour"); - - return self.paginate(direction, size, true, requestLimit - 1); - }); - - tl.pendingPaginate = prom; - return prom; -}; -/** - * Remove `delta` events from the start or end of the timeline. - * - * @param {number} delta number of events to remove from the timeline - * @param {boolean} startOfTimeline if events should be removed from the start - * of the timeline. - */ - - -TimelineWindow.prototype.unpaginate = function (delta, startOfTimeline) { - const tl = startOfTimeline ? this._start : this._end; // sanity-check the delta - - if (delta > this._eventCount || delta < 0) { - throw new Error("Attemting to unpaginate " + delta + " events, but " + "only have " + this._eventCount + " in the timeline"); - } - - while (delta > 0) { - const count = startOfTimeline ? tl.advance(delta) : tl.retreat(delta); - - if (count <= 0) { - // sadness. This shouldn't be possible. - throw new Error("Unable to unpaginate any further, but still have " + this._eventCount + " events"); + // recurse, using the next timeline + return this.advance(delta); } - - delta -= count; - this._eventCount -= count; - debuglog("TimelineWindow.unpaginate: dropped " + count + " (now " + this._eventCount + ")"); - } -}; -/** - * Get a list of the events currently in the window - * - * @return {MatrixEvent[]} the events in the window - */ - - -TimelineWindow.prototype.getEvents = function () { - if (!this._start) { - // not yet loaded - return []; - } - - const result = []; // iterate through each timeline between this._start and this._end - // (inclusive). - - let timeline = this._start.timeline; - - while (true) { - const events = timeline.getEvents(); // For the first timeline in the chain, we want to start at - // this._start.index. For the last timeline in the chain, we want to - // stop before this._end.index. Otherwise, we want to copy all of the - // events in the timeline. - // - // (Note that both this._start.index and this._end.index are relative - // to their respective timelines' BaseIndex). - // - - let startIndex = 0; - let endIndex = events.length; - - if (timeline === this._start.timeline) { - startIndex = this._start.index + timeline.getBaseIndex(); - } - - if (timeline === this._end.timeline) { - endIndex = this._end.index + timeline.getBaseIndex(); - } - - for (let i = startIndex; i < endIndex; i++) { - result.push(events[i]); - } // if we're not done, iterate to the next timeline. - - - if (timeline === this._end.timeline) { - break; - } else { - timeline = timeline.getNeighbouringTimeline(_eventTimeline.EventTimeline.FORWARDS); - } - } - - return result; -}; -/** - * a thing which contains a timeline reference, and an index into it. - * - * @constructor - * @param {EventTimeline} timeline - * @param {number} index - * @private - */ - - -function TimelineIndex(timeline, index) { - this.timeline = timeline; // the indexes are relative to BaseIndex, so could well be negative. - - this.index = index; -} -/** - * @return {number} the minimum possible value for the index in the current - * timeline - */ - - -TimelineIndex.prototype.minIndex = function () { - return this.timeline.getBaseIndex() * -1; -}; -/** - * @return {number} the maximum possible value for the index in the current - * timeline (exclusive - ie, it actually returns one more than the index - * of the last element). - */ - - -TimelineIndex.prototype.maxIndex = function () { - return this.timeline.getEvents().length - this.timeline.getBaseIndex(); -}; -/** - * Try move the index forward, or into the neighbouring timeline - * - * @param {number} delta number of events to advance by - * @return {number} number of events successfully advanced by - */ - - -TimelineIndex.prototype.advance = function (delta) { - if (!delta) { return 0; - } // first try moving the index in the current timeline. See if there is room - // to do so. - - - let cappedDelta; - - if (delta < 0) { - // we want to wind the index backwards. - // - // (this.minIndex() - this.index) is a negative number whose magnitude - // is the amount of room we have to wind back the index in the current - // timeline. We cap delta to this quantity. - cappedDelta = Math.max(delta, this.minIndex() - this.index); - - if (cappedDelta < 0) { - this.index += cappedDelta; - return cappedDelta; - } - } else { - // we want to wind the index forwards. - // - // (this.maxIndex() - this.index) is a (positive) number whose magnitude - // is the amount of room we have to wind forward the index in the current - // timeline. We cap delta to this quantity. - cappedDelta = Math.min(delta, this.maxIndex() - this.index); - - if (cappedDelta > 0) { - this.index += cappedDelta; - return cappedDelta; - } - } // the index is already at the start/end of the current timeline. - // - // next see if there is a neighbouring timeline to switch to. - - - const neighbour = this.timeline.getNeighbouringTimeline(delta < 0 ? _eventTimeline.EventTimeline.BACKWARDS : _eventTimeline.EventTimeline.FORWARDS); - - if (neighbour) { - this.timeline = neighbour; - - if (delta < 0) { - this.index = this.maxIndex(); - } else { - this.index = this.minIndex(); - } - - debuglog("paginate: switched to new neighbour"); // recurse, using the next timeline - - return this.advance(delta); } - return 0; + /** + * Try move the index backwards, or into the neighbouring timeline + * + * @param delta - number of events to retreat by + * @returns number of events successfully retreated by + */ + retreat(delta) { + return this.advance(delta * -1) * -1; + } +} +exports.TimelineIndex = TimelineIndex; +//# sourceMappingURL=timeline-window.js.map + +/***/ }), + +/***/ 2756: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _exportNames = { + VerificationMethod: true }; -/** - * Try move the index backwards, or into the neighbouring timeline +exports.VerificationMethod = void 0; +var _membership = __nccwpck_require__(9225); +Object.keys(_membership).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _membership[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _membership[key]; + } + }); +}); +/* +Copyright 2024 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* + * This file is a secondary entrypoint for the js-sdk library, for use by Typescript projects. + * It exposes low-level types and interfaces reflecting structures defined in the Matrix specification. * - * @param {number} delta number of events to retreat by - * @return {number} number of events successfully retreated by + * Remember to only export *public* types from this file. */ - - -TimelineIndex.prototype.retreat = function (delta) { - return this.advance(delta * -1) * -1; -}; +/** The different methods for device and user verification */ +let VerificationMethod = exports.VerificationMethod = /*#__PURE__*/function (VerificationMethod) { + VerificationMethod["Sas"] = "m.sas.v1"; + VerificationMethod["ShowQrCode"] = "m.qr_code.show.v1"; + VerificationMethod["ScanQrCode"] = "m.qr_code.scan.v1"; + VerificationMethod["Reciprocate"] = "m.reciprocate.v1"; + return VerificationMethod; +}({}); +//# sourceMappingURL=types.js.map /***/ }), /***/ 2557: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var _interopRequireDefault = __webpack_require__(3298); - +var _interopRequireDefault = __nccwpck_require__(3286); Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.MapWithDefault = exports.DEFAULT_ALPHABET = void 0; +exports.alphabetPad = alphabetPad; +exports.averageBetweenStrings = averageBetweenStrings; +exports.baseToString = baseToString; +exports.checkObjectHasKeys = checkObjectHasKeys; +exports.chunkPromises = chunkPromises; +exports.compare = compare; +exports.decodeParams = decodeParams; +exports.deepCompare = deepCompare; +exports.deepCopy = deepCopy; +exports.deepSortedObjectEntries = deepSortedObjectEntries; +exports.defer = defer; exports.encodeParams = encodeParams; exports.encodeUri = encodeUri; -exports.map = map; -exports.filter = filter; -exports.keys = keys; -exports.values = values; -exports.forEach = forEach; -exports.findElement = findElement; -exports.removeElement = removeElement; -exports.isFunction = isFunction; -exports.isArray = isArray; -exports.checkObjectHasKeys = checkObjectHasKeys; -exports.checkObjectHasNoAdditionalKeys = checkObjectHasNoAdditionalKeys; -exports.deepCopy = deepCopy; -exports.deepCompare = deepCompare; -exports.extend = extend; -exports.runPolyfills = runPolyfills; -exports.inherits = inherits; -exports.polyfillSuper = polyfillSuper; -exports.isNumber = isNumber; -exports.removeHiddenChars = removeHiddenChars; +exports.ensureNoTrailingSlash = ensureNoTrailingSlash; exports.escapeRegExp = escapeRegExp; exports.globToRegexp = globToRegexp; -exports.ensureNoTrailingSlash = ensureNoTrailingSlash; -exports.sleep = sleep; +exports.immediate = immediate; +exports.internaliseString = internaliseString; +exports.isFunction = isFunction; exports.isNullOrUndefined = isNullOrUndefined; -exports.defer = defer; +exports.isNumber = isNumber; +exports.isSupportedReceiptType = isSupportedReceiptType; +exports.lexicographicCompare = lexicographicCompare; +exports.logDuration = logDuration; +exports.mapsEqual = mapsEqual; +exports.nextString = nextString; +exports.noUnsafeEventProps = noUnsafeEventProps; +exports.normalize = normalize; +exports.prevString = prevString; exports.promiseMapSeries = promiseMapSeries; exports.promiseTry = promiseTry; -exports.setCrypto = setCrypto; -exports.getCrypto = getCrypto; - -var _unhomoglyph = _interopRequireDefault(__webpack_require__(8708)); - -/* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +exports.recursiveMapToObject = recursiveMapToObject; +exports.recursivelyAssign = recursivelyAssign; +exports.removeDirectionOverrideChars = removeDirectionOverrideChars; +exports.removeElement = removeElement; +exports.removeHiddenChars = removeHiddenChars; +exports.replaceParam = replaceParam; +exports.safeSet = safeSet; +exports.simpleRetryOperation = simpleRetryOperation; +exports.sleep = sleep; +exports.sortEventsByLatestContentTimestamp = sortEventsByLatestContentTimestamp; +exports.stringToBase = stringToBase; +exports.unsafeProp = unsafeProp; +var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +var _unhomoglyph = _interopRequireDefault(__nccwpck_require__(8708)); +var _pRetry = _interopRequireDefault(__nccwpck_require__(2548)); +var _location = __nccwpck_require__(1028); +var _read_receipts = __nccwpck_require__(3255); +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* +Copyright 2015, 2016, 2019, 2023 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -65744,739 +190106,381 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -*/ +*/ /** + * This is an internal module. + */ +const interns = new Map(); /** - * This is an internal module. - * @module utils + * Internalises a string, reusing a known pointer or storing the pointer + * if needed for future strings. + * @param str - The string to internalise. + * @returns The internalised string. */ +function internaliseString(str) { + // Unwrap strings before entering the map, if we somehow got a wrapped + // string as our input. This should only happen from tests. + if (str instanceof String) { + str = str.toString(); + } + + // Check the map to see if we can store the value + if (!interns.has(str)) { + interns.set(str, str); + } + + // Return any cached string reference + return interns.get(str); +} /** * Encode a dictionary of query parameters. - * @param {Object} params A dict of key/values to encode e.g. - * {"foo": "bar", "baz": "taz"} - * @return {string} The encoded string e.g. foo=bar&baz=taz + * Omits any undefined/null values. + * @param params - A dict of key/values to encode e.g. + * `{"foo": "bar", "baz": "taz"}` + * @returns The encoded string e.g. foo=bar&baz=taz */ -function encodeParams(params) { - let qs = ""; - - for (const key in params) { - if (!params.hasOwnProperty(key)) { - continue; +function encodeParams(params, urlSearchParams) { + const searchParams = urlSearchParams !== null && urlSearchParams !== void 0 ? urlSearchParams : new URLSearchParams(); + for (const [key, val] of Object.entries(params)) { + if (val !== undefined && val !== null) { + if (Array.isArray(val)) { + val.forEach(v => { + searchParams.append(key, String(v)); + }); + } else { + searchParams.append(key, String(val)); + } } - - qs += "&" + encodeURIComponent(key) + "=" + encodeURIComponent(params[key]); } - - return qs.substring(1); + return searchParams; } +/** + * Replace a stable parameter with the unstable naming for params + */ +function replaceParam(stable, unstable, dict) { + const result = _objectSpread(_objectSpread({}, dict), {}, { + [unstable]: dict[stable] + }); + delete result[stable]; + return result; +} + +/** + * Decode a query string in `application/x-www-form-urlencoded` format. + * @param query - A query string to decode e.g. + * foo=bar&via=server1&server2 + * @returns The decoded object, if any keys occurred multiple times + * then the value will be an array of strings, else it will be an array. + * This behaviour matches Node's qs.parse but is built on URLSearchParams + * for native web compatibility + */ +function decodeParams(query) { + const o = {}; + const params = new URLSearchParams(query); + for (const key of params.keys()) { + const val = params.getAll(key); + o[key] = val.length === 1 ? val[0] : val; + } + return o; +} + /** * Encodes a URI according to a set of template variables. Variables will be * passed through encodeURIComponent. - * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'. - * @param {Object} variables The key/value pairs to replace the template - * variables with. E.g. { "$bar": "baz" }. - * @return {string} The result of replacing all template variables e.g. '/foo/baz'. + * @param pathTemplate - The path with template variables e.g. '/foo/$bar'. + * @param variables - The key/value pairs to replace the template + * variables with. E.g. `{ "$bar": "baz" }`. + * @returns The result of replacing all template variables e.g. '/foo/baz'. */ - - function encodeUri(pathTemplate, variables) { for (const key in variables) { if (!variables.hasOwnProperty(key)) { continue; } - - pathTemplate = pathTemplate.replace(key, encodeURIComponent(variables[key])); + const value = variables[key]; + if (value === undefined || value === null) { + continue; + } + pathTemplate = pathTemplate.replace(key, encodeURIComponent(value)); } - return pathTemplate; } -/** - * Applies a map function to the given array. - * @param {Array} array The array to apply the function to. - * @param {Function} fn The function that will be invoked for each element in - * the array with the signature fn(element){...} - * @return {Array} A new array with the results of the function. - */ - -function map(array, fn) { - const results = new Array(array.length); - - for (let i = 0; i < array.length; i++) { - results[i] = fn(array[i]); - } - - return results; -} -/** - * Applies a filter function to the given array. - * @param {Array} array The array to apply the function to. - * @param {Function} fn The function that will be invoked for each element in - * the array. It should return true to keep the element. The function signature - * looks like fn(element, index, array){...}. - * @return {Array} A new array with the results of the function. - */ - - -function filter(array, fn) { - const results = []; - - for (let i = 0; i < array.length; i++) { - if (fn(array[i], i, array)) { - results.push(array[i]); - } - } - - return results; -} -/** - * Get the keys for an object. Same as Object.keys(). - * @param {Object} obj The object to get the keys for. - * @return {string[]} The keys of the object. - */ - - -function keys(obj) { - const result = []; - - for (const key in obj) { - if (!obj.hasOwnProperty(key)) { - continue; - } - - result.push(key); - } - - return result; -} -/** - * Get the values for an object. - * @param {Object} obj The object to get the values for. - * @return {Array<*>} The values of the object. - */ - - -function values(obj) { - const result = []; - - for (const key in obj) { - if (!obj.hasOwnProperty(key)) { - continue; - } - - result.push(obj[key]); - } - - return result; -} -/** - * Invoke a function for each item in the array. - * @param {Array} array The array. - * @param {Function} fn The function to invoke for each element. Has the - * function signature fn(element, index). - */ - - -function forEach(array, fn) { - for (let i = 0; i < array.length; i++) { - fn(array[i], i); - } -} -/** - * The findElement() method returns a value in the array, if an element in the array - * satisfies (returns true) the provided testing function. Otherwise undefined - * is returned. - * @param {Array} array The array. - * @param {Function} fn Function to execute on each value in the array, with the - * function signature fn(element, index, array) - * @param {boolean} reverse True to search in reverse order. - * @return {*} The first value in the array which returns true for - * the given function. - */ - - -function findElement(array, fn, reverse) { - let i; - - if (reverse) { - for (i = array.length - 1; i >= 0; i--) { - if (fn(array[i], i, array)) { - return array[i]; - } - } - } else { - for (i = 0; i < array.length; i++) { - if (fn(array[i], i, array)) { - return array[i]; - } - } - } -} /** * The removeElement() method removes the first element in the array that * satisfies (returns true) the provided testing function. - * @param {Array} array The array. - * @param {Function} fn Function to execute on each value in the array, with the - * function signature fn(element, index, array). Return true to + * @param array - The array. + * @param fn - Function to execute on each value in the array, with the + * function signature `fn(element, index, array)`. Return true to * remove this element and break. - * @param {boolean} reverse True to search in reverse order. - * @return {boolean} True if an element was removed. + * @param reverse - True to search in reverse order. + * @returns True if an element was removed. */ - - function removeElement(array, fn, reverse) { let i; - let removed; - if (reverse) { for (i = array.length - 1; i >= 0; i--) { if (fn(array[i], i, array)) { - removed = array[i]; array.splice(i, 1); - return removed; + return true; } } } else { for (i = 0; i < array.length; i++) { if (fn(array[i], i, array)) { - removed = array[i]; array.splice(i, 1); - return removed; + return true; } } } - return false; } + /** * Checks if the given thing is a function. - * @param {*} value The thing to check. - * @return {boolean} True if it is a function. + * @param value - The thing to check. + * @returns True if it is a function. */ - - function isFunction(value) { return Object.prototype.toString.call(value) === "[object Function]"; } -/** - * Checks if the given thing is an array. - * @param {*} value The thing to check. - * @return {boolean} True if it is an array. - */ - -function isArray(value) { - return Array.isArray ? Array.isArray(value) : Boolean(value && value.constructor === Array); -} /** * Checks that the given object has the specified keys. - * @param {Object} obj The object to check. - * @param {string[]} keys The list of keys that 'obj' must have. + * @param obj - The object to check. + * @param keys - The list of keys that 'obj' must have. * @throws If the object is missing keys. */ // note using 'keys' here would shadow the 'keys' function defined above - - -function checkObjectHasKeys(obj, keys_) { - for (let i = 0; i < keys_.length; i++) { - if (!obj.hasOwnProperty(keys_[i])) { - throw new Error("Missing required key: " + keys_[i]); - } - } -} -/** - * Checks that the given object has no extra keys other than the specified ones. - * @param {Object} obj The object to check. - * @param {string[]} allowedKeys The list of allowed key names. - * @throws If there are extra keys. - */ - - -function checkObjectHasNoAdditionalKeys(obj, allowedKeys) { - for (const key in obj) { +function checkObjectHasKeys(obj, keys) { + for (const key of keys) { if (!obj.hasOwnProperty(key)) { - continue; - } - - if (allowedKeys.indexOf(key) === -1) { - throw new Error("Unknown key: " + key); + throw new Error("Missing required key: " + key); } } } + /** * Deep copy the given object. The object MUST NOT have circular references and * MUST NOT have functions. - * @param {Object} obj The object to deep copy. - * @return {Object} A copy of the object without any references to the original. + * @param obj - The object to deep copy. + * @returns A copy of the object without any references to the original. */ - - function deepCopy(obj) { return JSON.parse(JSON.stringify(obj)); } + /** * Compare two objects for equality. The objects MUST NOT have circular references. * - * @param {Object} x The first object to compare. - * @param {Object} y The second object to compare. + * @param x - The first object to compare. + * @param y - The second object to compare. * - * @return {boolean} true if the two objects are equal + * @returns true if the two objects are equal */ - - function deepCompare(x, y) { // Inspired by // http://stackoverflow.com/questions/1068834/object-comparison-in-javascript#1144249 + // Compare primitives and functions. // Also check if both arguments link to the same object. if (x === y) { return true; } - if (typeof x !== typeof y) { return false; - } // special-case NaN (since NaN !== NaN) + } - - if (typeof x === 'number' && isNaN(x) && isNaN(y)) { + // special-case NaN (since NaN !== NaN) + if (typeof x === "number" && isNaN(x) && isNaN(y)) { return true; - } // special-case null (since typeof null == 'object', but null.constructor + } + + // special-case null (since typeof null == 'object', but null.constructor // throws) - - if (x === null || y === null) { return x === y; - } // everything else is either an unequal primitive, or an object - + } + // everything else is either an unequal primitive, or an object if (!(x instanceof Object)) { return false; - } // check they are the same type of object - + } + // check they are the same type of object if (x.constructor !== y.constructor || x.prototype !== y.prototype) { return false; - } // special-casing for some special types of object - + } + // special-casing for some special types of object if (x instanceof RegExp || x instanceof Date) { return x.toString() === y.toString(); - } // the object algorithm works for Array, but it's sub-optimal. + } - - if (x instanceof Array) { + // the object algorithm works for Array, but it's sub-optimal. + if (Array.isArray(x)) { if (x.length !== y.length) { return false; } - for (let i = 0; i < x.length; i++) { if (!deepCompare(x[i], y[i])) { return false; } } } else { - // disable jshint "The body of a for in should be wrapped in an if - // statement" - - /* jshint -W089 */ // check that all of y's direct keys are in x - let p; - - for (p in y) { + for (const p in y) { if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) { return false; } - } // finally, compare each of x's keys with y + } - - for (p in y) { - // eslint-disable-line guard-for-in - if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) { - return false; - } - - if (!deepCompare(x[p], y[p])) { + // finally, compare each of x's keys with y + for (const p in x) { + if (y.hasOwnProperty(p) !== x.hasOwnProperty(p) || !deepCompare(x[p], y[p])) { return false; } } } - /* jshint +W089 */ - - return true; } + +// Dev note: This returns an array of tuples, but jsdoc doesn't like that. https://github.com/jsdoc/jsdoc/issues/1703 /** - * Copy properties from one object to another. - * - * All enumerable properties, included inherited ones, are copied. - * - * This is approximately equivalent to ES6's Object.assign, except - * that the latter doesn't copy inherited properties. - * - * @param {Object} target The object that will receive new properties - * @param {...Object} source Objects from which to copy properties - * - * @return {Object} target + * Creates an array of object properties/values (entries) then + * sorts the result by key, recursively. The input object must + * ensure it does not have loops. If the input is not an object + * then it will be returned as-is. + * @param obj - The object to get entries of + * @returns The entries, sorted by key. */ +function deepSortedObjectEntries(obj) { + if (typeof obj !== "object") return obj; - -function extend(...restParams) { - const target = restParams[0] || {}; - - for (let i = 1; i < restParams.length; i++) { - const source = restParams[i]; - if (!source) continue; - - for (const propName in source) { - // eslint-disable-line guard-for-in - target[propName] = source[propName]; - } + // Apparently these are object types... + if (obj === null || obj === undefined || Array.isArray(obj)) return obj; + const pairs = []; + for (const [k, v] of Object.entries(obj)) { + pairs.push([k, deepSortedObjectEntries(v)]); } - return target; + // lexicographicCompare is faster than localeCompare, so let's use that. + pairs.sort((a, b) => lexicographicCompare(a[0], b[0])); + return pairs; } -/** - * Run polyfills to add Array.map and Array.filter if they are missing. - */ - -function runPolyfills() { - // Array.prototype.filter - // ======================================================== - // SOURCE: - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter - if (!Array.prototype.filter) { - // eslint-disable-next-line no-extend-native - Array.prototype.filter = function (fun, - /*, thisArg*/ - ...restProps) { - if (this === void 0 || this === null) { - throw new TypeError(); - } - - const t = Object(this); - const len = t.length >>> 0; - - if (typeof fun !== 'function') { - throw new TypeError(); - } - - const res = []; - const thisArg = restProps ? restProps[0] : void 0; - - for (let i = 0; i < len; i++) { - if (i in t) { - const val = t[i]; // NOTE: Technically this should Object.defineProperty at - // the next index, as push can be affected by - // properties on Object.prototype and Array.prototype. - // But that method's new, and collisions should be - // rare, so use the more-compatible alternative. - - if (fun.call(thisArg, val, i, t)) { - res.push(val); - } - } - } - - return res; - }; - } // Array.prototype.map - // ======================================================== - // SOURCE: - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map - // Production steps of ECMA-262, Edition 5, 15.4.4.19 - // Reference: http://es5.github.io/#x15.4.4.19 - - - if (!Array.prototype.map) { - // eslint-disable-next-line no-extend-native - Array.prototype.map = function (callback, thisArg) { - let T; - let k; - - if (this === null || this === undefined) { - throw new TypeError(' this is null or not defined'); - } // 1. Let O be the result of calling ToObject passing the |this| - // value as the argument. - - - const O = Object(this); // 2. Let lenValue be the result of calling the Get internal - // method of O with the argument "length". - // 3. Let len be ToUint32(lenValue). - - const len = O.length >>> 0; // 4. If IsCallable(callback) is false, throw a TypeError exception. - // See: http://es5.github.com/#x9.11 - - if (typeof callback !== 'function') { - throw new TypeError(callback + ' is not a function'); - } // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - - - if (arguments.length > 1) { - T = thisArg; - } // 6. Let A be a new array created as if by the expression new Array(len) - // where Array is the standard built-in constructor with that name and - // len is the value of len. - - - const A = new Array(len); // 7. Let k be 0 - - k = 0; // 8. Repeat, while k < len - - while (k < len) { - let kValue; - let mappedValue; // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal - // method of O with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - - if (k in O) { - // i. Let kValue be the result of calling the Get internal - // method of O with argument Pk. - kValue = O[k]; // ii. Let mappedValue be the result of calling the Call internal - // method of callback with T as the this value and argument - // list containing kValue, k, and O. - - mappedValue = callback.call(T, kValue, k, O); // iii. Call the DefineOwnProperty internal method of A with arguments - // Pk, Property Descriptor - // { Value: mappedValue, - // Writable: true, - // Enumerable: true, - // Configurable: true }, - // and false. - // In browsers that support Object.defineProperty, use the following: - // Object.defineProperty(A, k, { - // value: mappedValue, - // writable: true, - // enumerable: true, - // configurable: true - // }); - // For best browser support, use the following: - - A[k] = mappedValue; - } // d. Increase k by 1. - - - k++; - } // 9. return A - - - return A; - }; - } // Array.prototype.forEach - // ======================================================== - // SOURCE: - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach - // Production steps of ECMA-262, Edition 5, 15.4.4.18 - // Reference: http://es5.github.io/#x15.4.4.18 - - - if (!Array.prototype.forEach) { - // eslint-disable-next-line no-extend-native - Array.prototype.forEach = function (callback, thisArg) { - let T; - let k; - - if (this === null || this === undefined) { - throw new TypeError(' this is null or not defined'); - } // 1. Let O be the result of calling ToObject passing the |this| value as the - // argument. - - - const O = Object(this); // 2. Let lenValue be the result of calling the Get internal method of O with the - // argument "length". - // 3. Let len be ToUint32(lenValue). - - const len = O.length >>> 0; // 4. If IsCallable(callback) is false, throw a TypeError exception. - // See: http://es5.github.com/#x9.11 - - if (typeof callback !== "function") { - throw new TypeError(callback + ' is not a function'); - } // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - - - if (arguments.length > 1) { - T = thisArg; - } // 6. Let k be 0 - - - k = 0; // 7. Repeat, while k < len - - while (k < len) { - let kValue; // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal - // method of O with - // argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - - if (k in O) { - // i. Let kValue be the result of calling the Get internal method of O with - // argument Pk - kValue = O[k]; // ii. Call the Call internal method of callback with T as the this value and - // argument list containing kValue, k, and O. - - callback.call(T, kValue, k, O); - } // d. Increase k by 1. - - - k++; - } // 8. return undefined - - }; - } -} -/** - * Inherit the prototype methods from one constructor into another. This is a - * port of the Node.js implementation with an Object.create polyfill. - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ - - -function inherits(ctor, superCtor) { - // Add util.inherits from Node.js - // Source: - // https://github.com/joyent/node/blob/master/lib/util.js - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -} -/** - * Polyfills inheritance for prototypes by allowing different kinds of - * super types. Typically prototypes would use `SuperType.call(this, params)` - * though this doesn't always work in some environments - this function - * falls back to using `Object.assign()` to clone a constructed copy - * of the super type onto `thisArg`. - * @param {any} thisArg The child instance. Modified in place. - * @param {any} SuperType The type to act as a super instance - * @param {any} params Arguments to supply to the super type's constructor - */ - - -function polyfillSuper(thisArg, SuperType, ...params) { - try { - SuperType.call(thisArg, ...params); - } catch (e) { - // fall back to Object.assign to just clone the thing - const fakeSuper = new SuperType(...params); - Object.assign(thisArg, fakeSuper); - } -} /** * Returns whether the given value is a finite number without type-coercion * - * @param {*} value the value to test - * @return {boolean} whether or not value is a finite number without type-coercion + * @param value - the value to test + * @returns whether or not value is a finite number without type-coercion */ - - function isNumber(value) { - return typeof value === 'number' && isFinite(value); + return typeof value === "number" && isFinite(value); } + /** * Removes zero width chars, diacritics and whitespace from the string * Also applies an unhomoglyph on the string, to prevent similar looking chars - * @param {string} str the string to remove hidden characters from - * @return {string} a string with the hidden characters removed + * @param str - the string to remove hidden characters from + * @returns a string with the hidden characters removed */ - - function removeHiddenChars(str) { if (typeof str === "string") { - return (0, _unhomoglyph.default)(str.normalize('NFD').replace(removeHiddenCharsRegex, '')); + return (0, _unhomoglyph.default)(str.normalize("NFD").replace(removeHiddenCharsRegex, "")); } - return ""; -} // Regex matching bunch of unicode control characters and otherwise misleading/invisible characters. +} + +/** + * Removes the direction override characters from a string + * @returns string with chars removed + */ +function removeDirectionOverrideChars(str) { + if (typeof str === "string") { + return str.replace(/[\u202d-\u202e]/g, ""); + } + return ""; +} +function normalize(str) { + // Note: we have to match the filter with the removeHiddenChars() because the + // function strips spaces and other characters (M becomes RN for example, in lowercase). + return removeHiddenChars(str.toLowerCase()) + // Strip all punctuation + .replace(/[\\'!"#$%&()*+,\-./:;<=>?@[\]^_`{|}~\u2000-\u206f\u2e00-\u2e7f]/g, "") + // We also doubly convert to lowercase to work around oddities of the library. + .toLowerCase(); +} + +// Regex matching bunch of unicode control characters and otherwise misleading/invisible characters. // Includes: // various width spaces U+2000 - U+200D // LTR and RTL marks U+200E and U+200F // LTR/RTL and other directional formatting marks U+202A - U+202F +// Arabic Letter RTL mark U+061C // Combining characters U+0300 - U+036F // Zero width no-break space (BOM) U+FEFF +// Blank/invisible characters (U2800, U2062-U2063) // eslint-disable-next-line no-misleading-character-class - - -const removeHiddenCharsRegex = /[\u2000-\u200F\u202A-\u202F\u0300-\u036f\uFEFF\s]/g; - +const removeHiddenCharsRegex = /[\u2000-\u200F\u202A-\u202F\u0300-\u036F\uFEFF\u061C\u2800\u2062-\u2063\s]/g; function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); } -function globToRegexp(glob, extended) { - extended = typeof extended === 'boolean' ? extended : true; // From - // https://github.com/matrix-org/synapse/blob/abbee6b29be80a77e05730707602f3bbfc3f38cb/synapse/push/__init__.py#L132 - // Because micromatch is about 130KB with dependencies, - // and minimatch is not much better. - - let pat = escapeRegExp(glob); - pat = pat.replace(/\\\*/g, '.*'); - pat = pat.replace(/\?/g, '.'); - - if (extended) { - pat = pat.replace(/\\\[(!|)(.*)\\]/g, function (match, p1, p2, offset, string) { - const first = p1 && '^' || ''; - const second = p2.replace(/\\-/, '-'); - return '[' + first + second + ']'; - }); - } - - return pat; +/** + * Converts Matrix glob-style string to a regular expression + * https://spec.matrix.org/v1.7/appendices/#glob-style-matching + * @param glob - Matrix glob-style string + * @returns regular expression + */ +function globToRegexp(glob) { + return escapeRegExp(glob).replace(/\\\*/g, ".*").replace(/\?/g, "."); } - function ensureNoTrailingSlash(url) { - if (url && url.endsWith("/")) { - return url.substr(0, url.length - 1); + if (url !== null && url !== void 0 && url.endsWith("/")) { + return url.slice(0, -1); } else { return url; } -} // Returns a promise which resolves with a given value after the given number of ms - +} +/** + * Returns a promise which resolves with a given value after the given number of ms + */ function sleep(ms, value) { return new Promise(resolve => { setTimeout(resolve, ms, value); }); } +/** + * Utility to log the duration of a promise. + * + * @param logger - The logger to log to. + * @param name - The name of the operation. + * @param block - The block to execute. + */ +async function logDuration(logger, name, block) { + const start = Date.now(); + try { + return await block(); + } finally { + const end = Date.now(); + logger.debug(`[Perf]: ${name} took ${end - start}ms`); + } +} + +/** + * Promise/async version of {@link setImmediate}. + */ +function immediate() { + return new Promise(setImmediate); +} function isNullOrUndefined(val) { return val === null || val === undefined; -} // Returns a Deferred - - +} +// Returns a Deferred function defer() { let resolve; let reject; @@ -66490,60 +190494,335 @@ function defer() { promise }; } - -async function promiseMapSeries(promises, fn) { - for (const o of await promises) { +async function promiseMapSeries(promises, fn // if async we don't care about the type as we only await resolution +) { + for (const o of promises) { await fn(await o); } } - function promiseTry(fn) { - return new Promise(resolve => resolve(fn())); -} // We need to be able to access the Node.js crypto library from within the -// Matrix SDK without needing to `require("crypto")`, which will fail in -// browsers. So `index.ts` will call `setCrypto` to store it, and when we need -// it, we can call `getCrypto`. - - -let crypto; - -function setCrypto(c) { - crypto = c; + return Promise.resolve(fn()); } -function getCrypto() { - return crypto; +// Creates and awaits all promises, running no more than `chunkSize` at the same time +async function chunkPromises(fns, chunkSize) { + const results = []; + for (let i = 0; i < fns.length; i += chunkSize) { + results.push(...(await Promise.all(fns.slice(i, i + chunkSize).map(fn => fn())))); + } + return results; } +/** + * Retries the function until it succeeds or is interrupted. The given function must return + * a promise which throws/rejects on error, otherwise the retry will assume the request + * succeeded. The promise chain returned will contain the successful promise. The given function + * should always return a new promise. + * @param promiseFn - The function to call to get a fresh promise instance. Takes an + * attempt count as an argument, for logging/debugging purposes. + * @returns The promise for the retried operation. + */ +function simpleRetryOperation(promiseFn) { + return (0, _pRetry.default)(attempt => { + return promiseFn(attempt); + }, { + forever: true, + factor: 2, + minTimeout: 3000, + // ms + maxTimeout: 15000 // ms + }); +} + +// String averaging inspired by https://stackoverflow.com/a/2510816 +// Dev note: We make the alphabet a string because it's easier to write syntactically +// than arrays. Thankfully, strings implement the useful parts of the Array interface +// anyhow. + +/** + * The default alphabet used by string averaging in this SDK. This matches + * all usefully printable ASCII characters (0x20-0x7E, inclusive). + */ +const DEFAULT_ALPHABET = exports.DEFAULT_ALPHABET = (() => { + let str = ""; + for (let c = 0x20; c <= 0x7e; c++) { + str += String.fromCharCode(c); + } + return str; +})(); + +/** + * Pads a string using the given alphabet as a base. The returned string will be + * padded at the end with the first character in the alphabet. + * + * This is intended for use with string averaging. + * @param s - The string to pad. + * @param n - The length to pad to. + * @param alphabet - The alphabet to use as a single string. + * @returns The padded string. + */ +function alphabetPad(s, n, alphabet = DEFAULT_ALPHABET) { + return s.padEnd(n, alphabet[0]); +} + +/** + * Converts a baseN number to a string, where N is the alphabet's length. + * + * This is intended for use with string averaging. + * @param n - The baseN number. + * @param alphabet - The alphabet to use as a single string. + * @returns The baseN number encoded as a string from the alphabet. + */ +function baseToString(n, alphabet = DEFAULT_ALPHABET) { + // Developer note: the stringToBase() function offsets the character set by 1 so that repeated + // characters (ie: "aaaaaa" in a..z) don't come out as zero. We have to reverse this here as + // otherwise we'll be wrong in our conversion. Undoing a +1 before an exponent isn't very fun + // though, so we rely on a lengthy amount of `x - 1` and integer division rules to reach a + // sane state. This also means we have to do rollover detection: see below. + + const len = BigInt(alphabet.length); + if (n <= len) { + var _alphabet; + return (_alphabet = alphabet[Number(n) - 1]) !== null && _alphabet !== void 0 ? _alphabet : ""; + } + let d = n / len; + let r = Number(n % len) - 1; + + // Rollover detection: if the remainder is negative, it means that the string needs + // to roll over by 1 character downwards (ie: in a..z, the previous to "aaa" would be + // "zz"). + if (r < 0) { + d -= BigInt(Math.abs(r)); // abs() is just to be clear what we're doing. Could also `+= r`. + r = Number(len) - 1; + } + return baseToString(d, alphabet) + alphabet[r]; +} + +/** + * Converts a string to a baseN number, where N is the alphabet's length. + * + * This is intended for use with string averaging. + * @param s - The string to convert to a number. + * @param alphabet - The alphabet to use as a single string. + * @returns The baseN number. + */ +function stringToBase(s, alphabet = DEFAULT_ALPHABET) { + const len = BigInt(alphabet.length); + + // In our conversion to baseN we do a couple performance optimizations to avoid using + // excess CPU and such. To create baseN numbers, the input string needs to be reversed + // so the exponents stack up appropriately, as the last character in the unreversed + // string has less impact than the first character (in "abc" the A is a lot more important + // for lexicographic sorts). We also do a trick with the character codes to optimize the + // alphabet lookup, avoiding an index scan of `alphabet.indexOf(reversedStr[i])` - we know + // that the alphabet and (theoretically) the input string are constrained on character sets + // and thus can do simple subtraction to end up with the same result. + + // Developer caution: we carefully cast to BigInt here to avoid losing precision. We cannot + // rely on Math.pow() (for example) to be capable of handling our insane numbers. + + let result = BigInt(0); + for (let i = s.length - 1, j = BigInt(0); i >= 0; i--, j++) { + const charIndex = s.charCodeAt(i) - alphabet.charCodeAt(0); + + // We add 1 to the char index to offset the whole numbering scheme. We unpack this in + // the baseToString() function. + result += BigInt(1 + charIndex) * len ** j; + } + return result; +} + +/** + * Averages two strings, returning the midpoint between them. This is accomplished by + * converting both to baseN numbers (where N is the alphabet's length) then averaging + * those before re-encoding as a string. + * @param a - The first string. + * @param b - The second string. + * @param alphabet - The alphabet to use as a single string. + * @returns The midpoint between the strings, as a string. + */ +function averageBetweenStrings(a, b, alphabet = DEFAULT_ALPHABET) { + const padN = Math.max(a.length, b.length); + const baseA = stringToBase(alphabetPad(a, padN, alphabet), alphabet); + const baseB = stringToBase(alphabetPad(b, padN, alphabet), alphabet); + const avg = (baseA + baseB) / BigInt(2); + + // Detect integer division conflicts. This happens when two numbers are divided too close so + // we lose a .5 precision. We need to add a padding character in these cases. + if (avg === baseA || avg == baseB) { + return baseToString(avg, alphabet) + alphabet[0]; + } + return baseToString(avg, alphabet); +} + +/** + * Finds the next string using the alphabet provided. This is done by converting the + * string to a baseN number, where N is the alphabet's length, then adding 1 before + * converting back to a string. + * @param s - The string to start at. + * @param alphabet - The alphabet to use as a single string. + * @returns The string which follows the input string. + */ +function nextString(s, alphabet = DEFAULT_ALPHABET) { + return baseToString(stringToBase(s, alphabet) + BigInt(1), alphabet); +} + +/** + * Finds the previous string using the alphabet provided. This is done by converting the + * string to a baseN number, where N is the alphabet's length, then subtracting 1 before + * converting back to a string. + * @param s - The string to start at. + * @param alphabet - The alphabet to use as a single string. + * @returns The string which precedes the input string. + */ +function prevString(s, alphabet = DEFAULT_ALPHABET) { + return baseToString(stringToBase(s, alphabet) - BigInt(1), alphabet); +} + +/** + * Compares strings lexicographically as a sort-safe function. + * @param a - The first (reference) string. + * @param b - The second (compare) string. + * @returns Negative if the reference string is before the compare string; + * positive if the reference string is after; and zero if equal. + */ +function lexicographicCompare(a, b) { + // Dev note: this exists because I'm sad that you can use math operators on strings, so I've + // hidden the operation in this function. + if (a < b) { + return -1; + } else if (a > b) { + return 1; + } else { + return 0; + } +} +const collator = new Intl.Collator(); +/** + * Performant language-sensitive string comparison + * @param a - the first string to compare + * @param b - the second string to compare + */ +function compare(a, b) { + return collator.compare(a, b); +} + +/** + * This function is similar to Object.assign() but it assigns recursively and + * allows you to ignore nullish values from the source + * + * @returns the target object + */ +function recursivelyAssign(target, source, ignoreNullish = false) { + for (const [sourceKey, sourceValue] of Object.entries(source)) { + if (target[sourceKey] instanceof Object && sourceValue) { + recursivelyAssign(target[sourceKey], sourceValue); + continue; + } + if (sourceValue !== null && sourceValue !== undefined || !ignoreNullish) { + safeSet(target, sourceKey, sourceValue); + continue; + } + } + return target; +} +function getContentTimestampWithFallback(event) { + var _M_TIMESTAMP$findIn; + return (_M_TIMESTAMP$findIn = _location.M_TIMESTAMP.findIn(event.getContent())) !== null && _M_TIMESTAMP$findIn !== void 0 ? _M_TIMESTAMP$findIn : -1; +} + +/** + * Sort events by their content m.ts property + * Latest timestamp first + */ +function sortEventsByLatestContentTimestamp(left, right) { + return getContentTimestampWithFallback(right) - getContentTimestampWithFallback(left); +} +function isSupportedReceiptType(receiptType) { + return [_read_receipts.ReceiptType.Read, _read_receipts.ReceiptType.ReadPrivate].includes(receiptType); +} + +/** + * Determines whether two maps are equal. + * @param eq - The equivalence relation to compare values by. Defaults to strict equality. + */ +function mapsEqual(x, y, eq = (v1, v2) => v1 === v2) { + if (x.size !== y.size) return false; + for (const [k, v1] of x) { + const v2 = y.get(k); + if (v2 === undefined || !eq(v1, v2)) return false; + } + return true; +} +function processMapToObjectValue(value) { + if (value instanceof Map) { + // Value is a Map. Recursively map it to an object. + return recursiveMapToObject(value); + } else if (Array.isArray(value)) { + // Value is an Array. Recursively map the value (e.g. to cover Array of Arrays). + return value.map(v => processMapToObjectValue(v)); + } else { + return value; + } +} + +/** + * Recursively converts Maps to plain objects. + * Also supports sub-lists of Maps. + */ +function recursiveMapToObject(map) { + const targetMap = new Map(); + for (const [key, value] of map) { + targetMap.set(key, processMapToObjectValue(value)); + } + return Object.fromEntries(targetMap.entries()); +} +function unsafeProp(prop) { + return prop === "__proto__" || prop === "prototype" || prop === "constructor"; +} +function safeSet(obj, prop, value) { + if (unsafeProp(prop)) { + throw new Error("Trying to modify prototype or constructor"); + } + obj[prop] = value; +} +function noUnsafeEventProps(event) { + return !(unsafeProp(event.room_id) || unsafeProp(event.sender) || unsafeProp(event.user_id) || unsafeProp(event.event_id)); +} +class MapWithDefault extends Map { + constructor(createDefault) { + super(); + this.createDefault = createDefault; + } + + /** + * Returns the value if the key already exists. + * If not, it creates a new value under that key using the ctor callback and returns it. + */ + getOrCreate(key) { + if (!this.has(key)) { + this.set(key, this.createDefault()); + } + return this.get(key); + } +} +exports.MapWithDefault = MapWithDefault; +//# sourceMappingURL=utils.js.map + /***/ }), -/***/ 7823: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { +/***/ 5167: +/***/ ((__unused_webpack_module, exports) => { "use strict"; -var _interopRequireWildcard = __webpack_require__(8429); - Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.MatrixCall = MatrixCall; -exports.setAudioOutput = setAudioOutput; -exports.setAudioInput = setAudioInput; -exports.setVideoInput = setVideoInput; -exports.createNewMatrixCall = createNewMatrixCall; - -var _logger = __webpack_require__(3854); - -var _events = __webpack_require__(8614); - -var utils = _interopRequireWildcard(__webpack_require__(2557)); - +exports.SUPPORTED_MATRIX_VERSIONS = exports.MINIMUM_MATRIX_VERSION = exports.MAXIMUM_MATRIX_VERSION = void 0; /* -Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2022 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -66559,1555 +190838,11453 @@ limitations under the License. */ /** - * This is an internal module. See {@link createNewMatrixCall} for the public API. - * @module webrtc/call - */ -const DEBUG = true; // set true to enable console logging. -// events: hangup, error(err), replaced(call), state(state, oldState) - -/** - * Fires whenever an error occurs when call.js encounters an issue with setting up the call. - *

- * The error given will have a code equal to either `MatrixCall.ERR_LOCAL_OFFER_FAILED` or - * `MatrixCall.ERR_NO_USER_MEDIA`. `ERR_LOCAL_OFFER_FAILED` is emitted when the local client - * fails to create an offer. `ERR_NO_USER_MEDIA` is emitted when the user has denied access - * to their audio/video hardware. + * A list of the spec versions which the js-sdk is compatible with. * - * @event module:webrtc/call~MatrixCall#"error" - * @param {Error} err The error raised by MatrixCall. - * @example - * matrixCall.on("error", function(err){ - * console.error(err.code, err); - * }); - */ - -/** - * Construct a new Matrix Call. - * @constructor - * @param {Object} opts Config options. - * @param {string} opts.roomId The room ID for this call. - * @param {Object} opts.webRtc The WebRTC globals from the browser. - * @param {boolean} opts.forceTURN whether relay through TURN should be forced. - * @param {Object} opts.URL The URL global. - * @param {Array} opts.turnServers Optional. A list of TURN servers. - * @param {MatrixClient} opts.client The Matrix Client instance to send events to. - */ - -function MatrixCall(opts) { - this.roomId = opts.roomId; - this.client = opts.client; - this.webRtc = opts.webRtc; - this.forceTURN = opts.forceTURN; - this.URL = opts.URL; // Array of Objects with urls, username, credential keys - - this.turnServers = opts.turnServers || []; - - if (this.turnServers.length === 0 && this.client.isFallbackICEServerAllowed()) { - this.turnServers.push({ - urls: [MatrixCall.FALLBACK_ICE_SERVER] - }); - } - - utils.forEach(this.turnServers, function (server) { - utils.checkObjectHasKeys(server, ["urls"]); - }); - this.callId = "c" + new Date().getTime() + Math.random(); - this.state = 'fledgling'; - this.didConnect = false; // A queue for candidates waiting to go out. - // We try to amalgamate candidates into a single candidate message where - // possible - - this.candidateSendQueue = []; - this.candidateSendTries = 0; // Lookup from opaque queue ID to a promise for media element operations that - // need to be serialised into a given queue. Store this per-MatrixCall on the - // assumption that multiple matrix calls will never compete for control of the - // same DOM elements. - - this.mediaPromises = Object.create(null); - this.screenSharingStream = null; - this._answerContent = null; - this._sentEndOfCandidates = false; -} -/** The length of time a call can be ringing for. */ - - -MatrixCall.CALL_TIMEOUT_MS = 60000; -/** The fallback ICE server to use for STUN or TURN protocols. */ - -MatrixCall.FALLBACK_ICE_SERVER = 'stun:turn.matrix.org'; -/** An error code when the local client failed to create an offer. */ - -MatrixCall.ERR_LOCAL_OFFER_FAILED = "local_offer_failed"; -/** - * An error code when there is no local mic/camera to use. This may be because - * the hardware isn't plugged in, or the user has explicitly denied access. - */ - -MatrixCall.ERR_NO_USER_MEDIA = "no_user_media"; -/* - * Error code used when a call event failed to send - * because unknown devices were present in the room - */ - -MatrixCall.ERR_UNKNOWN_DEVICES = "unknown_devices"; -/* - * Error code usewd when we fail to send the invite - * for some reason other than there being unknown devices - */ - -MatrixCall.ERR_SEND_INVITE = "send_invite"; -/* - * Error code usewd when we fail to send the answer - * for some reason other than there being unknown devices - */ - -MatrixCall.ERR_SEND_ANSWER = "send_answer"; -utils.inherits(MatrixCall, _events.EventEmitter); -/** - * Place a voice call to this room. - * @throws If you have not specified a listener for 'error' events. - */ - -MatrixCall.prototype.placeVoiceCall = function () { - debuglog("placeVoiceCall"); - checkForErrorListener(this); - - _placeCallWithConstraints(this, _getUserMediaVideoContraints('voice')); - - this.type = 'voice'; -}; -/** - * Place a video call to this room. - * @param {Element} remoteVideoElement a <video> DOM element - * to render video to. - * @param {Element} localVideoElement a <video> DOM element - * to render the local camera preview. - * @throws If you have not specified a listener for 'error' events. - */ - - -MatrixCall.prototype.placeVideoCall = function (remoteVideoElement, localVideoElement) { - debuglog("placeVideoCall"); - checkForErrorListener(this); - this.localVideoElement = localVideoElement; - this.remoteVideoElement = remoteVideoElement; - - _placeCallWithConstraints(this, _getUserMediaVideoContraints('video')); - - this.type = 'video'; - - _tryPlayRemoteStream(this); -}; -/** - * Place a screen-sharing call to this room. This includes audio. - * This method is EXPERIMENTAL and subject to change without warning. It - * only works in Google Chrome and Firefox >= 44. - * @param {Element} remoteVideoElement a <video> DOM element - * to render video to. - * @param {Element} localVideoElement a <video> DOM element - * to render the local camera preview. - * @throws If you have not specified a listener for 'error' events. - */ - - -MatrixCall.prototype.placeScreenSharingCall = async function (remoteVideoElement, localVideoElement) { - debuglog("placeScreenSharingCall"); - checkForErrorListener(this); - this.localVideoElement = localVideoElement; - this.remoteVideoElement = remoteVideoElement; - const self = this; - - try { - self.screenSharingStream = await this.webRtc.getDisplayMedia({ - 'audio': false - }); - debuglog("Got screen stream, requesting audio stream..."); - - const audioConstraints = _getUserMediaVideoContraints('voice'); - - _placeCallWithConstraints(self, audioConstraints); - } catch (err) { - self.emit("error", callError(MatrixCall.ERR_NO_USER_MEDIA, "Failed to get screen-sharing stream: " + err)); - } - - this.type = 'video'; - - _tryPlayRemoteStream(this); -}; -/** - * Play the given HTMLMediaElement, serialising the operation into a chain - * of promises to avoid racing access to the element - * @param {Element} element HTMLMediaElement element to play - * @param {string} queueId Arbitrary ID to track the chain of promises to be used - */ - - -MatrixCall.prototype.playElement = function (element, queueId) { - _logger.logger.log("queuing play on " + queueId + " and element " + element); // XXX: FIXME: Does this leak elements, given the old promises - // may hang around and retain a reference to them? - - - if (this.mediaPromises[queueId]) { - // XXX: these promises can fail (e.g. by